├── docx ├── 101_1.docx ├── 101_2.docx ├── 101_3.docx ├── 102_1.docx ├── 102_2.docx ├── 102_3.docx ├── 102_4.docx ├── 102_5.docx ├── 103_1.docx ├── 103_2.docx ├── 103_3.docx ├── 103_4.docx ├── 103_5.docx ├── 103_6.docx ├── 103_7.docx ├── 103_8.docx ├── 104_1.docx ├── 104_2.docx ├── 104_3.docx ├── 104_4.docx ├── 104_5.docx ├── 104_6.docx └── 104_7.docx ├── homework ├── 101_1_dz.txt ├── 101_2_dz.txt ├── 101_3_dz.txt ├── 102_1_dz.txt ├── 102_2_dz.txt ├── 102_3_dz.txt ├── 102_4_dz.txt ├── 102_5_dz.txt ├── 103_1_dz.txt ├── 103_2_dz.txt ├── 103_3_dz.txt ├── 103_4_dz.txt ├── 103_5_dz.txt ├── 103_6_dz.txt ├── 103_7_dz.txt ├── 103_8_dz.txt ├── 104_1_dz.txt ├── 104_2_dz.txt ├── 104_3_dz.txt ├── 104_4_dz.txt ├── 104_5_dz.txt ├── 104_6_dz.txt └── 104_7_dz.txt ├── README.md ├── 102_3.md ├── 104_4.md ├── 103_4.md ├── 103_6.md ├── 104_6.md ├── 104_7.md ├── 102_5.md ├── 102_4.md ├── 104_1.md ├── 103_1.md ├── 103_7.md ├── 104_3.md ├── 103_5.md ├── 101_1.md ├── 103_8.md ├── 104_2.md ├── 103_2.md ├── 103_3.md ├── 101_2.md ├── 102_2.md ├── 102_1.md └── 101_3.md /docx/101_1.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/docx/101_1.docx -------------------------------------------------------------------------------- /docx/101_2.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/docx/101_2.docx -------------------------------------------------------------------------------- /docx/101_3.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/docx/101_3.docx -------------------------------------------------------------------------------- /docx/102_1.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/docx/102_1.docx -------------------------------------------------------------------------------- /docx/102_2.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/docx/102_2.docx -------------------------------------------------------------------------------- /docx/102_3.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/docx/102_3.docx -------------------------------------------------------------------------------- /docx/102_4.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/docx/102_4.docx -------------------------------------------------------------------------------- /docx/102_5.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/docx/102_5.docx -------------------------------------------------------------------------------- /docx/103_1.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/docx/103_1.docx -------------------------------------------------------------------------------- /docx/103_2.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/docx/103_2.docx -------------------------------------------------------------------------------- /docx/103_3.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/docx/103_3.docx -------------------------------------------------------------------------------- /docx/103_4.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/docx/103_4.docx -------------------------------------------------------------------------------- /docx/103_5.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/docx/103_5.docx -------------------------------------------------------------------------------- /docx/103_6.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/docx/103_6.docx -------------------------------------------------------------------------------- /docx/103_7.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/docx/103_7.docx -------------------------------------------------------------------------------- /docx/103_8.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/docx/103_8.docx -------------------------------------------------------------------------------- /docx/104_1.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/docx/104_1.docx -------------------------------------------------------------------------------- /docx/104_2.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/docx/104_2.docx -------------------------------------------------------------------------------- /docx/104_3.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/docx/104_3.docx -------------------------------------------------------------------------------- /docx/104_4.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/docx/104_4.docx -------------------------------------------------------------------------------- /docx/104_5.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/docx/104_5.docx -------------------------------------------------------------------------------- /docx/104_6.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/docx/104_6.docx -------------------------------------------------------------------------------- /docx/104_7.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/docx/104_7.docx -------------------------------------------------------------------------------- /homework/101_1_dz.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/homework/101_1_dz.txt -------------------------------------------------------------------------------- /homework/101_2_dz.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/homework/101_2_dz.txt -------------------------------------------------------------------------------- /homework/101_3_dz.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/homework/101_3_dz.txt -------------------------------------------------------------------------------- /homework/102_1_dz.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/homework/102_1_dz.txt -------------------------------------------------------------------------------- /homework/102_2_dz.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/homework/102_2_dz.txt -------------------------------------------------------------------------------- /homework/102_3_dz.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/homework/102_3_dz.txt -------------------------------------------------------------------------------- /homework/102_4_dz.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/homework/102_4_dz.txt -------------------------------------------------------------------------------- /homework/102_5_dz.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/homework/102_5_dz.txt -------------------------------------------------------------------------------- /homework/103_1_dz.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/homework/103_1_dz.txt -------------------------------------------------------------------------------- /homework/103_2_dz.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/homework/103_2_dz.txt -------------------------------------------------------------------------------- /homework/103_3_dz.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/homework/103_3_dz.txt -------------------------------------------------------------------------------- /homework/103_4_dz.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/homework/103_4_dz.txt -------------------------------------------------------------------------------- /homework/103_5_dz.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/homework/103_5_dz.txt -------------------------------------------------------------------------------- /homework/103_6_dz.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/homework/103_6_dz.txt -------------------------------------------------------------------------------- /homework/103_7_dz.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/homework/103_7_dz.txt -------------------------------------------------------------------------------- /homework/103_8_dz.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/homework/103_8_dz.txt -------------------------------------------------------------------------------- /homework/104_1_dz.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/homework/104_1_dz.txt -------------------------------------------------------------------------------- /homework/104_2_dz.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/homework/104_2_dz.txt -------------------------------------------------------------------------------- /homework/104_3_dz.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/homework/104_3_dz.txt -------------------------------------------------------------------------------- /homework/104_4_dz.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/homework/104_4_dz.txt -------------------------------------------------------------------------------- /homework/104_5_dz.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/homework/104_5_dz.txt -------------------------------------------------------------------------------- /homework/104_6_dz.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/homework/104_6_dz.txt -------------------------------------------------------------------------------- /homework/104_7_dz.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksemaev/lpic_1-101/HEAD/homework/104_7_dz.txt -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Материалы для изучения Linux по плану подготовки к экзамену 101 первой ступени сертификации. 2 | **./** 3 |    **|_ docx/** - конспекты для тех, кому удобно в ворде 4 |    **|_ homework/** - задания для самостоятельного изучения 5 |    **|_\*.md** - конспекты в markdown 6 | 7 | Приветствую любые полезные дополнения и исправления. Делайте merge requests. 8 | 9 | Для тех кто не знаком с гитом: 10 | 1) Ставите https://www.gitkraken.com/ 11 | 2) В нем File-Clone Repo 12 | 3) Указываете куда клонировать и какой репо (в данном случае https://github.com/ksemaev/lpic_1-101) 13 | 4) Периодически делаете Pull чтобы залить свежие изменения от меня. 14 | -------------------------------------------------------------------------------- /102_3.md: -------------------------------------------------------------------------------- 1 | **102.3** Управление библиотеками 2 | 3 | Студент должен уметь управлять определять необходимые для работы библиотеки и устанавливать их. 4 | 5 | **Изучаем** : 6 | 7 | - типы библиотек; 8 | - месторасположение библиотек; 9 | - загрузку библиотек. 10 | 11 | **Термины и утилиты:**** ** 12 | 13 | - ldd 14 | - ldconfig 15 | - /etc/ld.so.conf 16 | - LD\_LIBRARY\_PATH 17 | 18 | Библиотеки — это набор функций, используемый ПО при работе. Библиотеки могут входить в состав программного обеспечения, а могут храниться отдельно, загружаясь в оперативную память по мере необходимости. Как правило процесс установки библиотеки - это обычный процесс установки пакета ПО. Но иногда бывает нужно прописать путь к библиотеке, посмотреть используемые файлы и т.д. 19 | 20 | В Linux библиотеки располагаются тут: 21 | 22 | - **/**** lib** - библиотеки для ПО, располагаемого в /bin; 23 | - **/usr/lib** - библиотеки для ПО, располагаемого в /usr/bin; 24 | - прочие пути, указанные в файле **/**** etc/ld.so.conf **_(по умолчанию это_**/ ****etc**** / ****ld****. ****so****. ****conf****. ****d** _)_; 25 | 26 | Кроме того, набор возможных расположений библиотек определяется значением переменной **LD\_LIBRARY\_PATH**. 27 | 28 | Активные библиотеки располагаются в кэше (_файл_ **/**** etc ****/**** ld ****.**** so ****.**** cache**), для обновления которого необходимо выполнить команду**ldconfig** (заново загрузит библиотеки в кэш). 29 | 30 | Для определения используемых двоичным файлов программы библиотек необходимо выполнение команды ldd, например: 31 | 32 | **ldd** **/**** bin ****/**** ls **** ** _(показать библиотеки, используемые командой / __bin__ / __ls__ );_ -------------------------------------------------------------------------------- /104_4.md: -------------------------------------------------------------------------------- 1 | **104.4 Управление квотами дисков.** 2 | 3 | Студент должен уметь управлять квотами дисков для пользователей. 4 | 5 | **Изучаем** : 6 | 7 | - установку квоты; 8 | - работу с отчетами по квотам. 9 | 10 | **Термины и утилиты: ** 11 | 12 | - quota 13 | - edquota 14 | - repquota 15 | - quotaon 16 | 17 | Использование квот позволяет управлять использованием дискового пространства как отдельных пользователей и групп, так и всех в целом. В данном руке рассматривается квотирование классической файловой системы ext. 18 | 19 | Для возможности работы с квотами необходим пакет ПО **quota****.** 20 | 21 | Для того чтобы начать использовать квоты на устройстве, необходимо в опциях его монтирования в файле **/**** etc ****/**** fstab **дописать опции** usrquota **и** grpquota**. 22 | 23 | Включить и выключить квоту можно командами **quotaon** и **quotaoff** , например: 24 | 25 | **quotaon** **/**** mnt ****/**** disk ****1 ** _(включить квоту для устройства подключенного к / __mnt__ / __disk__ 1);_ 26 | 27 | **quotaoff** **/**** mnt ****/**** disk ****1 ** _(выключить квоту для устройства подключенного к / __mnt__ / __disk__ 1);_ 28 | 29 | Для редактирования квоты используется команда **edquota** , например: 30 | 31 | **edquota** **–**** u ****semaev** _(изменить настройки квоты для пользователя_ _semaev__);_ 32 | 33 | **edquota** **–**** g ****users** _(изменить настройки квоты для группы_ _users__);_ 34 | 35 | При этом можно указать ограничение по объему занятого места, или по количеству файлов и папок. Квоты бывают следующих видов: 36 | 37 | - жесткая – невозможно превысить; 38 | - мягкая – можно превышать в течении недели. 39 | 40 | Для получения отчета об использовании квот предназначена команда repquota, например: 41 | 42 | **repquota**** / ****mnt**** / ****disk**** 1 ** _(посмотреть отчет по квоте для устройства подключенного к / __mnt__ / __disk__ 1);_ -------------------------------------------------------------------------------- /103_4.md: -------------------------------------------------------------------------------- 1 | **103.4** Потоки, конвейеры и перенаправления 2 | 3 | Студент должен уметь управлять потоками для обработки текстовых данных 4 | 5 | **Изучаем** : 6 | 7 | - перенаправление стандартных ввода, вывода и ошибок; 8 | - передачу вывода одной команды на ввод другой; 9 | - использование вывода одной команды в качестве аргументов другой; 10 | - получение выходных данных в файл и на стандартный вывод. 11 | 12 | **Термины и утилиты: ** 13 | 14 | - tee 15 | - xargs 16 | 17 | - stdin 18 | - stout 19 | - stderr 20 | 21 | Linux традиционно использует потоки для ввода, вывода и ошибок. Обычно ввод – это клавиатура или файлы, а вывод ошибок и результатов происходит в консоль. Но часто бывает нужно объединить последовательность команд в конвейер, или отправить результат в какой-нибудь файл. 22 | 23 | Для того чтобы послать на ввод программы некоторые данные используется знак " **<**", например: 24 | 25 | **wc** **<** **file**** 1. ****txt**** ** _(использовать в качестве ввода для программы_ _wc_ _файл_ _file __.__ txt__);_ 26 | 27 | Для того чтобы послать вывод программы куда-нибудь, кроме стандартного направления, используется знак " **>**", например: 28 | 29 | **ls** **>** **list****. ****txt** _(перезаписать содержимое файла_ _list __.__ txt_ _результатом команды_ _ls__);_ 30 | 31 | **ls** **>>** **list****. ****txt** _(дописать в файл_ _list __.__ txt_ _результат команды_ _ls__);_ 32 | 33 | Для ввода, вывода и ошибок используются следующие обозначения: 34 | 35 | - **Stdin** _– стандартный ввод программы (обозначение "0");_ 36 | - **Stdout** – _стандартный вывод программы (обозначение "1");_ 37 | - **Stderr** – _стандартные ошибки программы (обозначение "2");_ 38 | 39 | Например: 40 | 41 | **l**** s bob 2> error.txt** 42 | 43 | **ls**** bob **** > **** result ****.**** txt **** 2> **** error ****.**** txt** -------------------------------------------------------------------------------- /103_6.md: -------------------------------------------------------------------------------- 1 | **103.6** Изменение приоритетов процессов 2 | 3 | Студент должен уметь менять приоритеты выполняющихся процессов 4 | 5 | **Изучаем** : 6 | 7 | - приоритеты по умолчанию создаваемых процессов; 8 | - запуск программ с повышенным и пониженным приоритетом; 9 | - изменение приоритета уже запущенной программы. 10 | 11 | **Термины и утилиты: ** 12 | 13 | - nice 14 | - ps 15 | - renice 16 | - top 17 | 18 | Несмотря на то, что Linux является довольно стабильной системой, которая умеет автоматически подстраиваться под текущие условия работы, иногда приходится вручную управлять приоритетами процессов, для контроля над ресурсами ПК. 19 | 20 | Для просмотра текущих процессов используется команда **ps** , например: 21 | 22 | **p**** s aux** _(отобразить процессы по всем пользователям);_ 23 | 24 | **ps** **–**** eo ****user**** , ****pid**** , ****pcpu**** , ****nice**** , ****comm** _(отобразить процессы, выводя указанные данные);_ 25 | 26 | Приоритет процесса определяется параметром **nice** (в Ubuntu может принимать значения от -20 до +19): чем ниже значение, тем выше приоритет. По умолчанию значение nice для каждого процесса равно "-10". 27 | 28 | Для запуска процесса с указанным приоритетом используется команда **nice** , например: 29 | 30 | **nice** **–**** n **** -20 **** ping ****ya****. ****ru**** ** _(запустить процесс с приоритетом "-20");_ 31 | 32 | Для изменения приоритета запущенного процесса используется команда **renice** , например: 33 | 34 | **renice 15 –p 10241 ** _(изменить приоритет процесса с_ _PID_ _"10421");_ 35 | 36 | **renice** **-15 –**** u ****semaev**** ** _(изменить приоритет процессов пользователя " __semaev__");_ 37 | 38 | Также для использования доступен диспетчер задач **top** , выводящий сведения о запущенных процессах в реальном режиме в консоль. Для изменения критерия сортировки процессов используются символы "<" и ">". -------------------------------------------------------------------------------- /104_6.md: -------------------------------------------------------------------------------- 1 | **104.6 Жесткие и мягкие (символические) ссылки.** 2 | 3 | Студент должен уметь создавать и управлять ссылками на файлы. 4 | 5 | **Изучаем** : 6 | 7 | - создание ссылок; 8 | - разницу между мягкими и жесткими ссылками; 9 | - разницу между копированием и созданием ссылок; 10 | - использование ссылок для выполнения административных задач. 11 | 12 | **Термины и утилиты: ** 13 | 14 | - ln 15 | - ls 16 | 17 | 18 | 19 | Существует множество файловых систем, с различными принципами работы. В данном уроке будет рассмотрена классическая линуксовая файловая система ext, позволяющая прозрачно работать с адресацией диска. 20 | 21 | Ключевым понятием при работе с ссылками является **айнод** (inode – индексный дескриптор): набор информации об объекте файловой системы. Айнод может содержать информацию о: 22 | 23 | - размер объекта; 24 | - id устройства, на котором расположен объект; 25 | - id владельца объекта; 26 | - id группы владельцев; 27 | - права доступа; 28 | - временные метки доступа; 29 | - указатель на месторасположение на диске; 30 | - размер блока; 31 | - количество блоков; 32 | - счетчик ссылок на объект и т.д. 33 | 34 | Посмотреть айноды в текущем каталоге можно при помощи команды **ls** **–**** li** 35 | 36 | На объекты файловой системы можно создавать ссылки: 37 | 38 | - **жесткие** – указывают на расположение файла на физическом устройстве (работают в пределах одного раздела носителя информации, но всегда указывают на файл, даже если он переименован, или перемещен внутри файловой системы носителя в другие каталоги); 39 | - **мягкие** – указывают на расположение файла в файловой системе (работают между файловыми системами, но если исходный объект переместить или переименовать, ссылка работать перестает). 40 | 41 | Создать жесткую ссылку можно командой **ln** , например: 42 | 43 | **ln file.txt hard.txt** 44 | 45 | Создать мягкую ссылку можно командой **ln** **-**** s**, например: 46 | 47 | ** ln –s file.txt soft.txt ** 48 | 49 | Жесткие ссылки нельзя создавать для каталогов. 50 | 51 | Если создать жесткую ссылку на файл, и удалить файл, то к нему все еще можно получить доступ по созданной жесткой ссылке. То есть для удаления файла необходимо удаление всех жестких ссылок на него. 52 | 53 | Созданная жесткая ссылка на файл выглядит в файловой системе как копия исходного файла. Чтобы увидеть разницу между скопированным файлом и жесткой ссылкой на него необходимо посмотреть их айноды (жесткая ссылка и оригинал будут иметь одинаковые). -------------------------------------------------------------------------------- /104_7.md: -------------------------------------------------------------------------------- 1 | **104.7 Поиск и стандартное расположение системных файлов.** 2 | 3 | Студент должен ознакомиться с FHS (стандартная иерархия файловой системы), включая стандартное расположение файлов и предназначение папок. 4 | 5 | **Изучаем** : 6 | 7 | - стандартную структуру файловой системы; 8 | - способы поиска файлов и команд. 9 | 10 | **Термины и утилиты: ** 11 | 12 | - find 13 | - locate 14 | - updatedb 15 | - whereis 16 | - which 17 | - type 18 | - /etc/updatedb.conf 19 | 20 | 21 | 22 | Все UNIX-подобные системы имеют схожее название, расположение и предназначение директорий в файловой системе. Стандарт иерархии файловой системы (FHS) – позволяет пользователям и разработчикам ПО ориентироваться в различных дистрибутивах Linux. 23 | 24 | Не все каталоги можно найти в каждом дистрибутиве Linux, но в целом можно говорить о следующих стандартных расположениях: 25 | 26 | **/**** bin **** ** - базовые двоичные файлы команд; 27 | 28 | **/**** boot **** ** - файлы загрузчика; 29 | 30 | **/**** dev** - устройства; 31 | 32 | **/**** etc **** ** - конфигурация ПК; 33 | 34 | **/**** home **** ** - домашние папки; 35 | 36 | **/**** lib** - библиотеки и модули ядра; 37 | 38 | **/**** proc** - информация о работающей системе; 39 | 40 | **/**** media ** - монтирование носителей; 41 | 42 | **/**** mnt** - монтирование носителей; 43 | 44 | **/**** opt** - дополнительное ПО; 45 | 46 | **/**** root** - домашняя папка админа; 47 | 48 | **/**** sbin** - основные программы настройки системы; 49 | 50 | **/**** srv** - данные для системных служб; 51 | 52 | **/**** tmp** - временные файлы; 53 | 54 | **/**** usr** - бинарники файлы пользователей; 55 | 56 | **/var** - переменные. 57 | 58 | Для поиска информации в текущий момент используется команда **find**. Для поиска проиндексированной информации (поиск осуществляется намного быстрее) используется команда **locate**. 59 | 60 | Индексацию информации для быстрого поиска можно выполнить принудительно командой **updatedb**. Выбрать каталоги для индексации можно редактированием конфигурационного файла **/**** etc ****/**** updatedb ****.**** conf** 61 | 62 | Для поиска информации и командах и утилитах пользуются следующими командами: 63 | 64 | - **which** – выводит путь к исполняемым файлам команды; 65 | - **type** – показывает исполняемые файлы, псевдонимы, функции и т.д.; 66 | - **whereis** – показывает исполняемые файлы, исходники, мануалы. -------------------------------------------------------------------------------- /102_5.md: -------------------------------------------------------------------------------- 1 | **102.5** Управление пакетами ПО в RedHat 2 | 3 | Студент должен уметь управлять ПО в RedHat системах. 4 | 5 | **Изучаем** : 6 | 7 | - установку, обновление и удаление пакетов ПО; 8 | - получение информации о пакете ПО; 9 | - состав и расположение файлов в пакетах ПО. 10 | 11 | **Термины и утилиты:**** ** 12 | 13 | - rpm 14 | - rpm2cpio 15 | - /etc/yum.conf 16 | - /etc/yum.repos.d/ 17 | - yum 18 | - yumdownloader 19 | 20 | Семейство RedHat обладает своими инструментами для работы с пакетами программного обеспечения (и свой формат этих пакетов: rpm). Как и у прочих Linux систем, RedHat предлагает мощный инструмент для работы с пакетами и несколько облегченных, предлагающих простые варианты решения наиболее частых задач. 21 | 22 | Для работы с пакетами ПО в RedHat системах предназначена утилита **rpm** , являющая громоздким инструментом автоматизации работы с пакетами, например: 23 | 24 | **r**** pm – ****i**** webmin **** ** _(установить пакет_ _webmin__);_ 25 | 26 | **rpm** **–**** e ****webmin**** ** _(удалить пакет_ _webmin__);_ 27 | 28 | ** ** **rpm –V openssh-client ** _( __проверить__ пакет_ _openssh-client);_ 29 | 30 | ** r**** pm –qa ** _(показать установленные пакеты);_ 31 | 32 | Для конвертации пакета в набор исходных двоичных файлов можно воспользоваться командой **rpm**** 2 ****cpio** , например: 33 | 34 | **rpm**** 2 ****cpio**** ssh **** > **** bin ****.**** cpio**_(достать исходники пакета_ _ssh_ _в архив_ _bin __.__ cpio__);_ 35 | 36 | Большей популярностью, чем rpm, при работе с пакетами ПО в RedHat пользуется **yum**. Он умеет автоматически разрешать зависимости и работать с сетевыми репозиториями, в отличии от низкоуровневногоrpm. Примеры его использования: 37 | 38 | **yum**** install ****vim** _ (установить_ _vim__);_ 39 | 40 | **yum**** remove ****vim** _ (удалить_ _vim__);_ 41 | 42 | **yum search vim ** _ (__найти_ _vim);_ 43 | 44 | **yum**** upgrade **** ** _(обновить пакеты ПО);_ 45 | 46 | Для поиска информации о пакетах yum пользуется репозиториями, конфигурация которых расположена в виде отдельных файлов в директории **/**** etc ****/**** yum ****.**** repos ****.**** d ****/** _,_ например файл **CentOS**** - ****Base****. ****repo** содержит несколько абзацев, указывающих на имя хранилища пакетов, его адрес и ключи для проверки. 47 | 48 | Настройки самого менеджера пакетов yum хранятся в файле **/**** etc ****/**** yum ****.**** conf** 49 | 50 | Для скачивания пакетов можно воспользоваться утилитой **yumdownloader** , например: 51 | 52 | **yumdownloader**** resolve ****openssh**** ** _(скачать пакет_ _openssh_ _и все его зависимости)._ -------------------------------------------------------------------------------- /102_4.md: -------------------------------------------------------------------------------- 1 | **102.4** Управление пакетами ПО в Debian 2 | 3 | Студент должен уметь управлять ПО в Debian системах. 4 | 5 | **Изучаем** : 6 | 7 | - установку, обновление и удаление пакетов ПО; 8 | - получение информации о пакете ПО; 9 | - состав и расположение файлов в пакетах ПО. 10 | 11 | **Термины и утилиты:**** ** 12 | 13 | - /etc/apt/sources.list 14 | - dpkg 15 | - dpkg-reconfigure 16 | - apt-get 17 | - apt-cache 18 | - aptitude 19 | 20 | Семейство Debian обладает своими инструментами для работы с пакетами программного обеспечения (и свой формат этих пакетов: deb). Как и у прочих Linux систем, Debian предлагает мощный инструмент для работы с пакетами и несколько облегченных, предлагающих простые варианты решения наиболее частых задач. 21 | 22 | Для работы с пакетами ПО в Debian системах предназначена утилита **dpkg** , являющая громоздким инструментом автоматизации работы с пакетами. Файл конфигурации менеджера пакетов располагается в файле **/**** etc ****/**** dpkg ****/**** dpkg ****.**** cfg**. Примеры использования: 23 | 24 | **dpkg –l ** _(вывести информацию об установленных пакетах);_ 25 | 26 | **dpkg –s firefox ** _( __статус__ пакета_ _firefox);_ 27 | 28 | **dpkg** **–**** i ****webmin**** ** _(установить пакет_ _webmin__);_ 29 | 30 | **dpkg** **–**** r ****webmin**** ** _(удалить пакет_ _webmin__);_ 31 | 32 | **dpkg**** - ****reconfigure**** webmin **** ** _(переустановить пакет_ _webmin__);_ 33 | 34 | Большей популярностью, чем dpkg, при работе с пакетами ПО в Debian пользуется **apt**. Он умеет автоматически разрешать зависимости и работать с сетевыми репозиториями, в отличии от низкоуровневого dpkg. Примеры ее использования: 35 | 36 | **apt**** - ****get**** update** _(обновить информацию о репозиториях);_ 37 | 38 | **apt**** - ****get**** upgrade**_(обновить пакеты);_ 39 | 40 | **apt-get install webmin** _( __установить__ пакет_ _webmin);_ 41 | 42 | **apt-get remove webmin** _( __удалить__ пакет_ _webmin);_ 43 | 44 | Для поиска пакетов используется команда apt-cache, например: 45 | 46 | **apt-cache search webmin ** _( __найти__ пакет_ _webmin);_ 47 | 48 | **apt**** - ****cache**** show ****webmin** ** ** _(показать информацию о пакете_ _webmin__);_ 49 | 50 | **apt**** - ****cache**** depends ****webmin**** ** _(показать зависимости пакета_ _webmin__);_ 51 | 52 | Настройки менеджера пакетов apt находятся в файле **/**** etc ****/**** apt ****/**** apt ****.**** conf **, а перечень репозиториев в файле** / ****etc**** / ****apt**** / ****sources****. ****list****.** 53 | 54 | Также для работы с пакетами в Debian системах можно использовать менеджер **aptitude** , имеющий диалоговой псевдографический интерфейс. -------------------------------------------------------------------------------- /104_1.md: -------------------------------------------------------------------------------- 1 | **104.1 Создание файловых систем.** 2 | 3 | Студент должен научиться разбивать диск на разделы, создавать на них файловые системы и управлять разделом подкачки. 4 | 5 | **Изучаем** : 6 | 7 | - управление таблицами разделов MBR; 8 | - создание файловых систем mkfs (ext, XFS, VFAT); 9 | - знакомство с ReiserFS и Btrfs; 10 | - базовые навыки работы с GPT. 11 | 12 | **Термины и утилиты: ** 13 | 14 | - fdisk 15 | - gdisk 16 | - parted 17 | - mkfs 18 | - mkswap 19 | 20 | Linuх поддерживает работу с различными файловыми системами. Для возможности работы с файловыми системами, кроме классической ext, необходим набор соответствующих инструментов, устанавливаемых вместе с набором ПО для каждой файловой системы. 21 | 22 | Утилита **fdisk** предназначена для работы с носителями информации, использующими классическую таблицу разделов MBR (последние версии умеют работать и с GUID). Используя эту утилиту можно в интерактивном режиме создавать, удалять и изменять разделы жесткого диска, например: 23 | 24 | **fdisk** **–**** l**_(вывести информацию о текущих разделах дисков);_ 25 | 26 | Утилита **gdisk** предназначена для работы с носителями информации, использующими таблицу разделов GUID. Используя эту утилиту можно в интерактивном режиме создавать, удалять, изменять и конвертировать разделы жесткого диска, например: 27 | 28 | **gdisk** **/**** dev ****/**** sdb**_(начать работу с носителем / __dev__. __sdb__ );_ 29 | 30 | Для создания файловой системы используется утилита **mkfs** , вызывающая специализированные инструменты для каждой отдельной файловой системы, например: 31 | 32 | **mkfs** **–**** t ****ext**** 2 / ****dev**** / ****sdb**** 1** _(отформатировать раздел /dev/sdb1 в_ _ext__2);_ 33 | 34 | **mkfs****. ****ext**** 2 / ****dev**** / ****sdb**** 1** _(отформатировать раздел /dev/sdb1 в_ _ext__2);_ 35 | 36 | Для расширенных возможностей управления различными файловыми системами (сжатие, расширение, перенос, копирование и т.д.) используется утилита **parted** , или ее релиз с графическим интерфейсом – **gparted**. 37 | 38 | Для работы с нестандартными файловыми системами нужно ставить соответствующие им наборы ПО, например **xfsprogs** (для файловой системы XFS), **reiserfsprogs** (для файловой системы ReiserFS) или **btrfs**** - ****tools** (для файловой системы BTRFS)_._ После установки этих пакетов ПО стандартные инструменты Linux смогут создавать и редактировать разделы с указанными файловыми системами. 39 | 40 | Также следует отметить, что в Linux используется отдельный раздел подкачки, используемый в качестве временного хранилища информации в том случае, если оперативная память ПК заполнена. Для работы с ним используются следующие инструменты: 41 | 42 | **mkswap** _(создать файловую систему для раздела подкачки);_ 43 | 44 | **swapon** _(включить раздел подкачки);_ 45 | 46 | **swapoff** _(выключить раздел подкачки)._ -------------------------------------------------------------------------------- /103_1.md: -------------------------------------------------------------------------------- 1 | **103.1** Работа в командной строке 2 | 3 | Студент должен уметь работать с командными оболочками и командами в командной строке 4 | 5 | **Изучаем** : 6 | 7 | - работу с оболочками и командами для выполнения основных задач; 8 | - использование и изменение среды оболочки, в том числе переменных среды; 9 | - работу с историей выполненных команд; 10 | - работу с командами исходя из текущего месторасположения. 11 | 12 | **Термины и утилиты:**** ** 13 | 14 | - bash 15 | - echo 16 | - env 17 | - export 18 | - pwd 19 | - set 20 | - unset 21 | - man 22 | - uname 23 | - history 24 | - .bash\_history 25 | 26 | Работа администратора с Linux заключается прежде всего в оперировании в командной строке. Командная строка, или консоль — это отдельная программируемая среда со своими настройками, возможностями и инструментами. Существует множество различных оболочек, в данном уроке рассматривается bash, используемая в большинстве современных ОС. 27 | 28 | Увидеть название оболочки, используемой пользователем по умолчанию, можно в конце каждой строки файла **/**** etc ****/**** passwd **. Глобальные настройки командной строки находятся в файле** / ****etc**** / ****profile** , а настройки для каждого пользователя в файлах его домашней директории. 29 | 30 | При этом существует несколько вариантов расположения настроек, в зависимости от семейства ОС. В общем виде поиск настроек осуществляется в следующем порядке: **~/.bash\_profile, ~/.bash\_login** , и **~/.profile** (настройки берутся из первого обнаруженного файла). 31 | 32 | При работе в консоли используются следующие распространенные команды (их больше, но в данной теме LPI почему-то заостряет внимание на этих): 33 | 34 | - **cat** – вывод содержимого файла в консоль; 35 | - **cd** – переход в каталог; 36 | - **ls** – вывод содержимого каталога; 37 | - **echo** – вывод текста в консоль; 38 | - **touch** – обновление времени редактирования файла или создание нового пустого файла; 39 | - **uname ** – вывод имени ОС; 40 | 41 | Консоль, как отдельная рабочая среда содержит свои переменные: переменные среды (глобальные переменные, использующиеся в ОС) и обычные переменные (работают в пределах запущенного сеанса консоли). Для просмотра переменных доступны команды: 42 | 43 | - **env** – вывод переменных среды; 44 | - **export** – превращение переменной в переменную среды; 45 | - **unset** – отключение переменной; 46 | 47 | Для создания переменной используется простой синтаксис **имя\_переменной=значение\_переменной**. Для обращения к переменной указывается знак **$** , например: 48 | 49 | **X**** =12 ** _(задать переменной_ _X_ _значение 12);_ 50 | 51 | **echo** **$**** X **** ** _(вывести значение переменной_ _X__);_ 52 | 53 | Для выполнения команды в текущем каталоге (его можно узнать командой **pwd** ), нужно указывать полный путь к команде (_например, / __home__ / __semaev__ /__script_), если текущий каталог не перечислен в значениях переменной среды **PATH**. 54 | 55 | Для получения справочной информации доступны команды: 56 | 57 | - **man** – справка по команде; 58 | - **file** – справка по файлу; 59 | - **whatis** – справка по названию; 60 | - **history** – вывод истории команд (список хранится в .bash\_history); 61 | 62 | Отдельно следует упомянуть команду **exec** , позволяющую выполнять команду за пределами текущей оболочки, сбрасывая права суперпользователя. -------------------------------------------------------------------------------- /103_7.md: -------------------------------------------------------------------------------- 1 | **103.7** Поиск информации при помощи регулярных выражений 2 | 3 | Студент должен уметь осуществлять поиск необходимых файлов и информации внутри них. 4 | 5 | **Изучаем** : 6 | 7 | - создание простых регулярных выражений; 8 | - инструменты, опирающиеся на эти выражения, для поиска файлов. 9 | 10 | **Термины и утилиты: ** 11 | 12 | - grep 13 | - egrep 14 | - fgrep 15 | - rgrep 16 | - sed 17 | - регулярные выражения. 18 | 19 | Частой задачей в Linux является поиск необходимых файлов и сортировка информации внутри них. Для этой задачи служат регулярные выражения – специальный язык поиска и изменения информации, обладающий своим синтаксисом. 20 | 21 | При отборе информации можно использовать стандартные групповые символы: 22 | 23 | - **^** _ - начало строки;_ 24 | - **$ ** _ - конец строки;_ 25 | - **. ** _ - любой символ;_ 26 | - **\<**** a **** ** _- слово, начинающееся с " __a__";_ 27 | - **\>**** a **** ** _-_ _c __лово, заканчивающееся на "__ a__";_ 28 | - **a**** - ****z**** ] **** -** _диапазон от " __a__" до " __z__";_ 29 | - **[^t]**** **** -** _не буква " __t__";_ 30 | - **a|z**** **** -** _" __a__" __или "__ z __"__ ;_ 31 | - и т.д.; 32 | 33 | Для простой сортировки набора строк используется команда **grep** , например: 34 | 35 | **grep**** oo ****file****. ****txt** _(отобразить в файле текст с двумя буквы « __o__ » подряд);_ 36 | 37 | **ls** **|** **grep**** ile** _(вывести названия содержимого каталога с набором символов ' __ile__');_ 38 | 39 | **grep**** ple ****$** **file****. ****txt** _(отобразить в файле_ _file __.__ txt_ _строки, заканчивающиеся на ' __ple__');_ 40 | 41 | Для расширенной сортировки и поиска по сложным регулярным выражениям используется команда **egrep** (также можно использовать **grep** **-**** E**), например: 42 | 43 | **egrep** **'^(****b ****|**** d****)'** **file****. ****txt** _(все строки, что начинаются с " __b__" или " __d__");_ 44 | 45 | **egrep** **'^[****a ****-**** k****]'** **file****. ****txt** _(все строки, что начинаются с " __a__" по " __k__");_ 46 | 47 | Для быстрой сортировки и поиска по набору символов без регулярных выражений используется команда **fgrep** (также можно использовать **grep** **-**** F**), например: 48 | 49 | **fgrep**** c ****$** **file****. ****txt** _ (отобразить в_ _file __.__ txt_ _последовательность символов " __c__ $");_ 50 | 51 | Для рекурсивной (включая вложенные каталоги и файлы) сортировки и поиска по набору символов используется команда **rgrep** (также можно использовать **grep** **-**** R**), например: 52 | 53 | **rgrep** ** **** word**_ (вывести позиции содержащие « __word__ » в текущем и всех вложенных каталогах__);_ 54 | 55 | Для изменения текстового потока согласно заданным правилам используется редактор sed, например: 56 | 57 | **sed** **–**** e ****' ****s**** / ****oo**** / ****aa**** /' ****file****. ****txt** _(заменить в_ _file __.__ txt_ _все " __oo__" на " __aa__" );_ 58 | 59 | **sed** **–**** re ****' ****s**** /^( ****B**** | ****b**** )/ ****C****' ****file****. ****txt** **>** **newfile****. ****txt** _(в строках, начинающихся с « __B__ » или « __b__ », заменить первую букву на «С» и сохранить результат в_ _newfile __.__ txt__);_ -------------------------------------------------------------------------------- /104_3.md: -------------------------------------------------------------------------------- 1 | **104.3 Монтирование файловых систем.** 2 | 3 | Студент должен уметь настраивать подключение файловых систем. 4 | 5 | **Изучаем** : 6 | 7 | - ручное подключение и отключение файловых систем; 8 | - автоматическое монтирование при загрузке; 9 | - настройку подключаемых портативных файловых систем. 10 | 11 | **Термины и утилиты: ** 12 | 13 | - /etc/fstab 14 | - /media 15 | - mount 16 | - umount 17 | 18 | Linuх использует файловую систему с единым корнем (в отличии от Windows, где каждый носитель информации имеет свой корень). Таким образом каждое отдельно устройство хранения информации подключается в единую корневую файловую систему через точки монтирования в иерархической древовидной структуре. 19 | 20 | Для подключения устройства необходимо создать точку монтирования – любой пустой каталог. Традиционно такие точки монтирования создаются в каталоге **/**** mnt**(для временного монтирования пользовательских файловых систем) или**/ ****media** (для подключения портативных устройств), например: 21 | 22 | **mkdir /mnt/hard\_drive ** _( __создать__ каталог_ _/mnt/hard\_drive)_ 23 | 24 | Для подключения файловой системы с носителя информации используется команда **mount** , например: 25 | 26 | **mount** **–**** t ****ext**** 3 / ****dev**** / ****sdb**** 1 / ****mnt**** / ****hard**** \_ ****drive** _(подключить устройство / __dev__ / __sdb__ 1 с типом файловой системы_ _ext __3 в каталог /__ mnt __/__ hard __\___ drive__)_ 27 | 28 | Команда **mount** , используемая без аргументов, выводит перечень смонтированных файловых систем (в том числе и виртуальных). 29 | 30 | Для отключения файловой системы используется команда **umount** , например: 31 | 32 | **umount** **/**** mnt ****/**** hard ****\_**** drive **** ** _(в качестве аргумента можно указывать имя устройства или точку монтирования)_ 33 | 34 | _\_\_\__ 35 | 36 | Для автоматического подключения файловых систем используется файл /etc/fstab, в котором на каждой строке указаны id или имя устройства, точка монтирования, файловая система и дополнительные опции, например: 37 | 38 | **/**** dev ****/**** sdb ****1** _(имя устройства)_ **/**** mnt ****/**** hard ****\_**** drive**_(точка подключения)_**ext ****3** _(файловая система)_ **defaults** _(опции по умолчанию)_ **0** _(выключение дампа)_ **2** _(порядок проверки)_ 39 | 40 | Часто используемые опции монтирования: 41 | 42 | - auto / noauto _(подключение при загрузке ОС);_ 43 | - exec / noexec _(разрешение выполнения двоичных файлов с устройства);_ 44 | - ro _(только для чтения);_ 45 | - rw _(чтение и запись);_ 46 | - user / nouser _(разрешение подключения всем пользователям)._ 47 | 48 | Наборопций **defaults** _:_ **rw,suid,dev,exec,auto,nouser,async** _._ 49 | 50 | Дамп (значения 1 и 0), говорит о включенном или выключенном резервном копировании устройства при помощи команды dump. 51 | 52 | Порядок проверки указывает последовательность проверки файловых систем (0 – не проверять, 1 – корневая файловая система, 2 – все остальные). 53 | 54 | После добавление записи в файл **/**** etc ****/**** fstab **указанное устройство можно монтировать при помощи команды** mount**, указывая только один аргумент – устройство или точку монтирования (так как все остальные опции уже указаны в /etc/fstab). 55 | 56 | Часто вместо указания тома по адресу подключения (/dev/sda1 и т.д.) используется указание на том по UUID. Адресация /dev/sda1 и т.д. зависит от того, на какой порт какого контроллера жестких дисков подключен носитель информации, соответственно при переподключении дисков на другие порты – все может слететь. UUID же уникален, узнать его можно при помощи команды **blkid** -------------------------------------------------------------------------------- /103_5.md: -------------------------------------------------------------------------------- 1 | **103.5** Управление процессами в Linux 2 | 3 | Студент должен уметь создавать, отслеживать и завершать процессы 4 | 5 | **Изучаем** : 6 | 7 | - запуск задач в активном и фоновом режимах; 8 | - настройку выполнения задачи после выхода из системы; 9 | - способы отслеживания и сортировки активных процессов; 10 | - завершение процессов. 11 | 12 | **Термины и утилиты: ** 13 | 14 | - & 15 | - bg 16 | - fg 17 | - jobs 18 | - kill 19 | - nohup 20 | - ps 21 | - top 22 | - free 23 | - uptime 24 | - pgrep 25 | - pkill 26 | - killall 27 | - screen 28 | 29 | Linux содержит в себе множество инструментов для управления запущенными процессами: от сортировки, отслеживания состояния и загрузки системы до перевода процессов в фоновый режим и обратно. 30 | 31 | Посмотреть запущенные процессы в текущей консоли можно при помощи команды **jobs**. Для вывода всех запущенных в данный момент процессов (независимо от консоли) используется команда ps с различным набором ключей, например: 32 | 33 | **Ps**** aux** _(вывести процессы всех пользователей);_ 34 | 35 | Можно вывести процессы в консоль, отображая иерархию из взаимосвязи командой **pstree**. 36 | 37 | Для отображения идентификаторов процессов по определенному критерию можно использовать команду **pgrep** , например: 38 | 39 | **pgrep** **-**** l **** - ****u**** root **** ** _(отобразить все процессы пользователя_ _root__)_ 40 | 41 | Чтобы запустить процесс в фоновом режиме необходимо указать ключ **&** , например: 42 | 43 | **Sleep** **999 & ** _(запустить задачу_ _sleep_ _999 в фоновом режиме);_ 44 | 45 | Для перевода процесса из фонового режима в активный используется команда **fg** , обратно – **bg**. В качестве аргумента команды следует указать номер процесса (_его можно увидеть на выводе команды_ _jobs_). 46 | 47 | Для того чтобы процесс продолжал выполняться после выхода пользователя из системы, его следует запускать командой **nohup** , например: 48 | 49 | **nohup** ** **** sleep **** 1000 & ** _(запустить процесс "__sleep_ _1000" в фоновом режиме, и выполнять его даже в случае выхода пользователя из системы);_ 50 | 51 | Для остановки процесса используется команда **kill** , например: 52 | 53 | **kill** **2625** _ (выключить процесс с_ _PID__=2625);_ 54 | 55 | **killall**** sleep **** ** _(выключить все процессы с именем_ _sleep_ _для текущего пользователя)_ **;** 56 | 57 | Для остановки процессов по указанному критерию можно использовать команду **pkill** , например: 58 | 59 | **pkill**** refox **** ** _(остановить процесс, в имени которого есть символы " __refox__");_ 60 | 61 | Для просмотра информации о работающих процессах в режиме реального времени используется диспетчер задача **top**. Используя его можно сортировать запущенные задачи по различным критериям и останавливать их _(клавиша_ _K__)_ мягко _(__sigterm__)_ и жестко _(__sigkill__)_. 62 | 63 | Для отображения информации о времени работы системы и среднем времени загрузки АЧ используется команда **uptime**. 64 | 65 | Для отображения информации о загрузке ОЗУ и раздела подкачки используется команда **free**. 66 | 67 | Кроме того, Linux поддерживает работу с несколькими «экранами» при помощи команды **screen**. Она позволяет, в числе всего прочего, сворачивать запущенные приложения в консоли, в рамках той же консоли, например: 68 | 69 | **screen** **-**** S ****yandex**** ping ****ya****. ****ru**** ** _(создать экран с именем_ _yandex_ _для команды_ _ping __ya__. __ru__ );_ 70 | 71 | **screen** **–**** ls **** ** _(показать свернутые экраны);_ 72 | 73 | **screen** **-**** r ****yandex**** ** _(развернуть экран с именем_ _yandex__)._ -------------------------------------------------------------------------------- /101_1.md: -------------------------------------------------------------------------------- 1 | ##### 101.1 Определение и настройка аппаратной части 2 | Студент должен разбираться в управлении основными комплектующими ПК. 3 | **Изучаем:** 4 | • получение информации об оборудовании; 5 | • управление устройствами; 6 | • понятия sysfs, udev, dbus, udevadm. 7 | 8 | **Термины и утилиты:** 9 | • /sys/ 10 | • /proc/ 11 | • /dev/ 12 | • modprobe 13 | • lsmod 14 | • lspci 15 | • lsusb 16 | • udevadm 17 | 18 | Аппаратная часть современных компьютерных устройств — это отдельный полноценный курс. В данном уроке поверхностно рассматриваются базовые манипуляции с комплектующими ПК из ОС Linux. 19 | 20 | При работе с устройствами Linux можно столкнуться со следующими понятиями: 21 | • **HAL** – демон, представляющий слой абстрагирования от конкретной АЧ, благодаря которому ОС может обращаться к устройствам через их абстрактные представления (конкретную инструкцию устройству будет передавать драйвер), на данный момент является устаревшим; 22 | • **Dbus** - шина, через которую процессы обмениваются информацией, в частности приложения получают через нее информацию об оборудовании из ядра; 23 | • **udev** - менеджер устройств, пришедший на смену HAL. 24 | 25 | _Преимущества udev:_ 26 | - работает на уровне пользователя (больше свободы действий); 27 | - событийно-управляемый (а не опрашивает ядро по расписанию как HAL); 28 | - удобные файлы конфигурации (а не xml как у HAL); 29 | - содержит в системе только файлы активных устройств (а не всех устройств как HAL); 30 | - содержит имена устройств неизменными (в HAL имя зависит от порядка подключения). 31 | 32 | В директории **/dev** находится информация об интерфейсах работы с драйверами ядра, например: 33 | **/dev/sda** - первый жесткий диск; 34 | **/dev/sr0** - CD-ROM; 35 | _Примечание: в каталоге /dev, как правило, отсутствует информация о сетевых картах и видеокартах, так как работа с ними немного сложнее чем простые операции чтения-записи._ 36 | В /dev лежат специальные файлы устройств, которые можно считать указателями на драйверы. При помощи этих файлов происходит обращение к устройствам. 37 | 38 | База данных подключенных устройств хранится в директории **/sys**, где они расположены по каталогам и именуются автоматически согласно идентификаторам, например: 39 | **/sys/block** - перечень блочных устройств; 40 | **/sys/bus** - перечень шин; 41 | Если /dev содержит файлы устройств для работы с приложениями, то /sys содержит информацию об этих устройствах. 42 | _**Метафора: /sys это упаковка, а /dev – содержимое.**_ 43 | 44 | Информация о состоянии ОС и всех запущенных процессах находится в директории **/proc**, например: 45 | **/proc/cpuinfo** - информация о процессоре; 46 | **/proc/mounts** - подключенные файловые системы; 47 | Самая интересная директория - **/proc/sys**, так как она не только содержит информацию о системе, но и позволяет ее редактировать «на лету». 48 | 49 | --- 50 | 51 | Для работы с модулями ядра, например, с драйверами устройств, предназначены следующие команды: 52 | • **lsmod** – информация о модулях ядра; 53 | • **lspci** – информация об устройствах PCI; 54 | • **lspcmciа** – информация об устройствах PCMCIA; 55 | • **lsusb** – информация о шине USB; 56 | • **rmmod** – удалить модуль; 57 | • **insmod** – установить модуль; 58 | • **modprobe** – деликатно выполнить действия с модулем. 59 | 60 | Отдельного внимания заслуживает инструменты работы с **udev – udevadm**, который может запускаться со следующими опциями: 61 | • **info** – получение информации из БД; 62 | • **trigger** – запросить события для устройства; 63 | • **settle** – дождаться завершения обработки; 64 | • **control** – управление демоном; 65 | • **monitor** – следить за событиями; 66 | • **test** – симулировать запуск события. 67 | _Примечание: мы не рассматриваем на данном этапе такие продвинутые действия, как создания собственных правил обработки событий оборудования, тем не менее вы сам можете их изучить._ 68 | -------------------------------------------------------------------------------- /103_8.md: -------------------------------------------------------------------------------- 1 | **103.8 Текстовый редактор** **Vi****.** 2 | 3 | Студент должен уметь редактировать файлы в vi, и ориентироваться в нем. 4 | 5 | **Изучаем** : 6 | 7 | - навигацию по документу с использованием vi; 8 | - использование основных режимов работы vi; 9 | - вставку, редактирование, удаление, копирование и поиск текста. 10 | 11 | **Термины и утилиты: ** 12 | 13 | - vi 14 | - /, ? 15 | - h,j,k,l 16 | - i, o, a 17 | - c, d, p, y, dd, yy 18 | - ZZ, :w!, :q!, :e! 19 | 20 | Так как все основные настройки в Linux выполняются редактированием файлов, все журналы, устройства, демоны и т.д. тоже по сути являются файлами, то текстовый редактор является одним из важнейших инструментов управления ОС. Существует множество редакторов с различными возможностями, здесь же будет рассмотрен редактор Vi. 21 | 22 | **Vi** имеет **модальный** интерфейс и одни и те же клавиши в разных режимах выполняют разные действия. По умолчанию работа начинается в **командном режиме**. 23 | 24 | Для перемещения по документу используются следующие символы: 25 | 26 | - **h** _или_ **←** _(перемещение на символ влево);_ 27 | - **j** _или_ **↓** _(перемещение на символ вниз);_ 28 | - **k** _или_ **↑** _(перемещение на символ вверх);_ 29 | - **l** _или_ **→** _(перемещение на символ вправо);_ 30 | - **b**** ** _(перемещение в начало слова);_ 31 | - **e**** ** _(перемещение в конец слова);_ 32 | - **( ** _(перемещение в начало предложения);_ 33 | - **) ** _(перемещение в конец предложения);_ 34 | - **{ ** _(перемещение в начало абзаца);_ 35 | - **} ** _(перемещение в конец абзаца);_ 36 | - **^ ** _(перемещение в начало строки);_ 37 | - **$ ** _(перемещение в конец строки);_ 38 | - **1**** G **** ** _(перемещение в начало файла);_ 39 | - **G**** ** _(перемещение в конец файла)._ 40 | 41 | Для перехода в режим вставки можно воспользоваться следующими символами: 42 | 43 | - **I**** ** _(режим вставки перед текущим символом);_ 44 | - **a**** ** _(режим вставки после текущего символа);_ 45 | - **o**** ** _(вставить новую строчку);_ 46 | - **s ** _(стереть символ и вставить)._ 47 | 48 | Для возврата в командный режим можно использовать клавишу **Esc** или сочетание **Ctrl**** + ****C** 49 | 50 | Находясь в режиме редактирования можно использовать буфер обмена: 51 | 52 | - **y** _ (скопировать)__;_ 53 | - **d** _ ( __вырезать__ )__;_ 54 | - **c** _ ( __изменить__ )__;_ 55 | - **p** _ (вставить)._ 56 | 57 | Также возможны комбинации с символами перемещения по тексту и обозначениями **d** (строка), **w** (слово) и **l** (символ); например 58 | 59 | **yw** _ (скопировать слово);_ 60 | 61 | **dd** _ (вырезать строку);_ 62 | 63 | **cl** _ (изменить символ);_ 64 | 65 | **d**** $**_ (удалить с текущего места до конца строки);_ 66 | 67 | **y**** }**_ (скопировать с текущего места до конца абазца);_ 68 | 69 | Для поиска информации доступны символы: 70 | 71 | - **/ ** _ (искать ниже по тексту набор символов, указанных после «/»);_ 72 | - **? ** _ (искать выше по тексту набор символов, указанных после «?»);_ 73 | - **n**** ** _ (показать следующий результат поиска);_ 74 | - **N**** ** _ (показать предыдущий результат поиска)._ 75 | 76 | Для завершения работы с файлом: 77 | 78 | - **:e!** _ (отменить все изменения, где «!» - игнорировать все предупреждения);_ 79 | - **:**** w ****!** _ (записать изменения);_ 80 | - **:q ** _(выйти из файла);_ 81 | 82 | Как всегда, возможны комбинации, например: 83 | 84 | **:**** wq ****! newfile.txt ** _(сохранить под именем_ _newfile __.__ txt_ _и выйти);_ 85 | 86 | Также доступны сокращенные команды: 87 | 88 | - **ZZ ** _(сохранить и выйти)__;_ 89 | - **ZQ**** ** _(не сохранять и выйти);_ -------------------------------------------------------------------------------- /104_2.md: -------------------------------------------------------------------------------- 1 | **104.2 Проверка целостности файловых систем.** 2 | 3 | Студент должен умет управлять стандартной файловой системой, и понимать принципы работы с журналируемой файловой системой. 4 | 5 | **Изучаем** : 6 | 7 | - проверку целостности файловой системы; 8 | - отслеживание айнодов и свободного пространства; 9 | - исправление простых проблем с файловой системой. 10 | 11 | **Термины и утилиты: ** 12 | 13 | - du 14 | - df 15 | - fsck 16 | - e2fsck 17 | - mke2fs 18 | - debugfs 19 | - dumpe2fs 20 | - tune2fs 21 | - инструменты XFS 22 | 23 | Linuх использует умеет работать с различными файловыми системами. Для поддержки всех возможностей отдельных файловых систем необходимо устанавливать соответствующие наборы ПО, содержащие дополнительные инструменты. 24 | 25 | Утилита **df** (diskfree) показывает свободное место в файловых системах, например: 26 | 27 | **df** _ (показывает в блоках килобайт)_ 28 | 29 | **df –h** _(показывает в мегабайтах и т.д.)_ 30 | 31 | **d**** f –i**_(показывает в_ _inode__)_ 32 | 33 | Inode (индексный дескриптор) – идентификатор файла, содержащий о нем всю необходимую информацию. 34 | 35 | Утилита **du** (diskusage) показывает занятое место в файловых системах, например: 36 | 37 | **d**** u**_(показывает размер текущей директории в блоках килобайт)_ 38 | 39 | **d**** u –h**_(показывает в мегабайтах и т.д., включая вложенные папки)_ 40 | 41 | **d**** u –h /home/\***_(показывает размер директории / __home__ , отображая размер всех подкаталогов)_ 42 | 43 | **d**** u –h –summarize /home/\*** _(показывает размер директории / __home__ , включая все подкаталоги)_ 44 | 45 | Утилита **fsck** предназначена для проверки файловых систем. Для работы с разными файловыми системами утилита запускает соответствующие им инструменты проверки. Проверку осуществляют для демонтированных файловых систем, неактивных в данный момент, например: 46 | 47 | **f**** sck /dev/sdb1** _(будет вызван инструмент проверки файловой системы, например для_ _ext_ _это будет инструмент_ _e __2__ fsck__);_ 48 | 49 | **fsck** **–**** t ****ext**** 4 / ****dev**** / ****sdb**** 1 **_(можно сразу указать формат файловой системы, если он известен)_ 50 | 51 | Утилита **mkfs** предназначена для создания файловых систем. Для работы с разными файловыми системами утилита запускает соответствующие им инструменты, например: 52 | 53 | **mkfs** **–**** t ****xfs** **–**** f **** / ****dev**** / ****sdb**** 1 **_(создать файловую систему_ _xfs_ _на устройстве / __dev__ / __sdb__ 1);_ 54 | 55 | **mke2fs –t ext2 /dev/sdb1** _(создать файловую систему_ _ext __2 на устройстве /__ dev __/__ sdb__1);_ 56 | 57 | Для работы с файловой системой **XFS** (сейчас centos7 использует ее в качестве файловой системы по умолчанию), к примеру, используются следующие инструменты: 58 | 59 | - **xfs**** \_ ****check** _для проверки;_ 60 | - **xfs**** \_ ****repair** _для восстановления;_ 61 | - **xfs\_info** _для получения информации_ **;** 62 | - **xfs\_metadump** _для создания дампа._ 63 | 64 | Для отладки классической файловой системы используется утилита **debugfs**. Этот инструмент в интерактивном режиме позволяет работать с айнодами файловой системы, например, в нем доступны следующие инструменты: 65 | 66 | - **ls** _– просмотреть данные в системе;_ 67 | - **lsdel** _– показать удаленные файлы;_ 68 | - **undel** _– отменить удаление._ 69 | 70 | Для вывода детальной информации о файловой системе (суперблоки, цилиндры, размер блока и т.д.) используется утилита **dumpfs**. Для работы с разными файловыми системами утилита запускает соответствующие им инструменты проверки, например: 71 | 72 | **dumpe2fs /dev/sdb1 >** **output****. ****txt** ** ** _(вывести информацию о файловой системе_ _ext_ _в файл_ _output __.__ txt__)_ 73 | 74 | Утилита **tunefs** предназначена для настройки изменяемых параметров файловых систем. Для работы с разными файловыми системами утилита запускает соответствующие им инструменты настройки. Настройку осуществляют для демонтированных файловых систем, неактивных в данный момент, например: 75 | 76 | **tune**** 2 ****fs** **–**** O ****has**** \_ ****journal** **/**** dev ****/**** sdb ****1** _(включить журналирование на устройстве / __dev__ / __sdb__ 1)_ 77 | 78 | Журналирование: опция введения журнала изменений для возможности их отката. -------------------------------------------------------------------------------- /103_2.md: -------------------------------------------------------------------------------- 1 | **103.2** Управление текстовым потоком 2 | 3 | Студент должен уметь управлять фильтровать текстовый поток 4 | 5 | **Изучаем** : 6 | 7 | - применение текстовых фильтров с использованием встроенных команд UNIX 8 | 9 | **Термины и утилиты: ** 10 | 11 | - cat 12 | - cut 13 | - expand 14 | - fmt 15 | - head 16 | - join 17 | - less 18 | - nl 19 | - od 20 | - paste 21 | - pr 22 | - sed 23 | - sort 24 | - split 25 | - tail 26 | - tr 27 | - unexpand 28 | - uniq 29 | - wc 30 | 31 | Множество файлов в Linux неудобны для восприятия без предварительного форматирования, кроме того процесс обработки текстовой информации часто требует ее форматирования, обрезания, сортировки и т.д. Linux предлагает широкий набор инструментов редактирования текстового вывода, при этом следует заметить что указанные инструменты не затрагивают исходный файл (или текстовый поток), а форматируют его, выдавая полученный результат в консоль или другой файл. 32 | 33 | Простой вывод текста (без корректировки содержимого): 34 | 35 | Для вывода содержимого файла или объединения нескольких файлов на выводе используется команда **cat** , например: 36 | 37 | **с**** at **** 1. ****txt** **2.**** txt **** > 3. ****txt**** ** _(передать содержимое двух файлов в третий);_ 38 | 39 | Команда **join** объединяет строки нескольких файлов по общему полю и отправляет их на стандартный вывод. 40 | 41 | Команда **less** загружает файл постепенно и также отправляет его на вывод (удобно для больших файлов). 42 | 43 | Команда **nl** нумерует строки. 44 | 45 | Команда **pr** показывает, как содержимое файла будет выглядеть при выводе его на печать. 46 | 47 | Команда **paste** вставляет строки из одного файла в другой и отправляет результат на стандартный вывод. 48 | 49 | Команда **head** показывает первые строки файла, а **tail** – последние. 50 | 51 | Например: 52 | 53 | **head** **–**** n **** 2 / ****var**** / ****log**** / ****syslog**** ** _(вывести первые две строчки файла);_ 54 | 55 | **tail** **–**** f **** / ****var**** / ****log**** / ****syslog**** ** _(показывать последние строки файла, отображая содержимое в реальный момент времени);_ 56 | 57 | Команда **sort** может отсортировать содержимое файла по какому-нибудь признаку, например: 58 | 59 | **sort** **1.**** txt **** ** _(отсортировать строки по алфавиту);_ 60 | 61 | Команда **wc** позволяет посчитать количество символов и т.д. в текстовом потоке, например: 62 | 63 | **wc** **1.**** txt** _(посчитать количество строк, символов, слов);_ 64 | 65 | 66 | 67 | Вывод форматированного текста (с корректировкой содержимого): 68 | 69 | Команда **cut** используется для обрезания содержимого файлов на выводе, например: 70 | 71 | **с**** ut **** – ****c** **2,3,4,5,10 1.**** txt **** ** _(показывать только символы на указанных позициях: 2,3,4,5,10);_ 72 | 73 | Команда **expand** превращает символы табуляции в несколько пробелов, а **unexpand** наоборот – пробелы в символы табуляции. 74 | 75 | Команда **fmt** предназначена для форматирования текста различными способами, например: 76 | 77 | **fmt** **1.**** txt **** ** _(вывести содержимое файла в одну строку);_ 78 | 79 | **fmt** **–**** w **** 10 1. ****txt**** ** _(вывести содержимое файла в строки не больше 10 символов каждая);_ 80 | 81 | Команда **od** предназначена для конвертации текста в другой формат, например: 82 | 83 | **od** **–**** c **** 1. ****txt**** ** _(отобразить в кодировке_ _ASCI__);_ 84 | 85 | Команда **tr** предназначена для замены и удаления символов в текстовом потоке, например: 86 | 87 | **echo** **"**** HELLO ****" |** **tr** **–**** t ****L**** l **** ** _(заменить " __L__" на " __l__" в полученном на вводе тексте);_ 88 | 89 | Команда **split** может разбить файла по каким-либо критериям, например: 90 | 91 | **split** **–**** l **** 2 1. ****txt** _(разбить содержимое файла по две строчки);_ 92 | 93 | Команда **uniq** предназначена для поиска повторяющихся строк, например: 94 | 95 | **uniq** **–**** u **** 1. ****txt** _(показать только уникальные строки);_ 96 | 97 | **Sed** – отдельный мощный инструмент, понимающий групповые символы, шаблоны и т.д. Будет рассмотрен немного подробнее в дальнейших урока. Работает, например, так: 98 | 99 | **sed –e 's/socks/people/' 1.txt ** _( __заменить__ в __файле__ слово_ _"socks"_ _на_ _"people");_ -------------------------------------------------------------------------------- /103_3.md: -------------------------------------------------------------------------------- 1 | **103.3** Основные операции с файлами 2 | 3 | Студент должен уметь управлять файлами и каталогами при помощи основных команд Linux 4 | 5 | **Изучаем** : 6 | 7 | - копирование, перенос и удаление файлов и каталогов; 8 | - копирование нескольких файлов и каталогов, в том числе рекурсивно; 9 | - удаление файлов и каталогов, в том числе рекурсивно; 10 | - групповые символы (wildcard); 11 | - отбор файлов по типу, размеру, датам и т.д.; 12 | - работу с tar, cpio и dd. 13 | 14 | **Термины и утилиты: ** 15 | 16 | - cp 17 | - find 18 | - mkdir 19 | - mv 20 | - ls 21 | - rm 22 | - rmdir 23 | - touch 24 | - tar 25 | - cpio 26 | - dd 27 | - file 28 | - gzip 29 | - gunzip 30 | - bzip2 31 | - xz 32 | - групповые символы 33 | 34 | Частой задачей администратора в Linux является работа с файлами и каталогами: создание, копирование, перемещение и удаление. Использование групповых символов вместе с инструментами консоли позволяют осуществлять эти действия с максимальной эффективностью. 35 | 36 | Для создания директорий используется команда **mkdir**** имя\_каталога **, для удаления пустого каталога -** rmdir ****имя\_каталога**. Просмотр содержимого текущей директории – **ls**. Например: 37 | 38 | **ls** **–**** l**_ (просмотреть содержимое текущего каталога);_ 39 | 40 | **ls**** fol ****\*** _ (посмотреть содержимого каталогов, имена которых начинаются с " __fol__");_ 41 | 42 | Для копирования используется команда **cp** **что\_копировать куда\_копировать** , например: 43 | 44 | **cp** **–**** R ****Folder**** NewFolder**_ (скопировать директорию " __Folder__" со всем содержимым в текущий каталог с именем новой директории " __NewFolder__");_ 45 | 46 | Для переноса используется команда **mv** **что\_переносить куда\_переносить** , например: 47 | 48 | **mv**** file ****.**** txt ****folder**** 1/** _(перенести " __file__. __txt__" в каталог " __folder__ 1" в текущей директории);_ 49 | 50 | Для удаления используется команда **rm**** что\_удалить**, например: 51 | 52 | **rm** **–**** rf ****folder**** 1 ** _(удалить каталог_ _folder__1 вместе с содержимым);_ 53 | 54 | Для создания пустого файла, или обновления метки доступа существующего, используется команда **touch** **имя\_файла,** а для получения информации о файле – команда **file**** имя\_файла**. 55 | 56 | Групповые символы, использующиеся при работе с текстовыми данными: 57 | 58 | - _\* – любое количество любых символов;_ 59 | - **? ** _ – любой символ;_ 60 | - **! ** _– не (любой символ кроме указанных);_ 61 | - **[****ac****] ** _– __a_ _или_ _c__ ;_ 62 | - **[****a ****-**** c****]** _ –_ _a __,_ _b__ ,_ _c__._ 63 | 64 | Например: 65 | 66 | **ls** **\* ** _(вывести содержимое всех каталогов);_ 67 | 68 | **ls** **?**** at ****.**** txt **** ** _(вывести содержимое файла с именем: любая первая буква, остальная часть имени " __at__. __txt__");_ 69 | 70 | **ls** **\***** at ****.**** txt **** ** _(вывести содержимое файла с именем, оканчивающимся на " __at__. __txt__");_ 71 | 72 | **ls** **![****ab****]\* ** _(вывести содержимое файла или каталога с именем, начинающимся с любых символов, кроме " __a__" и " __b__");_ 73 | 74 | Для поиска информации используется команда **find** , например: 75 | 76 | **find** **. –**** name ****"\ *****A**** \*" ** _(искать в текущей директории объекты, имеющие в имени символ " __A__");_ 77 | 78 | **find** **/**** etc **** – ****size** ** -5**** M **** ** _(искать в директории "/ __etc__" объекты размером менее 5 Мб);_ 79 | 80 | **find** ** . –**** type ****l** _(искать в текущей директории ссылки);_ 81 | 82 | В среде Linux существует несколько распространённых архиваторов, использующихся для распаковки и упаковки объектов в единый файл: 83 | 84 | - **с**** pio** - двоичный архиватор, копирующий информацию в архив и обратно; 85 | - **dd** - копирование по блокам; 86 | - **gzip** и **gunzip** - утилита сжатия и восстановления файлов (контейнер одного файла); 87 | - bzip2 и bunzip2 - утилита сжатия и восстановления файлов (контейнер одного файла); 88 | - xz и unxz - утилита сжатия и восстановления файлов (контейнер одного файла); 89 | - tar - архиватор (работает с набором файлов и каталогов). 90 | 91 | Например: 92 | 93 | **find** **. –**** name ****"\*. ****txt****" | **** cpio **** – ****o** **> ../**** test ****.**** cpio** _(найти в текущей папке все файлы с расширением ". __txt__" и упаковать их в архив_ _test __.__ cpio__, расположив его на уровень выше текущей_ _директории);_ 94 | 95 | **cpio** **-**** id **** < **** test ****.**** cpio**_ (распаковать в текущий каталог архив " __test__. __cpio__", создавая при необходимости структуру директорий);_ 96 | 97 | **dd**** if ****=/**** dev ****/**** sdb ****of**** = ****drive****. ****img**** ** _(скопировать носитель / __dev__ / __sdb_ _в образ_ _drive__. __img__ , располагающийся в текущей директории);_ 98 | 99 | **gzip**** drive ****.**** img **** ** _(сжать образ " __drive__. __img__" до " __drive__. __img__. __gz__", удалив исходный файл);_ 100 | 101 | **bunzip**** 2 **** drive ****.**** img ****.**** bz ****2 ** _(распаковать архив " __drive__. __img__. __bz__ 2" в текущий каталог);_ 102 | 103 | **unxz**** drive ****.**** img ****.**** xz **** ** _(распаковать архив " __drive__. __img__. __xz__" в текущий каталог);_ 104 | 105 | **tar**** cvf ****arch****. ****tar** ** **** folder** _(упаковать каталог " __folder__" в архив " __arch__. __tar__")._ 106 | 107 | **tar** **–**** xvf ****archive****. ****tar**** ** _(распаковать архив " __archive__. __tar__")._ -------------------------------------------------------------------------------- /101_2.md: -------------------------------------------------------------------------------- 1 | **101.2** Загрузка системы 2 | 3 | Студент должен разбираться в процессе загрузки системы. 4 | 5 | **Изучаем** : 6 | 7 | - команды и опции загрузчика; 8 | - настройку последовательности загрузки в BIOS; 9 | - включение и выключение ПК; 10 | - стили инициализации системы; 11 | - журналы загрузки системы. 12 | 13 | **Термины и утилиты:**** ** 14 | 15 | - dmesg 16 | - BIOS 17 | - bootloader 18 | - kernel 19 | - initramfs 20 | - init 21 | - SysVinit 22 | - systemd 23 | 24 | Процесс загрузки любой операционной системы, представляющий собой последовательную работу ряда программных и аппаратных компонентов ПК, будет рассмотрен в этом уроке. 25 | 26 | Вкратце процесс загрузки выглядит так: 27 | 28 | - при старте ПК процессор переходит на адрес BIOS (UEFI) и загружает его; 29 | 30 | - BIOS (или современный UEFI) проводит необходимые проверки, выбирает согласно своим настройкам носитель информации; 31 | 32 | - на носителе находит MBR (или GPT для UEFI) в которой находится загрузчик; 33 | 34 | - дальше по обстоятельствам: загрузчик может загружать ОС, может передать управление следующему загрузчику по цепочке; 35 | 36 | - в любом случае загрузчик знает где лежит ядро ОС, грузит его и InitialRamDisk (там конфигурационные файлы и модули необходимые для загрузки ядра) в оперативную память; 37 | 38 | - загруженное ядро берет дальнейший процесс запуска на себя (инициализация устройств, конфигурирование процессора, памяти и т.д.) 39 | 40 | - после всех инициализационных процедур ядро запускает процедуры инициализации всех необходимых служб ОС. 41 | 42 | ![](data:image/*;base64,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) 43 | 44 | _Рисунок 1. Порядок загрузки ОС_ 45 | 46 | Существуют различные загрузчик ОС, например Lilo и Grub для Linux, NTLDR для Windows и т.д. Все они, как правило, имеют файл конфигурации самого загрузчика (_формат диалога загрузки, таймауты для выбора варианта загрузки, поле для ввода дополнительных опций и т.д_.) и секцию доступных для загрузки образов ОС. 47 | 48 | Подробно стили инициализации и загрузчики рассматриваются в дальнейших уроках. Для успешного освоения данной темы необходимо знать, что в момент загрузки можно нажать выделенные клавиши (_как, правило, отличающиеся у разных загрузчиков_), и выбрать ОС для запуска или указать дополнительные опции загрузки. 49 | 50 | При работе с загрузчиком можно увидеть следующие понятия: 51 | 52 | - **uuid** – идентификатор носителя информации с установленной ОС; 53 | - **kernel** – путь к ядру ОС; 54 | - **initrd** – путь к минимальному образу ядра для загрузки в оперативную память; 55 | - **quiet** – не показывать процесс загрузки; 56 | - **splash** – показать заставку при загрузке. 57 | 58 | Вся информация о загрузке хранится в журнале **/**** var ****/**** log ****/**** dmesg**_(журнал событий ядра)_, при этом данные о последней загрузке можно получить, выполнив команду**dmesg ****.** Также события загрузки могут располагаться в журнале **/**** var ****/**** log ****/**** boot ****.**** log **. В современных ОС события загрузки можно увидеть при помощи утилиты** journalctl **, например командой** journalctl -b0 SYSLOG\_PID=1** 59 | 60 | Процесс инициализации системы будет рассмотрен подробно в дальнейших уроках, на данном этапе нужно знать о существование трех стилей инициализации: 61 | 62 | - **SysV** – родительский процесс инициализации системы на одном из заданных уровней запуска (runlevel); 63 | - **systemd** – родительский процесс инициализацию системы в ускоренном режиме, за счёт параллельного запуска задач; 64 | - **upstart** – родительский процесс инициализации системы на основе отслеживания событий. -------------------------------------------------------------------------------- /102_2.md: -------------------------------------------------------------------------------- 1 | **102.2** Установка загрузчика 2 | 3 | Студент должен уметь выбирать, устанавливать и настраивать загрузчик ОС. 4 | 5 | **Изучаем** : 6 | 7 | - доступные загрузочные разделы; 8 | - установку и настройку GRUB; 9 | - настройку GRUB 2; 10 | - взаимодействие с загрузчиком. 11 | 12 | **Термины и утилиты:**** ** 13 | 14 | - menu.lst, grub.cfg и grub.conf 15 | - grub-install 16 | - grub-mkconfig 17 | - MBR 18 | 19 | При включении ПК инициализируется ПО материнской платы, которое после всех проверок передает управление первым секторам основного жесткого диска. В этих секторах находятся файлы загрузчика – специального ПО, позволяющего загрузить ядро ОС в оперативную память. 20 | 21 | При первичной инициализации жесткого диска происходит выбор формата таблицы разделов: MBR (с ним работает BIOS) или более современный GUID (с ним работает UEFI). 22 | 23 | ![](data:image/*;base64,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) 24 | 25 | Рисунок 1. MBR и GPT 26 | 27 | Существует три самых популярных загрузчика Linux систем: LiLo, Grub и Grub2. Большинство современных дистрибутивов Linux используют Grub2. 28 | 29 | Для настройки загрузчика Lilo используется команда **liloconfig**. Текущую конфигурацию можно увидеть в файле **/**** etc ****/**** lilo ****.**** conf**. Конфигурационный файл прост для понимания, в нем указаны дисковые устройства, образы ядер, выводимый на экран при загрузке текст и т.д. 30 | 31 | Настройки Grub хранятся в файле / **boot**** / ****grub**** / ****grub****. ****conf** или / **boot**** / ****grub**** / ****menu****. ****lst****.** В нем, помимо основных опций загрузки, указаны все доступные для загрузки ОС и порядок обращения к ним. 32 | 33 | Grub2 является отдельным проектом, полностью созданным с ноля. Для его установки можно воспользоваться командой **grub**** - ****install** , например: 34 | 35 | **grub**** - ****install** **/**** dev ****/**** sda**_ (установить загрузчик на устройство / __dev__ / __sda__ );_ 36 | 37 | Основным файлом конфигурации выбора ОС является файл **/**** boot ****/**** grub ****/**** grub ****.**** cfg **, генерируемый автоматически. Общие настройки загрузчика можно увидеть в файле** /etc/default/grub **. Скрипты, используемые загрузчиком находятся в директории** /etc/grub.d**. 38 | 39 | Изменения, внесенные в настройки загрузчика можно загрузить в файл конфигурации командой **update**** - ****grub****.**Для автоматического создания файла конфигурации _(/ __boot__ / __grub__ / __grub__. __cfg__ )_ с типовым меню можно воспользоваться утилитой**grub ****-**** mkconfig ****.** -------------------------------------------------------------------------------- /102_1.md: -------------------------------------------------------------------------------- 1 | **102.1** Разбиение жесткого диска 2 | 3 | Студент должен уметь разбивать жесткий диск на разделы согласно требованиям Linux. 4 | 5 | **Изучаем** : 6 | 7 | - расположение файловых систем на разных разделах; 8 | - создание разделов на диске; 9 | - требования к разделу /boot; 10 | - основные возможности LVM. 11 | 12 | **Термины и утилиты:**** ** 13 | 14 | - / (корень файловой системы) 15 | - /var 16 | - /home 17 | - /boot 18 | - раздел подкачки 19 | - точки монтирования 20 | - разделы 21 | 22 | При включении ПК инициализируется ПО материнской платы, которое после всех проверок передает управление первым секторам основного жесткого диска. В этих секторах находятся файлы загрузчика – специального ПО, позволяющего загрузить ядро ОС в оперативную память. 23 | 24 | Традиционно в Linux существует единственный корень всей файловой системы (верхняя точка дерева каталогов, обозначаемая символом "/"), а все дополнительные разделы с различных жестких дисков (в том числе сетевые папки, флешки и т.д.) подключаются в ее пустые (можно монтировать и в каталоги с данными «поверх» них) каталоги (точки монтирования). 25 | 26 | В случае наличия большого количества носителей (или исходя из требований системы) традиционно можно выделить отдельные разделы жесткого диска под следующие каталоги (в современном мире виртуалок отдельно монтируются директории с данными, а все остальное лежит на едином виртуальном диске): 27 | 28 | - **/ ** _– корневая файловая система, самый большой раздел;_ 29 | - **/boot** _ – загрузочный раздел;_ 30 | - **/home** _ – домашние папки;_ 31 | - **/root** _ – домашняя папка суперпользователя;_ 32 | - **/etc ** _– конфигурация системы и ее компонентов;_ 33 | - **/opt/** _ – папка для ПО от третьих поставщиков;_ 34 | - **/var ** _– часто изменяемые данные;_ 35 | - **/usr ** _– все установленные пакеты программ, документация, исходный код ядра;_ 36 | - **/tmp** _ – временные файлы;_ 37 | - ** **** s ****wap** _ – раздел подкачки, никуда не монтируется._ 38 | 39 | Отдельно внимание уделяется каталогу /boot, часто монтируемому как отдельный раздел жесткого диска. На нем находятся следующие файлы: 40 | 41 | - **abi**** -..** функции и библиотеки, через которые к ядру обращаются приложения; 42 | - **config**** -..** файл параметров, при которых создано текущее ядро; 43 | - **initrd****. ****img** -… образ стартовой корневой системы, загружающийся в ОЗУ; 44 | - **memtest**** … ** файлы ПО проверки ОЗУ; 45 | - **system****. ****map****.. ** карта аппаратных адресов системы; 46 | - **vmlinuz ** **..**** ** образ ядра системы. 47 | 48 | На каждом жестком диске можно создать не более четырех разделов. Если вдруг потребуется больше разделов, то вместо основного раздела создается расширенный, который в свою очередь может содержать не более четырех логических разделов. 49 | 50 | Жесткие диски именуются по порядку подключения: **sda**** , **** sdb ****,** **sdc** и т.д. 51 | 52 | Разделы на каждом жестком диске нумеруются по порядку: **sda**** 1, **** sda ****2** и т.д. При этом первые четыре цифры зарезервированы под основные и расширенные разделы, поэтому нумерация логических разделов начинается с пяти. 53 | 54 | ![](data:image/*;base64,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) 55 | 56 | Рисунок 1. Разделы жесткого диска 57 | 58 | Для создания, изменения, удаления и прочих действий с разделами используется утилита **fdisk** , которая в интерактивном режиме позволяет управлять разбиением жесткого диска _(будет подробно изучена в дальнейших уроках)_. 59 | 60 | Для создания файловой системы на разделах используется утилита **mkfs** _(будет подробно изучена в дальнейших уроках)_. 61 | 62 | Подключать созданные разделы можно как вручную при помощи команды **mount**** имя\_раздела пустой\_каталог **, так и автоматически с использованием файла настроек** / ****etc**** / ****fstab** _(действия будут подробно изучены в дальнейших уроках)._ 63 | 64 | Раздел подкачки ( **swap** ) создается на жестком диске для временного хранения на нем данных, для которых не хватает места в оперативной памяти. Для форматирования раздела как раздела подкачки используется команда **mkswap** _(действия будут подробно изучены в дальнейших уроках)_. 65 | 66 | В современных дистрибутивах Linux вместо классических разделов зачастую используются логические тома (раздел – часть диска, а том может располагаться на нескольких дисках одновременно), как более гибкий и надежный способ разбиения дискового пространства. Для этой цели используется LVM – менеджер логических томов. 67 | 68 | При работе с LVM используются следующие понятия: 69 | 70 | - физический носитель – жесткий диск (/dev/sda); 71 | - физический том (PV) – носитель с некой системной инфой, которую понимает LVM; 72 | - физическое пространство (PE – physical extent) – блоки дискового пространства; 73 | - группа томов (VG) – набор PE; 74 | - логический том – результирующее разбиение VG; 75 | 76 | 77 | 78 | ![](data:image/*;base64,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) 79 | 80 | Рисунок 2. LVM 81 | 82 | Для управления LVM доступен отдельный набор инструментов, например: 83 | 84 | **p**** vdisplay**_ (отобразить физические тома);_ 85 | 86 | **pvcreate** **/**** dev ****/**** sdb ****2** _ (создать физический том / __dev__ / __sdb__ 2);_ 87 | 88 | **vgcreate**** vg ****5 /**** dev ****/**** sdb ****1 /**** dev ****/**** sdb ****2** _ (создать группу томов_ _vg__5 из двух физических томов);_ 89 | 90 | **lvcreate** **-**** n ****lv**** 2 - ****L** **30**** G ****vg**** 1**_ (создать в группе_ _vg __1 логический том_ _lv__ 2 размером 30 Гб);_ 91 | 92 | **lvresize** **-**** L **** 40 ****G**** vg ****1/**** lv ****2** _ (изменить размер тома_ _lv __2 в группе_ _vg__ 1 до 40 Гб)._ -------------------------------------------------------------------------------- /101_3.md: -------------------------------------------------------------------------------- 1 | **101.3** Инициализация системы 2 | 3 | Студент должен уметь управлять уровнями выполнения SysV (runlevels) или целями загрузки systemd (boottarget) **.** Также в теме рассматриваются переключение в однопользовательский режим, выключение и перезагрузка системы, предупреждение пользователей, настройки уровня запуска ОС по умолчанию. Также нужно быть знакомыми с инициализацией в стиле upstart. 4 | 5 | **Изучаем** : 6 | 7 | - установка варианта загрузки по умолчанию; 8 | - переключение между режимами работы; 9 | - включение и выключение ПК; 10 | - уведомление пользователей системы; 11 | - корректное завершение процессов. 12 | 13 | **Термины и утилиты:**** ** 14 | 15 | - /etc/inittab 16 | - shutdown 17 | - init 18 | - /etc/init.d/ 19 | - telinit 20 | - systemd 21 | - systemctl 22 | - /etc/systemd/ 23 | - /usr/lib/systemd/ 24 | - upstart 25 | - inictl 26 | - wall 27 | 28 | Инициализация системы это процесс запуска скриптов, подготавливающих ОС к работе. Существует несколько различных стилей инициализации системы, использующиеся в разных семействах и даже в разных релизах ОС. 29 | 30 | Классическим методом инициализации ОС является инициализация в стиле **SysV** (в современных OCLinux практически не используется). Ключевым демоном является **init** (/sbin/init), являющийся родительским процессом, запускающим все остальные. Посмотреть дерево процессов и увидеть родительский можно командой pstree (для в centos нужно установить пакет psmisc) 31 | 32 | Инициализация в стиле **SysV** оперирует с понятием уровня выполнения ( **runlevel** ), представляющего собой следующие режимы загрузки ОС: 33 | 34 | **0** _– выключение;_ 35 | 36 | **1** _– однопользовательский режим;_ 37 | 38 | **2** _–_ _Debian __/__ Ubuntu_ _по умолчанию ( __GUI_ _или_ _CUI__ );_ 39 | 40 | **3** _–_ _RedHat __/__ Suse_ _по умолчанию (режим_ _CUI__);_ 41 | 42 | **4** _– WildCard (программируемый режим);_ 43 | 44 | **5** _–_ _RedHat __/__ Suse_ _по умолчанию (режим_ _GUI__);_ 45 | 46 | **6** _– перезагрузка._ 47 | 48 | Настройки загрузки по умолчанию указываются в файле **/**** etc ****/**** inittab**(конфигурационный файл инициализации системы), например: 49 | 50 | **id**** :3: ****initdefault**** : ** _(уровень загрузки по умолчанию - третий);_ 51 | 52 | Все скрипты, использующиеся для запуска служб, располагаются в директории **/**** etc ****/**** init ****.**** d**, например: 53 | 54 | **/**** etc ****/**** init ****.**** d ****/**** network ****restart** _ (перезапустить службу сети);_ 55 | 56 | В каталоге **/**** etc **находятся директории** rc ****0.**** d ****,** **rc**** 1. ****d** (и т.д.), содержащие в себе наборы скриптов (точнее ссылки на скрипты), использующиеся при переключении в разные режимы работы, например в **rc**** 3. ****d** находятся скрипты выполняющиеся на **runlevel**** 3**. 57 | 58 | Некоторые скрипты (имя начинается с "S") запускают демоны, а некоторые (имя начинается с "K") – останавливают. 59 | 60 | Для работы с уровнями выполнения используют следующие команды: 61 | 62 | - **init** или **telinit** - переключение в режима запуска; 63 | - **runlevel** - узнать текущий режим работы; 64 | - **halt** - выключить ОС; 65 | - **reboot** - перезагрузить ПК; 66 | - **shutdown** - завершить работу ПК. 67 | 68 | Для управления демонами используется команда **service**** имя\_демона** с ключами (не у всех демонов в конфиге могут присутствовать все перечисленные команды, зачастую можно увидеть ленивый скрипт только с командами start и stop): 69 | 70 | - **start** - запустить; 71 | - **status ** - показать состояние; 72 | - **stop** - остановить; 73 | - **restart** - перезапустить; 74 | - **reload** - перезагрузить конфигурационный файл службы. 75 | 76 | \_\_\_ 77 | 78 | Более современный стилем инициализации является **systemd**. Сейчас он используется на большинстве современных дистрибутивов Linux (Centos 7.0 и выше, Ubuntu 15.10 и выше), засчет ускорения загрузки (распараллеливание запуска демонов) и автоматической отказоустойчивости (отслеживание состояния демонов). Использует понятие модулей (units), которыми могу быть службы (._service_), точки монтирования (._mount_), устройства (._device_) или сокеты (._socket_). 79 | 80 | Модули (юниты) создаваемые автоматически после установки пакетов ПО располагаются в директории **/usr/lib/systemd/.** Также можно располагать юниты в директориях **/etc/systemd/system/** (для ОС в целом) или **/etc/systemd/user/** (для пользователей). 81 | 82 | Для управления юнитами используется утилита **systemctl** , например: 83 | 84 | **systemctl list-units ** _(показать запущенные юниты);_ 85 | 86 | **systemctl start network.service ** _( __запустить__ демон __сети__ );_ 87 | 88 | **systemctl status crond ** _(показать статус демона планировщика)._ 89 | 90 | Вместо **runlevel** в **systemd** используется понятие **target** (цели), только в отличии от уровней выполнения они не пронумерованы, некоторые из них могут быть запущены одновременно. Target обратно совместимы с инициализацией sysV, поэтому можно использовать команду **telinit** для переключения в другой режим выполнения. 91 | 92 | ![](data:image/*;base64,iVBORw0KGgoAAAANSUhEUgAABWkAAAHDCAMAAAEW/FjgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAEdUExURQAAAP////7+/v7+/oOb5v7+/v7+/mmH4P7+/tXb9Vh33Utt2v7+/j5j2PLy+zJa1f7+/iVQ0/T0+/T0/P7+/sjP8b/L8fX1/CdS0/7+/l183uTl9jVd1vb2/FBy3JWo5/j4/Yie5f7+/ufo9+fo+Pn5/fr6/fr6/v7+/vv7/dja9Pz8/uvs+f39/qSy6/7+//7+/v///2+J4f7+/v////7+/u7v+pCm6J6x6svO8P7+/rq+697g9f7+/vHy+87R8fLz+/7+/uHj9naQ4+Lk90Fn2f7+/v7+/vX2/NLV8q687vb3/P////f4/bC16P7+/sPH7hlG0f///w09zwAzzBtI0tjb9Ors+fz9/nuT4/7+/uzu+f7+/mOB3rTA7ZEBxCoAAABddFJOUwBA3TX/vyr/WP///x////8n////1/////9w//////////9S///////v/////////2o8/1f/Mf////9M///p////Lv////8jZP////8Q//9G//8g/////////17/OHQsvA0AAAAJcEhZcwAAFxEAABcRAcom8z8AAJjLSURBVHhe7f0NQyRJtyaGvWthszTmIjSG5W0wqL3TV7tqT9+9GE0z6tGIFYN0h7Haw61kRqwN//9n+Pk4kRlZlQlVUAlVRTxNZ574jjjniZORWVlRf1sy/Ou3JULp7pBQd0/xj+C5kYzvGMDfL3nk40DOjyH+rpDxV5yfCnf39I/ozCmOn759h2NqAd3983umMWmm7rrA6fcKfq8Y/T0HtXa/8sD6f1bwj1Tvdwik7v42fWOn3379mWU4QndaNfyRVP5ETM/dZ+plPli6qfbPtNiyANo9WCKou+8iMA3ub6uQjN04vwys3XYPclTVLlIr/n3gEWf9rw52FNtXVGkH28p8d1C9QwDyQbXdX2QaPNpdNayW1AMcjhH9gRGM2u4pqlLoLsU7yhg1TxhAVbGGp0HdRUV9QAO7ahNSdQAioLuUN5WGpN7uvlN32UdoV1XgQO2OsWkmPDbVHqpanXhZPNbdBQO6e75EWPXuVnEGMnE+eLzCx7qLqb12/qVaP79BXZX+751XV5DWGOpFdcXGqzOX2dirDqN0xZoOccI/RiDvCHUhsqqukAlVf2GW6vKMecbwaHdVBBWj8PmeRUaNlNaP6MzZ+fmFyri7isXfSLKqUyr6WCHuCzIxiP97bHFtooWncvcwzg/iofH04JEiSzfV/od/XCJAu+GBlwJL2V1c/HceXADcHWyHFHj55YJQd7enA1x94Yju8sTVmFaCzI0Tjndj4wgojxaKx6qZmXd02r12YnXwIWof3fOEaFTFvA9A3eUKuiej1qy3SL9mEx+OUe8t/qvzaAzrwb5yTOGy+PhOC3RF7VbVfawqsfrkwv+agzjAipjRvbXVCO5+VmBmVB9CeAAPrcUf6dwklm+qhQdeCixjd7HoegTrWESFaGDtMgSqmxB6YO32LyywfkRitX6mhRJWSVgycenIlROhU+TNwRw8HKkC5ePf+flGHcIhAmwGayYu+vDH1SOWZ0cMvP/i6hIe7a7UivUuTqgZ3cWfqlVfIXSXrY641FUZHWAfySqjVTDqxEm1swoIZ4dYSSKYcl66ZA6TASV7oO5WyMCC79nXc65FFVmd798wfqxKAcNiYSXqcFMdJl1WI5y5wo8kRkK7G6ND3Ag4+D5Sx/G8qTaarPD5eKjO53X3xYHuhgdeCixjdx9bWIyhnfuRsh3Jz3jG+lh3tcTDnxZkdwefmZW5K6z3PjOBi64OoJCWbl424g//R9XdnRZf/MOiShXrOPUjSXX3M0r1wN0dHdyNIHOZ6dYOqi0+xU6hSbC7m3qqe+tc+L9Z3SHg55EqBV/IwNaM3X0AUGJIk/DCuw+R1pPloZIPYOmm2rJ98hMeeCmg7l7xadUD6HnChDXTS0PdfWDxqjUJFzRYlmh9A6zztIZg5OmCsp6PUEpFVe7ivNpHGUiRaXaou2i/D2qV2l0/1PNELuuwPFObDz3WU7fUtQprR+RnDBdw+Pf+md19YLhYJOoPWfSH5Ta6iwU6Q5GnC+qq/nCIkw8Y7zO7OzNo01nBAYT4dDytu6+GeN2poACI1zDmicFegzktvR20t6hcL3r9hP9ff6X0Iw/G6bfv/sTp92/ffv5j2m4gG1/jCpx++wOljWeOQ73lO1560cvv46mxBAUwGCTorbVpoGx+88y9/sgj137T1tAD61b/VNXpb+ptrQzF+fzjJ0uPQ2XiPTn8/XL6V0Sdyn5Px9S8/SXO02DKQc2OZZtlpNPS4G9xqzZPnMZ57lBvZ7l1rqZ4M27Q3j74hIAPK9JbbZt8ko3cCugTMr7LNgn0VvHM6pJRBqd3eqLyRLi3/Q9OojO8CaDsTwghOtjZ19TbpqPVwTaHqQh/zvlEPMYEtcoMm2qabePvWA2npAk0vT04YXaUZWG+Mcc//H8iHptlD9Tc3+qws2zeGLC3cdMzT5zGee5Ywt7OcPecZ+0t9sTe3myE0IvHeludH1V8XQ1ZKr8nNooHTZcP9lZPkvSe2BGlGwbQH4gMrvETQFRHmVHre3pqxL/R+aEaQKDaH3/y9XhvgYu9fX++yPA637Jzo0zrAnXLdL/V5pzsrQpc4YwuOVJ/X0brN+c3/lBRWdZdTJ8atvBU3qrWPogJD+boxcOllm2WxYtj88RpnOeOZbs6hDBPDNpbrcEeXmo8tBKZTBpWt2ivrzuI12eJWPQxtLXFzLEe3zlmfEdJ9JaxfhuOydXdvb7EQZFLYksHB8cnH7SgY3KKfgjSrb5rERFjQB13euPsGL3dYY38SLI6uId4fHBbbR6MJktSt1V1v81lPBffm9XdiSphcY9BNfM/F59KjugHEbyd5Xs9GXo+8m0x4dEuzIBlm2XheOeJAa8OIcwTw/b28Us6cvR+Rjb5EtTTe/vImlG9fW+5C/tcC6G31Tp7S1kRnMhY/1l2zgzorfIpXV+AwJ8/aIN45TDgJC60FGY0V2JHXG4ybaJyM6H/E1RW4Gb18pleqVPCqDo/Y9VsZRzoLUbJMjKJV5v64/c/dNaJB30u66qJ9Gkn//YpR5XGY0xAqXV+aPv+kCtSlvaymV8L8Xt0HaXJBL2ThhFijcs1uP8xvz/8jb5Q0OLeonXLdwpDtzxkeN4s0w3BJJ41yyYH3+B5ve3Bs3r7EJbt6hDCPDFsb6e6lNeZet/tr/FIb5++cmBvuRrqQzVi5Vo8OeOxXhFz1GctCieh3n7mK2UsXo245txFgevqXYXF2w4Xj1Ef/6bvvnp7cBuhSVzfHRxjTVvXjiUte3viZg5OIlsb1i1y3GFFyZPDEKvqBOGmt1ondg+5C4/xNp7sdtbXO8bHeTt1/9pYtlkWn5YsB5bs6oDDQxc7oE7em/LNtUF7+1BnsebSG/UVX6HXWQsQLZV63+5Hb1GGGdN5HWW4VomIp8K97V6cEKzeTdSrL7YWy7weULdIRw5/u/cwe+1NhZ1tdjzGBDVSXcW3RNQJxWHlx++AdEO9PYcymVNFuRBkT70m7zXKY3jaLEM3HkLibZ6LIw3x6Xhabx/BgLOsoGAZsSQbMw329stg4Mv5IS44lle3Xj0qqkHXcNpxncUC389XG67tgfYWDo1uv337C//5xzf4fvukwK96m+/0p2/a1u7r6dcJfX/HfN/9cfoH0p3HRX75bc5KUGU+sAW39k3d/OtPbd0HmfaMP3fjeS8iPg+Zbn8+/TnrlbvoMVBgPGUILUi3pz9yG8GvKqQXQ5VzPOvzoNqkK9aN5tQOVMoefPv20+kp7P+9Wv52KsNSnm8fZkPO2+hubDcZf6env34DKaC3n9VT5sth3Z6e6g3bb79TzYr49u2j6pwbXBmb+hGn0K2iGYcu8ph4i96cUt0u9EqY87WMAxxoGr6qmp4E6Pb/8j8vBU7jvDwgb+OJ2IJjsCeBg6Hodjgk3V5XD3wx/TmojnerTW5C1FP99A/x47w8SLrFEJ+yb2lVcbOAyh+jxIGV6SOQz+kDIVXsnPgb8e1s7l16p5fIVc8UkG5Zm95DwlkftTiKLyp541kGtnFuizM0M0fUuj15UvPSIfu+WR2MvIOrqnF8GmLoduSBels1CNpSC+J0qHXrOvUilST++Z0rbbYFCWLE+7UthV8ez/S3HsasuIMOZi5YrmXDYSl1u1R7aiwVwNv4BGLBMdgnL4Oh6LYb3PjjuUi65QeiTwCK7Z3v70ParzbOz68qbo2svwvXx3ovq7Pzs2p//fzwkLuxjPTSXv8nyz2wbi9ZLT985Wt8rG0dHXAETpd6RQ+yG79gny4qfnlFDa5VR8pauXeSIuta9YUfY++fVdrGmvHsYVUdcW/DQ78tyHimnJ2r0cc+rW546zZmhDrHLuI/WtTH1IxSJGvUASOJLQ29oR8PzDkTpFvW4vE1SkTVivDrknxzkvVbNXxnUmnMy6y0K/4UVinKa9IVdMvgunblQbR1yzzKnY44+/3Nl9StxQuL73HYQJ3xVVPpVnLKzp7PBOs21YAKVCnrZDv6A6gf6hYhJG1wvx194cypVYUpBlm9Q04X3OObIogInZK/bMW6BXRUUrw5rO+Anc2g2+HBLj66j2kvGn8LhcRhcECTT0e5lg0H6jaWuguOcl82HJZXt7fwhYp44iMC4a462NzmA6pe9NQ9TZNLzVsPsNbxVODlCdAzPD6N4pcGrVtGHNNifGebT6NYbwgOSdhNoUch3aoZ5v+g4oK+/HdwzQMfh+nBop4tumYFGI0/1aCclABVwweh/FeXTifmfgZq3Qbb2KDfSZ8K7DKYGhv6s3PiLaMRcSzVHWe9ZOzoHqn8SiWDbsyJD6PR7W21WW3H707hyPpRUXXCDrBhqOUdI/i8mHm2t6t314w42GKMC6LMPb9foNBoxMxR2rmjEuV8IpJupVM1hAamB3sj3d5zCxKWrz4kK91Kgfx66AgxTNqmHtRjPdLVriUfQGwVfAwZb0eb/PYoa2XouIKxIB1X2+oA1MLfbICqEYI2oS1I+AeowCbmmYpes3OJCtYzdcu8qkS5n45XvJbtYjLOgF5/63kxO56lt2nwirqdEct5LYul7oJjOe8dQlxwLK9u+YxFEc8BH3I8/Aymp41pml5m3j7psYQeEvHrRSjsB0iHoV5GnPnXNpTm33iBeBS/rhLfMdrnV8SV7RFItyinfYJYlJVDRGsUIhJnHx0hSIqHsld7+/6VFPxtcAcl5edTOpy/nO/z0SWksxuV93d0ok4eIB86JFmnXtS8fWCPpwfA6qHNLt3u8TGc9uxGWpoVynaEqLOQkeMGOZX4MKxbFEjPa1ENrUTdXmnbKUZChWkLAUVUX/gEUk8+Ha7e17qFIi1It0hHHZfckoqZ9RBYWXnmN6O4FUK1Bt2OUmVHUnQvXtHfajzT4/V8AjT5JJRr2XCAbv/Xf78UOI3z8oC8jaXugmM57x0k6PZ5PlBFrUcE0zwveAw9up2uZj1beGkk3fqR2uzwr6frDUXUUPmXlbYq7krBRP00px/iSBjpeaRezONTlIq/1jSlUf2sBpmrazXCwzZaVwB/6cc19RyPsWi04kYaLIIYPdkBdnmKnwh1Cv5O8P8Jr3E+jMwnxPOrmcAOoYPo2mcOB93kiBjnM8BXCaVbhu8jF444cagp26Owbv1fVfq5nStCDJT4gW+eAn56w0eGfN9RPeEvlqqcZJ354PaA25Aofobf0ZoWSbdSzRNQkYToFvhDgRvfebgYkT7L0EA4vNixbwcHlVNOH1zVI2h0y1L87JwPB7dwvtePlcWDYH+AwkPoVGf8Jd5uH2wy1ZHxbqykIXn7FHBKZpvATKclgqMMcUrU/rZdbqZaZm3zeXimbl8QPdeyBQZ1G0vdBccyP6tZdCyvbv1I5enwA5oM8Wipu9KJ3FNgeXXLa4siZgML6Q8Cf774Kl4drB/bIY4Pydb5QI877ECOh1ezQrpV1fGICjXu8fnk/t4RIvUC3DrT/SSMGS/ZEGV26sn7Dz0ZtW5v+CBuZmAgHIYE6oyCfi9a7xYqWjk06BTE+Vm6ZaMW16A0IW9GUmTSK4349+U1dfsC4MNSDfhpGPcJfVVFG9UD+86+EMq1bDhAt+V7OkMhNlsqKCgoEP4lNgCZEcu3w8lLo6h2MBTVDoai2sFQVDsYQrVe5SqmRteWZU2chK5iCT3Rz8InNvc1AouOpFr8/z1TxkduGofwd58iAtBGcnWeEE5/+/btt9PvKP75CyRFfmQ4q21e+I1q5daLLfx2+heO33GrwzZOZ/md5vmjUe0fUBs1xz9Iv+j4O5SlrS9//nr6BwbVpVptf4mhnf7yK/P8hsw/MqrOOje4ytOv3GWRnVKMe3X68St065/u9t+3058+zr8LMyBzCB/VU3VYEv8g+BfMI4lHIwSyVkzydoyM+IXHqX/ffRa49dPfODn0Rw27B547uWqZeYA+TI+GteqKu2PpVHtwSoiD+2uEgMH8enoKYku1/Hl6F5r6x+hngVs/ld/h31ftxhlJv1C1BI+ItfyKyHzt6Sf5sfiTGiHIbeLMJO3YGQjBPIGbblj7E47wfnXOOSJmVlKtWkUcXRKCDWsZ5uT5Psq9CjLVSq+ytAT+/W7Dx+H0d0tCCBjMn6en4RCYR6Njtibr/MCdVlFtS7VsDl5WKUm1kQyyvCJCtbMDfe9EX/zbw1xVG6QqEObO2oKEv/3tY+x8OyOWb2vfl8bflusXtZYJf/vbp3gPbEYs34tuL42i2sFQVDsYkmq1XcQsmFK1OzsHW9oRYVPBCXT/EOZKIFRb8SfqZ8J0qr2r4h3unur9zvxqwqrd5e47jpgWUm3Fb4RAf/xugXSobxzgNNLuIxAEbsJR3e3yWxqI5XdwtO2Lvvkxy9cJkJ079KA+tsQaWR/CiGG7qFW25JbmsSUKjacv8Lw8rNqaXNPDqj05qDZpFIzi5EO19ZlffuH2OjusUiOPrU04VO66xO9UxddHtIf7TKx1N60oloWA+vBXcV9zffMGf84Uqh1Vd+gAv1f14rBqOfwZW7dq8SdWVsefQV1Qk0GPDh6grVoEQrX4c86ZVStCAu9Qib6qFKplXYza5bd9GOABR5yjSy+P5Gu5ydFMsGpBxOuTpC3+gbKM5wTlKVdtinBm7YD0ZNZKa3fVbVItm5NLM2uRwaxlLhD6VZBUy/7OBKtW5XDgV900EgZALKdthmrxx++YMTNVawn/d3Do/5HtSQTTfYTSdqHdbauWsfzhAqh2R8lWrb5chvAsrcwLodrZkRzCE7CFgjshrzBeQ7X82mKIq4znqbbgARTVDobyUHEw/O1vP8QXG2bE8n1z46VRVDsYimoHQ1FtFw7PN0J6BpJqZ/4y4nSq7an1Gd98fBk857uZCaHaynsizgCptrq6Od/jd2DX+CM154cjRB2qXwpD4hd4+TVSalOHNX6J96k939B3RFHc9aFh/+yOKnyPmp3GL+wyH78PfIPDOiKRdsMyysreMRLV+Au8N/4lkuhmfK9YYaRvcENGf8kaJbzZoP4/jMRafx98Bli1VfUFLR15b8LqkvsRSrXV2X70jd3jH+MwNkRzC0amzQ4MmSNyjThjuFfxbXP+SQVMtmq162L15SipqlqDKH2rd4hkfVJttcZvx7swqop2EEKdZ3sIcRtH/Ut/keEhPFO1bEJq4/af7g1Ve6ZIZ2AWjkDjStkZPTv4SzDaFUAtqhnXqT+rnhFk157GpD1Ezxjm9qT8cSj0z70L1fKnc6A81s4vq+vnc9ary4YZhn9JhyFy6eLmClGP4Pmq1Zaq/H0hho6sWvcV0Bf6PWIccfLv5KTkGcGfj0IVl2iBVUyoVtTDn5tik9y+U78txGzaTgD9c+8QyY6dRSlu3sBkHmEKyqpEepXIHzRiQP94eATPVi1bO4Kp2RgPfPYSoraYMEUio41/BZGlZwabUf2ukQ5BYvz5jBSojNwisxSLMF0VRTsEgGaxalMunviFf8Wrx6kImM3dYhtbKqe69ACSameGVDsrHu3OFJB3nEdFU+BZzbygak2BZ6OotqCodjD87W//9I9PwmmcC/pQHoUPhqLawVBUOxiKagdDqBZLTr8F8Xnaj7E7VMsXLR78AN1vzEwgfrJt1WDV8lfTPL6p3xDoVe0D4KszHVjRtxJqh+Bhx6tYU0Cq5Q0WQOXo9SDJTGBtClYHJzwc8y0lhtPm09fbfBzgHIqaBsjHd7qY/10U9MG/Aynb8t2y3eqYW5TvMla7svO/2nB+vuvr34vk5tgg1h3HHaXbuZ+BpFq+qSb2TlubVRt/6EO8eaW/RrXas/2g2vE7dWG+Y8Xt+mcYlY3RU4DacBUsCKiZY/4OYbxIp93Ew/FUdztMZvVpu3LIfG2QInukSL71eMdqo3QrN49PRag23uar+/44HlAt6rBq+eIcT+n3AxG7g2FYtdlbhTpOAWQUa/l6niLUDH8aE+pgyt11Yu0mdCiFIcPWFkRHu2dErVqAOT+n0il3KPzpaC5j0c60tY2r1uX9Z/rj706/34CzB8Kfih19CNU6ZUu7/0/5IiEKcNT38iSkq1QL6Voa1x9VCwG6oi/YZRSCoSyZmsWpWv4SAcPok5JT6Tr3M98mt2rZFVUHkYcp0FLtwc62mbR1HRVsSuCMxHQ9Do4cjLYOqpOYblv6bdGda4jTfkcFfUQZGoO13ie/wx8dVcP0rpzS+uGNd5j6u/Lw+CctIkBlVVusK37j9J2+K8Dk2yhd50ZfmePJqC9jwEwVSbXPAE35rJ4nPLESGntY5KqdCc9VLfzwrN+n6kZR7dtDUe1gKI/CB0NR7WAoqh0MRbWDIVS7P/Pn2B2qRRV8fyJCXehJe9Zn0oPhff0O0NMQqtX7IDOhW7UPV9LzK79zeT1h8VA7BL05MQOkWt4fA1SOfxiFMhP0rpWSlYlvsPFdNWV11EZVrek1pn1HTQO9MMQq/KpR1MT/RzxAPOJBctgR0h4P+h1t520OVylStUNCX3DC4SL94I7j64bSoPyn/71IqsVAdZ4aVm38oQmpNv5q1V4xzxe/JerYq/d6zQrRa/EGnjs5FfSam/74thaK6qi3Ef0aXxOZVAtpXy8oMrxRnb+nyLfRONsViT/nxJE/Cq54VMJ4JTDiEqLfEz27QbTfJkO8MvSguYw9lKsDD6gWZkUIAnqgkH58HEAs34izakVCpj3cwRy1alXKFaAmOfhatakjJiTy6H1Nh0fnN4qEavliqHrN/MB7TgmkKJmvWvLX4h2lWELvCoIpSuG84+8p9cKqhTmpjFkwrlp3xH8adPzgPX+Xiq+0Rqx/SYkJ6ZfW9YtZ04Hq0JuYqin9MHz9W/Gsb4NvirJ6DQhHZIXjqcN6Z5GqhbS3xiJUbRiE1TCgjh3KPQB8IXoNo7lBg/7HQeiMQz+CtTTRbGipFq1AeTpHa7LoBehLMf2+PUR6SCkEMvQDRl1gbrrMo6BC+S9e00yvS6vzVi3+x5mxbIkBeGDlwkmtSrWY4xugNOKZCZEwHN/A1eueKs8jUF3U1wn5YhCfKSzmDD1oHMKMkGqfAfSL3y1YAjy1l6+mWtFgKbB8ql15FNUOhr/97dO/fxJO41zQh/IofDAU1Q6GotrBEKrlolnhqdGr2kq7J7Zqc6Bnw8qe6OlQTbVv4ObBK25GNXfVtqCqexroyD4DplPtwfVrbDiaVKvALJBq+d4hN0jU2yYH3OEMIe9T6Q0kFZ9U2+SCoNdg9Arj9BvUoSRf2kJ1J9z7j+FjbYHJvfX4HlJsTfnB27htIpKNoym+5QpRZdkv/qk6bmvHSP6fM57HWvYJyvQfh6AO64+vD2LMEWBenDF65NqVwOhdHGZgLcrwP2rW24jeFdTN4I+qPdbWlO5HnNQvlkSIu2sixA01/S/9RYa5ormMzVh3rlpI5EOoNrbic2c/02aSGN6qcyHoN1yfoFoWJzspofU7tA0bkX6cEXqRUZk/4PAOauR7iI5irCDBB/y7V7Z5w6qNt91mQVu1+murFocPFSjEISuvzplqI/pJqvXhlq/GVfc0q+uKrSkjC0888mVOx3N3zbShpv5x00WdcZg3Goewq/DUsGoBq5b2F2dq1TLu8y63qVTAm1Qql300B6QpPf0SAWXUEt0JZM6IHZzRnDXjBChcFfM9SSozGdNldfwse+udUJ4R5QxzReMQZoRUiytQZhIOYTqAqRzVU9AuB8POgPmr7yE8T7WmQcL0qtU+qE/DW1FtwQMoqh0MZbvKwVAehQ+GotrBUFQ7GJJq9w91mh5t1U5+6jnjK2QriFBtdTHrpoqPqNZv5/XU+dSPn5cLSbUKzAKplrtcYvUPYZ9vmPgdHEY00kjvpBxR0Gtt6Y2WpwAFWVSbsPH9L75BtsG3XtyUDhWbRqz2TDvUSzV8e2bGlwXnAavW75bNBKuW71ZiCHrXam/db03d6BXExFq//KUNNLmHJkbKF6aeBlTjN7RUY9rm770j2QvmuYAh2eTaGbfFjBf7+KLXS8OqjVeyZoFViz9ZhcIh9MbBKL5W7V5K5v8m95OAorIkq3BbFNV7vxTJPMoWsnYGhICpw/Ivi8YhzNh4o9okfIkXXc80GUO1F4ld7514EbmfBLRl1krUe4XCGX0NpwoTMH/gc9icGjzUm4sPvq05EEK1MOsTX10mLzAasQMH7tVpkVsGQ6rghlM+Z+GBhWcHykG1+6wDtaJ+dJstVPtwun7DMJrhBsTOR1/ruJdGqHZ2SLUz4Ex7z84NdAidiDZeQZXjeDHVzpk6D6tW7/W+Nl5OtW8ORbWDoTxUHAx/KygoKCgoWGb8c1zQCgqWBGDtv/7Lt5fEaZxXFCs+vIVAYe28UVg7PApr543C2uFRWDtvFNYOjzZrY60LfIyYHiBHSA+jK18do4YCETUlfozzIiIfyvce3C8RLJgTJlirM7X9k6QepIyPoStfK+a709PfQpwa0zb+Omj69gkd/fHrt59xWuQOLyG6Wfvt99PT7+ugTzgithX1i8KnX5uCOv+p2NOf63xttGISa2lh4JOjWIM6AfzqHJKZ/pslFlpI1D3DkP4KUf2NjgMpJj8R1JgHrWj4jhh5ffzDp5+YA1MC4ptE3wpBGsEpYn0EPZtAEqFIaNuEU8xHRUPGKsNZ2mjFBGu/fs8lCcyEuYKoqCCdfmMjSImquypdHNR9y7qpMYC1HIOjdRSPFeDo//rlTxx//R0HJHzXxVqtOLBAyk3xFtHha6kazvpaLT5NBBrfgRjRCr7XaYG6UAutmORr/whna9YqSpYL2zmR0AyZrHRxUPct6ybEDtZioPjTgJVL+IqZSZi1AcTz+OmUWpIccJk3h84VgnVTB32aDAStjL9OT+11U0YhlxNaMUFR54OZzFolRVlcMn9rG7ar0sVB3Td4xJCxyIE0zlqsuDwuDJteVkAs3Gi3r+WKQwHHvGF0r2u5roTCwMTTr1xKhdqYlAWg1U9fucTi5UpU59Xt21cIP31FEDZy7jZaMQ1r5apz1vIu5g+1jhxKovNx5q+1mRcOzfCyi1Fc9tusxRg8VujqF+lc8b9onF2s/SML/MnpnHmNN4WeuzFKfF7z4+mnX0O1kVarjYE/kFTfEjSF6Wa+g4pbcTVaMcFa1vT7T86eWAs7f0TtYbtvP388/firojmbFvdGpDW8nzCY36PXEysEII31t99PP/nW7et3px/FyEnWMjlOVMF3UsubRJu1LwKr/XHAQOAmPW5ELAeWq7fLiQVmLdaDmadaGhTWDo+FZu1SorB2eJC15f3agiUDWPv/O/30knjZ1l4cKz68hYBWCE/cnu6JWPFd7cqmfcOjsHbeKKwdHoW180Zh7fAYYy33MHnydshTYp5mvWd3vXF49Hpzll3dD7ZReM4orB0ebdZW1cnBwbuBaTtPs+rHQfiDJPWO4dVMrJ3ll0ymRGHt8GixFtbnKePAEKjNKg9JQOaO98Rnuk+nfeZRP7FAoEsWmnJZDYCq1O+TJOdbVTviNXAfMfz1G/6iiWT/jMS8B1sPj7+zQd/PiYFmHElRP5xwdzCii4j+AalABHdiRrYid6M4w2nKQnQDxNzn4GKixVprCBp4Mdamkw3AXwe514/b7OhHQvjfmTSfsvwAf00nyvX4WmVEDv4kR1b2QxL1y0/D+VppcxfdFNfUJpFYu+OmPQIdVaDu6N2JpIjkoFK64UIYDMdATanUjL8Is6RosXZXY7ezGw5drJUPlCyfCvbGMWUi6vzXPMmGPazFQKptGjTlaMr6t4YSBmctfxfNrhCKBbd23UGxVt1os1ZgNH8YiL/w47BZK1hULApt89eV0IDCbwftdS3Icw9d1SoaBDlrq8+7bFPyB15NcU2X/7ClNzWHRv7NsmQa3oHd78Ijf2izVv4Yma4pIRFpiHAO8ni0KxqonmN6J02QrV20Pk+Msda91oGd4IrHrPXP+UVKYq1Gd73LIbIsoMhbKsazsM1aL6OsrLzUiqPNWt2K4cI5KFq+9q66Djd5e11tB4Gs/eR/+UNt6lNjFPRyS4I5mbMWK4frD3Rr23Rrx4m1SL5GLVEFykdb29UODD9P5KwlND6LIw6jZi0jQUcNpGEtuI1A8wtsEfl5uxrpstBmrWOYwKXIs37adZkwztoXQIu1LwW42dEunfngv6dbD69gMLwV1mLdAde0jUXF0CisHR6vydrVRGHt8CisnTcKa4eHWPvEXw94Ilb8RwfKbyoMj8LaeaOwdngU1s4bhbXDo7B23iisHR4TrN0Y/Jf65mnW9Zk6e/QSv5y3wqz9ol98jMBrYoy1/MXUJWLtbJ0dfmhE8bXDo83aqto7eznWcobwB1v5m6wVf5Y7YvQLvI5kX/wLmEkm0q/SOuSpVlX7/DldYhQxF1kR/wTtS/yYZsPaGMIVZYvskH9xHD3FKJue1xmYuGYJfWZuQz/QjQjDcV90aSSoPP2AN7FX19aq1mfqrs6pmvR7x4IjUVf6pXL+WO96/PpztH/T6FC5AXb/yKIi9cu/GoSEqIlH5mSPmyafhokVwsuylhb1yC5xBM0yQuJ48x4ZMtbKUDjSnoRznR1u8LelIaLzN4j4IsulIu8lIt65h0Y2PHLJTeOoA44ZazlmAERIndNx5Ogst445awkWg8YwdnKmTsdsPd9Ytw8Qv+pTrTvn9DGjkFV1s+7f178J46yzm3X9FDPW+jTyENgbhZnilSazaGKZtawyQs/CK7M2TgZkjB6AyjXHjYa16FvAKVFDiq47b1P7FGkhMnpgZMOTcdSqaGURvTLSL9W715Z1DF6IJW3WGmSfBr2WasD5rElHOBrJWJvrTjXHMSLhBkN5hKuiBDugQWXFgVTsYK1/uFxAOC4xMiBOFzBnsJZ/I14CV4C1nqd0q3YyUE0SlUMHTliK9CGH+rF+QpHWvgqkzkuzqQij9uFAQhwaY8PDhXKNXaFLVIx5iJ6eMY1DyfqpIygOn4Qy9fUhsRaiYs4uYXcOdq+qLlOxLF3XYlzXM9biVOvOXXB+U0iy22I+BtF+LDUiGQf7k4y1cNxo5ohdRub9I5HziCk2CIvDgSfWctUQHH4WFoC1opevTjACQO1GpBwuhRvrmJpLl3+kKb8dC/KvNZ2HyqpDGwfLBYB6kqTkIVEP73yDvaBheUrIWRvLQY2XSbVKNCJwlsPldVplPHZnV82aCY5tJCCUd6lFE+s0zZLu0HRa3SrVYA1WFRpUEiiWLgcK4+DFVsZa1qVGXA9SFK4P+G9jmbWJynNn7fBozDoYpLU4vjQ6hteY6VV6NBReR7/EarKWCgXoGl4cLzG8xUBh7erg7bD29VBYO28U1g4PsvY///APL4nTOK8oVnx4CwH52vJW+BxR3gofHoW180Zh7fAorJ03CmuHxzhrN7mvRchGvaHAvDCVWWMbgAN+xd9bADwBs32LfE67CRTWDo82ayvu6oJDBAk+9wxxTpiBtU/mKzHbdJvbMAtrh0fXCkE7uRjce2gw1lbV3TVq3+EuM9o3xU2JbWStG+cmVjV36+1W0MN3SpaHvKXE3b9QhLLzELp6AHS72jkMMaikGiGEKE7RtH0cwHLPRTY81ufp56FoGIgAuDFOgInay4lbLEoX6pELflAp9pjgEE8kaTMeak8bzzCdESycGhYsqnh9KWk1JyW6hXs3iTom2mZO140QA0TEvwYmWas9pQIjbX42587lZk3bDYI93kII0VKM9WZDh7mJUBpZ68yjO20Shgyo4oPYkfbtcl4SlGMCzZHm3YsQ4+K0EEUM2NXNAV2s1f6PiEA31Rj6ShLFaNhpJeMoPWgHMBXcQaSZw4xkmrp8z2woBvWlrSVZoSZvVGRQRGMYtndoJCaaA4dlh102ec2tw8bazuqOnhAKvw461rW0qdGwap4YM6s5+ShrkYao2nwmIYDe0gwGxXrbrqTgd/QSLkD34pp9UiFCIqOfj3x4BgMn5ADGEa0b0UN0ujndg4Yqw5zyisEcQhNSFyioSzEENzNDDrrv1qistbowNUxkzSG7QTVHPrbRbjuvO1UGr48j63kNtFmLCVVfSAB3EIjxzgePsVZHqahO41FwtFzn8TteEuRq4moHhEWEVMUHeROxlq4WrofLBfmsbIq67Tmgy9f68qVxpMUK00ABHNlpDpAhe0QNCgV5UlpkZIQXB1QXHAwjCTCLidV9tBa5FUltKVNC1hx8dprkzMXSqrXddl53qyftel8QLdZ6pQjchckJBEOaE/pZC30CSW/OgWnkHIZygHG1r5XaLdntOhdKcGNM6VbQpCBrSVvAF225YUla/jL5uehiLWwNeMdaiV6EBQXQabVepyojmaMIMSfwIfWYsbpoaxaQWahi0605Gog+aBXb+KO8OesCvUHk57r0WNt53XVPtDBXfa+Arrsx4fNgXarN+krY5lLYNhgCsw8vptpL4YWbGwJ9rD2e7VnnLHht1oaL4pp9CBTWDo9eXzscXpu1A2PFh7cQKKydNwprhwdZW36zvGDJQF9b3gqfI8pb4cOjsHbeKKwdHoW180Zh7fAorJ033gRrucvDl9f7lnybtbHZzXM3WXgYU5k1bTHBHSOafSNmgrfLmBYYdkjPxNvwtfyILsRXQIevHbo/tVm5fcwhGbmxr31/ouW00Yo2SWGejLXBRE+s96NqFFseXHjnIG0+s9/sWKPc76vqRnssIXRJJ4HjPvf9Y9zZTXUYO9k597NRDw9DUIXaXJANOI5R7NMld3uJdjm+sSiAAe5Owy63olvzkeUsrY88FqYTjr4ILTmubsuVRk7WR9U1QKnDetebjRscrHNldfsbsTUQwFqhVDV+vrdf7SvrCGG1x13OVLDev47H5jwzJliLmoZ1tTlrq30qEOqFHr6kUUgnPb7W+kLMGcUr7vFzo4mv/USleoDqTnlvuGcPMqgUcMHTGhMRhcbX2dRaansOaLE2dmhD1a5fw+J+RntggpvV2CajlB/DGW3sofeyPyvQMbRAxGZg2n8L40YK6Oh0sQqEkWpk06CZ2rJKnFPHnLXI8YWl9pS0JoqrDiQgl/KDgBlrQVFuX7VBixxxoqLIOg4cjCpWQW4+aDk7PQEdvjb2pxwMOWt1tJGgAUdIJ4+z1gTlJqCWCIr1nIu8wBdoSyqnlqFRxqmBKBYio5+PFmtVsRwMAwJF7g2aeqCxTUZFTrlEjUQRPiJMcOwACu2nZHMv0pPazsC/oCtP6heBZOtIx9DiIRQVKiJUFbedReEz7ncX9YOAmvIG8qQT8wsI0yOFGGlgtmRe8y74FhSTZkeLtWdHqX8KDoTHWAuKhf3qNBw5+krXGm1K5x7uUS8M+toURgs4r3UerGUpZKG1NTfThRJw23NAzlr07Ki6VKdcf9BSTUUPRK3JKMUEmWVdZ9HRXIOsfe0cjho0Q+r0y8jTYm3GycipY6iO2g8V3azb17oXOEKVyooDVd7B2pvILLjsIbiOAIvgHDL+SGCFnoC2r4V6iNqUg6CftdIG0bCW8WFZQpsFEs12rVBSmtMbSfUqwUuYrCloASKuZ61AcwKuyxo6k5+LnLWkoUigoUSch0VI9NgipolKsqFOmzuIJh3EPrKy0qW5th355nS0tV9XoPV/0CzuuSurEBHKb9V5W/DGSSpJTSMIHSqMA/O2WGs08pG9DwcDQ2j7cM+fOCCc7i1mR8cKYWjUZn1VmD8DYDGG97IABUN6GbxB1ianNNAVpbB2eLxZXzsY3iJrXxqFtfNGYe3wIGvLm4oFSwb62vJW+BxR3gofHoW180Zh7fAorJ03CmuHR2HtvFFYOzzGWOsnmcN+83h2s2bbePRvY5CljO+28jA2m9rngZmGFxuLzAe0nHatW3m0WdtsYTYgnsXafmSsnW3eTVX79Hg91r4dtFnL2Vpl29MNgtqsx26u2f7oOjpA0oGEhvZMNHYSN5twSC7gaiPO+2RSiLpuI2HEKO+nCcmdmONGZvXwVDFaiDNb1SZOwG62OxVxra2IXEZbO7E/IQqQPoQYIw3FIIH73mWKSVNQmYlGhp53UAISlOPKXW9kwYl6WfyJ1Gbtu2voEx2v9yUcAplZeT1LO8dp5ytBBgwSxu5z3Lg17X4V2s6QFyCydMXi8AGyiaHU3SSK+MP42tSLOHsQlrSNJ1iHI/fVY/fYORFTbEo70HlrMIjcViuxCcMB/SkxS2xZxoFqUmSsTSeL3nNmVJGYW9r1i/E7seMZusdWEbV0rDXmbMZxZGbVVojBWukKOtu+zUmokzvURFPbgYkChNNx3DlRbCRpW1in2oLGnIfbz1ptWFi9wzS9i6W3t5ZF0h1Ht63dgsHatAWd3aKRbX+I4aCg6c6hpTHe6WLVy1oDBRFERyQDn3GS7D+0s2ys5SA4YSM4DGqzwlDaqa9hLWJOZFpZAdd0+AE4hXHWwmajXfWzXQCZorLq4BZh156SFH9/T0ZIVO3ybNcHczRUF2vRbGp1lzsc+up8r9XJrZMwEtJSaUbK5pGSydFjDScUQ1FhjhREbrG2+ryLUvdk/Eg7K1LyftWiLbMopw/cYJE7WC4ba7Uh5tC3obVZubi7phJr1h7sblc79wjYNMe4nDF2nLXIZzqPF0j1QMYotlx7ttXx/Y7MotDJqNq2fZCPC4g5odPXbrKXAPzcOy5pIe5eY12A7n6odrhPnkbHzG3WNiM9OLi9rnZidIjnwHCpT2EcWE2LtYiEBoh7VA+NoJC57v17o4c68hBUdpFFRtcKYWDUZoXi7g7o+yLcQs20OQJW0o8PBAuGQTYpjeBGJwakyEPNLjtek7WgJpaaYz8UlTAEaw8+w+XsDLfHqVBYOzxel7WriBUf3kKArP1fP/37l8RpnFcUKz68hYB8bXkrfI4ob4UPj8LaeaOwdngU1s4bhbXDo7B23iisHR5jrOVGTNrUYkA8YNZsv44+3MS2M0C+icrjOHq87rmgsHZ4tFmr7YX29o+8gdRAeBZrz9JmSQDmV0jTYIoZMRcU1g6PFmtBCe6YE7tHDYXarPLrIJ7P3OonJLExJIppAx9vhZi4KpHbpIXgDYCQSSdvfaZdkwAODUg7/AyJseEBjZwNEUpO2z/pqnGGkPclEtJomi2fEOXNPSli0BsYUuzAeMgdSVCHoLZXHC3WUlHcAzq20hwIuVl9ohPUDkYxY7gtVSRyv7a0uRGt1ONrlQWHL5C1FZVTwQSL2nTwhX2tuxcbZWVDjC5xl0zOougu9xxLk0pRzaijQGzDV6+LYCfNgsN87ZOpZ4UxvkKg4ga2bzdrhRB5ir35aDvtNKjo9Q7W4rh/kVjLaO2K5lTkpigMPKoa/awVYlweYu776XlV6HCtj7WxfXH4FAzOk9GbR+5jyq+D12+PtVDXuvedHBDjrIXz2KfjQACH0Ya39eNGgdqH2Lsxr9GKsamltiCGcZhvDdFHTEORzM573KrYFa6R9aAH6fISFu1ibfcQwbZLJo0QCf6x+8h9wXikZqOprrhJMnc7ZQCrBCjH20Ay5tB7nrIeNvH2WAv93mjtNCTGWXt+fnUIN0EB9No4TLsJczmb+vIldk2HS9pnuo0Dw77nIuLmTMZLduYe67z+KsSt2l0S+biAGBpdrG0NkZvBxxAxLG++v4GZpd3pMfx97wybsRYyhliHCNRn5bA+8xfquvCO6SuPcda+AGqzDgVYdo9GH3Yb3j48MjyxbBYkngIbsS/9m8cqslaOaH/Yh879GJC1h9XNa41qsbCSrH1VrPjwFgKFtfNGYe3wIGsLCgoKCgoKCgoKCgoKCgoKCgpWEPGjIgUFS4K/g7TfXhL//f8SwmpixYe3EPiXf1NIO1cU0g6PQto5o5B2eBTSzhmFtMOjkHbOKKQdHoW0c0Yh7fAopJ0zCmmHRyHtnFFIOzwKaeeMQtrh0SZtfOAA/Bkx3fjudEqin55+F1KN2qrfR1NERE2JP34LYQGRk/brR49ugbu7lOgj7elPEdWJVyXt10+LzIKMtD/H4E5Pf4+YgrlgnLTi2E+foGhF9GAupBUeaagLIPtSkPYr6frntz+grNNfIq5gHugkbS+Xfjz9KL4k0v766fS7r5Ja+O3309/Nq+lJ+xcmyo8WgY+fuD758fTTzw4Dv5ye/iVhWUiLodnD/tSjzQw/QlExqO+xpvilQ6ktYCZ8bFTz1vAgaR38TSdQhbGOMmnlSmQZXAilQuj+j2/f6KcBRtQVNugkLe1KcFGCMpD+iurD6cdaAukWFpa2LdKGBBpiPrrjBKJOT7/H8XfrJ60jIIZOpU6ccPQJRuCQoY0oRzD1LaKTtNDQ6cc6WJMWp1+tKpMW8p8Uf23rFyb6ntmbGlroJC1OP6kJyxJw+MtkFak/ff0jRQOLT1qoihog7GrdcQJRIh8ZCv3w9AfVBhninyKx8vDok0lLw6AcLjq/pExvEb03Yg62SPsJAUx1HEVaaI3UUV6zGMbBFdyl4HSVSLmFTtL+9kvjWnCkw/3TZc3kyCaPhZiFpWw2PDCrXu60x+BBgnwQOUbr9Nvv32PYv/3IQilPU8CkZQGVoymgf1zW3iJ6SMtrEIOkTU1aRoKdUJ44Gro2X3WvoRh4GHIKpcDDaUlLfAXPXVWqVys7BSNOpyUhLfpvLQITY8BRVyPpJxIa/JXyNAVEWlTJcvANqjm/CXhTmFwe8FrGiRzBjLSkCvSWSEsNGpjwOPKAgtKsoHXclKSlnYgmKk4+M8lYGtKim/XY1W8d0om8wziUJxIMLsAIiCEBJi2WEfgLsgtp/fHG0LWmpTqy4OOkRQyuVT9B37jANaSVPVhDC52kZfbfO5Zy6YxDYGlIC7V5AJqRmM0R9gnk+4TIUFLK6IF+jDsHyoZJy3veNmmbcm8KXaSN+wMGOZUfIC0zBZDXES1OTUlaWIlPMh2IetHGxPJAWBLSss9cm1v6sx6DT1CMx9UmLS5zvn91nqYAjeAC31OuFx5vEl2k5T2ECGOtQVmdpAXTePf06XtRCFGxxrLev/uR0VFhji7SutYI+Nh1I/b1u1/RrWUhLTWijmKpn42rDtQ3rUhP2sbYyMc6D44+gajBfKQ74ftfHv6sfXXRSVpqJbT2q1abnaRl8s8kuFfAUUY2qB/ITEla5v7KxXRUm5LqR1602R985IXG6Za/Lux9czY8dj3QuIA4MVIn6IdXtp/47PXjNw5R44w8dQEqgHoWaaH+3zmplfwG0U1aqhHK8d0RP63pJC1zESpC3db3bwJ5NSVpo0g9FxgV1Yeb4pMFQB+HUljY62M+vPgMIF/npBOOjX44ZwmIHC6G2dzcxomkdYAjdy4Z5C2im7Tpocsfv59+94djO0gLp/cJt0+S6se2xJ+/n34yq6YlLavXZ2B64pA6pE+NI/iVT9RlfPUqVouLh/bw9JlsXBViID55DYWT9UPH4CH9/Mk6QHJeAKSNtZcU+xMs4A+13yLapH0JtK36OGoHvhyYdXgFs2NxScsl7k/f/oCrSr58KVBIOzwW2NPGwm25HG0h7QtgkZcHf/DRG9bUS4VC2uGx+GvaJUMh7fAopJ0zCmmHh0j7P78kvv//hrCaWPHhLQQ+/j9A2oKCpQL3py0oWCqQtJ9eEj/8UwiriRUf3kLg9D+BtAcviX/4dyGsJlZ8eAuBT7wRC/llUEhb8EwU0s4ZhbTDo5B2ziikHR6FtHNGIe3wKKSdMwpph8cYae93qu37kAfCfK36rqq2Dg5uR023b+M8He7iPDcU0g6PNmk3K2LuhmxhrlZVf91tR9wnYSocz5R7KhTSDo82aem2duZvyBbmTNrRwWdSd3fXEdsz9b7m+vxQSDs8WqSFx8Kxqt45OAzmTNptHWvuFdK+AbRIaxsOYMkcjVXhH9FWtanAiKIZ+OHg4LOWqkjePbhlwjWzVBWi0Tceq+oEC1IJPrrPSfQ6h8tbVKcYLH5xcjaK1ecm9zyRD89AL7JlCHobU8uXtMjENZnHf6IgLhxJHTyq9xRUnLHKz4UcEnCUTkZMegMYIy2HbS0Mhkmr0rGHiPbFUFgVnaDntw3VJZ2vD0hCYrOftCI6hTomMmVR4IXPKjg35MMDy0BXNNBFWs3IujM1aVNHI+jjluOgHRVnbCItqI8Yz2OnrT7GSGs1DTr2FmnTEX4WIrh2YrPYAFW1g//oEwwM94u447pY8lNjPfbyQPZFbciONDtcx+OYsuCYFZwXxkjr4XSRdptDYi67y0RaX1V4TGNTJJJBzN0J0uLGkzHJ3Qy6sFsYvC5paS/Y4h6iFglhAPtA3mDdg65O2IkDCaCnWyoy0WMz0kiktUyKwG2nMmluMHGeGCMtLgsgYQdpMWyFrYQg4TZJyInJYXi4jEQlzvqOxY0gLZZRTMyn8+pjjLSe5YMOPbcqNa1TLcoAm3CSm9UWjrq8GkzAOjb5GoTkgnpI+05rZJEWi+PEGp2YILQKzgutCwlBldajaEgbUw+5MtIKjGUuZDohX7cbpmaiSfuuulaFEenCK4/XvRHTBwEmbYhoGivZUbUJFzuCwTMfpYzhLRXqJy3WDqM7Oy2TAjJuvBJpWUYYYKhjnvZYCx+PApNwVJM2ehT9y0nLaD3H4XIVEFOZlQgxkRahIK0m/RtBi7S60kABL/TIywuxUDpFnHxFbFYIONG9CmGZmoZa5o6R1kZNTyBq0uLE9YconeU2xeeKMdLydJymHptTByn4+WL0L0iIAvV9KRMlac0gggMeX8qf3QPwevJW0CKtxu47nOHQun5u6UZfnmVHt8ARLzsohOMtZ5OMFKRFwMUgN6TVESa8p+Me6SFDQ1o4vDu2giwouqNUkWdXt0Pzwzhp5e+DtGyzJi1CuLp4ZrmXQVpEv4teK8WRxzTM8QRpg8bXjIDEFlcfbdLSqo2+hkFuVbdHOS6FciigqB/uhPclfHMs0kZMGG+MtOAITjwQsqyHo7C9W7S1K/66nvmhNSeNbE0rZtWkdUedV12NwQAaOqFIrJUIXIbGSIsxOMYZlLb6aJP24H77BV+YAQl3d+KzhYNdUDWWJTARlwS+4ccidlRth4s1aQ8+b1fXWgMjaoy0XETiSglXdeJrRiItJuTOfXg8lB85FqyN9ueFCdKy/iAtVduQFpF36EizsvVgDk6uq50YKBCRGJAM0yYt1wQRc4tS1snqY4y0L4AWaUMaHjt3JEeQdkg0wysYCm+FtPBzt/WieUgU0g6Pt0Ja8pVId+GDoZB2eLwV0vrjhjmvX7tQSDs8XpO0K4lC2uFRSDtnFNIOj0LaOaOQdngU0s4ZhbTDQ6QtKFgqcNfE85fEx38MYTWx4sNbCPxATxvyy6CQtuCZKKSdMwpph0ch7ZxRSDs8CmnnjELa4VFIO2cU0g6PQto5o5B2eBTSzhmrPLyK/48svyYmSHtTsWsDYp5W3RidhTQN9gYembDSpN0/X6v2IvCKGCfterVEpD2rqhlIi6GFNCRWmbR7IMd+yK+JMdLu80XpkAdCIW3BM9EmLSn7cqRFS5daIr2v0krpElN5zSIiD3kpOnSHzM+Nw+om0pXi3q5hTaMKUORLtb+BmKpaQ2idkZfV6EJpkXtY5KS9uKkOryS5qxqDewWZ8XuH7hznn6FZeFYPM2JZBoNTFFGXO9+Ayt5LckZHM/YQVaV22Viju4hjfTgqSmCppEf0HklW/kbWPrIwBwHp7CZZDrkvcVrnEYOBuI+xeDxqJF3DYZq6hidijLSXbmBI5KQF2SqqhIB1k+WQFpHQSE7aI8cyDCTS6qRY17hxrj2RcICqqSMg5XLJAdEML4YwotxDWvWTHW6TNkQWDHGMtI0edGmU8uqsaPDK0n5O2kx3liZIG6pCXUxij0L5kFL7HJRzM8Kto/vMAqyRmiOTFsEgLfiMcCIt8/H8DEzciD2/ykeQkxa44GlvA+ZjxGiDHhb+AJFXjsxIizXV4fkXMFPFZWnoRF4VJpFeCQb2mc9RN7Lhyy8P0OgXdoW9NeHU3Yy0GNql+pmck3NotoVDSrkTaQxojIcrjmk/hhfpUheZwwUo88awc92l3uAYmQjwcbThupikBNVG0qX2IdYFIB5FP9HlM04gxWowZ9GSRswEkjZGXtfwRLwyaXGENj1VeT0HaQUMm9Ih6JuR1k82eNkyTNqNdTqzpNKY9k5dJ2kgwhQvTlp0k31xB5K92qQ1eXA6kp3bOaAXTV7nxjFy12D9ZKdEMMTpYs7ZIZrG7GdaDDvXnXMmjTGVsKLXLtWDQ1A4xSFPap/8rQt4BqgZzk8ecWW8wLoEUSM9ZgirMQtJ25yehdclLQ2iURCHVBHARZJNLWSkVTKhhERaSVzD1Z338kr1Oz9w9tKk1WUCCB5yNRligFNJz48oZ6RNkzJGlJGWGHkByxB44noZSOleKgDkF88xbKcBknPSEtQXTsxIKC7dUNxU4GWQFv3Lc0n7OCEyoLCgxwxIwyhlwmArrq1NDU/E65KWg85Im+SrxFTicdIiB5GTlpbWyUnAi5MWbcZZTPUVoEXaZP9MzvsZIxojLRCpdLJWAANNOlidSMS0qC5iFFDNPkZklGdGQjF0HlAtr1KJtOBv6jRQN94ibSzlnQ1pYH8i7T7qVAyTnoHXJy0WRQ4a9JlV0vT++kY4XVwsRVrG1lAkXRoY0SZtTPP1/LOSsYYGQj28mGyw+YaXJzHgREPE1H5yPyctzWwZ9GuRllRDVeFKeXU2tXBSbUxnReAN8ocOG9LyJDhnW2P1LTiXZExSL+QP9iCrfSozo5wfW6BDezCEukygS8xzo4ULy+h2UP1AtqPqMqvhiXh90uIEiu0lXUUPdMXC8C40WC3JzshfiPtHKkYEC1AeqmtM4Csziuh+BlfR91yoPV9Z06AeHixUX3RHaek5Tlr2SKOKzkUOyum2xo/ratIyy8a6b3LoApkJg6y1x3TzNNYnQdpcd6lnOWm1XsV0EMEYVHGSFtqN9rOOEi6rfF5bH6Kv9DHMg4njobgW94PBjefbYQFIG09t0CzGL2DsTWR9uQkdAFCj9GCdKAqQctX5ukioGoBOwWsnD4pmeGkIV7BSDV4uatKqRwB6npOWN+QEr6WimsuYlOQy5sM+SbBej9ReDel7mKqkhcEqg7SqC9iXQA+fkRZ5oHMmAHFPRw8q0iqrNdl0lFBuAP4Wq16Bt4Y3zoOQDvAZNWl1Fc1qeCIWgLQaii7x0pGN6kj5JykEKmRmirKdSUuWn8lwl3ET686LDYhnTZoJ9EwqzPOgaIZHMwEbtFKNFmnJPoDhsKRH6QK6z0ou2qQRQDg+JvPKgI8FmzWCgID0iPGTm4m0TjdPo60IENSpVUUpJbEiPxZw+xAzyqGzLKE7Q491j2cNWFOP6wp5YIbVD+bOangiJkg7ODKrDgzT4YXRMbzGSubkquDVRrOSpMWch9+GG4tblpdEIe3wWEnS+uoJRPglUUg7PFZzeeAV1mtw9kWGtyAopF0VvCHSvhoKaeeMQtrhUUg7ZxTSDo9C2jmjkHZ4iLT/+JL44YcQVhMrPryFwD/9F5D2H14SH/+7EFYTKz68hcAP/xakjb1qXwZlU+WCZ6LsBD5nFNIOj0LaOaOQdngU0s4ZhbTDo5B2ziikHR6FtHNGIe3wKKSdMwpph8cYaT/sVNe3IQfm/Qu201m1qrZ5Yl/unvzT4TP9FO79fIZZSDs82qT1G30tjiD4aqS9V1eeStpN835KXM9pmIW0w6NF2u2quiNHMmMj9HqkRX8i+BS0xvEYjuc1zELa4dEirZ1s7mp3ESiknQWFtMOj40YsJ21VbQ1GWvKEc2JXR0TEOoDuXoxjNKLy5YGJqOyaTyjNaH2N9IPTIXElrEpRk7ONXAr5Nh3zwTUxN6J8bpp5BhrSWnGuVh10XyVtxRngOLevKTHV3fYg66HWeT/XMoSDzxQ4MsYxqc6dLIbacLQK1DiRN+faUFYVsUlmlqA0H1t1wzjGvIkxPTpJex3SwbtqhHEPR9ocs5LWqUoLCf20wJyJtDpV1U6T5rNqkvEoDUzaaCfr67usGyHkyZiA6uA7yIqFSjDPICsZCM5KYiRtBgfjUIu0MbuZIkQwFSRA6BEKuTMTbbfrXkjSunMChstxD0daUGlHClKj46SN5UEvaSHdb0PFzgBiKAVOzFBeWBYWiQJsj9pHzCZTMT6M7YSJcxtmJ2k1JHXQrcPxOocYgCzwZejGLZMVIZVYL45gRqlDtUalvn68U9jZ4pSGItK6MQ+eQKbUnBWsUruojU1GTN52+7SIpEXf6mdenHWDkvY+MU7am5W01cgKtDplIIuG8wqpQC07Fb7E4hyHmZM2EGGNowkCDWl9Sle44Mw2+JZYjIy3zYRs6Iuja8UY7nlSVIu0GeMFZ8LpGv+pIisYpRC8lvXbbbfrts6BeRNjeoyTVj0MbHEqz82aCTlpcZyStBAZby1Lf7Ch4xg0IiXgvAcfVLRJi2ienALcDU3aexBAUrRuBAOcJU4nuPQoEw5YEFhJjALE2c/ZeAyK0AYuWrh+NLnh0lU6QkoiQuJJ0QTCsYrQxGm33VW3lsELQlp0p16w1x1Ub+eGeZEWtNVS8TYFiUx0XpqCBkB0pNX3LiItRWIQ0rLG1PTOicYRrRuTpOVM3ERfTFoYIxEHGSG6qu1bdTzrMYL1XyRozCodrdRQNT6pIQOulO3uxJojb7v5i8pSTxaDtDGeAEKBiJgL+kmLCMwYaC+R1mnBZcErM/XoRPpmPi0WjbyvqiIt6HCMNJ9A5m1ShDHCvEzQRVqtmr1edev1uqRN2k389/hEWrrWRBxmpOxLtkbVWr7H1VypbphqU+nWPAFazUkk0mohtJ+33a479QTiQpAWVwCDPYo5iP7Nt2/9pAWRRronzkh7fzxGWvSGDpbcHt0z7USiyikduVyCZkAbWO6g9jqNUdfyQybG/S4YoHu1O6ywn48u0qI/mzygfbS+o145RyJtdc9Fo8T7e3QoSJuU5IycYxjKieykG7v0URCCHBEvOsrNhrHMcGnk3mLZRF1WHM0hdsc+GdIuUsIDMEvTdrtu9kSTbkFIy74KFF+etHX7ibTUbPuRFy0PGzAmZhhNEaLWWU2djOKllidG4MwqaE0UUwPx1IjvKPA8D9Z2kVaVV2RR3VctwjLSEghwekVOnDGgRJxArDw1nhQrSSELde7tKI2xEpAEh9y2dGG+qrSeqGjBlbWtIhYoCVB7Ia2OmMGjEzSdSHtwjAtTi7QHx9d1zC64u+2+3aP8OwrqeyqxVV3jtnen2qZN+BQy6rkdwVvFAGH+LRFoV/mej07Ssit+DJr1lWmJtOjHjqYM+rZJz8ZY3hO1SMtiu9vM6ZJY1O/oUQ8zXTN/lpuqcWm9BnVCQUBa3Rxv6/gMBhlRkTrI5Hbbk3Wr1QUhbQ7YdRg0Vn0dbG9K1zVz5ownDI80eUG8cHMDoI+024MN7LVJi7si3OzA3c1lCTuBQtrh0UdaPa4bBK9NWhqNGGiEhbTDo3d5MBhenbQHfMy5jRuNQVBIOzzeImkHxYoPbyFQSDtnFNIOj0LaOaOQdngU0s4ZhbTDQ6QtKFgq/B2kjb1qXwZlU+WCZ6LsBD5nFNIOj0LaOaOQdngU0s4ZhbTDo5B2ziikHR6FtHNGIe3wKKSdMwpph0ch7ZzxNkjLnx2u1iy/PNqkvaqAUQQGwnRWrapDHM+onPWn/jLzIauYFhuj+fw68Rsh7SXMEvLLo01achaI0DCYgbSH6spTSWveT4mzef2k9tsg7Rew5Cjkl0eLtJekB/qzEeFBMDNpn4pC2lXF5Jp2r6r2QhwEtVXBk/O1EVdG65WuzeFSq2rdjAu3n3taE5Gx6Cg4fXil6I3D6kYrLMR8qfY56VA7gJqumI0xCF5VNxjb2Qjxrun8qKre44Q8ACOei4a0qFCKxBmj86SIRs5SfzE2oiMqerO2X+1/kRSxrgvjClztRznqY3QhyRkdLS2hH44DGIdKPUUjzhrPxs9S1Iubeo8kJ2P9WLd/UxcIS6qActMJH/Io223cVMoCqBbUfcMAdJ9qmA0TpAVnn1bTtMhJK5gwUMNspHUxhTl6QClQpa4UibS4ehAwvIWz830LLKk1PPO7MhR7Nlqk3cdpA+cx0rItSzVpfc6i3JtJcYy0HgxvQ+KL4jE9BTR/Yel9HYe6mjJ1rDSuZoRQKOpiEnsUyTim9qk756au3TpkDhe4okoPbTsmmLQ0hi3HYszH88wYJy0q1ywYDi3SnmmMV54pwc5QITiF0SEc0UJGWs5nzGFIKH3IVQ06ztpS9pT3UiuwOm2N9qLGkQpxw22jMyTV89EiLXtCirRJCwOvsxsQ09gmomxkRKwxwrIrSKQR0Pk4QFdpoJGOOinu1/SyOpnpiG3RHTqnjpGJQOP7tdJ4UUKcQiRdah9iKkBLituYCBD3NtQ0y3Ew62xJ45GxTVrUEqEnYJy01NDTapoWOWlxAcOkxiUelp2dtJeOi+sUfIpS6GoE512jt4sCbMkyNXZIy0FEzB47Q048H23SokGeZGjWr8Y1QFJNhIy8Y1Eysi/G7Kau765AdTF3DZHWo8UJDHG62vrCWGm3Jq3iff9S58TR0YLFoyM3dSWnzDjRLNrXFUy51VnOADaDvtjXw7SX1ToHo2waD4vgRNKiSp5SDbNhck2LqjX8oZCTFkfbSPoMC4YK0YlHSEtwEWcJiJRAPY49rLKaNCnMqVIbsT4MaS/g/LUCkaEDnl1Kj8tnTLhWlJRjYjFaGmEHs7puvIBl6IrNpAV0Sk/zdwM1qh6rs05lQDX7GJH2v/XVVnEh4D/cr0kL/jZ2sSV1YltC2IlglUy70CKC/VBP8hpmQydpn1bVlHgaacWvdPvkHmquU/IZaPfdeZMW6zRH66RKiYFIy78RqNsmbTIVexDyZJSU4/Ezuou0MfsYugllKtCkw9txyUEwLaqLGAVUs48R6fJSEaEY3tHhBNLhZNKCv6nTvaTVfAXYTabpDzlF2jWkNjXMhhZp1w85w1TxcOgnbX21TqTF0iHlEL/apAW+4Ip0lHc477vyorCtXKfVp8OoX8BljZx4PsZIyzFFF1g/G8e4wym+j9F3REk5kYpo3Ue6AtVFqiX3zDCVoIcFuvtyOkujGkQHW2vSNnctzhkaZyo86EWIZ5dqdV2rD8bxHO3fgImpd+osn3CwQ2FDAW0zj7qELDe+HRRpke2mumhqmA0t0rqzamQ49JPWGoYDTaR1Wj409ZBLK2rIRrwk92DyfS/B8ryoIg0Jx0hD/bhs4nhIpr7nso8ad3XPR4u09HO1d3J3647ky/jJKCvH/NJtDSK8IlddpBqz7K3bzehRCySrokk3T52WSOtbgJv3rs7rq5q0kq2iuJGjp0AjSKayon0mNXZBSxR1FHv2DmFItsM8SN1QFqXiANK6ityys6BFWi20WduQ6CetRkIk0oKYiM+HxkWR0GSGekOSj2nqZNQ6KjZSWlMQDaTqIlbJz0SLtKz1DIc2aUllAmu9NLaJKCsHHBTWWFA5G9LqFh3ljsixs/paTIej9CumozKDZYO0qgvQJUoePjTOVNQVN48A7nSZJJfOsLKatOBvYxcxksDsx8QTmOvIeThxmUXTCWGSFp3LffVsaK9p4XpU7ZB4gLQyHQ6JtBzj2HxkzI1jzDj6C8WmAjg6nbdf0k41wmxMaTE1YWPml4q1NGQ+0uq5aJOWxIHQJm0Ymf69Htt4lJUTZDaNdP1LpBEQj9wAFBa2o1Sn292hJnMzkda+SW7TY0+kFfQRgSTfkymJl4vgt9uHWPddnWUBLVBAe0CPviMPV2HI4umEMEkL/X/JapgNHTdiA6Ox6qvCpJ0/FmR4L4qYYS+Gt0daeACvYeOJ0ZxRSDs83h5pfRkFIjxnFNIOjze4PODnk4CfvM8dhbTD482uaYfCWyTtS6OQds4opB0ehbRzRiHt8CiknTMKaYeHSFtQsFTgron//iXx3/zfQ1hNrPjwFgKf/j8gbexV+zIomyoXPBNlJ/A5o5B2eBTSzhmFtMOjkHbOKKQdHoW0c0Yh7fAopJ0zCmmHRyHtnFFIOzzapD32C1B3ERwEs1v1Lvsx16raDmkcecq9fh1/WtzGeS6YaXjQdUhzQIVBVycRWGm0Sbu1GqS9pv2mxf18f9/49Ui7Q9OFvNpok5bDBhaYtP1oSIvrxQyk3V4V0kJPOyGtOMZJOyhfhULaBvMl7ZvBOGk/hzQcMqvyG7BboiQEBDYPTiBU1TukYf7oi7QQkWOX0Vx7mpofGFRf8wJBWrAQSAt0RqIuSPcHt4xAVaQ0K68+qGVABeeCZniu+Rjd+ExBq01FqTWOiD3dxH8PjP5Cic7hyaSiVEL0mL5Ug2ImZ3mnommkqpwIpW1S1sCvpckP1ItqZ8+QhuURTlQQc3KByPNCo0VaaUimHBDjVoUtkigFErspRgajQgWVgW3MWYZbBcZIq1NOTLMY4B1Lknx2yXmgi7RG3ZEYSAaFwTwuS5WECDEyLJIVAGs50m2y0aRFZCIt+MsYQbkBTGjP7KjPpKXKTFoneFan0IKjRdrEjhkurrOjtioUCGXTLNIVfYgIDCLKCGQiJv49u7WVLvqyjX0PfUerQJA2cqIo5MjPDDzhiCLHrBLiNY+2/NyQk1Z6JGkVwjGGAAkOdldjV4SYeOcpmHqkYxrpOxIPV5aI3Mb/lIUOOA3f5Q2LOioNfhfTZscOdpOOX6Qlz3Gi6eGKowcLjhZpb7d99Rm027VVgy1qrtVmIq3lzWBYipZtRIcaTYpg0hrJlpa5jABT5F8hymrRjXmhi7Q8g3QMAUE8BrMjx4DJSdHTLbKxLDM4q4AxbWqwzKKrTgx/5PKGYjnae9DVEbAuF0eYL4rR8FkcJ/krTmM4e2ZeaLTXtALmXkiDoLaqtBSnkKE8eL+cgzyNk1bKThgvAARNDk70EEik1aowonligvAipG1On9GaWnVvJSZ63r2rrjVUUOr64D5bNgGRVXAEwIJioIcP/maqaUaLyADC8qxeAjLzqOLaIUj7gbmbGhYWHaQNjgyF2qq6OMsEcdBFs3rnZYOuVjxNkhbXsHS/2CrQJi1vPjYhirRKqm+GkqcVXoC0XCyKDGh2+zY46us+206kxclDbdbsUQegoIFKMG4IKLiNlVMaPvibUc73dzjFDZeBecwOKRECk1QzGj6pRm3aLyxapLVigkxDobZqePQwTsjx4CDFwIvcTpAWB94TM0erQCItRJi6dacdpOU8QG3H+Rij9nmhi7Rsncz0xTu5UGWpjzhgTmWdCSpjNd8ESWfOOK5pfSPmTNYX8maU87RQhTFbAbD1nnkwo9UzrqxVB/OhRHW7dKRFz+XXoIPhkFu1uudVUGqVqqhE3p3YCCPJNa0aaqLMLRnAVWBWQPRkVoTvKar2hrSwsRbIsDuMN4p7QETM9qnvw+giLbqHVq7ZgRNdHHQd2NE91IjOD24PYjNUQizF5FLZbU7f0S7vkzwcuVqSFtecGD5jWqQFiXm5kdjoy3lYB3uGOaEsbBhCpC442ssDatEeajg0VtXTQyIUl9oPomlFSsOHJcM25J9S6ElaBXRgVsbcyw35vsKFohjMjTpJHQAmJxFU/3zQRVo35mezCiE69ZyIlcLuJGndZUmhLZFUI91iFl47EmmR1CJtalaJwIgdOHEe6oWkdaIbRgvXS0jag+OdaietFwdCY9WD+x24PunM6tM99juvG2iZrWobhuwg7cEtbnNFiXaBqGd3hwVvR6gd19O6EFck17y6siRJzaUFxoybbglzQRdpD+6v3dbudrXDawAGgr5wNcpPCBiCyE5MkFYj1eL0YBe+Uh8VaDggfcoSiiF/W6Q9hh5UAGoaVdvoDQs5D+jLBT9tXZMW0v0ykvYFUFv1eDvuFDq1VBNtfri+E4vk0gZDNieNh1jQM/a5IObMKuIVSUuT6ZOD8AZtDEBa+Jm7eJQ0HApph8drktaL1h67DUBaLymbW+lBUEg7PF6TtHrUHgu2CQxAWqzccDe+NeTioJD2JfCqpF1FrPjwFgKFtHNGIe3wKKSdMwpph4dIG/t6vQzKBnQFz4Q2oCsoWCpwq8/Yq/ZlUDZVLngmyk7gc0Yh7fAopJ0zCmmHRyHtnFFIOzwKaeeMQtrhUUg7ZxTSDo9C2jmjkHZ4jJP2ffzg/3B4wKrr0/zG6lGcgb2zEKbCWpyHRSHt8GiT9kqv7g3767zPI+1aluWmmoG0ey/0o8OFtMOjTdqqGm2AFpkzmz+eR9psSp1Vs5D2sJB2ZdAi7YUMWx2uOzgMCmkLnokWaYdeGQiNVauKyxGto6vqEBEgLa7iVfWFqV6qXFDEQgC4gaA4dxIslAjuAixeVaig2uMSoqo2TGl96RX18fQitM2HZ9AF5ENU9zTdNARd1ihUXHTDbwC8rZCAMhqKsuHovPuhnI2Y50esT7mqEXOsOsZJSyMPe8cyZtWb80udqW5yTrg6P/8SIm0aIsyTzkAirU45Mc1iAMSoJZ9VcFh0krZjiHsxFcVl8hDM08pbAB0tkLTGe+cgOfcQuc75GKRVbZFt342vNMZJK8xw1Z0dLauyJZkVrmODFqDOER+H830eQU8YETkuU7Tg5QH4ADlML6/mLDDpmU1KcrzG8iAbXWuIccUg+5BBS7IvvlCcmYhgrsow0lnjqAuPBnyBSjB+k3adnlm1R+ZVxzhpocaBB55blRSFS3XgfXBM/IJF4D0YfYT/tLMNmnXOpDUSaS3z6gojyr9ClHVfk7STQyTzsGRwrFZD4UeFMdJyJmI49K/IUt8nj8Jz589FBrbdgqBjTZtpbwjkVuWKFWo3DpNFeQoReXiBpNlMO+RTPJBIewF3HKTVii6ig7TG65K2e4jokaHR4QxPiRQtGlqkrYfD5301RT3lVbVZ/8UVSl5tdJA28WUgjFs1ay6zqB9kMA9JK9/STVre1hxBFGll5rh7Y2qW+5VJ66jWEMd6hKgvdBjVe3jVFml1j6HaMDQtmARJKIVlBgbM+7BD3ghE6iqjRVpfsBq1DIJxq8J14L5LgAVoIGneDgiJXxyuo5vOhR29DM5Jy9UE6jrzatYgTV4CXaRtD5Hj4lKHfjMHh+alzRhpef1w9+WF/UAFYDbGqyItnhD1MqN8XbRIyzFvYLZaWwNh3Kps9IwzRfdNYC3We36+sy43Kmc62tiDVXyPfL6mI+V1rfP2mNaQFh7sSFWdkS0jLgeRGxGzfer7RHSRlp3sHuLeBrq+Af+qm6gRozbY3xZpcQNqRXA8MXIc5WFJWgS58Mf05gJBhVYbbdJSX0OPe4K0vLABcJi0KBFLU4EiL5oAvbBEG0059mgnFGZEZmaYUbVHSfi5ZO+h0Una1hDRVwBJoW3Tl9igvxSaKYizBxEBKSfqQ5xIy9FjhQQgq/KtNtqk5W3taNjHtJOk1bLkkM8KaAEsZqMDV4fVTeoLjBH3zMjznraDuLFfHW6cr42QpPvzZGbUd8P1LGsnqf0G0NmIj8wGRydp20NET+ISj2Fd6vZrbb8aqZsY/nsv0xrSnmGgMXqk+K7r/ajap3JEWnD48HxP2qh1usoYJ+3waKw6EG7WZTddcl8ejwxPJJsJLRpmi/Q3jBUkLS6xuPfBMcIviwFJu0E/zNvOt44VJG1a8NV32S+KAUmrZWvIbxorSFowA1dRrxVfHgOSFuJLrMoXHytJ2tfEig9vIVBIO2cU0g6PQto5o5B2eBTSzhmFtMNDpC0oWCr8/W8FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBYuF//ff/9O/WVn827//l5AKlg/FegWrgP/09/8rPe1/dfp//D9XFv9y+r+HVLB8KNYrWAX8H6f/Gz3tv57+y7eVxX9/+r+EVLB8KNYrWAX8y+m/KZ62YIFRrFewCiietmCxUaxXsAoonrZgsVGsV7AKKJ62YLFRrFewCiietmCxUaxXsAoonrZgsVGsV7AKKJ62YLFRrFewCnjA08ZGoDV+/+6vPyPpafhO1URgHlB930WgH5Nz9XuVnEQkFywQHvC0f37/3Uea7bsff/0jogoKFhMzeFrj50h9At6yp/3jx9PT30IumAU9nvYn+dgcf32NpIKCxcPMnnYKz9aHt+tp3V7xtE9Bp6f9SQodx+/F1xYsKh7ztLkf+00xp79GcGYsjqet4S4N7gKLp306uqz3i/R5+nv9zOC3T4553uOtgoLBMIunDb/0vWSJKdU+2CF7lW/f/tIZ+CWtNNqe9vuYHKenn1xjpDfrkj8VduJPTiS++0kxgIMR6McMnjZrBhM5NaTI72Jkn9jBrzHXmcmDT3X82dzV/uihxAXKKN52VnRY70ep8lPr2ezPirOrbWk8oExmTNAtFsY1f376XWGhNv23r27M+JQ8efvSqYBbaJPhV4VSe1lVH8sl4a1hFk8bZDaNJPZ72pyf6dmuvZjlVnoqKt/7u0Tga5PyU+2VjWCy5LyH3Zje02ZzTYi6lev36APnd+6PA64jVJQgr1w87bMwab1QaO0MDXu1jxSn87QukGzsy3qDT66+Xi8EZNFpPW1cjt3e1zFyJf9b8DYw+3PauBpLTl5u0tOe/qhAeB7Jmaf9ap9q1oqPnyj9Qen0L8WG21O8q7S/9kLETzAkztHTqsWP7lWeEo71E0N0tF625v2JnMoYc9QT2XJ7YhbMgknrWZsTdleslGw6JlemwKSnTXclrsdXftPK7JTp7GhzI7pw26AKTHjar+nuRkWc4FnhlF8kF7wRzOhp041+pPZ72kSjSYdFSSzX8oOQgxMH7ZjtwkxyOjY7s/TSgxcfunOUNEdPmyOfV85VL7bds3T/56W36rBzTTe1yuZBtidmwSyYtJ7NUTMxQbFS8hSetnaD5o9J9fAnEJMkTwZVYNzTNh/aqSPy3na0iTOJ0QVvATN4Wi3paiiq39Mmmnd7WgljUJbGvZr7IqNrbEP1S5q3p/3p1x+b+zwPYyyXlzwRSMshpjpfGypVPO3TMWk9r0aT16qhWCn5cU+ru6ePsrP44yrTNXIMf/z8V2PZnORtKKH2tFo0uFp2xPFtPM7cgtXBdM9p03PS7CqscOLKpKdNXiV3UpYhdNEuz4OFoK/6fpDQ5cDUViM9iOk9bTy6a9DpaRVqmm0GLGEMqqF42qdj0nq2kp4rZQhS0VtafMDT2g3arjKkLawsbaSXGmrkJG9DCW76N19+f03tdRfoaq9gVTHtJ2LxVKv5vFfBlDqjp80+65qAmP2XnyjE/boXuh1+SvHd1eSY1tPG87nvfuaTWg8j97QSid41rdfCjm2heNqno8N6NsDYotaPAxT5mKcVoX4Nu4o/pvekgWz5j/oKWj/JFXAL4WnFhJ9Se4jP36MpeIuY1tPWn82mZ1kORcDPV7tImLuyxmGNua4c/lRM3is+5x2bOBkUPz9P27hM4AFPa8+f1vfusIr1OtTiaZ+ODuuZEOmzSyGeivqx+COeVuCnXLKr+OMS6bPYPz5999evtJZ5HRU5z1SellDvJKm8pMe5WrCqmNrTphVf+qzL3sckNCE7SZi7ssZhua74kN7RieWpMsDJgKv0GiaorEkm6XH2zuZpW0NyoOm4kb97kLqrOpzRCe60l+XF0z4dXdb7I7h4+uOfIMIfP1vvNRce97S+iKuYy/jqaYrFp2Uwo43rHPEErYvkCox5WueTqI44wa/bxFQq79S+JUzvaesnCF43xFIuRxcJc1eWOazxlwvzJ8AmfSuq8b5GvB8mOe9hN6b1tOlaksGXlazjhiNacB121g3iDrdZ6SS9FEyLbuv9PGmr5su4j3ra4IzMGHK6Z6uh6/ykof14+FFPG41n8vg74bHOKHgjmMXTJjbGw9rkEbkezTg7laeFW2uKj39jxvnaj+F+q9/KQUqaUQrNz9Pm8/eXrx6sklodF746Cvjua3vAvzYTqnklrplmTVTBdOi13s8ZJWCH2oiPe9qUIiPW/Mm/I1Z/D7HZyOb3n/zxggo/5mlbKam5P2rSZA0UvBE84GlXBg942nnAsy55/4I5Y2DrFRS8CIqnnR2/feQHJuktDD9zKF/4GQrF0xasAoqnfQKyu8BA/f2xgnmjeNqCVUDxtE9B/sQNqB8cF8wfxdMWrAKKpy1YbBTrFawCiqctWGwU6xWsAoqnLVhsFOsVrALC0/5zPHEsKCgoKBgAfy+etqCgoGBgFE9bUFBQMDTkaf/19NPByuIfTv9dSAXLh2K9glXAp/SJWPG0BQuJYr2CVUDxtAWLjWK9glVA8bQFi41ivYJVQPG0BYuNYr2CVUDxtAWLjWK9glVA8bQFi41ivYJVwIOe9q4KjE4iZimxuHP1NvRbbR0c7O6EXH2OVON4u9oOce64va7uQlxYFE9bsAp4wNN+iIlvHEfsEmJh5+pJ6FbaHYXY9qvbEzHzg1ornrag4AXQ72nlaK93Ie3KCbRXWsuEhZ2r76jXcKO7lCevZ8XTFk9bsAro97TXnIee+ccUdyQuIzrmKgdUYWCbGOX1Zsu/7Z5scejb7+LScq+8vOIAuubEoxTd7d9S2j2hQ7zeUkBgUnXweYu13zvq+F1kiqrqRzNALqNbCdJ7wB7xsyqprrdPoha74uPdzVE12vI47j0oNKs0xQH379jhnTTYvMkJ/75I6LBeS12jWhdWl+UGyqxrldQhPe6+o4kpOTKHMjSFCNiXht9+F6ZUmUht5xxT8lgyZdffdAW1a6ZF4ODgdgttNYMqWBH0etoWbSUv7aK2z9PWD0YhBq+bh6XESEPWPf6mkj3FR5L1jHULwqYiA+FsJWsG2Y/VD2QFVea6jFx+wNPCcWf4oDyas9ES82S92VSacrXGpWHlTS61pyVGcoFTe9ooz7gpPG3LviKKykx62kkltyvq9rSfFRuBFk/MuYLVQK+nlX9pUWSh5+ND6PO04PLng91bPyDV6DwFd+DDPnt+XTNWE4gTx3f4sahVsd2De523UfyD8qlEqp9AZj9+qe7u0Zqdoh1yPmPtJiZ0nGdR0S04lQ+uT5GZp4Db9wK8ukO/9GgCYCY/cscyN0brOaxIz/AFRp+nTdxsNDStp6U7q71YimzLTSFrlJS4NzuQritetN/k7FRyq6uUXX/TUnpWr4AZBHLwbgiINXTBCqDX005SZOU8rZ1iPC7lQlWsH6XbNvla5tGqg6pIzot5pR94Ubk/Ly+z1S+F5i5AE09TCfDUlattnMRUnvbz7ebOO0nZQ11lSA80PFWTF3EShNYDEM1hNa/Y1K2FxWOeVkPW+Kf0tDSnb0uIiByTm0KyXag3qT1vv5a7ldzqKmXXX7dU36YwIMbZwiZdYmjB8uMtr2nrAaWQZpWXm0SKtof94Ll0Qtd64km3k2Z3C3XRmL9WZTNpxqZ+6HgKTxu4/6CnjJG5lcGzPTn42vOoxRZUQFLq5MKiz9NmuPaI27bYjoelY+oWss8cap/XksdaaF1838UN/1j13UqejFX90ZIe0b5THkbz3MYEHwqWFW/5OW1N4xRK50ATpAu+1jy71k3iyHMOGnnI06aa6sloNMHcS07haXfvdCmoocy5p2gbrQl1OwF3MhVdWEzhaWMdOGkLrkXH1G00l9Ncf4081oJSgVTX57YhVH23kidjVb9bksf+4DyM5rmNCT4ULCt6Pa0XeLa0KLx67x7EfVosUdJn9fUTPEdrOaNHcHKuH3y7Wt/neRU58TxNsWma2APUeXTDqLbVnpxAyjQxs9SQs2hC7jgHxQ5P6/h4lhGPACHoc5bJO1GtjOuii4o+Txt6s+L0NMAqVGS604cqmsyhKpms1kauv0auC9m+ySxZZr0icL11UhuoW8mtrlJ2cVVE/fOzPOVhtAzSXAQKVgn9ntbMoaNZwfdpOaDkVL1AoexpxfcJAH8MHLzXfAJ4ufEnH2lWKcWffR/sbG+ejHtCwqWtQH9A7bKabzENezxtNlOVwV7UFXZ4WjtX12JZnkdT2JfK++vtd7fuSrvoouIxT9vouuVp69E1mVOM8iWfSDk9h20U0hSyff34oH6gn6HJ2ankVlcpu361BCi78jDalLOJ3+1s3R2npxYFy49+T1t7FGPCBywPej1tBq9v2y95YValy0t666BxbvXSMX1MFvD7YhIblXkKNYh1syqKaZh72sxlhLvkTEyzs4Y60HgHQbO2BUWPjcvt15/GLLRtH/a09/EyB7Wee9pjjxjRTeZaVenBea2suN9odJm1UFvA0NojQ5azS8lZcoenNeuUR9HtKdfQr2D58YCnBcnqx1Hps+2lRJ+nPT5O40vPEeBSs2ehm9mksq/0ctePFcJbAvWExZyKOatA7sCOGz95HS56Kk9bO3Jki/fRMAM/yPNrWdZ4h0Bafo9u82p2a7eK0aZxJdeQF1849HnaHLaFx5tBZm18XaOqWKhGPbVDazI0hRhoKJHs2yDP2aHkVkVKUP1mQxBBecIG8QIfcb3QF8CCGfGgp10R9HraCKwqck+7vOiwXkHB0qF42pWCV2mxRNfKLZ46Ly+Kpy1YBRRPu1oYe1ZYf/CzvCietmAVUDztiuFz7mvjlf6lRvG0BauAN+ppC5YGxXoFq4DiaQsWG8V6BauA4mkLFhvFegWrgOJpCxYbxXoFq4DwtP/59Id/WFl8PP3vQipYPhTrFawCfjj9t/S0/8PpP/3jyuKH0x9CKlg+FOsVrAL+6fS/0NP+6+kP5yuLj6f/GFLB8qFYr2AV8EN6Tls8bcFColivYBVQPG3BYqNYr2AVUDxtwWKjWK9gFVA8bcFio1ivYBVQPG3BYqNYr2AVUDxtwWKjWK9gFfC4p73gplAhLycWd67uHZ2FNH+cHYaw5CiedilxVFXi9lpVXSjireNRTwuNFU87CNZuoNhhPO3GOn8kJQJLjuJplxP7chzA+4h443jY027YzxZPOwDOpNhhPO266o7AkqN42iXFxjqWEvtlQRt4wNNeJTcLRNRyonjaZUbxtAWrgAc8rWbr+y86RdRyomOualBX/h3SI0a8l0gcXikHXCHv7gOj2iNuXEYUsO6oQ8rpqagSIvda/UOnN18cU0NlAgyfNb+JWh1uKItc8eGaoqo1RFylDu1fKS2ar6OrkWMiRKzAs9puT6vHI8bhXsS1tUrIDooMXbUub/UdG/DeOo8MOZLlr5rKR/VCbbxBt6MLXYfqfQEkRrSn0DWQJp+Rck+QZKJ5T9Qu3o3XGf2TWJM7w5emrX3PiGZU1htK5ar1DJoYv/3HuDIUuVF3/yi0P9l1d5uiLcM4F0Pz6Uz4YYUCMdTaSDFju0b5gnjA0968p+WbAS4t+jytcYNg5j2Bkeye+VnixmSonz4ZYoMsn7ikaBlVHyU2aBs6nyMIjjWmavNJj6vBRjbNKsli9ZXCNRgXIjHO8CVEl6cds8IoXRzH1Gid5+4g87R7uT6BfRm4z9PaYTTQ5bltRmHC0zTQNXP/LBw8adc3kKz8mb2aqp0kyUTz5FI378L9NHD9EtvUJMaGu8+4ulds9UhXhUy1MZLx8ccKZlwZjs3gh7ldXb9izai2dkRUw7qMpZiWMRVIQ40LV6p0cpQvikc/EVtlTwvaCxlh7LhgR5nLcedH+0cXziqDepZZMVxtqHjikmKZOaPbhuaI3GeDbNLb07sxZVWxmPSXQRg1HfWZ1iygTL40uBZR1lxT5NJj0nq+5lw64DV/rF8ohg9UtLSbWTdTuqUoZ3dGN+dox2Z1WKH2g9b+SHJedyNnps+w9+X9oTunnKi3byCt8gowTydJiHZzWSjnXZ4pkykFCTPIOYXbV2d5XUileI5Pueoh15etsfGnK0k0XMOx1r6nHDWT9SvvOis5qy1DW2XmVufrC0NmrHQx24vQ5ChfFm/Z0+pKDchOiQsyE4iU1or779fSTV2LChnEtxRLmUbdkBCRUmJqLmDFTpi/acIZ0ie3iq+rELHJalE5VUKZV4ngmiOXHZPWk77DoSZDyUbSmH1RMwudvQVGS6jv4eVaODNbdJfMzI6teSCfpw7UrqYld9MkYU9+nRn7BtKU3/iituKGqka7gVaoj3d5pkymNEnCzliXUu9TY2nImkHNlSDVL/+r6FQggXFJb/XA+7quC9KFbaCHd0llikE3uXC+aWaCmqen1tyh0Jolr4S37GnjymjLtEBixMIx4Ke3+cRqoNjEJco0qvXWQuQIOENt/r2Ly6ZBVeYMXliMN12HeG6DNXpEyrn0mLSeBtfMmyaoYUdCEytdtYDoMVrXwVa8ZNaRXEegCeZWaeQJQtUePTUwfvcr1MGx8jeJAx0kIVq9c/0tKD7PlMmUcugZyphyAk2v6ruzGLI83YbSm/Ef2v/6I4W6rwHGNSOPUF/X809RgFHdvIJnWm1cui+qUs1rKYuc6ptqbhT9KnjLnjapPiPeGK7Wm2nKFY9WI3G310B5UnnKrPlRvTmD+xAfe/EhRdOZdg3tputZzfMkh1TJchutxqT1tKBvnJfGKhVw+eK7+jy21hVQKz1bCRO1rltKl8w66iWv0dgor7uRM0Jd+SOepiwu4bYOvEDfQLLyZxfKxGo7SUK0Qm3WNMgzZTIlq2njTKtP9sc33LV/D7iUnzLHIsVD5hHMVHo2fh6xGFeH6r4GGNeMXKHm+cA4dHGJNa1vCKKkYvTRHfqjvmgkal42G9nb76ms0l4PxdP2EGvvy/pl+uTW0xLZw9qOFQFIIVk2buw9HVizHjSlZXMX6pyeyFFBc7PV1rwfRUXTTiKru33/ChitxqT1/BQx3VBLA1KeVj5p+lK2dnNvaMUwun1TK2PxZrOlOcmqo3Z3hPkibuR1N7I9jSIBBlxLQmqkbyCd5btJQrSz9/Auz5TJlOrO1fEaStyjm3jIklJFcScqH8H2lN6MnyAxNdi6dwGlppErO69FnV23tvdqpan5rPME5676opGoPivpkIZbc9mWCV4exdMCdo/8fOyLb84giffVIebThiO1WDKHLmFZr1VEFnNRxcUV12yG8AWdKy8WRMJsakbk3lrUerR3vhfv/IhIY5p3psOz8w19uQxQNZZxN7oXGRjpomfnV3GpWGZ0WM+22cfg4p1vOSCJVi2geFk4U3mtGMCKoym/2GHoqV5L6ZKV2cas1vdq7Uuz9SWYaNqRJZJzcdGzcKRyLkonn7oH0l3e5h0nCdHK3sM7f8IUWsgKUEoDcHcY74/qRmtgVVNHXUrZmsfUgFYpSm/GD8hpSqN17wJKlvY34r0uriG6up6G31im7mWqxU+x1ReNRM1jEDwB6KnKplG+EoqnJdrPZD0d4m3bhLjCt3NGZGIWMBJFXLMnTyD/JNeEr5P3asYC+2qA6eOazzrkTK4mbioDsaQLX9y6a11SdFhvzApUrZU1CVgiU3lks3naBrbR20qXHCxpq5mGT1ZPXqRpJ+NDgGZp1+D2JgdCTJbnVaCTJISyZ75sgndJOa1FpAsoPkfoodVZ96sppda5XnWX4vM6pefj92jUeNY7QelZP1P6RNft8+myG8uoeVpAMemOTn2RsdQ8zh4Dp4DKhiFfC8XTBq7e01SjQyxbaiCOhr65vAiKCilnHnl2BN92c4kJJTOnmvcuVMHh+7op8SGm/cY6OXOol+bXLpHxhhvOaIVM5k1qfuMCxUdsJa8Gy4JLetb9o3CzxB47hD5GcInR5WmBGPShXvpOypoEFJrrytlqa9g+uSlbSpdcZw7Dy8rEGkMjLoqNpp3wNAZqT5RCn2nxUeq0MDYQolXerBA6SEIoe8uXjfHuyqH6BicrQKnG/lF2D1SzKrXelLL7g6ghp2dXSm/Gn96XkEZbvQMYB81qBjTjI9pdd0ta0DSWqSMVkyiuvqiQmqcgv021qmzeyivgUU+7AuiZq0sGzM+Ls+QRRKtsWqwwprNe11zqiCpYDNA0b8w2xdMuC/zkikuoeFS4Ak8GpkHxtCsImqZ42pXDanja9jOs5qZt1bEi1ivIIQYXT7tqWJm5ml5cv2ke/a0+iqddQRRPu5Ioc3WZUaxXsAoonrZgsVGsV7AKKJ62YLFRrFewCiietmCxUaxXsAoIT/vPpwUFBQUFg+HvXtN+OlhZ/MPpvwupYPlQrFewCviUnh4UT1uwkCjWK1gFFE9bsNgo1itYBRRPW7DYKNYrWAUUT1uw2CjWK1gFFE9bsNgo1itYBRRPW7DYKNYrWAUUT1uw2CjWK1gFPORpj6+15Q4x+hBxk7hThuMILSLmOFc12O0IHG8nsRX9Emianjt270YLZc3iaQtWAf2e9pjeI0PP7Nt5MHUhMIyn3W7El/a0edNzhq1ePG1BwXzR62nvNeVOJJ9IvpfcxmelAG/b074wiqctKFgy9Hra43fb29dpNvdNv3dKIJbL08qf3B0c3G6P4LJuGbV7h9X5aCuNQy61ioA8G7I3njZf8COhZ03b8oiUk5ru37HharT97rMjhN0TFrjeUn8ItbJ98AE927nbzSMD6tPB53dq6Hr7JOVR4sHnLURu+gJ5vIUGVQmT6q4eb/IJ0fa7uIqqnoBjXh8dnlb9C1W2DLV7u6UnXtubOR/vT6TtpGxmaCHZE+dbqSmpg5issmVsqDgFcuXlVkztw9r5YkVNjRqbRfnrCB0cbCrsoUnKx0SYCREYN2WO/tGBibwp3UmDQx9GZkwzyl1V/Ni4u/utNLM0g9LHR7PqmOoTMZt0woS7Mq0TF1lvPZ42nnsQ27chAOZFawI3fEls86CNmT2tqZmQ0oOghqepWtE8xwTo87TifA0/T5cYBdHkbjZUjdRtfub8T9hh/XnPlGUBML2nrW+whB3FjemVowyxQbLndaaPTRfuqjIztmZACrTNCji7bwgT3inuIONb3VaUjxwHHxz00CSNzzEzQeKkKXP0jS7nRTXidch94HjqUdaO85Fxd/ZbacXTEtN4WpO5uUYHpNIPYe9F1luPpwUljw9207J86/PBvTkjZ5VN4JwvGdsUaTGPzpFnaeil2E3weveDCKvVwL3mwTbSuYKNyOimkC9+83pVxRaugh88kxQpyThJ03oEA35WySirkY+wzL3PDLx41pza02qYHOW9nYMM5vHswKbWa71ekCZqHxCaHt3dJ23oytZZZWPs5IdtirzGXRmDARUE0Q4+u3112yamQXydVKfCNjGw3QhlBh23ijtNqdOUDXpGZ5+IJezurbpr/8sMkNIoIxgJveMGuvrd1nKC0sdHs+p43NPG5Tef6QI5QoMt3twcR5+nNR89hzw8zYBmOpktOV8atjnSYh6dI8/S0EushmNvQQ4zXvDQKojsdjevx5corXo/327ueDlhjssQkpLJHB+Tzy6AZWXXtPBTLOf74llzak+7e3y3HSt/eR4pSKmh182dzZN6ZG0f4GHHUs802ILQWWVt7Hq1alPkNVrnNMD9h3fboeWaXaJcrAHltXRdVXlgpPgUmsbTdpuyQffo/ElMkEse3xyheJdGyaLxYODBcQNd/c510kDpi8Sxl8BjntZ+aPwiGTOWZFzAuTmOPk9rOfeSDTGaCQyMRWcEi3J5HRnyLA293LiRHtPlcYE6dlK1rXoNTGjf0Sm3pERwL8wi0HRVlbTAAotnzT5P20IkCMcnXihykBp78wgxQ2NTIifEeAjIq6w1yKgdZbUpxhW6nV8h4bPl4dSkhBaocJbfZqV0ifRmI7XE0u0SO/EMuO5mtykbdI9OtbfgcWSfvgjJQz807r5+t3pWf5Cg0CJx7CXwsKe1n72eWM92kWXMuguEl/S0DbWQP8+S0yvuGQMkqDvUQh2rIi3k9fL11xyNp01UzgeYhZqeJnCEbnKRZsH0nva4PSQOsj32HMpbU7at6SbUUWXUqUeV75zVDYwrlE8dgFtfARPYZIgZqHCW39Zi+NYr3c9qSZVQaIGLnLqb4y1nAxO6R6faW/A4Ws98gfQu/UPj7uv3RM90gyZpkTj2EnjI0/rali5pbSipjbZ1FwhP8bR+ZqLIuLVXdJZZV6Eo10Q31EL+PIvv1XJ6YRnqZQ407NT2Pd/4DGmQ1auW+RgQoOgWGglwLWmBJSfPsqpkwriT3Xxt9Hna6KMUQB3Fo1GNs7ZHa+zH11t3Hx56ThsuxbfHWAl3VmlJlEB+FbQpWjUqE9yh0sPn1hlUeOI2kcnbJt49c5y4EqVRqK0i1rxLnUZEtykbdI+uZ72vXt6m8cp1Zp8E9oy7r98tncifsC6eF4pjL4F+T+vPaPSAoANSVhs1bRcNT/G0zuHZ4BWoorPMeblczqBo+8/4tBb08lOu4JnIRx1rsozsBna243li3s0cWXPK4TmkKlxxIxHqfzxu9FhY1j7VTws/XG8nH6TYuugCYFpPK8E+wasyKUjj9ZNu+81E6JYPCE2HvX2VhdxdpVsMa415nLrGZDpFWsmulhks2WrvdrbujtU/ZkVNNqNEtaRciklWUTSSa3r0mLJG9+js8D28++vtd7e6dVVkGntqROR5aNx9/e7UyeJx7CXQ62ltvRxUWNJ/ButvkfX2FE9rMYeis8z2mAASOtRCeG7noJqUOYP9wNjDMb2pk3ezp+mJbmr+SmpMMpFJ1fhS2sATsY5UaAEwrae1sjLYh4zptV45tHzAZGHpsbvKsJ+rVxZbJavxsx/pIMu4se0P05tQAb1gpfKsyRagc1NhJuUj/myXltaVSu82ZY3u0cXiuAFXxXK0FGq6iWx1b3rG3dfvTCf3Zi3HL2GRPcYQ6PW0Y1YAqLBa/w1sxkXW25M87YHffAFGt8qu6DxzmsMIdqjFqOf5tR9eWU0n2cTYrh+CK4Ox7UVJ3s2+pptuftCzMt0OKiIzSf3iZHQjqokXj4iRvw2YTdpFsei0nvZgV9YjtvzuXvibTK+buqgJualrTadLWNzud1fp+ryCHPc4LaiSz76ZAe48p2zaeCePuI6RsDxr8jtU9IVqSWmKyqBP23J6dJmyRs/oMD7f4gjvWKXG0FxPNDB5dtDqoXH39XtcJ/7IR+Ki8Oul8PAnYl2olb006JirbxfNDFoSvIj1cqe1eljt0S0JZva0uAqOPQVaeLx1T+uFhW8YfXs4sepZYBRP+2wUT7sAmNHTYtI+8BnnguKte9rxp3jLZcLiaZ+N4mkXALM/PVg+vHVP23oqGM/4lgfF0z4bxdMuAIqnLVhsFOsVrAKKpy1YbBTrFawCiqctWGwU6xWsAoqnLVhsFOsVrALC0/5Xp//0364sPp1+Cqlg+VCsV7AK+KfT/42e9r8+/ad/WVn8x9P/GFLB8qFYr2AV8E+n/yM97b+e/nC+svh4+o8hFSwfivUKVgE/pOe0xdMWLCSK9QpWAcXTFiw2ivUKVgHF0xYsNor1ClYBxdMWLDaK9QpWAcXTFiw2ivUKVgHF0xYsNor1ClYBD3vaL0c3VVUdXmxEeDkxx7m6zk2RDiNwfr525PNY9EsgNT0A9o7OQloEFE+7MripRvIkR1V1pYi3hAc87VW+1d56RC4jhvG0e+BL8q4v7GnzpueNNV5bi6ctGAB7tUf5EjFvCP2e9otUguXsF+lnP6KXEMN42sNGfGkM2PQZqy6etmAY7B3BmVy+QT/7oKddvzys/Nhg4WbfbCiednoUT1tQMASm+URM7uUmAkuIybkqf7J+xhtlYn/j/Czd2ORPXivL9mx6fpI8rR2SgYTMAedoeUTKdmEb7yUbR/Uz8LX63uomLvpq5XBNcdWa48abPt/go4TAKDIpEE9/OKAN9QQYfVFa9KmOTt1owvXYXx0dntbGqS4ieH7psJTbSGNGvGoGN0oloyJDSnk0lxAJ518Sg2Cz+uoUEQ2Uononn8FtRN+Bm/TsMrfo+0SP3DREyn0RYeI9I0JuYGM3nDusn5GO1+n+mWDKMIZMEZfuVz2qjX1FQ9I5lOHIifG7L2PKMNmvao3W1p3ouqoa7UFShzi+DXO93fl4WCE5hloPPeZahF4Cj3naK/eonufLiB5P2wdxqDVJG5Yk0465u9ribahciqYs0oXnrGFK5TMGEDvzVuoPwMaaHqvND3kiQPAKGTQTRDH1aaNxEwTj8ozMsgjo97QVJxuQVCedNVLLiH4W1sDqTBUJUMAUuQRFZx7AyC9zOSY8TQP51Mu98z35JDXXPMw0sAwgmvIbX2wmVrsnqQHyhtSAhm38OeHPpdrmFlR/7qxyjA1Xbj31Sp7OH5wzxkNOIxkfv/3vuDIm56TXG11d1wNNVJvmndSg7FnnkzEViKGm9WKqNIIvgcc8rVk8OgpSLyX6PK05bLvb90gUA7JJmrMkmTZFWsyjc+RZGgZKcNze6HD9i1Sb1WAPSN4E+TAT28jq1ZXQ9LPPFa0lVfuSg1Yxu7xcYlkvA5xFVpaTdpNRcCHwgKf1vKm9TTP06H9jREte0Xj5NaqjG7tNkSubybLCjdXq+4dLyZRSDxq54VCOq7WjfTto5cTZDcSCztZqFnKpvALM09jQWqgbaDeXhbx0cq/zTI2cDTGHWOQpY+rwupBK8Rw3YoxRl+rLVnv89ZUkGk4Islv7djvUTNbHrOucqWB0sgxnjAs2na8vDIpXNYCvnfXyRKGXwWOedg/X28zeS4k+T2sH5uklMTNrHjse7UmnyJh/+VzMkGdpGBjX09Hluigo2MdHQL2j33M3tXhooVVvA+VWnZLSZ5iuxXMrWmdZMTGxXTU2zr3p2Oujz9Nydkk1FOQWm6G3gMjc3oB0wDnXtts0uZyHkjuhSEL+Q06TQtJgIzcc6sJVPQCemztIeRw10pTfW1Nmu/UG7QZaIfm8NEz125zKMzVyM8Qc3bEupd6nxhjDkZBfN41dUv3qi1SbCgTcQOitHnhf15l7dGbL7JEBobK6m2zZM03xbL5eweiqpK4p7WUwzXPauF6Or6yWBn2e1nI+jxq6KTYZYizamRUZ5ZpoxQrIn2fJJl3rhn+ket2hFurYyUtcq16w8f1hWidEC5Jajxnr3HWo6WkCe+ImE98XAX2eNt0xakar283QW0gFGoXVwR7VGJ25GuZIfzKe0AQpJA028ri6R5lZ1YCfsTf1C2PNNWjuc67WD+VChLo/rd6p/hY8mjxTI7vNDFoHjiknUPdKj00FBc/s6ZzejH/d1tpQZXVfjfbIU6iv6/lnDMBNaj7KaeF84b4onrn9iQeWHOzbkWpW2stgKk/bIs/yYdE8LbCxpu+EGJhibZoldMe26o1PIvQUQpJaaCRA/NJtMFF3tRlUDje5SKbu87Ra9oy86NlTtyeGXhuxWRoKtQ4auxHT5GpMUi95jUadFFIPGjlTt5diWVmsZVQb3JXvkGu31TTXlN84840xq43Pzg7fr/mjvNqerVB7mA3yTI2csW7vi+mF/rRZlOBSfsoclw6KlR6k4lKv9Gz8PGIxrg7VfTXc7JjH7Ou6PGla02pJHVcul9MREQoong0fymaX9vauWWkvg15Pmw98zPzLhqd4WufwLXf2CCzLnJfL5QyKjpt4L2RJurOL94fpzl4TjAXld9MqNCHvZo6sOS1m/YTMVhKtGwnwk4m4u/IjNpbtnjrtoouAXk8r5Wk1v2ZNTQxd+aQ/jTpNbduTShuz2xS5GpNk6gZsXvFFUsQ3ckMtoMOwqZGaEYJo0frsSUjllTmeLrU6387uofTcG0WmceorEqjjFRsssquHkFLl8Z1ISWB7Sm/GT5DkGmzqXcDNppErO65F3V2XtnFNTEpT81nnAT1Al8Ro1YeMVJKUtueySnsZ9K9pfbnk56LqWkznZcRTPK3dE+/o0ns/is4yS8RdyxmIlNeRwZ8J8IOp9DoQRHNntI4L15XKiXsRy/asbjbX4nx305T47tZ5fCBtWjcS4WpuUHfKpGpqA2/4/TJ/ZqbI9fO9mFOvj35PaxtpQmqIE0O3eilZvVh9YbA2heic6ZSYIldmEjvX0drG+d66Fai1iFbGyWiS1ZuGWoCLhiP12lbpfPbqhi/hXMJak89U6/LOcLFxfhWL25ShnT3yi4hepKpLrWtFU6DFOneH8Y7eh0bOmjrqUsomzlAA/FGh0pvxA3Ka0mjdO8P1Ixoex4bT7UVX1xVHutaWGeulNRl9kcTmkdEzUj1VWaW9DB54etD6Nu6hFLeceIqnrU1GNJfMLHNMS82UvI4cijdGcqAiXcyKQHpg14p1ZN7Nnqa7u6mg2hLiEQPhbrialoFjwjfdWJRbmH5PG7OQE1Jq0IAVFUO3+i07b0IMdsJuj+ZqmaRtSPqZ5E+SF1FAvUkpNWTidg1ur22WeMlrsjyvAvEaqaCq6rFkTCYyBgCs07ppSjQFckoZ49Qg3K+6lK96XDNICE/n9Gz88aqGGm96J7jZrI1In+y6c1J9tWXq+7bofNwdSpbE5pnR9XNAKqu0l8HDz2nPjjjMw/dL++BAeJKnhT97j8GPuL2Osis6z3x+dgmi3/C7ha3oFs74PPbmMl1DwwVsrF2KP4fvI0LYu9C9cBOZd7OvaXfTuwCpThbmObVlrLEAM7W7+kUGvrn0q5DCxrrqq1+Zf2084Gk9b0hOaUoDppCGrnzNbLp6T/vKGIG2MoyHc7VMAliB+2lPHtnipvk2inIrzZ4mgNpTFhidC7Kb1jZOZoK4l9AqX+2nKblxwQQFdUufyKvsLV/mcY0OeTMFrCnEpbPRFPAQEw7f11kyhiaHMF4Kos7pOZjSm/Gn9yWk0VbvGs3uccbU4xPaXXdGmaexTIr0OXVZAUmsQBmlbAoqS+GFMN0nYsuNjrn6pnB4eLR+lpgrgsWjvaXAW7feW0HytKuK4mlXH35yyCds6dFfvmBYdBRP+zZQPO3y483P1fbTx/SwbElQPO3bQPG0y48yV/n+rlazo9Zjt6VAsd7bQPG0y48yV5cZxXoFq4DiaQsWG8V6BauA4mkLFhvFegWrgOJpCxYbxXoFq4DwtP98WlBQUFAwGP7uNe2ng5XFP5z+u5AKlg/FegWrgE/p6UHxtAULiWK9glVA8bQFi41ivYJVQPG0BYuNYr2CVUDxtAWLjWK9glVA8bQFi41ivYJVQPG0BYuNYr2CVUDxtAWLjTdove3qWufdqtqUULD8eMjT3ml3nYS7iF0+vMRcla62I9CgJ/pB9JTZvRtVxyHPG8fbs3by5TCc9ajnwVT6HHyoqh3063ZUVfcRVbDseMjT7oiKCcXTPoShPe0xIwdyC9tdDS4M3qCnPbi/Vt+qnd2IKFh6POBpNbm3IrDMeEVP+xQUT9vCW/S0BauHBzztOxLxQwSWGd1zdfcOa/bRFmaaXJtmHIXq4PNWVV1v6r7t/mSbP1E32n6XbuOU+e5g94T+afskLTqSezzeQv6ddu7aie3ebnGxsrOZabWnhbbjky8MKCJqqrY3k6eIft0hevtWMV0DZLR6fr3lTOHCjYW8bemwXnTXOPYQoLDbtu6BSeUSt9DLDobPYiwOc49sbkCqDkXsSscKUEjReZZoddQwgZgwdGbTE94qwhg9DbWsj541gQTGgQXHmyh0XdufGDMtq6L5k5Ed6eazGHSpCaj57KHFrcN5KwVPwgOeVioecyhLiS5PGwwidnRJEZcUFusVYQYmvFNBUZFsTTCtHZ3Fm5v5vMmaxNT8rLjeFtrTS7MygODnEI0dZVGp6DoLdw/wYFMxAXZ9VTztNV1qID5G6lLuwW5tI7mxqlGtLZI5wFCzAo3UytKyafr0qsPQtU1D3TBGT0OZ9e1/x6gQXcmYlh4xTJhWVVUjJNd+NbrW9rRWRMvTmlPogoNBnoJnoN/TfgglB+I6uYzomKvm8NY9lgExQ8Uli8JJUJcfTXw2r5UlqHh9u6u1L6CZENHbmFcfXKOWBc282VXsqClGhfa3MD69PDOU7ukyQvl7T65mhhojBLsHeC95G+IHNeiPuDXnxxtcGPR5WuuCCO81urs/uLca6F26leu8iD0OtVCR941FMgeYHLUCym2/mGWxElEubEqbdxo62fQeJyu9r6HG+ul6Om6ZiN78jKWzB9FvWg4XUvKrEYwEO9fw521Pm4ZqzeXKLngi+j2tmECHEuwNgiwhJueqFnlpQB6euCQpFjcg74d323FxF+OamZCuO77kwylHdNx0SWZsNm+kzlhX3V5v3R3TGfS3MD69PDNM+N3ju235khiI8roD6bF6zwA1qeKOVvNbyzB1bbzBhcG0njatKKVI6qFTuRRsGusoVm9eVtB8tQO0mwRUrvGLmSxfHjaVX6TGOw0dNpVXC3r1NFRbv16Rj1tGkcm2GkR9aZ0wrcTt5Fd1ETBHa0/b3B8p3lwBmqU4UTzts/HA04MMMmPwbPkwOVc1Hs83gIHM046PE47Nl/b2TBDqUCu6mZZ1NBcztScex0MtBHJPm3B84kmqvCrl2QJ0D9CVtMBkdXe8wYXBtJ42AmOhMeX6dsAJrWpqk4Ugn/hOSpVR5Lzi8lbn5bmN4x5D2zrEKCX1NJSsT9PuaCzjlmFcM/oI9Zh24tY0PWpIWuK4Ru6z4tU8I+nK5YU18jbxCp6A6TxtMv9yYnKucjgTZG1Jwq0cVo3WTDDqUCu6nopN9Pj8DzzeQsDlo2vHaqCG8rZLKX5igD3TUbWNN7gweLqn7VBuS0uKjWpqk1mQj/ng7DJK++ErwNgQM4x91FRDFRlp7d3TkHto/+vKxi3DuAnb9pg2eywd8GhSN+XPoxLFq3ndA6CfXAKfKGej7IInotfTHt9tbe+ke5T8Nmn5MDlXxfI0Ht8/iUuNBIhifBwK1BMx5kysDHznx7njCeLI8dyKplC/yTHavrvF7dkDLYxPLy871DU/CLxTF5q87VLdA+xZWMu64w0uDKb1tEm3WoOBuJ3KdVZbz6u9eA5Uy8pKP8fFp5Qavik+2d/Z5KsLjpUnjwpqMG7c0LV1VMIG6GlIkrKhDnV33DKMG7PtfZ9pVdtmDNvrZy+qHcMwa1KA0S7g2m7Jiy3nbJRd8ET0r2n9hF1ifuu0hJicq+anp5Blc6mRgMxbeUHTzIT06oB8lPit6DQn6omdRUuH+efbuId9oIXx6ZV1Tel+vPi5MVK7VM8A1d+4f93Z3jzxULsbXBRM62nD5VmRkLuVq0vjNakcalE9ckHWqYqlgDRjLWaozet67VXf7cQj2S5D1yr2VVIG6GlIEiAr9XvaWBqbAJQ7TatIpIanjeaZFDqL3kui4ObTyFDhbvG0c0K/pzX7anhqLyU65mpNtBriUiMBifM1NG0nYs1uRac5UU/FPHrsgRln+wMtuIwi3R/NEWKy781cbSZlzwD9KVANP7WzbwAmfMoiYGpPm4Huo1u5tYObhJUX6c6sOvo97bhNff3tMHRjHft3Uqanoei2p5tG1hjVUHoOV9FhWjla3pdaQxDcPFQXOgvXLFmSmsfZnwDUORtlFzwRDz2nvW9YuaUpuaTomKvNVRs81UlcaiTic32tufOn16Sl58yuV7PgsRcvzVQimqnYio7Xvwi+DQY80ILSKUV//BaPgru1XbZ2Nb+4mmu1RHQOMPIZ255mzSQdn9MLgWk9bX3BiCcG3cpFdChy0y+OHIclkyGt27j7l7Ie8LQtm17XPZo0dGMdmwVZexqyfew8H/C0x/VbapEVGDetw5y5taeN5u8jJi2fFJCkMhRUPesunnY+mO4TseVGp6fNQCpNzSVRcSFdUj9mGuCi4THr5X5kNqjY8qllSbv91vE2PW3riq7LfHrz51Esh6d9xgAXDcXTjmFJu/3W8UbXtGMPtdKd5RRYkjXt0we4aCiedgxL2u23jrf69GA3HvkL6cneNFiWpwdPHuCioXjaMSxpt986ynPagsVGsV7BKqB42oLFRrFewSqgeNqCxUaxXsEqoHjagsVGsV7BKiA87T+fFhQUFBQMhr97TfvD+cri4+k/hlSwfCjWK1gF/JCeHhRPW7CQKNYrWAUUT1uw2CjWK1gFFE9bsNgo1itYBRRPW7DYKNYrWAUUT1uw2CjWK1gFFE9bsNgo1itYBRRPW7DYKNYrWAU86Gk3LrVvEDBai6hlxNPm6jrHfRiBp2NjfVSdhZyhJ3ouODucQ78XBsXTFqwCHvC0G/tysgl7Eb18eEVPeybVTbjUnui54JBVF09bULBQ6Pe0e403kNMZKXYZUTztMqN42oJVQL+n1Yxdj8BSo2OucmzV+dVlVd0cebG+955L+P2j2v0lT7vGRyiHFxsRLZy9p3ZuLtdasedrR67jS4SlwkBEERPRG2uXNwwc1q2r8fXzdUQf+sHNxjrqHl0ig9JSxo2L6ImDduHGStiu33o56qF2W3E91NS24tkRlX74PrtZ21O2UZ4PUfzxwlGTT1UmgCA6R3U30bJuBy8lAhvKckXxixptOphYBlywkOOvxK/qZox2BUuMXk97RVNXVxvvwYz9nI3Lh765Ss4DIHfrQclIU8Jz4Kb5ldMqPapei7BxFLHnRxFhKPOESzXGoq3phH1lceOK0DzM2tx/z6NnZKtNNvmmPW2vFfP4sOJVZthq3/6spU1fLS8iZLxXXKenzZpgbfatiTH6uONivFEl1Z42LEe71p+OCOmyXbDc6PW0ntsNNRJrlhAPz1XMgC8SsLjdWNOA5T1jQu2D6Vf2jVp6bFgl68xsVyjNeKKMsMjdW3cOXZx6HhPk0VI0P3Hc80yX18hmM5/auKFLtHkRFmHZPcmHEL9oot+wpP24V0krgT7rhVI1XOnsISvewDC8gwGkGl2tRuu0liJpQylZVpNETy2L7KOlK3tStVk7x4BS0NxVapjZ3Bl7cFkYC1yd1asU01TGZ3W2n1uHrc+/uDbHFiw5ej1tUBQuIGZ38GAJ0etpveyJJ9Jxn6bpyIlnBcR8dhY45XPpIi0XHY3cXpdG5rhKcdJO4Wk3ztYPR25c819z2I2n20/FJ/03/dKUjCWPFl+axW/V0z5kRUqAV5qwogzkRWVYtHXTJsWypr0v7w8jm1xtcxUc97TJOnbhSVBZtRoWDqh9rZCjsg02GXS8Wjva9+rZ/Z1gT8EyotfT+r4pCCXqJfeydOibq2lAno05OOz2hEpOUGppLjopk2Z2/SChmf5TeNqEs4tszeUuKR6Q+unmBSWhrCtpgclv1dNOY8UUUqEWanJbq6PWPTsuhl7TKle7ynZvspDaoNFk1qw+N35p19v0etRy9vLysvsYTQqWFL2e1owLAo6Ta7nwyFzN2J7QP0fHNJGC9Xw36uA0nvasPe9VebsZxdeVpFDxtEStaqmsBSqhrciWuVqobRdajRfI4wFRgnK1q+yzTjxm2vO12WtUIxo/lKvNep0u1HzVOkdddcEyo9fT+nYprK8VXf1R6rLhMU+re7mJhyOeAxGoJ7QnYr380HoF00iZmyo0VbiM8S3txFzJoj0h15tppzncns1qPE3W+kGFKxlbCcWzxcwRLDum9bQPWTHduqdbD+mouQUZR7KmjB0+t25nzDbRm7Z1ZBSV3peV0oOKBBu9frqByuTRVUwxfDYMUJxkT8Eyot/TmjPiVkafZcRjntY092zYuzl8v6YHZp6j8RG2b+w5Yf2xlWP9Ybdmt6q48Yz2R8yeyJQ65koT7YmlSJfr8LSZKUJWWXUlbjr3D48u3Ey76PJjWk87hRVtOyjMFyl7xy83h+tfELdxtn5540p9OW1d4fzovd/Thrlz02cvLthGV2vvD6Nc3etUWVoBR3V+2OD+xkALlhv9njY+2k4Isi4jHvW0Xr830EzxHM0QH2p4zjWIaeVZ0SA+hKl1CFlnN9pEx91qA/mKsdk8kcnV6FajgV9Wque3PfPSY2pPO6UV5fXa3Ja17H33r3D3Lgl1ThSW1x2zTXjaDGl9G9fnmgumyMXG+Zl6Kj7VldWrGQ0oR+uRccGy4gFPC+vX3L1ZXj87jafNdnjARLFH1RxYj/d2WhrIHqzeZNMge6Z3WGeupzQaS+d29EZd2+WGXGd+U1mj9u/vW33PfMGhF06N/82LLzGm97S9VjzcSNfBxooNt6tRfNgYb1UJRyp+VZt03X6cOh63DYPV2VkqXPtZwHFxLW73L5jTVGYLY1Q15UZf9PLBxBORgmXEg552RdAxV5cZmoXhZ94Anme9iUvW/PGAPXTRK56yACiedgnghwfxsYrWPsu7CcXMWGJP6wc5y3w7WDA3FE+7DBh7IJs+YnkTWE5P2zxZj4e0BW8cxdMuBfInfOm9ozeC5fS0/nwNTftxccGbR/G0BYuNYr2CVUDxtAWLjWK9glVA8bQFi41ivYJVQPG0BYuNYr2CVUB42v/69Id/WVn8x9P/GFLB8qFYr2AV8MPp/0hP+5//w//0f15Z/N/+w/8ppILlQ7FewSrgf/oP/y962oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCJ+Nvf/v/Ax7QF/pGj68SAAAAAElFTkSuQmCC) 93 | 94 | _Рисунок 1. Таргеты инициализации_ 95 | 96 | Для управления режимами работы также используется утилита **systemctl** , например: 97 | 98 | **systemctl isolate reboot.target** _( __выполнить__ таргет_ _reboot);_ 99 | 100 | **systemctl set-default -f multi-user.target** _( __установить__ таргет_ _multi-user_ _в __качестве__ режима __загрузки__ по __умолчанию__ );_ 101 | 102 | Для управления питаем также можно использовать **systemctl** , например: 103 | 104 | **systemctl reboot ** _ (перезагрузить ПК);_ 105 | 106 | **systemctl**** poweroff**_ (выключить ПК)._ 107 | 108 | Важная особенность systemd – гибкая система журналирования **journald** , собирающая информацию из различных источников и привязывающая ее к различным юнитам. Примеры ее использования: 109 | 110 | **journalctl –f** _ (просмотр сообщений в режиме реального времени);_ 111 | 112 | **journalctl -n10** _ (просмотр 10 последних сообщений);_ 113 | 114 | **journalctl \_UID=70** _ (вывод всех сообщений включающих пользователя с ID=70);_ 115 | 116 | \_\_\_ 117 | 118 | В исторической перспективе отмечаем систему инициализации системы является **upstart** , опирающуюся в своей работе на события, происходящие в ОС. Она использовалась в ubuntu с версии 6.10 по 15.04, и во многих других дистрибутивах, которые сейчас уже используют systemd. 119 | 120 | Upstart оперирует понятиями **служба** (_service_), поддерживаемая в постоянном режиме работы, и **задача** (_task_), выполняющаяся разово. В процессе инициализации upstart считывает настройки из файлов конфигурации (_заданий -_ _jobs_) в каталоге **/**** etc ****/**** init ****/.** 121 | 122 | Каждое задание представляет собой сценарии запуска демонов с различными критериями и условиями выполнения. 123 | 124 | Уровни инициализации или режимы работы используется такие же, как и в классическом sysV, так что команды **runlevel** и **telinit** продолжают работать. Синтаксис управления питанием и службами также схож с классическим. 125 | 126 | Уровень инициализации по умолчанию указывается в файле **/etc/init/rc-sysinit.conf** 127 | 128 | Для управления инициализацией в стиле upstart используется утилита **initctl** , например: 129 | 130 | **initctl**** start ****networking** _ (запустить службу сети);_ 131 | 132 | **initctl**** list**_ __ (вывести перечень служб);_ 133 | 134 | ----- 135 | 136 | Для возможности извещения в любых дистрибутивах Linux всех пользователей, работающих в системе, о каких-либо действиях можно воспользоваться командой **wall****"текст\_сообщения"**. --------------------------------------------------------------------------------