diff --git a/Src/DebugVarEdit_GUI.py b/Src/DebugVarEdit_GUI.py index 7c10cd2..3070585 100644 --- a/Src/DebugVarEdit_GUI.py +++ b/Src/DebugVarEdit_GUI.py @@ -413,16 +413,18 @@ class VarEditor(QWidget): except Exception as e: QMessageBox.critical(self, "Ошибка", f"Не удалось загрузить переменные:\n{e}") - + def delete_selected_rows(self): - selected_rows = sorted(set(index.row() for index in self.table.selectedIndexes()), reverse=True) - if not selected_rows: + # Получаем имена всех выбранных переменных из первого столбца + selected_names = self.table.get_selected_var_names() + + if not selected_names: return - for row in selected_rows: - if 0 <= row < len(self.vars_list): - # Меняем флаг show_var для переменной с этим индексом - self.vars_list[row]['show_var'] = 'false' + # Меняем флаг show_var по имени + for var in self.vars_list: + if var.get('name') in selected_names: + var['show_var'] = 'false' self.table.populate(self.vars_list, self.structs, self.write_to_xml) self.write_to_xml() @@ -517,6 +519,11 @@ class VarEditor(QWidget): el = ET.SubElement(parent, tag) el.text = str(text) + pt_type_val = v_table['pt_type'] if v_table and 'pt_type' in v_table else v.get('pt_type', '') + + if 'arr' in pt_type_val or 'struct' in pt_type_val or 'union' in pt_type_val: + continue + show_var_val = str(v.get('show_var', 'false')).lower() enable_val = str(v_table['enable'] if v_table and 'enable' in v_table else v.get('enable', 'false')).lower() @@ -525,7 +532,6 @@ class VarEditor(QWidget): # Тут подтягиваем из таблицы, если есть, иначе из v shortname_val = v_table['shortname'] if v_table and 'shortname' in v_table else v.get('shortname', '') - pt_type_val = v_table['pt_type'] if v_table and 'pt_type' in v_table else v.get('pt_type', '') iq_type_val = v_table['iq_type'] if v_table and 'iq_type' in v_table else v.get('iq_type', '') ret_type_val = v_table['return_type'] if v_table and 'return_type' in v_table else v.get('return_type', '') diff --git a/Src/VariableSelector.py b/Src/VariableSelector.py index fc0d55e..556e273 100644 --- a/Src/VariableSelector.py +++ b/Src/VariableSelector.py @@ -107,14 +107,11 @@ class VariableSelectorDialog(QDialog): # --- Код в конце __init__ --- self.expanded_vars = setupVars.expand_vars(self.all_vars, self.structs, self.typedefs) - self.selected_vars = setupVars.filter_selected_vars(self.expanded_vars) - # Передаем данные в виджет - self.vars_widget.set_data(self.expanded_vars) - self.selected_vars_widget.set_data(self.selected_vars) + self.update_vars_widget() def on_move_right(self): # Устанавливаем show_var=True для всех выбранных переменных из ЛЕВОЙ таблицы - selected = self.vars_widget.get_selected_var_names() + selected = self.vars_widget._get_internal_selected_var_names() if not selected: return @@ -126,11 +123,11 @@ class VariableSelectorDialog(QDialog): mark_selected_show_var(var['children']) mark_selected_show_var(self.expanded_vars) - self.update_selected_vars_widget() + self.update_vars_widget() def on_move_left(self): # Сбрасываем show_var=False для всех выбранных переменных из ПРАВОЙ таблицы - selected = self.selected_vars_widget.get_selected_var_names() + selected = self.selected_vars_widget._get_internal_selected_var_names() if not selected: return @@ -142,21 +139,25 @@ class VariableSelectorDialog(QDialog): mark_selected_hide_var(var['children']) mark_selected_hide_var(self.expanded_vars) - self.update_selected_vars_widget() + self.update_vars_widget() - def update_selected_vars_widget(self): - self.selected_vars = setupVars.filter_selected_vars(self.expanded_vars) + def update_vars_widget(self): + self.selected_vars, self.unselected_vars = setupVars.split_vars_by_show_flag(self.expanded_vars) + self.vars_widget.set_data(self.unselected_vars) + self.vars_widget.filter_tree() self.selected_vars_widget.set_data(self.selected_vars) + self.selected_vars_widget.filter_tree() def on_add_clicked(self): # Получаем все переменные из правой таблицы (selected_vars_widget) + var_names = self.selected_vars_widget.get_all_var_names() all_items = self.selected_vars_widget.get_all_items() if not all_items: return - for item in all_items: + def add_to_var_map_recursively(item): name = item.text(0) type_str = item.text(1) @@ -178,41 +179,66 @@ class VariableSelectorDialog(QDialog): self.all_vars.append(new_var) self.var_map[name] = new_var + for item in all_items: + add_to_var_map_recursively(item) + self.accept() def on_delete_clicked(self): - # Получаем все имена переменных из правой таблицы - all_names = self.selected_vars_widget.get_all_var_names() - if not all_names: + # Получаем все элементы (QTreeWidgetItem) из правой таблицы + all_items = self.selected_vars_widget.get_all_items() + if not all_items: return - for name in all_names: + affected_names = [] + + def disable_var_recursively(item): + name = item.text(0) if name in self.var_map: self.var_map[name]['show_var'] = 'false' self.var_map[name]['enable'] = 'false' + affected_names.append(name) - self.update_xml_vars(all_names, 'false', 'false') - self.update_selected_vars_widget() + # Рекурсивно отключаем детей + for i in range(item.childCount()): + child = item.child(i) + disable_var_recursively(child) + + for item in all_items: + disable_var_recursively(item) + + # Обновляем XML и таблицу + self.update_xml_vars(affected_names, 'false', 'false') + self.update_vars_widget() def update_xml_vars(self, names, show, enable): - """Обновляет флаги show_var и enable в XML файле.""" + """Обновляет флаги show_var и enable в XML файле, только если у переменной нет вложенных структур.""" if not self.xml_path: return root, tree = myXML.safe_parse_xml(self.xml_path) - if root is None: return + if root is None: + return vars_section = root.find('variables') - if vars_section is None: return + if vars_section is None: + return for var_elem in vars_section.findall('var'): if var_elem.attrib.get('name') in names: - def set_text(tag, value): - el = var_elem.find(tag) - if el is None: el = ET.SubElement(var_elem, tag) - el.text = value - set_text('show_var', show) - set_text('enable', enable) + # Проверяем наличие вложенных структур или объединений + has_nested_structs = any( + var_elem.find(tag) is not None for tag in ('struct', 'union') + ) + if not has_nested_structs: + def set_text(tag, value): + el = var_elem.find(tag) + if el is None: + el = ET.SubElement(var_elem, tag) + el.text = value + set_text('show_var', show) + set_text('enable', enable) + myXML.fwrite(root, self.xml_path) @@ -314,12 +340,16 @@ class VariableSelectorDialog(QDialog): if removed_any: myXML.fwrite(root, self.xml_path) - self.filter_tree() + self.update_vars_widget() def _get_selected_var_names(self): - self.tree.setFocus() - return [item.text(0) for item in self.tree.selectedItems() if item.text(0)] - + focused = self.focusWidget() + if focused and focused is self.vars_widget.tree: + return self.vars_widget.get_selected_var_names() + elif focused and focused is self.selected_vars_widget.tree: + return self.selected_vars_widget.get_selected_var_names() + else: + return [] def save_checkbox_state(self): self.settings.setValue("autocomplete_enabled", self.autocomplete_checkbox.isChecked()) diff --git a/Src/VariableTable.py b/Src/VariableTable.py index 524b81f..21eeeea 100644 --- a/Src/VariableTable.py +++ b/Src/VariableTable.py @@ -268,4 +268,17 @@ class VariableTableWidget(QTableWidget): elif widget is not None: # Надёжная подсветка: через styleSheet widget.setStyleSheet(css_color) - widget.setToolTip(tooltip if color else "") \ No newline at end of file + widget.setToolTip(tooltip if color else "") + + def get_selected_var_names(self): + selected_indexes = self.selectedIndexes() + selected_rows = set(index.row() for index in selected_indexes) + names = [] + + for row in selected_rows: + name_widget = self.cellWidget(row, rows.name) + if name_widget: + name = name_widget.text() + if name: + names.append(name) + return names diff --git a/Src/selectTable.py b/Src/selectTable.py index 9a066c6..6300323 100644 --- a/Src/selectTable.py +++ b/Src/selectTable.py @@ -187,13 +187,45 @@ class VariableSelectWidget(QWidget): # self.build_completion_list() # Если нужна полная перестройка списка self.populate_tree() + def _get_internal_selected_items(self): + """Возвращает выделенные элементы и всех их потомков.""" + selected = self.tree.selectedItems() + all_items = [] + + def collect_children(item): + items = [item] + for i in range(item.childCount()): + child = item.child(i) + items.extend(collect_children(child)) + return items + + for item in selected: + all_items.extend(collect_children(item)) + + return all_items + + def _get_internal_selected_var_names(self): + """Возвращает имена выделенных переменных.""" + return [item.text(0) for item in self._get_internal_selected_items() if item.text(0)] + def get_selected_items(self): - """Возвращает выделенные элементы QTreeWidget.""" - return self.tree.selectedItems() + """Возвращает только конечные (leaf) выделенные элементы, исключая bitfield.""" + selected = self.tree.selectedItems() + leaf_items = [] + for item in selected: + # Проверка: если нет выбранных/видимых детей — это лист + if all(item.child(i).isHidden() or not item.child(i).isSelected() for i in range(item.childCount())): + item_type = item.data(0, Qt.UserRole) + if item_type and 'bitfield' in str(item_type).lower(): + continue # Пропускаем битовые поля + leaf_items.append(item) + return leaf_items + + def get_selected_var_names(self): - """Возвращает имена выделенных переменных.""" - return [item.text(0) for item in self.tree.selectedItems() if item.text(0)] + """Возвращает имена только конечных (leaf) переменных из выделенных.""" + return [item.text(0) for item in self.get_selected_items() if item.text(0)] def populate_tree(self, vars_list=None): @@ -220,16 +252,7 @@ class VariableSelectWidget(QWidget): fullname = fullname.replace('->', '.') return fullname - - def get_selected_vars(self): - selected = self.tree.selectedItems() - result = [] - for item in selected: - var = item.data(0, Qt.UserRole) - if var: - result.append(var) - return result - + def add_tree_item_recursively(self, parent, var): """ Рекурсивно добавляет переменную и её дочерние поля в дерево. @@ -519,7 +542,35 @@ class VariableSelectWidget(QWidget): item.setToolTip(1, text) def get_all_items(self): - return [self.tree.topLevelItem(i) for i in range(self.tree.topLevelItemCount())] - + """Возвращает все конечные (leaf) элементы, исключая битовые поля и элементы с детьми.""" + def collect_leaf_items(parent): + leaf_items = [] + for i in range(parent.childCount()): + child = parent.child(i) + if child.isHidden(): + continue + if child.childCount() == 0: + item_type = child.text(1) + if item_type and 'bitfield' in str(item_type).lower(): + continue + leaf_items.append(child) + else: + leaf_items.extend(collect_leaf_items(child)) + return leaf_items + + all_leaf_items = [] + for i in range(self.tree.topLevelItemCount()): + top = self.tree.topLevelItem(i) + if top.childCount() == 0: + item_type = top.text(1) + if item_type and 'bitfield' in str(item_type).lower(): + continue + all_leaf_items.append(top) + else: + all_leaf_items.extend(collect_leaf_items(top)) + return all_leaf_items + + def get_all_var_names(self): - return [self.tree.topLevelItem(i).text(0) for i in range(self.tree.topLevelItemCount())] \ No newline at end of file + """Возвращает имена всех конечных (leaf) переменных, исключая битовые поля и группы.""" + return [item.text(0) for item in self.get_all_items() if item.text(0)] diff --git a/Src/setupVars.py b/Src/setupVars.py index 95b4451..04e9e5d 100644 --- a/Src/setupVars.py +++ b/Src/setupVars.py @@ -7,6 +7,56 @@ from enum import IntEnum import scanVars import myXML +# Вспомогательные функции, которые теперь будут использоваться виджетом +def split_path(path): + """ + Разбивает путь на компоненты: + - 'foo[2].bar[1]->baz' → ['foo', '[2]', 'bar', '[1]', 'baz'] + Если видит '-' в конце строки (без '>' после) — обрезает этот '-' + """ + tokens = [] + token = '' + i = 0 + length = len(path) + while i < length: + c = path[i] + # Разделители: '->' и '.' + if c == '-' and i + 1 < length and path[i:i+2] == '->': + if token: + tokens.append(token) + token = '' + i += 2 + continue + elif c == '-' and i == length - 1: + # '-' на конце строки без '>' после — просто пропускаем его + i += 1 + continue + elif c == '.': + if token: + tokens.append(token) + token = '' + i += 1 + continue + elif c == '[': + if token: + tokens.append(token) + token = '' + idx = '' + while i < length and path[i] != ']': + idx += path[i] + i += 1 + if i < length and path[i] == ']': + idx += ']' + i += 1 + tokens.append(idx) + continue + else: + token += c + i += 1 + if token: + tokens.append(token) + return tokens + def make_absolute_path(path, base_path): if not os.path.isabs(path) and os.path.isdir(base_path): @@ -405,19 +455,132 @@ def expand_vars(vars_list, structs, typedefs): return expanded -def filter_selected_vars(expanded_vars): + +def build_full_names(parts, full_name): + """ + Восстанавливает вложенные полные имена из списка частей, + ориентируясь на оригинальное полное имя (с '.', '->' и индексами). + + Пример: + parts = ['arr', '[0]', '[1]', 'ptr', 'val'] + full_name = 'arr[0][1].ptr->val' + + → [ + 'arr', + 'arr[0]', + 'arr[0][1]', + 'arr[0][1].ptr', + 'arr[0][1].ptr->val' + ] + """ + names = [] + acc = '' + idx = 0 + for part in parts: + pos = full_name.find(part, idx) + if pos == -1: + acc += part + else: + acc = full_name[:pos + len(part)] + idx = pos + len(part) + names.append(acc) + return names + +def find_var_by_name(tree, name): + for var in tree: + if var.get('name') == name: + return var + if 'children' in var: + found = find_var_by_name(var['children'], name) + if found: + return found + return None + + +def add_to_nested_tree(tree, var, path_parts, full_names=None, depth=0, source_tree=None): + if not path_parts: + return + + if full_names is None: + full_names = build_full_names(path_parts, var['name']) + + current_name = full_names[depth] + + for child in tree: + if child.get('name') == current_name: + if depth == len(path_parts) - 1: + child.update(var) + return + if 'children' not in child: + child['children'] = [] + add_to_nested_tree(child['children'], var, path_parts, full_names, depth + 1, source_tree) + return + + # Ищем в source_tree (expanded_vars) родительский узел по current_name + parent_data = {} + if source_tree: + parent_var = find_var_by_name(source_tree, current_name) + if parent_var: + # Копируем все поля кроме детей (children) + parent_data = {k: v for k, v in parent_var.items() if k != 'children'} + + new_node = { + 'name': current_name, + 'children': [] + } + + # Обновляем new_node данными родителя + new_node.update(parent_data) + + if depth == len(path_parts) - 1: + new_node.update(var) + else: + add_to_nested_tree(new_node['children'], var, path_parts, full_names, depth + 1, source_tree) + + tree.append(new_node) + + + + +def split_vars_by_show_flag(expanded_vars): + from copy import deepcopy + + unselected_vars = deepcopy(expanded_vars) selected_vars = [] - def recurse(vars_list): - for var in vars_list: - show_var = var.get('show_var', 'false').lower() - if show_var == 'true': - selected_vars.append(var) + def find_and_remove(var_list, target_name): + """Удаляет элемент по полному имени и возвращает его""" + for i, var in enumerate(var_list): + if var.get("name") == target_name: + return var_list.pop(i) + if 'children' in var: + found = find_and_remove(var['children'], target_name) + if found: + return found + return None - # Рекурсивно обходим детей, если есть - children = var.get('children') - if children: - recurse(children) + def collect_selected_nodes(var): + """Рекурсивно возвращает все show_var=true узлы (включая поддерево)""" + nodes = [] + if var.get('show_var', 'false').lower() == 'true': + nodes.append(var) + for child in var.get('children', []): + nodes.extend(collect_selected_nodes(child)) + return nodes - recurse(expanded_vars) - return selected_vars + selected_nodes = [] + for var in expanded_vars: + selected_nodes.extend(collect_selected_nodes(var)) + + for node in selected_nodes: + path_parts = split_path(node['name']) + + # Вырезать из unselected_vars + removed = find_and_remove(unselected_vars, node['name']) + if removed: + add_to_nested_tree(selected_vars, removed, path_parts) + else: + # вдруг удалённый родитель — создаём вручную + add_to_nested_tree(selected_vars, node, path_parts) + + return selected_vars, unselected_vars diff --git a/structs.xml b/structs.xml index bb15e3c..896041a 100644 --- a/structs.xml +++ b/structs.xml @@ -54,7 +54,7 @@ - + @@ -142,7 +142,7 @@ - + @@ -165,7 +165,7 @@ - + @@ -189,7 +189,7 @@ - + @@ -206,7 +206,7 @@ - + @@ -223,7 +223,7 @@ - + @@ -240,7 +240,7 @@ - + @@ -257,7 +257,7 @@ - + @@ -274,7 +274,7 @@ - + @@ -291,7 +291,7 @@ - + @@ -308,7 +308,7 @@ - + @@ -325,7 +325,7 @@ - + @@ -342,7 +342,7 @@ - + @@ -359,7 +359,7 @@ - + @@ -376,7 +376,7 @@ - + @@ -393,7 +393,7 @@ - + @@ -410,7 +410,7 @@ - + @@ -427,7 +427,7 @@ - + @@ -444,7 +444,7 @@ - + @@ -461,7 +461,7 @@ - + @@ -478,7 +478,7 @@ - + @@ -495,7 +495,7 @@ - + @@ -512,7 +512,7 @@ - + @@ -529,7 +529,7 @@ - + @@ -546,7 +546,7 @@ - + @@ -563,7 +563,7 @@ - + @@ -580,7 +580,7 @@ - + @@ -597,7 +597,7 @@ - + @@ -614,7 +614,7 @@ - + @@ -631,7 +631,7 @@ - + @@ -648,7 +648,7 @@ - + @@ -665,7 +665,7 @@ - + @@ -682,7 +682,7 @@ - + @@ -699,7 +699,7 @@ - + @@ -716,7 +716,7 @@ - + @@ -733,7 +733,7 @@ - + @@ -750,7 +750,7 @@ - + @@ -767,7 +767,7 @@ - + @@ -784,7 +784,7 @@ - + @@ -801,7 +801,7 @@ - + @@ -818,7 +818,7 @@ - + @@ -835,7 +835,7 @@ - + @@ -852,7 +852,7 @@ - + @@ -869,7 +869,7 @@ - + @@ -886,7 +886,7 @@ - + @@ -903,7 +903,7 @@ - + @@ -920,7 +920,7 @@ - + @@ -937,7 +937,7 @@ - + @@ -954,7 +954,7 @@ - + @@ -971,7 +971,7 @@ - + @@ -988,7 +988,7 @@ - + @@ -1005,7 +1005,7 @@ - + @@ -1022,7 +1022,7 @@ - + @@ -1039,7 +1039,7 @@ - + @@ -1056,7 +1056,7 @@ - + @@ -1073,7 +1073,7 @@ - + @@ -1090,7 +1090,7 @@ - + @@ -1107,7 +1107,7 @@ - + @@ -1124,7 +1124,7 @@ - + @@ -1141,7 +1141,7 @@ - + @@ -1158,7 +1158,7 @@ - + @@ -1175,7 +1175,7 @@ - + @@ -1192,7 +1192,7 @@ - + @@ -1211,7 +1211,7 @@ - + @@ -1228,7 +1228,7 @@ - + @@ -1245,7 +1245,7 @@ - + @@ -1262,7 +1262,7 @@ - + @@ -1279,7 +1279,7 @@ - + @@ -1296,7 +1296,7 @@ - + @@ -1313,7 +1313,7 @@ - + @@ -1330,7 +1330,7 @@ - + @@ -1347,7 +1347,7 @@ - + @@ -1364,7 +1364,7 @@ - + @@ -1381,7 +1381,7 @@ - + @@ -1398,7 +1398,7 @@ - + @@ -1415,7 +1415,7 @@ - + @@ -1432,7 +1432,7 @@ - + @@ -1449,7 +1449,7 @@ - + @@ -1466,7 +1466,7 @@ - + @@ -1483,7 +1483,7 @@ - + @@ -1500,7 +1500,7 @@ - + @@ -1517,7 +1517,7 @@ - + @@ -1534,7 +1534,7 @@ - + @@ -1551,7 +1551,7 @@ - + @@ -1568,7 +1568,7 @@ - + @@ -1585,7 +1585,7 @@ - + @@ -1602,7 +1602,7 @@ - + @@ -1620,7 +1620,7 @@ - + @@ -1630,7 +1630,7 @@ - + @@ -1642,7 +1642,7 @@ - + @@ -1655,7 +1655,7 @@ - + @@ -1672,7 +1672,7 @@ - + @@ -1695,7 +1695,7 @@ - + @@ -1704,7 +1704,7 @@ - + @@ -1722,7 +1722,7 @@ - + @@ -1761,7 +1761,7 @@ - + @@ -1778,7 +1778,7 @@ - + @@ -1795,7 +1795,7 @@ - + @@ -1812,7 +1812,7 @@ - + @@ -1829,7 +1829,7 @@ - + @@ -1846,7 +1846,7 @@ - + @@ -1863,7 +1863,7 @@ - + @@ -1882,7 +1882,7 @@ - + @@ -1899,7 +1899,7 @@ - + @@ -1916,7 +1916,7 @@ - + @@ -1933,7 +1933,7 @@ - + @@ -1950,7 +1950,7 @@ - + @@ -1967,7 +1967,7 @@ - + @@ -1984,7 +1984,7 @@ - + @@ -2001,7 +2001,7 @@ - + @@ -2018,7 +2018,7 @@ - + @@ -2035,7 +2035,7 @@ - + @@ -2052,7 +2052,7 @@ - + @@ -2069,7 +2069,7 @@ - + @@ -2124,7 +2124,7 @@ - + @@ -2141,7 +2141,7 @@ - + @@ -2158,7 +2158,7 @@ - + @@ -2175,7 +2175,7 @@ - + @@ -2192,7 +2192,7 @@ - + @@ -2209,7 +2209,7 @@ - + @@ -2249,7 +2249,7 @@ - + @@ -2266,7 +2266,7 @@ - + @@ -2283,7 +2283,7 @@ - + @@ -2300,7 +2300,7 @@ - + @@ -2317,7 +2317,7 @@ - + @@ -2334,7 +2334,7 @@ - + @@ -2351,7 +2351,7 @@ - + @@ -2368,7 +2368,7 @@ - + @@ -2385,7 +2385,7 @@ - + @@ -2402,7 +2402,7 @@ - + @@ -2419,7 +2419,7 @@ - + @@ -2436,7 +2436,7 @@ - + @@ -2472,7 +2472,7 @@ - + @@ -2491,7 +2491,7 @@ - + @@ -2506,7 +2506,7 @@ - + @@ -2536,7 +2536,7 @@ - + @@ -2561,7 +2561,7 @@ - + @@ -2586,7 +2586,7 @@ - + @@ -2604,7 +2604,7 @@ - + @@ -2629,7 +2629,7 @@ - + @@ -2654,7 +2654,7 @@ - + @@ -2679,7 +2679,7 @@ - + @@ -2697,7 +2697,7 @@ - + @@ -2722,7 +2722,7 @@ - + @@ -2747,7 +2747,7 @@ - + @@ -2772,7 +2772,7 @@ - + @@ -2797,7 +2797,7 @@ - + @@ -2820,7 +2820,7 @@ - + @@ -2845,7 +2845,7 @@ - + @@ -2866,7 +2866,7 @@ - + @@ -2887,7 +2887,7 @@ - + @@ -2909,7 +2909,7 @@ - + @@ -2931,7 +2931,7 @@ - + @@ -2956,7 +2956,7 @@ - + @@ -2977,7 +2977,7 @@ - + @@ -2995,7 +2995,7 @@ - + @@ -3020,7 +3020,7 @@ - + @@ -3045,7 +3045,7 @@ - + @@ -3070,7 +3070,7 @@ - + @@ -3095,7 +3095,7 @@ - + @@ -3120,7 +3120,7 @@ - + @@ -3145,7 +3145,7 @@ - + @@ -3170,7 +3170,7 @@ - + @@ -3188,7 +3188,7 @@ - + @@ -3210,7 +3210,7 @@ - + @@ -3232,7 +3232,7 @@ - + @@ -3255,7 +3255,7 @@ - + @@ -3278,7 +3278,7 @@ - + @@ -3301,7 +3301,7 @@ - + @@ -3324,7 +3324,7 @@ - + @@ -3470,10 +3470,10 @@ - + - + @@ -3527,7 +3527,7 @@ - + @@ -3545,7 +3545,7 @@ - + @@ -3568,7 +3568,7 @@ - + @@ -3584,7 +3584,7 @@ - + @@ -3600,7 +3600,7 @@ - + @@ -3625,7 +3625,7 @@ - + @@ -3636,7 +3636,7 @@ - + @@ -3654,7 +3654,7 @@ - + @@ -3679,7 +3679,7 @@ - + @@ -3703,7 +3703,7 @@ - + @@ -3728,7 +3728,7 @@ - + @@ -3751,10 +3751,10 @@ - + - + @@ -3762,10 +3762,10 @@ - + - + @@ -3787,10 +3787,10 @@ - + - + @@ -3815,7 +3815,7 @@ - + @@ -3835,7 +3835,7 @@ - + @@ -3871,7 +3871,7 @@ - + @@ -4021,7 +4021,7 @@ - + @@ -4043,7 +4043,7 @@ - + @@ -4104,9 +4104,9 @@ - + - + @@ -4153,7 +4153,7 @@ - + @@ -4176,7 +4176,7 @@ - + @@ -4199,7 +4199,7 @@ - + @@ -4260,7 +4260,7 @@ - + @@ -4271,7 +4271,7 @@ - + @@ -4302,7 +4302,7 @@ - + @@ -4348,7 +4348,7 @@ - + @@ -4361,7 +4361,7 @@ - + @@ -4377,7 +4377,7 @@ - + @@ -4397,7 +4397,7 @@ - + @@ -4418,7 +4418,7 @@ - + @@ -4459,7 +4459,7 @@ - + @@ -4673,7 +4673,7 @@ - + @@ -4704,7 +4704,7 @@ - + @@ -4940,7 +4940,7 @@ - + @@ -4957,7 +4957,7 @@ - + @@ -4974,7 +4974,7 @@ - + @@ -4991,7 +4991,7 @@ - + @@ -5008,7 +5008,7 @@ - + @@ -5025,7 +5025,7 @@ - + @@ -5042,7 +5042,7 @@ - + @@ -5059,7 +5059,7 @@ - + @@ -5076,7 +5076,7 @@ - + @@ -5093,7 +5093,7 @@ - + @@ -5110,7 +5110,7 @@ - + @@ -5127,7 +5127,7 @@ - + @@ -5144,7 +5144,7 @@ - + @@ -5161,7 +5161,7 @@ - + @@ -5178,7 +5178,7 @@ - + @@ -5195,7 +5195,7 @@ - + @@ -5212,7 +5212,7 @@ - + @@ -5229,7 +5229,7 @@ - + @@ -5246,7 +5246,7 @@ - + @@ -5263,7 +5263,7 @@ - + @@ -5280,7 +5280,7 @@ - + @@ -5297,7 +5297,7 @@ - + @@ -5314,7 +5314,7 @@ - + @@ -5331,7 +5331,7 @@ - + @@ -5348,7 +5348,7 @@ - + @@ -5365,7 +5365,7 @@ - + @@ -5382,7 +5382,7 @@ - + @@ -5399,7 +5399,7 @@ - + @@ -5416,7 +5416,7 @@ - + @@ -5433,7 +5433,7 @@ - + @@ -5450,7 +5450,7 @@ - + @@ -5467,7 +5467,7 @@ - + @@ -5484,7 +5484,7 @@ - + @@ -5501,7 +5501,7 @@ - + @@ -5518,7 +5518,7 @@ - + @@ -5535,7 +5535,7 @@ - + @@ -5552,7 +5552,7 @@ - + @@ -5569,7 +5569,7 @@ - + @@ -5586,7 +5586,7 @@ - + @@ -5603,7 +5603,7 @@ - + @@ -5620,7 +5620,7 @@ - + @@ -5637,7 +5637,7 @@ - + @@ -5654,7 +5654,7 @@ - + @@ -5671,7 +5671,7 @@ - + @@ -5688,7 +5688,7 @@ - + @@ -5705,7 +5705,7 @@ - + @@ -5722,7 +5722,7 @@ - + @@ -5739,7 +5739,7 @@ - + @@ -5756,7 +5756,7 @@ - + @@ -5773,7 +5773,7 @@ - + @@ -5790,7 +5790,7 @@ - + @@ -5807,7 +5807,7 @@ - + @@ -5824,7 +5824,7 @@ - + @@ -5841,7 +5841,7 @@ - + @@ -5858,7 +5858,7 @@ - + @@ -5875,7 +5875,7 @@ - + @@ -5892,7 +5892,7 @@ - + @@ -5909,7 +5909,7 @@ - + @@ -5926,7 +5926,7 @@ - + @@ -5943,7 +5943,7 @@ - + @@ -6121,7 +6121,7 @@ - + @@ -6138,7 +6138,7 @@ - + @@ -6155,7 +6155,7 @@ - + @@ -6172,7 +6172,7 @@ - + @@ -6189,7 +6189,7 @@ - + @@ -6206,7 +6206,7 @@ - + @@ -6223,7 +6223,7 @@ - + @@ -6240,7 +6240,7 @@ - + @@ -6257,7 +6257,7 @@ - + @@ -6274,7 +6274,7 @@ - + @@ -6291,7 +6291,7 @@ - + @@ -6308,7 +6308,7 @@ - + @@ -6325,7 +6325,7 @@ - + @@ -6342,7 +6342,7 @@ - + @@ -6359,7 +6359,7 @@ - + @@ -6376,7 +6376,7 @@ - + @@ -6393,7 +6393,7 @@ - + @@ -6410,7 +6410,7 @@ - + @@ -6427,7 +6427,7 @@ - + @@ -6444,7 +6444,7 @@ - + @@ -6461,7 +6461,7 @@ - + @@ -6478,7 +6478,7 @@ - + @@ -6495,7 +6495,7 @@ - + @@ -6512,7 +6512,7 @@ - + @@ -6703,7 +6703,7 @@ - + @@ -6757,7 +6757,7 @@ - + @@ -6799,7 +6799,7 @@ - + @@ -6848,7 +6848,7 @@ - + @@ -6872,7 +6872,7 @@ - + @@ -6927,10 +6927,10 @@ - + - + @@ -6938,10 +6938,10 @@ - + - + @@ -6951,10 +6951,10 @@ - + - + @@ -6964,10 +6964,10 @@ - + - + @@ -6987,10 +6987,10 @@ - + - + @@ -7002,10 +7002,10 @@ - + - + @@ -7016,10 +7016,10 @@ - + - + @@ -7031,10 +7031,10 @@ - + - + @@ -7050,10 +7050,10 @@ - + - + @@ -7075,10 +7075,10 @@ - + - + @@ -7100,10 +7100,10 @@ - + - + @@ -7138,7 +7138,7 @@ - + @@ -7151,10 +7151,10 @@ - + - + @@ -7166,10 +7166,10 @@ - + - + @@ -7180,10 +7180,10 @@ - + - + @@ -7195,10 +7195,10 @@ - + - + @@ -7214,10 +7214,10 @@ - + - + @@ -7239,10 +7239,10 @@ - + - + @@ -7264,10 +7264,10 @@ - + - + @@ -7280,10 +7280,10 @@ - + - + @@ -7305,10 +7305,10 @@ - + - + @@ -7330,10 +7330,10 @@ - + - + @@ -7344,10 +7344,10 @@ - + - + @@ -7359,10 +7359,10 @@ - + - + @@ -7373,10 +7373,10 @@ - + - + @@ -7388,10 +7388,10 @@ - + - + @@ -7407,7 +7407,7 @@ - + @@ -7459,10 +7459,10 @@ - + - + @@ -7470,10 +7470,10 @@ - + - + @@ -7483,10 +7483,10 @@ - + - + @@ -7496,10 +7496,10 @@ - + - + @@ -7519,10 +7519,10 @@ - + - + @@ -7534,10 +7534,10 @@ - + - + @@ -7548,10 +7548,10 @@ - + - + @@ -7563,10 +7563,10 @@ - + - + @@ -7582,10 +7582,10 @@ - + - + @@ -7607,10 +7607,10 @@ - + - + @@ -7632,10 +7632,10 @@ - + - + @@ -7670,10 +7670,10 @@ - + - + @@ -7688,10 +7688,10 @@ - + - + @@ -7701,10 +7701,10 @@ - + - + @@ -7729,7 +7729,7 @@ - + @@ -7748,10 +7748,10 @@ - + - + @@ -7779,7 +7779,7 @@ - + @@ -7801,10 +7801,10 @@ - + - + @@ -7832,7 +7832,7 @@ - + @@ -7847,10 +7847,10 @@ - + - + @@ -7876,7 +7876,7 @@ - + @@ -7891,10 +7891,10 @@ - + - + @@ -7909,10 +7909,10 @@ - + - + @@ -7922,10 +7922,10 @@ - + - + @@ -7950,7 +7950,7 @@ - + @@ -7968,7 +7968,7 @@ - + @@ -7981,10 +7981,10 @@ - + - + @@ -7999,10 +7999,10 @@ - + - + @@ -8012,10 +8012,10 @@ - + - + @@ -8029,10 +8029,10 @@ - + - + @@ -8040,10 +8040,10 @@ - + - + @@ -8053,10 +8053,10 @@ - + - + @@ -8066,10 +8066,10 @@ - + - + @@ -8085,10 +8085,10 @@ - + - + @@ -8096,10 +8096,10 @@ - + - + @@ -8109,10 +8109,10 @@ - + - + @@ -8122,10 +8122,10 @@ - + - + @@ -8145,10 +8145,10 @@ - + - + @@ -8194,10 +8194,10 @@ - + - + @@ -8212,10 +8212,10 @@ - + - + @@ -8223,10 +8223,10 @@ - + - + @@ -8234,10 +8234,10 @@ - + - + @@ -8259,10 +8259,10 @@ - + - + @@ -8284,10 +8284,10 @@ - + - + @@ -8302,10 +8302,10 @@ - + - + @@ -8313,10 +8313,10 @@ - + - + @@ -8324,10 +8324,10 @@ - + - + @@ -8349,10 +8349,10 @@ - + - + @@ -8365,10 +8365,10 @@ - + - + @@ -8390,10 +8390,10 @@ - + - + @@ -8415,10 +8415,10 @@ - + - + @@ -8434,10 +8434,10 @@ - + - + @@ -8459,10 +8459,10 @@ - + - + @@ -8470,10 +8470,10 @@ - + - + @@ -8489,10 +8489,10 @@ - + - + @@ -8505,30 +8505,30 @@ - + - + - + - + - + - + @@ -8616,10 +8616,10 @@ - + - + @@ -8634,10 +8634,10 @@ - + - + @@ -8645,10 +8645,10 @@ - + - + @@ -8656,10 +8656,10 @@ - + - + @@ -8681,10 +8681,10 @@ - + - + @@ -8697,10 +8697,10 @@ - + - + @@ -8722,10 +8722,10 @@ - + - + @@ -8747,10 +8747,10 @@ - + - + @@ -8766,10 +8766,10 @@ - + - + @@ -8791,10 +8791,10 @@ - + - + @@ -8802,10 +8802,10 @@ - + - + @@ -8821,10 +8821,10 @@ - + - + @@ -8837,30 +8837,30 @@ - + - + - + - + - + - + @@ -8878,10 +8878,10 @@ - + - + @@ -8894,30 +8894,30 @@ - + - + - + - + - + - + @@ -8932,10 +8932,10 @@ - + - + @@ -8950,10 +8950,10 @@ - + - + @@ -8961,10 +8961,10 @@ - + - + @@ -8972,10 +8972,10 @@ - + - + @@ -8997,10 +8997,10 @@ - + - + @@ -9013,10 +9013,10 @@ - + - + @@ -9038,10 +9038,10 @@ - + - + @@ -9063,10 +9063,10 @@ - + - + @@ -9082,10 +9082,10 @@ - + - + @@ -9107,10 +9107,10 @@ - + - + @@ -9118,10 +9118,10 @@ - + - + @@ -9136,10 +9136,10 @@ - + - + @@ -9156,10 +9156,10 @@ - + - + @@ -9174,10 +9174,10 @@ - + - + @@ -9185,10 +9185,10 @@ - + - + @@ -9196,10 +9196,10 @@ - + - + @@ -9221,10 +9221,10 @@ - + - + @@ -9242,10 +9242,10 @@ - + - + @@ -9260,10 +9260,10 @@ - + - + @@ -9271,10 +9271,10 @@ - + - + @@ -9282,10 +9282,10 @@ - + - + @@ -9307,10 +9307,10 @@ - + - + @@ -9359,10 +9359,10 @@ - + - + @@ -9384,10 +9384,10 @@ - + - + @@ -9409,10 +9409,10 @@ - + - + @@ -9426,10 +9426,10 @@ - + - + @@ -9442,10 +9442,10 @@ - + - + @@ -9466,10 +9466,10 @@ - + - + @@ -9491,10 +9491,10 @@ - + - + @@ -9516,10 +9516,10 @@ - + - + @@ -9541,10 +9541,10 @@ - + - + @@ -9555,10 +9555,10 @@ - + - + @@ -9570,10 +9570,10 @@ - + - + @@ -9604,10 +9604,10 @@ - + - + @@ -9629,10 +9629,10 @@ - + - + @@ -9654,10 +9654,10 @@ - + - + @@ -9679,10 +9679,10 @@ - + - + @@ -9693,10 +9693,10 @@ - + - + @@ -9708,10 +9708,10 @@ - + - + @@ -9727,10 +9727,10 @@ - + - + @@ -9752,10 +9752,10 @@ - + - + @@ -9777,10 +9777,10 @@ - + - + @@ -9802,10 +9802,10 @@ - + - + @@ -9816,10 +9816,10 @@ - + - + @@ -9831,10 +9831,10 @@ - + - + @@ -9850,10 +9850,10 @@ - + - + @@ -9875,10 +9875,10 @@ - + - + @@ -9900,10 +9900,10 @@ - + - + @@ -9917,10 +9917,10 @@ - + - + @@ -9933,10 +9933,10 @@ - + - + @@ -9953,10 +9953,10 @@ - + - + @@ -9978,10 +9978,10 @@ - + - + @@ -10003,10 +10003,10 @@ - + - + @@ -10020,10 +10020,10 @@ - + - + @@ -10036,10 +10036,10 @@ - + - + @@ -10055,7 +10055,7 @@ - + @@ -10084,7 +10084,7 @@ - + @@ -10113,7 +10113,7 @@ - + @@ -10133,7 +10133,7 @@ - + @@ -10153,7 +10153,7 @@ - + @@ -10205,7 +10205,7 @@ - + @@ -10247,7 +10247,7 @@ - + @@ -10282,7 +10282,7 @@ - + @@ -10318,7 +10318,7 @@ - + @@ -10354,7 +10354,7 @@ - + @@ -10374,7 +10374,7 @@ - + @@ -10394,7 +10394,7 @@ - + @@ -10476,10 +10476,10 @@ - + - + @@ -10494,10 +10494,10 @@ - + - + @@ -10505,10 +10505,10 @@ - + - + @@ -10516,10 +10516,10 @@ - + - + @@ -10541,10 +10541,10 @@ - + - + @@ -10556,10 +10556,10 @@ - + - + @@ -10575,10 +10575,10 @@ - + - + @@ -10593,10 +10593,10 @@ - + - + @@ -10604,10 +10604,10 @@ - + - + @@ -10615,10 +10615,10 @@ - + - + @@ -10640,10 +10640,10 @@ - + - + @@ -10654,10 +10654,10 @@ - + - + @@ -10679,10 +10679,10 @@ - + - + @@ -10704,10 +10704,10 @@ - + - + @@ -10719,10 +10719,10 @@ - + - + @@ -10744,10 +10744,10 @@ - + - + @@ -10755,10 +10755,10 @@ - + - + @@ -10784,10 +10784,10 @@ - + - + @@ -10850,10 +10850,10 @@ - + - + @@ -10868,10 +10868,10 @@ - + - + @@ -10879,10 +10879,10 @@ - + - + @@ -10890,10 +10890,10 @@ - + - + @@ -10915,10 +10915,10 @@ - + - + @@ -10930,10 +10930,10 @@ - + - + @@ -10949,10 +10949,10 @@ - + - + @@ -10967,10 +10967,10 @@ - + - + @@ -10978,10 +10978,10 @@ - + - + @@ -10989,10 +10989,10 @@ - + - + @@ -11014,10 +11014,10 @@ - + - + @@ -11028,10 +11028,10 @@ - + - + @@ -11053,10 +11053,10 @@ - + - + @@ -11078,10 +11078,10 @@ - + - + @@ -11093,10 +11093,10 @@ - + - + @@ -11118,10 +11118,10 @@ - + - + @@ -11129,10 +11129,10 @@ - + - + @@ -11158,10 +11158,10 @@ - + - + @@ -11224,10 +11224,10 @@ - + - + @@ -11242,10 +11242,10 @@ - + - + @@ -11253,10 +11253,10 @@ - + - + @@ -11264,10 +11264,10 @@ - + - + @@ -11289,10 +11289,10 @@ - + - + @@ -11311,10 +11311,10 @@ - + - + @@ -11330,10 +11330,10 @@ - + - + @@ -11348,10 +11348,10 @@ - + - + @@ -11359,10 +11359,10 @@ - + - + @@ -11370,10 +11370,10 @@ - + - + @@ -11395,10 +11395,10 @@ - + - + @@ -11416,10 +11416,10 @@ - + - + @@ -11441,10 +11441,10 @@ - + - + @@ -11466,10 +11466,10 @@ - + - + @@ -11487,10 +11487,10 @@ - + - + @@ -11512,10 +11512,10 @@ - + - + @@ -11523,10 +11523,10 @@ - + - + @@ -11534,10 +11534,10 @@ - + - + @@ -11602,10 +11602,10 @@ - + - + @@ -11620,10 +11620,10 @@ - + - + @@ -11631,10 +11631,10 @@ - + - + @@ -11642,10 +11642,10 @@ - + - + @@ -11667,10 +11667,10 @@ - + - + @@ -11682,10 +11682,10 @@ - + - + @@ -11701,10 +11701,10 @@ - + - + @@ -11719,10 +11719,10 @@ - + - + @@ -11730,10 +11730,10 @@ - + - + @@ -11741,10 +11741,10 @@ - + - + @@ -11766,10 +11766,10 @@ - + - + @@ -11780,10 +11780,10 @@ - + - + @@ -11805,10 +11805,10 @@ - + - + @@ -11830,10 +11830,10 @@ - + - + @@ -11845,10 +11845,10 @@ - + - + @@ -11870,10 +11870,10 @@ - + - + @@ -11881,10 +11881,10 @@ - + - + @@ -11910,10 +11910,10 @@ - + - + @@ -11976,10 +11976,10 @@ - + - + @@ -11994,10 +11994,10 @@ - + - + @@ -12005,10 +12005,10 @@ - + - + @@ -12016,10 +12016,10 @@ - + - + @@ -12041,10 +12041,10 @@ - + - + @@ -12066,10 +12066,10 @@ - + - + @@ -12084,10 +12084,10 @@ - + - + @@ -12095,10 +12095,10 @@ - + - + @@ -12106,10 +12106,10 @@ - + - + @@ -12131,10 +12131,10 @@ - + - + @@ -12147,10 +12147,10 @@ - + - + @@ -12172,10 +12172,10 @@ - + - + @@ -12197,10 +12197,10 @@ - + - + @@ -12216,10 +12216,10 @@ - + - + @@ -12241,10 +12241,10 @@ - + - + @@ -12252,10 +12252,10 @@ - + - + @@ -12286,10 +12286,10 @@ - + - + @@ -12304,10 +12304,10 @@ - + - + @@ -12315,10 +12315,10 @@ - + - + @@ -12326,10 +12326,10 @@ - + - + @@ -12351,10 +12351,10 @@ - + - + @@ -12365,10 +12365,10 @@ - + - + @@ -12390,10 +12390,10 @@ - + - + @@ -12415,10 +12415,10 @@ - + - + @@ -12430,10 +12430,10 @@ - + - + @@ -12455,10 +12455,10 @@ - + - + @@ -12466,10 +12466,10 @@ - + - + @@ -12495,10 +12495,10 @@ - + - + @@ -12516,10 +12516,10 @@ - + - + @@ -12534,10 +12534,10 @@ - + - + @@ -12545,10 +12545,10 @@ - + - + @@ -12556,10 +12556,10 @@ - + - + @@ -12581,10 +12581,10 @@ - + - + @@ -12595,10 +12595,10 @@ - + - + @@ -12620,10 +12620,10 @@ - + - + @@ -12645,10 +12645,10 @@ - + - + @@ -12660,10 +12660,10 @@ - + - + @@ -12685,10 +12685,10 @@ - + - + @@ -12696,10 +12696,10 @@ - + - + @@ -12725,10 +12725,10 @@ - + - + @@ -12746,10 +12746,10 @@ - + - + @@ -12764,10 +12764,10 @@ - + - + @@ -12775,10 +12775,10 @@ - + - + @@ -12786,10 +12786,10 @@ - + - + @@ -12811,10 +12811,10 @@ - + - + @@ -12832,10 +12832,10 @@ - + - + @@ -12857,10 +12857,10 @@ - + - + @@ -12882,10 +12882,10 @@ - + - + @@ -12903,10 +12903,10 @@ - + - + @@ -12928,10 +12928,10 @@ - + - + @@ -12939,10 +12939,10 @@ - + - + @@ -12950,10 +12950,10 @@ - + - + @@ -12973,10 +12973,10 @@ - + - + @@ -12991,10 +12991,10 @@ - + - + @@ -13002,10 +13002,10 @@ - + - + @@ -13013,10 +13013,10 @@ - + - + @@ -13038,10 +13038,10 @@ - + - + @@ -13052,10 +13052,10 @@ - + - + @@ -13077,10 +13077,10 @@ - + - + @@ -13102,10 +13102,10 @@ - + - + @@ -13117,10 +13117,10 @@ - + - + @@ -13142,10 +13142,10 @@ - + - + @@ -13153,10 +13153,10 @@ - + - + @@ -13182,10 +13182,10 @@ - + - + @@ -13203,10 +13203,10 @@ - + - + @@ -13221,10 +13221,10 @@ - + - + @@ -13232,10 +13232,10 @@ - + - + @@ -13243,10 +13243,10 @@ - + - + @@ -13268,10 +13268,10 @@ - + - + @@ -13284,10 +13284,10 @@ - + - + @@ -13309,10 +13309,10 @@ - + - + @@ -13334,10 +13334,10 @@ - + - + @@ -13353,10 +13353,10 @@ - + - + @@ -13378,10 +13378,10 @@ - + - + @@ -13389,10 +13389,10 @@ - + - + @@ -13408,10 +13408,10 @@ - + - + @@ -13419,10 +13419,10 @@ - + - + @@ -13431,10 +13431,10 @@ - + - + @@ -13442,10 +13442,10 @@ - + - + @@ -13456,10 +13456,10 @@ - + - + @@ -13474,10 +13474,10 @@ - + - + @@ -13485,10 +13485,10 @@ - + - + @@ -13496,10 +13496,10 @@ - + - + @@ -13521,10 +13521,10 @@ - + - + @@ -13535,10 +13535,10 @@ - + - + @@ -13560,10 +13560,10 @@ - + - + @@ -13585,10 +13585,10 @@ - + - + @@ -13600,10 +13600,10 @@ - + - + @@ -13625,10 +13625,10 @@ - + - + @@ -13636,10 +13636,10 @@ - + - + @@ -13665,10 +13665,10 @@ - + - + @@ -13682,10 +13682,10 @@ - + - + @@ -13700,10 +13700,10 @@ - + - + @@ -13711,10 +13711,10 @@ - + - + @@ -13722,10 +13722,10 @@ - + - + @@ -13747,10 +13747,10 @@ - + - + @@ -13761,10 +13761,10 @@ - + - + @@ -13786,10 +13786,10 @@ - + - + @@ -13811,10 +13811,10 @@ - + - + @@ -13826,10 +13826,10 @@ - + - + @@ -13851,10 +13851,10 @@ - + - + @@ -13862,10 +13862,10 @@ - + - + @@ -13891,10 +13891,10 @@ - + - + @@ -13908,10 +13908,10 @@ - + - + @@ -13926,10 +13926,10 @@ - + - + @@ -13937,10 +13937,10 @@ - + - + @@ -13948,10 +13948,10 @@ - + - + @@ -13973,10 +13973,10 @@ - + - + @@ -13994,10 +13994,10 @@ - + - + @@ -14019,10 +14019,10 @@ - + - + @@ -14044,10 +14044,10 @@ - + - + @@ -14065,10 +14065,10 @@ - + - + @@ -14090,10 +14090,10 @@ - + - + @@ -14101,10 +14101,10 @@ - + - + @@ -14112,10 +14112,10 @@ - + - + @@ -14131,10 +14131,10 @@ - + - + @@ -14149,10 +14149,10 @@ - + - + @@ -14160,10 +14160,10 @@ - + - + @@ -14171,10 +14171,10 @@ - + - + @@ -14196,10 +14196,10 @@ - + - + @@ -14210,10 +14210,10 @@ - + - + @@ -14235,10 +14235,10 @@ - + - + @@ -14260,10 +14260,10 @@ - + - + @@ -14275,10 +14275,10 @@ - + - + @@ -14300,10 +14300,10 @@ - + - + @@ -14311,10 +14311,10 @@ - + - + @@ -14340,10 +14340,10 @@ - + - + @@ -14357,10 +14357,10 @@ - + - + @@ -14375,10 +14375,10 @@ - + - + @@ -14386,10 +14386,10 @@ - + - + @@ -14397,10 +14397,10 @@ - + - + @@ -14422,10 +14422,10 @@ - + - + @@ -14438,10 +14438,10 @@ - + - + @@ -14463,10 +14463,10 @@ - + - + @@ -14488,10 +14488,10 @@ - + - + @@ -14507,10 +14507,10 @@ - + - + @@ -14532,10 +14532,10 @@ - + - + @@ -14543,10 +14543,10 @@ - + - + @@ -14562,10 +14562,10 @@ - + - + @@ -14580,10 +14580,10 @@ - + - + @@ -14591,10 +14591,10 @@ - + - + @@ -14602,10 +14602,10 @@ - + - + @@ -14627,10 +14627,10 @@ - + - + @@ -14642,10 +14642,10 @@ - + - + @@ -14659,10 +14659,10 @@ - + - + @@ -14677,10 +14677,10 @@ - + - + @@ -14688,10 +14688,10 @@ - + - + @@ -14699,10 +14699,10 @@ - + - + @@ -14724,10 +14724,10 @@ - + - + @@ -14739,10 +14739,10 @@ - + - + @@ -14756,10 +14756,10 @@ - + - + @@ -14774,10 +14774,10 @@ - + - + @@ -14785,10 +14785,10 @@ - + - + @@ -14796,10 +14796,10 @@ - + - + @@ -14821,10 +14821,10 @@ - + - + @@ -14843,10 +14843,10 @@ - + - + @@ -14860,10 +14860,10 @@ - + - + @@ -14878,10 +14878,10 @@ - + - + @@ -14889,10 +14889,10 @@ - + - + @@ -14900,10 +14900,10 @@ - + - + @@ -14925,10 +14925,10 @@ - + - + @@ -14940,10 +14940,10 @@ - + - + @@ -14957,10 +14957,10 @@ - + - + @@ -14975,10 +14975,10 @@ - + - + @@ -14986,10 +14986,10 @@ - + - + @@ -14997,10 +14997,10 @@ - + - + @@ -15022,10 +15022,10 @@ - + - + @@ -15043,10 +15043,10 @@ - + - + @@ -15061,10 +15061,10 @@ - + - + @@ -15072,10 +15072,10 @@ - + - + @@ -15083,10 +15083,10 @@ - + - + @@ -15108,10 +15108,10 @@ - + - + @@ -15123,10 +15123,10 @@ - + - + @@ -15136,10 +15136,10 @@ - + - + @@ -15154,10 +15154,10 @@ - + - + @@ -15165,10 +15165,10 @@ - + - + @@ -15176,10 +15176,10 @@ - + - + @@ -15201,10 +15201,10 @@ - + - + @@ -15216,10 +15216,10 @@ - + - + @@ -15229,10 +15229,10 @@ - + - + @@ -15247,10 +15247,10 @@ - + - + @@ -15258,10 +15258,10 @@ - + - + @@ -15269,10 +15269,10 @@ - + - + @@ -15294,10 +15294,10 @@ - + - + @@ -15316,10 +15316,10 @@ - + - + @@ -15329,10 +15329,10 @@ - + - + @@ -15347,10 +15347,10 @@ - + - + @@ -15358,10 +15358,10 @@ - + - + @@ -15369,10 +15369,10 @@ - + - + @@ -15394,10 +15394,10 @@ - + - + @@ -15409,10 +15409,10 @@ - + - + @@ -15422,10 +15422,10 @@ - + - + @@ -15440,10 +15440,10 @@ - + - + @@ -15451,10 +15451,10 @@ - + - + @@ -15462,10 +15462,10 @@ - + - + @@ -15487,10 +15487,10 @@ - + - + @@ -15510,10 +15510,10 @@ - + - + @@ -15527,10 +15527,10 @@ - + - + @@ -15549,10 +15549,10 @@ - + - + @@ -15566,10 +15566,10 @@ - + - + @@ -15616,10 +15616,10 @@ - + - + @@ -15641,10 +15641,10 @@ - + - + @@ -15670,10 +15670,10 @@ - + - + @@ -15695,10 +15695,10 @@ - + - + @@ -15728,10 +15728,10 @@ - + - + @@ -15753,10 +15753,10 @@ - + - + @@ -15782,10 +15782,10 @@ - + - + @@ -15807,10 +15807,10 @@ - + - + @@ -15850,7 +15850,7 @@ - + @@ -15861,7 +15861,7 @@ - + @@ -15879,7 +15879,7 @@ - + @@ -15904,7 +15904,7 @@ - + @@ -15928,7 +15928,7 @@ - + @@ -15953,7 +15953,7 @@ - + @@ -15976,10 +15976,10 @@ - + - + @@ -15987,10 +15987,10 @@ - + - + @@ -16012,10 +16012,10 @@ - + - + @@ -16053,10 +16053,10 @@ - + - + @@ -16078,10 +16078,10 @@ - + - + @@ -16105,10 +16105,10 @@ - + - + @@ -16134,10 +16134,10 @@ - + - + @@ -16159,10 +16159,10 @@ - + - + @@ -16188,10 +16188,10 @@ - + - + @@ -16213,10 +16213,10 @@ - + - + @@ -16244,10 +16244,10 @@ - + - + @@ -16269,10 +16269,10 @@ - + - + @@ -16298,10 +16298,10 @@ - + - + @@ -16323,10 +16323,10 @@ - + - + @@ -16367,10 +16367,10 @@ - + - + @@ -16384,10 +16384,10 @@ - + - + @@ -16442,10 +16442,10 @@ - + - + @@ -16460,10 +16460,10 @@ - + - + @@ -16471,10 +16471,10 @@ - + - + @@ -16482,10 +16482,10 @@ - + - + @@ -16507,10 +16507,10 @@ - + - + @@ -16529,10 +16529,10 @@ - + - + @@ -16548,10 +16548,10 @@ - + - + @@ -16566,10 +16566,10 @@ - + - + @@ -16577,10 +16577,10 @@ - + - + @@ -16588,10 +16588,10 @@ - + - + @@ -16613,10 +16613,10 @@ - + - + @@ -16634,10 +16634,10 @@ - + - + @@ -16659,10 +16659,10 @@ - + - + @@ -16684,10 +16684,10 @@ - + - + @@ -16705,10 +16705,10 @@ - + - + @@ -16730,10 +16730,10 @@ - + - + @@ -16741,10 +16741,10 @@ - + - + @@ -16752,10 +16752,10 @@ - + - + @@ -16895,10 +16895,10 @@ - + - + @@ -16906,10 +16906,10 @@ - + - + @@ -16919,10 +16919,10 @@ - + - + @@ -16932,10 +16932,10 @@ - + - + @@ -16955,10 +16955,10 @@ - + - + @@ -16970,10 +16970,10 @@ - + - + @@ -16984,10 +16984,10 @@ - + - + @@ -16999,10 +16999,10 @@ - + - + @@ -17018,10 +17018,10 @@ - + - + @@ -17043,10 +17043,10 @@ - + - + @@ -17068,10 +17068,10 @@ - + - + @@ -17137,10 +17137,10 @@ - + - + @@ -17162,10 +17162,10 @@ - + - + @@ -17187,10 +17187,10 @@ - + - + @@ -17204,10 +17204,10 @@ - + - + @@ -17220,10 +17220,10 @@ - + - + @@ -17244,10 +17244,10 @@ - + - + @@ -17269,10 +17269,10 @@ - + - + @@ -17294,10 +17294,10 @@ - + - + @@ -17319,10 +17319,10 @@ - + - + @@ -17333,10 +17333,10 @@ - + - + @@ -17348,10 +17348,10 @@ - + - + @@ -17419,7 +17419,7 @@ - + @@ -17461,7 +17461,7 @@ - + @@ -17526,10 +17526,10 @@ - + - + @@ -17551,10 +17551,10 @@ - + - + @@ -17580,10 +17580,10 @@ - + - + @@ -17605,10 +17605,10 @@ - + - + @@ -17638,10 +17638,10 @@ - + - + @@ -17663,10 +17663,10 @@ - + - + @@ -17692,10 +17692,10 @@ - + - + @@ -17717,10 +17717,10 @@ - + - + @@ -17760,7 +17760,7 @@ - + @@ -17771,7 +17771,7 @@ - + @@ -17789,7 +17789,7 @@ - + @@ -17814,7 +17814,7 @@ - + @@ -17838,7 +17838,7 @@ - + @@ -17863,7 +17863,7 @@ - + @@ -17886,10 +17886,10 @@ - + - + @@ -17897,10 +17897,10 @@ - + - + @@ -17922,10 +17922,10 @@ - + - + @@ -17967,10 +17967,10 @@ - + - + @@ -18016,10 +18016,10 @@ - + - + @@ -18034,10 +18034,10 @@ - + - + @@ -18045,10 +18045,10 @@ - + - + @@ -18056,10 +18056,10 @@ - + - + @@ -18081,10 +18081,10 @@ - + - + @@ -18106,10 +18106,10 @@ - + - + @@ -18124,10 +18124,10 @@ - + - + @@ -18135,10 +18135,10 @@ - + - + @@ -18146,10 +18146,10 @@ - + - + @@ -18171,10 +18171,10 @@ - + - + @@ -18187,10 +18187,10 @@ - + - + @@ -18212,10 +18212,10 @@ - + - + @@ -18237,10 +18237,10 @@ - + - + @@ -18256,10 +18256,10 @@ - + - + @@ -18281,10 +18281,10 @@ - + - + @@ -18292,10 +18292,10 @@ - + - + @@ -18311,10 +18311,10 @@ - + - + @@ -18327,30 +18327,30 @@ - + - + - + - + - + - + @@ -18418,7 +18418,7 @@ - + @@ -18454,7 +18454,7 @@ - + @@ -18520,7 +18520,7 @@ - + @@ -18572,10 +18572,10 @@ - + - + @@ -18583,10 +18583,10 @@ - + - + @@ -18596,10 +18596,10 @@ - + - + @@ -18609,10 +18609,10 @@ - + - + @@ -18632,10 +18632,10 @@ - + - + @@ -18647,10 +18647,10 @@ - + - + @@ -18661,10 +18661,10 @@ - + - + @@ -18676,10 +18676,10 @@ - + - + @@ -18695,10 +18695,10 @@ - + - + @@ -18720,10 +18720,10 @@ - + - + @@ -18745,10 +18745,10 @@ - + - + @@ -18783,10 +18783,10 @@ - + - + @@ -18801,10 +18801,10 @@ - + - + @@ -18814,10 +18814,10 @@ - + - + @@ -18842,7 +18842,7 @@ - + @@ -18861,10 +18861,10 @@ - + - + @@ -18892,7 +18892,7 @@ - + @@ -18914,7 +18914,7 @@ - + @@ -18968,7 +18968,7 @@ - + @@ -19010,7 +19010,7 @@ - + @@ -19059,7 +19059,7 @@ - + @@ -19083,7 +19083,7 @@ - + @@ -19110,7 +19110,7 @@ - + @@ -19122,7 +19122,7 @@ - + @@ -19157,7 +19157,7 @@ - + @@ -19218,7 +19218,7 @@ - + @@ -19253,7 +19253,7 @@ - + @@ -19276,7 +19276,7 @@ - + @@ -19333,7 +19333,7 @@ - + @@ -19343,7 +19343,7 @@ - + @@ -19366,7 +19366,7 @@ - + @@ -19438,7 +19438,7 @@ - + @@ -19468,7 +19468,7 @@ - + @@ -19513,7 +19513,7 @@ - + @@ -19530,7 +19530,7 @@ - + @@ -19562,7 +19562,7 @@ - + @@ -19786,7 +19786,7 @@ - + @@ -19920,8 +19920,8 @@ - - + + @@ -20087,8 +20087,8 @@ - - + + diff --git a/vars.xml b/vars.xml index 9d10d9c..90cfc1c 100644 --- a/vars.xml +++ b/vars.xml @@ -1,13 +1,13 @@ - + - true - true - ADC0EndAdr + false + false + ADC0finishAddr pt_int16 t_iq_none - t_iq_none + int int Src/myXilinx/x_example_all.c false @@ -407,7 +407,7 @@ char[8][16] Src/myLibs/bender.c false - True + true false @@ -863,7 +863,7 @@ int[12] Src/main/init_protect_levels.c false - True + true false @@ -875,7 +875,7 @@ int[12] Src/main/init_protect_levels.c false - True + true false @@ -959,7 +959,7 @@ int[12] Src/main/init_protect_levels.c false - True + true false @@ -971,7 +971,7 @@ int[12] Src/main/init_protect_levels.c false - True + true false @@ -1151,7 +1151,7 @@ char[4] Src/myLibs/bender.c false - True + true false @@ -1187,7 +1187,7 @@ char[5] Src/myLibs/bender.c false - True + true false @@ -1199,7 +1199,7 @@ char[4][8] Src/myLibs/bender.c false - True + true false @@ -1451,7 +1451,7 @@ DQ_TO_ALPHABETA Src/main/v_pwm24.c false - True + true false @@ -2953,6 +2953,18 @@ false false + + false + false + return_var + pt_int32 + t_iq_none + int + long + Src/main/Main.c + false + false + false false @@ -3397,6 +3409,18 @@ false false + + false + false + var_numb + pt_int32 + t_iq_none + int + long + Src/main/Main.c + false + false + false false @@ -3554,9 +3578,9 @@ false - true + false true - ADC_f00 + ADC_f[0][0] pt_int16 t_iq_none t_iq_none @@ -3566,9 +3590,9 @@ false - true + false true - ADC_f01 + ADC_f[0][1] pt_int16 t_iq_none t_iq_none @@ -3578,9 +3602,9 @@ false - true + false true - ADC_f02 + ADC_f[0][2] pt_int16 t_iq_none t_iq_none @@ -3590,9 +3614,9 @@ false - true + false true - ADC_f03 + ADC_f[0][3] pt_int16 t_iq_none t_iq_none @@ -3602,9 +3626,9 @@ false - true + false true - ADC_f04 + ADC_f[0][4] pt_int16 t_iq_none t_iq_none @@ -3614,9 +3638,9 @@ false - true + false true - ADC_f05 + ADC_f[0][5] pt_int16 t_iq_none t_iq_none @@ -3626,9 +3650,9 @@ false - true + false true - ADC_f06 + ADC_f[0][6] pt_int16 t_iq_none t_iq_none @@ -3638,11 +3662,11 @@ false - true + false true - ADC_f07 + ADC_f[0][7] pt_int16 - t_iq + t_iq_none t_iq_none int Src/main/adc_tools.c @@ -3650,9 +3674,9 @@ false - true + false true - ADC_f08 + ADC_f[0][8] pt_int16 t_iq_none t_iq_none @@ -3662,9 +3686,9 @@ false - true + false true - ADC_f09 + ADC_f[0][9] pt_int16 t_iq_none t_iq_none @@ -3674,9 +3698,9 @@ false - true + false true - ADC_f010 + ADC_f[0][10] pt_int16 t_iq_none t_iq_none @@ -3688,7 +3712,7 @@ true true - ADC_f011 + ADC_f[0][11] pt_int16 t_iq_none t_iq_none @@ -3700,7 +3724,7 @@ true true - ADC_f012 + ADC_f[0][12] pt_int16 t_iq_none t_iq_none @@ -3712,8 +3736,8 @@ true true - ADC_f013 - pt_int16 + ADC_f[0][13] + pt_int32 t_iq_none t_iq_none int @@ -3724,7 +3748,7 @@ true true - ADC_f014 + ADC_f[0][14] pt_int16 t_iq_none t_iq_none @@ -3736,7 +3760,7 @@ true true - ADC_f015 + ADC_f[0][15] pt_int16 t_iq_none t_iq_none @@ -3745,10 +3769,202 @@ false false - - false + + true true - tk2_ackcur + ADC_f[1][0] + pt_int16 + t_iq_none + t_iq_none + int + Src/main/adc_tools.c + false + false + + + true + true + ADC_f[1][1] + pt_int16 + t_iq_none + t_iq_none + int + Src/main/adc_tools.c + false + false + + + true + true + ADC_f[1][2] + pt_int64 + t_iq_none + t_iq_none + int + Src/main/adc_tools.c + false + false + + + true + true + ADC_f[1][3] + pt_int32 + t_iq_none + t_iq_none + int + Src/main/adc_tools.c + false + false + + + true + true + ADC_f[1][4] + pt_int16 + t_iq_none + t_iq_none + int + Src/main/adc_tools.c + false + false + + + true + true + ADC_f[1][5] + pt_int16 + t_iq_none + t_iq_none + int + Src/main/adc_tools.c + false + false + + + true + true + ADC_f[1][6] + pt_int16 + t_iq_none + t_iq_none + int + Src/main/adc_tools.c + false + false + + + true + true + ADC_f[1][7] + pt_int16 + t_iq_none + t_iq_none + int + Src/main/adc_tools.c + false + false + + + true + true + ADC_f[1][8] + pt_int16 + t_iq_none + t_iq_none + int + Src/main/adc_tools.c + false + false + + + true + true + ADC_f[1][9] + pt_int16 + t_iq_none + t_iq_none + int + Src/main/adc_tools.c + false + false + + + true + true + ADC_f[1][10] + pt_int16 + t_iq_none + t_iq_none + int + Src/main/adc_tools.c + false + false + + + true + true + ADC_f[1][11] + pt_int16 + t_iq1 + t_iq_none + int + Src/main/adc_tools.c + false + false + + + true + true + ADC_f[1][12] + pt_int32 + t_iq_none + t_iq_none + int + Src/main/adc_tools.c + false + false + + + true + true + ADC_f[1][13] + pt_int16 + t_iq_none + t_iq_none + int + Src/main/adc_tools.c + false + false + + + true + true + ADC_f[1][14] + pt_int16 + t_iq_none + t_iq_none + int + Src/main/adc_tools.c + false + false + + + true + true + ADC_f[1][15] + pt_int16 + t_iq_none + t_iq_none + int + Src/main/adc_tools.c + false + false + + + true + true + project.cds_in[0].plane_address pt_uint16 t_iq_none t_iq_none @@ -3757,240 +3973,72 @@ false false - - false + + true true - tk1_adr + Bender[0].KOhms pt_uint16 t_iq_none t_iq_none - UInt16 - Src/myXilinx/xp_project.c + unsigned int + Src/myLibs/bender.c false false - - false + + true true - ADC_sf[1][0] - pt_int16 + Bender[0].Times + pt_uint16 t_iq_none t_iq_none - int - Src/main/adc_tools.c + unsigned int + Src/myLibs/bender.c false false - - false + + true true - ADC_sf[1][1] - pt_int16 + Bender[0].Error.all + pt_uint16 t_iq_none t_iq_none - int - Src/main/adc_tools.c - false - false - - - false - true - ADC_sf[1][2] - pt_int16 - t_iq_none - t_iq_none - int - Src/main/adc_tools.c - false - false - - - false - true - ADC_sf[1][3] - pt_int16 - t_iq_none - t_iq_none - int - Src/main/adc_tools.c - false - false - - - false - true - ADC_sf[1][4] - pt_int16 - t_iq_none - t_iq_none - int - Src/main/adc_tools.c - false - false - - - false - true - ADC_sf[1][5] - pt_int16 - t_iq_none - t_iq_none - int - Src/main/adc_tools.c - false - false - - - false - true - ADC_sf[1][6] - pt_int16 - t_iq_none - t_iq_none - int - Src/main/adc_tools.c - false - false - - - false - true - ADC_sf[1][7] - pt_int16 - t_iq_none - t_iq_none - int - Src/main/adc_tools.c - false - false - - - false - true - ADC_sf[1][8] - pt_int16 - t_iq_none - t_iq_none - int - Src/main/adc_tools.c - false - false - - - false - true - ADC_sf[1][9] - pt_int16 - t_iq_none - t_iq_none - int - Src/main/adc_tools.c - false - false - - - false - true - ADC_sf[1][10] - pt_int16 - t_iq_none - t_iq_none - int - Src/main/adc_tools.c - false - false - - - false - true - ADC_sf[1][11] - pt_int16 - t_iq_none - t_iq_none - int - Src/main/adc_tools.c - false - false - - - false - true - ADC_sf[1][12] - pt_int16 - t_iq_none - t_iq_none - int - Src/main/adc_tools.c - false - false - - - false - true - ADC_sf[1][13] - pt_int16 - t_iq_none - t_iq_none - int - Src/main/adc_tools.c - false - false - - - false - true - ADC_sf[1][14] - pt_int16 - t_iq_none - t_iq_none - int - Src/main/adc_tools.c - false - false - - - false - true - ADC_sf[1][15] - pt_int16 - t_iq_none - t_iq_none - int - Src/main/adc_tools.c + unsigned int + Src/myLibs/bender.c false false - Src/main/vector.h - Src/myXilinx/RS_Functions_modbus.h + Src/main/v_pwm24.h Src/main/f281xpwm.h Src/myXilinx/xp_project.h - Src/main/adc_tools.h - Src/main/errors.h - Src/myXilinx/xp_write_xpwm_time.h - Src/myLibs/log_can.h + Src/myXilinx/RS_Functions_modbus.h Src/VectorControl/pwm_vector_regul.h + Src/main/errors.h Src/main/rotation_speed.h Src/VectorControl/teta_calc.h - Src/main/v_pwm24.h + Src/main/vector.h + Src/main/adc_tools.h + Src/myLibs/log_can.h + Src/myXilinx/xp_write_xpwm_time.h Src/VectorControl/dq_to_alphabeta_cos.h - Src/myXilinx/RS_Functions.h - Src/myXilinx/x_serial_bus.h + Src/myLibs/svgen_dq.h Src/myXilinx/x_parallel_bus.h + Src/myXilinx/x_serial_bus.h + Src/myXilinx/xPeriphSP6_loader.h Src/myXilinx/Spartan2E_Functions.h Src/myXilinx/xp_controller.h Src/myXilinx/xp_rotation_sensor.h - Src/myXilinx/xPeriphSP6_loader.h + Src/myXilinx/RS_Functions.h Src/myLibs/detect_phase_break2.h - Src/myXilinx/CRC_Functions.h - Src/myLibs/CAN_Setup.h - Src/myLibs/log_params.h - Src/myLibs/log_to_memory.h - Src/main/global_time.h Src/myLibs/pid_reg3.h - Src/myLibs/svgen_dq.h + Src/myLibs/log_params.h + Src/myXilinx/CRC_Functions.h + Src/main/global_time.h + Src/myLibs/CAN_Setup.h + Src/myLibs/log_to_memory.h Src/myLibs/IQmathLib.h Src/main/doors_control.h Src/main/isolation.h @@ -4868,6 +4916,10 @@ TMS_TO_TERMINAL_TEST_ALL_STRUCT Src/myXilinx/RS_Functions_modbus.c + + long + Src/main/Main.c + RMP_MY1 Src/main/PWMTools.c @@ -5008,6 +5060,10 @@ UNITES_CAN_SETUP Src/myLibs/CAN_Setup.c + + long + Src/main/Main.c + VECTOR_CONTROL Src/VectorControl/pwm_vector_regul.c