From 04dd796d644a022611eee204601483b14d717d4e Mon Sep 17 00:00:00 2001 From: Kristian Rother Date: Wed, 3 Jan 2024 13:31:43 +0100 Subject: [PATCH] get rid of all warnings --- challenges/backpack_problem.md | 46 ------------ challenges/backpack_problem.rst | 58 +++++++++++++++ challenges/binary_search.rst | 2 +- challenges/blockchain.md | 63 ---------------- challenges/blockchain.rst | 80 +++++++++++++++++++++ challenges/dice/dice.md | 26 ------- challenges/dice/dice.rst | 2 +- challenges/magic_square.md | 25 ------- challenges/magic_square.rst | 29 ++++++++ challenges/{maze.md => maze.rst} | 72 ++++++++++--------- challenges/{sorting.md => sorting.rst} | 63 +++++++++------- challenges/tennis.rst | 2 +- challenges/tsp.md | 35 --------- challenges/tsp.rst | 39 ++++++++++ classes/class_diagram.md | 7 +- classes/class_playing_field.png | Bin 0 -> 45545 bytes classes/class_playing_field_alt.png | Bin 0 -> 44509 bytes classes/class_snake.png | Bin 0 -> 44246 bytes error_handling/exceptions.rst | 9 +++ index.rst | 17 ++--- namespace_exercise.md | 71 ------------------ namespaces.png => structure/namespaces.png | Bin structure/namespaces.rst | 77 ++++++++++++++++++++ structure_classes_modules.md | 49 ------------- 24 files changed, 382 insertions(+), 390 deletions(-) delete mode 100644 challenges/backpack_problem.md create mode 100644 challenges/backpack_problem.rst delete mode 100644 challenges/blockchain.md create mode 100644 challenges/blockchain.rst delete mode 100644 challenges/dice/dice.md delete mode 100644 challenges/magic_square.md create mode 100644 challenges/magic_square.rst rename challenges/{maze.md => maze.rst} (58%) rename challenges/{sorting.md => sorting.rst} (52%) delete mode 100644 challenges/tsp.md create mode 100644 challenges/tsp.rst create mode 100644 classes/class_playing_field.png create mode 100644 classes/class_playing_field_alt.png create mode 100644 classes/class_snake.png delete mode 100644 namespace_exercise.md rename namespaces.png => structure/namespaces.png (100%) create mode 100644 structure/namespaces.rst delete mode 100644 structure_classes_modules.md diff --git a/challenges/backpack_problem.md b/challenges/backpack_problem.md deleted file mode 100644 index f7d6283..0000000 --- a/challenges/backpack_problem.md +++ /dev/null @@ -1,46 +0,0 @@ - -# Backpack Problem - -**🎯 Optimize the value of a heist.** - -![Burglar](burglar.png) - -A burglar broke into a villa. There he finds so many valuables that he can't put them all in his backpack. Write a program that makes an optimal selection. - -The burglar is an experienced professional who can estimate the market value and size of each item in no time: - -| item | size | value | -|-------|-------|-------| -| laptop | 2 | 600,- | -| cutlery | 2 | 400,- | -| spotify speakers | 3 | 300,- | -| jewels | 2 | 1100,- | -| vase | 5 | 700,- | -| camera | 2 | 500,- | -| painting | 4 | 900,- | -| cash | 1 | 800,- | - -The backpack has a capacity of `8`. - -When your program manages to pack items worth `3000`, it can be used as an app for amateur burglars. - -## Hints - -* the optimal solution uses **dynamic programming**. - -Use the following pseudocode: - -1. create an empty list that will include the best combination(s) of items for each backpack size -2. insert an empty combination for a size 0 backpack -3. start with a size 1 backpack -4. copy the best combination for the current size from the previous size, store it as `current best` -5. go through all objects -6. create a new combination usign an item plus the best combination for the space remaining -7. if the combination is more valuable than the `current best`, replace `current best` by the new combination -8. if the combination is worth the same amount, save both -8. increase the size of the backpack by 1 -9. repeat step 4 until you reach the desired size -10. print the best combination for the desired size - - -*Translated with [www.DeepL.com](https://www.DeepL.com/Translator)* diff --git a/challenges/backpack_problem.rst b/challenges/backpack_problem.rst new file mode 100644 index 0000000..6ff1c58 --- /dev/null +++ b/challenges/backpack_problem.rst @@ -0,0 +1,58 @@ +Backpack Problem +================ + +**🎯 Optimize the value of a heist.** + +.. figure:: burglar.png + :alt: Burglar + + +A burglar broke into a villa. There he finds so many valuables that he +can’t put them all in his backpack. Write a program that makes an +optimal selection. + +The burglar is an experienced professional who can estimate the market +value and size of each item in no time: + +================ ==== ====== +item size value +================ ==== ====== +laptop 2 600,- +cutlery 2 400,- +spotify speakers 3 300,- +jewels 2 1100,- +vase 5 700,- +camera 2 500,- +painting 4 900,- +cash 1 800,- +================ ==== ====== + +The backpack has a capacity of ``8``. + +When your program manages to pack items worth ``3000``, it can be used +as an app for amateur burglars. + +Hints +----- + +- the optimal solution uses **dynamic programming**. + +Use the following pseudocode: + +1. create an empty list that will include the best combination(s) of + items for each backpack size +2. insert an empty combination for a size 0 backpack +3. start with a size 1 backpack +4. copy the best combination for the current size from the previous + size, store it as ``current best`` +5. go through all objects +6. create a new combination usign an item plus the best combination for + the space remaining +7. if the combination is more valuable than the ``current best``, + replace ``current best`` by the new combination +8. if the combination is worth the same amount, save both +9. increase the size of the backpack by 1 +10. repeat step 4 until you reach the desired size +11. print the best combination for the desired size + +*Translated with* `www.DeepL.com `__ diff --git a/challenges/binary_search.rst b/challenges/binary_search.rst index d8afbd6..6b0b645 100644 --- a/challenges/binary_search.rst +++ b/challenges/binary_search.rst @@ -72,7 +72,7 @@ only one extra recursion is necessary. Visual Explanation ------------------ -.. figure:: .binary-search.png +.. figure:: binary-search.png :alt: BINÄRY SEARCH *source: idea-instructions.com, CC-BY-NC-SA 4.0* diff --git a/challenges/blockchain.md b/challenges/blockchain.md deleted file mode 100644 index be987c0..0000000 --- a/challenges/blockchain.md +++ /dev/null @@ -1,63 +0,0 @@ - -# Blockchain - -**🎯 Implement your own blockchain algorithm.** - -## Step 1 - -Write a function that generates random transactions in the format `(name1, name2, amount)`. - -We want to save these transactions *forgery-proof*, so that they are as difficult to manipulate as possible afterwards. - -## Step 2 - -Define a data type *"Block "* that contains the following: - -* The hash of a previous block -* Some transactions -* A checksum (any number or string) - -## Step 3 - -Write a function that calculates a hash from all properties of a block. To do this, represent the entire block as a string. Use the hash function `sha256`: - - import hashlib - - h = hashlib.sha256() - h.update(text.encode()) - print(h.hexdigest()) - -## Step 4 - -Create the blockchain as an empty list. - -Create the first block, the "Genesis block". Use 'genesis' as previous hash. Place some random transactions in the block. - -Find a checksum so that the *sha256-hexdigest* ends with four zeros (`0000`). You may need to try many checksums. - -Add the finished block to the blockchain. - -## Step 5 - -Create the second block: - -* The hash is the `hexdigest` of the previous block -* Add more transactions. -* Again find a checksum that generates a `hexdigest` with four zeros at the end. -* Add the finished block to the blockchain. - -## Step 6 - -Generate more blocks. - -## Questions - -* What happens if the number of necessary zeros in the hex digest is set to 2 or 6? -* What happens if someone changes a transaction in the Genesis block? -* What makes the blockchain forgery-proof? -* How could a blockchain still be forged? -* Why is finding the checksum also called *"proof of work"*? -* Why are several computers involved in a blockchain? -* What is a *"consensus algorithm"? - -*Translated with [www.DeepL.com](www.DeepL.com/Translator)* diff --git a/challenges/blockchain.rst b/challenges/blockchain.rst new file mode 100644 index 0000000..5181faf --- /dev/null +++ b/challenges/blockchain.rst @@ -0,0 +1,80 @@ +Blockchain +========== + +**🎯 Implement your own blockchain algorithm.** + +Step 1 +------ + +Write a function that generates random transactions in the format +``(name1, name2, amount)``. + +We want to save these transactions *forgery-proof*, so that they are as +difficult to manipulate as possible afterwards. + +Step 2 +------ + +Define a data type *"Block"* that contains the following: + +- The hash of a previous block +- Some transactions +- A checksum (any number or string) + +Step 3 +------ + +Write a function that calculates a hash from all properties of a block. +To do this, represent the entire block as a string. Use the hash +function ``sha256``: + +:: + + import hashlib + + h = hashlib.sha256() + h.update(text.encode()) + print(h.hexdigest()) + +Step 4 +------ + +Create the blockchain as an empty list. + +Create the first block, the "Genesis block". Use ‘genesis’ as previous +hash. Place some random transactions in the block. + +Find a checksum so that the *sha256-hexdigest* ends with four zeros +(``0000``). You may need to try many checksums. + +Add the finished block to the blockchain. + +Step 5 +------ + +Create the second block: + +- The hash is the ``hexdigest`` of the previous block +- Add more transactions. +- Again find a checksum that generates a ``hexdigest`` with four zeros + at the end. +- Add the finished block to the blockchain. + +Step 6 +------ + +Generate more blocks. + +Questions +--------- + +- What happens if the number of necessary zeros in the hex digest is + set to 2 or 6? +- What happens if someone changes a transaction in the Genesis block? +- What makes the blockchain forgery-proof? +- How could a blockchain still be forged? +- Why is finding the checksum also called *"proof of work"*? +- Why are several computers involved in a blockchain? +- What is a *"consensus algorithm"*? + +*Translated with* `www.DeepL.com `__ diff --git a/challenges/dice/dice.md b/challenges/dice/dice.md deleted file mode 100644 index b963002..0000000 --- a/challenges/dice/dice.md +++ /dev/null @@ -1,26 +0,0 @@ - -# Dice - -**🎯 Write a program that rolls two dice.** - -![double dice](double_dice.png) - -Write a class `Dice` that: - -* displays the image of a dice -* changes the dice image a few times (as animation effect) -* shows a random dice result -* stores the result as an attribute - -Write a program that creates two Dice objects. -Re-roll both dice until they show the same number - -## Hints - -* for the graphics you can use `arcade`. -* the function `time.sleep(x)` waits `x` seconds -* Use the following image for the dice: - -![dice faces](images/pillow_dice.png) - -*Translated with [www.DeepL.com](https://www.DeepL.com/Translator)* diff --git a/challenges/dice/dice.rst b/challenges/dice/dice.rst index 50e22a7..decccc6 100644 --- a/challenges/dice/dice.rst +++ b/challenges/dice/dice.rst @@ -27,4 +27,4 @@ Hints :alt: dice faces -*Translated with*\ `www.DeepL.com `__ +*Translated with* `www.DeepL.com `__ diff --git a/challenges/magic_square.md b/challenges/magic_square.md deleted file mode 100644 index 648c616..0000000 --- a/challenges/magic_square.md +++ /dev/null @@ -1,25 +0,0 @@ - -# Magic Square - -**🎯 Solve a magic square.** - -* create a magic square with 3 * 3 fields. -* fill the square with the numbers from 1-9 -* the sum of the numbers in each row, column and diagonal shall be 15 -* use each number only once -* print the finished square - -## Hints - -* Write a function that calculates all sums -* A *brute-force* approach is to try out all permutations* -* See the `itertools` module - -## Extra Challenge - -Fill a magic square with 4 * 4 fields with the numbers 1-16 (sum 34). - -If you don't want to try all the possibilities (9!), you can describe the magic square as a linear system of equations. -The Python package **PuLP** allows you to express the necessary equations in a very compact way. - -*Translated with [www.DeepL.com](www.DeepL.com/Translator)* diff --git a/challenges/magic_square.rst b/challenges/magic_square.rst new file mode 100644 index 0000000..62b937f --- /dev/null +++ b/challenges/magic_square.rst @@ -0,0 +1,29 @@ +Magic Square +============ + +**🎯 Solve a magic square.** + +- create a magic square with 3 \* 3 fields. +- fill the square with the numbers from 1-9 +- the sum of the numbers in each row, column and diagonal shall be 15 +- use each number only once +- print the finished square + +Hints +----- + +- Write a function that calculates all sums +- A *brute-force* approach is to try out all permutations\* +- See the ``itertools`` module + +Extra Challenge +--------------- + +Fill a magic square with 4 \* 4 fields with the numbers 1-16 (sum 34). + +If you don’t want to try all the possibilities (9!), you can describe +the magic square as a linear system of equations. The Python package +**PuLP** allows you to express the necessary equations in a very compact +way. + +*Translated with* `www.DeepL.com `__ diff --git a/challenges/maze.md b/challenges/maze.rst similarity index 58% rename from challenges/maze.md rename to challenges/maze.rst index aa0d40c..1b12f72 100644 --- a/challenges/maze.md +++ b/challenges/maze.rst @@ -1,34 +1,38 @@ - -# Graph Traversal - -**🎯 Find your way out of the maze.** - - maze = """ - ############ - # # ##S# - ### # # - ### ###### # - ### # ## # - # ## ## ## # - # # # - #X##########""".strip().split('\n') - - x, y = (10, 1) - target = (1, 7) - -Write a function that will walk the maze (the graph) until the exit (`X`) is reached. - -## Hints - -You can proceed according to the **graph traversal algorithm**: - -1. create a stack of the nodes to visit -2. create a stack of already visited nodes -3. take the next node from the stack -4. check whether the node is the exit, if yes, finish -5. if the node is a wall, continue to 3. -6. add the neighbours of the node to the nodes to visit - -Try out what changes when you replace the stack by a queue. - -*Translated with [www.DeepL.com](www.DeepL.com/Translator)* +Graph Traversal +=============== + +**🎯 Find your way out of the maze.** + +.. code:: python3 + + maze = """ + ############ + # # ##S# + ### # # + ### ###### # + ### # ## # + # ## ## ## # + # # # + #X##########""".strip().split('\n') + + x, y = (10, 1) + target = (1, 7) + +Write a function that will walk the maze (the graph) until the exit +(``X``) is reached. + +Hints +----- + +You can proceed according to the **graph traversal algorithm**: + +1. create a stack of the nodes to visit +2. create a stack of already visited nodes +3. take the next node from the stack +4. check whether the node is the exit, if yes, finish +5. if the node is a wall, continue to 3. +6. add the neighbours of the node to the nodes to visit + +Try out what changes when you replace the stack by a queue. + +*Translated with* `www.DeepL.com `__ diff --git a/challenges/sorting.md b/challenges/sorting.rst similarity index 52% rename from challenges/sorting.md rename to challenges/sorting.rst index 66f931c..8685bd6 100644 --- a/challenges/sorting.md +++ b/challenges/sorting.rst @@ -1,47 +1,57 @@ - -# Sorting Algorithms +Sorting Algorithms +================== **🎯 Try several sorting algorithms.** -Sorting algorithms are among the most fundamental algorithms of all. In this exercise, you will gain a basic understanding of some of these algorithms. +Sorting algorithms are among the most fundamental algorithms of all. In +this exercise, you will gain a basic understanding of some of these +algorithms. **This is an offline exercise.** -## Material +Material +-------- -* a deck of 20 playing cards per group (2-3 participants) -* the pseudocode of the 4 algorithms -* a stopwatch -* paper to write down the time +- a deck of 20 playing cards per group (2-3 participants) +- the pseudocode of the 4 algorithms +- a stopwatch +- paper to write down the time -## Instructions +Instructions +------------ -* read the algorithm description carefully -* shuffle the deck of cards -* start the stopwatch -* execute one of the algorithms -* stop the clock as soon as all the cards are sorted +- read the algorithm description carefully +- shuffle the deck of cards +- start the stopwatch +- execute one of the algorithms +- stop the clock as soon as all the cards are sorted -### Selection Sort +Selection Sort +~~~~~~~~~~~~~~ 1. lay the cards in a row in front of you 2. take the card with the smallest number and put it on the target pile 3. repeat step 2 until all cards are sorted -### Insertion Sort +Insertion Sort +~~~~~~~~~~~~~~ 1. take a card from the pile and lay it out in front of you -2. if there are already cards there, insert the new card in the correct position +2. if there are already cards there, insert the new card in the correct + position 3. repeat steps 1 and 2 until all cards are sorted -### Bubblesort +Bubblesort +~~~~~~~~~~ 1. lay out all cards in a row in front of you 2. go through the cards from left to right -3. if there is a smaller card to the right of a larger one, swap both cards +3. if there is a smaller card to the right of a larger one, swap both + cards 4. repeat steps 2 and 3 until nothing changes in one pass -### Mergesort +Mergesort +~~~~~~~~~ 1. divide the deck of cards into two equal piles 2. sort each pile according to the mergesort method @@ -49,12 +59,11 @@ Sorting algorithms are among the most fundamental algorithms of all. In this exe 4. place the smaller card from one of the piles on the target pile 5. Repeat step 4 until all cards are sorted. +Optionale Goals +--------------- -## Optionale Goals - -* repeat the exercise with a small (10) and a large (20) deck of cards -* implement one of the algorithms -* measure the runtime with `%timeit`. - +- repeat the exercise with a small (10) and a large (20) deck of cards +- implement one of the algorithms +- measure the runtime with ``%timeit``. -*Translated with [www.DeepL.com](www.DeepL.com/Translator)* +*Translated with* `www.DeepL.com `__ diff --git a/challenges/tennis.rst b/challenges/tennis.rst index a590e74..0ccea64 100644 --- a/challenges/tennis.rst +++ b/challenges/tennis.rst @@ -32,4 +32,4 @@ Use the following structure: 4. If both players have at least three points, the score with equal points is *"deuce"*. 5. If both players have at least three points, the score will be *"Advantage Player 1"* or *"Advantage Player 2"* depending on which player has more points. -*Translated with `www.DeepL.com `__ * +*Translated with* `www.DeepL.com `__ diff --git a/challenges/tsp.md b/challenges/tsp.md deleted file mode 100644 index 2402444..0000000 --- a/challenges/tsp.md +++ /dev/null @@ -1,35 +0,0 @@ - -# Traveling Salesman - -**🎯 Implement a Solution for the Traveling Salesman Problem** - -A traveling salesman would like to visit N cities and cover as short a distance as possible. - -Write a program that *visits* all cities with the following coordinates: - - import random - - N = 10 - random.seed(42) - x = [random.randint(1, 100) for i in range(N)] - y = [random.randint(1, 100) for i in range(N)] - -A solution could look like this: - - 7 5 2 8 6 1 0 3 9 4 - - total distance traveled: 123.45 - - -## Tasks - -* Implement a random solution first. -* Try a *brute force* solution that tries out all the options. -* Why isn't this solution always the best? -* Measure the runtime for different values of *N*. -* Write a *heuristic solution*. -* Research the traveling salesman problem. -* Research what a **NP-complete problem** is. - - -*Translated with [www.DeepL.com](www.DeepL.com/Translator)* diff --git a/challenges/tsp.rst b/challenges/tsp.rst new file mode 100644 index 0000000..b30c14a --- /dev/null +++ b/challenges/tsp.rst @@ -0,0 +1,39 @@ +Traveling Salesman +================== + +**🎯 Implement a Solution for the Traveling Salesman Problem** + +A traveling salesman would like to visit N cities and cover as short a +distance as possible. + +Write a program that *visits* all cities with the following coordinates: + +.. code:: python3 + + import random + + N = 10 + random.seed(42) + x = [random.randint(1, 100) for i in range(N)] + y = [random.randint(1, 100) for i in range(N)] + +A solution could look like this: + +:: + + 7 5 2 8 6 1 0 3 9 4 + + total distance traveled: 123.45 + +Tasks +----- + +- Implement a random solution first. +- Try a *brute force* solution that tries out all the options. +- Why isn’t this solution always the best? +- Measure the runtime for different values of *N*. +- Write a *heuristic solution*. +- Research the traveling salesman problem. +- Research what a **NP-complete problem** is. + +*Translated with* `www.DeepL.com `__ diff --git a/classes/class_diagram.md b/classes/class_diagram.md index a208c33..05ef9c6 100644 --- a/classes/class_diagram.md +++ b/classes/class_diagram.md @@ -11,7 +11,7 @@ Class diagrams are a graphical tool to structure your data and check whether it Here is a class diagram for a `PlayingField` class, the box in which a snake will move: -![class diagram for the PlayingField](images/class_playing_field.png) +![class diagram for the PlayingField](class_playing_field.png) On top, the class diagram contains a **title**, the name of the class in `SnakeCase` notation. @@ -87,7 +87,7 @@ Although our class does nothing yet, it helps to think about your desing and wri Usually, there is more than one way to design a class. Consider this alternative design for `PlayingField`: -![alternative PlayingField class](images/class_playing_field_alt.png) +![alternative PlayingField class](class_playing_field_alt.png) There are a few differences: @@ -139,9 +139,10 @@ Class diagrams are conceptually very close to Entity-Relationship (ER) diagrams Turn the class diagram of the Snake class into skeleton code. Leave all methods empty. -![Snake class diagram](images/class_snake.png) +![Snake class diagram](class_snake.png) ---- + ## Further Reading The class diagrams in this article were designed with the online tool [Creately](https://app.creately.com). diff --git a/classes/class_playing_field.png b/classes/class_playing_field.png new file mode 100644 index 0000000000000000000000000000000000000000..c01618067b6aff52bf23be3965f5c192b3c7684c GIT binary patch literal 45545 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 ZzD~2FHM8o_#cTwA?k?U(I9~;3{09VmyzT%1 literal 0 HcmV?d00001 diff --git a/classes/class_playing_field_alt.png b/classes/class_playing_field_alt.png new file mode 100644 index 0000000000000000000000000000000000000000..6723091d9733a27e14393afe6308238c22353375 GIT binary patch literal 44509 zcmc%vbySsY^frnT0wPGaN+}^CAV`RGNl8gaNSBDTbST{*jkKhMw19MjbV+xEboZI- z{e9m#d+c$>-uwJ@215rtEY^CS`=0ZfSKI*#ab0cayCo3arBggl~NJx$o1qmkh_g{p2-z*Zj z+;X(NKX!7A?s9pBGM!;cXJ*{;_1l|#Pbot3uZ-WWJZ@aNZ+5eZKD?IAT!|@NmNzdx z>*XF1xGuXWEZw`lI88CWI@qY*G%j1MNbYMealA}DT=h!YTpvYcwXNK{{{5pb<@Egi z+L_mC4VS60Tm1}6#OAg2bnB|nN5Q(zf|v@K2Yp{w4%(`tR%cIt=ePS^&(>5c6b(wt z64lH$qPg4@gc0AmI!Zf;KjpqPZ6dnp;%ikP z80P%tLhgGHgC6&!xLa-Ba^b?Jo--!-0}jXG@4W2>$FU&_~Kewd3b%)Z!4Xi&MXY>o%Ez;OWL`t%cmz9+`e`F?$ zhQ3%%lp*OjB9LbOv7{vZwBV4!EdR%fhFL+u@rouA>YJ{DvI&jN>4aXfq+;F^ho9Jj zP5uu<`2OUihX`P%kehsSicvR7a62O=VJqHe%KQ22+}_xW=;e0V0ZaAvuM3*Lay)w( zk@7E&%7%1mj}JGp3+s2kxj6Ue$gkJ!Z*cykQ2E@BCubG0#KE_c-n=MINu65jYMd7| z&}F+H|1mj3GFhDdtc{r=Y`&>7Nxr@Id^>j4eTh4ABkXeJX6ePl(JRtqj>_%Q*}B~c zrKE&WgD~c(*B_}b?&emqt!Kvfoc#E~3!d}VYgE&P3K_tN~`r}FloALti;JTbY2L72*R zDgup$Vbw~%B6EMAjXO^*V9XChbwBmu*RaTK91GCVp+Y70yU(vf^^iv`!J;BsCz&u* zK}*Kg@@Kp}sjZfKiQ-oMQ`+B$$QB$M>$dp>=Grde73ufVRacLBXy{B|Ya}sFzQ>6* zd1A6exZ0?e7gH*~^F>B9HWjasRG3!(SbMTKN%SW^8GpBG`*`M=&ELJcQ1Z90Hfp2n zq+bmAuxYP2zMSh~UU5xcde(Zf7};dKQ(WPjpS&yR6hH0gucz`rKJa(UC#lA)peXN1 zB?d#2-)fljSsz(qNbbw<3vB!*=lT0p;YIb-B<&38=;D+~VKEBsvtL661}A@7uUBYe zC72z?S9*R6T44K+*`7x?t(g>w2i^OTVVJ2}VlpRi>C76hGs<=$9Y1_tzEC~YmmnQ= zqB`r+6ihmM-8ikG_<-}E8J##TUChRf(0T@ zl133TBZNNTbIUp!-8G!*>r~9>68KyF)9Y?`5-eTQ>n0-p=A-7iMQu9Z9Oy-m)%_aJ z_K*2EN+U=bUrwO;M0y21L$kl@$8W;Bvz05Z%f9V=E7Maqv{Kz14`&!UuP+`wvzb1T z8myO&*i(s!bJ)BlmC_fex}>5HaGD#z@Cy?Y_nIttYaiNsBKb6l9P5qP?88M=G868g zrcLfOc^|YAna$y!r4C!lJNPGu20t4f2AI|_BcJQ48%pshiSnbqJ6$R z@ivDY**{Os!7pBPj~bM-8>up3D0^_s(06C3ka>gJ?}dL})|M1`Gn8{Hu*;h+4vUVqlnaxLczEnj!V7vWO&CjuT9w3{8<@;6WHPM|V(%vu4y*4bCDYj&l;Y3;=FtCM5 z9FE;5Y)a4WE~?KI7;WRIqrAWKQ%VhQ=jXppp3LHvUs&I5{W(!b_0n|p3-G9@?nU9M zk}@by%vHrx1W^9%K9@gJc+()LJM^B8GT~y)`tES_m}d6GVQSWG*9XcI8N+B?aqDP) zy8{z(u=A2R@;XuSzvXUTk?(&-6lL;C=N#>?${<>Uk)jmSt%6w1i)=R{ibE-lsNd42 zk-_2C^3Ug})hyMEayF*;9i_`AUQan?1iMGrNTMd+eRpCuCQkSG9BJHZ>KjYi&tKwJ zQz#QS?xP0y{UNwZ0bh7L(T2V0KgP9+YE0T53 zAZsah8CR-2{`lkp!R2TL-&YJ7@%|>YUp91~F!*mbzVyEH7yGFbYNq;|2n*VY#4*h$ zOg2nr>2yMdBQ2rQZxYg@J_`yJZXXB4$a)liX}tZw$R{wK8a*OmAo5&Ix#7dEkU)FL z6}lCs()Y7{OuW$BA@`gX8`Sr?OmnA|3cNN(jOLRE?#$wu0U8J%vUu}d}8^vPuF?p*f^K81zM0PZ_KC#4E_q<+ORzAOCo z+;VH;HkNMY<-XhL(bJc1Crf@9J%aB0&0Z^1f@kx>2L}uceBm~JJI?gle+0AyD)3{@ zp9QSZ9o1rOZv5o8N*2gFackCTm;nf0M+NE4yf; zHmUf7!=JcxJ-CD z_>n{+S1;)?wOAPcGqi{)VU3p7FLk=qSkH2ru^-9ej_bt*R!pGRJ)UaewRSPMu1Hy7 z;9l|P=*`Ff>t4kpz2Z(lnrGLNp(2CIf#(~ijbG@ z#fKQZ1Ph^oIigDUxi3}8h_SIq9|q!lr%&Jhg~s(*zEN;33e^I0kPA!P>D^t;XnSlT zCG&CNb~a_2l-pW=3#ISrMg8c_l6cIA+w?bI!N7!U$@3}N%j%TK4PSr#r^v%T64-HS zzr7?JN;XWImUV+u$E~|!!2=Jh_>TE zYL8KD4l_3~h}YKFtdnMx;1Y#^O<~fu5m%VABqS$`lG3Ok!JKNE>bT#A7wI`uXO)N% zs(BpBC%Sp+YV@D4{dMl(skeviC7Cd*x%t^~)Qvx2d7Tr^a!Zo#!INJ!5@Wm#=vlgs zHE-O=qiC!wPM!N`R7r8^sxvVot6s$g&QIE3uBI@(+IFbqA9R+LKAWiP>tdwu6XAOFCl)FXH!x=I)Bc_&*YcgU z7HnN2zkbOyrEky3m_0rtb`wyr(ZG_XAtBl?_4@t2tYNVQ`6eTtmOooXxBh7s;ArRJ z6y`o$>gey0R<`vwmx+5RRNL^pnPxOQ;6tg|BMQb_F)s3*A2c|Rc!a(S?V*xV2c*3t z!j;^}6*y8yS{vpi#uxeZgI2MdJDe>e;d~M6D29phP=C5s?bKwl4*#!$o5(yLtw5yj z8^d@kB1~y6B>e3cTt3P|gK-2*mWu7(^@G%E0S^A&^k%%WIborf3GxSfO}GN}!FHlK zCer7Y8@E)Pdok0*`%^;ohaclF`98IBsb8gf8mFdu@abZeBkwG5DBK|{_-QBZ27zV^ zW*YYhHh=Hqd~t*DToa4HYie;{~_ zoiuE!NdqyeZ73756!ii=UDQ?##AqahhSZWl?+A1TC>4=A$ri>_(Vh+cksf?77w#_l zsu5YAcD+S5F*5N4f1ClwJLJ2czv5iP$O{78XNj2Y{I!X9#_V%+O?fvuWAt>Bo-Mq8 zNo#)Y`1!M6hiqWNT&Q!pAIdQ9#4Dv986jl(s+Vg?Qw@-(iakwKzwGt==aVU^=s|$q?C`YFDXlFEd$;R*H2$BUaI{{VqK&EM zH|mP2@xL;^OWyWIGEp3*qa{}@z_Y{XqcLSvc!Ae?jNax`n_zfNS-AIJyY4KZuj^>I z(J_L*nD;<+{xY*6AXs{vousw@GS_#nC>DKd_5&yBo%d5uG70zAi=T2Py#t>3#dVZ3yzp%yGA{Z}W9e+AU;C>zwyu5ri>pCL#nFRO_F| z(WU9wF}lq>BjjH1i)A1YGUGXlWN~s(G~-YG5)yy>esD=iN;iJ^cC@6=sRh1VE0dt? zr9Rey8FtGZ#!BQmN&Kc}gWPqcFT)#;xC4x9|2$_p?@o7<@iKm$cf6d~T(q7~!l0*$ zb9*wJUhuhNSCm^lyF721Br@sa(+3)_ed<;hGbC=c+wsJ{bm^~}VtKQDn>YrGL6{z+ z|GZ3ta+}TLxcyZg(%Y!Fj>s==>mhw`b{H}2_h&~5VbSo|8%84FpoKTj~%N z`+T@~7b`E6I#XkK50#GWA8F$)Hy(G!`>DVi@y zy-cwW-0{3^h<`gjcTkg2w#5BPsQi&FEj8k6%WQ<=l72#}2GQ9;lyn~jg2mu z2Yp6SWs(+kf>BT7$AkcR;_hUBK*mWrwTbh1o`VhnT@F1lN3g6a$yimda@55~4?UJm~Prxlpm3(pRG1S&?P7LoZ^EuHiuBC zPH%fEKN5NJl}B-&%-K50=VxXtKE_O#H)%Pph(Cv&WI(#PB)SB9ntOrRG+F%Z8RDSr z`$Rs{uCKPyu;uV-5Qr5uwlemS8^?u?5zGuC zzj=JyXw9=(1Yc29?}vg$`Qu2H^w1*FZ|V%9A6GVu@Ws5-&nu%*#gc0j4`gZX(@l%c zVBhL8WwWT5Goi3^?p%v6!K0=YD~`{;Lrv|kYeuF%`l?CtlR27TIqF?qrg^MGWpgb(^kA&svm;X1uvbai6(KF{HGMcP^}?11E%VE-bf#5{ z32e==KX+0|Uhm*|avN%Gb^MYpP`MS78~fyInDfckZ&frnX_eX}dK?Ky1E-#ciahAG z7?SoV?CsOq?ith@AEQDvNxPClN17gE(!XpzFjPX(!k0IUtqh~cWs8b#t*q_klYCvw zy!lxzdq$G#T_NhiUC$poLGHh#@APcgvST$KeT!4#A3hb{5Mhsv<^A&@MEilFY?>$T zmih?Yi>Q?`hXdP}7JcZML4SgiQtxEzNxjmDd?-Yp>+tzXlMSQ2sEELSfcqWc!Rm2m z-*1K$g9|Y^Chv2Z1F_o3z1KS#^*?M@xO*aTv}p6M%!HmJy%{gfO^BY#P(a4?_Leio zGe8rYujQu6?ll7-dq^GJW{0^M6lu1NHXj;|G6}Ra>cOh}cXMDF& zN>gx^>hzEC4I5n`y6JBxm&qN;Ql#)#Oz-VA_+Zv-l8<)t(sv@pGAwL?EdG}AZ+?u1 z`1Jr3HpV+24!amHRR(%8_RMRGvrS*2Qh(8iCdH-FV~~5dF}bLBrcSAL5pkrP^r~4n za-yIblk3y3-w(gz3uDX|M1RIE_^xkU?jzAOpb1>Pqk}IsmbeeTU3$L>YfwQyN4#XpNQ?p+(rwzHWeMHc7Luq$1kyNydEwR{6|g%O+1NBB~NbW8?L zrAj42mba#U^bQmj7J0mJuSkw{UdHR;FJ4JVjk>f??JN%Z}{Iyc5p60I}W$P!KP8N+d|AcKW)87@ieHg!> z+-xpco+Nf7eX#TIyl8_VeSz|?q5Jqz&o^!ReVXS#RSFf4HaT~C%-pF81##65E*!6% zD!FN}Rnb(g>7NwzY}cwizjGO0{Mio7fuQ)-}Ik>gBg)jAflBrK@o_%CuTmeBHB1 z>EI#0cTEt)n5tcjY@NnEUxz~Ds&f^T*Y7Gx+{#2@h-o+HB$uVbG-!F!C>QI4b@dIe z$z`_iGco%EzSBnDv#;m>rYw68y3d>}2U-PnhV+io4G4DTiEP}O|0Q=HJQH?z2%DiF ze%e7^TcoKI6GC_NB(`$nz4XBlx5{-Sw|d?6qf38^gPV;@3ob4Bn?gv9yxxn7DoBZn z{_mg&;-N&hul$nDLibyB-pGhE;TYrLcPbxv5eF*J4Bsi>jng_udrc8RMEa_+ zd~U8?f26ThT@6D`81E9v+RjGF?kmAfERjZwv(;3X!wIFs4pN%7@$YF)oHbvAOakl2 zk?*3L3UBL?>G|Uk87J75B#O1~eF{U;+0p0AJE#(TRTxuBju-B4694{1%e|JNgwRf> zl(&ZB;tvHFC`;EoTf(%|+}szncHhp$e~*^yAq;9!N(&j`G8UI%NTv-n`z?GX(qWz^%cPby*4_J@7+Jr2zmab{uPTf{0+3cg-s1?Z2tl**`f=BN%Y*{hUoq8mDj zKi{!qOs2ZTb$9r%%D`}$A$k9HZRK|RZM+#Y3eM3h0sHATOgvZgpTRNpN*KlhQibJZ zYxw;YceS)Co`1rvoI*xVmTgtydo1~;WA)1k$9WcWzX#S~{#h;OiS;>B#*e(EyH-}W zgGm@&YMZO8CtWU1WJ~L*a6@c7F6a$CAihJ_mw6?I)P(p78J)L>E0|W2>b6KoScHgw z$VlH3$>1V}oz!b_j1@FW3?hR3iq|ekNYqGDV#3Of6aS_i>{L`1j`w!9)0W+McN5R7{490`rOM$$}pWN4+Mu&iaa<*=FK|jAB_-Yzi*3>9dg)&b?SbuOY*h zkj;9ch7;EA)oyz}7T2@#y^2YnPQxa1E}dc< z$6Ct!I1K1s$U&`tqIsWdv+^Y2)M)Q`^nQKfWUf^?Z6Qm~VO+W%7~Q;eJZJOb8AZrj z<``JV|Gg+!dR9DIGk>NUJUvlrW`^>flVN-N_-K8NEGjC(i|yLFc)`esmp7uZzRbwV znq5}beNx(EOvA>u7O33T)I>YmCz1Z8zrSC)-run{yAMBXwLaTOQnG{i%#)FYrE%Ws z)E(#cZhK!};b7Oi6%SlH+tEQc=AfZzR9nK5K2rPd>qJC(qrz+2;^gC;JcFTA)m5N! zM~a7V(sfDBr415sU8>y9LlYl2Whb4OV_W)}KR27hE^VYv%Qu`W1-odUGXGfrGO#@_ zF|KPAxPPdE+JuAq`va!1%GO!(Eohc$vt-F7>)#vLNUVZPD9>B%AX_7 zM%$5BJI9*LD^K=YKmA&?qT6Oo`Iw}(aQ}sy&ZKK=m-TsKj-v%dh(xf&5HX|QM&W;7 zJ7|UyT~p9t1mNT+PlvooLZ!Q_W8nf^N<=Nqn){ z0c-Lt?IYJc`l0CcqGkK);>ia$XM^nTidiuVM}wv7nU6QTm zpuj+@s;O+&YeYTA-q3xBo``@V-*v9#oq&&tcD=fKtcz5s#q!U-y_}eR$|5YZOiRtU zJ5KoK`s(a-G3<$vn~wV#9WMVNUW(iC_>TK*_czX`gRSvWzf74}rEIyRF73ANZrLokq(A%1 zUFx;YobRgb=^j1GP&)4W`L3Fb*N$;~e0(+Or}bi6@Pn5z9UYQwA@|zhCeQZTsib6O zAF;9RdX8!;C^W!314!JAe4*jsi1fI*n0@|nf+)7jXT)p-lVy}IZ$!k&$thDO@(HJ5 zT#s?E1mWB;er#S~`yvfLf70Qh-R0$_D=B^9sEo5S?>%k{!#`1vgYUnHm~ZwY#KTiq zH^RomgzZBS6co%=D|A;R-3l_Qn0(=U$f&Nae(TmPUH151-gkO>G%T?}ySr9RO-;Ke zCk*uT=pG&(NrtqsXXl%%tE-!&@3|75C9rzjVpBWz{U+<2D*jWOD6BLHpXJBltwHJE441oF%xvUQka@4+%gP zpO8>=^4G_Jz`%uqiW&XZKw`UpV_z#PE2UXAm6eGcraz4mPjaJseOX&GH5<;^3mR%` zYa_UKFON`qi6SeUX8&H%xcQXJPOWSbZ*)`?QAufO-#w@@Zp{h{BY5LP9&41yPBAa^ zyK5tPq%<@%Fb!f@-u;2?gKf)j*qJeT*NfQmQscW1UfM79zT7#yay{tb9;)~7KnkVg z|C62KE^TM`{AAWc(B)*?=<59FzM%X4gdT~mn5R_-y)XMrd5;|V@--_$5l@?tAfu~G z9YVqR-RWTEEi(x=I%-;4nzyg7_OQSORQq`O2hxgZ`+NM(hdH~|`};P33pCrI#5(%= z7}(gtS9%hLpd_(=mzP*CO8hb(7m<_0fj207KZKtBrs9J*K-*9DFJHdE0K4I1vftj* zy@Q42bTp!-US&hKzP?UGOnjz+q*|!mb8|I&qnIg8ESJRFn)t%@ZMhjSd}xDyaU#BQ zTQGSuR8-Yo+dbs58YhlO26^NDRN=aC>-{CEmF{@25wpyin#6bx6D4J3F(;=NQ2k;O z5+#zn*}xdf1ZfFdX?fZ z4%O>%wW;HJI`5Z}nK^IA>vkph?fLufkt!JxYZ5sfmJN%0R;Rmqfq{Yk!NGi%*xr_4CkqZ)w-M{A3f^}xyQYKbuvpx zO8Tn8V%ohp_@(_n-G5`n*c8wG3+v7Uk2Xg+-VZ*4TXlrLe_QWfYdIkvMDh%-X|a%E zk+K*<8Ms~@jXt8MFZnph75d<18~@2vGu8F3->jV=Z<3tv-Ft2S#!G*^tL8$W+pPP= z)6LPs?2nVbTn`6c1ygWtkiKG08G%8y^}y)TwuO zgXM&qGgu$Ygii^C7PW;(K-?s~T%u%OGQZn{N446lJM}jL^pOGXSLbKv{)u7D^Sawp zRb?M1|DKGe3VXdRF~kfaWi{SgXtmoI#{6v574tPIsVD038`IIB50FOk)K*(bbqt|f ziHL~UO#4$gEZzY-JKmY~kjTSI-0m8LH#s;qy@7i@J>M++pfAiH1jg8r1g< zm;?j_Ytz--RIa;)j+aZ>cHnR9}{}}mh5E4Wv7tkM!rJD{U<;HvqqVJ zvmfq-z!N5>ro}ylJk^3bL#hQD#6hhhQc{>cK0YSi!GnWJvyt34d5Y;0`R}Ta6DxRO zkMh(CvvP9$F{oVes;7H9BN?8^4gpFEoX(-z@65RMh8KU@R2>`~^!NAIUF%OXxfGzM zm-t^#h}ea}3@O=f&w>Ac?lh!jWb_{!d%InK<9@v#Tc3Ea*Ha3mLi6NFP(%blU{H{o zaGOO1YJZKB?L>uT-*@q#I1Uq>o^PDZrq4@E2Wa;X4xHw`U{ucg-eY;604?e^zryfo z^KYwhX|aCmoo}2Ud`HY$H;+o34veLxrTxRg7-(r1f{oOfNq*a{+x(?gtabhb^Qc!n z6o4x9{tM5pWqqivOTaM`S=+-k#Y8yNk*sB_1Mr{_OIg zPrcrq|HqFX-rn9t#yu2#l(;uLH&^wu=9BK%+G)tB=(|UwIvhrSh+qwVXjZUPRaLp} zwUUyBNF;k)pOwxK6px$polM!Tnj7&@We){RZnbS54c56`*!nW$jYx0)E$F*9bswi) zT{PUE(a`_WB3_oB_tS=*6zK_6`rbxfVZ_(3!UrooZf-pA{A4^6$Fw*#irYUr0ufB2?J0f zeSjNpe3|U^uzs-u;DR~Vy{=f+`n7Pyax)buhCb(NaWSS?N6Qmws`7m95DPEC4KyE9pR2 z%$A{$Z5ea;8Sc{rB=J@P@*g{W~z} z^WPSGetr0A!HNgW0O$yXLT&!*({@3nQsW)~JVW+pa33(K5Jlm3en`X1`>mlth=SXq zd-%s2Lz=r@jLdp}T61CY&UW<a^*yv3;C)zVWvJE785|S6Nxq@UZgr z<*FcJi<9|X5J;5+ivuH=NiO?9%`a5g3w_}Cr%evZv%5GrE19v{3vkmbP&!Mis|H*N zKQzjjV3ucDO#iN%?^|40a9oa7v#Qb}mQW7~30W>5)n5Ery-oY@A*xrS5VUFK*-8RX zP5p(I0BA;NzE3tmS`rBJrJ$P_XVx`%hg}94p{D{Km~AlnU!p*1`r|)*3#DvXvxj~% z?J#S!d3d&-ow9#Yf0OibyVA=6YCL$>rB-{Q?0s_pA;T$vBQVQhWP+;hb7q<4x1H;; z7e^tui=9~mYT{KR45CX+;gONeK*>y}DxZCvD629@MwP?;Mod7^WRl|61~AUVcVx3M z{8-y@9xWmwqH;Ye!E_`y8Yk30G14N|UkeR(EpXZbK_==ZNn>R$j<=kER5-0?#sXAP z1DR@RZBu^EAK4UvD^Kle76i)dzg*mNL=^S(?@#ISDFV?Yy|1X;qJW5U zSkCal2X^%Ifc9xQv53*Gbv`>6_eX%FR%WooqPotJdsR8Kt%#or{#UH)>p_uP1Cgb>6fYPO|s4%!j@C#duO)$ic3TO9@e(p;x$-m<^A)>%6& z;;2^sPca**YH0XQZzDArmlEJvoz3zq|EQ1wlGB^=-& zt9{-|>$pVKOvZO;J$KhuE7ixMT;x+5jNHU_&nT@sNy)SS&avifs){rUM&&x#5?&LF zN`yzJg?zU={_jQmWu7v3$c;-et7{ib=!cfWkfNQdTg=Kgj`|Ujw%e>+^;C4$oXen8 zo%O=`NjY7!E}Je_0^jO-_>zT054Gw3{Yi?CUnQWdTDe;wU#$ht z{QuCP`2XT*EIKTJU6^jaH8Ew|#}D*IhjcPAI=b~W_p}&5*%&kn9c$mZ-GUvj$_Ioi zvbZX6b@+yzogE1o@mFZR$8+ z@UXCKbF266Ew;l*QVc=(7hB)fBENq9+9<7|45{!%9qDd|O)dYLKy zQ;o7znOK&(J{U?8k@T+-IMRE@`r^enckSfXN*8PW(iaTMR8VAPrURb9&B86~uShB; z-5QtWUcb(SDo5~mo8>=u>JOZ2VKDd__k7#yco=2{+!0CJaRNL{(uaA?1If@U@kGHyDT)7TeO#TXiDeqUk{Tr)rv}-U^ z=6!!EGWV2K^C#O$DR5wiVuIgf%MGNz!Uf_i4;m8|@ZWTGY)=9=f?>cth?|-+wzjsy zpf3~27LV-oZq;vu;(Kc>EQ}123=sYM_wPuc9ap2(wDkaikcM*h#h^T6sIIS@^nlvFqQ;>eJGml-lUgO($ch?oY6ntWV6FmpKaYU_r)e} zf?vF_n)|#n3mdvNkdDxYHJAHcV&dY8+Szb-8q)?IAB1dS;- zl=T{M`(se%Xt6hd()2*I?%v}n(rrZfXa5pJ<*1HF5@Ydyd!1eJ^plZ z_F4i6)~hhe<=y$_TyT?Y27aDT(m@yLZcUWC9*>(S|4{M)W`M8{u+f{*o&vP)!|dBD z^tcKFMakiMY6T4M%TN*}$Y*JIFa&J?B|yB=)78}s@&afy7E67jZYp35-+sr#n(OmT z&@}305WtJa+JYJYXe|T+J&*;NdV=Pl#^TW zA=Pd$%^yQrvf}CJ?WGqGxc>f&29_CQMA7>pdZ6mBz~JcPJHUpUtE0UbHY?Y!nA~&Z z`)_5ge1oA^_OCB?fE-akOSVG&c0qk2=&eCp@ZR+PDIM@m184w*djOT9R!O|~W^8RJ z8yBR4poz}ygdY2W$$9%~>ng3Nm>85@VDV-RPvFUN-w}ot0n1Fnpmh8k{X{JyDyjuK ztFxnH4q=9k{(QHZbduf9&LA7t01UAMiav*3X&|?E_{83` ztodq^?Bol6Akywif@O)v&Gnt3m-lgikFq$sk-B}qTqXHBx~Z}YNWS^d(Dml(1Yxcb zqtEc#t>FQ*0YnhqyXVsD1b5MUy0`ekY5$SDz}cfD-cP)ncE!cTQ%g-^DKaS6dU0hro(E^}W&JWi`3$<%u_l*G)iFtKVte13%b8M$C*3*9L%{_k(Q+6biu@LBKw@oJj;U z22*mp*Z?CwJ|4jTF8EM8o__>^2!pDUNfB^c8!yc+q-u+MW`GbRH`gci|I3<0!ln{P zgf@^%=92=^%KAP(7;7L^7**fE0P%hR%#e|M1u|LVbih=AjhLm@+LV2klfwdl62`rW zoiMylp)Wu=AT}NB2wUK=DWx37;1Gl71)d2~`anlZ0AXJoJvH@bm_?}BuU1{R%10{! z&D8 zYwY;?&{dfr-XqqhB)n4_|v6+|Jsj}u$L&b_;CIW+#&!P#_&O9eH4Y<_SCX9L6t6VvyM zj9Vb_8+Cyn;**f5>iO@0IbvgL3%XjlQ2RkxyQrL8=+67l((U_R^T8FdG11YA%F5o; z76591MVPm5Q}ghgdissCJbg;{Lf7pVekOG2@emygX$CD z-?2PkqR!MVEvNJHqRns5aA*yy?wW*zMCFwE(W6_XXZv-O-<34k!JM#6iNHn|5fO1O z?i65SD{4X;FnxY5@w*1^`ue(l%ySMAnr*Enwdoh*;o%7tXq5L>|Ge4qcTV%NPWpJZ zs_6?p13mppetqe8jw3)6Dw$ z$xa_2(5Gr)7}gy}73@Ddqbb#Te9Ov+8bm;_)x71251l-2 z_w^Flm;V6FeBSnvPp!jiL5oi^8VNKXnhD+tKRrS$a|J{`=2122e( zjC?;7xxgR z6$A{g%*=AlLjCUR4zTPo zBV)s|jb6D1_%{qpOn1`v4j-f;V2+)gEurVRX+IK=8`kntXXI*a2*N|Syt;A|ge)jB zGE!7sog4`n85z8HLLwr&#^v5We-;3Y5pF}C>Qfzc4;F6j*x+DnV4JQ_@!p{UX4rR!BW5@ClBZ}M41Ch z2X+&{BxGSP5I&!uAF2X)jqvu$kx*C@SmZcsBVtn^JO=FX2>lO?W&s$WY$DHB*qqCa5{IpcXvlZICMI@+A@`|mD-i<8 z7-sdRyWCSkpe{i#L-AYh&IyBm_`?12RD6d!ti2hSKs!PX!6ZP8Zg{Gvn!niG&h5Z} z2IiRtgcd=Kz|>?j8)gK4hG;*qZO{>lELR+6??>NY*y#oPYJ^|yc)8cUcW}_WZa0{x z#tMNBSHf1}0T)nopkFGd<|o_J-AONF!5N1bOH@b*>BWl|-6?`8K;PJ%4^1hZ*Jz-S z!2E}ajQSZqVy|8B`YX7<*Bd1mw{Ee4vzP3=@fb8Jf^4}}P=db<4@V2B0A!zWK=)Ak zf!?=;QGr#PYS11UTebrwgGlWVHx8_b3>)2|_DB`r1u=#Za}*vC;UI$CVz-#$0mcpd z<_E>M zzwI6)Y%NG9>!@|v$XqLAU=X~mw3A%ao#KN%CDxIRvFd@U3jYtIpA#`Rv`V5fPrP`twlnq|lfq z-jNFn3qcfuw9lVMA?*3TnwG^7D)8F>^Y1ZU1k7QhNK=e{_=$qIX!oWX>9p!;8V1to0CdAo?AVCnA#Ci=Fxu zphoPrD+n+E4=xSLUd{Z*xmJ4wTyXes_=DxM)s$>tCI}lE3VIhIfMV+}eGq&Y+P3wi za=8lPWzYJnElb#1gbfT#TxFj10#q0x%(z^nA{TVOMEkUT$%#my{ubOrkh}3x6Wsav zdBiCPc>Msla4JyCseTggHG9#>OhGa)i1iuEtMo3B73*<{uTAFvKCNncL_#SsC z7z7-q{nRk5JtSnr4GkXw6g-6X21zhmbBVyV52HU}AtB^yfeaM%L@IcNq$9llo&K;U z2e3f64u~#sM7*f%D! zZ!6904<~)Mi;aOFkvE$2c9()8x<(`Yt0YDzyIiUH%FfpL`SnG5HQk1q6feRJLuf&RDZT|k6u1G7#thOW*NA+j`N3F+uCe) zYESe_$H_o{Q@I`D11E=CfuTnB(w-Tfsx~KE#vS5DRG6f%fQy0l&w|P~ag%)xZw^Au z77W^A@OJ*ZR1B7Ym23l76jqZKCR&&PWS@!mM`&Tok41b(H;q95$|m#0BVu?kwl;=; zG=D}$1y69UYBd>ge#9iH0$gjv-$C*H>FTPwI-U#&2`Sj!$$q8#nw}8OE06-60BiqX zEj@#VJQWLQyer!Xb2$mc9ci ze)O+GI2;9Te&f0wJ5YJpDMb9?n(iM6bfPft_hNRVt}aBp2p}YWq8c6(BLOKUzsvCw ztH&7@5T51GNhy^Z0xKUK=f3}l8QrsId!(`CkkLRq_M~hO9!jIk zR2bmN=cMGaOg{blchiCIXi$&`weqbHPJq(_Y(*x9895bZC*NKR;eUvKyjj*fpF3M?(cBZj;l9{-P> zPFjN<*1ma9cfhP%tH1i!&%hY?+2yZX{{eh5d1uR=1NN=aZC1s(d-LD^=O~L)S2AYJ`VQy!~Vaq#sQ}0j`4swEF zh{&&cU%oRn%_$TVQ&lB-qMF~Zd1M2XnRN6_1GMq%{<$Xk=#unZa=}`xB@NR5Vf5}t zhd>N#;E)O8UoIvzk^0a2<>lj>vw!>bvAJ-ka0;duL#}#dl@c}t& zN6m&PI;6u%K^IIgbut*#;BTUCrnv=yp+G>@+xP z0N^KrA@d(g?cF?zfD8wS9pc0T2!$!I9(j`L!{)pADRF_T(m)1NJ$+q0;Q&m?V5Y_i zQGCqmB}@O=!SMoaym0s{-Ymx7U-`OdAyyOuWqJN1B3P(YFyLUe!kHh<$BQL8TOfYl zLxsUS1$BKH5%URBe1HvEU^8oz6@~Uc{ryGSMtb0ez)b-f)B3Sux((Q!6cBIFDZIby zMc@_?p9rUl5a#w^2|`~>Nd?&F0^_q?}>^b6q8(17pV8Q%Q%De+XAL6tN(1(2p-9f)L!n8O8uM0xHbRe-)FoT8*b*Rz@ zBw;@ghlHT%mzI`_ET(z4>n<#i78Vx~$rF$Tg^z@Al(^CvP6^>ywWWvkyoFHbOqkTg|Pm`hl+*DK9V&O}>)kFp~yNMa;4djA$9`*Cj9|V5-7+ zhPwpb6%P0F?89GXPft&#s8tvct6=OQ{0pR@)~3}Ik6svEHj0xb&nXZQFeq|FfkEC7 z2~=q6_@Avm%JHw!<&xI`CHQ0U*u zLWOcv{+V~a9s%A6f=Yuog6z1K<~LUMo)FOrXZy=_e?y-cv{?bIPIfz12k{Apz6r2g zJD}q*Bsd&*b>YCJWfgP?Iotw*-5^Z#sVObsapOgLsNnV)LLGscA*-0&N-!BOF$$*S z{|3D)5k}bq8xH${xCn>C-W_s*>y!Y8DwV*7K~PRO*MTAgES$p15xdJs4xti`?^rO|7L0v5KIc(e4QeM&<2#B4`4_J;`o`8 z-?<3R9D!AYI0p6qYV1wGdTiTv@4q>TLZ*;1gbXEfl7ti$Qc+S$8c}8vMJZDmk|YUH zX%LdRl1!OGDhd^nN=TwKt>5W>?&n?Kw!XD}-@QHSU8Ju5*L9ueaqP#w@5gZ>+8l5> zDmG^Fne*rOi!FhbOjJAqiStU?n8Kb#P5pwrJ8tEh2N(}qJb3ufuK4y2YQ-PSwsTYLcBi^5s`&IVq@`+9#Xg%oW{I}GU~1U=X2!j{J^ho zZ)8(XU|FGR^i{h#e9`5-u(iVHS9l5f#Ex|#@`JDy{LuDh*pM3adi!33=Nz|(`UP2MCoCG@vSmxvhE$a3wV$80z^lP+Z_C~?{#RweOrbni zoV)RKp~If;BXIq+0<){7HFWWYT-%0ekpg7Sl*XUEs=1WSi}fHkShT6sc(^qadx3Mv z;{#MxcVh!E{~T?r-qQ&YY#Rr0e&sYxZ-#^dh z!4Oqdp-x@BI-$_!{a>dNk`XDbqt42eBQcB$D)LzPq(zsUa9IP!+IX|RsGtoOE_^j; zN?VVS6a^oJaF3r4i3WOit0=E7se^a`7-cKhp#eMB=yaf$bFP3j! zKy4;mD5*Y=N^X~}{j>7GF(Y&k>%_dgYnN``6vZ%H(z28y>g3-1W!0)tdXb&Op8N{C zWDe$v8T6qgRwPPIXg1?N?i z2*w{L1{MVXvC!iuZv1}Ysh#L`h*^&Bbj_RGHY08dFv>nJ)Dpb@;_HX7n9hg$x4Hj}aN?31zw5b^Jt#G`V2JyldD;8e zzXw-F3V)Vis74z~bAqUFn-IsxkAJ(iD@u_q%PQ4*_N-Z=$RuaR{xl997uGT9wc+~p z<2w11q>ZOeP487~ELueJ)<(#{hhE?C?WvGG2(!k#B=piF!Mi4Y3f#O2% z6Lrb2uWuh=SY`43n7r-a(W4Ks7x?l)KR!4h%+M3w&isH?$-Xdki?F(3$U?GppU`J{ z{-s@@;A5lQ^AdyE$Yffwa`E$-{b~Xf^HIcv5zgA9Y!J2DUBt~8%pZkb&6BgV>xYZL zMV+7s#7wxP+gc(nG}KlJm`x;3axd1!zU>8x z+^yRT#9boJ*_T`1621Of%BaqcZ~i**RAgisE@s7jGshZD|EOtC*Gh2y;mMxWqf#Gf zHFin(OO2oWG-w2s@M>TY3>#GA@o!rcnuk&D0Q-Z2gLgbC`LV;BrMe{P_0#KL5H~t0 zYJIL~tnOs53ruqARDVRxs5Pm>O1w5{DGIL| zmU=-LC@UB5jkYJ^-3Je~=UEa>URACaArQTRfK@%Q-`hq5{w%6AB)&y%Dcx9Kg&x28 z7DDN+eftv6&tY*2dJ1U|e(TKb+5tqWhVL1&hzGotLEi=^j^bBMDeX% zr@T!)7oS@K@J1l}cD?B5fGB}hCr+$8mW?D4UgZQRd~nzLpFRg;SvRC`{AH<^b^S7m zpMBVSZ0r1T3VvZi9JTx1`sm%1ag|@Sm>VfB*P@e4*jqnAVPi+%?06NgGJY;?tQv{m!?j z0h8)*Sq&LJ{50W8JT5}(Fzd@KaYTDVcGMBl!Z%fW zAG;US*Po#_&9=6NLvJUmc;`cvQ|a!%za1op18p$ASwZjt1Zbr= zF`#}JwohvM85sMv1}$ZEZ+leoBCuQM196k=;W;lrJQK<~=nxneU0$AUuVH&(A^zuZ zw|uq$x5=l@C|O-xS~`F2r#?kq= zH*V(Y)f$v^%7X{DoA9>Z5|AVWCm-<@M3n@zZU@R0{#rq^lcqsL0(-!&M=waUCT7(i zu7G8}u|X|j>z|>5mKO-Wa(!2{7!Yn*USdCp39SLg`1yUZ+O^&SN)z$$!e$BEQrgzW zkuLR6`~d2Y*vdb$dOqbWut}I}JmGC|4S;e9q2clI$zeNpN{I>v8~W$`+aV4 zt&VGQ7wzpg<#<|i<2MOe*FUYHL{0FqEV+xs?Dbz>O{MB))f0-UaZdb|GI@#GO|?rY z)C~0W+Ddo==}u$lq7)v&jVxiae=>z4OMF1{pS-k%IE_X-JT3~H^tFg+j1lL3X=yth zDkGu)^Ng_1ABI=!N+9KefMMG^J3G_9FbY<>aCOkZgFPpE5P9N@X)+OpBos@*r3-(S zu%R0p8}I1g2mu6HZx4enIwG`wKAXmF5lNKQ&tn2*3JX4v-1ARawBSRbN=%P9KwJq+ z7pOpU!&gIO6@S@&D#UyM18CMd)pH{IDT;N5q}&Hm0wPS@kF&G0pf@2bJ$`*L0GtU` zLpVdQP7W9{M9Le7er(j=J-iqoR`xDs65+9h;JbzY3=r08$&~^NE)Pq40-E_|?fX5V zWTfZD*?B06+^4hA$L+{%Yw?M4G3aH1i$uE(^|;;RBcmX*J5peh6j?Kg2k;Dk-`)=e;HMt6E_pT*2qo$N;XqN7M4R*Mo6kyr8oQ zu(#`pgK*JEetvyhzo8~Z)N!eRSwV~(`UkdC|P&(GFp(zT}QkIpn#sW>c1ojW5AIo(bbF4M^PFI zX1ECxGOcW%1};>{~8q6HzL5|lY! z&WzOy(Tyk=QQdzrj5?4D=r57)-W?P4&cMLb;RA$QE9bY2h-0tn*+pZS<^>BM&at0(k2Q-&;Mbwq6fkJ+a-1 zatu4LZNj4RuQ?Lh#%7qmcz$|=q=7R8-9D4n?*$Ge8LuIE_UYuGIBgkPC%FUGV6L_G z*4$0#j6Rw6r=TltmF3ELd3jOL)AE}-yx_%o+iBO=SI*-8M6oRr9Hso z&Rl-5@tYx6XUyB5GH{z*%h#E8jm7)w$99~cb2h))Q){Ev&!>}rCV%?Z3lOx%ZS}j~ z@danQ3ZLN4>HS5Ha_%IU5bDXm6DO1eTn=62LnI*+2v8%XEPCI*R8|%j6?yZri}5mw z781cH%f~==iMIhx^QO3hBRoZ%rMvPLTKuSW<)*cN{^T~7LJjHfG|pKbb`pp~85l^`|9~#{%q98z z_wPEW?m(!zm%SL|G)93cTaJojCP@XF3iva>qN(ezptK zkxicD-ne>o$*c3W>{3yt+ms!lEn?=vg-0?s8!un6A~Yn*tnK`)>fgU-vS#Q{Y!y_( z4s~C%CIhvY?D_oc{J~hhPUk6F^_wQ%xhB0QXpZ)=TUoMg6e#Eh)qI_7l?%nOUn!CIEEqKAg2Tt8~ z^RXhPCFV^_*lPZD;X z%_EymrIr4Ybqe-cVZ*k~NF4X~TUXURvTL;A|6C}yZ#tz}8I*2!p~-7z*Zk$WTxs4q zi>Cbi{M$}rBpc0>syv@nO>NyPOM6JlEB;O1EbrCw?ytUFAMvYff1Jxv!Y@k)%1y*H{aNY!OYmY8J9o!{5u@E1VgZb2~2&e|_hxTk6LpdD1`U#Qpf7CjvYHD*QLvLFw+SXoMi3$@TeEomYJa0^2<=dr_#PmQMe6t zE3bT^OR|E^mYQz#LAzXjnvu~8ZQ&LOVHI0kPPeeF;XL`8%d4Ebdu}{ub!|IT!rF@5 zj;X1s63OPxn~8?K;d7=Fhg`MgSlP zzr4BDH80U-CVKYr<;y=m5ev>orrfMofF3I4)cyxV!=y^ZvGDNXFJBt;o(6@6*6D4R z!CZ$7F#cdvkDOR)A9~=G0Io1c@K1ji+{;D3tjC8O)83*Wq!kp7C(>F8=6mX@OP3OR z^!4@C3&v|}EB5nh7{yJuOSbG-WZ{^}_ZFkB%*3EA3fm(1uef#nI_%Kh2J*DUE=J$+ z9YXqfP~H%EX@@Y1w8zILb`_nzRADZjBSQ`Sh~lsE^ZQSj@XG!z==1rR**%0U+yV-A zGD3c*-s6^g&pLCPqCvD4gEV^!@fh{sNCTqggslw|FrIElc+ri{4&D27AwAxzs;bt* zQhN33)pLxK97fkxXH6dtZ>D5=hLM2v+JDld-f2yLhPCae;0u*4AgsQDf$e1@ef?XY zCAq$RLEAg=@T)sR<91;Ocsm;Dk;rc&7QvJ0rZuudFR4U&bW|9lLk-GzQ1&l3d24NL z9SG0XYW1}~;CelH#LxwAaZ`>8?|2_ch3X127N1lLp8Z_a;Aa&zY?29^e+`F*I#0jp zgb5RFu2&e;rTx9YzK?#kI-i_8gC<|VXcgsq|8e8G`^sT|UqThY&k3^x@zW$y>wx}1 zpu7$h@8jbyBeXVc$KZ>z$Hzh?ePaf(gH6y2v! zpZ#HBqVthfDqB#8Q~sr)rmEfGF`&m~B;1_gQU0FYtUIuavXYVn^D(yLp?mcr4IC{* ztjo1m7fG7JMBrAqK9!26$0la5^2YVkvXL7+aNr4$pYTjg=+g;FW)E=i6owzH3A!_8 zv_YS0cXIAd3N~Bl=drUsAnq}ZeIICGLJDSzmUFg}VQzxG3j<`72 zfNIca>n^)m!{=?+QQBD2*r}iP-aB`u6FHS8PV7Y<%pg%OAz{JY^dCLCE7goB-qG_y zRRS46(0|mZ&J-UIJ>BCI5(;0{4DuDh2?4Uh$~RZH@mb$PZi<&g652ax_F-?i?IJSY zyZ2srf>0S)ni;2^StRGLT=D8YZ_PFLb?bJ_9YQ(NHeA++2h_Hg+Bkw1Z6pJR4$VBB zT?pe|R8q17<){d_tCG+N8{Zs0v zuAeWFyh+{Cn~2p_#n5}to(_^*&!2ZD_}pgMAE^YJil4W->fVAR9lvTTSs}($_0{Xw zqsER;y#4xhFBGi|nChQj?k!0Ywgr_VbTt$euHG`G?qk;mlo-Rx-3y1`qqM}5wI2i2 z&!0c@G>@M-Gl)l|9P$WV=ChjQZ`_T|!(Q{f&XeL_85wlb(J5X{T2M_pTC{4b)Bk|d zh!Gu`R>c1{e0{S`_asuGT=gN>rAvLDJ)4UqC+NeK6$NYu;tE=G>iR#bGmV8v4Be7& zSxpj=H4_~PlR>j(db$mG1+*o#<942lG|zgxYo{(!t-t^H(GsdgPwyU|zg5eYkF{sA zfh1b4(j)|rgb(dox0Gt#5@SfV!4>lIyNkcKuHEJD-%fl+f|i!YPbqC}?Fo3956v2c z;v)K85Q}8-P{C2QhTLK?w^CD6gU^t$I_KP--fR7VUC@SgMutS9%HB#^-&F25GgWxY zg@Vl%drz3dSfob@PFu$|wnSR>mX^bZ4`-Jic^ZKyKGY~cZ@`KlC-_8Td%4MSpR8`m zr|+Mi58xMkDNO5!Ra!IzL9IQfKNSYD3k9_3`MbNPM`%e_yB;9L+x$+Ez0p7w2y}PA z*sj5;#P+4IBn#mx*xhnnyZT@av?T*zK;QJCZeHE#b909{tk-P~lkq?Tu`oMpnVgin+B>Uxi_8&++Mu}%~Ozr1uC z1h-qI)n#HEyj=8is@B76SFeg5APjpt%a;!qae?-@cv)%b?a|SLsgZY3EN1ZE>GeXW zoM;S{7Fxm{Cio=JDj@T*(d_j^ zKKim^$AO_C9r#buJU(~>{8P|ZLchQjTyC9ZSpP1&bfmT!s!XE-=fjfOx=PWD#axLt zye_bq!}huV#BS5sL*&H-7bRaM{t^1pUN68@`>nsPugFhe)6XzrT9YS-)6h9M6refUYs$HtID1;MVafc3H%Zh)z)hE6?YC?6241=`@~=|(10e= z6BwAGWQ+oyI=i~=!A(8&9%I1Z9(V2k_$0y>hOh@FPHb#-;N;BrFDee4*5#FeJ;?=D2{sLj8= zDE!VOYlDe=DNNw`{D#htT0-;9RnIyN^8Fr^?(~5Zcv61*_Q{U+I2F}Ghui>=TduLC zHVnakf@mECJd1H5t6;J}uho>(rPD&99kCAzAWzZGvN!NFoot{Zl}@R-7sYYZ{M%i1 z_a8mF8|HCT-82BBxQR|0^i*{OenGY!NpOQMMd6Z4vEIiGhb8obp%4^{X(C{5`|Fd_+BIMoMN&&Xx;O5}LN0ip={euO7f*|7?*wCwHAyW92 zzk5}nUs+lC*VcD)Q&+J9&@d$uZg{+__60B3F%JuK2FmS=Hukj*S|a2p=DIT(+zjE>@~Thqxb}|EU$z zh|;YDA|l}koxSXF?Q6#fTh{r`fPfj+*6(Kf92@UUfhAxcz~)`((_jiVU$QlB5JQ(` zVr#;xD@~b_rZ@WfKc#zZ(F9G+Q^Y2^=%&GgVbH?boj#`3t5>gzm{xR~mF-${JNc;7 zyPFf4_Tloz_ScG@_?N5}FBTIhf=WPZGpN-h>TBYj)r}TuROYaG+~9SaZd)u^vnoNq zy+mr=g?ny&Q_9RlN{i{ybE8(rYu&P}Bh??w+1qQ|x0$6inu(c8zVC*M8#T+@t9Se6 zw_RDKIRsr#N=b}4T^6>F~W%%u)@GW%Oo z=inx5a8;60o*OsTt?}l%HyHtKd;Y!Z@22BFt{D5sDDF$$|F;M)w=^qpTYPiiMdNyV z_iKF+ktLcQcZc$Cv7H{-9MG3a_|>erb@hZ}vcn!oB;&$T>kf)yyIlKO(e_6P1$Gfn zHK&VD^|GM-^722vUrO(lsIJv}vwz6HxA{yV;@j1_rb|*UH|?+T%pDjKqh8|KJ!LZ& z84}yJQ;?VufBxM^Mtt-C{QH0Y{x4xc;raL9`TLeyDdjO;hj^s1Y$!*cs16@~2R^QCI(bEj)ofyk{rW&Ad%xUv1)kkfD}ycnK^<6<9n9tz@= zpdC+`7twb7`0>E{BMEsf$0V_&W`UtoR(F`wjare9mt+(FJ^90ue!yf3x~S z)5NNhhuuU`1hF&Tg8sQcu-kxf<8qg$5p0VH(pSBjwHXZ5^wh?G_ipK9lQwjs*bxTs z>HRws%8>K6;VeWaZmSU*Z(e$J!#BmPbtOF@jq_@Iss>9V(2K8$UH|6I8_P3L=dx)H zKRS%GNnL*N4RjHTw-4_LvFqOO((1aNH0i)MUO*}&?fm&5URCXRfHkvMS_(#%9Ec-p z8}_u@IXN}q#^aTJhhFvX*t@NxW9f#G0Wcl{58$cr#iDgIe)IRD7O2!hjZ112keZrC zh+{ClA0~OpE^~0`&qO}qX1Bbuvg62*4%>9RL4AU^rLDtn?vVJZs*Y`2Q4slwf}7fM ztacz34~h_}STwL)y>TP2d`;o?bsYrPxO(-)*VlO)>2Kfmg;Kc1D2LDz!Dk#D?-ocL zPYFtPldm~h{9<_RX6G>qg2#ly64bd^TO)tJO&gB5BhWs`7(%yjgGRu}kt4-7U`^r03c6#VPQX@@ULILk~QD)A&Iy1O0L6HoZv&g!a7T$S4S+Bc#|GTD}JPx zzr{Bxys`7CA(lZ^#Tp6$&;i~zZcL)P>8Ew;o)Y((au(%TR#IIjOfNhU(6mcm`svKnQ6}u?cD6ya zLrJ&h%QHzxqnNco5omTT1z-+T6CH5;f2a5W%-vfP94;Bwty?#d`$b29m?8vc^MR(U zv0qONJ)r*`^V3OSD0G8h8xfDBZES3y?BDZkk1v~?l}~GKn#7uThRq%Mxw}x`SH8Px zvBEzUp^aSG8grm7mW^kq1-O`cKpf?0ANcg~V^LgUsxHn4F+EJQ{Ig-KgG*r_w$D1F zOY^kh;W^=&-B8tp9cf^f_Wy!QgXE+F^yZiR zDt#KB!RQ>ho;`OWgb;D=#c$b)3c?`H3a?O`TX36x!nt5GTB(FKnh7g1{+*AooEik7}IGv*82a1k$5mYs{@BR7% z^_fj_MlvI1#{NCR8KQI-!h?sGe&qB4~4{_kI8FCW+%$5-e3@!#n z>S5MH7N57GcNJMjoo*+TQfW%)^GQk5?Ckmz_dtYwQb?*>iTKY`|@&W5cMYo^W3(UmX-{j z>Q0CI43uTI*xl2SKp0^GGMPVL5CN85=DsXAl~Zo8xXEa8ghBq7%{t=$MJ;~NKY1PO zX%~7{gl!qUc&A>ZGJ)na0*CMY4+q$8ozIwLE@$7^-7Z-zMj2$1O2v24D?wZAF)=4W zqQuJ|++~-qobFD`1Qo2R%36y1m}?m%x<68^=RnE`!-SAmTj=nJrwb~4Qlqd6WEAhm z*%O4xD=hvI)2qPx1I^9N?EzV$?Nv@!pO<67s1*822f&jK)Yd-!x)dFAAia`OJ9I@O z;E$hW^L3?^`2fN{dnYq<*Mx}^4=^2LbUhn;KZ~gg#!H})0eWkDWnU1?L3-Eh935xE zpVWQxYMw2n4Daeoi5R$W(W0)A&z%l_Ql91~H!@^4HA5z1!2{OtPV=}y^cC2n-uOOo z2x8+hY%u*x5~1g|Ly`f67UtBX~Yzp4{N*Va;RcP z`>-b}F#2MK=V>M#@X&QnDv8#S<>SKW5_bQ^kpqN*NF|2N^?FOtW6HkMpP6-3 zAW$)@*mGsSe*Lgncd)x~RWD;#czF29>@veok2XGEz5CDH&bo8W&HY}OOq?~lWXQ0% zu+3@4K6}TH3eB=vHKC7~VB_o%^O0EBqel;i?ZYIrQMY8=sXz$ivasb@b{Ak&UDr2I zeVmAoml2qUSx!a;N3U8XRi_RO?)!((1Gu-(J(Ph|iRs|#_3QnS3^hWB1^UQ5YdSSSNk3o1S`<`IB`vkJZkYc79SvYJ`#c`Gk>mEIw@=dQ{l z-uRKIXi&H1oFX$ijTIfjBNi`SY%4&)rm-Xtnj0+IJug2z|D}I{%gG(qZtBiWIZl@Z z!;n8XW68$NQ!IVu^v{@xA^5XSh$H~)N>nEPnoZO=g-k}8pF2bz{@oX5 zj*?`mlxS_W8KJQ(iQnP!vMiZz!jpm={@9TLPTzn2jQ`<$jHYDq^|G}{!P_kp{BXmN zH++Ti3yUkH$?R>v;bzBnIP}i<=;`WZzdM9Iarh&bGp6>F`vfK5n+Lp4XiN^CqVw(H zByC36zgoUNAZqsbo-&3;PvVA0$Hkfrd?i5Jk10k?|qnwEdf%$wH@ zyx!&SuuUrd{8{RZiNy+!Wg5NMIgtKT;go~6j*jiFSy@-kw*lV#^q5Rl-KTF~WjU!M zw=Z0@C|gGO;JcKAXW49a`2=y#UGKbW_i6O%YgSnQO)b=W2k6n?wC%3l)ZyJnM>^Gd zYGYbDZ=cy^;NZba5owVa#T%eiV9L#^ih0>{5qCeuv)+iI2{+Gf=V*Po40Rm z$0(pNHL7OYn6@racAI#;~+8{%4cNbaVJ(bT4nVs;8%?VJ@-H?AozY+V_R@j+`+^Ew{HLdIti z1bKD!=%GaviuU8eY+!5!dWQ8EUhwv+s?iSbE-dwb?X-)m3ANG<(0`XW654M*RXWnp z2W(Nv$FH3)U$WPSZxND=n3N~V0r;^`Z%8xgEJzXm5ga5E2qOH?d#O7x=5`c2ysHyJ zuT`pNFZh=oIO6GrXrbk*4Mnug$EOvu4R+zP(Qw}Xs08~@V&=utR^ztm%&qjD$9Lc} z=$!rOH^5M|2!+bTQnpLHg?9!WbZ%TuZI)M)&tHT{q+P;Z6R8Cj`^ctF#4?->D4+M_ z?@)QbUlqAePzf?Ii(VbL2Za?sf{tqNDeAQR?I|i{@ybr{Gf_)Sf1tu|ljNACC$v)3AD|A# zC?)1{p#|!(`a`#P{QSI)QUS)WJ4M1&<{nVBG6BJltRXaN)}2F(FcJl-&rYW4+>V!h z0808!#ji1c@sv$JT61k7KMKcq>y|j`z(35uybEfDtrFFncUI{DEEaf51YLoDK$s6d zy%Jpj&*)DT?I##62qtL9+k~LiId6}c>;LNNssZ2~Fu} ztGCyN`kw0dTDDo}Xq0`*{1V{D_OP(t3`^Kc+b^~kzWCHW0{^Z&!9+B`P-5BQQDA_A zXd<8%eSAzIt9d7r`xGfp3$D1`N77O5zDJk^gu6*EvMRyIsG(thHYaNo;rb^%%Sp9{ zNYTMfDojN`+L~gBr1|;Q-Mekrpm)W{mzHrvG%?T*{>IV7ebdH`!g?ZHpZx2p`d=#q zLqcsTbZm-p*W5!dC{JNTKkxzJOvY~R{{@QxhBGmu3LwSf=H!7suwc5vTY4FCVBzKE zy~N)CkG}?f4fD`+X7Q;r{ZLc^WgpAIhtzj`>~;wK+l`}rSW@t{0Zc_XIbFcGZ-P~#n756|ZG zUJyr+@WB+q5W;qXe_dIa8h|ZWV0G%g$HR}Ix~}`v_>KF4M-Vt#7+?fjMNxGmR7bYY z1PR6~wrxgWwJLCB_I7iSq#D1hVF`Pv++@U9#8QG3$&;RI8HeIi;`=7{CZ=>>EmK z;W)BR^fy)AK~|XF|GDeN-|VhBCI^nNFYA*{p&v^!f8nyk4IaW)1AJ_UoHoEFs~I z72PkhTc9L=->9&9*zt9j`h6UHZ?BG{Wzf6@IZ?n8NWsyIAYfv@OnzEgZFIaTqV&@z z^ODsaI_y!6SUs^%V5Yl)?t|Hre86K4b}HTX)Vz4=NZXd(g;&deoDK>9u+HYp;$Ef= z!O6+%f-@G;9lw|OB_@pZ)b_k;vBEDnILCGJP%5OEc%7uX;ZnsEd0xz`7xA9)0t4rL}i;t0Q_#l_ygv+yzuMRUI2=baF^}<;HLI_H(}-7O4?`nHXx7_$&&EbedCy%R{4=Mk4CdWmzOcFyRS?^+x zhJ|&Yi)*yMkW_EF;gb~pBCBhwcWmm|ut!c;Sh$!Q-v)pOrCWRAN93hT^6;^@fet6K z%RYDf;g|BI>6%B4su0>}7MU8IZA+0>`{R*X70#%mn}mk@VM~2_+M3c%!chXruX}Rt z&9(g?J^>7NaAe|yiD7M2z6DV{h_JwykaNCOmLlLJ zig@btdmsc67rO6hGkf-I;SwZy`kTikRBhr6nE$xNis7)8KHg1KqZ2}rH?#}nl2?8c znY#MfhLE}aE|F|J8L%prD^)6nD3LD#1Zml26e9O9`p9+f?pIW_g#FGCE?W|UF!|z% z5@w&A&#&0pwDv8eJ5D@7&$`t_7qi};(Pz%sLez;4by?YV5n0jWy9c@mW)8f^xWVJ8CqloU}`m>z65NZ4`DO9@W&drtbk+!sL>a>Ybz3YOkuDY}!FqA~xjjj|m0i%OkNx0&6Tv9~H%0tT@+{ZO5VI#iEjlj8bD(wLfiXqHmF1z;+>~ zE=Y)rN3~<3scZw$SnOLN>M#+5k(km9xtl?>W%7!9Z(?Z zh{57>3oOlt6=Cf`$!d6OF=9eEi=gAIC(fzyn2h-$kW%*~dYP{rkxZZmiAWOS%rWF1 zJwzkng1|GP5h27a3=J8S$_%i#GucVQ1cA2=4=$ZOB9@=76avI^n)zrLmZu?BW!v+L zH&cA&04DU^OA#6zwgn=olX4kwgfFgzqod=;k`iU+$P$lgX);wulUpGDm~l>io%%`> z7(}g#!kt0)UU6k*)1u2Uuf(T*ITcb*uWvhcwhwI86P2sN{0574BkPtbj;8KK?$OV;GQAnua zTJT;t!XceAi`Y<{fH6$qL$ZP(rROA2#|!5QVD}jnY*s4E2oe4q%#*C3?O<~5p#}~y(UQEbcg43OV zb9HrzG;KMuXs`_AQy;4soUF);-o{>}UsRnTenj0O-jSHt&x=;aG4aWHJl=buXozBu z9za{@JMnrQ98^$8MXzjw;xsdjE7z zHwYk~zNb@C7=dx%sCzYe;;>%|H}SbJZ3^hepWG-EQfANfW#_A7abNIs4mAYNKK)fSyU}wy?=(_Dt`;(ZfUctSLNq zE8)h}J*k5rE-fw1D7JL1vNY*V{yr?`zZLARUFkf2EGKVVTvr{Joojq-f;b+MaOH^! zNwj|vrv)>DZ1sWcD^5lt7}=TJSVO-ElM+Pvc7)U8sJ=yS3S(5ozIv7BHD!Ke|KM3w zNH9GZx!jK2CPK!Ag?o7u;y%C`_e3KGqZPfL3@u-L`u|-H4QA*uHYVC$C+f29cA|kv z@7OLhGI(FnUT(se2r1<|PGcD4A=O`AIunY4Y4x3G%NAdRANxTQd}oP}*QWPBAg3!e zZ;1Rrtef=E?1yOCMRfj;xW=0uK!3QhpqI{z#jOOCqlXj z;kBx!W)QRoN+h+F=sd>pIf!o`49Pf{5{q)u#L{vW=BH^y#`Y5N7b)d|^qvd903Yfi zY%N1t9~_%PUj(NTg;Sg#;2m{6V`6}ON_|7yYZr+=<05#E=i$TM zLY#)m@i&-H0_sH#%wfCsjN5#CZC~F>ddU0w$aL2*3o$2+*F+&KJ|IC{S&VJM1y=uY zq3ZngP4#-(XDcq=i1PZj<^CL!qR=am2z;UMAnbt;;wU+Czw(qR{dnUNZ#ts{ha)^u z+RY7X*sg449}c9U3VmoBz!n#l5;4oo{(+n*knh^TMMh$hF*MR&k?dBeh~sM}3~=Y3 zJ*5z*KCKa$M4X`mj}MX%aDj+3YR-AD@FBzC&}r6KdbB693r4TjObJ3V5*m}lo53Bz z$D$g%+u5Ud^)*BlP}>Zy{KRjZ_QvlL0egjuai3yGo~p_eR^lkfr+xTLqWrtMw(Q{R zQnL6Y>d#OGY7os^z-Lq%(O3f0?(Mjx4`B$6i5)qxOJ?sBHxx4AQUQj*_XO1S34WqY zC=fh75$&Go^TC4#6|=?!S;&}2C+Fg&!x%w{ERL-Amum@pf*P4U z`;lt)%B4%`nrjElEwX5igauL}-BR<6E{m>?rIX@33lXwGv>u6$w+>g*)|PcSXOk94 z0U-bfMh3&CIt~>?!rDQirRf~w=*o+U5ZmnM79?qhP=F@Q9*8WQX(3f)5fMRv7w=SX znFz;^U+zSR61||}pg~qFZEv$9dJZk`Yg#(hFa7(c=;@r(X7BN^Vy!0ofc?#5)Qx6Qfha|_bkN4G;ZNz+q_@|)xI zuKUtT!W$4yF3>iHs85w^yvkmJRN67XjQ{bcpmhMp$78o-2W=aqqN01oMD+EVeY!#8 z8K`bQ3MzfvpPJYkNQBdMbaaCA#91{!!HqvYw*TqT=voLYB9jDFG%bLE6Qq6PGS(mz zvx}CC-#@> z!KLFc`q0JKUsTh^)0*$89npRkbq|~#Z${9RP_80K)p2^(H%Mp+^D-Q#o{3p-!Za36 zSD8i~)7bKl$536T(edo$Sv}tkSG_P)AuW(P^sKEFxgdIh(Vt=eh-4s@;^2s1d@22} z_Vzp1Z}P>3@h(2W59hTPq!2D!(Y;4C^XA5etkX+8`UV$3Xwh<}5jn|Pk0$h!b8jtC zr$ORe{uo;Iz2$CeIj6Nx?t8a-L2%^CCWTitGHOnkpp#%exl z%U3t#rFf~%baYD2cX8ZrcGgs|dI?!!L`D%>gt>uoMvsk3C2di1nbOQtJ1sv|u!@Fh z5o|ey#jZd*XfMVQVR$yPND}fp{5x6jSr^|^)+SBbQ?eQ9MSIq!its4<+n<&FbZa>B z`t@s3LURcyadu-3VV*7^lwyk&V)^A}kV_D~y zJ=%8mJ$+}Ue1AK|jziiW>S-YF-Y&9bi}vZ>DoU+Ksoqmk8nf(xk+f{sCHI0GS=HOU zWCK{#^_xoWULL*S>BKc#*E|jFRbO7~xga1U+jep0H>+XWbae1g&Jp0Mpp`|yH$1CnDn7?4Mp=|7``I2q9*rG>aGEYN6mBMx3|Sw~h`bnz5=QVGIQ2Y+bGD9KPALFmSR6hB z=QOOROn&&i9W*Ez9?+jY*!bAofnCn7bA4N5Z*dq?Xbdqhe}e(12^$z49dn@YTOO_! z2Ifv#oHLFSg(yA0d{|ZWV{~Qd5{S^D^3sD0$F}yFTKVSMeB+_zg`;sqpX(Pew$9c*K>Jl)t(VDFzD?f}A*4PC;|6)9oy5T*fEo>XR3w zTeoaqQ^fda&D9@wvUM4BvwlYXf#b)|fff=L-!R9^Ox<>*EQ`Cks~IFxr}CV;nuYSha!;f7li>`}5p{GQXoi zw5>Vc9``lnw>8g|g#2nvwc`d=jSb3i6X^rUjh8ZGgcx0F~%*Ji3leE>4O@cppd&Dr2VLGtohTZ1ZgsB z&YV1?lM1Uz%*<9<@%rKne&$!@A^iDiz<<%d=S(tgpO(ZxoJR16OLkNMGuu@&)JNWE z;`9+tgfz*?$SR*?#7DRo(p+j+TT9kF9~$7sVrE4v+Eg(?IkoF z--t3!KEh3xOe>dW!3$gpW|o$*q}1aZW|iBCUkx&RRI=Kckz}zf<=W6C>a~fRM=86f z{3%RQ`)QPY=>D36}|!!@eQAXn>9mkzS84Nxb_xHOn5I~em&pjx)A&C+Ku9J zn>{$!$CdPa6eMKU+{n=?c$prJF*1tKew(_dzd}I1?E2Viqf5UGdqo}_CMV@Y(#}6` z>$AA62mwI+we+>I#*Y0icBq+3oBvprkCgPdUQ+L8?Of0h-;QyT%m8oGgA7*a> zX=`A(#jA;M2Yn~F>$s)XMKwyVFME9I89S<+MidyGBgFW`n5Le7C#h4$u6(l)Myq{= zrAzlyyT>tV8v9ryfU&{u%S<{t9$OqHF-0Tf~4z{5r; zyxsRd?7nNqD6G(T8$Wd1p{oq#`t_!o&5c8Uns2p|jiD45|HwfZZdc06%Uu$zu9-0K z;U$H%iAH$)H~KOea~&L_2vCQ@!_Pc^y!Z6--+o(rhTQ)Ei5T>gsa4L@yXC9_;t4JA zaTMZ{7;UU&nm|)`hwG|qVWxIYIzLHi6vnU{9B7JEAHJr z{DqfnGum#c$yrdIpB#tMmoRt8X<|qjRW~Bb`F{5ouX&6LwW+Vx#<@&)o40D!1wt1? zpkiZVKd!$~!$Di+Vs2gDw|1k9=Ci(DA~XD?voj96z>hjl9;WmTT}$^7f<;&e|w8yo6aoM%m)Y26)Pe>0~jk88F6c71R~ewtW?$E zLxvEY=Ot`d^zqXt7q}-EW;lw8O=jli`)P#C@i3L8UoL>{>V=-?19xY>|y?sKp~gwClf&p3FgrmKW@HQ0@(i&UT(sdJ@XGeRxPgWiA5LONP;n zu)Znw?#1D=IgIfc`{*T1qh-CvpqjyIYIDTVZH+_f*wYWk7>T>aX>Y2fxBv>Ea{qHE znE=Jfme>iixgoVbeiqqdavf6N3hYw#csB{b|1f{tQHgk2PgJP58cDS(%yh_@=IUw?wpr;rh(63@^zLiAd;F z<+C@u+Y~L%snT?t*>3I}y}7rGolNfcvZ*aoYh3;D@rZ4Us~bG76s$PZ(mjwc;(|0I zfP|K_ z3eJN3-;6YHGUD3gVB+3 zEhI{zjc%CA`XAUiFtc*~pk)IGlx+x6U)oZl-wuyIc|N~l#bah0q#7mvb6)F!n>VZ^XK^(-FtO!!Yk&N z_KDa!*>YKPLBGMVXALA0t2;p>ddFVKT9@&~ZI;UVrYrN8Hb$Qe$!{sSHRyWUs_Vy7 zBcFFn&eEIE$LMwWqa8Pzaszko4{S4FcT!tj!U{vOWC-nX@uWao_B%ULLa)mM$w9TA!3*i;6R>EPUs(@UsJ| zlB^$vF%{ro*E?m|Ep}ws)+c3!s3hiv{cNNeKy!=c_pIP;&Z?tF4;VCfNWR+NPmt2b zVDcni-Kq5*a!nsBQ9ribv{%Bq?V4*Y>NjoGH(9st`?00+XV>jLxZ$Eq&Vh}QL$7Nl zKb@#@Qr;@SBH4KEy1tR7!A4JVEG|CZ>YR4TCf_ZkQ?GSnQ%%P_xIWI=V$~VHbq4hz zyDy$~Ei{=w&V2IF9>d0ty%U?Z&iC)lzt~z~^dQD{LUyHbQ^O%l>PHd{bF5;sEjHhv z38T}@AA{#tsP@h_-1_?ESeww@6Ad%m2R^Qjjtx9^V{wN1$F-UjGy0xvd?9{yVTZ#r zH1h2AP0Y-a0Z3cEZ%Ms$NZxZ`mwD-VKk^c8*|F>|qs`1W;Rd+vB z9rD`r=%W0dyX7;c;z_qSY$p3_z{p3jvdg+I7_Qg%?7sg#d$pYAR+=%xE+x!~e#_^P O7|bx9eolAE_WuPj7lsM| literal 0 HcmV?d00001 diff --git a/classes/class_snake.png b/classes/class_snake.png new file mode 100644 index 0000000000000000000000000000000000000000..b292fd3bae7b874bdb2e3b454ddb0d31fcc51071 GIT binary patch literal 44246 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 literal 0 HcmV?d00001 diff --git a/error_handling/exceptions.rst b/error_handling/exceptions.rst index 96c360e..9898a7e 100644 --- a/error_handling/exceptions.rst +++ b/error_handling/exceptions.rst @@ -53,6 +53,15 @@ don’t get any clues what exactly went wrong. This is called the *“diaper pattern”* and considered a very bad habit. +What Exceptions to catch +------------------------ + +- File operations +- web operations +- big function calls +- database operations +- NEVER CATCH everything + ---- Creating your own Exceptions diff --git a/index.rst b/index.rst index 102ce08..72eff28 100644 --- a/index.rst +++ b/index.rst @@ -46,6 +46,7 @@ Structuring Programs structure/main_block.rst structure/commandline_args.rst structure/modules.rst + structure/namespaces.rst Object-Oriented Programming --------------------------- @@ -87,20 +88,20 @@ Challenges :maxdepth: 1 challenges/factorial.rst - challenges/sorting.md + challenges/sorting.rst challenges/dice/dice.rst - challenges/tennis.md + challenges/tennis.rst challenges/memory/memory.rst - challenges/magic_square.md + challenges/magic_square.rst challenges/josephus.rst challenges/binary_search.rst challenges/tree_traversal.rst - challenges/maze.md - challenges/backpack_problem.md + challenges/maze.rst + challenges/backpack_problem.rst challenges/chained_list.rst - challenges/tsp.md - challenges/blockchain.md - challenges/metaclass.md + challenges/tsp.rst + challenges/blockchain.rst + challenges/metaclass.rst project.rst Appendix diff --git a/namespace_exercise.md b/namespace_exercise.md deleted file mode 100644 index 56d8162..0000000 --- a/namespace_exercise.md +++ /dev/null @@ -1,71 +0,0 @@ - -# Functions and Namespaces - -## Exercise 1 - -Create two new Python files in your working directory: - - triangle.py - - a = 3 - b = 4 - -and - - rectangle.py - - a = 4 - b = 3 - - -## Exercise 2 - -Import both modules from the command line or a third script and print the value of `a`. Consider the following variations: - - from triangle import a - - import triangle - - -## Exercise 3 - -Add the follow function to `triangle.py`: - - import math - - def calc_hypothenuse(a, b): - c = math.sqrt(a ** 2 + b ** 2) - return c - -Import and call the function in your main module: - - c = calc_hypothenuse(4, 5) - return c - - -## Exercise 4 - -Write a function `calc_area(a, b)` in `rectangle.py`. - -## Exercise 5 - -Consider the following variations of the function definition: - - def calc_hypothenuse(a=3, b=4): - ... - - def calc_hypothenuse(a, b=4): - ... - - def calc_hypothenuse(a=3, b): - ... - - ... - return a, b, c - - def calc_hypothenuse(): - ... - -## Exercise 6 - -Discuss the concepts of **variable scope** and **namespaces** diff --git a/namespaces.png b/structure/namespaces.png similarity index 100% rename from namespaces.png rename to structure/namespaces.png diff --git a/structure/namespaces.rst b/structure/namespaces.rst new file mode 100644 index 0000000..55ec67b --- /dev/null +++ b/structure/namespaces.rst @@ -0,0 +1,77 @@ +Namespaces +========== + +.. image:: namespaces.png + +Exercise 1 +---------- + +Create two new Python files in your working directory: + +:: + + triangle.py + + a = 3 + b = 4 + +and + +:: + + rectangle.py + + a = 4 + b = 3 + +Exercise 2 +---------- + +Import both modules from the command line or a third script and print +the value of ``a``. Consider the following variations: + +:: + + from triangle import a + + import triangle + +Exercise 3 +---------- + +Check the contents of the **namespace** before and after the above +imports with the function ``dir()``: + +:: + + print(dir()) + +Exercise 4 +---------- + +Add the follow function to ``triangle.py``: + +:: + + import math + + def calc_hypothenuse(a, b): + c = math.sqrt(a ** 2 + b ** 2) + return c + +Import and call the function in your main module: + +:: + + c = calc_hypothenuse(4, 5) + return c + +Exercise 5 +---------- + +Write a function ``calc_area(a, b)`` in ``rectangle.py``. + +Exercise 6 +---------- + +Discuss the concepts of **variable scope** and **namespaces** diff --git a/structure_classes_modules.md b/structure_classes_modules.md deleted file mode 100644 index 2269a3e..0000000 --- a/structure_classes_modules.md +++ /dev/null @@ -1,49 +0,0 @@ -# How to structure classes, modules and packages? - -## How to structure a bigger program? - -### OOP -* Design Patterns -* facade -* encapsulation of your interface: web gui cli -* refactoring - -### Advantages of Object-oriented Programming - -- Encapsulation: data and code stick together -- Code reuse: inherit and dont write all anew -- Maintenance: errors are easier to find/less frequent -- Structure: additional level of grouping things -- consistency: People are used to think in objects (programmers too) -- Polymorphism: similar objects do different things -- Objects are good dimension for Unit testing -- Disadvantages: - - - Code is a little longer (for doing small tasks) - - Code is a little slower (when there are many instances) - -### What Exceptions to catch - -- File operations -- web operations -- big function calls -- database operations -- NEVER CATCH everything - - -### Web -* Flask, Django -* - -#### quality -A program that looks good from the outside (e.g. a shiny GUI or web interface) and has produced scientific results may seem flawless from a supervisors perspective. It may still be entirely rotten from the inside. - -#### bugs piling up in legacy code -What to do with all bugs? I mean: that there was a see of bugs and small features to implement all around and it felt like runing in mad circles. One thing you touch causes three next problems 1 week of work for something that was planned for one day, and the pile of 'easy fixes' is pilling ... - - -#### nested loops - -- What is the depth of the most nested loop / if statement? - -