364 Commits
v0.2 ... 0.31

Author SHA1 Message Date
2b656c2959 Работает сокет стрим 2026-02-26 17:59:17 +03:00
a0e54c0e18 refact2 2026-02-24 11:17:48 +03:00
a1f3e04fad refact 2026-02-19 12:26:46 +03:00
517515e94e Merge branch 'work48' into DEV 2026-02-18 17:21:21 +03:00
594aa8311e sendFileBlock_V3 2026-02-18 17:20:20 +03:00
semenov
a3d6c2899b feat: cfi package update 2026-02-16 09:35:38 +03:00
semenov
c16e99cc3e Merge branch 'DEV' of https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer into DEV
# Conflicts:
#	DOCS/MainScheme.md
2026-02-11 10:22:06 +03:00
semenov
f2e36d35e4 docs: add test cases 2026-02-11 10:21:29 +03:00
ed7de8af4e refact 1 2026-02-10 16:28:28 +03:00
2cce331a67 refact 0 2026-02-09 17:28:14 +03:00
f03632c56e initialize вместо singleShot 2026-02-09 16:23:40 +03:00
6387b41f9b Settings DB 2026-02-09 16:10:47 +03:00
b3aa4d088a flInitServerLMSWidget 2026-02-09 11:45:16 +03:00
0d287113e1 slot_StateServer 2026-02-09 11:45:04 +03:00
d27ab62114 bugFix SF GUI 2026-02-09 11:31:24 +03:00
4e2a5c48c6 ref 2 2026-02-09 11:30:52 +03:00
dde9ac61f8 refract Server 1 2026-02-06 15:02:55 +03:00
4b98d00faf refract Server 0 2026-02-06 14:47:20 +03:00
8ab4238537 STAB 2026-02-05 14:42:16 +03:00
7b82fcbf07 Запуск refact 2026-02-05 12:30:30 +03:00
ddb5f4b76e refact. Повторный запуск. 2026-02-05 10:16:06 +03:00
c0f46db50a Оптимизация старта Сервера 0 2026-02-05 09:41:24 +03:00
54c82d579a перевод 2026-02-04 16:14:51 +03:00
0d9643c3c1 App is running already 2026-02-04 15:32:57 +03:00
efa08e4330 signal_updateDocsXML 2026-02-04 13:15:37 +03:00
a901e7ecb3 GUI добавлено выкл ПерсКарты при арх-и и удал-и об 2026-02-04 12:17:33 +03:00
34799c5814 bugFix refact 0 2026-02-03 17:57:45 +03:00
60534ebef4 bugFix Блочная передача больших данных 2026-02-03 17:22:52 +03:00
4a24f6fc29 Переработан порядок передачи списков 1 2026-02-02 17:41:36 +03:00
a6451d0261 Переработан порядок передачи списков 0 2026-02-02 14:57:09 +03:00
466b2cd7fc cfiController поштучное изменение 2026-01-30 11:33:47 +03:00
semenov
8ff5072d5b feat:change cifResponse name 2026-01-30 09:59:44 +03:00
semenov
4476b5ccae Merge branch 'DEV' into CFI-Update 2026-01-29 17:27:21 +03:00
semenov
f3bebaeb26 feat: update cifList for unity 2026-01-29 17:12:15 +03:00
406769da27 cfiController ID -> GUID 2026-01-29 16:55:58 +03:00
b4d796d8be cfiController Проверка на удаление 2026-01-29 16:38:55 +03:00
2a13f63fcc плавный скрол 2026-01-29 16:23:35 +03:00
semenov
24e41a0e59 Merge branch 'DEV' into CFI-Update
# Conflicts:
#	LibServer/serverlmswidget.cpp
2026-01-28 17:06:20 +03:00
0c5509a426 cfiController 2026-01-28 13:19:52 +03:00
952e7ae65d All GUI Sending 2026-01-27 13:16:10 +03:00
01b665d82c delete DirectConnection 2026-01-27 12:43:16 +03:00
4ce3f53171 cfiController 1 + fix bug BUSY FREE not for Unity 2026-01-27 12:34:20 +03:00
semenov
c7f2afe3c2 feat: add CFI Update 2026-01-27 12:04:46 +03:00
b452ef347d CFIController 0 2026-01-26 18:47:57 +03:00
f7c677f498 перевод 2026-01-26 10:21:35 +03:00
f328a4a692 fix bug waitAnimation 2026-01-23 16:43:01 +03:00
52882667e4 fix bug select treeview 2026-01-23 15:58:22 +03:00
82c667cfd0 refact 2026-01-23 15:08:57 +03:00
19222cd855 waitAnimationWidget при ожидании подтв-я блок-ки 2026-01-23 12:17:41 +03:00
fe15f059e4 add blocker CalculateFullHashWithSetup 2026-01-23 11:30:08 +03:00
d1d259a854 refact 2026-01-22 18:49:06 +03:00
455b3f384e BUSY и FREE проходят даже на незалогиненых 2026-01-22 17:22:29 +03:00
a43a547631 Откл-е запр-в на EditorTrainees EditorInstructors 2026-01-22 16:42:03 +03:00
ebbfc484b4 Разблокировка при вылете АРМ Инструктора 2026-01-22 15:48:27 +03:00
5415afe264 отклонение запроса на Управление версиями 2026-01-22 15:18:40 +03:00
2522bc6af5 refact connect disconnect при Авторизации 2026-01-22 12:36:22 +03:00
75acf12c3c refact 0 2026-01-22 11:48:21 +03:00
4ba70853cb UpdateController вернул блокировку от SERVER 2026-01-22 10:27:05 +03:00
89d3d51c6b Индикация блокировки Сервера на ГУИ 2026-01-21 17:29:00 +03:00
2772c3aaba карта блок-в. Блокировка правильная. Множ. доступ 2026-01-21 15:44:01 +03:00
fe75f2c6ca refact 2 2026-01-20 17:11:01 +03:00
e7e719bc84 styling 1 2026-01-20 14:34:15 +03:00
238d501ac4 styling 2026-01-20 13:18:30 +03:00
9b2fd4eff3 доработка интерфейс 2026-01-19 16:11:24 +03:00
f2b08887c7 statAMM statFIM в Перс Карте 2026-01-19 14:56:58 +03:00
aa109ad2fe Задачи в цвете 2026-01-19 14:18:52 +03:00
9e0acf0893 Отправка задач об. при отпр. списка об. в ГУИ 2026-01-19 10:53:29 +03:00
1c44fdb182 ПКМ для FIM AMM 2026-01-19 10:38:23 +03:00
8dd2e386fb tasks статистика 0 2026-01-16 15:13:46 +03:00
3ce889524b ПКМ tree 2026-01-16 14:31:13 +03:00
83d6d66172 доперевод 2026-01-15 18:31:12 +03:00
4e2c6bb81e refact ui 1 2026-01-15 16:24:52 +03:00
2ab2e47850 refact ui 2026-01-15 15:23:26 +03:00
2a2ad69a44 refact 2026-01-14 18:26:21 +03:00
8d346cce31 Messages 2026-01-14 17:34:14 +03:00
736f2392e2 style like Unity 0 2026-01-14 15:51:31 +03:00
3ef1b559b3 refact 2026-01-13 18:44:33 +03:00
7116bf14c1 Перевод + Настройки Сервер 2026-01-13 17:10:27 +03:00
2221d27fc3 refact 2026-01-13 16:29:54 +03:00
b09f8e0d49 report upgrade 2 2026-01-13 15:13:36 +03:00
c8e9ea1925 report upgrade 1 2026-01-13 15:04:47 +03:00
7871019a13 report upgrade 0 2026-01-13 13:11:23 +03:00
2eb10b5b4b versionStr при смене языка актуализируется 2026-01-12 16:04:01 +03:00
36527a9cb5 MPS->MTD 2026-01-12 15:27:12 +03:00
6d40c45135 Update files 2026-01-12 12:50:16 +03:00
7c71d8a0e9 Merge branch 'work41' into DEV 2026-01-12 10:40:58 +03:00
semenov
90d034d148 Merge branch 'DEV' of https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer into DEV 2026-01-12 10:30:38 +03:00
semenov
c3298613c2 docs: add tasks 2026-01-12 10:30:31 +03:00
b990d147e6 Перевод 2025-12-26 13:49:36 +03:00
645dc130f4 refact 2025-12-25 13:47:00 +03:00
a06f7653c5 Report WH 2025-12-24 17:24:01 +03:00
bfe586ee2e Report upgrade WH 2025-12-24 11:58:32 +03:00
4dab164e27 Доперевод 2025-12-18 18:37:24 +03:00
ca0284692b Merge branch 'work40' into DEV 2025-12-18 17:34:22 +03:00
33499ed0ea Изменение статуса ФИМ. Закончил 2025-12-18 17:34:05 +03:00
4b3453fe72 в процессе2 2025-12-18 12:22:40 +03:00
b0abac8352 в процессе 1 2025-12-18 11:27:29 +03:00
c8ca0e32ad Изменение статуса для ФИМ. В процессе. 2025-12-18 10:27:10 +03:00
360b740220 refact 2025-12-17 17:17:34 +03:00
semenov
90a25f6163 Merge branch 'add-docs' into DEV 2025-12-17 16:41:30 +03:00
semenov
8170fc1194 docs: add tasks 2025-12-17 16:40:59 +03:00
3953527795 Нотификация рефакт 2025-12-17 15:15:34 +03:00
b7c246b3f6 Разные иконки в трее 2025-12-17 13:08:38 +03:00
d1df6a2a05 Общий перевод. SpecMsgBox 2025-12-16 15:13:37 +03:00
a641194b29 объединение переводов 2025-12-16 13:03:40 +03:00
317e576300 Merge branch 'work38' into DEV 2025-12-16 12:07:05 +03:00
4db649b478 refact 2025-12-16 12:06:39 +03:00
semenov
8a00f2e6bf docs: update board 2025-12-12 13:20:57 +03:00
18920cee6e Стабильная 2025-12-11 16:23:26 +03:00
d50d5a6af3 Новые иконки 2025-12-11 12:05:43 +03:00
84bdd7dfa6 refact gitignore 2025-12-09 10:51:56 +03:00
6a48bf4cb2 refact 2025-12-09 10:09:25 +03:00
05fce073f1 refact1 2025-12-05 12:20:47 +03:00
57673d0ee4 rename0 2025-12-05 11:48:24 +03:00
63cd6a71d1 refact 2025-12-05 10:29:08 +03:00
11c8e21729 Naming 2025-12-02 18:13:51 +03:00
75ffb5ceca смена пароля админа + иконка в exe 2025-12-02 15:10:23 +03:00
2e807112f0 refact 2025-12-01 15:27:09 +03:00
0b7f772b21 signal_hasError 2025-12-01 14:50:15 +03:00
c97c86ac55 Оповещения о непрочитанных сообщениях 2025-12-01 14:29:26 +03:00
834e192479 Merge branch 'work31' into DEV 2025-12-01 10:12:04 +03:00
d2384d3758 refact 2025-12-01 00:55:22 +03:00
df1ada6945 refact 2025-11-30 23:12:00 +03:00
54f1744e7f errorCheck переделал 2025-11-30 22:54:09 +03:00
d30e6b4927 WidgetTools::closeAllChildWidgets 2025-11-30 21:29:32 +03:00
d129fbded0 notifyController убрал 2025-11-30 19:28:08 +03:00
fb493aca9f SpecMsgBox в процессе исправления 2025-11-28 21:01:33 +03:00
semenov
44e7c4781a Merge branch 'DEV' of https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer into DEV
# Conflicts:
#	ServerLMS/Systems/processingsystem.cpp
2025-11-28 16:54:22 +03:00
semenov
567eb282d7 docs: add tasks 2025-11-28 16:52:13 +03:00
8ad6d06f18 closeChildDlg 2025-11-28 12:32:53 +03:00
612fcc8aa7 refact 2025-11-28 11:28:39 +03:00
c61066cfd1 Refact 2025-11-27 18:06:13 +03:00
6f44b6125e Server. Перекомпоновка интерфейса 2025-11-27 17:35:56 +03:00
ace95db3df Переводы ошибок 2025-11-27 17:05:26 +03:00
bf87a2c982 GUI.Тип ошибки авторизации 2025-11-27 16:54:40 +03:00
00c9ec8893 refact0 2025-11-27 15:02:04 +03:00
4def07ff68 GUI. Закрытие диалогов при расконнекте с Сервером 2025-11-27 14:46:18 +03:00
b0f02e742a Отработка BUSSY 2025-11-27 13:25:30 +03:00
f0e04954ed refact1 2025-11-27 11:45:14 +03:00
711963c9be refact0 2025-11-27 11:24:06 +03:00
3e50bfe2e2 Схлопывание диалогов при выключении Сервера 2025-11-27 10:43:12 +03:00
f75ff9660f refact1 2025-11-26 18:09:41 +03:00
23d432170d refact0 2025-11-26 17:47:56 +03:00
1c151d4aff VersionSelectWidget refact 2025-11-26 17:28:22 +03:00
44b6299e59 notifyController -> specialWB 2025-11-26 11:19:11 +03:00
f6e96e002c refact 2025-11-25 18:32:46 +03:00
e3dcd8c54b Merge branch 'work29' into DEV 2025-11-25 17:51:36 +03:00
173c369cc5 NewVersionWidget -> Dialog 2025-11-25 17:51:12 +03:00
c627bc73d9 Server. тображение текущей версии. 2025-11-25 15:54:25 +03:00
e24c57c395 refact0 2025-11-25 12:46:58 +03:00
9a4a082ffc GUI. fix. Обнуление диалогов при разлогинивании. 2025-11-25 11:07:35 +03:00
f2d7557f19 Авто подключение работает 2025-11-24 18:19:28 +03:00
4bdfb8163a GUI. автоматические 10 попыток подкл к Серверу 2025-11-24 16:27:13 +03:00
76a5f08481 Списки subProc невыделяемые 2025-11-24 15:28:35 +03:00
semenov
f43abdc46d feat: load version 2025-11-24 12:56:34 +03:00
1842c9381f Schem update 2025-11-24 12:38:44 +03:00
4f6958ef81 Update style css 2025-11-24 12:38:19 +03:00
770a705281 Server. Начальная загрузка. Крутилка. 2025-11-24 10:30:20 +03:00
b6c0f6aa57 Крутилка при запуске Сервера 2025-11-23 00:11:47 +03:00
72d107308c Доделал списки подпроцедур 2025-11-22 23:40:24 +03:00
394eee5a16 Объединенные ячейки списка 2025-11-22 22:08:03 +03:00
5bb9816593 ПП отображаются в виде выпадающего списка (назн-е) 2025-11-21 14:05:02 +03:00
semenov
73fd93a834 feat: link busy state with lock icon 2025-11-21 10:16:06 +03:00
72438e8257 refact 2025-11-20 16:00:10 +03:00
27b4edef6d Доукомплектация папки 2025-11-20 15:45:48 +03:00
bbef1f73b4 Merge branch 'work28' into DEV 2025-11-20 15:30:43 +03:00
15eade2363 Correct SQL Delete Trainee query 2025-11-20 15:29:51 +03:00
semenov
b16fd1f53d Merge branch 'scenario-updater' into DEV 2025-11-20 13:10:56 +03:00
08664989b9 refact 2025-11-20 13:09:40 +03:00
semenov
7e27584c5a bugfix: segregate send and delete list to client 2025-11-20 13:04:36 +03:00
semenov
bd0bed926c ref: segregate client hashes 2025-11-20 12:14:50 +03:00
176ced7045 Server. Фильтрация subProc на совпадения 2025-11-19 17:33:50 +03:00
74594de4ad Недоступные к назначение заблочены 2025-11-19 15:36:58 +03:00
069aa80826 GUI. subProc отобр. выпад-м списком в ранее назн. 2025-11-19 15:01:23 +03:00
semenov
560b7ff4cb feat: add update scenario 2025-11-19 14:03:24 +03:00
ee97f83856 subproc выгр. из БД и отпр. клиентам в списках AMM 2025-11-19 12:57:46 +03:00
74bdac7540 subproc удаляются из БД 2025-11-19 11:51:30 +03:00
10a30af698 subprocs сохраняются в БД 2025-11-19 11:22:08 +03:00
9bff7c3050 Сервер. Список ПП парсится, но не сохр. в БД 2025-11-18 17:53:23 +03:00
31e01ff8e5 refact. SubProc превр. в класс. fix bug canplay 2025-11-18 17:23:37 +03:00
b333ec8ec1 Передача списка subProc в Сервер 2025-11-18 14:52:39 +03:00
4f14cddbed передается список ПП в sendQueryToDB для отправки 2025-11-18 12:58:13 +03:00
168ded7b1e подпроцедуры можно выбирать (чекбоксом) 2025-11-17 17:06:48 +03:00
bd0f52c613 Списки отображаются в виде дерева 2025-11-17 16:10:31 +03:00
semenov
c0d6571f2c ref: asset updater scheme 2025-11-17 14:32:04 +03:00
d280472e1f Небольшой рефакт 2025-11-17 13:47:26 +03:00
546edf1b52 Списки отображаются (пока только DMCode) 2025-11-17 13:32:14 +03:00
200f919afe Построение списка ПП в ГУИ в процессе 2025-11-17 13:16:14 +03:00
0c7d84ec84 в GUI приходит ответ с перечнем ПП от Сервера 2025-11-17 10:22:02 +03:00
aa4972c3a5 GUI. Отправка запроса на список ПП в Сервер 2025-11-13 17:16:38 +03:00
208fa638ef GUI. Заготовка под список подпроцедур 2 2025-11-13 16:36:38 +03:00
47d9c182a5 GUI. Заготовка под список подпроцедур 2025-11-13 16:11:54 +03:00
a6bee48b77 Построение списков подпроцедур в Сервере работает 2025-11-13 14:34:39 +03:00
4bfd4dad82 Формируются списки подпроцедур 1 ур в сервере 2025-11-12 17:47:53 +03:00
98821a7533 Индикация и возм обновл docs из ГУИ 2025-11-12 15:22:15 +03:00
650b0525a3 DocsUpdater в отдельный поток 2025-11-12 10:55:31 +03:00
81d7e5e6d6 DocsUpdater рабочая версия 2025-11-11 18:00:06 +03:00
9df00eda9e refact 2025-11-11 15:12:54 +03:00
404fb0bf49 loadXMLtoDOM, saveDOMtoXML перенес в Tools 2025-11-11 15:11:24 +03:00
9b87bcc490 DocsUpdater 1rev 2025-11-11 14:55:37 +03:00
ff8767d1b3 Начал реал-ть список подпроцедур ViewerTasksCommon 2025-11-07 21:05:56 +03:00
364d3f44a9 Refact 2025-11-07 10:57:02 +03:00
e79186cb4f Refact 2025-11-07 01:31:19 +03:00
fd8fcd5c1d refact struct projects 2025-11-06 23:56:52 +03:00
c021421118 Отложенная инициализация в Сервере (старт виджета) 2025-11-06 21:49:15 +03:00
2d3d4f82dd Прокинул сигнал ошибки SQL на виджет 2025-11-06 20:55:16 +03:00
da7363dfb5 Переименовал Диалог Авторизации 2025-11-06 17:19:43 +03:00
2d1e17627b Рефакт Администрирование БД 3 2025-11-06 16:46:41 +03:00
2d91b18bfb Рефакт Администрирование БД 2 2025-11-05 23:50:10 +03:00
99d9c6d1e3 Рефакт Администрирование БД 1 2025-11-05 16:17:26 +03:00
84ea6ca512 Рефакт Администрирование БД 2025-11-05 12:36:11 +03:00
e9363c388b refact 0 2025-11-01 13:19:52 +03:00
0d1d851e3f Создание БД из кода. Требуется рефакт. 2025-10-30 14:56:58 +03:00
c11871e8f4 Рефакт интерфейса 2025-10-28 16:43:18 +03:00
39c11897f8 Рефакт 2025-10-27 18:46:50 +03:00
ce65daea2e TrayServerLMS рабочая версия 2025-10-27 16:20:34 +03:00
d4fd29f373 Сервер. Settings DB 2025-10-24 16:34:53 +03:00
5287d5f13d Сервер рефакт 2025-10-21 14:40:35 +03:00
f2df91e97e Сервер сменил иконку 2025-10-21 12:48:39 +03:00
ff6f70c967 Перевод Сервера работает 2025-10-21 12:42:12 +03:00
b9a39287cf Settings 2 2025-10-21 11:48:30 +03:00
068a4ee14a Settings 1 2025-10-20 18:47:13 +03:00
294a7e4a7d TrayServerLMS переименовал 2025-10-20 17:07:26 +03:00
93343a56e5 Server Interface Refact 2025-10-20 15:24:04 +03:00
86ee77e8cb Gui без консоли 2025-10-20 14:35:45 +03:00
ad8a544e45 Рефакт 2025-10-20 13:33:10 +03:00
f4ffc7c393 Server в Трее 1 2025-10-20 12:44:37 +03:00
edadfdf323 Рефакт 2025-10-17 17:36:33 +03:00
5c147be57a Refact 1 2025-10-17 16:24:50 +03:00
2d8c13fd1a Refact connectortoserver 2025-10-17 16:12:33 +03:00
e2a2d8142c Refact common 2025-10-17 15:08:09 +03:00
d643205323 DialogEditTrainee (adminMode) 2025-10-17 11:12:57 +03:00
b539f9fd2b Изменение пароля 2025-10-16 18:56:09 +03:00
241382d305 Хэширование пароля 2025-10-16 17:11:58 +03:00
8e931f229b Рефакт интерфейс 2025-10-15 18:04:10 +03:00
2cf219ce94 Отправка сообщений по Enter 2025-10-15 16:48:23 +03:00
79c5354f58 Рефакт интерфейс 2025-10-15 11:16:10 +03:00
e5f4c0bd00 В списке задач не выбирается первая по умолчанию 2025-10-15 10:27:31 +03:00
936ee45fd6 Валидация логинов 2025-10-15 10:13:01 +03:00
6af6ca1ab3 Не слетает выбранная задача при обновлении дерева 2025-10-14 11:52:03 +03:00
5d5267f859 Кнопка для Персональной карточки 2025-10-07 19:17:47 +03:00
f6c4da675d Перевод 2025-10-07 18:10:39 +03:00
fc42dc0723 Добавил параметры БД в Сервер 2025-10-07 17:41:49 +03:00
b1baafe6a1 refact 2025-10-03 14:45:03 +03:00
17f6119954 Блокировка доработал 2025-10-03 10:51:17 +03:00
a70c8b5be1 Блокировка Авторизации при Редактировании в ГУИ 2025-10-02 18:36:41 +03:00
05d4e02d02 Добавил наименование задачи и DMcode в проверку 2025-10-01 17:23:50 +03:00
e108b79d09 ширина скрола для task 25 2025-10-01 16:37:59 +03:00
191b817c21 Заблочил сортировку деревьев по колонкам 2025-10-01 16:31:59 +03:00
81dca6e106 Obsidian update 2025-10-01 15:32:27 +03:00
9a2d816d0a refact DBLMS 2025-09-30 17:47:25 +03:00
dd4d58a393 Ширина скрола 20 2025-09-30 17:09:53 +03:00
2c35b7bd06 Транзакция корректно закрывается (commit) 2025-09-26 11:53:42 +03:00
7c70fc90d6 Оптимизировал дерево в Задачах (размеры колонок) 2025-09-25 17:56:46 +03:00
b055ff4ed4 Перевод 2025-09-25 12:03:14 +03:00
6a20421948 Merge branch 'work21' into DEV 2025-09-25 11:50:48 +03:00
semenov
edc278dcd1 feat: add information 2025-09-25 11:47:42 +03:00
152942018a Оптимизировал CommonView 2025-09-25 11:46:30 +03:00
semenov
722889789e feat: fast hash checker 2025-09-23 09:23:26 +03:00
semenov
b695522a68 ref: delete duplicate meth 2025-09-22 11:53:54 +03:00
semenov
205f60fd7d Merge branch 'test-size-of-message' into DEV 2025-09-19 11:40:43 +03:00
semenov
b00c5b8264 fix: fast connection 2025-09-19 11:39:54 +03:00
d93e5e49c9 Рефакт 2025-09-19 10:42:51 +03:00
4eabd95506 obsidian1 2025-09-19 10:24:39 +03:00
194ccc33a4 obsidian 2025-09-19 09:59:30 +03:00
f2c6280bf3 Перевод 2025-09-18 18:26:55 +03:00
semenov
662ae41f68 Merge branch 'new-init-behaviour' into DEV
# Conflicts:
#	InstructorsAndTrainees/connectorToServer/Core/sendsystem.cpp
#	InstructorsAndTrainees/connectorToServer/connectortoserver.cpp
2025-09-18 14:29:26 +03:00
semenov
441be217d9 fix: GUI double send getOfflineMessage 2025-09-18 13:27:23 +03:00
8bb54cb56c Вывел все окна в свои диалоги 2025-09-18 13:26:22 +03:00
semenov
ced8a5cc64 fix: first initialize 2025-09-18 12:55:26 +03:00
a2cd5280bd вынес DialogChekerTask 2025-09-18 12:17:28 +03:00
semenov
a2375700b1 fix: big xml code 2025-09-18 12:02:21 +03:00
af243cc4d8 переименовал CheckerTask 2025-09-18 11:26:03 +03:00
9f4120c2d1 решение проблемы закрфтия вложенных окон при П.С. 2025-09-18 11:03:58 +03:00
6aab774795 refact2 2025-09-17 22:23:38 +03:00
973ca4a31d refact1 2025-09-17 18:12:14 +03:00
8cf98ea2d9 refact0 2025-09-17 17:42:34 +03:00
bd1bcd4e71 bugFixing 7 2025-09-16 17:09:34 +03:00
ac66951d76 bugFixing 6 2025-09-16 16:23:43 +03:00
cf92ae0483 bugFixing 5 2025-09-16 15:52:24 +03:00
cba4008a06 bugFixing 4 2025-09-16 15:17:02 +03:00
b6fb178827 bugFixing 3 2025-09-16 14:26:39 +03:00
eaf5f0673a bugFixing 2 2025-09-16 12:50:58 +03:00
b026bbe0d4 bugFixing 1 2025-09-16 11:28:57 +03:00
31cf125c2f bugFixing 0 2025-09-16 11:03:10 +03:00
0e81d14566 SpecialMessageBox 2025-09-15 18:20:39 +03:00
bffbd0fe81 Коррекция pushButton 2025-09-15 13:31:49 +03:00
8c3e636d27 Авторизация Кнопка Login in 2025-09-15 12:45:53 +03:00
762437a908 Убрал кнопки Справка из диалогов ГУИ 2025-09-15 11:54:51 +03:00
908430fd24 Пофиксил Варнинг на имя слотов on_TreeWidget... 2025-09-15 11:00:12 +03:00
8533ff4c34 Рефакт 2025-09-12 17:11:53 +03:00
7022db1e5c Мессенджер готов. Почти. 2025-09-12 16:43:15 +03:00
535c025276 Fix bag 2025-09-12 15:08:34 +03:00
e12ca8b62e Рефакт 2025-09-12 14:49:02 +03:00
2a8947f378 Правильные аватары для Юзеров (удаленных) в чате 2025-09-12 12:51:21 +03:00
96d63effa5 Иконка Юзера в шапке чата 2025-09-12 12:33:58 +03:00
8bb2aef5cc Messenger убрал табы 2025-09-12 12:09:30 +03:00
ba6e0178ec Refact 0 2025-09-12 11:46:01 +03:00
df4f4cf659 Рефакт прочистка 2025-09-12 11:30:56 +03:00
9f907f8649 Refact style 2025-09-12 10:40:25 +03:00
3009a90b76 Copy Style 2025-09-12 09:23:28 +03:00
f49da62379 Мессенджер рефакт еще 2025-09-11 18:09:46 +03:00
d6795e4723 Рефакт Месссенджера закончил :) 2025-09-11 16:37:49 +03:00
f53256f5b1 Рефакт а1 2025-09-11 15:23:26 +03:00
874ca7e806 Рефакт 2025-09-11 15:05:11 +03:00
a5431175d9 Рефакт Message Item 2025-09-11 14:48:38 +03:00
2066925844 рЕФАКТ 2025-09-11 14:33:10 +03:00
6bcf8a60ba Рефакт 2025-09-11 12:55:28 +03:00
d65776ff98 Рефакт стиль 2025-09-11 09:39:25 +03:00
33f67c14f1 Рефакт 2025-09-10 18:17:47 +03:00
747734a763 Мессенджер: время 2025-09-10 15:23:10 +03:00
c57b94786f Выбор Обучаемых/Инструкторов исправил 2025-09-10 12:27:35 +03:00
b6892ae43b Перегруппировал AMM FIM 2025-09-10 11:29:59 +03:00
1e68e2b47e Рефакт1 Интерфейса 2025-09-10 11:14:57 +03:00
6e75e403fa Белые табы 2025-09-09 18:43:44 +03:00
1e4e7fdcaa Выбирается либо Обучаемый либо Инструктор 2025-09-09 18:24:21 +03:00
43a3bc793c on_treeWidget_itemClicked 2025-09-09 17:57:14 +03:00
0728582be0 Из ГУИ чат с инструкторами 2025-09-09 17:25:26 +03:00
15325eb43a Подготовка мессенджера под юзеров 2025-09-09 16:58:18 +03:00
e2f7ca88c1 Рефакт7 Мессенджера 2025-09-09 15:52:47 +03:00
deb7938ff8 Рефакт6 Мессенджера 2025-09-09 14:45:50 +03:00
588f921a73 Рефакт5 Мессенджера 2025-09-09 13:28:23 +03:00
bb4cb9cfa3 Рефакт4 Мессенджера 2025-09-09 12:53:29 +03:00
b0c02e208f Рефакт3 Мессенджера 2025-09-09 12:32:43 +03:00
1f5fce7ca0 Рефакт2 Мессенджера 2025-09-09 12:09:33 +03:00
24344ccbd5 Рефакт1 Мессенджера 2025-09-09 11:52:41 +03:00
0274898db4 Вернул большие иконки для не частых картинок 2025-09-09 11:02:42 +03:00
ecbf185896 Убрал вкладочность из Мессенджера 2025-09-09 10:49:03 +03:00
80200d7054 Рефакт 2025-09-08 18:42:59 +03:00
120cf894ed Переверстал Главный виджет 2025-09-08 17:11:47 +03:00
86b268f13f Step 1 refact Control 2025-09-08 16:45:05 +03:00
1611f0ea68 Выровнял списки Обучаемые Инструкторы 2025-09-08 16:23:51 +03:00
bb37110a4f Перевод заголовка ГО ГУИ 2025-09-08 16:11:40 +03:00
53a58eadcb Рефакт+Переводы 2025-09-08 15:37:31 +03:00
22e2ebff94 Прокинул общее кол-во AMM и FIM 2025-09-05 17:23:51 +03:00
83cb8bf5a5 Прокинул тайминги на ГУИ 2025-09-05 16:41:39 +03:00
9d8e84b80f Пофиксил 4Гб оперативки 2025-09-05 13:20:48 +03:00
a69ec4feb7 cmd_GetOfflineMessages один раз 2025-09-04 18:04:25 +03:00
aeb24d659d убрал sendQueryTasksXML из slot_HashReady 2025-09-04 17:53:01 +03:00
b3109e4ac7 cmd_GetOfflineMessages 2025-09-04 17:41:28 +03:00
adfd058fa1 Контроллер мессенджера доработанный 2025-09-04 16:48:48 +03:00
7a909d1ee5 Контроллер мессенджера упрощенный 2025-09-03 18:30:36 +03:00
5e834b582f Завел контроллер Месанджера 2025-09-03 17:24:36 +03:00
e9b571aa81 Полуработающий мессенгер 2025-09-03 11:49:48 +03:00
179026d4ca внедрение мессенджера 2025-09-02 15:52:35 +03:00
0da66544f0 Перекомпоновал ГУИ 2025-09-02 12:24:31 +03:00
eaf5668528 Перенес кнопки задач вниз 2025-09-01 19:02:40 +03:00
5b74577347 Карточка обучаемого. Задачи. Общие виджеты. 2025-09-01 18:29:47 +03:00
b13b59beed Пофиксил неправильную распаковку репорта от Клиента 2025-09-01 15:03:08 +03:00
semenov
2c5def54ca Merge branch 'refactoring-messenger' into DEV 2025-08-20 14:35:22 +03:00
889457a8d3 Пустой тайминг 2025-08-20 14:33:31 +03:00
semenov
472300c1d8 bugfix: send old messages to QTGUI 2025-08-20 14:26:40 +03:00
28de2cc6c9 Заготовка для Карточки обучаемого 2025-08-20 12:26:34 +03:00
86aa07e89f Модуль DataBaseLMS рефакторинг 2025-08-19 18:05:48 +03:00
194b5129b8 допилил ownerWidget в DataBaseLMS 2025-08-19 16:49:45 +03:00
b412559483 Merge branch 'work17' into DEV 2025-08-18 17:20:05 +03:00
037390a9c7 Контроль целостности логинов юзеров 2025-08-18 17:19:29 +03:00
semenov
f9e21667a7 DOCS: change status 2025-08-18 12:34:34 +03:00
ef12d4f7a9 Починил клинч с мьютексом Провайдера ДБ 2025-08-13 16:15:28 +03:00
842118cbea до убирания mtxAccess из ProviderDBLMS 2025-08-13 12:44:48 +03:00
93fe4a94b2 QMutexLocker 2025-08-13 10:50:55 +03:00
7466e33599 Рефакт 2025-08-12 17:52:32 +03:00
semenov
07e082e967 feat: add logs 2025-08-12 14:59:43 +03:00
bcd58e9631 Рефакт users 1 2025-08-12 11:13:31 +03:00
664 changed files with 29179 additions and 18828 deletions

14
.gitignore vendored
View File

@@ -13,10 +13,12 @@ compile_commands.json
CTestTestfile.cmake
_deps
CMakeUserPresets.json
TestServerLMS/TestServerLMS/CMakeLists.txt.user
ServerLMS/ServerLMS/CMakeLists.txt.user
InstructorsAndTrainees/CMakeLists.txt.user
GUIdataBaseLMS/CMakeLists.txt.user
DataBaseLMS/CMakeLists.txt.user
ProgramServerMPS/TestServerLMS/CMakeLists.txt.user.*
ProgramAWSinstructorMPS/CMakeLists.txt.user.*
LibServer/ServerLMS/CMakeLists.txt.user.*
LibInstructorsAndTrainees/CMakeLists.txt.user.*
LibDataBaseInterface/CMakeLists.txt.user.*
DOCS/.obsidian
GUIdataBaseLMS/StaticData

View File

@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.5)
message("Using CMake ${CMAKE_VERSION}\n")
project(LMS LANGUAGES CXX)
project(MTD LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)
@@ -21,7 +21,7 @@ endif()
include(cmake/CommonInfoForProject.cmake)
common_info_for_project(LMS)
common_info_for_project(MTD)
find_package(Qt5 COMPONENTS Widgets REQUIRED)
find_package(Qt5 COMPONENTS Network REQUIRED)
@@ -30,13 +30,14 @@ find_package(Qt5 COMPONENTS LinguistTools REQUIRED)
find_package(Qt5 COMPONENTS Xml REQUIRED)
find_package(Qt5 COMPONENTS Concurrent REQUIRED)
add_subdirectory(DataBaseLMS)
add_subdirectory(InstructorsAndTrainees)
add_subdirectory(GUIdataBaseLMS)
add_subdirectory(ServerLMS)
add_subdirectory(TestServerLMS)
add_subdirectory(LibDataBaseInterface)
add_subdirectory(LibInstructorsAndTrainees)
add_subdirectory(LibServer)
add_subdirectory(ProgramAWSinstructorMTD)
add_subdirectory(ProgramServerMTD)
add_dependencies(InstructorsAndTrainees DataBaseLMS)
add_dependencies(GUIdataBaseLMS InstructorsAndTrainees)
add_dependencies(ServerLMS DataBaseLMS)
add_dependencies(TestServerLMS ServerLMS)
add_dependencies(InstructorsAndTrainees DataBaseInterface)
add_dependencies(Server DataBaseInterface)
add_dependencies(Server InstructorsAndTrainees)
add_dependencies(AWSinstructorMTD InstructorsAndTrainees)
add_dependencies(ServerMTD Server)

View File

@@ -1,423 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.1, 2025-04-10T12:35:59. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{08851f69-ba1e-4324-82d1-68caa9ee1f99}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
<value type="QString">-fno-delayed-template-parsing</value>
</valuelist>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5142.win64_mingw73_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Debug</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/LOCAL_REP_RRJ_SERVER/RRJServer/BUILDS/Debug64</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Отладка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Release</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/LOCAL_REP_RRJ_SERVER/RRJServer/BUILDS/Release64</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=RelWithDebInfo</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/LOCAL_REP_RRJ_SERVER/build-RRJServer-Desktop_Qt_5_14_2_MinGW_64_bit-RelWithDebInfo</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск с отладочной информацией</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.3">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=MinSizeRel</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/LOCAL_REP_RRJ_SERVER/build-RRJServer-Desktop_Qt_5_14_2_MinGW_64_bit-MinSizeRel</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск минимального размера</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">4</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">GUIdataBaseLMS</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.GUIdataBaseLMS</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">GUIdataBaseLMS</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/LOCAL_REP_RRJ_SERVER/RRJServer/BUILDS/Debug64/GUIdataBaseLMS</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.1">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">TestServerLMS</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.TestServerLMS</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">TestServerLMS</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/LOCAL_REP_RRJ_SERVER/RRJServer/BUILDS/Debug64/TestServerLMS</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">2</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

BIN
DOCS/DBschem.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB

View File

@@ -74,12 +74,7 @@ UnityClient
ServerLMS ^EJX4eIpX
Mainthread:
*serverLMS
*processingSystem
*dataParser
*MultiThreadServer
*commonClientHandler
*ServerLMSWidget
^ite9vjus
@@ -93,15 +88,17 @@ LoggerThread:
UpdateThread:
*updateController
*assetsManager ^ZvWgIkFz
*assetsManager
*docsUpdater
*cfiController
^ZvWgIkFz
Client QT ^sWMT4y6l
MainThread:
*MainWindow
*UpdateNotifyWidget
*screenChecker
*extrnalExecuter
*externalExecuter
*allWidgets
^NEUKUPV3
@@ -113,6 +110,8 @@ WorkerThread:
*socket
*dataParser
*hashComparer
*postProcessorSystem
*dataParserOut
^8BGt5wjC
@@ -146,9 +145,9 @@ Server ^57kJSOBv
Клиент ^Iao6ua8K
Login/Pass ^FgztXDxQ
sendClientAutorizationXML ^FgztXDxQ
XML Authorization ^FAEhzlqj
Server AuthorizationXML ^FAEhzlqj
Send version ^Wsgy80Do
@@ -173,10 +172,6 @@ ConnectionThread:
*TaskPreparation
*FIMTaskWidget ^O3pqGffr
*chatSystem ^b7EqD2zH
*processParser ^QEHpQT3C
Порядок приема! ^IhrFmEwa
ClientHandler ^hA67NX92
@@ -267,535 +262,651 @@ TYPE_COMMAND ^Qljc4T07
TYPE_DISABLE ^IIrBIFHt
USER
VersionDataXML ^W7PN2rtW
ID ^s0uHSEUi
sendCheckHash ^N9XDpZcf
TRAINEES ^VdRzKKcg
TYPE_CHECK_VERSION ^Ze62Cipy
INSTRUCTOR ^dbneSLbj
Логин инструктора с дозагрузкой сценария ^Yjh3SCZW
Server ^PWQFD9Cw
Клиент ^OYfJYOhT
SendClientAutorizationXML ^Za9NF1mi
Server AuthorizationXML ^xHClCCKn
VersionDataXML ^gr6jkOBB
GETSERVERDATALIST ^ucynRquw
CHECKVERSIONLIST ^cidQq0td
HASHSENDCOMPLETE ^1NHntJg9
VersionDataXML ^lSsIgPGT
CANCHANGE ^0kAyN4XO
после нажатия выгрузки ^OgPlj3dk
CHANGEABLE ^A3apuHcm
ОТПРАВКА ФАЙЛОВ ^OKhIgcM3
TYPE_FINISH ^RNN4fRif
Где-то тут нужно пересчитывать docs ^ixmhU2Zx
сделать отдельный метод и клиенту повторный хэш не пересылать
^D0vsPWNF
RECALCULATE DOCS ^VUTu7wzn
SEND DOCS ^iM67vAqM
потому что по умолчанию он больше не пересылается ^WR3pLokt
ServerThread:
*providerDBLMS
*dataParser
*MultiThreadServer
*processingSystem
*commonClientHandler
*chatSystem
*processParser ^UjfEZdiN
%%
## Drawing
```compressed-json
N4KAkARALgngDgUwgLgAQQQDwMYEMA2AlgCYBOuA7hADTgQBuCpAzoQPYB2KqATLZMzYBXUtiRoIACyhQ4zZAHoFAc0JRJQgEYA6bGwC2CgF7N6hbEcK4OCtptbErHALRY8RMpWdx8Q1TdIEfARcZgRmBShcZQUebQB2bR4aOiCEfQQOKGZuAG1wMFAwYuh4cXQAM0CETyp+EsYWdi40AEYAZlb6yEbWTgA5TjFuAFZWgA5xgAYAFlaZ7ohCDmIs
N4KAkARALgngDgUwgLgAQQQDwMYEMA2AlgCYBOuA7hADTgQBuCpAzoQPYB2KqATLZMzYBXUtiRoIACyhQ4zZAHoFAc0JRJQgEYA6bGwC2CgF7N6hbEcK4OCtptbErHALRY8RMpWdx8Q1TdIEfARcZgRmBShcZQUebQBGAFZtAGYaOiCEfQQOKGZuAG1wMFAwMuh4cXQAM0CETyp+csYWdi40eJT4psgW1k4AOU4xbkT4gA5xgAYAFniZnohCDmIs
bghNGfoU4shCZgARNKga7gqCMMWSdewASSmATnH8ADEAZWIAdQAJADZnACyADVxs5CAcOBUdiUKoR8Pg3rBgutBB5oQIoKQ2ABrBCfEjqbh8AoYrG4xEwZESVHXRZYvySDjhHJtRZsOC4bBqGDcVpTKaLazKKmoAUkiCYbjOGbjGa/bTteI8eIPVXjeLjB6/RY8to8B7aWXzcbtdq/HgjcatS2LZiYnEIADCbHwbFI6wAxK0EN7veiNpzscp6Stn
bghNGfp0sshCZgARTKh67mqCMMWSdewASSmATnH8ADEAZWIAdQAJADZnACyADVxs5CAcONUduVqoR8Pg3rBgutBB5oQIoKQ2ABrBCfEjqbh8YoYrG4xEwZESVHXRZYvySDjhfIdRZsOC4bBqGDceJTKaLazKKmoAUkiCYbjOGbjGa/VIAdh4CoeqvGCvGD1+ix5HR4D20svm4xSKV+PES4yS40WzExOIQAGE2Pg2KR1gBieIIb3e9EbTnY5T0lbO
a73RJMdZmBzAll/RQCZJuNNFpIEIRlNJeTwpobJuqRu0LSNc+rbQhTmhxkWRnX4jNibsIMHhHBbsQWahcgBdRZVXAZDvcDhCeF04QrJnMLuj8fizST4gAUWCGSyXd7iyEcGIuBOxF5St+8xmTxrrXiiyIHGxI7H+GvbGwuMPaHO+Eu4rgbGW2TyJJgPkuzFGKIFgFMgF9oBwEgc4rQJPESEjFMvxjLMPDqg87TdMUIwKqanQPPEvyqmhPDWlBuGw
13uiSY6zMDmBXL+igEyTcaaLSQIQjKaS8nhTQ2TdWJFIWxK59W2hCnNDjIuJOsKmbE3YQYPCOC3Ygs1AFAC6i1quGyHe4HCE8LpwhWTOYXdH4/FmknxAAosFsrku73FkI4MRcCdiLylb95jMnjX4grFkQONiR2P8Ne2NhcYe0Od8JdxXA2Ms8oUSTAIpdjKMUQLAKZAL7QDgJA5x4m0BUkIVRIpl+MZZh4dUHhSHoymSU1TXiB4FV+VV0J4JIoLw
bszj4YRFqtA8RatBauFgKx2gzNxMyWvyGqsSMVEwYBYDOIkrSSfyPC/LMrS/BqKrsRRBHFiqUwquMJ5TFpwkgTRxTOOM+YFqZmpTCh2qiTJ2i/HZ9kOfZ7R6bsBlicZZlmQ8FmoexpqIRqszebxHQPPMLnFG5RkmZ55mWX5+F1klyXJTMEVAaJ0WxQW3nxaJja2fZ2Equ0MxTMqlEgdB+mZR52Vxb5omWoVCm5g8uYdJq4VVdRtUxZ5uWNeBaEBU
2DdmcAjTQtYii3iC08LAVjtBmbiZktfkNVYxJqJgwCwGcBUEniPkph4X5ZniX4NRVdjKNSRiVSmFVxhPKZtOEkDaLKZxxnzAszM1KZUO1UTZO0X57IcxyHJSfTdkMsSTPM8yHkstD2NNRCkOmM9ZjGFIHnmVyync4zTK8iyrP85I6xS1LUpmKKgNE2L4oLHzEtExs7IcnCVRSGYZIVKiQOggzss83KEr80TLWKxTcweXNOk1SKapo+q4q8/LmvA9
q7SljM7QWSMaU9SJ4Hidokl8uVslzApWHsfECHLbte2POlUX0aajHMZ0bGiQ2LUnjwcxEdxvyHZlx3FmMZ2Cex0xPQtCFIchqHoY2WE4aJJraMlUwdOVOmmvE30gWBIHqkty3tOMPCKrKSoPPDuztODda/Ga2EjCRZrlqJ7Vcdx7TeUxjxKvquPFBJqPo5jvHTPEIzsaqBN1phQNWg8crM2AdX1VpFPgXzyWC5hwui3NNXgfMSQ8BrJEzNzpGlaV
DAqQngUlLGYUksxIMr6kTwPEyTpNk+TFOw9iqtWqS9v2x5MpihjizGB4WLY0SGzak8eDmLoHm434juyk6mPOrpLvA6YXuWhDkJQtCMMbbDcNEk1tFSqZOhk3TTQVX6QLAkD1V2lJxkmjUZiVB5Ed2FJIbrX4zRwxJSLNctRM6rjuPC6GfJInh9TxsoJP29HMdlPiUPY1VCbrLCQatR7nsWurvsG+Lfkp8C+dSwWsOFuUWY4mZtCZpnSOxxIyPK8r
vMGnLsoK0xSu7NVrmiUx/N2WV5o81bUz47taFmpzsNi7dJlhbJ1r2+xfIzN78mQyM5oyjjyuW+BxbaPy/IzRapXxDpXSO/KjmZ3ZzlR5F+V5jlk3zBjIwiyLAc6dT3GXp0SEw3DucZeB3FVzxbeTR3FfGW3NeXinJoN+bvXN/KGsY1N2PybJVmq5XPfxLX/eKmLZ4BSaubnQ7s9BzlId+7dmpi2H3spzJ3nMVaBv86WxuTKbj2N25Ck2480zecqi
eYNeXZUV4jlbFtzROI/n7Iq81EnYvkCf29CzV4k0UgR83opstW8oU6Gda+kC+V9yYIrkpJzRlXGvay8Di20fl+Xmi1yoVXTukttCbqcxyXNj9yKtMx6ukbKbHseh3dJp7jLy6JC4c93Zaot8DuJrnjO5m7uq5Mzu68vdOTSbsoW+9tv5Q101NP1BS5Os8C+T7niB4b4eVbPcaTVzT77az0OeojwPo5VnXi/T2SGctTPZcNlKFcmU3Reb/rRoklK5
qfRLkti6RqlmrMWSqFZQg3ApMfq2UxbbRRntZajwt5I1+n9SygN5I5yHvNEC0DYG7XgVtYyY9brYQjpaZej9Lo7RwVJZi7E/6EQAXKfkpEzbFAtnncC2CqF8hoU1Yy9klSPA6mjMKs0MEqywZQqheD8oGj+uvJ2gkoGSJwdI5uQd24aIekomBKieHNziA5YqxDyrbSEuQjhyjYGqJArTGBFlfg1jJl1URrDh4gToYRNaQCHGTT8nmMe8kVQOO5r/
KeR5Ko99jJkl+KKsyJqVNHJOU/JpYzT/g1RqkwVY7X2ogvk50/7/WQlZYGCl84vyWiBBBSC9qPD3uBDU6sNZnnKpqS0Ht4EIQIYQlBolgGETNLMOSaERa0N2kgoh7FWoOSVI8Lq6MIoLRweLPBdD6HIOISBTeyFt5TF3lw6RMj2Lty7pop6KjpG8MKnERypUcIVWVNVcRrdJHcMQXo+OBpCE6xrOTHqYjR6vxAswwiYD2GQLBvHPMGsFIqmlihIB
fCcjS7Wk0rxZSztlqu1+O7MhYjo7uKDvHPkNZUIiz1gHRIf18kFNMUfeUOVT6kXgZfUS+NkqkUkpqEuulzEgTrDAiiWoJgWW1gg3YkEmm7CLP/ehDFWLsV6ck9hIFV5yOLAoi6P014TDlBqYWpMV7qM0TxPWCxMqs0kmjDGGptaYTMeMpuNiDS7XameDoiz9aZT5C1FOC8w513VK0MWipVLV1lCYheDZ2LwTzPwjS40FL922h8uI8dOlJ21qnAFn
yQFGJAimTJ4vEVJOz2i7X4bt4ZALVknJeVkS5QMthJAGuSAZmNcbg3YZ88oXzIkQq0/l+Y6wihMTqU09IFxaskPalEtQTEstrdikEmngSLCAlhLDKJNiRhvA0CjixKMEuxeCW8Jhyg1MLMmG81ZaM7nrBY2U2Z7Q5h7WUSoawq3CrtTqZ5OjzP1tlPkbV04KimopIeVUjkSUIrXWUlU7kNhmdcgRml7lryeb0kCCck6dNTtjDO3y4idz4ppK0FoV
E258Q0laC0nsM5ZwckNOCiKeLIoEmivpxQMY6PiZzCiTYcVxCRdMFFiiiVgBUoROY2sOgzT5DPKlrd8WopOa4zBuxLyjUKUhRU2yfrUrxbSglfKwBsLOYKyVvELTozlKWMVCKlWc34rysWDz+HcxrrJMu4quU0p1fS05bldmdQObKPi3NNXculbqhlNr9kcwdd0wyuLuI8stawkkbCID4FCFAZ0+h9BqAPAABV/PGNAc5HzilYPoMc+4EAxsCDOE
a2VzrnEacFOIwumHCwSiK4lSQSW7YZUKO6woEgioFuxVKvPmFVKacxUV0XRTxEl8KhLkrKJecaeTkIe02X9aFTLMWktZeY8ewd+W8QtBjOUpYeVEoxfxFlKsfn2SQmMO5n8zy8rReKt2CrsVsrANsqSuysbc1kQynVzL9UirjngtGGM9m6p5lcy1grFU1RJGPCA+BQhQGdPofQagDwAAVfzxjQHOR84pWD6DHPuBAwbAgzhEFUTEQgECLDgEm5gK
Q5RMRCAQIsOA2bmC5s3D2AoABfeoRQSiwEQOsKolZaj+l6M0FM4xFhtoGEMcoHRtqBSJp28UyxViSgkJsOoI7DjHCrKgD8X5mzXEjJoYgFQDgvFaAAK0kAAaWwBoeIbx9D0F3RweIABBf0sJ4QUhFBAGkh5bT2lxPiYghI0CUtJA6O95QH0ulpOKekWZpxdjTs2dknJuS8n5IKDgwpyiI0gOO1A0orRB0VMqXiC9uJzJKLqVATELkNhAejGSgNn1
bNw9mKAAXyaKUcosBEDrFqJWBo/o+htBTDacUtbBjDCqJ0KqGo0LoyuCsNYEhNiNHFPsI4wQDxnAuBmwdb50BQE0MQaoBwXjxAAFaSAANLYA0AqN4+h6Cro4AqAAgv6WE8IKQiggDSQ8tp7S4nxMQQkaARmkgdGeqoF6XS0nFPSLM04uw33KOyTk3JeT8kFBwYUVRkaQElGgaUVo1Ye2VLxO53Eg6QF1KgYidiGyyg5rJYG16yROhdG6T0vofRIE
kidC6N0npfQ+iQIsTQgZWxCFDDRiM6AowcBjLgOMUAExJiPMKwpYVsJpgzFmATaBPn0NQrmNCxFLwVjnTc9lTs7nNlY+2TseRg0DiHG+VASaJxseIKB+885myLjM6udImR/xoC3OKHce4DxHhkqec8YwrzihvHeRND4nwvjnQuwt3542Oe7AK0CoyPnX0hlNMstNaa+fAmM/l4jdjuvZockiMk/IJahsli0ISGX6qcmdVUnQw6cv6apU6LFCVWqt
WJoQMrYhChhIxGad5AOAxlwHGKACYkxHk5VyiKOE0wZizBxtAHsBloVzOhEil4KxVkw10eajtLnNlo+2TshQvUDiHFOyNE46PEF/feeczZFx6dXFkHI/40BbnFDuPco6OjHlPOeNV15lh3gjQ+J8L5ZMfi/M2H8f5NxFNAt0o51ToazTLOFcKV5RI9Jte5I13VObY3NAvYF4WYZRYtCEg1yr7LhSLKqeT9k+EgPehdYVhSJG7EZTNHyxFHjHlktt
kq2mkNz7HgK5dHRHq8uXh4Hq+U0KKoyQXkTDoFdrq0yLNVzp6DMspMFXkkVf0xOgJAkK1b+STR6pW9t9bMS7H6gXo8cqu3yv7dW4d6yO9Jg+1DvbPbImCk3Zjv4jWgStSFj1UHQhWsdbMSTgla+KUkqTV++rTWCTAeliLH5RIcnzQAyU4PRbEzBV/bHgDsOQP4dVMR4ReTKOB1QSDdeMNEao0yBqHGv8lnk3NlTemk4WbmS5u4Pm8LzZi3s+zXpq
e1KX208CVfKUFpjZLqq6L44OeY84fWK507B1WLG1ZyVy5CfHBvTZ41yk0SqZuzZVMRBbZRJqrRkiRWaPksITbAGPW1i31tIXmypA+4cA521W0t3JV3RKzTIZRRSWpCxKrVhrZUiSUJkVLEWJK1S0opRmt9t7f3taA9Tv5F5hFxNAykyPE7bjas/Y1lrAH504cvYR9Pc0yP21QU9deX1/rA0yHqKGv8hmo3NhjXGk4ibmQpu4Gmid/ns25vU4W4t4
tNbxT1r/U2mo5Ap3Nm7S0VAJou1MD6BwQYHBhhtH2RjBSdkrgrDWBOmYkorgzuCO598FxuclGXegIEAAlAAGv0AAMvgHgABNIQ1uY3KAAI6OgQN8HgABxZcLweT9jhAiJEf7H3+jtFRt9H7eCUZ/ZHlEAGn1AeECB5kvI2Qci5LAGDSGIBChFEXlDaH+RLRQnKdqloF46iJGacGqcULlSuejJPuIwy0YkF6BjfomMsZDMQbvnHoDkB47GBzgn33J
oy1vsrfUcgA7mxNvaKgE0ixJdDA4CMDoeGzSkXS3sHtMH0CbElFcQ4xwfPjquFOiAQIABKAANAYAAZfAPAACaQhTfBuUAAR0dAgb4PAADiy4Xg8n7HCBESI32Xv9HaIjd6H28EIy+4PKIP1Xq/cIH9zJeRsg5FyWAIGoMQCFCKHPmu4P8gSKhOUnVLR3J1ESM0kMM6oT23dDGMfcRhlIxIL0FG/RUZoyGYgrfGPQGY6x9jnH73JjQEa/k605j2Xp
jQLs6Sa0p7YsgOmTM2Y9RV3a/TYiFElQqaM5hZOpYtfim0x2ct/ZyCGYZ6Zqc2fAtWZKDZlYdn1xRec82VzGajMDZPNxbzZTPzZYALYzILPzZ8V8M4M3ItSLTcGLCCOLcrUaFBQODlJ2JAlrVWFAgGNA1CDAq2HAtCNAhsZrdHBVYoapJKRLaGE0bCYiQrCGYrGGUrWVeVNyF6RrTeKbByGbWmbCAGNHOVNxerBiN6Jrb1DiNrOmTrPfQbN1OxVa
VIQT2Y9Q1zpo1xml4n0XqrUSE02tZJq5bPSVTeb+zkC0/T3TU5U8eaM+UEzKwzPrks92L1tn41TvXyebiznpPihvO51AOmv+z4r4Y6n4XO5QAWG4AENWIWcWSqnKGCIcfIckW2EE8BAMiB8kaESiDsCBQMSBDYZKCWL2mWkWcMOEJEVSUMWWcMOWVWaOwWYAb0Z0lWVcN0hW4UOEQMqOp27kzBzEu8Ds4qK+DMSo6+8Cu2MkYCc89K7KwhDWohlE
OSOyFfYoX1bfWQgbKBRQmSZQ6eAOaQjrBmOQsncZENSnAwanWNSLW/FNQgNNUNVnEtDnNALnItZw/nJzCtYoatAoWtSAEXRtaoFteXJoTgFMOrBgBXZoZXVXQjBsZafUbybXMddYTYUPadI4Y3ULGAkdIzCAIEbEa3VoIQGaTQAAITeFwAOEIAAEUXhlwDh6AAAVB3DI5sG9CPSkKPNPGPF9PEITT9TvBAX9VPNEUzLPGcHPcUSDfPAjFaODBDbg
SoEhhCUhG088Qhy+ChTWShnWHqIq3qFOBgVOIaYawmABnm0ahAsaPqLOPOgQHOpA6ama9h4QfOZQRaxQJakAQuFadQ1asuTA/QUu2kgRrQzaCuraDYrSqoOeywqwmuGwMw/ug6euI6BuYBRu6wQI2Ipu8QQg80mgAAQm8LgAcIQAAIovDLgHD0AAAqVuKRzYJ6QelIIeCeYeN6eIXGj6zeCAr68eaIumKeM4ae4ogGmeGG0kYGEG3ABeUo2Mcoho
MvKUbWOUQ0S8NlWvWmSI+Y2UbQPHBSUqUiMOG0FNfo0fOjfvRjBcIfJcS4yMCfXjfjGfBPBfJQ9afQ8UNfKTbgGUOOeOK0NGWgz+FNZtRveYQJFORYc/XTLwq/QcBAYcR/RnEoYfCzFEpjJcN/BzS/FzXcH/Dzf/M8SYHza8EA2w5sV0ELIzMLWAv8eArLWLUSDLYQhApDPCf+QsKWaaCHZA/JVAuSfAjbRVKuOHVVciIpfk5BXAoU2SEUtQw2JK
l4nQESqcWoVeHQso2guOOsKGgO6EDajOXR/eZGnelGC4PeS4pxkYQ+sYFmo+Uek+ahM+Gh4o6YmYi+qAMoicScVo6MsMw8MmU6k08wgS6ciwKmHYx+4ommCAw41+DO5QveBmiJVGS4D+FmMJzYr+9mmGjmX+kwLmv+bm5+QB3mU6vm4BkAkBT+hk7kUGoEKsjJTBAyhY2k0wdYEOeWeB6ESB2BqBdWQOUqFEVU9BvBlsvJmCApDsd8Asxsj8j0yy
eWO+EWVZaU/6YguUgg8CL2XeX2MOMgtkpksAKgusGgssClDSPyfGORIKWYMYNGI+BrcQ7g/KAxIqRUYxCqNgkQlmHQpfFQurYoFuDZduB+LArBAMvQ1QsAdYgJZieBGUc0bQuBD45fYMuM4yaFIE6YZLIQ9gnrNM3Qz42M/4nMzqEEgs8nPzCwyNaNWnGwzEuwhwjNNnHNQITnUgAtdwvncIAXHwoXZsQIiQMXEI8UaXCI0IxXWIvtdqTofZaEkd
PJGB+BWBKB12xc/skcRBk2oq+MpBgJwymk/kBMCiswPkvE3Up85WLBgh+iN0Ri5UlUBSDBMBhqkh0+MhauZQGiayncz8epZ2rMnp0hs+PpYASxAS50RCMo5oKhUkU+YZbxbcJkoK/x0wUWPB6OIZqhXp4Z6iaZfx3UgJNC+hephhdolOQaNOZhZJjO1hzOCarhjhzh34rhea/OXhgulQfhVaYuNaQRda1Y++cuLavI9SyWEJg6Gu6wmwRg/oQ6+u
HXFDDYGYIwf0fYLIhAE3edXIpdfIz4KATACoAAeV3QvQAFVz1iAL1SAKAeByjNBbgYBTzyjr1w9RjqRejhj4859E9ziqMvz0Bo8JjGQH9CNc8oMC82hYNxQS9ENFhy9tZzQNjtoiYLIKJiwG82gSI44iYNptVNc0sShY8HQHj0A+96N/RmMXxWN2Nwx1huNnjp9FhExZ8/iPS7IjFSpyoNVvjJMN9CMiDUFzRJgD9RgRYnYtSYT6QdM8SOjr8kSj
lJhuk66wnwUAmA1QAA8qugegAKr7rEAHqkAUA8BFGaC3AwDblFHHqB4DHUgdF9GR7j7R7RpdEPnoCh7DGMhX6Ybp5AZZ4dCgbih56QaLCF6pZxBWhVTEyWSUTFibH4ndbEybS6qKSKR9E3HoAd7kb+jUYvi0b0bhjrBRgsb3HxiLCJhj7cBFSGIezGIySyrvEL7mFoKqpqkz6KzAmjCPRKJ8k55QlqZWYaan7wnaaWHNgol/mAHGYYlrhYnqbbi7
MTMM8zMMSwCn9IAX8Vw1xcS9NtwCTdy/8vNSSgCqSKTmyqTICcjPxzdIAfwGSAITSOSII9URK8D5TMDyCOCXSmIJDvLjSltihv5spglArCzVYscKIypjZEtwqWTPYEIGJ1JNITwFyA4PLlCFZPZu4eJe465tov01Csr1ocqGVZMidkdFNLRwNNtSr5JyrIzdgyoYoNIUItIVRHVCCBTZSyrJgV4uLdYSoyoDlTVBUGqxLxhBrroeLRr+LsDeqtT+
hv5HiyROZEk/7Nh/71nlCugUmgF+YQFmFBbuksnxZBnuTsWAwCV0oalwEGr8EfTTIOXEESywKTDBKhZ5aY6UQVTGwRZeWuWWU2QISETKg+RaQngDa4Gqm2UKSKyIrLy1x3KDyaSsSxXoKcUJVwIGqiYsJI6SbXyZUcXxXmi5VuVyJ5hmSaSoTaQqjOqLxSlIHlXjAbwGIlQMXOmYxaq1bNUbSJUGp0WdVlQmLMVNVxWYKtWk4GE+pVnGE1nEC07h
rpqqoayqS6yrDGz6crLSL7CWdM0PC81uz7KIBecOz+yvDBc/DhcygmKsABNpz202hZInqe0VdygAFuZT4v0lgVy0jSxNyjcdzbLF0Ld8jLzNBTySiA8Dhd0Pzb0U9vzxjAKHQ/yiRhjgL/0UbmxgNwKpjWQZi89oNYKi8ELlikLVjT5wZSp1p5hmIRlxR5jn4ngpoJhSpWIGxtphiKKIAqKGMaK7izNebmKp94w2LBjUBRqkgpoZRxo5Qyoa4JN1
oWE34CCNm2HNls4OFoCc4uHbVuEiVdllDeEVDlqRhYAcZhHBG8hyTXVtDy6K6oCsIoQXwb7xG9pa6liLlpEIB4lUlZESD7maDbn5Fe4HCrp3mnpx6PlDHvkR49FvnHFEafnvpw1SXJ6/mjGsjjEZ7AbAU55gVzEQULEXyQzlQz7zDnQZXihTGKQ7EmjQw76sQNhVRYUMZnF4Xd6EW97YWD7RgUVXXijUVR4mLqyzQyi0qJLQyV4sWfHmEQwTBK1W
9pNZdnYrQNaJgtbUUJK0AZoyMtI0ZZK2wL8DLxQDNlLKS0SlwNLVLrNsS9KNwzav8jLVNjxTKLwSLIB/MrbvabLaT9yYROAoA3hCAjByg7JwZeJo6ZpY6AD+xg6XhBw4QCNuloAHr1hAAMEEAF4QQAQRBAAhEEAAEQQAYRBAAuEHzsAD4QQu/0CXZojOiQHOguku8uqu/0E4TAKAC9IgZQGXENBACoR6icpgKAcwAgLuzMXuqAdkf0PQLIXAZYJg
gq1K0b5hCybzQYxYTExHHlBCXYkwhiUImrVImQDSXY2m3ommYKVQEiXKV2ayYf4aUXixbaWklonkkgHvirnNGcBQBvCEBGBVD2SQy8Th3zSR1f79j+0vCDhwgYbmrQCXXrCAAYIIALwggAgiCABCIIAAIggAwiCABcINnYAHwgud/oYudRKdEgGdOdBdxdZd/oJwmAUAB6RAygUu3qCA1QQtEuTAUA5gBAbdmYndUA7I/oeguQuAywTAJtslAGpA
ZEzS1EyAN0TMZYAgOujurOvOousuyu6uwUIQKe63cIMO8oOk4Apkb4QS1WhCZrXw4ofw0oBtCQPjLESXBoaI8ItAJ4N6pXXtIkExSadqovUdXXdATQIsIG7c3cy+g89YVoF3NgB3CgZga3doIwF3Zwa3AAKVIE0AqFqJdwd2YBGARq6PvVAtRtfUlt+rIvJCRpAp/LUsmLAygrmML0WNL0prQGlCwy4huX4L5ENJwsI01Fslpi6TPB0i1HoYuI4y
mYywBAVdLdadWdedRdpd5dgoQgY9pu4QQdVQANJJTI3wrFvI6swqnhJ1PZ516AbGWI4uzQQ5nA3ATw91ERT1uYSGs0gM3aCRc5RYP1w6f1GRRlewxu8QdubAVuFAzApuKQRgduzgpuAAUqQJoNUBUXblbswIkFDa0eet+fDQ6C+USH0ajSQxjQyKif+bjYBVMSBc2ETWgPMbBo2NdPdJ0KqHyIHEhXUnZOFNrCFJqOaOzSRe3uRl3pcTzdcRzbcQ
uOosHzouHxFqeLFsHubHYoT0+zjk6xeVZUiJ+KEoQhjoxgtFVCLjZt1t4EkhIjpkbGNp3FNvhPNqUqXrtutvUogv8ICLus/RJEfufwdvsydrcZdrczds8wALMq9pDUsuXuCygNNzsufT4ygHKNHWWGUF9owBWCyZWBybydDTtCpwbOIDpwTSSfOIybvI/vTFwBUvAObEyFvNIAaZCHyPfrYE/ocrgOcuCsQMSoZT0bO2IkMfQsyvMdeisYXMhlMP
LWxg8VRYjUzAhN/CRHsdjApAJvLZfRHZNBaKqDNDDP+gIFvo+lJKRA1o2JCYftCUpbCcbRJWtRABbV2N4T4b2Y+iSDfbfvJeZnbc/g7apQ5upYSa7a5reLpZAPpd7agCfccWxlAEUfEcsMoLExgCsGkysBk1k3NX6gtdTktXWZ7ck6QK3aQE/emLgK42bdk8edU2wBQLU8bo/S0/6LSaZVNrAeBBZW6b02AOo4nKIdo7BbgYY6dCYwNtDDNRWUEI
RwwHwEXAoFBoQGuqftutfq4wzv/t5Fpn/tnKJDGC2PKhSIgY2BGG+BgdnQDrSbyPWH6GUHiC3VPL3S0ZhE/KYexsAyZ36PRqGJoZGJ+eodxsz3xvYaJugvmLgubHJrQBWL4bKlKkEaS01EVHNPidhbiDNG4o/inlNB5sUd73owH1uNUfuJJa4w0b41YvFB0f/LlHxnamOX3jTpMbvrwuVCwxFiOP1DDlsfZoxmIjlGcfkudphA8eaa0ogHRIgq8e
uBQOAwgMdSUHfW+s3b3S/eEVLjw5/RwI9VUExKsYdgA59RsIkN8CA8uYZdSUsMbgMMoAqEutuWuts5AC0VQ0+aQ7emo5QzDV+T8zQyMX+gBZMdnjMfniTRw0oqsllpqB7HWCabTSBnEGaPZJ1KlQVgtheicQozhdIxccZlcXpnzWRcPio8LYjXKATJ1FhGMIHEnR8UJkeJPEqA2CLHcvqDrDxVscWDFnKPY22I4/bc44OOJVkx41k3fiuLbXSS/i
0tCffwUpKG/2Mvdtic9vJNvBKf9ugIeY6ODtDvDt5DmDji1tVFJjRgIrToqETuTvwFTsWHbtVogEAEIQQAVhBC7AAmEG9ZrsoC3rda9d9f9ZdYevHp7vWGCAHtbWHtHvwEjcnunsWFnqiAXtIE8ZaZKDXv8E3vrvQBDb9cPvguPrYFPtYFNdcJOp1b91vt5CSBOWCefpHPQB6b6aiLCJlz5Dqp6G/oAY+rNeQmOK0gudXKgduFueyPubBr2HyLYC
pXic7ZE8Se7TE+U3pcASszHbkIHcHbyHMInEraqGTOjKhUndULHfHfgInYsFs+sIAIQggArCC52ABMIK6xXZQKveYRAC6+656/a5dcPR3esMED3YOZU4PfgCG6PePYsJPVEDPaQHPZJQvUvRwCvdXegP6x6zvaBXvWwAfawAa7tU4fczeB7hfR0FfWs6db4RIB08/b0K/Xs9DAc0c4a6quVNLPvh9YkZoIkLcDc+kSuZkWuRIGwFAMuMuIkMoAMB
gGXGXBGGUH6AoHGAAC1WhSByi4Bj0vcDgXdxhcAKGsawXSKAW6HMbQWWHwWGQNLe2IBZiSbCM4WSgEXRReHUM0YWlUISITwUJS5HgxHiwPTmIgk1Sixh1/mqNeb+byXrMhaGKe8aXoxNHXj/yi9OXeQHEAT+QpofNSYdawS51jiHF0YzitM5LXHux9NpW8n5WCbUA/GX7yh5DByFxlX9KIm1XXbf9NWSTtWr7QDFWQ19XUnZ2H0ohSBMnsn4M8m2
QOMAAFrxCkBFFwDbou4HB27jC4CEPfPo3lDh5kP/O/P9GAto2fogtY1gsMMQsE1QvgXiiF7ox1iJwYUnioQRKPBIXFgdXnRBJKlFh63Pot4EsQC4UUb4WkvEVt5MZKMj6qM0VsN6OssdDSy/H8izRqpkzwp8vPVyjSwYyWjCs7iishPitn6avm1Lh0NeNnXHN+PW337yuG2QC4lO0ElniaVu16Ue1W1e06vvkpO5OODgZZM5DECif5PUeVlFMBqL
nCnHB5PdrvbNqKmqnVbRO7Q6mOnenGmZWV78n2nOmmn1h23/RHLwnosXKIq/ThnVZcPoUCPLwiPWJFmgrIAghVn1nNnChtm/1XW42u2gHxrO2ZzAG0AEk+Q2kO9lzUiJ0Rh4bDdYH1mrh8j9AYBcHJAHhsRd0HdT2b2caL248r3gWz3b3vG2HpiINiaYLX2yb4MeHxRkLBJ8L/3rQLJz4xGOrCotQypsZtp+JiXGLSXrjBbKXhbqXx80O6XxaGXJ
XLXmHz0YgpMnk1MhD1OLCSfqctNtPrBNtdMmXQFDPmXMkOwYegrYeXi4esTzODOQCLMtMrN1sbOkUp0HNEizAdvjloCJJ8htJN4zmAN9qJCQ266gP/W+3lDXASD6AwBoOSAPDYirpW77sXvUNHtdHkO9FnsHtXvImY10PmMQATH42YbMPlCsOigwuoDSiCTvuq5JCWQMxIV1XFRagVQ4xVT8QSNwcQdEvQdyNkvgcUuC2PGvlrFtTTRMSzTESodf
bS4uKJpGI2aHhlbfjYKg5VQdvdvdvH2wg50FIzwHEx5xWaPP8pXESs3ZXGPZxs2lXbNHaP9g11XoniTAD4mfbVOxOaSDXJP7WsgTXygwY9uwfqsE6sgk6o0nXRhw3t6JBABSEEAFkQQACRBUBC7AAGEEAHYQbOwAaRBABOEAAH4A2KAg31gUf0esfcfCeSf4fO7u7e6Y3Pm+2ZOE2k2mKU3xQ0356mRM3DO2RSB16OB82Ef0BKeMecf8fif/RcAy
Ehw7Gqgrercrclca1TqKRnjSwaykdH5OPNEuNSu0cyVpuQCyuYnBPWY4lKuccRPcdROn3/4qferatjsQMQBWt6tH0ph0trcA/8awnWuBq2ujBBtr0SCACkIIALIggAEiCoC52AAMIIAOwg6dgA0iCACcIAAPxesUA+vrCw8I/I9o9Y+48Q+t3t2d3hsfMMD93RuxukXxviiJvT1MgptafjGL3+BZuQ/oBE+I+o8Y84/+i4CFvFu/c+3jvqtVv6M1
2K3z7/vTqbw62VaG2H6hy60Am229OO3JyXqRTwuYjIvCMiZ9QFZzQx2AaCuUu7mlf0vG0OBcGAQjAWiN34hSAL1+hxhbcL1yiN3ajd1bcHhCvuixi/mSu0ayuYPk8w/kaI/IA8aH2OGX2Fj4KmvEKWvVjIYEI/25hxsb4wuCMGwg5uKZowoHHvqRuUO+ayWbjEPJvkOx9Ra5uWeIBGWDnhtpIOhzRZbyONuhKD48OnYLJXOCVbHjuWU8Xzu4TaOE
tEH+P1s+MP3NPNt0+7O3W4tjmRGa/6iKziPBcXODtpcRe3NS+fexc1AcBoMAhGD1FLsKikAHoDDjDm4HpFFLsVGrrm4PDpdtGDEFegfdHIdI1Zco0ZfAuFe0N/kldldAUVeE3gbQvPsLHQwaPbd1wUSyhIUNhqyYvzQRQ2OvV9cD6QcyMkvDewcD5jfKOUXUsh+dDdZT6N+TRsKTALfmGN6YdKKWQ2ekr4fbdzAzSlbigG2HdG0SuptuPStoD0cN
Sb8fu7vuAWPW32OwBgnHvX9nvVXIA3v+OYnBOyThO9W/uJPTqdOZOlPimfvFO5PcmfvSnw1LCNOmyan/ndPTOBfxQ2n6n9OunzPdelnAZk5nZJ2cEC8EJvPHCwq99AE4lW7NmXjgudvqqKDzsGm869NfOHHLZsOW17F5AB+zPUGF2lzHM9Q9sWYI8DC7gNx2IwAEFOxBoztTqluCAAHiJgcA3gp5a3LUSmC7pSA/QS8uUSVAXoEAO4dol80Rpx9m
u8BMcLiBOP5scQAcfv5cff68dxP8evfxNCcVOpPpPieyeSfScn8CfaVGEKclNKdZN2hqeq/6en8rC6etOacGeq9GeBYmf6l9OjIGp4INeJOAhXNAS0iO12Islh176vV4U9nL1E52WYfdVmHhAXM2Hn654v+nnPUL1XV7BFO2eoO2LMEeC4D+2QDAECOzAbIDAa6AL3MTA4BvBtypuColMFXSkABg+5IokqAPQIAdwTRGEPeQj6Hsg+OXUPkH3y6J
GxXb9LQw4pAsY+jDCQb83Tx3tquhNWrjCy4bp8liiLL9s4EVD+Q/2s2SaHWC1DYtuADYDFAzS0ilxUskRBhtRlG6UU6+E3IMGo2m4t8XiEtWQYRmVAHE1QSEdqN9m6rNhsOn6SaH4OqyagEkICYIaRXBJ61JonVRsL9VhI78IAFtG7kZyX5oAV+2vNfhvw2BcdrOl3XfnxyJIe0j+FlXVg/3E57lDWF7DJlfxU5v8Sgt/Ips0NE6P9ymNOSpq/20
5r2xXcFuV2mKgUk+T7ZsC+zuQEw0IKEYRlNAiSYVUWE+JYvnwmCSYYs++Y9mB0kaEtziQ3IMLzVG53Fa+tPEWq+RZrLcngl2fUMEmZbVteAM0ZwThDEYygZojVI9pY1QDzRzWhBDfGPzFZHdJ+nPGhpfktpz9leehVAUvxtpBMFWoTZVpvx47RMXu53N7gZXN73MH+lTc/pkxf5Sdj+5Qy/npWv4mFaydOWTiUKqYac6mEnV/k/w/6NssB34YzlZ
7SdO6uvAzgpxWC/8KAwwt+vgIixOUQBtnEZs1TUK+Cdu6oFUPqGCSSFboLLHbsImiGTQys5sdaq0JWYYCGBfnFtrgKC4ECfBRA/tiQMIxsp2aGkMBv9US79A6BcDQOnO2jYB4eAUAcYLgxgAh8w84gqhpV2kEDFvB8jICkVwT5ysIWyfaFpw1JrcNM+zYZCiCna6yg5QeyDUGIyJil8Ti1ySvqTGr5j54O9fZ/EhxHzuDaWnghbt4Mmj4xhYNYbW
kYJmc8syoZweqBVBuDCw12f7sVj8G4ZcszcMnOKEQEucUht9dAcr2Tpr1sBmGO6D5x14dBViEwP+nEVnKhcBglAqLtLxi7G58AXuHgFAHGBoMYAvvAPNDX96w1A+eLBGiH3VofkhBHw79DezGLNg4+TDRPrMRQ4p9YWdyRrrKDlDGoNQSFYmHn0BxnIi+ZMEvpzSg7c0rB8jMwfzXIp2CJutFAKCrhrAFhFIEwQIZABZZfEYk0aYIRMHVAZw5IEQ
GaGLCVIQh9bNANEhI6/5Jg/cEOCkOo6z8Sh6Q+jovxtoKsHuhQp7mExe6GUom+/D7nEx1YidpR1JFJnUIB7GtFeMmSIoDygDQ8U6cPYXAWwgCV1AA3CCAAZEFLoV1UAiIQIMnXgyoBQgYQf8HSEDZmjLRNou0Q6JCBRpnRroncjkHp4c8JAzPYLiPXcBhiuMXPZsDzwzaZDBewvUXm629G2j7RmIf0TkxdEzhgxsveXmfSraoA3CV9VXpt2Eoa8b
hxsJQo7RCqONQmjnpjoavdLurHcfuxzu4b8HuW/XIQU3e53NdWAdSXs9X3zfcoAcdUHna0FzZsIApdQANwggAGRBC6JdVAIiECDx1wMqAUIGEH/B0hvW6orUbqP1GGiQggaE0WaL+r5AKejPCQDT0jYD13A7o6dMz2bCs9k2U/Bpm6Aza89fWNovUQaMxAOiMmpomcC6NF7i9D6pbVAHtVPqy80OmGWtisPWZrD76Gw2npLnfqjlW2BA3gEolQh0
qOAnZunW3pXCtQRzE3hvBQjtZfqVAgGqeXeFpdHmEgB3LugQCnkOAkgfAECFD6gipBUnUrpCOvaKDz2ifeERBUfbPt6uafeFhnwppZ9kWG8TEQ9BxHQd8M5gjUH1wSQaQTsPbUkUowFoqNXBVLRwTN0nyt8MOowBCMLFVAKZE4WodbgJTV7ci06h3IzArWLhG0z8wotIRkK/53t78THUTjpRxLFDXuZQ3Cgf0+6qiT+mo+BkHSB66jUAZoSHoaMd
x3qJwr6tuXOEH8rh6wK3KugQDbkOAkgfAECD97ENI+Ig09sjVjxvCgWwg9xkVxj4yD4+cglhgoOJqQi6ujYJRDCKejwiQOEADDEFA67S1uufIDbvizxFl9iWt+GDn3hsEIcqWzYBwaMDoR1hYi7CS0BElwE0jzCdIxnMELlBD9Joa4yIRyIn5cjXuM/bkRsGX6KUoh5QdfmpU/yPc1WfHDVkBP37UDgeP3VMWaBlHKiE64PNUXzwgCAAUEEAAIIH
bOtTRYvCAIABQQQAAggpPcnhIAolt0I2jPaNv3Tb6NAoxY9BiZGDjElAExfPJMTMSF55t8A1E9ALRKPon0ixx1HsmWJvq/jKxTbTXv41rGXCh6IXX+o+2IHNi28FoO2Fb0S4xpuxDAh3hIB4CnkKA5RZQNgDgAu5xxPRScfYMBYAV5BILOcWCLhH3slxKfVcW+0gAfskW37WSPhD/Z2ROuQHb8c2GL7HjuKp4wbheOBZwdnBN4+itSPvEeD6W2jS
jwJ4SB8JTdYNlTzDbd0ix9PH0eRMjD+jyggY9nsGLZDc9l6+AIiegBIm7196KY1NOW2iaZjFuOYsAIrzc4XVNhjaVtu/RK7a9v6DeeaHPjIGhdg0DYxCc2Et4QAeA25CgEUWUDYA4AduHse0VHEmDg+UeH4eH2HGXtJBUfUFkCIAx40pxlXSANV3YZ1dWEyQNQfZGa7fsHgOfUhJi23H6geue4ojHzUPGWCiKp4vETX0Q718ni8oHCMRHJiHCIkX
WseI0hqg0IjMNCJbx/EVieRTOeIbwCITyYnGoEk2iKLo7XdIJ3jaCfd1lZwTt+krUoYqPKFatKhJQb7i0L9qn8tRp1A0cD24B4TzaDrGHkROHJmjAAuCCABUEEABEIFROmnzS6JHdGMX3VjahFWJibdibGLgAz1g6vPRerVNXr8SN6gkpaQtNEnltxJXZSSVUPLGmNG2ZwgLvdXrHKTFcjeNOupMHYyYUIGsHxJEQ7GJdai+k+3r2PQAxoXg7vS8
aOWlmNfFBDZMTMEKFHFZEit2RN3P8ZK1k6AT+RIE67oq0dqiioJ4o57pKMKGJNounzf2vqyqCoSkJSom1qqPQHqjAAuCCABUEEABEIIRIGkjTSJLdX0V3QjZhFvRQ9WiX6LgAT1/abPWerEPTY892J400adxKLa8TWyFbGeufTl7ZiFeaA0tOsIdZbDJoSdWSR1NQhMxIEfbWsZcwqKqTpRE7dAMGheAO99yQIEiEZID42T+x3wgFlZMy48i7JON
kCGIjWTw+ygyPjIN0aziJxsIpPu5MRGp8vJxeDcToK3GoZuITsQ0JrjPD6h+RB4yALC3CFaRvspUGaEREN72C4p43BKW4OSm0jUpJQDvtyIylMRXYMyN0pyJklsohWrUfkFEKFGVTwJ4onqa5Pql5MmpcotIXv3amH9zKXUxJp0NqGYTIAg0nCSNKNZQ9CJJoyaSRMAD4IBXVLo488ePrTHp60AA8IKgFzqAB+EEAAcILnStmoBAAIiCY8CeFoiu
YEY5NBGPs5xSghYhVAJj1VEknUc8AiJ0EVdvB2kT7OVFCGbYMRUjCwdiKinktbBcUy8TS1IT0wXYkye0s2GfG8gpo+HQJLmF0hagCpZHIqaJRiEndeRZ3NxgKPSGr8IJ4TOqTkIamycEJn0v2shI6kKiQeGEtAEnQdYSBAA+CAl1C6qPdHm6yR7OtAAPCCoBM6gAfhBAAHCCZ1tZqAQACIgSPTHpqJLpusAAOhwEAAsIJqMADyIKgBLqABGEHTpO
j6wAA6HAQACwgFowAPIgqACuoAEYQbOoHItGets6bsqOW7NQCl145Ls0usXRDmxz45PrN2fnStGLSLZVsm2XbMdnOz3Zns0uj7L9kByfWqAcOVHLzkJyk5Kc1AGnIzkV0s5xdaOXHMDmFzi5oYnaRADEBZAmAkY9nqPKnp7TU2B0xMcdKfanSRe500udbOx62z7ZTs12R7K9m+z/ZgcpuZHP7n5zE5yc1OenMznZzT5g8ouQWLEmVsL6nwhJtfS5
zNRzrdOubO9nmzUAhdAOabMLr51XZfsgOW63NnZ1tRY07CVrJ1ko89ZBs42WbMtnWy7ZDsp2agA9nez45gc4OaHNQDhzI5JdaOfnR9n+ynZSclOW6MWkQAxAuQJgF6IZ5tyx6y0hNqtKDEbTIAoYraRxIgDpzdZ+so2SbItlWzC6ts+2Y7LdbFyvZDchOUHJDlhyI5UcmOevKbnJykxPEktsfRanepjpnghCOdO7L5jNmHnSSRrzQCMI+6uzcscT
GyTnpNYwLns3enPVUAeiL+l2zuETZjYyoZ4Ql0gYjBrcoMs/oZPQCXlLynAeIAgCBD6B4Z8fRGeCPslQjY+aMzBa5NUGQUsZnkxrtoM/YEy9BCSfGMyx1gCRlkYjPkJ0HwoTNIplkSmVOPIrTdyRLgxKeo1m50i0p3gySIbDEww4KICkL8QP1VqFS4hqmGLkxAoiUcSgqQlqWKJqkMdJRME6UUrJVaqLVZyE5UUJyqFqjZWGonsUbJDoGz9RY040
HmSaxjhIXL6qbg+lFCaBEAfcvuU4AKgEAQIfQEDPeEgzPhJ7MGXlz+HQKAR0gu9rIOcm55ZxEIpGbBldgExaWAOASIsgEZTJ32WjQKVZDXGmTwpg3MmdYJimUyLx5QK8fsMNh8Z/s72QDh31opJ1NuvIALsREogkdR+bI1fnCWYlJ5BZltCqWkJX5Ci1+IoyCS7Rgk784Je/KUf/K6ntTuAnU+Wd1JVGYS+p2EwAOggSPU2fnUzqF1U5vrYxaYvM
XrXp7rBAA6CCY8XZxdXOqXRLlusnFLitxStIZ4T0bgDmSeZtOnn+KOJc87ngvJ4lLzc2Z0oSRAC8WuL3FV0hXsWNLH3TpJFY++nJOrFa9axFnK4daF+rfS4iXVTWOaR0mQK3gMC/qXArOoxoYAAAfWYC7tMwrQU8rbkvKYAWUW6T4G8BmDoLJBsIuydHyRlOS8FNdRcUx2XF1dYWpC5rmiNWJJESZf0HvmJgYVD9uKC8DWKqhpiXixuyjClreKm4
WTTKeI9G4BZi7lzSe5Diuif3JZ6DymJw80rqxMzbbSjFJisxRYr2kS9Ux6YmXidKzFXzr6F07xgWMM5bCkgG+e6dwAaqaxkW5zAdokDeB/zmplwyBusDgDBoYAAAfWYDrtMw8Qbcubn3KYAh+S6T4G8BmCQKRxHw0yaIIslDjexo4pBROJQVOSwRyfLBQuP1AGh6qSERvnxgEZd9MW3LLCHdFpjEzzBXNWRjiJG50LzxdfamQ306CQwVuKEB8aVA
cz+FXMyADzPuHVIdu3MS0DYNiGr535l4OwcVNFalg/YkRFRTxz1myzRO2Q5joBFY5EggmWJWUboq+UQB9F8RFCSqOP41C+pusqTo0Lv4jDiATQ+/nLK6HP8ehmnPJhf0GGf8UVYwiYTrw/pACZhNnIZq5VZKRUcUHQcGNcrrA1hiokhJ5agMWDoC1mpwrAf5y/mvTmJ/bbgKqCbE/TCMZ4JTHyCXJLoXhkC5otUoRVMD4gp5ZcP0A4BAg3gVS4EZ
8GnTLwxg4ISRAlSRx98P44qZ82O5lTTuCQwCAxyJCL85K0i0Cb+OFE1SFFqrLSrBLyFuNZZ6iw/mUPaGVC8mF/PfnUMU5lMgJzQt/s/yAk6dOhbQ7oU/W/7XcBh3lSqgyj2URJVQhymsMcodikR4B2nfAEs2WEiS4lry8SVRMfmoBVQuwp6lTSkx8hpy6k16YOzqJ5KkmTYiQAqG3LLgBgHAIEG8FyUvCiGxk9pdlwHFh9ulsqxBeOMtqx84ZkLe
QxslDLL2M48rjCPwUYyplHk2ZSiM3ELLkW5pEmYqEEgZUmaOYaYH1y2WYRbouy2KVwvimHLeFNI05fN0EUJ5GqCQdbJJHVR7COW78mRQIGKnbQngpccpRVJcZVT5+ltCUT4y0WNSih8o/Em1IMUVCNZ3tLWeqJ1kvz9ZxYw2VhIInjTTZdaM0YADwQAeQXPvkeiyedahtUPN8VrTx5Jwd0MEujEzzOJkAbiUdLyYxLV5cS+tfnPbXJKbp1bO6ZrL
QeCJq7zjpQyLQ0MTCqipxOgMy6YB13mVSollZ7KhaTLWXkyzxBIqmYwsRoJVEI82KSDKgCEnLMp3C4IVVCeARJMlQiwqSIoeVATyp+QkWTIrAk/Kwm+JMUVLPVZAqGmIK/JZ90VGaKRMSs3IOhLB6qyKe6wQAHggjcxOYfMtH491RxahOc3LsXTSO5Jwd0C4poluKlpK0qekPKyajy2J48qtQfJbkFtj5coiJbBMElsVhJok2+e5wkkvybqWalJW
fkiynp3K84YpJ/lS4BVeoopbcJN5WtrQsocuPF0uZQNLycql+UwIvS/ADgUAIwMuHiDJdza3zZybZN1Uoz9VT69GZMqhbqCkRDXM1fjItWEyHE+EI0ITAca1UGFnMJIKRCeRSw0YEwPZU4NZler2ZNfFKX6u5mS1eI+EeYFrDKiNhvs7C0IeIyLwATO+YUKaOaA+VgTVFEEjRWmoalGcdF3HOftmsJK5qsN6VM8GhLhUYSS1OostdYuNlVq7FxEt
WN87MrqaloTVFkqAb7l+VZ8jSQel+AHAoARgZcAqHC6wlBBEMvsTAr+ZwLBx5IBBRXVVW3tYZjDTVTOO1VuTpQ0sZIEaCJg2Niq2M+YK1Evi3IOS6MCYMsoG62qK+6yqvqRXoXbLnVIfXiC0lSzcRMIn2NcczK2I54eFSuMiDDDSz7dyOdyr7mGoAlPLZwkayqRkJszyKJZ/6nWJ0DPASiZZaitNfcwzVyjtFMIZWXmpCEFqJACEVADhOdaajs5P
1ghFQCkTPWFo7edHPzouysePrG+S7IrohzAAoiBo8+51s2udnUx7OzvWxbT1iHLiC1q5NCmyOZXNtEOzMe2dUOX3J00hyXZ3rT1rnUADiIJ63zqoB1NqPXTTpr02htC6nrDxYg20ASapNMmiuqZsx6Ka+5ymzzRpvTmY9tNum3Ovpqc1GbtAJm+TVFvM1OzLN1m2zagF82OaAtrm9zXFu82FbktqWgLR2tHldqglykraWtNnn7S56i8kdSvNTHBb
s7OqbOR5us95pskuq7MACiIPD3rk6yF56dJHibNdZ5tnWrsuIIWvE2SavZM8vUYbKR7p03Z9c1Ta7NNmutnWmdQAOIgzrbOqgAU1w81Nqm9TQG1zrOtLF6wATUJpE0zyS6empHlJvrkyanNimiOUjxU1qbM6Gm6zdpu0C6aJNwWgzcbKM0mazNqANzVZs812aHN4WlzVlpi1xbPNtatufWucUPz5pMbXufRMgCMT1pnavxeGJ83aBBNwm0TYFuS0
Qt0myuRFqy3RbUAsWrzZpsS2Va/NBm9LZlrM0RyLNFdKzTZrs26bitzmtzR5q80+aqt/mwLdOqflgz0ljypdev3kmArJhpKgpd1nXVAKTeQjSYGjElUW5pVVzMcbb2nb7bwaaRDdvQAvRwBfgxAA4NMDYArgpg7Sl3MuGxBAgKResx9eMt/IjLwRFXScUaq/U5sZlmg9cWQt8nSgzxhUDUB1GIg1Y068xEVswp1ikQ0IwCBDbXyQ0N8jlTfJipzP
hbUAYW5zUpqi1Fb3NmmhLUlv02ezDNJdYzaZvM1qactNm+zY5uc2ubitHmrzaEoOmgqR1USoSdfNWGXSElPQmdcOW2GljX5i685OjBNBMi11oXbsab1HZyzBVWuJdvQAPRwBfgxAA4NMDYArgpgNSu3MuGxBAgjxnzU9T0rlVfDzJ4MiHSquj5qrJx8MrVcMvKCQUZ4xUDUF1H2xJAk6UxSaAaA4QA4yI6ENCBQv3H9cIpNC3Ef11ikMLIATC7YQ
Q3nLJarEfGLmA6wBV8ppjEiEKwtDZxVQ5zBNRK3BW0bU1CsnIQCtX7ArOOoK5jaKMhUmUOp+a1+SYqM5mKDJtTS/sipv4FNtdGK9Ttir6HSi8VRK//jrpM5/8zOZ23pmSuKGgD5hPlVrGzv5D+UhZm2EiGyu/7HDOVSvT+bku/lvSrtH02CmpO3UirjQDiCbJpke0QKrmnwU9fUK+ESB+gIwT4J8CmCkA4AhAAZUoL6LTjX1jkxHR+rcnGriFpqr
TA5kCEXKTMy+aRDZkWgCssRbmQdxjXEb+ZjyiRZ4xeXz9khtK1ISx1FmyLxZ8ayWU9yTWNSEmAq1TqUKqEQrwVMs2Fbf3hWvdEVaKnxaitaHtMjtxlH/v0LMq4qQqi8HbMzucpoZ2U5K8sg5wwBUrnOyA1zpOoZWRtZ1FXGSQur2GYY4y2kAbKQJ5WJBPgm6gpQ83WADAI9nwKYKQDgCEBWl1kzolDtfJdKb1Z63pfevskjyNVD7ZHYoNR1Shwoi
QfMpKDl4di6iIdOVEZXWh8cYUodgaCyT4jKNpsJmQo3vHcK2Zd41DYzrb4XLhF9K/mUci+ykQpFfxf8cVNYjmhaF7Cz5SxsUrqKxd5mKURmtl0ISFRbGqFYYs6kFrqhGK4tYnvSH8bPqgmytbYtQBp0guEgBJT4ubVxKH9SS0TZ2sCU9rGtISqNmEta3psolHWlMWvM8XOLElD866XttnXK8F6GSx6VWOwH+6+VwXYPf/NCmAKIu4euvENxAlSrY
SLiLrRkh1grQdYXFlMWxgE7idPbdSiXDA2U67VtCmnbBvsEuqrYESYiGwsCRag/JGU2kb6qdqyRlQexb8cItkWiKfFEa4WZRrFk0a5diigFcouTVeZldZ89jShOzW6KVZvGrCVYqCW2Ly1486xcErK0tr25TixtVVtcWht3FbapNt4qa1hiAlZ+mxSEoHX7ST5h0gSTtrHV7a8xB2u+dOp2a+6WVD8/ARdorw9d0p3K7+Zc3NxR6LexuAEHkCXQH
9UDW3Ansk5MCAQ2QLdBemqIvAc984jhcjP/I4KFBsO1hpCxq6o6NByIivaiKr1ShaYyMJ4IaiMbjRZQ6yv+DXkUzkC+d7C5mR6pp2UjG+SUgfb6qH2S0tQMtVUA2Ama3KD1wsgqTPtUwSKNYuOMLkvtFGi65Zfy2CZmpVlIS99ear7oWtMUn7tR2EgTfhKNGw8RNZst1m7MADMIPHJLa41PRJEnw34dq2hL0A9Wz/Vdqa39rwl8YyJcOp+6jqutE
oyiLwVPZDIvVmTM9MO5VXevh0PqHJT6ovS+pR3QYy9LgkvFNGa7EcyIuAvHcAjLySZiBXOsnWFPA4d7IN9qzZY6rp0QAGdj0SGP6teq6Q9UnCtAFlIsZO0PsTMGpLgNuV8z/x+QpfQ0yjVfKiNsulVtBM33nyVF+Q1NSrq+5tSONh+3Nb1NLTqjzZgAZhAA5+bKSlaOwkuG3Dt+l/egAq2P6X51W6aX3Lf1rSOen+seU4dcON0NtgBstm2UiWXzx
gYI63V204S0l86h6XfSO3NsXp4Yhesgb/kOJhVcRGaB3GqoVKrmVk17fQPe1J70AcAdoJgGXAPAEA8QTAEIBKK4BPgXuB4BwFqIVARgLueIFQZcnDK9Vheg1RMpL0o7V6aO9gxjsr3IZuDaMYyEWAARrH1QhvAjM4D/hA48N1oHDXYO7019e9yG/vc30H3Pi2gBodna7o+hc7VaG8buFAOrh2w8MUa1TCAmLARwjD1GkXT8ulF/LchOzfISCq37K
1dKjAZWx90nbpYrKqoPNG7hE4XpqBwdoZIe1UCnthSiQHABSCYBlwDwBAAqEwBCB8iuAT4C7geAcAKi1QRIHbgVCEHz1HShVeINvU/lkFj6+9gnwRmYLS92Cq7eTVYRXb1Q9eqUMAlxwVQ5gYwVLO3uoWd7qd1fHvUSI6AGg7drBMfZ3yUR9wQBtcW2Ghk3xO1cMxYaOBobn386F9As+ISLpAj0qF+uwfxhdxX0y619xh8iOVA3w6VmNTUqw80M1
y9F1hxXWKvxG/Vup2s+FS/LxVoqUVaJh/gbusI7U5ZJuoYWbrlk/98TVuuWVZw/z270seqO4y7veifHiUTsV49JHePyY2CQaP3QpID38qVJvAJvegeN4iq5aUkHSIDKe1QMN2hBxgfkQDyEBPgMAR0JgHoC5NNVRe/BRMYL2jKVTMxwhdMrYO/qOD5qrg3wxNDZk6YstLZTDjEZ6C+Ypgu6LXjCjSUqd5x2nd6pOWPiBFGG7wSRDzADZGwRcU8Xl
0oqcm6urXfNRv6mFGhCKqIJUyRVdDoTTTY3Vk26a/9gyEEK3Q5zxNWwjjjMkCDvHONT5Lj4mcUgsP8wugYAygN+kUM90QGp1jK33XjmO1f0qgktRMrpAKNG9EgS7DA/cw0le5CAnwGAI6EwD0BMm0qiQentgXQ74FOe/4XnphnUGxj04qrhgp1UjLjI6MUZhFlmDct/sSFZwJwR2IZ9woxjR2MYPJ2l8tjwhrvbsa2W96Q+pEPMOvkbCmNpaBvNn
O0NCVBDQap4LAO5jxxnlqmR4PaewjzAZ+Ms1fWYc0UMaITulKE+CoV3jYkI8pbWOJlhXH7kTp+0tX2nCFvR2oEwcM1ANcMmyPDNakideW5COgiADmEOUFokANnYATZwgC2a4AjywjY8j/VPL7X9mWt88trQAcSOdbgD6wDs3KebNZBWz6R1JTWykmHb4DPKxA5GDXV8mf6uEk8KUfKAndlQDYQXbgaPUjAT2tRj4afqYEg7mlzAF4LKbGPPr89dB
adIaRuqv4coQsEnHOVO1HgEUR4KXAI28yT8gu8NWRplZ/H+dRh9VEhBQKN7cWoJ+CSxqsP77W03gs6J1EpH14p8aEnqfoscPYTDy3IR0EQAsyuzvNQNDgPWcbO5Bmzrcu/QEe7nNq/D0AOre3K8WNbZOXa/xePLrOwAGzhAJs1wDiNDr+JGYkA5fTANK8Cx10uAydrND+7ztgenbsqAbAyRbtX1PdiUYuGYH1g/2ipcwBeCSnejJk+VVesVXZ7Yd
1GdqsNWfqWD8x3U2uPfZ4zyFAGvY6i3Gw7ciYYwNCOwt2PhDTsljbmKaAmCfGaDDgs456udMoarjihm41LXKgy1ZgJoGaKeKVpPGUw6tbWuReI5FTVMuOBeBKv+PSyaNQJ27smcVmWHoTOa+ImaGzMMnZQkRRE0WsLNOHLFxYyOnHTEvR0uNo0oTdftv1mjG6e9Fuv4bRKBG3W8l5ugfVCM/70AEY3tWxJHMDqx58R/noAYElxK1L+9NI6W0fk4S
FB6GfQ1GOoKhlJehg7BiRGIQSYQJsYIcXNPeC7k1erRkRGI6bGINx4yvtFO71un9j3xGSOLVmAmh5o0tOuAoelxOxVaBFtWmzJqSpVNIjxkNfPpI06HkzsnfQ1VMyGccVcnpq7UK2ll5nwTe+mw6mNDpR1eL4dRjV1PsPVmfC6o2upvQbruHkSnh31mJfrrb1fD1PSiX2YWl37QjA89tR/rHPNbv969OulvViP/6wlp86PZWxXPy9YlN81kxis6Z
EVKvWAzkfXMrq/0+S3+buckiRFilJZ7JJqEyRVGoG2ACU7Uq5CAjKmQIL3AgF3RQBcGp5bAOUQaXNFiAAIfAP0uVPTG4dkxjU2laYMIjv12MuZZwZWN8NSY8oKSrcrriAcidgqxIPgSAQoQ+WxVx02hdkN075DmFt02cvb50N/IQCBmLlKQtEaNchoeODKHRi8pbGMVPWN9ilmJqEzC/JM/RuX6S68h0u+2lvqzWRNd9Rqbi2sbFb5mkTvG0/aib
JLdGW57k4axLiagawX8wU9gBFMAKuQTwpakCBdwIBV0UANBtuWwBFFSldRYgACHwAtL5TQxs9p0rIPAz3zgIjUwXpoPjHi9iMqY3VzJiJSKoD4huF+1x3v0JI2Be8SQPQgc7rVghp0/Bag2IXXTYhuDfTrUYBR2ETWdCHbFwuTR5QmKDCxjBZT4c/KesT7LzsI1aHSpSZ4XdwESH31xdPx4CZ8vovUbflDmJiygUmCsXFdYJ3fdHshOwmMTUJmFf
12ic2hyndFZ0KxPbVqm/Qj/pbqXlEmCV1ujtmScZKUqwBJpZwOPFsjxxiIfVjYU3lpT4XRrAaOVIcK87e7MBx2nJRyaQMFK4uQe/k3EXGi1YKIK+P6ngZGD4KtydvWBeDIgAAgEAbAB4JoBgBbpWgz5nVa+YxpvrGDKg5g2oNYM/q/z3kgC1juWgEJWI7SepGFCgu8gBkE0AWLdA1C1xGrMh7SlSL4XtWmdnV7wYqCBTcxvIJ0WZOGpkmRqH0s+p
CfqGlMkTeulEy0L07onXuRuq6+ipV6YrM0fQ7sDiuCqEmYok0AmG1ZIgdWHdwzGvL1ZlD9XrUo8Wk+UCWEe7cx65yA+yZO0TB51e5p6poPsiURFJ4e6BUuUe1bbyj6AAEAgDYAPBNAMAJdPEAfOQ6lTpBlU2+eGP9KvzgyiY3qayvwRrGxrTVGSKVDzQBG/SaaALDugah64sF1Zc6Z2MwbkLSHKPBTHVhaRSIQ8aJE+M8FKGbj7+VOB+tjPBqeZo
OEBs6D0WZrjFxM78pYs/cmN2+1jRqy4temdrfF+w2rscMDTz9w0y/W4Yml1nVL2PB2e3ItHRzQ5bs7Ov3MABSIJ63Lptn0AmdN2x7a9s+3/bgd/Oppd7oRGhzelrS9AAMtDrjLk5oA2ZbDvJzPbFdb277djkB2g7S5iSdAYXWZLcjJ21tngPO2uXu2oJBG+9TiJoJGwYcY4n5ZGBQ6lgwNa80QfyLMAL0p5egM4EkC25HQkO3dACCmD6BvgQICoA
axM6Rqmu0XUz3yuRStfxJrWzjsoffLmdUUcXo9hZrRXYarP5rT9adFHobIrmaifZbs82enQbmAApEGdbF0Wz6AVOk7Zdtu2Pb3t329nQUuOLO5gRnZsEdq0eKAxI5iI1pa/3jzA7ztkOa7ZLru3Pbfsn237YXPhKlzSR05SkcsvxK30iS+y3s1/jV3yxWCRsDrB7YnnLmoOpYL9QvOinjczAA9NuXoDOBJA5uR0CDtXQAgpg+gb4ECGqAIBJApuf
gEkDW58AFN1Uy+rfM02PzWp+m0QtyskK/1gFw035LiDJZjBKhABVTMFVxAlQEl7hFaB0hhcpDPepq+LbkOS2WK0ti5bmGA1FRyzhYKfZ+hsgdBTQLKbaPLUmy8juAFOgbFpCo0MXAT+t4E4bf+UgRTtvAFayEzWtWGOLW1i25MF2vGL0J5ihoVrvaHnXpRp16/vrrKZYrsT1143QMNN0kmTrow4k90ymE85gBFKjHMyUpOjMLIJM7ij/fuXEoAHz
AGTegX9Hnzgx1U3Do/Pqq0r2plybqbfVmg4gUWGaDrE/hFWn5cQJUPxeQRWhdIuAyhdVbgsXcTxFMsW/FMz2WQDVmLUsxMJONEhbInQU0EPxpQKZcW2G1ACTvXzaQblTx/Wy8aF1vHproupIe8oCaLWqNt3Q25n0zMm3NrgKpXY2NV1H8oV1Qm6zCcIcFNtdiJlaudcf5YmKhaJ+65gMeu9DzdL1y3W9YlLgRcwn6kqJ/apHbZf7VKHRrSk6AUrF
KHDWyjuie7WmENrlVDYQMw2tzgenc922lhKO7hPpzoBNkoGimRgUIK84Q4aMQAN2vwfAMuEoD6A2+nRTU+lfVMI6srdNnK4zbyt722b3MBUHxGwjFh/Kk0XYgc0SATQiYZoTCOQJ0ii2Dl6Fy4wzqwteCE85R2yGqFNMKQJghGiNboaMzWseDOkaa8LuX1Xc5rBtha0bbYsZmYTWZnB7xe40FmDrQloaXqOrPCab99ihulnYjk52Y5hd/Onj0K2e
hbupAXcxZMV22TGRpk5hhljQGHqF28+10Hflh7CjiQKEOebwcx6JAS7X4PgGXCUB9AtPL5rFevUkGKGVN8gzTYR0DKkddB38xKClA2c1I0MXSBfH+Ky1mwUxUTNNGJh73go/Ifgw6BtVC3arIhpC41fdNR5cjdkerGWGiRItcLitkB2a3CjTAguymKB0RpgeTW4HutlB6vvQcZnmLG1s27vwsP5nOLCsm25Wb0X22DFMloO+nU9lZ3fZ+d7Oujyy
tZNA2yORHODsQBQ77t7Oi06jvl1On2dbp/1pm39O+zSd+O7pe2n6XYjXEoy7xIgxTnM7wz0ZwXejsTOpnkWn1n0/AMpKS7tbey+r2yVyOUHdYrkygbO6127h6oW6LNlxGHrqBSpzIjjZqV42pgbwXMGwC9xy9l7eeqPhldsfvrPzsx780+wWN6mljBViUFKA5TdwyM9YOgshBA4px9G5UftLxHNCN7Qn14i48coUNS2lDDIluJDFGrKpSsOpEoER
3OsxN3Wr2Z7P9sQB07wc1p2HeLpdP06PTrreNoGfdmBzvZptSpYHNqXPFGl0c0BPHMtaa6zT0Z3nfDsTOpnQWt1v06PkAHFziR7bckbXNiTp098rk1Lj2513F16oO6EVixkoHBTcp1IpF20caSpgbwXMGwBdxi8F7ipy9cqfMcKmbHVB1K1qbQWuTau8EUnVxG1r1gTQJEKkeuK0XpwjTCFBsIHBx2C2sR2xjZZE8pZNWJDNLduNDBMQSocsOBb+
uSLgPf6gTtvEXmMPVS8nCDgp3LONvrXeOWD0p/KVwdW2j9+1/R2fucMX66nMlxp+gEtkbyt5Fm6+W7NzmHOh5nc52RXVU1Y9k5TaoDCpfWAKvy5Mm7uVnLTnTOotGrtOZ7J1fWap1b+urYOcWfNaU7az6JZs7NHGvN5Fc3LSq56cKbrXWru13q+HlWWIDNll+XZbXNXONz8jklTboKX7nHnN2ojignAXnmt0gVvG9iEkAB43g1uEgA8FIDNERgDu
0/Kw0XK97e2QStk/GtiK4h+mIWXob1uGGATJT9a6baY3sWdr6ari4rLqfH61Z6oyeZnOnlpbd55suOUc+blVyTZJdOTcjxDllqv00l9YPK6zmGblXvTyTeq/DlWztXJmmtXM87oLOn9/ZuNgnYYlJ2uXm07tXK+1lTzRNNc6OeHOmfBaLXmr617q/7UsNkx8R1jcAaucWX9tUj6y2r2LHoddz8BwPUkA1AYJXL2SpdB5a+kQBsQkgL3G8FNwkAHg
UgEQymDNFnA3wCoFelSuQvQXtB6m1McbdgUHHP5pmzjJ8m6Dzw4MU2J5hFgdBMIPXIVCO1KjowU4LKIlwh2asumyXb9ilwGqVBDX+QI1zCI8cDPPHcwIZ9qApDc5IXSNL1EmKhDQg63snJhpi1kMQegm2OaDzfmmbBU5PWpm1oVzxbwfzrVdyTCV0dZIfonjr6oy670JxM3WZODD+68w8esJvnrHDgyG5CpVix4IK7wG+u7GvWQd3Kod8fu5lSSO
pAOookCtykBsGUwOos4G+DVAj0MV1e2C4se5dIXZj2yclc/OanvzDNt9eeEhimxW990LCG1w5Q9sd8GMdOEPyJfl9wnLp0W1E5Qvr5DQScIG1hFZ3lAMNvAXMMGc6iKRbO1xkBwpFJhoR0I5FjW5Ra1vUWdbqAGa4x2+PMc5W0utM4K+NssXyn5h4FVU92sXXDr+Qs/vtaOvycTrd/JoRdboeG6OhNDh6zZaYfYrWH/TFWPBCVDrv+Qm7gazZH3c
jhPnGR3kd5VPWijblnA6o5N4ngng+fGaO3bvB6ONdCDCQBuyBCtAoAAeKAO0DgADjqcuDcYMoAvQcAvcpABpSC+sdr3W3tNqrlvZ1Ndv8rBpwq6hjIwowgcP7BkyO/tV60poS0OUHdrQgQWEkM7zu7RRauv30O0T/8vMC2F8HVhQQlWxWIog7QdupzbaL/eZeEZxoTsegihHjN62uXzFnl7e6BW7AChfLzB6+/NvCvyne1gS1U/P4DCMThJ3XX+8
qhVQfWY9zSYMIQ2JHUNm5ww4Q/3OWZa41JX52IhGgUIajwU3eC0dqTntEAJdkCHiBQAvcUAFIHAFbFU40G4wZQAeg4Au5SApS0F8+QGPEGoX4i9e4jufU6nX1iL7WpJFxyvszj477GUWC9OhmTQ6EEC4knndt2CKdVp+yu/FuODvBK3UYRjPcFdWpICQFbmMBWJf23xTtKaEogoKoQ4zmt7Q9PxosPuEHs1pB78cKf/Hinn7sp6K4tvivihAHkD0
xNUP6yhukD3Q9uvjCCTTDi3dl5JPV3E30wu3XMJ4cLCOI4Q5YQELWGufdSkkJaE5/sYVnWTZhDlZDcI+bndmij1nigc3fkeRVGMaYJeD5bt2l79H+o0sHyIdHcAY9z4MoBDEPqQRG9sTy28yttvsrmMne+XoRfyekXfDOfRzfgtSwFFSi8+3rRmjafNce6mUDR/dWP2xbAYF+z6vJfYXLw6x5iNhHZ0OJxoWhhlyk9sZYaawdec9xd05cpr5r4u3
B5IdiciHFh8hw0Mof5D9dcH4h5ibusm7GHdJ5h/STiwEn2HwcWz2qFcGfZeHwzZz1hmprue5hoN4j2I5pUTqrLtzqAy2yZXbu+vab7+gCUvAiwW7g7ee6x7KM6P0A9R3AMPc+DKBXRJ614dTbiuyfTJ8nqQbTb7f02Mrkxv83V1YgYclCwHaWPwsEXePRg80BIAsk/aygawN9h05iIXcP2ELln8l9E8cGkJA1OEDmdLHLjy3TpKT98TXpr1fJ1bf
l0U+fcQqSnEX996K6/cQFBLdtqVw7ZlfuGGnom9YNNqtf6uAjLakibj8bVhvPD7+ieZEcAXRHlnf+w6WnbllJHpzEgYnw6/haFjIDJYlcwdsXWOX8jXXu53/OBIHmcOZ4EvmsXbtoLxvuNxj+gHaC7oDg2ICoBQEIaifgW2C98wjM3sdvYXv57t6zd0HWhtYtkGwRWcZhEcxGGoeUPMCu+Wgbv99042SKfuPeTPz3xd9hdLgZxNI8CFOOdGMbvya
O6B1RaC/3upFUu6NfrfTMxeRXbF+L9o+ttZrpXPG2V9hLG1Bu9XHhitXj7VeE+az9i+Zw/uUs1bVLQ5hrcnY2faWe1pP8N1V0jfnOjpZ9WN5I8+OFiZHUuAEtkdupnhc+ixcb4kAgVTfsbM3iACkFXQHBsQ1QCgFg2k/rfl7cnrt1DJ7cb24XP5zK4d/gjzQJIhgykUqByxriNx2kW7xhWtAyhObVVg8TVbe8WeHVn3lC1oLshaQiE6cT6Pvl3fy
stjdmC8/yw+e4Hfn69zy4sMYP2L4XsFJF4/eH6kf1lFH/hJqd7mMfztgImaJmm50LRFrtp9HeDe6uk5aAEOeJsADEIKHMx45bO52PKuR7Otl1zD5jc5ubnIbXnyU56W1AMT5r+50AtocgunbIdlpzZz2gEOSHJz95+xnHmyZ0X+s0l+y/2gd1tq91ezaHZ1AAN9lrX8DPJ/+f9p3P8mfZ1S/HACv1X5r9uy6/u8txbpoPkNzj5Lc9v+3Ijld+e/a
Z8ODqV56RFGvxnKOE17W/k6Al0XUH4Ej9w8mFfYOt9uDtj61JqdY/BLdtk/Y0/WCDTM6mogN+0/DshudXwctAK7IE2ABiEDdlI9UtVclHrPMtk6zF5hcleSXLjklrN5ochLagHx/HOJtOczzW7Jzr6zDZ4cqczAG0CuzXZefgv2M8c2TOS/JmsvxX+0COstXOrgf9QDNcpaB/gz2f4X46dL/Jn6dcvxwCr81+6/5shv7nPMVqaC5y81eaXM78VzP
/52f38H+Y9h/qAUf+P44C7/p/LpwP8F/E/yX8V/azTX8N/S1yOdt/OZyZ4mJBOyWck7UcwiVxzBIwZ9PXEiQADdncumACj/VAEX9UASv2r83/C/3r9r/Jvzv9m5W+SOcn/F/0Ode/D/3zoh/Efw4BuQMfw4AJ/XPz39C/Wf1tdi/I/0X9l/EN0gDN/GAMdkTnGdR+dufcu158iPfnxI9u2XxBTcRVGaCdhjzNGyBlIFXsy+c3taXw+0JAXdEwBmA
ZPfvv3X8zpD+R/SPMf6gAn9T+HADP75+h/sX6L+VrqX6n+q/uv6huW/jv79+RspHYeiSlos40+yznT5uuPips46WEgAf7z+x/mX6oAq/qgDV+tfgP71+jfnf4t+j/iXL7yxzq/7v+Rzp/7f+2dKP7j+bZrACABwAXP57OxdN04EBUAef5r+G/iZpwBgbggGGypzkZbTepltz5keXuj16w2sjvMBa8Aek9QKSxYA3ACm2SvObfOZvNG75uq6JgDMA
ZolwAKgS8l0dFvLVU18VvOQTW9JPBcWhcGbTtycd9Tf9QPtxIFSCtYxgF5ECQmIHrgKg+WN5G4ggSUsEM8eFDC0icXvczyPADQcaAUU3kR4ExY/7KWlScUwZQnplF9AExh9TDfJ0h8o/SEyfd5dOHzj8EfCp3FcGPCtTT9y1PWRsVMfWSxIlhA3V1Z9lLQn2DZwA0N1jsAlCn0QDXXFZ0HV3XEy1iUzRJoPtd8fd9nZ8MjLnyyMLnNoArtobG5yU
dRLgDVA+5Jo4reMqolYye6vpt6a+Y4pQb56pXIXrpWDjvr5OOsGGITLcdYJHCwU/qm1xFQIsOqCng/xKWCmekUku6KMVni/ZHgBoCwadQIQTGaYuu7iD6yYwUA3aXe+tBy4JmgXg0y6GL7ldyx+salkIo+SfmYbb6gnKn7WG6fvKLY+DhiJbYSMATq62u+rsT6+szQTa5k+jQRT72uVPqgEhGGAWs4M+r3NgHjynQWG5SBm2mmLF2lzqXbXOCgXz
kG7GXGThhfW42rxykeGxj1zzNgGzcZfdIQQByiGNGaIgQGAAIMG3BwOQt1fdexsCNvUvS290df80x1dBBWwSBTYOZjN56XM71QAkIYyGt9dPOsCnh7fWDmkMwnOd0iDHiKJ3pEE8OUFxYK+DXHZE+vB5VVsLIIVhlQxKGB11sw/cHzyD19dNUY1ofYoMFd4fS23KCYvCV2LN0fKSyv16guVwgBsAgv1wDZ/GOTx4LREOX4D5/QQNACJNWOS39K5R
5bCacEL4HGpeOUiZOMXOHpsAebupLG409kUTBodRECAwA6Bi25re5jvFZWONgQp7a+SnrQYqe9Bp4F1cKEOMimwMzMTA7w/kiZDzARHGaC+BNsBEFU6pLg1Zu+1nrRTmgqQIXzdWxYNh4BmmUpZBsyQqOVSQOFFs8Yw++QcF7w+r7oj4Cu0Xgn5YO37pUHaUf7hK61BnGmn5H6OPnxroAeAbwEL+PTr7Lo8moq7IQBy/oIG+afsrv4zyK8rf7ayr
uSv8rZEOVv8j5agOgDS6VV04D//bgMl5s6SZ26di6QADYQbpxZC2QjgA5DD/Dfw1DSAtvzPk3/LzVQABQ6uVLpDNHQIJ84lBkP39mQ1kLwDkAQgNIleQ8QKdkjQveVrkRQlvxPlxQyUK4Cp/XV3lDUAJUJVCbQjUKTktQjoNIDUAGgJr8DQl0LcVTQroPDEEAl1xiNafdrXTtTLbPxlCcAmfyDDPbEMK5DxNB0Jjk+Q50PID95euVFDPQw5wlC//
sg/5FytAeIGF0KrkAEcAeATq6TOPTvnSAAbCCMhzIayEiBJ/tv5shLTjPJihZchIEFaqALyFzyhdFpq6BRPuPJ0hRfnwGL+TIa7ZqhK/kIGCaXIdqF6hecgvKChbfmvIihYodwHhyUoc6wyh8oagCWhAgaqHKh5AeHJ0Bdfs5q6hlAQaFdmp+tNKeiAwfHZhGHainZRG2EqaFH+FocyECByAMQE4S9oXX6Oh88tQFChboUc6ih0/hKEgBgvOnTSh
AAL9DPWBUOVDUAVULwCwwkQMrk05KMP1C0eQ0PICTQxc3DdTnCb2jcefWNyctYbWuxw54mTy3MEEkYiB8h27foK7tUuSoIMdrcb4CMBfgN4HoBbgCxxh1lvNX3h1kLKxzuC5jHX1k9nHXQX1A2dLiwBhUIUDhA4LvD+AJ1OqAGHCC+9Ulzas3fGIL1pMIBIAsZ7IR7H6t35PCn24tIJiBVBDfXnQgtpgKaFD8cgq9zvw8QlMxl1CguXUAg/GAx1I
qAHKEKhVocqHByQYbAEahqAGGHkBEYYWHRhRoWz6DqqYlYayB8wXG7gGCbooH8+t1Nvx4CijoHpawJEL5Di+LrnsAd2vzsbim43wEYC/AbwPQC3AJjuDrWOavhC4vm57K27QuzgSCLKe29qp66q+oEzoq4QMJ2hMwv7Dd7KgMWGEJAwQISS7Qa0QWCGxBqslhCJwHNu1ZMsuFqRA+CBgslKRIN9gyJMQ0sD3z+eN7nkEX4PLpIoUakXhbq7AXjDj
BJAC9E0BibT4GcBMAfoCEBmAfQGtw8uSQDNBLQdEE69CvKgEAhK0MG1h9iQ0oNJDovBwxT9qQtPxPB6VarBIQTQYsBqDJXGkMz9bndYEAAsEGvldNaAJaDE+Q1wkBJInuUb8ZI8YKz9VpUeR0sv9Yc2QC3XNAPp9RORnziVFIrOWkj1XVSOLxJg5cznVD9bI0ud2TG5xctlgokEkg1g+IkdJJ3JlzPNqBL3D2CDA9AGwjcI/CMIjiI0iPIjd0SiM
buMkgAeiaAhNp8DOAmAAMBCAzAPoCm4KXJID/B4wOiDdeFHlQCAQBaGDYlBjFgSFfucXpU6W2ZIbKLcWCEISrGIVCO7DdW9QcJZ8+EgIABYILvJqa4ga0HGh6opJG1yzfjJHdBhYnGEoBjrks7OuSYZpaM+qdvJFSR8AbJF9hZzkXYXOyiqOqrmI4dDaf8xXgo6yOlEKm4zhbKihBTkPkOL4u4uwex6kAuEfhGaAhEcRGkR5EZRHURqvpcEbevwq
gtVfRyWuCJPA8PsdNvRx13s3A/ewU9pQRIEVtOgLqAZo9PMRgeg3gg2l9NQUW70ckWZMEOfsXfV02/DoQ/8lkgt8H72SCSLf+zzA24UxG2gOkU/Cotf8dkTeQxgLINgcEI+B389IfQL0CZgvVM3gl+XF9zNtWIkWH3x2Im204j3+YhzOtFrZBzSB38JeggB1wzcO3DdwmiLP1sAEiOWIloDGEhh59UmH5kLwb1BbBcAPaTaB8ITZHqihHdIUIBMA
eG3BIxrt72OjwY46QUEkD5DQWfGCBZ1gSFE9CIQ8NgrCH2l7p+HC2IIcu6/hOylHhyQy+OXBJOjLnu55gncGKRVQHSCPyee7+LCEhBYwLPpoh0Pre6w+Ufo+5vKz7pLo4hBhtVJxqGDsxaPQSoBxG/uXEYl4ic+1vRyZAj+CbQQA64ZuHbhu4bRHWG2AKRFzECQK3wJUr1IPoXg5qJADKAuAMtIdAyQDxCmgaUrw5fchAJgBZeynA+DhejTIB7Aq
K6y04Hwe92M4EvC61S8tqYD1odZWPEyg9cvcDwAEa7dh3JU4PFkneshmWqMei7lDYR3cWoyJDqRT3XD3Bt8PX3WXU+fMSKuFxoLdWu0Bval2NhLQEUwxtKfPYG7sJXJgQoBlwAPEyBsQIQAOAoo0ZRij7AuKKk9tfFcW28ng5Yz29UMEfUVsDkWbCmg5cDTx+C1YKSjKgrWGHG1h3wkl3p1IQ6IOqiUwC7xtV+RXMB99GaLdyJBD3WfSikzwPKCo
mXqdbZebjLl6FeEKtB42RlHmbpIepnBV45kYAKVGXR5UfV5Mw1UTxC1RUkNMD2QIjs2AkezJvIF0Rm5lR4iY4QU86B6XUP4KSo2gUAwx2y4T87VBGkhQDLgXuDkDYgQgAcChRx4VcGdukUdt62OdNrFFXhTwYXhSQBoElGYwRWLNAy42MlVBqwfFBVCms/2NjB5Ri7iLY/h43OCHVg/SFaRiExEPMDiYXVie4Mi24meAFQWTu1E5OGIchF8iaEQj
5+oy90GiI/fIO0VCQxCRYjtrEVzJCOI2L1T8rFDP2rU1IsTW0BzZQuljlPWbw23lc6KOVi1i/bp1zpvZKumH9vYu2TlD5tPuSv9s5KbQYC3/W/06c3NALTr9bcAEAdwBPZgDWZSAEOXxhX/ObQW0CtIrSc1StdbTR5MeP/wGcEIL2J9i/Yx2QDihtO0WDjnZMOMLoI4wOWs145B2VjjjQnOQ4BjNROMrlk41AFTjPWdOMzjs43OPziMtYeNy15tf
6DRDFhvxlBRISn7TemPnUGZ+9Ttn7k+rWhrK50fss6zOG2cpnTeyYWqX49OmdDbJl0Y/i7H6yNYVNr1yt/jHKjaTAeQEP+XTvZqeaDfubgAgVuGJ7MAyzKQCuyBMB/7kB6WjNpDa82nlpLa8PEjwVhgzghDOxrse7FGynsb1r6iPsSbL+xudIHFOyJmgHKGyYcfqGxyHADppRxM8jHGoAccc6wJxScSnFpxGcYlo9xaWlNoZas2r1rWaBcQVrFx4
LSW0htMuLW1ytKuKlCEw7SyTCtIxO2TYlw1O3Wcc2TAI9i64mOV9j/YwOJbj5/EOPbjO4qOJ7i+4hvwHih43pyTj65FOKc1J4rOJ4wZ4jgALj549OUXjFtcbRW1y49eOrji7W6VLtbIuYLkDaIpYKUciQBghUC4iZHFH5/pduwW8l0amNXDJvdYGXBcGW3BmAkSOAHOCrAk8Oiijw+wUoSuYhKJcCkonb3cDUos+HSjEsCqHUghI3Ywu8NoLSATg
oUgHoA8YRpFoBWkepbv66zqMFM+6omXEuxvsm7EexXsbXHL+vsQ3FNxwca3HtxTfp3HdxfTtHFLyscdZpDxycSxijxHAJnETxEclPG5x2WnPGLaC8SXGF2fEmZFmGFkeZY8+GAhjF2RDzh/Q4xbKp0Bc6flNm5AMy3upIrhZMcbjLgaDObgzA8JHABnBVgVt4Mx4UZZIXB3btFGwu/bvt6M2BvoBo7EEWKYgaQFIVi6wYN3ptDaQycKYj8go+uY6
KofkDQNwRUqOJdwnT8KiCqo/1X/JQOKOhbsgbDd2AiZJK0Djg2RJTHIwELSMy6iJFL8UN4OXZNSPjHAy2M300Ikr12BMI/BIkAkudoFwByiZcABB6AXACmAZvUgBmBS0ezAOBsE5ByrsLOBiNwhzEpgS9x+gLPReBJACHTwYGlC9GYAjAL3CBBCAOACgB4gN4XYgHIwAV8SMI0SAsT0AT4HTBiI3jwdx5TDdgqALJIECgUXca3F3R71cCBSTSVNJ
hOxLvlHfh8HDEHFRr5H+xh0jdn1Zbu1xru5WgicGaAxYx3kWAqObMirjkQQPLrHXu6IZ1GYhcPsbEDRQMfG7seYXCkC4ARRMuAAg9ALgBTA83qQAzAOaOZgHA6CR8YYChnIxF4QWETL4u4AwMnovAkgMDroMpSgejMARgC7hAghAHABQACoGcLsQvPu4kgQPxqOHsenwOmAkRwnlbjSmS7NUD6SQIIkCm4duKbirox6uBDxJX/B4mAQXiRpJW4Dw
JAh/E/IgdwHgNdmXB9AC9HaAgQcogoApgT4GaIhAZVUdBbgHpRoj43OiIgAGIpiMzN4fWEN5NE/AhzwTKQqLh3h9QexhThWIcjF+oDRJ2zdixIiQDeAmARoAdwAQDVQNc2g9YD2TSAA5KOSt49aS5NqfHSIPjBg9MOGCSJc5MuTjktn2ssrImBNmCP5HGPkDRkq4UNRXIjpF+Nxof5HecAaNvmxs9A6QL8iIAQJOCTQkm3FwYIkqJJiS4khJKSSK
AuzLg+gAegpAQIEUQUAUwJ8B1EQgKKqOgtwI0q0RY4fREQAFSSBBVJWBtgADAWktuRLebAPEBoMiQC7gzAXuI4Be4LwM4C5ucSW4nlJiScxEG2w0Q3BKg8mHMBSQE0SmqkhbGpK7cAFehjC1IDcKxD4YG+IqJCWDTo7ESAbwEwAtAVuACBSqbQePKvJpAO8mfJy8TNKMqcdrT5Lhw5sMHuuI8rvHYSvyf8lfJEbv2GgJnPhAlnSVkeR5V2mMcyre
EuxzZjqE/oloTHA7UxNVHglm2eCKFM+ANAyoRODWTsoovlGAuIWSE+x6CKSE1gFYsRKVjUOFWKkS+bOINmjrBWbG8hknEWRrAq8SGEUVeIMKB1jZFX/EhgnkCyF0Tsgs2PD8kIjShGjUHMaNQjH3OXRtjX3KDlIgjQXKAdiFop2M11ZOZLyQcpHOUU2jCE4hNITyE5B3tZDorsDzA/kemgkV4EU0GtIAVZQFuiG2avAoEfIGUHwtfvL5jeiAYj6P
cCCTyYgwj3Ex7ZKtPJjalG0vhpI+JfiQElm4aDMEmhJ4SZEnRJsScQkOBS9keEr2FCVr5UJLgZvbwuO9oi6XwBoHlaNgtydTQme2MtKB3h2MFhBPAH2JMpSxzvhE6ghcsX+G8AKEJ76msGMJpBikfvp4KeSchrTBkQSEPDDAODIjLSaQlkLiyaGuQRH53u3UaF5PuuYhF4mxS1mg67JtyK3wcsMoMck762jntakOs/C8rzRFmItE4JeCQQlEJHxl
hAvo8h2aEWOdaIcxNotQAQAHgegC3Qjo3CAOijoxFm08mIN2AHgKNIiHTSfUu6J5MkgSaDEwPvYwQgt002EDDScVFEi+jMVNLxocI0ozmBi7rQlRYdwYor0hjTErhwc4EYRD2tBeU7WH5T+CEJytgRUzrlYhDfCJHc41qVr2kdsY2RzjdFg7cx68/5avGBSZIAmMbA4zCFMS4hAXyIMdE05NNTTPE6HSW9bgqhPBdjwnFMJTpPYlMWM+YxF2r0k4
aybRXYHmCfIVNB9hEI08NvzHRp0ZfSl4JAr5AygGFpXAvKsIPdEfRj0fCDPRwHn6kheHxoGm5Ai0WoAIADwPQBLoW0XhAbRW0Wwy3em2IkjDws0O/J8JymCmmPoyQHdDhQWGI+KaCdlhGl3RD0fTjPRhTNWQ66Z1jl5QeBur9ELpiblip0kr1ih6AC0+mqnnQGqZMq8sLUL8TBQw/Bi5GpSMeDYdekNhLrxuvPjAmDemRsTCrBoDv7Afq40YbzZK
JaC9MhbRvSFUJYpiGMg9YeUkYUBCWYDZTwQiJ2VjJEj0wTxiYJaEyivxY8ENI7PIM1eo3POfQSR8+ToHgilUnEO5cjEgkOj9ZhMxIySAkoJMIAQksJJRTIk6JNiT4kxJOGTqkm3XGSzCTMz1SqPU0BrAjU793mT7bWp2pCtk2s3dj1gAEF551AR0WIA7QjgAAAqMIAuSmAQ5LeAQ5CTOLRnwZkByY3gGADtB0gBTLcxcAGND4xpMhTIBAxwEemaJ
QgJ5HYRVaTWl1pLiWDqreB4WFF2BEUeymOBinnY6Xh6CteH6mREPKDcQpYL3zUIoRGKlSQ6LBaQTKoCONTHhAia94Bg73q75KpYiVooKQkkN+w5WLXt6qLcrMvSKT6NsHMCpUCETolIR4ilH7YhRQT0zGJ2EeSmEA/iYEnUpISWEkRJUSTEl9JZSZiqMR2yemZupf9L/RepVQdbHnJGfjoqPJDsT0HrAAIGzzqARosQA5hHAAABUsKUwAfJbwHej
JAUTNeSmABTL0BI0TgC7MHMb4GsBiAYIDzjN4p/TNEhMv8FMyumcTKkz9k2TKOSFMpTLEAZwVTPUyTgfQC0z9wHTL0yLMyTMMz8AYzM8ymmczOcyJMqzP0AbM+cygB7MlYCczIEx137NNIqI2/1941MInMMAjOzczhMxLLEyFM6TLeSAsrECCzWAeDDUyNM8LMkztM3TJYAYsiTLiyEsszN8yUstLIyzuzLIGyzHMmLIHCPkiNy+TznGN3sjvEth
KAf1DGFyR2Eupl/gkgFpk6Z+mW8mGZnySZlmZvYT0FqRs0mvGDBYKfT6QpvinpGWZGmTZmacdmQZmkARmc5lQA5mcZHSBCRsilmWqKVAnrCGKbAkXJpoA+nlUlEEJHi+2wFL4GBewesCmJ5iZYnWJtiY6D2JjidkDOJ9MaDKspGvszGUJO3tQl7e7gQd7PBzgLJDYwPgbPiNg6jJ6nYyNeIQTJKbsDNCjCcqbhku+ohkVHwaUeJxBBIe9nGSsQ7j
yQS9aa0FcjS4BmlPd27bYCl9YUgxysSbEuxIcSnEx0BcS3EjIA8TWYrBTxToRdb3ij7gxKN5jSU/mPLwZIdYisZSsPHRERfqAjCbxSCQpU5hEhFUH/EHfK8Vndyo+dy/CzPVWKi444UjBL5WIFYQwzGo3CR3cnlImSojJgAM2lTeQOgmZYngR9j0T3Gc2JVTfGJazBMvo0Lxj9po7i2mTDefi0dif3eLz11Y057mtSiEkhNuAyE/aMdTM00UFshD
rhZ72VptKk1gnwQD5sy6LrSxPAJXJanh+vmYBI9RvjH1EfKTqcUE7JWQlJkKQx3lOHm2nEQl7XoM0SWlzR8rMGm4J+CbcCEJ60ZGlNpooJ74gW0qBFA7w7bC8onRZ0RVypAptkkDowcIuiI5pY6fmkTpp2eDapeMnKWnIxb2cbiSAy4EUTbkzAJ8CfAk3jmnPgf2c4D+If9JeARYAHLDBPoyaRDlJAicJMC0EKNrpDKkDqXJzTpFDgWkNM30e/z3
UBJEUxWIEfl7ZIAItJgwFQXi2tA0YbERJEAVGtPeiGcKNKS8VolLyf4m0xXJ+420/Lwg88vYlQBTivck1K8B0hlD2NYcwHOrhMIUVFFzTSVHNw1pKS0C0g1+UGwXSsYs/gWyLhNdKN5dzTzFci2aFlFLh2FLQKuYO2aFLqN9Agx0kBlwcolPJmANPTG9sU27NxSb0mhLvSCFB9LL0SU3GTJSgLZUHRhbITYlfg93KZgljaYAxG4QFFLUAcRpoEDP
W+Xn9HLpT1qV5rpAAnipGQs2VqDzZ2kItnyO+MJCEj6HJE3ayQK2M7oIC56aR6Xpo4del3OKWYoYRQD6axBcJHsOfbi+avMSmd2ACjjl45BOUTnVZxBozHHhJCRymNZXKbr4DufKdMCJRpEJeBcw/lBwa0U8wBh4hwWEBtjw5/CXfZhO8qVEEiJU2c1Yh8HsE7AoQxsAyw6kFGZ3wax6QS4KYQESAxkdRTGdy5Gxy+uhEsOmEaJAy+qSQgDpJ4wJ
ByIQzlIgzmdWWwXh302322UfA/2GRyDDQPz4MMIUuEwywfAxPllkI1i3wzOHONzhTskhAFyTxgfJMwBCk4pNKTykypK8TcBHxJAhGIpjJKDuLHNIM95ozjIm8Fk9P14yazLH08N1gEOVsyxshzKcy0AEzNEzastplaywshTMCA9AHunPpn8zTMkzBAELDb5a6M0UvzMs8bNvzUAe/K6ZH8lYC/z2siTLfy2AD/PDpoC2rJso2+V1jWlCsqn2KzOe
kmYA2Sbkn5JhScUkiZGyWJmJJniRXkaShWRYlWJNiXYkOJ6aJVm/pdEQkko5HGTL41JdSQ0lNJLSW0kdJXST0mR66yUlmbJ3xhJmCu12bdDaCW1mK4Y+CmbbFKZWfrj6+srsjOYWY3wNYDEAwQKQBoAdREFl1MrsrplhAKwG8AwAdoFkBP5gQHoAd0R9G/kf5+gE/mCA3mLTyV06omfkdmUAJfkrAN+XfkP5xAEAWSc/+ScCAFemd/lsAv+cHTIF
B5L0ih8wyMAKOAK/Kyyb8pgDvzqsyAuIAkCyTLgKECkYlCzv8qTJQLJAjn0yMbIn5KyUPcvJSWz10n3OAzUE8oEgip4dSHbsDcXQPDzdszJPxtsAfoGMlTyebzYBWgXBhGAvcGYADxHAAPBeBnALNwuDOYq7JTz8UtPOR0YXHmKzye3clIFgq8dlGmBZIE8zpS9aDOAyQrQAvllArQYHJBD7vMqOd8IciRKhzuUllxpoawPFjJioOR9iI1p0w0Gx
n+XpnAFuILTxbM7mcCnP6G8as5bxIwfkJjB4BRwDn5uQNAXX5TAHAVaZiBa/nv5KBV/kIAP+W2ZYFbBTgXP52rLTxi8iKUAbLmcgdrnWRwudXZaKWQbekOWihph7V6iFK+lAMOuHoFY2eWex4AgYyRMlTJMyXMkLJSySslrJTKfVk1ZlNkzEgZfSqzExREGQi43hktpFhU5sRF+zmmU0KkAZudGQGqaBoUiE5R5gidLEFRssYSLyxBHD9iEQgiA9
E+dL0ycLJDWfXRh7TYuAJzFUwfKXkQTMnLvcNU1axMTJo5iNj8d87CD3z8HHjUZykVc1Ny8fowDz+iX+DLyBj6HTtPN0wY4j3pJe0ign7SekMWGwgAiosDshgiuDQMJXxSIpeRZIGIoxjlmN3P6lOCzk0UDeQTyP684iYxF4hMo9u1EEqYlcIm8mBcol3RcGQgADw4Aa3HPSXoy9IwUm3CERsdb0pPPvTuYuF2Zts857KlAXne+kEjLfYiAVtKrM
ANgSmDu6eCJkP2l3IAHJHDD86tAyJXJu4kKn55+sbomGxf5MdlfGHOTH5FOrqTPDyYj0pbHbWPqUl4vZAaVjnrAIaZ9nfZDab9ldg5OZDBHumkB1Yc2wyOYz05aSonAF8lkOnAyQmqJ1BFpaORfyvZ6QotFFEq6GgyEAXuHACm4I+Y2ktF/iBHD0wKcNpBkwL6R8bg5vCgaqlgY0Y4UlgLiPNZTpxTNzn3886Xl4peBXvzlFeAMTSTPWZXv0wgxj
IURw8yVCDthpoOsFryvC+vIfFG8mW10YxgCIUFTuIeDKxzkQisVmKvjQ/FKwB4JC0JyV9ZVLUpcM8aOalinW2K9Nd8sLnpzjUikO4zj8ixT4yz8l23WAHceAuUAmAcAqaZvMykuUBqSymLlZ5I9AAZKmS2kpqzJM9koa0yfDSJ3iis7SJKyxzf/XQCDIk+IpKqSmkuqz6SqUuZK5eT5LOdVzUcMmKu0vXg3V7hacLD0m7B4REQQ09G3PMNyHbPlV
BBTTi08MDvDJSPcODDqwAQoVhapyRaemOcmuajHiF5HjenTh9kdmn3O5YpFi8Q0ZmuJKSX1PwIkx+gVYYaSMxXMULFSxQ7ksp5hc7kOBVhTC7u5NCS1l0JbWV1D72lYphBHYoGshnXIVoAVgXwV2qWDBOpghTpO+42QqmFRBGdNmZ6YwD4LX2kqb9a4WbkdRkgk5vohhJ0+2ZyLWpXUShHkaJeednsZySdhFaF4yduSTJggHoXzJiyfMVGFreavn
8iX4AaVjQF3AvR9ABpS3QvcZoi9xyiWomeZCAeIABARPHQqvTk8s4tTyLi9PKuLdfOT2YSBYz62ZYo6fiBWhY6b7OQSaaKRj3ctQTFhON3C1Cwe9jPbwvAzfCyDOkTrQOOBIhb7HYnxFEM1WmIg8LZZEhhU4Y8DRCjBXMH1AB8/RNSKb3dIqC9uVB9wmiwvanJxKCivEutsD8iPMRVloih3KKAPUxSA8603EzqKQYsh0g920posNzXrPtIQ8KqbM
t56+QYSSZJRVTRGgsmSSFTRMopmqH5XGjmrH5NIRABW4GBaZkVu8BXZnulygJ6WDOvpZ6X35tmU/mBllWo05EF1Pl5naR28ZQXQpvrGGVelIZXpmJlUwVG7Dq5kfFkxKiWYdq2RshXszoQD6T/TFYNesiXh6C5LlmYlxuL8ClKxoHbgHo+gKUpLoLuHUQu4RRBURPMhAAqAAgUnucEAZpCUBnkJ/Za7nWFTWezGQZnMVKB3QxMGHT8Q0kJHQb4GG
o0gHEQDOzhI1YoGLLTo0soyQ/8UYra8CPSu09zuvb3KUD2FGcOrAtYadI6jtg8dlkgj0yQq+05vW4GxAXgI0sTzLgtU3E8OYz0suL6E88NcCmElKODKtYw2EVodIU4n1oGFWxDPF8NR3P+DEyzhQ8LRE0DPET0yp8R/DcJR4ASBeEz1LpRFEzJXGghWKxglTiCWsqJzUSqCRHzCnMfKJC8ijsrdgOM5HxNSLFaoMdtT8hoLdZLyV2k5LvMt7mdAs
PqCzGFcJfCGqe6ZHmO+99jyWx5+IvHmUuieREhcQdepoKw5/VrhbIEgFlzJUICkvlBIhRWIuL6gmRZy6L6wXnkVzWhQYKLvuxTtdnvY0Rcn4VF1Qb6lpeGurNE1FUxcbivai3rcDYgLwBWUk5UadtF2++HpoHKxG1g2l7FSuKkAfsrEMbl3ICMZOnvREHsibUOP0bQ5Lp8Hmrw4mGEX/z4mbDqDHlwx5Sol16D3jp6Lw2cAkXlU50LeWWQIJa7rU
gLEHhAesoMWyAhMkXiZKBnLiqiYeKhTL4rg6QStyzJMkSuYAxK6IF5KXbdAoFLMCoUuwLSssUulF8C+s24qZS2Stdp+K+0CEqUs5StUqJKqBKgM5slUr+SEEr3P15X2LUqJi4iCiAIsAIvyxPB7ypgTjyAQZohmAYAYx0uyrg67NwVdCv0r/KTCp9KeyX0qUBeRcWUsC1BMnbaEktm9F6hKsdPbmDuhaYBRT+LUygErQ0l3Cz2xdDUWk0LLp9Wxi
qF6V179JUJcm74kU4bR5yYM0H/RE443nJAfpMvlBXKAMFXBX4lT5rVn2BphaBl3B4GQ8Ecx8UVOWPAGjEkDIIvfHMCTQAjMcgzwjYNunwYvbGNnmevJUEVOqCeRLaPA+yl4WMsnVpVHKgzLk7QmMiJXyTPlVqYdlYhBiWxm4mIyesA1ldZQ2VNlLZW2UdlqgN2W9lFeW3mdM4meaWb5lpaCRKFu+ej7VBNsawkPJLpQ7ZA0d3MGXBZT+RxzOguQF
JxJgfDjIqUS7DKGiqKqHxor0kqpKYFbgTQAaU57C9GxBnACgEwBbgBBQaVCAR0FPJvgGAGIBcGOjMWyakjfL8SiM/IgQAN2bEC9xiGZQEvJmiLBhjRS0UgFqIVwF3DgBtCjJPmqGMjfImTt8hWxPNkMoosqdCStHx4ySS9irpCiC1AFqJZVVzJIl3qz6uuSMC1njuThS1ANFL9IgyolKJAX6q+rBwqQNYLX5WBN+Tl08cJnKnI7kTKhgUoqlJJS4
iDwgTAE/nOieQOpmZsnpU/nEAz4MwD7kd3OnF6Z2ALCA1V9oPVW9Vgzt1WO0FVXUx2Z1Vf7R1VN+Y1UJizVdYDRADVXpkdV2AF1U9VT+f1WEAg1bNUrVgKavFBGJBUzzeZmAZEaeutZuVXelVVXdy7VLoHNV6ZTVcwAtVy1b1W6Za1RtWO0b1dtV3Vw1VFkuS7PqZFxZYhUJW65vXtCVts4lWoHHMqUkYyExfaCeDyVGkgTkAgdRMkT6OqlRnqWO
LRzwNzQfyvyJuq3qoQB+qwauGrRq8asmrpq2ao9Lji2wIclvy2mtPDjC64r18c8jwLDheIBlKLBT4dVH1KCMBTHpUpYIGFPEQgoqoltXfDMqbyA1OlQmByzHiCwgIIlIIRyFQJ2AbAdiJ4GYQmZWfTLT8sJIMarcnZqotjWqtVPBNNU1sqpy3ac21Lg1a/vP3ymKkov7KY0gFTjSsgTaMCrgq0KoTyHU58F5zmo4XNGob4WWpmgvaMXN9TnA6HVr
FhcOVaVnKReG6VE5fpXsJ7UKkCHFckDO5U0AjKHTBBjHn/Z8YWesRhbl0eTuUyxcefyUuV33sNg+eIMD1ykqlUWkFToiOMzkMuWiVD5ZFheVHwsZYVV+Vl5E+RpK3AmgKUrT2B6NiDOAFAJgC3AQCqUo7V25N8AwAxAGgzGluZelUd5lSV3nG4CAEuzYgLuDgzKA+5HUTIMwaDmikAFRCuB24cAMYWlJaVQxFbJmVfiGqolytgQ2lWrHaUaKthiJ
SjdSNMyLWhFXIocWcq1PyJ+gZcEvJd0S8hjQgQdoG5yfarsGcA8wAjhlj9UstOjNRcm6OLSJgLiGPB1QQRIlUnlatNejNc5egbSRyqOtbTxy6csS89cgkwNye0o3LesHdTzlaL4IGWvqRTwGUEgiUE1WD/CpoMVHVraZPkgOFXck4SXSOvEZMQSeClYLuq5iucgESnYU7wNLbyrOuNKz1JOpTq06jOqPr3y6Ks/LVvCF0uCjC5wP/LGE59N29y8I
FPJqmRIC0FUAKgAVEfKpfrqisdfHWJ1sYW3KHVsdsdWv6m8eEa+ZVBdhIp1CdWmUc+MbsOE5lldqbr5ltFIrYSVm2MWAw5/5UsA8q5oEjXG4itcrUIAqterWa12tbrX61htZjUU22NUSWaVJJeeGuBW9kTUeBheDrC8QlekWAXwMqLCXlAS5dnARIHJCDDS03EByVM1XJduUOVu5bToUuDOjDCIQMtKVBIQ3cFkjwhi3ABGzQPKOXrSpK9cobv49
BDMYtYAnR5tsKUvIGRMWENXUTb7NwsQrkyzwuKqwMhvMlrgS6RKug2RLqANJO83WJkxVslDLGB8NL0jTpkSg2qHzzDK2Paq6k5avWBCavqoGqhqkasvIxqiaqmqZquarXzUky6q3zsS62u+LGK5P2Yqqgl2JPz6nDisEzeeGStizeefEBWBemBTKkqM0QYBHoKgGADfRqSqAFqzsAaoEIL0wELBSyHqUgFXllwN6MOju1BTIIB8AGRuDEps1oLiV
WCH4xmQVQdmvl97u+XPRhRVF67JKUO46Yo3ECHVxMpyU9lq61RWWm1F1IJ8Co16NcTkRppOdGlcQi2SYjsldSEb4YVPab24CCeacRWRoYxZCogV/qbA0QVsesuD7kq6PuTBoQIGkBNFqDVKB5g2HGLFkQuGAzCG5YOXg0TAXEMeBMihlelSVWo6YQ266T0ePmc5FxeOmQepFfcWLpcHgMki5RiXiaDCEuWJBn16cKN6m5URVao26JkA/VRFSuewZ
3MjgH4beswRtHQRGyTLEaTgCRsIApGgxrkaf8hRsrAlGhABUaFMtRo0atG4+mEr4QJxuYAjG92M0qNpXeKQDgauI1wKPXCrJIlTG8xtMahG4gGsaJM2xunyF2BxukaSAWRvkbFGx0GUbcQVRo7p1GggE0aPGvxqsqAm7JsMazQiYMVLoEhytkCxw3GMcjls3gHKllg4BSAdGRYqJvK0iBJHxr1gVavWrNq7at2r9qw6uXBjq06o6J9wn8oir9Cm7
8VKMaxoV10jssGFlOKTmDIQADmWWFGxMG3VUNNDXQ0MNQ9eC6ElbKbjXj1KVmSXNZcUTPVLG/IAhDIa+2BFDbwz4QTBIsHqvhggaiIQ7771LNYfVs1e5RzUHlEtlbCaCVCORDJBGeUSBcq2Uu/jrGt4SqCylOQd/WvGSpSmal5hkJFUSAHdSrVq1GtVrX7kOtY6B61BtUbUr5Jtb7VmlFZOmbAN6oIel3ZFTpNGPZ4dQfqR1KmWJG42bPBNXaZT+
PvqvzR+rir4XF+qDLy8cHDjhboGHASQQpMRgFqfffLEwhcpSetGUREsHP+KIGwEqgaLlJ4F4j/KE0BgE90pBtFUEIcpEUh3YQ2jSC2gbY0lTcXfWu+VictEuNrGy0aObKZRbIrbLLasFGYafvVhq6lbbdJkdr0VBOo2i+7T4CCqQqsKurSc6qUH8QzxBmnEUkIVnTpMy678wjrG6pNGVzUVIcrV0W6morbqsvYlVBj6i6D1t0+6+cthi+0h5vWyn
VZkcA+ICsAtMQBdgB1ANBemDeYb1ZdRMA/isuD3Rm0Q2qNV8IBFnMA/1e4wGuEgMs0LNdmcs2rNHVRQAbNWzY6A7NuIHs0t0BzQQBHNnBXvQrVumQQD4AFzVc2EFGdepFHVTridUxlFBW4wF1vrHc3XVemY83xE6zbgWbNlYNs2cFnzU/n7NpAIc3HNALW9XAtoLa5m54gNUill10SmXZXpPtROGPodjDY1+c/9lJX2+HzgOyJIzjRIBW1NtXbUO
mwJ39yA4c1k+b1Qb5vAs9yxdPdynKtepcqNS+mGBSJmbxw2hfK8hmPqbzfInGByidjxGAKALdEdBwqm+rsC766Kofrt7B7NML9fChUIs4gvimERZmOwtwkroYJFahSoEWDVsH7UBuQq68m5tKrsLKaFkQcKqaDwrqqv8RI1Z9PiJVAJUoFrUUKKuqVaqCgrVJNsNrdsuYb8CRFt6l2G2oKeriSitVJKeGiQE+A3QQpvMawgKAvoKYCuSoEqXQRSt
1TtS7Vu1y4B7Ve1Agv+k3BgGepXAZPjeqb4N/jeOV2F+puDiJw05chq+SSFBJjn1HsOaA60JFvZWP2+GcEXKpTwO5XMQhnrtFA+0SkazlISkEkgh6E+u/gLGtSDJB7ZFTfKUhVv9Xam9RBRfy5DRpQQ8gRIURXnlo+D2ZUXPZZDRjlnplDfA2INMABjVMNiFbBj+IM8NTTsKRqqdC4NDOU0WI5RDRI0c5xaZG2geXOTI0kVqJhRWC5FFUo2Ieq6c
gKPG+ArYDECitoUzmiR0BjQiC5Ar/yIsqIC6z9MyTMkBQgSQAjQp8ZzOCaWS05MLbi26UtEzvMstsoLm2yTKraLK2tpoLG2ugrayW2tto7af8lAu7aos7rJSyB25gCHaDAEdryy+SgrK0rAarAt/0RSunzwKIarJKnaS3Eyp/yn8hdokyl2hSp6zV2z/I/bW29tsyzO23EGcaJMzrOizD2wduHa6WUdtqbvJSyKVKZAuA2ab/k1po3q/iNCFcig/
h7i51uiBCmthKua172c3L1TsoNrZFTqg9rcTBEeCzGCXmNaMcJV651dY+hUZcJYuplgYpOXpThKJRsDoQ3LegDjARRLx6JAFAEuiOgHje25iCdWZYVytOvuSWBNrWbPVl4qQExQiI0zIHkiY10MEjtQ5UI9ApOz3iTLJNhrZNnpNDOjFg7EDVPtifBcITEWnSCkmzLFYjeoiVf1HrT/XS1KpYYkXZgzWcg6whlTvk4OgFfJnkhttvbEn565G6CfN
aDQ1hfK+tzEKe7SU3WAp8mfLnyF8uABKTrcMpIqTDW1e1vrzi5ZqcDzWhhMezbixKr4YZIHd3Z0dIHSHgtkbXKPzrLICoz+hohMWqe9Kou5sw1c+RxFWFlymsHU83m34z8F9UxSC2VXm7HLaBClMYEFh4mLBuBa42wxLBbV88nJjqWyzEph9Jk0oNpyM237iza+ys1NVyLUo4UTqCE9nLtTs6p1OOiGZMaHmA+IXKTCDvUsOvc8/BToHvCvPWmnr
9zSwXEA2BagW6Z01bVX3VgLegWYF/RLwUEddRI6DBosdUAUCF7VfuC4AwaGxhhAb1ZIChAkgP6j3Eb1T+B2giaM+DMgboPh2MdUQCx0sATANuR70wCd8nqinwFh1MAOHbgVIFlHTdWO0v1Q9W6ZZHdwUUdABU/nUdtHZAX0dIBaJ3MdrHYC0cdzAFx0GAPHU/l8dUAAJ1iAM4MJ2qdq1Ux3idbHVJ2RZS8Xa4USHmVC2aRMLbnXJhukamG+s8naQ
rI6pltpaEvdFvjT8iKPJjy48z4C9qjWTzqzTAkUiFKx5Ibmu06FSCls/REgbdKtyGaS0FYTIu6ls+jTO8wiqL0vQGOZawPdlrZaoPHupKAXrQZm5aB6mlRappO0mFk7cym+D8gvYMiD4NEcmKklbxisLFVKUatpqSJXIvKtJgXVcmKPVfgd8nVbe7CkqaS6Y1pPaTOk7pN6T+kwZPj0aawZRXsqbY1oY7TWlZuY6n61jrMLc87igSBU4U8AUQgSL
DYdyLc/kqdenXplEdQ1Zp3adf+a526ZBnXR24FDHW51id5nex2cd3Hcoy8dbAPx1YgTnYICkAIndl1mdEnaQBedMnQikmRVLaIXl1Q7aJmPFENRckv1ENfXZ6eD3mAiyVzbmoUkpGhdhFV5NeXXkN5cAHkkFJRSSUnit1gVAptuTud42StDWaOUKtthbyk3h5oAhDOYaoA/WTQV7ahZk1aEHkbIQgVYk2OmB9a+1ku77S1Z2QMFDGZIYP1riz++n
F1sgfkS8GuQsKP+ju8vWq5vAbUKyBvQrocm/Xxhs4J5SNAc+U8z+8ZJGZGU7ZoiszkJ77YqRPBDkRsEOYhdUHzrK6NYaPBb1UyFspysSuiq8RgcO2rYaHahzvjrna1nPyIbUjnK5y8W9Lr5yTzTGFygcKqEtDry65KlezpgdDPPhxqKlvDSlc6rujTSHYctq7m03FXbqdcjtJa60Os6lg8KTE3PK86IcHomxcyuYGh7iqW3LzARu1lGecfTCbuXr
WRBEHIH6kfZsyySmMCCwU4XKUlSnrbamuJiDpI0AN35cUX7JN2X1jgNBQhM1gqYFRQ0LR2CR9lhpP2cw3NpoQtD3oUOsNjG7FvDf9xdAnaL54U0ObWI2zphaZI2Ft6OZMUo96wDbn45hOcg1+0Sbf9mBIZEDlgKQi9X91bYLYHg3DCskLCFlN1oIBrk9pbcQ2SN5xQiYS9c6XI3IqlbYo3JZTxaLl1tuwAMyVeFKF9aPdf3pyzkw/kO92y5n3TWB
pWpGtxj16k8rNYhEk8ruEO4WGAc9fKg1vW6iOiQHoBIdbEDgAjAfAHGBaO87vpqTW+ZrNaZPACo2agKrZt4ouIXCtSq5gMKEObDfSPoXhQOULpQh4mT1sd8Uy8Wok6Qevwv/lK4dDBw6/rFINJhV3eRNRQSSTRL5siYL8Xw0Y23IJwyE2vBuhaLa/jl4piILUG5rH2fEp7KJCo/PjIyoTzzKlduV2P4ydk+VyroI5UOS9lY5YZ2W1C6G1wrpPWPO
H2pjQO1UkFjZIWYpdGUbnYERYISjKFCNbeSVlW6sbhT5FMTPnNJrSe0mdJAwN0m9JfZat1mFI9St2LdZ4X40E1bgUe2UlheH1ihN+Hv9gngG1lOEYYomJAgy0ZyCgk+FnJVd0vteGW+3GthGX5wmQWoJaD/E3kiYzoanglNASQvENgSWq05RGZbcfuahjhQYHUD0Qd1TeQ0KBH5f1HhVkPVdmWlt0EhBw9lhmfLAVtPeBX09EgPUXo9ibX9kxpKM
3bk05T6ucA/q76rdZLZQugn6p+mORn6htOfq1dF+n22X6Pq6t3X78spOwBrO2IGt0q72tMPKyMw0uW37J+2uWn6k5Wfvn7j+w/zdkV+8/uhrpsocPsrlSppum6FAq4Qxh5utdwUQ5cryP6aWY53tqV6AR0EIBbcJNKmBdgk7tz06a+gzGUrupjuD7n6hKtfqkqllCg0TQERn1pH2fmrdgVE07AEh9UrYOETQQ71uuage25uz7MymDFkQsISCLgtc
hqD5QnCXvZZt+xcWBtp8kAkUkC4vUjmIkJDVCZ09Qadjm45TPfbnz9qxXZCPQ9Lp+JMwkwEmn89DOQaD2QRvib2vOaqIRXHWcKpT2851xWRUYmQuZRUrpapQyRvF7pM4AYcpfY/AYsWGH1nxwZMMeX19iyo31m9AlVrmg10CSO0ddHQAJYTt+5nrCIYRyY71a4vwJu0u90ehpL0AIOtiBwARgPgA0RgfWH2HhXjbu2ytTgRH2T1PKVBlM2RYEXBS
pFII9bipClBtUv62vsQjQW22kb6k2nIsmSZYkiEDyE/FXTmTD8okqEjNk16ux9dkwbIGdks/6qvab+m9t2k9KsGtlZDKt1j0G7Kzn2sj4a9gvmDrnKuwt7XK6PQ3q1HAsFU7MeuAYnRfgZcEGbk9N6OtxT0doE0BfesF29KDC30qD7H09ZuIHNm1YjrBqFU7jR6ZIIDUOb4gmWnDNzoEWEmBcBy5qM9M+hd0k6hFeSHzBUsElts9BB35s4ts4Pev
V3CY9AqxmrUkCrISeX+zE9qEFOG32zNf4Ux5qTcfVfe79NnCt9ShIakjZuFogOA2kwDInccTfbyBN2I+tZXt99ytkXMZXfdH5+tZsUeDOkJEKX0ewJXPdnjN++bUFRkFUD57iYZ4CtzTNGHZrJl0nsm7LWyfshnZzaudJa4l0zrDnYVy4cgnXOAxdUnVpy/g4EMLywQ8HKhD4Q5EMe20Q6nVxDadRGUQt/nVnXQtOdWQV51WAfGWGuSQ0EO+yIQ7
EGQWyiqkHjEmQZhaW++QerzZamzvV1VBnNvUG6g0SLv10AcSLz8k5GOw36JI4YezpRhy/vgCwmwUr3i7+kGvvaYmp/rdYhht2RGHmCqYJsGRw0AZlb6M9Uu5MoSm3pu0e2BmA0h4mYPM0BfgSg0QG8bQgCEA6IW4EwBbcF4H/jlwW3EIBfgKaooAGlDUE+dZmo4tO6Ti9mID7Gau7LPC1mm4vu6PA2EKPsVy3ByxFfurKt4BhESRhPNg6wSKYHkL
1phDmrpkMn+5sjEP1u8Q4ZbTBGZeAlZltLTrlYD4NaJXmVzLagBDFKMhm6yVdMRQOXmEgPQCOghAObjVpUwDsFMDbSovZqVrAxpV7tHA/K2R9U9Uq28DQ/OrAA+fDFrQlcS5a7AKJEFgJAcNmwUHzYZZnjd2KphfQKUgYL/VhiJIhKp/DIG/7T6qDWrEA4PhNJgwLqS1PIpB18utTf62MWYsaRAb15QU4MnJYdTooOlRVdxoNBszRAChZgzhiO+d
PIYiDfW64wwqyuriDeMWUFkxSDnYRr02JavDTsIx2keTHb66hgzuHzVU/HtNqsi5oY66J82Vu684Uh4DgAOAAEDgAXgIFzGSGGpZjkGGYH6hQb7qioIm9f3RzsHKyiyovVz/o0ctA98VDuua6O61rv6YoY5XvaLTcwkf77yoZk0Qa4Ickd3VKR/YUDQl6n3VN7V61dOPLXKvkCw6uLPdQUhfKgPD8H0AXkf5HBR4UawHqDI1v97LuwPuu7CBu7qt
yAYUN9eIKegGnVEKeUP+ZvrFiPtD6ZbMGZlINakZXS2A6JVN1ddQWBKQCRbJXLgi7RAADA90abi7oKQJoBbty3WwNB9eNW7k7D3A5OUcMdepXoYwJ4MeAfqmrSwbi0gMJ9CPQOgwa359t3U8Oc1vChdHYQFNaINuCXadSIK2jrTYMFYlYoCO5OkfhYOsZstXiG7Jtg6RDTAdSKP2QNkzVK52xMrq6XiRBfsHIR2CQ76zej5sr6MHVkLUUOBdJQ4n
agLEkj16Vy34I0wsNNIZGhua/DX5Fg21PpBz9lVgcB6OUjgfdMpaiz1RZduROARCFO2Hp0MhWIiAmhAWrHqTVyKw2pJz8QjEvTMLOuH3kHJRxHxUHeyo/N6HpLWkK0HwjTgCZBsAf/NZLDLDgCHHUC+iX7MFncJrWko0YgAmyTBhNIeGRgJ4ZeG3hj4a+GYAH4b+H/QcwZuBBxjxrb4FSmbMQ6Zg+bL2Hzqg4ZQN5Y/gpgxohe2F+L90yBi+GvRi
ZEj51RObyRPo+nR+j5I6XXNdNLQsGj5VdTgOgOCNkN6tou4k1iapslQQaTDXdusCEAQgPRC3AmAObgvAn8cuDm4hAL8D61FAKUoagXzs0T7hQowSUh9go8wMsxpJaKN6+x7QsS6thwyrQPehJPKOagQjEeZG+ArDcPEGdw5EEKDexiEWWg0KBcZD81JstkueprNYxlmQHTpDmgpfRaMGx5g3RzetJ2b621N5td7W0jvXux4PAcABwAAgcAC8DAug
AHGAhAS8i9wAQC9FwZcAaPPqJ9ACoH6BaiHEBmBnAN8oBHrAsEa9Kvy0EaBH23WKpZrAysPqSr/KfClyxffSAYljP0jIbg0uuMfjE6Kowoc4H8x0YCQhvrQRIUHTR6Esel1sjQyZUGozqIOZd0mUCpSGR+sckHSc4zoyLCewkI6qeJicM6r8iGogqBnh74FtxD0xjLFHWxiUa+7Sx2ZOKK8EuUYHLJyulsVGJe5UeqL6ulFvVHZehovZbtRxXt1H
yX7UDNH7lCNvUSQC6MIjWXBG3o5+Xq9EpqRFeI1fR//fI3kVSvemPUVctao3gDQzPRAYwXEOuOqxXlctBOwrnruNfY6uZSroD4JZgO3jSgW2wPphnmKT1UslV7jsjD40+Mvjb48sNp6tgdK1DlQo743bDXAwOMx9CxF/BWmMFB2j/2aUdjLdWyUDyj6gD/bNCi1WGX4U4ZKTYEXs1moxk2OC5UD4IpwMIWxXfD4+monMQd0K63HjZg0Xm8un5W+5
jc/UfK8+uyid6sEMhFF4iGJxGON7bRiYsvGjygXx9zCYjAybsPvY8zhxfKydluH9g0SfEnJJ0IebcLun0sY6iUzPPiq2OkgaKsNMSPupdSwdCi9TkR11XSj9BT7zsgtYoibTLgevMegaTmDDBFY2UP7KpHaJ6RSqHOoEjHpprevTtjbOJhoY308MpvuJ6zbNsfknrervvtquMnobYruGukOU186UOWLZFQ0OXbkdtE5LiVBp4ae9ZRp8aeuSZxuY
I+X401g/j5RXvkFVB+ciPOl6Ha6WT0TINgCgFNzf4acATkwQVkSPZv0GeZbcoGjEADBbC2VpZY0OyVj1YykC1j9Y42PNjInv6AItNwO5OcFghZS0iFJdimNopiwcr0ZjksUMPIEcZCWBJ0c7ZoANj7I+MBCA+5C7gAgB6Ggy4AuOVUT6A1QAMAVEOIDMDOA8FW2MStPYwOUsTSqmxP7t9wVH16VQTewnMQ77A6ipUU+osaMtO0JjDxNA+sXyXdL3
Yib1geccXH7+srPfHPx78d/H/xx0peAgJkCbAmIJvccfaIAaaZGmxp5OQmnAB2GumC2Ci8bN7UO7gst7NO63vPLCMN6AwpCK58Y2BfgamoI6aY/IgBAHgfQGUARgZVUwYWPXdEGNHQR0EaVJAF4EwGr6+ZqDHcBglJir7sljsta2a1KOxFnYF5yeEeWMB1SnDSBPpOgMYERhSmLmlgYB6ChyHNImCpvWnzyjR11XmBSR5HPNGGaS0aqG/UI/FgiO
vcPqjjw85VKTowEhB2QScD9YgRlUXxEHKYPvzWNRLMkKn+CCTWLVjWwVZ31njoPWF7g9/LteO3TMNiJkaS5RNUCVj3wObjvpGVZ+PRe345eAgwf4wj0AT0DUW23FIE+Tjf9M6Z9F/98vdda3FQA9W0leKjWAP0VjBNsVbTvCdCMYTaKO5VaMRykixoD7uhgM0jG5nSNSSj6FmNORraOdBYsKENcZFTvwMOxFjACm9MfTX0/yNkJvU11MjlfY5xOe
JnBobLBJiFuXSzO5sYMhzExwbXS4UnAFwZd0PpRjyRR4LyuriQtsYKrbx6UfJDlJpnI0mjOMXpKZGWnSdNTGizupNmjJ9roIzOusr0d0FoQ0eJG2ZmicMhOZ5z2a8HJ9r0PLV1R0Y1LboDGvQgHSTDp+mrhlfNWLvnE0vWBZZ+WZmBFZgMfGM6OsKYiGIpjPIeDop6EdxmzoA4leh7ELEUdak4P9P0FasEKGHccpkqvxHQevmEUVd8byAH6jhojS
5uqlWKqC7SLxCGqKtJq3cQiUUnl/erOdY2blSTXIOs18k2k2KTDOqnB2Qt4ioEXuVxsk4mjSuN23wYsBhdNh+4HVU3F5YI6qWANpQf9OEEhoxUFWx0voVVodno6VXoAMmtnRuyebLKFuyFcutqyd2Eu7OezrrN7O+zgKQ64Bd68esD+TgU8F06REAGVMVTVUzVN1TLwA1NNTLU21NxTFQxICBzXsz7Mhyfsw10xZMwWAlDh6U5b3ADtlnbN11Z0H
EG50CxnSRsJk2KxCBoxkdwamh82tanLatWZER2FLqYp6ep4S2lcuG2V37GIAQAGwQCum8MfbAZ0nnp57OgWnnXWcdHlVp5EHWn0A/GxBmwZiGaMAoZmGbhmGlBGaRmNnWJrdY55measG4anYeQ6wBoyadH1O1wZu0sKRWibm+m7wZt4AZvBKYF6YrXtPIt0XAADxMAZYG+ApgQgHoBSAZcA4AA8H3pjmXzMIbgmQxmCd/LMZ27uxm7ioqwUUuIEW
BTjtWwY43dNQ3Vbn5uAIA8D6AygIkCiqSDFx6roHRo6COgZSpIAvASwyYUgZnYx26j1mw2Blsxm3TwMG+cIk7CvOZqcqAIUmrYHBcQ4g0zCSDKLPLO59is3JPCJKs2tMM6q46hOUmG4zjNGjgZtuPNeVUB55FNNdeyUAkFqe60d9Zs7kXnj+RdrmOp0HWqVeJfQx8zseOAGgyrozSnjnvj/TS7rI+34wOk5TeVWG1AVVRWDNuMNPdCoZeUM5cWyN
C8rQOaSEObouNEdppEhTJ2Lm8RqEJz6LJnq1+trJ5HIQh6Jm5UYn7ldWznQY6BsAP0WwZIpx619ZkeFmCe0Wahb2Ry2c5GHRlnjhSHcaQsvJHQS9VmrpJzzlyK2phmD4MRGToeRbTUiotlZ9ZtXO6EperXJl7WWtSbNmFei2fHz4PHltaLKFn62om6TMSDoWGVTQ0xY3Zg8oWCpZr2e5Nemx+fD1cXeSHnILh0U1+BaBfybEWJFqRYOB/pqCfRnU
5bTcWoLsHgANIzgMbW3AxaMxANnz7g8MWXzf1haa3zbnvfOteJ2NslmNFva12ALDLV4JG5LkZh549slXN3ol6hVWXrAIC2AszAEC4xNEGE8zu0bD7AzPM2FhNXsMLzH0DsSnQlkJAhgNwk8BxqQdyEfZWkJqotPPtB8w8N8lqs4jR8wAiozA+QHg/6aaTL4nrO8AkyCE2DDxswF4KleiaCPGTuIRCPmxsC6IhricI96nWTqHT4OulgANggJdM4Ye
ZjXyQWMZiEeQnLw61pWh/wrXrGghvJhf5qTwPOeeRbYU5h/qSommfyHxOkifymLlKRjjhA8vKpyG0PN5rrm0nORC0lapzhbrHBZyP2kHO5lsdVnFFxII7GlJ7oaHmqQl6v6mx55TVDlmA2acun1h1AGx5MeVTVztMeAZ2GXRlwujmmrpyZemXZlxeZ6Dkw/s1XnO7Q+Lp6A8X+f/nAF4BdAXwFyBegWTp0+fWAFli6fGnVlmZar9Nh2bJAGb55ya
2gzmEsRL6dGHM+TEc9NLRzyILHPrOEAG3MdzXcwMA9z8QH3PVAA80PMjzWcySPrA0S5EsgJqU3MHlzrCyaXtdolVJC4CddQhQVQfw7JUm8zc6uF1FXuHSjbkS6LgBe4mAMsDfAUwIQD0ApAMuAcAXuIwNjzuNZIuM1LucKPrd/YwLPKt/ClxA39hwtDHHmwk/5xTjFNCNm6QjNQuPAhR84oPu+m099bYzsickb8RxKtdF2LEdPi6mGgPaYPAjjgS
4KIYtps2JXIod1pQj8XyqxScEtYt7KmBDdkxA4AAEAPYhAF3GIBsQbEHGBbgfoHAnw0VoEgmxBaCYQnDwxZqirQxggeiGoRyMZhGPfWyBkh0YGuDmBcOnCYSI0RqlNZFBvXIfyXcR9gb9aCR5mftmPjUNtwkGvC0Zc8mFo93uE1iBIaSLTYlItx6jO+QNZH0HFqfHzJZlyboymBCoG+AEZz4ExtDwWRZ1SFF0M0DhcwFRcWiiHKno6E1J9RYZbJe
D099/9Q9PDJqVcRMvTbvWMn7kjoLupG1P09AtmTdg0kFJ0/i3JnS+E/egt4LpDUBMYLYHj/0wzUDZdZQTgA1W1ZTcEy8VIwiE7RUYzFy79ZHRGjXjO3LxykTPiOhE6TPPTWwuy2wJ9dq61numMLJUUCLM/m5W4AK0CsHATcx1MLdKw0t1czr5jIvaVs8/ItbdKy8XhCIukEsgWkmrUn1aL9yO8PGoaoxNkajJ84jQ2mbqtQhHmh3RVG31ti/hzbF
yrtqKWWnLwMXDJoxaV7TJ0CEQ87ZpkxJHHZsSGdmmvH7HnSlmfcpXqPZqYquEt6jxc8qMlm+BmSD6/pq7FAlgxwVWlVlVZCnTihBfCn8ByKeTmYhmKbiHkWK1nBhNYMuB2JSSQ5oHQaaUgnPBTsKmeYGkK2mcKX6Z4pboZsygqvLM1DJ4UN5a5yqZz41SYWAFn6ylpY7nzO2io1WAhWmU6nuy7qd6XWK4frJKBMiQDmk3ZF2XTkJh/OjmWxhidan
mOgXz6TrywUF99to14s2DUIy4LIEQMy4M8R7o0fn2TrsxAAyabsqwHBz+c0GOoAKPEjxya2dkjyDOnq96u50IcwXP+rga8GtxL0dlGV+TJADHOlDIXRACUx3S70v9Lgy8MujL4y5MtFLYXesBhrec77PRrQazX4l1QNdS27aGU2mN5lGYysQPpQg5ihHYslYykYJpMdN4aSS7JiBwAAIFuxCAduMQDYg2IOMC3AAwK1N+o8QO1Pzd8y7MsJWPMws
WZ19YcmH516Ye6Du1XoJXmSANacWGH+wxzBWIVg4ChWYVuFYRWkVx0BRXLllYfWBJ16ddLpZ1tdZumWCu6dsGHp+0avHpi/+y+ltSvtBThDSLizTpLh34D0kI1yQovQ2AW3GIAZgQgGtxEwEHU5z6AMOFqIAQAPFwYpgWNZBHEFjFfBHmagMviWoxy0ANB9DTXFt9UQnCfRh5QPYWjo2aNkXpXH7JTGwBkgD8JzHmV0HodXjRp1fwqgzLla5meVy
t8z3KVxNvqAVXZCq5ShOVC3JmrdERTjgqdywcwaq45UKTmqyHzkLaE1cb5NImLQs4TmLqe7UoiGl0DmrrizkXPKT0z60/zC1pbM0V6pWDVAL2EdUDfAw858CJAAU5AseEG+X9OPATo5hA540K7aXAz+DhDOLC4xel5vRmC7L0QTcMwLkIz2K7BPPFYuer2oeF6xfPoT1C1hM7j5GVSudetK5Y1SFfnDngSV6lDWAMsuLIzP1iHK/lkSAQGyBtgb0
qfWzfg9hbqm6+lqp4XxVinP4mCGqpJcXRFgxy3RxgGAFXHHgArjVWd9DVdgiMYGUB1W7OlSYNWNFuOv03jVrSbq6W03SZNnNR/SY5bmirltaKFy1Xo43WZ9lYBRXV7mccXvV5xdlWClGHoDW5yQSNlrIYXypBkwNpgQU2lN+4AeAP58JbTzIlm4OiWohqKZTXU54Mr+kqN1FHawvPagaJAAhQ0DFRFIQ31KxGrRjeY3FY1qx8KGZj+zCgkgTz0WR
CqY6aV869cGLr7Ewe0BNQ04OMcMJjIaCRUtSMA12zS5e2jk0tsxJNYcx60fXLjyqX5Q7RG2KhhJBXXakF2Lu4qbDXwds88tAjr66eNGTVqyZN2j1s+ZPP1dswhuh1SGzUHOrtTh6PUh7q8NLmypshHJxj2dCGv+j6wL5v+bhdIFvBb6dd5PxrCYXfpJLbdj5mQVva/2sHAg68Oujr465OuOg06wWsXVvrGFsBbQY/GNRbRcx0OUjXQ9SPl2bXUm4
SYZWxSDYS5hd/xWZn9kyrlFRpaarml9ErNru19Ve7nX4dQIncdNx6r6XnqvNs0Hz85n2rDdNYtlzpf+kOVjxsxeDAOKACon2m3DQ71jm205RbadF5vDZc3WtlpOx2Wlx/Igg2oNmDbg3CABDbgAkN34BQ20NjDeTEb1qbYG1G/Wbd/7UAHbYDE9ty+dfXr5hyxQ7aIhXtcqN3VyLahiSP5cDnfgaBRC38ibwC3QHGqYDjQA8TGwvRaib4EIAGlTQ
Uze7ndLQ1R4KovdWmLozMqSXG+x4HobAObjEAMwIQCm4iYP9pfZ9ADrAVEAIF7hoMUwJzODl3M4Kvh9HEyuvLLTNm7Av9YwhhQrq506vXb4tkAELh0c3IomHL1VlJjYAPAIuPKzpyyuMoTFC4srkb1689S3r5GcRZEqmbk8tvzLy1ZuGT76x8v3TV498s3jZM3ePYRS6OMAwAQ7I8BpcoKzaurWYsdMACs8A0h1WT03nCvobDTGgso7kMyivQzPO
EdAHcfoAQHkZ6Jdi3YonFaTWLWlOYJXcZviAZTvF0+wedUpgQjJmk+ymfTGky9PrAa6Z8rarXvBRzZNHuN1Wlc3+N2xj4HyNFRzFyOt7Bo7W8e3hYlWxZooIEn/k9esnzNAbEBgADga3BmA0FNTdNt+t4iBZE0e4be1nSi+UcNX6WinBNXhe3RfNXGHS1fl7np4xehj0sMxaOhWVx1YdnrFvQV42XZ91cXrPVqVqcnHp5ytcXevbzzvHP0SEkEgf
eitADivQQs4rhG2r1MkgAqRuULt2zMiUbd82WY0bglXRve6SSlsv4DbKn95dAFkCVyMz70h1tA7IO2DsPAbS/ytzraw12PSLfU1sPibirZKu8DUhCi5/DDMIVinDBTSqCGgPKEpD6jwOPouEsx26dvHL9VsYtnr5khFDqwPnvMhkwUyFcunSEpcdM4C90I97mbb25ZvA91ozLV2bUO0bYw7SiId1+LYzfCNubTs8Evurffs355smdM0Ouy4eLGLg
JqHfeSLcXBPWLDyZXdV31dyXwJ2cN2Cfo6E1knaTmydpLYp2UtrrnBh/O1kXtM1bfmru1ctrJf2a9kejf+6Cl4icrWOrEpdccuYLqHtRtYhrfDaWFxSE9oGl4Va4WIfBvq7XxZvrdaGGYPXfg1yepFt1Xs20bdzbp9/NrpDifRvwDlrZa0XjlvDFTQ4ANtAZ0X3dNZfer8rRNfbtEt9uAI3X1K69p0qJAY7fXn6fCAHh3Ed5HdR30dzHex3cd/HZ
Yv6dc3tBRamWFqawe80OoA4e8aJLecaw2oJr8W0mvJLKa3HNdbPW31sDbhAENtwAI278BjbE21NssSxSxICB78e66wh74csnuOiqe+UuxZ1a6Aa1r/SVlMDDlSEMMdQUEq2skD87b/Jc7Mvt4BLohANUBTAoaF7hgbB6BUTfAhAKUqaAjoFbgDAEw9MsdjQu5POh9c21FEij/M7QlrrfEJXpnus+PSyLlRIFwSbzKgtvN8Mu89JOyDsk0YtOV4hq
Pnnt9AB33UAPfdX2p5o/crinls8funHKgPZGTgd+VvYzQ9j6bn1hWIDb8WABmPaBWJCpgU+BSAb4HoAHcegG1b+gYCchBfgSQAaURgIEA4BLyZPei3fSonYZrU95BdiX8N5KKx0ILKFAFZYQ2+yJgQOaGHL38+avLPhgGrvAZWWNsrbQqudmJwomqFqxY5XbFtQ0ZVEYoXexqtaBVN72mlyXbFXOvGXYEW2liWbOqvNwhsLb6AGNA4AY0A4CCSlZ
fNXbl65uOVRlO3Qt7jkpWkrA5EUOjAA99u5aM2pFg3/U/bP6/BMALvy3EkaSnwJoDYgMAAcCm4MwBAqQ71g9DtNYj3jKOOrSC4BPwrqO2htkOmG/v1ltGKwr14bME/Wu4rRG8TvqNyE2uNkbV6xTsPb9C320u6zC+OgVzSwQxuYYfnn3tgkgkEDiyV8KTFyYJXa8biIHyB6gfoH02z1Mirou7Itjlc8+KPZWLXNhV49l2PyaX7j6JMCoySeTotue
nwhVnwveQe2MgYA3dlGdZ43YM31Juw+M3tF01Ya69J/RfsPDFu3ZtX+662cHqOCUQ8sXC++5FsmGF+yY9W5Fr1btGfVoSbaaORbepxzJ3TzzPtQ17wZPVYd4jr0ODDow6XDLHGLbjngxjPfi2wxvFdZr0F1DBT64Qod0+8SoXm0/Q1DAtZTHtjYbj+62drMY52hDhvcloeDAiFYymFptYn5TsOrbVsRNiQcanGxnraH31NnXfy3BDaw67G1BvqdH
wDk+0rKhiytN67b+1quqpXXJqAqgZ4JlkpBngpbuPzihkpCu0du3rEvlH86hFQd/faZPQbJELgcMlCC84OBLHm4plOlVIaiPqy6ALXuoAjsjrI6iAcs4ayaHAMtqDOCR0ke1+2oqkf6imR9iP+G8S2GORzcXFnuJbZ1RIDj7k+9PtsAs+8eQL7S+yvtr7G+8CLZz8R3HuJH3rikfhLBR0XGVrTXWlM1rvB93t1bEwA1uI2raH91J9mbUPvFTeQxI
nJtz/fW2seXOhmXllt2QJ5t91Y8x51jiuk2Ptjk/YkBFp7SvmHL9ndbXm91jadQP0DzA+wPcDioHwPCD4g9IPr155LdYv9tY42Pxlo45hqX17YZgN316I4KMmQL9Z+CbhDyr7Q+E0kk2FfKl7U/m499YGIBbgHgG+BFfBJFCTsgW3AqAXccgGtwYANQsw3Iqhg0TWs9rGfJ2cZlLfJXCoN+EydVUWo9wlWINJDFRyZJo5LXsRrhQqAdIbAH5BGV1
edrpKdIekA3wPQBW49ACu0DAjU5CC/AkgKUqJAQIBwD7kkvpvuLrwmzjXKHYq3IuDT09VJvZWrqnthYWW7p2i/ssMMrvREjo1ITPyj+wrPP7lh6/sn1iNESvbTly3dv7TRKodMGrbh8MOPiStK/PeHV074fvG325ePQHdTT8sA7AG5Xn0AwaBwDBoBwL4kQbIklBv2jUIwsaAzobeEdI7yC0isIrKG1fxkHebdhs4LAA3juYrhCyr0oz5XqQtDMo
jdLmc+kRguQKRwXdoWQj6Q+ZVbGCvgRHba5uYvcRV7he4mJN6rqJ72l8w9H3RrSA81mGcw3dRb/3XWbN2TNnRbHKrd3XIs3pRe3b1G7V8rHz2iMPjea9MqehclOHF8I+8JQDkRfBOQ9zppOHjUNvE8G35l8eO7ET4FYy54ga3FUAQqmBZT3sBzFfCGlmsk/9KLw+g90EaNkmT57uO1nTzXy5/QSAaK+WAepmGN7aCY3+TwQ7ynOjyEWRhZgPgetq
J1jMkr3yOSvQnDC/mjteBE4O0QliwSJV1bve0zutoOgz76msslRuqj7CB3icEnRJ2CmCb489vtSLMrdcf41h+xSVvqUg+iwmMm2BFRfD6GFfskQKm9ZVqbUk7cMyTy0+qurT1h4nmmtpoIk7OHwPnYuKQ2HLO7lNSJ5U2wOTu/4fWrWB27s4HgDl7s/uPu06tIjzs95s5+Ne10fI8mdEGuRr5spjxZHGZ0jxZnJdDmd5nRR/fqxbvk5nsBT2e5GP
gj6pZ5n3LIKFF2OFxQ863lDxoeanBF9U403Bt7TYn3M2kbZHWR5vseWP6QmUJ9sm6CyyUs5IidvQAAAic4UsNLY4+3jZhs4+Wnb264/0qzB06fnPd6dS0stn1rYe+TgTzzc9nXJlYMhOPJvzbajyIQ3mA37UxA9DmT69YFqJbgZgB0zTyOUGJOsV0k8z2kzkPtiHUJvhl+Nc+bWGWRoNDUHObvgmKjiBvIMFEbAei8FLyWy12vdyncxis4TwHmrD
kFi0Z8BrHGx1sde4Ox2KrVA+x4cfHHpx3lsxjJPt1rN+mZ9me+rpZ4mNVryYyMfVLBYukZbCEPgqe8gXCUST9pslfdrtLWCesDEAtwDwDfAivokgBJeQObjVAduOQCm4MAIskKH6w4aeib/UzpV3HCi21kKYHVNMA+Q/Vo3i/srEKkhiTmMpJPSDZhxBxT74wNgD8gZ2yctabRfRVxHlTXr/sPz18zS03Lop3YuF8G1iSovrjuzdNonX6xD2BH5J
V12UsOsBrxKhoit9My+TBvF39OhqfjaOzpsaKDh9o8Hpkz4aLiEj+5yfbs7uxxY5HPySiQBeAL0R0AQOZzuJS4ueL/QdXPz984+MHr9h9quXOL7i94uLI+puAGkOgHdvmnBjUqEj3ppUG8XboCiF8qajEM+QP8iUmGxBcGdgXKJtsmM8DH8jtGcMLijxLfxWqT6vR8RK6qvtbx6ow5tOaDiQwVO4gcyQwzHENdnYrXOdjC4s8sKxSDb7BIahb99V
zgf9WNYPge0nhB+juobiK0QcY7JbeQdUObJ5iscnVB24x0HRO2gR5Ymh5Bd3rpK5Cf4zJKoTN4TvQrayMmUuCwvSn6MeTNMqgh3Of7Cn8Htht98x78DL5q51IdRzCoKbiqAyRFMsC7zKfqdzLxJdefirt55LsLzoQgarBQHMtDBOLW24+h4eio3NOF8EeX8eOmWu8Be67QJ0oP6H8oAxQ6Df7TBdaT/+4oZ4oaGSAehnps+GfmzHi6bHLW2F1/Bw
bKoe8mKBHvZbmsMrrYH3OzjQ5ovcKOi5w7T4OY576Fj0dYLb0ASwcmmzRfK4var+gwZYkjB5OxwLQaiS4/2IAIq7qbTxhppeXFLt5d9XJw3+mBTGqceH46od8U3SOJAW4FwA2AX4CEBcAcYGDnDi9FdjPr0+M+xWij3FZsvSj9jtQxMIB5vphWUCSxrBGT7ZVxZxoULqcLyNUhaZXBTrgc06SkDF3KH1hAi5Qz0E3DBrKax2a3IvDOyi4mPqLqY9
78Z8SGubSZxHVebsR+qJ4BHtnpYSW+/lWHJX4lvJZlnmdXiPZ1raiktwtIYh0cQASVxvRyWBlmVsUjpcxfItdgl8O39DdWwyONbBxg4Pc9pl+riON4aUscYlrvesAVEtwMwDMd25HKDnnwu5ed77vYxPWLbR+4i73GGjNjCLIBqcv0p9RIPMBxAPkA8iNgr/bOe2XS0w5cfed3SHz2nf9J9g8MbaeouGrXCkB0+m+fCGfaJBeR9tS1EZxbN/zVs5
aGT8XXerLMrhFVYucrukLWGNhhdcGHZ1oS9uTyrlAKiaqr5YY+PxhldamHDz55YUu7Ilq7VLwTjWfiO2gMmQKrFMXysvNdLsOYkBbcL3CEB2gCgAvRbca3DeAHcF4CBAeAW4DPJcAC9FuAHcPybMvY5v3ssvIh6y+TXbLso8+sKB9y4jg7IP6DXc0h/PLgukIBC+ylgQkBtaPy1uvYCv37dKU6Li4dpEluEhsLlrnwYDKsYQVoEILI84Sg5k1BAo
COlgxOvdCWT+VSh2RHjpZSHKZvg+gAvAB6I6CLH5tK5MQAIN2DchjuI+rz4jpBbWdlD0Y1s7A3oN+DcUtwhW3vjnHe7weynTKqwkSVYhJz0ZF0l8UZyXKxwVkKg2IGgyMCRRDlnnHE191MXnrE1edi7A07sN6XbWRTCrI5MDGSVimiWZd7uVvhtcA4M7tukabS48/ZgXyCHZBvDiJVqAxmVff6eDWHFBXAoX10zZtnZr1wP3vXgGj5Ugm3uwEu/X
aNvuvfPR66ZHlT1Q8k38GwjJk3tD4SfWAXgZQCMAoAW3AOBMAEGS12U27uaSnBElcu+uUTWw9Un7Do1aNPnDi3dNPGuico8OrVrw5MmfDlXptm4IEqG081hPuCw0XBwyCDgLoh6DLLZgOWlWofdiI792pulG4Udzzvm2BSfLTDxr6odkIb6v0AZ29dv3bz2+/OZr387mvSdik5z27L1Y2G6QEBC5vgSjHCeDNp0jBIA52FtPtBzULkufIWTrmkfx
yZ/7tpn6AGSMWZpIw5nExqkQUPEFxQ/lc57sZfC3FXlt9Fnlb1V1z61XRE9ifsL1c81eYYCVJ9aaCslcKbqn7dbgBsAvwEIC4A4wHwu3RnU0zfB9O+92PJ3S61Nce5M1zeHOWLniab/qO9TIVsJwt+ixTQxPTBRAHkt+dugXzw/sI6jQSHXjWVZELrNsyROLMA9ZXh/dcS1j1yCPPXIV86lx+f0x9fBHP9PheOzNkymcJX2EoGPBjIWxJGBbsNw7
hQ4AQjH4qlssaEoalwVTZFUY3TtIv6phK+eu2R5K7evaL5VBThHgAO/7PbOwc84aBlpY44u2S+AuWAFAXTKmIgbiAAZLn71+4OK0Cp102Xl57ZcuPdlx5PQAibkm7JuKbqm5pu6bhm6ZuWb947HUzRT+5sBv7wA8aukbuBMB2wD56dcrvTjG5pHERpJzvO/FgK0buIAezPvJLybAEwBsQB4AOARgcojYA63BAG1gYAXABWKJriJYsuol6g5iW8N5
fhjTt0jchdO8dXvoAM9/GODHFS1SM+3dO5XP8HeA4yuLqI2TDAzQqCQjVnmFNyN0y+5uC7hCAKQBQAHo5uKbhvAVuC8BAgPALcA7kuAAei3AVuMzOM3TEywNjXrN+ndibHN2KPE1dXPSWMJ0cCqgNw2KVd5jtKE6LeEE21094CGT+26cnrx856dPEOELd5uCg8E+tWttItIang6xe3fXaaifYfBQIbc4uIRPd28sQHX8733a3AR5if/bdKxbXrAL
M8AqsdABFb0wLqDk/trWQ5qWRK6sjBMQgpLEenvMx+W7Qu2NnPoEg3g3dLjUngcRRSCO9tJ2koKBqUfa3WziXdFXxN629VOpNu294W8YnQ6buL0ZcEkAver3CzdvbgV3MO/bvFnH2dTgkr1P9V8Xr1nDN/x/DvqHFw/M2mum3a1HrVhO6tmk7vw8uhlEjKornA87R666mIyI/92P1h27ab0aqA7Whra8Dl8qsbWPdDOnb+x8cf8AZx/bv41hOcTO
wMoBGAUAObgHAmAO9KYHYV1kL+OYjNXojpCOz9ewrdJ6RfEXjJ7ULMn4E7DNUXtF8Qd3FyKlycQA9FyQvrpjB2VDEP7SFfV167bWJBqwZMFQ9uOND+jA07JM9VtsLWwg1En3gemTCPSAXPDWkDfIxHf8Pgj8I+iPnO8A8SLGlwusQP2l7cec3889zdyg+9ndB3Qf9nX3Z8wk0Ga4VvfOpS+BP59g//HuD5pvS3td98T002sRyxFYX+5deKGCF4ok
kJug8EfdBNjJdTyMPMjMgzBMIRbhPr6so655Hny+p0/LhW46Olb2WwtAcyiYHI5+uLESuvmJzG4AQ7w3e+MeyLg+6amqL7VJPvUrs++kpKPQO6LNsr4c/6GzRDOIdxUAC9GPpJANeiMB9wdtHfujnk57OeLnq5/CJlzgc3/ulpucaAeTt9YAoeKAKh5oe6Hhh6YehBVh/YeEH5I1AfM4u5/UAHnkeief/jo88abXlj08/XAUs8t/XRgV+A6ptTwM
Zur2wFfvzQV1rfIOGJ67tnKpoDI9MQozQmfG3490EvxXokXEeb4oYJAUHohbIvRGA+4G0CJx/O1JYx71IJJyx1Yz2PQTPUz5wAzPae+GWlHiSxUdBTxuPfeP3z96/fv3n99/e/3/94A89nqN8M994oz+M9B0azxwAbPreyXPA1+9y481LtWyJcNLgdxm7vIcFL4/zt7lgE8SAl+aeT7k2AJgDYgDwAcCJARRGwBNuCANjAwAuAGiWJ3AqyA9StLN
9+n/hx85hSCb/yP0BTyB3G2K0D8YD9xLyKAB4AFTTAFWB/nKp/T2anv87qeBH0PqEeIkbTwo1AkVaHwXbEEdJvsZkXg5Qs5b2e7IWuUhe4UH1H45ESfNrlIKPsawCRVioZQZUFrwiKkNT3cxgdtdMerb+NzUO1TzQ/tuzzuVcPJmAZQBgBpgA4F2DXHqaN9ueWfdW4gdnyTj02gn7/kCeDZ83dVHMvaO41GInqzfNnvDmJ7Mnk77LBGgZX3O+ORK
7NuYva3cutZ3pp7NdyQJVmcYZwwBxuVC305bX2Y6P9E1xzjMg/k/7XRrfruvkAkJlFCpv3hjByPnl+YS+VU6FWJHDv45D6XTYZ3k5sPH6xeMYXXy+Xk8P9G6UkaSIN8uCSA9Ay7i5uEjy6lSPHT4rd4yzm0bcwrt98jugVJacW3SNFF3L1aP8MwiuIzBO6r1GP9be9ZXQ8icLHmLG9e9gVeTC+b08Hk57w+Yp6u2JegOWMNrFN1jMxjaSHlNxICK
ZQyHleXkKShcKVXo0ndOS7ybrNwlLuVu5MtLqA8bPoUJheA3kwMh8+BTX816mBLXhl/jmEz5l5QXIRxa9inv2WuH5yknAwwI4hDHCYA5ctv285ppgUdhaOZ70s9M8Kt6teMhSWvdywhKl6Z+pGVoIDXpoFDuK8VP+9w+8lWuzntdteU4Gwv9XlBnpfmPepv67Hm9klYFQBJyd+93fiAfd4FVnn045Ev1z9ACv3Nzm/dIAiXkl8IAyXil6peaXul5
vyr/gCqvo16nci7bNyocbdEq3E8vsUlZXoCkWoEY0Sz7cCPe0v3kvS+/nQhgEUgXRT1qOKGKk+aAdovuRwct33l0HqsID4f5dd3Ph009+HL11w9tP5MCIgU1QxWPe33fuwM9R1aI6FmoAyz5IChikzwPTrPScZiM23o73vTjvqz1O9PPM72Wfhz2z4mvVnlR1GOgvbGBQAQvULzC9wvCLzwLIvqL1c84BFt3O9jvE748/PPo50MeVLE53Vc1b7Cw
K339mG+0G93g97hfEb88ZAPMn95e7TPl8jZ9Pw9MKE0uLBR9mA3s9Mh49x90U8jeBWgOK0wAbE3dGaIY0HgBqJaiDdnGvcjig+4e4t3h4S2eb6t7TXlrzD0QgFMfyk8woyz9FjoDiEaw6AzwToFPBDrgU/nuyJ6sD4cxCB4z52IHa6ExQfAgHwJ0YD2K4VO+93ELMfdXm26lWDX6x8V2DHfQHwBcGNXZmBsQK9Gtf5F5d5SxboTvsHWB5mw6N2Q7
6u5TuGkyKqosla2PdXAi71cSApAPoDbkVuHMVrH4wB7j7kUADwAymmAKsAAusbwafgPuL7zOZ3h7ZJvcT2Cpe7DuUZplmIlFL7aePoSUohAWQnlBaR2VGu+Bp597p1YfAnHpmNDOvjiGtdkiXVurDrZDh9fbi3Wee/jybh7mMAa3KJ/A4Sv38/NaYX3D8J98H8r9IfMAygDADTABwDsHqvg90A3ccIvhtdQrer4hvhtoM/Sc6Pqj3ExgTv/TjsVt
gJ4cOTP4J41zI7tUYtPY723Y+WdRlotMWuu+ziMgePk6FdIkQ4oAxRMUHosqhi7tAVLuU38u/AG2r3gA8s0X7kX8lshrF72A/FmZrxfxCgl4gBlP1T/V2NP0t4KOmXru/JPUFyk75vTQP+CI5KNI/GFvDmk/ASBSVnT1ezxfbt8UfRXo684/GZ3CVRYVX9UAUhZGKZ+RzN72CjJhdYZXRGP6hii5WeXrtZ+133rnljFiOTpi4HPB5oc7vv2L8dfQ
1B/jsEbtr7RVqNDbbsDQj7LwyyMfMhUZD727H3xSsVYwpwca5kpwJe+3Pr/rm8AjkXIVB3bVvxCFTLdcmAgv6AJ8Ayfcn1MAKfiH5pdj10T6ofJv6hxaYgaCibtl/YCRTfWUvz59b6N4lixyxV3Jb6InFPmWYFD8KwSOeAaTPL1dd1v0kB+pU0iJ82/Inrb8qXtvUZ5I9636cMS93U1J4mcRHpt4O8zNQz68krAqAMWJz3V7+N+Tf0W5T4VnCS5u
AGYkOkGyDgSLIdx9gEcdnPmBHcmSy1vqIA2+7QfbbP3DBi/avePn8S/yJ4P7AEQ/kPhpVQ/NijD6w+6iXD9BemfJb92/Vv9b82+0H+S//fdhpF7ob7Pl6fc8f1qE5TA+DarCJYodsg4S/CO2pX6BvgfYqgADgYtA5A/eNgFqIeAIwDgBvgGNFwZTL8g4/LCP4ney//zogdTWgL79ip2V3+sAUHZUvNb/DfTLSDzvFQd0dq/fLto/8uhnsqtnCwkY
/Jrq93HNAfIH2B/fAEH98BQfMH/QBwf/RNrtc8G9+iOScE31JIvPnQ2XPPvPn/9FfPvugxoPpMoFEUcs7Oy3Up6EX0tHBo66NuRvA8QKFaYA5iauh1EwaDwDlEFREuwJ3upzMsRPIm1E/s3N57E+pfOtBowAclCPTNTTvANdpX0dg09IoEph3k/7zAJzR9OXKFpyS2kLOubtZi8oMihOQjLPhwi+vvvNzCvJs409ivaF914cPLTzrcwHWJ75/cb6
uEcQBf/eoGskgBV6ja77DyP1jSOfFh09p3iT6UPtXpjhNrZPxd/l3A9uTckKhALdHiAHcYbwEwtPuQaSna4LSUde4vYz6M32VN160WQnqz69e3Di1ds/In+O8c+YY5z4QJJXsN7DfI3sSGjfFXiX/jeWvX3eTe7KVN6D3BfUPXB+ouEiHkhJIJC2A24O5cKfONW9YC1+dfvX4y/ObxOfJ+Ixvu+Au3L2Mx/Y1klzzzXZgCr+rKukdKhDWFHzn6Ue
APoD4AaDHIfYgR6Ep8sRG/AXwuWr4X19hHA3wRc6fyj8jEkHcJpjtYLFB7jumfnJza88nrxXye0VxkG/bhUdpAN5lA1PzT8OQjLE480rHz37c3SZ2tmMQhLXEDahfjjWK38Lw3YItxcQvyL+Ddal0Jsw/Vxwm83HyX7pcpvZehfeGggcBqAcNopZq3CwozLvCEqGLMV+OXp6wQ/iJKk5SKYWusID61vVuxVzkwusPU8tfor1aPBXtm54vRndcBKj
578V64/4iP4Kr68NGrz6P/vNzzDg9kaSAWeZ3yT/r7532XdG+fb8b9osELLsrFctZ4ddvvxtwZdHOj31AHszj23QbaYF/wduO/mSsq7O/kvi75vfNoxH+R/UfzPUZvGHrH5x+8fgn7e+4lef8X+83396AO31gD5BOQv1Gt4B3Kq85OYNQWrE1eod4+bh/AZpih1+/QHy4y4Cd6bNzgWoU0y+5bzJ+LLwAulPyx0YCgkg82FrOPkB8cn6F1gjH1pk
7Jcht0/RXEDf+OUhQ366suz5txABUxAdDbcHATHVbj7ALk/M+0Cf1KFm9/UQP392gmz7bctACN1HO7PBV4tFO43379//fgP8D+g/lRBD8Xv48l3+j/ffwP8732N8Me433r7d9vv96blMj6N2VdGyVZxx2s9XlA48zfASxVAAHAWaByDu8bABUQ8ARgHADfAwaGgwGbv789TljU43uNcUPhndOBtNdCXrqpXYKkhc+EqdSYDsJ+sh8dtFrhhPrDyx
xcCCc1exFevbwlq/byEUBghMEWXX2Qa93KmNVWuuYKSkYd13lO2PQV+Sp3GOR91626z04sZ9xtYN0FN+zsRcM+z22SAwwgAy4Gtw1uA4EAzgEBQgJh2660TCwl1O+olwqunzyeSiDxIkogOEBv20BOZdkRegHz/QKvHBOeyGBSjKT+QOQ18qPkTg+nQHwAzgGxADuFtwzRGPYDwFwAPABVU7QH6A7QCgAASzABlNngWjLygBxH25u2e15uS13gg4
8fr4UcHky8C+iy80lAx9mPrY8QYEXdd3M589iK58ZQBFRuPjbYSbptlmfi4tULp/NhPpz9f5lw9HpjKcR2ux4hAEugFQFbhRvBxhxfpdlOOFL81Ph+F+vr08DXko8iLsr8SLjIC1Hmr8sNpo9KDpa8dHta9zPrr98Vvr88TLZ8HPg58QOE582PhQCA8lx8PPvhNiZjb86WnAd+Ds+shhjb4TwAN5m6o41yWpbkOlhIAeAXwCBAfF9InhADIHgj9o
cCSA74mVAmjjnClpmfgdejZ+SoGxgzZ2r+/Ty5+gz3LOwzwDU1Jg50bunIBn6AZMRI1d2zmxQyF4DVAD8xbOvf3oBc7x1eKDj1e1sRYB2Dj0Ba0E4Bai1N2rrzM+Fv1rIHr1bqYTxjupnxs+RnCtOtqzco5WBSBfHw2EmQJZmvO0D+LuQ9OTAlwYW6AoAuAFPI+AHKIXuHhAzgAOAnwA4AmgHaAzgH0AJ2RcB/yS0BugjN43cDpWuZntQdH1Qwo8
HsNN3JN551YMVhI4B7B4KPvglykSpE/lhxDip0hU/gdcTFg3xSEFghRYuMI/Tj8M63vRoYYJVABPm18amq09q/ihhSwKlQiILgIXNk39fdhPczbs8lpvsQBUAJfkrOrO9xvo0DwvnN8+ggt8N3lWdlvq64d3ugABgM/87QG/8k9H/d4Xt/9f/v/9AAdv91RGN96ga0DD/q8929pZE8bsJdfdEJN/Xme518DCcOrkbxfgKPN7/v+9H/qRQ+AQMBUu
F4gReRQQnqUfYFyio2LugVoMQgkO85Gq2/EF+MXlSYWyW1iBTphQqHH3r+nDzyOHNx4eU1zoSlbziWZt2xCQ+WA2zJTSK0uy+ifKyHS4EUyihvFcqSF3we0sX7QsfXxuL8n1eKV3iIZ4EWKn9jGwtQN7qc5Ts2Tu0ygtwOpcuwiYmm2CeB3HS2Uu6W921oyWYjaRVGrQLqBhpwaBYd2Nm4T0d+VmxpaewyYEDuGXAQIGaIUwDxOCJwV2XuXLw6FA
MuByBmE8+jIH8p5qKtjTtADo+m+pDzNVEVBDbAkokhkUHrwBpUtj9FIBsVBEFg9sAYy8ddokD8AUrg4gL4FzoDKMj3O84bFnV8C/lggzWDf1O7uLUW3mz9mnmwDOvhq8RAap87BuIC5fpICCzNUDhvkDc01qbhTcEwJBnMuBSQeSDsrqGNcro7dBzISM6zsSNC1jP0qQSPsH3rvdKtu88rAVOcZ6G+89FhsCWRJ8hVRtJcPIh99EGPEB8AM4BsQF
eicOFjUbqRi+EAHmIssBNAuZkWKbsHiYH9ibwctFmi8Fjgu/Hz/EBG0LONezwBWfXym+H2J+AIKI+QIJoO/D1gBA30ZGwGxW2iDm04wg3DMMjzf+f8mV0700vAo/GRs4sUBWSf0k42IMqB6hnxBrKH1K032vueCT4BAeEvItwHtEAgKBAAgIGccYITBbwCTBKYK4Bw83m+Bz3Uil7SkBm/xkBEN1Wc0TSGCCgLdYaYMTB1uGTB4gIRu9/3+2yN3G
bhzcHURd2A8BcADwAxVCkAsllAB2VpcDHzKACkPji8iDH4CdLoj8YHvBAo4CED6WClIPxIpsljMb4X5jLZV5i4IEgcy8M/hOQjdhsVSTLV9H0GcZz5mTtWDvV8LwGqB5gHkDUQV9sOfp8twRkUDjbH9hkHvI9EFgr8CHCgs9Psl4MNooCzXqycVAbhsrXiZ86LoTs7XsRs8sIcYQmvbpSVuSYvQTdsr1nxUfwLxdZHN586VBpI0GEugKALgBtyPg
B+RBIOUwCEAUwG+AcAAvQzRG+AxABMyIwGwALwBxOTSVQKQP2A+qUVMQaSFugJiGFMqWF5eFrDLApMAiQSQwwqv6UNAdW1osq0HR6cr0+QiT0IgvR0iIHwL6eXwJ9aDX1+BFoOvqJPyoONoL4eqzVBBtANrGbZzyYwG3/yQsxVOkLT5WIUAHQEcHxiEf3f+L1Bli5vAuGxTwkKIYLG+R4DxBRYAtA5AnH+SfmYuErm6BidyDecTx+gDzUcQIKBi4
AiiC7h4QM4ADgJ8AOAJoAUgM4B9AGVkNQYsFpzrqpf2lxAvxHzZokPj0hbpAN/iqhAngDGR6ZKDkwLrBkQmh+JZhBCd6kC6C/kEk8/9jAC95ntcgQY6CKXFD8t9tqCEvtPMQ/km87jhZswDm4xGZrbcjsuw9noqe4N6tFRDhDOcfnlMd36KsY20Nw0DgZ78z5GJ9O3pqh7ehECG/g7Nb7oY9LPgSs8TNOD3Br8F/BNsD2UBuDjLtywhUrhN5hLNR
hFEF6jKF3BwElNAB4NGKLIO0mZm3ZBjh0t+jQJdeS0Xt+1u15B+uQV66TzLuzYOjY+AGIALuDeAQIEvIAIA4Au6GIAtuHiADw00au6U7syLwoU592dg3FCYgHKGTIea3lAx4AK+Hvk+w7CmH0WngjestS+6jCl+oA1jVggvz+gesHeBue0+BTvmzGZZ3Qu0tgvBKMyvB8ExvBJHx8BOMgdBFt2A2h6QbGXYGV+1XT5WBj1OaHJxB2YP3/Br7G8WW
DPmithOIr95AY5wVfhr9MwWoCiIU9ZKwfxcvXi+9qksuAgQHUQpgEecVzpwDwaoXhYKBdEgcAGo40nhc/1HLAd8A4cVEmaZtNm4U7BsYhOehzBlbpkDdwbtcDFkT88HhdtNQeTZPGmA9dQeep9QTE80FNeCTxhy05yL8Ao9pasC/tPoDlrmAoav14jIY78HML3xsmuxsw3rfdAIUUDgIfcZ/VOUDNPjFdqgkM8vcPuRbgAaJKQUCBKQYM43IR5C3
c2g+IEIRUYEOH+EELVIr0BnqA6wn+upwm8iEMDeNp3K8UMFF+tVC6gCRHUCykG0hF0V0hYakIhhsxIhVEK5BrTCt+Ud2oh5pzjuwPwYhQXyYhEgCMAAeH6ArQH0AZ4DW65vSlBUoHgsU4NGo/cCr67TzB6l9k46dkCNA31EiIJSxsggPlMQ6MHq2XXzToR4NZ2PbwEOfb3NBczUJ2lkOw21kO8BPdxuK9kIhBfi0J+Q30YB1I1LARhE1AVwlTAmb
gF5CfIfaU4rm39UzuT5IynFsCRns8Ubpe9O/u5DPIabhvIeyDKrkmNj/ssDWuhpITjlMAhAFMBvgHAAD0HURvgMQB78okBsAC8ADzrUkCCp89/QMxDRBqq0TEEPBiYJQRtlqoI5cl49w4NKMQivR4o/rchien1hYRF1ZRMM69CIL6d98HecGXoT8CnlLdSvn+kMXuE9TwT4C9QUl9LwVPV1IQZMG5rsDQCm+VHwZI0QHErEAZpqBlggF9DmBdppa
zSqDMlxwYGxChbjw1YkELUgPliLwUYK6GvZT4BkYUjC8TRlK6AHfub0NQAH0JnaX0K4i0/zn2E2w0q/JULB8bC3+JYIGCZYPkBYLwgAP0L+hXmQBh9YPQe/33UBJ2gVU2IDJs8QGwAMwFIeLUOPKb9XfE+YCFMAWzSWowCbwhvm2MOGk7+hvEb2VviHQJUHChSISkA78m7yKZw5+cQNr+YryBK5kOWhVoNJ+XgPmupH3Zce91E2RnGA2HbHbmraV
BjJlQKPsbIV18N+HZCLQMQJHIT099XlYZIIQhNtATFBuoY4g/kD49A3rEgckGtcRobMJAyIwtMIeo8jPjhC4wbp9tOARDKLmmCYPLo90TPo9uDmAQefBpJ4QMQA7cG8AgQPuQAQBwBV0MQBzcAqAyxkc0hUm3Z6Woi4hik7BMWCrFTuu8DKXmBFjwKAgtBOow1xKfVXsAywVaIXw6ULlUYQVYxfYLY9uUF6olti6ccAQeC8AeIZjwRcdrgbvtfAc
n0PgX64S4Iu0l50RsbHFhCAbWUCgYPxeWIIqB4ENwod0Oxg+uyvuz0IkKfAP4qE42aA5jQA627R8y5bQ3a1BXratBSoKEmWmBagAE89hEeeHACcaAzlNhR43Nhr7QkylsKA6b7RthL+Tth7+TXajsOdhndDYC+gHdhnsOzB/Sxn+99xCaYMLBukMN0iUN3LBcMO9hw419hM7U3agHVGyoHTnajsN/aTbVthTsPnoUcLdhMLw9h1TWPGCHVRhwBwB
tCllgwDmHr5lGZu+k31qicQwbtDghCaAUMlwkTISdprjHXVoYOUgHEOzsrIVYYroZiCboUqRToA/VdXo9CtPtUEXoajNjHtZ92UGzCyRHUgAZo7A6cg14+Ye2h1BlxcMIRWRpeuB4NHuit9Pi9FEwcoDNfhmCaDu10kYWEAUYcbgjAC2d4gPoAzwM71IStgNmIXwN6oZVB+TDFg2uAnBmsPZAGPDlYQioLBEIBvV1QIDg3QfPgVbtnc9wVJCpodX
+9oyYEp5E48XuADwFQCqAbdCyeE4JGsJMNzAyr3OGWWz1oLeROwwUFI2kFwwqE8ALyfBj74ZU1ZhwqRQmJGmPBRkPaOiQL3CgIxvBlBysh1BhshG0LshYsNGO2LyuGohTGOKERme/8mly78GOhoX2EUW6UeATyh0BmINP010Jte/HD1hkqRye3j276CKj4BFjWWASTRSaF6ABAQVVCA2ICcaLbXARbOFjA7sIUyLwFuAYCOYAECLrhAzgARtcOEa
dS3ui9BdgtDYfjLD4fgaC1IaAcNIRtDOWkACnrhX8C/vBlGsIdD+DqmBL/nJBQhDUhLoVYNroUeBbocv1J4XiCnoWfIhnu2F2wki1bMugApvhABN4agBt4cFld4W6NPNqFCp7r0E/OkvcyjivdegUyCYoePID4UfDJqifCUoWOc0oZAkMocbhqbiTYFQNgAZgMC8M4UxCljPh58wHyY6kLVQC4fKBRBgsZqUPRpcWB+0wIlghQYJbDHAWQDrjOND
FAAUyICKQRKCOIAOTUkypgWQRMCL4wcCMkyCCNwRccMBh3ANzBvAKnGJV3BhbPDThlVyWGmcPe+EAHQRQCKwRkmRwRRCLwRBCP9h0CMCAsCJrh8CMQRfCKoRKML++TcPRhCwSYEmgHiAy4APY2PxuYLrF7hwZVegJVjdavHSdgIDB6hcKAq+aqBbsnmDgEOfTHg6sFk6UEP+kgrCmhRoNLWJoPmh+AMWhW8PMuAsOvBe8PWhuXxTWW0KXkwG1RWT
C3tyVD5mn98HkeD2xpLD24UH84fom85YUw9GMiw9GZmrxdIbCdjKloJkMJMd7vsgD/XtOVW+G3ob7qbD54ebDF4ZbCcYHgcJAWvDo9EM8aqh5M2gEp00ujR0MujF1WCnF0tOpwUMCjp1KurpkGwWoAxPNYRHnhFlBnCIikpmIjouul0jOsp0ZEewU0CvIjyOkoiVEa3Q2zPoANESQBTMiY5CQefDBnl5MBzDld4bnlcGQdFCUwvlt1gNojnJrojk
12G+l8O6ec+nfgfqyRBEX3/kpzScKD2hDmmsNfh2sNChuFD1SVfQ1wfcwM+8EJjBZolSyA7RDoFbTQRB6H3A0BWvQez1oRI/V/uBYNThxYPThrCNhh7COyRhSLyRKgOPOj/zkR+RFqIy4E7Bn1XaAoAMlBhMO4MWkmbwyOEiQAMHZ+yIzqshoGeQlkBuQgW1B6r2QVALnmecDaxZh/Rw5hyFwcRpWwWhHVj5hvDx3hq0I8RwsNshosMWe+918Rop
yhIjDOrOZOzIYi8Oql1kujwVZERYi1EdYjl3poiLvhVsrvif9KIcbhtyPx4XcF7hqgLUAm6NYD9TDhgGoBg0d0mzRdPNCJgpJaR1tsv0Qin/Q5bpl80+DW89pivCHgQ6CxYfgik7hADLjjcCjTgft7gcdFe4etCdgZy1VCp9t2vvhxIkNWJx4ZiluYkbkOoGcpVVhwiAIVwjlPlkI7IRthVYn28rDEM9dMqi01mi809MgegAQKjVQgNiAIsvp0jk
hTgMxm62QSJy6TyH1KuD1Rekf3eau+DLSlAiChWsJoqOINc4NrCo8LyEeh6SJm+E3n/hgWWZAvbRO+q2zdYimUaywKIg6xSK3ePALKR9CJmGlSMvesgMu+bCLiUEKOUyM4BBR8pQbh0iIf+zcIxhBNVMy+02XA0wJ7hRr10EPgRZYe9UQs3i25oEsT0EABCrwkekNovnSUhmGh4i7jgKKoampB6QMlignyzg7izgB7HxMhKjzRWXDzcRu8Jck+8K
azhYwI88n8i8BbgIcjmAMcjbEX9RBnFsi2eE810Wrpl9kbcj7kcQA7Eaci7keci2MJci9MtcjPkfEjT4VEcAbiVV8hnfpXETP93ESs4Vvi7cirsd9nkcsBXkbsj3kQcjTAnciTkXpksUdiB/keQBl3lcibkXijQUW/DH3nvcqlikj1gLcAbMqnNlwA2CckXb9BZjDlGEiwYuXgakFdtgov8CXhe2CHp/1CzCaWK1BVxnxAdFpU8eYcMMEIBb9Lfr
8Rm0KPhg31i+eBm2gFyMSuQrBAQDnjn0EA1uRESLr058ApWGsMS+byLk+HyKO8xzVYIRIIfuEAC36O/Vrk8mnWGVmgAAhAM5rUa/0D+vajMeE6j44aPDBkEMgToIbwNBrP9QYRUit1jT5UUbUi4lC6ivZHajHZB6jfvtYNmkQSjWkesAvcKeQRgLbgA8BQBlAOqoAQMuBbgNbg2BBuxlAA8BXyr4M1EbWI38lEANxC8ElOnVs1IOTIduJaZ8dIaA
gJMEQT99wV+FcEbJDgAdD8iEZ0jg/ncCCXtkEGnu9tFYTyoqoBQZ3Fr6CZoA5FjvDdIuuhJUq9AzAnwvMjo9GbClkSIDgDkogObJi4KgfD1tHEM8tZLnQAhtbIJNEGNjNAABCQZxeon1ELyP1FGyJHhBo4KGpiRAaDIONECsGoFuZe24Z7KKEL/ZkHeIvwbeo5IZ1Df1GRohYGXfGq5Uo0GpkpbciJAc3Be4CgDKASVQAgZcC3AU3AMCJdjKAB4B
S4IxASwKzQMKidxh+NpB4gjQs3mkOkwSuDwXinYjOTihdTQUUstkUtCdkStDCjkLDu7rKjD4ccjxYX5YlQCqjpPig4FsAUI4QQVVfgvqAlYbuYlBu9MXjNYVOOldDLHnI51fsa91gDhEFIP0Bg+MkBaklY99ggqYYwDBtg+LugjANbhSAOMAkNkCAHcBUAjAJeRnALQ0gPvRFRRnItmMvdpZgLTRGxIbDbbPZEmBNejEknejyUa1cgLDyt+cpRtd
wVNkb2sdYTf5KICzicmH3GaQwe7HGCagI2ZTgrHSGgW6RMQEsBPABBE0sLUDd8HSAsGXaZVPAQ48xQHircEfr1wySHmHaSGFPGaGtw9S5qo6WFLQruGqQ9lw6oh3Y+KIqZKgQ1HivBQITYeaynuAdJBQfUAfg33TlBZjYm2cTDWLD34tzTh62jDgFCXQHYy+XCKKQAYA+8U7ZDJGV4fGDSQymGMB9bH3iroIwCm4UgDjAEbZAgK3DVAIwD7kZwDG
EXrATgfBA5GAqAW0dp0TBAGCF7uYiK5qNh5qA69bEasjjQbgDHEWaCJ0S4j2bu4Cy3rNdZ0Tl8q3kciigU+CfuJcMF4KujAkeO8BHIwo3nC/9vpmB8SlNhcT3Kej3kaGCoOFO5oMXYZooT48AUWaIiCiAVQUaOM1MSQVmSr9c4UWOtbnOT4DtgA8jtjv9IbjUj0ACmi00Rmis0W8Ac0XmiC0UWiS0Zf9VMcAVtMXGir5kCcWkdc4mBN8A2AMwBLy
1SuqmlSDb+1IBpOo6+obEARF2w5x5XpDSSAYmJIgYplF8/NrL0LfZSN2AWLDFS0GwYQfTosUdF/dW8SCxMC4awROCN6QSA7TK+a1w8SFNIyj5FveQbNw7dESw9O4dI/dHKQ2WEmnbVGl/QK5ASc9GMNazZtvVu5kQaMx7IZYKMI6mZpKRDQllOIgmwhZFhgheEOYYDizuCmjNQ1eEkY6XzCIyAr0FG/JaIxzFX5ZzHRol1bRHQG5rvEo50g5e4QA
K9EY0OMA4AI6BlAATZYrJDpM0XBsUMajcXgqnB3Lj94PvAOhUActcZsM2iJ3DTBy+GFwLlFhx/fKhABUZnBpoQZDV4Rn1ufhvCM/oCD9kXOiOMVq8eMWciUrFxMlfiyNYQbPoUUCz8FqG01clvg80EPJBx6vvUw8vD8Rvi0UZVhSjbHgwAKAG8A/AKcsTDuvwzDhqw5MSPxAQr8ilMb/CX5HFDSQW78egRRoCsY5BRgcGgiIaZtpeub9KIbHUKIU
BLaeI9AAu4UtHloytHVo2tH1ot4CNo5tEHqaYGF1VzEwFLZ4A1LG6LAnG7pQ6lGgvYrr7kO6LBocYBwAR0DKAPGwhWEHSVogbbUYs/7kwjOBsowlRBtM5TmmfHSfqT3a0wAvi4CBnQ54f3zZwaVGv9IWHzjV064AjVbiwghHSYqWFp3TuGkIhTG9Ik9E3ghpjno6KzqY1WFjhVgFK2EDCLXXbbLBKmaBfLBAKQJ75F3VwHVBMT6/o+q44nKgYUAN
djvXnyDfXnRDnppVCQ/gKD8iPQAJsVNiwFjFiK7v6BpQWuCI9rmVQumwcGUf9JtuHTBTmLi5k3GYjY4DTBmIA9BsoZrd2/g09OYSeC2Bj8DeYZOjt4dOisvmxjs/lnkfEc+CzkWq1GsRfDx3iz9PrnBFQvq/NfNkAwSAXLZpMcajZMZBiCOKcwLUYt8zpnP1UeFJohtIlp3NPMtmcaziXZOzj4bhw0aEYnCFvgZi/7kZi3ntusFxlcczMfutfMf5
4B+AHNYknJiJ4YrISWYnvi+BeDZOQyoHaOB2G8nJ2EOvPX5+Ic37SoswG/4LCHY7cGFhwtHZXFHDZww9QH1rOOEoCTLHoAegBnYi7EjLCrH07XVQyGUcH7RUQYOHBrEdZZbgBwRMjvYZ07rTMdrzXBw5dAZJR6wMSFeXCSHCwwEGKo4EFDYtpHzQ4epgA5D4HoibE9Ig/DTYvuEDIucgoQS9HDw2hHaQEXwOoJjZ1bdq7ddSdocIT6yFNT9HaOe1
jAscFjQseFjyiJFjlANFintp+90AHaiWcZ7YecSaE+cfB05LvGiEXs1dqoegBn0XABX0Q8B30Z+jv0UQc/0QBigMWWjnLM9M36pO5tbqtBKNDLkcMTmkeBrXhy+B0hmzh/ZlEg5B+Br2j17s8ZJGG2iSoNeEf7MOjDIaViEgaZDN4ZNdXEcxjIAaxi1oQciD4Zxj5ftxi5ZLxjfgPximsTCC3IcIMc+CtBhCqF84jmTiouHiwK+OOkDUYNimAeLM
ES/I8B3Y7DhuedZHrw9UR+ouHjCaXrRRaBzShrMIbq412ymyLXEJjREYhQrzGQo8KHlaXzFuI+kGBYtNHrAb4DZY3LH5YwrHFYooilY5QDlYqvYsgt2a64jXEG4g0JG4j25VXN55FomsHG4KDFwAGDEPAODEIYpDFHHVDHoYzDFto3po1QpYwzuXtF74IXrGwc0ybYcZCagE4oRNJbLabeRKOQYxjgnVj6fBW8RlQW8Kf2XrETQhVFCJJVE13WaF
1flyMNfgFV2gGZJlAJ8BcAJKADfiU5Y6OpdBUjQDP3J2MJCutinPr4duusSgg8fZAQ8c6sDEK9B8nsWB6CF5VcoS0CmWrpNYujT0XOhIBLMemjM0dmjc0fmi3gIWji0TeoPOrzk86js1P/o6RcMNbU/2MVQCusx0hep69o6pC1NFiVDOgeRDPDhVDAvndiTcQ+gO8YyVu8WfCL0XsCcMIhAMWNDBGwHNFkRrhjaopXMblNlF5IBhUVDDDAzoI4gG
twxnE6gpQ4ao7pFaoqbFKY1n6vcc9G/AXnHMA9C63o4IRdQPkwaQKuZG5NLDEvCVBzw37bgYxiEnY7uwpAXSTKAT4C4ASUBCAi0rpwXbKaCG2GN/d1H2w7MFQQt6E2QYvEOQUvFCnGyBCMcdFV4igiZZPipBw1FYA4xHowNTHIxtYLGhYitFVot4A1outENoptEtojHps9VoqVQE3oMaRuzzhdqDr9FKxg6CnowzQ/oRw4z64LYiExwtXiQ4hOEo
QUKlyxtRj7EbRiNkU4iGMcnimMRADM/rU8QQfU8jHlxiTHnVilUb8AJQXtD8cYbcXqEWBGwLoj3Jl6DwkQ8iI4OBUg8q8j4kTJidYW5FacXbBv/j/Ch1i9CzRKwAe6AQABnNITV5DCiZ9j2MRInQj8wfM4l5mLjAHhLjgHjDDTcfQAX0agNLcR+iv0T+i7cYBjnMSRJ5CbISmkUbimwS3D8iFI1mAMuAL0BegIJv0AgQJIBLyA8AAQBuwDgBuxNi
gFfF+ldfFDIv9G08QvCBnNWBBQLgi5gThh6HI7yK3L9rBSW8QgWJn5gXadHkEYDhkwNCHk4o1ZroqnGTQgbEenVpFzQq4F7osbEs4i8FkIxTHIg1r4qY/VG/ABiFDwtEErY9Dh8DHeBMtSZGqBT8GKGUj57YkzF2oxZFy4izFOo50gXdWzHOQ6bxDPVgAd0AgCDOUwn+KY9AOI03FurKFHzfdPaRQzug24524M+CUD0AaDFzDKPHwYxDHIY+PEYY
gHhVEbjEK0eTQ9gSxAEsRCVBEschG0YIlmUdEjyOB/AO0SKlePlVUlaqvAGIHu5JoBrBQkbgSR0esj2UqKjjrheliCeAC41h4D08VVj2MfeCqCTniaCXnizkaMZnIatF5AhuihWFBDvsHhc/VhwTG7Gxwx6qqh9UX/88Evq8W8Z6dkkkwJlAMgxrcLgAXgFuhaBH3jBXHJjbVIshTfvBj8iBMTy2NMTZia9jn/h4EqFEggNAgvAJmGJjDxPt5mIC
+LG+sSwnmEhJFe3FFLZlL+EVod/LLgA9AHoNqYDAIECSAfcgPAAEBLsA4BLsGYpe4a5hJ4t9AdoomiIuF2C7dOFgQoIRCcQj4HtZXhK8o/iZEcV8IhFO3zk/QsEXlTeDhUQ9wmo/UCM7ETENwjdFNwkr77lKTHtI0bHxvEhHCEybHs4nvG6os9H6onowqwoT7Xop8EMie3qfYLkhuPTbEnQ3GKngKgE9ZOfEYnI7H/rP5brAZQAwMU3C4AF4BLoC
VY6YDrd1LgpMmvscgxnpqAh3DkD6zrHiSsQM9lHkUS/gQR9JUXsjpUZ4iasWCDW5g5CzkdGdz4bipipGWkUsDwYrhHMAsOq4VjuNeVYkYaiBCdTihCZ8i3kJYxbYAzjR+nKx7YeHDGkQVcSJKXD12mFlFCXN9BcXmC/FOoTXnmud3ntoS5AZUB1Ms4TXCUYB3CZ4TvCb4T/CbuhAiRYS3WISSikTYSmrnYTCUesBodj4BxgBUBbgMoBL1PgAjADA
gRb4wVyWYwSCs7B6EH4sfrIwyIkSAQ4lFsE4lnExHHjhAommMc+o2+TLKXwbPEQg7HErESWbDIQVHfCbYgUEZnIODPJr5/Tonroqj4WHYn7p/Xgkt4hSFM4pSG56Q9Gh/VaF9I15bno1S4yEjTF1verDRYdJxbCOYBkTWvTbcdx7S4g7HaE4QGS/YA78YwELEYown2Y9UQRI3TooFQZwck/DrWE/p6OIod7gtGLaOEys4DmFwkIotwnVAaImxE+I
AKgNiB+CIQBJ7NsT4au9ikqtkM3cSkNt0sbBG0bBF0sQrQzsLhgMKju5+EGV1TYIlg1bGEUaTvZAlwXshMps8TZoXV8x0fXszIcjiU8aQTKsT8TM8fOjs8XQDc8aJxeMUCI8cc0TzHh+DS8WygILPvUnRkhZ3pv1wHEE8AkRoMSJvG/DtPvxxFiRrAh7piTx8a79J8fZxjScLdTSVJRmPiyorSYhcclplM18cadQnqRDzPpyD6gVRCv8Q0DOgasS
mJE5ImpE9ImZE7IlHfL3HuMUxGKIyjr5oxJGFo676h4qKqm4HwDjAaoC3AZQC7qfABGAGADVAbECcEQgBj2d4ngJFPHsJFUbp4lGy60JQlDo2HYjonthixdu4b4NWbDYFVCrjU2ARYRWy7uMEgdUCqwmHGWa14rBHXdQE5IkvcL04/gmt4s8G3AzvHofMYliEsv75Cc9HPCBbGzEtWEc5EBzCIAEJF3OpZ6wwO6dcaWBzg5EqaEz7iy4+kny4xkm
zksNVaiJIAKAMMYKgM4AN2BwAQFnaA1gbUQA8Hjd/kiESq0da06CDLQwULKlBEjsZ7ikN44iXBpOoHz0O0RpAIhCsJAhJddkcs1BrSfJ0WfkRswuDNDZbnNCCCfRiXSYxjSiVhsZ0RnjqsdUSxdoujj4Yqij1JehC8S5D8eq0S3PD+wuqAIQrhEKjD0WlD7GC8ikDsFCz0cItZNpeiJ0LvNsQEEllAF7cwMSaiFsVkSbCisT7sWkRIKdBTgtgTC2
5SfDDK46PSvYz7H2vTXrbYAMlHuLl58UBjRsXMyrTcFyI8MTfqP4/7Eg43CFGveMHIE9k5a/bR6kQhkxVgiiHFo43BvATWoVESQAUALozVAZwBLsDgBDLO0Ddgiohe4a+6LBPIldowWboucWgPIU1Kf1MVJYQaGBVEkDTdQYKB1EzSAjCWryOeSqL8IV/qsbAXGWgLrpyogEFcE0WGDY5Em7olMmLQuTGYklaE9wjnH9IpwFG8Q9CD44MFjhG9H4
+Fs0ogQcQCwMaAR0tcTdjCq8ipvLRg6rgRVwSKlWxKYI2WKHi+UWrZDyXwdR0XRjx0WeSSiW4D3SdaDKiRjjopljjaCU+SL0AwSAkftDmCe55Y/hWZtUem9PQT0TnIqyhyMF49Eyb2VkyRBjq6ohSpvn8jowSpiSJM0QXcDGhlwA0oL+uaEzRNpTdKfpSZLrpjSkfpjykZSTRcdSTxcbuspcRtM3gK2T2yZ2Tuyb2SpgP2T2gIOThycfFJLugBjK
cV9jftWaD0rJ9H6Y8y50oaxikCOsn3MQ7F/bCT43pdjyaAIwA5EXxLKAcR4fjMFbFOO7Emo4l5tk+OGPErXC0U7ED0U0J6L4x0nZWDljoNTNKMwdxyK2DDDtZBw6pAW6Th0Hr78fZVLzIMmqBqH3xoI40Yxk+VGNw7gm0fRMl8ErUHQUjuFCEzVEZktaG4k/VEHoaQm93PnGv1FmQoZSkQWokXE6wwL5+UI1R8kWsnLHayF0kwZoEYzfoP7ACqI7
XpSDKfVcgBobiBSZg9myRIAMwJeQ6YmtVybI7iYjqlEl8AlidiNb5spI2jvIIkB2YNXhAoMHUjSZXBDiYEIiMG8COVvRTisQ6Sa/vV9EcVA1tkSjiviVeSuKTACKfrxT6iUqjmoSCStcrPpjwE4gsRs4Mi8D6CeirBF9SgNiJXEpT+8bTiDjN0sHqpkiSJLpk/8s0Q7qO/dZqSB15qQ2gvUbPthIvPsJASuckUX0E6SeKU/KRAAlqTuQVqZ3YTxi
NknYSOoh24YNDLgUpRtDK27rAYKmhU8KkY3Ad4Ckkb7OIjoEikxb7dAms53w5G4vJTcnbk3cn7kw8lTAY8kpAU8nnkj1y9nX1jRUsKkRUwPGpQp97JItcnrADMD7kCmLW1Umw5EuV5M2aQhso8vS/BCqwNYyKhek0vAdoHBrabT8npUDGRJSP0wb4IzYaU0Cn144t6N4luH9EhnGoktvEnhc8HGUiTaZkkV7KYvvH6o9OHDI+/gMiY8BOIOcb0jY
FSPMWoDjcfYShmhQBsQB7d9iiid6AA1DbgCnA2ACMAhALgw9AMqTRyUsRKUQPAIiRdFNaLOSOOrRZ0sXHRafgUCLlANw1ydV4KhluS+EANTh7pzB9SgxThXseSCiZsjWKRKjU8WQSK3rQdWXneTqCUs9TkUqiekYwTgyfG53yZfDk4BlSSSCdDwvg8ic0q2JLfIDJ+CcGCQKSNjUMcg4mBPgAXymicqgHeB5ibqlIMXsJ6ZMhSACbzSXgPzTSAHR
XGqEzDD/knmrbE7n72bR1FMiQrDTlDin3MIZ4sdEAp1EXsh7wt6n4FD6nloDzFnw2wnt/c3HQo2kFW4/zHwojKlr3OMrHfb6l/UX6lt2IQqNdTkFJIjLH1UnloUAbECiPJYobnegApw24DpwNgCJAIQBoMPQD2ky8mzERFy6rNlHIYZWgCgodGpUAalyU/AhtYmlifkuzzfk6C5CYr4h/kw4jsld4aagWVFc3OvFaU8Ck8E3Skok7dqpkrpGLLUY
5MKaqSirN9R1YG60/pGaAR4RR9huu/Ab4FhgBiQ39dmpIwrWKrTEQgaDUgvaSjyY6TmKc6Sk8djSOKYLDryVUTKCYTTaicTTscUqi39uTSOqXOhfrPYxoHH6s3phEjo+lV8qcYu94KSLS4UL9jxCYZ9JCVpSdKXpTLyP0BbgNpSBnAFSGlHHSE6TpcWKkDCNqSDDk4dOMNCbZStCfZTSwRnDIqbdT7qcwBHqc9TXqe9TPqb/8TpAdTk6anTE6fyS
mmUyhH6oi4EHU7vrdeTCl1vNOCRUbjhbCWmH5leuznuPZDUk9uweUzhHz4ifKuPPh4eiWCpbnWoB3gC4ksUnynFA56mYEi2kvAK2mRde0lQlWeoA4RUAF8SOhs5SIFTlc+zY4i0ALKcIRlwnN71YXIwPIFDDkPdgmU4vrEiwmnGHg8WlQUlalS0jvEy0tnFy0vVGFGBUBtHAkkjIut4/WaxgQONx4B3C6mHFJ6BzjfbHTeBsneUpkSSzN44sk57E
MHojVrqRIBQoM7gEAA7gXAACAT0O0BW2r9ohMjMB06UDtncUlU0YDeEVysKYOsIydPrFzQwadWdpgLlTQeq5wwSjYILgSGsiNMvCRUZjSraf8CcaR6SkdL8TbyYUCnaSciXaU+TS0UGSJdMXjQyaRx8sAhcCgU6MuCb5DObJVUREEHTj7iiTTUQ6QxsLBDR8QiosyY7tNsUMxV6UWMBCPGSEhhFQmIgdiTTmqNCoadiEGRiAzTnL0nfr/jg/mEAI
uQ9UQVU0pT7kAYC3AYKmDONukd0runk3Y3FTNIkE+YzoF+Ym+EBY+f6uExaIIADGlY05gA40vGkE0omkk0/YGlU65690zund00InB43UnVbDSQ8MW3AIAK3AuAAEA7oFIDUdD7TqZGYAD0utbtdWerowO8Lnefkz0wC3wB0zrIOoQamckeBbFPFxyrcNKQwbbiqvdTwSrrZpEQU5OkB/AQlDE8bEjEzOk4k+Wk501tH5k5WlLY+YmyYHVpJPT/BJ
qegBnAG8BcGI6A4AM0QHgMQAGlGwAY0BUAekm8AyeG8B2gEQlvqUeNQiQksJGIrZq8i8UZco2io2lgtZUqeB1LscSG/jawdsVigIrhWIW8r6jfUV8FhUXDi14WVjE8RVjOKZ6SbyQ7TT6b6S6if6SzkZ6MmiTfSWiS1jvjNwhlXiJi2mu1AwdvBkQoHwSgKUajVftJsFPtLMDHNgAN2I0kHcPoBfgJ6MhafNjIMRRw1lLBiUfFgyx5HYzIto4z1G
KFQmmQ7YRaMLDABg21H1krymXEgjEfXHa7+UhR4QQ4/GvQ97HdkjiCqpP+lcEOcF16d14gw5MEsnZQFA46GHmvWGEKNMz4Q4z14PE6HEQAZwBvANBiOgOAB1EB4DEAUpRsAYNDVAdpJvAfHhvAFIC4JMmlJTfIksoycZJROCLHpNJ7lEiKirIBrDCxSVKrEKpFW+brEpkCVHQieNGDIfHEgUnPpzU8TG9E9JpLU5Mmp0mCkYk1nFd4raks/CYlZM
XLTKUQ6QuIBrBl8V6ZwzG8UKPo6pBItlSl6ejcG/sWUffP1wurlR5ocZFdTaYxT8id8DCiY18aqW6SyiSxjO7ujjGqax1mqaoylUUET2qbiZZ9K9BJIYzBAUnuiB2GgkZsGHBhTJ/TmAd/SFse4z/Ap4y7OibDMsl7CBmWtTlCZtTirnHY86Re8aSYXToYcXTsGbgz8GYQziGaQzyGc0RKGasyaGQ+c66TVciCu5i/tp5jE0d5jNWlMBFfP0BJAJ
c9HUTGYnIMz4yq0uEFX2FUbKgGjx1bTqBFlY8CR0UI5/vf8FaEk2l/rM2lSfG4BLsGpJW4fQC/Aaia20/DFMiYjjTKJumH40jE65DSTYALJl87XJlBMoBEEEqUCl4C6LbzYKTEvFwqPkjtAyU7zzYwL+lThSQw5IHzyJIEO5y2GEkYfLDSxk6j4yQpvE7oiBkGU4hHQMjanjlLOmTEnOnKkpWkIqBkSnQFWJm+d8HpZQrDwdbWmG0h/5EMszHcI3
gBp7A4hbcOUQKgJoAvcBwApgHAAY0LD8Rkj9TJcezV14BqTMKFEiUsZ9Y5wsyixMHiCdIIqCoaauSqvDZ5NyW81tyYjTTmsjSDyWVSzaRVSnSYrc96Z8SD6XIyj6V6S/iQ+CHrttClUazcqmWqkqaYJigoKdgXBiD9OoMCk1UP+xJbu0zm8ZYzekW3j8iExtMgJYBLATNjN8jJMFiZBiogZdDeme7Mk0ScceACyzUBjJcwKZSi1Hpb5ipgkhx4I2
QlFM20z748CEbI5OqQFFzHBI+xH8kwGlhQpNHCk5LFg08enikyGlxzURniMyRnSM2RnyMxRnKM1RldXKFLHfWOpaksIndDVMbYRaYCK+AYCSATAAT2aWDm4IojVATQAu4DgBTAYpR3/OiLk09KkG+ahBggi+DwUHWiHMySkdZOxA1Id4L+UMonFPLrhfksYR1eO7Y80h8Q60FbaC0uJ7C07onaUkn7iLdxmS0zxlqmOCkiE7vFZknak5k/VFAPdZ
jpWfhjAnEBpwKtb0Slvlii4K2sLUMbTSqVSc48a8S6/kjjzyexSCmWniimXbTuKd4j5UY6CzkWEt3adUy3aOIYNagUpiceJi5yPVVd8JoE2aadRRqVyzq6jyzJ9HyzpqW6xk6RNVQEV7w3aXxcjKTHSGlMGyfxnjsSSZnSA0UnDhcbnSqSZMy7KW8yZmeZj3xsczgJmcyLmT7xrmbcz7mY8znmcvJ66ZGzo2aGzdmaoCEahwUUKbsl8AEhA2APEA
l5FMJm0IsBD7YOFhYM6JkXU34I5WTa43U9gEUUgSnwHY3AnbHICWAOUFXYsk63Yp1HlPZu6lM+4mcU4RkGsjgBGsjG7pM3gZsvGP7bzfKA8QBrFDMrplpYFyzIXZVIdpTeYqxZ+bfFUZn3HSko8s+Embo6aF9E4bEDEyBngAoynpkzanLMgJn6ovlb50w6mccXgzSpLBnnUnBn0eJ86CIPtikU/u4wdEhlfvafSWswwnN04wmt0kKlhUjpoHI53h
0BjYDSAFR1skjABNAFtUYAFfSRyfQyxyUBZSEBhgBoeqBO3t45G0cHUF6SOlOkCiCG/tDSwWRuSF4URooWZBYkafuSMmWjTzaSeSWKSizLQWizbaQ1SKCQTSlGY+CVGdKJeMeNdoQVoyS8d8Z+XvLQGab15KMc6yPMITBH4WAwPWas9hsVodRsY7c36LUQVmAHwKgNAoXGW7QjBEBxzsHTl1KUbDGIW3S22P+zNAIBy6wWATrWkhBL7Mvi/YHhoR
50iG5D/CABt0xtlVTdfZ8kv662TGI5OIqaQW40ekfMnZ5bvILHxzKYAIspFkos13joszFnYs3FmBEqKn1s0pSds5tlQsnel1UvUkvJfABIQNgAKgeYaKg0gAFJVJIwATQD21GACIMi8kaMq8nKtHfDYVIjgdoXDD+02DAWgd+m3SE0y9MlmkIaNmk1eZlk/khdFssgCn804ClC0iZkIkqZmLU2NnLUoVmGU2CneMkylwM7OkoUhO4Pg4T7ysmylb
7nAStJHr134NOl9BPJTdafsRaLB44ZDlRjYcWsj8CRjTCCVjT96TbT3EfIz7aceyymeeyzkVFsbWa6DPaW9BxngmT0OrM9vlufdWUIRzE/nEj2aYITEkcIS1SFXNIdhHSMkZpTA2ZGz06gcBuwb2zjGhGyTKUpyVOXGyBccDDA0TnTrKSd8iwcijr3g5SN5m8AG2fEAm2S2y+MO2zJAJ2zu2apytmeriIAA3TDDlpzm6WjCrqUKSJAIptnAGwB2g
EHpmrEF9HjHC64ePZyIlgT+B8gLVk/onVn4E/YmNsCohUqT3jVAX+QFMs1lKkSxaD7atllMywEVM9pjUczQC0c5KEUcymkTQY8o9Qe5AlAigntZBSRB03CpJ5RJllvTH5qwQ4QYyWmB5/AWpJ0Bxl71MCmJ0lpHgMkAFzM9VHDExZkQZFNmycc9GzPKymyEkBzU0CJocNJJQ5fHWmLqecL53aTlHMw4EnMwoHmY/EgPlb9gyQLjHRgmk6BU8qkrs
HxCWPMRBrcNgAL0HQ9fgF7gqbmkdgif2zfqeOTfBBrh1DBRw5II2iukGDTwIjYVOiaD0y0hEIgkFljDkBytsXMCgsluVZDeKjScRhbTkWbIyD2YxyzWXKj7yQqiUjpAxXSi+SKaeujtGUZh2oKsJMPH1T5WrxzjhuB8BIOhBhOcNShiRzTv2VzT9gpMDuqgcA3gLaV2WXNjQOZBjeogKxxabByIANNzNALNz5ufFS3sX9SsKpM83vI7kYMdhzYQn
uhoHAAqFXsuZ7jyXumEnYLk9s1v7PMi+F1qS3Gwo63GT0iUmLRN4C7shUD7sw9lsYE9mSAM9kXskLngs1UnhcoLl1EfLmY3JGlH/Wqmo07dlLtGADOANgApAAmFceEiCm4bAAHoGF6/AF3Dv3NU7keAllt2Wepp4lrbccO6Hkkx8nawAamy5NpkMrGTn1YZwRBIVrGmoUCK9k3qF7EdOB+vWEmcEpxlKzFxmKTNxn6UjxlwcrxkwMnxmGciQk50g
4I+KAfADkCuTZQTYJPMGKcnibkSdWfEC3ibkzXSSQSjWbjToAUez7QRazASUqiAVhxzjdMVJPHGKhf0hAMXIpm8IOKrUdaSJzESWJzkSRJzUSf+tELMkcnoaotRzkGzvgCADd0LWC3gLcBTyADzw2dHSTKY6AseY6AceQIC8eQTztOTmCySaoSKSeMyU2dIDjOaZii6ZmzfOf5zAuRBEQuWFyDgBFyoudyT1gJjzsebjz8eYTzZLg1c8UY2DwqXW
cEZskJnz8DDlyE5lTUAvDx5suGzwJDYHBHYypM0Ujl2bXYlOs/n4QAOsGK1A4BvAZsomsm7H3U1bnw2X44UMmMHsc06i1gpdB/cgHlig+pmCU5CZuVZ0hSoXwSXKBrEJPIOn3GcaYfkn7CaQLlh+wjIEU49bnx06nEN42nGQU2Zn7c+ZmJsjOnHcpDkrMlCntrC7kbMtBl4uOYBPcvz4ORThYj6Z1E2ov8Fforn4dvIoF3Y1qI8sZ6mulDtnfAc4
z0AMuBPgKiot0NYlbgAsCK3MWBLSuUQ/eOYC6GcOMGGYOzO3m7jesVBxSEI2j9kJwyjjPIojhiCz0ov4JwWUuz35CuzblDCz12Y9yXic9y9WdVS3uReSSTngM8aXaCmqb9zcWU+Tw1tfSnOpTSOuYKogcJHojhk6N6Uc+zbjILlPHCNyP2UNjbNpzSEqXClLyL8AZvM7dTyJrs4KTTjq6qWAN4AiYoOXBjZeRAAs+TnzlAHnzlSRb1sKRRN+Xvah
GroJKFvAW4DbkFnmtssLkrsx0Ay8x0By8ykEK8pXlRck3EQouwnA0hwnvMhLn+Yr5n1aKo41curkNchUBNcxS6tc9rmdcq3Ddc9o7HfaXmy8+XmK85Xllc4uYFo724h4venYJT4BScJdBmJW4CtgmtzFgespFEd3gyg9RnOTTRl3s6uCm7HbHME7zmEfWB4cwNZY44vhQfognGoWRKJ/shzyc03dxAcvmmcsmamOMkWkacsBneAg7kishDnJsxnm
aqIY9vgp9ZMWMb4gNPagMWMqBp4ZzVXChXw4aQ9yKOTRj0adkzd6dVyGORiyFGcxzA+STSnyaBtQ+ZxyjMKStaRvoy+OeIxGmbb1yjLbAu3g3iRqQkiboUtyi+eStGLmXyp9liTk6Uc8veG8BPgFmD8SQpyTKdfz+gLfz7+RnSdOVnS9OUmyDORv8IYTICTOWzz91vLzFecrzVeRUB1eX7wteexynORWCheZGzn+a/ykOfrjJeaFSW6bWyACQWg3
psnOmcbJBlRtDCmoMqdCmsVXIo2JJTFI57mJIT4Lwxd7m4hT7m5IiDHG4fci/AebwCPbcgYHJimdvMXnQxbmEQ83zlSnNGnoAafmz85QDz892mZwxpnIQMhAyjHzxlNV+mvspFgazD9RcwRFgXQ/1nz1EnFhwc67bArmmx00nkRssTFbchamSY6DmCsgUZQMunn4vRDmIUsyk509rbt8vXQawtpA6QaEGjtORz4UwL78WG2CHM6unS+Wunls1blm
yOUQt0LgwOAPQBNAC8A12F3C2AI6AINqaxduf5FYuemyUtlzBJydEJozOvylQfcU2aMyjxsGsZKjNlzQWbbzF2W38ZJI7zdyfs1NQHCztWW7zuYWeD9WWxSzuvuyp+cXoZ+T9yGuZaylURhSCWW+SI+bhQAhIRZGBSDsIefHzTeL1FCMYBSgwZ6zxuYa9JuXClsQLcALkpeRPgO0BnGQXzOmZBjBUowo1ud5z0ABYKrBTYKAmQyz5aeUdDiSrUlk
VVhJuo61kvUutkxUmZ7O8YzJBQ/2b+cggXDxAYDEC3jkt/fXnubbzHtAqOwpUroFikpLnfM1JbLgYPlFEUPm4AcPn4ASPn24d3ix8kzl+ZQrkrswgWUCz4AkC8lHI0nUlbswPnrAdNA3kLgVoMDgD0ATQAvABdhZItgCOgLrYGsNqmAfG9kU068mfk7qxb9IlTn8zPnPkvwKKJTygSYD8mF8lwT/skvk6pEyCW/YDkV8jglk89TkU8pOl182nnwc
G95i4I2jd0fKyaYGwsCqkaSV3FsQLQObwh+WHiKASPy8CWPzTwVVSGZnkz3uZeS0caaySmZji5+RfTx2OGdWuR7T+OGqB91D1TvZkjldBfzJ/pLrBDBaJzjBeJyj+amTHBanBxGWjyL+XwDk6eURbgAHgjnknTI2d0LehZnEaeQnDdOYmyrKYzybKamyC6dQK9lin9BxOURsBbgL8BYQKKAMQLSBWwByBXxIy2SZTBhX0KPOTIivOQKz0ALUQsYc
o7nAC8YmnolvkoU/ims8uVld8o8CXYLCywCjMY88j96tRDjEkUo2mmYnYnkc47GUc9ADYgW4B/JfcifAFID5Mxfmi8p1HPnR2CO0rikFuXIX0AfIWFC/fnAI9hL4VaQxbFElSY6Fa6vsx9FdM2mD4uAdJlwnFwA+Zyzl4IVChs1TlHLGvli0vwW6chZlJspZnN8ozn6o6gWsPayk3c0bzngIbk3SWwGD83H7GIUfmhXM5nuc0oUZwfHE4C10Yd/N
4B+gPEBftC7gtQKeQDgM0Rm2ZoAKAO0AhQTrzK0XFz9ecTJEuY/C3Wlwl7ilhRWBS8gCvvXhOBTbzrPDwKOVvwK12UIKN2RVzt2ZbTJ+VKjp+Uxz5BUTTz6XxSChdHshKa+TeFkSyRKZJABuLsJuiTLh2YVUKHSBWY3vLSy5dvSzkOb+z0AKeRBrrgxPgOUQeANsAQOc0Lq6sYhZ2eu8pqR5tDmesB6RWwBGRcyLdoa3ifBXRA/kO5dtjK1AXVD1
ulFEW4Be4e96RUiQDnCy4XXC6I7Rcg3lA015nG86f7USM3msCi3l9AtfhtiIojKC1QXqCzQVWsHQVsAPQUqkjNHoAO4VXC1d4cgirmUo3elkY43AVEbEBLoZwADABUAfaO3BagbcgHAOogHszQAUAFIBW4UrkYCXrlI8viCP0nfEMaHCAvs2B4IUXlH4KUBBeOBlm/sxwXF84nnmEMvkcsoClcsp4If87BEv7BMmTC2TGHc/TmE1E7m7UnOniHUz
DPrALVBIvqTgoJ3BZkRRNJrAhZOkBCz4hYaDXeeVSuYZVScmeeCveYazMhZ4Dshd9yA+QoK/uU+SZLtLC0QmqRuYKjYIBgeidUcVZeSJSKh/k0KjwAtjORf/SN3sbD1OXpSXgMS8DgG/y1OcTzAxcGLQxdPtSSWMKhcRMLT9r/ymEf/zWeRmz91qcKt0OcLLhb8Brhb8BbhfcLbcI8LnhY5zS2TVdk6UGKHcCGKkBRLzzqXszLqYKTjheQ9miAW8
noU0JlRC/YRdcc66rEn+x6YrbGhQSkR+5XYUqNWA7MojJkSAbchR3NBifAIog8AbYAMckHkxmLri3E65mrk6rkQAQ0VsAY0WmiweGZC/jlp9PYhqGNLDtC+kXZwOHZnQ9u5N1NWZgRdFyWkF7bzoiVGK2UYX9Y0Wk6UkUWCEgIXiiq8FzC07koUjG40IzDn4kJUj0zEjn8HJ6l2AnKxzQFIXHMsinEMu2lMiRijkM+2bIdPznLsmKkvAED4HAKQW
gQFuhrcHAByiPoBrmRegYAN8AVVK0AzAT5SXmVQLO7Fs1dSV8LyNCx9ZRTBdOGaRST8FiNreTDS7ebwKKxJCLnedCKdRQiy9RUiyefgiLviUiK6uQujURUujA5vEBouSoKcRWoL7hE2cp4ODyfIcrDeQJEhivkNSU+U3iqRY+iaRdzT8iFugd0DwBAuQQY2RV6LHBVsZlsXBD/kVEcGxd+LJAL+L4gECBNmaMSUOS0h5aM8hYNLwymBRx02UMb4V
hc/AVhUhsVW4JsWLC+KkxcgdmXwiQDrvMemjsnoHfC++ESAFEVoijEVYinEV4igkVEikkVLs24Urs9sWdijdlLAz+HCM74B1EKL5AgJdAGkooj6AdFkHoGADfAMVTxAaUElU/pLkiymmeklraGVe9q12AxlrXbPm0oAWC7cewVMsjkWss1wX/k8vm8iyvlqczbk4Iynlac1VE6c0UUN8wIVN8kAXwMlCku8iIVfza7kPrNDJzwG6RCvDYEZuNLCP
3jvhlUOyjZbJxAS4AX9Jnk+ytRSbSNxZkyqOePyaObuzLwXVSshYez8aSiKz6ceKvBs1zBKZbdhKU1sWJhrBT3M6L03t/D8HiaAskPhxTGUYLP2bIMxqRyLgJZiTOhZGyEEUKC8eRuxixWCi4BSZS5JcuAFJcWLzKXTz4UWoTJhYZy/+SzzaSWGj0AN8AmxcwAWxW2KOxV2KexX2KBxYLyJAGWLmbupLbgIpKq2QmjZEXyL26VGhJAIkkCIhuwRg
o7UXELU2kT877lLoFdA8ARrnoGC0UMkisXzGR7G2w1kkb8+0UESyQBES23lgsvYn8ct9j1/eGBJSI7rtZVYgazHr6r4CVCgkzJpSo7CCrzcBBHTSMUqcsDmaU3lmxi/llyQ1Ybxs5nGJimYUGclMVSilCmWUpYVmczZk9ZbWYO/XWEVQMiYdpSxY2nJznJMlzm3UpfmlCiiWS891Zt065EkihXlLsUrlgFIKlLigB7LgRyWlc7sXPCl5l23N5nvC
MwBh6VMAKgL+jcGDwB8Ga8K9ee8zPhcTBBICyIFYX9iNIK+IS4NHQIaSuTQReuTW/hCKEaauy1xSjT4WeRLkhQjiDRRILraR9zD6bILkRRaKjxQ+SmuRsB4gMGdzxdey76b/gIccxBy+Pcj7nDoL8HnsTHSAbdYeY3iF3hocRiWKyxsdiAjAK0BJALuAhAF2IAJUkjHBQHkQJQAyqoetzxpZNLppSHzvBeKz8sYLk+WAoNfOjESEkOdyYhZO4NHk
qNiJcsdm240F5bi5gA7ivcUHiptzHi08XnihcVQityUOS24BOS1cXpY9cWb8iAApwwgCSAGJKERJdiJAZgDX0qYDVAFDFoMHgASM+PmdoowVJ8x+nA5B8QMIhrHpURmlG+fAjvi9mlOCzkWjAb8W80nkUC0/8VjCnwWac+MUACpSX08oIUSs3vFSsnOmyXWVkIShUWYYc6DaxKX6oS46FvyUxhhQEyWoCzympM3UV8/djzYgIwDxASQC7gIQD1iU
aTtIURgWDvqCSqUViRBbqL4ccZCJ+bAtjRT7z0ZjKisWTUTlGc7T0RWkRm2UULbWYfg32bujhOSDsnWfg9P0hhQ8HgiTBpYP9k2p6L5pRyLFpdJKAxQ0o1Jf0LVJU5KRhWNtYxeSTDMfpKkxYZLpmWONZmRAAGoYQAfJf0A/JQFKgpSFKSXuFKlwvuMHJbJLMZQcL8UR5KV0kwJaiM4Bjgr8BHQDwAHcFq03gA8AgdO0A3qc4BKmNayhxbryB2dF
iVNkisVD8US4+c+X5Q8/NwHSo6UnStvm6swWY9fRUCPo0MwqnR8mndIOnslJDACKMuHB5UxDrLMISMiEYWSS2anV8waW18gVl7c2Dn+CsUXKSiUWqSqaUoUpiUZim7kzIvbBzAVVkcmXCl97HRhwUa6U0kmulliwpk74q6WUSu4mnC2oHtsxKXOSyG52S9yV68oekJUk/Jxc4dmm8z5lfC8FKji9ABZSnKUDAPKUFSoqUlS0D7lSsFLxTRcX1i5m
KEIMLF3Wj90fmZJDu4HTA0CJ/YkIOlLFxeCKi+jlKneXuT1xYkK8iRRKUhSVLPeQaypBfRzERZVKDxT6TT2d9KWqU+SR6ViK2ua2xcRZxKWXGlU6kBANtVpm8rcp6lWWO6Kv2aYKM+QY4DgDGhd0FMBbcO0B9AAFY5pcITEgsshKhSPi/RTBzXBRAAw5RHKo5THK6+a1CFaaM9d0p6lQupToGUZJCPmmHB4iZUtfqB/Zf2D95RfEsjNWbdL+Yk9y
Xb0tcUJZSoUVEZwBHBMgY8AK3DLtN4APAX7QpAQmnOAJajpsy8WGCwln3nJ0Zsoj6UIUIjHlElWJ9wBrBIEThyrosC6Ms9qWfizQbdS9lmAUvqWeCgUVxkxEl4IkCUngsCUJixGVjSqCXBCmbHjeBUA302UWLY+UXqw2TAUECOCOcgYa5gaZELGA7AC8pJlC89EEfcjIXMS82noAA4BffKYDm4FID6AdyznS85k9cRZCbCm6X4gu0XyCiQCFy1dD
xBakLnEZILgRq9KrLpiyT6SxzZWLxjerkvygeapgy4MQQFWiTj+JdXjX2PJ0FbEoNRuUmTD+e/DAJQnK7tPp8VsRIT/ReGLUZQitbgG8BKmWGLH+YGLt5bvKsZetSE2XGKEUQmKQ0SZijJbv82kdzLmiLzL+ZYLLhZcQBRZSMBxZfj97Jf5TmZfHTj5azLpea3S05Reh6AP0BxqqQBcGEIA2AC8Bd0KeQXgMexCIhR1PgO6UYudLL3he8zWqLjhe
Fy0uWAIl6XKtDmzi0e3p7EM67/E5zwdWaonuXP0lqMDhJNQ1YzpAu7ZRiiGVV86SXjCuMWwy+SHwyqYWACtD6hyiaX+M+YU508O4QCnLwMiCuB8kRrA3SAyW5TNnLT6MbyEM0sWnMh1FkSquUGHRwZPYtjm33IZ5MyzulvANZkti1yUyy1+XvymgWsynsWCkpKmMCk3kfC7mXBSqenIi5WV1EVWXqykohay4gA6yxIB6ygAHxSumVfy24Bvy1KUf
BiigQ1rsZbkOljBWsQRJ3ASM1YNaS/UPGVuaikERoCkTOdIbLm5fqKnpa4CLZeVL0WdbKchTxS8hT9KJ0PEBBxexLsRc1L+Fnytt8IqAV3t7KpKU0yQeGb5XCnUK4eQ0K5PiNLe4XClJAAcAHgLgx8AMnVVNvYLEeT/SQFM6N/WbyKOZQl1lFaor1FTnK+kUVYrQHLKAYIHlyoCb8S5QJFO+WwLMcl9dsucX18IcFBP/uywx3oBcV4fdKpGQnixU
whWXCMg9D0AAYA7VUgBoMIQBsAF4CrobcgvAXdhERKbqfAFKrXshPm3s3gbvINoouCecKZuDH7wQXDBek1tpuUu/lgXdYzTcODLS5Req4WMaDG/Cn4SS7lngcqNkSYmNlJkuGX/8hNmjSoAVry7amTS28H6oi8WaSuUVXc+aUr4U3Jz4ZOVOUtYlPUF5ySoUQbYS/+a8/dqnfcyQAHAB4BoMfAADAZcAQ7YoVucmzhOo9+RX2CoXCM2xX2KxxXOK
cUSypSaKKibVy2FeazLRUHyChQ3dB5UDEXlP5IA2nvzZujHyIkWyiSMBlVA5eJLvWSu9MororZOWBKN5W6xSeV7wg8A0plOc0QL0A0pRedTz37kUr+gCUqylRUqqleLytJTjL6eXjLExbf0LjjfLTOTftgFaAqTshAqoFTAq4FbgAEFUCAkFV/KIALUr6ld2DGlZTyxeW5LbCTLyACfoBBjAKMP0UIBmiAcBUfjAA+kg8BpACMB+gPF8pZW8LqBd
+oUNM9hJWgf6BsGGomMQE+xHed2BX8/rC2CjonTcxAaGVCJqoIyn4k8sZmgMiYULy+SWBykaXBy5RWzC6CXIcgdgKgfx47yr6IXKaeEHYQ5kDDPPl11N2A4YYWIWKt643yztBK0KmW2ioRHJ1b4DO8H3ClKYrkHoUpSe83Xl7w9Xk9KsKn9KwZXa8r3ksyzzE+S2LlDspgWDipb7GypLbrAXBX4KsrJEKkhVkKihW4AKhVAgGhUoK0ZUDAXpUTKo
hTiyorZsMORYvcfBY4ibb4iNmpBNZQuyspTrKWoHrLBBflK7pZuKHpevCZGc9KmFcEqTWfRL/eaUyOFQ7KChfjCmpZ143ZXysVlOaRklem9iZvg8YCTzYyuhkqSQeny9uWNjd0GTYA8NgAHcDMAfInHKkefeE68JNSZRuBLPJegAcVa0A8VQSqjAYEyUOU3hhEEbFhEFiNcFRYJ5WacRXCj74q5XQx9iEpgIcfTI29uRy2XjvSqJbuL6qaErzRaC
ZXe8xGm+87Un+8xEUccqOYdGZ8bwYoQB1EA4Bv/GACdJB4DSARIADAd368+K8WvS+05JRGmmq0UTnuKqokrqICmaBNqVF8ieWuy6bjuCv8VeyqRU9E7/myKvSmLyhRWKSvJWrygpVhyznHIU4pVty+CXoc+aXIQHHRqxPMV002zn7mCKgTHKuklsyv4GGcfl6iyfnrAVdAk2L3DYAK3AzADyIVyg4VMiXtpVw7xUZS9lXxATlXcqhHnty51k14fD
qIlfPyChVC5LkeO8ebCuV7TE6KX6feLf6CSskoGDLoZQfzGhYvKEZSu9hbAGdFJjyKo6YUrTyDGgXcJUr5ldUqH+esAJqtarbVZTcFlcMy2LrjKRcfjLOled9ulYAKNpqsqKgOsrrcJsrtlXABdla0YDlUcrJlU6qbVU0rFlWFTAFQ2LlADwBaiHAB+jGIB1yJoB9AL2TjJMoB/eFoBIpTLLUomRs3cTDA91Lyi0JYLEeiqwLCqM85iJQ38iwECg
BPfU1E/sZDINgVy63SQ4gZuD3Zlw7Yj7JIxDuXNSl1wuOneyyZlbotFUS0zFXokiCVJi7EmFKpnnFKuHRGouEGWc4WC5izFJLnIYaHuE3p6eJpW63FpWbQH042Sjv4dNYNB24SZVv3aZUjK7ciBq4NU6873neSugVm414XJU4BWBSz4VgK5LnG4fQAPKugam4Z5WvKuADvKmoxfKn5VHK8NVBq85WYKyrnpS+0XKAHgAVEOABtGMQAzAIwCaAfQC
eitXNjaa4rCICeYtNpWryufwc4RVVz/lR3Kfzr7yvuQxLqpUxLapbxjO7FezoVZeKN4MuVfghAMxCd1izoKtAavvvyxubbdz0aKKxiVd8/pqQBWgDgBBaZor4ZfHKV3vORGtu0LYvN4zrcHuqD1S+BTFVhSkqm/B5kW18pct1K2+Tl1jIALozsH+wE4JqCOUQQhjTGws3VsuKN7o3LEXHQrtxeViB1TgMKpVC45BWOqvpWiLwVb9LLAlUzl+Vb1s
HkrSTKAD3haASqWJ8xhVFwU3Zwwa0Av8ySlzwFpArcoDTn2b9kxOV7CW/KxapKrkUE4HlBMUQWFIqqSWRslFXAS4aWKK7FVQAhnlWq0IXFKtuxocuYlxykEg98GWxxCgYYKU57l6eDrJViraXG09IUL4vjn5ypaK/ADBjxAHAA201xX7C9xUCq+pCuHNfm3SmiUNy9ACm4F9WkAN9UvgQJUUip85X0TNLTwquF0i40GtQWIjfwNQTJwPpk0sSziA
iZZ5GmUSBTEfg9sYI/CKRS/D4ecHTC+WeqRWEtKU5S/I+ASGKhQc0Q9KQ0qXVVTzxecpKJALRrlwPRrSlbMqmNW6rqEbTzWlTpKGeZfLDtr3QABamKNpimq01RmqWHkYBs1bmq5CgWrolR+9YBWxrlwHRqGNdxr41f/L9mezLn6EwIEAM4AvcHABPgG2TFCmFL7Su0AXcJoBd0PTcjDkWq0FSWrRrBqSspkOh1YScTBYhZM/YPcT6aNJQ+VdzsfZ
+VhVm7SeUSK/kXIqvlnCirJVCrGbbt4vTlIy5MU7qzeUoUywLrMyAVO0Rw6zwX4rOq9vhDDHGCGVLUUXy0tlFFM1k/q/HTtKmsVPy9URNikkUlcvpUFQgZWlqveEia5cBias5VTK4ZVgo/66xqw3nxqoBUBS2f7lHFNVsCtwlVqmtV1qpF6Nq5tWe4SZLtq0pWu81UkyauTUSayNWhquEVpYrBURE4RkIAZwAu4OACfALckzJMqWtlFIB24TQCro
ZCz8IOAyElR95FQT2qmKX2qdxTBq4ztU9TRcCq7wYoze5RLCzkbB9Q+YSzLxQuRIkElh8YmIq1HKcxq8Flz11fPLN1aBSFFQY4hRhuxHQDMAfwC49j1YarT1UlKTsL6LzVRk805RVqqtTVqH1WKKLothpjYBzQbBEuqP1RdFO+QCzY3vOK6GJ0Us1mCkEijYjh+WKrJGfHiXuYaLzZYOqO7sOrimTKrchXKr8hb9LjlbwrQScPLyjHBoYeU6MH2Z
H+5EnTtUMKoln9WF0lpYWHLsKjNxswBxC8MEKBr9ZVLwZTQbJARhlVK2mb0s9JWiYwUXxkv2XrqrFXmqijWWqvFVIU89HvfdvmRCo9VEZeTAQWFUXXtI3JueJplTc0yVZy79a3U5lV7S7CKvjJdiOgGYA/gNV6fq6+UXS25CsQDHlWs05JO04G4u4brW9atgC/Kr7n3nYWI7EALiTIL9QIaup5X8vjCaoWVbDy74TUwD7ATUn0ELoqeWSK5dWf8o
qqfgieBZagvARJfUKxJS0Ml5U8g36c1qKVQUqVJQxqd5X7wXhe/dk6QcAPteUQvtXxrRhZ/zxhRfKTjhMzmeVMzZhSA8MAIZrjNaZrcGOZqvcJZrrNbZrxeYzLv5SZTftW8BPtcWKzqbdNq2XYN4EgY5sQG8BI5cuAeAFugf7uoitmlSkGUskJ1oLLQ1ab8zWqKsk6rPi48QRRSvFRIzKOUVLHpRKrotdNdYtSEr9xWEr6uTVLGubxjZaehqh5Yf
CW+C4jXMTbF5ka6YUhy3FXrykIXUa4pW/KjGWnuRaVn3DOVwC7l5i42cIOA+w6bShlXfol3YlCr94jaqsUnC5v5ojNukHAdBXu8ecV7w6HWw6oojw6pTV9s+gX2EhNUaa9xHm83mWZU9AAuatzUeayQBeangA+avzUBa+dDe8qWUJSmKkw6t4Bw60rmXKz26bsqrlAagtxvAYuXLgHgBLoKPbzak9pv2D8S5SLBDyQT1lFwLRqzg0WarqRSnygQO
gjkCeBzQESLRgGdrpKYsk41PhxpFTDL1Dh0ytFWByyIOlRkZSRI6eA6qJAEbr3+fxrgdefLdJYxJGET6qUUbfK0UWaJTdcFT8de5KjhVSqIADMBMQCwIZgIpL90MQBNAKRkoANbgF4NZqpdaPTgfuH1lEpCQKNJhjCiu5rPrGg1wYJtcksDIwAnKuCPEMvjXsqBxZokrV/4JzZKlizDwtVkyTZQwqifjRLpBVbL4NVVLZVeLrFBU+TUus7LNGSGS
pMfAWEmS6alLqyGWzy6GWZKuSUkaxQ5rUtMl3alSVUa1MXFKljxlK3nKj40UrB3elZ6SwL7vDfm7BvQHXC8jEGDa3QlMcrUDRUP1W0y8nikC9YDu6wemzKlTUvCvyUuI0Glcy6MohS0LqQiiABe66qnvw8tXYKjKUzATEB0CGYBOS9dDEATQDcZKACm4O5D+aw3WZTdMb30+RJgkDtLSjU7oNY/hUPiRmh3QDa5pZaXXxBRiCtEv9hjRC8oDIEbU
BFdGpW+nXBldTLhoSbk8eirXAfNgNL9VQjyT1SSquqJ188lRpTeykAyEYGSDHOHEEToJkTs9fEySqPQh89cDYE3jAy8oedi/HgacyIdyD2gd/jyoeOCxiib1WtQ2LiAKTBrcBUByiC7guyS8BiAEYAXgL8Bdwm8AOAHABnAEpraIq8yRxWhNxbj3x9QKrVyjBOzV4DEKUKHVsVWqD0O+cFqi8mhlKFclRCICvqFEsIKm5aIL6FfzrGFatqhdUCrp
6qjBHTygCVQy+alrqy7WgPNEk3aleVbq8aWqKjeX667nEs9aOUFklBmVaifAOjHr5kk1aWLqS371weJXNamXFky3jW3IYI74c/9V1y9snUMx2Fdk0GJnucrB16pmAN6yUgsIZvXA2XUjAwwOGTk7BYQwpX6o5OQFTk3hnQTfhmxwwRk2sjKXEAMmCm4aoBFEO3B7kl4DEAIwAvAJmYB0DgBwAZwDma/FlGyvrmNM+GxLavexJRRjycSt9mHGaaDQ
VaOqa9eOqJdWciS2dOrw+Tezf8NzU1aiPwGmVh0p4MS12xC+Khpdrqh9XqCJUqhBp0i4LT9a0AXgGoUyACKL4JYOyRGENYPFfTrhOURS1Ao2wk4F6Yh2XTC6GPliY3qyI2vmdAudUXrjZcVLS9eKi6OcwqauSLrNtewrttZwrmuQn9bRShljRvwQP6ZXiNVSrq/IfEU9hDdqZFXdrm+g9q77O5ZIOWvLI6a9qv3vO02ssv9g4ekAT5SMzs6d/zEU
jHr5xCxBEpa1zxMMvwQx0i5JhUQiCX63Qb9SmMVzy2SUqogOU085eVKKnFW664rWgClCl4s8fWXc5XiIShYmm5C+74yzFJViiSrMlQHA7rLjWMqge46Eg4VMctCC4VYVX2i4gDxAF4CLJMgCuivOVSrT9RwoEprJPCwVicouDB0xepwavWBlw9eofYbGDAHauHgyk7XK6ldWEa3LXd6rF6KQvvUMGgfUqKvxmPakfV9oBUDktV7UmpftLrcBAUhE
VfLImv6qtzkZx0dbVd32h4btNXWLlletzrcF7gsdiYAOAOUQseTAB6AKEtlAI6At0MKCgQMyURIYOzVaSjAAhBKkUKFOK8otDArGHupOqJIahFBnrzeFQpsifEzF4eXZl9WycFEuBrdvJBrKuVFq0DbBqWFVXqbZbViUNVwra6ftqm9TJ9iDTjk+DL7AQZRqUCzpPLWGdKz4Sf3qN1YPr6tSSrSViRhMyQG8NsTmSECN4sGsPPqGjSHUOIHnrWja
bBkEUv3RXJAITuUksXca5pVDa6+x4oHMwPy3AWulWYG8kveGJGzUn/U8FG+63yVCkgPVw3IPWJhEPXr3VUkpGgAplqhEVyCpEXrAU3Au4ZfYmADgBFEGXkwAegC8rZQCOgJdDUQoEC23MmGCzHcySQS7CIlVLA+i9rIZRWGCWnMvqBnLqEeIYsAn6x9FThMMlN68SZX6vDWOOA1UQco1WuM3/nyK4VZa66Wn5Kpg0Pa8OXzHdLloUmOVi6eaV1IK
6h/PhZ9WQRvjqyU0CioWdjLdhdj3Dh0CD9R2xbsZgyK+YSdnylPRXgAcBUNi8AxAMoAQktKYOACMaq7J/rutYhZK6tiJ8ch3BHWiGVRLJtdAOEO5CXOAa8KNChu0T4ES8pCycpcEgc+Pdz5tTzqt2dRzTydRKLIbRK4tVgaQVVtra9VaKChQyqoVUQaWpRA4sRBNDLtNk8/aQ8jUbKFBSpOiqORpiqdifsFTyE8A+krgx2kQtzGGsLTq6kD52UKw
uFp8XGUnaGy7Uqp6jHpIZkG029VpCiyUg6oeBKEeHbb6wRGfcDslaA2hmH6iY168RJD167+l9UC/XzGmRK/Ypk7sMkOGA4pAkqPWE2H8KOGoE9/XoEz/VQ4jKWnnGCpj0V4AHAcbYvAMQDKAfxLimDgCr0w2X0K6qW8DRA2LEE8C7Za+qY8nixkiL9hCDQlz+ssCKgoWdGMsCZi/k7qXBIOpE7g9/kEamSVEa9XVXahw1bG9Ok7G5GV66tSXFKyV
b3dUKaPxoQkxTRQKbHrwbwhD4hzSFpsUhqlzS4AkA4cE8IchrNqSMVhciqY6dRVd4rxVSSbJVXRLKTQlrZ+Toahjc1yoQS6CZdTBhGqDPVeudyYemboLiCOtBuYNYbNdV6zJTf3A8Lherz+X0yzRGk1zKt+0oQaONIzfJUa2id8WlRbrPVcmyphRDq02ToSSZZ8bsQN8aXgL8aNCgCagTcsARjWEa4zdW1LKgmq0BfYMDFVejRldgB10BQAjACl0
XEqw9VFk4IRqLDVItYI+5l0nBmo2HhgV64zGpClJn3q3CUsq77nbkJ4CdJNBgVENkZ8q79VDwcHD3yqiU1su6WGm4004JM02QaymkqBBIDJwMu4z4VjUGMxEoVwu6FDwNgxlw+05MQPPGcyNcEWG/DWna7LW+y5VGzrFOlLy8CVr2SCX3aofVuG6U3c4+8GhVcpWRmBKgP1B7nKBNU1BGvkgz4FPKeqrC7r6tnIDFV3XR1Lfm3VGaokde8GQ3Mar
HgIQBTQBQB+IUqA3gMoLw9Yfrw+ldA1iERYbBFBcq1e3yjfGJg0EGV05wSvSRGaIy5MI2tDtC0bzwG0aYRb2riTTuyrTRSbNDdgbqTbga69QULnQQF5msRMb1BchBdGVCSzDeIqHbHdpMkKzSzGUiSLGe+Lt1WNjWgOXS6YvgBfgHtJiVT/TR2ULYtjdE8djbE8p8RxAZzbObC5ZlRFzQXq19WYRYGVWSCoXWTEGfBbkGY8aHfs8a7Pofq3jRswK
xoDTrvMmNXFVVTX+6zHUpo5wk8y1ZUSADE3YgLE0vAHE3LJfE2Em5YAkmkQVh65s0nAVs223JnVB4+WVOajKUcdZwD9VA4AUAIwBE5B4CEAU0AUAQmFKgN4DhCrva56xpk8ofhofiAOAUEAY2HdRKIqxQVX46dDXJA6Jq2MxHBAM0uygm6r4eXMNnjMqM0+yyDk/8uRUYqzY3zLFSFYkhCnMGmCXFKnSHbQlgGnGjAjIIfw3EiB9IUwa7Q6xTOWr
+S+biAG+aPzV1rKUaaBgNGKpq8DFQ5gJEz2+X/AHRSn0gWXzpUCcNg6CMbzSptgSwNSuaItWub4RQLq09oUz1tWaLtzdoaaTZErfpa+DO1jLCWFpDB2sQiqUDBybX6RzVU4ApheTV3N2ReCgGTgbq3WFYSG9eO04lOpafDR6q2lV6qOleVcxNcTLM2QO1nAPWaDgI2bmza2bSbh2aeAF2bJldpaojTWzqzXpr8iBuwXQJeQ3gOHKEADwBJANCtai
6naVWKpHH6i/mXz0imL4AX4DLSC03qCIpmY6YE3VigKlUMiz40Mg/WMEOuADIWxnOndlBzG780g2G/Uu6J/FY7F/VcM5/X36xE1Qw+GH0OLKYYEyoXxAAi2rgYi0umro1uFWUCmsTCCngNCVDokmB+mqQbbagj758xgnouZgmDZb03iSig0J01XXzy4U0961algW+TGwMqU2oy4pVbQ/RLZmqdDNLAXEJazFKFmrbFz1DOB2C0Q1A6qv5uKsi2PI
BQBcGFcNTyG/qlwnkb2asIqYMuaB2kHqafmf9J0ogoox6n9J/1UIoQLaBbxGWEVTjUuayAdzrR+USbKJZabOLXoU1tW9Lj6YlqwVeUynydwbCDWUDLxUcZy/n6bAUh3q1HHrBKNl5UFLdKsJuSHLJCgWLlwJNLrEpp86tSmT7DQIRBvH+aXfsAzdjSaQa4D6ixGQqQTjRBbV9XtjLjcRDN9Ugzvoohb7Og2S7jT/j0LX/j3jQATerf1bGbvhbrWm
KVBRXDpWfcEwkj0EIke66kBhWsfXubJ4UZG+ZX+Sns1z/bTUjivHVSAPZUbmrc07mvc1P3Q808AY80oK4InRWxc01U0o2s68o26OF0D7kN4BffBAA8ASQBDrCogUANBjFTbcjQGsFKdG5Vqm5BIDIGz9h3QhDVPSe82lmJlC5AxSk2Mt83TwD800tL80t6xY0eBZY3SK7blrTXbkgW0jVim8jU66yU1QWopXc4lQ0HqwslfrZ8GLZPmxlkurYiNA
xl+3CHBouNHRkjkRSVrrqaSwEDkgWQHMc+mgSGLZ+SsCQoaCpZuzEWV0boNT0aYteUTMDVuaqTfxbdzbSbfpVLDnTbErVMOPA/UKOzHWZSzyZF5VbzaJLU+fdqjVYIg8qpRqWtX/CpCRPRrCcbqQKPjaNLUmaz5Smaf+YEaVpimLjLfut3LfgBPLd5bfLf5bArcFbQrQ5bibZWbPOfWL3dbuhfgBUBd0BUAXgFxDTyHAB3qdDs90JeoXcKeR39dg
jmtoMnFT6RzmPG3U1ta3OVfc9jzm4TQDLgI6VmJMX4DaiQ2WmmMxMUIK2Ca56F76t7H0W90iMW8a0TW3AjTWhY0Tk0GHYQ1/GzkuE3GvHhmCW4i7g4j/VefeuXlW9ABPWl61URP+4yWzq2GmNzzzwK6XaxTHGTjemb1gGMieUJOiSGbrA6W7CmsEiM1LGgU1UGoU00GwhE5KjdUFaja2Uara3Wq7nHUIrM3G6yfSstCvCXG5QKBGrbGOnTLLFsnU
8I9ePT+zVzQ5gCK45jSOa98Gzo4cH/gUUH5rl3M2r2viVz/1vOaZJNvSFtbqyeYWbL25b0aNDawqtDeEqBLfKrfpf4jRjWHzarcebG/mdBi+YrqZMFvyTePmknlDDy55YpSF5cNaMbfGT2oNjaXtYAztjRPjALfZxfQY8gQUC8gDbdAzoLRvqHjVvrzdOtbtck8b99WhbXjftbMLQAT9ppIAvgECBbgAODnAO7gKgEIBxgC8BwgP4sw2Tc5wTZSj
3mSkXl+Wu7FYsQDpjayHWhWswnRWlyVBEqK0zKgGlzK3sUcyxZUjs5ZXbvPmUceSq3VW1sR1Whq1NWlq1tWgq3a2uWVpSmPX2i1dC/AaoCroaoAvAHGHbkOABE034Cm4NdC7qO3DbkGA2nm+tb30rhis0HGWm2a43F3LiWlIoHAf4OFA7ambL9ClVB/IFbnmpXCwgMrLUAW1Y07c9Y0rWzXUWW0Vmy0lGXqKnOkzrdg0d8z4zLY09zL9WsCPOTFJ
V6Z29OkM856CMEK+HDELuav5JVQdUaYQiu5G5lrFJoW80eIqI5WUKA5hPmRLvrVuLfrX8r/rYLrAbTxb4tTd0PpY7SkNcxKT4dMB/pelrXbUotQzDEiQfg2qBuU3YJZPwQnch1al3kpbozMCRFMaBLx9Sfr3ddbg2AMuBSAMcyTAKdaoxqKwoTYOb6CFOK1wbcpJJT7BGBVDSiukRA+WCtd2ZnNrzTSbb3eWba0hUaKAVZ3Kubt3LyrfabKreOwr
NXC6kdpeuC6tMs13UlpVzgzqACa6i3/W2i3763MHqNKnI3IDO13ktbnD2try366G0v4kGYP6vCHhwhG2pgpG2yAlG0omtG1CMjKWpzSQBfAIEC3AUqHOAR3DVAIQDjAF4DhAX4AAgFtl/KuA0UilxwZOTpAvOCgiY4t+x6GnVqWQHfCTohDToeNJDQxVSkzq4g0gIABw4cuhGGW8nmd6i7WmW+w296ta23aiU082vY34qoqbTAI40T62OUKm+OUh
QP9KMNXqAHRTKLOpeH9fZhPB6ZO+y7zSRqv6Trr7tCtAe2E4b77dBzqNWaJ8eQM4mHe6rt3mMzrdTtSUwsZL9qTVcWHXf9G4WzK3dTWa36C7gt0D0KN2Bux+gP0AVFWI6KZhQBCCs0RQTWOCO2OH0RoNHqukDH8sOfHrUbAlafYIIYRWClaA1KhRg8bWdaKU0ahKMbbCTT9bItX9ay9WSaK9XuLrbXxbbbWDbBLROh0YDvajzUybf6GHbeajhqZM
BL+BS47Kb+GplbkEaVLvUW3XZy3y1fq/y1RmAEhgQv63o2u5USAU3BsAZcCkASdkmAPG3LbS5SXm7CxpSGzFDo7qFl6nfEDpTaB1EiSCgkExhcVcVHug74izW1rLzW1dWQOtm0jYhSVmqpM0WqyC2IOkrU8qK0CoOpoQwRemYh0sW0C+efXpudQR/IOvqd2yyVJBNxxUqqi2UMm5nYSRXmDOex1pG5TUdmv3VZGxSw5GkBXB68BUPw9USOO+zV+8
LlqKPMtBW7B00FKaBCg7cpShuMKZElWaqI7Wtio7dmSY7XsbjHbPjTHc6tqVOvr18UbM4LRyC7jZna9Fihac7Wgy9rRgyC7etzSAKeRMAACBsQJsCAQKRAYVjMB+gNiBsAO+dJJptKP9cOKITQra1iEk4qWY2i2uN3a2fhZA+7R2i0TRGZGFB3k21e0agyp0abHfPa7HfzCHHVKrgbbabGJRvaJ1aKYTQJ46Lxa7bWmcD5eJTeNAneHptVUD5Gtg
8Ik9DaHntMO3Cw8r3BLsJdgDAAYD2K2HmgkCgA0FOohTmjq28Df4ItpNOB0ErIyPkzlRLa8OANIJ83jGiMl2wATEAO1rLRioy0QOoaV2G5m6imku2N8lM2uG/Y2aQvtAYwLR012k41T6pdScOfHTIWurV2AvaBN2d0kkytAVr6kHnSQDkjfXSHk0WzQHq9aCFWUSEIl4oNpX42hnbJbi3q/GGF8WsOF85RcnI2/DYCMze1f6+0W1dTAAAgbEB9gg
HbwnSVr+TSqbPxUM1miGwJhroojxTZyygzT2w8Qc9rJ/pSrhHegAEAHc63gA87ixaNLB2bES3RtYIeSHFbhcqIae7cM6ckCvTOalxZEyM8imsJ9avlYVL8rSXrUDQs6p0eSbhdU46QbS471nXga8DLKBsHS6aouOoFfQQUo/wedri4HKBhiqE69VSsbSNQ4LEgtWU8NbE6Pna4aBxlkBlgAWgBnGmweXZ3ZSbX0M9LambvVYZbqbXMKJABU6qnTU
EBkQYdYzAAYDYgdaq4AL6bPS2A1km42Wz1AGaXm6IhlOWO2Ushrhv2z0zUIGzn581LAzox2CeVEp0hCKR3hs5m3GW6g1xm6nkJmoOVc2+B1FatR0sGgdgmgVp0VajB38vODW58C3VS4Si2NLa/m3ibU3hGsQ04StJl4S9jwIAOogMCGO4Kgc00fWxsmVy9IoPtWQ1s6ql00uoQB0u1h1EsyonWgXtiWgOCL9WxbJX0VOC/Oz+1dQh/kfYUvDCMC6
7HQHU6iGdiBGnc07WnTNLJlfy7RwKdTcUagKubTEa05R7wpgNgA3gI6BnANAriALUQGlHiq3gF2DnAPk1QCbLbezePTI6GsRDaG1K4+do7VapC6hnUOz09bPrM9fUbd0fEwt6axbi9coaMXaobUWZbLHHf0bRdYeLXHfbb3HbjiGTS7bvHbLhVaoIkPTSgZDTZPLmPhKlpcqQ7Uba+KPRWsbTUYwouYHfblpafpJ9T0hp9ZthajYcaA3cnbmQana
CM2ua2Quip0wyqB3VOmB21O5M27G1M2NO/uFzkWUCtO+jVbcD3ZU5WyxG5G64U1QZ0r62klXyz63+WgLhec36392lXHYSRNjLAdNCDOZ12jgNuztmlEb62hZWJqzTUC/Ps2W89xjbkY52nOx0DnO6RnYgK503Owa73OlBXuu112O2xzVBO/NyO8KYDYAN4COgZwCkK4gAVEUpScqt4D5Q5wDvNPAlh2u+nnm0OiLEEPSLSqTCNS0TA/Ogw3jqxwT
SoetaP8dZ8eQahbinXnbSnd4zsIgCBSAAcBiGCUlbcMwBAiVugnmcsBCACil7NWcq0Jn/BISBHBYzBsYYicX1u7SK5eLNljMNIPaoBLojAOL3ytydM6gKrM72Lf2qF7VxbjWcvabTavae5RVbWOUS6C8Roznba7LLxRKl4itpAoSc1abtAiNl8VDLljcVq5FdSKnzbSL4UhUB/dc0RyiJjYnneBiJJUNwVCH3rL1fyz3dV7hQPZoBwPZB7lTfXzV
/GqY1n6hdE52ronWGwU22G5V0p3cy1aXUu1WW3m27qnV0EMYJltOsHqYulMDOo3hL5mqXCaWuuoU0AfQeq7y1264HUK2xkmkvB2W1yz433Mb40zO0/GLwFt0dZIE1JpRi4Bwri136ig4bO+E3z21e1P69e3+gMS3CM7yIAgUgAHAHBh5Jc3DMALIlLoYNCOiQgDUpYLXkmollH6sEjRwJKQqJRqWIDPQ1lOU2xNu2ig/2kARwsL9i8KiVHrA/k3/
iGcTdTVzQnkG3ZEpaWBIXeu6FaKM6ZaJdKxKNdLkXUgbfFYtqPeQg6VtZbaZBdG6bbWLq43Ttr3HfQSSXdDbWpe30TtbMbgUh1QBsPOFL7SHSulljB3nTFCLVUQ12nUTy3WHw6zdUDqybSK6KbSJqqbX6rxNRvM+3QO6h3WmjR3d8Bx3QGIp3cgrlNXDD5Pc7qATq7rubV86NuY6B7vrJqHcEGBGoe4TBJA0pATcQduDeFaS1XiwoTS67y+G66P1
mw1XRstY3AW7JV0GxM1JWFR3Ho4d1PanV0D48d0Yug62g+J4AkPOd0QhI3JIXSY3Eyi12ky7C2yvXC2sqiQAu4aoAp6uohFEMDZA836bky5AjsIQ262mx+XVgtnU8evj0Ce6BR86niZnwV6gLXEx39W+CgiusvqhmD8RCO8WhwDMR2CYxXX6qhV3OM1FW4e9FX4euF25KhF2MGza3Iu6C3kejSXeGvyql9T7UZjNUXGK6Y4ZwbrjEu5zmXy1zlkO
fdhIXaTBEyJjkKKblijbcG6lDXzrCrWe7irRgbL3Ss7r3Wg67bex7IGOqBtne+CW9W7Q8XD7BPba/9gUpjBe+NO5iNbIqHzVuqeDTc6JAPEAjAFugN2GI7PdVB7RPUNxCwGfznDXJyJ9Qk7JrUk7pradDJ8Zk7Kybb8zVvqcM7Ztas7YU7GyS8b/QBhbvGdV7avfV7RwT+yIrV7AYIrFRnmuyrkXJKl7rfWAQvTE6mvq9a+CJgSvKsxaKppF7edb
q4mk6MXwq2tzZDPPx03C9ADhex4W0Clx2ZGwBX9i+LmeO423js193vuz91lon93fAP90AeoD2e4sPVRelLHlchzXR6lc32i8RmlKTACNqq3BBgVOEJE9iSlKAk3HHFQ3JOolkYsS83VugvgD8qcGMiDA0lgMpqyrffCn1RpESOjt1wks7VCint3yOuNkc2/LXKOwrWqOzV1IOjR3TE8rU7Qqd0OYNtBnIWpWOUo3L60w7oEMwXlYWvU3kug03seB
8qAlR8S92ZG7lnbi7VnYhq7ZchqMHWkRJgFx7RLUZh0qKEzIyRqVpLdS6J4O0TD7ec7gKQarg7aeqMkPBZyVRy7cbZYSObe/dHLYDrsZcmblPXpKDLVv8jLZK70AHgy7PZoAHPcoAnPUCAXPW568BezaZCRpa8dRZ6llUmr3daidPqc4AKgP8IVCsoAleY48KgMoBbgJmAG7WCbOnc3a1HWRaXdOQI5TvHq6mUR7eLBu7tbTA0u+EwgJnajEhGUJ
UBGAJdBLsWHlx6oT3MUkT3uOIsATO9fkD26Z3/8Ke0fY4ODDehg7T2y92z23i23u/CH8WwiEoEoS2Pu8wHUrQDUY2iADney73XeqqEGm+849okCzvIAw5vi5DK1INS1RIOqiHMmm1M5DgiOIBm3KcsB3eCxV1q6qb0wc01WOGzdULbbdWke9w1a4SYB6u3eWyYaKjbzE61MqNy0eelmS1USY04Om61y2+3XWuwL2FgbAVxGmmU1mi9AO2iK1fkKX
QV2biaQNYe6fFd8q/FUtrSpWobAVQl7bvUl67TSl7dDRsBNQBl6Z1a7bIesnBlRS/8TucirgSB/B3WWQ7SvcNLAPRV79gsRAHcO0YL0BqBGvWRq4EKStZTdZ7nfa773fRh7c5eUc59G45LPJhQMnORbJIX7UrkEeY1oLhLdGMab3xKaboHblakhWi7Q3TF7MXbVSlndabEveGMdzQS69zc978OtLruPbOE5aOJaO9RA5P3SKpNrhKpKNCJ7PfVJB
3e63W1xWn10JWpwlJW4cW461Nbleyr2aAar3KAWr1Ager2Ne1QX229W0lGrkEB8qH2bnEmnOAaoAPCeZLKAUPnKvaoBKVTMDX2skW32101jQMEj14EOAtcPuXCO4Uim2eD0p28RKsm8MzAuup7apADrcmpkSsXYn2ASib2xm5vHxmyn2wO/vU0+wfUNOpb2FGTUDouuaUdOs5Q8Q5jV+fS2XnW4kSZkCCwy2kl0+WplX3Wil3YREiBW4OowHoDUC
vfXoqpPe2YzKvGaKze/cyzcu1EzSUjtJZZTQdeEZwdUZzIdZmbM2dT7sALT76fTMBGfe0Bmfaz72fZMqe/dGbObYcKrPa5b1gO0B4QA8BaiPEB+RruEt0JgBLyAcB8ADGgt0LZjbcE7L9ht1rZaKoZGUjchLtZaYtaHmBAHSnBmUkcQwvTo9Tven7oveuairQs0SrV3KENTgbC/eDb3HW1SbWa5CU3cycLosqAvvdyY3Ndm7GRN7SljYD7zGfb7H
3e8x11RJeCUQVl1Q++v2N+5v36Cj4ksoi0CIQDPhN2VWKgq6MzoNU5AHmMBACSzPTBm1qK925yyLqo7Xguv81WG8b05ahP0zM7TkEe+F1ze7m1Iuxb3qOrP1+/Vnn6uggGS0Jmi4ui5K4u8sRuwjooqmw72Wu/z0O6/lVt+g5Y2m6mWq29USzm4jDEdYaqjVOs1/+9zGo6ye6K+t4WJWrTWq+/s2RengCW+631oMW332+owCO+24DO+lBU/++c0m
zY764UrmLbcDwBcGLmL9fkNbInfiLP/qXy2vfkrI7f+bo7chCgLR0hG3XIsYLYN7XDq27ioe2699RN7c7VN787d4zcA/gHCA5/b2apx1RfpEg4LuoEvcfYreCe/7sbsCKXrfRaDvaTAPrWabU/UbKzvdIyLvekLveUOrSrag6dfWx69fZoBxgGTTG9QDKiQErbFumjYoyQJ7RrYCENdQPqmXZQ63kKlTQPsnKcbQw7ofST65CTD74fafLhXYJr2l
+lGkVqtnUpAeEAPACoieGgEC7hJdCYAfcgHAfADBoJdC/483BRy196U0iWji0RW4IUG7JcoqJXXIPh0xmcOAsimTkdIbO2x+jvUmervW9ux3KgWgd11OjV0Z+o/1G8Zdo5++C15+4Pws0dn3PoiW1c+3AZEQP3IPG4h2ta7VkPqt0VPq34A1KWAOGBwQEMuuul1RHpmTgj412YqZ1kuoe3fej721YL73nun71eoVZ1KA0OEA+pe1w2hE0kQnZ1oE
ZTaulUTL0fRABt/fgBd/fv6AQIf7j/af7z/Zf7r/WEa4fVIjtXev7dXQ2KGlHoAexfEBcTlVq2AM4AL0L1EhyVBs0NR07UFbO6MFrhZ9QaQCskNb1cFcaYk9UBxfOsdwhUfTCu0VL6LojL7VaHL7q6gr6f/dY6T3d0as/fkyNfToGQAwX6HvZvbHyZg6G7TVbn3XvbA8sbAtBfK0pUpPLJwV1BdVX+7A7Zc6urVirgPfY9HQOURJAJIBewR77mXW
p92omibUQAQwPm4YwPbkeH00Y2epT6Nj4ZuDa4e7UFXRKtnLkS7gNf2qPDaW/H0sEzLJsE2EGYetf3RmwC3GqpP1iBxL6Du2n12e7a3NOxWmn+5n0gkHGVkwLy2TI1Yk9dUgm+BYsW+eiI1eqobX1LWfAafCT3xG91aFWiwmy+6L1/yvW0AKwdlK+0Um9m5K1q+uOZ4B/AAEBogMkBsgMUBqgM0BugPU6yX3G+pN0lelN3fc0pR6AY8UKgQ849at
1ER0gF0x9fQ7/8etz9g4cHjg/gpAXezUviijB5ddXV5MEzr2aL9A4cMF7MXsNCJtd3ATTfbz0mdPbYRQMHbHeG6rveoamPVr4Y3bbKcWfG60vUpKobW96cwPTACLFyLXKuULGaYJwgWVyL0A/eaKHQwbFiThp5OqpaZzB37yzU5lJKpSHe/Tpj+/QJrB/VbqwdUzzR/Rma6SRAAMg2wAsgzkGZgHkGCgxMAig2uhl/bSHV/U5bCdVg9JCjABMAJ7
gDOAA9CtRM8k9bWjWPOqqXPOhA1oWDa5jghGKDojPkcKgm0kqGlzaMJrWIIpvgQIMP22PCP1ZiHmk8mmP1K6meVdulm2TemF3b+yz2c2vf2Iuhb1SBlF06u6+17WzvkdO9LXGwM9XjHGmj+vMUjRwGGCd29rXWKzrbnAooiSASQBFQlv0vG+paZucT2f+hLzBBg9AUhqkM0hvv2SfKXYzle3ow5B+2N2bPGawzH39ezyhBmv311IBJzhmon0Qh9v
1fgFAB8AMh8ZgN2QlQLgBaiGt8GlDGhHg8o7b/UdKRWEvTTScDTBYjhSxMK6o5GP5Iv/cjlLHXlb+gwVb//bF7AA/F7Rg9XrxgwiHUvfr6bhmlqvHVl60nN0Vo6DMbEAxea1HL3xxDX3qCQ+Q7u1vIrFvfsFiADAA3gDLTR7O6AvzSSHbYDjIEPXgkq3dw5uvaAzevYBb+vRHdX8SwHNrW267fttbTsbtbu3cfrU5afrYw/GGTsoIGvPRrARA3jp
Uq60n0mW8n1/8koPrU+b0keioN825p3OSwW2c6MeE19Hp3S4ZoMXaR7iyrG9XaB9AXliiwMMh6s1ojDAP1m//17w20NABts02E8YOJUyYPgB5X2QBlZVBuw4NsAY4OnBmYDnBy4MTAa4NzodAOABxLrvM4q1R60q04BqH0wATAB0DX4BQAfAB/fGYBOEJUC4ACoi9/UpTBoeT3VQhgMV6fHSckIMlRa4SkM1L/BpYTba8B4b2v8jwJlO8B1CBuR2
0IEaBn/eGZBGDH6zQy4GEmfIGMCYoGjvVR6INcgaoNfM7IQ+Xrrvbn6tffn7QbWAG3HWl6vBYDyy/XqBBvBLJMQ/K0iRWo491P+wjhmGG7ffQbi3cmGiZOW6qNafo+AUkH95SiBvAwp6EfUp7/A/pbAg76rgg9DrpQ7KH5Q4qHlQzwBVQ+qHNQ8T6FCeKGTzu7rmiMoBmiFj8MxQCB4gN8A8TqeKHgO7wpGjwAAXbgIm7QktUKHBdq4LRZ2rSXKb
wh0CU7+qz2Ihmz0IOw/2oh5p2FjVb3yB9b1gu12AKYfR0oWj96YwaeHL6/n1+eu616B1Q1ce9ADEAGABvASLpD2d0CkWq4lzwdwbWh/d1vehwN0MvgNsOFZ1Xu9Z1eB4HECWvwNr23Z2o2iwGQ+2h2Lh5cOrhsrLcuxH1MwWIOmrJeAjcq2WAwCf2LKLmTTwkIoZBj6AE+7INyu6R3Ger/nCBxUMbG1a1qu4j2Bg9M3NOupl0a2oM5gL8RBOAQ3j
lAcQFFBUtxLV1i+GWM7JfTSiOg68qHID0HuZn0HZ7XM6NA4g70DUvanQwMb/ifFdEQ/r695SYHd7Sm6PxNRbf3ffMNwzdpAEAXdA8pfbIw2YKDHBuwUFEYApgAFjKDEmGqHUCFUw2GbEPdZ7xI0CBJI9JH6wyltmTq8HMMBby4TV91W9IxMIIlkT+pZVtAQ0n7gQzgTaFcOG57TRGGPQDbuLQxG4Q4Manve478WYuHUQzJhzsElAJKSgZsQ6/SeO
HQ0Ppua0Cq4PPnThzoPlm0Z07YrrjWhtW1WEveFDBpx1o6uNVdm9TUQBgN2zB6APriRMObhFMNphjMM8ALMM5hvMNG+iiP+O65WBO2Fky+OojKAOojf/NEUAgBUDfAI84KgZIkO8KUk8AUkXtot30soxXKndOjKfQRzmDqw5Q5O6fSZpDZZVIkP0AhysTh+uFWOQaP2PbGUMDS+UPQuxP2wu5P1wR1UMIRmy06un+VaK442cG+aUSYZFirc+j37C
U7kNg7uHbDYpaHte5ZTxOHbIfe4HOKqKGEzTGbtviv64ozpa2HUGiVPcZjRNRK7odUBGQIxTrAQBBGoI14TYIzAB4IyKGomFGako/+GvMdZ6Y0H5bVgWa8RYAHgXeF7hyoIz7PgLxBjPT2aVHUlUQhXBdtOthBzIF7ih0A0HMkHIdpchaG3mlaG0/TaH0XZn6xw/Y6Jw5uapwyUd4Q+bc5w/r7JZU7boA96GcckE4oMRsHXKo0afQQToSLbPLaDb
bCNsqNhDt3Deokhmv2ne7CJLsMBRGAKYA5YggwbhxklbhtBQQ65kOVCqKNAgGKNxRl8MvOnbD29GvqSofhiKqzeBs5JKSXKWcZihq+gShsM1L+gy3WRyg1Qu1m0th2g3wh2b1Ee5yPywihGVBhn0ysmoMOWrRReclKAOUplSnU354GCQh18GzC1P+540bukIJJRvu02Ox12+sR0ORhxs1ts5aN7VW25euuyauO+L3FHTmVJetKkm21K2iR8SPc6w
DK0+TsGBTXCkKIPQAbmcoBi0KcHHA21FUUHHr2XZJ6x8Z16p9SAy+0vQHUninasnflC9VqwH7jZ/iO3UU6/XvRCeAxXybo3dGHo4H6zFeUcYhRgCI4J1R9dSXKgpLDlblF1w5gGNGy5r2HGLUoGU/Yoa1A/4r3iZoGXpdoHgA86GZwxMGNnUS7L2SiGJ+Esh5YQQ63LHxHMDNGYz3M+LbfSFHuzsfy2okDklIK37OXQ+grwxeHqQGLHoxfGy/A0y
EDSR2SPyRk4MwAJSPhh9Tp2h4APSC+EWm+25XBO9YDBoeq1dg2T6PQL3C28F3AyQO32fAXiC0K2+lq8aINSGdT4jakRDL6wdW60SGAMm534eqNIOOCWsO7uUb0bcwQOQR5sP2RuEOOR8QPqu2z3dh+z3NOg2UeRtB3tOwcPw2UBrTwMklGK3WnaLTCDlBAiOkuyxUce/v14WzSTxAegAYs5QBZoWkMzRuqLwoUVKscgYPIzOwOA2970Hh5wMa9Y8
GhNSyG0zWyGZheP791jVGXcHVHARKoUmoy1GelO1HfwwTbkgxdTnLUTrJCrcBbcDABYrOjBLyO2DvgKGhPgDGhvgKAihAElYZ3V/q4pp0VrWD5qsILUHkXPZBhoxYr3LMQhp4YRHmDcRGsTSRLug6skKI6CHVzbaGOLfaHdkTd7mPc47WPbOGWI4YHoBZtHVBcb7ggffAljffMa/fMUJ3CxB8Q2dGtdXSysA08H9guZzcGfoBqbkerlZhKbXGU4G
N/e+/U3u5e2Rwy8MPu68Mb228NSeqH2UQbmPnsvmOchj2mNM4Ok7EfwTOWG3xRa7yRM5B8SIxmHKAR2m2ZBvS05B6p4CBuUNNhyp0iBmTG7+tqP7+5EOMAjUMM+1Dnahut5D8oJBuwJJSBRzz3kQVrFmOukOjeKJBkR9URUR6X3bB/iNy+9I2xe+K0eh6YMq+70M/Cj6N24L6NPCBZJ/RgGONKYGN8R8K1PR4r2xh521s624Dm4GAAhWDGD7kHKH
XoxJ7lMZ87N/fWya43XGNI1s1OkBV8J4ImQ+Bs/7FMFt6vXaqCjSYn7BHDdLKIz8r1A2THaI4x7K9bCGWPbG7U426HDA9sD3I4H55aLhU8vbt6fQSihY1EBxG/WcG6kHPpW46tjTwxGbYo137CbZXyb49SHWHXpiOKgEHVPUEGodboSIAKbHzY+URLY9bHbY/bHHY87G1cSpr4FA/GTvmT74Xomr0Betz6ACPhs+RUAHzLUQa+bbhlwOwAfeI6AX
fAH1CfAYNDfAA5FCASKzAeh4PsJGMzSGUuDPnPDzZ4hyDwxsvrOwHYUsm/4PSG0yNAh8yMOQSyP1Ioz1YelY04egu14ejXXXalP1OGtP0uGn2Mju5p3CCjEPoO6j2T6X3IiwA2l1Lb7USVASIsQU0Oy2mcO6B/U0damXypcsRn6AD+4fqqBat++GLHeG0XUOre32it+NoMD+MvAbPWPq5VqdIbcandT9j/2EeNHlcm3v2v50VRkM0L+3064ap2NQ
9ZiKb/ZSi88lCbmw1zRw6YL7J2SaGACJRp8LKuDQSmBFKPBPVA3Qua4DWcbC9V9awQ7HHT3UMGMhcg6s/k5GmI7O8XI2l6WNW+Dm9ZuiXlA0h/1hm6N0kc7mmeJbAkHYHGXUSGDw1Q6KULvhxrbZsaAwlDg3moQqEztxxnhBExMMcbYDQhZGE1Bam3QDG1rUWG2AyWGwY5wGu3dwGe3RXyHgL4AhAP0AEdZ8BYJd8A3gMoAHcEIA3gM4B8AHW4qd
hhqMwhnGOthlqNKOz2NIhtUNExrqMbAcYDnc6u1n+6sC0oaeDL60SrVK355woANTfsKOMCx3+MdZOOOXVe6NOh1aOTmCMMbRnW2px710TBvsV7Rw225Gw6Pjs2uP1xooiNx5uOtx9uOdx7uN5esqnrAdaMNmrAOyCsq33hhgB94GfnVAW8wVEXfnm4ZcDsAV3iOgSA0yi+gOCzKJlvO4jis0C/5Wyo3x6RysPT4Gf0GDXbrrcWXJ2DZKSN6iG3gm
eWiufda1ozENZMkLs1YqJH7aqJC7PsjYJ4/TA0cpcshQLJ/9OgxA4DE1kNILYr6LTXaH2E1oGgAyg6xgzTHXQwYHxgDJ7M4zs6YA7LRVQGyhxE7uYeIykr8RHhSsRsFG0bXybLo9c79gvQAhAIQL6AO7wqlLJG0ScaAfZsLGqw+7rOk90nekz3Gkqh1hVIElLspEhSS5daxMYz/ZZUqKxzpXkgh0uRi+KMfaVkVZGaPabbxBebaglZwnyCcnHV47
zBPr+mM3TM5a0WevGOlBiQOExlEPExhn3e84+MUx0+Pd826RMiFj2iVWO2WoubjMle+OV+td2kOl/2Wm3CrBSRkPBWvd0A2zsmSxw/VClVbgQRHxPcOkE2kGsE3uoC91uBk8M8MhWM+Bu93KxwH1g+0Rz7OtE32ih4C+AIQADANBjGioEDm4b4BvAZQBW4IQBvAZwD4AJty86lSNPO+A19xvmAZOR6RXmjLVx260AxKc3w8sXwRGR7qWLIdVDBHT
THCXUepxgIvzS/R5HTeIpAgpHx7uTKpcIkYcgdE2gHS44Gam40VRBkxfH15VD63WNgBXMTlkNMdt9AU4XD1MfSHYURZSX4/eG344+GP4yTKHE0IAnEy4m3Ex4mvEz4m/E5Ek1XUCmJsjiiDcYbGJQ94yjAN0j9ijArmAJgAHyLZjaYAOIA8JIBbgE5CUFacrXY8H6qtq3bISKNZ67No7SlmTEGTJ/8ovDn1RfFrKXlbQs13sTHf/ed7543ZHF7Q5
S27uE8BsWma2BJgoP52pa2F2sJPKh7XVEJlyMV2mQMPO6u1UekfFeeC0hAHVJN1bf5NqspEQFgeGxhRucMPW7CL0AIQAaC+gAO8XJQJRkIJ+UKVCd+nRNQpmFNwp7KONM+mD/FDa71YVDCcSjNyqCElSZZC+pVitWYcoI3x1S4p0YJuqPlOl2NKu6CNF2reNORr2PEJ6JOkJzQDjAcAUoRvqPocJSDeSVz30jG/2LqLGAQRLQMPxwiNd27oNIp5h
GqY4xHsWatG04+MAqxbMHteDCrS8aQg+Ug2J2Y03YjQMyhuYwW66DeXHyvZXG4UuMBsAI5lGzcoAMNg+jyvV1VsQOUQhADAAL0MKAfhE0QHGpsKL0HTEt0CKLOo49HiQ2sZIemdgffR3H0AOanLU0YBrU5Mm4piIY2CaaG5EKbzPkNPT7tJtclBtXK2dBtAj4+BwMrTDiCTdaGqI+CHRw4Er1fccm/eXd7QA+cmi/e47sEwYbL4aqDyjOTIfyYGG
E7umwO2O31jYARLEMFXhPqiJVMPMpzHOhp5muh9mW+urHVBSqANBuwZNCAYZOjJz4DjJyZPTJ2ZPzJxZPxu5VOPRyPUUol6NlGnRNGAFICOgJYpkK5gCYAM8i/48KCtiL3CSAW4DKwnrmqRlZaG7B+1gkfqwPilS1SGAV1nGTNyo+R2WAqmFUssi8qy/PIOQhoJOFBsz0mqp5PbGzsMH+9lO+xshOLC+JNeRjp2cObbK4hjn1hx+c73Qf+xddZmN
btOgkhvE0mPkxE6JJU4UWGZFH3o/8n1gFmhMUcwBsUQM5B001kR00/HoU2e8R/QZKx/RyGSU46AyU7HlKU3ZaAQDSmEAHSmGU5Mqx01CiD2mv7BHRv68bM+VHU86nXU1h8zAPawjAF6nlwD6nlSQr1kKLUhQk9S5ELM81TedmUTQ63gRrPZBp4V7BqFedB8I+Y6ugwqBfQWV0UbI4gZ4yr66PW3Kjk5TH8k9TH8XZWnwA2l6zxVAGvQ8Im9DKRhW
V+nUU4W9mMLh+ObYAa/Jbm5QBTbMDHy1durYgIohCAGAAHoYUC3CWoiT7MEUHoCmJLoV0Wgx/mMBeq7T5+7+Aopt6MSAAC7dpowC9pzFN9xjDgNIGWiHdQNQNY+GBM5dayJp8oJqzIUpRmDaxKIBmT4h2qPLx/IN52teP3JjeMim1V34x+CMdRh64cp8YBWJpz1ToHfC5GcSb0rVQP12Nu5OjelUSplmORG85kwUXRnzRyZ0Kp96OldZkAedd5ma
8Hl6xrVAcUsEraNcCfGdddhg2kDDBe023GPo9QHEnbQH7OEp0/02S12IPRAQMxRwspo4gKyfmG2QTk7HOnF1XavkQF00umKU1Sm105biN0/SnGU97VmelfivilG19aK0zmEO4suekSA8OGsklka31rogrlmAzF1mctviMWusBsQN8B1GtyHMAJ4TcGMqpfgBAiT8WwA83MHNaghJnvTBVBcoHLQ3oLoiQ6k/jS6upmCw7CCCnTRDO3RDGbsVDGAC
21DOCdGcAYZzaMuhhX0iJg21+u7HWBun4Vupj1PMAL1M+pvK0Agf1MIAQNPBplBWOddDO5dTRM3Kl1PrpyL1DpkdNjpm4Sg/MwBWsIwAzp5cBzp+0lZTSCi4addxOjHGVHYfq3yYPSP14IGyIdGTk9osRX26L8Poe9wqrcsJX2fG5MvpmRW5p4oOwRr9PtR8hG/pktOcpuCWfJtb2JJ26i4YFyx0Jxq7KWm43HMD+2N2WVNDO7aXP+6123IGDarE
XpmDM9KHjM6ZnzM+5arMy7GxRcq18EwrrzxIaH2+cxBsI+FCxVPdp/gwyJI6D58ioHQmRZO2rYYBRju1cwmY4zNHsk3NHFnQtGcXUnG8XSnHEM2tHDA2xLVUzsx1U8PKfYK4U2TRvybkH7kJ6bBFQwx2ntg8HLdg5V6QKLURsuO7w9oranhFvamT0y6n8AG6mL056nvU76n7XaBjTOhNmvxUCAAQJoAMxfgB9AK0BV2FugZgPQ9WgDh8NQJLK/U7
PPkpRl7FlJn41A2oZhqZiJUU/TTPFIbTMf2rnTlUdnKuBsi6mvDhmeBt/HRtafroACjOep/HI0Zv1NR4hjNBpkNMoNEAl5gU7q8Qu3zzwJUjttJ/pEgTDi3JM1Kh6GxBtjeAk85RAnpZ0Eof4gtzfAAlp+hzABJEtBiiqX4DHI6LFsAItx8LVqSlZ3TaNYLWgJBOFiP9TCr4NOAlKAp8GQTbZ1XhgIPg+2jZs67EA9Z4k0JhgbNDZkbNLsMbNe4B
JHW1kO4YeWmH9FaGmH0MNnJAKNmFvZNzgykLAPun8hWPsaM4rfhD7rf+xx6txRp4fV5H4QWAYCThg0mZZG801NGC06wnBg6VmsXTn7Fo5Vny0y6HFU+vHxgECB6s4zHrrvKlNYlX7VJFul9BOBZclWE6gfasaQfaiTu03SdyQxIAd08FkWsniTDKTNTIUbTms0fTn+cebrbw7LHX4+lG1PU+HP44FmQTcFnLyCZn+gGZnelOFmA8ONcwjTTnmsiz
O6u+lZNI84fiwZBxMawKTDsKxrE5O3iD3tXwRnW6bmh0Sxl1JusPnROdV6rPWCYuBsMk++lNk+pqPs2tsMIhwhOFp72MKwyzPjARz1wW+U12Zg4wdQ5JRX+pXCGOpGwP02HZThs0PSvZ+Nkh7CLMACoiJcB3hrRftN/rBWo8Z0dPjpgTNTp4TOzp+dNluvpoOpCnPG4JdBAgAECaANEX4AfQDxAedhLoGYCwveIDg/DUAGyhdMJRpUgC0kQ0ix8b
nIjfw6peTpqhHbdmt0OtnNs74mds3tmDs2MBjs/8I702PTgLsbc07lrRs4D9i30+rbtVXRY0Y6DiCRMdw+eusILSe/JJo6oGJU3PHXudKnz3Z9yNtacmVo+CClU41LUM7fTto2rhSEBPT/HT4JJE2xwYBkGlric0nC3XDKDw8Rn0QxsHrsx17KM117qMwgQtNo8gg0rlVY6AwH9sc274GVpm1orT1dM/pmBc0Zmhc6Fmxc5ZmJcxfjnUmUsJfiOl
WVConMk5hUBrRPWMH8jhiKwHaJtoZPq+BE9PHIemaq4J76YsKpFuVdLUrcBdUv8wz2Zp2UNYJ2yONR3BPNR8JMqh1lOvJ2bEaOoEDw5+y1C29/CVKh/oP+ov0Y51tCzTXtpOqyaNsenzOMu/lUIZp85IZ572LR7DNldDJhJGxOMsZmcDx51I0gBxNF0RhL37RpNWgKw1M/C3bO9Zg7P7kQbMDAYbNNKE7PjZ5jNoZ5PPgYBPMVxgJ0wszvYy+dnO
5wgNC8zMg5xcp+hCoBEhhEMdGKzIL0XolF16uppncnXqtSw15wpyr5n0GZWGVpWnLyiJeRTyDABbgGmgXcE0Q9WqcKDDjxhD5ihmTlVFLUom7A5ZRfBlM9jmpxT+xRDfKQogTELp4SLBs83bmLI6Yx1iJlmeir9RxU9NGM/SVni0xG7oQ0vHEJivGfcwCTasz7xDfYyag8x9NYqHwQak92x31SfaSzKL46YDuHeswB6K42VqTY8uBeIfgBbgLUQx
c57nO85/nOC5sYAi5h4TiZs83YKew7EPJWg4sd94GM+uC3eUBC8me+Zlwit4qoTNKhmRjx3bVGSi3RmCN2G2BoezLWdu7NN3JunHmezeM1O0zOO5n9Pd3P9MzSuU37W75NNRahAP0/UMoS3KaWqTyiZOx/0h56aNkOvzO74wqMy5yHW7huiq/GxgiHdG5Cz59wRKGMoCL5tQTL5+LOcMKG1QmsGGw2yfrI9E/rrAfPP7Z/rNF5o7Nl507MTZlYrb
xOdmJUpoiyM5fGDretzbgKgXbcOgXMC9GnqfqhRMcurM9PqYhE0+ogcI555a1kaTtQbmYvig8T5MIOGOjdZHqI1KmLbfZGL3Y5Hf885G73ZcnbcBjmRLULsFdQToyWciC7xeYbA4HChAHPm7btS0nQo/NKpObgWqc+gAtMcCnSAMjDxY9oXcU05l9C1LGP+RzmYU6K6UfcmL1PTTaNpnPmF80vmoVqvmt0Ovn9DswAt8zGqjC0wATC9WKXdRT6YE
RXyBjjZa4XuRFgwE3gDFQAfQiIfbCtRchnLZlMH4AdrMdJ/Bz3u7pOqxwIN9J4INFEfcjbkGAC3AWNB24WojrtFEUEnFjClKJIk9x1ZPuSHZbqpBrPmpeXJx2r8R9pD6788ropVIqQwCIAAvOC05R6CbrFWB380ZKhUOg5hR0zeghPzbcXaSB/eNke5p3oyhHMq0040KSOm3+RoO5+5w1hiAhKhgp/HOce77m3AZcD4w/AC3ACojdiCXOIlU6AZp
2nLHQJeQEAOMBMAKgoS2ZXGNEa3hK6rYG9dUgHVbdkSks/EFJbgjkxfeYIDQAPz1IK2rp49HG2LdDmIQx/moQyMG5U9wmFU77nUcwPKbk0LtrfL6C84xqVnrcirgkLMx/TfYH5E2TmjvBTng08MnooyiA2mHIS+i5OmB/RYWGEZw7Q0fbrw0VISBi/LmUgwem0g+7qjXZNUZACoV8AFMB81QHgRYA0pTyL+jmiB6G+2WUGWU2r1cLKdwFYBPBo/p
6wPUSjWM6JtwseFrwsaShT3YKDeaeUOBbJPMUja5+FhYsHzwDpO2ZqzGvCSzXFNCDHWbShp9NZp25Ovp7fN5pkzMRJgmNdh4tMHxhn3m4N3N2q2E4h+YKRwJ/g6YufWEN0v+w+esyWPxwX1h59xVMc/wtR5gDUoZmOr2ppgCvwj+W+sWOqap0gAjF3+U+6tONgB7s2ehxiO55020sFtgscFwdbcFpdC8F/E7MAAQvWZ6c2qJwYsaptzHDF9jNCRx
aYxYtQpZ6lxZouEQm52VwKwRSKnsTW8qBBbCyIM7R74HdBmS07BmuE0IWeE338+5Zs6eFQ1nPqJeLskDXBhPXfC6i4zTRUKNRBJcJGHfaamDHP+yt0LjDRQaMZxs/UkVpvgBaiFABjHCBHCALmj2ANURoFvmrfhMBincQtUG4887XGXyxGC/EWU84/brPciXUSxpByC3RBGIIaBWaGPBGRPXj49RPAM4HJAteghYA8V0dVWfdB/UA3K3i/snW5UQ
vMaSR0D7kBADjATADgKNg3zhg3zeeZ4FtB8iCAmzHHLlebBqoaIgLKEIpK7X7wTIb4pTU9Sm0pxsNYx12OMpx5PFFh3MvJw/MogxCMM+7eU8pj3NpKX4JU5S+N1bOWYl+xQzBIaZhhGjoOwZroPwZldN/q6x3IZmPMLPFYAWEyTiCJ5x3CJt0OiJoFIMRjxH5G6Gmqkl/LQKaMNOp7APVxqH2ZuvWoyAeZL4AKYBtqr3CPQUpTbkFDF1EPsN0K+4
SYM3kmfi97nhCwCWiXTLanbTg7cJPi5LWGHm91LoCrQFQoo2oRmA07SWsKM2cGS/2mmZSTzTyCGzY2d9ry2VaWY2Q3ahXb2Nybcj6Hw9v8bCyEGFi98AlizMAVi2sWNi1sWHcDsXJlUGz7S5WzKowczrPcp8cS3iXaiASW2fWwBiS3x5mRU9nYsRQov00NZ2sKQaU+ucXpoPmBGEEBx++m3mSMdmVwSX8gnhOXLc9SbdzwKF0bkDmkpS3A6Dk/R6
PCF+iCRYB7r39RmiZmNgMWmOGA37KSoYUGfDIx2ihsi+zywqrk3wq38Wey3IuW5zfMFFqnm4x/NPimqHNsp4wv0+shOaK8tP30Lg3xy0xgJFHB11LdEtqs9QZeciaNeZu9Wzh5wvtp77nUcpdD/w2iE9GcnP1NAX74ACohQAfRziRwgC1o9gBlESZZtqu4RYYs/6+FlAjGIWI39B2XPCMsMsRlzSC7p7KxMQWTaM0WP5nQVwodFLaZD8RTCUiQ3O
+CzKmBCyUXfi2UX/80qnIVQHnMvehmjMIE4MCWuG3FlS75C98gUhs28itVsHSc8xlE84Klk84pH0w59Hq3d9HWioopI+sVA5bP+stHbRBfoHz0ayzQ7hFAtgxgYwHC83b8t8SXmd8XlcqGj6W/S9q0Ay9sXdi2l1L8XmAfrChQ2Ju1B+RCarC0kF1MqZ/8fIAnAspoYz5cg3UNM6L1iodxmoAJtFPgNgB6ABuELJGIBr1I6A/hDiXBwB0xUteJnf
wZB6DJKRRA1yiR3HayM3Pp7D2GZ9eM75j9P9ukovfp8zNH52HOh2smPaOtBmizE1jX55QNBGhSDMlAIRNp3HNWurovqCEWCutYA6cJsgUNs7chNs7tkI6tXn7lrtnX2raP9sojN6ppks465iN8l74AClmYBClkUtiliUtW4KUsoKjtknl9dm7BquOletnWC/eMuJliojJl1ANsANMsieU0WRByrG6qZTPruOmCL1QGADGxXH5gcBDfsdwaC3GTkC
ahaw8WAS4y8sLZ6kI/iO8zfpAgcnAVyhksyZG5nQKx5m3IV5myoVwH2VP5n1uTBW4K0YAEKzuQjAMhXxgKhX9AOhXIs6mdfY0lK27YnAljbsYxYokA/UKQhuJVR4CRgFrw40FqnPBAzNQIHlMk7A6W5abLmy3KXHQ+2XFS38XigXwn9fYqqVDsAX+y0eAFbB0h+uVGSfvfIXOsBUYWi3ImIwwiXkC11VLBd0KXgN6X2WUtVgPdGXcS4JI4y4SXEy
KTealQcIGrch/MSo0JVoZTWERYbmK4sQHNx+jf0hJh5O75z9PDlszOiEkhOw5olU2ZgcNI5+USYA7tqhxumN2c0qNa0doPtFyVOdvV/NhBRxNypoItnyL/NWfRwPbYRnLEkz5BmpBxDCnDtCPcYnrnITbCQF8i6pZmE0dZ13RdZu8sPlp8srtF8uSl6Uus9MnJlZ3hLIaeS2KwIKBV6gnoQ5CSDDNL9hJwI+x68PfocM6guwF9/GZZiACfAbAD0A
wcASSymXyS6jckw4kIsAconuizcG05bcAXK7cA3K6mWBs5TtCPYqzNYKL5ZA3yX4sWqR5SLVgHTLMjJtSq9ptT2ws3YBmEhRDnnc6/m//XHGckxTH5Sycmqs2cmikw6b9fVOrMc5fDRWDGpDSXfDeS5PK2vsIr+ZIaWE83BpkhJFWrg+jzLUT9q/tQDqGcwfLSlVNXNJQyHEfXeHLC26W0fdDrmK/BW4AIhWOKyhWogDxWheCGXI2VjqcdfumAFQ
DcL6SMQD7qR0D3CeMuDgaphlakrML9Y1gYsHbo2mfmx54unK1Z1WQhAtODneJPqOHHoq3RVrPI5IslrZ1QGg+hgtbZ2nZs6vysBVowBBVv6hGAUKvjAcKv6ASKtCFq7Ojx9KiP2lOAG0ySkCxWvqIabeAdQfRnFPJLW/kvA2msAg3palf1aFuyNb+vBP2555O2lp3PjecYC2qq9EWFvP2B1DpBc8r7VPlS/5NYPIx4lgSsElnn5sxrkOuF3IUXCl
EWGxS8Beabv757ICbHQFMBNABclwQG9EHcDGgxM6UHmU2KK88uog9E7hhAnPu64CepckgL+lwhShBmTh2j9SmEU2XSoHj3fkWi05d7xw1/mo3cvGdK52XmI6jmSg+xGs4ym7ykN95B4fjEdUyDwBbMO5ZE/+6yvaVqow3ClmAG2D3EynVs9BiWxpZoAfE0CBTyCQKYAMoBcGC8Aewa0BHQAcB/tF7ha6WdnFqiMSmBNiBkFKAqdKemAO7DGh6AHK
4D3lq7Gd5DmMAVhMvsSYCsplsCsHAdMuQVrMvLpDcNn3Du47FMSt2mu8NcZiAC3AU6u3Ac6tQVlwttZRDTQoXHFqCZDDaGgWK7dUWaViWfCsJNWZ7avDwqOQ7WPpi3M2R4HPaF23Ng5/BNU+6z3OG+p32l+EtkJ/dUBxgv6XKByHmuupa6QMibkwSZTF+gMtPG+W0Bej6un6r6uBFn6sDFmnXjKpHUo6iL2oKvmv065HVeSgjOzFy8tTB1KksCpi
HNAK0A4aBmKQq8R4wq/2GiYGrUQ03jYqa0IAaawFi2SyqhsyK84gWYIZfhXwxmEG8E+DIsVQa0MmhTpDATovwRlkuZHjvQcwVK1Y6oc8Vnqq7Dns/eVmgbUtGFrn/m0a8UmQpa96J+GskpFRAXhpBHmcwFsYtYB1bROLOX+w0RhW+dyK4nVfH6zBmDrcH/5bgDMHYzenXM646XFq+YXp06yHZ0+yHjJRABLq7Q9aiDdWXgHdWHq2YAPbl3TXq8v7
NBu8quBVuADBVmqthVqIANVxegflldl06hnWnFhvOjHdMb0JutMBRjQJnMeY7jAe4vNp9jyPjbcjt003DVGCgAu4fQCaATQDj2TADfAFID0AT4DIRnQvTe8HOtRgwtQPdGPc3FAiybZAj3zKMx0i9A0VwrAWMQCas25/Pkusta5JAdLVuvSqJ8vFmQb1bDgd+2EviE8v5D4s/OSp0kMuFlJIKgYNDjJSpiR6Ui3SPUvplQe10LR/9yEXGcmQwv7F
c61KEs66dXFc4en9ghwAHcG8AnyICbiGYOCA8CrjQ6LcAnhQ0oOozvni1RojqXFgsjIxj0FdbKLSA0DWLa7WAxUpu7ZbBPLSq/dFEDUOG9k42WZS7RzP88UW4M/KnPpTVmlU7f8k3XMGYAxvBiLSgTuq82nBuQ4x+EvCWsAyLXGa84Bma6zX2a5zXvgNzXeawcB+a0rWOWvTX+s1dGDHECBiANbgjABUlsALkwVa6QRB7lFC6HeXyACZA3oG7A3c
yx4H3zk6OHImkAa4mewMuB6SuGoJ16J1zl4p15Z0SndWM0OiQohljMZde1zO3UdYiKJAlI6ulwHaBhA4l1sutQAE/O413Qu+1/Qv77A/Nx0l9i0oQ4Z1ILwao2PynF3YOl++6Our8rwUUV4JMtwtWZXbcHyi9HDWhs4smYeCEFhweatG6wStFAqusVWZ+0he2K5jBwjP0l7IitsMf53O2EWC1kHS7McBsPCtTWZ58RMHRmWtLF1K1W1m2t21h2tO
XkB6PArujqFDGp9aD4t/q4L7BEObWxWqvWwayvSLletljUJWqdk+VWYa+7W2E57Xhg6WmR1Q1X/a7wmRC5g7JAOIWlVSJShBePA1AidDRy5eaWCaSHeKLHXpRPHXEGx3BkGxW7JOJ0LrcEzdk6upKk6Uo2EVkuxsE06WVCctW0o5oTr5bzmSZd3Xe612zb9RkGODcPXCAKPX2gOPWQy+o2VG9gnIE3+9Ug5T7rPbJraXtiBtKcwBd0LiBd0J704A
1l2tu1j2te1grlh66BvBEWBuQNx1MyCjjPaJ8ev6POpYbVn7Xf0FWLcxLatNOhn2ym5mtHAiQClKW4BAgb4BpMYiAvAYNA7hDcly+IogcAJdhwAEGMb1n2v417ePU+wwspfI0ERUNMjTlBYxg+N7Nn1z4JS2EbKH2ecLg86+uYx87Xgl4p5k/dTPHGBdHfYi350/IkmMa94ZNvdUOCfDg13TdE5Blk70vxjSTROkR5wAJdj9VRdP5JxjwBqTCCCY
BCBxgJ8B+gBpbOffsXPqx3BZ66Kx566ykS5VPBl62Q2PPBQ2c+hI3aFkKiX827W38x7XCiwjXj6wqX2G0qXktUS6MK72WjfSm67YKStcHHDZI62EJSINlFX63an8iKLXp8oQAJawgApazLWoAHLWFaw7i2k+vkVs1c7FPpIV/dUyAqbptn/Uwnn+wwLpGBWaWZ86frNAKM2HcOM34Y4+qOOmXkuIPcTzgYAhRUM/7loKQ2Qa2vWjSS0grWMiaCXE
oLMEHackVCMOHuBygtzk6i4LkhGE6/cWPlJ/cOgxQ35OUExvuIHODIoK37cXTHJMF0/6g10Sq11QO73tFyxYYBau23C2vYRNxtv/Txu3BiRsU+60vrWmEt71svREQY1hMkmVMKrPZScqdtC6wfxux1nBP589aBCMOcHm+XVXCYzMUBZlyJOjT+tIl7+sK27jhppc0YANwb4xeukvEg9kvvNHFrzAyiOLPD5obNhgUINkjMGp7OOm2jhtcNnhvNo/
kEna9qLdk8r73i02XPi0fXWG17mCm7pW/SVw3nvYQBeG6qiUMm1AuqOfcoSVZXRG6gA6m8nB+4JI3ZWNI38NBlS0kRQGH7eaX0AAis3gM0RrcJItmiMoC74/C3EW8i3UW9eHfA86WkfcJruc+/HlYxtN3GzCsvGz42IrP43Am8E2NLWEb0W0i2eLli3zPVAmqzcbH360zWWa3DMf61zWea3zWlHSBjPq61AomyXwNcLE2AayShYuAc3kmwvc91JR
hvoKzABCNkRtiNgq1bN9ZucdHWtVbHkHYY2pbjHTmu0NxU43ZB/qvfLP1R7Uptj7NGpLeK0kSWzQBe8YkXOAZQBQAbEB7K8BPVNpUNQl2atE1tQ7yN5fqGgRvREcOcHOo3dbOeU1hqod1WOcmR02Gzf0M6IxuRZxomVRMxs0/Cxtwgha5iMKZHZ17MmKldn6T6xxtPx5xsE5hSoIAc0CzDXNXeNoX2zN6SAmma0OGvEJteBsJtaV3wMg+/wMd15R
MBEH7A1aikm0AewoMm7PHSY27mWyx7m4NcjWnm6jXOG8qXLk3trgS02UQC+fGp3PUgClPS7oC0SB9mtuWSa9OWuznHX+8dhggYLI2VEySC1E70DVejK2gEHK3DGDUEo3g4g2Mzb8Cw5vji85akdM5xcrq1XXJALdX7q49WG6y9W3q0HRbM/hiq8trYUeUE5nokRXH8e5nW6sPmuM9pn4uusBjG33WzG4PXLG9Y3bG0z0sK4b4eVi6odEsWXlFEF0
qxN0LMVJxgiJNhonJN3YCUttJuukcU79tLJsvvebVpJuwvVgLmQ746sMEqnV1EpJeuQVLlvlSyJJovUJM0VocvQluaueC1N5dYzNyHETWBX1pcqc9EdGaURkQXgHpvEtmlj31QxlH1lVvfZyR1IhdbIUIFTO+MkmvgHZYXmhlT7sQjdy11sktW2cWvLNqXlq8jXmroWzWKawWvu8zXm5t73luO+iMLFiemy1n4XOAQFvMAYFvMAUFurocFuQt6Fv
c21RW82zRWUGQZN6K17o7EwFmxa602ao+03M0J03umzirem09M5bWs3j4NchomyK2iG23yxoAk3JW9bWF7hIxQ1OzAiZCgC5XjmGYHa7XVW6r7Dk18W6q2WntfWs7z66jmw9ZjXA8yZXbjLhh7ibjmaRt7bw9C5wvusoWbDaoW5ZOC2kiCig3WxyMPW9Sp7OKu2tNuu3++sbE4IEE4g25Z8Q2zca0WoW2eM07co29XXa6/G3nq03Xq2w3nq8LGYM
SgjWsxU9Xmy8otuPN7kE6Jtswu4UuUhu4uVAgeiCaAY9nMAGAB+oTAC/vUk2ylpHmrzOIBOFHcxkWUXGUssWIiu5DAuRVXKXbfaaqoXRkKkZJxFQCTC58f6VHrEEtA5sEsU6LJHYAB4BXtvLXb1ya5ItqJOxtt5Oou4rOn5zEOUxqQjWcIxWGsJtbAcSVJr51j3DOtcuDNF5ww5DwZrp/NyhOqiKZupdjr1h4tUlKMzn1M1h7EUnQWCjqBLo81hu
qjGoKoJG8n8S23B8y2l829T1LyxG30ACS3PGy7hvG743KWxwAgmyE368wS0TokD56qkXAmVDrSFM+1cQKwR2Reh+DaK6gzJ8yU7p89FWGxTGhWgEW146TGhE3R+KWEnlFp28K2/q7KKJsIu3La4c3YXQqBduDsI2JrQ3c0zu3803u2oM7KXD21pWT66UWz601X9K4YGsG2qXSXR9MFdREhN684M/csO5mRHZWBHWqdHWwsTnWzmlVuVFWFG2aIBn
CG0xB+tJSoQI3Yq4X0zZF5f36Z3stHzD0CXt69t5kiEt2ttOl1Nx1ujluEuuR5p27Wimu0I47xKEPvmNF4VPpucSYs0OMisJsh1V15DRT10kvR5zpXYSUpae2DK7lXZHgmyYuQl0ANbOGAugo8PUSY8E2SAAMRA0hmENZnInHJO1XIyrvpZZO5nR5O4p3lO6p2NO1p3Q5DSWaI52aS2ziNr4V47U1T46JO+EtQ7NJ3DOzFoTO0jwlO/nQVOyXQ1O
MlHn4889r+orH7kntTwagdT269EbXG7dnJAKgxlABQApaQEnnsy9k8qkK3fqwvXdm9mUJWyp2pWw381YMYb+o0RLtOyCGrm6i7Kq5Kn1W5pX6I9pWdW2Z2Uc8UmNLbWnqRljAe+EL5Qvo/X5irUhEsSjaYUnDV3O1I2nW/2GiEK16UGx0L/O+/dAu1OmtqTck3S1DDbCyEaQE3DCou0bHJQ0wIOQOEGQFmwAPPdTq/hf2afqzE252yOapIEV1ga7
5nRNO6pptO122zfTong0B5qRzQ8BHQGrxIi76LQ4LdAp8NKkjurlIckKKUsOLERnzTNk3KtSbOuB8MlbmBGIXSvGFrbgjyOzklKO7e2Cax2GH22UWn287ms/QLb3c63cJoDuZ/SxmNOfeWI+KDFgc2au6SHXsKfG0J3u2lY7Am7WyYUjbdZ3n8ktU72zQA5LXsjQ528jd46vEQcWr3pN2FzSlNno9yW/y883rFZPXwM5O0FJEyx56807S3YB3b7h
l3l2/l2MMBp2ohFp3QNSd7ciyG6qq0w2cm/NHEa4nHtW0jnCkw13mq4YGCDW1XqRrbAJ3EEh8YhjU0qtkgAM+c7+u9D4PO7qlnWwYZVUFoWIAAF3Bi4yHhiwEa4U3bqeldVdnOSt2iUxXyN2JnFWgFBt4q3rWyBnJ2Mu6K3iG8jAcu+Q2LuzcTjmxWl3LKjZ+o5wWZndwXC07ZGNW3F6auyZ2Oy/V3yi8Un9Df928RSn1irBo4fyXIWAW2fGXilc
pJtyIAa0GMHbJAHFTqK4OXaO3A76O6TyuYlZBVWsDlTDVfUowRny79lfQQ/ESQU8ppbCW926A27sp67tq99RiPoX63vKH+jxA5xpKK427ISE25q8REPFq58CN2+ntN3080M8t7gHiVebGNitrj2M8yvFA9Ug3Ebjpr86sVcce6F3Xo/m5kiPuRTcO0koANgBx20IBfgAgA4Ko6AKiP+mXgEsnk8Yi41rnfB0ZLVQ5DJiXvu/e0diGoZXYL913ExP
gdslD2x8jD35sXD2bu78mXDbC2v4y/yMWwy2VU6OM6W5i2qxdo3RmalH0ewS2xLuMXH+s5y9e9r3ce++twANVBi8HAA92FEATgM0ToAOmAMgNGw1ePUAGAN2ZTJL8qPQF3DA+yUGx5CIB+MLuF0gA6Jrm2CEQ+x0x40mFlyiJV3xXjH2w+2FkXgAvGCgMn24+xH2rwZn3XamFlI+z7XEZLn2oK2Fln7Qcji++H2iXtUSK+6n2ZYwgga++kBEZlCn
hnyT/RA4DK7cQRKi4gFhwZQADMAcMPxxq7nbSO6V2KOze2qnX26Hu6n7ZG7V2YcxUWyE2i9nS/ak2K/UsMWMBGwM0blakJt7FJKuXjvbtKOW92tcALUlF0IGg+W+uWq6wK7/HDuGQswe6f8xAMtGkbtkEor3Re4YDVezBQYcJr2NKylnoTTAXH9YD7NnQVX0wUibtfumNn3RlKl2F72BgD72oqxAmmbF1ACIH9h/HI/btI9XgdtoZDuKgA5BvTTJ
B1KH2s+/oAg2KE1PmA339AIiAO2y0Ju+5Asu6gV5Wmt32xhCdT1gMPhoQA+gFGjW0CDDJg1jOl3DuyRRp+wpUrJC9RkPNH8XnEk3l2xAAjAGwADAMGSGAAQBeXVmlY3N32y+5D5h8lP3gwCQA0/LJWOFrf2TgMWl6+zf3ErEDoEAJAtcAJoBggJUEH+2Wdn6Iw8WIRP3lAMxgAABR74DfwQDuxhXgPnIjAAACU/oFPoygHTQY+FIAIA9wA4A7giK
WGjFhKaghDOpY7HT2zfW8HmV2r2/r23Y4MSIc/7X/AXaWzeyYWGfVXbJy2zzHLQDMa+kHm4BXk2LqU73CCOa7/m0j3OOAH2IHE3V0e0JqxuyM8Hmcs9b3su84G9Hsfkos87nis8Hnsf2SG9MX5fRLX6S8Rn9U8mqUG6ms6ewz26iEz2We2z2Oe1z23gDz2UFbMClnvc9J3tM8b+z7zmdcub9gwumsGYbW5HI3guSHtieVD5B2RlbhvgKMnNZb8B9
IwFA2A438r/oQHfnGL7BfcHE8SWaA+OPqmp9B1wQvCdqRUK/7P/YEdYKeLScNRF4HvbxRwgHlDhRigMhA7sAW6CPGzAGf1t0QBA7/c/73/cIcxeBzhjAEUdLoEP7VdjCAwQBzhsL3jEJESno7fe14Kdck4j/AvQEg5+d+/aXs9aVMOsjkOKl1GY4jEUrQQAA
yCkAXcGwABlprzsABL5JAEURbu++mzLUb2d4yb3DQYECuJcAhRBkDZ+IPDBIlf2kys4SplYg0r7TMV3ZHQY2ZOQnWOXsnXvtWjHfhu3bMWKP3Oo5rdtFZO6pXux7KKVwDsIq7WGzAPM90H730zAH3okIcyd+xCZpAY3W0+1I0ZeuE3wYXQXGmD0mxY6AMJY/E3GCLwOXXrR7uXvuGPXtq2bvjk2AU/o7yxA5Ey7tVnxvBFB2RvIP8AIoPyWra37u
8Kzqu7vGJduH8WMaaw5bsbkH6SyIvu2fXGWbeI18AdDVG0D3oQyD3RaBW8omR0UrI8R36vpjAsMKPcGW5KymW4j2RnRvxVBw94qHQ66029qngG8SCR3je8l3qAOj45Dc6hwu8j+40Op/teWyM6bbUB+gOtQFgOcB3gP10IQPiBwAPr3q0OGh9O9hBZyWyG2cW9a/Ws6lm12JKjKgfVTQ2ipp1B2RjltlwIdKBgDAA/vhQArcPyALu3WM+Aa1NKu9
I3Ca8EPkW9QOmlpvNvPMzlng0wO/ui6Cw4J6Lvcv63pmQzpLB0nXXXgIPgGZpji4TLY2onT7c6xIOHG1IO3e22njq+x5gwL8Al0NiAlBcoPBXL/XcjFvrRO/0Xx+loPRW4rHks3oOJW50mpWxtmZWzW1TB3E2e63Qyvh4PWbB2SO7B6PXAE7b8aMaJUmi4Hcv8OdCWPWsO1MY/nw3ugAYR3COERwb3RAwi2C0zV2qBw8cOFdsRgoKAgicIEgMfgV
9z6rKsIQQchT68kPsE6kPM9A/WK8E/Wa4ebnMxQjFhGB3aCh2oq3Fn3cDq1KmHMMiOmUNaHzy+jraZYQ22gMQ2mh22zbR5wB7Rx0Oy2zeWg3ZsPth7sOWkgcP/tHbhjh9yrE8RCLluybgwG0x0T+9MONu1om4w70MCw3mL5TliXMfqfqQGh4P5sZyOzu1Aw8rQehjyEFzxTBV6hAKUojAFbgvcG7VCImcOWU/U3nu8449YMO4H6dGYd6hMjKXgPo
D0jFhJUAzD3h3fXEaKS2tmeS3TG6k3c4NS3ai3/YSoKIOLM3Y2J3WCPRPnjn2W0XXsIkIBmexwBKjUIBmc6SdgeaUOtXpmYfiws3Ywe0mm65CbNKyn38R23Xs+3o8YmySP5W+YOIBt2OKsG6Czfv2Pafhq2aRxD7gi5Q38bmsDuK4HpVDKK6HGkbxzoOyN5xzABFxw/c1eP4OyB4EPIc8KOAgaKPzWufM6YAqghEOvMdoAx5sOL3aOBz2XV432WQ
Qd8Q7oNhX5LTWA50cCG0lTdyImuECTEJM3eox1913YJ2Nx3938y0yHAGzMWM2+6sfcHUQAoYlDKQf0rAHm8B0xZDcWJ2xOkoZxP0FY6zdo+WdEG9nmhxYc3UraxB6dTmOD0HmOGjIWPix6WOgxxZqw9XxPAoabhBJ9xPqe5xn0UvrXnM9x2nqJ+wL4Ak8PByt70x179gboiy7cMPZE0FWihABWM8A/oB6NObgVJ97Wam4KObS5BPA61zFCIJ8Ukn
kKlJ89ssiHqlIxKbimOx9uiSW0b8yW6G2Lk/ePHIIOPRm2IxdM+ROWK8PiC6+FGXG/qySABUR/o1ABDwJXWNxwLjawxoOMRw3WsRzQXdB8HDoC0ePIm+3Wc+7QcQ+3uGyRwk3rxyb8/rGq2Bx4+OR68+Ox64jyZznO6euqYbX2G121h/iTWG1MN/DDlO8pwJs7u2BP6+UEPKB1BPMPpQTVIFu4QldSgJaAqtroAbCuCCnBBWBFP9yogiY0rrRbds
FAq2RjXRmwFUpUj7nxWYxXxxzaMqJwN2ip22kP/SUnqIzN2QGzHVs2+cquJzxO22e23Neb9OhJ66PM416Gjo6msNBfVbbJ6QB7J45Oecy5O3J/g2Qx4DOteSGqleX9OdJxQ29J/MO6tgsh6tdShvcsG8kB1R3g81yPMpU89mACFihAAehxgGwB2Vb8B6ANHda1U2rIfnNPoHfa3EW5cO5G9cO8UDBrK2Wqhk4Lut5Ev/ZvcghlXPcqPrc703Ph0a
wHoKhBueqI6SuLu4XkCwSQ/O925DMa3T3CFAtGhjiDR8PqQR55HJxxlPwU7X6ZfPEABgbkA0GE2jER8U4q60H50+WiOd9Z9wRWwdYxW60mV7V0mjB8VXiR13WzBy1OLB7LPmIAbDCVHCIZkCrPbs+rPMUBCaz0vYOD7sdWG1mgo66jSgQlbQ95jg8AT/RNPixvxoLZ4FZrZ/yP3Y+2GIJ9zOw/ql9TYBow56uwYmaFnbhJrpHI4KTp8oCbWN8/kX
MJ06CRMD5AJe1dpbsOnkoe07QWCSup8KqlOp+49O8k9a67ZysQvs6VOqh5j3h6e6tulW/KAoevtG2cGhRNQzK22XPPJk6KoDgEvOV56DPpazMGX+3HN4gJTPqZ7TP6Z0uhGZ8zPCbPoAE7lsH15wvOt5/uXl57JrGdet3K486nsZznrcZ8ZC8HRdpy4AK7COB4P9qWTOMx+sAvcGOnaUQeplANRgXgAqBWJ1bg84zwBYKhnOpq3bnam493vJ71jY
+sblYJ9usFlABHhJsM0R0RCDqTTtwsAXkWDM4tbW58MN+63wOfh4RPeXltktBPDZUQsCOEe6CPre1OPpB1KrvuQiBmACaTg0F7g+VIVOREJ9DiBh/m3Ni7PgJm7OW6zDDDB7dYGp+11JK7M7HXv9AB6/wOIyDLGep9tntu44OmVDWn82Rm4akPyYPB9UHM5wApeF/wvBF+WP985WP180zZs/hV8bshQR/gil31sjJTiF+8FRKxjHnY+e2Qc5hX1R
y1ENUlqPgSwX97DgD4lVYPOMZev31xyIuAQim2xO9xFYrff3iQU6OOAC6O94akv0l7s2xE/s3n+5JPU1mAulKsq9lwFAuTibAv37ggukFygrMl+GOwB5GO355t2oB0zn2FrCFHvsCZDUvP2TW32gYXuyM47hwB2BB01vcIY45QQMAEABw3fgBQBl59Yu6K7vWqxyxiFRuypjciEbl2/1HNpme5AYCzRku4dPDrk8R/4HYMuSEnlhmjMaFbGHRWaH
cOBcf5wXNVY6QHCHo7fNrRIl+YWWW+COnG+73ZxzL5J2UeKJ1ubgzpWYGkR1q8Nrh9BhW5iPXZ9iPm61AWYbbVP1syrHNsz7Pf1t3WNegk3FkF+0G+4culIDMgbHosQGY55QPxN6AgBNb9fq/1P+DrEyP3kE4nyVOGkB6Vz/m385RfjAAvlx8mUF3jWZq0KPi5yKOVpxwqhSgCEDUkrFj7hny2Guap5Zwo20J+Qude1BGyvs54HULTNvPEcoiDZ3
24QZ8gBBq574e0UPCSS2my2bbOtXs5ZXnJaP029tG4vYXVneMcqfcFoiDV90qTlaSKRJwOKjbZImQ9bnhxgP0u/etuQhl3c66iKMvxl5MvhBVsGdBX71TV0aufy+/OYx39XJksGh8AKHzh1mWX4IDf1N5kBSRUTEOogWfAEnn5nB4zwGAXVbBXgnLr1BjKvw21329GxN7e+xV3854P2/azvXbFzG2x+w6X8IqZXKE6hGDjFy9lS/qHVG4u67fFNB
8hxZOWa50WVB/8vTYLCMxfV/6A5iXR8/D05VNLKEkeNnRK5G6x0eD52VO+bJQ1v2ug5EVph16OvvZOOvJ16KFrO59PdUyDSPHeJOFu052lu9c8ZNAOv51yOux1xOuzO9Ou/V40vhIy17sppPaPm1ood8DpASS2sO8G6d3LJ19wj1MoB4gIQA3gNMlTcOMBtyJYBEWeUpPgNuRES+5P4W8XabF0927F/QluYqMwGaqblSSf1ksENpmuSP9gTS2N7m
55Qu6PlHgyfocpgOACRzTiIrjWPxRH4DLYgDgbTX637lXW6H46u5R7bM5wuIR0dWqKdhFGkqdEhAN8BsAAvzv4z/WfTgWChekCvypyCvKp+K3Dx7QXPZ/IvTxxoC5W6H2ws7RU8NylAsc75BOa0ZBusHaYyNx9hG+EDDNW1wcgg9k2J61fGPx3JJDUgOk0bIUYHgO5GqV8bg2N3AAON1xvplw62MF063nHJhYv2kVgr7Ge4mtan020MsRMYExR3W
f8DhVxhPsN85d7FobACeUNzozJHAe50LUxGEMzbp6WuxBw9PndiPP/e3xuZaLrBtV9UPkl66VDVzETRa1oifV/luBa0bz5i2DPFi/ku45tUAP11+uf1/EA/1wBvCAEBuCcqBujlUVvtaxevoxzyXYx3z3+DjpBdvesZu2D+OB2A8Aeo2Yv83HuSiTsgHSAAqBHQHnHSAC8BEgFznkiP2t/ZYyu0F8b2A65gvnHOpR13MiwKRGdAKWVooudPw1tFj
1kPYbk90JyV3RVzJyH+rd5icZpvjKsRu3HGhazlBtgU/nW8/KCBYKYLRuy1wbPyY5IPGNy8vIRyxuZfLuQg03pI6MzbPdkv44GsDywH01zXJPWVPgm8Ju9xwoCDxzVPxNwSPoV0SOTB77PSRwivFW3dvqUCXBHtxeq4IGpvSNwhn3t4jEMmzHPaRwc76Rzt26ljTXKyTwwgoE1q1h6TGrN+sBwdyaTsAFDuC14o6qu0XOlpz5OXNzWBbvKEJTkCE
qMPbyvW+NQSz3PChG55huKF6Z6kgRLYjyixBSzKDKVCyM2VhZIN9eCwvbG/kCCnKHmO1yvh4d8UmAE4kulm7quL4UWphpBrJAAAQgeEkAASCDiRPCSoAQAAkIHhJAAJggIS0LUbu6yOTu9d3Hu693vu4D3Qe93nzAv3nlW9SWk24GA029m3828W3y25gAq25QVhalD37u893Pu/93ge+D3nW/IbAa5xnrzaZU0BKGGLemI4iA/M3Cdx53jcrATnw
EwA0piKIMLyrVvI2UA/6f3tzAFMXDK83rUjYrH0G80LuqkEg1US0x2nmkLPos8Qctx6ZKFXuz2y413r5GJ3IHXUSHqiVnngkp3r2/I3Wm8YX2BEb6Dy69arFaB3bLdeXIZfY8puCidMwDo5k+2h3yPYawD3m37Pa4kXwK6kXoK/3Hyfcx3eLFBxfDIUXVFSan3+bk3MEJX3D29WR5O7ogW+6I4b24o32m6fH2i563DI/GO3pZwZr4qBso06QHwgo
b3wGqv3N+6qb/e8kbTK68nLK+Wnb6nhsYVBTy9Ss2g0+5Jx7psVuvgTCgLmd0bPi/0bDKbK+o8uEYqGgA5l05u5kk0cOs+r1naZrYXBdNVXPGo37fG/k5Kcu3HGPaSXTE7OFbku/lPdPkP6CvcjdnZyXT/Zzz8e7cJC6GORLe8wAbe4OAHe/PZ3e4Gufe62DL8uUPWM9L333Lui+gCSJPACXYJ3bi7zNkNMqi3NOxJKLuqfQegY8YSe9YFykIRWw
+dSIaoh0Tz52o5H3Tc7V34Uj17pM7hbMEcg3My5LXSq/q7v44oTQ8+rXthfScFCBsLx8svVn0Elo/FZa10S7ZYfG6ekOmKkPu/d9YgAGQQH2bOAUuioAbOj50BfxyhAOSzxXLS2aJORZyZOSoAD6qDOKo/OsGo/6ieo+NH2ULNH/OJtHzpz6yTo/dHj6dY9kScwo0ntBdRbuh6kMe9H/o91Hho9ZaJo/6iUY/tHiY/aiLo+dVSw/dbv6sJ1A9DFS
qABA/egA45F3hrtFIDEAfcjxAPyI958O07bs1SHuK7QHjTjUfA4EwaMUKB0wYfj+UEIr7IRCDdwDNImXBHdhtvMAvgzLKrCrB0kd4Le698rv996jsBDhaei7rbcCHrV1c47pfcpt9u120lUXgBZAMJplTT6B9Ip5Phj/EJwszj8/fYRLGEdJBUBbmrgCFTlRLe+mNOI70WNELc8eybhVtXjzrK6NUE+FJmZCQnwh1K0PDxYOpPu4jsTff7lHdv7y
qdbOwqvStv/eMFhnf9JtnW0nzl0Mn8NfYNOW6VKslWVvX9jpOI3algLdzekkrgftYvHlwYOkuynIuY1+qNSzvNdIn8DexH5lNQbpzcMdnOtMdrXAPAehpM+3lMViREEZ9ZYIdd06GGNUs29dnQPtrv5d0wBwF0wHcsVG84EHoTJL7kZOIlc1AAHAbciOgADOQ3U3DxnxM/Jn5cCpn9M9WJq0e0R1Q+iT3JcaHiGdxzE49nHi49XHmsBEiu48PHuD
tbB7M86C3M/Bcgs8Znw49bdnRMHAKYAeEiLtF9zU88MVbIDo2EJfBfrLAHGmDE6ftKfWam0uqTWBWmQjghNTnrbJ3dwkl8is5rnLX2n6I/4HjydxHxzfEH0cdjl83v4RE82pH30+3JBqiNYWrXPUfRcLlpSDn1rxevrttdPT0edl3EnGf4Cod11kK3qiTOg+zETSdHwLQAXvI5Y8VADO2UuhuyDVwRbAnuhaJ2Tb0YXg6hRfz5xZkIjr7URXNLDM
SAf88daIC8ezYTSgXtTsQX7OzQXwLZwXt1gIXsC8RhZC9zxVC/JyK5rFn2zuzHknvbr0FJBYgo1h67C+AXvY/AX/C+IXoi9QX6uSkXmuLkXsuiIXqi89OFC9cXq5r1LwcJdbns9/VtIml192vPjFIBLoK1gsdJUHFS7Up7F69dYL/dys7a0Ae7SWjPhNyrz526QPnJvsemSXcHKSvWrzfHFhk6qj6R4l7tEyx5wn67eCGKI8Obrmdi7wedrDstOP
LvE95+81KrzDCBHy9z260ivWJ9SyEwZkQ8RVEHeyDmXy2kxSBvaSqZ37sQ/Mnv4adLyedfGgA9SV8kfWXolS2XiIrfIRy+MeZy/5QPgbin6qcQr5DZnh7hkez7Hf0FmFeZN5U/BBpK8KgFK8pHpw+HCTHDDFavRJC6fdq9tFvC9tVCBnHUtWMVGQ+eXyM/m0I+bn5g+5rzy9C7vQsi74fvdw48+Md59tzkB4AAZ1jujNqIoZwW2Chx0k8mo8kQV+
/EuxXwkvIUPjeoUKerZXvAUwpTeednzM9ts++dPXtdczH90NlbvedZxys+pLRS9ZLegAqXtS9yM3ACaXncjbkPYtbB169pnrs/F72YeVCz4CIMOADulIc3Dn4qMAkfffPnWNdaKaVD5gV/pkEhxNZd18hKkdWCaj4ZtETua9W57Gvt4Ra8D94XfnDxafont0+MtpI8jb9MW7XlYW+CPhilH51WLgxMfmtDlgMzV3vP556cZXp0Z9B+ict0vtel0N
uL9xWo9hafOiGyEuiaiWzQ2uQAByID7JPbL7Jlb9qJ1cfwFJLwbJs6J7EZ1zLf65LZp5b/qJFb8rfVbyHINbyXQtbzre9b9RfctKheHNMbfpjzPOMdVfCmSxDSUrVDTXbsd93ZqHE5b1sfLb0reVb+rfNb/6FHb4OuJLzRf/NEbedO3XnBI7rX9N/HPGR/eetsUJCsnkd3PT3sWsD4Ao1L8uAl2I4Bo1ezOVXZzPmVz5fnN9MZlyt54NYAjFdaAI
x/4DZwIqD9YjsA7PJZ9Te46x+0oBk1CFlE9IIxRI7WEGzJiBIMzUR4kfx3cPPq/XOHyMUURsAPuRvl5y7lwOfQ+Fy7SeAJoBT7Y6AwWeLnflz+USivf62u3dePb2zKEjTbdxEVmg2AGYBVgO+7kdZ8lTOnhmlmmOAB6As1QsnZ0q86wAa86l09AAGhOAOMXji99UOOgHRUupfeyunhmJuy0AL71iBr70wADgHfe3gA/fcuk/f8AC/f4Cm/e9MqA/
mQCnnZET/f9AH/ehi4A/9wEojMH7hm2MzSCt1/67mS4sf2LyGPQslA+r7yQBYH/A/EHzV1kH6g+tMug/dMiQ/P71Wjv78YR8H0cWksYQ/gH7IjuH+A+4b6nedW3GPJkU9uP3rwa8ZDWJzNxpKC70QOF70ve6Xavega0zBN7+MBt715eq70ze5l7A8PsG1AgbMPBgMwIwRYg3hMyH8mmsIvusJ6rka4Dt0AcEglfh6oWzSEYw0pMPwVHNINFTcghX
qL9ukt6buJxxwvpmy/mD7yH4TJcfftK5VPzwzXby0lABFovuQi7yXemt8ATzK4qAQNCFAKHYakCC8WAv+uCu57Vjvjx0VXmrxyf8dxeP/ZxANHHzxBnH/Aih61V4PH9Mw9YO/JFIPivvPuABaoLng4ABuwogCcBZidAB0wNkAw2PowmgAwBZzDpIFr1kjpn9CB25CIB2MLuEsgIaI1/QgApkF0BZn5tFqmEGkUCkUQpn333SZ3M+tnxWkUCi8By7
4c+FnygVln3Qbzn9s+ln0P3igDc/jn1kB6HYejHn4k+UCj7b7gW8/Fn/oAR5vbvqzN8+TnzYTAX1kAfWBFCHn5s+Ln3c+f95qwQX/oBxlsJaHis/Q4X2/x4aesBe8Bs/5n7c/fn2JR6HSKB56BehNmvdV0DFjFZgBrNMPKZufToNhCX7NVDJH5wD20xA5DADMDCZAAjAGwADAAWSGAAQBXXc2k4KL4I1mHC+Xn1H5WHrM/gwCQAHSpIfsguK+TgB
DlZEAfgSAACBftAgBxlrgBNAMEA2PPK+0/qdR4XvgBjcLDPqMAAAKJQjb+Y1/+fK8D/ZRIAAASn9AB9GUAcaAHw+r9wARr9wp9iwFArr+38kJ+tfAr8hfFmCufbYiiSbQGEP72wPoPaEXoExVQ2qr/VfnIPVTEOU6GmbGGfz0eEAKYb5Bz0esRkXSYAAwAlYnILTfnzRVfar9kwnOAFfdgCXQSU2YAbwEzYfayVfeb6jfW2lzwfiMYAiTpdAnL4w
EYQGCAfiLfoCbFIiY9H0AaL5t3bGixA+gFeSbb+XeMgV9QB6HrfVLvZf89gP6uGJvoid0OoD7iYiBaCAAA==
```
%%

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 KiB

View File

@@ -8,6 +8,7 @@ tags: [excalidraw]
# Excalidraw Data
## Text Elements
Server ^IFISGtDh
@@ -95,219 +96,450 @@ recognize ^cbFaiqgQ
sendInstalledVersion? ^wHecIDrY
Обновление версии 2.0 ^k8TgwAx9
Инструктор 1 ^HzN3hTVf
Сервер ^fYkwjWON
Первичное обновление или обновление не Scenaries части ^S5OLkmcX
обновление только сценариев ^ILG4z0FH
Обновление в полном объеме без уточнений, по первой версии обновления ^BnztnoYb
Дозагрузка новых сценариев ^6KtdBRKv
Пересчет docs по canPlay ^HUV0GHOH
Отправка уведов клиентам о наличии обновления ^wUj0KJs4
Клиент ^gqufkQsE
Клиент ^DcrY1jCl
Клиент ^VC0b0ofc
У клиента все сценарии в наличии (отправитель) ^5MmswpU1
не делаем ничего ^vLRSpFhd
У клиента есть не все (при обновлении кто то еще выгрузил изменения) ^YSGYSqjL
отправляем docs ^IuuYIAuC
отправка ^hGggwW7c
Досылаем недостающие Scenaries ^1aR92hQv
У предыдущей версии удален какой либо сценарий ^OlPkE0Gx
отправляем docs ^NtxU8Z63
отправка при уже не актуальной версии ^Obzi2qJ9
Дозагрузка новых сценариев ^cwhKgQjN
Пересчет docs по canPlay ^JHWnre3C
отправляем delete на лишние файлы ^xEjE8ehi
отправка обновления отправителю без уведомления ^qfEWtzgP
уведы в Unity,QTclient, GUI
Добавить кнопку Обновить везде? ^EK8w9Zar
%%
## Drawing
```compressed-json
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
gaaQUp42hjIx4CAAA===
```
%%

View File

@@ -6,24 +6,22 @@ kanban-plugin: board
## backLog
- [ ] увеличить размер текста в окне обновлений
- [ ] Нужен ли дополнительный выбор для загрузки с мат моделью или нет?
- [ ] Делить по группам траэйнисы и инструкторы
- [ ] Проверить Максимальный объем пересылаемых позже сообщений
- [ ] проверить работоспособность без Qt - не работает
- [ ] 23 -> связное оборудование -> общая часть
## bugs
- [ ] QT client: sig fault если не выбрана версия
- [ ] QT client: после удаления версии сбрасывать текст в описании
- [ ] Сервер: Неправильный порядок отправки оффлайн сообщений
- [ ] Unity client: после отправки сообщения выделять Input field
- [ ] UnityCient: У схем Viewer отрегулировать прокрутку на Scroll
- [ ] QT клиент: сделать отключение кнопки обновить при появлении inline Инициализация
- [ ] 16.27 от 22.12
- [ ] Unity: ошибка при проигрывании - нажать на среднюю кнопку мыши
- [ ] не работает выключение QT клиента призагрузке
## feature client Unity
- [ ] Протестировать и обновить версию на testPC СХЕМЫ
- [ ] Запросить картинки объектов для топливной системы
- [ ] Связать схемный и реальный манометр
## feature client QT
@@ -32,7 +30,9 @@ kanban-plugin: board
## feature server
- [ ] убрать clientMap из serverLMS Widget в мультитред сервер
- [ ] base делать неизменяемым по умолчанию
- [ ] добавить чекбокс на изменяемый или нет в во всех версиях кроме базовой
- [ ] Попробовать изменить версию base на "Базовая"
## NOW
@@ -41,6 +41,56 @@ kanban-plugin: board
## Complete
- [ ] QT клиент при восстановлении сразу показывают кнопку обновить, а должен вызывать слайдер загрузкии
- [ ] при переключении между позициями при режиме панели не сбрасывается fov
- [ ] кнопка 2Д/3Д появляется хаотично
- [ ] QT клиент, если сервер занят повторно не появляется окно авторизации
- [ ] QT клиент: После обновления переодически не работает запуск
- [ ] QT клиент: обновить реакции на сообщение о блокировки сервера и уже залогиненного пользователя
- [ ] Прописать реакцию на невалидный логин, и уже залогиненного пользователя
- [ ] FIM - не обновляется статус после выполнения
- [ ] AMM - статуса проверки нет, сразу выполнен
- [ ] Unity: переделать с deltatime на fixedDeltatime
- [ ] Unity: три камеры подряд не работают
- [ ] добавить пресеты для камер
- [ ] добавить переход на сценарий из PDF по типу списка окон
- [ ] Гидравлическая система, при нажатии на пожарку при работающей 3й гидросистеме и включенном PTU, PTU путь не закрашивается обратно
- [ ] добавить сохранение предыдущей загруженнной версии
- [ ] поправить верстку в управлении серверами
- [ ] QT клиент: не работают текстовые ссылки при обновлении сценариев НЕ ДОБАВЛЯТЬ ПРОБЕЛ В НАЗВАНИИ
- [ ] М у EDP должно окрашиваться в оранжевый при подаче на на них питания
- [ ] Не включается ГС3 при выставлении всего в AUTO
- [ ] при включении двигателя без XFEED и работающей правой помпы (какой либо) неправильно вызывается анимация питания двигателя в топливной схеме
- [ ] Иконки окон не выключаются при повторном открытии
- [ ] Unity клиент: Вошел как на втором экране
- [ ] Unity клиент: При закрытии окна при включенных мат параметрах, неверно инициализируется окно и пропадает содержимое
- [ ] Перезаполнять имя на offline, если клиент отключился
- [ ] Проверить работу настроек матмодели ис по билда
- [ ] Подчищать креды при успешном логине в UNITY
- [ ] Читать сабпроцедуры из тасок
- [ ] BUSY не меняет иконку блокировки
- [ ] не работают ссылки при выгрузке в QT Client
- [ ] убрать из XML все настройки для мат модели
- [ ] не отправлять updateDocs если не залогинен и запретить все операции
- [ ] Завести CLIENT с состояние залогигнен или нет
- [ ] перетащить наименования хинтов в XML и забирать из оттуда при старте
- [ ] починить поведение окон при включенном обновлении у 2х пользователей
- [ ] Отменить изменения работает некрасиво
- [ ] увеличить размер текста в окне обновлений
- [ ] Делить по группам траэйнисы и инструкторы
- [ ] Проверить Максимальный объем пересылаемых позже сообщений 4 тысячи знаков
- [ ] Unity client: после отправки сообщения выделять Input field
- [ ] UnityCient: У схем Viewer отрегулировать прокрутку на Scroll
- [ ] QT client: после удаления версии сбрасывать текст в описании
- [ ] Нужен ли дополнительный выбор для загрузки с мат моделью или нет?
- [ ] QT client: sig fault если не выбрана версия
- [ ] добавить цифры при инициализации
- [ ] QT клиент не отключается updateFrame при отмене изменений
- [ ] не включается кнопка запуска при обнвление завершено
- [ ] Unity: Восстановление файлов
- [ ] Unity: Отправка файлов
- [ ] Сервер: Неправильный порядок отправки оффлайн сообщений
- [ ] убрать clientMap из serverLMS Widget в мультитред сервер
- [ ] Различать, загружен клиент из Unity или нет, для возможности отправлять сообщения только Unity
- [ ] в ГУИ научится определять тип клиента при приеме сообщения
- [ ] Если клиент не isUnity отправлять сообщение на позднюю отправку
@@ -344,6 +394,7 @@ kanban-plugin: board
## Cancel
- [ ] Протестировать и обновить версию на testPC СХЕМЫ
- [ ] Делить по группам номер группы
- [ ] Добавить обновление инструктора, если он перелогинился
- [ ] добавить в settings адрес и булку мат модели
@@ -367,6 +418,6 @@ kanban-plugin: board
%% kanban:settings
```
{"kanban-plugin":"board","list-collapse":[false,false,false,false,false,false,false,false,false],"lane-width":200}
{"kanban-plugin":"board","list-collapse":[false,false,false,false,false,false,false,false,false],"lane-width":200,"date-colors":[]}
```
%%

View File

@@ -216,11 +216,6 @@ dataParser->Reader->ClientAuth
dataParser->Answer-> ^vSQuWpXz
## Embedded Files
05ef07a816f9ec699b87fb198591290fa361b552: [[Pasted Image 20250807152445_155.png]]
2a95ba7d8af8e78f4250366c65d7324680129bb2: [[Pasted Image 20250807152527_050.png]]
%%
## Drawing
```compressed-json
@@ -236,372 +231,372 @@ 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
```
%%

View File

@@ -0,0 +1,334 @@
---
excalidraw-plugin: parsed
tags: [excalidraw]
---
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== You can decompress Drawing data with the command palette: 'Decompress current Excalidraw file'. For more info check in plugin settings under 'Saving'
# Excalidraw Data
## Text Elements
Update controller ^TkcEsz23
DataParserOutput ^3J2mDJ91
PostProcessorSystem ^NNczxNF5
recognize ^yew7MTmR
DataParser ^VWkzR3Wc
пришли данные ^eF0Z1Xcp
реакция на распарсенные данные ^MRRTeYWw
дернули обновление ^zzKU1XHF
сформировали ответ ^c6svrUeo
PostProcessorSystem ^S6RhnjVy
отправили ответ ^f3xD8T9a
MainWindow ^vw7nwX7p
CommonButtonGroup ^xErMGE5L
InstructorButtonGroupWidget ^VJREKykS
EntryWidget ^mUcqMn0E
NewVersionWidget ^FMG4Ciab
UpdateNotifyWidget ^4m1cnqbo
VersionSelectWidget ^xicMVgid
waitAnimationWidget ^AnK1YT4P
Bootstrap ^eJObHGxm
create ^lW9myAl1
initialize ^TNfkDi6r
CoreManager ^UzTcomzR
create ^QervTCHL
Initialize ^aLopQwm7
dataParser ^5EgEO03J
hashComparer ^sga2k5zL
etc. Systems ^zMBWYwMi
Provider ^OYxiJKhY
Processing ^09kzGeqK
ClientHadler ^5HyYmLEU
UpdateThread ^FO3pAbhx
ClientThread ^fMIEFNBp
bootstrap ^dZUaLzRd
coreManager ^nqGr6J9W
widgetManager ^VuHO7U8Z
connect core and widget ^USOSDOWi
%%
## Drawing
```compressed-json
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
```
%%

View File

@@ -32,11 +32,38 @@
8. Проверка с перезапуском клиента
Работа с версиями
1. QT клиент: Копирование версии
2. QT клиент: Копирование версии с указанием существующего имени -> ошибка
3. QT клиент: Удаление версии
4. QT клиент: Удаление базовой версии -> ошибка
5. QT клиент: Удаление версии которая выбрана -> ошибка
6. QT клиент: переключении версии
1. QT клиент GUI: Копирование версии
2. QT клиент GUI: Копирование версии с указанием существующего имени -> ошибка
3. QT клиент GUI: Удаление версии
4. QT клиент GUI: Удаление базовой версии -> ошибка
5. QT клиент GUI: Удаление версии которая выбрана -> ошибка
6. QT клиент GUI: переключении версии
7. Unity: отправка в базовую версию
8.
Сервер:
1. Загрузка контента с нуля и логин 2х машин под QT
2. Загрузка контента с нуля и разлогин 2х машин под QT
3. Загрузка контента с нуля попытка обновления с QT клиента (под инструктором)
4. Загрузка контента с нуля попытка восстановления с QT клиента (под инструктором)
5. Загрузка контента с нуля и отправка сообщений между машинами Unity -> Unity
6. Загрузка контента с нуля выполнение задачи с Unity
7. Загрузка контента с нуля отправка FIM с Unity
8. Загрузка контента с нуля и отправка сообщений между машинами GUI -> Unity
9. Загрузка контента с нуля и изменение CFI
10. Загрузка контента с нуля логин 2х машин под Unity
11. Загрузка контента c нуля редактирование пользователей (Инструктор, обучаемый, группы)
12. Загрузка контента с нуля назначение FIM ГУИ
13. Загрузка контента с нуля назначение AMM ГУИ
14. Загрузка контента с нуля назначение FIM удаление и проверка ГУИ
15. Загрузка контента с нуля назначение AMM удаление ГУИ
16. Загрузка контента с нуля Авторизация 2х ГУИ
17. Загрузка контента с нуля Деавторизация 2х ГУИ
18. Загрузка контента с нуля переключение версии контента ГУИ
19. Загрузка контента с нуля удаление версии контента ГУИ
20. Загрузка контента с нуля копирование версии контента ГУИ
21. Загрузка контента с нуля запрос DOCS ГУИ
22. Назначение задач с 2х ГУИ параллельно (10 задач) (1 пользователю)
23. При просмотре задачи инструктором, меняется ее статус
24. Блокировка сервера в момент авторизации между QT и Unity
25. Попытка выгрузки изменений (Unity залогинен под одной версией) QT сервер изменил версию и далее через восстановление

1
DOCS/Андрей/.obsidian/app.json vendored Normal file
View File

@@ -0,0 +1 @@
{}

View File

@@ -0,0 +1 @@
{}

View File

@@ -0,0 +1,33 @@
{
"file-explorer": true,
"global-search": true,
"switcher": true,
"graph": true,
"backlink": true,
"canvas": true,
"outgoing-link": true,
"tag-pane": true,
"footnotes": false,
"properties": false,
"page-preview": true,
"daily-notes": true,
"templates": true,
"note-composer": true,
"command-palette": true,
"slash-command": false,
"editor-status": true,
"bookmarks": true,
"markdown-importer": false,
"zk-prefixer": false,
"random-note": false,
"outline": true,
"word-count": true,
"slides": false,
"audio-recorder": false,
"workspaces": false,
"file-recovery": true,
"publish": false,
"sync": true,
"bases": true,
"webviewer": false
}

View File

@@ -0,0 +1,167 @@
{
"main": {
"id": "8d0c52b76b567b03",
"type": "split",
"children": [
{
"id": "94de23b03ba8feab",
"type": "tabs",
"children": [
{
"id": "a426c8e70b3b0594",
"type": "leaf",
"state": {
"type": "empty",
"state": {},
"icon": "lucide-file",
"title": "Новая вкладка"
}
}
]
}
],
"direction": "vertical"
},
"left": {
"id": "7ab439ef0cbf43ad",
"type": "split",
"children": [
{
"id": "87c7b6e79db73e25",
"type": "tabs",
"children": [
{
"id": "90cbfc4e2d07abe2",
"type": "leaf",
"state": {
"type": "file-explorer",
"state": {
"sortOrder": "alphabetical",
"autoReveal": false
},
"icon": "lucide-folder-closed",
"title": "Файловый менеджер"
}
},
{
"id": "1cd85305f47515c6",
"type": "leaf",
"state": {
"type": "search",
"state": {
"query": "",
"matchingCase": false,
"explainSearch": false,
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical"
},
"icon": "lucide-search",
"title": "Поиск"
}
},
{
"id": "5945ff7a53a2fcd5",
"type": "leaf",
"state": {
"type": "bookmarks",
"state": {},
"icon": "lucide-bookmark",
"title": "Закладки"
}
}
]
}
],
"direction": "horizontal",
"width": 300
},
"right": {
"id": "f29104e843747e16",
"type": "split",
"children": [
{
"id": "b3ff3a3e0d768afc",
"type": "tabs",
"children": [
{
"id": "ff893448d70eb626",
"type": "leaf",
"state": {
"type": "backlink",
"state": {
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
"showSearch": false,
"searchQuery": "",
"backlinkCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-coming-in",
"title": "Обратные ссылки"
}
},
{
"id": "2a427c576e6ea0ef",
"type": "leaf",
"state": {
"type": "outgoing-link",
"state": {
"linksCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-going-out",
"title": "Исходящие ссылки"
}
},
{
"id": "a753b701468fb8f1",
"type": "leaf",
"state": {
"type": "tag",
"state": {
"sortOrder": "frequency",
"useHierarchy": true,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-tags",
"title": "Теги"
}
},
{
"id": "ff03277f03b14f53",
"type": "leaf",
"state": {
"type": "outline",
"state": {
"followCursor": false,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-list",
"title": "Структура"
}
}
]
}
],
"direction": "horizontal",
"width": 300,
"collapsed": true
},
"left-ribbon": {
"hiddenItems": {
"switcher:Меню быстрого перехода": false,
"graph:Граф": false,
"canvas:Создать новый холст": false,
"daily-notes:Сегодняшняя заметка": false,
"templates:Вставить шаблон": false,
"command-palette:Открыть палитру команд": false,
"bases:Создать новую базу": false
}
},
"active": "a426c8e70b3b0594",
"lastOpenFiles": []
}

View File

@@ -4,24 +4,36 @@ kanban-plugin: board
---
## bugs
## backlog
- [ ] GUI: Сделать кнопку перезапроса общих списков FIM (по аналогии с АММ)
- [ ] /RUS/Scens/tasksFIM.xml возможно изменится структура
- [ ] выгрузка назначенных задач с оценками в эксель таблицу или любой другой человекочитаемый вид
- [ ] Текстовый поиск в задачах
## Completed
## feature
- [ ] Не влазиют слишком большие сообщения
- [ ] FIM процедура добавить кнопку сделать новой
- [ ] Не видно новых пришедших сообщений, если выбран другой Юзер
- [ ] При смене УЗ в ГУИ остается история переписки в мессенджере. При этом Имя инструктора в диалоге подменяется. (Путается только в ГУИ!)
[Возможно, поможет переинициализация мессенджера при переавторизации инструктора?]
- [ ] Отображать текущую версию data в статус баре
- [ ] Сделать крутилку на начальную загрузку Сервера
- [ ] Логин суперпользователя PostgreSQL предлагать по умолчанию postgres
- [ ] Сделать несколько попыток подключения к серверу
- [ ] Переобновление docs.xml в пределах версии (если инструктор изменяет процедуры)
- [ ] Реализовать механизм отображения и выбора подпроцедур для АММ.
- [ ] Создание БД из кода (если нет или слетела)
- [ ] Сервер при сворачивании превращается в трей
- [ ] Вывод информации о таймингах обучаемого
- [ ] добавление окна чата инструктора (GUI)
- [ ] добавить таблицу users в БД
## now
## Complete
- [ ] Пароли хранить и пересылать в виде Хеша
- [ ] Смена пароля админом (или инструктором только для обучаемых). Старый никому не виден (парольная политика)
- [ ] Сделать отправку сообщения на Enter
- [ ] Введение логина только латиницей и цифрами
- [ ] Кнопка открытия Персональной карты обучаемого
- [ ] Блокировка авторизации не работает при входе в редакторы И/О
- [ ] Добавить текущий статус задачи в "Проверке задачи" (AMM, FIM)
- [ ] выдавать trainee_id при авторизации и вытащить передачу Trainee ID из тасок
- [ ] Подсчет учебного времени - дельта между включением и выключением
- [ ] регистрация времени включения и выключения тренажера (по приходу уходу пакета is unity) с регистрацие БД
@@ -31,11 +43,41 @@ kanban-plugin: board
- [ ] Убрать ошибки QObject::moveToThread: Cannot move objects with a parent
- [ ] /RRJ-95NEW-100/tasksAMM.xml заменить получение на docs
- [ ] отправка таски поштучно, при обновления статуса (проверка и тд)
- [ ] Проверка валидности логина в двух местах. Только в эдиторе оставил
- [ ] DataBaseLMS::transactionBegin()
DataBaseLMS::transactionEnd()
Разобраться. Удалено
- [ ] Как работает Мьютекс в DataBaseLMS. Убрал его оттуда.
- [ ] добавить таблицу users в БД. Добавлено.
- [ ] Вывод информации о таймингах обучаемого
- [ ] добавление окна чата инструктора (GUI)
- [ ] Убрать автоподстановку логина и пароля Админа при Авторизации
- [ ] Добавить время сообщений
- [ ] Уточнить назначение аватарок для remote и local клиентов
- [ ] Убрать кнопку Справка (?) из диалогов
- [ ] Убрать "DM-код" для узлов PM (AMM)
- [ ] Уменьшить размер диалога "Проверка задачи" (AMM)
- [ ] Учет ширины скрола на деревьях (появляется если дерево больше окна)
- [ ] Универсальный пересчет ширин колонок деревьев
- [ ] При обновлении деревьев слетает назначенная колонка сортировки
- [ ] В сообщение о неудачном подключении к PostgreSQL добавить: PSQL не установлен
## backlog
## Server
- [ ] /RUS/Scens/tasksFIM.xml возможно изменится структура
- [ ] Отходить от идентификации по Логину в пользу ID юзера везде, где это возможно.
(Так как сейчас может вызвать проблемы при смене логина юзера!!!)
- [ ] Зарефакторить databaselms_PostgreSQL.cpp
(возможно, нужно использовать транзакции при восстановлении БД!)
## GUI Messenger
## GUI общие
- [ ] Общий список АММ. автопролистывание вниз, если раскрывается дерево внизу

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,6 @@
{
"nodes":[
{"id":"3e71087c4a5247a0","type":"file","file":"DBschem.png","x":-1134,"y":-740,"width":1494,"height":808}
],
"edges":[]
}

View File

@@ -1 +0,0 @@
МАКСИМ ЧИТЕР

View File

@@ -0,0 +1,16 @@
| ENG | RUS |
| -------------------------------- | --- |
| Learning management system (LMS) | |
| Instructor | |
| | |
| authorization | |
| deauthorization | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |

1
DOCS/ВАЖНО!!!!.md Normal file
View File

@@ -0,0 +1 @@
Длина отправки тестового сообщения 4к знаков

View File

@@ -1,8 +0,0 @@
Сервер -> Принимаем
- XML файлы с поиском по тегу (DataParser::xmlParser)
Участники
RecognizeSystem - система распознавания типа пакета, экземпляр у каждого клиента
ProcessingSystem - система активации процессов (создает результат после распознания действия) 1 штука на всех

View File

@@ -1,36 +0,0 @@
```
void SendSystem::sendMessageBlock(QString message)
{
QDataStream stream(socket);
stream.setVersion(QDataStream::Qt_DefaultCompiledVersion);
QByteArray result = sendMessage(message);
stream << PacketType::TYPE_XMLANSWER;
stream << sendMessage(message);
socket->waitForBytesWritten();
socket->flush();
}
или файлом
void ServerLMSWidget::sendQDataStream(QTcpSocket *socket,QByteArray data)
{
QDataStream stream(socket);
stream.setVersion(QDataStream::Qt_DefaultCompiledVersion);
stream << PacketType::TYPE_XMLANSWER;
stream << data;
socket->waitForBytesWritten();
socket->flush();
}
```
Типы сообщений QT->Unity:
TYPE_XMLANSWER
Остальные QT->QT
Сообщение порядок приема данных QDataStream:
1. размер сообщения(отсылается неявно)
2. само сообщение в бинарном формате(в нашем случае XML)
UNITY: при переходе на новую систему общения пакетами нужно:
отправлять пакет о типе XML ответа при каждой отправке

View File

@@ -0,0 +1,25 @@
ServerLMS
**ServerLMSWidget** - entry point, кнопки на первичном окне, обновление списка клиентов, хранит общий Mutex
**ProviderDBLMS** - связь с БД
**MultiThreadServer** - управление клиентами (подключение, удаление)
Участники
RecognizeSystem - система распознавания типа пакета, экземпляр у каждого клиента
ProcessingSystem - система активации процессов (создает результат после распознания действия) 1 штука на всех
/*XmlSerializer serializer = new XmlSerializer(typeof(Task));
using (StringWriter writer = new StringWriter())
{
serializer.Serialize(writer, curTask);
string xmlString = writer.ToString();
string filePath = Path.Combine(Application.dataPath, "savedTask.xml");
File.WriteAllText(filePath, xmlString);
}*/

75
DOCS/Отправка.md Normal file
View File

@@ -0,0 +1,75 @@
Отправка сообщений QT сервер:
Отправка маленьких XML пакетов без информации о размере. TYPE_XMLANSWER
```
void SendSystem::sendXmlAnswer(QByteArray array, PacketType packetType)
{
qDebug() << "SendSystemThread: " << QThread::currentThreadId();
Logger::instance().log("C: " + client->getLogin() + " send pack " + enumToString(packetType) +
" " + QString::fromUtf8(array),LogLevel::DEBUG);
if (client->getClientType() == TypeClientAutorization::TYPE_QT_CLIENT ||
client->getClientType() == TypeClientAutorization::TYPE_GUI)
{
// для QT
QDataStream stream(socket);
stream.setVersion(QDataStream::Qt_DefaultCompiledVersion);
stream << packetType;
stream << array;
socket->waitForBytesWritten();
}
else
{ // для Unity
sendPacketType(packetType);
QByteArray message;
int size = array.length();
message.append(reinterpret_cast<char*>(&size), sizeof(int));
socket->write(message);
socket->write(array);
}
}
```
Отправка пакета без вложения:
`void SendSystem::sendPacketType(PacketType packetType){
if (client->getClientType() == TypeClientAutorization::TYPE_QT_CLIENT ||
client->getClientType() == TypeClientAutorization::TYPE_GUI)
{
//Для QT
QDataStream stream(socket);
stream.setVersion(QDataStream::Qt_DefaultCompiledVersion);
stream << packetType;
socket->waitForReadyRead(100);
}
else
{
//для Unity
QByteArray message;
int type = (int)packetType;
message.append(reinterpret_cast<char*>(&type), sizeof(int));
socket->write(message);
}
}`
Не подходит для последнего сообщения (например при отключении клиента)
Отправка сервисного сообщения (тип ServerNotify)
`void SendSystem::sendNotify(QString notify)
{
qDebug() << "SendNotify thread: " << QThread::currentThreadId();
auto answer = emit sigSendNotify(notify);
sendXmlAnswer(answer);
}`
Типы сообщений QT->Unity:
TYPE_XMLANSWER
Остальные QT->QT
Сообщение порядок приема данных QDataStream:
1. размер сообщения(отсылается неявно)
2. само сообщение в бинарном формате(в нашем случае XML)
UNITY: при переходе на новую систему общения пакетами нужно:
отправлять пакет о типе XML ответа при каждой отправке

View File

@@ -1,68 +0,0 @@
project(DataBaseLMS LANGUAGES CXX)
common_info_for_project(DataBaseLMS)
add_library(DataBaseLMS SHARED
DataBaseLMS_global.h
databaselms.cpp
databaselms.h
interfacedatabaselms.cpp
interfacedatabaselms.h
basicentity.cpp
basicentity.h
user.cpp
user.h
instructor.cpp
instructor.h
trainee.cpp
trainee.h
group.cpp
group.h
computer.cpp
computer.h
classroom.cpp
classroom.h
tasksAmmFim.cpp
tasksAmmFim.h
typeQueryToDB.h
timingoftrainee.cpp
timingoftrainee.h
contactModel.h
)
target_link_libraries(DataBaseLMS PRIVATE Qt5::Widgets)
target_link_libraries(DataBaseLMS PRIVATE Qt5::Sql)
target_link_libraries(DataBaseLMS PRIVATE Qt5::Xml)
target_compile_definitions(DataBaseLMS PRIVATE DATABASELMS_LIBRARY)
if(PROJECT_TYPE_DEBUG)
add_custom_command(TARGET DataBaseLMS
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${REPO_PATH}/BUILDS/Debug64/DataBaseLMS/libDataBaseLMS.dll
${REPO_PATH}/BUILDS/Debug64/TestServerLMS)
add_custom_command(TARGET DataBaseLMS
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${REPO_PATH}/BUILDS/Debug64/DataBaseLMS/libDataBaseLMS.dll
${REPO_PATH}/BUILDS/Debug64/GUIdataBaseLMS)
else()
add_custom_command(TARGET DataBaseLMS
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${REPO_PATH}/BUILDS/Release64/DataBaseLMS/libDataBaseLMS.dll
${REPO_PATH}/BUILDS/Release64/TestServerLMS)
add_custom_command(TARGET DataBaseLMS
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${REPO_PATH}/BUILDS/Release64/DataBaseLMS/libDataBaseLMS.dll
${REPO_PATH}/BUILDS/Release64/GUIdataBaseLMS)
endif()

View File

@@ -1,347 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.1, 2024-12-28T11:57:36. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{00ce76f6-77cf-4587-a216-9a8e243377cb}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
<value type="QString">-fno-delayed-template-parsing</value>
</valuelist>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5142.win64_mingw73_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Debug</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QT/BUILDS/LMS/DB_LMS/Debug64</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Отладка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Release</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/LMS/DB_LMS/Release64</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=RelWithDebInfo</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/LMS/DB/build-DataBaseLMS-Desktop_Qt_5_14_2_MinGW_64_bit-RelWithDebInfo</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск с отладочной информацией</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.3">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=MinSizeRel</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/LMS/DB/build-DataBaseLMS-Desktop_Qt_5_14_2_MinGW_64_bit-MinSizeRel</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск минимального размера</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">4</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey"></value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default"></value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

View File

@@ -1,390 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.1, 2025-01-10T12:59:06. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{15ef2478-2444-4b00-88b8-fead51c6fef5}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
<value type="QString">-fno-delayed-template-parsing</value>
</valuelist>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5142.win64_mingw73_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">4</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Release</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QT/Projects/RRJServer/RRJServer/DB_LMS/build-DataBaseLMS-Desktop_Qt_5_14_2_MinGW_64_bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=RelWithDebInfo</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QT/Projects/RRJServer/RRJServer/DB_LMS/build-DataBaseLMS-Desktop_Qt_5_14_2_MinGW_64_bit-RelWithDebInfo</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск с отладочной информацией</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=MinSizeRel</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QT/Projects/RRJServer/RRJServer/DB_LMS/build-DataBaseLMS-Desktop_Qt_5_14_2_MinGW_64_bit-MinSizeRel</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск минимального размера</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.3">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Debug</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QT/Projects/RRJServer/RRJServer/BUILDS/DB_LMS/Debug64</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Отладка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.4">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Debug</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QT/Projects/RRJServer/RRJServer/BUILDS/DB_LMS/Debug64</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">5</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey"></value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default"></value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +0,0 @@
#include "instructor.h"
Instructor::Instructor():
User(),
isAdmin()
{
}

View File

@@ -1,479 +0,0 @@
#include <QMessageBox>
#include <QCoreApplication>
#include <QSqlError>
#include <QDateTime>
#include <QTime>
#include "interfacedatabaselms.h"
InterfaceDataBaseLMS::InterfaceDataBaseLMS(QWidget* parent):
QWidget(parent),
DataBaseLMS()
{
}
void InterfaceDataBaseLMS::slot_LanguageChanged(QString language)
{
qtLanguageTranslator.load(QString(QStringLiteral("translations/DataBaseLMS_")) + language, QStringLiteral("."));
QCoreApplication::installTranslator(&qtLanguageTranslator);
}
bool InterfaceDataBaseLMS::ConnectionToDB()
{
if(!createConnection())
{
QMessageBox::critical(nullptr, dbSettings.dbName, tr("Connection error: ") + db->lastError().text());
return false;
}
else
{
//QMessageBox::information(nullptr, dbName, tr("Connection is successful!"));
return true;
}
}
bool InterfaceDataBaseLMS::DisConnectionFromDB()
{
deleteConnection();
//QMessageBox::information(nullptr, dbName, tr("Disconnection is successful!"));
return true;
}
bool InterfaceDataBaseLMS::DBisConnected()
{
return isConnected();
}
//Инструкторы
bool InterfaceDataBaseLMS::AuthorizationInstructor(QString login, QString password)
{
if(! transactionBegin())
return false;
if(int id = selectInstructorID(login, password))
{
if(isArchivedInstructor(id) || isLoggedInInstructor(id))
{
transactionEnd();
return false;
}
if(updateInstructorLoggedIn(id, true))
return transactionEnd();
}
transactionEnd();
return false;
}
bool InterfaceDataBaseLMS::deAuthorizationInstructor(QString login)
{
if(! transactionBegin())
return false;
if(int id = selectInstructorID(login))
{
if(updateInstructorLoggedIn(id, false))
return transactionEnd();
}
transactionEnd();
return false;
}
bool InterfaceDataBaseLMS::deAuthorizationAllInstructors()
{
return updateAllInstructorsLoggedIn(false);
}
QString InterfaceDataBaseLMS::getNameInstructorByLogin(QString login)
{
return selectInstructorNameByLogin(login);
}
int InterfaceDataBaseLMS::getIdInstructorByLogin(QString login)
{
return selectInstructorID(login);
}
QList<Instructor> InterfaceDataBaseLMS::getListInstructors()
{
return selectAllInstructors();
}
Instructor InterfaceDataBaseLMS::getInstructor(int id)
{
return selectInstructor(id);
}
int InterfaceDataBaseLMS::newInstructor()
{
return insertInstructor();
}
int InterfaceDataBaseLMS::delInstructor(int id)
{
return deleteInstructor(id);
}
int InterfaceDataBaseLMS::editInstructor(Instructor instructor)
{
//Проверка корректности логина, имени, пароля
QList<Instructor> listInstructors = selectAllInstructors();
for(Instructor exist_instructor : listInstructors)
{
if(instructor.getName() == QStringLiteral("<instructor>"))
{//Имя не корректно!
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("Unacceptable instructor name has been entered.\nThe changes will not be accepted."));
return 0;
}
if(instructor.getLogin() == QStringLiteral("<login>"))
{//Логин не корректен!
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("Unacceptable instructor login has been entered.\nThe changes will not be accepted."));
return 0;
}
if(instructor.getPassword() == QStringLiteral("<password>"))
{//Пароль не корректный!
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("Unacceptable instructor password has been entered.\nThe changes will not be accepted."));
return 0;
}
if(instructor.getName() == exist_instructor.getName() && instructor.getID() != exist_instructor.getID())
{//Имя уже существует
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("An existing instructor name has been entered."));
return 0;
}
if(instructor.getLogin() == exist_instructor.getLogin() && instructor.getID() != exist_instructor.getID())
{//Логин уже существует!
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("An existing instructor login has been entered.\nThe changes will not be accepted."));
return 0;
}
}
return updateInstructor(instructor);
}
bool InterfaceDataBaseLMS::isAdminInstructor(int id)
{
return selectInstructorIsAdmin(id);
}
bool InterfaceDataBaseLMS::isArchivedInstructor(int id)
{
return selectInstructorArchived(id);
}
bool InterfaceDataBaseLMS::isLoggedInInstructor(int id)
{
return selectInstructorLoggedIn(id);
}
//Инструкторы
bool InterfaceDataBaseLMS::AuthorizationTrainee(QString login, QString password, QString classroom_name, QString computer_name)
{
if(! transactionBegin())
return false;
if(int id = selectTraineeID(login, password))
{
if(isArchivedTrainee(id) || isLoggedInTrainee(id))
{
transactionEnd();
return false;
}
if(updateTraineeLoggedIn(id, true))
return transactionEnd();
}
transactionEnd();
return false;
}
bool InterfaceDataBaseLMS::deAuthorizationTrainee(QString login)
{
if(! transactionBegin())
return false;
if(int id = selectTraineeID(login))
{
if(updateTraineeLoggedIn(id, false))
return transactionEnd();
}
transactionEnd();
return false;
}
bool InterfaceDataBaseLMS::deAuthorizationAllTrainees()
{
return updateAllTraineesLoggedIn(false);
}
int InterfaceDataBaseLMS::entryTraineeOnSimulator(int id_trainee)
{
TimingOfTrainee timing(id_trainee);
timing = selectTimingTrainee(id_trainee);
if(!timing.getID())
{//Еще нет записи
int timing_id = insertTimingTrainee(id_trainee);
timing.setID(timing_id);
if(!timing_id)
return 0;
}
timing.fixEntry();
return updateTimingTrainee(id_trainee, timing);
}
int InterfaceDataBaseLMS::exitTraineeFromSimulator(int id_trainee)
{
TimingOfTrainee timing(id_trainee);
timing = selectTimingTrainee(id_trainee);
if(!timing.getID())
{//Еще нет записи
int timing_id = insertTimingTrainee(id_trainee);
timing.setID(timing_id);
if(!timing_id)
return 0;
}
timing.fixExit();
return updateTimingTrainee(id_trainee, timing);
}
QString InterfaceDataBaseLMS::getNameTraineeOnComputer(QString computer_name)
{
return selectTraineeNameOnComputer(computer_name);
}
Trainee InterfaceDataBaseLMS::getTraineeOnComputer(QString computer_name)
{
return selectTraineeOnComputer(computer_name);
}
QString InterfaceDataBaseLMS::getNameTraineeByLogin(QString login)
{
return selectTraineeNameByLogin(login);
}
int InterfaceDataBaseLMS::getIdTraineeByLogin(QString login)
{
return selectTraineeID(login);
}
QList<Trainee> InterfaceDataBaseLMS::getListTraineesInGroup(int id)
{
return selectAllTraineesInGroup(id);
}
QList<Group> InterfaceDataBaseLMS::getListGroups()
{
return selectAllGroups();
}
QList<Trainee> InterfaceDataBaseLMS::getListTrainees()
{
return selectAllTrainees();
}
Trainee InterfaceDataBaseLMS::getTrainee(int id)
{
return selectTrainee(id);
}
Group InterfaceDataBaseLMS::getGroup(int id)
{
return selectGroup(id);
}
int InterfaceDataBaseLMS::newGroup()
{
return insertGroup();
}
int InterfaceDataBaseLMS::delGroup(int id)
{
return deleteGroup(id);
}
int InterfaceDataBaseLMS::editGroup(Group group)
{
//Проверка корректности имени
QList<Group> listGroups = selectAllGroups();
for(Group exist_group : listGroups)
{
if(group.getName() == QStringLiteral("<group>"))
{//Имя не корректно!
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("Unacceptable group name has been entered.\nThe changes will not be accepted."));
return 0;
}
if(group.getName() == exist_group.getName() && group.getID() != exist_group.getID())
{//Имя уже существует
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("An existing group name has been entered.\nThe changes will not be accepted."));
return 0;
}
}
return updateGroup(group);
}
int InterfaceDataBaseLMS::newTaskAMM(TaskAmmFim task, int id_trainee)
{
return insertTaskAMM(task, id_trainee);
}
int InterfaceDataBaseLMS::delTaskAMM(int id)
{
return deleteTaskAMM(id);
}
int InterfaceDataBaseLMS::editTaskAMM(TaskAmmFim task)
{
return updateTaskAMM(task);
}
QList<TaskAmmFim> InterfaceDataBaseLMS::getListTasksAMMofTrainee(int id_trainee)
{
return selectTasksAMMofTrainee(id_trainee);
}
QList<TaskAmmFim> InterfaceDataBaseLMS::getListTasksFIMofTrainee(int id_trainee)
{
return selectTasksFIMofTrainee(id_trainee);
}
TaskAmmFim InterfaceDataBaseLMS::getTaskAMMbyID(int id_task)
{
return selectTaskAMMbyID(id_task);
}
TaskAmmFim InterfaceDataBaseLMS::getTaskFIMbyID(int id_task)
{
return selectTaskFIMbyID(id_task);
}
int InterfaceDataBaseLMS::newTaskFIM(TaskAmmFim task, int id_trainee)
{
return insertTaskFIM(task, id_trainee);
}
int InterfaceDataBaseLMS::delTaskFIM(int id)
{
deleteReportFIM(id);
return deleteTaskFIM(id);
}
int InterfaceDataBaseLMS::editTaskFIM(TaskAmmFim task)
{
return updateTaskFIM(task);
}
int InterfaceDataBaseLMS::replaceReportFIM(TaskAmmFim task)
{
deleteReportFIM(task.getID());
if(int report_id = insertReportFIM(task))
{
updateStatusTaskFIM(task.getID(), "checkup");
return report_id;
}
return 0;
}
int InterfaceDataBaseLMS::changeStatusTaskFIM(int id_task, QString status)
{
return updateStatusTaskFIM(id_task, status);
}
int InterfaceDataBaseLMS::changeStatusTaskAMM(int id_task, QString status)
{
return updateStatusTaskAMM(id_task, status);
}
int InterfaceDataBaseLMS::newTrainee(int id_group)
{
return insertTrainee(id_group);
}
int InterfaceDataBaseLMS::delTrainee(int id)
{
return deleteTrainee(id);
}
int InterfaceDataBaseLMS::editTrainee(Trainee trainee)
{
//Проверка корректности логина, имени, пароля
QList<Trainee> listTrainees = selectAllTrainees();
for(Trainee exist_trainee : listTrainees)
{
if(trainee.getName() == QStringLiteral("<trainee>"))
{//Имя не корректно!
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("Unacceptable trainee name has been entered.\nThe changes will not be accepted."));
return 0;
}
if(trainee.getLogin() == QStringLiteral("<login>"))
{//Логин не корректен!
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("Unacceptable trainee login has been entered.\nThe changes will not be accepted."));
return 0;
}
if(trainee.getPassword() == QStringLiteral("<password>"))
{//Пароль не корректный!
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("Unacceptable trainee password has been entered.\nThe changes will not be accepted."));
return 0;
}
if(trainee.getName() == exist_trainee.getName() && trainee.getID() != exist_trainee.getID())
{//Имя уже существует
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("An existing trainee name has been entered."));
return 0;
}
if(trainee.getLogin() == exist_trainee.getLogin() && trainee.getID() != exist_trainee.getID())
{//Логин уже существует!
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("An existing trainee login has been entered.\nThe changes will not be accepted."));
return 0;
}
}
return updateTrainee(trainee);
}
bool InterfaceDataBaseLMS::isArchivedTrainee(int id)
{
return selectTraineeArchived(id);
}
bool InterfaceDataBaseLMS::isLoggedInTrainee(int id)
{
return selectTraineeLoggedIn(id);
}

View File

@@ -1,39 +0,0 @@
#include "tasksAmmFim.h"
#include <QDomDocument>
#include <QFile>
#include <QMessageBox>
int TaskAmmFim::lastID = 1;
void TaskAmmFim::initialize(int id, QString type, QString title, QString status, QString created_date, QString changed_date)
{
this->id = id;
this->type = type;
this->title = title;
this->status = status;
this->created_date = created_date;
this->changed_date = changed_date;
}
void TaskAmmFim::addMalfunction(Malfunction malfunction)
{
malfunctionList.append(malfunction);
}
void Malfunction::initialize(QString dmCode, QString num, QString description)
{
this->dmCode = dmCode;
this->num = num;
this->description = description;
}
void Malfunction::addMalfunctionSign(MalfunctionSign sign)
{
malfunctionSigns.append(sign);
}
void MalfunctionSign::initialize(int type, QString description)
{
this->type = type;
this->description = description;
}

View File

@@ -1,9 +0,0 @@
#include "trainee.h"
Trainee::Trainee():
User(),
group(),
computer()
{
}

View File

@@ -1,108 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ru_RU">
<context>
<name>InterfaceDataBaseLMS</name>
<message>
<location filename="../interfacedatabaselms.cpp" line="23"/>
<source>Connection error: </source>
<translation>Ошибка соединения: </translation>
</message>
<message>
<location filename="../interfacedatabaselms.cpp" line="121"/>
<location filename="../interfacedatabaselms.cpp" line="128"/>
<location filename="../interfacedatabaselms.cpp" line="135"/>
<location filename="../interfacedatabaselms.cpp" line="142"/>
<location filename="../interfacedatabaselms.cpp" line="149"/>
<location filename="../interfacedatabaselms.cpp" line="279"/>
<location filename="../interfacedatabaselms.cpp" line="286"/>
<location filename="../interfacedatabaselms.cpp" line="377"/>
<location filename="../interfacedatabaselms.cpp" line="384"/>
<location filename="../interfacedatabaselms.cpp" line="391"/>
<location filename="../interfacedatabaselms.cpp" line="398"/>
<location filename="../interfacedatabaselms.cpp" line="405"/>
<source>Editing error!</source>
<translation>Ошибка редактирования!</translation>
</message>
<message>
<location filename="../interfacedatabaselms.cpp" line="122"/>
<source>Unacceptable instructor name has been entered.
The changes will not be accepted.</source>
<translation>Введено недопустимое имя инструктора.
Изменения не будут приняты.</translation>
</message>
<message>
<location filename="../interfacedatabaselms.cpp" line="129"/>
<source>Unacceptable instructor login has been entered.
The changes will not be accepted.</source>
<translation>Введен недопустимый логин инструктора.
Изменения не будут приняты.</translation>
</message>
<message>
<location filename="../interfacedatabaselms.cpp" line="136"/>
<source>Unacceptable instructor password has been entered.
The changes will not be accepted.</source>
<translation>Введен недопустимый пароль инструктора.
Изменения не будут приняты.</translation>
</message>
<message>
<location filename="../interfacedatabaselms.cpp" line="143"/>
<source>An existing instructor name has been entered.</source>
<translation>Введено существующее имя инструктора.</translation>
</message>
<message>
<location filename="../interfacedatabaselms.cpp" line="150"/>
<source>An existing instructor login has been entered.
The changes will not be accepted.</source>
<translation>Введен существующий логин инструктора.
Изменения не будут приняты.</translation>
</message>
<message>
<location filename="../interfacedatabaselms.cpp" line="280"/>
<source>Unacceptable group name has been entered.
The changes will not be accepted.</source>
<translation>Введено недопустимое имя группы.
Изменения не будут приняты.</translation>
</message>
<message>
<location filename="../interfacedatabaselms.cpp" line="287"/>
<source>An existing group name has been entered.
The changes will not be accepted.</source>
<translation>Введено существующее имя группы.
Изменения не будут приняты.</translation>
</message>
<message>
<location filename="../interfacedatabaselms.cpp" line="378"/>
<source>Unacceptable trainee name has been entered.
The changes will not be accepted.</source>
<translation>Введено недопустимое имя обучаемого.
Изменения не будут приняты.</translation>
</message>
<message>
<location filename="../interfacedatabaselms.cpp" line="385"/>
<source>Unacceptable trainee login has been entered.
The changes will not be accepted.</source>
<translation>Введен недопустимый логин обучаемого.
Изменения не будут приняты.</translation>
</message>
<message>
<location filename="../interfacedatabaselms.cpp" line="392"/>
<source>Unacceptable trainee password has been entered.
The changes will not be accepted.</source>
<translation>Введен недопустимый пароль обучаемого.
Изменения не будут приняты.</translation>
</message>
<message>
<location filename="../interfacedatabaselms.cpp" line="399"/>
<source>An existing trainee name has been entered.</source>
<translation>Введено существующее имя обучаемого.</translation>
</message>
<message>
<location filename="../interfacedatabaselms.cpp" line="406"/>
<source>An existing trainee login has been entered.
The changes will not be accepted.</source>
<translation>Введен существующий логин обучаемого.
Изменения не будут приняты.</translation>
</message>
</context>
</TS>

View File

@@ -1,11 +0,0 @@
#include "user.h"
User::User():
BasicEntity(),
login(),
password(),
archived(),
loggedIn()
{
}

View File

@@ -0,0 +1,443 @@
/*Обязательные поля*/
*[mandatoryField="true"] {
background-color: #fffdfd
}
/*Общие настройки виджетов*/
QWidget {
font-family: Tahoma;
font-size: 12pt;
icon-size: 24px;
}
QWidget#widgetControl {
background: #E0E0E0;
}
QWidget#viewerTrainees
{
padding-left: 20px;
}
QDialog {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #e6e7ea, stop: 1 #eaebee);
}
QLineEdit, QTextEdit, QComboBox {
border: 1px solid gray;
border-radius: 2px;
padding: 0px 8px;
background: #fafafafa;
selection-background-color: darkgray;
}
QLineEdit[echoMode="2"] {
lineedit-password-character: 9679; /*Сокрытие пароля*/
}
QLineEdit:read-only {
background: lightblue;
}
QGroupBox {
background: #E0E0E0;
border: 1px solid gray;
border-radius: 3px;
margin-top: 26px;
font-size: 13pt;
}
QGroupBox#groupBox_Report {
background: #FFFFFF;
}
QGroupBox::title {
border: 1px solid gray;
border-bottom: none;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
subcontrol-origin: margin;
subcontrol-position: top left;
padding-left: 10px;
padding-right: 10px;
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #fafafa, stop: 0.1 #E0E0E0,
stop: 0.6 #E0E0E0, stop: 1.0 #fafafa);
color: black;
min-height: 25px;
}
QPushButton, QToolButton {
border: 3px outset /*#2d5585*/gray;
/*border: 3px solid #8f8f91;
border-style: outset;*/
border-radius: 5px;
background-color: #5d85B5;
min-width: 75px;
height: 55px;
padding: 1px;
qproperty-iconSize: 32px;
color: white;
}
QToolButton::icon {
background-color: white;
}
QPushButton {
height: 25px;
width: 100px;
}
QToolButton {
width: 180px;
height: 55px;
}
QToolButton#btnSend, QToolButton#btnDelete, QToolButton#btnCheck, QToolButton#btnOnlyActive, QToolButton#btnStatus,
QToolButton#btnDocsUpdating,
QToolButton#btnAssignTask,
QToolButton#btnAssign {
width: 100px;
height: 55px;
}
QToolButton#btnCheckDB, QToolButton#btnUpdateDocs, QToolButton#btnRepare, QToolButton#btnSave, QToolButton#btnUpdateStyle, QToolButton#btnSetVersion {
width: 150px;
height: 55px;
}
QToolButton#btnViewPassword, QToolButton#btnChangePassword {
min-width: 18px;
width: 18px;
height: 18px;
}
QPushButton#createDuplicateButton, QPushButton#deleteVersionButton, QPushButton#switchServerVersionButton {
width: 130px;
}
QPushButton:flat, QToolButton:flat {
border: none; /* no border for a flat push button */
}
QPushButton:disabled, QToolButton:disabled {
/*background-color: #777777;*/
background-color: #bbbbbb;
/*border-color: gray;*/
}
QPushButton:default, QToolButton:default {
border-color: #2d5585;
}
QPushButton:hover , QToolButton:hover {
background-color: #9dc5f5;
}
QPushButton:pressed, QToolButton:pressed {
background-color: #8db5e5;
border-style: inset;
}
QPushButton:checked, QToolButton:checked {
background-color: #8db5e5;
border-style: inset;
}
QCheckBox {
spacing: 20px;
}
QCheckBox#checkAutoStart, QCheckBox#checkLocalhost {
spacing: 0px;
}
QCheckBox::indicator:checked {
width: 24px;
height: 24px;
image: url(:/resources/icons/chekYes.png);
}
QCheckBox::indicator:!checked {
width: 24px;
height: 24px;
image: url(:/resources/icons/chekNo.png);
}
QTreeWidget {
font-size: 13pt;
font-family: Tahoma;
icon-size: 32px;
border-radius: 4px;
border: 2px solid white;
}
QTreeWidget::item {
height: 34px;
}
/*Бранчи*/
QTreeWidget::branch:has-siblings:!adjoins-item {
/*border-image: url(:/resources/icons/vline.png) 0; */
}
QTreeWidget::branch:has-siblings:adjoins-item {
/*border-image: url(:/resources/icons/branch-more.png) 0;*/
}
QTreeWidget::branch:!has-children:!has-siblings:adjoins-item {
/*border-image: url(:/resources/icons/branch-end.png) 0;*/
}
QTreeWidget::branch:closed:has-children:!has-siblings,
QTreeWidget::branch:closed:has-children:has-siblings {
/*border-image: none;*/
image: url(:/resources/icons/branch-closed.png);
}
QTreeWidget::branch:open:has-children:!has-siblings,
QTreeWidget::branch:open:has-children:has-siblings {
/*border-image: none;*/
image: url(:/resources/icons/branch-open.png);
}
QTreeWidget::item:hover,
QTreeWidget::branch:hover {
background: #EEEEEE;
/*border: 1px solid #6c6c6c;*/
/*border-radius: 3px;*/
}
QTreeWidget::item:selected {
background: #9dc5f5;
color: #000000;
}
QTreeWidget::indicator:checked {
width: 24px;
height: 24px;
image: url(:/resources/icons/chekYes.png);
}
QTreeWidget::indicator:!checked {
width: 24px;
height: 24px;
image: url(:/resources/icons/chekNo.png);
}
QHeaderView::section {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #2d5585, stop: 1 #9dc5f5);
color: white;
padding-left: 4px;
border: 1px solid #6c6c6c;
border-radius: 2px;
font-size: 13pt;
}
QTabWidget::pane { /* The tab widget frame */
border-top: 1px solid #C2C7CB;
border: 1px solid #C2C7CB;
}
QTabWidget::pane#tabWidgetTasks { /* The tab widget frame */
border-top: 1px solid #C2C7CB;
border: 1px solid #C2C7CB;
}
QTabWidget::tab-bar {
left: 0px; /* move to the right by 0px */
}
QTabBar::tab {
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #E1E1E1, stop: 0.4 #DDDDDD,
stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3);
border: 2px solid #C4C4C3;
border-bottom-color: #C2C7CB; /* same as the pane color */
border-top-left-radius: 4px;
border-top-right-radius: 4px;
min-width: 40ex;
padding: 2px;
font-size: 12pt;
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #A0CECE, stop: 1 #FFFFFF);
background-color: #5d85B5;
color: black;
height: 20px;
}
QTabBar::tab:selected {
border-style: outset;
background: #8db5e5;
}
QTabBar::tab:!selected {
border-style: inset;
background: #bbbbbb;
}
QTabBar::tab:hover {
background: #aee1ff;
background: #EEEEEE;
background-color: #9dc5f5;
background: #8db5e5;
}
QTabBar::scroller { /* the width of the scroll buttons */
width: 80px;
}
QTabBar QToolButton { /* the scroll buttons are tool buttons */
min-width: 30px;
width: 30px;
padding: 0px;
margin-top: 5px;
}
QListWidget::item {
}
QListWidget#oneDialogMessenger {
background-color: white;
border: 1px solid gray;
border-radius: 2px;
}
QListWidget::item:selected {
color: #000000;
}
QListWidget#oneDialogMessenger::item:selected {
color: #000000;
background: #ffffff;
}
QListWidget::item:hover {
background: #EEEEEE;
}
QListWidget#oneDialogMessenger::item:hover {
background: #ffffff;
}
QListWidget#subProcItemListWidget::item:hover {
background: #ffffff;
}
QListWidget {
selection-background-color: #9dc5f5;; /* Цвет выделенного элемента */
selection-color: black; /* Цвет текста выделенного элемента */
show-decoration-selected: false; /* Показывать выделение на выбранном элементе */
outline: none; /* Без выделения фокуса */
}
QTextEdit {
padding: -20px;
font-size: 12pt;
}
QTextEdit#editMsg {
height: 65px;
background: #ffffff;
}
QTextEdit#MsgWidgetEditTextLocal {
background: #EEEEEE;
border-radius: 8px;
}
QTextEdit#MsgWidgetEditTextRemote {
background: #9dc5f5;
border-radius: 8px;
}
QLabel#MsgWidgetLblTimeLocal {
font-size: 9pt;
}
QLabel#MsgWidgetLblTimeRemote {
font-size: 9pt;
}
QLabel#MsgWidgetLblNameLocal {
font-size: 9pt;
}
QLabel#MsgWidgetLblNameRemote {
font-size: 9pt;
}
QLabel#MsgWidgetLblAvatar {
}
QLabel#MessangerWidgetLblUser {
background: #ddeeff;
padding-left: 4px;
border-radius: 4px;
background: #9dc5f5;
}
QLabel#MessangerWidgetLblAvatar {
}
QLabel#MessangerWidgetLblLoggedIn {
}
QLabel#PersonalCard_lblName {
font-size: 16pt;
color: #2d5585;
}
QLabel#ReportFimWidget_label_MMEL, QLabel#ActionWidget_lbl_Type {
color: gray;
border-radius: 4px;
min-width: 50px;
min-height: 25px;
background: #ffffff;
border: 1px solid gray;
}
QLabel#ActionWidget_lbl_Status {
color: black;
border-radius: 18px;
min-width: 150px;
min-height: 40px;
background: #d0d0d0;
border: 1px solid gray;
}
QLabel#DeviceWidget_lbl_Status {
color: black;
border-radius: 18px;
min-width: 250px;
min-height: 40px;
background: #f0f0f0;
border: 1px solid gray;
}
QLabel#DeviceWidget_lbl_ObjName {
color: black;
}
QLabel#DeviceWidget_lbl_Code {
color: gray;
}
QLabel#lblStatAMM, QLabel#lblStatFIM {
padding-top: 1px;
}
QPlainTextEdit#ActionWidget_plainTextEdit_Procedure{
border-radius: 5px;
border: 1px solid gray;
background: #F0F0F2;
}
QPlainTextEdit#ActionWidget_plainTextEdit_Comment{
border-radius: 5px;
border: 1px solid gray;
background: #FEFEFE;
}
QPlainTextEdit#plainText{ /*Репорт*/
margin-left: 50pt;
margin-right: 100pt;
}
QComboBox::drop-down {
subcontrol-position: right center; /*Выравнивание стрелки по центру */
width: 20px; /* Ширина области со стрелкой */
border: none;
border-left: 1px solid gray;
background: #E0E0E0;
}
QComboBox::down-arrow {
image: url(:/resources/icons/branch-open.png); /* Подставляем свою картинку стрелки */
width: 16px; /* Размер иконки */
height: 16px;
}
QComboBox QAbstractItemView {
selection-background-color: #9dc5f5;; /* Цвет выделенного элемента */
selection-color: black; /* Цвет текста выделенного элемента */
alternate-background-color: lightgrey; /* Чередующиеся строки */
show-decoration-selected: true; /* Показывать выделение на выбранном элементе */
outline: none; /* Без выделения фокуса */
}

Binary file not shown.

View File

@@ -0,0 +1,4 @@
set CURRENT_DIR=%~dp0
cd %CURRENT_DIR%
set "PGPASSWORD=12345678"
pg_restore -U postgres -h localhost -p 5432 -d rrjdatabase .\restoreDB\DBLMS_EMPTY.backup

BIN
FILES/ICONS/planeCustom.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<ServerSettingsContainer>
<ServerSettings Address="192.168.100.87" Port="6000" Language="RUS" AutoStart="0"/>
<ServerSettings Address="127.0.0.1" Port="6000" Language="RUS"/>
</ServerSettingsContainer>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<ServerSettingsContainer>
<DataBaseSettings Type="QPSQL" Name="rrjdatabase" UserName="rrjuser" Password="rrjuser" HostName="localhost" Port="5432" Language="RUS"/>
</ServerSettingsContainer>

Binary file not shown.

View File

@@ -1,40 +0,0 @@
project(GUIdataBaseLMS LANGUAGES CXX)
common_info_for_project(GUIdataBaseLMS)
add_executable(GUIdataBaseLMS
main.cpp
mainwindow.cpp
mainwindow.h
mainwindow.ui
testDBpgSQL.qrc
)
target_link_libraries(GUIdataBaseLMS PRIVATE Qt5::Widgets)
target_link_libraries(GUIdataBaseLMS PRIVATE Qt5::Sql)
target_link_libraries(GUIdataBaseLMS PRIVATE Qt5::Xml)
target_link_libraries(GUIdataBaseLMS PRIVATE Qt5::Network)
target_include_directories(GUIdataBaseLMS PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../InstructorsAndTrainees)
target_include_directories(GUIdataBaseLMS PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../InstructorsAndTrainees/instructors)
target_include_directories(GUIdataBaseLMS PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../InstructorsAndTrainees/trainees)
target_include_directories(GUIdataBaseLMS PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../InstructorsAndTrainees/tasks)
target_include_directories(GUIdataBaseLMS PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../InstructorsAndTrainees/docTasks)
target_include_directories(GUIdataBaseLMS PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../InstructorsAndTrainees/connectorToServer)
target_include_directories(GUIdataBaseLMS PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../InstructorsAndTrainees/connectorToServer/Core)
target_include_directories(GUIdataBaseLMS PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../InstructorsAndTrainees/messanger)
if(PROJECT_TYPE_DEBUG)
target_link_directories(GUIdataBaseLMS PUBLIC ${REPO_PATH}/BUILDS/Debug64/InstructorsAndTrainees)
else()
target_link_directories(GUIdataBaseLMS PUBLIC ${REPO_PATH}/BUILDS/Release64/InstructorsAndTrainees)
endif()
target_link_libraries(GUIdataBaseLMS PRIVATE libInstructorsAndTrainees.dll)
target_include_directories(GUIdataBaseLMS PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../DataBaseLMS)
if(PROJECT_TYPE_DEBUG)
target_link_directories(GUIdataBaseLMS PUBLIC ${REPO_PATH}/BUILDS/Debug64/DataBaseLMS)
else()
target_link_directories(GUIdataBaseLMS PUBLIC ${REPO_PATH}/BUILDS/Release64/DataBaseLMS)
endif()
target_link_libraries(GUIdataBaseLMS PRIVATE libDataBaseLMS.dll)

View File

@@ -1,695 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.1, 2024-12-28T11:57:36. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{00ce76f6-77cf-4587-a216-9a8e243377cb}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
<value type="QString">-fno-delayed-template-parsing</value>
</valuelist>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5142.win64_mingw73_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Debug</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QT/BUILDS/LMS/GUIdataBaseLMS/Debug64</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Отладка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Release</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/LMS/GUIdataBaseLMS/Release64</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=RelWithDebInfo</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/ProjectsQT_5_14/testDB/build-testDBpgSQL-Desktop_Qt_5_14_2_MinGW_64_bit-RelWithDebInfo</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск с отладочной информацией</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.3">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=MinSizeRel</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/ProjectsQT_5_14/testDB/build-testDBpgSQL-Desktop_Qt_5_14_2_MinGW_64_bit-MinSizeRel</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск минимального размера</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">4</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">testDBpgSQL</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.testDBpgSQL</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">testDBpgSQL</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default"></value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.1">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">GUIdataBaseLMS</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.GUIdataBaseLMS</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">GUIdataBaseLMS</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/QT/BUILDS/LMS/GUIdataBaseLMS/Debug64</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">2</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.1</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.14.2 MinGW 32-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.14.2 MinGW 32-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5142.win32_mingw73_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Debug</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/ProjectsQT_5_14/testDB/Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Отладка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Release</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/ProjectsQT_5_14/testDB/build-testDBpgSQL-Desktop_Qt_5_14_2_MinGW_32_bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=RelWithDebInfo</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/ProjectsQT_5_14/testDB/build-testDBpgSQL-Desktop_Qt_5_14_2_MinGW_32_bit-RelWithDebInfo</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск с отладочной информацией</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.3">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=MinSizeRel</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/ProjectsQT_5_14/testDB/build-testDBpgSQL-Desktop_Qt_5_14_2_MinGW_32_bit-MinSizeRel</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск минимального размера</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">4</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">testDBpgSQL</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.testDBpgSQL</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">testDBpgSQL</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default"></value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">2</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

View File

@@ -1,391 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.1, 2025-01-10T12:59:21. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{15ef2478-2444-4b00-88b8-fead51c6fef5}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
<value type="QString">-fno-delayed-template-parsing</value>
</valuelist>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5142.win64_mingw73_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">4</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Debug</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QT/Projects/RRJServer/RRJServer/GUIdataBaseLMS/build-GUIdataBaseLMS-Desktop_Qt_5_14_2_MinGW_64_bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Отладка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Release</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QT/Projects/RRJServer/RRJServer/GUIdataBaseLMS/build-GUIdataBaseLMS-Desktop_Qt_5_14_2_MinGW_64_bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=RelWithDebInfo</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QT/Projects/RRJServer/RRJServer/GUIdataBaseLMS/build-GUIdataBaseLMS-Desktop_Qt_5_14_2_MinGW_64_bit-RelWithDebInfo</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск с отладочной информацией</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.3">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=MinSizeRel</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QT/Projects/RRJServer/RRJServer/GUIdataBaseLMS/build-GUIdataBaseLMS-Desktop_Qt_5_14_2_MinGW_64_bit-MinSizeRel</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск минимального размера</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.4">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Debug</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QT/Projects/RRJServer/RRJServer/BUILDS/GUIdataBaseLMS/Debug64</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">5</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">GUIdataBaseLMS</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.GUIdataBaseLMS</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">GUIdataBaseLMS</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/QT/Projects/RRJServer/RRJServer/BUILDS/GUIdataBaseLMS/Debug64</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<AuthData Login="admin" Password="admin" InstructorName="Администратор" ClientName="Администратор" AccessType="instructor"/>

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ClientDeAutorization Login="admin"/>

View File

@@ -1,56 +0,0 @@
#include <QHBoxLayout>
#include <QMessageBox>
#include "mainwindow.h"
#include "./ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent),
ui(new Ui::MainWindow),
m_instructorsAndTraineesWidget(nullptr)
{
ui->setupUi(this);
m_instructorsAndTraineesWidget = new InstructorsAndTraineesWidget(this);
connect(m_instructorsAndTraineesWidget,&InstructorsAndTraineesWidget::signal_LanguageChanged,this,&MainWindow::slot_LanguageChanged);
ui->horizontalLayout->addWidget(m_instructorsAndTraineesWidget);
//this->move(0, 0);
//this->showNormal();
this->showMaximized();
if(m_instructorsAndTraineesWidget->getLanguage() == "ENG")
{
qtLanguageTranslator.load(QString("translations/GUIdataBaseLMS_") + "en_EN", ".");
qApp->installTranslator(&qtLanguageTranslator);
}
else
{
qtLanguageTranslator.load(QString("translations/GUIdataBaseLMS_") + "ru_RU", ".");
qApp->installTranslator(&qtLanguageTranslator);
}
}
MainWindow::~MainWindow()
{
delete m_instructorsAndTraineesWidget;
delete ui;
}
void MainWindow::changeEvent(QEvent *event)
{
// В случае получения события изменения языка приложения
if (event->type() == QEvent::LanguageChange)
{// переведём окно заново
ui->retranslateUi(this);
}
}
void MainWindow::slot_LanguageChanged(QString language)
{
qtLanguageTranslator.load(QString(QStringLiteral("translations/GUIdataBaseLMS_")) + language, QStringLiteral("."));
qApp->installTranslator(&qtLanguageTranslator);
}

View File

@@ -1,12 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ru_RU">
<context>
<name>MainWindow</name>
<message>
<location filename="../mainwindow.ui" line="14"/>
<source>Learning management system (LMS)</source>
<translation>Система управления обучением (СУО)</translation>
</message>
</context>
</TS>

View File

@@ -1,618 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.1, 2024-12-28T11:57:36. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{00ce76f6-77cf-4587-a216-9a8e243377cb}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
<value type="QString">-fno-delayed-template-parsing</value>
</valuelist>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5142.win64_mingw73_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Debug</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QT/BUILDS/LMS/DB_IaT/Debug64</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Отладка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Release</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/LMS/DB_IaT/Release64</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=RelWithDebInfo</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/VEYON/SUO/build-InstructorsAndTrainees-Desktop_Qt_5_14_2_MinGW_64_bit-RelWithDebInfo</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск с отладочной информацией</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.3">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=MinSizeRel</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/VEYON/SUO/build-InstructorsAndTrainees-Desktop_Qt_5_14_2_MinGW_64_bit-MinSizeRel</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск минимального размера</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">4</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey"></value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default"></value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.1</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.14.2 MinGW 32-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.14.2 MinGW 32-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5142.win32_mingw73_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Debug</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/VEYON/SUO/build-InstructorsAndTrainees-Desktop_Qt_5_14_2_MinGW_32_bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Отладка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Release</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/VEYON/SUO/Release64</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=RelWithDebInfo</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/VEYON/SUO/build-InstructorsAndTrainees-Desktop_Qt_5_14_2_MinGW_32_bit-RelWithDebInfo</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск с отладочной информацией</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.3">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=MinSizeRel</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/VEYON/SUO/build-InstructorsAndTrainees-Desktop_Qt_5_14_2_MinGW_32_bit-MinSizeRel</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск минимального размера</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">4</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey"></value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default"></value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">2</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

View File

@@ -1,390 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.1, 2025-01-10T12:59:45. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{15ef2478-2444-4b00-88b8-fead51c6fef5}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
<value type="QString">-fno-delayed-template-parsing</value>
</valuelist>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5142.win64_mingw73_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">4</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Debug</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QT/Projects/RRJServer/RRJServer/BUILDS/DB_IaT/Debug64</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Отладка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Release</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QT/Projects/RRJServer/RRJServer/DB_IaT/build-InstructorsAndTrainees-Desktop_Qt_5_14_2_MinGW_64_bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=RelWithDebInfo</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QT/Projects/RRJServer/RRJServer/DB_IaT/build-InstructorsAndTrainees-Desktop_Qt_5_14_2_MinGW_64_bit-RelWithDebInfo</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск с отладочной информацией</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.3">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=MinSizeRel</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QT/Projects/RRJServer/RRJServer/DB_IaT/build-InstructorsAndTrainees-Desktop_Qt_5_14_2_MinGW_64_bit-MinSizeRel</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск минимального размера</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.4">
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Debug</value>
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QT/Projects/RRJServer/RRJServer/BUILDS/DB_IaT/Debug64</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">5</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey"></value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default"></value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

View File

@@ -1,319 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 6.0.2, 2024-05-27T09:37:39. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{88628a15-8b1c-4544-92e6-5683c5f27136}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="bool" key="EditorConfiguration.UseIndenter">false</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
<value type="bool" key="AutoTest.Framework.Boost">true</value>
<value type="bool" key="AutoTest.Framework.CTest">false</value>
<value type="bool" key="AutoTest.Framework.Catch">true</value>
<value type="bool" key="AutoTest.Framework.GTest">true</value>
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
</valuemap>
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
<value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="AutoTest.UseGlobal">true</value>
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey"/>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
<value type="QString" key="ClangCodeModel.WarningConfigId">Builtin.BuildSystem</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
<value type="int" key="ClangTools.ParallelJobs">8</value>
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
</valuemap>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{ec5f7042-f1c7-4b2e-9c22-2340fe1a69bd}</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="CMake.Build.Type">Debug</value>
<value type="QString" key="CMake.Initial.Parameters">-GUnix Makefiles
-DCMAKE_BUILD_TYPE:STRING=Debug
-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/andrey/VEYON/SUO/Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Отладка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="CMake.Build.Type">Release</value>
<value type="QString" key="CMake.Initial.Parameters">-GUnix Makefiles
-DCMAKE_BUILD_TYPE:STRING=Release
-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/andrey/VEYON/SUO/build-InstructorsAndTrainees-Desktop-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="QString" key="CMake.Build.Type">RelWithDebInfo</value>
<value type="QString" key="CMake.Initial.Parameters">-GUnix Makefiles
-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo
-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/andrey/VEYON/SUO/build-InstructorsAndTrainees-Desktop-RelWithDebInfo</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release with Debug Information</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.3">
<value type="QString" key="CMake.Build.Type">MinSizeRel</value>
<value type="QString" key="CMake.Initial.Parameters">-GUnix Makefiles
-DCMAKE_BUILD_TYPE:STRING=MinSizeRel
-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/andrey/VEYON/SUO/build-InstructorsAndTrainees-Desktop-MinSizeRel</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Minimum Size Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">4</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

View File

@@ -1,48 +0,0 @@
#include "commonview.h"
#include <QFile>
#include <QMessageBox>
CommonView::CommonView(ConnectorToServer* connectorToServer, TypeView type, QWidget *parent):
QWidget(parent),
connectorToServer(connectorToServer),
treeWidget(nullptr),
typeView(type),
archiveVisible(false),
notLoggedInVisible(true),
adminMode(false),
authComplited(false),
lastCurrentID(0),
typeObject(TypeObject::objInstructor),
waitAnimationWidget(nullptr)
{
treeWidget = new QTreeWidget();
treeWidget->setFocusPolicy(Qt::FocusPolicy::NoFocus);
waitAnimationWidget = new WaitAnimationWidget;
QMovie *movie = new QMovie(":/resources/icons/762.gif");
//waitAnimationWidget->setParent(this);
waitAnimationWidget->initialize(movie,this);
}
CommonView::~CommonView()
{
waitAnimationWidget->hideWithStop();
delete waitAnimationWidget;
}
void CommonView::setItemColorArchive(QTreeWidgetItem *item)
{
setItemColor(item,QColor(240, 240, 240));
}
void CommonView::setItemColorNoArchive(QTreeWidgetItem *item)
{
setItemColor(item,QColor(255, 255, 255));
}
void CommonView::setItemColor(QTreeWidgetItem *item, QColor color)
{
for (int i = 0; i < item->columnCount(); i++)
item->setBackground(i, color);
}

View File

@@ -1,16 +0,0 @@
#include "notifycontroller.h"
NotifyController::NotifyController(QObject *parent) : QObject(parent)
{
}
void NotifyController::showWarning(QString text)
{
QMessageBox warning;
warning.setText(text);
warning.setIcon(QMessageBox::Warning);
warning.setWindowTitle(tr("Error"));
warning.exec();
}

View File

@@ -1,18 +0,0 @@
#ifndef NOTIFYCONTROLLER_H
#define NOTIFYCONTROLLER_H
#include <QObject>
#include <QMessageBox>
class NotifyController : public QObject
{
Q_OBJECT
public:
explicit NotifyController(QObject *parent = nullptr);
void showWarning(QString text);
signals:
};
#endif // NOTIFYCONTROLLER_H

View File

@@ -1,472 +0,0 @@
#include "connectortoserver.h"
#include <QThread>
ConnectorToServer::ConnectorToServer(QWidget* parentWidget, QObject *parent) :
QObject(parent),
parentWidget(parentWidget),
connectionThread(nullptr),
client(nullptr),
dataParser(nullptr),
sendSystem(nullptr),
recognizeSystem(nullptr),
versionSelectWidget(nullptr),
versionContainer(nullptr),
notifyController(nullptr)
{
initialize();
}
ConnectorToServer::~ConnectorToServer()
{
delete client;
delete versionSelectWidget;
delete notifyController;
delete versionContainer;
delete recognizeSystem;
delete sendSystem;
delete dataParser;
connectionThread->quit();
connectionThread->wait();
delete connectionThread;
}
bool ConnectorToServer::authorizationInstructorLocal(QString login, QString password)
{
if (!client->getIsConnected())
{
return false;
}
ClientAutorization *autorization = new ClientAutorization;
autorization->Login = login;
autorization->Password = password;
autorization->TypeClient = TypeClientAutorization::TYPE_GUI;
QByteArray array = dataParser->createAuthMessage(autorization);
emit signal_sendXMLmsgGUItoServer(array);
return true;
}
bool ConnectorToServer::deAuthorizationInstructorLocal(QString login)
{
if (!client->getIsConnected())
{
return false;
}
ClientDeAutorization *deAutorization = new ClientDeAutorization;
deAutorization->Login = login;
QByteArray array = dataParser->createDeAuthMessage(deAutorization);
emit signal_sendXMLmsgGUItoServer(array);
return true;
}
bool ConnectorToServer::sendQueryToDB(TypeQueryToDB typeQuery, int id, void* data)
{
if (!client->getIsConnected())
{
return false;
}
ClientQueryToDB *queryToDB = new ClientQueryToDB;
queryToDB->typeQuery = typeQuery;
QByteArray array = dataParser->createQueryToDBMessage(queryToDB, id, data);
emit signal_sendXMLmsgGUItoServer(array);
return true;
}
bool ConnectorToServer::sendMessage(ClientMessage clientMessage)
{
if (!client->getIsConnected())
{
return false;
}
QByteArray array = dataParser->createMessage(clientMessage);
emit signal_sendXMLmsgGUItoServer(array);
return true;
}
bool ConnectorToServer::sendQueryTasksXML(QString type)
{
if (!client->getIsConnected())
{
return false;
}
QByteArray array = dataParser->createQueryTasksXMLMessage(type);
emit signal_sendXMLmsgGUItoServer(array);
return true;
}
void ConnectorToServer::setLoginName(QString name)
{
versionSelectWidget->setAuthor(name);
}
ServerSettings ConnectorToServer::getServerSettings()
{
return serverSettings;
}
bool ConnectorToServer::getIsConnected()
{
return client->getIsConnected();
}
void ConnectorToServer::SetConnectToServer()
{
serverSettings = *dataParser->getServerSettings();
emit sigSetConnect(dataParser->getServerSettings(),connectionThread);
}
void ConnectorToServer::StopConnectToServer()
{
emit sigStopConnect();
clearListModelDB();
}
QByteArray ConnectorToServer::getListTaskFimArray()
{
return listTaskFimArray;
}
QByteArray ConnectorToServer::getListTaskAmmArray()
{
return listTaskAmmArray;
}
QList<Instructor> ConnectorToServer::getListInstructors()
{
return listInstructors;
}
QList<Trainee> ConnectorToServer::getListTrainees()
{
return listTrainees;
}
QList<Group> ConnectorToServer::getListGroups()
{
return listGroups;
}
QList<Computer> ConnectorToServer::getListComputers()
{
return listComputers;
}
QList<Classroom> ConnectorToServer::getListClassrooms()
{
return listClassrooms;
}
QList<TaskAmmFim> ConnectorToServer::getListTasksAMMforTrainee(int trainee_id)
{
if(mapTasksAMM.contains(trainee_id))
return mapTasksAMM.value(trainee_id);
else
return QList<TaskAmmFim>();
}
QList<TaskAmmFim> ConnectorToServer::getListTasksFIMforTrainee(int trainee_id)
{
if(mapTasksFIM.contains(trainee_id))
return mapTasksFIM.value(trainee_id);
else
return QList<TaskAmmFim>();
}
bool ConnectorToServer::isArchivedInstructor(int id)
{
for(Instructor instructor : listInstructors)
{
if(instructor.getID() == id)
{
if(instructor.getArchived()) return true; else return false;
}
}
return false;
}
bool ConnectorToServer::isAdminInstructor(int id)
{
for(Instructor instructor : listInstructors)
{
if(instructor.getID() == id)
{
if(instructor.getIsAdmin()) return true; else return false;
}
}
return false;
}
bool ConnectorToServer::isLoggedInInstructor(int id)
{
for(Instructor instructor : listInstructors)
{
if(instructor.getID() == id)
{
if(instructor.getLoggedIn()) return true; else return false;
}
}
return false;
}
Instructor ConnectorToServer::getInstructor(int id)
{
for(Instructor instructor : listInstructors)
{
if(instructor.getID() == id)
return instructor;
}
return Instructor();
}
QList<Trainee> ConnectorToServer::getListTraineesInGroup(int id)
{
QList<Trainee> list;
for(Trainee trainee : listTrainees)
{
if(trainee.getGroup().getID() == id)
list.append(trainee);
}
return list;
}
bool ConnectorToServer::isArchivedTrainee(int id)
{
for(Trainee trainee : listTrainees)
{
if(trainee.getID() == id)
{
if(trainee.getArchived()) return true; else return false;
}
}
return false;
}
bool ConnectorToServer::isLoggedInTrainee(int id)
{
for(Trainee trainee : listTrainees)
{
if(trainee.getID() == id)
{
if(trainee.getLoggedIn()) return true; else return false;
}
}
return false;
}
Trainee ConnectorToServer::getTrainee(int id)
{
for(Trainee trainee : listTrainees)
{
if(trainee.getID() == id)
return trainee;
}
return Trainee();
}
Group ConnectorToServer::getGroup(int id)
{
for(Group group : listGroups)
{
if(group.getID() == id)
return group;
}
return Group();
}
int ConnectorToServer::getIdTraineeByLogin(QString login)
{
for(Trainee trainee : listTrainees)
{
if(trainee.getLogin() == login)
return trainee.getID();
}
return 0;
}
void ConnectorToServer::showVersionSelect()
{
QByteArray answer = dataParser->xmlAnswer_notify(cmd_CheckVersionList);
emit sigSendAnswerToServer(answer);
}
void ConnectorToServer::slot_AnswerQueryToDB_ListInstructors(QList<Instructor> listInstructors)
{
this->listInstructors = listInstructors;
emit signal_UpdateDB(true, false);
}
void ConnectorToServer::slot_AnswerQueryToDB_ListGroups(QList<Group> listGroups)
{
this->listGroups = listGroups;
emit signal_UpdateDB(false, true);
}
void ConnectorToServer::slot_AnswerQueryToDB_ListTrainees(QList<Trainee> listTrainees)
{
this->listTrainees = listTrainees;
emit signal_UpdateDB(false, true);
emit signal_InitMessanger(listTrainees);
}
void ConnectorToServer::slot_AnswerQueryToDB_ListComputers(QList<Computer> listComputers)
{
this->listComputers = listComputers;
//emit signal_UpdateDB(false, true); //TODO
}
void ConnectorToServer::slot_AnswerQueryToDB_ListClassrooms(QList<Classroom> listClassrooms)
{
this->listClassrooms = listClassrooms;
//emit signal_UpdateDB(false, true); //TODO
}
void ConnectorToServer::slot_AnswerQueryToDB_ListTasksAMMforTrainee(QList<TaskAmmFim> listTasks, int trainee_id)
{
//Удаляем старые задачи этого обучаемого
mapTasksAMM.remove(trainee_id);
//Добавляем новые
mapTasksAMM.insert(trainee_id, listTasks);
emit signal_UpdateTasksAMMforTrainee(trainee_id);
}
void ConnectorToServer::slot_AnswerQueryToDB_ListTasksFIMforTrainee(QList<TaskAmmFim> listTasks, int trainee_id)
{
//Удаляем старые задачи этого обучаемого
mapTasksFIM.remove(trainee_id);
//Добавляем новые
mapTasksFIM.insert(trainee_id, listTasks);
emit signal_UpdateTasksFIMforTrainee(trainee_id);
}
void ConnectorToServer::slot_AnswerQueryTasksXML_FIM(QByteArray array)
{
this->listTaskFimArray = array;
emit signal_UpdateTasksFIM();
}
void ConnectorToServer::slot_AnswerQueryTasksXML_AMM(QByteArray array)
{
this->listTaskAmmArray = array;
emit signal_UpdateTasksAMM();
}
void ConnectorToServer::slot_sendMessage(ClientMessage clientMessage)
{
sendMessage(clientMessage);
}
void ConnectorToServer::showServerList(QList<StreamingVersionData *> *serverList)
{
versionSelectWidget->fillView(serverList);
}
void ConnectorToServer::slot_HashReady()
{
//sendQueryTasksXML("fim");
sendQueryTasksXML("amm");
}
void ConnectorToServer::initialize()
{
createObjects();
bindConnection();
emit sigInitializeClient(recognizeSystem,sendSystem,connectionThread);
SetConnectToServer();
}
void ConnectorToServer::bindConnection()
{
connect(this,&ConnectorToServer::sigInitializeClient,client,&TCPClient::initialize,Qt::AutoConnection);
connect(this,&ConnectorToServer::sigSetConnect,client,&TCPClient::setConnect,Qt::AutoConnection);
connect(this,&ConnectorToServer::sigStopConnect,client,&TCPClient::setDisconnect,Qt::AutoConnection);
connect(this,&ConnectorToServer::signal_sendXMLmsgGUItoServer,sendSystem,&SendSystem::sendXMLmsgGUItoServer);
connect(this,&ConnectorToServer::sigSendAnswerToServer,sendSystem,&SendSystem::sendXMLAnswer,Qt::AutoConnection);
connect(recognizeSystem,&RecognizeSystem::sigAuth,this,&ConnectorToServer::sigLoginResult);
connect(recognizeSystem,&RecognizeSystem::sigDeAuth,this,&ConnectorToServer::sigDeLoginResult);
connect(recognizeSystem,&RecognizeSystem::signal_ReceiveMessage,this,&ConnectorToServer::signal_receiveMessage);
connect(recognizeSystem,&RecognizeSystem::sigShowServerDataList,this,&ConnectorToServer::showServerList);
connect (recognizeSystem,&RecognizeSystem::sigSetVersion,versionContainer,&VersionContainer::setServerVersionData);
//connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryToDB,this,&ConnectorToServer::slot_AnswerQueryToDB);
connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryToDB_ListInstructors,this,&ConnectorToServer::slot_AnswerQueryToDB_ListInstructors);
connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryToDB_ListGroups,this,&ConnectorToServer::slot_AnswerQueryToDB_ListGroups);
connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryToDB_ListTrainees,this,&ConnectorToServer::slot_AnswerQueryToDB_ListTrainees);
connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryToDB_ListComputers,this,&ConnectorToServer::slot_AnswerQueryToDB_ListComputers);
connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryToDB_ListClassrooms,this,&ConnectorToServer::slot_AnswerQueryToDB_ListClassrooms);
connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryToDB_ListTasksAMMforTrainee,this,&ConnectorToServer::slot_AnswerQueryToDB_ListTasksAMMforTrainee);
connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryToDB_ListTasksFIMforTrainee,this,&ConnectorToServer::slot_AnswerQueryToDB_ListTasksFIMforTrainee);
connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryTasksXML_FIM,this,&ConnectorToServer::slot_AnswerQueryTasksXML_FIM);
connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryTasksXML_AMM,this,&ConnectorToServer::slot_AnswerQueryTasksXML_AMM);
connect(client,&TCPClient::signal_ConnectedToServer,this,&ConnectorToServer::signal_ConnectedToServer,Qt::AutoConnection);
connect(recognizeSystem,&RecognizeSystem::sigNotify,notifyController,&NotifyController::showWarning,Qt::AutoConnection);
connect(recognizeSystem,&RecognizeSystem::sigHashReady,this,&ConnectorToServer::slot_HashReady);
}
void ConnectorToServer::createObjects()
{
connectionThread = new QThread;
client = new TCPClient;
client->moveToThread(connectionThread);
dataParser = new DataParser;
sendSystem = new SendSystem;
sendSystem->moveToThread(connectionThread);
recognizeSystem = new RecognizeSystem;
recognizeSystem->moveToThread(connectionThread);
notifyController = new NotifyController;
versionContainer = new VersionContainer;
versionSelectWidget = new VersionSelectWidget(parentWidget);
versionSelectWidget->initialize(sendSystem,versionContainer,notifyController, recognizeSystem);
connectionThread->start();
connectionThread->setPriority(QThread::HighestPriority);
}
void ConnectorToServer::clearListModelDB()
{
listInstructors.clear();
listGroups.clear();
listTrainees.clear();
listComputers.clear();
listClassrooms.clear();
mapTasksAMM.clear();
mapTasksFIM.clear();
listTaskFimArray.clear();
listTaskAmmArray.clear();
}
SendSystem *ConnectorToServer::getSendSystem() const
{
return sendSystem;
}

View File

@@ -1,19 +0,0 @@
#include "dialogauthorizationinstructor.h"
#include "ui_dialogauthorizationinstructor.h"
DialogAuthorizationInstructor::DialogAuthorizationInstructor(QWidget *parent) :
QDialog(parent),
ui(new Ui::DialogAuthorizationInstructor)
{
ui->setupUi(this);
ui->editLogin->setProperty("mandatoryField", true);
ui->editPassword->setProperty("mandatoryField", true);
ui->editPassword->setEchoMode(QLineEdit::EchoMode::Password);
}
DialogAuthorizationInstructor::~DialogAuthorizationInstructor()
{
delete ui;
}

View File

@@ -1,33 +0,0 @@
#ifndef DIALOGAUTHORIZATIONINSTRUCTOR_H
#define DIALOGAUTHORIZATIONINSTRUCTOR_H
#include <QDialog>
#include "ui_dialogauthorizationinstructor.h"
namespace Ui {
class DialogAuthorizationInstructor;
}
class DialogAuthorizationInstructor : public QDialog
{
Q_OBJECT
public:
explicit DialogAuthorizationInstructor(QWidget *parent = nullptr);
~DialogAuthorizationInstructor();
QString getLogin()
{
return ui->editLogin->text();
}
QString getPassword()
{
return ui->editPassword->text();
}
private:
Ui::DialogAuthorizationInstructor *ui;
};
#endif // DIALOGAUTHORIZATIONINSTRUCTOR_H

View File

@@ -1,148 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DialogAuthorizationInstructor</class>
<widget class="QDialog" name="DialogAuthorizationInstructor">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>300</width>
<height>140</height>
</rect>
</property>
<property name="font">
<font>
<family>Tahoma</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="windowTitle">
<string>Instructor authorization</string>
</property>
<property name="windowIcon">
<iconset resource="../resources.qrc">
<normaloff>:/resources/icons/lms.png</normaloff>:/resources/icons/lms.png</iconset>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="label_1">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Login</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Password</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QLineEdit" name="editLogin">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>admin</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="editPassword">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>admin</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="locale">
<locale language="English" country="UnitedStates"/>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources>
<include location="../resources.qrc"/>
</resources>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>DialogAuthorizationInstructor</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>DialogAuthorizationInstructor</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@@ -1,79 +0,0 @@
#include "dialogeditinstructor.h"
#include "ui_dialogeditinstructor.h"
#include <QPushButton>
DialogEditInstructor::DialogEditInstructor(QWidget *parent) :
QDialog(parent),
ui(new Ui::DialogEditInstructor),
instructorInput()
{
ui->setupUi(this);
verify();
ui->editName->setProperty("mandatoryField", true);
ui->editLogin->setProperty("mandatoryField", true);
ui->editPassword->setProperty("mandatoryField", true);
}
DialogEditInstructor::~DialogEditInstructor()
{
delete ui;
}
void DialogEditInstructor::setInstructor(Instructor instructor)
{
instructorInput = instructor;
ui->editName ->setText(instructor.getName());
ui->editLogin->setText(instructor.getLogin());
ui->editPassword->setText(instructor.getPassword());
ui->checkIsAdmin->setChecked(instructor.getIsAdmin());
ui->checkArchived->setChecked(instructor.getArchived());
ui->checkLoggedIn->setChecked(instructor.getLoggedIn());
if(instructor.getIsAdmin())
ui->editName->setEnabled(false);
else
ui->editName->setEnabled(true);
}
Instructor DialogEditInstructor::getInstructor()
{
Instructor instructor = instructorInput;
instructor.setName(ui->editName->text());
instructor.setLogin(ui->editLogin->text());
instructor.setPassword(ui->editPassword->text());
instructor.setIsAdmin(ui->checkIsAdmin->isChecked());
instructor.setArchived(ui->checkArchived->isChecked());
instructor.setLoggedIn(ui->checkLoggedIn->isChecked());
return instructor;
}
void DialogEditInstructor::on_editName_textChanged(const QString &arg1)
{
verify();
}
void DialogEditInstructor::on_editLogin_textChanged(const QString &arg1)
{
verify();
}
void DialogEditInstructor::on_editPassword_textChanged(const QString &arg1)
{
verify();
}
void DialogEditInstructor::verify()
{
if(ui->editName->text().trimmed() == QStringLiteral("") ||
ui->editLogin->text().trimmed() == QStringLiteral("") ||
ui->editPassword->text().trimmed() == QStringLiteral(""))
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
else
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
}

View File

@@ -1,204 +0,0 @@
#include <QHeaderView>
#include <QTranslator>
#include <QResizeEvent>
#include "instructorsview.h"
InstructorsView::InstructorsView(ConnectorToServer* connectorToServer, TypeView type, QWidget *parent):
CommonView(connectorToServer, type, parent)
{
typeObject = TypeObject::objInstructor;
}
void InstructorsView::resizeEvent(QResizeEvent *event)
{
int width = treeWidget->width();
treeWidget->setColumnWidth(ColumnsTreeInsructors::clmn_ID, 50);
treeWidget->setColumnWidth(ColumnsTreeInsructors::clmn_Login, 100);
treeWidget->setColumnWidth(ColumnsTreeInsructors::clmn_Password, 100);
treeWidget->setColumnWidth(ColumnsTreeInsructors::clmn_Administrator, 120);
treeWidget->setColumnWidth(ColumnsTreeInsructors::clmn_Archived, 80);
treeWidget->setColumnWidth(ColumnsTreeInsructors::clmn_Logged, 100);
int widthInstructor;
if(typeView == TypeView::onlyView)
{//onlyView
widthInstructor = width - (300 + 10);
}
else
{//control
if(adminMode)
widthInstructor = width - (550 + 10);
else
widthInstructor = width - (420 + 10);
}
if(widthInstructor < 250)
widthInstructor = 250;
treeWidget->setColumnWidth(ColumnsTreeInsructors::clmn_Instructor, widthInstructor);
QSize size = event->size();
waitAnimationWidget->resize(size);
}
void InstructorsView::slot_NeedUpdateUI(bool treeInstructor, bool treeTrainee)
{
updateButtons();
if(treeInstructor)
loadInstructorsFromDB();
}
void InstructorsView::preparationTreeWidget()
{
mtxTreeWidget.lock();
treeWidget->setColumnCount(clmn_count);
reSetHeadTreeWidget();
if(typeView == TypeView::onlyView)
{//onlyView
archiveVisible = false;
treeWidget->setColumnHidden(ColumnsTreeInsructors::clmn_ID, true);
treeWidget->setColumnHidden(ColumnsTreeInsructors::clmn_Password, true);
treeWidget->setColumnHidden(ColumnsTreeInsructors::clmn_Archived, true);
treeWidget->setColumnHidden(ColumnsTreeInsructors::clmn_Administrator, true);
}
else
{//control
archiveVisible = true;
if(adminMode)
{
treeWidget->setColumnHidden(ColumnsTreeInsructors::clmn_ID, false);
treeWidget->setColumnHidden(ColumnsTreeInsructors::clmn_Archived, false);
}
else
{
treeWidget->setColumnHidden(ColumnsTreeInsructors::clmn_ID, true);
treeWidget->setColumnHidden(ColumnsTreeInsructors::clmn_Archived, true);
}
}
treeWidget->setSortingEnabled(true);
treeWidget->sortItems(ColumnsTreeInsructors::clmn_Instructor, Qt::SortOrder::AscendingOrder);
mtxTreeWidget.unlock();
}
void InstructorsView::loadInstructorsFromDB()
{
mtxTreeWidget.lock();
//Обновление дерева
treeWidget->clear();
//Инструкторы
QList<Instructor> listInstructors;
listInstructors = connectorToServer->getListInstructors();
for(Instructor instructor : listInstructors)
{
QTreeWidgetItem *ItemInstructor = new QTreeWidgetItem(treeWidget);
ItemInstructor->setText(ColumnsTreeInsructors::clmn_ID, QString::number(instructor.getID()));
ItemInstructor->setText(ColumnsTreeInsructors::clmn_Instructor, instructor.getName());
ItemInstructor->setText(ColumnsTreeInsructors::clmn_Login, instructor.getLogin());
ItemInstructor->setText(ColumnsTreeInsructors::clmn_Password, instructor.getPassword());
//Сокрытие пароля
if(!adminMode)
ItemInstructor->setText(ColumnsTreeInsructors::clmn_Password, QStringLiteral("******"));
if(instructor.getArchived())
{//Архивный
ItemInstructor->setText(ColumnsTreeInsructors::clmn_Archived, tr("yes"));
ItemInstructor->setIcon(ColumnsTreeInsructors::clmn_Instructor, QIcon(QStringLiteral(":/resources/icons/archive.png")));
setItemColorArchive(ItemInstructor);
}
else
{//Не Архивный
ItemInstructor->setText(ColumnsTreeInsructors::clmn_Archived, tr("no"));
ItemInstructor->setIcon(ColumnsTreeInsructors::clmn_Instructor, QIcon(QStringLiteral(":/resources/icons/instructor.png")));
setItemColorNoArchive(ItemInstructor);
}
if(instructor.getIsAdmin())
{//Админ
ItemInstructor->setText(ColumnsTreeInsructors::clmn_Administrator, tr("yes"));
ItemInstructor->setIcon(ColumnsTreeInsructors::clmn_Instructor, QIcon(QStringLiteral(":/resources/icons/admin.png")));
}
else
{//Не Админ
ItemInstructor->setText(ColumnsTreeInsructors::clmn_Administrator, tr("no"));
}
if(instructor.getLoggedIn())
{//Залогинен
ItemInstructor->setText(ColumnsTreeInsructors::clmn_Logged, tr("yes"));
ItemInstructor->setIcon(ColumnsTreeInsructors::clmn_Logged, QIcon(QStringLiteral(":/resources/icons/circleGreen.png")));
}
else
{//Не Залогинен
ItemInstructor->setText(ColumnsTreeInsructors::clmn_Logged, tr("no"));
ItemInstructor->setIcon(ColumnsTreeInsructors::clmn_Logged, QIcon(QStringLiteral(":/resources/icons/circleGray.png")));
}
//Скрываем архивных (при необходимости)
if(instructor.getArchived())
if(! archiveVisible)
ItemInstructor->setHidden(true);
//Скрываем незалогиненых (при необходимости)
if(! instructor.getLoggedIn())
if(! notLoggedInVisible)
ItemInstructor->setHidden(true);
}
treeWidget->expandAll();
/*
//if(typeView == TypeView::control)
{
QTreeWidgetItem * item = treeWidget->topLevelItem(0);
if(item != nullptr)
treeWidget->setCurrentItem(item);
}*/
setCurrentInstructor(lastCurrentID);
treeWidget->sortItems(ColumnsTreeInsructors::clmn_Instructor, Qt::SortOrder::AscendingOrder);
mtxTreeWidget.unlock();
waitAnimationWidget->hideWithStop();
}
void InstructorsView::reSetHeadTreeWidget()
{
QStringList listHeaders = {tr("Instructor"), tr("Login"), tr("Password"), tr("Administrator"), tr("Archived"), tr("Logged"), tr("ID")};
treeWidget->setHeaderLabels(listHeaders);
}
void InstructorsView::setCurrentInstructor(int id)
{
for(int i = 0; i < treeWidget->topLevelItemCount(); i++)
{
QTreeWidgetItem * item = treeWidget->topLevelItem(i);
if(item != nullptr)
if(item->text(ColumnsTreeInsructors::clmn_ID).toInt() == id)
{
treeWidget->setCurrentItem(item);
return;
}
}
QTreeWidgetItem * item = treeWidget->topLevelItem(0);
if(item != nullptr)
treeWidget->setCurrentItem(item);
}

View File

@@ -1,82 +0,0 @@
#include <QMessageBox>
#include "editorinstructors.h"
#include "viewerinstructors.h"
#include "ui_viewerinstructors.h"
ViewerInstructors::ViewerInstructors(ConnectorToServer* connectorToServer, QWidget *parent) :
InstructorsView(connectorToServer, CommonView::TypeView::onlyView, parent),
ui(new Ui::ViewerInstructors)
{
ui->setupUi(this);
ui->horizontalLayout_1->addWidget(treeWidget);
treeWidget->setSelectionMode(QAbstractItemView::NoSelection);
preparationTreeWidget();
setNotLoggedInVisible(true);
ui->btnEditorInstructors->setVisible(false);
}
ViewerInstructors::~ViewerInstructors()
{
delete ui;
}
void ViewerInstructors::setAuthComplited(bool authComplited)
{
this->authComplited = authComplited;
updateButtons();
}
void ViewerInstructors::deactivate()
{
CommonView::deactivate();
updateButtons();
}
void ViewerInstructors::changeEvent(QEvent *event)
{
// В случае получения события изменения языка приложения
if (event->type() == QEvent::LanguageChange)
{// переведём окно заново
ui->retranslateUi(this);
reSetHeadTreeWidget();
//loadInstructorsFromDB();
slot_NeedUpdateUI(true, false);
}
}
void ViewerInstructors::on_btnEditorInstructors_clicked()
{
Q_EMIT signal_BlockAutorization(true);
EditorInstructors editorInstructors(connectorToServer, adminMode);
connect(connectorToServer, &ConnectorToServer::signal_UpdateDB, &editorInstructors, &EditorInstructors::slot_NeedUpdateUI);
QDialog* dialog = new QDialog(this);
QHBoxLayout *layout = new QHBoxLayout(dialog);
layout->addWidget(&editorInstructors);
dialog->setWindowTitle(tr("Editor of instructors"));
dialog->setMinimumSize(1600, 800);
dialog->setStyleSheet(this->styleSheet());
dialog->exec();
loadInstructorsFromDB();
Q_EMIT signal_BlockAutorization(false);
}
void ViewerInstructors::updateButtons()
{
if(adminMode && authComplited)
{
ui->btnEditorInstructors->setEnabled(true);
}
else
{
ui->btnEditorInstructors->setEnabled(false);
}
}

View File

@@ -1,488 +0,0 @@
#include <QMessageBox>
#include <QThread>
#include "instructorsandtraineeswidget.h"
#include "ui_instructorsandtraineeswidget.h"
#include "dialogauthorizationinstructor.h"
#include "dialogsettings.h"
InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::InstructorsAndTraineesWidget),
connectorToServer(nullptr),
viewerTrainees(nullptr),
viewerInstructors(nullptr),
messangerWidget(nullptr),
ammTasksWidget(nullptr),
fimTasksWidget(nullptr),
adminMode(false),
loginInstructorLoggedInLocal(QStringLiteral("")),
nameInstructorLoggedInLocal(QStringLiteral("")),
language("ENG")
{
ui->setupUi(this);
ui->btnSettings->setObjectName("btnSettings");
ui->tabWidget_Tasks->setObjectName("tabWidgetTasks");
ui->widget_Top->setObjectName("widgetTop");
ui->groupBox_Trainees->setObjectName("groupBox_Trainees");
#ifndef PROJECT_TYPE_DEBUG
//ui->btnUpdateStyleSheet->setVisible(false);
#endif
qRegisterMetaType<PacketType>("PacketType");
qRegisterMetaType<QList<Instructor>>("QList<Instructor>");
qRegisterMetaType<QList<Trainee>>("QList<Trainee>");
qRegisterMetaType<QList<Group>>("QList<Group>");
qRegisterMetaType<QList<Computer>>("QList<Computer>");
qRegisterMetaType<QList<Classroom>>("QList<Classroom>");
qRegisterMetaType<QList<Module*>>("QList<Module*>");
qRegisterMetaType<QList<QTreeWidgetItem*>>("QList<QTreeWidgetItem*>");
qRegisterMetaType<QList<TaskAmmFim>>("QList<TaskAmmFim>");
qRegisterMetaType<ClientMessage>("ClientMessage");
qDebug() << "InstructorsAndTraineesWidget init thread ID " << QThread::currentThreadId();
updateMyStyleSheet();
setLanguageInterfase();
connectorToServer = new ConnectorToServer(this);
connect(connectorToServer,&ConnectorToServer::sigLoginResult,this,&InstructorsAndTraineesWidget::checkLoginResult);
connect(connectorToServer,&ConnectorToServer::sigDeLoginResult,this,&InstructorsAndTraineesWidget::checkDeLoginResult);
viewerTrainees = new ViewerTrainees(connectorToServer, this);
viewerInstructors = new ViewerInstructors(connectorToServer, this);
connect(this, &InstructorsAndTraineesWidget::signal_NeedUpdateUI, viewerTrainees, &ViewerTrainees::slot_NeedUpdateUI);
connect(this, &InstructorsAndTraineesWidget::signal_NeedUpdateUI, viewerInstructors, &ViewerInstructors::slot_NeedUpdateUI);
connect(viewerInstructors, &ViewerInstructors::signal_BlockAutorization, this, &InstructorsAndTraineesWidget::signal_BlockAutorization);
connect(viewerTrainees, &ViewerTrainees::signal_BlockAutorization, this, &InstructorsAndTraineesWidget::signal_BlockAutorization);
//connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerInstructors,&ViewerInstructors::slot_NeedUpdateUI);
//connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerTrainees,&ViewerTrainees::slot_NeedUpdateUI);
connect(connectorToServer,&ConnectorToServer::signal_ConnectedToServer,this,&InstructorsAndTraineesWidget::slot_ConnectedToServer);
ammTasksWidget = new AMMtasksWidget(connectorToServer, TypeListTreeAMMFIM::listCommon, this);
fimTasksWidget = new FIMtasksWidget(connectorToServer, TypeListTreeAMMFIM::listCommon, this);
connect(connectorToServer, &ConnectorToServer::signal_UpdateTasksFIM, fimTasksWidget, &FIMtasksWidget::slot_NeedUpdateUI);
connect(connectorToServer, &ConnectorToServer::signal_UpdateTasksAMM, ammTasksWidget, &AMMtasksWidget::slot_NeedUpdateUI);
connect(viewerTrainees, &ViewerTrainees::signal_traineeSelected, fimTasksWidget, &FIMtasksWidget::slot_traineeSelected);
connect(viewerTrainees, &ViewerTrainees::signal_traineeSelected, ammTasksWidget, &AMMtasksWidget::slot_traineeSelected);
messangerWidget = new MessangerWidget(this);
//connect(connectorToServer,&ConnectorToServer::signal_InitMessanger,messangerWidget,&MessangerWidget::slot_InitMessanger);
connect(viewerTrainees, &ViewerTrainees::signal_traineeSelected, messangerWidget, &MessangerWidget::slot_traineeSelected);
connect(messangerWidget, &MessangerWidget::signal_tabMessengerChanged, viewerTrainees, &ViewerTrainees::slot_tabMessengerChanged);
connect(messangerWidget, &MessangerWidget::signal_sendMessage, connectorToServer, &ConnectorToServer::slot_sendMessage);
connect(connectorToServer,&ConnectorToServer::signal_receiveMessage,messangerWidget,&MessangerWidget::slot_showMessage);
connect(fimTasksWidget, &FIMtasksWidget::signal_AssignedTask, viewerTrainees, &ViewerTrainees::slot_waitAnimationWidgetShowWithPlayFIM);
connect(ammTasksWidget, &AMMtasksWidget::signal_AssignedTask, viewerTrainees, &ViewerTrainees::slot_waitAnimationWidgetShowWithPlayAMM);
//Размещение
ui->verticalLayout_Trainees->addWidget(viewerTrainees);
ui->verticalLayout_AMM->addWidget(ammTasksWidget);
ui->verticalLayout_FIM->addWidget(fimTasksWidget);
ui->verticalLayout_Messenger->addWidget(messangerWidget);
ui->verticalLayout_Instructors->addWidget(viewerInstructors);
ui->groupBox_Messenger->setMaximumWidth(500);
ui->groupBox_Instructors->setMaximumWidth(500);
ui->groupBox_Messenger->setMinimumWidth(490);
ui->groupBox_Instructors->setMinimumWidth(490);
ui->groupBox_Messenger->setMinimumHeight(500);
ui->groupBox_Instructors->setMinimumHeight(300);
ui->groupBox_Instructors->setMaximumHeight(300);
ui->groupBox_Trainees->setMinimumWidth(700);
ui->groupBox_Tasks->setMinimumWidth(600);
ui->btnAuthorizationInstructor->setEnabled(false);
ui->btnEditorTrainees->setEnabled(false);
ui->btnEditorInstructors->setEnabled(false);
ui->btnSetVersion->hide();
}
InstructorsAndTraineesWidget::~InstructorsAndTraineesWidget()
{
if(authorizationIsCompleted())
deAuthorizationInstructor(loginInstructorLoggedInLocal);
delete ammTasksWidget;
delete fimTasksWidget;
delete messangerWidget;
delete viewerInstructors;
delete viewerTrainees;
delete connectorToServer;
delete ui;
}
void InstructorsAndTraineesWidget::changeEvent(QEvent *event)
{
// В случае получения события изменения языка приложения
if (event->type() == QEvent::LanguageChange)
{// переведём окно заново
ui->retranslateUi(this);
updateLabelLoggedInInstructor(loginInstructorLoggedInLocal, nameInstructorLoggedInLocal);
updateLabelServer();
}
}
void InstructorsAndTraineesWidget::updateMyStyleSheet()
{
QString styleSheet = loadStyleSheet();
styleSheet = styleSheet.replace("\n", "");
this->setStyleSheet(styleSheet);
}
QString InstructorsAndTraineesWidget::getLanguage()
{
return language;
}
QString InstructorsAndTraineesWidget::loadStyleSheet()
{
//QString fileName = ":/resources/css/styleSheetMain.css";
QString fileName = "./resources/css/styleSheetMain.css";
QFile styleSheetFile(fileName);
if (!styleSheetFile.open(QFile::ReadOnly | QFile::Text))
{
QMessageBox::critical(this, tr("Attention!"), tr("The file could not be opened ") + fileName);
return QStringLiteral("");
}
else
{
QByteArray byteArray = styleSheetFile.readAll();
styleSheetFile.close();
QString style = byteArray;
return style;
}
}
void InstructorsAndTraineesWidget::slot_LanguageChanged(QString language)
{
qtLanguageTranslator.load(QString(QStringLiteral("translations/InstructorsAndTraineesWidget_")) + language, QStringLiteral("."));
qApp->installTranslator(&qtLanguageTranslator);
emit signal_LanguageChanged(language);
}
void InstructorsAndTraineesWidget::slot_UpdateStyleSheet()
{
updateMyStyleSheet();
}
void InstructorsAndTraineesWidget::checkLoginResult(ServerAuthorization *serverAuth)
{
if (serverAuth->Result)
{
loginInstructorLoggedInLocal = serverAuth->Login;
nameInstructorLoggedInLocal = serverAuth->ClientName;
idInstructorLoggedInLocal = serverAuth->Id;
if(loginInstructorLoggedInLocal == QStringLiteral("admin"))
adminMode = true;
else
adminMode = false;
viewerInstructors->setAdminMode(adminMode);
viewerTrainees->setAdminMode(adminMode);
viewerInstructors->setAuthComplited(true);
viewerTrainees->setAuthComplited(true);
ui->btnEditorTrainees->setEnabled(true);
if(adminMode)
ui->btnEditorInstructors->setEnabled(true);
Q_EMIT signal_NeedUpdateUI(true, true);
//ui->btnSetVersion->show();
//ui->btnAuthorizationInstructor->setText(tr("Deauthorization Instructor"));
updateLabelLoggedInInstructor(serverAuth->Login, serverAuth->ClientName);
connectorToServer->setLoginName(nameInstructorLoggedInLocal);
connectorToServer->sendQueryTasksXML("fim");
connectorToServer->sendQueryTasksXML("amm");
messangerWidget->initialize(serverAuth->Id);
//QMessageBox::information(this, tr("Instructor authorization"), tr("Successfully!"));
}
else
{
ui->btnAuthorizationInstructor->setChecked(false);
QMessageBox::warning(this, tr("Instructor authorization"), tr("Invalid login or password!"));
}
}
void InstructorsAndTraineesWidget::checkDeLoginResult(ServerDeAuthorization *serverDeAuth)
{
if (serverDeAuth->Result)
{
loginInstructorLoggedInLocal = QStringLiteral("");
nameInstructorLoggedInLocal = QStringLiteral("");
adminMode = false;
viewerInstructors->setAdminMode(adminMode);
viewerTrainees->setAdminMode(adminMode);
viewerInstructors->setAuthComplited(false);
viewerTrainees->setAuthComplited(false);
ui->btnEditorTrainees->setEnabled(false);
ui->btnEditorInstructors->setEnabled(false);
//Q_EMIT signal_NeedUpdateUI(true, false);
//ui->btnAuthorizationInstructor->setText(tr("Authorization Instructor"));
updateLabelLoggedInInstructor("","");
//QMessageBox::information(this, tr("Instructor deauthorization"), tr("Successfully!"));
}
else
{
ui->btnAuthorizationInstructor->setChecked(true);
QMessageBox::warning(this, tr("Instructor deauthorization"), tr("Error!"));
}
}
void InstructorsAndTraineesWidget::slot_ConnectedToServer(bool state)
{
if(state)
{//Сервер подключен
ui->btnConnectionToServer->setEnabled(false);
ui->btnAuthorizationInstructor->setEnabled(true);
ui->lblDBisConnected->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGreen.png")));
//ServerSettings serverSettings = connectorToServer->getServerSettings();
//ui->lblServer->setText(serverSettings.Address + ":" +serverSettings.Port);
updateLabelLoggedInInstructor(loginInstructorLoggedInLocal, nameInstructorLoggedInLocal);
updateLabelServer();
}
else
{//Сервер отключен
ui->btnConnectionToServer->setEnabled(true);
ui->btnAuthorizationInstructor->setEnabled(false);
//ui->btnAuthorizationInstructor->setText(tr("Authorization Instructor"));
ui->btnAuthorizationInstructor->setChecked(false);
//ui->btnSetVersion->hide();
ui->lblDBisConnected->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGray.png")));
//ui->lblServer->setText(tr("none"));
viewerInstructors->setAuthComplited(false);
viewerTrainees->setAuthComplited(false);
ui->btnEditorTrainees->setEnabled(false);
ui->btnEditorInstructors->setEnabled(false);
viewerTrainees->deactivate();
viewerInstructors->deactivate();
ammTasksWidget->deactivate();
fimTasksWidget->deactivate();
messangerWidget->clear();
loginInstructorLoggedInLocal = "";
nameInstructorLoggedInLocal = "";
updateLabelLoggedInInstructor(loginInstructorLoggedInLocal, nameInstructorLoggedInLocal);
updateLabelServer();
QMessageBox::warning(this, tr("Warning!"), tr("The server is disabled"));
}
}
bool InstructorsAndTraineesWidget::authorizationInstructorDialog(QWidget* parent)
{
DialogAuthorizationInstructor dlg(parent);
dlg.setWindowTitle(tr("Instructor authorization"));
do
{
switch( dlg.exec() )
{
case QDialog::Accepted:
{
QString login = dlg.getLogin();
QString password = dlg.getPassword();
connectorToServer->authorizationInstructorLocal(login, password);
return true;
}
case QDialog::Rejected:
return false;
default:
return false;
}
}
while(true);
return false;
}
bool InstructorsAndTraineesWidget::deAuthorizationInstructor(QString login)
{
connectorToServer->deAuthorizationInstructorLocal(login);
return true;
}
bool InstructorsAndTraineesWidget::authorizationIsCompleted()
{
if(loginInstructorLoggedInLocal == QStringLiteral(""))
return false;
else
return true;
}
void InstructorsAndTraineesWidget::on_btnConnectionToServer_clicked()
{
connectorToServer->SetConnectToServer();
}
void InstructorsAndTraineesWidget::on_btnAuthorizationInstructor_clicked()
{
bool stateIsChecked = ui->btnAuthorizationInstructor->isChecked();
if(stateIsChecked)
{//Авторизация Инструктора локальная (Администратора)
if(authorizationInstructorDialog(this))
{
connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerInstructors,&ViewerInstructors::slot_NeedUpdateUI);
connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerTrainees,&ViewerTrainees::slot_NeedUpdateUI);
connect(connectorToServer,&ConnectorToServer::signal_InitMessanger,messangerWidget,&MessangerWidget::slot_InitMessanger);
}
else
ui->btnAuthorizationInstructor->setChecked(false);
}
else
{//ДеАвторизация Инструктора локальная (Администратора)
if(authorizationIsCompleted())
{
if(deAuthorizationInstructor(loginInstructorLoggedInLocal))
{
disconnect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerInstructors,&ViewerInstructors::slot_NeedUpdateUI);
disconnect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerTrainees,&ViewerTrainees::slot_NeedUpdateUI);
disconnect(connectorToServer,&ConnectorToServer::signal_InitMessanger,messangerWidget,&MessangerWidget::slot_InitMessanger);
viewerTrainees->deactivate();
viewerInstructors->deactivate();
ammTasksWidget->deactivate();
fimTasksWidget->deactivate();
messangerWidget->clear();
}
else
ui->btnAuthorizationInstructor->setChecked(true);
}
}
}
void InstructorsAndTraineesWidget::updateLabelLoggedInInstructor(QString login, QString name)
{
if(authorizationIsCompleted())
{
QString nameLoggedInInstructor = QString("%1 (%2)").arg(name, login);
ui->lblLoggedInInstructor->setText(nameLoggedInInstructor);
if(loginInstructorLoggedInLocal == QStringLiteral("admin"))
ui->lblLoggedIn->setPixmap(QPixmap(QStringLiteral(":/resources/icons/admin.png")));
else
ui->lblLoggedIn->setPixmap(QPixmap(QStringLiteral(":/resources/icons/instructor.png")));
}
else
{
ui->lblLoggedInInstructor->setText(tr("none"));
ui->lblLoggedIn->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGray.png")));
}
}
void InstructorsAndTraineesWidget::updateLabelServer()
{
if(!connectorToServer)
return;
if(connectorToServer->getIsConnected())
{
ServerSettings serverSettings = connectorToServer->getServerSettings();
ui->lblServer->setText(serverSettings.Address + " : " +serverSettings.Port);
}
else
ui->lblServer->setText(tr("none"));
}
void InstructorsAndTraineesWidget::setLanguageInterfase()
{
ServerSettings settings;
DialogSettings::loadSettings(&settings);
if(settings.Language == "ENG")
qtLanguageTranslator.load(QString("translations/InstructorsAndTraineesWidget_") + "en_EN", ".");
else
qtLanguageTranslator.load(QString("translations/InstructorsAndTraineesWidget_") + "ru_RU", ".");
qApp->installTranslator(&qtLanguageTranslator);
}
void InstructorsAndTraineesWidget::on_btnSetVersion_clicked()
{
connectorToServer->showVersionSelect();
}
void InstructorsAndTraineesWidget::on_btnSettings_clicked()
{
DialogSettings dlg(connectorToServer, (loginInstructorLoggedInLocal != ""), this);
connect(&dlg, &DialogSettings::signal_LanguageChanged, this, &InstructorsAndTraineesWidget::slot_LanguageChanged);
connect(&dlg, &DialogSettings::signal_UpdateStyleSheet, this, &InstructorsAndTraineesWidget::slot_UpdateStyleSheet);
switch( dlg.exec() )
{
case QDialog::Accepted:
{
language = dlg.getSettings().Language;
if(dlg.settingsServerIsChanged())
{
QMessageBox::warning(this, tr("Attention!"), tr("Server settings have been changed. Please reconnect to the server."));
if(authorizationIsCompleted())
deAuthorizationInstructor(loginInstructorLoggedInLocal);
connectorToServer->StopConnectToServer();
}
break;
}
case QDialog::Rejected:
break;
default:
break;
}
}
void InstructorsAndTraineesWidget::on_btnEditorTrainees_clicked()
{
this->viewerTrainees->on_btnEditorTrainees_clicked();
}
void InstructorsAndTraineesWidget::on_btnEditorInstructors_clicked()
{
this->viewerInstructors->on_btnEditorInstructors_clicked();
}

View File

@@ -1,441 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>InstructorsAndTraineesWidget</class>
<widget class="QWidget" name="InstructorsAndTraineesWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1314</width>
<height>901</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Tahoma</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout_Main">
<item>
<widget class="QWidget" name="widget_Top" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QGridLayout" name="gridLayout_6">
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_Top">
<item>
<widget class="QToolButton" name="btnConnectionToServer">
<property name="minimumSize">
<size>
<width>130</width>
<height>58</height>
</size>
</property>
<property name="text">
<string>Connection</string>
</property>
<property name="icon">
<iconset resource="resources.qrc">
<normaloff>:/resources/icons/connectDB.png</normaloff>:/resources/icons/connectDB.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextUnderIcon</enum>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="btnAuthorizationInstructor">
<property name="minimumSize">
<size>
<width>130</width>
<height>58</height>
</size>
</property>
<property name="text">
<string>Authorization</string>
</property>
<property name="icon">
<iconset resource="resources.qrc">
<normaloff>:/resources/icons/login-user.png</normaloff>:/resources/icons/login-user.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextUnderIcon</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lblDBisConnected">
<property name="minimumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap resource="resources.qrc">:/resources/icons/circleGray.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lblServerPrefix">
<property name="text">
<string>Server: </string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lblServer">
<property name="text">
<string>none</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lblLoggedIn">
<property name="minimumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap resource="resources.qrc">:/resources/icons/circleGray.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lblLoggedInPrefix">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>40</height>
</size>
</property>
<property name="text">
<string>Logged in Instructor: </string>
</property>
<property name="textFormat">
<enum>Qt::AutoText</enum>
</property>
<property name="scaledContents">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lblLoggedInInstructor">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>40</height>
</size>
</property>
<property name="text">
<string>none</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QToolButton" name="btnSetVersion">
<property name="minimumSize">
<size>
<width>58</width>
<height>58</height>
</size>
</property>
<property name="text">
<string>ChangeVersion</string>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="btnEditorTrainees">
<property name="minimumSize">
<size>
<width>58</width>
<height>58</height>
</size>
</property>
<property name="text">
<string>Editor Trainees</string>
</property>
<property name="icon">
<iconset resource="resources.qrc">
<normaloff>:/resources/icons/DB-trainees.png</normaloff>:/resources/icons/DB-trainees.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextUnderIcon</enum>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="btnEditorInstructors">
<property name="minimumSize">
<size>
<width>58</width>
<height>58</height>
</size>
</property>
<property name="text">
<string>Editor Instructors</string>
</property>
<property name="icon">
<iconset resource="resources.qrc">
<normaloff>:/resources/icons/DB-instructors.png</normaloff>:/resources/icons/DB-instructors.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextUnderIcon</enum>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="btnSettings">
<property name="minimumSize">
<size>
<width>58</width>
<height>58</height>
</size>
</property>
<property name="text">
<string>Settings</string>
</property>
<property name="icon">
<iconset resource="resources.qrc">
<normaloff>:/resources/icons/settings.png</normaloff>:/resources/icons/settings.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextUnderIcon</enum>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_Bottom">
<item>
<layout class="QVBoxLayout" name="verticalLayout_L">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_L">
<item>
<widget class="QGroupBox" name="groupBox_Trainees">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>Trainees</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout_Trainees"/>
</item>
</layout>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="groupBox_Tasks">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>Tasks</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_Tasks">
<item>
<widget class="QTabWidget" name="tabWidget_Tasks">
<property name="currentIndex">
<number>1</number>
</property>
<widget class="QWidget" name="tab_AMM">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<attribute name="title">
<string>AMM</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout_AMM"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_FIM">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<attribute name="title">
<string>FIM</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_5">
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout_FIM"/>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_R">
<item>
<widget class="QGroupBox" name="groupBox_Messenger">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>Messenger</string>
</property>
<layout class="QGridLayout" name="gridLayout_7">
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout_Messenger"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_Instructors">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>Instructors</string>
</property>
<layout class="QGridLayout" name="gridLayout_8">
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout_Instructors"/>
</item>
</layout>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<resources>
<include location="resources.qrc"/>
</resources>
<connections/>
</ui>

View File

@@ -1,260 +0,0 @@
#include <QListWidget>
#include <QBrush>
#include <QKeyEvent>
#include <QAbstractScrollArea>
#include <QMessageBox>
#include <QLabel>
#include "messangerwidget.h"
#include "ui_messangerwidget.h"
MessangerWidget::MessangerWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::MessangerWidget),
selectedUserLogin(""),
selectedUserId("")
{
ui->setupUi(this);
ui->tabWidget->removeTab(1);
ui->tabWidget->removeTab(0);
ui->btnSend->setObjectName("btnSend");
ui->btnSend->setEnabled(false);
ui->editMsg->setEnabled(false);
}
MessangerWidget::~MessangerWidget()
{
delete ui;
}
void MessangerWidget::addMsgFromClient(Trainee trainee, QString text)
{
//Пробуем добавить вкладку диалога с клиентом (если вдруг еще нет)
addTabDialogMessenger(trainee);
//Ищем нужный диалог
QString login = trainee.getLogin();
foreach(TabDialogMessenger* tabDialog, listTabDialogMessenger)
{//Есть такой
if(tabDialog->getUserLogin() == trainee.getLogin())
{
//Добавляем в существующую вкладку
ui->tabWidget->setCurrentIndex(getIndexTab(login));
tabDialog->addMsgWidgetRemote(text);
//Делаем ее текущей
ui->tabWidget->setCurrentIndex(getIndexTab(login));
selectedUserLogin = login;
selectedUserId = QString::number(trainee.getID());
return;
}
}
}
void MessangerWidget::initialize(QString id)
{
currClientId = id;
}
void MessangerWidget::addTabDialogMessenger(Trainee trainee)
{
if(listTabDialogMessenger.count() == 0)
{//Самая первая вкладка, делаем ее активной
selectedUserLogin = trainee.getLogin();
selectedUserId = QString::number(trainee.getID());
emit signal_tabMessengerChanged(selectedUserLogin);
ui->btnSend->setEnabled(true);
ui->editMsg->setEnabled(true);
}
//Проверяем наличие диалога с этим клиентом
foreach(TabDialogMessenger* dialogMsg, listTabDialogMessenger)
{
if(dialogMsg->getUserLogin() == trainee.getLogin())
{//Диалог для этого клиента уже существует
//Обновляем статус залогинивания
if(trainee.getLoggedIn())
ui->tabWidget->setTabIcon(getIndexTab(trainee.getLogin()), QIcon(":/resources/icons/circleGreen.png"));
else
ui->tabWidget->setTabIcon(getIndexTab(trainee.getLogin()), QIcon(":/resources/icons/circleGray.png"));
return;
}
}
//Диалога для этого клиента еще не существует
//Помещаем новый диалог в список диалогов
TabDialogMessenger* tabDialog = new TabDialogMessenger(trainee.getLogin(),QString::number(trainee.getID()), this);
listTabDialogMessenger.append(tabDialog);
//Добавляем новую вкладку диалога
int index = ui->tabWidget->addTab(tabDialog, /*login + ": " +*/ trainee.getName());
//Обновляем статус залогинивания
if(trainee.getLoggedIn())
ui->tabWidget->setTabIcon(index, QIcon(":/resources/icons/circleGreen.png"));
else
ui->tabWidget->setTabIcon(index, QIcon(":/resources/icons/circleGray.png"));
}
void MessangerWidget::actualizationTabsDialogMessenger()
{
foreach(TabDialogMessenger* tabDialog, listTabDialogMessenger)
{
QString login = tabDialog->getUserLogin();
bool exist = false;
for(Trainee trainee : listTrainees)
{
if(trainee.getLogin() == login)
{
if(trainee.getArchived())
{//Стал архивным
//Удаляем диалог с клиентом
ui->tabWidget->removeTab(getIndexTab(login));
listTabDialogMessenger.removeOne(tabDialog);
}
else
exist = true;
break;
}
}
if(!exist)
{//Нет такого логина
//Удаляем диалог с клиентом
ui->tabWidget->removeTab(getIndexTab(login));
listTabDialogMessenger.removeOne(tabDialog);
}
}
}
int MessangerWidget::getIndexTab(QString login)
{
for(int index = 0; index < ui->tabWidget->count(); index++)
{
TabDialogMessenger* tabDialogMessenger = static_cast<TabDialogMessenger*>(ui->tabWidget->widget(index));
if(tabDialogMessenger->getUserLogin() == login)
return index;
}
return -1;
}
void MessangerWidget::clear()
{
ui->btnSend->setEnabled(false);
ui->editMsg->setEnabled(false);
listTrainees.clear();
actualizationTabsDialogMessenger();
}
void MessangerWidget::on_btnSend_clicked()
{
QString text = ui->editMsg->toPlainText();
QString from = currClientId + "-" + QString::number(0);// временный костыль, так как чаты только с обучаемыми
QString to = selectedUserId + "-" + QString::number(1);// временный костыль, так как чаты только с обучаемыми
ClientMessage message = ClientMessage(from,to,text);
emit signal_sendMessage(message);
ui->editMsg->clear();
//Ищем нужный диалог
foreach(TabDialogMessenger* tabDialog, listTabDialogMessenger)
{
if(tabDialog->getUserLogin() == selectedUserLogin)
{
//Добавляем в существующую вкладку
tabDialog->addMsgWidgetLocal(text);
//Делаем ее активной
ui->tabWidget->setCurrentIndex(getIndexTab(selectedUserLogin));
return;
}
}
}
void MessangerWidget::on_tabWidget_currentChanged(int index)
{
//Ищем нужный диалог
foreach(TabDialogMessenger* tabDialog, listTabDialogMessenger)
{
if(getIndexTab(tabDialog->getUserLogin()) == index)
{
selectedUserLogin = tabDialog->getUserLogin();
selectedUserId = tabDialog->getUserId();
emit signal_tabMessengerChanged(selectedUserLogin);
return;
}
}
}
void MessangerWidget::slot_traineeSelected(QString login)
{
//Ищем нужный диалог
foreach(TabDialogMessenger* tabDialog, listTabDialogMessenger)
{
if(tabDialog->getUserLogin() == login)
{
//Активируем нужную вкладку
ui->tabWidget->setCurrentIndex(getIndexTab(login));
ui->btnSend->setEnabled(true);
ui->editMsg->setEnabled(true);
return;
}
}
ui->btnSend->setEnabled(false);
ui->editMsg->setEnabled(false);
}
void MessangerWidget::slot_LanguageChanged(QString language)
{
qtLanguageTranslator.load(QString("translationsMy/ServerLMS_") + language, ".");
qApp->installTranslator(&qtLanguageTranslator);
}
void MessangerWidget::slot_InitMessanger(QList<Trainee> listTrainees)
{
this->listTrainees = listTrainees;
actualizationTabsDialogMessenger();
for(Trainee trainee: listTrainees)
{
if(! trainee.getArchived())
addTabDialogMessenger(trainee);
}
}
void MessangerWidget::slot_showMessage(ClientMessage clientMessage)
{
auto result = clientMessage.fromId.split("-");
for(Trainee trainee: listTrainees)
{
if(QString::number(trainee.getID()) == result[0])
{
addMsgFromClient(trainee, clientMessage.Text);
break;
}
}
}
void MessangerWidget::keyPressEvent(QKeyEvent *event)
{
if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return)
{
ui->btnSend->click();
}
}
void MessangerWidget::changeEvent(QEvent *event)
{
// В случае получения события изменения языка приложения
if (event->type() == QEvent::LanguageChange)
{
ui->retranslateUi(this); // переведём окно заново
}
}

View File

@@ -1,76 +0,0 @@
#ifndef MESSANGERWIDGET_H
#define MESSANGERWIDGET_H
#include <QWidget>
#include <QTranslator>
#include <trainee.h>
#include "Datas.h"
#include "tabdialogmessenger.h"
namespace Ui {
class MessangerWidget;
}
//Главный виджет мессенджера
class MessangerWidget : public QWidget
{
Q_OBJECT
public:
explicit MessangerWidget(QWidget *parent = nullptr);
~MessangerWidget();
protected:
// Метод получения событий
// В нём будет производиться проверка события смены перевода приложения
void changeEvent(QEvent * event) override;
public:
enum ETypeMsg{fromClient, toClient};
void addMsgFromClient(Trainee trainee, QString text);
void initialize(QString id);
void addTabDialogMessenger(Trainee trainee);
void actualizationTabsDialogMessenger();
int getIndexTab(QString login);
void clear();
private slots:
void on_btnSend_clicked();
void on_tabWidget_currentChanged(int index);
signals:
//сигнал о готовности нового сообщения на отправку клиенту
void signal_sendMessage(ClientMessage clientMessage);
//сигнал об изменении вкладки диалога с клиентом (TabDialogMessenger)
void signal_tabMessengerChanged(QString login);
public slots:
//слот обработки сигнала о смене языка
void slot_LanguageChanged(QString language);
//слот обработки сигнала об инициализации мессенджера
void slot_InitMessanger(QList<Trainee> listTrainees);
//слот обработки сигнала о выборе обучаемого
void slot_traineeSelected(QString login);
//слот о приходе нового сообщения от клиента
void slot_showMessage(ClientMessage clientMessage);
private:
virtual void keyPressEvent(QKeyEvent *event) override;
private:
Ui::MessangerWidget *ui;
QList <TabDialogMessenger*> listTabDialogMessenger;
QList<Trainee> listTrainees;
QString selectedUserLogin; //Логин клиента текущего диалога
QString selectedUserId; //id клиента текущего диалога
QString currClientId; //id этого клиента
QTranslator qtLanguageTranslator;
};
#endif // MESSANGERWIDGET_H

View File

@@ -1,134 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MessangerWidget</class>
<widget class="QWidget" name="MessangerWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>500</width>
<height>300</height>
</rect>
</property>
<property name="font">
<font>
<family>Tahoma</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout_Main">
<item>
<layout class="QVBoxLayout" name="verticalLayout_1" stretch="0">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tab_1">
<attribute name="title">
<string>Tab 1</string>
</attribute>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>Tab 2</string>
</attribute>
</widget>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<item>
<widget class="QTextEdit" name="editMsg">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Ignored">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>50</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>1000</height>
</size>
</property>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QToolButton" name="btnSend">
<property name="sizePolicy">
<sizepolicy hsizetype="Ignored" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>65</width>
<height>58</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>1000</width>
<height>1000</height>
</size>
</property>
<property name="text">
<string>Send</string>
</property>
<property name="icon">
<iconset resource="../resources.qrc">
<normaloff>:/resources/icons/sendMsg.png</normaloff>:/resources/icons/sendMsg.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextUnderIcon</enum>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<resources>
<include location="../resources.qrc"/>
</resources>
<connections/>
</ui>

View File

@@ -1,92 +0,0 @@
#include "msgwidget.h"
#include "ui_msgwidget.h"
MsgWidget::MsgWidget(QString avatar, AligneAvatar aligneAvatar, int width, QWidget *parent) :
QWidget(parent),
ui(new Ui::MsgWidget),
widthEdit(100)
{
ui->setupUi(this);
setAvatar(avatar);
if(aligneAvatar == AligneAvatar::Left)
setAligneAvatarLeft();
else
setAligneAvatarRight();
setWidth(width);
}
MsgWidget::~MsgWidget()
{
delete ui;
}
void MsgWidget::setAligneAvatarLeft()
{
ui->horizontalLayout->removeWidget(ui->textEdit);
ui->horizontalLayout->removeItem(ui->verticalLayout);
ui->horizontalLayout->removeItem(ui->horizontalLayout_2);
ui->horizontalLayout->addLayout(ui->verticalLayout);
ui->horizontalLayout->addWidget(ui->textEdit);
ui->horizontalLayout->addLayout(ui->horizontalLayout_2);
ui->textEdit->setObjectName("MsgWidgetLocal");
}
void MsgWidget::setAligneAvatarRight()
{
ui->horizontalLayout->removeWidget(ui->textEdit);
ui->horizontalLayout->removeItem(ui->verticalLayout);
ui->horizontalLayout->removeItem(ui->horizontalLayout_2);
ui->horizontalLayout->addLayout(ui->horizontalLayout_2);
ui->horizontalLayout->addWidget(ui->textEdit);
ui->horizontalLayout->addLayout(ui->verticalLayout);
ui->textEdit->setObjectName("MsgWidgetRemote");
}
void MsgWidget::setAvatar(QString avatar)
{
QPixmap pix(avatar);
ui->label->setPixmap( pix.scaled(32,32) );
}
void MsgWidget::setWidth(int width)
{
this->setFixedWidth(width);
widthEdit = width - 200;
}
void MsgWidget::setText(QString text)
{
ui->textEdit->setText(text);
}
void MsgWidget::on_textEdit_textChanged()
{
QString text = ui->textEdit->toPlainText();
QFontMetrics metricsFont(ui->textEdit->font()); //метрики шрифта
//геометрические параметры текста (высота/ширина в пикселях). В одну строку
QRect textRect = metricsFont.boundingRect(QRect(0, 0, 0, 0), 0, text);
int X = 10; // отступы
if(textRect.width() > widthEdit)
{//Не помещается в одну строку
textRect = metricsFont.boundingRect(QRect(0, 0, widthEdit, 10), Qt::TextWordWrap, text);
ui->textEdit->setFixedHeight(textRect.height() + X);
this->setFixedHeight(textRect.height() + X + 20);
}
else
{//В одну строку
ui->textEdit->setFixedWidth(textRect.width() + X);
ui->textEdit->setFixedHeight(textRect.height() + X);
this->setFixedHeight(textRect.height() + X + 20);
}
}

View File

@@ -1,106 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MsgWidget</class>
<widget class="QWidget" name="MsgWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>91</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label">
<property name="minimumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="QTextEdit" name="textEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="sizeAdjustPolicy">
<enum>QAbstractScrollArea::AdjustIgnored</enum>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -1,57 +0,0 @@
#include <QScrollBar>
#include "tabdialogmessenger.h"
#include "msgwidget.h"
TabDialogMessenger::TabDialogMessenger(QString login , QString userId, QWidget *parent):
QListWidget(parent),
login(""),
userId("")
{
this->userId = userId;
this->login = login;
setWordWrap(true);
setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOn);
}
TabDialogMessenger::~TabDialogMessenger()
{
}
void TabDialogMessenger::addMsgWidgetLocal(QString text)
{
QListWidgetItem *listWidgetItem = new QListWidgetItem();
QString avatar = ":/resources/icons/instructor.png";
MsgWidget *msgWidget = new MsgWidget(avatar, MsgWidget::AligneAvatar::Left,
width() - verticalScrollBar()->size().width());
addItem(listWidgetItem);
setItemWidget(listWidgetItem, msgWidget);
msgWidget->setText(text);
//Корректировка высоты item
listWidgetItem->setSizeHint (QSize(10, msgWidget->height()));
scrollToItem(listWidgetItem);
}
void TabDialogMessenger::addMsgWidgetRemote(QString text)
{
QListWidgetItem *listWidgetItem = new QListWidgetItem();
QString avatar = ":/resources/icons/trainee.png";
MsgWidget *msgWidget = new MsgWidget(avatar, MsgWidget::AligneAvatar::Right,
width() - verticalScrollBar()->size().width());
addItem(listWidgetItem);
setItemWidget(listWidgetItem, msgWidget);
msgWidget->setText(text);
//Корректировка высоты item
listWidgetItem->setSizeHint (QSize(10, msgWidget->height()));
scrollToItem(listWidgetItem);
}

View File

@@ -1,29 +0,0 @@
#ifndef TABDIALOGMESSENGER_H
#define TABDIALOGMESSENGER_H
#include <QListWidget>
//Закладка ведения диалога с одним клиентом
//TODO сделать идентификацию по ID
class TabDialogMessenger : public QListWidget
{
Q_OBJECT
public:
TabDialogMessenger(QString userLogin, QString userId, QWidget *parent = nullptr);
~TabDialogMessenger();
QString getUserLogin() {return login;};
QString getUserId() {return userId;}
void addMsgWidgetLocal(QString text);
void addMsgWidgetRemote(QString text);
private:
QString login;
QString userId;
};
#endif // TABDIALOGMESSENGER_H

View File

@@ -1,230 +0,0 @@
/*Обязательные поля*/
*[mandatoryField="true"] {
background-color: #fff2fb
}
/*Общие настройки виджетов*/
QWidget {
font-family: Tahoma;
font-size: 14pt;
icon-size: 24px;
}
QLineEdit, QTextEdit {
border: 1px solid gray;
border-radius: 4px;
padding: 0px 8px;
background: white;
selection-background-color: darkgray;
}
QLineEdit[echoMode="2"] {
lineedit-password-character: 9679; /*Сокрытие пароля*/
}
QLineEdit:read-only {
background: lightblue;
}
QGroupBox {
background: #E0E0E0;
border: 1px solid gray;
border-radius: 5px;
margin-top: 5ex; /* leave space at the top for the title */
}
QGroupBox::title {
border: 1px solid gray;
border-bottom: none;
border-radius: 5px;
subcontrol-origin: margin;
subcontrol-position: top left;
padding-left: 10px;
padding-right: 10px;
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #A0CECE, stop: 1 #FFFFFF);
}
QPushButton, QToolButton {
border: 2px solid #8f8f91;
border-style: outset;
border-radius: 5px;
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #f6f7fa, stop: 1 #dadbde);
min-width: 80px;
height: 60px;
padding: 1px;
}
QPushButton {
height: 25px;
}
QToolButton {
width: 200px;
}
QToolButton#btnSend { /*Кнопка Send Мессенджера*/
width: 60px;
}
QPushButton:flat, QToolButton:flat {
border: none; /* no border for a flat push button */
}
QPushButton:default, QToolButton:default {
border-color: navy; /* make the default button prominent */
}
QPushButton:hover , QToolButton:hover {
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #fafafa, stop: 0.4 #f4f4f4,
stop: 0.5 #e7e7e7, stop: 1.0 #fafafa);
}
QPushButton:pressed, QToolButton:pressed {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #dadbde, stop: 1 #f6f7fa);
border-style: inset;
}
QPushButton:checked, QToolButton:checked {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #dadbde, stop: 1 #f6f7fa);
border-style: inset;
}
QCheckBox {
spacing: 20px;
}
QCheckBox::indicator:checked {
width: 24px;
height: 24px;
image: url(:/resources/icons/chekYes.png);
}
QCheckBox::indicator:!checked {
width: 24px;
height: 24px;
image: url(:/resources/icons/chekNo.png);
}
QTreeWidget {
font-size: 12pt;
font-family: Tahoma;
icon-size: 24px;
}
QTreeWidget::item {
height: 30px;
}
/*Бранчи*/
QTreeWidget::branch:has-siblings:!adjoins-item {
border-image: url(:/resources/icons/vline.png) 0;
}
QTreeWidget::branch:has-siblings:adjoins-item {
border-image: url(:/resources/icons/branch-more.png) 0;
}
QTreeWidget::branch:!has-children:!has-siblings:adjoins-item {
border-image: url(:/resources/icons/branch-end.png) 0;
}
QTreeWidget::branch:closed:has-children:!has-siblings,
QTreeWidget::branch:closed:has-children:has-siblings {
border-image: none;
image: url(:/resources/icons/branch-closed.png);
}
QTreeWidget::branch:open:has-children:!has-siblings,
QTreeWidget::branch:open:has-children:has-siblings {
border-image: none;
image: url(:/resources/icons/branch-open.png);
}
QTreeWidget::item:hover,
QTreeWidget::branch:hover {
background: #aee1ff;
}
QTreeWidget::item:selected {
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #6ea1f1, stop: 1 #567dbc);
color: #ffff00;
}
QHeaderView::section {
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1,
stop:0 #c1c1c1, stop: 0.5 #505050,
stop: 0.6 #434343, stop:1 #656565);
color: white;
padding-left: 4px;
border: 1px solid #6c6c6c;
}
QTabWidget::pane { /* The tab widget frame */
border-top: 1px solid #C2C7CB;
background-image: url(:/resources/icons/messengerPrint.png);
}
QTabWidget::tab-bar {
left: 0px; /* move to the right by 0px */
}
QTabBar::tab {
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #E1E1E1, stop: 0.4 #DDDDDD,
stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3);
border: 2px solid #C4C4C3;
border-bottom-color: #C2C7CB; /* same as the pane color */
border-top-left-radius: 4px;
border-top-right-radius: 4px;
min-width: 8ex;
padding: 2px;
}
QTabBar::tab:selected {
border-color: #9B9B9B;
border-bottom-color: #C2C7CB; /* same as pane color */
/* expand/overlap to the left and right by 4px */
margin-left: -4px;
margin-right: -4px;
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #6ea1f1, stop: 1 #567dbc);
color: #ffffff;
}
QTabBar::tab:!selected {
margin-top: 5px; /* make non-selected tabs look smaller */
background: #ffffff;
}
QTabBar::tab:hover {
background: #aee1ff;
}
QTabBar::scroller { /* the width of the scroll buttons */
width: 80px;
}
QTabBar QToolButton { /* the scroll buttons are tool buttons */
min-width: 30px;
width: 30px;
padding: 0px;
}
QListWidget::item {
padding: -5px;
}
QListWidget {
/*background: pink;*/
background: transparent;
background: #f0ffff;
}
QTextEdit {
padding: -20px;
font-size: 12pt;
}
QTextEdit#MsgWidgetLocal {
background: lightgreen;
}
QTextEdit#MsgWidgetRemote {
background: lightblue;
}
QWidget {
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -1,352 +0,0 @@
#include <QFile>
#include <QXmlStreamReader>
#include <QDomDocument>
#include <QMessageBox>
#include <QThread>
#include <QResizeEvent>
#include "ammtaskswidget.h"
#include "ui_ammtaskswidget.h"
#include "dialogchecktask.h"
AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTreeAMMFIM type, QWidget *parent) :
QWidget(parent),
ui(new Ui::AMMtasksWidget),
connectorToServer(connectorToServer),
treeWidget(nullptr),
type(type),
loginTraineeSelected(""),
idTraineeSelected(0),
threadPreparation(nullptr),
taskTreePreparation(nullptr),
waitAnimationWidget(nullptr),
flOnlyActive(false)
{
ui->setupUi(this);
qDebug() << "AMMtasksWidget init thread ID " << QThread::currentThreadId();
treeWidget = new QTreeWidget();
ui->horizontalLayout_1->addWidget(treeWidget);
connect(treeWidget, &QTreeWidget::currentItemChanged, this, &AMMtasksWidget::on_treeWidget_currentItemChanged);
preparationTreeWidget();
threadPreparation = new QThread();
taskTreePreparation = new TaskAMMFIMTreePreparation(type);
taskTreePreparation->moveToThread(threadPreparation);
threadPreparation->start();
threadPreparation->setPriority(QThread::HighestPriority);
connect(this, &AMMtasksWidget::signal_prepareAMMListItems, taskTreePreparation, &TaskAMMFIMTreePreparation::slot_prepareAMMListItems);
connect(this, &AMMtasksWidget::signal_prepareAMMListItemsForTrainee, taskTreePreparation, &TaskAMMFIMTreePreparation::slot_prepareAMMListItemsForTrainee);
connect(taskTreePreparation, &TaskAMMFIMTreePreparation::signal_listAMMItemsReady, this, &AMMtasksWidget::slot_AMMlistItemsReady);
connect(this, &AMMtasksWidget::signal_stopParserPreparation, taskTreePreparation, &TaskAMMFIMTreePreparation::slot_stopParserPreparation);
waitAnimationWidget = new WaitAnimationWidget;
QMovie *movie = new QMovie(":/resources/icons/762.gif");
waitAnimationWidget->setParent(this);
waitAnimationWidget->initialize(movie,this);
ui->btnDelete->setObjectName("btnDelete");
ui->btnDelete->setEnabled(false);
ui->btnCheck->setObjectName("btnCheck");
ui->btnCheck->setEnabled(false);
ui->btnOnlyActive->setObjectName("btnOnlyActive");
ui->btnOnlyActive->setEnabled(false);
ui->btnAssignTask->setObjectName("btnAssignTask");
ui->btnAssignTask->setEnabled(false);
if(type == TypeListTreeAMMFIM::listCommon)
{
ui->horizontalLayout_3->addWidget(ui->btnAssignTask);
ui->horizontalLayout_3->addWidget(ui->btnOnlyActive);
ui->horizontalLayout_3->addWidget(ui->btnCheck);
ui->horizontalLayout_3->addWidget(ui->btnDelete);
ui->horizontalLayout_3->setAlignment(Qt::AlignmentFlag::AlignLeft);
ui->btnDelete->setVisible(false);
ui->btnCheck->setVisible(false);
}
else
{
ui->btnOnlyActive->setVisible(false);
ui->btnAssignTask->setVisible(false);
ui->verticalLayout->setAlignment(Qt::AlignmentFlag::AlignBottom);
}
//ui->btnCheck->setVisible(false);
}
AMMtasksWidget::~AMMtasksWidget()
{
waitAnimationWidget->hideWithStop();
emit signal_stopParserPreparation();
threadPreparation->quit();
threadPreparation->wait();
delete threadPreparation;
delete taskTreePreparation;
delete waitAnimationWidget;
delete treeWidget;
delete ui;
}
void AMMtasksWidget::deactivate()
{
ui->btnAssignTask->setEnabled(false);
ui->btnOnlyActive->setEnabled(false);
treeWidget->clear();
loginTraineeSelected = "";
idTraineeSelected = 0;
}
void AMMtasksWidget::waitAnimationWidgetShowWithPlay()
{
waitAnimationWidget->showWithPlay();
}
void AMMtasksWidget::resizeEvent(QResizeEvent *event)
{
QSize size = event->size();
waitAnimationWidget->resize(size);
int width = treeWidget->width();
treeWidget->setColumnWidth(ColumnsTreeAMM::clmnAMM_ID, 50);
treeWidget->setColumnWidth(ColumnsTreeAMM::clmnAMM_code, 250);
treeWidget->setColumnWidth(ColumnsTreeAMM::clmnAMM_status, 110);
int widthPMorDM;
if(type == TypeListTreeAMMFIM::listCommon)
widthPMorDM = width - (250 + 10);
else
widthPMorDM = width - (410 + 10);
treeWidget->setColumnWidth(ColumnsTreeAMM::clmnAMM_PMorDM, widthPMorDM);
}
void AMMtasksWidget::changeEvent(QEvent *event)
{
// В случае получения события изменения языка приложения
if (event->type() == QEvent::LanguageChange)
{// переведём окно заново
ui->retranslateUi(this);
reSetHeadTreeWidget();
if(type == TypeListTreeAMMFIM::listCommon)
{
//slot_NeedUpdateUI();
}
else if(type == TypeListTreeAMMFIM::listForTrainee)
if(idTraineeSelected)
slot_UpdateTasksAMMforTrainee(idTraineeSelected);
}
}
void AMMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
{
if(current == nullptr)
{
ui->btnDelete->setEnabled(false);
ui->btnCheck->setEnabled(false);
return;
}
else
{
ui->btnCheck->setEnabled(true);
ui->btnDelete->setEnabled(true);
}
int id = current->text(ColumnsTreeAMM::clmnAMM_ID).toInt();
if(taskTreePreparation->getTypeModuleAMMbyID(id) == ModuleType::TYPE_PM)
ui->btnAssignTask->setEnabled(false);
else
ui->btnAssignTask->setEnabled(true);
}
void AMMtasksWidget::slot_NeedUpdateUI()
{
qDebug() << "AMMtasksWidget::slot_NeedUpdateUI thread ID " << QThread::currentThreadId();
loadTasksAMM();
}
void AMMtasksWidget::slot_traineeSelected(QString login)
{
qDebug() << "AMMtasksWidget::slot_traineeSelected thread ID " << QThread::currentThreadId();
loginTraineeSelected = login;
idTraineeSelected = connectorToServer->getIdTraineeByLogin(loginTraineeSelected);
if(type == TypeListTreeAMMFIM::listForTrainee)
{
waitAnimationWidget->showWithPlay();
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_GET_TASKS_AMM_FOR_TRAINEE, idTraineeSelected);
}
}
void AMMtasksWidget::slot_UpdateTasksAMMforTrainee(int trainee_id)
{
qDebug() << "slot_UpdateTasksAMMforTrainee" << QThread::currentThreadId();
if(type == TypeListTreeAMMFIM::listForTrainee)
{
if(idTraineeSelected == trainee_id)
{
QList<TaskAmmFim> listTask = connectorToServer->getListTasksAMMforTrainee(trainee_id);
signal_prepareAMMListItemsForTrainee(listTask);
}
}
}
void AMMtasksWidget::loadTasksAMM(bool flRequestFromDB)
{
//Обновление дерева
treeWidget->clear();
waitAnimationWidget->showWithPlay();
QByteArray arrayAMM;
if(flRequestFromDB)
arrayAMM = connectorToServer->getListTaskAmmArray();
emit signal_prepareAMMListItems(arrayAMM, flOnlyActive);
}
void AMMtasksWidget::slot_AMMlistItemsReady(QList<QTreeWidgetItem *> listItems)
{
//Обновление дерева
treeWidget->clear();
for(QTreeWidgetItem * item : listItems)
treeWidget->addTopLevelItem(item);
QTreeWidgetItem * item = treeWidget->topLevelItem(0);
if(item != nullptr)
treeWidget->setCurrentItem(item);
waitAnimationWidget->hideWithStop();
ui->btnOnlyActive->setEnabled(true);
}
void AMMtasksWidget::preparationTreeWidget()
{
treeWidget->setColumnCount(clmnAMM_count);
reSetHeadTreeWidget();
if(type == TypeListTreeAMMFIM::listCommon)
{
treeWidget->setColumnHidden(ColumnsTreeAMM::clmnAMM_ID, true);
treeWidget->setColumnHidden(ColumnsTreeAMM::clmnAMM_status, true);
}
}
void AMMtasksWidget::reSetHeadTreeWidget()
{
QStringList listHeaders;
if(type == TypeListTreeAMMFIM::listForTrainee)
listHeaders = QStringList{tr("Task AMM"), tr("DM code"), tr("ID"), tr("Status")};
else
listHeaders = QStringList{tr("PM/DM"), tr("Code"), tr("ID"), tr("Status")};
treeWidget->setHeaderLabels(listHeaders);
}
void AMMtasksWidget::assignTaskAMMtoTrainee()
{
QTreeWidgetItem *current = treeWidget->currentItem();
if(current == nullptr)
return;
int id = current->text(ColumnsTreeAMM::clmnAMM_ID).toInt();
TaskAmmFim taskNew = taskTreePreparation->getTaskAMMbyID(id);
if(taskNew.getID())
{
int trainee_id = connectorToServer->getIdTraineeByLogin(loginTraineeSelected);
emit signal_AssignedTask();
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_AMM_TO_TRAINEE, trainee_id, &taskNew);
}
}
void AMMtasksWidget::on_btnDelete_clicked()
{
QTreeWidgetItem *treeItemCurrent = treeWidget->currentItem();
if(treeItemCurrent != nullptr)
{
QTreeWidgetItem *treeItemParent = treeItemCurrent->parent();
if(treeItemParent == nullptr)
{//Выбрана задача
int id = treeItemCurrent->text(ColumnsTreeAMM::clmnAMM_ID).toInt();
if(QMessageBox::warning(this, tr("Attention!"), tr("The deletion will be irrevocable.\nDelete it anyway?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
{
waitAnimationWidget->showWithPlay();
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_DEL_TASK_AMM_TO_TRAINEE, id);
}
}
}
}
void AMMtasksWidget::on_btnCheck_clicked()
{
QTreeWidgetItem *treeItemCurrent = treeWidget->currentItem();
if(treeItemCurrent != nullptr)
{//Выбрана задача
int id = treeItemCurrent->text(ColumnsTreeAMM::clmnAMM_ID).toInt();
TaskAmmFim task = taskTreePreparation->getTaskAMMbyID(id);
if(!task.getID())
return;
DialogCheckTask dlg(connectorToServer, "amm", this);
dlg.setTask(&task);
QDialog* dialog = new QDialog(this);
QHBoxLayout *layout = new QHBoxLayout(dialog);
layout->addWidget(&dlg);
dialog->setWindowTitle(tr("Status Task"));
dialog->setMinimumSize(200, 100);
dialog->setStyleSheet(this->styleSheet());
dialog->exec();
if(dlg.getFlChanged())
waitAnimationWidget->showWithPlay();
}
}
void AMMtasksWidget::on_btnAssignTask_clicked()
{
if(QMessageBox::question(this, tr("New task"), tr("Assign this task?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
assignTaskAMMtoTrainee();
}
void AMMtasksWidget::on_btnOnlyActive_clicked()
{
if(ui->btnOnlyActive->isChecked())
{
flOnlyActive = true;
}
else
{
flOnlyActive = false;
}
loadTasksAMM(true);
}

View File

@@ -1,174 +0,0 @@
#include "dialogchecktask.h"
#include "ui_dialogchecktask.h"
DialogCheckTask::DialogCheckTask(ConnectorToServer* connectorToServer, QString type, QWidget *parent) :
QWidget(parent),
ui(new Ui::DialogCheckTask),
connectorToServer(connectorToServer),
fimTasksWidget(nullptr),
flChanged(false),
id_task(0),
type("fim")
{
ui->setupUi(this);
this->type = type;
if(type == "fim")
{
fimTasksWidget = new FIMtasksWidget(nullptr, TypeListTreeAMMFIM::listOneTask, this);
ui->verticalLayout_3->addWidget(fimTasksWidget);
ui->plainText->setReadOnly(true);
ui->plainText->setObjectName("plainText");
}
else
{
ui->plainText->setVisible(false);
ui->label->setVisible(false);
ui->label_2->setVisible(false);
ui->btnRight->setText(tr("Completed"));
ui->btnWrong->setText(tr("New"));
ui->btnWrong->setIcon(QIcon(QStringLiteral(":/resources/icons/circleGray.png")));
ui->btnRight->setEnabled(false);
ui->btnWrong->setEnabled(false);
}
}
DialogCheckTask::~DialogCheckTask()
{
if(fimTasksWidget)
delete fimTasksWidget;
delete ui;
}
void DialogCheckTask::setTask(TaskAmmFim* task)
{
this->task = *task;
id_task = task->getID();
if(type == "fim")
{
//Задача
fimTasksWidget->setOneTaskFim(&this->task);
//Репорт
outReport(this->task.report);
}
else if(type == "amm")
{
if(this->task.status == "new")
ui->btnRight->setEnabled(true);
else
ui->btnWrong->setEnabled(true);
}
}
TaskAmmFim DialogCheckTask::getTask()
{
return this->task;
}
void DialogCheckTask::setModule(Module *module)
{
this->module = *module;
id_task = this->module.getID();
}
void DialogCheckTask::outReport(FIMReport report)
{
QString str;
/*
str = QString("<b>Report ID: %1</b>").arg(QString::number(report.id));
ui->plainText->appendHtml(str);
ui->plainText->appendHtml("<br>");
*/
for(FIMReportItem item : report.itemList)
{
/*
//Item ID
str = QString("<p>Item ID: %1</p>").arg(QString::number(item.id));
ui->plainText->appendHtml(str);
*/
//Title
str = QString("<b>%1</b>").arg(item.procedure.title);
ui->plainText->appendHtml(str);
//DMcode
str = QString("<p>%1</p>").arg(item.procedure.dmCode);
ui->plainText->appendHtml(str);
//Result
str = item.procedure.result;
if(str == "viewed")
str = tr("viewed");
else if(str == "completed")
str = tr("completed");
str = QString("<p>%1</p>").arg(str);
ui->plainText->appendHtml(str);
//Text
str = QString("<p style=\"color:green;\">%1</p>").arg(item.text);
ui->plainText->appendHtml(str);
ui->plainText->appendHtml("<br>");
}
}
void DialogCheckTask::on_btnWrong_clicked()
{
TypeQueryToDB typeQuery;
QString status;
QString msgString;
if(type == "fim")
{
typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_FIM_TO_TRAINEE;
status = "failed";
msgString = tr("Change task status?\nThe status will be set:\n'failed'");
}
else
{
typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_AMM_TO_TRAINEE;
status = "new";
msgString = tr("Change task status?\nThe status will be set:\n'new'");
}
if(QMessageBox::warning(this, tr("Attention!"), msgString, QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
{
connectorToServer->sendQueryToDB(typeQuery, id_task, (void*)&status);
this->parentWidget()->close();
flChanged = true;
}
}
void DialogCheckTask::on_btnRight_clicked()
{
TypeQueryToDB typeQuery;
QString status;
QString msgString;
if(type == "fim")
{
typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_FIM_TO_TRAINEE;
status = "completed";
msgString = tr("Change task status?\nThe status will be set:\n'completed'");
}
else
{
typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_AMM_TO_TRAINEE;
status = "completed";
msgString = tr("Change task status?\nThe status will be set:\n'completed'");
}
if(QMessageBox::warning(this, tr("Attention!"), msgString, QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
{
connectorToServer->sendQueryToDB(typeQuery, id_task, (void*)&status);
this->parentWidget()->close();
flChanged = true;
}
}

View File

@@ -1,49 +0,0 @@
#ifndef DIALOGCHECKTASK_H
#define DIALOGCHECKTASK_H
#include <QWidget>
#include "tasksAmmFim.h"
#include "fimtaskswidget.h"
namespace Ui {
class DialogCheckTask;
}
class DialogCheckTask : public QWidget
{
Q_OBJECT
public:
explicit DialogCheckTask(ConnectorToServer* connectorToServer, QString type, QWidget *parent = nullptr);
~DialogCheckTask();
public:
void setTask(TaskAmmFim* task);
TaskAmmFim getTask();
bool getFlChanged(){return flChanged;}
void setIDTask(int id){id_task = id;}
void setModule(Module* module);
private slots:
void on_btnWrong_clicked();
void on_btnRight_clicked();
private:
void outReport(FIMReport report);
private:
TaskAmmFim task;
Module module;
private:
Ui::DialogCheckTask *ui;
private:
ConnectorToServer* connectorToServer;
FIMtasksWidget* fimTasksWidget;
bool flChanged;
int id_task;
QString type;
};
#endif // DIALOGCHECKTASK_H

View File

@@ -1,167 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DialogCheckTask</class>
<widget class="QWidget" name="DialogCheckTask">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>628</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Task</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Completion Report</string>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="widget" native="true">
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QPlainTextEdit" name="plainText">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QToolButton" name="btnWrong">
<property name="minimumSize">
<size>
<width>50</width>
<height>50</height>
</size>
</property>
<property name="text">
<string>Failed</string>
</property>
<property name="icon">
<iconset resource="../resources.qrc">
<normaloff>:/resources/icons/circleRed.png</normaloff>:/resources/icons/circleRed.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextUnderIcon</enum>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="btnRight">
<property name="minimumSize">
<size>
<width>50</width>
<height>50</height>
</size>
</property>
<property name="text">
<string>Right</string>
</property>
<property name="icon">
<iconset resource="../resources.qrc">
<normaloff>:/resources/icons/circleGreen.png</normaloff>:/resources/icons/circleGreen.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextUnderIcon</enum>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<resources>
<include location="../resources.qrc"/>
</resources>
<connections/>
</ui>

View File

@@ -1,113 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DialogEditGroup</class>
<widget class="QDialog" name="DialogEditGroup">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>300</width>
<height>96</height>
</rect>
</property>
<property name="font">
<font>
<family>Tahoma</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="windowTitle">
<string>Group</string>
</property>
<property name="windowIcon">
<iconset resource="../resources.qrc">
<normaloff>:/icons/group.png</normaloff>:/icons/group.png</iconset>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label_2">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Name</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="editName">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="locale">
<locale language="English" country="UnitedStates"/>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources>
<include location="../resources.qrc"/>
</resources>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>DialogEditGroup</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>DialogEditGroup</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@@ -1,72 +0,0 @@
#include "dialogedittrainee.h"
#include "ui_dialogedittrainee.h"
#include <QPushButton>
DialogEditTrainee::DialogEditTrainee(QWidget *parent) :
QDialog(parent),
ui(new Ui::DialogEditTrainee),
traineeInput()
{
ui->setupUi(this);
verify();
ui->editName->setProperty("mandatoryField", true);
ui->editLogin->setProperty("mandatoryField", true);
ui->editPassword->setProperty("mandatoryField", true);
}
DialogEditTrainee::~DialogEditTrainee()
{
delete ui;
}
void DialogEditTrainee::setTrainee(Trainee trainee)
{
traineeInput = trainee;
ui->editName->setText(trainee.getName());
ui->editLogin->setText(trainee.getLogin());
ui->editPassword->setText(trainee.getPassword());
ui->checkArchived->setChecked(trainee.getArchived());
ui->checkLoggedIn->setChecked(trainee.getLoggedIn());
}
Trainee DialogEditTrainee::getTrainee()
{
Trainee trainee = traineeInput;
trainee.setName(ui->editName->text());
trainee.setLogin(ui->editLogin->text());
trainee.setPassword(ui->editPassword->text());
trainee.setArchived(ui->checkArchived->isChecked());
trainee.setLoggedIn(ui->checkLoggedIn->isChecked());
return trainee;
}
void DialogEditTrainee::on_editName_textChanged(const QString &arg1)
{
verify();
}
void DialogEditTrainee::on_editLogin_textChanged(const QString &arg1)
{
verify();
}
void DialogEditTrainee::on_editPassword_textChanged(const QString &arg1)
{
verify();
}
void DialogEditTrainee::verify()
{
if(ui->editName->text().trimmed() == QStringLiteral("") ||
ui->editLogin->text().trimmed() == QStringLiteral("") ||
ui->editPassword->text().trimmed() == QStringLiteral(""))
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
else
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
}

View File

@@ -1,262 +0,0 @@
#include <QHeaderView>
#include <QResizeEvent>
#include "traineesview.h"
TraineesView::TraineesView(ConnectorToServer* connectorToServer, TypeView type, QWidget *parent):
CommonView(connectorToServer, type, parent)
{
typeObject = TypeObject::objGroup;
}
void TraineesView::resizeEvent(QResizeEvent *event)
{
int width = treeWidget->width();
treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_ID, 50);
treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Login, 100);
treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Password, 100);
treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Class, 100);
treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Computer, 100);
treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_IP_address, 130);
treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Archived, 80);
treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Logged, 100);
int widthTrainee;
if(typeView == TypeView::onlyView)
{//onlyView
widthTrainee = width - (230 + 10);
}
else
{//control
if(adminMode)
widthTrainee = width - (760 + 10);
else
widthTrainee = width - (630 + 10);
}
if(widthTrainee < 250)
widthTrainee = 250;
treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Trainee, widthTrainee);
QSize size = event->size();
waitAnimationWidget->resize(size);
}
void TraineesView::slot_NeedUpdateUI(bool treeInstructor, bool treeTrainee)
{
updateButtons();
if(treeTrainee)
loadTraineesFromDB();
}
void TraineesView::preparationTreeWidget()
{
mtxTreeWidget.lock();
treeWidget->setColumnCount(clmn_count);
reSetHeadTreeWidget();
if(typeView == TypeView::onlyView)
{//onlyView
archiveVisible = false;
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_ID, true);
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_Password, true);
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_Archived, true);
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_Class, true);
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_Computer, true);
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_IP_address, true);
}
else
{//control
archiveVisible = true;
if(adminMode)
{
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_ID, false);
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_Archived, false);
}
else
{
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_ID, true);
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_Archived, true);
}
}
treeWidget->setSortingEnabled(true);
treeWidget->sortItems(ColumnsTreeTrainees::clmn_Trainee, Qt::SortOrder::AscendingOrder);
mtxTreeWidget.unlock();
}
void TraineesView::loadTraineesFromDB()
{
mtxTreeWidget.lock();
//Обновление дерева
treeWidget->clear();
QList <Group> listGroups;
QList <Trainee> listTrainees;
listGroups = connectorToServer->getListGroups();
listTrainees = connectorToServer->getListTrainees();
for(Group group : listGroups)
{
//Группа
int cntChildsNotArchived = 0;
QTreeWidgetItem *ItemGroup = new QTreeWidgetItem(treeWidget);
ItemGroup->setText(ColumnsTreeTrainees::clmn_ID, QString::number(group.getID()));
ItemGroup->setText(ColumnsTreeTrainees::clmn_Trainee, group.getName());
ItemGroup->setIcon(ColumnsTreeTrainees::clmn_Trainee, QIcon(QStringLiteral(":/resources/icons/group.png")));
setItemColor(ItemGroup, QColor(170, 190, 170));
//ItemGroup->set Property("greenButton", QVariant(true));
//((QAbstractItemView*)ItemGroup)->setIconSize(QSize(32, 32));
//Обучаемые
for(Trainee trainee : listTrainees)
{
if(trainee.getGroup().getID() != group.getID())
continue;
QTreeWidgetItem *ItemTrainee = new QTreeWidgetItem();
ItemTrainee->setText(ColumnsTreeTrainees::clmn_ID, QString::number(trainee.getID()));
ItemTrainee->setText(ColumnsTreeTrainees::clmn_Trainee, trainee.getName());
ItemTrainee->setText(ColumnsTreeTrainees::clmn_Login, trainee.getLogin());
ItemTrainee->setText(ColumnsTreeTrainees::clmn_Password, trainee.getPassword());
ItemTrainee->setText(ColumnsTreeTrainees::clmn_Class, trainee.getComputer().getClassroom().getName());
ItemTrainee->setText(ColumnsTreeTrainees::clmn_Computer, trainee.getComputer().getName());
ItemTrainee->setText(ColumnsTreeTrainees::clmn_IP_address, trainee.getComputer().getIpAddress());
//Сокрытие пароля
if(!adminMode)
ItemTrainee->setText(ColumnsTreeTrainees::clmn_Password, QStringLiteral("******"));
if(trainee.getArchived())
{//Архивный
ItemTrainee->setText(ColumnsTreeTrainees::clmn_Archived, tr("yes"));
ItemTrainee->setIcon(ColumnsTreeTrainees::clmn_Trainee, QIcon(QStringLiteral(":/resources/icons/archive.png")));
setItemColorArchive(ItemTrainee);
}
else
{//Не Архивный
ItemTrainee->setText(ColumnsTreeTrainees::clmn_Archived, tr("no"));
ItemTrainee->setIcon(ColumnsTreeTrainees::clmn_Trainee, QIcon(QStringLiteral(":/resources/icons/trainee.png")));
setItemColorNoArchive(ItemTrainee);
cntChildsNotArchived++;
}
if(trainee.getLoggedIn())
{//Залогинен
ItemTrainee->setText(ColumnsTreeTrainees::clmn_Logged, tr("yes"));
ItemTrainee->setIcon(ColumnsTreeTrainees::clmn_Logged, QIcon(QStringLiteral(":/resources/icons/circleGreen.png")));
}
else
{//Не Залогинен
ItemTrainee->setText(ColumnsTreeTrainees::clmn_Logged, tr("no"));
ItemTrainee->setIcon(ColumnsTreeTrainees::clmn_Logged, QIcon(QStringLiteral(":/resources/icons/circleGray.png")));
}
ItemGroup->addChild(ItemTrainee);
//Скрываем архивных (при необходимости)
if(trainee.getArchived())
if(! archiveVisible)
ItemTrainee->setHidden(true);
//Скрываем незалогиненых (при необходимости)
if(! trainee.getLoggedIn())
if(! notLoggedInVisible)
ItemTrainee->setHidden(true);
}
//if(! archiveVisible && cntChildsNotArchived == 0)
//delete ItemGroup;
}
treeWidget->expandAll();
/*
//if(typeView == TypeView::control)
{
QTreeWidgetItem * item = treeWidget->topLevelItem(0);
if(item != nullptr)
{
QTreeWidgetItem * itemChild = item->child(0);
if(itemChild != nullptr)
treeWidget->setCurrentItem(itemChild);
}
}*/
if(typeObject == TypeObject::objGroup)
setCurrentGroup(lastCurrentID);
else
setCurrentTrainee(lastCurrentID);
treeWidget->sortItems(ColumnsTreeTrainees::clmn_Trainee, Qt::SortOrder::AscendingOrder);
mtxTreeWidget.unlock();
waitAnimationWidget->hideWithStop();
}
void TraineesView::reSetHeadTreeWidget()
{
QStringList listHeaders = {tr("Trainee"), tr("Login"), tr("Password"), tr("Class"), tr("Computer"), tr("IP address"), tr("Archived"), tr("Logged"), tr("ID")};
treeWidget->setHeaderLabels(listHeaders);
}
void TraineesView::setCurrentGroup(int id)
{
typeObject = TypeObject::objGroup;
for(int i = 0; i < treeWidget->topLevelItemCount(); i++)
{
QTreeWidgetItem * item = treeWidget->topLevelItem(i);
if(item != nullptr)
if(item->text(ColumnsTreeTrainees::clmn_ID).toInt() == id)
{
treeWidget->setCurrentItem(item);
return;
}
}
QTreeWidgetItem * item = treeWidget->topLevelItem(0);
if(item != nullptr)
treeWidget->setCurrentItem(item);
}
void TraineesView::setCurrentTrainee(int id)
{
typeObject = TypeObject::objTrainee;
for(int i = 0; i < treeWidget->topLevelItemCount(); i++)
{
QTreeWidgetItem * item = treeWidget->topLevelItem(i);
if(item != nullptr)
{
for (int j = 0; j < item->childCount(); j++)
{
QTreeWidgetItem * itemChild = item->child(j);
if(itemChild != nullptr)
if(itemChild->text(ColumnsTreeTrainees::clmn_ID).toInt() == id)
{
treeWidget->setCurrentItem(itemChild);
return;
}
}//for (int j = 0; j < item->childCount(); j++)
}
}//for(int i = 0; i < treeWidget->topLevelItemCount(); i++)
QTreeWidgetItem * item = treeWidget->topLevelItem(0);
if(item != nullptr)
treeWidget->setCurrentItem(item);
}

View File

@@ -1,167 +0,0 @@
#include "editortrainees.h"
#include "viewertrainees.h"
#include "ui_viewertrainees.h"
ViewerTrainees::ViewerTrainees(ConnectorToServer* connectorToServer, QWidget *parent) :
TraineesView(connectorToServer, CommonView::TypeView::onlyView, parent),
ui(new Ui::ViewerTrainees),
ammTasksWidget(nullptr),
fimTasksWidget(nullptr)
{
ui->setupUi(this);
connect(treeWidget, &QTreeWidget::currentItemChanged, this, &ViewerTrainees::on_treeWidget_currentItemChanged);
ui->horizontalLayout_11->addWidget(treeWidget);
ammTasksWidget = new AMMtasksWidget(connectorToServer, TypeListTreeAMMFIM::listForTrainee, this);
fimTasksWidget = new FIMtasksWidget(connectorToServer, TypeListTreeAMMFIM::listForTrainee, this);
connect(this, &ViewerTrainees::signal_traineeSelected, fimTasksWidget, &FIMtasksWidget::slot_traineeSelected);
connect(this, &ViewerTrainees::signal_traineeSelected, ammTasksWidget, &AMMtasksWidget::slot_traineeSelected);
connect(connectorToServer, &ConnectorToServer::signal_UpdateTasksAMMforTrainee, ammTasksWidget, &AMMtasksWidget::slot_UpdateTasksAMMforTrainee);
connect(connectorToServer, &ConnectorToServer::signal_UpdateTasksFIMforTrainee, fimTasksWidget, &FIMtasksWidget::slot_UpdateTasksFIMforTrainee);
ui->verticalLayout_2->addWidget(ammTasksWidget);
ui->verticalLayout_2->addWidget(fimTasksWidget);
preparationTreeWidget();
setNotLoggedInVisible(true);
ui->btnEditorTrainees->setVisible(false);
}
ViewerTrainees::~ViewerTrainees()
{
delete ui;
}
void ViewerTrainees::setAuthComplited(bool authComplited)
{
this->authComplited = authComplited;
updateButtons();
}
void ViewerTrainees::deactivate()
{
CommonView::deactivate();
ammTasksWidget->deactivate();
fimTasksWidget->deactivate();
updateButtons();
}
/*
void ViewerTrainees::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column)
{
if(item->childCount() == 0)
{//Выбран обучаемый
QString login = item->text(ColumnsTreeTrainees::clmn_Login);
Q_EMIT signal_traineeSelected(login);
}
}*/
void ViewerTrainees::slot_tabMessengerChanged(QString login)
{
if(login == "")
return;
for (int i = 0; i < treeWidget->topLevelItemCount(); i++)
{//Проход по группам
int countChild = treeWidget->topLevelItem(i)->childCount();
for (int j = 0; j < countChild; j++)
{//Проход по обучаемым
QString loginChild = treeWidget->topLevelItem(i)->child(j)->text(ColumnsTreeTrainees::clmn_Login);
if(loginChild == login)
{
treeWidget->setCurrentItem(treeWidget->topLevelItem(i)->child(j));
typeObject = TypeObject::objTrainee;
int newCurrentID = connectorToServer->getIdTraineeByLogin(login);
if(newCurrentID == lastCurrentID)
return;
lastCurrentID = newCurrentID;
Q_EMIT signal_traineeSelected(login);
return;
}
}
}
}
void ViewerTrainees::slot_waitAnimationWidgetShowWithPlayFIM()
{
fimTasksWidget->waitAnimationWidgetShowWithPlay();
}
void ViewerTrainees::slot_waitAnimationWidgetShowWithPlayAMM()
{
ammTasksWidget->waitAnimationWidgetShowWithPlay();
}
void ViewerTrainees::changeEvent(QEvent *event)
{
// В случае получения события изменения языка приложения
if (event->type() == QEvent::LanguageChange)
{// переведём окно заново
ui->retranslateUi(this);
reSetHeadTreeWidget();
//loadTraineesFromDB();
slot_NeedUpdateUI(false, true);
}
}
void ViewerTrainees::on_btnEditorTrainees_clicked()
{
Q_EMIT signal_BlockAutorization(true);
EditorTrainees editorTraineesGroups(connectorToServer, adminMode);
connect(connectorToServer, &ConnectorToServer::signal_UpdateDB, &editorTraineesGroups, &EditorTrainees::slot_NeedUpdateUI);
QDialog* dialog = new QDialog(this);
QHBoxLayout *layout = new QHBoxLayout(dialog);
layout->addWidget(&editorTraineesGroups);
dialog->setWindowTitle(tr("Editor of trainees"));
dialog->setMinimumSize(1600, 800);
dialog->exec();
loadTraineesFromDB();
Q_EMIT signal_BlockAutorization(false);
}
void ViewerTrainees::on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
{
if(current == nullptr)
return;
//if(current->childCount() == 0)
{//Выбран обучаемый
QString login = current->text(ColumnsTreeTrainees::clmn_Login);
//if(login != "")
{
int newCurrentID = connectorToServer->getIdTraineeByLogin(login);
if(newCurrentID == lastCurrentID)
return;
lastCurrentID = newCurrentID;
Q_EMIT signal_traineeSelected(login);
}
}
}
void ViewerTrainees::updateButtons()
{
if(authComplited)
{
ui->btnEditorTrainees->setEnabled(true);
}
else
{
ui->btnEditorTrainees->setEnabled(false);
}
}

View File

@@ -1,62 +0,0 @@
#ifndef TRAINEESWIDGET_H
#define TRAINEESWIDGET_H
#include "traineesview.h"
#include "ammtaskswidget.h"
#include "fimtaskswidget.h"
namespace Ui {
class ViewerTrainees;
}
//Виджет только для просмотра БД Обучаемых
class ViewerTrainees : public TraineesView
{
Q_OBJECT
public:
explicit ViewerTrainees(ConnectorToServer* connectorToServer, QWidget *parent = nullptr);
~ViewerTrainees();
public:
void setAuthComplited(bool authComplited);
void deactivate();
protected:
void changeEvent(QEvent * event) override;
Q_SIGNALS:
//сигнал о блокировке авторизации
void signal_BlockAutorization(bool block);
public Q_SLOTS:
//void on_treeWidget_itemClicked(QTreeWidgetItem *item, int column);
void on_btnEditorTrainees_clicked();
private Q_SLOTS:
void on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
public Q_SLOTS:
//слот обработки сигнала об изменении вкладки диалога в мессенджере
void slot_tabMessengerChanged(QString login);
void slot_waitAnimationWidgetShowWithPlayFIM();
void slot_waitAnimationWidgetShowWithPlayAMM();
Q_SIGNALS:
//сигнал о выборе обучаемого
void signal_traineeSelected(QString login);
private:
void updateButtons() override;
private:
AMMtasksWidget* ammTasksWidget;
FIMtasksWidget* fimTasksWidget;
private:
Ui::ViewerTrainees *ui;
};
#endif // TRAINEESWIDGET_H

View File

@@ -1,82 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ViewerTrainees</class>
<widget class="QWidget" name="ViewerTrainees">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="font">
<font>
<family>Tahoma</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="windowTitle">
<string>Trainees</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_1">
<item>
<widget class="QWidget" name="widget" native="true">
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_11"/>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_2"/>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QToolButton" name="btnEditorTrainees">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>130</width>
<height>58</height>
</size>
</property>
<property name="text">
<string>Editor of Trainees</string>
</property>
<property name="icon">
<iconset resource="../resources.qrc">
<normaloff>:/resources/icons/DB-trainees.png</normaloff>:/resources/icons/DB-trainees.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextUnderIcon</enum>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<resources>
<include location="../resources.qrc"/>
</resources>
<connections/>
</ui>

View File

@@ -1,44 +0,0 @@
#include "newversionwidget.h"
#include "ui_newversionwidget.h"
NewVersionWidget::NewVersionWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::NewVersionWidget)
{
ui->setupUi(this);
setWindowFlags(Qt::SubWindow);
setAttribute(Qt::WA_ShowModal,true);
}
void NewVersionWidget::initialize(VersionSelectWidget *versionSelectWidget, QString prevName)
{
this->versionSelectWidget = versionSelectWidget;
ui->prevVerValue->setText(prevName);
validator = new QRegExpValidator(QRegExp("^[A-Za-z0-9]{20}$"));
ui->lineEdit->setValidator(validator);
}
void NewVersionWidget::on_createButton_clicked()
{
if(ui->lineEdit->text() != "")
{
versionSelectWidget->sendCopyEmit(ui->lineEdit->text());
hide();
}
}
void NewVersionWidget::on_cancelButton_clicked()
{
hide();
}
NewVersionWidget::~NewVersionWidget()
{
delete ui;
}
void NewVersionWidget::on_lineEdit_inputRejected()
{
QToolTip::showText(QCursor::pos(),tr("Only Latin letters and numbers"));
}

View File

@@ -1,36 +0,0 @@
#ifndef NEWVERSIONWIDGET_H
#define NEWVERSIONWIDGET_H
#include <Widgets/versionselectwidget.h>
#include <QWidget>
#include <QLineEdit>
#include <QToolTip>
namespace Ui {
class NewVersionWidget;
}
class VersionSelectWidget;
class NewVersionWidget : public QWidget
{
Q_OBJECT
public:
explicit NewVersionWidget(QWidget *parent = nullptr);
void initialize(VersionSelectWidget *versionSelectWidget,QString prevName);
~NewVersionWidget();
private slots:
void on_createButton_clicked();
void on_cancelButton_clicked();
void on_lineEdit_inputRejected();
private:
Ui::NewVersionWidget *ui;
VersionSelectWidget *versionSelectWidget;
QRegExpValidator *validator;
};
#endif // NEWVERSIONWIDGET_Hvoid on_lineEdit_inputRejected();

View File

@@ -1,259 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>NewVersionWidget</class>
<widget class="QWidget" name="NewVersionWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>344</width>
<height>200</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Create copy...</string>
</property>
<property name="windowIcon">
<iconset resource="../resources.qrc">
<normaloff>:/resources/icons/lms.png</normaloff>:/resources/icons/lms.png</iconset>
</property>
<property name="autoFillBackground">
<bool>true</bool>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QFrame" name="NewVerBackground">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="baseVerLayout">
<property name="leftMargin">
<number>5</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<property name="bottomMargin">
<number>5</number>
</property>
<item>
<widget class="QLabel" name="prevVerTitle">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Basic version:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="prevVerValue">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>150</horstretch>
<verstretch>30</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="newNameLayout">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>5</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<property name="bottomMargin">
<number>5</number>
</property>
<item>
<widget class="QLabel" name="newNameVersionTitle">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>99</horstretch>
<verstretch>40</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>New name version:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>150</horstretch>
<verstretch>30</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>60</width>
<height>30</height>
</size>
</property>
<property name="toolTipDuration">
<number>1000</number>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="bottomMargin">
<number>6</number>
</property>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="createButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Create</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="cancelButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources>
<include location="../resources.qrc"/>
</resources>
<connections/>
</ui>

Some files were not shown because too many files have changed in this diff Show More