From 6baabac3c5af99da32dbd02151d4317b4532892d Mon Sep 17 00:00:00 2001 From: Ilya Kantor Date: Mon, 21 Sep 2015 15:04:14 +0200 Subject: [PATCH] up --- .../2-which-value-while/solution.md | 26 ++-- .../15-while-for/2-which-value-while/task.md | 13 +- .../3-which-value-for/solution.md | 14 +- .../15-while-for/3-which-value-for/task.md | 11 +- .../15-while-for/4-for-even/solution.md | 2 +- .../15-while-for/4-for-even/task.md | 4 +- .../5-replace-for-while/solution.md | 2 +- .../15-while-for/5-replace-for-while/task.md | 6 +- .../6-repeat-until-correct/solution.md | 13 +- .../6-repeat-until-correct/task.md | 8 +- .../15-while-for/7-list-primes/solution.md | 31 ++--- .../15-while-for/7-list-primes/task.md | 14 +- .../1-rewrite-switch-if-else/solution.md | 16 +-- .../1-rewrite-switch-if-else/task.md | 12 +- .../16-switch/2-rewrite-if-switch/solution.md | 7 +- .../16-switch/2-rewrite-if-switch/task.md | 4 +- 1-js/2-first-steps/16-switch/article.md | 123 +++++++++--------- .../2-first-steps/17-let-var-const/article.md | 5 + .../1-if-else-required/solution.md | 0 .../1-if-else-required/task.md | 0 .../solution.md | 0 .../2-rewrite-function-question-or/task.md | 0 .../3-min/solution.md | 0 .../3-min/task.md | 0 .../4-pow/solution.md | 0 .../4-pow/task.md | 0 .../article.md | 48 ++++--- .../18-function-basics/function_basics.png | Bin 0 -> 24783 bytes .../18-function-basics/function_basics@2x.png | Bin 0 -> 47351 bytes .../article.md | 0 .../1-sum-to/solution.md | 0 .../1-sum-to/task.md | 0 .../2-factorial/solution.md | 0 .../2-factorial/task.md | 0 .../3-fibonacci-numbers/solution.md | 0 .../3-fibonacci-numbers/task.md | 0 .../{19-recursion => 20-recursion}/article.md | 0 .../1-nfe-check/solution.md | 0 .../1-nfe-check/task.md | 0 .../article.md | 0 .../article.md | 0 41 files changed, 196 insertions(+), 163 deletions(-) create mode 100644 1-js/2-first-steps/17-let-var-const/article.md rename 1-js/2-first-steps/{17-function-basics => 18-function-basics}/1-if-else-required/solution.md (100%) rename 1-js/2-first-steps/{17-function-basics => 18-function-basics}/1-if-else-required/task.md (100%) rename 1-js/2-first-steps/{17-function-basics => 18-function-basics}/2-rewrite-function-question-or/solution.md (100%) rename 1-js/2-first-steps/{17-function-basics => 18-function-basics}/2-rewrite-function-question-or/task.md (100%) rename 1-js/2-first-steps/{17-function-basics => 18-function-basics}/3-min/solution.md (100%) rename 1-js/2-first-steps/{17-function-basics => 18-function-basics}/3-min/task.md (100%) rename 1-js/2-first-steps/{17-function-basics => 18-function-basics}/4-pow/solution.md (100%) rename 1-js/2-first-steps/{17-function-basics => 18-function-basics}/4-pow/task.md (100%) rename 1-js/2-first-steps/{17-function-basics => 18-function-basics}/article.md (88%) create mode 100644 1-js/2-first-steps/18-function-basics/function_basics.png create mode 100644 1-js/2-first-steps/18-function-basics/function_basics@2x.png rename 1-js/2-first-steps/{18-function-declaration-expression => 19-function-declaration-expression}/article.md (100%) rename 1-js/2-first-steps/{19-recursion => 20-recursion}/1-sum-to/solution.md (100%) rename 1-js/2-first-steps/{19-recursion => 20-recursion}/1-sum-to/task.md (100%) rename 1-js/2-first-steps/{19-recursion => 20-recursion}/2-factorial/solution.md (100%) rename 1-js/2-first-steps/{19-recursion => 20-recursion}/2-factorial/task.md (100%) rename 1-js/2-first-steps/{19-recursion => 20-recursion}/3-fibonacci-numbers/solution.md (100%) rename 1-js/2-first-steps/{19-recursion => 20-recursion}/3-fibonacci-numbers/task.md (100%) rename 1-js/2-first-steps/{19-recursion => 20-recursion}/article.md (100%) rename 1-js/2-first-steps/{20-named-function-expression => 21-named-function-expression}/1-nfe-check/solution.md (100%) rename 1-js/2-first-steps/{20-named-function-expression => 21-named-function-expression}/1-nfe-check/task.md (100%) rename 1-js/2-first-steps/{20-named-function-expression => 21-named-function-expression}/article.md (100%) rename 1-js/2-first-steps/{21-javascript-specials => 22-javascript-specials}/article.md (100%) diff --git a/1-js/2-first-steps/15-while-for/2-which-value-while/solution.md b/1-js/2-first-steps/15-while-for/2-which-value-while/solution.md index f7e77582..af3a00e4 100644 --- a/1-js/2-first-steps/15-while-for/2-which-value-while/solution.md +++ b/1-js/2-first-steps/15-while-for/2-which-value-while/solution.md @@ -1,5 +1,7 @@ +The task demonstrates how postfix/prefix forms can lead to different results when used in comparisons. +
    -
  1. **От 1 до 4** +
  2. **From 1 to 4** ```js //+ run @@ -7,13 +9,13 @@ var i = 0; while (++i < 5) alert( i ); ``` -Первое значение: `i=1`, так как операция `++i` сначала увеличит `i`, а потом уже произойдёт сравнение и выполнение `alert`. +The first value is `i=1`, because `++i` first increments `i` and then returns the new value. So the first comparison is `1 < 5` and the `alert` shows `1`. -Далее `2,3,4..` Значения выводятся одно за другим. Для каждого значения сначала происходит увеличение, а потом -- сравнение, так как `++` стоит перед переменной. +Then follow `2,3,4…` -- the values show up one after another. The comparison always uses the incremented value, because `++` is before the variable. -При `i=4` произойдет увеличение `i` до `5`, а потом сравнение `while(5 < 5)` -- это неверно. Поэтому на этом цикл остановится, и значение `5` выведено не будет. +Finally, `i=4` is incremented to `5`, the comparison `while(5 < 5)` fails and the loop stops. So `5` is not shown.
  3. -
  4. **От 1 до 5** +
  5. **From 1 to 5** ```js //+ run @@ -21,11 +23,15 @@ var i = 0; while (i++ < 5) alert( i ); ``` -Первое значение: `i=1`. Остановимся на нём подробнее. Оператор `i++` увеличивает `i`, возвращая старое значение, так что в сравнении `i++ < 5` будет участвовать старое `i=0`. +The first value is again `i=1`. The postfix form of `i++` increments `i` and then returns the *old* value, so the comparison `i++ < 5` will use `i=0` (contrary to `++i < 5`). -Но последующий вызов `alert` уже не относится к этому выражению, так что получит новый `i=1`. +But the `alert` call is separate. It's another statement which executes after the increment and the comparison. So it gets the current `i=1`. -Далее `2,3,4..` Для каждого значения сначала происходит сравнение, а потом -- увеличение, и затем срабатывание `alert`. +Then follow `2,3,4…` + +Let's stop on `i=4`. The prefix form `++i` would increment it and use `5` in the comparison. But here we have the postfix form `i++`. So it increments `i` to `5`, but returns the old value. Hence the comparison is actually `while(4 < 5)` -- true, and the control goes on to `alert`. + +The value `i=5` is the last one, because on the next step `while(5 < 5)` is false. +
  6. +
-Окончание цикла: при `i=4` произойдет сравнение `while(4 < 5)` -- верно, после этого сработает `i++`, увеличив `i` до `5`, так что значение `5` будет выведено. Оно станет последним. - \ No newline at end of file diff --git a/1-js/2-first-steps/15-while-for/2-which-value-while/task.md b/1-js/2-first-steps/15-while-for/2-which-value-while/task.md index 674f005b..1b1875d3 100644 --- a/1-js/2-first-steps/15-while-for/2-which-value-while/task.md +++ b/1-js/2-first-steps/15-while-for/2-which-value-while/task.md @@ -1,10 +1,13 @@ -# Какие значения i выведет цикл while? +# Which values shows the while? [importance 4] -Для каждого цикла запишите, какие значения он выведет. Потом сравните с ответом. +For every loop, scribe down which values it shows, in your opinion. + +And then compare with the answer. +
    -
  1. Префиксный вариант +
  2. The prefix form `++i`: ```js var i = 0; @@ -12,7 +15,7 @@ while (++i < 5) alert( i ); ```
  3. -
  4. Постфиксный вариант +
  5. The postfix form `i++` ```js var i = 0; @@ -20,4 +23,4 @@ while (i++ < 5) alert( i ); ```
  6. -
\ No newline at end of file + diff --git a/1-js/2-first-steps/15-while-for/3-which-value-for/solution.md b/1-js/2-first-steps/15-while-for/3-which-value-for/solution.md index 941a07be..2ccef475 100644 --- a/1-js/2-first-steps/15-while-for/3-which-value-for/solution.md +++ b/1-js/2-first-steps/15-while-for/3-which-value-for/solution.md @@ -1,4 +1,4 @@ -**Ответ: от 0 до 4 в обоих случаях.** +**The answer: from `0` to `4` in both cases.** ```js //+ run @@ -7,11 +7,13 @@ for (var i = 0; i < 5; ++i) alert( i ); for (var i = 0; i < 5; i++) alert( i ); ``` -Такой результат обусловлен алгоритмом работы `for`: +That can be easily deducted from the algorithm of `for`:
    -
  1. Выполнить присвоение `i=0`
  2. -
  3. Проверить `i<5`
  4. -
  5. Если верно - выполнить тело цикла `alert(i)`, затем выполнить `i++`
  6. +
  7. Execute once `i=0` before everything.
  8. +
  9. Check the condition `i<5`
  10. +
  11. If `true` -- execute the loop body `alert(i)`, and then `i++`
-Увеличение `i++` выполняется отдельно от проверки условия (2), значение `i` при этом не используется, поэтому нет никакой разницы между `i++` и `++i`. \ No newline at end of file +The increment `i++` is separated from the condition check (2). That's just another statement. + +The value returned by the increment is not used here, so there's no difference between `i++` and `++i`. \ No newline at end of file diff --git a/1-js/2-first-steps/15-while-for/3-which-value-for/task.md b/1-js/2-first-steps/15-while-for/3-which-value-for/task.md index e918c89c..05ee18c4 100644 --- a/1-js/2-first-steps/15-while-for/3-which-value-for/task.md +++ b/1-js/2-first-steps/15-while-for/3-which-value-for/task.md @@ -1,17 +1,20 @@ -# Какие значения i выведет цикл for? +# Which values get shown by the "for" loop? [importance 4] -Для каждого цикла запишите, какие значения он выведет. Потом сравните с ответом. +For each loop scribe down which values it is going to show. + +Then compare with the answer. +
    -
  1. Постфиксная форма: +
  2. The postfix form: ```js for (var i = 0; i < 5; i++) alert( i ); ```
  3. -
  4. Префиксная форма: +
  5. The prefix form: ```js for (var i = 0; i < 5; ++i) alert( i ); diff --git a/1-js/2-first-steps/15-while-for/4-for-even/solution.md b/1-js/2-first-steps/15-while-for/4-for-even/solution.md index 62ca05c7..408f6a50 100644 --- a/1-js/2-first-steps/15-while-for/4-for-even/solution.md +++ b/1-js/2-first-steps/15-while-for/4-for-even/solution.md @@ -9,4 +9,4 @@ for (var i = 2; i <= 10; i++) { } ``` -Чётность проверяется по остатку при делении на `2`, используя оператор "деление с остатком" `%`: `i % 2`. \ No newline at end of file +We use the "modulo" `%` to get the remainder and check for the evenness here. diff --git a/1-js/2-first-steps/15-while-for/4-for-even/task.md b/1-js/2-first-steps/15-while-for/4-for-even/task.md index d20029d0..a7365169 100644 --- a/1-js/2-first-steps/15-while-for/4-for-even/task.md +++ b/1-js/2-first-steps/15-while-for/4-for-even/task.md @@ -1,7 +1,7 @@ -# Выведите чётные числа +# Output even numbers in the loop [importance 5] -При помощи цикла `for` выведите чётные числа от `2` до `10`. +Use the `for` loop to output even numbers from `2` to `10`. [demo /] \ No newline at end of file diff --git a/1-js/2-first-steps/15-while-for/5-replace-for-while/solution.md b/1-js/2-first-steps/15-while-for/5-replace-for-while/solution.md index 84915ab4..822e6310 100644 --- a/1-js/2-first-steps/15-while-for/5-replace-for-while/solution.md +++ b/1-js/2-first-steps/15-while-for/5-replace-for-while/solution.md @@ -4,7 +4,7 @@ //+ run var i = 0; while (i < 3) { - alert( "номер " + i + "!" ); + alert( `number ${i}!` ); i++; } ``` diff --git a/1-js/2-first-steps/15-while-for/5-replace-for-while/task.md b/1-js/2-first-steps/15-while-for/5-replace-for-while/task.md index 2da6d6f2..2a3d58c4 100644 --- a/1-js/2-first-steps/15-while-for/5-replace-for-while/task.md +++ b/1-js/2-first-steps/15-while-for/5-replace-for-while/task.md @@ -1,13 +1,13 @@ -# Замените for на while +# Replace "for" with "while" [importance 5] -Перепишите код, заменив цикл `for` на `while`, без изменения поведения цикла. +Rewrite the code changing the `for` loop to `while` without altering it's behavior (the output should stay same). ```js //+ run for (var i = 0; i < 3; i++) { - alert( "номер " + i + "!" ); + alert( `number ${i}!` ); } ``` diff --git a/1-js/2-first-steps/15-while-for/6-repeat-until-correct/solution.md b/1-js/2-first-steps/15-while-for/6-repeat-until-correct/solution.md index 49d5396e..d7390d60 100644 --- a/1-js/2-first-steps/15-while-for/6-repeat-until-correct/solution.md +++ b/1-js/2-first-steps/15-while-for/6-repeat-until-correct/solution.md @@ -1,18 +1,17 @@ - ```js //+ run demo var num; do { - num = prompt("Введите число больше 100?", 0); -} while (num <= 100 && num != null); + num = prompt("Enter a number greater than 100?", 0); +} while (num <= 100 && num); ``` -Цикл `do..while` повторяется, пока верны две проверки: +The loop `do..while` repeats while both checks are truthy:
      -
    1. Проверка `num <= 100` -- то есть, введённое число всё еще меньше `100`.
    2. -
    3. Проверка `num != null` -- значение `null` означает, что посетитель нажал "Отмена", в этом случае цикл тоже нужно прекратить.
    4. +
    5. The check for `num <= 100` -- that is, the entered value is still not greater than `100`.
    6. +
    7. The check for a truthiness of `num` checks that `num != null` and `num != ""` simultaneously.
    -Кстати, сравнение `num <= 100` при вводе `null` даст `true`, так что вторая проверка необходима. \ No newline at end of file +P.S. By the way, if `num` is `null` then `num <= 100` would return `false`, not `true`! \ No newline at end of file diff --git a/1-js/2-first-steps/15-while-for/6-repeat-until-correct/task.md b/1-js/2-first-steps/15-while-for/6-repeat-until-correct/task.md index 4c2fbedc..b5c21283 100644 --- a/1-js/2-first-steps/15-while-for/6-repeat-until-correct/task.md +++ b/1-js/2-first-steps/15-while-for/6-repeat-until-correct/task.md @@ -1,11 +1,11 @@ -# Повторять цикл, пока ввод неверен +# Repeat until the input is incorrect [importance 5] -Напишите цикл, который предлагает `prompt` ввести число, большее `100`. Если посетитель ввёл другое число -- попросить ввести ещё раз, и так далее. +Write a loop which prompts for a number greater than `100`. If the visitor enters another number -- ask him to repeat the input, and so on. -Цикл должен спрашивать число пока либо посетитель не введёт число, большее `100`, либо не нажмёт кнопку Cancel (ESC). +The loop must ask for a number until either the visitor enters a number greater than `100` or cancels the input/enters an empty line. -Предполагается, что посетитель вводит только числа. Предусматривать обработку нечисловых строк в этой задаче необязательно. +Here we can assume that the visitor only inputs numbers. There's no need to implement the special handling for a non-numeric input in this task. [demo /] diff --git a/1-js/2-first-steps/15-while-for/7-list-primes/solution.md b/1-js/2-first-steps/15-while-for/7-list-primes/solution.md index eead33a3..3090b659 100644 --- a/1-js/2-first-steps/15-while-for/7-list-primes/solution.md +++ b/1-js/2-first-steps/15-while-for/7-list-primes/solution.md @@ -1,28 +1,29 @@ -# Схема решения +There are many algorithms for this task. + +Let's use a nested loop: ```js -Для всех i от 1 до 10 { - проверить, делится ли число i на какое - либо из чисел до него - если делится, то это i не подходит, берем следующее - если не делится, то i - простое число +For each i in the interval { + check if i has a divisor from 1..i + if yes => the value is not a prime + if no => the value is a prime, show it } ``` -# Решение - -Решение с использованием метки: +The code using a label: ```js //+ run nextPrime: - for (var i = 2; i < 10; i++) { +for (var i = 2; i < 10; i++) { // for each i... - for (var j = 2; j < i; j++) { - if (i % j == 0) continue nextPrime; - } - - alert( i ); // простое + for (var j = 2; j < i; j++) { // look for a divisor.. + if (i % j == 0) continue nextPrime; // not a prime, go next i } + + alert( i ); // a prime +} ``` -Конечно же, его можно оптимизировать с точки зрения производительности. Например, проверять все `j` не от `2` до `i`, а от `2` до квадратного корня из `i`. А для очень больших чисел -- существуют более эффективные специализированные алгоритмы проверки простоты числа, например [квадратичное решето](http://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%BA%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82%D0%B8%D1%87%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D1%82%D0%B0) и [решето числового поля](http://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%89%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4_%D1%80%D0%B5%D1%88%D0%B5%D1%82%D0%B0_%D1%87%D0%B8%D1%81%D0%BB%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D0%BF%D0%BE%D0%BB%D1%8F). \ No newline at end of file +Surely, there's a lot of space to opimize it. Like, we could look for the divisors from `2` to square root of `i`. But anyway, if we want to be really efficient for large intervals, we need change the approach and rely heavily on advanced maths and algorithms like [Quadratic sieve](https://en.wikipedia.org/wiki/Quadratic_sieve), [General number field sieve](https://en.wikipedia.org/wiki/General_number_field_sieve) etc. + diff --git a/1-js/2-first-steps/15-while-for/7-list-primes/task.md b/1-js/2-first-steps/15-while-for/7-list-primes/task.md index 51f8c29f..8f12669f 100644 --- a/1-js/2-first-steps/15-while-for/7-list-primes/task.md +++ b/1-js/2-first-steps/15-while-for/7-list-primes/task.md @@ -1,12 +1,16 @@ -# Вывести простые числа +# Output prime numbers [importance 3] -Натуральное число, большее 1, называется *простым*, если оно ни на что не делится, кроме себя и `1`. +An integer number greater than `1` is called a [prime](https://en.wikipedia.org/wiki/Prime_number) if it cannot be not divided without a remainder by anything except `1` and itself. -Другими словами, n>1 - простое, если при делении на любое число от `2` до `n-1` есть остаток. +In other words, `n>1` is a prime if the result of it's division by anything except `1` and `n` is not integer. -**Создайте код, который выводит все простые числа из интервала от `2` до `10`.** Результат должен быть: `2,3,5,7`. +For example, `5` is a prime, because it cannot be divided without a remainder by `2`, `3` and `4`. -P.S. Код также должен легко модифицироваться для любых других интервалов. +**Write the code which outputs prime numbers in the interval from `2` to `10`.** + +The result will be `2,3,5,7`. + +P.S. The code should be easily modifiable for other intervals. diff --git a/1-js/2-first-steps/16-switch/1-rewrite-switch-if-else/solution.md b/1-js/2-first-steps/16-switch/1-rewrite-switch-if-else/solution.md index 1605333f..ee2c1b0c 100644 --- a/1-js/2-first-steps/16-switch/1-rewrite-switch-if-else/solution.md +++ b/1-js/2-first-steps/16-switch/1-rewrite-switch-if-else/solution.md @@ -1,21 +1,21 @@ -Если совсем точно следовать условию, то сравнение должно быть строгим `'==='`. +To be precise, the `if` must use a strict comparison `'==='`. -В реальном случае, скорее всего, подойдёт обычное сравнение `'=='`. +In reality though, probably a simple `'=='` would do. ```js //+ no-beautify -if(browser == 'IE') { - alert('О, да у вас IE!'); +if(browser == 'Edge') { + alert("You've got the Edge!"); } else if (browser == 'Chrome' || browser == 'Firefox' || browser == 'Safari' || browser == 'Opera') { - alert('Да, и эти браузеры мы поддерживаем'); + alert( 'Okay we support these browsers too' ); } else { - alert('Мы надеемся, что и в вашем браузере все ок!'); + alert( 'We hope that this page looks ok!' ); } ``` -Обратите внимание: конструкция `browser == 'Chrome' || browser == 'Firefox' ...` разбита на несколько строк для лучшей читаемости. +Please note: the construct `browser == 'Chrome' || browser == 'Firefox' …` is split into multiple lines for better readability. -Но всё равно запись через `switch` нагляднее. \ No newline at end of file +But the `switch` is still neater and more descriptive. diff --git a/1-js/2-first-steps/16-switch/1-rewrite-switch-if-else/task.md b/1-js/2-first-steps/16-switch/1-rewrite-switch-if-else/task.md index 15bf197e..7b52a7f6 100644 --- a/1-js/2-first-steps/16-switch/1-rewrite-switch-if-else/task.md +++ b/1-js/2-first-steps/16-switch/1-rewrite-switch-if-else/task.md @@ -1,24 +1,24 @@ -# Напишите "if", аналогичный "switch" +# Rewrite the "switch" into an "if" [importance 5] -Напишите `if..else`, соответствующий следующему `switch`: +Write the code using `if..else` which would correspond to the following `switch`: ```js switch (browser) { - case 'IE': - alert( 'О, да у вас IE!' ); + case 'Edge': + alert( "You've got the Edge!" ); break; case 'Chrome': case 'Firefox': case 'Safari': case 'Opera': - alert( 'Да, и эти браузеры мы поддерживаем' ); + alert( 'Okay we support these browsers too' ); break; default: - alert( 'Мы надеемся, что и в вашем браузере все ок!' ); + alert( 'We hope that this page looks ok!' ); } ``` diff --git a/1-js/2-first-steps/16-switch/2-rewrite-if-switch/solution.md b/1-js/2-first-steps/16-switch/2-rewrite-if-switch/solution.md index ab738f53..331141a8 100644 --- a/1-js/2-first-steps/16-switch/2-rewrite-if-switch/solution.md +++ b/1-js/2-first-steps/16-switch/2-rewrite-if-switch/solution.md @@ -1,4 +1,4 @@ -Первые две проверки -- обычный `case`, третья разделена на два `case`: +The first two checks are a usual `case`. The third one is split into two cases: ```js //+ run @@ -22,6 +22,7 @@ switch (a) { } ``` -Обратите внимание: `break` внизу не обязателен, но ставится по "правилам хорошего тона". +Please note: the `break` at the bottom is not required. But we put it to make the code future-proof. + +In the future, there is a chance that we'd want to add one more `case`, for example `case 4`. And if we forget to add a break before it, at the end of `case 3`, there will be an error. So that's a kind of self-insurance. -Допустим, он не стоит. Есть шанс, что в будущем нам понадобится добавить в конец ещё один `case`, например `case 4`, и мы, вполне вероятно, забудем этот `break` поставить. В результате выполнение `case 2`/`case 3` продолжится на `case 4` и будет ошибка. diff --git a/1-js/2-first-steps/16-switch/2-rewrite-if-switch/task.md b/1-js/2-first-steps/16-switch/2-rewrite-if-switch/task.md index a542c993..14fb5669 100644 --- a/1-js/2-first-steps/16-switch/2-rewrite-if-switch/task.md +++ b/1-js/2-first-steps/16-switch/2-rewrite-if-switch/task.md @@ -1,8 +1,8 @@ -# Переписать if'ы в switch +# Rewrite "if" into "switch" [importance 4] -Перепишите код с использованием одной конструкции `switch`: +Rewrite the code below using a single `switch` statement: ```js //+ run diff --git a/1-js/2-first-steps/16-switch/article.md b/1-js/2-first-steps/16-switch/article.md index 9a1f8fff..53d65eb3 100644 --- a/1-js/2-first-steps/16-switch/article.md +++ b/1-js/2-first-steps/16-switch/article.md @@ -1,12 +1,13 @@ -# Конструкция switch +# The "switch" statement -Конструкция `switch` заменяет собой сразу несколько `if`. +A `switch` statement can replace multiple `if` checks. + +It gives a more descriptive way to compare a value with multiple variants. -Она представляет собой более наглядный способ сравнить выражение сразу с несколькими вариантами. [cut] -## Синтаксис +## The syntax -Выглядит она так: +It looks like this: ```js //+ no-beautify @@ -26,22 +27,16 @@ switch(x) { ```
      -
    • -Переменная `x` проверяется на строгое равенство первому значению `value1`, затем второму `value2` и так далее. +
    • The value of `x` is checked for a strict equality to the value from the first `case`, that is: `value1`, then to the second `value2` and so on.
    • -
    • -Если соответствие установлено -- switch начинает выполняться от соответствующей директивы `case` и далее, *до ближайшего `break`* (или до конца `switch`). -
    • -
    • -Если ни один `case` не совпал -- выполняетcя (если есть) вариант `default`. +
    • If the equality is found -- `switch` starts to execute the code starting from the corresponding `case`, and to the nearest `break` (or to the end of `switch`).
    • +
    • If no case matched then the `default` code is executed (if exists).
    -При этом `case` называют *вариантами `switch`*. +## An example -## Пример работы - -Пример использования `switch` (сработавший код выделен): +An example of `switch` (the executed code is highlighted): ```js //+ run @@ -49,28 +44,28 @@ var a = 2 + 2; switch (a) { case 3: - alert( 'Маловато' ); + alert( 'Too small' ); break; *!* case 4: - alert( 'В точку!' ); + alert( 'Exactly!' ); break; */!* case 5: - alert( 'Перебор' ); + alert( 'Too large' ); break; default: - alert( 'Я таких значений не знаю' ); + alert( "I don't know such values" ); } ``` -Здесь оператор `switch` последовательно сравнит `a` со всеми вариантами из `case`. +Here the `switch` starts to compare `a` from the first `case` variant that is `3`. The match fails. -Сначала `3`, затем -- так как нет совпадения -- `4`. Совпадение найдено, будет выполнен этот вариант, со строки `alert('В точку!')` и далее, до ближайшего `break`, который прервёт выполнение. +Then `4`. That's the match, so the execution starts from `case 4` and till the nearest `break`. -**Если `break` нет, то выполнение пойдёт ниже по следующим `case`, при этом остальные проверки игнорируются.** +**If there is no `break` then the execution continues with the next `case` without any checks.** -Пример без `break`: +An example without `break`: ```js //+ run @@ -78,36 +73,37 @@ var a = 2 + 2; switch (a) { case 3: - alert( 'Маловато' ); + alert( 'Too small' ); *!* case 4: - alert( 'В точку!' ); + alert( 'Exactly!' ); case 5: - alert( 'Перебор' ); + alert( 'Too big' ); default: - alert( 'Я таких значений не знаю' ); + alert( "I don't know such values" ); */!* } ``` -В примере выше последовательно выполнятся три `alert`: +In the example above we'll see sequential execution of three `alert`s: ```js -alert( 'В точку!' ); -alert( 'Перебор' ); -alert( 'Я таких значений не знаю' ); +alert( 'Exactly!' ); +alert( 'Too big' ); +alert( "I don't know such values" ); ``` -В `case` могут быть любые выражения, в том числе включающие в себя переменные и функции. +[smart header="Any expresion can be a `switch/case` argument"] +Both `switch` and case allow arbitrary expresions. -Например: +For example: ```js //+ run -var a = 1; +var a = "1"; var b = 0; -switch (a) { +switch (+a) { *!* case b + 1: alert( 1 ); @@ -115,72 +111,73 @@ switch (a) { */!* default: - alert('нет-нет, выполнится вариант выше') + alert('no-no, see the code above, it executes'); } ``` +[/smart] -## Группировка case +## Grouping of "case" -Несколько значений case можно группировать. +Several variants of `case` can be grouped. + +For example, if we want the same code for `case 3` and `case 5`: -В примере ниже `case 3` и `case 5` выполняют один и тот же код: ```js //+ run no-beautify -var a = 2+2; +var a = 2 + 2; switch (a) { case 4: - alert('Верно!'); + alert('Right!'); break; *!* case 3: // (*) - case 5: // (**) - alert('Неверно!'); - alert('Немного ошиблись, бывает.'); + case 5: + alert('Wrong!'); + alert('How about to take maths classes?'); break; */!* default: - alert('Странный результат, очень странный'); + alert('The result is strange. Really.'); } ``` -При `case 3` выполнение идёт со строки `(*)`, при `case 5` -- со строки `(**)`. +The grouping is just a side-effect of how `switch/case` works without `break`. Here the execution of `case 3` starts from the line `(*)` and goes through `case 5`, because there's no `break`. -## Тип имеет значение +## The type matters + +Let's emphase that the equality check is always strict. The values must be of the same type to match. + +For example, let's consider the code: -Следующий пример принимает значение от посетителя. ```js //+ run -var arg = prompt("Введите arg?") +var arg = prompt("Enter a value?") switch (arg) { case '0': case '1': - alert( 'Один или ноль' ); + alert( 'One or zero' ); case '2': - alert( 'Два' ); + alert( 'Two' ); break; case 3: - alert( 'Никогда не выполнится' ); + alert( 'Never executes!' ); default: - alert('Неизвестное значение: ' + arg) + alert( 'An unknown value' ) } ``` -Что оно выведет при вводе числа 0? Числа 1? 2? 3? +
      +
    1. For `0`, `1`, the first `alert` runs.
    2. +
    3. For `2` the second `alert` runs.
    4. +
    5. But for `3`, the result of the `prompt` is a string `"3"`, which is not strictly equal `===` to the number `3`. So we've got a dead code in `case 3`! The `default` variant will execite.
    6. +
    -Подумайте, выпишите свои ответы, исходя из текущего понимания работы `switch` и *потом* читайте дальше... - -
      -
    • При вводе `0` выполнится первый `alert`, далее выполнение продолжится вниз до первого `break` и выведет второй `alert('Два')`. Итого, два вывода `alert`.
    • -
    • При вводе `1` произойдёт то же самое.
    • -
    • При вводе `2`, `switch` перейдет к `case '2'`, и сработает единственный `alert('Два')`.
    • -
    • **При вводе `3`, `switch` перейдет на `default`.** Это потому, что `prompt` возвращает строку `'3'`, а не число. Типы разные. Оператор `switch` предполагает строгое равенство `===`, так что совпадения не будет.
    • -
    diff --git a/1-js/2-first-steps/17-let-var-const/article.md b/1-js/2-first-steps/17-let-var-const/article.md new file mode 100644 index 00000000..3bcf3bf8 --- /dev/null +++ b/1-js/2-first-steps/17-let-var-const/article.md @@ -0,0 +1,5 @@ + +# Let, const and var revisited + +Now as we know most language syntax constructs, let's recall `let`, `var` and `const` and make sure we understand the difference. + diff --git a/1-js/2-first-steps/17-function-basics/1-if-else-required/solution.md b/1-js/2-first-steps/18-function-basics/1-if-else-required/solution.md similarity index 100% rename from 1-js/2-first-steps/17-function-basics/1-if-else-required/solution.md rename to 1-js/2-first-steps/18-function-basics/1-if-else-required/solution.md diff --git a/1-js/2-first-steps/17-function-basics/1-if-else-required/task.md b/1-js/2-first-steps/18-function-basics/1-if-else-required/task.md similarity index 100% rename from 1-js/2-first-steps/17-function-basics/1-if-else-required/task.md rename to 1-js/2-first-steps/18-function-basics/1-if-else-required/task.md diff --git a/1-js/2-first-steps/17-function-basics/2-rewrite-function-question-or/solution.md b/1-js/2-first-steps/18-function-basics/2-rewrite-function-question-or/solution.md similarity index 100% rename from 1-js/2-first-steps/17-function-basics/2-rewrite-function-question-or/solution.md rename to 1-js/2-first-steps/18-function-basics/2-rewrite-function-question-or/solution.md diff --git a/1-js/2-first-steps/17-function-basics/2-rewrite-function-question-or/task.md b/1-js/2-first-steps/18-function-basics/2-rewrite-function-question-or/task.md similarity index 100% rename from 1-js/2-first-steps/17-function-basics/2-rewrite-function-question-or/task.md rename to 1-js/2-first-steps/18-function-basics/2-rewrite-function-question-or/task.md diff --git a/1-js/2-first-steps/17-function-basics/3-min/solution.md b/1-js/2-first-steps/18-function-basics/3-min/solution.md similarity index 100% rename from 1-js/2-first-steps/17-function-basics/3-min/solution.md rename to 1-js/2-first-steps/18-function-basics/3-min/solution.md diff --git a/1-js/2-first-steps/17-function-basics/3-min/task.md b/1-js/2-first-steps/18-function-basics/3-min/task.md similarity index 100% rename from 1-js/2-first-steps/17-function-basics/3-min/task.md rename to 1-js/2-first-steps/18-function-basics/3-min/task.md diff --git a/1-js/2-first-steps/17-function-basics/4-pow/solution.md b/1-js/2-first-steps/18-function-basics/4-pow/solution.md similarity index 100% rename from 1-js/2-first-steps/17-function-basics/4-pow/solution.md rename to 1-js/2-first-steps/18-function-basics/4-pow/solution.md diff --git a/1-js/2-first-steps/17-function-basics/4-pow/task.md b/1-js/2-first-steps/18-function-basics/4-pow/task.md similarity index 100% rename from 1-js/2-first-steps/17-function-basics/4-pow/task.md rename to 1-js/2-first-steps/18-function-basics/4-pow/task.md diff --git a/1-js/2-first-steps/17-function-basics/article.md b/1-js/2-first-steps/18-function-basics/article.md similarity index 88% rename from 1-js/2-first-steps/17-function-basics/article.md rename to 1-js/2-first-steps/18-function-basics/article.md index a9fa6f16..44e56919 100644 --- a/1-js/2-first-steps/17-function-basics/article.md +++ b/1-js/2-first-steps/18-function-basics/article.md @@ -1,31 +1,37 @@ -# Функции +# Functions -Зачастую нам надо повторять одно и то же действие во многих частях программы. +Quite often we need to perform a similar action in many places of the script. -Например, красиво вывести сообщение необходимо при приветствии посетителя, при выходе посетителя с сайта, ещё где-нибудь. +For example, we need to show a nice-looking message when a visitor logs in, logs out and maybe somewhere else. + +Functions are the main "building blocks" of the program. They allow the code to be called many times without repetition. -Чтобы не повторять один и тот же код во многих местах, придуманы функции. Функции являются основными "строительными блоками" программы. [cut] -Примеры встроенных функций вы уже видели -- это `alert(message)`, `prompt(message, default)` и `confirm(question)`. Но можно создавать и свои. -## Объявление +We've already seen examples of built-in functions, like `alert(message)`, `prompt(message, default)` and `confirm(question)`. But we can create functions of our own as well. -Пример объявления функции: +## Definition + +An example of a function definition: ```js function showMessage() { - alert( 'Привет всем присутствующим!' ); + alert( 'Hello everyone!' ); } ``` -Вначале идет ключевое слово `function`, после него *имя функции*, затем *список параметров* в скобках (в примере выше он пустой) и *тело функции* -- код, который выполняется при её вызове. +The `function` keyword goes first, then follows the *name of the function*, then a list of *parameters* in the brackets (empty in the example above) and finally the code of the function, also named "the function body". -Объявленная функция доступна по имени, например: + + +Once defined, the function can be called by it's name. + +For instance: ```js //+ run function showMessage() { - alert( 'Привет всем присутствующим!' ); + alert( 'Hello everyone!' ); } *!* @@ -34,29 +40,35 @@ showMessage(); */!* ``` -Этот код выведет сообщение два раза. Уже здесь видна **главная цель создания функций: избавление от дублирования кода**. +The call executes the code of the function. Here we will see the message shown two times. -Если понадобится поменять сообщение или способ его вывода -- достаточно изменить его в одном месте: в функции, которая его выводит. +In this example we can see one of the main purposes of the functions: to evade code duplication. -## Локальные переменные +If we ever need to change the message or the way it is shown -- it's enough to modify the code in one place: the function which outputs it. -Функция может содержать *локальные* переменные, объявленные через `var`. Такие переменные видны только внутри функции: +## Local variables + +A function may declare *local* variables with `var`, `let` or `const`. + +These variables are only seen from inside the function: ```js //+ run function showMessage() { *!* - var message = 'Привет, я - Вася!'; // локальная переменная + var message = "Hello, I'm JavaScript!"; // local variable */!* alert( message ); } -showMessage(); // 'Привет, я - Вася!' +showMessage(); // Hello, I'm JavaScript! -alert( message ); // <-- будет ошибка, т.к. переменная видна только внутри +alert( message ); // <-- Error! The variable is local to the function ``` + + **Блоки `if/else`, `switch`, `for`, `while`, `do..while` не влияют на область видимости переменных.** При объявлении переменной в таких блоках, она всё равно будет видна во всей функции. diff --git a/1-js/2-first-steps/18-function-basics/function_basics.png b/1-js/2-first-steps/18-function-basics/function_basics.png new file mode 100644 index 0000000000000000000000000000000000000000..ce18bdb3e1b4cab7998c150c358d028aa5af9495 GIT binary patch literal 24783 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

    oUFC^O+@$^pB||9CD+7Jqc+iX*sP$F z&kogHNOd}Z`Bb6+y-M1On#C0VU2xjA3uD8oQqHU3SeQ1KwWHeMI*%*PxY;_gv)P(wXl6D zak22J8PZq(FraSl(6c()o$}2ZIFP?oZ+8FMe`)Sn4F+Qg2JKGoH?dt{`0kjFX2V}M z@}MAiD_fG%1KT-Vfe$FFt@h1ZUWZ2Yw;Z{ip-M<1Vdfq_Y>bujs6rvwN>p@zvoQpcAm(Wp0HpLFHt*s*34S^zA`axTVNYw zaRb~0TQdBIM#>>vOK4&$*v^R`6B9QX3NU~jW>2`q?nQH*2UHp$XFGj-OhIK$p~?OD z{j0fhwWaAIN2opWnMckH5B;h}rG_vPz?Co7$spsjuNUIvhXi%FoW7r(iFw34S^>U= zy~KO|AAxn3=G#QPKr)n!5u~n0`0~8a4cGs89&)$`f22KM{w71YrbI8aD>26^8-`5q z(UWzM3Z$TDc$dpNkMa*i-esjMVtO3@-n34~zz6ng@pU7rAzV3Q>m%AWcYzq&*hny6!weM}T4@@Cz zes#;~TNb0UGj71XKvs`M?$rc|T8@b)kchpo!@Pgi-;E!9?z3{-JMQXv2W$E9g%<(zi3HbU zAa!9&EN|dg<{HtQ5`^6*9a7(+be$Ug;E*vD$&Ow&g?q_JCB}h9(}_>HP$xHuhH@Yi z*GzCepFA(VzO6ib@8D%Mk&uF2sbBz*i+v!QA^~kEqq1FL95m-}tWeb6{WOB}Rgzs~ z_O;J-7?vG1LG=&N{3zDXj_f9v>9uYpfq?pYN`5TQ2SrANwc(_kR0Z?KdZ-`fxm$@7 z-YB0lsNW3vUp)0z3V`1mb4wFtx=PbIT|)XtNCnB|X(2+lwV}i0mQ5Us2NzHT<`euP z3mRXtY^DT1#9tYah+H#4ZvuPn&*Eewll#6W zaWOeLez=8BL$GPPhN#mPc7^Xv50xb(6a1pz&6Z|sQ#2(z#irBQgWG?|cDw%=4nSUg ze$x%DaV9x^8p{*U*z%1jdFUe4%fCL2gc36M41zhrzKqGIV>yY#z@ix-4rv7-2~d}K zl8G?S#Ujg|tIKkUwF%_vsv2viyZmxW1)4Nfip-ca9uYk46CX7{^Jl4=L-UC$FfE8; z3o;_EoPnky!POLQ1;v{@8I7d`jxHbPe__ftg3HApe&iw~(P46GWkpP~3^DxW1#iG1 z)>4tWaW{O2%oJ7T2H}=LwSy`Vj+5Y`&`U)+zyGv)JsFPy7V=Sr5t1Nnl}BDGM_nL- zb+INCt<2B(F_)YzB$cX7CKy&I)(C1Pig2j^)@sP=mIQlD*kb|?M4xS<{|Mk}TT{qx zI1^Ybyb&Z^-~;_3fb=vl-dmi>1+l4;ua(DH`1AJ5?WW+8-i`i8Wwh&*)2?=Ymdb)= z>Vs6qWHux3LG|#1jSa0f0wrelFTbX!2Scg)x{aul%pc^PT;vlA&6IfH zar}RSaMVY;$qi3Y}xWs6(fj8SdlHTP3QaTvV6Sw8y@JU!wi&efIHuAd(X`&C7 zjnGI!;_!UK91`Bk^^P;!n#ADl6xYYCrYU))IQv;lw$mn>L`NAMm?&$xV({V7ylY31Qi5OgG}@B9rR~P^&mw%Wa=;MR&2{;1m1Z3 zb3#%2eCAP`uouhZ-6yyJ1B6}ZI77KTfw>?Dv)XE(IP0h+$?C9rak0Q&?^wlxE^@3= zwv2Y{mO5@_zG?uD8{V4~1ABie0}-w+JOUjE%u=v?S>Ps`vK6~9cL5hx1P<-1eu4k8 z=rnGM4h)+{Ngve89Mdhc>`{=hD|g%-AZRHaaneni6IM8D=+nsbT%??h95f5d3k)vD zkBr1m-BAA$CM8Oj4=}7Wb)G!FXNm&|3Fxl9@zC~(zVBduoB)WuEHXG|-e-AT&;{Na~6;8c7oY%2}ge^yKKoitHEx2n(e9i*0b!=tD1WHY2J8pS%9#Seyu2l6k1{wgW9B?%vU;Pe z*rQ%4u6M)5e8^7-xcQypR|3hgbDa-}j}uU+Q};11ZkNR+PO#6RoA?z~u38gXE0t3| zySPdWHj8uiW@-q8%1l9H4rD&*Q=7~4hNgoT*fr*xVQ&-ZVJUx5Lb>;pPBCSR5Jcc> zj=Gtm%nwTK4^K_my79t598k79cJCu{dvcBeXhYSBXWN|vI94TJ;0{LqF$3CloNae} z#8=_NaS1DTif|dXmv_pcg!Q4p@-?mV^(z?f&?~c?_Z0+$vBhQ)I+6B&bc7^Z+LwNI zcv_ELEnQkgeKi#CFZ1Lg-rvF@QKs$bV|mtcM|@{9?lR0jk|Bxw!~0oOIShLG05$5; z5Q!Y_E3bM0Zy>!4P1b{*y+^_EH!Z?6cXskZxlRpDZhrwlvh&*h;!J6NfI^~9WyMz% z>U|(+5vvgUeWhYBN|4x@eWeU3f4P_5$7mG{-wJVF%mga*PQV-WeB1aT_{2G9I`Xo! z+q0;`loQHzbq>zsxBxTuh8@|~QPeVaa2X(B2tDupnA}?a_z^`kx`?qA^pU>4cnx30 zz}6Oqmaha}1Y#l(@xXj1o&K7jIS7^XIFh1#7?OL0#UbRl!$M*kvk*2Lp5SA;4uU1E zi$Z97yGlHSAdJOaag7t5x8nNmS)O9-S^l+Q9D%|w1ckT)Kkc5G?wuXm{tFica|Vse z0yDhXTxasEj%}{l1~@L;+Zka~NcskD4mNL36lPD=5?!{kk)VQbIXEe2#4O#g9PEIm zH4@GYg=5WJFY9}l(=~Q9hbd-XPvqTe(YlDaZE~-=lJzg-KU%;}1Mv?I$fzVhQ*Z^(EOg0V&(p-D4kLKs6*ADz z*AV#gt<)W*@c0RpBDutt*33}J+x~P{S#KkxO{Lqv>s!yVRkB@MOb6%6EbCI+dAdYC z{#0fewlt#`V{2S>9sKV#+B!)w4*V6$5X=*YH|k*fz9X}vqAx}$^YS$M#W4?__QeW6yRPIxu z>@B~|ad|7pUhA93Z^JE^WX+z#fXlsm;7^H{QKJQ`$1hzdId=b!-b2-MhOpafKeK_f zl~+L+^(ddAcKEuXU;33YW4T_JinCC@Krg%@eek5)eeUTDa?gb0PaX8bW~f1UYMMO!G@s8pt%aa#N~Uz4Y7bFP2X4&iU7K*@m*#gxmG8vz z$LP-hEaHJEHDu8fuN04fj zf0N(OP2NsLPz^OtZ?I5pK1XMl@-85+@W#67zUB5ap8)@w(D$_kIG*=LKO9o)^GH7@ z4eyVO641X7V%fEMSt?`9%ugisBL85_-xBi&aVa-fP45OZW3=tw9?c3oMSA^bmQ^Pv z(lJKusN-4PToSj5SJcrX|3U^$!2jC6@a1dnEL0xSe<87#EQP6s$>y{MEOeDGImNpM z{h;pVhr`q5)Glflu3z17_P#~dw540Nkd$aWNXpyv9U@<^MT1@A{+zoA{Q!})d)x54 z<&}Q!lFksR&@!TDP-WTTR=UM@<;bD!j+a|<8RZ&tWagi>YoR|#miCfM0caJO>)L9- zYA<%1;qcLA1i`i3$Gx)c1I0q`4H%%Q)F#BE77P)_M!mA_0mMS@3mKrQX7F{+DlA``r`hv(j!M6E zU4ac)ZLd@OE^JhE;m%H8g*BWpDuv0PnxG21KR#p+Qf&fK{)jTnT79;uIClynIP`o~ ziRbYp9qxh+fmQVl!voqnJk$fy1o`hZ!yRLi=ktD3KbM{HA_tIaRS-H%dll)V4o!u< z%XTV6c?uK)2;&~}?!EE_xA=3~4lV~b%pV};9wC<6@6A)7<|;y1y=!oJL{qbF2mTJ1 zsto)30A+0!twIq{kj3*grWfUbjj(7si-(CJS@#4ev3#qb6%6+to0sE6SoZDvngkN7OsVHZ9aE)BvO9Y)Z#}u@SG5-MEZw#9h#jDzMVKCrspT=HlspO-oU^AOh0!kpYFsk?0h;2? zbxG?L5MU)J$$#A($I)<@P*EvmpXIGdz#-OX%f_Uv|8iEu=Ut$bGX{cf6j7}o7QUpU zp$MAFU=M_31u0S-n)iln+%hiX8$YI|9|8pd>8+Va7TmbxHQ3D`LO{TP00jlLd**%a z;~fyMcWlG$Hu8Kb>2xZOd^=dJ8BZ?qa?pq`&~HuIx>sC9_u-|SiUCQgcgD7%qZO(^ zo6=|^%C=<1GTSUCEzIJ8^nAXg?^|!sIm}Y>ExQo(N;SjS1h8pqBQC9tCCLE)fyd67 zV6K?NpUE4~Rs{)NQ= zS(<>NF6fcaa}>MsE{M#`Y|zky#9sr9!pS+-bpx+L;2;KRqx!U-o?PgX=h}I=^OI-{ zT3LT|4)pJUSfL<9kQ{g5uE}VgRclP_%9Vsq{&K)v&{_DSgjHIl9!t0ovZ)2B3j+k1 zDXULM(?dsAZtnV9NX#?<{`CcJjvSo}Hb(`;f;gq8rpA_lo(DZ4U?B-YEdW#x1g0HA ztTQq-6&4Wzi5$4(#9&nLkd=iyI6fAJNM^>0-m&ADMKKY_B$_y11!IasBt${g*jcGF zEM=t${f_bh`P%BnjaO6@s97#JQW^YN2UcvtcYz_YamEXB(P zkG1`%Uh?aZ$Y(QC?9KpLvTBO9prYlaXp<}~7mnTZ zk@^a<{U!k{Nftxjit+nyXdG^?G%&9bQQJnB8Tx~{B6#s*8(^^w7nGJ zaN{?`V9?pl4U#NB&`8cT1y zxy}4RivE4^l)iXBVg1X?K$_k1Y+fbCVH&e59!Y`Zc#u2yp8o40y55dHZVbp_P|KDN zdiU4%_lkh5agN&uqnp9}J;VNIn%%*PLh9$Msa0(W;Bv6Yoku?ln=Kk19-M)JL9OGl z4bFj*0;FW~F0Z^7^jbcL%EaXgbip19RQbiIII8Ei?7?_I82 zA@5gRp@_3zpYOY`=;X}ICF_>~41tI~U*?c3HXEskm*2cE3^-g4g(6SB@>hk&(*;x#TaQJ-v3=y&CaMwN0bc>W^1kii{ zIQ@-a3XgNF+R`bwO*x!2gi(NN6`VSR`0= zdYQP-aD1)wM@|#!>n4<#a@Q6gM&kFxbx*iC2f0H;Z$yxYh`8J^`IIV$o{?#wNc9vT zr3BIx7UoWdf%UEyNp5U&ao^|V*#NBs6Fzy4AG=yfKS3wnGG~anny5NDEFHb8ZB&rC z|FMr;FrGwEtg97(DoM3jARM?3x>G4OkRGfxFlC8@!Q0z_%zFVFK`3L@bzjbNpF4}S zk3Wg{QU9@Oalc{DMWBw{_VDQC%BmMfq_wxL05n6M*z;R?;0<%Lvsa3kzWvK`dzcv- z?JJ_s+o@^l{nRo?=?D|;eh9XWK8bK3vAMzacP+qH&Mh4XI9MNXEFT#E_Z@T;_A|}o zw+kE6oN{XV4cEilT zQAq36W*mpr&G18u{&sd3gUbbm+kI7wMp`sBdtbxMub>pN9spN(+>irK^x0)o8nRx`j%zJ!=%IY7kQNzCiI>tC`lkar5g*2`DJzo%+0noUI53`#YY zYSiH8XNsBcNMP&o1)c-HFf?|b6S|4jJQ04S?Z|S6>6ws12oe$mEra(V_%yL+w8RqI z%|R%CL{{fQ&1+woqe8Zbo*PhFusgaI3Jc8?&q~x74kBSz0zPx%?1WSD08L?z>H66y z0CX_|puyY1Un&$3GJQC2bB+oj=c2O0r*~My-W&68tiuJ&AI!;kni~>Y`v(UjZR` zy*t!lKt7!Cii{134{re)Tad;GoyE`hwhwY4dReI)FJ96q8=f1UIX^EeuuPY=n=G4! zG4{tr#GBw(AWQ9BEFYAMG@{qr>hT{B22_z2W z40!p!KA2f-w_xymZU|>BSZ{8G;rrMfzrZOewd`yv!I45){P6jGv@M=#6+6m!;s9)d z!W|t=I9%y~-yW_&4J2sTSfG*W5XU+{=8YEJWCanqf;QZbaccpN*Px)FF}TV?;RdQ& zHedp;iK>+Rbh|wIV|<&Lf6EQOxn6F;Zu@e>*I)}T6#p_1=<%tw`2;)SmAH2`aT?EM zJDKY|eKM>j{UuuiZ%ig!@i)Xom6e#cW?jiaGW~kh@z`(8h3pe2-U((Q=JZQvs?Yn5 zfdk!FvpJklOrFIWIKt#oV6K^3udIlM>!UoG;AfK&H59K1BQV=0K#9pS$ydw{UN;=T z2%pVFjCtp{NQMRwuD|%Q^<8s-!;=*?{KBJ;Ii%OU^eNsme95BW`wm7K_Ze5YfWdj zgp(x!NvF<#rKd6-v79%v5x)$T7!0_VDeP-9UjREUg(Bc82aInBOauIWxtC)TZ-)M5 z>s}hpVm_aWn8~LM5BvtN@2KXw!3c1+6s?a18V3z~WE9ciIw)}gwikHB*Q5%KRspJ} z;oASb$qxmW7jD0nu`rj(fo#)J1uY{j;m20`SHbP@FlDDGMb{r3-zO-IWGv`q{s27> zE}h)m=FFUAB1=MmkuloNryAfoJYnir9F~vPGTqHuB8Z#enKDCu_$~M%$M?1W`ez_%?ErR&YZ-jr`VmzEdnWJ_g4h)+J zX|>HChvC3pS6J8m#5h$UsCxAzbN82S{Xn1$qf? zh#*)73_&k){dTbXIzi~zC@Y4TNk5cPOyS^ViYQJ4c|sV}V%OwQKQaZEQ&ZpI5J%P}tOO3ZseBVhUvA;DlVPUmqi=~8C znmsX`lz%v5C*7P1eHulPw1bW~5Z5J_mBG_KD@)_%yylNNe4joBA!{*@w{-=P4+oF+ z{ET}(CP$l*En<4Un{nVi-sx#HKZrZ;w>&GmAXj?Y9FGUUGO^$7=Y&oIM1CDj5DH(L z?6lQ=6^z6PT3OLpz2DQ55MxK--m~yLUvOB3MvfJ`%z9x>JtOwbci1@9j41@HNx{P{ z!b=eY-J_F;qdI*F3RQ>so#+m+SOhtmFxJ{TGU3Qc4{-LesdX)pVh{_=<#A6#7J%hM zKC|A#_!ZTnAn~|b>w;DHEC~-IcZG`iw0)(_i}JP+|BW-plgkl+Pn*qj$-dO;HzYhSIOsr<`OZ_T!J+7G&DXW_evK|Lo?KOH z)(0;GY>t2mD((A<%9qIr+(bp3j*TB^GL_CaBh1{sl7LPWyi}#NR|1e`CPuQCo7XMw z<@)lpZfo#*hsyAK(2lLf@n{m$B%7G_kBp0vP@#XP-gfuRF?#w$rW1%laKZw~mel)gQl zGtwp)C5Y>%D$E=WnRI{SiR7*_5(9TZ-x`EMM0dlBlm{uOs-lex-dC#;FgfNviGbh+ z-G^}L3=N7BmHK$-=YBlY?i|Cp|8+5@M~zMg{2cS=4a($(ydw7OjW!}R$w`R+(|ZG` zZ~mmzWmwVR1UGmwjVV!X=qQxi>T^v>~Sj*9vj147gn)(j@bAY(Z!sp=6_`6F{ zg2H`^N-I}NE#J;c#VFgeo!c(Y)WC&c#rbfc(?9Lt50#DlSthprrNmu60pYe0hyZb zH`WkEMqKU5%PGpuaUU`D@fgyDuTvOhW0MLflY<sK$2MWy*rATA-_5=0J+6=Z@cUeMS5mq|}=m;kI7YauMN zPJI61XAGjb4cGh%6@&-?3;rW2+}nYTY%xXpHz7PHD%_v?wn#81&RRe$Rv04;x3`{e zW2~uySbo4=MCV!1Eq}81F$SX>0@Y?fxHXoW=j-hpb14yJMp*3n=T@jW+-xupsDmsC z>%2}drxJPrYuAG?#9Hrn{z)Tt!y|AS{4}Bz+E2`Nb#R}LTk+KAOIPFd&ns>ju&&V$ zHYBPvvcLeKKVi^$#9To8KXD8jz>(2 z#MUP=9$XnU>F+(Z1bAZ}OXN8WvBOuJ`-B+w1!|z9#P&!QzCn42n@?jT?k}SXX8!k1 zn)J~Tco@@#ImY)|S+zO`iq}Gl1=wDv2XPjGAO*Eejs?W#Q^nKix+5LJvF*GT3%Ei1XrrkFbAu{e7OHvV-KwGF_4(-jr@ZB0CyKIUe6Lpsl&C9Nwe$skU4!df zOc)Lf_~xR{e<{5xv?{$A<1D5=E4s zB-IfXg=wR-Z=mh@F17t}?=Ac@Im1R}k2DA|Sb02Jq^mPnd(Q*U#;2x)XIh!{2ik}| z(qp5oqsUl^vHecHE1hr}&-0$KnFI3}99#$%Fc5KIdyVjTg5ZD~D-}4}N7=3CgQgzk zRSNBAGi8WLsG&+`F#|?J53+>Cfs>@BB*NaL{bNjLrDy!IeGXOx*uPG0_b0uxWP(Jh zVdasD`ia?nh)^`|BrIHMh@pw#pdNJB+M*mQX&0Z4N>35}POQb2d;e`Z?7Y! zu(Vpv;vz&{JI;BxCj(!q9ce$owz`reISr7uqltJmUwy@g#Um?7U~?0Y3n5IhwO~+- zTi$kAWl&%Vov-C^dn}wZk!lL4>=U(j;Y!&G3@L&^ZYSLV*1&lOK0o5Fy zo^@q7hu$Yi+pA=bNa;cghBGnx>tIQ_^TLbD;Z9_$1jHude7sq;6dA1s#}IOxJXFyF zDPI9k@O&NEJoa4mc7U)SSftgpU zcv8fU2fwmxf~Q-ypbWEppd`apU)ACCd_Gyd*nROf0*{1WNiF1Fvs>eEEZ&p(zXZS& z3TC^s)LH={v(EDQHLFig>h@IK678Oq|W%90) z82+2C%VBV0NLBS@+2;Myy~ga^qkeoCPf-GNk@Zz-?2 zFnBY}?7%!trub7hp-C82-7&G?q|W00^1k%35uR9$h-0GS>TS9?TEqudt+>Z@*2KJU zUl|J)7SLDPd>zuk=7QvruY(lG=^k8nay-L+b}{|rWIfxSa2H}8g7uT{GRGQ>Oux;} zO~QT+`9T_}P?KXmK4tm{{!qut_v*S?SNGcXT>7`!I|7~!)&vwTa;-7;JsWxmTIahT z8yMWS!;j@x4VQCKGUx}$LJj<=#`mXjf{+)S%tg6 zS{dIDMCrFN&cu;Y)k`+cD#o+jr=!!hSo0IYT(Y`{)oeL7R?dh1+H1qArF{v3#G`R@N0OeQDwi#phPdZsR4fC?gbldiR)F zO1bX@bf0(VbsW49_*S`wCkU?XyC!;{FyV6Jj|tNe6E5V5Qm7Z;Vx=TvOz~n1p=HB4 zPQrD*?n#iajJm+RuyT#(`)LD^=ump6ZIfhOE_=J2oe0k{T)e+n!A@(-e{yTEJd zLea9;Y-2|AIn>~Ou}d_xcETmA1-Nk;bHb$8)71_k(IUW}!4N;+=By-#WFJNTpBfnT zj#8!r{84E%(+4aVGffrrgyh6xmX(ckb%~o=?BCfRzvuIL$iU<2#(zpz=A0;lu?FV# zJa3K-T)DKAwn0Ow#i~>GHuC#-n%6WHGl#BVO5PKFcVy~iG*NOg2uZk*xLr#e+u?0G z;s0eCjx`0dJG@+y?9hz7;K^WSE@YY>C%OJ~bH(-&{oq@pP z0Qy28Fh*hU;Uw=%FIA{j`=L(w_$QrYNmQ7;5Rv;jgi)|^)U575ahSOpVvA*>h?`7p z@!E!}(rP8T1Kg00aAzAKNNxrVvcALs&VuU|CbMc>cP{Te&iK}NBH}tV*ELh4U}cG= z*fD-G3`Yp}BdI~3`u9Pn;)K47am_C{L`~pIONIV6@=%|xREcJO+-0Wxm2r_ND(>5d z@%ua8Nb`3Fd>)SrmJs#sheb5X>PCEyKQ4;RhL=oY zGDR#(>7Hq+1Yw9PaMYsu5K&6a5YpPziE#-8t&Fi)dQg2hC$mINI=j}*m54M&?Q~YL z1g*EX@lA90`~4iN`GGaZQB)AH(%MC%gDSJ7QAFZ@lVY6kPr~>%^>M2p``>dR&QKQU zoNguqecsdjYzHNRS4@LjiRL_vzzw0*^!oY82VY1dN3Jo+>Ewc5UP;CM8mWjNGz99MVpP$ZA+PEe%qXpDKKLIFGtRC zoF$bc0#(Q`Ou0+>9OQZF7qWl(3Im3AualTE&`5h4{dMcgVumY;xY=?*>>Czr@fUK& zi}X1!dq22Tb|SKrer-;V$%^W#grtnAHF+s~B}%I$yPBE%*;gy3$0RJWoA54Y<7L9T z&>elIEoFQume%x}Dx=5Y)u^o7*t6J!w^v#AgLG09L>LS0bI#p4u%`a!l$AK=;3fGG z+qMl3)AhBze&o!jg^F5lTFqDX4$y1&!`7ur8OkF1j*qj-LfngD*gs=Ds0_uJM;%H# znJb>Dz zKE>*iGQxK4u)MH!&}qMkB04|E zgG>T0E9o#;MU4u69|P&=96K7{q3E@)JFN(oxG0!XXl_*iW`)|ml_j2d$0HoxK}p<* z{8^E&rMbpBOwznM9MV6fT&a>jo^R4ujm_P!p`;|-brJXE>LGv-8vDp_O{W=g(B;*U z(Z_cBuc{1tLwHo)QRU(sR{wJqIc=lrv{?Fyr?Yi@kNtLMLwi6?s0YKEZ~=$W&-c+d zVxR2Vx$elpz#q7&D`1K==!+@gzxZ^4+h_J zVFqIj>eS{+T$+yz4P|xSFQdDc2t@haz~Py19_Z_;E2!dprIRYEPnj|j-Y}FErriSP zE`z6H!He$su2LC-DVve%&007$wLDe|dRBMigG?=op4wsrRQ9S)z{aghn4tM?_YxH+ zUay-0(->w@h%O8C!J{_vjk?v3Nx%Jp+@RzpAMSI=NhI8&w?|F zy8DVY1njuOSI#gX(F>&qxDJJFrc5<1n3`|9~+s3Yb!r=J{I z_3wXHw};;9ZI11=#1xPR`)&DouZ4^39?b%47AitojjBS)R?M%2;0~f)w3gR*n$&bd zO5YS}@xupFAVbHMH0CpTB%`N|-JJ?~?s^5xAMobIb0z~!N91~0Ht1m{CQcW@#)a2( z$CvokKc;ZGl^r;K2Wzl9M9kYy@oZ36xaBJCV1;GCkqYgFaNFY!!?2wwYz!~T?fOy{ z{Mos~>@&D5^)I{KWXI*6X9fL92fzw-^#^2^4FU^!YPCOBAmQG)MPIlvM`@tkIZEA~ ztvKXJBo>n0HIGVJ`dw%Q^%Iwhr!7+bkOXFJk}jG>Yf+&RW}=*8o&~t(997yB0aD&# z&K{p-C3d|ClqxfRJ@BDMB^l9TGp{bu24f5`0 z#dd&_-E*NrOC%kVL?U^(r@?&r(qr4Q^qP@t$2O+Eu@~KDU;B=9vD*r{`gq8qr`Dnp zdFAQJ;1f}yDxZq~Zvf|T;-E%PkdZ$TL6AapzI;tULM z*8>0`@c#E-0Kc2&Q89WU`m7v>_ASZk4v=iE^~XBplM89hK{7P(F)8_t4cHuz>=H`2 zg8r96HVuFtevA^tOcRH&KbsY{nYa7EWYHe%hb6f+B|d%Ajnt=_U;kCBu37gwlS?au zlx`sEBQ)ZvDhja%z?Kpk>Cc>RbhT?+Oj1k4p{{3keS=08CP=&X@EC=v(wZ+ISt>~L z*?3&6#+Rd(`o8B1l`NKD-2y7SwuzSK5wKccV0^FY{cZ|1NDQ!e%IufL@95Pmg3_dO z+`@Om!H19HQU$JmFBq)dl_2KX0wBHF>-$o{wujbpf)fYy1`_)`3290hD=c^Q4E3MW zjBmzqxfy&x7BZ((pZ1^^M|v?<5b~oX($!T(;)xRSRdFGxUE~6{pJe=l2+LY|RF&(R zL&P9SKsATFkJ8-+rGO1Rs|2#(CieKtw}Xp^7dSimtTu|@5UHeE<-tOMS z0zF;&>^Tg#0;ylYg=Mm2Uzl3(nxvuQ&8X-?Z~*fFAJsouUQE&dp8#JTpy8fG^I9R) z4Q-ACI=$R&ffL!=nU+{z-x^;QZ_e6H-Hnl=@O;xc~o zW4Z!1O;rdz6Xfx*j8K-2F@Ebqr;PMDuN2Y@P*5jJJMHKs=3G!lh}T6$ZSuBW+U=)MNpx`==-MwfC7J!46k}5(>nVyG6I9S+iu*#GE8oxR;#&Hs>ZhZZI+`>b zTB&^KJ@?}BLAf|#PhMs=cy`<~@Ct5^L4kh2F5Fv+o`Y_%D0|}AO3s_4y12D*|>l&%D$=59Wbi%SFAlmc>V&laqH2qVd;*^ zD4X7^b3&A%75u0BJX}#E9KPCo9~gt9U~JFdQS%8vQZd2o%|jqSV}xh>tb<%@I?Ubj zFr;N}$Nu7KB-pw;+P;WOg1vw%|L4G*Ee}F45?`L>91_Se#M=cuT8@T0+r5FL@dzWC z34N0ofzjOF+^wU*f@abe2L6F$_!s7R3bL>qipHRTeyzu&`~=jJj>D`CeUWV1B025F z?Q#mSeL?V0*U#Xln0pZeD=gjhDkLBJ8sinH_1d9*!$EL==R~ZFh@un|HQuiPwV_NL z>AIxJ-P-tm+}S&jMwTj(3w^Je-_R77vO0p>s~lnbpOFmK3vAE%^O>+3ovUbTm;ShR zrR&`#*y>=7iR z<*@k>?x>8!`oQ_)7;=dBs zE+j!696p}}Cv%R&O%3m6WV0N};n?{d@Ob>USUwe6)r*7WyWhY(L}Y44w!2PkM$IS+ zp6|aNTGZ=;WP-auJBy%Q^bjPcBXH#WCPuJCK!-E_gtpOx8QCxV>lq}x3?}=90b8J9 zSX)@JX9liNw+Z{DMsg~^{C`02RukZvUdvg1TaJFkG|(LCt&DJ zufku)e}zAe&1YJoj0xR;72YF_G5|-9((eMr6R8ip@nt01XG^p+xm-m@Do+S%ER z)`wi&Yt7RvNb3;NK4Y|=C7oYvz%^XX$TE})F+@JE&ByRld+S=!Y$=fzE~-32tXrG= zTbuiK#WgO{rexC{&0kqj!->XK56DDkx8oXv<)BZ*m7J2ooGW_u>9IP&mlqmoRk#xjBpsTC161+zADX?xf*YU~V}sqNSKwNVT3qZm z7LH}5pegJIe3Hj?6?1l0rwObK5iw~%yG|{{4LkcluU6ztCBTplZ(x1P;OP0S*d{Xf z6Y8adGAoQ9L~8rfm!US|K=WW%Y|Cy&%#opuAuVeQb3W{9a`5gz#Y8!5Ovr9xa|g4eV9yog11)+>EBl1FX)y*#96+0PYOX3XW!O z0exUJYxl9tZP2r2sisdRK?Y{5)18hCH)A3ZH9+pO6Q zY=cJ1JN?aRES~1KXmMCZNH}QF+!YPiG=O*p8t|3)q+64L20mOP80Wo`QM-sisu1AE z9WSE!ZWYta>^S*v!}c%UPUIrBN23fuGaguAlV`p`fd9y46#qtmbhbx~oXXC+7kbIIwVKtU~Y0ZHU!sXpD758*hStu^zM(LkMbpv@s@`P(yU#sF`7N zsevS&+KF>lbbpDsl<34kTae;o3QMyfE)JTgelR+DlLMYV@cJ(uTmqew#tBi^4$}9WpST23i`FC9gch1P62q z@<#v=WUn5OQ$ND+@j4S_U^kazG3a z3*Q0FWD1(U0XFy3Ch86(G7B?rN<@GTBRKzaOYCqYfS2KyozJ6*&&K9`Xl{-9g5kV+ z)4E;Z(Qe;KRiH3@EMV=FwG|>S&p9RPD-i{mD!Vj!1a_ZVgAOSPsAU~Tv)^;9-yzz% z*iS$Y%2S95d4{S`n>vnjS-8xQn)*)P1=L;`Dam(PK9UwCqQ(^j&-Px6B;1I79|&8T zBb3TeStqoK8i4mB3<)u)OdFZ-8u%cyG<|>RJ1##!(f63XkK`mo)`O;vW3jat7u*Vn zk`0dd?f2t3cyV>`(j0+Hg}@ajF6tQB?z7R`kKU!)ym>Rc`g#I$mS7qejyF4Z?qUub zM{yHE6TSqz5x2CUr%&4bw+C)-ufretGtWMU+sjX3+kd3twigZ2+}NSRP3*@noBd=E zOGyj$797}VZ>uk6@4yWazl2VmI)d4piw+)Laqv^%{!e<;$~2IUTXQtS$@7{D^i)rZ z01eR6AT7OrMT4UX38)>;+iXu;13zw`fb(Pj#cBoARQBP(c_&1MwnUTNO2|XPIg#}j zk~F}d$LBNCTD$1GP#&(cc5*S2Mgf}VPUAqXLl4H;%p0$D{eC##G#u6*_y&I3J`v}n zdZTGC5elsNXmY!okpnJ?>$96qG}*O@8VbMd{Q!R5nSdl&2nO_aOgHUerp%W0`=i!s zLk;U5_+JJo0v&yK0GM!gXjy4Mz>EKa*W2I2O&9H=-$V7IOsAqnU9TdR!U;4cNzi zjO-=6ONV@heX%yyw!vV;a0TN1JkC))jhJcRjAert4AXH-8X~6Xy z_NBU*0Yk2ryzKM=Vaze0G)~W4$;lMex$*y@#&8G;=Np`J`Kvge3qAPSqA9H<4*p+5 z>bY&G0pYH(+AvtPcP46R0qD%o8^sB*a?cy+Zk|W4bYZZ<&pW0-tNQWi4ABP$;v7#t z62_Jz^I_YuZ<#a5h+E%AB9Xl7D4PE2;P=Xbq&*ylB7tr?_!-Pe`41A8lF5z0ve98TOIj!v zE5bR#0>sscuK%(YcR@p|5kXqkIeeuf9nIvlNHBR1$`4%RX-k`D){Cr*-i29guQAD* zP>qVP$o~75@FC=v^$&mon)|l*-VLn*zDS)251~DdE@%S~ML7p&SJc1}-!al1n?~ z_4i|!O^fuN3;{x>M_D$JU=D6^v2xXFB)~}M)q~!PlFWy!@@jt2U`qt0Cf8|JE53w@ zjuB+W)TpSfI17P)1=dXVLMy#gOK#a(d~b@hL^9D)Ua2UxS|VjK)lra4h7?zvhNomc zBXc6jC2b=Y-)FKp^4MGuy*EaV5wdo}g!uU&ZN!T6PkC6L0=b6kuwF7VQlS3Od>J`a zkoO(+MQ$IN`-lMZv0o%Zs|rDlIhdI&sU*$q;cK>x5Sg&z50Xjmj1}VQ6tk1=M$f{3 zU}FE(5EFJQo2R2}WZI*5smQa?jq_G|U48Z*7->b+FY-(zv!iTYB{C%wCz(qLQ~F0Q z4-=_V9|O^hE8|V_sSQ@tV(A6(P?RnAiPA16(D#zQ-)m{*3^YmKIj}$5I8%N=qVGHH zJiT#qGIL&{bozeF8d+uP_I!^k>xtfD6l&F{R1SG-d-!MTZmEonYcUUEq_WR_vXv{` zloL33$r*or*g5S<+ zi{uiB+EkD>oLVLQ!#D~w*rH!HJNNvM<>~OnU5T_jQVBB}s@Xh`0EPe@eDS4a8oaAw z@*;ylE zR4n+8*RQ)?gw%{}XsX+duKW|qkQU{oJ`ll^*^ufW?Og5`kq*7Q?AcBtRSFCh#1)OV z%*+_5q3;2U#rzW9az2s~fDaJzycfk^Y#`MB{%0q?M1LMl-*FI%TE47p(VXtlV`*q{ z*v1~HI^WU>Ni7J|OWRfD`jx`Nav9MnE|bq|<8j}F!P^_)ntY)REwn}-+d$De?SZG& zxO=?k=7^;$9bVli$VPlsb~HYrmQP&5RB)fnOxr_5XHIS#W{BHsy1IK;`PRwvvz0G# ziE`3_LO)i|r%bsjN~3tsKWPAxbKo%Jm8UdCO7pz-b?#Z-TQ;?;b*q**r`C>{9(|Rs zYMeY+dX|&oq`_Z~r-73Odm1Rc2T{8A{wpnq(!A4gFfI*5|uCMmsj0VKg+L+ z^7z7AZjh8Nc^%4e7k$LkOlMUmFo z$Gf$`<;5fo3*Xpx*j-C5y8TzFfW^z_H6YSL124$C{?g`;IT=}rLT14vpUo~_^&G$7 z7d{pGEO0p^OJ3%#T&1`_S5Cv0Y*F3NrNQ$nSLoWvbya9w*8)^TnjLY2K?>f)b}h93 zT5cn0PQmCkIKFQRGjpm?Qz9o2BB|OEXstpD@`Ib)FZ!<0DjA{pN{9U5CZ|>PIQwRF zoK*&VRZ>nARz%I+bg<;QmYp=+^84%5rO-&_XgVU6s*LCFT}rRm)3zq!_&ax@XU?$N4O*3M;#_(9v&=PmhkN3ctbr8t9DTp|4T z*uAtz7+re@@snrzoJvhyD=%nk(7Ka^{~qs0`AJsM&!2CUcXg(;ykVN5hPdBKG@}zQ z-#1&@)!7Y3y?!R{>g-(w6ipufzP#Hstp};RcZ znXE8Mv{{Pt0OX}B=6G*gFOin?{WIHyL8gzQt$1~ThIVM$Q;(QZ50#J>)k_NwL$f3H zUsDc-*cZ;qkx5HRQ^dO$I&v~oy0Mi^cD?-I`x0qUssfO-CeoQ_*g0`HDf*dc`=M=?>QFD^nep7N>Z97WlBsA;x#OX^6-QJv=kWnXcDxDh?`DwHr zd|2WJ^5^pSQaPk;>mybv{cT%ME31bkuEDaa6z5n`Em)U!i6ObAK@?OOxIP;Oqt3d3 z>avc$J1C$}-Nsa3^ooS{rS{ptIR2>4_~|NL7L$c@?W@Eom_-Q9&0s`j)H`QV`9NHi zy;MHF@{+VNBF5#8rRFO}riTU1TGcpHA3l@vXp^0@~q{F$6f2k8X+zs zD-*tFa_snV<{e1yo$$aB;0RoK1Voz^97_^GrPY2dx5g#97S#P>9rG%b<7(aUFlcnB z1R2$~-JZl`RjJQYU;S;@V$j;8ZR>G<$a~v*u_(76l{LF`v9u3W&X@u2dc}&Cdater zrImz)(tWxtJ?v~gEvnO#MFGPWrcoY^t)Md<^+x+tG8^I;YAcLvIELcHT(}3dK=i+r zg7ua{cCU2fK3r$^;MkC@Yr9A}a8d4sQ90D6h}I+8bH!YMZ0WTHDlEF) zyV8%If4tIyuGNgW^6S-A>p*$i)@zl@Ty#@KfjHl!(=EX5g+g#EpnQZn#NJ%FwM07dDqmUvlB=1j|EldBNtUX*mq!Fw$Q-#m@qlMfQWn_Gqy^fbD^NvRb+W zTx^c3By%l0sS)BL`+K{#Z6G$b5p2L!E&e^2ir!BRYZ+9$I~;+l8v!IG5YL?i_mMr| z{%bvm+2_hMSadmOr|wRD?zU~GEoBmF<3%U1SjUJskELxd;z%xQU9$F3=oDgncDtNy z>)ED?=%r{>J9Y~**WNFe7Y{$9)is-SfpdmDxN3L(e|zU2+Ex|C@$>SUHftN3lm>Mh zE-uvmv2Op24J&Im$EZWuPzT~VK@h<|0y-4^Q(DkJT$!wbBKk-FTRU(l_)n$kYUgh! z*s(uMv(at1VwZGD+O)O7S<>h-JJYI6{x%Ylvd8g;zbI&ao*-nwy zK59Eaub=*IsJiwnv3C@Y+TY;*bx8lzv47szb=tK{a-9o(zf%1K-wscI{prTreJuHZ z3GQg>-!eMFcN&GC8-C5RC%{IF?>GoWRTQH-ZzY+M{WO*;2HRB+N~Q~CAC%@NqT{56ZV<(%7Rqm^qD(CMeBI~Yf4T5StAE2A zBhRt-^<>r#T->(vCl2%DQ-G^nGPS0APo93&h$_sbap$r1&cnz3)cf91F^0GNt(vRC zJ{X=!wM0$@h$Hq?r9C%dPtnFIkMvYe-#!}q*KvZ|Iw86vfiSsQ*0=xI2eW6o-b!i? zSJK~_xyfFV@iLxzw(J%9P|>EjzKiQmjM}@oes`kpt2r6b^}?Z-Z~W`Glyo~{v|zXl zGPr_(`2@5`h%$fuNSTX#gwJ(;N8M?(*kGx94^#Q^lT>;}OVQ%a+Rr2!FMWRBO9p*; z*+=y#JL4PP3)r5saCDbr>$fyFM;r&A+B~D$uF7;=l#P}c8&}2bV7}4H>fY6Pwk=un z0QX_O7_!cmr$c4UdmG}478PBhr(8)zE1T5@XUqAJ)M)Jd;#j2IK4jFcdC2}wGOzDM zJ3Zg1>B@avGBtEezuIr$4T3Ia{Kk>@Ow_myx+NukrYb#BvFOG z{`LorT)RdG_V42awQ^j=iketPZy*W+rAZ(?#OJ5=cI6M==_Z?R8`>N7o!b+G4FxUj53105x_k#4tRvPU`jbK64g#raL%!@Soa z6f#`mZH2;N`j&I9rDjw58CZ|+-i08Idj$(Q5LgBQ-Q&9YH#-%)4W-ISO5MYxxE5c| zC`H31C@;Nz!G-2J9iZ<;ivV^9JD79^m!J*4snr7(d;o~|3c(Eh4>av)h)%A&v2 zb6)8SO;sKqI~%RJU=1sb)>My6rV1q)XgEAhhn~qEGoG7w%?iLU1`sGl0;TG472~r) zpO+?JYH)@$CtjD0Gg|YUYhJR@rMm(N5C8!X009tKnt-W>ON^F$P(T0#KmY_lV66z4 zX1HXUFwOf(VzHRsR~WFhdSuWG0w4earA@$;;0%c-3=9V;5WGyGP>8c=H0lX=vA$K> ze_R+n2!H?xtOWs643~6FPMEFc6O13L_t93b7a{O#@wA{51V8`;K!B~y3d&;pxQz8J zxk?5N3C=(P0T8%92q3EP{&)`Pg*gOF^SH!N!C0B|P@n|_KmY_lpfCZ`f-?#?fnPuX z1V8`;K)^f#FkI%bgeDLG0T2Lzbszx4wGNQc1PFit2!Mcj1Yo$#V+lbJA+SPaQ%kdck;aN zb55NfaO$htRqWcer@L48((78Aa7B3u6eN5kC@3ftDM?XfC@5GxC@APx2rnQ{1UZ%| zAb+5pl_i9ss>TTSp`e7Iq(nccdO#m#z4UowdfUIYklley5jcTSK&_0$OG+&VkA)nu zTAJzpRs57Iv2K~>=dhy}f_rkSpuW;KCxkGVymxP~Vksr5>Y)$^i_AH7cAq-x(pJ(I z7Lr#`XgaUJh~Q+P?V6{1nt9HZZzwr4k~vVG#8ja9N<_ZA{G%L??yO}vs0#E0y{o?j znQgicfooTgx&CB5&r?3kIhV^77D%hWX2IFaDCsMbb9eKCS#Z%>Mz@o1oFHp_G*(wdeR2MX@#3Ill<_DVVtBb)5+y!)|I@po;S;*R8z zqv>50bh-inpP&!|eqU^;FfG2Vmum~{&AW2KR&R;p0?TQNljyS}zSd$nvX(%>u)uf& z9}QJ+9~u0RQd9>V$!;3hi0I`Rgz?qK95Z>p=?-gmURDy6biGq++-7BUaNQZ~M%FIu zdbc|M@ycc2!)S^jmUZKBQ0M0`&GPoTdBT{?A*m$9=N`%Rh zIo{9%2*C&M_9EBz-dXzEBu3_l!G&mR*$ZQpYV0~nnG~|1TK+i`Xfz8X82ql*c>E%WZAaRp*3`1| zfToC@rYjj73@OyV7c*tDhYg!s=kFoVku;z3M2P+Tq zMnFuy8|_WmiW+ItPrV@w9}dmD8$F{l-#wC&R75mI8Su&g<)S=(5cy=JYSb#lmGljQ zZ8}qu3B5GvTvoxSUOaQ+ycnl3raj12ACEn5*gi!!F%meCA0UHYouT?WRK;b|J2Rs* zj@+Fn62jK++42JN2+D&w`1nFRV(mh{G7gjYeQ$CQmU_u_wTeuOeZp73AkEEL)KOn4 z!^UsZ%O=9p)IvAb&M;(xl7_!=BU@v(Rh5V$F*kZyaf4>9R{4@0#Bbp!AjQ}KK@ji<_OfaK>4&01GZX9eFn z)kO8yGkdu#MW3U+&U5{78)6z*Aicstwgbu4Ol|JP?4pVOLDWk(|LhW0;&Ru;mU)41 zEzWZ+tGiALejW8Qx1XFcOZ6_?_p|jM)3kNyt7-l1yo^?hmLqCwseFjHeWuLFa}4|e zJDf$Wg8b{l7rim^1nz7><~-ra6h&%&gY9kmQoF8|R%@&Nm`%&l#vColj+keZPUPVU z0wZ{~=Wzk9UqUE)h`OI>NT1ioN=Nox9&Kb=*CZ@fJLpfm8te@KfAeM0ZthX8%exc zi_25`tc_HSs-`V@yTukhN48qmbfdd?Z`YNC3y>U%(USW*NEs9_n_YEdTG%wZoUocp z9cfEleZSlcm2Kw!*nnU75Zq%h?gi;hyso7VmP#znZ#g)~Y8vP~S71dgPrp2Ax3v$zBX=wK!q%8{C`N*VGMc)b5OUuk|ndLJWfPohs24BT$8rtlh zQnsY0_JiV63*E3P>=iN(aKm+uj+x{OhYa&Hxa(8vk-seHaTdJTAO2dsI@n(480++E zs4;P8iY@Dqg=Zddicgrof`|$4Q2H`^+z~@Yx)rrTEr~@;T0QKiR98t2_d8GPFSiGS z?=)#E^P^X*FCMSxVr;ZJlkE8gerS2DTVtbQ--Gzai3W)dIlQ&tsWhcCM)H5Uv z&)Mg$8hPJ{mCmjflJ3sA^Ucku#m~}vr&^G2(06mMIIxd;x7f{9sZc;c4IRz2=kQX4 z*e}<6auVK%XJVF@sq>?_*MOIvHSgX8T51zp=+Itl<+$&w5O5b3M3ul<^LU?G zLxJLm@?L&0;VE@vUctp?W;dAckMj*oRuH;C^HPy3U$(;^>vXNuMbF#)3TqJM8m!#> z6ZgD*BxF`&A!us821hVABZm5MaO>; zm-s}dThSOdvr~y&=D=JU!P>`p6Qrt%y*cc*b~sHLlJ8JMR^ttNTv5#FHO1aYRHs>( z=$4xZTc=2&+NNR3qePTP$Pp zqU!sPYN8f-5o+Cvnnjp-zfSS}2kzUSnmSz4ufZ`x^yx2$kR)y!FloE(N35{;a>5+? zx~%4HW>09D_SV)b8}j%&{l0$8=Mdcv{1biakznM$y3{bZnHhJns2LS!GD(4(#POI39ebfQ9eE+spWK4lq+O zLz66!B>{FRPf2CcXD`mQ|9q;b(HJsi#KQRMojHe9@yL0*5O*K+2{A-x4+6*_uMI`kNu~ZBON2NafYJs-Sg_& z>Av;LExyh>wrI0ot)ovq?($9Hm_g&TmdY#L@MFRA4x2*4 zVxFbH7>D(J`9jayEdTZ@;AFa^0?(S-?ZHgwJt!E z)vfUSZ6yJL{@y{Usq5a$+L!Vz<8k^PjHMn&8B;)o#*p`(t6q@>sKZsuHFJ#Td!JM1 zb4P+3#AGV++bB^cUr(@Q29@cu6*tv=EIiWiy5aI|@Ls+g7^nxW5=dujH;%Brv|k|I z;Tm2kvdL~~e(k~`T4Bk&fE{5T9fS2|o08rOF!CgR+QT-sAjWDqN}~>%n09Ypli#=x zR+ht9isD>?O_w-Pv2$m$whhs3y}g$ABrrkgJ9^0D~pVPoTfvH*BDh z0%<7fOp5W7PG295D_@+~RTS)xJ{sFaKAW~A?sG+I-A|v%@)L}XRB26edE0j@IyK%L z3fQDJQ1qS!reasi21?o}Hf!pS^J2@TXd{YppW@p$CIMq6!z?|ivs}yqN*rq9tC)Pw z)$_WPwNB&*cISr(Ptn_R3RPC^G-+-FKvYyJ!Vl69EN}HXE1>7K-o5nF7@Dh$3lBHhd}#SNwF#j8VWnT0Yx09*Y`p zpR4d#u^5VHo&a@qmr)=?$IktA3N(WN0~QLM-JIfK?0Jf}woH!2s%%*W3lRVE$32Et zkcgz7DSHL%1-y{>`iQwaX^_O~v~G5C!5AheW|-ZwkZg=R+dcLKV5~Wk2&~ zz8#jWkl5bCqnWn(W#O$kvD!~T=IXM8XB7sGp<+AbfKjga)8?gwFXVCNwXmuJYj)1< zIYz{mt~*f7wWW85Ss|c>cwMzV$1DPJvkHKgG&K8A6ZJencjwfjtP# zlR-UyzxW5=Okq;;t!*i0e>Gx>%V&(hsz+%l(m~0yt)XOXyrc+GTezVbIynuJLEZF9 z`jsgQtE2U!DX@FAZGq?f7XHIc%tIT78s7(}OYKhE4Ap&QW}-X#mKqW~ZMc6bXGoP6 z4VO4R1aysQd<;sSt~9S@E^ys8Uwo-|8D3PRx%ozz)`+xiQf*vLceX%5xPj`blZgmE zQb)Ebq?qdJ+I21#)k=#e{>p>-#v`=3Hmes9S-hf{O796${wS03MDJSo+Ra|(UPfE< z^^PL5@4Y;rAyWID#Kq9Y5#!TKFVOj`ZJY5es=?vasB1BgtQ=s!YH_R7SWwbMr;}&P zCU|sVN@hlZ)b!_|KVd#Vh#F>8djDNF z`c%IcZJ?x^o8i5m+g@Ps{NidIkAB^$Jl@>>>OnPIPG2!eaO4nL zPCJXIX5yDKh@iKc$Z<8PU-VX=VgF~c&Cis0HAlNpHjq!>*67@1&7sfDJ=fG}f^}!y zZkE^KDPq>c7#{$k*kORQ5_6bKqpFiE`M9(pX<0zUk#bz}8gJh3E9LN6s`vTrmECz; zIeo06F<7n9SGy9CHKNhXa~vUC|Gw#{NV~XqpIjzMrDidnl6UtDKJ7RV(4yf74!Col zuSfyXsdy=8t<@>%#53Xf84q&zIx<+Rb%`{Jab8|t3j6C?HhE3D*|(5=W!}G}0mr`h zqk>R@AK}JYYu^$qOO9z>9<@8in?jO2!W>F$@OVtNG0DUotQ>$i|~R+UT#m1S<1A&9Y|M+d6&)ICK^?g|_EQrN?Mx(hx?VM7r>8-K@nde87)%3H-sqkd5~p`3)kQA8P3!F!BH^o1aDxD_z2 zhRUy@{uq3`1j7nGmuyYwh^&fhrz@L0j%i$GKF^j6ib=&jFW)eKr7!t8Srh!otEG)U ze$61lRPhz`af!zFCBb2}RdwU{hgRmBOd8L~?%lSEMFBexJ#;d06a#7^g|89F82!ck z5jS}4I2i4vWd&usd6#KwfW`M~z3K^Z>~%q#?T!ubRS)-3HOMPw;LAGm?W;*vY~GD* z?M_u5#-6_jfDq}MKr_>QqaY%a>+un%B=e8fA!g#XKk^=CTalYov6C1}YUjO4);*1l zFnNvEuUS-vSl%ro(LD)|&KbATM#^(Cg_IlSI-1Im{3`d>KLVo1a7$NnsXUmqw~u*u zirRH0k9hEZpE}KiB)Jj3;Tq*Z1QwOw#vOPvXO`ZoHI+C~CiiYjCoLU}WYP>Z9(d+2 zv~;?t+5X6Wn0qKzS4&iH%eD7F5sr@$EK2;M)>7o#zwl`5*kk1^-?(@rSL6_GEZJf= zC1<4T#n9y3U5UlcT6TQ7VI)wzL)+8rK;+YK&yFZenGtDSn?$SI^@R|_P0B zz8nW7lSC1UJHEi9dc);b*8JVgmB40g%MFcw;BBR&(+X^oScae`cpN8bY43iiK)`}6 zUHIufG}B>DJ;;Lk&@Kn@Do6TgT0@Nc3Zyp}GRt51Rq}4WfZH(U<~mU$Va9J;$$EOK zpItlW?%{=&R_enyp1hv}i()W;3v)GeNMZgAt!j zeU9WO9c*-WBs2$c+lTZ{6<=9MpcTH8+G4CXIke|kc@X)jgKW$`<{gGoXLaJ&rq`f; zY&a{Y+-e2d+`R{7$1~zczuu+Wl?EOIwS{^Yf(}x5zQKoX)MF_$+DPh^UVLY>)5Hmy zTsKEF*?Hl0IXczPrp@Z^`xSgQhP2ZD+d;nz>X$b9r2HOE?|BV`VJnZYtF)Jmn?hM`=d(^65mOHTI}D+aUmj zowj~k2NFM9qwkwTHHdi?7oVFA9KL7pj4= zG}b_CMlqeW;uu7E%<-S{bI$Fn4LQ{{qKo!?3(68y%YbNm%DTH9fWN8RWR_pSR+M^& zNjCva@O#16$KlXYIqb4=}ZpZ7A6+qPMGVS$noh3}i9$QHbvv%+rbX@*NNay!a2i{0B(<|KXF|3ygJb(9HX~M#)@yclv4$ zkQ-RzV`X{Z2jYJ*{byufXc^IBa}}27UmD^+@r*+jN?L=U<0h5of4u$tgL_1w{Rlzh z^FR3Xzq&FJ3VCkT%}Jv2^6wzOZ$1k`Q|q0YM-l(m9xuL!Jh#2xH9q*OZU5YyQb85c zJw{E!{@26=lu(7`C~H2lM1TCjKc`3f2$$>9o5Sq&Uou#9L!LKmWPB<8PlEM3)9T5A zO02qO6-WKAiEUE@s!+y>{v!awhxMc7{rr)aSAGMQu2`}&8)fn`KJLD#F=zs!YH$7- zmJKanDx?q!rZQIO!FxK)LR#TUB?q6?f%h|Aqzx*rW}mgHXwV3OFH3&8S#>n5h! zgcWrZ3G{6&mCemASCt%1*AfJN`zBngKh0tbNMuQ5MEanMX)~ME={m{LiQl}?BtBq7+@G*@CJ6`n>#y)aPe_O~?c8Tl;%H`B<1hYz5K=>oYw&=P>egCy6h0R0vCun zdCxl>6Tg@fiB7Jq0{n4j4WF=4sc)I;oYGDnHv%}xg(#B2DCQ`&h8}lOMjiE7F@jv9 zLh_C7Asq^QDO$X4EP5XVkVem6C8dxNS#lk&aFQvE3^&GI6drr_V;q4Q{9b;GFkDvX z0I|ErufVT{XnP8SX)15h>J5G;Q>1U82b(;pl@f!5z*LIKyy_P}+E?zeY^^GvxE_j# z7B0pDJ9u|Vk9Vu%n6Ewij%8SFXSaM=f(zU#TV<|XI<5?bJpw%47hPRLBpxm5c*A5& z`5if>4lOcE9T_t6cVmM*`B{m7K6ri|^Qf59ns2`hWY4M#jn(eI#}gU$TWwce%e_wf z15tArFBL~$0$QBau?!5FHZN~n)!0#`fFI}Lg{z8BIG5|65P@OWfG=NaiTTdS9EZod zpSiQohO@E_+!4n~Hk$E9+HLE;VU;lg)Wbo&qS)CP7MbY+=ZCbOh*?ags*13>32 zHrIU`>W6=zj1*t^kIWVZZ!%?e!EGonqL1>YlAl( zEW9-%I_1@#H!0KBWm`fdY-0w^24NHG?XeX`H;XbW4`Z`FCVi1%1d=B6&h0I9H}mDh zp3ReFZwojkKHL(q6+BZT9OLCPkFw*ArlB>J6aB?`o(ISFzd4_GNRit8FUHif&wEN^ zbgM<&>~HAxo!d+*WZJ4nTDIE`_lX-KR~cA6L-^2hrh1*d_qAgMTxdn#4bqma+aulh z5BI~vClg?|>+Y6I&hHVGtKG!oj-^a2nM+w-1vZo^7X{q){V;Nie{W?YFSWXu|CY)V zK$SE%$)R%Be_<~*oM@d*qmD(<5Z^THzy51B&fm>yHH*Ec!@h35Y%>A;rRL6JD^6K!R?|T8k zou{E|l8=ag@r3kb1<4!@%AJ|uFIDkV%jzi`jyd}2d(Un-1)4{ANR$tpfO9CKV0b6I&u!L)?jyS;NObzygh4dMLj%YZT7+FyKg)H7I1 zx_WOb={IrUG@4TrvtzL|ys;#cySqB(i$e+>m=}gH7Zq**A`&%Rc|!{E!$}N1dF*z@dpN+~*5na6pTuZH1KQD@lPp-N6LLwE1i~T6e zF==(%PQjDPcy%=b26B0YmzAkwDQHB9RSq>ucv5<+ExAZI31wWyJ_&-7A*LUsQ)qGB zMt^-r!YLmR;N33Rqu3JC+K|+8Cd1GIFxk^5T#7ALaZf;W$K#yHR2r4tW}^VSyQ5(Lg(2Z|3Jx12t%xho_7_P;{% zP|_)xFO^9r%n)8Jv^ljn)uzKeAX;Xh-0HOJEdESpmq|B_dDpr!YDqM$MqCly)94}U zZu#J_)fPgJX}YygyilSg4k@^5m@eoVf>WcAXNM}(io#4#wN)LZ`D(_;yLubRDgQDp zyw6OFFoEg~*^3AH=ukSKOZbk zeD9vH%?@8!fl}FiN$Z)xCp9cP)L`P?vJjul(qBA#D(ZZ73vkl9NUS=ashq-CJv!SO z7~0}CFqC`QJU>-a<7zx#R!Q&=%cRPoxopEmKV4EK$nTgIy7uG1OpAUg8bTxKHvFm| zYV1zOpMy)Nai=cSm*!qw?Z`LEntWPxM?6R-8nrIX?dt{a$h>fE5vGjMa{tr5x03FcT@VYRKl=C_jf3)koS z3tfelKOa5z_FGr&HPlX;+DD9P8QzS`6VYiVmtWOEP3k$wU15Fs&FI&bl$Oyc9#d&8P6i?9~pGI=8t5x%;u2{_H>y`((o~_FVyKdqYWrTwuXXRgo8$LWTIs-2Hn^A z>NvzV&EL@I9@!{#i9Wp~Seef8HA|+`g{eUX4e_fpcs^pXaGR&1=C&r(`|Dn+ZwC8k zNvB?W84mp#mnmo>oAWI)U34x4j(V-uShRG$3v8)Ot$WmWBwPuLZpxOg@gXgmt*WZ) z-$re*;Wb@oVOL(LSk~akRCJgEaYX+bQY`Evz#)ew-sWWTt8SedN{Ze0QLCWTZ+NDi zT$5Vm7LGPF=rvkv!BXh}Yo}MJPu}I8KUvk?u(tPFBcvM^g*}PLX@=Xg-A6i|OH%Dy zyyu`-oXZ6;rax4>jF|~v$l5z#BzUe!+1HX`bl%W{F5X**54D>O+3&gL6E^rSP8Ivr z&uI09K-i~bC%GB0I4hGUDvny!eK-Aux5w}Va=E-xd1?Kp**LC=rruZ}hIKim%`3@!hEC?DaCX%Tv_JNa}Bzc?II_HZd)sic|j zRLLGy_?H+~DLU~|H)_X7iM`9X;0yuZbT}V@E8H49}%pB z_Q`@Aw_5H&RFWwDDXmv_7pqiXxU%rPuT6bRLwUYF7(eQiiLt5VE8K@Sm(}g;@F+Jl z)k3Q7SN#2^sik<@4{pu+$UDbu1#>Fp>2G_iJItah6+Npj!goi{^@l5RE`Rt8xaQ;5 zO2<Ji~C>Cdb=mo947Iix|^O zq0^D*S|62x64D>WrcPns){PCmGdlB(Q%Zf2zQTZIFbG`;P3`BiOC-@;OqrjaEsPvXv%%%eGBfHEr0@xI!^0nfpRTZL-wqrE`VO)9eVZ68J?G; zbwSfSgvY{7>C)j`eE}n$Ss=3N2fEa%PF;g-i^(LIr5e;BHrzJC3d8TI>y1r3UO9_u zQ@;#U z7Y=CO>MtP+33g7=Ilmuci*##ztg3i*lEof06=qivuaE$&KsKmI)c*8l2dOjoZ0b9W z)rew^g~#^Rtoiz+sG4xo0F7Qn*h)5krnAsv<>|%c>qo%GcJOr>r&rsX7dGLvQvAEs z6Bbj-L3T~`*iHuC?W`|sqOg9QtNolh4ms#@%&;fdsJ^A{9zd}$Oq|>KJa}w%9{*Lk zBS!?Kyqhhy9hFY1reVUSVifi2D9a^Ssdwx0w@{rIm{^Fa5DLN~AI|88+=f8xvt^Kw z4Cy+B6j;3}zY*<*xF}_|e~d3n>&;Re!pcL^vfu^F!wgfS<9S>fKUdfjG1G-#0RWh< zVEKgJU;0-0ncTXmzMA1-Dbsju?v4l3WKL@CO)R*8`|`yzx0X;BQd>05b2dXZXqsbT z6#=U$^(vUN`$*#|{$xn~@?|>9VBo_TIey~(-x^dlF zlSEeR;7T@ijYryKIJ`p3Lxd!pb8?U)JnZO9B|^AHn0Tp&F~@Xr?yKDI9$j~Bg~TkA zQ#MJ+%k|{Y4L<*1G|`TEzo0!SI`TY!F=&Z&;nRZ+DvDr5)o|;{D2MAe$kDT~11X^XJpsQ+k+FjO~)Ty_>#7|Ak4Hx9=4JMqoGZXkD= zx|iHKZ-7o1LOxO2+aRod+Ui{8NuIPUYU9_C+zC)Dm*9@e-k(C(x%td^=7zv+09K13 zU#xFXymOtLqX(tcBrrYh23E0zMBZM_&tSdKP`xPN=`Df- z^LF_!dIs4a<*y^lWq_s?@V;34E-l{_4fl~iO>JH(XD^J(vHSWLS&phYKX8C16=pTf&3Me+E=&ns}OG%~)|9=j)}_6~xJG>k)9 zUTIf>eS}togG6-T5t=OddeClsBbFr}WloADPxSun2EeVVW{GI+h{AE%8yXb4YO1QNXQzF3vo(eZ1r+KOvSx+an@+l(F#o-`*9rKuJs zIVfXwE*fCnFAv)1O{ut((U`?PTCiX7w^9?c>_xr}J=T-rc}$hf*7hBvS*__As(fvi z+t4M@z3-rm8jhkfZt+Ok?Qd4*iBYd^VK#$JxML6pPwEv0LyImu1BRc$|R)Ab; zg2A>iG(X^?ZA{nDwe9=uNB_C5uIfT0D(g9$3LS9?nX4{%)RyzHr(|i1q2{mxOXk&W zFcxo2_pG*(V35Yc5!c>u5$A)-+|GKrS{t$xgm9B&n2cA+%O~2w0u6#=TNpn>$Tb8p`;90tUcGaLlIFgkZ-#SU zd$vP<9CC-hd)Lg_x_+@!D7Q#e$2iz(?^1RJ2Kn}wx@KV5!LrL&wJJAG|2l1=1;Z4T z#wWAdhm=NMejWp#6&GUjeUh+mWiXBaqKVl1h7U3@A2_;<6XxhJFRdLkM?+K_0Z z`SNaG4)MbqwQSnbbku99EHAo@ztq=3NjI!1o=iscGRwXv$pQb=s`DzOAzlGA83X02 z*-jDNIuT#lx!`hz+EE!|IF>bw1LJEkI&i=i($Yt5GjQ69%Vq9qH6Pr%IBL)@)xS?g zJ@`@jQme9PBBhY53KX`sD|2Tg$GrCK#I@iknC55r?g{#FS#+PzS`;61-JDWMr%VF+ zK#kZ_Qwqu^y`^*F1)n9SV`$TTAj>xKMkkAmgm+wJE;i$nb!zZgxmXKjX*l#g^;)tbK#BlvCf*)AAZg& z-=1|m35U;E{xDU|`{YPUB+PoXYY>M~Y|-A*>&?_=4QvM(U&mnVkOKTKOhdys?QBb()zw<2G_1QDp!$qf?{eC& z6!uxn>1GbN3+#kQBem&oZANX6hKQ^StJp_32^kg|GXTYN!}`#q$s0(|y+(luJqMa1 zxtDRM|8^chBmVMbA`qug4?b8~WKhKwM0i25YoJ)WK|5Q8+lB z&=JU|V!Q)pVIVw(l|RjJShCs8g+vPQp6I(2$hQ8flXe#?6yEr1{`!tfg0pIeL;sM} z{>Z_idL*ITGP4`x>tvgWQ3P2p8YQ%5OBWnG^K)p23cN0g;&nIeoKZh z_#&7S2d@2+?J7pmr?boi)?k1o!I=;D=McGd<4s9|Dc=BU(APs2$F2w!BmCb9?dMu)uItESr=}Dyg6aTy+)YMhW~+^6xDf zlmvd<#3%ayP4Gb>h)O~&A(O+s_+1Bn#tNL05VzN`E`L~4M^PV^_)A*~4O2jvK+{#u zD111fTr9M8w)78`AMsOR{){Jt0P|BH7Y6M&Pxe14UQ&FBUVhCBYxytcj}+|_WCPIx z6kq*mW&6W!PD0o{EEN8kXO#1QUV&(k$PfY*Z1le$L-sKgGLpq!9^;?I{H7eA=_^tQ ztqDi^FKhU$SpQr?Y><(}L{MG-)41_3uL%b^5i+Pe-2Y8?Lcx6{gN%glRf7EAizP!4 z+DC#$=>304hXNUCazaG!zZZ+}0g^={2vPs1kLe#711%sUMT8O`{OwKrvseVk1`0z7 zGyhrrA2CElAS1DzE8_h3VuhbK@c$mgpQA$izen-EROkQ0DqJR2#r4p*NZ`hndD}XN zw?A7PXM6oB`(b4~yLdhpLjnY;(}@rx^nCh$mfe#&@h&5>pt6CyR?h0ol?wTW02RGe z8}IC|-$`c*{7kHy0b+Y!+bAlOV&yTPE7i;q&rOx8?5~>OPM~{e`H0ZKvK=TykDx2y zH6k7z+R7H+_(FfVSYB?`R|#ahJuyUPWjX-+#|>C?K#1dSH>(6u^ia@E(+zKhlzJ9w zZ0I(}l=5uR98Q^aswt9f8&Gaj-~B5x8#2Ut(tB;clfETeci}OcuNu6ko%DrDdrhRAe4QoKN)~OsIut%Zg(AYqBxumJ}`O`;2YR zhh-DF_i5jTEC_^k3=u^T{+MnqH+sO-Z05;}J`4fqCf-|y&>9Q!dvuXn6wHa(y{4YN zuhASn$nRbM^(I`^5C@i}alhAA14m0&u7RFXeyUEZtznU011rRj_BlYvRLgco5Toa7 zG(zYrr9VC>5EldD8AMVo%Jvb?HLoAEy5fkUPvYjV7A;(0OAuf-Fb5v*!}9q+JZOF> z0E+VA#aQ55_&;_up$zd*Ry6KNTjx~Y6Z&*ezm^^fVr&NpNy6y9v1UwfA$$2Brxw_Z z37N{hXOC1L&g!cJ5sBQ2$LP!BMmrcrjV--?36&;SmENO&RVCLH;<08~PB6twg+Jb0 zx)Q9km1`GLTVR)WAH2X4CPU~+6;d+X=h<|dmsqB+B%g_HeoOn;owMOQAMtS3cdoaT z-1uf#+KFh`2P9-Zt`F(4&s+?LN-i0?YOY8gejxt4>o?Ey`kcUvPa(kA z2{_H4Mwd>1&dWnWxJF->+&*kzcD?5jfAPn9zI(odDm-l4lmJd*lsJo>L@b#yJ#j4h zDUrb8i+oon0Zh%N@c1U8hwS_yF?N_^Wd-@Ke#W9sj8R^bf? zg%RM46awfxO;qF5^N(@mrx}|LWpCHcYD;Xk)}(OcC1N3I!aqUqGaV#}*^I!6=7fi) zQs`>b6??n%##n;HHU>(;e_tE#q=LXC&mjc)mD9hWXhQb6JE(~BMK@9oRDTF4f)``q zmjsm5b2kYH>FL2KZXi?;M)GgCVPl6xEIB#Chu%z~{nD=uJv&apHmO4hwPf&QP%x+D zigpaTV)ND(hgeDICR?0u>i-7r2~mhPvZGtLU<$(E__cQqjmF94d3|J&jKyUiz4#{%AyT-&(xuNLGHli`;f{P-qb4v(Ui&`5@<+jhDxMp?*p=$t zR}p4ZXW;5x;OThnVa5Ax)1M9cI|<^aqy|fiRK91O!-iyOyTIV8B z@5KIow>TL{75oa#!V88F#FKlZ#-KnG#P)Zw!*8Ec!WE_{4!FR!Pijpqo*E6*eVg=< z<^Uv^(eUr5BE2bSO|7fEl=wJjZFrymT1EW}h{0-i>-7+}!BHNQUEt$1sgHbgOr|Pw zgb&;m{cW&}P2TxjlsF0;-}soL>Hf}n2+8QmU6&LGsf57$773;(#$TKJQX)lzsLQZJhQ>Vw3xkr@d_Hw zNLom-cF`2UR(Kf2;?M z8zN5}s|d=UN&lEILWWS}nZBl}J4QAzT&cLwe*&kwWB7SS3pcn9EkJ|?yEcp2j4O1% zS>4iL?USzvkJ|`^NOcEouC5A}s+wBDR4vP<1J~zdKU8z~Lvc2I9~@3B|8v;iMmynz z$mU%bd7!ynDHpQcKoXO1o9=~YY5O&hFw+ZuP?lxrY{|)J@Daml9H$jwR(?=zg<*Ti zn~97EWj;CXdenDx(RDl9;6A>fs3`tjWG4lVo=0BJD;6P$6YJ2bkyg~#Bso0ej79Gb zD|5SIP#a0zRP#9EQnRbyKA>aLNQ!hf)6*l;ifc+&)tDb>sZAXXejxk1X>e2%6-ian z89^>Lhi02)Npw1!iMp;A1y!qZlJTk2wbime?(<4M`CNdtrUY3-?!WpMf2Qm?5KMAc zgnYBsJKA4iGT4FPU4dC~H?YiDPtpsY;#y1cy78hzT8C(Gop(e_heN^h&niLjGX z?L(j6^)Ga%#%uZwu9!VnFBX%5LO+%Pu1>f!PMdRD-6MgElUdgFfLb2cw=Z84V+?&E z$$W(AZefCA1=sU2EZOa^Orf-8AVC#)KV=nMX4IjRV3)`f?0_E*DissgnvO*TXJ z3*zlqmwg*UkGM4CFkV%fTMw6Y7n*E-J?^r_U!o&-DvVUDltDkTOL_ZJ>N0m}>Qk0B zuiwLjs?)he-uv@b$`z@{(~Xy(oZgLv@DnQdUZdCE+<`(WtgAZGeOi6+8vVlq(to(F zJ;H8ZhbOGY={nCQQIxAl*lXhfGHFLSGDdZP{l~nLR4ua;naM?OqIJB+S945}G;&tk zOE%}j_Re{XSd3CWEPu~8{H>CK>SDPIw0c-GkPZs_8k|dO6p$%R1NK#URtEJx<;@<(s;-b!7>{ow?gtZ~z z4Ab-IiCS4(OF7k6XKUcbQBr+B>HWg%=5=>G3xYYQ`69pWpMgaW&AwbSsR!-x{vPO z=zJ$j87!KB{`0;YyQ?COo`QlRc9^l9qM{?s^l~w;gVi9(#rkM`#%NA8ucgm9CNer7 z2+yBhrt`0XL3(Z@gz6exY?;d5`gFreKe zV7^MbuVV_oHYo-uo0Nrnfgd0Dk+gk@D((Z3iUmnF{w7`(Pgn-61b%J$<-5?Fy*Vik z^~NM+{HcWV?M)ZJj?w&rw6Z#INu1it?fyg+9#HF?-Xv(rYjv7sUN(5prEJ)71YNFE z7OtBz9dmAzQbH;JlW<&h7TLJ7Rt6uuLN>B-r?S)KK~Kp5uot458qLhr7F16=^1)tm zb3eLv+{jZ`XyRusS2Qzw!GAZyO)oQ^#%eyWnsXJ$a*!rhU2LAW2kU6A&8f=ed&_p? zx#qXwgKM0ey&8CaFdOM&v8Jz{WQ)q@d6pQPk~Ayjv6qZUjiF9wD%sz)c(m9M`86^2 zL(q#@|A#w4lY2Q%3^VxhJk&lC|Jn%!M#VnBl=2yPTyR>T;*+GfI1k|4ct}@To{(#g zk6U9{788&3lMP4f`@Vt#imt^y(Q#55Ambcn^@ySV#+kUv;y9S z`#qNf1DO$Jm$MlfZ4f;TQ#IO2LmH3co;?4asku8&2C9eY)ki@!^&Z!*gW8K9xUAJB z^q<=n@D)QXQnmKEyQYiBJu=!hYh}n6FBht^LdNRoi0%;cqE`fu$=XX`-h57K%EuM8 zvf`JAGK9aHMH*#5*oOocJSqW;*r zAzJ+n+m=UvgP)cC@$0Lz{bSg+=#JXF*#E=SIfmC6bp5_f8aK9W+eu?Lwr$&u8>g{t z+qRwT*w&7n?33qx-gBMv@&0ySGfVTES^xEJOzWGQ_hIw-aA;z-MXW@m7?`@ln-TL* zn_-#^)LlgA`cNs58%;SrHl=?>!BIX~7V>Bbb0GPJ;gsBCc);4O3aa!*FqK~TRSa<- z5ocEMECn8t7&CCa)$s048I)8l6T)F&cn0}n^+f9F`;xLZhg1*R<=x`ez8PO_Q%6^J zx+6)kzYvIO_K*r}G2B~Avcye2=}I#cI6DHkP4+$LLC~JQHuksArg<%jV>F@v3=jhd zeV*NKJ1BEtsXo3kMFJ&(Kb?VRR#nXV;il)o>hb3eB`avN?I7R{csF5=ebJZm@U~5^ zUy&>ix)cf3~PJ2`I}al(p<^jl-1N=qSeBA9f+>U4&KTli~Vom@x}IHep%cp zx?G0oc9f2bFQaRP^ZWyN>`5)`U04 z|9pSs6+*9ec*SMC5?2k0T$=Lr!C9?!EYN426fua^^9B2A*X~~jzK2BRI7IIJ2q;?M zeV*21rd2E@>Kd7B;&1R`77L?RmBpSM8^fryK3}fEOn}aR?E3A$8S|@x3ur~Q;E)EKL zbmP6AUuzq`#gQ(A{S&rweM{B~yuwZub5e@Z3t`IYHjmO=;^6aucnQevOZU~4xA!&E zUAs9^6~?B;1o^!_pw~ay)e+|Pyd4(xV>7tLSRWUtqngRVQLa#xWC+~hUr;XI4Es|e zQWVL@l0oHQNfUI+?zINnP5JC;yKc>Q6LjU%atrKh8Fpt5GLLRIXC+36;R}kjr11+{ zH_sw?|NVUJi5zQdD3KCdWW&CnM-sk-xr z6NslKx**Q8MZucegV$ScgmLuRWe{p8E1mjD8Y5dTcX&=` z&&-BfQQR4Ch}*U#HJ$JIU*%_yK@eaJszKWJ#jl~o&hiG^$pSQEGQvNNwQEeY->?>o5OIz8M&c#F*fcdrL7ZOJ=bA zU1!Rum%snNq^T<4&#_cB`y|=0v&YUngUKg6rkD1I+bz+&yFindf^J1H4bgmW^O{`A zGM+ut$q7b(g$bkWZ=e~`K)YrqiIK@SU&0hDX)8WNGrFl}mB)PZ)qa@y%OD#%jCP1R zwx|fuik|3SE=-;yWf$6f?!E@HdZk7a22~v1xvC(>8eY1_$JOkG1KW00g+xWS8~>I^ zQul{*DwBq`ZubQ-le2h!;r4j~TrrJ{1pdzY6r2WnSHw>%*tXC1e@6ctrpdF~>wg1h z`!X=;@;Ahv`w2l*8g;3rWlDQ((M@$P9l*}<0abM!Aq?O5x+fns9M}CRowkOQq2HbR zzw;)z7jfL5blnxP698{J?u&VW6Ne~?sAlXP0a~#<=BEF|a^AzTMeg|GtWP5yG*6^j z(2EPn;F1}LgFcP(Z8u$yvktcJWdXx-8Io6xmVpo9)E4S`o)Cr@)EKFO!*nJ#Z^XQJ zLy2EsI$II;QX?_h-b2&Db(b;vzBkxymoZX-lW&ARk_@;kgWgwv`8QHHsT{t{flQg8 zRo^Z9?^MAvNN`*O&5_3(Mpx8=!hf5lt)Bt|f?&^C|a)f|=8R@h@Q zi$u?whx|G-M)JyS4Q**z#$spW*9w@7`f0dX`!MinRjO3hXc4-u#^vO?sOzhnC5L2s zPL`IvDe@Qo`|;UK_?yN62-juG5fXJ*X&rf}D=>;DhH1t(@(Dcwa~Th1MQ3UA?wh@P+v-1B;*~7EvE1L}d&t8N({a=~ zm9Y$qWx>fj0|ty%)ithhBwnG?E=Y=&?s351&vdZ*8_QoII)qoe>@sSKJv)Hf9Jp{9 zXXNp)Mo>P!I9bs!HjxqInaHYTxi3ZAR+eI4k*Sf>c8`h9zzn>lJ97!%WLi`IzR5CP z8Pu-uhCeh;TrKe9LPp>EAQ@f_0JgLL(K(dBp;%KsYDBL$vonl63f%QoC2KFgHU&Tb@qr?x?=pbGt z58R@|c0B>i6tI=ClW9R~Y67Y^JMWN9SxZqCYV-wbj3|y8tQ#i>n^SKoAdA_=P*Z~t zi+fpT66tE2eof9bp6IK)y!Lfs5agY!>r`BxYNFOz-KJ{?2 zQioW0>CnA9V&0Rc-_zM6ll&J>&`17iP;6f#KZAKg9Wc%El}Fh;aclcUa4-6zp$D|A zU6x!o0rrmPZ6P4SWdAI~WE=yCzT(yq&_)#>)JE{a6W!a5sawyuy#2_^^|18nI_&RhW(ea?# zwW%ry>!tHY>i90H9)O*#(q}TcO^R%1?Cg+R}6NtvQ*4> zJ;_o4-%YD`#^Sh_Q@L(1^6cct#j#^JJ-UovydN)+(fCRR%r#A4Cap+l>O0DuMu$f$ zh3J^9QO|*hGd)CwX{gALBOVQ`CYVYU#o@PWJ5u2>sy?Q3LzOB4z{N6SmuM<0))K<}6wx{=Ztn1?cDvxz!KO0kMFsngjvmy{ zU8-sHvT zIlUXt&VBqL<|Ho@ySeI>d&ne`pXQKww z9S6YxwDUNLR=d$kWeat)tuppXWLg?4QZqcpE+0xM4doS~8l1n5IA%URN45ndVu7ID z%XY&Zm$VD~|IoNx;cwfEGz$4+KfAQJIN@ zf$+SbMrMEf2d36=rZ5yj|2<{0R4}(E{wEZ-m}4NJ57H7h&Z))_l%rW)oSkmMc&&$1 zJy6#w29gpM9~Y0RwhkQ=6Al=qv}}w(DXzo2k>NWRlHDM0)UySKgDr{9^m3;D=2jc36pnUp+J7GgJ@vyBlMd_K7? zDDuhTPO#cYtpA{^dl7}@>~?z@k!14u-s43dP+4F4hk6E3S6?*oNvYhr@(ctWGM=n9 z|LEs?wf%79eL2doPc79)qH{?AVk9!CQE8p5cu%L+(}ZSb+U#CrrK;)SPROptaEu+(aZXg;aXDw=pusHJU)7q1A|j*`f*%cR`t zZSC_`CeD9qDMc1m3J}8p(`--ebHw#kbajT8MK+LzeS2HTs7V0!fC8A*Z}TBe?-;vD zdUD6rOP`EFSOp)y`45?6Bums0fU zDKz1ie>~>qNVgC{!rJh?EcX4liyCS6FN0{tw?APAjPfznKWT~$6bL?KkA7x*A6Z)c zTNn8hNz#4nX2V!nWjhKEN-BdW9+WGzyIdvoCVtR5yZuZv2kp3ufbJV+{wXeUi>EN? z2A@slQ~8#xtUG^-`hD!wm>_Ay42ltejaK2iTtC{c~T5{cu?0*rcSK{TaTdn zA{cGt$<9ZPOv%JST1flIvWsiupTp4vV%-{@qSx^j1?#-Dr4q77RFHYt$fZ=|)8zh? z8_Vp47UQ)t^%!XHD^cQMdHtX=RLtEI-((z4j8-0lPVmQ8_Zqf58j;lpz}Xtqs`PVe*6^H{KBa;xJeu*D zC@Cf4WaNQF8ealTV`=iJb6M~3`@`|LxH{`KI!zIF0B^lGb7|E#x62TZTz`}@TGs|{ z`do7Pjrp{HyS&a%LwiH@4Ke|12uU-|LSI$7EV2>7kD+VQCO+mFuRJi`5%x4Mw~Y?( zk{yrWG1l0~p&=)kn8@}D^MEdoG+THTJItzbg!h7P4T1IELtxHQJ^n!X1MPN!WJYZo z8+SgZlW#BU@9wJnjKdL{IJzlDRP@omPn~9+J@Pq)-0b1SgH~L0s-xJ~t!N+}`NJ)B zaOHn_f8dJ>9%{~PgU=vs>Ms0so7@x?nXz_UUF@&Ab3`n`{9HtCC+FG?i{DVR2ja03 zQD^e}@0FA7vYjmKmypmM+q>Zs@mU`*wThpEb^QyX*2t#5gp=?zQ zi~I)j$=I=Ee&4>Aj-1^YdDhq@dUk^_(3V@=u4J02`s(ZrJwx-t?jzH#&j`FE&s`k$ z)J~1CqyFPAE4iJ}eb_;U%-Mxl%QZXm#k;S{>*;ERM}*1=#uFR>KP0 zET$ks?`$KJ>tRMqNtyAVBH=ejYT$AJ&pJ{SQxFt9%EnNGTOq-<2G4wNrr*JV3EaMs zd4{;6eXRS2pLXHYk3=Ayr=|U`yl)VbuS@%ZaGmS$X$4443NGz`nTkZbjx0uEvJRHl zfeNUYw}tC0t8ewGOY)8R5S5DxNVH~}i|C&WR>&rK@ia-3@Vx67tEmbuuTkoG?DG#l zFt4KXR`|{=>g$6Lg54KUKcBzv3Dk$RA_9ru!$s~vEl7f97F=g5`fuyiT`bjt>8^)U zU+?DCu^JO7sQ7r@U#af;x(Mf;%>yI#!zy^_Z#EzJPe9ArAdPf`pSy03KCg1T?emJv zm?BLK>RMVYua+Ci*2$sTJ!OY6{NBfJn^x8}2K%N$_T^sz#P>r*zTEUf1_Wf|$>}&x zDj&avf|+6G`+Gf@PszJE)(*0|61>I%oX7F2HCRcVD`hqqf1-+w!O?G;}tJKv&AD3R-<0<(G1pwN>arOPrQ25k#%V}%w+k?z85^1ZuLpxty zt%JK1Qo8}Kgn#NeUp9QNGr z*~}-<2pbt_KfgYLK#$en0uff{IjixT_qs#@WQnu?7>tT&brlqIKB)P&QPBniUtcN> zyd&}j&q<%MEE!`OJaHJElgo3S>qHZ+Xcok0RWKHQFzooD!; z1X(+rk21aOLJ z(cdM73P(m+l#708)mNoRAXZnL8h*>xXFz2_Pr|97G#+b;A6Bi)6FEhUPaWKmI_gBD zM`(o4tH%fJfR&~UjT)P`XNdJlj<(kO@h1IVIo!e&qAIJhP0GP@73+-nvzyy->or;x z3ChN;%M0K!7D7gpfjp?lh8g_zwk59#McwL^dZ8yo6x6jfymC1Jh6uI^#qrh$p?Ny*3Rgi1~Y z-q`0A87Bc!vbS+JDx73Xu#M_Vg6dxM5-KU7cA@u*WE-tq3i;O;tYM8QmGWfgP(3-K zPOmCt7a-(ncI2ey$xfxzw-Lv>CE)WwcSAQ%CP-3atk?-&r6S~^s_CY{PXKX4CEngwwM7;D$LM<8O z$A$>0 t-HHv@LH>SL3BJ8=uNc)F_BAN0bbjoPdOG$4y2D?C^y}Io+-HKmDn<gw1 zWr9)tPPiJMYlp_?b|)hF1kuvJ$isqIzMuY}u%|;?QF|I-ikt z_9_jq+;~sIHo&qsGkUvD&377NAu~%6TGWVHr}b`QhEvviK(X>;cHqd%__1=3E$ zVy6-`_J_>i^lRI`>nHIClrme80mvh=nBUs+VA8bT(HLH$GIe)=x3@!yh(|sQ_(9EK zFXNhbhYn5k#k(?}N6DcnQgK9TM;PYIwXl}q+?^uI8cfwtTOH*YfYLBT`wK`$QH!fR{Saz#E0MIY=!R! z6WV<(?)Rak8karozfZO#5KoL))Fvh9)cpq8iCSM8`Tmh4F}D%ULN02RIp1k$gjL6* zGFqPk@Pb;sP$>t*#niqlpIe~DiPbhMIXT7G3aS$Mac=V=%r94kP|neij6|LkLXVa4!g7sN(?BKOG@Er zXguA3;x^Yf_DZ+tJPvI)>I3RvO6bsky~Co+;lbFBqsH1`ynC|OSz5}lG&1JpLbpy~W2r9q;r^`8*q(3%xNWtpGeu|9<5Bz*>Kz+J zm8FyFkC9x*{XHY}^F~pv2gR5sm>GLi7iv}7#ajWims(J7-+br{t-l__kNvm>h3tH) zn6_Pta63SZEi7$LW;ai2_y?!4$rPzXER0xuMt==dNAo$FxS>u?v!V$Ez^L)J*Np<< zX-SU%_Y8XdUayOXf?(@TfnihQA7S5Oaj81|UVrfM&V#%4N@kM(Rv(KijP=_@iId#? zlU#kV@$c&FGhQ6N)|F%XW~A>wot_FAnaU?P6cm^msLLm9r$#5Vb=`TfeC{r{(6M60 z-v(Q#{G>te#hkcW^}qJ*N7yaO4!a-tF?1D^ue$WtA@dPOUN0>tP?a!0Z~=PH@k?54 zk=};@%2EpN^DspzU&`cNQk|rkIGL7PMfGVyO_FYks*88_>~j)99eNR0$Gy(yT0- zWXI~((v^}@(B>>3DoxLl6v}(hh-UuBF5h?pK`S_wvdl9Cu`VR0p2aMNk!K`leQ`VO zz3I)HPrH?*u0vd}golcX8n7WiJt|nmTA*+mpd@$Db9>wU%Px6ut@^?8lnEBlqnbqJ z@=?<&k(?Uu(9`m&)M_Cs(BHGCJW83my6X)Q9rK_{1t&7BvZs2fMU~Ntr zEyEL@%GkjI#CIeZ^QDBuht4~^mD)e_5hYmS9-q-JZ%%m5UvMK4-40{0Yl^O$s??9`Y{sFifzu}g6d-W#iN zRpieomr9B%{LBW$4WXHS^kaXopZx9}nOm@j~ z;dCzGOmWiZYV@>8Y3v+7!G>aEu+7*qdcOY#!imtLhPZprr%&s$V^x$l;*7Ra*Z1VP z79~u!3)g+7Pio>`YxZyF?|eIdJC7o-d4H&zZ)jspLL4KgEyl6i$=0b;VJ$n-w zxZ8UnT0ztq@L?&7eR>sM5_D2lyLYyV1RG)FY<)m>LS@p^K6 zUVA6@kx`9_;sWNG=dN9}ikwm37MQ)y=c&$H?zX9EX*_@F$$Lh^Bq!+`rkQmcBUb~J zi|32%OAcyu?-Dc}`H|rfnZ@@RD8=KVBB<6Ur`8-&>P!5?N2t=;(y%KM0jLJ|A_EK& zSEWZwT-7q!&Rt$0U(9;>8TA=jEhtSFzewE}j^TB@EF;IM^;1ql0$g7oP|04~0ke`t zuz2BY!OX^^nzUjc{bCOq>BrDHKEy`HIeO%FtQ@{4-9O4r&DaUui*3i6D*t?+D`VeF zD1=XS0{(x~!9#G` zs|DoHYMPc2Qh*DgUvCyU64H;$$>whtnYr3zu$9u9z zm?C{XW?=)1Abh?l9*afbV0`tO_%HfUjEHBt|M1;*cBy^zFT2<53r5ZOH>b8uM9OL1 zkM2sE!pgOxXfRWiBZd=@gZ6_1MgqUw(_^TRR^m&IeEXF1ZR+jt5>b@(;c!^ik`OJz zb1v{$ue481(Ug51(~9QDxyL}=Pyyl)EgHL+dKuCtU~_@Zki9EUojiLYljT+zOn|Q( z2Mj~3h}L_$;bRJ08~w8wLz&sAeGG9ycfn3`O}e-h`7V`UD8-uELJJ&oFQ}XLdaO@pdn>ac!{uqcx_&6G>yjGX&&{{r-T(y*S6=wDI~iAx2JA zeXEj2*V8gfg%?7v+#5?bQvM*uVMH=n#U|FCV?r%XP;OA?9E-g-gki|~J<+=HGqs)o z+m|TytwFiWhf9A6qH`ZSD5f$&kK?ijX%H3T#Sns}|ei z>9Q3`;|h}sChU8(-puO+x@}Pe)8ql~B=`#_RJ3ZO+s;Fo5Vg)?&2^z4vS0^DfjxGO zZvEnjSCqGPj+ z-4NMk+pCMA#CW5{03zWe@NRnP)D=Prvue^M>Y%KY^Oq_t=D(EU4p#Kd(m%(?D~ZUD z23KLw)ntNhW7fwNt^yw>j|o3$t@gK6NQ@ggfR(blB-A$3sd{@rY~}XGX}AjGuXxS? z`@^E)bZFZb{LKxBl25C2ARM73nS+_*k8m{g@y%~NF$Nhawy#M960n|GgU^Sg;XkQP&C!E8ePjwJbP zaH+JlzwARRciv%?KG=nipj4o(ls<&kCaavhP@RJQ@O+Kodiy6QWC916hR&X=ef(U! zj1B8Wx55Hnah)U{&F@9$H5$R3Hoy2@rjrT|YdsZ%jhbyy%v`uM3an2hVLP_cK&#O( zcjx2Zq(O|^#l_SwAw@hi&Z${S+4qoGz@Xu~cC?oV^$FnoA-&r^WkAFewpFu!q2re8 z_4#ubfY^Mphg~;2cJp%9{StG+eCYi4Q1m)D`Zs|hi&7>sW@CVkLPYClJEYTG@i^)1 z?f{1$y4;MsCfv}B~aVpT$+rfD5r@?@?Q%uRvD6}l8a~FplJ8c%K_P<6OZQ!-|oELB2 z*4h3xW>iX5FzyHMMc5B|dfmwCOkAFhG2B>usQ9j?IOO6|pG?H7d9ckS`YQgKu9#6Sfep2}pk)=N+fV|hX{>U?u7KB;o_p8smP&s&K{~OUh8z$hR zuYt=veqIK89J{#OI_Sk%``qn~wPX5y5IN|BlCRqsxCPpb^sG|!oDvSUK2&*Pud_jX zXZhlXBs|P_H;%X{ctsK0DSz=Poai-)qGBUFeXgK8A(Mdom1TU@>pF7B`jSO5`cmN= z?{CHqhm6~#wpH2kj!|pvoWAdgZ71EY+3heBH=N(}2YuKp5@>asEg6@?d(0>2iw2{U zu)uzP|4MCth#i=TdQ;ZmKrz~u&ps+cnx_wVkQ*M-bjwf7TUvo|M_sU((fF*pA^e)i zXPmEIDg{3B)>oPP(hz|zv2f>raZ~y1_p{*yJ$$)xjw@!wWLRSJ@n8CR4vGK{@Zl93 z-8Te<2Ifqs*uwUyNX*86g7?ZD8|`ReGV7Qe7Grb51Z0LYYxtH?TbXh6c2CIyob^6FP8<`;N;PcZ;sK^&lQJ9rJkJ z4PS&RTud5)V~W@v?U#GDypDHbg=xmrPIioU6CSTa+Vw*QMKHoGqE`1Twi7CaY?35* zz=w=tK!|k=Xj`Dk8$*4kO}S%sQzhd!7I1wrJTjxuxFYz zwZj>nsd}Gpay)L?JgfHR<}bULIk`xUA1c&@vkB6+OmlFdkuG^`?TO5;0ds&6vn3%uj8&<$ru<#I%q%m zSbX$?kx!H{q|R3yc?@A`>Mx{qcr0m->EKMTP9pJ~#gtVPf~bO$F6ahB&2A_?!m-_n zeY@$67<~=~Hl7W&+u?j??>#qy#$;)JS1!CG;Lq(Lzmzc5&5iGgQp}VvoV$IvS5|ba ziyx5ZewgD_slL%kfe(l)q4q&OYvq5kJukW1uSp`n`JBEw30 z<~Id!3cE3!iBJ|+I!lKBx*T+wI&B4-1JXOVU20cygdJALsq?C~CmIs}pM*czkfpa0sMD*@8U@g@W-PjzoGPvRb0H4Gx!^b-Zg#fF4N>Jc7N(Ss z*GPV6PfUWec>U-!rB`uwc$|egeiWNj7~ z)>2(vGm$>Mwf|_LC(nLZapf;`?&sj~t}k55yDZeEb~U9HN4tVa)5L^k-1q;vk}v7( zdxEXRv>=xaWy!(|Nwz99@;ccgfus<{^!yG%Bf6JoBg48e#j1L#4qrbB|Vq# zn<7a*K6qW+u%&g!b<7<~G&&fhOo`sz1MG1zhbQDGMNWS>U-R4Dcbp2ReZV$~%1Fez zDJj^!X+_DOAVO#>`jQKr4B@BnWe)VKNM`_^R1cx83_&Acmo)A{$Vomq5U89`zdzkf ztgiX2gii?vMjFYDc$`!=l!amyg6=fcpUh_K)sa|a)Jy*|zvd!Q(bI?2^t=%?168^* zf0lES8hzz(EHL<>-Yb4@!(G6(u%ly^V9nC`4^PAzY?r0oy5e=Iq;Cqxq_%gCcR^Mc2W?u=xTT$UJusS)bbp{?{EL$ zluj zj@21f%M|_Wj$ez(2cMw~LbrZ;WbAOQ+m-<*4APp)lEHG)o0>I??OxzEFC7n@bT+N| zH10gU@xxubzjczEHn-i(aPllqP|wLbyEgDe3P_?=@4H(t{}qW54$JoloC!XhNd6V} zc!~ai>D+ha&|8n*^UJdhmF1D}&vPr6#dfuAmfY$tU8s6;Q?QduIHN>PbU@Zsm}5#g zAI+J~{VW#d>P%mSpess0-PpE#yTW7f9L)9N=tu5I2u8qs%Q|7uRM>G4asl;30{F2n zaEY+5s0u_%eMW$JjdEv*_+fmiyD}k+2fSqg49e9p|@3BclPP ztKTT_bI79=p^h6kuH>Y;t;|x3D$;w)I&^DS4S-u+wO$WeL&t2N;g}d`;~+lbk+1GSI&UVqbFwtQ89z-hj{}FLRE~1zQ-1_-|)0BjV9$akQ ziRG^paYIlxu{dZ2(Y5s^K5*$aaGRqJhR+zfXtdQ%PY}BfnvpDt6?A<{q95>!5#dsI zylX~XbV|OXh@`)JFQ32nO>3T9sDPcu?6jzK$bdt8ke@0jcj{h`v!bOD3YicbYH<)G z_y602_Ef9{L>KR}acgbZvFR4JL~9#zqsJvWI`w#Hg=(l*dDB+(<+g7`%cRd7oYD439tSS9sXSi1%5VWcuG-o-cx%^!noaf^WLd z*Mfw-@Wvm0_KUjx9=o|aa~ zb}~;v+YDFrTaif`nM+hi;gO>hn2(Mk9XLhgB*g}f&|mxFy_YxCd@fa-k+%9Js1Xqn zfy@QsfxnMGtm$ZJgIsav&s-+GOs@K#-e_9bfhYf%nac_DdzIJ^#H+IOQak?0*zptB zx{N2IU;@N7m8HVBDl5|Eco<|S0@AK6}x#*FsEVQR$GoBjVuN=R6nKQZkeY;%sE zQ~7(nS5TkL-b>?P4yKa?`H_C5^lRT7eOOa_2G`^2*sg|lGUiii*Dkfy{1$UDP8sX+ zB{gkVDe#dE741&pUF8x0IV{ROKPA;4)ontIguGiq_GoWnB!V+Oj#kNc9s z^itxtvp4p_JM6;ACP({M83LcLaw>47Txndd%d5XI9I-d}W`8%k0~pu=RPumSS>wdR zkz*MewO~?{Dcq<0-G6HH^;)Y?2>f*^()xE)8+WRSd-p<6%`!My0fUkivd%pi6*nwT zP)+P&TRL_EF%AX17K1N^eh0=TOprN8?tT!H=O|7dND$Hokzae0z{gyC45`%o$KsP& z=|GE}Q`+KC(DKHsWL+Jz!xFkcY)1q4@y_U+@dLBVW^7-dUzLzfW_5;Ims*yPxl&h> z$PiY+jpdw@u8F8ic0Ifl`$>V&v9C5Ivh^JqiM`>sZ(M0oqC#J-UTszB21m znqx!clyVM6y|DB+71$VSlm}wY%IY=CR+I!)_8&tQoN4a_ar9p1$-e#R7W?aw_6k&H z;#a{KjOC>2j1OL{e-s{%=8raD>AjEsfoq9>Q4aK8=;1`(D5;xuXMkDXptYcEx-}d|Gn}Slc)dLdECz= z`}8Ou6m#aPIXIr7@|1q2hhzcvqfTKPm(Tv*S%OL4*PMN`;n3{TI{5huX|ruYNA4ZU zQynMxDIYx96Qx;u*)QL>m%TT&6S-dcB%vKay(?B{A@@g4>=F6}dtY_QBhmPN@SH3h z&tIb`kWba;_yw*5JGDzcY?XQLPv%6#6g~fK!1idrlXB5)z-l+i27DQZ`c_%8mgjqq zzp17(m;9$hs$HiG&(G8MQi`W6%APQYj8BS2vAvAD6nh>hNPIIDso#LIp~LIh9aWl$ zHR^esno}7b7>1yvF;t7j8NWANn~7IFi)x##fY%1E&|kVFNaJ5;fv|T0w5wQL=ib~J z!ikr1_H&}+4Q`>zztE%`P7BfT=XuGMy9${2=4JPS{O)_Rl=qMy8CIJ7c7Tzoqv|$& zUBXY(?1@b-R>(ig=LyJ%d~D9*Nsc1L6*&;rd`a*3B~>@{@iK7JW)eeBAawyRryn1( z1BB_e;}fgcyKMTWF*Lkp5&Cyt0ngWjQ3gi-f2Jj~VPHN48DNWZ0wKXYGDq=ulWY3w zQzI5!?Cs}O@X&pO=&t!@4sFx17b-nXxOY`>Jp2A_xMxeJA;fFKk2!I6Bh%_({&r5| zZ3EtWB^G>EPmCLkZ@n5O&V6=lS=wFxjt~SM@pPA5t|?lY&(LAFJhv{cQ%m~!)dq87Tmbv3Lly?a7lMrmMN=VJ zYq5qBFR1%X`CAe6XnYN$H7iFgAV9$5dhu;+EC3*uCF=ewo|QoW0VSOs^)-vf754FJ z9ST9BjmTfVaWLFg^w%Aq>ls@$#9m+2`d<^1XT3iJqkL3R=Pop$78F!eA`T4y5w>~1 z3sM@L12vC_By|ggCHbTcX;lDecH`wA-4egxzVa(EXRY;gLjF6%+g)akdGcd)nV_o(x=h~PS9x~|}FM2;49Dkb3N zYJr=oB(tuT0%)@0KHc+@jbEdU+u(&|bWEHr02es$G=CI^DIg(Q+n+SHfVulFv+SOU zxw#7(Jp^e`#}No{u)mai)K9*~K$3ie)x|uHZ1{n#rO6ml%v>g{_aP=dwzV*!aOxH? zXAsCR6-N7v#6NezcSDaiEjMC-R@9$LzsC?DqrD01_>X>(F68#+PPOx9*nBBnR?{s?L0Z%-W6U?W=Vk+&}@Ews%ZZCd!4bLaItdU zBs)=3yU%8G!dSCCc640ZMt>jPC_Ji|tcXWVZ=(G_;OLS)#1b~`!W4~%`|FG~nLa{} zck3hw1N;T<@O+rus{>y_=^y~`OP(C_`-WdWcx z%c>&v8`TF#AFO0jP={<_hL^SAMdiv9iwz%_{z-)?^G{bB#lJ(m#d-Y=!c+q6Ebxz+ zS|pWFXzN4!jNUmRmILlW2`3zZfp;%Q>rA z#R{+w30^@!nOXyHFgUGF3He2>WGWWQbe_%!eFX$%34bRcx7Axypz4z#=r@|rUAoSB z5DD3#bt1?>@P!1pX2BYJcazm5-{K;4BMM%4Oxs`RBl^d*&wMxlRGoKjzmz6h7t11| z$XSYDVNDx0R9i!eYKm30Rtp}b=br1Ubk|k5d=5%`6BA1rvUsG=yTGDFd&1EE6x5Es zO|~HFTfh^n5NZ_%b3FZew^ph--Z(icelp&L)O)i{CnT@1po2cJd)Kf0w{7L%d_ygO`3 z_`#|R3kMGV=kn}KsYzyT!Nmg@L;u^vZEhEly*t0>_u*dcQA2#gmQ zYB3Rh%uI$95Fzw<@9A@^7e)xY`Utd%@52MkjJgEl38tU!2{n}pwGLYE0DEPOn85}1 z7uQAytM5@%oye(`ymI&dIOo5fh{)MF*$r~|+|ZjP5KNP~owFvNf&BHbV%UBl4Q-Ca`B-QA6JcXxMpcQ^0&3(s@j^Y9;B z7x(Oa=Xcg#pSAO}^dQXK=`EHN61X?v`r=$y8m#G6MB%4-K-!Z2W(_C(GgJ=FeM2 zr6O@`*FM_lMI5Kq$|j=}N4nQt=2(;j1}mA)CHLr!mIsEFB_^KB#UkRS-@tMYcjh-@ zTM2riwD;zO07{&D(}_4l2ct>hI9pZj!CK~5nauY;a1S|~QF=dplbBKaAUVkYZvUzW z`1mfmYjACm1%>LEVeAfn)-qt0vi3;9-o)P@AfU52`v3<MbXrhN8W| zEy1Y%Tw0ZQ{wm7BCIUd{2TyMcL!Y#u-eNQ8a2H%5ET7>p#j2H}yDjgiUR!@1hq|2^ zdcVrRsS%2*ih5RF`(ee*S=qu-o(WN&_pQNjI(2>So&cZ0K1X;J9V@jk;k6CMg5fTJ ze^@-3Ne3;msd>?*E@!;U*=BH@ibo5NPu-m5EjkNoU_MK5V!fqpnw{bZL`|GTh0K)Y zdV(}&OIOEkn>dag*WHz0q%0ylF87%%_$Z@S5#p;4=D1(w`i2Iu9v`y<2*3B@=nlJY zi@j~WKSyqJ4W}255?#ALPW+X9eY4||W_T2V$W-zD?B?`z)6WAt4VMAb>b~9h{*(D) zrHVAZA&?OCUN}`xG7$jQFre5FtSt9GT4(+sdtFIo**RK0r=KNT$YhZo?wwCApy;9B zEajcsQgQ3bJ;%aVQB%B0`F41YzH*Ep!D{Kl?$kMTy2)hX+BSCu?B_3K)}ZZ!glU4Z zrsj}Bv_`lr37L$%;1O`@Ygf4wY?AL-Ivnk{#-kDQeV=y*D_Yi@wZ1H)eR_P}n9Yrd z5YyrLv`$0W8B+c+w*QZ3DI7S8C{#s3|Y1$L{T~TlAQuj zUh|c!hWI6Q#kO?kQdX-&lRRUI9Vm5GxBpc7B$E%M1xsz@v=Uo1cpwU3XR+43c{ZPP z6Roa}F&IZ{-qb&eAY}enGD3GcQ^>>TLrdV4vj{bF<04~ZR~x1Jxp?uWAd9TVXdapx z4HRG&pe`VqnB%&ZnkkjBP*lTV>hLz8N}R9~Q#V5QpzQp#rlmkIk+w$Clp=hLeO262 z(v*#|W{#ZUvNFG}DX+SxT%dMT-ZyWW- zIK`%Na_OcE^6AID;S>shpnWJp{vNUB{zLT{escdFO_E^RF@a2{Of9X7HK@omKZp6G zI9VfpDT9@wmKw4Ll8Fu7zKGR!1WR;~6XAz3!qg*`3M$Nddnd%oABsT-TyoOAKf|yQ z>u`kk!NG&1DygDPzG+)x#3)|$k(u=^YK^wvwdUeY2vltmQ30f?}$}LO2XD4n~^Co|1PzB zmSKziHC}*$Bl}AjulSRB!#dU`h1Ht^pY!6_yCQu&v3@GL#Mt&5*CVP(E$R2ESD_$- zrOe*5Ak)Asj0h?Kg>&6#{QOC+c5_&)d-#I>iQ+OIs=UVTsqk&&1X#kcF43Ob%tp%d zQ-K(^=M{pon=Z;WHza3zx*?`#@; zE>h0zqpiaX`@D%L&(`|bCnGKS0(sP4YP-Nn(+hcN7B7+_A0PDLQiGC^%Eh`5G9KCI znTAz24Pp4KY;#z2-#FRaOUXoUKn9oNdKUScbWskgPDFf;ZKpCC;yrZtVdoP*L&MjC zLThF;I7IGZu%8BhBGC}j&TH$4Z31*BMeh8;(ux2T-_2lsq?@l@jq6LLHaFJz>4Uj8 zvO4h<(z1i1o(qFfI&lYf^JxTbM|^)Tq@f%zKk6VlE21IFR7yL&@T=nl#i!D8CeR; zpG`r&!&yVxI~&_8N5B=i_8>?{cj1E5TU{XsxJ+8n=qH|@<(^LoYGNRwxd=O0Z5XFI zP=PAl@P4wAxJk*@vl5@x4PTqN)@W4rCWIVC0xUv`l0mpq<=;?uPig4q&ud5Tq=#|a zbR&y`IGA7?3;9ndyEI7FQ`+kT1JH@N8o_*5ed!%xN8!82G&E{?V4+=>VZ4;nv}u`e zJKwK<0X3XYmX}11G9RV1HeXS-lU2>(qolsLl0}sMk}{Z33cx3Odo-39?saf<@}azin}7WhNS)dM^@erS3As?TYG5k@NDGj7<-R|8 z!9KE;!DpA>Bg`Ywd3ly#S{F_R<<|-tT8?Gp53slAR~H-D(gK^-c6<;(FAHh1U4qou z#b^2SUq+E+Kq)|Fen4j7L3Mz>QQNpK%PqFZRqZxnp}fNJbxo3J@YLXFW>Y@WV3Gkd z|CJhZyRBM^VD^Dx`thVs2fq9U3IK}{h1^miFY^vH0&Y~=ri4b`-h@HDZCZvmxQl}X z51V3K-<^k@)YsOP(2ZkTwP)`A)jOYc^U+MlLUNf_WMZW<53!;s;;SE1gk}88j8atn zl|@oCDoF7B2SYGacxc6TuJRLB<<@&L%4}0nYbwJ-9Ka?C2tgmE+T1R;-YQG*MIWVL z#|^g8PbY?vM_w5YG6P#N^3-4-Q(28;-80v&Q|m~@$|K4@8E+FI@wntpyiRm~Xqr|- zQQIvc&(VLrW8n-;?T+d6!(f*c-KvEmqVd~m6f~tYSR2(SB}YB9X~AF+T8^b3X>0fmO*vh(oQic-If;r5pKP^y^I25obP))pEE4X9(HNKLU6Cov!6#IP zDP1+-(`F0`{=$QNHGP8Ks)`FOvMiouj@}oGxlP0 zTJof8^O9kdH8!r)7RG<;Z^bznN^`@5-d9Lny^j-csJ z3h(#EqL0g2BeP1}zYmEBb?ZBlOgbh^QtKHRn}loFhGJis>?P-!x%67CXHo@} zmXQ;T*I77xWU_0wV+1oqz1y;0A)vS8X}F@M0>Q9_(?yZ=x^0)m;)IiUkYGG}YnK#7 zuD@(?5Zi<2ynqL-8i0Ne{hCu4J1VzAf25t*eg$hB1k4=M7i1BEx7!gDyy;3bYvjWZ znYL*<+g4qjM$CE_o6C5vSU6IA$YX7ZHIIQkn1wq;6+TR+h-Y2@;floO^VM)ER57E* zBX_#+#HW3_^u~s`3f_(DTqFOjn4WY`Uj#p|vs^O6AWjs4m1jfc zlm?5+)bwn^pjQ$0DUD@U?5Id{}i~LrI zjnkE#X#BI8Hw67^%L}KVTCR%To4$JEKlORV4Si=!^7KrE6bB4fVJR@mQ*Gj@CE(ZI z3jIXI&OA}Bi*z`@5qzi&2E(v|U-YUB=%BPyyPYI{9zmI6-M5ZeFZj@!h`>=_6v5rw zy1WH_-t$Vl+~!yRiYr{S;4ibp+NyEy1{+&_O$!Ur><}8H+|lucBz8|Ma77hEwNdDr zPeWTaK54bGBXsI`*AY221qApg4ba&~x8HE&XeG|P`D*Nbtq+Vy12?<~u~}--fp`wv z?^D{6bCF7n1euBkuu7qCYBNOLFKKRN=9eJiB!-O?0dn>DL@nkC$GAF3kf&s%XS`Ov z>sR$c_|=wAX$30U2#zlj>4N-}b$_d8_;M z5`Co%?BI_3E|gMr1J?X|@GHNO?2Tn*4RNFobO&-bl~MYw2(1FHJIWTT9E$hX&a@U}{3oC3=4`E)&A7rC{mTpnRy5}=PMRnb zd@XY@K1Ts*X>lmCR`$OyvS$@+w#Vvav{Q|z^mC)SG9FEx8ml{=K8*&pkByn$JbMfr zD5v~$k{aPaAG!B~h%+pih+^Ao{wvqcO1mquuX`Ewg(Zz|xE)@&91Qw9U|t8iFAzV6U*wgkHP|tUrJcKlt7@9o zaK5Lw@vSUNP zM*|}Pf#Q5{0}FxInxMKHQ%PLME)ndjhHtKcF=(m$jOLVZ+Q!r9vN&8(8Y@pieLrN@ z*+M<>amCOV-e?JJgJqxr45{K%mC($^=ox~zK@az?XfNUoA`Wpm^+AWI?SALyEEzpm zvIf?UuC^DKyxfMTR&f<}m06m4nM4~k3(q5=RQa)XN~>E`0`;75$gEG2`y!W>GL~ub z6J=X`WH7;)5>1?GzM>lO<+F8nRZMvoE6m>;W&onGd*&jzNTg*v#C`khmZvuXO&xja zHt(}tq}%Ae-|*2LWHaT=SeM$&&`qj|dO}89_!V4cddN4a_*lL!d&4{0MtCrEGz*+1 zKDOQQxk`}%N6@TtkbsO(#!z^qh1~tb+}sNF?ruGHl_t*fgVX*=&y+(ZG@%pQ*7ig%^Ur zpiFX#t|FVpljWB7Zq$RdVUFXl{mFQ4*L&U?@hBjG7Nq&TOPz^QNpifhhtvxaggn#f zahpT=9^pGMHjsq%oM~N&jruM{Kn4>(fs^+;TPDdypAx0lH$x$2f{eATL=y{JzlQ7~ zZz0fKI5`n@r(KLvx-G>mFAO#s*rA|gRg*U!5J;JekBA&DoH{^LHAW&M6*3RoS8E@o zn4yUf3Ga%US#uFXAL3nu6Bj~IL|2eknK8AJ*u7A`KD(f4tZ+_ChkXqzDd z{uT{dgS+*(AL(!L(i)6Z~VNsqv7$4OrtWIz@s<$Gwi!cBRD~W1tZ|^3=nBwwlec%1C zlz7Z2`%3iEFisFjk-Yx=(|4nBK|`w7!ZFV?VAKJ3722?f^D5UJ#@&eqB_=hZPm(V3 zNF^;|hVs^Ag(?Br`d)n!#v8j682RtIpKUI)e#|hLDRCe0lu`IBKru} zDy}?s-rkm7;xHOzs77spcwf&-UdAi8Z@D8rX7$tO!&+pLjc;L-O>Ucjn2x%mg) zNt;H`+>hCG@|;I^B9`y1nzCp23LN5CJZOIza-QeoWFs#{OQyu0)M{{^Ge+#(IMl%@9t+;Y$azh+>h_TQ$_y#i)*H`8r?cxitmix_53@(4)p{!qxJB zCmo0gc2gle1tB#_%;cJSTjS$0!a-Z*KFkCto=(>EG3gkh`?OC{3i};Y;y$aS z8Q5H8*@6!yT*h!CBS5^rNZN|G`hmSSa<%pL2S_vEEmXaUFirfSn4ZcW`;)Iv+o3x1 zrbVoam~5B#Iywuzza2r88ZYg>=#y6F$?W@arv0LyT^E5j&az9x{lOTXdr3WWHz1z| zu|CD6V_~*Pp6FhQy?eRj8 zXR`AXCnQJL{nWqn7)@2wcY8v)Tcx&(8SZKv?;teT(2-7oa^gOP#52=+@ufX^=ia=X zIVg9jq_$|{K4sO2-)cvN94z=|`kUloe&m2FCOfXn-Q}t_HDg8?(K&2F0+^#W zJ*__L9r(vQNHfD~NU=3d2sGFn;%mWB#o0~pGv>r!tguUnKCorER?#?&o~FN ziN+VquJ&ANy>rbEoSwUNJ_!a`*ryPkLh#NY_`z$c%3Y_LZ9np;c=h@xq*i}`HOIJ zTmWGL%pIzO2IM~9`$$CY#1xSbQd>c%yR2` zGeqAAJ(lOpo3ExUrXdEj>#(#h4hAVin8!R2loFUjQ@5eSp6^8l@MBT1`kj|6 z`kyaib2rr}{MhG(LsV0#eqmiaCSvuZaJU`HQH;=L)Q-K)SP)zu;Hsl18zzYKyI|<7 zQtM@^Hz!bCpn@UN6M;-0z4zY!9sgRQJwd!4fggIFl*HHg>F`b}7xbsw@q>h3k)6W% zQpD1Mp$u&H8?=1DQBRd2;t+_RFmYlEIdlKY%HdYNdC{?|G4+Ev3>aaX9Yoant)g=c%cPl_F0phgr@002~2zKWD)i*#- z$_-Hg>0E~4BEA19zwu$Jeze~C&q!`vvJVZladJM!vG8zZD#B|^>=S#MB{maKlTK;_ zq&9rRwiUv2F6s?xI27oox0qM7NP1ho7!)}Lz4|591OX`V>*^Kak)-zV&MF@KHiPX? zv%hY5ZJiwIG`78m9U*?S^Zv-)YimZOdev|-;S32>fc_ng@Fw0?x-8|}GKtGFo%oM- z*_@?@q|d4*C)5j7AaTFNYF_o!6Q&@(mVT#;?~$QH=g}0cQ6>FnTE%|=0t0!(O>Ubb zH=>dY+eZM#}7ia7Nb@9BIeAk7>zD%=iWV_nPHp?}+&udA# z_Q;pt?3vhuh(c+#ogKAKL8qz8Vm_q4v$0V+%KG& zR4%9fL0itlG-{L(Esq-Nci(!xM{(l0o59vk0fKpd<7cLy`r*TxY>lH_pFdJr4ffv| zh|jIJ<+nT02f@cPxo4%q5j=5Ox-I~;mT-!%0Q@r@{iLOij36p;SpAVuM|ZEq0=*?J zNAF^){fKo+n_M+>O?4a^uMOa?h^`9d0WpHi!}>f$vc+&`^Wp3%B9pjMN9rqT=)WY$ z-{7865byBHJ^H7F;DM{Oz)9`y1};N?Yo!4gDg&9a`ch%2Vo_XPE-^7iCe>*=7*=?DT$9LO^3k#NwGQuLlr@VbApNu}Nx{_>m=QG>kNeqVK7zuEW8 zj5EJ<7z+O;4q?C$W()aZ^0DmXDEG~8#7Ya6AMa+rVL|j86`%aB(1$t|KQQ`S5}E&j|uiV_~6hwl!J}Lcq{T z-!9yjUb&PsaHf*Lp2Y`e2O@c*LX#hcC$4QK3{^gUn1T6(Fg&kKLX+_pKx^Zq23^Zl zF7|5H%CBK0oqoM*kH3j;Fwpz$js(U zBMty^{Czg=mB=!M98Ed<;lkDNy6E>_dr6JG=WG5RFREeiF%vPV=3NdRB!cMSR3hB0>|cVTi$p)-?9`=25zz>Uz;Ah2L?K#6MUd!I^XV! z84ckyFOq$Y8cdN{f(l#UzBJRlOUQYBJm3Lw>54HpHIX=7?V_mx_sFNpQ2xx^=R?HW znqq{R^ARYqz*hoo&fugTYvXZ|7PHq9oghMV7*4Z0j*Rs-PLyonSYhkqpZl-35!3b16%xWyRocW8p8XP`r%-E^W~Qprkq8-dkQ4t_~0nJp#N65II!8O3QvE z2f}FO+U(ix648sB)eu#mbZRoy3RW27RcR>;_m= z@jis1jGH_x#)w|T6Qj%Io~U&ES`a`+j+LW1CFod%VWCqct98!e1N=#ie3<6;WIk`~ z0F{^$c42VyVC@QUZ@sPwIdiczo19fDtSRZ<5{(KSfy{W`Swp7HZw9RKX$k|_wQie; zX&I-ucv6kf)>-w#Rv{y=Q7p-?CE2qR;ztDq{x{+(v1EprL@oB0zmd>`c2rrf-& z(|}G#i8UmWGhu%Jm=u?=Uwa=sxZIh9anKnp?}UYF?^d0BgmES+>j0EZuWt>#no&Bl zZT9GBx2#2OP$x@Dc2IIqbcqqZrlLRNC`r?@WM@>)z3#~gVNd8~vDjv>svV!7=$JxpzC|G* zAuk8=m@wunH$b5rd%JTGC`Ob0-%#`?#LdP_&iTGTT!^*~jUO`YOPKq$+lodRZe1@(ZK4|3e#@eqn96 z8(ydN5)rZ&dk&;1>v}y=_c)!>xc=;jcTQUNl4O>S=*<@85?bIv5gXd{f~kCY!m$O* znwt-?Ic~3QQ0RNUiZDfcpxMbtrT=cV0jACrRsD?~Raoom1?aNJK+*{A3@LD(=wpb# z=to;Q@BKv|NoSZHu4Ega*GuKl{P3~Re3^3yaKFEIO!+zcai@j&PCFWXMu2U`NB=kl zM=tF1(0gQrVIi5FTYcXltII&$H21C)Swf+pWe@UYnc z`_fDNTPQqLIX2J$>@J{Wg68lSRt;{mFXrV@`Y9T4@jFyJygELXfLTQE&QN;A1xxk( z0!L^km3gGMIATH9;`ibj;M47rz7G9rS;DSXJwJ{$ljmeBA(<$yYU4R5W~rXMl&2RY z)frmWpE*vd;m9Lis6SjwkBQIjr&KFi6oVg{0YjCD&e zxl`fRKv0H1Eb~7)#OFrzPIlJ1j6L%%A%V59n6*eCm*EH>a_F5dZ4zs(Kw0vwPnOJculu(S@53 zAx=N-^q$F}L*8NBF+4gX(Mx)K5O!31crA6(XPCewpq@LdI)sTlb?jwC$g4C~ee$B+ z-0C@#JP_L2!q0`5acZJ+f&L}CYZF8bSwOdBqXtoo+aP>yJk&p55D0Oh8Ox~f&EjD( zrH0|36gn&dON1}%mrGmKU^7>^G(8wZ(k*tGTKiiQt8!vkj@ycQ(t_i_HkV&JvAM}gbN118(dK$YBsJTsRqan5{14uZ z24?&FQy_Bi`S{L6adHEiwING4l{2+PMa;4-yc)sQP-ENL4lrn>Is^^U2~~E-Ec9XY zofM#*zVaMGbLkPE`OBS=W>FF5FV4Fum=}lm>WIBZ;kE#kuUg#8P3gIkiSB+nDk}Uv z2k_`Wva)c~KWcIPDW))l5!ra0>1=M=m63ND>rgITf5E90qPbQ0hg3{1xYw_&7GQ6%P9s zeh3_S8xW}SuzV+dUvL*m52s&|DMm5G7Aopmu^qlOy0&H|Kg^PvezRs9hP`f^MiLo) zfbJ<~K01$`SuZy8E6;|wSh}7jV=WE($ykoQJMhm}#;XusX)z@m`rUb3Ebh0&Sgz3H zm9TnZvA6&{bG7cxH5cT$`K;erHzE@Al~?P@%!%=Yo=cG;vmhAdPAB7nCwS&vKjof~ zH80-MgC|0X_3C_6*zCaT9d^fk7JAjQK#XtPtki__Ri+D?R%M?59LNyaLk+feleP5= z@$xZ#eC)>r&p>mSQA$iUI=6(i4I6$WrkVSFa+kB4jRtjYsPBp)>s(F&gRnm|MTsIJqP#}PWUrlq8*Dx0zVFBYd{CQH=((|MtGrg~X0F_0V< z?JURoB&2eH;r({F4?||R8MiCu(0N8;z@v-L(WaHv@LgX{hZ@x^5igJOKh}u9KfwJB ztkV!AIYH;S^LX86AYqR2r=wltPt04Gq%+rrOKkn!?hBGn*LXP={vO_Y%!dqWerTkg zD>V*kQCCh}zZFK&ZcRc=OibQs#+W~|vlXKiQJ+2xz5(U${b!aO;~F$Dm-O~^Bi+3^ z{Lw<0E%*%?{U1%_?|h5DAb2hqt(G#sZ@GB9luGU1-g;W-G+1GOroo>gP!q8i6VW+a z96M&m@zjA+JDm8>kp1a9$kT;P-n20qwO|-YYRW$)?SEXQ^t;w5MjW!D|A>D09klUx z3r1MK)nMv`AiO_+`d|NwaV-|Ra3t$L81Nrg^*^Wn85zd37#`ekm|sw?CLulZzsJ$P z%|qJq?DpoJJ)YRIsv|Sq_$94=jD4CF9Ilg*NrY7`q4=k!`qQSzJ19tnY`W0=>H|9Q zH8T22j;%2hVenzpe{EdYhj+FPFD54Xjus4gn;V3Vb0xwll~Dd~?eannjchuqFRzon z;q6|r{|pZHVJ!ynP2@<<&izfT|9|%w{06$DIg62YP+x{=AK8Qz?Vmn++=INY?Dr0I zpNa-%)%xqRqy=Exhnq@$FSM5a>mVsZMxmsXomc|@|6bav_HQ!=-U5N{#h>Hse}@ZCt`u`n348`BFRM9sCEZ_e-xoT%IG{t7R?1blB z{$s@dU6Bw0npREAmOYN?|LYUTudQ9a5SJEX^~e70|2DaCAXkJ`IML?)U+#sG72;O4 mElZYRCH=qMKvslt>z-e|Z{~hJWCsQL`6~2Hu!LXp$NvKa4@=Yl literal 0 HcmV?d00001 diff --git a/1-js/2-first-steps/18-function-declaration-expression/article.md b/1-js/2-first-steps/19-function-declaration-expression/article.md similarity index 100% rename from 1-js/2-first-steps/18-function-declaration-expression/article.md rename to 1-js/2-first-steps/19-function-declaration-expression/article.md diff --git a/1-js/2-first-steps/19-recursion/1-sum-to/solution.md b/1-js/2-first-steps/20-recursion/1-sum-to/solution.md similarity index 100% rename from 1-js/2-first-steps/19-recursion/1-sum-to/solution.md rename to 1-js/2-first-steps/20-recursion/1-sum-to/solution.md diff --git a/1-js/2-first-steps/19-recursion/1-sum-to/task.md b/1-js/2-first-steps/20-recursion/1-sum-to/task.md similarity index 100% rename from 1-js/2-first-steps/19-recursion/1-sum-to/task.md rename to 1-js/2-first-steps/20-recursion/1-sum-to/task.md diff --git a/1-js/2-first-steps/19-recursion/2-factorial/solution.md b/1-js/2-first-steps/20-recursion/2-factorial/solution.md similarity index 100% rename from 1-js/2-first-steps/19-recursion/2-factorial/solution.md rename to 1-js/2-first-steps/20-recursion/2-factorial/solution.md diff --git a/1-js/2-first-steps/19-recursion/2-factorial/task.md b/1-js/2-first-steps/20-recursion/2-factorial/task.md similarity index 100% rename from 1-js/2-first-steps/19-recursion/2-factorial/task.md rename to 1-js/2-first-steps/20-recursion/2-factorial/task.md diff --git a/1-js/2-first-steps/19-recursion/3-fibonacci-numbers/solution.md b/1-js/2-first-steps/20-recursion/3-fibonacci-numbers/solution.md similarity index 100% rename from 1-js/2-first-steps/19-recursion/3-fibonacci-numbers/solution.md rename to 1-js/2-first-steps/20-recursion/3-fibonacci-numbers/solution.md diff --git a/1-js/2-first-steps/19-recursion/3-fibonacci-numbers/task.md b/1-js/2-first-steps/20-recursion/3-fibonacci-numbers/task.md similarity index 100% rename from 1-js/2-first-steps/19-recursion/3-fibonacci-numbers/task.md rename to 1-js/2-first-steps/20-recursion/3-fibonacci-numbers/task.md diff --git a/1-js/2-first-steps/19-recursion/article.md b/1-js/2-first-steps/20-recursion/article.md similarity index 100% rename from 1-js/2-first-steps/19-recursion/article.md rename to 1-js/2-first-steps/20-recursion/article.md diff --git a/1-js/2-first-steps/20-named-function-expression/1-nfe-check/solution.md b/1-js/2-first-steps/21-named-function-expression/1-nfe-check/solution.md similarity index 100% rename from 1-js/2-first-steps/20-named-function-expression/1-nfe-check/solution.md rename to 1-js/2-first-steps/21-named-function-expression/1-nfe-check/solution.md diff --git a/1-js/2-first-steps/20-named-function-expression/1-nfe-check/task.md b/1-js/2-first-steps/21-named-function-expression/1-nfe-check/task.md similarity index 100% rename from 1-js/2-first-steps/20-named-function-expression/1-nfe-check/task.md rename to 1-js/2-first-steps/21-named-function-expression/1-nfe-check/task.md diff --git a/1-js/2-first-steps/20-named-function-expression/article.md b/1-js/2-first-steps/21-named-function-expression/article.md similarity index 100% rename from 1-js/2-first-steps/20-named-function-expression/article.md rename to 1-js/2-first-steps/21-named-function-expression/article.md diff --git a/1-js/2-first-steps/21-javascript-specials/article.md b/1-js/2-first-steps/22-javascript-specials/article.md similarity index 100% rename from 1-js/2-first-steps/21-javascript-specials/article.md rename to 1-js/2-first-steps/22-javascript-specials/article.md