From cdfe7fa1d8702bc3d0e86678c07fd89b09e119a1 Mon Sep 17 00:00:00 2001 From: junwonlee5 Date: Mon, 5 Mar 2018 18:10:24 -0500 Subject: [PATCH 01/25] Snake Game --- Snake.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Snake.py diff --git a/Snake.py b/Snake.py new file mode 100644 index 00000000..e69de29b From f8293741e4fc5c9bd65afaa7bfd33fa3d58d450f Mon Sep 17 00:00:00 2001 From: junwonlee5 Date: Mon, 5 Mar 2018 18:39:28 -0500 Subject: [PATCH 02/25] Project Proposal --- Project Proposal.ipynb | 44 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 Project Proposal.ipynb diff --git a/Project Proposal.ipynb b/Project Proposal.ipynb new file mode 100644 index 00000000..86423cb3 --- /dev/null +++ b/Project Proposal.ipynb @@ -0,0 +1,44 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Project Proposal\n", + "\n", + "For our project we will create a standard calculater snake game, where the snake has to capture a mouse and its movement is controlled by arrow keys. The snake must contact with its own body or the wall. \n", + "\n", + "Junwon's learning goal: Get familiar with pair programming and Pygame.\n", + "\n", + "Cusai's learning goal:get familiar with creating user interfacing interactive elements\n", + "\n", + "Libraries that will be used: Pygame. More libraries will be used if needed.\n", + "\n", + "By the mid-project check in, we will try to create the frame of the game, where it will contain the space that contains the space, the \"mouse,\" and the snake. We will create classes that generate these figures, but we will probably won't figure out the game mechanics by then (movement of snake, catching the \"mouse\", etc).\n", + "\n", + "The biggest risk is working on Github with someone else before. We hope that we don't have merge conflicts with the program and drag us from working on this project. " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 7733fc7d021d6433a050a207ba8562fd6361ae0a Mon Sep 17 00:00:00 2001 From: junwonlee5 Date: Mon, 5 Mar 2018 22:40:49 -0500 Subject: [PATCH 03/25] Initial Proposal --- Project Proposal.ipynb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Project Proposal.ipynb b/Project Proposal.ipynb index 86423cb3..221c6f4d 100644 --- a/Project Proposal.ipynb +++ b/Project Proposal.ipynb @@ -6,15 +6,15 @@ "source": [ "Project Proposal\n", "\n", - "For our project we will create a standard calculater snake game, where the snake has to capture a mouse and its movement is controlled by arrow keys. The snake must contact with its own body or the wall. \n", + "For our project we will create a standard calculator snake game, where the snake has to capture a mouse and its movement is controlled by arrow keys. The snake must not contact its own body or the boundary. \n", "\n", "Junwon's learning goal: Get familiar with pair programming and Pygame.\n", "\n", - "Cusai's learning goal:get familiar with creating user interfacing interactive elements\n", + "Cusai's learning goal: Get familiar with creating user interfacing interactive elements\n", "\n", "Libraries that will be used: Pygame. More libraries will be used if needed.\n", "\n", - "By the mid-project check in, we will try to create the frame of the game, where it will contain the space that contains the space, the \"mouse,\" and the snake. We will create classes that generate these figures, but we will probably won't figure out the game mechanics by then (movement of snake, catching the \"mouse\", etc).\n", + "By the mid-project check in, we will try to create the frame of the game, where it will contain the space that contains the space, the \"mouse,\" and the snake. We will create classes that generate these figures, but we probably won't figure out the game mechanics by then (movement of snake, catching the \"mouse\", etc).\n", "\n", "The biggest risk is working on Github with someone else before. We hope that we don't have merge conflicts with the program and drag us from working on this project. " ] From 08178548e8f77e7c5d62e0d52187bce25265c4e0 Mon Sep 17 00:00:00 2001 From: junwonlee5 Date: Tue, 6 Mar 2018 13:54:13 -0500 Subject: [PATCH 04/25] Snake Game --- Snake.py | 1 + 1 file changed, 1 insertion(+) diff --git a/Snake.py b/Snake.py index e69de29b..a9f9cfbf 100644 --- a/Snake.py +++ b/Snake.py @@ -0,0 +1 @@ +import pygame From d5d9b5e44a956c628cc57496cecdd8d1bcfb0797 Mon Sep 17 00:00:00 2001 From: junwonlee5 Date: Tue, 6 Mar 2018 14:27:52 -0500 Subject: [PATCH 05/25] Snake Game --- Snake.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/Snake.py b/Snake.py index a9f9cfbf..9725eab9 100644 --- a/Snake.py +++ b/Snake.py @@ -1 +1,33 @@ import pygame +from pygame.locals import * +import time + +class SnakeGame(object): + def __init__(self, width, height): + pygame.init() + self.width = width + self.height = height + self.screen = pygame.display.set_mode((self.width, self.height)) + + def mainloop(self): + + run = True + while run: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + run = False + pygame.quit() +class Mouse(object): + + def __init__(self, height, width, x, y): + self.height = height + self.width = width + self.x = x + self.y = y + + def __str__(self): + return 'Mouse is in %f, %f' % (self.x, self.y) + +if __name__ == '__main__': + window = SnakeGame(640, 800) + window.mainloop() From 0e0985b6e88619a4749eb416e30522619acbcd68 Mon Sep 17 00:00:00 2001 From: cusaitech Date: Tue, 6 Mar 2018 14:26:58 -0500 Subject: [PATCH 06/25] Add the arena file --- Arena.py | 1 + 1 file changed, 1 insertion(+) create mode 100644 Arena.py diff --git a/Arena.py b/Arena.py new file mode 100644 index 00000000..1edc92be --- /dev/null +++ b/Arena.py @@ -0,0 +1 @@ +#This will be the boundary in which our snake navigates From b4265e8a6b36d4d1f5cd38ead213b344c3a6bab8 Mon Sep 17 00:00:00 2001 From: cusaitech Date: Wed, 7 Mar 2018 18:26:20 -0500 Subject: [PATCH 07/25] Create Boundary Object --- Arena.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Arena.py b/Arena.py index 1edc92be..ae84d36a 100644 --- a/Arena.py +++ b/Arena.py @@ -1 +1,14 @@ #This will be the boundary in which our snake navigates + +class Boundary(object): + """ + Defines a boundary object to confine the snake + + Takes attributes height, width, padding + padding refers to wall thickness + """ + + def __init__(self, height, width, padding = 50): + self.height = height + self.width = width + self.padding = padding From 6abfa4027f2e05664d37773432ea48b38330c4c6 Mon Sep 17 00:00:00 2001 From: junwonlee5 Date: Fri, 9 Mar 2018 00:22:48 -0500 Subject: [PATCH 08/25] Snake Project --- Snake.py | 131 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 116 insertions(+), 15 deletions(-) diff --git a/Snake.py b/Snake.py index 9725eab9..cfc3d381 100644 --- a/Snake.py +++ b/Snake.py @@ -2,21 +2,43 @@ from pygame.locals import * import time -class SnakeGame(object): - def __init__(self, width, height): - pygame.init() - self.width = width - self.height = height - self.screen = pygame.display.set_mode((self.width, self.height)) - def mainloop(self): +class SnakeGameWindowView(object): + def __init__(self, model, width, height): + self.model = model + self.screen = pygame.display.set_mode((width, height)) + def draw(self): + self.screen.fill(pygame.Color(0, 0, 0)) + for material in self.model.Mouse: + pygame.draw.rect(self.screen, + pygame.Color(255, 0, 0), + pygame.Rect(material.x, material.y, material.height, material.width)) + for material in self.model.Snake: + pygame.draw.rect(self.screen, + pygame.Color(0, 255, 0), + pygame.Rect(material.x, material.y, material.height, material.width)) + pygame.display.update() + +class SnakeGameModel(object): + + def __init__(self): + self.Mouse = [] + self.Snake = [] + snake = Snake(100, 10, 0, 0) + self.Mouse.append(Mouse(10, 10, 100, 100)) + for i in range(int(snake.height / snake.width)): + self.Snake.append(Snake(snake.height / snake.width, 10, i*snake.width, 0)) + def update(self): + for part in self.Snake: + part.update() + def __str__(self): + output_lines = [] + for p in self.Mouse: + output_lines.append(str(p)) + for p in self.Snake: + output_lines.append(str(p)) + return "\n".join(output_lines) - run = True - while run: - for event in pygame.event.get(): - if event.type == pygame.QUIT: - run = False - pygame.quit() class Mouse(object): def __init__(self, height, width, x, y): @@ -28,6 +50,85 @@ def __init__(self, height, width, x, y): def __str__(self): return 'Mouse is in %f, %f' % (self.x, self.y) +class Snake(object): + + def __init__(self, height, width, x, y): + self.height = height + self.width = width + self.x = x + self.y = y + self.vx = 0.0 + self.vy = 0.0 + + def update(self): + self.x += self.vx + self.y += self.vy + def __str__(self): + return 'Snake is in %f, %f and is %f long.' % (self.x, self.y, self.height) + +class SnakeController(object): + + def __init__(self, model): + self.model = model + + def handle_event(self, event): + if event.type != KEYDOWN: + return + if event.key == pygame.K_DOWN: + while self.model.Snake[0].x != self.model.Snake[-1].x: + for i in range(len(self.model.Snake)-1): + self.model.Snake[i].x += self.model.Snake[i+1].x - self.model.Snake[i].x + if self.model.Snake[i].x == self.model.Snake[-1].x: + self.model.Snake[i].y += self.model.Snake[i].width + if self.model.Snake[0].x == self.model.Snake[-1].x: + for part in self.model.Snake: + part.vy = .1 + part.vx = 0 + + if event.key == pygame.K_LEFT: + while self.model.Snake[0].y != self.model.Snake[-1].y: + for i in range(len(self.model.Snake)-1): + self.model.Snake[i].y -= self.model.Snake[i+1].y - self.model.Snake[i].y + if self.model.Snake[i].y == self.model.Snake[-1].y: + self.model.Snake[i].x -= self.model.Snake[i].width + if self.model.Snake[0].y == self.model.Snake[-1].y: + for part in self.model.Snake: + part.vy = 0 + part.vx = -.1 + + if event.key == pygame.K_RIGHT: + while self.model.Snake[0].y != self.model.Snake[-1].y: + for i in range(len(self.model.Snake)-1): + self.model.Snake[i].y += self.model.Snake[i+1].y - self.model.Snake[i].y + if self.model.Snake[i].y == self.model.Snake[-1].y: + self.model.Snake[i].x += self.model.Snake[i].width + if self.model.Snake[0].y == self.model.Snake[-1].y: + for part in self.model.Snake: + part.vy = 0 + part.vx = .1 + if event.key == pygame.K_UP: + while self.model.Snake[0].x != self.model.Snake[-1].x: + for i in range(len(self.model.Snake)-1): + self.model.Snake[i].x += self.model.Snake[i+1].x - self.model.Snake[i].x + if self.model.Snake[i].x == self.model.Snake[-1].x: + self.model.Snake[i].y -= self.model.Snake[i].width + if self.model.Snake[0].x == self.model.Snake[-1].x: + for part in self.model.Snake: + part.vx = 0 + part.vy = -.1 if __name__ == '__main__': - window = SnakeGame(640, 800) - window.mainloop() + pygame.init() + model = SnakeGameModel() + window = SnakeGameWindowView(model, 640, 800) + run = True + control = SnakeController(model) + + while run: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + run = False + control.handle_event(event) + model.update() + window.draw() + time.sleep(0.001) + pygame.quit() From 5b7e6c8fe26ff4c636415da7f1039b9201ea6670 Mon Sep 17 00:00:00 2001 From: junwonlee5 Date: Fri, 9 Mar 2018 02:21:14 -0500 Subject: [PATCH 09/25] Snake Project --- Snake.py | 45 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/Snake.py b/Snake.py index cfc3d381..ddf0c490 100644 --- a/Snake.py +++ b/Snake.py @@ -4,10 +4,16 @@ class SnakeGameWindowView(object): + def __init__(self, model, width, height): self.model = model self.screen = pygame.display.set_mode((width, height)) def draw(self): + """ + This function in the class will draw necessary materials + and update every change in the window. + """ + self.screen.fill(pygame.Color(0, 0, 0)) for material in self.model.Mouse: pygame.draw.rect(self.screen, @@ -22,13 +28,18 @@ def draw(self): class SnakeGameModel(object): def __init__(self): + """This funciton will create dimensions for + the blocks for the snake and the mouse.""" self.Mouse = [] self.Snake = [] - snake = Snake(100, 10, 0, 0) + snake = Snake(100, 10, 300, 300) self.Mouse.append(Mouse(10, 10, 100, 100)) for i in range(int(snake.height / snake.width)): - self.Snake.append(Snake(snake.height / snake.width, 10, i*snake.width, 0)) + self.Snake.append(Snake(snake.height / snake.width, 10, i*snake.width+snake.x, snake.y)) def update(self): + """ + This function will update the function. + """ for part in self.Snake: part.update() def __str__(self): @@ -42,6 +53,9 @@ def __str__(self): class Mouse(object): def __init__(self, height, width, x, y): + """ + This creates a mouse object. + """ self.height = height self.width = width self.x = x @@ -53,6 +67,9 @@ def __str__(self): class Snake(object): def __init__(self, height, width, x, y): + """ + This creates a snake object with position, length, width, and velocity. + """ self.height = height self.width = width self.x = x @@ -72,50 +89,72 @@ def __init__(self, model): self.model = model def handle_event(self, event): + """ + This creates different operations for different keys in keyboard. + """ if event.type != KEYDOWN: return if event.key == pygame.K_DOWN: + if abs(self.model.Snake[-1].vy) == .1: + return while self.model.Snake[0].x != self.model.Snake[-1].x: for i in range(len(self.model.Snake)-1): self.model.Snake[i].x += self.model.Snake[i+1].x - self.model.Snake[i].x + self.model.Snake[i].y += self.model.Snake[i+1].y - self.model.Snake[i].y if self.model.Snake[i].x == self.model.Snake[-1].x: self.model.Snake[i].y += self.model.Snake[i].width + if self.model.Snake[0].x == self.model.Snake[-1].x: for part in self.model.Snake: part.vy = .1 part.vx = 0 + if event.key == pygame.K_LEFT: + if abs(self.model.Snake[-1].vx) == .1: + return while self.model.Snake[0].y != self.model.Snake[-1].y: for i in range(len(self.model.Snake)-1): - self.model.Snake[i].y -= self.model.Snake[i+1].y - self.model.Snake[i].y + self.model.Snake[i].x += self.model.Snake[i+1].x - self.model.Snake[i].x + self.model.Snake[i].y += self.model.Snake[i+1].y - self.model.Snake[i].y if self.model.Snake[i].y == self.model.Snake[-1].y: self.model.Snake[i].x -= self.model.Snake[i].width + if self.model.Snake[0].y == self.model.Snake[-1].y: for part in self.model.Snake: part.vy = 0 part.vx = -.1 if event.key == pygame.K_RIGHT: + if abs(self.model.Snake[-1].vx) == .1: + return while self.model.Snake[0].y != self.model.Snake[-1].y: for i in range(len(self.model.Snake)-1): + self.model.Snake[i].x += self.model.Snake[i+1].x - self.model.Snake[i].x self.model.Snake[i].y += self.model.Snake[i+1].y - self.model.Snake[i].y if self.model.Snake[i].y == self.model.Snake[-1].y: self.model.Snake[i].x += self.model.Snake[i].width + if self.model.Snake[0].y == self.model.Snake[-1].y: for part in self.model.Snake: part.vy = 0 part.vx = .1 + if event.key == pygame.K_UP: + if abs(self.model.Snake[-1].vy) == .1: + return while self.model.Snake[0].x != self.model.Snake[-1].x: for i in range(len(self.model.Snake)-1): self.model.Snake[i].x += self.model.Snake[i+1].x - self.model.Snake[i].x + self.model.Snake[i].y += self.model.Snake[i+1].y - self.model.Snake[i].y if self.model.Snake[i].x == self.model.Snake[-1].x: self.model.Snake[i].y -= self.model.Snake[i].width + if self.model.Snake[0].x == self.model.Snake[-1].x: for part in self.model.Snake: part.vx = 0 part.vy = -.1 + if __name__ == '__main__': pygame.init() model = SnakeGameModel() From c3b32c7b8bf6b6373d062c020d52cdadaab5b643 Mon Sep 17 00:00:00 2001 From: junwonlee5 Date: Fri, 9 Mar 2018 02:48:19 -0500 Subject: [PATCH 10/25] Snake Project --- Snake.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/Snake.py b/Snake.py index ddf0c490..ff5bdab5 100644 --- a/Snake.py +++ b/Snake.py @@ -95,8 +95,10 @@ def handle_event(self, event): if event.type != KEYDOWN: return if event.key == pygame.K_DOWN: - if abs(self.model.Snake[-1].vy) == .1: + if abs(self.model.Snake[-1].vy) == -.1: return + if self.model.Snake[-1].vx == -.1: + self.model.Snake.reverse() while self.model.Snake[0].x != self.model.Snake[-1].x: for i in range(len(self.model.Snake)-1): self.model.Snake[i].x += self.model.Snake[i+1].x - self.model.Snake[i].x @@ -111,8 +113,10 @@ def handle_event(self, event): if event.key == pygame.K_LEFT: - if abs(self.model.Snake[-1].vx) == .1: + if abs(self.model.Snake[-1].vx) == -.1: return + if self.model.Snake[-1].vy == .1: + self.model.Snake.reverse() while self.model.Snake[0].y != self.model.Snake[-1].y: for i in range(len(self.model.Snake)-1): self.model.Snake[i].x += self.model.Snake[i+1].x - self.model.Snake[i].x @@ -126,8 +130,10 @@ def handle_event(self, event): part.vx = -.1 if event.key == pygame.K_RIGHT: - if abs(self.model.Snake[-1].vx) == .1: + if abs(self.model.Snake[-1].vx) == -.1: return + if self.model.Snake[-1].vy == -.1: + self.model.Snake.reverse() while self.model.Snake[0].y != self.model.Snake[-1].y: for i in range(len(self.model.Snake)-1): self.model.Snake[i].x += self.model.Snake[i+1].x - self.model.Snake[i].x @@ -141,8 +147,10 @@ def handle_event(self, event): part.vx = .1 if event.key == pygame.K_UP: - if abs(self.model.Snake[-1].vy) == .1: + if abs(self.model.Snake[-1].vy) == -.1: return + if self.model.Snake[-1].vx == -.1: + self.model.Snake.reverse() while self.model.Snake[0].x != self.model.Snake[-1].x: for i in range(len(self.model.Snake)-1): self.model.Snake[i].x += self.model.Snake[i+1].x - self.model.Snake[i].x From 026db0f3b101844e14258cde2a43804f1f52311a Mon Sep 17 00:00:00 2001 From: junwonlee5 Date: Fri, 9 Mar 2018 03:46:25 -0500 Subject: [PATCH 11/25] Current State of the Game --- Screenshot from 2018-03-09 03-40-59.png | Bin 0 -> 24594 bytes current_state.png | Bin 0 -> 24594 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Screenshot from 2018-03-09 03-40-59.png create mode 100644 current_state.png diff --git a/Screenshot from 2018-03-09 03-40-59.png b/Screenshot from 2018-03-09 03-40-59.png new file mode 100644 index 0000000000000000000000000000000000000000..5fc08058473864f14343f96a165779468b54d549 GIT binary patch literal 24594 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 literal 0 HcmV?d00001 diff --git a/current_state.png b/current_state.png new file mode 100644 index 0000000000000000000000000000000000000000..5fc08058473864f14343f96a165779468b54d549 GIT binary patch literal 24594 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 literal 0 HcmV?d00001 From b22e09cdb6774b88954c868c0f129b9045e520a5 Mon Sep 17 00:00:00 2001 From: junwonlee5 <31522211+junwonlee5@users.noreply.github.com> Date: Fri, 9 Mar 2018 03:47:04 -0500 Subject: [PATCH 12/25] Delete Screenshot from 2018-03-09 03-40-59.png --- Screenshot from 2018-03-09 03-40-59.png | Bin 24594 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Screenshot from 2018-03-09 03-40-59.png diff --git a/Screenshot from 2018-03-09 03-40-59.png b/Screenshot from 2018-03-09 03-40-59.png deleted file mode 100644 index 5fc08058473864f14343f96a165779468b54d549..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24594 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 From 649b3485bb543591420edfad159e16070c22b708 Mon Sep 17 00:00:00 2001 From: cusaitech Date: Fri, 9 Mar 2018 13:06:54 -0500 Subject: [PATCH 13/25] Add a boundary to the snake game --- Arena.py | 9 +- SnakeWithBoundary.py | 208 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 215 insertions(+), 2 deletions(-) create mode 100644 SnakeWithBoundary.py diff --git a/Arena.py b/Arena.py index ae84d36a..05199575 100644 --- a/Arena.py +++ b/Arena.py @@ -1,6 +1,6 @@ #This will be the boundary in which our snake navigates -class Boundary(object): +class Arena(object): """ Defines a boundary object to confine the snake @@ -8,7 +8,12 @@ class Boundary(object): padding refers to wall thickness """ - def __init__(self, height, width, padding = 50): + def __init__(self, width=640, height=800, padding = 20): self.height = height self.width = width + self.x = 0 + self.y = 0 self.padding = padding + + def __str__(self): + return "The Boundary is %f by %f and is %f units thick" % (self.height, self.width, self.padding) diff --git a/SnakeWithBoundary.py b/SnakeWithBoundary.py new file mode 100644 index 00000000..e45ed71b --- /dev/null +++ b/SnakeWithBoundary.py @@ -0,0 +1,208 @@ +import pygame +from pygame.locals import * +import time + + +class SnakeGameWindowView(object): + + def __init__(self, model, width, height): + self.model = model + self.screen = pygame.display.set_mode((width, height)) + def draw(self): + """ + This function in the class will draw necessary materials + and update every change in the window. + """ + + self.screen.fill(pygame.Color(0, 0, 0)) + for material in self.model.Mouse: + pygame.draw.rect(self.screen, + pygame.Color(255, 0, 0), + pygame.Rect(material.x, material.y, material.height, material.width)) + for material in self.model.Snake: + pygame.draw.rect(self.screen, + pygame.Color(0, 255, 0), + pygame.Rect(material.x, material.y, material.height, material.width)) + for material in self.model.Arena: + pygame.draw.rect(self.screen, + pygame.Color(0, 0, 255), + pygame.Rect(material.x, material.y, material.width, material.height), + material.padding) + pygame.display.update() + +class SnakeGameModel(object): + + def __init__(self): + """This funciton will create dimensions for + the blocks for the snake and the mouse.""" + self.Mouse = [] + self.Snake = [] + self.Arena = [] + snake = Snake(100, 10, 300, 300) + self.Mouse.append(Mouse(10, 10, 100, 100)) + self.Arena.append(Arena()) + for i in range(int(snake.height / snake.width)): + self.Snake.append(Snake(snake.height / snake.width, 10, i*snake.width+snake.x, snake.y)) + def update(self): + """ + This function will update the function. + """ + for part in self.Snake: + part.update() + def __str__(self): + output_lines = [] + for p in self.Mouse: + output_lines.append(str(p)) + for p in self.Snake: + output_lines.append(str(p)) + for p in self.Arena: + output_lines.append(str(p)) + return "\n".join(output_lines) + +class Arena(object): + """ + Defines a boundary object to confine the snake + + Takes attributes height, width, padding + padding refers to wall thickness + """ + + def __init__(self, width=640, height=800, padding = 20): + self.height = height + self.width = width + self.x = 0 + self.y = 0 + self.padding = padding + + def __str__(self): + return "The Boundary is %f by %f and is %f thick" % (self.height, self.width, self.padding) + +class Mouse(object): + + def __init__(self, height, width, x, y): + """ + This creates a mouse object. + """ + self.height = height + self.width = width + self.x = x + self.y = y + + def __str__(self): + return 'Mouse is in %f, %f' % (self.x, self.y) + +class Snake(object): + + def __init__(self, height, width, x, y): + """ + This creates a snake object with position, length, width, and velocity. + """ + self.height = height + self.width = width + self.x = x + self.y = y + self.vx = 0.0 + self.vy = 0.0 + + def update(self): + self.x += self.vx + self.y += self.vy + def __str__(self): + return 'Snake is in %f, %f and is %f long.' % (self.x, self.y, self.height) + +class SnakeController(object): + + def __init__(self, model): + self.model = model + + def handle_event(self, event): + """ + This creates different operations for different keys in keyboard. + """ + if event.type != KEYDOWN: + return + if event.key == pygame.K_DOWN: + if abs(self.model.Snake[-1].vy) == -.1: + return + if self.model.Snake[-1].vx == -.1: + self.model.Snake.reverse() + while self.model.Snake[0].x != self.model.Snake[-1].x: + for i in range(len(self.model.Snake)-1): + self.model.Snake[i].x += self.model.Snake[i+1].x - self.model.Snake[i].x + self.model.Snake[i].y += self.model.Snake[i+1].y - self.model.Snake[i].y + if self.model.Snake[i].x == self.model.Snake[-1].x: + self.model.Snake[i].y += self.model.Snake[i].width + + if self.model.Snake[0].x == self.model.Snake[-1].x: + for part in self.model.Snake: + part.vy = .1 + part.vx = 0 + + + if event.key == pygame.K_LEFT: + if abs(self.model.Snake[-1].vx) == -.1: + return + if self.model.Snake[-1].vy == .1: + self.model.Snake.reverse() + while self.model.Snake[0].y != self.model.Snake[-1].y: + for i in range(len(self.model.Snake)-1): + self.model.Snake[i].x += self.model.Snake[i+1].x - self.model.Snake[i].x + self.model.Snake[i].y += self.model.Snake[i+1].y - self.model.Snake[i].y + if self.model.Snake[i].y == self.model.Snake[-1].y: + self.model.Snake[i].x -= self.model.Snake[i].width + + if self.model.Snake[0].y == self.model.Snake[-1].y: + for part in self.model.Snake: + part.vy = 0 + part.vx = -.1 + + if event.key == pygame.K_RIGHT: + if abs(self.model.Snake[-1].vx) == -.1: + return + if self.model.Snake[-1].vy == -.1: + self.model.Snake.reverse() + while self.model.Snake[0].y != self.model.Snake[-1].y: + for i in range(len(self.model.Snake)-1): + self.model.Snake[i].x += self.model.Snake[i+1].x - self.model.Snake[i].x + self.model.Snake[i].y += self.model.Snake[i+1].y - self.model.Snake[i].y + if self.model.Snake[i].y == self.model.Snake[-1].y: + self.model.Snake[i].x += self.model.Snake[i].width + + if self.model.Snake[0].y == self.model.Snake[-1].y: + for part in self.model.Snake: + part.vy = 0 + part.vx = .1 + + if event.key == pygame.K_UP: + if abs(self.model.Snake[-1].vy) == -.1: + return + if self.model.Snake[-1].vx == -.1: + self.model.Snake.reverse() + while self.model.Snake[0].x != self.model.Snake[-1].x: + for i in range(len(self.model.Snake)-1): + self.model.Snake[i].x += self.model.Snake[i+1].x - self.model.Snake[i].x + self.model.Snake[i].y += self.model.Snake[i+1].y - self.model.Snake[i].y + if self.model.Snake[i].x == self.model.Snake[-1].x: + self.model.Snake[i].y -= self.model.Snake[i].width + + if self.model.Snake[0].x == self.model.Snake[-1].x: + for part in self.model.Snake: + part.vx = 0 + part.vy = -.1 + +if __name__ == '__main__': + pygame.init() + model = SnakeGameModel() + window = SnakeGameWindowView(model, 640, 800) + run = True + control = SnakeController(model) + + while run: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + run = False + control.handle_event(event) + model.update() + window.draw() + time.sleep(0.001) + pygame.quit() From 27599759bfdb9d263ffbfff360e2c3026c50e156 Mon Sep 17 00:00:00 2001 From: junwonlee5 Date: Fri, 9 Mar 2018 13:22:58 -0500 Subject: [PATCH 14/25] Current State of Game --- current_state.png | Bin 24594 -> 14162 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/current_state.png b/current_state.png index 5fc08058473864f14343f96a165779468b54d549..0b9ffaaeb17767a6f5b5edf2e4a433c6f966aa84 100644 GIT binary patch literal 14162 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 M(ENO{{Za)p&AYzdiY~6ccTkGK-hN=U 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 From 05b34bc487b41e9ab6adb72ced159a73ccd3c906 Mon Sep 17 00:00:00 2001 From: junwonlee5 Date: Fri, 9 Mar 2018 13:46:20 -0500 Subject: [PATCH 15/25] Snake Project with Boundary --- SnakeWithBoundary.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/SnakeWithBoundary.py b/SnakeWithBoundary.py index e45ed71b..91918328 100644 --- a/SnakeWithBoundary.py +++ b/SnakeWithBoundary.py @@ -124,8 +124,8 @@ def handle_event(self, event): if event.key == pygame.K_DOWN: if abs(self.model.Snake[-1].vy) == -.1: return - if self.model.Snake[-1].vx == -.1: - self.model.Snake.reverse() + #if self.model.Snake[-1].vx == -.1: + # self.model.Snake.reverse() while self.model.Snake[0].x != self.model.Snake[-1].x: for i in range(len(self.model.Snake)-1): self.model.Snake[i].x += self.model.Snake[i+1].x - self.model.Snake[i].x @@ -142,8 +142,8 @@ def handle_event(self, event): if event.key == pygame.K_LEFT: if abs(self.model.Snake[-1].vx) == -.1: return - if self.model.Snake[-1].vy == .1: - self.model.Snake.reverse() + #if self.model.Snake[-1].vy == .1: + # self.model.Snake.reverse() while self.model.Snake[0].y != self.model.Snake[-1].y: for i in range(len(self.model.Snake)-1): self.model.Snake[i].x += self.model.Snake[i+1].x - self.model.Snake[i].x @@ -159,8 +159,8 @@ def handle_event(self, event): if event.key == pygame.K_RIGHT: if abs(self.model.Snake[-1].vx) == -.1: return - if self.model.Snake[-1].vy == -.1: - self.model.Snake.reverse() + #if self.model.Snake[-1].vy == -.1: + # self.model.Snake.reverse() while self.model.Snake[0].y != self.model.Snake[-1].y: for i in range(len(self.model.Snake)-1): self.model.Snake[i].x += self.model.Snake[i+1].x - self.model.Snake[i].x @@ -176,8 +176,8 @@ def handle_event(self, event): if event.key == pygame.K_UP: if abs(self.model.Snake[-1].vy) == -.1: return - if self.model.Snake[-1].vx == -.1: - self.model.Snake.reverse() + #if self.model.Snake[-1].vx == -.1: + # self.model.Snake.reverse() while self.model.Snake[0].x != self.model.Snake[-1].x: for i in range(len(self.model.Snake)-1): self.model.Snake[i].x += self.model.Snake[i+1].x - self.model.Snake[i].x From c96e6ddaffc41c6bc801bb6cda97399bef469e1f Mon Sep 17 00:00:00 2001 From: cusaitech Date: Mon, 12 Mar 2018 22:50:26 -0400 Subject: [PATCH 16/25] Make the Snake flexible --- SnakeWithBoundary.py | 95 +++++++++++++++----------------------------- 1 file changed, 33 insertions(+), 62 deletions(-) diff --git a/SnakeWithBoundary.py b/SnakeWithBoundary.py index 91918328..85135f0e 100644 --- a/SnakeWithBoundary.py +++ b/SnakeWithBoundary.py @@ -22,7 +22,7 @@ def draw(self): for material in self.model.Snake: pygame.draw.rect(self.screen, pygame.Color(0, 255, 0), - pygame.Rect(material.x, material.y, material.height, material.width)) + pygame.Rect(material.x, material.y, material.height, material.width), not material.head) for material in self.model.Arena: pygame.draw.rect(self.screen, pygame.Color(0, 0, 255), @@ -41,14 +41,18 @@ def __init__(self): snake = Snake(100, 10, 300, 300) self.Mouse.append(Mouse(10, 10, 100, 100)) self.Arena.append(Arena()) - for i in range(int(snake.height / snake.width)): - self.Snake.append(Snake(snake.height / snake.width, 10, i*snake.width+snake.x, snake.y)) + for i in range(snake.n): + self.Snake.append(Snake(10, 10, i*snake.width+snake.x, snake.y, i == snake.n-1)) def update(self): """ This function will update the function. + self.Snake[-1] represents the snake head """ - for part in self.Snake: - part.update() + if self.Snake[-1].vx != 0 or self.Snake[-1].vy != 0: + for i in range(len(self.Snake)-1): + self.Snake[i].x = self.Snake[i+1].x + self.Snake[i].y = self.Snake[i+1].y + self.Snake[-1].update() def __str__(self): output_lines = [] for p in self.Mouse: @@ -93,12 +97,19 @@ def __str__(self): class Snake(object): - def __init__(self, height, width, x, y): + def __init__(self, height, width, x, y, h = False): """ This creates a snake object with position, length, width, and velocity. + If the segment represents the snakes head, self.head = 1 """ + if h: + self.head = 1 + else: + self.head = 0 + self.height = height self.width = width + self.n = int(height / width) self.x = x self.y = y self.vx = 0.0 @@ -122,73 +133,33 @@ def handle_event(self, event): if event.type != KEYDOWN: return if event.key == pygame.K_DOWN: - if abs(self.model.Snake[-1].vy) == -.1: + if abs(self.model.Snake[-1].vy) != 0: return - #if self.model.Snake[-1].vx == -.1: - # self.model.Snake.reverse() - while self.model.Snake[0].x != self.model.Snake[-1].x: - for i in range(len(self.model.Snake)-1): - self.model.Snake[i].x += self.model.Snake[i+1].x - self.model.Snake[i].x - self.model.Snake[i].y += self.model.Snake[i+1].y - self.model.Snake[i].y - if self.model.Snake[i].x == self.model.Snake[-1].x: - self.model.Snake[i].y += self.model.Snake[i].width - if self.model.Snake[0].x == self.model.Snake[-1].x: - for part in self.model.Snake: - part.vy = .1 - part.vx = 0 + self.model.Snake[-1].vy = 10 + self.model.Snake[-1].vx = 0 if event.key == pygame.K_LEFT: - if abs(self.model.Snake[-1].vx) == -.1: + if abs(self.model.Snake[-1].vx) != 0: return - #if self.model.Snake[-1].vy == .1: - # self.model.Snake.reverse() - while self.model.Snake[0].y != self.model.Snake[-1].y: - for i in range(len(self.model.Snake)-1): - self.model.Snake[i].x += self.model.Snake[i+1].x - self.model.Snake[i].x - self.model.Snake[i].y += self.model.Snake[i+1].y - self.model.Snake[i].y - if self.model.Snake[i].y == self.model.Snake[-1].y: - self.model.Snake[i].x -= self.model.Snake[i].width - - if self.model.Snake[0].y == self.model.Snake[-1].y: - for part in self.model.Snake: - part.vy = 0 - part.vx = -.1 + + self.model.Snake[-1].vy = 0 + self.model.Snake[-1].vx = -10 if event.key == pygame.K_RIGHT: - if abs(self.model.Snake[-1].vx) == -.1: + if abs(self.model.Snake[-1].vx) != 0: return - #if self.model.Snake[-1].vy == -.1: - # self.model.Snake.reverse() - while self.model.Snake[0].y != self.model.Snake[-1].y: - for i in range(len(self.model.Snake)-1): - self.model.Snake[i].x += self.model.Snake[i+1].x - self.model.Snake[i].x - self.model.Snake[i].y += self.model.Snake[i+1].y - self.model.Snake[i].y - if self.model.Snake[i].y == self.model.Snake[-1].y: - self.model.Snake[i].x += self.model.Snake[i].width - - if self.model.Snake[0].y == self.model.Snake[-1].y: - for part in self.model.Snake: - part.vy = 0 - part.vx = .1 + + self.model.Snake[-1].vy = 0 + self.model.Snake[-1].vx = 10 if event.key == pygame.K_UP: - if abs(self.model.Snake[-1].vy) == -.1: + if abs(self.model.Snake[-1].vy) != 0: return - #if self.model.Snake[-1].vx == -.1: - # self.model.Snake.reverse() - while self.model.Snake[0].x != self.model.Snake[-1].x: - for i in range(len(self.model.Snake)-1): - self.model.Snake[i].x += self.model.Snake[i+1].x - self.model.Snake[i].x - self.model.Snake[i].y += self.model.Snake[i+1].y - self.model.Snake[i].y - if self.model.Snake[i].x == self.model.Snake[-1].x: - self.model.Snake[i].y -= self.model.Snake[i].width - - if self.model.Snake[0].x == self.model.Snake[-1].x: - for part in self.model.Snake: - part.vx = 0 - part.vy = -.1 + + self.model.Snake[-1].vy = -10 + self.model.Snake[-1].vx = 0 if __name__ == '__main__': pygame.init() @@ -204,5 +175,5 @@ def handle_event(self, event): control.handle_event(event) model.update() window.draw() - time.sleep(0.001) + time.sleep(0.1) pygame.quit() From a5f3abc9f865d262df7c2c9f28571cc50d0f730b Mon Sep 17 00:00:00 2001 From: junwonlee5 Date: Tue, 13 Mar 2018 18:13:10 -0400 Subject: [PATCH 17/25] Snake Game with Collision --- SnakeWithBoundary.py | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/SnakeWithBoundary.py b/SnakeWithBoundary.py index 85135f0e..506c70f4 100644 --- a/SnakeWithBoundary.py +++ b/SnakeWithBoundary.py @@ -1,6 +1,7 @@ import pygame from pygame.locals import * import time +import random class SnakeGameWindowView(object): @@ -41,6 +42,7 @@ def __init__(self): snake = Snake(100, 10, 300, 300) self.Mouse.append(Mouse(10, 10, 100, 100)) self.Arena.append(Arena()) + self.Score = Score() for i in range(snake.n): self.Snake.append(Snake(10, 10, i*snake.width+snake.x, snake.y, i == snake.n-1)) def update(self): @@ -53,6 +55,27 @@ def update(self): self.Snake[i].x = self.Snake[i+1].x self.Snake[i].y = self.Snake[i+1].y self.Snake[-1].update() + if self.Snake[-1].x == self.Mouse[0].x and self.Snake[-1].y == self.Mouse[0].y: + self.Mouse[0].x = random.randint(2,60) * 10 + self.Mouse[0].y = random.randint(2, 70) * 10 + self.Score.update() + if self.Snake[1].x - self.Snake[0].x == 10: + self.Snake.insert(0, Snake(10, 10, self.Snake[0].x-10, self.Snake[0].y)) + if self.Snake[1].x - self.Snake[0].x == -10: + self.Snake.insert(0, Snake(10, 10, self.Snake[0].x+10, self.Snake[0].y)) + if self.Snake[1].y - self.Snake[0].y == 10: + self.Snake.insert(0, Snake(10, 10, self.Snake[0].x, self.Snake[0].y-10)) + if self.Snake[1].y - self.Snake[0].y == -10: + self.Snake.insert(0, Snake(10, 10, self.Snake[0].x, self.Snake[0].y+10)) + print('The Snake gained length!') + print(self.Score) + if abs(self.Snake[-1].x - Arena().width) < Arena().padding or abs(self.Snake[-1].y - Arena().height) < Arena().padding: + pygame.quit() + if self.Snake[-1].x < Arena().padding - 10 or self.Snake[-1].y < Arena().padding - 10: + pygame.quit() + for i in range(len(self.Snake)-1): + if self.Snake[i].x - self.Snake[-1].x == 0 and self.Snake[i].y - self.Snake[-1].y == 0: + pygame.quit() def __str__(self): output_lines = [] for p in self.Mouse: @@ -112,7 +135,7 @@ def __init__(self, height, width, x, y, h = False): self.n = int(height / width) self.x = x self.y = y - self.vx = 0.0 + self.vx = 10.0 self.vy = 0.0 def update(self): @@ -121,6 +144,18 @@ def update(self): def __str__(self): return 'Snake is in %f, %f and is %f long.' % (self.x, self.y, self.height) +class Score(object): + def __init__(self, score = 0): + """ + This creates a score object that indicates the number of time it + catches the mouse. + """ + self.score = score + def update(self): + self.score += 1 + def __str__(self): + return str(self.score) + class SnakeController(object): def __init__(self, model): From b41174625287b1fdf048411adbc30264050c1f74 Mon Sep 17 00:00:00 2001 From: junwonlee5 Date: Tue, 13 Mar 2018 19:26:32 -0400 Subject: [PATCH 18/25] Snake Game with collision and score card --- SnakeWithBoundary.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/SnakeWithBoundary.py b/SnakeWithBoundary.py index 506c70f4..441af26a 100644 --- a/SnakeWithBoundary.py +++ b/SnakeWithBoundary.py @@ -9,6 +9,9 @@ class SnakeGameWindowView(object): def __init__(self, model, width, height): self.model = model self.screen = pygame.display.set_mode((width, height)) + self.font = pygame.font.SysFont("arial", 50) + self.width = width + self.height = height def draw(self): """ This function in the class will draw necessary materials @@ -29,6 +32,8 @@ def draw(self): pygame.Color(0, 0, 255), pygame.Rect(material.x, material.y, material.width, material.height), material.padding) + play_score = self.font.render(str(self.model.Score.score), 1, (125, 125, 0)) + self.screen.blit(play_score,(self.width // 2 , self.height // 2)) pygame.display.update() class SnakeGameModel(object): From 2a7134159f7b80226f4df06f94605d5304071a37 Mon Sep 17 00:00:00 2001 From: cusaitech Date: Thu, 15 Mar 2018 23:04:53 -0400 Subject: [PATCH 19/25] Add a welcome screem --- SnakeWithBoundary.py | 72 +++++++++++++++++++++++++++++++------------- 1 file changed, 51 insertions(+), 21 deletions(-) diff --git a/SnakeWithBoundary.py b/SnakeWithBoundary.py index 441af26a..60fca758 100644 --- a/SnakeWithBoundary.py +++ b/SnakeWithBoundary.py @@ -12,28 +12,34 @@ def __init__(self, model, width, height): self.font = pygame.font.SysFont("arial", 50) self.width = width self.height = height - def draw(self): + def draw1(self): """ This function in the class will draw necessary materials and update every change in the window. """ - + if run: + self.screen.fill(pygame.Color(0, 0, 0)) + for material in self.model.Mouse: + pygame.draw.rect(self.screen, + pygame.Color(255, 0, 0), + pygame.Rect(material.x, material.y, material.height, material.width)) + for material in self.model.Snake: + pygame.draw.rect(self.screen, + pygame.Color(0, 255, 0), + pygame.Rect(material.x, material.y, material.height, material.width), not material.head) + for material in self.model.Arena: + pygame.draw.rect(self.screen, + pygame.Color(0, 0, 255), + pygame.Rect(material.x, material.y, material.width, material.height), + material.padding) + play_score = self.font.render(str(self.model.Score.score), 1, (125, 125, 0)) + self.screen.blit(play_score,(self.width - 100 , 50)) + pygame.display.update() + + def draw2(self): self.screen.fill(pygame.Color(0, 0, 0)) - for material in self.model.Mouse: - pygame.draw.rect(self.screen, - pygame.Color(255, 0, 0), - pygame.Rect(material.x, material.y, material.height, material.width)) - for material in self.model.Snake: - pygame.draw.rect(self.screen, - pygame.Color(0, 255, 0), - pygame.Rect(material.x, material.y, material.height, material.width), not material.head) - for material in self.model.Arena: - pygame.draw.rect(self.screen, - pygame.Color(0, 0, 255), - pygame.Rect(material.x, material.y, material.width, material.height), - material.padding) - play_score = self.font.render(str(self.model.Score.score), 1, (125, 125, 0)) - self.screen.blit(play_score,(self.width // 2 , self.height // 2)) + welcome = self.font.render("Press Enter to Start", 1, (125, 125, 0)) + self.screen.blit(welcome,(100 , self.height // 2)) pygame.display.update() class SnakeGameModel(object): @@ -60,10 +66,13 @@ def update(self): self.Snake[i].x = self.Snake[i+1].x self.Snake[i].y = self.Snake[i+1].y self.Snake[-1].update() + if self.Snake[-1].x == self.Mouse[0].x and self.Snake[-1].y == self.Mouse[0].y: self.Mouse[0].x = random.randint(2,60) * 10 self.Mouse[0].y = random.randint(2, 70) * 10 self.Score.update() + + #Below is the snake growth logic if self.Snake[1].x - self.Snake[0].x == 10: self.Snake.insert(0, Snake(10, 10, self.Snake[0].x-10, self.Snake[0].y)) if self.Snake[1].x - self.Snake[0].x == -10: @@ -72,8 +81,11 @@ def update(self): self.Snake.insert(0, Snake(10, 10, self.Snake[0].x, self.Snake[0].y-10)) if self.Snake[1].y - self.Snake[0].y == -10: self.Snake.insert(0, Snake(10, 10, self.Snake[0].x, self.Snake[0].y+10)) + print('The Snake gained length!') - print(self.Score) + print("Score: " + str(self.Score)) + + #Below is the snake collision logic if abs(self.Snake[-1].x - Arena().width) < Arena().padding or abs(self.Snake[-1].y - Arena().height) < Arena().padding: pygame.quit() if self.Snake[-1].x < Arena().padding - 10 or self.Snake[-1].y < Arena().padding - 10: @@ -81,6 +93,7 @@ def update(self): for i in range(len(self.Snake)-1): if self.Snake[i].x - self.Snake[-1].x == 0 and self.Snake[i].y - self.Snake[-1].y == 0: pygame.quit() + def __str__(self): output_lines = [] for p in self.Mouse: @@ -172,6 +185,7 @@ def handle_event(self, event): """ if event.type != KEYDOWN: return + if event.key == pygame.K_DOWN: if abs(self.model.Snake[-1].vy) != 0: return @@ -205,15 +219,31 @@ def handle_event(self, event): pygame.init() model = SnakeGameModel() window = SnakeGameWindowView(model, 640, 800) - run = True + run = False control = SnakeController(model) + while not run: + for event in pygame.event.get(): + if event.type == KEYDOWN: + if event.key == pygame.K_RETURN or event.key == pygame.K_SPACE: + run = True + break + model.update() + window.draw2() + time.sleep(0.1) + + while run: for event in pygame.event.get(): if event.type == pygame.QUIT: - run = False + #run = False + break + if event.type == KEYDOWN: + if event.key == pygame.K_ESCAPE: + #run = False + break control.handle_event(event) model.update() - window.draw() + window.draw1() time.sleep(0.1) pygame.quit() From fe1cd1d84daf36eeccc11fd61af0562c9ec47fd6 Mon Sep 17 00:00:00 2001 From: junwonlee5 Date: Fri, 16 Mar 2018 01:41:29 -0400 Subject: [PATCH 20/25] Final Snake Game --- SnakeWithBoundary.py | 161 +++++++++++++++++++++++++++---------------- 1 file changed, 102 insertions(+), 59 deletions(-) diff --git a/SnakeWithBoundary.py b/SnakeWithBoundary.py index 60fca758..84427fa7 100644 --- a/SnakeWithBoundary.py +++ b/SnakeWithBoundary.py @@ -2,48 +2,70 @@ from pygame.locals import * import time import random +import sys class SnakeGameWindowView(object): - + """ + This class creates a window for the game. + """ def __init__(self, model, width, height): + """ + This creates necessary model, screen and its width and height, and font. + """ self.model = model self.screen = pygame.display.set_mode((width, height)) self.font = pygame.font.SysFont("arial", 50) self.width = width self.height = height - def draw1(self): + def draw(self): """ This function in the class will draw necessary materials and update every change in the window. """ - if run: - self.screen.fill(pygame.Color(0, 0, 0)) - for material in self.model.Mouse: - pygame.draw.rect(self.screen, - pygame.Color(255, 0, 0), - pygame.Rect(material.x, material.y, material.height, material.width)) - for material in self.model.Snake: - pygame.draw.rect(self.screen, - pygame.Color(0, 255, 0), - pygame.Rect(material.x, material.y, material.height, material.width), not material.head) - for material in self.model.Arena: - pygame.draw.rect(self.screen, - pygame.Color(0, 0, 255), - pygame.Rect(material.x, material.y, material.width, material.height), - material.padding) - play_score = self.font.render(str(self.model.Score.score), 1, (125, 125, 0)) + self.screen.fill(pygame.Color(0, 0, 0)) + for material in self.model.Mouse: + pygame.draw.rect(self.screen, + pygame.Color(255, 0, 0), + pygame.Rect(material.x, material.y, material.height, material.width)) + for material in self.model.Snake: + pygame.draw.rect(self.screen, + pygame.Color(0, 255, 0), + pygame.Rect(material.x, material.y, material.height, material.width), not material.head) + for material in self.model.Arena: + pygame.draw.rect(self.screen, + pygame.Color(0, 0, 255), + pygame.Rect(material.x, material.y, material.width, material.height), + material.padding) + play_score = self.font.render(str(self.model.Score.score), 1, (125, 125, 0)) + text_rect = play_score.get_rect(center=(self.width/2, self.height/2)) + if self.model.Score.score == 'Game Over': + self.screen.blit(play_score,text_rect) + restart = self.font.render("Try again next time!", 1, (125, 125, 0)) + text_rect2 = restart.get_rect(center = (self.width/2, self.height*3/4)) + self.screen.blit(restart, text_rect2) + else: self.screen.blit(play_score,(self.width - 100 , 50)) - pygame.display.update() + pygame.display.update() def draw2(self): + """ + This function draws the start screen of the game. + """ self.screen.fill(pygame.Color(0, 0, 0)) + welcome2 = self.font.render("Welcome to Snake Game!", 1, (125, 125, 0)) welcome = self.font.render("Press Enter to Start", 1, (125, 125, 0)) - self.screen.blit(welcome,(100 , self.height // 2)) + text_rect = welcome.get_rect(center=(self.width/2, self.height/2)) + text_rect2 = welcome2.get_rect(center = (self.width/2, self.height/4)) + self.screen.blit(welcome,text_rect) + self.screen.blit(welcome2, text_rect2) pygame.display.update() -class SnakeGameModel(object): +class SnakeGameModel(object): + """ + This creates a model for this game. + """ def __init__(self): """This funciton will create dimensions for the blocks for the snake and the mouse.""" @@ -68,8 +90,8 @@ def update(self): self.Snake[-1].update() if self.Snake[-1].x == self.Mouse[0].x and self.Snake[-1].y == self.Mouse[0].y: - self.Mouse[0].x = random.randint(2,60) * 10 - self.Mouse[0].y = random.randint(2, 70) * 10 + self.Mouse[0].x = random.randint(2,58) * 10 + self.Mouse[0].y = random.randint(2, 58) * 10 self.Score.update() #Below is the snake growth logic @@ -87,12 +109,21 @@ def update(self): #Below is the snake collision logic if abs(self.Snake[-1].x - Arena().width) < Arena().padding or abs(self.Snake[-1].y - Arena().height) < Arena().padding: - pygame.quit() + self.Snake[-1].vx = 0 + self.Snake[-1].vy = 0 + self.Score.update2() + if self.Snake[-1].x < Arena().padding - 10 or self.Snake[-1].y < Arena().padding - 10: - pygame.quit() + self.Snake[-1].vx = 0 + self.Snake[-1].vy = 0 + self.Score.update2() + for i in range(len(self.Snake)-1): if self.Snake[i].x - self.Snake[-1].x == 0 and self.Snake[i].y - self.Snake[-1].y == 0: - pygame.quit() + self.Snake[-1].vx = 0 + self.Snake[-1].vy = 0 + self.Score.update2() + def __str__(self): output_lines = [] @@ -112,7 +143,7 @@ class Arena(object): padding refers to wall thickness """ - def __init__(self, width=640, height=800, padding = 20): + def __init__(self, width=600, height=600, padding = 20): self.height = height self.width = width self.x = 0 @@ -171,6 +202,12 @@ def __init__(self, score = 0): self.score = score def update(self): self.score += 1 + def update2(self): + """ + This specific update will happen when the snake collides with itself or + the boundary. + """ + self.score = 'Game Over' def __str__(self): return str(self.score) @@ -185,7 +222,8 @@ def handle_event(self, event): """ if event.type != KEYDOWN: return - + if self.model.Snake[-1].vy == 0 and self.model.Snake[-1].vx == 0: + return if event.key == pygame.K_DOWN: if abs(self.model.Snake[-1].vy) != 0: return @@ -215,35 +253,40 @@ def handle_event(self, event): self.model.Snake[-1].vy = -10 self.model.Snake[-1].vx = 0 + + def handle_event2(self, event): + """ + This creates keyboard operation specifically for the start screen. + """ + if event.type != KEYDOWN: + return + if __name__ == '__main__': - pygame.init() - model = SnakeGameModel() - window = SnakeGameWindowView(model, 640, 800) - run = False - control = SnakeController(model) - - while not run: - for event in pygame.event.get(): - if event.type == KEYDOWN: - if event.key == pygame.K_RETURN or event.key == pygame.K_SPACE: - run = True - break - model.update() - window.draw2() - time.sleep(0.1) - - - while run: - for event in pygame.event.get(): - if event.type == pygame.QUIT: - #run = False - break - if event.type == KEYDOWN: - if event.key == pygame.K_ESCAPE: - #run = False - break - control.handle_event(event) - model.update() - window.draw1() - time.sleep(0.1) - pygame.quit() + def mainloop(): + pygame.init() + pygame.display.set_caption('Snake Game') + model = SnakeGameModel() + window = SnakeGameWindowView(model, 600, 600) + start = True + run = False + control = SnakeController(model) + while start: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + start = False + if event.type == KEYDOWN: + if event.key == pygame.K_RETURN: + run = True + start = False + control.handle_event2(event) + window.draw2() + time.sleep(0.1) + while run: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + run = False + control.handle_event(event) + model.update() + window.draw() + time.sleep(0.1) + mainloop() From 62083b053a284f3f61665ded2d33ddc6e5a024e1 Mon Sep 17 00:00:00 2001 From: junwonlee5 Date: Fri, 16 Mar 2018 01:42:47 -0400 Subject: [PATCH 21/25] Reflection --- Interactive Programming Reflection.pdf | Bin 0 -> 112833 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Interactive Programming Reflection.pdf diff --git a/Interactive Programming Reflection.pdf b/Interactive Programming Reflection.pdf new file mode 100644 index 0000000000000000000000000000000000000000..24f4ffd304e5e513d479d0af142d97f87267ea73 GIT binary patch literal 112833 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

YrE^>8lR#wm~_1CAg<$R3*e=E zTZM7Avleo)Sxk^=e{}urIt~CR<_mwmugR67j{oKO_LI0%xogyXJCD}OEe=}hLRgr1 z8pQ_7D4Vs3a+unblbx;nba9^WVSLD^1vz|XcqP1f^~odb2ndC!Rj22G+-N(Hehg#d z^m!Y;PwcfG3{M(ltn2LUYt-kngMAPHm1%u7mgm$`yQH|-;&|@UAXMI8{^2*+?o`%0 zmuh5T*#6nL7HE7}e}poFol|8F-BY_P!u5rK?178kt+8RTRR39~!D%*A+S>VMLc*ud zh^VA&0a>l?m~Yi;aS?S-c}{88Ei8;>Ts3YrW0)GT-f~HkoVXV4h|@u6%H4d0vxaiE z;N|+XTd^;F3*~*fbZ$mq>L4Z%r#HO4c-6s>90p94l*_XCVzl(s$#lxg;Y3=qQOAaNMx}gdz+=H5Yh3?oBRyEAtE~#pWl%UhnL-qYA~`J5AiU$LXV6D znw-!29ci~54KIO>lZu#5_yoP_a+b5|C!!K7(=uLOpMN07^omgYy9q^?2*y4Cf*U>0 zKRtcbap+3rL{5!s095_}t800vgP0Au!`qq8ze=gYq5lG$u>Z0Qy&Xt$IDzAIovIJ^ zww~n4604E@)**T&98g5B#I^1#O^*n}! zv@f|=h+nLQfI!gV++jpPqT80`mb-6X7mo-&eE^FQw?4R-d(0Mw7$S*Je9YdpZ*^yX zj@~y}Kg;2fzR#+hRnIX)(Y@CNk2{BG_Y#YONy`Y}($!S+o-FaYlMRnM51TBM7OobC z3L$E&^AoqJ?y&<7W=kYW;|8~9uxQb!HxrrrjK8wkreP%E&<3^}^VFc*zo`Cl7v920 zLlAeppFSDSNbT6ZE zsqBvFfV9fztI_jLolY*3=lwh9v|nat$i61(rAvmir>oNRIM=g~NWM}Gtc)}D#!RP) zDTFg{yvdM%lTJXvTxK8Q#CZkLO2}t%?Bt*Se$k1`*qeUKcK9}D(BZ1ij)EHg{0;?N zRmX(T;Hk*O(cB2`J(eH5*SJyjp_f|i}bOm(+hnj=a0(=d!Tbu;%L@l=tw`#?Z zN|X4<`h_$HXs`&j`QZkA0a?X2&#bqGayav!Gq}DHcEto|%okT$0BJ?zi|9>2SE?c& zsHD>^oVCP$cw%w)DIXP?*{CVe?yZU%!hZ1d5u&ABlzzo$#+&-X+F?TX%7Tkg&@qm0 z9jnw!hBsaQfX{y4{BbL|^#k3SCU^+uKfc+PpKG>zAHDbN?P?WKr0L7q{uv#T=gHs* z)fwUl9!=$*AeHand(WLwxf=%o4B3+Um&|qjlFmA2=XzSbYp?lGIrb2WhvKwYWnvp#(<8K9(*7d*9i8A+InAS#_elO&CUSQ1b0u42~RG!rsQBqGk37@u|wDzfLIVxQBm`L^a zIob0%RdK4uF#Jea?(8T{7uU>*9~V7ORN4M!19iA$5BE7Xnq7T&{^acCo&31tD&!(c}UUW#MA&>Mg`2i_DzRj_MM02 zNOe)}${vC}?iLBD9XY)%B6G&I7iF4UbvLJ+{G7t!`yn02kwQbvix3Xv5cI&-o@TmY zVFPw}e*4>~aG)poR`>Z@#mBg5k*3ePE%H0k+r80ZL1!J}Jj8FY+&XrHLdaDKc4d!* zv(k2>zRG;(v1=-uegMOKe|Ei@nCDdInri1OWBc(USJTl#PXmh+uR7D+yeW(WV&>%@ z`{JX4B%%zS6M`0vYcQ!JmcBPSXW03IcuP-p{1JB}RAg6M527jPpR=}X@@8sf?h;B-RTsPo&~) zg%0PEsK5^S8}DRx42~qknF;R^YCJPaVBsVrySfq>oe<|{hB171Psk@syerjGbl7%P z!CiHntDgCc!SGF)+N-%3sDk*r-aefi4JZpDM(ZJUrc$54lJru-POwkKF+owI?QV4) z+vMBIr-J=SYxe61WW`R!ZWK~^-(j2S? z7D#L#nugte=kQSWVespFY|STMAv?$Dgm2O8KT&+RLW8Ew!2gK*CGlsxh^w!$!I%q} zWSDdW`FOQ7?{QYIu3o3P=1VAaH%whR;Pu6p%4jd!v3 zJji7N;^?4jY;TOb-c2jj?e{d<*8jOn^RtXQgo!S5xOps}t9F*bpQ|3ZB`v!T_~p^( z8a}GaJUZI-v3<`k|v$L?*lL!{#!lKrL2X{(i zA|7~WI%MKw(LW6~=8bqt^o8=Vp`_dC+-}B@S+lyX4HqGb>K7IKBS#LV(jR^15g2r%O+xWf{9`%b)Z0$Vxp_K6oxY&%hK zqVlACyeqEGW zinu!!hVZpZn%w%Hf_@jnE%7UYtu`(Uh5z9rbVW_`_c==t&!I=umGxvLNC)4X%kD+o z7sJ2%u z_u(V>06v7n@IBlIAHxwi3a`L$_!%C9&)^gI6lL`y{0Q@56pVz?Fczivepn0RpcKZ# z1So?^FcD??0k{BDP`V$4hhZwp`Kz!Fro%KShZ*n#`~CE zSwvnZZ;*XtKY5cJAa>$_Z4f3-l1Sbn2T2lfk!0c~Z*lT;EQL2`r~B_ESd$fx8p^bpcW9a5L1!#Oxlj=^y_17E^dZ~{)l z=WvQ#CRfNm&{q9IekE7QHS#<8C;5Z?Nis+^xlU?Ggw#Vj29!`r1ZqO?sF9kenI=#RX+W*iMjDb#YNrnBq=__%x@aF z(f|$8G+Kw&rRg+-&ZF~1qiCX+g&D$3VYV<=m@h0AmI{vxPYSDqXVG%LAZ!x02wR11 z!ggV&uv>UtcvE;=cwab-YxQH{nDC`=O88nhFI*HZ373U`(0|Zh=&$rD{f%Cuztexx zKj@#dnqC*wf=1Aybs;#Y4eSN>B72E#WSiJ#wuQaSwxU(p#=>knt3b{YZg zyV)MJ(|g(L>3TXv3}XWy~!*#&ly{lI=?Ke0>fXLgxgVgF#i zuwU6#_8a+@oMYG6@9dxK5B4XkhV4*67mys-3A^Ae+#T(JN;n9Q!kaJ`bx}8=r_f#K zA@mXY3jKsap_kAbek0%0{cIZSg;j6~SLO?_oaDn&(uzzbkDYGm91fG**dh;&kK!(Cc>`*-y=!@wJ(YZ#T&g%?O>+BL`k7ksWn=i z-e5GD6D(Gn-Qi43awWSxUSEnoH4sdzQ#U=MUi}6QGaF@P=QM88v{`QR7I}BI%n!9{ z-KK3pyY?MA-rcElm#*Eq_vqQHcb~rf3XA&RGobk1fhB`r@Q|Uy?i)U0~m|@u3P{7h8JFZY2&8NTZEUlzOpU6y<$h@&Rwro?cVd+-q+vQxBtxpZykL5op;}R z|Ih~?9{%XaQTX_iPd__${PQoq{OZKXQ>V||@g48@j(2>=JHF!`-|>#`c*l3V<2&B* z9sfJuG1RJ6D8J=hc`cgfHf!2ACp)WAX2S;c>t&?Zt&WqdIkP=CEjqbB+P>T4jt3@>i$FY<;j$>AD^De)GB+f5#^prE8JK5n~4-NxT$n7V#F*sj)KP=lec-9LUiv9~00 zfZ7Y1Z>ONtVW+~0{q5l-lMRfZIaJdRKH%Bv>DCLT<)8l8*)!dbiixzhF_75eAoJXovcT4jNDx76ujZHcT1VZriZ^p>vME zqWExgo5Hy_=OzgY3LGQ7Ji1`PTyJ=7kHVXCef(ZjgwMdbG|;YOK|5@E5i+q;FE6%6 zXBQQQ$!u)W%SXaT6&v3$e*sS^8RZSD{H^^X7K|#vsYzTAhMo`lDiRYzyQ60zvB0~a zccI@G&QJ0e4QlJ!Zh-|oAKc*#d7ZcB)UUVQXo@j*yWS8FXmvLShTX`MLvnE*>eTZF zX9@3-zat7n*gM3FJt_3#n40n1ux7AeNHZ*kpCW>_!b5RJMut^wN){NK^K@Q6EC$d= zT<{y}_7eZ4pKeVV6i<-?#@~Pkxt!b(HO#LKhchz5>FHcV6m4)$v5zg~c;ou@CRb6v zf4tF)1lb4Ok+*}2nm0uD`+R(Y7gmK}Fh;`VJqlxSFAPqqfKbDXqA)GtIs0pKtbKS+ zd2P;(>Lq@Z&G#;W!f}D#&Ip9WN9x2p@Spfe@vQQ7LQYcX>D5U|56NIUiJzhHs-mOK=-Sc4to1SKAN z7y7(y!q5j-W&r(^_Cif+Mzc7AWW z1tkjxRYl7O`@Kg0g5C50J+NSWK}oIPR7LkJObWMKRD`@5L7LZZ`)bwg)-SOYD|_K9TbZWD3+r;`W3}! zmmV?NwqvYV^H{M)IkDshtz$H;UW}RpS>>Fnby@pc+0b=Ail8ta?}Q!%10mpnwSpDG z2r5YNl#pQFks8cevrk}v?tnnhE%ikA3#3A4%4(&iQFW?NPj{iNcLx}GZf?GA5-XKkxY`Wb`~6dU^tAO0D55#13bi17#sL&q_69Lf>P z5Ni=(goJgDW1Ztz=MdsU#Bs<(gb>{kN_w;co2jBlDuS&&t!(ro`Yza!sfX!%GX0Rg zBhwG)+cJG0sT=7b`c8%01FbZe4_L>D)QGep=8N>r9jRtdw3UhOL-u&^-Vl+G=!O`G zSc;J7KAKW7)MLhnyatDqfFqD)_e^-2hh@`QqIP{zFc7HobOhVZt=yCz6O!4<18 z%5T9X%Q3`n!C8wi#BafeW?+clf@3CQh~I)kM`4KHg8c_#h~I+UdSeK0RrI-6Q`0<6 zyNxE^RtEY2a_Ir&(gVn)2Y}HB_yvD3-nXYK($kS+t3w%e(>>*TNcmn;-jkHCC*{LP z`7}~KgOuly@_R{n1}S%uayKatk@D9_Gh{_M302+_%?&w7`5{uim6Vr}@*pV>kn&Vg z?j=n_Rn%9}F2TPQ|v;X~fS2N>|4j~Iy9kGPD8A|x!Gf*oHf z-wk+gh{#6_L`+9qMo4mZE+Z(6i+6FG+_8r7PIu!m`W9X(c=@O=lx%bvGmIUCr7mJ{ zlWy*)n>Ga--{qT4N)ztZcKxpV=kGdDwNlX~bSWg`L@bNbr4@f9d#cFFir{OWR#x&9 zxEV?v$%P;ZAZ-R^a=bCPl$_>(i*7-hRpIK3)eIHEdY(N*&ui`S{NXz1x#+5*7`)(m z&GWgpijfM>F-+OA%k!CQzUTdhRZ2|R8>}Ko_ITx@yIsvZTMx-aXJE$a3ePl7c6p|{ z+IvR3XllhTB%e@N~WYr zP+F>@XG0nM0N5fKIpN*|w;tQx)kemjf^P2bM#L`G;Ii z=>{(^2VSK+R&I5yTmb81xl~TDoJs`&xm-Y{lFKo|%WW@9Eoi$vHB~NS_d=Omrp)fW zxy+#emI(ypGPZI!B$qj4E9YgxE#)FE7Z!252qXjr(&Kdfzdh`+6Ody4^olRbcExA3>!4g(5$7j7RA8rHU=MW{uAe^A?^ z9qqg4G`*#*`8V3i>Haql>&_pR!`o`#^l!48^6d7!t){%Kro658q4siHAj^37!tF|E zU4(9@Om|R?8s)Vl$ye0cW*pyA7Ty*<$F!t9jDN9DgI>56cXT=g&#K?5ek-1ZYl>&- z`DQPk<(SsOm$Zj$jAt1!+2n5x851X!O#(;3$hNV6W%$9QiIX_PWA}`*fA_(>0^GN? zEt?3?DV*M`Q#c>}-0cblrk3y_g`3x=X*31sZpIQDU}AHgC`Wwq?M@xeN%s>D6uL?ntYfs+Nn0TBHjae>pw$mj*0&nf)@3s=Pf zuo1SBk+2o^!2xmw_{rXGs08luw1sEj5qJXTq800pDf6KxULvMHL7dS_Xb9`jj;({k zShgQbgFRp)j_5_04zq<%vDR$RK?<~j?l2A(lg`meFaXZ5na~tE!~HOxlt&ArOQOr8 z8{h@lExZ@40SzR=5WEgYe-^)po`m{X<4ITrXUKBZP6%Nuo;b)OLK}R_^U-khAeM4LF^quKu!l4z?Ws>35bY8@3^r_I z3O;oeRKPC0s^E3_ifF|v(GAfn;Dmb65yw*rACdh+q-I7WpEDY{R2OnFXB@l%@4`{y zCvVbmqE^fjL*hfx&%gqWpbz%;C9L@!`JGO~Yr60bYZq+|dgRMvoZIj=d`%KbL(+}( zrFH2z`kXKUl-Ob;yoSO^*nMuPA(JPU6U9gfsX z%E+VSIQf>gp#$mD^c&#`wuybB7=)v~7skS3*aE*3GigS8kbB4o@(7tr9wV#BVRDpQ zpsi?cI+|V#Q|iy;vEWDb5iWN*5x9k%N(sBfm$pqH~}J%EJuo{gdzgvY4!w&!8)@m80YvauF@iZ={-{VWkpH;-{>5`RN37 zD4(Fu&?9&qr9aU>1iO$TWC)FgJfTP!hrOCBEW>N3@HIaAe+RV zW8bsy#R1|6;(19ejg{s|RnkAuiD{|muIQmCRxDNQQhcT?;issu6JEXfRR=jM%n%BM zov?&vGbip?K0x|xV3+RzC+j0YqW*Xg>)jl zU=;sLRsNAIjQ{0#9(xNevAsC9kMPM;BrTanFH2geAoAZ$ledLTmLYrqUkPW3f~|uS zOik?M5`9VNj#BVCYbh3jPk07i5lYEa*hvcj)YZyGD92sNX4DJ4Nf!C15Jj)ID@svQ z;aivqqv;oL3D@yFc!~^V!(j0M>Q@HX4Kdm;VmVN`OSPnJzs*a%%whBHZWB0q|Y}@S){QSpwk4 zu>^4ZLEJ2)wFIcs6QC}prLP9aK&x7B3P1z?n+LA|WbOgT>I~5MZh)q0fM(c6^NKt8 zzkwDgTX!iDyZCQg+`%2(!5!Se9o)ek+`%2(!5!Se9o)ek+`<0`K#BaqMdaV=S3v7Z zO3q1&D!M9^03tglfLg)M5pXIc@f;QQ(ng>nt4ITIWEijI)#PL88{8sQk?x@&5%MS{YLW+P zDqsYpW{T$BU?7Zx>97_%w^p-mB{q4r`06?1r92}x$nVBW#+pmSWX^4rncXR$73pvNr@dE8ax?q!jpo!vmEZ}70 z7dtY#8qXCQzk`NdE;Y)8Qc|4I*k^4;>yoOSJ9+Q-;B7AUUVuQzL3wBMVqM$@Y%S)m zWpXdC6&GK^4#qmQ=kVdf^0yqK-_u<2Q>@!-Hwe+w6_#9D6+IpDT5_Kf2o=@{+XO01 z24dlVNJp@oTDSo80;wXKuyMBIA$)S4@#-ZbK07ZzZ?4!Nqj;+EV53Y@oRMKA*@SFb z7AbU!KmBRpe}&g4`aLs=`@smwu(ML~I*qQX=#>iU)w~fs3pRuqVThg$4QA3@I!`mt z@V;JDDKrjRkkHwBx3f)B?}P!?0nVODqZOkyLlVYVM>|WB9;6RQlQj<+=1MCSD~#_u zzM{va%tr*oi**yVVn}Dm z5o?E(DH5+35~=9a>>+t%HpHZ;G$TVETWodY+jEI2myZyNGkkuNBq{?I_)zdW381@_Mk--nvC5L-yEiTkA26z?kEcPTn*i?qG;p;xh*2NtLSSX1EE@Vnf+7j51&u+8l3@NFp_2= zt!ZaI9Z1K~>6FnuG!;B#>Gs%!qI6!%;6f@Zg#1f2#pg_BK6bp#)i=n{qrk@2E7Z<% zGbkp-69QIWuqkq+Nt4DoIKA>h#<|BOEh+FHQ(SLK?Sbc4U*5Rt;YXh#yA%HT@u$~1 zymVmw0Qc6dt@4KKpLX#4eWM?LWaYu27DT-BkF9r z0^J-PD=_slO->Se+Qt}1S%%ss=^nJq(JipdPkKS87QF)h;*y5{u_{v#zfMaygF^VQ z*9d+sVwkT?lf4L1&&2dJ?_=r-3oI^n(r3p=K zd_~ACQ#8F1tmPhOpMu}PpAzg_>3MSW^lj^>W_PxjHDy(EMvYu#sr3Eu%9KN+?;HB) zvdD$wZ$`;X$EvyEM;}>dd5%t*I^@w=v%EXs9bPeX;4=-}uP@mj`RzOGaTnAqR^(|i zq(en0ZM2iLRfMcCOsHvN z8>wsSXzLjKPJ1y^RArK>FqJ&QCMruc6SR|b57`&O0wtr}PC&8S8 zEUa*O6FKpE8*)^QDz8v zk*Nj(2BU!*s>oxzvK(b$w7ZyJky>WGp{=bUE440bbVFOCRH6yKNj%ND#SJgza=FaS zjk7q$<_V=}K7+x=Iq_9oD~5n636`5Ud^5YrsPSXI+qeIR(PQT>j$Hfl%gD9I2G1Ei zV)p#|hRaape!8@E0>{Usr(?#fYXzdEz_zNhNeJ2-D|6bRYB^i9%x#H^VEhs>RI zJ=$eiw-?JF-MkTHbvLT7IV>pqHqAm_CW53;Q7MlJc|>ApzZ*h6P_Eb4DdQeSDGn_k zt*ksKd0Yu-#s$P~H046k;ltNoLX%FTHRv}LiF@$Ldg2ZZX=uze4p)v)l^Ev<%Z%@f z?@0TNSBx5^SVa2L?#2XPB^z5mrS= zNYh=rUvWk&EYlJ#j~fk&BMLfQQLdnh#|_6nj}6v|z<&-LaH7+A=@K~d^Aa!RpUdNJ z)+O#_pvs=xz>yKx+_|RQ+_}bs2lWRJ&J|-6C%#iy)2mb1-J^eDB{K+0#U8Xe5d9~Y zg(5PcwAhdCiC^#u2|gj1CMg7({V^>(wWa3ibzhQytZJ9y$`<$h*^cauw59#Yiro(^ zUWhYtU-Wx%GI~tOP!%c}LPsUzJZ0&Iz<8LLTn@96m%(ari|~SOw@|5jS9cW7CI6ai z(wmb_$;m>xRL7L=@_O3q`da!~`#ML6qmv&tFEp96jywrC)wzg{gz^PivjX7=AQbs;<$yDJ@z&a zhMEXT3Z9E)~N-_YO~l9Y=V>|*nPyT$D2dx@)4WbU;OU(bT{{fHli;y8^@`FPN8&3bSsrh6-1!` zf$_0|Qt=F0Tn(j(8m5YmRNW#zIo$b@r{^3lX&fpy1$jn3WbCZfCu5^<>iT&auIVoB z*&1oSwdOv2!dR5N-6(kh_##x0WJ$8pk~DI!GJ%+d)Ku`9?KA+`I+5&dy?`oKMMy9$ zkm|)1OTB3&RG<^e(@0u!(5ohDXK=_pwX)L1Sd0_U1-rn_Qe1^L%#))r`<~04Bb<=7 z%%9{+bU9suqzxJa)}SY-46vX-;Ls)ez-CDBVPQ*xSAnq_x5%c=u4q6}IMLri@nk5TO-({)I(BK~=-MwLYbtk; z?kCm|vOKuWH+a{$*#{o*HJeN5W7Dp*r1>wCnzIwic9VO*I8MqchgUt3IljD0k6GR3 ztvML^XZfI}#KdQEAKqr*ObYPCPCj##`_Ma@-6i|dJF;_Pw0>rc)~Oq#{y>Z-yJOUm z81uaw>Wn#FahbSHM6RROT#Ea|FtCQ`RCPxO{|bm^FD5R-=GL?0MY8C(8BkbJjykir zsB}VJO>r$pxP#6`BHOg@0M|p<*QU|$g+bU?6Lbj~htc8EL^?^Dr<-SzR203F#E_4< z4JuVotyTs##oh$sO$a4)Pbf)X2_y)e%)8_UFBywVuW>z!Gkpo0fa18v)}%2uCi@-1 z7TXl#hjbiO=Rnb$kG^@BtaWUBq)pj0;g{>qszakrbH1&>6_Ad75g|LIC6ozn5tLr8 z<>^Zyy@CpHv6pUI;NKO;)^}`JKI@7D^b;J~uUoO;N&v}#&oh!qq3J*kN()U=vdP*x z+V`}AO50J}(IC`i0bMPkItec{rt5a&IsLa(h(RZVr1a$Y5U39JW>XmerutKpy zxlwpYA(^Q`ug?^zMHH!0tJ7tQN(?HsJq(7tF_HJC%I(8#IKUGW;m8wqY#`o8KFOT=&}BP@;lvw}bH!-Y^7HtC!Hp{sZ5_96bEnGI4GB)qUuNue&_=6q z^K=~T{BhZebqZ@SuMXzz23_=@+x2RmDt|#)7yWFPFIQjBm#eG7VAEWER#Q2+vp%NQ z&y7i05!yj0EtVA}vDuq6B|ekiMEu0GlBAM*GHuSrWFQe=i}c+VDHQiq|MFOe?oSKX z|7^!TsBX;8R(tubeh6x&Q{rc!ha{LDDoHdDi_v09vL_`mW@HwPU6aH%*>~yR(F=CF zBZ+#GL#A#C-Rz;nLa|WQ&)CN_FrmMFprdbMzodosRn+Ko3xe6LQCWjtRI7>Q$t2kj z>Mn z)qw;0g&GetjkeHE#!i-djQ3cWM(ajl1G^(;1I$5XqBoJ?zeI;Fz8ai=t%k0~(&B5p z`*9l}8$GTBWs~Jbb4-0c6NYbCD_VDXmodwWevZ5!nMWSp`&@D7MzbRG#XWlSuw7$c zi`3M-ERaRh2h6nUu&Dv))&GdrA`>E^XNCwvSeY=9u|Qg5A=lML=&0zNT;OS&+Agh^ zP^1`;+^^331brP{FqNhXX@Mq&9DmzDLBsyuzWzReF`7}j(fa!=!yFH49@0Hzm};Dq zS{9fiEYQr?Eif!L&Q6^fSgu=PSYdSsQuR8G=tGO2q*O>upb`nBreGSH$fWv9krS6} zP~S+rq&q1gm()$n@&(N#h?_S)?~QJlt8?fS z-s0WxZ7AX@--e>6!`(q5??|Dz6s01eshi5mjdL+IO?Lm~eQ4b8v0CglW|z06sQFTZ z176h)d~fQw&Aqx0Xb~CHW90B@zdZ5$A9KV#hOL{z>vEfsFAK{bnp6GkyOCd4k4`=8XE}3ypx9sfEbz1D4Jn2Z;#EUqFOq88HvS;2c zq!Xzd*#q)V2H*~;Y=<}IAipYk32n%CJ%sEeve58c<*rpRx#9kUvF2RycSiZVF~9b3 zvoZG?XhI~JEr=wEx~*IP{FQ6zb+|H9uuTh;hSWhrAuCkAuVglEs%#0?oE+9d*^b?< zoNRbeykJmhftvU!i%U{jg0$FcBVJo~8!fSox0Txjn@;u|cwH6NRTo>ij>9?0DCRB% z8kN{$l*Kp$jX4^V*dmneifm#`tmMGZNcCqQMgAOrp#9dV$9IW)u5UjTx&HhTqPr+` zyI!$x=imeKX(RvDUd3eWyMrtWwXF+5Q(be=kqb>sx#lL0j?muJ(cIoq2>ncj=6(+2 zO65ue6&R{{NugAVYK>N_(&-HbttG*1=D+Oaz#U}X4iOw)PPJwer=k8!)QRGt5i~4 z^$xSyWCCTP-JWP{r6N7R3tGHe5g`ysk6m8wusfYqWa0LWF@a8WcBw(DP?PAaada&h z*7iHJk$iIVZ&(F>R>k)?wZOejmz!!o&VI6Kc)(&YZ4C{`p58INSXZ1rN;fjSBy)jo zPTkeErxQ2ntS>q@*V*NKtvd!u>h)C?W!$G6 znK4;ASNp#958WRbrlvW1!i)`5bL?3@i(_Ejadl~3S3`ZieyM(qKB^bj=(p)F>jk~u zCD^Oz=8((d9rtXuDNYo?cOH^vqj2{Z|v$f*V4BYx$&8sN*uU;nP6Qb*~+PN6|}H<)szdiGt-$f-ImW1TJyJCxkh?XCxK2It@mdbkgVyT9Y1 zmx-t~q>7Ej0#VHOggw;b!7a6`wQIa*nMZ1#kY~$F>}>0tSgb786&i|d_a=@~j?s-U z+;6)-alhwF?N|1%oZlq;WdF(eZSq-9)Z_Gu4Gj$~nPR>nBz87*7w;3lO8$-gY1A66 zdL~gwa-kHetuDRBk$O}^jGB<9L{qL|nu)}e4cS6~()|Q&&RP;CR|xZveA0~w#OZF| zG`1Ac|HfU=Rc=j6WmSg%Ou4a>VRVs7CqSvskGc%a2ij*N_*2pZv>tyQ71e*Ka>Dk( z+e$-`UtZrkn&$L*Z1T%5Oq%?%xTof~rQMbuDvMl>9DkOq*w<&_;SY|!a~QQ;_vi)T z5=wm{91gWtX^F?xCZUbJS3)m)NkWPJY5KIVTDQTtAyKQ;In|@+NMV#XNjqLwu6t3t zQ?*OIQ>(S1kNhna^eF=k;|$Xcf`M>h?U*U=IZ9wW?l#uKS=@W5z+ljz5i+|p3Wtkn zTn1uD)u$w3FH$ub9@KuQn>xCzsYevVqsUiKMWdvggRPfIV?a5_{RrW#@?aqahfCLT*TRy!5^8PjXdnBvwJMF&a>^Gzt@-XbBoeHi3Z25HK2# znuyU9GL@LhP0TdWoVrhOL~%wDRWQ!GZVEx+bmw%B3s#p)C{ps9!Mt;_jpX=CwD_X- zHRg*NS9OeGC}!m5BgtmN4o*KdY1C&kOI9@8QR97i(&QI5K0IaJoaYu*Kfi_u3wpGo z`aj!I^M{AteCMkV4Z2JZj26eKhG~>W+;ACb zn)yrdPs_DLMI&=_XCqfDbC<+ct{&zA&YrG8=CO%`TvMbe)@$^d!w5EF(An+XZQLmk zY%aqx<60v%8d;J{tpF}~D)M9k3YR^klRbsB^qjDc=n_4An;Zz{a2iVHn$bf%wrpdn zB9xk*a}&$rYcZos%{g?DGcvA~X2^a;%{f`n&~+}&i=TqV{AE%)p;p*p&b~$AlbsFX zlh4#8;od#b$Zb&(gR`MC(;0G(cRsCsMz=|)Ow`rUg`NAI z%*jVrC()CWtkelwgG)`UG{cg>1PRn@EW{E`2r+wrfk2nza^oy%)GSASnWuJna+YCR z&pVuZ$sX{*HKGOw4!<~qzq>*=0R7%e#oXn~liy2b_yJ|e4e4+tRHD&{mU^0irL(5MBB_#{$@MfrOFe(C zritZlO*>0pMWJSd=1=u+R(%71y|kA8mT8^SmepHZPtnBJq;7t_cA9p+g1WtZz3Yxt z4Dk)ATT-vQ-dAZCd_VgyrP%An!>P__V z1)0%RUXWM$#-Wru)7SWm`*ZSp8BX)!o5@l;KRA?aXBtWujjc?3su!m|vT^G}Q#KYR_6TGR?cX%KkmQ|ONyws= z<=033^T?DfLi)%1_kH-*J8$9a&jk=J$o~5F-C#qp&{^#{0oGV35ccSp{0=bH?#!_( zO%|NaTF|N7qMskmhn9&9Exeg^2;N1824h&IHR=U;A2tl+Rzg8uLPe2kDtk~|rFuvDgdLa8Nf#BrOMfV>X0=)r1V$xE zf!ivK;NB{rkSq#?Brp~b)fQ1yt8wO;lHmOEUvXAyG@xeuhfKs2C6bWeEBh~r%h2>_ z0zd=k_W{X=ZYXa~t?p}I`}_XlyL_NfT6>}p-+ZBYw&(J*IL2Q!iMY4oUlUN^3@Gyi z`HnKvW=Slo^O>!=h&nmn!+3t%SvlYo_Y^4zY?EopdzrvS`t9gHg zjg!+A##|{z8e%6Ec15eG0|%+2|%hT8QA>E4K+{EiYZgNuYRoN%eWo+4!LE6 z4?_u}ASKX^#wz2t!uJVRglh>B<7>7NGVnnoS!q1#IO~Wym{)1hTWn@DC`7X9)H=OZ zpQ@3qiiY4nO;?9Jk=&{{t~ls;$680&vERWQ0?oGC;)cciFNVclYgDf0#df-AR^+p* zJg(wy*cF>(QmK_{g<6n|L6f9UA_lcN&M^LR2p5km)7B>OE$&SWo4bC}sgiZwjq1wu z(H+WOV!@}j6^!qaHMORU&bfbVtK}co@OP7K(H~Ajp6I{{Z-$D^3bj+)Uh1IiD-|h+ zOCy!a9Ak5Hb6aCafw7ahldZrpKpddzX)HDu+j=_2ieptnjbqJYZ9^Ro5UWZOb@vFp z#op?Bv}1%};xP3Xt=jHl3KNQ)B~`&$k&qh5$y5+f7!_W0Z5y58f`;i%?)+j{p9&!? z!Uc^&qeSlb#=d=4no)eMxcILxpz+-SU;e6IVlUNTaj=Tv8c&eF83OU|iQMdqwB0cO z?GwcI@Q(}6L@w>Fm^-Ip$LzTkG=ZconH>4L=J1b?5;xI(_`!!Czx}}>Y||v5-msT?ymhtyExW<5c3O?sJxN?z7&g*XCy##tds?*4)^R-EHh|Jg@mNIbzh9 z^tf~2n{~;Cn|07TQ;({NQ5{m3sLRz%J&`12(`<79;BU9<9^9^zzuT|N8+KFf&D-^a z+C^rwTKL!Xf@vn1# zP-@H~YR3TO0M!8X0L=jH0Np6%DAg$SD9tGCC|zZ+GR?r>KBU%dlGP_0`(>B!E5qvvnOXlCgHM?{BE7Jm6HB0mctxVG(IgxLS zTpnk>vzv3EbDQ&sQ!+R`&T-B&PUdkgbyDYRv=8q1f$yJ;{0*m(97QjQ7zyQHBiUiG z<;Y(raqCSvgftkCJSLeYyQ~W4YM}XFtvw5P9aWj<%-r00+_~@DyxUIG=Fuii(ll*) zOQ5%wwuG9bG-)A)0+X9bGW0%@`{*UmEyYCvMN!;U(Dg%67x;9grLVNeQjz5o-IcoP zr{bs9&+-YbC~D=C?Izj({B!OjZ3W%6w=?&j^Z4KAKj)u0le@T@RxhiH1S>nMriB}y zmX@u6mM3b%XI9V^)g7!?17!2JcAV}IHgp{95ITI6(q%+n=B@i#VR5x8pTJM{vR%Qc zJ`DOShdBM8s7}jJcR={b*`|@pu(OCB8@8-Ermq0!S4(Bf=9By4xS_`+f>lN7SpFA8v!_21sRU!R;ftJeM+-eg-|KF zyuLb8N8N#Xjm}B(W@YoO(u8zS`l#d}FvomWIwYNz&PYz_lyDoVq-zh4+JgnRr$bhE zjzxht*fS#*1t6jDy<~6HuCK7~J+V6l{w_beJAlt?1Yh-gyN6>f_uO;j*s)-9)1uEk z>buH(Oo%=}rP%C;ADH=gZ%Z|kO<9Y)sAY&Zwmo| z?cvsyGmr^7l)kD$+WJO*bpeq9@7;FW5dmGQ+TruKy>9kwi0vnWHHJg0A#T}kCr>L@ z+zk;C{Dj|xYiz&-s-n0pLfo+b`!|2S-{(5&@+Ypl?ju(m{imbX#QWEzg@joaYPY6S@NJ%xz;XxNFz4^o%NYU&3VU>+$w?C}F@~Ts2Ct-T-S4ZHR@^5JI!-%qI zNhfK76I{I(QDC)A%Haf8uSAYDwRRF6PF`&}X;K>0Fj=EsL$<2B=q_PMzCjtKqk<({ z%IzdabHbE-yOLAyrS}RS5bu}nlRv0@hCHl%O#L!>OnsJ|kPfRak$+QPA>UVjO@5(X zAm`N$&>HmCe6CIh$}a%-l1U9NZ_|$Fg_! zQ=_Ep1Xv^>9FF+BA-ck`TotbM-{}8{U-UEoR2DDk^wlo3v)jnOEMC^>aB51>S))`1 z${fVubSW;69Pp8#7?Nt`8rMQtywyu9{puQ^`x{xWdh`QJ)yK*YzJQkkNvvP;ucpWhGTYuk}B640mT zdLpB$*Q0;kFUh*(4+NUaBuJGdkE&_)ZcoVV_Q-y(w^@}#(49T=!dg>(@MP z)vr3lfLqgKS(2Dp175bLK@Gj-bJJVh?7@TRo~DmSRJ~uNN%byOP^X2R5vAWxlm5H> z>;dx5h|5<-Z^e921j9dmjJ_3oYZRx2s^0T^_EbXHhyTn0_EcW}c_;S>Kc4@B$DNYL z*Ub(Fvt!$##RE4Sb?cfge0ATNS&KxD}UOg~9ceb!8cxc<9&H+ft<+(G5CAL=> z3YH9PJG2^~bI5aN4@sQ#Pdn@{88Gh4VNQ-d9<0D;tzx4{x6M9t>d6g` z)lZ&$bj_8=pPD`T%#+K108anubN+7%iJ6DL^&i6Mg;#|A$NuMK_BU!F9{moy-$!#N zyaDR1tHPTNk>ge2-QG_)J|REi`IPr`*=gr#>04gK8z~Q0i$P_9yV|#gu6Nx{KjM+4edRmuANyWa0|BQ~lw?JrPN!1l5Mj3R zLeO=Ly;E>yUG(nVv2EM7ZL?#eW81dTvDxX4&7EY&W+ywgZ6{y9|8wfAI(2T&%`?WV zd9zl{RcoypbB^byQMY{ICN_z^&a8Gb8V$7q1~Et zqv0VO+X1Cw!_7)fw%x>F@rQ~>WfB3o9CTVQZD@SM1iezfn%1SB;k)RqznIqWMjFDH zxbVnK_262wdaMWQM+LWAXr1Q$ZyO}{BB*=73!D;PM zHiZC$CrDg6ek1eN)PDH^s&KBSUlaaUJ_xFf?U}!q_9(wX3YVqQU*A_^%-n1<=LX;) z!Kd^?P&A@T?{i4z`X#g<8kJJ*v2i{v>=~N2)H0lh$UTEX>w6u=vT`w^C_x+`YZ2^Y zpdqS1yjdM2Q%x6xyOhEc7uIJa`?CG}OCjenljG;m+zM#e^5V_QV>(gj#7yaxwxv*;HIot2+!k{5__eqQ_}wH{)#L!}ElnT*Ut+8ZUVfTtk`84-iz{q#Qn$Z$N1WP zx2gse&+LI~6M9B3?N_k;q@T(&wmUp(h{@xdQ5jmsF3?vB%i?=YCAcCgxTO;Wth6pi z^e=qJUB|~?K+Xr^2)UBUu}6_+)T-$ZT@XM1ar>eYLXj5KO5*)b?HXY<%wWN)zMfvUUkJyx{g$(Cl&4b5)rAz+j`W{(#~$) zQ0=2iA~te;D@MvX;s&*HC+><%KpKk?#K<*S5)^n(_FNeDfE7o79}65#^^|C-zNbP3g)eV6D1kXLFIS>A7*`hK6Um@$jY6i9>y}IIMM5U`w86dYoaCZi&%~!-*hY%wR6!-L-#vsBB^D(BG%#N5w z*fSdsn|^2Q-rA{;tEO+`tro-oqC@T)+6ZxS1xe^ltmvOCl7Tzvy+DOee0%)fj_TQX z8;c)K#poodBi)W*8nHGS=|Hej??6G&>R>UDn9ALnU=M0dL0aQ(G+mSCw*Nop|7Q{{ z>@T{HA?<`#cuT4)%6OmMl0Rs8`Qxb|+9l9Pxj-_eK~1bvF(oiDMzm)AMAMva!K zBw$P|v5r@pLTj*+)6s4S?VR%q3jyG;u4a@frNp6+)k7KMDOW6Q4k~mR@1~gcJD`(n z_!3tByPMj`ub(T$6fdq2ImOI$`geC#$yJWgzHsPI$@hih2DbgnTj3NEzLS5)qL~w) zV|mp@tyqqhwqKJdQ;bwZMOjj(!n z+|;_|j46%N7jUH!brxrF8rCXM>_~uZ5I5sbC zriaxPOgYOtGO_kj3<+f7aQBhVo!q9br5jq0ZMYxM7MCCsQ>#KTeO9Z3kk617C1V#% z%tx2Zpx=)8rp*gQNn*_rr|y<~U+b-CLDT>GT^x2eGbi9E6MQIlxV;Usc zI-KbbQ9n!}o;tR}T${y5-jOBw*P;#5Nn-tN5F|QVJBhsR7n5@!ONLWqDj07QTRm2D zJDzZl4!`WWS&$^H3`FS8 zRAl?WOzj6SXh(-qldSwOJuhQbw)9@dJqQfq3pkJwSjf^1EyrbIF6RM$#J$|IN}J@K znL1`ej`;H-aFuA@aaqcID)j8CkH6rKmz0Mv;6wZxZf{)>)cW9CtvP;+N%a=?h+$F$ zTxS>i7|oth1bA7JG|91Z>(e(@AD>9klVO?ljtaAZK+r2H+6du zCdIoyi7!n|?B`rqqp@wrJATrX1GO>S>OAOdoK}y^B?UyTXGwS1?xjMI`8M)u=oAc0ITkX&SKq&%iD1Hy@Rsc=Qh(1nD7dM=KIBD&&vT^l9Eb{M$_5cxP?H+@L8So4ylF z3$+zxg3e-=#3y>0A_!~2&RY++!sP+A7vw>V+r)V}tTG9|szj<#5_5f>*i$A&Qvh_? zIkFY;@jn%hF&eD@1h%BGZI-JMNK~Lun(Jz%F8QI)I(_F|2cRnx)w~YtC~lc1Bv{SA zB6B!YJZ4kmrpCnMS;?wv_^t*kt2!o}Qv6uOS7<&a(8xerD4iXzFJdoH%zpLecBHI! zmrhC~prgnMK|YDcQaa0ap(vKvNG~A#%T&ak!Y(uUD_faH!)8M^{up|DMtZ~}uCx)| zmpYgAA@3(%)FpK~wTzAv^ax@R*awmcwQ;3_n}uD3&>C+0T5&C05iG(Bd6zSYVK+pxOE??mgfX*xx|DdjB0i6@zA%v4OF>E|9= zWU%EXuz#GD%Aw-1hN@=A|HL&fsZ^}@quu~crbGWMCh50a$K|-JM-N_|l+?E`7kffu z5JKaqz=c~9Fg={d7>2BeR+0`LivRf|TK6tSlf6LFzQ)Jc&?&BUfN)|se(}|CHp$09 z=ByLBr)oL2B6U)FqT%}$X`oOsN=4tJ3q?z&+`DoCN@IKoM$Wd=vBs?XQ7~X*^cd;Y zq;6A$e>FBfyP-LoAnHd=z(<&nzAv`};rYqc!du(%)x}D4hm%PYz~wA)D%X$a390jY z8$T~{#i(6Qb_5ypj_4_(UU45veD}W2couGh7p5VNb}rDemagEuq|Au z4V)LVA1aC2Ajpl9S(HgQVv)S5Z?+~JaHaK(z`no0SdCx$ z@vt~-SWUaw7_iYMT?XteJPrcfudLYAZrdCyJ6S)8t=zw5)?D)P@?4`-=Mh zsK7qVap++tN_CG_XG^oAGL-(H@28S=0W`Sy3T7uH1lL_QP395pGNTo?Kq%y(a!JRU zHjq-(NA&aN(5+^{{cx_8VM)T)Wp>|g2&Dk$m;NDSSMO$03Q%{_TV81~xYBEJwDhy` z>nb^4hmN@TqvhcV?6C95+-&hw@>T-XBwDd!oUN_8b{N)!X+ld>v7$Z}&pqrp%!Erj1!PR*b58L`5&e}0Ymr=IOQkY^u zC6E1g2TK>q1X}fec6IAVp2DtlmL5b~CKFyOpAk;$h6!V|vx#oZN|C9a8i((@Xw}1RjjPFe+Z~%s&&%)QdhAx6QqTwu4+-PO9-^{H7m}nVX)cT;H;}T%)a5WGiw+@ z>qHAHQ{xF$EUm@dUoQwfu=0xyPJhRlDe7$Atz;7xXjsV`>2{`F^-H%9rJ6-PhIGHC zRTh$`NMbyh{c&c;e2LbJ=f?9! zM~z1;v5Er9YSsD&gsElS;QzfeJpXS?!$!)%!^Oe<|MLOZc-h$4{*Se~=s_^h{QLN= z`;qT$GR_p&Bn!`I8qXOT4OJ48EmbUpQ{x6tlM=QxxqF{%wWrF50jufUQcLTeePJA} z`uh8Qpz(!i+kC9P=frsK#w79XWZR>#)j#+3tB^u3+{S&u zi%LW2@Y@p5Gnl+22Z3Qu4L-q~(PQ)AO8`?cK`F+yb-(TaMtdTVvwDcAA}tMLYtO+R zQkZ?LB*7inS(iZlt!gAPyQA=f&!V^`u(!^yrgiVgLf&4tEtcNS)>rD!$inAe-l4U`e)F0d0xYAokJp7LWF*@2N#Ls>sN9 zP#O{gN>;SMV8{QOOnKmCvj3G#}KNNZK7!9~A6pHL%K2 zga+fQX-baxv^eqtt^M@IVEH`X0&&m_Pum$oE~X zp~ZQ`!@LOt>LF?utE1lPiNbeaY5J)AA=vP7EJ{D*o!{fox_J-p1c`rVA%{4j3LGDy zhME7QFbHw$#c#%FLIS9W_GXYek*u*A_nk`dx}uPOW3FpOd(fjGUS8* zZp|4ZjwjqT9C$(1)E@gLQuk=3bx*zY28Rc25S=(D5Ou25 zIU8OgIdjE|IZn6LIMloeWadINC|H40-%exP;L(_cAMEtg*93ndWG1cwYtVjcr(FRT zyR==|D;CCtC{7pKNo?{QXqIpx(@LXhAZSukbxJHJ^&%#?#D*QlYaJKZjdD52W@YCH z}m_;#-eTG&{$sh&bEw^E;ISbu?JFLgd`h6B+aetth-m}Np9TM{Rtpoh1GsRI# zpD?(q!w>})?*3a!SxpE9da`zT4NzVA3%(GkOy#43F&%6$aukq4obK#h7Xc?#@uTtxH1+b&&xo04XbVJ{+;IrcP0R7Y7TTzA*+OK8{csJoY z@oY~j>ybTBFxu!Y+@Tds`BIq0@z>ZYn?6xph^`8id!wW{@lK|quR@&@u(53l%-KVD zeAcYwN$k>?L)O?X=TB_CRacRzCbjK}fTMkOlTYnO=I#?aj!Y(qLGWJl#?Dhh?ZcUT zfVdHiv0 z)8D*KQ&~kmzOm^|Qu)_jI5$iWTqwWzd=OnG)v*o#=%*h;f6gBHDh&yKMz}1la|vQ2 z1>r!=%`ZFST$X=d7lt<)cuaccl5D{3f0){T7+l8PLlH~+!C+8#(%&u+Y}F5TzqZ_- z0mX`cl6$<=C%4Zu$QC@6aIxSW0Gy^%F%el~StYKw6XF%QWhL_dh`Ng{ECsan(N9vn zbk^;FB}|^;i?cpLlObvc_p(Un#5(tYcTZKD><+Tk?p_#qOM%GYakr|!zQ4j=_H>aN z`{N?I6EC3{_rsGBX~k-=UMB8lla&wx7Bq3m|CPvhRo>rq>F`K%?{senztCfC=*FK! zu`a^t*@ByicDUnZ($hM3(5ukTswZ3svBK48OQX!D@XHn;lGufXM^wNVAUYx0JJ!E# zcS47p_W=Z{HFBoa^9}=JP*K8mVU%g)61xVjW!`4*6X8O3G zKSDsSBz?tTIzMoqwDJG>(zo${wgrD0MzR*J^+H76;J%_?)IkZYKxC#F#rGySqd`3M zAB=y|Q|H*y`D9UxOBBMGh^R8q|Xf35W((M-nL*ZP7u>)H3sr_PkMua;`EmX{_iq9`cTC9pLp%jh0zUm%|APBEH~ z;Ax~Shh;kY#YVpSskh1C_C;5)@@ep-C&cgIY54sMV|&vFX~!}=^K+{p&Jr(!Vva(uH56|P{Pup+w*WU*l%1N+D>nPwh-QKtFIZ3eKVtEfb8_*G!tv5y zU9e8%?z1{N)k{C;o{fHu7Oa*f9;xqVue0b}v2Fw5?-bZ+kXM)0J0CtccUsul8%r^|xt6+A3Wn9GexAz?)n&`Pgkw4Ca zJNljc&hU2fOm(FV83$ZEe@MPho?Sq67f_yB#S%8HX8*0L_Wbd{u$vHF_w%t>c*+^A z>xiR=^vpNxP;!PTjx8nlJeTclw_A>EgE8wUdo|uvICqf6kj|HkJ3?_dneY%ohi333J$T zPI91f_@~6D)TcahkaA$SlB`>8HfITE-vy6X#Y86lxsnOWDkpE;vhqm~lO?6N9W=Ox ztdp{&k))Gkka);X%U1r)-gXy=;9>Dl(( zXqkBkIU~6=Xd4llHoUBLpK)V(R)3xUJjgN!Htf(uq}`6G(YUE33S|d1ZtpLqmDAMm zcO33J&_D#ZsT}0LX7;ko;=tCc{3;I9uMM-Oa7s0vb!90&*u*K`a$PPua6~033eP#_ z^yM>@SzZu0`M7skRobdFmKU~ZYc}Su(3`Hhu^tava2_e2g=iwub@7M_!Y?icRJ>p-@sBH{Fd z079p(hP#6l)x@Z0Mc6-#-*;jsLb%?0(v z#%jW9SF@Mx)vV(z;CFzcU*V&XU~i)Ju)G}=D#OYqRq6CQU&J*E)U>xqq!;yrLUpLf zGkRt8L{Q}sG^C*ZF(!Y021S8DJX;KGvjS+Ug#~;3;>ZtO%Q1|_luh~x{Tag`!sQcl9cIFW zjxp-b4#P9FXX?YgCpl`0DtW)$F$KXW(Y~@PP9C_(94gbCSg<{%SDN2wPgdL|g|8VY z*`Vwt4N4!}bBdrWF?sIjfCYz7_&=-mvC@6ETi!!Pk`-lsIh=P$7+C>b3D0Dj(X@TK zc_s0fm~+Z5SzNX>XLPWhYcF&;Mhl)5iIV7_1}cxKm17)bQGyBu6x?P}4%-xSl#zle zMx+gtiGyik`%<^)?})v9mDhMKsM)-7;6B;i;zm?;Da&I7SsY*T=wl|kZ}N7GVy3kMvE*| zDjhlgF;x3d!)R=?a2+z`XdGxbWHIbooIG)GJZ1I>Np^8u#&*cIWJ*M|)QDp7*m`*# zrtEU(9sL{I8~-UI6YZ_}uJx|`to)pL-Q#TVEXGUrPWw*z&iGEAhxsZQhD(lr z<4)H83+6<^9U~yiu_9@f$(3HNGV^!fxS){yhZs6YS73CG`BbB(=c&_e*=brY1<|Bi+bZahX?&`$l72+kH zu!80|>7M45<0GOV{9=}_IgQa9ydeDO#&Z!$U>iyYY^HIhX0U44y+J3BdK%p-4kwOk z7tw|KT@--o3p!$Sh9Mlve?eVWyxo>gRl!clz3y(0Xcpsn;oy`1l*5^)_T_TGRv1zk zR2Z5VWcNjKD0jHm>x?#%$(;S^j%BE{c7pFKWT@y=Zg+xoFD;njv}<*1=uWZ3`D9|* z6tXE+SMoHE>`PLxh!RaPq_+D+{#MltP5K;W7K+6OYgJBkj#*VUcX}U*YW|CEl8_k9 zCZ=)qe2%Tboej=Zf(#KlfcD4RKekYrvQ95y)IG^LNd;MOPTavgm`#Q^g- z9D5P*h@ail+E$kyAhaM4{m8%4)QmYIs@wlvbJHkX!#GJgk5giJCEQLy!GB*bPyGjj z=^yo_BPB))rUUI!;eg%t!P7^E@i{KG3*jul;0hkb-U{AvM3#6*zz?~Sg-o1W9X&PF zwhi!$g-mxTzx`tlzj^hx+ySfsN1lkPa5i_+or|kIOe?F!vXhStD#g;l7+h504s~fI zd2|=0(v<-L{8a`S3WC6&=;^oLi)C#6UvCaB4%w>n$KEJ$GNLa;Ol(B8sWZ%@){UxFrQRfn63QH2rU*1NW7o|3UzXqk7;$f#?hOF0O=h;rI z11r<`yp`Hu4tL|6UYgMl3?n-l^0(zw=pNt>sw-(g7+i4=j3|%yahWt`lvmrC0NTRo zjW3!>`vk^n;(tU>k>f}DkF+0@$~m5LF$N%`+Evf_Nsi6*&$*8P`hz$^WAb5mdaA+L zZk({&#=sws>Sp(9IG=OZMYXpvxar*?qf)|dFOUbiw$A)P+7M$1_G8v#)W)-7)Q&k(OvzM@c$wN7N8QlhsNRCV4Ys&lVe~sAy;Lx$#YB zMxFbZVN#lV32UupM6zv67Cv( z-bX*=^P)~`(+-DVy0g4vaCfm-$V!v6xtEBeUFGihWVk&+o_eSS?-P zej{&5&@)S%%cxv+w1TvYV)#iS0G26;Cl`Uv~_K;SxG zH0$_VD9+5sBtK992zF>}N&?_`?~L8jyfMZiJVtx;+F>kk+;NEXyW0z&ajEA6$~d#A zhyKF>5wojqOBCnYkol9IhYJo~?fGHt=10qrZvH*-ADUxw_aYPDxH?5_X&i!|@v12M z6FyLm-m3F6y8g#uSNKu56&Z5WGr?|ubRm{6DcB81^hLB^ICgghZ#YeOiZk&p5q+Q- zXuwR*TizR8n&R@5lMTy1UoW!N!xq=K8za4K*L{R|$HkOkko3$v{}R`JWBq{m9Cj^X z4{e96xSV4XEyW4-l7ecVm))c94N)T8Imn8ez{2o|c%?x@ho<@t)Fi~Ll4F&YwKFa| z0iqmd=2M!^;2C@Qu>+kv>)mb|!Sy@|t=o4jc1>E1q2)DiZ~RGTfT5rHZQ^F7zsl90 z+ZF!W=JHBtxJqzGFDsUG8&?4>gN#w89iLXXPVyN8Scq1;%ftj*1M83_jIUOLM)glp z6gW#HDdhi?OzZuoHgeV&*K}H$|Kte$fL1N>KbfY=0{l;iRV%@z`X^Zmn5B|z^8ZOD zt#pi8I_)7kar$*pI1H7b0Wj=;VMKM2`z6?Bnh3F ztR^lEheu_>Oja5mkIpVXYVg0urqXa6@>y!YNvcWO|CM)yXTMcqg~;8PNV3TPCz;1m zF-GbC3G-asKPKxOL$d?U(@}3U`J0-BNbLF1|Bf;#9|r%8|HadJ{dP7;#N2Y&3DgV< z))nIP3$g!Xr%_0-TMsR(8imTAc1Hq^B=fpB{D1O2bm8=Wd6I&AktB@#f0B7D8iSnv zpD@q$L$v+7qW34U7vnDJ_MG(NYiF#CG>gQ{ejY-Wh$lV(e5>2L6=?9L&;)8kTbz5u zVfzqwWUn2HkbnMU6nUb}3_dHC6{Z+$$0*zZc81iNuLWfXBRrUOK23C>S)=92w#}w+ zPJXSqM~_UA|%>GRo6Y$)H)ny(sV0+yvCc_15zsDQoriGfN*=Sd7Vi` z9>JG{sksy4gJWtx%=B|Pv3De(XSfn918O50JK8*|0W9(+H|C3iAlzxPA8IOU9xQt< zc=fq?TeNe&RVAuCw?_{yyf3%PJZk#dMs|A0uPzQ7`jSfiv_t;ehkZF&GfPw-aG^G= zn^xr!)AK+@u_RA^Pm0y`lTmTarEE^bx$=BDC;nTBF-B)qYJQC&4(AO-l`Hp2=~kQk zL<>o}d^yKqAxs)qQzv%1kb!8!--{-e6@$tnKGEp>M11l3FmjVOk`OiqLU19b4G37T zo-}mDgBZKKr|m;GNU=c)kwe$dqL&rXj~$(3_DTH>G#A7c(_Zd}1h^svC~M!(&7a{$ zsF!U=40*9#gihKA*d|>h^xBYfmrFMPykO=hVtKQGPGj5|y)1b3=8*+*h;aDn2^WYg zneDIK4GuvAi~oF($?XH?)#4$P2fw%T6XCRXcEn00QXwZ%jHOUqnLb9$jkmAZ_+>$n zYGeyxT?j1xoig*+^5lVgLi|g-P`hCCo2XJqCHI%oEb{!Y9aAT4zOL0go(FWka^;*_ zei1}|xxnn1oT&(BqxB@B4XvNLaxT=Pg@`e5B0|(1+yE9J>ypZ9GtA3AwyXh{b~p~e z;6U$+0h@57b0NHuQVf;j7HU->BT^I6VUwqqpaUhxUDf~ z2fnV3YfgV#KS$@^?$_tLle@@FXA}*#ebfd#F5)SzL5 zKW|6$V;>3qt}7-~_O;#bTgTH@8$R~6{@mKaxePODBS-YrrY^3jj_}9H>S-@oRo3MZzNlDHB7R7n_%AgeSZ+_6C)NMdr8p zyS#?3(H|`n@l!i7d!*KSCW>kP6qQQ1d{zePK=GlYs%M8nt|pdEhbUkU_q4tDRKuc>Ycaw~rJVzhp)+}C{f9dsSkKv!8s&NGQ1_zybB}|_+&mKU%z-(AP z-7iQR(*-vAh_WImA?R)on+Rm3C@mB1h>Y5-=gG((?@$(rKEJ%#rR?de32}Yx(6|j_ zz0P?Vdfcl@M6Y394wuMUdrV7ExrvH5KKhx#+5D2FS3CbaeBTmw!j?nE+4R z;+VWQ7%7l^&VpBQaP|%DtkJ<4-f>{!RZ&NU{961+gf44}>b_ja*_dI7R0xH$@H*lX zOaVCqxPJYYv^QL!IFj(NIV(X0=@;WQ5bef|7HJ)hUk8rN+ca0XS{3YS=LzN40FyI= zpwcJdGn`dRA3Pxo&Mle9wS5svB=EsK{~quO*AC~2p;W}K8g`%p-i$yO@&sNOOd!7l z=8fqgPbTCJ&T9&0fIuMI{EV*N)*rS_BVDXW$RZTRp%lKNisCSftiR2LE*4wIZD01edA9_{;*JvE zR;SZ#IG>*O1%!~Lbj3+U zJsABF+_oW6+j5^8odJ@-8xC2vj!@3zwXuyd?Q6I#SP^xi4+J4O6*Xfm4GgrKuR4fasj%<5Uuavj3y>@Veup+4qjc|X{NL4cL2)po~Ks{5Kz$B+7bK>49y&+h71OTp4bct4jlvDB@02vmoR%+DPnfWx z*KAu^Tp9m6z}Q#%G-WgOwM;mnC}wWZW}Zvin%hqJuWfT_^U&(wRj-z^fc?&dL5P?YF<-@AEh2ZVpASG7=dsD)7E-5 z$Xh;QpF;C)mPq|E@Oec2F*Wu`1F6O_c5m(aSdLMyWP*0%B1skMRP$i`zQ4`z%wKzj zRcVC0kTUO2v#PIFlPVka#6qvM{^G-CLeIGmcb`{E!$@@b^_yv z5!L^!zzBe@lx>>0%ujwgBL+rN%rnRTa>8 zdIz8hliE3x7+sH?z4x#LVcqv>4=Ni_Vmu9~*`zcpuaaLR7i4TMBFfkqLwK1=2F1?V z_hD%Q^{=tsW!;Z+tz{z^7ri)7jlf&PtJ-mf({QZ^g#;k)o_Rf}rg+EUn>VG`XZ&28 z2nPgR@C1>rFhW4iQa^cnkw>z_JqyCtb7#YX$P7X15xRb~{t0K?DRbUy%1|hY&BRSw zD5vhQpCL=g&OPdEESSkFyh};WY??cWrA1jEOl5s(SydIHA2<4LDBI;< ze93gZNI?5xCB;E_W1OW>u-?&9UYztrF{1!h}r79aWE{lwEUoa($F4E3lBi-d(IiDo{<8>XD1;DVk%*uqC(P56YrhM+ z_NB%MrBl~C=Wb3GU4}y3CMNOGz zYQwCh0t@46r?}bH2$sao#M-4AZX>HsZnGB4?~C+n^lu()(hlL%B?&RH(G7#3QnTh1 zo8s4F&Khf_)gPoLtOOQe*2mbjPosD@1<$w7!_No*UMcu|pE}*BPRgg>(4mnv4InK} zWA$IVe?RS)rcGHQsIZE+(9kjH!&;{3u9Qk!CgGDwwBzNmqbdwWPpVNgt;fLS%->`u zO&M=U!H>3lmVfqq=6{x3Jd3nCeVvz97Mx;jUTn;Qve}1?um0hC+j>LRWq$`f!hnYW z3YFPant}$dY3^Z~ByvZ}Q#|!NSBDTN*^PZw(8+;@#nc#sIfmA6tg}0}&5{%ATv3Z?ma&szl9r`n~+3PU(JV6tGp6sccPvW4zVu(TP zaq4u>7xYr!@iO$c7&^~e=rUEPy@1vks8WE%XNobvykvyt8sQT6X{sT!n^y7k0G*(0 zUVl;@sa8R*p_Zj(wG^eVn86z7lWwC4f-D>>r zE+A_BIl*73sen;Tl|$yz6PHLZ9sZ@7`xncmHQ7}mN~&H*)RWzXh0~P!81= z8B2UCLFsh%nNuj|1OK<~N|x;YV7w&R93I!KE!+TuihjZfaBk0X(!PB}bK)nHq#}^Q z)l~~wfsVt_GB70k=o^5;FEzq)vM77KK=03A>=Vo=xR{uooywY=b|dTO*S_1M0;b;6 zSmrOGE3T<-f1}HO2l~&JOlPiph5zA zTy{(d%Lyw#Hac0F;*F-Axx0&cH`gH$1m}Wb2s2d}ekLP@BV~MEfFraOkpFggtZ&9W zbRHkTclcAMR2l={@~@+tV0>y*6Q3QvsiJ_1y*DuzcOugXhTUGHN_`?hF>wIcB<_U<4}GsH=?&|hj3qbF zkUQW?DW<1IQ^hK_1@S&B*ReN318>8H%_5PJ!x2MLK4yDOC4v>#)%CxuN*<+R)YkdK zZh5&^P!a5evI@v!l@6%;Es{vjak5Ixn?|EyO$2XTu}9#>;FaYx>V*=`Rd5}PkRQ8p ze`xwCOG3Vt)8V6=TKSnfM`Pzv3dytCz83L?;X`i-L?gqyoeCD4>UJJ`bA4)LB}`_G73=U*s4+9{O#RDzsT#31QI2+yA*UF5ySB3_EUa zFELxElH1)~$vikjXBYaIek*7{p(vrC`^^0CtJC8MSv2afe}Debnsk0{%-H8U0KZW% zsg{md-l&VrQa*8!nka0JQ&PPXN(IDsj75ZKqD%dduaT-lKp=Ay2PYGUbqg1h01i}B znowyy@<)FhUa&pJwWnZ*1xgk;{;t)bIgQL(7&r}QAJuNKnkA2$ zcUZUvcW2@5?k*uA39!)M4#8pJZUF*8g1fuBy9EA~ea=4j?0sIHdvE>sy}DIzFQ}Tc zXZP$mdh{4ycaI)(%ty62^-aXYU@7zYTK^=8$WXbiScb7S_MNEd?xEu|vk}s}>xCy) zZZ)qnkC{Qd#~?nd`Ml`+OibG9R%aB32fB)f+R=Kf%hGWao=u<2ZeNq8<-(J(lbOJh zB%*uQpBw=Q+%h>*;rV5F@Lk^z1Tgw55vOGcn7I&j7p<6_uZBBxICYbfN=ggb_XjrQ zUr_@DxDyWN<1v{OomA!2@2Rq%+TvcT-SoW_MO-||lHztj%QcR)ssm{{#w&ZXL(a? zInR&P$sV-IZBM6LCMLZ_oBg`vPv0m`YPYOT!xrKO52LQ?D)rB0g~s3R>E#a^(s&qu z_$c3b@R6(;=>;?D*rgV(rUSoN6>S9=i3x7h{#!(n#P9-AADuz4+gdq?luc<56T5tp z#fTi!D`byP*Fh4wOa-(fqe--^%56M%qC?;36?PHZdP(fn# z$zFGLS!}I6xGvM%WM~j#jns=4iXLpXytf@%Ta&GFaXF?c{l;Zt=_S#)6C1O&mIs}& z%#7{RX==K3<}y3|O1ghThN%9?xoJr@FOA9zhUzR2JYqHrK)zBEo2F707GvpL%`2rE zNxrBVkGrN0h@}dq=8H|F1%0NXwV;BFwN|_QJmUJn;@!Pns`e!bS5|+wtuS1}Ea;O3 zs>?>U+Z<2HsSa`Bq+=faCkH?*=3a!U^#?0lQUY4r+ zvqjm>OVCXqMi%GM*L{;GR`{*R{tBgwK+z>0Ar80c(iArq##v{uMzY&TZ^aEV> zZn?Z#czM%?2I>7F%~$C7oRL!Jir(_bT1ms4lIbx=xlz4s7z5E+jG8)VD1}wSs@ebeMKlJT zlCS6blVT)&ZIUg0J$0&@(kZ+nz2QZ*-m40`4A|GC!;zdap*i^wl9dNiW@CfWbagM3 z<}%cYJHJS`=7v}7T?!QWZA6_-%{+p(zU+CEtbiENx^1^TM?SLly>2F@42;NOMKM|j z(&~myqvUVT#nhDLUoU(@OGRs5h+Mjd?G)Yn{PYf^B0QB85!o^z%#FgLVGJ_WnToY495}{=7g8=45qcLH}~I_jMjAnpQ3*jKGHstVh{0q zNG#6PT^*N)oV34&b)|lnJT%ib2iWuk?JAlFb1K^=bX|sGs@D~>2N7JFNQJ02j^VK( z`}7n`b<8r?`oz}hMmVXC;sw83E*%-=*)JBh)ah!)=u8i_z*wNTmL5d}G=hH2up$n~ zB4Eh4doL?t77~F`5I$ZYB_7;Wg(ZI59q!XmsCq?nXAhV?*)>wDUi!>OaJ0I~z7+V) zwo?`%eD@3mxnG{OZT0b@piuqh2nAW{iH!+jJQC11gYT)qpW)Rgx>?LcnxWc{wO_06 zLc<_rYM@=>)~Kk%*7+E^lr5mhDj=f#NPj62M8oHe?#ynepMrB8%Ugg_jHp5nU zq2Y(ku)}TmIn8|OIBabgVAuAEj#@j()TYAy7^{jTi9{&or07k)w)7$r(19msgDL>| zgnTouR3&o5Kw_fwB#hwOXsQq1GVIw~=6rlo5@eSCjJ@aSE>gNNaj%pq zRX9ROa$%SuGIg~&I*q~oGRp2^^$YjNk3%NHmdJU*a&!OHMiXv?_FL73QoNVjEtPm` zL|CC1rePFy+=Wvc3WL?Y>qI)}jCU^>>oEAOst%-*R?lZQYV_F;r}wJX*3{DFIMif) z8Dxn!2fv-0yjV7zgbg(_SB)|Xpd)Fg4{y;izgo-gtVp)aF()mmyi5rqL<>joY}qsl zQJ+0H!@i<3g{xwgF3VAmw{;|cn~-o8>+8GI#7{M=#dE`(vl$d! z@vjr2LYQoCR|#uk9JknN7>V&_qBePFZ16*gL6$xtmx-Iv;+YAxM4LlKK_bAypnd?8 zYwUS9UtZ+#@w->ZZ6Iov`uJz^-lo2qeCpozpR3ri$|=HjGWyL#7D!o~p4Y@jevaAz z|3lsoE*BMz#jg+-B(IAFVdLkB&ZJJo@ulSUl}oAtvN#EG*IB%YPX*&_4(`~ql6Kg$ z6co%|xa8WQ29tJZy15yA{HXTC+*yiD(vu$=Jei^e&M10W_+NDk%Q~DTN08sUi}SzX zPx&B_iZd#Hn6rS(&d4z0T49kU$<)BqP+D`?KvW}R%&uoHAN*+@$IV6hbTw;pphqZx zW^^yaQp#0iT3zIz&!8cDaYamML2=`AY zTGt<`x~UDUvmSQB%LkFhi~_ho*~f;@gE;gqRix;|>}Afk4(3KD0x$2ias#GKrIJOL zyc3-+XIap*NZSlCuTrfQ%Rdte%O+z#efolCCXZG~uE{2$bGrVn0l`ZHyVBgU`W(xk z$@H-UR6cV>y2bCRAnk5NvIRThvc=1LK*j17wK>JaGG5G-2CN-+cIi)Uyb=ppSw0YQvOO>v|B%mL4tQagDDRv>eyXe-&q+liBtJkxa6MWT zGE3~;j>6tf^@H84`Z!O5GI-Y=-b@A?gh|nb7Z5=XJuYU5&b}@su#F$&WezJtjvI>Z z(lPp(2@k6p^OD^73psqN;j2)1n*j6&^G>s9!dM*4eZ(QetB>OGKCFYpL9Xh)uTSB4 z#cRaZGFY`(R}PiQ^|BE21e!xnLSH0 z4jxAffBHd~9HteHAV1~q9!~OHsBs%J6Br%>3aiqw4 zbI&i{8@cT!e0dyrfO`96&N=30TZ zS~kpIzx1it5I5Eh0Cis;Wv2n>-(+n70Q@huQ#pY1h!+YCVD}=+knKjfv{jA?)}PO{ zN7a>cuO0){@+(O-bfE|^Ag7Wtk$Cyz*r*sj49xG@*ToX1$%M4>>)3d54D&r+;oAUh zgs^o(z_p@9hyq{6$=Md?zl=-anH;I?shq`z{$y|nGMV<8eYSohIXPsG0<=M9=kBz* zZm%b>mt|1wunpg;gZbvS=)yl?sW~g2Nf6h!AgLf$*JR+ z>kZjZHpnK)0n!8qZLl7C{q3EKIY03(gr{>~xHM~|M&_PMyQYx>Z7eU^-R3*5kcv1b zcKnp2OStX~@A!e09U3CzB|MJWv7c$m#nv#E^^U@V-t<*k6cPP&6HbpStW z#PjW`8Tw!xO*_d2s{PmhJEI8E_Q8+Tqlkvd2skPr?O^FwmSS9mwBoRnl(j|r91*<@ zG!JOZ&7??Gz{8%~db>ykZR+ zry*&OZr6mWrSSe}XMVwk_Yk6DC1Ms(Kg9R&Ld>9@Mv=E7LLX;e0XYy&S4IknW<;tq zL_-+mpm-Gk1e;a0H-KfP&oJhY!Kx4Z!lr1~wa&-3!mn$5!}-MlMkdrr4r@QJ{IP>m zl+g4;2t1f0{p|}>sb|0`BR#%&fjGTkPi6kxDI;tuB?Q86QLbk$Zn%X#>-bx=wj5T? z=-m(&?Cxfn!IBJTidBPi{>;1uNqYJ4RUDrA^W*)@L;fE8as-V=sg06$O@b5glF}Ir zIO*B31FULRWvW{J_tR_TTX?o^MjQ2iFP*&>==uD zLqF|I0zCY`PMC4738H8?Flsz#ohK(wHNKoL4I2^4YG62bm{rfc|9m!?bCQ5(^KHlf zP%lqc4}a~_uza;mEk}HtyHsPw=zFW?fDgf)uzF5araS{9KHd`7&lqa6XVWQwhdv>0 zTG&eJREGXSg*0)X0C6j`)mGYe&9qkWFndz;Xg{-ohm^gq33)vN^MGkfb>OE9Z~Fm3 zcwDyy?u$mdwdLfM6OV$H>XkV|xuX@uA=~(jVQD!h;u{$_{k|=nvbn~DuQ%>_^fg*8 zc3kHM)p>z99Zf0zgeMiNiPma6#(pwYrYK1-ZHb6lV|rDHN3unif`2kpMDcyM+wk5l z?VO(5SLk3GsNS^p?`M0_Ydr0=E+9H5+6OBodq8Tz(R00b-Ro1zQ|#9s)jJaOR^(av zqHR6x&X)TU%y;Zwt|pc7$tno7Ti+0#C(DULxNv>(!W$AVxo5p5MenOFu>+ohXj_VR z5H@*4FAlpeLp{eGg}-6f0!ozyyzrcGBb0KK*kk6Po|PCK9`E30%)%p~3-e6_BLU;G zoyJc;Uy;Xo;r^zXcih(N7-~aJ9}bW#pN$oUwp!&sx7P&@_df}OXUh`?GKT{VJwhs( zJov2`n{uRvMuu#kl1HS^u6K+q7t}ns6J>FWef%7s`w9o=&Jhxkq;&KGX)eJn3k&Um zsov$bs&2i4T-SjEh8@HsOxwh4{d*B-2Y2AfThl7RBr6ligC?-m{!~ohfViwb&`MXX z@2Nd1%xHvYFqg?p^AubFV^sz$TPocySxNK5i~e~J%@@#D;lBoCOnomP%}3ABC>6O_ zeRv37dpKHo(APApdi#b1ZFs;l5U0U?=p9yx&6}x&`H>|~GDqbZq(FQ60s~@F5j-t4 ztB9GNpY8Ab+>E)Aw$~@p(SDR{rf534aKH6<_Qh_6m-5O;ZN+(DYyqoAMo;KG4dUJB z;$%ccgZz)$uk|a3&34kX%HR{G=;|z}Z)|_+2wU?HEEh^cLMp6IDJP_Ay*}eFMT6IL zeO`X(IExqB10F;Il($yB+plv?%O<8=s7Wto9(Z@F!fNb=PTI$>YZC&6zNgf6rx5r| zg*CyA^sgcw#`pD3a~cL7sR*lNAGRm{OV>-ZVuIAH4-GtU1HwjWyEf>h!Bz3Q)eKe-}L7tJN^ zab{RqZ=q)7OzWcA;*4Auy2f&!WfB~}$G;T}aI7pcZD7=7fAsP#bbEU(qMEl+^T`Tv zyTtwN_28On&Lr0Nd%kBUE9(uecbx}6MN+6|liq3yUPlYL$>w?)O6F@pY<4Np3m4pbezm6W6iggHX` z?&|8!FH`TPn1{~YooX6vVj67y#RI|{qR_@`B^=A&klRu%2!_TMRT;ncZO zy8|r7TJ``J9G%rz5Tq}w`nA4rbkrwu zI|ax`zHVZSv3AhqP}rui(cW|bf7`0#^kLN9uM9`hs9(oSn=>CmyHHUq@BBJFuS?Zb z&KqC=tE8rGG&R52nKZvxoi{BoiaE$PWRL5lZlEZ%V{NPb?z`rfr-U+IRiT+uaDnMt z*aN4M@(vtLKRd!P3bgabR7u0(Z>{>|GdX;l{H*ikZ3UQfj0A+O);;%ftV%h_Ey4Km z*DO8VlRkDyKN{;T-CdapbIS`7(;6fr(=0vOVL67iv1X?GSF zk6$g{fHpPcT(u3fk;*il>YTm-?NJ*H8c8gnE)2LQAK z>N`V(J-~};ZodU^jKgevF@P3Vktj>VZGDpde3IfW2eg4wI7kIo#YL1G@m6 zXpsnHRCmpLu1gCdH{ z{kRcPKGr`ceA#<>25($(N$`HU?y5xGHI*^*a)RgHJve_0icS3>XL5U!mSdFMUG%jm zr@qdVrN=@N&@=UB&*Z$+mt;>qsN@@0@omY0z({#>>P;X@1|LR4Zt5I8PE9937JQ9GenYXLfoL3<$I7wX(Ymax zQ`rq<-6?kasYVzTBYU_|Epp3 zF^*vN!PFSm!ai{+D+}6zx$n}27UmY_yH_i!H1d5T;KTsY?u z$Zb5SXM+S8cLHXGS`Cv^1v7P%T9ZB#2dO(6m4fUMTu&h|4$HdsS5JNz*NNrxF>YCB zE`8WfW8zrtLBRB}379e}?C3j6tJ>iWi;ZuI6jvJs&<^ViE)};yx2VDm&)fD~?Wso; zdGU6luqO^exi>I|$8Z&4hhpvp@Y1hX-(k@OyjVcE9@@r))uVC#8d|YAm}z=N8LDZ> z%Y9nXcVZJ53_mH_JASe2%^wz3K;kQ$A>lUsIsGoJKD~<#KkCS;o`H0Vnb!>+6Fn;o zq-~pFQwM+bec~Cxa5f$4U*qEN{@3E-kO9~@{tyPoAZEe#BipOslM8IOrdI7qZ)+5a z(1D=WLMjUg&T%e;ke7|T*A{q`7MVG}tPKo`TmZ1Rj*6%HMK2v`$Fe_&+Ss^c;xfKs z@dl<+6Xjt#(%y$x@i3jQJ7y3^m66bBCPIycL=O*_I~Q%acOc-l>VP!&7>U|ahus?R zEABe6DyIt;3gD3XD}d9SwLq&4Ey zdOWR0(jSsJ$7h}8Xiy|ULUJ?Rp^QP~4b6vmo|E0{-vFGr`r(C;y~F*^LG@-YtXo$^ zd!9zoJuQFS+o&;RuwcH;XiXw@{a?Ax_fK5c@Nu>vV^ub_Rd;vzN8BME01p|fl#RW+ zg)8J}Z{lttVPWQE4k@Ta#`i17)yq!;c0Sr)8a~?M^7KoIV(=2GcL3v!!Ny!P3H_B1ifR->n{`drj5>}Rl(MHH40+Y+#i zZa;LHrY(I0x251J&F3yRh;7d<YHoLT9fB61q>QSmY} z*t?LGB(?V`5y=trd#bICtxY0P3d`bY6kOhyJDd3BB2j#?E(5s{(W(Hc~55zUq>>Sk`S~??qU?i1!>#VN~O#Pd1AC7Env!olv~GqC{@oD z>K;Xw`MyB*7U{Oqr4A_FvW%0NlY6Gb(y_LNzu*Dbc&9_~zVf)25^msw9W6NlGcOpC zM@-ILzPa`K?%oO|nBFudk(gq#GZY|26sM83 z#bo88rVnpg>*CB2@&x(ZL>fPzOYP1*Pt+N&crcIV;<4O7zm9o72IvK88SM2b^h9-c z;girReTCtk-JviibT0DKuiEjWM1Jbt&;6?w{gV=jJ2|>rIJ&!$ zaY8Ptk+CXTnA@0$IeC-mLDFnw-0U1=JbWBv24t)%Ca#czWE|{&E2w7S=H%gOX5mIA zC`iUC>FqA9?hetm-%`?SWE>p76%!VQ=p5t`zg?DsTn7B@ZYg#$j$c9F)F9XhsoK@a zOx*%PgdXHvLW+!4!@}F0j8)db#L7bK??>^!A7y{hq7Bh{3$wq~stu|2ZbDR6NfDZ|0=;?k{0*!!xfQ*QYg^Y|vM}SK}_uu|Ke}lq6gvp2TfQ6=j zg28}>#ejb9f+B_ynum0ehL5L1sv=PSV*H_U|+yt zU}C|OW8<)^YM8jh230r2*S{Z+wVJoqomK@ddj@DWo!u;u9bI?=LE-}?cXiXgEgldaw0 zO%_CB-cwSeY4?;`70?Q)?Khm_RxaLFVG_|ff-t=B(UQ~KtEoo-d;knUHFnbnwwA~= z7zz$kR2f!{W^N{G(~83)XYC)MVDO~GDVRLsf(8N`>f5NDM}7F8Ym8t3CXUJhSpc#7Ne&Yo=J;RJe*m!WKCm?oZElOE^$mVt zS55|?L@X=)mG!@k8}vmgmaEO!gWN*lCAyBTBwp-vpDj&0C7apz7tZPTlZS!_*zjtT z-uO+LacB3tw<;;A7f|dAwzB3MJwu@&3@YV1h^1Pvg#M@`=#Iny5iq77GHe=nwqx2# zEbg#jjyyw!eA+HlbyF;X*qBD*6MuZ*~)D77l zo9Z3>EIZ*<)||a{k~Ig0V=(O|J9GzJ>EXDlJI04c7JGtC+`LB5a_L$WxfEUEm3A|Z zQr}*MCye2O!@!{#Hjxu^56@7{3$~#<6vip?`_12cX^+9dnpNmTt&&IYLT8<9C8P>A zoZK~(mslUt6Khb=CI~9xLY|=}8475ONCa}))ml2fru8a*^J2VWX+QRbj~^{|<>XON z*{!n0^ig!PQvsugMtYWP1f`}8hWeBPjE6W1`_#d&=u&xLvH&8`78|{DF%&sfY6F&h zOyLg~pi8*`I&Ilq0n5BiHqBM;VjlV2 z`d_=rY1SujX?nuudOPHWZ@Ri{a~l)}rQ9CQvNkB!NZVgNX`bJ6?-#sR$zfcT`IZ#U zgX!sV)TXBjd9hQTF$oyM@@DKOT%=B6M~3~Q49A740lKQ17!@!yQqL6h9!O3B_6Ewt zm;X@b+(Y(Hr{@+nG^FxU5cAiowu#XPmujv}+3g$nXTokqrOS&JaHsJ|=%gTG7-6bL z6iK|hWp)LZ;2bI~VLoAt6K-2I+&n{7RP^n;E|ChmC7rxXO~v6bnSawSFjcvo!5JF` z+5WFu18&Ht`gWDUYi0|H=kH#L)~!+@95Owa^!bAhVJO&yA5!V!9d(f5NG9 z%Pwb<>!mDDo$*}QcgVh$NVH${4X<_7VN_jhM%DS@=458zE&&{<&cC7!ezc?&QqEkt zH?wRwnHtOCCpn^y8G5f04#VFxWX@IC?N43*Xnv#@xZLaTQfxu3P<>-i^Glzi21WM= zW~MtU5yCZaPEISa`Qq{pf327Df^4B${x&@l4{mZ5H>c*XFtW}~8x19pxMht()+RSU zdsMHI;3{8HDy1!;riQ2__wH@rmB_Fxm%}UnS|piTa5_V-+3=BT zt}#E%_vlS9pXOeV%(xI-O3t{YRT_T{J>7M+NmLvNnh<0k*4v^X(R`e(a>O1n@7bG} zXpc8kQf3g7NW;Wp&|^|5pwrW8H=g{@m0m)CJX~(f* zBSnS$?3d73nn?F~96-5~#Xl)r=PdeZ~V_x79aQa@(%F z>(N#fct-+=`-;>|`UA|| zn929HZ5|5!+9P)>i7V{ICMV{Y^aCK_Gt{}=zC&+^fCX#Z2_e0ImXBUdKCi}0>kn3P z&P60+2x<2yEu{Xp$@^tY^^jW6s+0O|5?c7xKfSpQ<#sPbet-1Jr~OMy)y+ugUq$}n z%U{Cqmy-N1LxuqR!;-~F`#}Ug%^x5P9H4}|pQzH00^$3w(m)5ZUwD>sdz%5kcP?)L z9~ay?0^3_8E|N;`mg9H*Nuui74XcLk2yR}`XVzdq zc$D;O!ulR!Q8X+ro;|r0T%<_uD*0 zIpfbz*jG=OV-rssC7+1)q*{07d7&62{x2y0k6YsuPa-Pvt#mO!oXfZU_nIErln6(- zx4qmpD`B8|BCI!e`9;`-`ns{Y)|uo`iu1ckbwW@*}oU|zqtNS5c8L;|B|i01m-Vr z{BL2*Ujp;LPhiSUPe^F(H;Piac|l4m?^-`E(?Ur2$&p5%X5JF!dboQ2y4nRyPysBF^4V%hWr_m3A%3`Zl&6{_k4%lAZ0_k1=ZIBawbEh?AkFLt-hKP>RRB+v{! z(%Z2T9<{#QHV}3@rlxhHXg(jqs&m9{t?*cv6udpN+|&ZZ?+}V)qVWn!7?v01G=V87 z{Vf`t`i0*>ea`&%E&RvynEm$|GnMhroE5z7A%V44{web{K8kN3wi;$vhN{zr_c*VO z9KsF;J#hw>vUccA-B*5}eEO+J%BQ7Aav@Xg^9w9tj4mP7n}U~rG`2WQ&6vZ9dqFw~ z(EI;N2f>F(Qqx%FT?QM<8FF@g-#hw_jDmCQQDDq4ho!qOsV->kuI6Ydr7UAfRX`~} z$dS3oZrrN9y=)1?oWNC(ufb(FqGkEGkxsF})m*W=lED`+nwC2+q7##znw*iRVX-x* zoY9TTSu;Dmtjj<>rPf!biV7+pJ0dF`QBss2p4taso)iwRe-%kJaTj!o!6RFh~A8!*ipQuk= z&J+JbNifqI(G%OK8}y#CiWomqlmCxtJzr<=?U)`q3ejzp9#@$>xB`<9*~zTAYmyVh zwu>3seA?w&(iFFC-3qER1vF`h^I7)5dU4H;7o!t28`^3D;vT`^DI<@F0J$t4g;e*i zj|d%MnFuudPC3U6F4^I{Ej-tHV5;Q4S5Pv>zcYvP{-sEreT9;}tn6U3Z$Q_g;18v* zgD;NK+*>Q$HzWY?S)$i1aDI;UhBHULmWK*_?J4i=dFveKZ%*|m0+|)tS**QpK~?M; zR`@-`OO?&}HlFjsp2~+$(X!j>JHk(D@+^!F%ou)Jrh10chScgK(W3bQ5xoMn?be>( z?RGfo4VAREa*S|^{gUdwatq$hgoK%b>rBl&pP|6QFlp|K<;-K8J*w4jzrI1kK@s1- zN_Gf`K{1hUab>dT4DVYrH1k-f)h*QB+(OUgfBD9+2XM=!+`qoudEl0^e+&W^m1@_p zVNx|a_5?Mirnh1L9F4Xk4QbIV!|Ac#Vt|5XfA>2l{`L58MdbGtVu>G7)w)jKZBj>X zzjg-i6>j4QRjKB#tK%vkH{sFk!Y?6lr^f%ES}eX)I}B7v$Wfu#gOkM|*=9@zCuxc= zPW5a(^(eI$0Ch{hPZM>?%GzCj{?eppzM(MJ~Ba1Gic&^Gxd0g)6M{^KNHe0=335Ag1)Rv?WdOnG=f;;^LJI9xi z4!iW}k{Fx{$9-DNLR}|32FEZ>u&c`UW?qfOx)I8S_QD+SwHlaZpPu%RCFU7wqWx~| z8EVt7YwS~bBbY^9(S7)F<3VX0U@6aUfLsi8uapHma7DHv$#p1LBGD2@P%xb)Mh zZ6b)Kly#9Qqx+AwTp-*u99@vdx9wJ+RB%2_P92aaEG#tvdu6vi16aW58e20Q!VYgr zX~Mdc3vAG%$PW!j*j$shp`;MC<+3Eplg^%1UhHakwpWSdz?31Zi23QQ7#q1A{l485gGwcw_p*e1$_xO9Y7I zdNPA!s8_kEthhW@UP$u^?V4=ZT)A94kjJ5hAQ8L2i;#3^NCM8p&qx8V-hy{)6ap0n zt@xg{hgDGzuY?`N?97JcB|ngU>*discY5lsWkwrEtW;y9uTrgVP2aBbNpSQnv&^MM zkv7)a=>Hy$i%rv$ByFeJv>OTvTzbhHJ25}OU>^-&n~mMy>_vc8ZS?1!au?L;S+C+$ z)GP{3Udi-(pnU2J4K{Su6iomAMX|#lZ)nMEygx*Z0z8MgUs&X6nh;V&f1#~PNjZ(# z(pjd_+PZvBYI@JvEI+74J3nO(r|}8I5?O69^7AWcQ*$J>!Wt!(Mu4!rMFWkgmIUL3 zN-PzFy*_f1g6%ZJ)3AoxiqxfT0Qa?2cASFtIFj{6#XwME%Dd*3GC|xe4L+bB1<*`M z$mRfDR|j{{wu)#=@e26VQzCibTss^spa>SXGt0#w{h-FzFuA#`p`q-O^F)hp8&!S8 zj(xb)#{CRsnJ!t}B9)I7f4IX`aBr7q(#qa16naBGCb=Jd7LSkD-^6hzf6D_c^^ zP4gA~w2p6lMVyaMDKo~-K!6s&GQ*r&mCcv5*-Vl(2j}_reV>v@vmvV8SyS`nT~DuEWvas;2PPxDsLyP38OI8lNn0JvRS2!|6)MXL_Y+wA<8j%3Uu9 zkXra8%+V#@KZc|EBMHcA;V#z7g+w7%(EY90y{8P~7P2MD`7?ZXe2ADZ<&zEfIP)qq$Xv0aT~aOcFgUy@78>oNik?@1<(=<3Erh! zD4Uhvim#Fo4sFm_t|qh24+kwi`=m)wm+y4MwDDdUg=2kGR!lUkQHU?~oeYw7oWn=)f!4T<$% zDE~b`De%Np0#rsYsX#x~)bEqwTE(ZAYTqqJX@pVwZIM|jhkDAPBtcnQLGe*Zi_4TQ z`F`j8j-CBgITSJOpT{v6MV>Z}wuB68DXIy-4aPm4>5mblwR#&wbA|pq`K~uscm3K4 zf1YSAE`1|xL|#M6z#T6&T)OrWw=pseDP*G8x>okS=vRmtqNk zfUXjkxME>Gbqp@2O>b4h;-h@CU9NRvqzZL*Te}b@l@{%qq-Jgt!DMUWv6|daN6cX^ zuHZmSWvnM7aG)`{itBZT{8JwRKpm{HI-;I^80sU7rX3}r31%o8e<*6;Hf+_>fkd;~ zSLNKvJlv__CbGUN!%P78b>vP^@LMuzirHH=oUUugFZGwKEi?MDd0i{tLAuE;N|!MQ z3;X_Kt6bZztLrHR*Pz*Q*iPF|uD!mu z<5_F^(dXw&ijX3a^iMcHo}pNoCnx%PLa%_&P|blsg{7V*C!En2q{y+g+*GwBJ$sn8 zSUCgrL>3V}`BOt(2L=1yh^@(fLzIubo%vp-`-3g{+jMTjw%i;g*^~{$?lmbt?}mZ6 z+pUBOy?3_5-VRpldkag5&rsQe4-lN+)*W>Zm!gi%=2Iw87--ftppeusbKGW<;^DFE(B_f?N28mumx1z+05@Fcu`ATS^r+Y7+Xo}?{FQBA+Kj?oFhQVreI zaBQ8@GWj`%cC&-Ty`k9*P8qPQ-4T%vtE--?@#6M{j~fBj1{eGQA_q_P#AayrcSjr| zf*3JW*$niG)wW+<5-24e#T8P;zJHS-J+XsjF5kBru^=yDpxm}UKTx8}km>K~Jh`th zQIe=i+7JI)xcTeuw+Ti%9FRcc!C*Ub%ayS!9#`n=-$TKZ&qTn2+>3CWeITdhFV zk%CQQcCM?oPj2bTBO7VCZ6r#b@*N;{5+XciEs4-gGu=!a0~uSas-J-X^xh!QmKFC3 zz#uo3nL6k5bctT-$KBJ3I-_%OL&gKQc2mWlw5CgZW14kFh>-ptzv537nK(Wh47p%e+vzPNd-Ps)_T6*@kmAa{qEb_TNQ|ig5q0#Qr zO(#INMKHKzO*QveiR0uptbG6jqjz0tDB5^*Hg?pHFi*BfDV$~2B@sZ7q{V|(o(6ff zdciN7^pY>ja^-ROxO*zaOMXygCw zy3(BIJVTjsaUbb*E#>@FS8_{t=%=C13hpig$X}`@5s&53tAD28Ys47}Ub699I6EWP z%2ltlHHarylIJ@5fPZE<=}W;UythyfWZmWGqs*D~DgH@eU+WD9&GQvqI$r1n%rK+~ zL5F7*j>lATlbCIYz^eUN`0hK$8||)c31*$K3!M4X7DC8zd;;e;T82W3_%l?$NOkhJ2w>zNjgT$4>CqamDMP{&v2N($ zt5LdjQcC8K$1%X9vS!2E0kfNe3#iwtS^4(`qC+cbOun1z1b_3#ar3imQXSG_SYisV z&^5P)h# zse#DulrH6(^iLI6S9gpHONw29Z1r?7`q6(kN9FdBSGgiV>0YPaxvmWLpAf`4ZO z_%E2_hDmHv!BZ(23r|J2$YoQmO%3`}_)>HCr%3Vp=||iYZDO{Z2rS143>4>uAA^y& z)N!PMQqKFFSq_)s@Wj;~tyruh9}9{!tQgqcXba4w1K*qSX)dO9y|K-GX}h>1$xcLp z`VG2KA-Q;Da3Bu}v{zJ#IURxtNT00V&ewbOja`vl=|@D!Bv4XPvbtbBJAknOXHQ!e z9Y>C#4zn+^%=e-RM-Ixn$u>NVv49pb)1Tb0nUV>;|2V0=pB8#GnGS0F=wlN)UbR4= z%PGU2=Fb|uWf!~WAeSz!A|#1Dp;Ri>vBJZ}&i9(zQBeEL!QRENT+his=^bj9gp>*t zEZLt0{dZ+W?D}1QV?JDm`96|2eUE|As;`R4dDBGMRil2!8WR1vmLY3t-DhC>pDaS2^^`}qgijS;cpIE?nla;7H&Qx!_Ws9R zA0~DMpQfr?`KqXCIrjE$u$(W*`7hY8>K(?fTPGr44H5((%pc+$HP87O)$OHKv28zD z!d0$Mwb-q6xG6r?aX&U?Z>-aFb*rXZ5ej&A?kD6gSl`Ww)Z7cvrYNUB+{rREmetlu z9vOff{B*n%l!b-h6RrV7$KyY<7tkuw`{#W4j1ocq+8)P-)2Fi+8-^tGVc;oH9=W^YS?@K`rJfNVI^d`6M!Z&&LleZT>TQ^%?ei}>0?f64A$WSlg9|^jOeQm;VvF_1Y2mS=Qz8S=+8 z2g)!MK#&OREDO@ZeLu6t_5}O=cUJmkExH}@b69N;%+bi8T>8niRnZN z`V|5$Qa|SK14|sgLCLzm`9lN#ocOoP`$9FL79--Y&E9GZ)rJ{6{)0)+e_84mj}?cq znVWJmS=+mI0c+Aht8c6zYyTZiT<_-5tTVx+il<&2Jp$I46R{B~k~!qV(!m)Uxa2AU z&l%f-b=ORAa^G~5E2zLV+2BuoB{-a=NA1r4bi0|Pvq+*`__v2%c0q1w?F{Qtc&eZ-N|ZGGGzaPygs5r_OMA-u-`Y} zaZ#aBv33ydD8r)e2x9)`Tp3Vz8c6*$^-!4NlX7XOv1chZGGiY;Vx1?hoWC0^ONvXl zvrg&`G2A+GLW}-|W;p_ycXK1P1VVgC5WoY;F8(P0S}Sp+_lebR$vZ|_m}_l21ze_+ zvedpG{SLgO#hB(Xq#Ey#RRIMh=kaIa|Cs)_o%Opd#tCG7CZNS?-?FgvABgrb@ffzO z%Hu79Uz>6Hs|}nj#>^j!(&q8^`yd_nyFdS=fL|$E4LXo${{4T+yx=N8#*0(Vi(k zA%nDwDCh8q>HYTHx9(dvVvf<)KP{zPZB0F6RFje{guSq}$4AWce5{L-fbukT5*#!w z(zQV~LVR4T0$N3b@@-iHVc0fFt>v|~K>3`qBwdOWtfAHbpP2!{T(7ALwCSt5t2wI# zftsU|S}4MacmLXmf4cJT`K|u&RhiFsK&|+;W?d(&wfe*jnq1H3fhS5q}qJ zUF*U0e6a>*X0@p5^XTp<3L*U9A)umNi3bMS%=KTMpo%wV?ApNvM+F<+Vq?lP*Hr+kLe_j-m(LU@M41k&D$W8HZ} zUifj@+yS82VZ1Gg;VIyiS^1*TjZ4h)W$IqIcs?+I4GKkK}?z0lld+yWy77l`+rl@dZn=>!NR zbP#kbbP$mes)n9G5JCtYMLGe5(360a(1Y||UYwb$Gxv9A<~N^v-+TAH|K#(5b571a zJLjym_FDU_^<8_>@n~8q=P3)Y_CUA?r~QVu8$4@N;BUH3FH629)3HXX+y?0*uda3; zNj6OyP%6iCI4@YgEavEXxyU>5y7j%fwnf$X?qQJe4-OgSQex>HkDB|JI=NUFwcnah z^b{BJJ5R@&A`(YQ?E|FR7l+Dqj6}!rQa*Oj5LWIH2exvgA3QjG-2KVN48Qa3ickAA zwcbBkRYMt`wlH2V=U{|3EH4#(4!Z!Fe$a; zXOW?yIl0zaH2V;7F0JdZ!CRMiv5)~vMG|O8apC3s5TZ?b{qmIuDM$A*`@7uCK%Ez} zAG9e#%=sRC0*xCNtX)A$UsBL|a~;JgSaLfW^%(6bTK`E;e{g!FR|OaKf!wN7wHza* zCVj#k>E5I7@$%)hxQn(M5_I&n$m+uqI^?hkj?+vw*(cd{_|BZGlIpp)8pvjOR>~B` zw>!tpYv!(jP%ZK;yu`<1@?xyPN4h#C% z)rVCcIP#+6xY4pq*!+qHAB<&UR{@qQ8)oU4-( zyz6d(V%{!(P4G)scSId)?WUox@VNQ;q2wpA8s|j|4}^| zm38?|OZi19uc{3ZRJw<1!aYc=5nLX zed?oUq860Z`3QN&a)#-I@Q7|Whn=PaJwT#7GIy>djmw^qPu2htl5OdwtOo}14XR5X zoG~&6aQ7!%AB!;GbDfA#GO^30lhEnK z*;R9ldCJi5vEoS^J3uNo(5G^|*ib5`h#>f$l|DAgsnapHJpMLq5ka9#8l5aBGmc}f zCPcm{6q|=&MMOZ3!SUoV*1&Y&OM2Z{yH0DekjV8?qdqCK1az)DwvvtF1Xkg{&Tzsg z8DGcTqM|HtzOT$AA<4a*-xwB7I3HZYgvy#QY@Z*PyWX67WGG^aH1R^*zDxU3|I4PH z0Ebv%zrkLmCB4!&cHdEMX~gJau8m))>#g&1mC}7zQf{0a?ZslzjR)%+2J-4O9J0BQr5 z^{Eh+-9Mfn{U+SeVeson2*s{LbA6jK6L3oIJk9=g1tvY&Tag16c|hfOHO; z>sk-Z=3#TXQ;F*JNevGSu~%q&zYp+blgFneXZcF3z8PbNCMC@3^{_PPC{Hlyyb%%B zj!!ly2x0n8F*tOcA2|T^J!WmMuc@0G8xk-Osc2F05UsAUw=)S(%}hVF7F5_x79$te zl?$9tWy^N#h@bOoY}7TaR1A!BOFgGz5maajw6Q9kdti zRxV$-k5-pgo?p)I9u(8oLYuhe>bfnGuK=ONM^VLTJR~Ny;JA8Wy zdv^y|#G4y3VgxI?z>_W^AcQnB|mTFTcp*$9?-z6i9hy9hv)fPID%!CDE}~ z-6;S>g!@a*$9)J8n0IAI4%%xXG?ik~b?)=OcPs1^3|Gs_EaEoxfvSIW63VeZ?J0XA z$K{7s8tOp#17uH7gZ7?_-b(h@0Q1*shz^F@wT{UI;vBl2eO3d&66%*T?<2%4G^HXm zDBxYKTZF-|Vh5Fs+~RCOW+kQPQP4~W)({U(F_4CT7H#gn8 zp*I)C62to4#>aiYVbIgHC4O3X0M?*oM!2K-xPS2QmEfEW7s}wc=}K)-J`Xgw&H&8= z#nIYAkJAV*ZDs@jRYx6 zybFGwUYHemw|fA1FIR;7{f|2(x4lL{*dB18&YP>wMGP6Qz_kdS`{MNaZNViLGChiW zljUf_9xocvi*=2IrD}7LHk^z-g@~64msxZiJ>u%RA18;Qr%I!RKati`ozwG`r$HjQ zr7>@#n!u7=+{`&e3uMSy@@i)vFxd13v0MZmAx3v$XG-|p{91ZB`@F5@*%C)OKf&6 zE2*uoV({77!)j$ixx8{SonaU3^oGnL{!gJnhxjZ z8&eTh(&n(9S#K|HaO$0fx4@Ivl!wTl!JRCnSk6W<@pd_j@gh+s6c)|!JT$ovSQVQ4 zV$z|L*HVnVS(#@rG;I=8Buur|nZ2P9gsqWQSV>fw6JyK;>OHNAz&{@!S8@|JqC=|_ zv7y}qB?^7DNnluZthy1J*OkFeiPqtDEDv z)|u0-8nX`=yDz>ldUXa7!0eVay66T!4Mg_v!`!BgVjMH<98Co8KrK)pFGq^$=y2gP z){90@P;{fx-z8^mI}C8nI;ef-hNc!6_q-#323n9_>Q2Oky~%nH<(JQ1Cn^B7bHyTa z8$dy)gK^^!n5lP^Xi{>Ngv>dptctV+&m!uxb=mZw7vI^t#lEM_Vi-GhjL)IOW}P>& z-i$(R+nhSkP9Kxd0`N4Rq97bCtowwOe~rrkMYmaMN*py__gF|ZKgTm#WlA^i7hg*$ zPlX@a5UqBoL1!nhbQZDh42`+)CqsvT=qUVWJM+CZRo z@LKD9r38hMSmw6)y_eC#4dx@Ijl7nlBmK7f0E2zN+>Xs{4So!x>ds(;UmU}g$eq@X zG7=cUf}o|^`5sl1uRutcn9)N{+2oJ_5t}#uA zgEoUV8kaPue0TT~V$amm@n}d{C>q)#$_9H}%Cwmg&%uSD>+DqDi+G!K_?0?8ZQY%j z5~bZdq}{Ya?fJCU#=Z2=`48GgF=BVrHb_lSO+_&G>YJ0iP9ufVDbthjyaCtp2rc>g znTGKA9|y9UXqBZb&-Zal>FSg@Rd`5E9nnW=<*T(cIJS;walRlmVtXOz3^#L_p)@9Y zHPOS!O~X3F>8LqbGl+bwY|N+5u_YjTOo>up@96Yc$#dmA8RrTu#iG-Bt|y@K*UN=!ES)?B zP)C#)oe~ngoHi&;9S-~enX?yunkfBo=E!#j+CMbv1viSA5+%+VO;v;@D~`_Jeegcv zwe$n@6T4`a@&_K=NbW*nh|Q>R_UC*x`m8-fAIo@bDEVZ`J>*P786RxJBwnfibJ6x= z%twf+{;8R>$&WeNMg^D|KqX>SbPj5x>>gt+eLK5*WrhEhz-`9~p898Jo18_GgMK~X z64mJLRwMz-fA*@E2a-TEulm(z!+KvpLx+E!^8pS_7ni>ZlVPgXUM^}&Yzl`9Fy?Hd zNI414F#IE)2Me7R4hhMtS+?64U}B?+#dW3^y4*^BhNolhB~MB@MkxB4g8Yv=$Ov?( zYH1MSR3V3J#iCRM&j)WiXb{g|5cr_vHC>ZB2-^q5$ia^i3zcqKyFcrSG_Oc{o{!sY z>rI_AnUK~$G?8_`^}V7&v{^WWpJrzFb9{TY{8<^@ zsjEEGY9+ZJdX!)#mRA0OFutK@1D=R(_gMbZ(c$Wo*ou%(5SV$&SqZ`7$P6rmG(I!@ z9Tuy^H ze%#$;AX877J8O*2OJeoXrq-pyCyPB=>2wuK_jZysI4q>mOGZ=nCvxeMDc5GD z3^s7p=z;QeM&_KpFsxFA{#1?0Bz;j%c+uGQ0?+to)9(>>U7mR;OY@A{Y_6*d#-lHF)w zsjB$fmvhbm>8^AqOw&=-8`b5s&jE3abpGO_n+fnOpeRgz`Yscc;f^Leh{dc5DN+`) zft|SysL$sTM}thjKt^TKo`Ni%Xx0)_gu&*jG^@W)u(a+(PHEFkg@p{FpVeQ@LGlaIDZ>`}HT;`hnZ@EVg1rjv!kz{pu!UCb5oK$29! z3^1}Q<%&V!*sWL37@NA?ZPSfUvbq*LC(UHVXbKeR=-K<8J}4^D`boY2MQWtFyavGo z+<7(r>DiUo0>u7 zbFpGVoSJe&z3)T&Cg|U9wiD_T zY@GEmFD|aYw|RLUWY~M%vM6&5ozpP(d)0U-fE#a)1(hXZEW{;DqeX4+E5T72M6&^S zScaguUcCpoh7PC(Ij2pV*j#$8sYXM+-nV?(ln*ZX*uyjx=3bQQcD(x&vV~+)AccUD zW2CB16$;(bRB`fjBvqEk=1Fz3(&9dTrXKTef>Bk4{DcC_XuP`@Qi^FRH^k%3_iXti zh_Ifa5Td^Mg3ZcM!zv$(21Du-2^pb-0_k=7MS}X+7Pyldf`5_I3V?YYCLvHpKTR*J zk=dPL*pFR`N{MsqRkUh0$X6koQ4~M;B}AOhQ+%U;q5T6?JllaTRhQXAp=M6+Nqrt8 zgHnsFBNzx=1^QAoBW@9ttX5tv-AdF)NEutZElP!)8l! zXD8P61pu2KGdIVJ`JziaWUfb$;h03iUF4!bY{GH@q!4W)X#298q_q$5YGVp(xyL<~ za!crLSBN&GzU5Bz+ZtW^(@76~KYtRrkOVu;XdI@ePN0kX9K-VHpxVzC?oX_>M1~aB zx3G||pd8zW!OjbX)c=gqO_BIVc8UE((Nsus-z9z{)w^7d-aq82dy>lQz{1bGgvw7c zeF=FR%SJHF`x^vqhfng*?QbW$2oG+xySE3YM+6TBL zaPni7bQwW(Kmb7QOD6}U;rcX~wW(Gj4Q5>)VX8)h8{IsXn44AFlGA=PR6NoCupOka z8^Ime-yr7GNvC?ekc){2q2!mkE<~CX>H$Y+0+yj|6=u&w*m*9{R`dM%Lzt59yIAtdM^Ao2b9R3Kt@X_9g2kV@Y zynQpB0C(T)D1DWJ51nmQ)a)tMS*z*`Vfcb@_#G(Hzlm_rm*&xtRU2Lue(cqH{g>qh zLI_d6KpcW#7DdAo`vBD^PrMEozmYLc7~WJ`<{{-f?&O zyUJIU_8~z8;&TQj0n)7cJ5UiXwmUS-`{Psw2_K&N0)JOsIX=N!uGHeaZ($oPd(4>M zK|?hMQk9Bs+ia9nYH;u{@2rt_+kPXVQXGKckrES;xs%h{T0{%=3EJBh=2sT$sUb6C zj1VmJrhghtpBSpHoTa2{SIqQ1pYX?bb*iov*iAlF>v>l?T}KR7b!joCy3(HerD4R z!8U&s1JBwsN(wOfxVT7fVUg1gj7X_?;Gx<@E%u*F8`$Nfxi{J$?qtN7=nookuc7No zs`4sTv(q@AsBW`Fdf5kjq(1L!w|1;dE@)M(7L;BWcJOxeSu8lqP!EFCHBf2h-~WjC zbeV}U!ah9RYS;VGLEW5x{S5#3_78Jie~ z2&QQBXOf<@_k0HjQ>0CaV&Vop*8=sN?D+mvEzl(SPtsd|!h9GJzhFM_qym{}vnC=9 z^I`LEVm>lT^mwONawYDnEB=U12rp2UZrZ+Ia&aO1T=a3_;B~17C{mt7az5>a7ep=! zXfpU_RUot2!Hj2~>B5&3M2?!VdzG;BO5-iH^_yt6uAe0*+Cn*a>Ld3^C?l(BArleQSKj4Aji>AR!{tQR=6E-Uw`~{m85*9lNy)wYYBfRSLpTcHg zJ1mq#ys$FX3yZ(XW#*ugjxp5-IX4WsfREpfj8AEoHv5BciPN9rNjR3Y*96B;gi977 z#5SBA2AnNlpHFDN9*?As0LiQbrDm1R} z<7x4?y>spE%9?R62nOU!>e`_NMm&y=!IbX-r{@j+!9@ENE{C_^l38nNKwlQL?nBaM z0@H^ueQH7A5&Zk?k3Of1t$nquTWBfBgwGSB*0oMq_k|s2g$f)lv%dL(KZkS-~O|@ z)SoFcA)+DS>5jYJfPYV2{sJR4iWOn+jygB5Raeb<{Z|V*VJjYu_7x3>RDR0;_=R;| zk~7})pMGVDKHi*HU%uBd9T@7n4>;j4y$^5&)keCPGe6Y*vXIulfXn}b#6NFoCO!kd zlKP^xS*;-<;h|jVgPRsr?KFUuF}H*19i(lXC^+nld_;cQQ1kI?c|uR~u5;s`I^}xcmZit86Yg&B^pNU?};w_y5mFe`uR7d_j?B zEFD}2(^BHTsYTDMPc*yl_LJRro9A%8ebDjhc!$^-cr%|5o{g7NmiYsb-)JW}=y2k@ zI(6nEWA{0Mi=i*`BV zKl*5;KO9tG-_Y<=c)R)A{^Y6gQ!CX^9BWiES2%U2hCQPi<>}2j=H!3*J+`}ApLQku zJ1VTVVsHoLQ$$`$F)Tb0)DI;a|WY`S7X{AJqvE$C*N=TCh2Nf6HR ztvFYxjHR6@uwCQ&<$Od&_Ci2XwJrH4A#wUi5LzCx&3A50);bLA2DSZs-qN0Lhb!wd zeElaOVf#rCmeQ2Bivy$<64wGBEdO#|JpSO3s~2rsZai84xP%Y~o&%bY?#v39yOSNj zuy?nNQfkIms)K(1vASu_2oQ^gD6NaiK1ts({hW}9|AxR>_(&lptj3oTCB z&}ioW|0c~6e);i-KMky-KMkH=GxWdW=G>f=*SGUKwrRY3`$g;csD0BWBfr%qzi1~% zmiPuMB`X1xV2KiW{VbpRSJ9(e`&l%95k0F$#o&Ie;3>P{;q6L^l0`O01vQ!;()p%` zB!8=in$In(vCKnmW1^AcYV!lambv__+wp2svYFpTfy-|>`jX6{VXbwBaO$*3}^Tqn#$v5zJ z5oQ>h7b(Mm01FX1eN_&a}7>{03vLqcN_g>DTm|`t7~Oa4{OPK0rIc zkAN80$;JccNEQt4{w1*37X;2zQefY`!`lB)`IdQ@?c;twYv1;Jx#zASuJc?lr0Tg{ zm4N8&woefvETexIgOL-%=VZ=okys!b0h0QwA;W7HAK7%*pSb zs$+^yA#S>r)5jvS0~pTVvyxPf;sjo+3r3P>4Wi=IYM;;=*@zj8!x(AsCq(w6`7lmF zeF3w)qIu+P2>%lDQoHxP2RC1gPAAM;U`=`|Tu^T%&SkAqVUg}8dByrXPR~H+gON!s zC1nH8jxrp|?X)OAciRnX6k=t<=jUwJC#94S#TeRG#mKP{%NmTP7@G#dQfW7GCax~H z|LrJGg}0}2ehdhAMyReIY9S1vDCw0@anjA_zx?V(jP~BrOrxc5RsS1opXXk&{Ou?v zwxJ1>F4rjZ=!m&~uhggW-;GOic}IcE&dpW^hv0((nj-TpLB@l|CqF@jj1#G@Pq!if zO@&5NXcdRh(5UXjPW@dwHLI0|#yk8IQo*Dv1<(7W=zZ98-FIJwN64^#Jf8Tt?RyrE z%k_XWmsqFKHby{Hp(7e&@@#v;s~4^!aVgrPVwCbo%eZ zzbWuH1^$aDFpaJ1cs(UXOgHH*ZWFJFZU}{4rw$~hQzP9QnT^M|tb8dYdwiD5JnSet zY3S5K<{+zhRm4h)%w=U%CZ+=!=_N7kq2dIj=P0gQ)9N1f2pI3^$=!Gk_C2i?{xEtr zj<}H-h4*e8;4E{h2{qWkCiNAaC}QTtfuf2`qB`N|gq1O`QN7O#4QSdT-(Tmea%p#jGJW1@S(Y7 z_=4x29YU@12IOniU9b2E@wc3dGAS9Z7Ywj$kZ)RTb=uKsoUkshakHK2-nlJMCH-~p zX!f@TvR|*VG5*>a;p^W21KrvLof77fIoGbwq>-2GP`sQ!gmDwd%GtKCEPB8+ObT)H z%W%}F&zau#6`FW3T_(kJRTHYXEP&|IRbNO-zWlV#$B64F3w&I{5#QnbUDOiv#|*%k z0>eJ{h%;>!&y(uyIuMI@LU3Hyo zUItu+1pE*?l=5}&iSD-s|NrXtiuBd8OoxQkp-wSb4%IeB7^EyDT4}~Ut;hzR+Gn$j z`*H24d~9_YnBXF`B57b0Tj?iWMgU(Ag;I3s8vJaFcuM@tLjJm*_Spx}atnu)>(<1E zcYtP({`nXHu$H*G4;b9Gye=Zv=D^0rZ$G)hg>@U(U27Aq!>cUD`=mn>q}$UR6z;Yb z!h<{|JALb2L1KXhnw6Z6M$P?wVx&;}0>hqVH|NQrM9VY@?p61CdU-QChQ{MtX%&b) zrVm}Kr;M+PIL)#SVWPssk!2m&h?r;*t-Io*fwo0bBpJ!IgIT;HDWz+XOT+}$_A=>t zINGEvOw6nfYcnA?mMrq32AD(fM0Hg+Y|R_)_*dRp7qhm;SkAEJ84)1#wu zbX!X>DYp7m&`|N+ zmF3TzIqj`a9cZlbozqsDL1nKY=f?C1<72Y&ugy|8Ij1^dd<6c6Zb#E>?F!F!b{Y(9 z7VMnX5gHhOz2JR#MM{}?zzos5yuC(xFDc&~b##2_1J+_fZaxx{g?h-Y!fKl&A|h)e z-^=wNaD)AYpCt|M+j@mFh|?R}Vpf!hW6qGbOVE9ur4ue_g;!c!mnASy zJH9svT2^<-;aUbBZ2kHUwFPJa0lmwRV1Ndi0WQ@aGu^8GaGd<`#o7mRDDzLs{iR@sx`TgP5r`aj*1$@KHF!aiwVK|fO(5^ zn&!m<6)`Z!T?tkjpg=?S{AiC>T+$lVxC}xIM7ej(ZmRV;Ej@WF8txy!ae9|az^ntI zu(ovy$Uscn^Gzq;xoRM#4_qi*zBW(rV%;r=4wh-XMA}H!H7fW6EoZpyE>@As4*1T#q+Sudbo+qSP zL8rv13um`0b0c}eazY_vbhW$|G6zgrdaf0Es0%6ZaFbceib*I={3f)%Gz1m2G{zP7 zR%!VyHibEs9Pee?$KUHh9hm`Nse-YFN!TUeoHIf~xw-A<(t~WdgjrG>oS9#>c_}!x zQyTh;0=os^O&DCxN3=-;vKutukR4_+jkMnftcRAmrdZlRtuP95}ELzKm*WEaBhmM=c#1VVML+M>&F)3vUJh z*l87W&Py7yz`@+Ta$z2(6(*Z}h=eiV#_h+krNw!26|8Ie55s(A2eY}aPXvxl&5X36 zq84eiDQYfszRXDtTdCJa6GXx4yRIU&4-R~^@Q^FO_{hg)H;;hl_zEg=T+tAPJv!DbcawnF#B?%&WYg#OG zONBC{Rpe5iGcBaet<|!IZXu(V0+sYLBqOW^s#t?gqn+cjG|$s7GU@1YEd6lH9(0r} zGwCudEnX&lCh1Lm7|=9a4Lm3+oaQCW6m8TYH_mjN-m6nmyW!+u`;hGMq7w|wYdoy(p09zA_EOZq>33; z1x(1Lq1I}~vl1)3_m)Po2diukF%6k+HZ>#2qU4IU;Aw$iD(b1H3JdkvHNdZQhtAHU z4XMo@N*a-2XD)N&FWa#Lle=U403SB`{=UG4Hs60bq&X2J%V=XtSg+fy#B3^sneASc zzNRwc&Pg|_(oBsnrCLl^ba4sqnlNfSjysxPkd|!?F@&?01c0QU?OJ&222Sg#YgD{y ze94_kN2m3YC;TBq@;jz@jF?PCjCwE5>{Eor9$cfT7GrxR*;s!TErm5fb0f=E7v`4g zR9HsN##e56yAm|oMv`c!*DCUHDpRsV=papZuj%RNY|#H_rlhz8}wYvMkPl%17dJE52`Sf zLN0?%6^|%+Eh5J8Bt+Z1JIunyHi*^6GRmshD4-kntcu4R2lp+v>k_gTv6#~UxgaQ@ zl^8eMaQt$qXJb!e7%k3!{Opso6f?u!Lap`|^A}vl6r?LL+ZJgluTCuheq}hY>IM9J z4!EE~jJ(GE7H{FraH0Y^FxCU4TFJcA;FLCB(^8InB9TYU>Bd3HeUO$USbBq=QfgF` z8bO<3(|gTjWKE07S#`XIS)*~tb8d#QhwaCnIX`VsHJ%MDZInf(Yb=pkM}t;<^d8Zp zlGDaV+8@Jl*k;0Nim(PQ6C4d=5;kgSMDRQXJEX8HKqP4^Cw&OtG_P~BwB%9j5u7P6 z(buoYr5JaVp>&~PUP8mz4{ws(*Xl)yBXo2`O6pM0g~Ok<`nRh5KB$t|qTFcfo|_Z$ z%^Go0&IbjJ5}^b-F_*~>s;6hiOK(L*l`}(361?TrO!3l3<15`3N^0)P;vKxBS5V?v zX!pVN%P9j~dRo_Qcrc-eLn0YYq3+bNJcn*;Fl<+ajhTytF} ztbM@Cra!+iS<8N{WK)H@@r35(hzM@#p_SW?9BRouP8VZ0PU8l0TiK$WR72YcW zW*x%ODhJ|vOY*D0-cv@a_(;0U{+2>Xf

3Vnvs}fyUX1-I&HO#+)Us+;OULl4iqv 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 YytTJ)ptrpPF-%yTn3GdYN1gb;04n+SZvX%Q literal 0 HcmV?d00001 From ffe04d41678c9328b2a7357b9d11870cc602ec5d Mon Sep 17 00:00:00 2001 From: junwonlee5 Date: Fri, 16 Mar 2018 01:51:11 -0400 Subject: [PATCH 22/25] Instruction and link to reflection --- README.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/README.md b/README.md index 5f822327..03e0b6da 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,24 @@ # InteractiveProgramming This is the base repo for the interactive programming project for Software Design, Spring 2018 at Olin College. + +Note: Pygame must be installed to operate this code. + +To do so, type the following code in the command window: + +$ pip install pygame + +Link to project reflection: /home/junwonlee/GameProject/Link to Interactive Programming Reflection.pdf + +To run the code, type the following to the command window: + +$ python SnakeWithBoundary.py + +To play the game: + +1. Press Enter to start the game. + +2. Control the snake with keyboard arrows. DO NOT COLLIDE WITH THE BLUE BOUNDARY OR YOURSELF. + +3. Catch the "mouse." (the red block). Once you catch the mouse, your length will increase and the mouse will be placed in random location. + +4. To restart the game, close the window and type the given command again. From 24148a048814b8a60ab20360530b19e07eda8e05 Mon Sep 17 00:00:00 2001 From: junwonlee5 Date: Fri, 16 Mar 2018 02:06:33 -0400 Subject: [PATCH 23/25] Project Reflection --- Interactive Programming Reflection.pdf | Bin 112833 -> 112907 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Interactive Programming Reflection.pdf b/Interactive Programming Reflection.pdf index 24f4ffd304e5e513d479d0af142d97f87267ea73..d0c666b08fe348ecc7052fb25476bdba62a82527 100644 GIT binary patch delta 8152 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 S^ihj3?LF*#^JBXK;{OGblvfP^ delta 8046 zcmbuERaDds*zFm*hoNg==n(1d4v}tYq`MpbbazQNk|HG_-6hD70#ZYxq_h&}J!_q- zbMsw%`)aSX_w|0(dVYz2&<8Kk(>PIt`S{X#s38JEFfMf%AB;;E#>2xaz$4OZ#sV_p z<%a!#;!=@^8H-z53i5J`@bU-=3GnmVT5(%j2?%ft+i(k8^StNdv$B%>pBkB)pw~1G zFvt&VZC)znPSr3&8{D@^9O5u2Zjw9!67epE@`tHT5J!5Lc4jqls6;C{DtRf=w5_cL zh}TG+yQiaM_WJ;A*@962Bp)9E1L3pUTHKEf%nq=cAZmhkBPYgE&@nzDp(B|XfTdck zP%xB`1%xx5-f#ma$#xvj2eEnoQ(3DOXU5s5?!t#YKBA3U#8od%=!kRImgM>K>S+n8 z%NU0F^UBj7)4LxRZK;><{-Pq~d5a z;2&S?RU>rT8-sQ`{092@KMdcqV)*D@gB*v&uF&i4CBvD$1tuSmRn_3BLstXT~SLEPNa->f;goE!(BqM0D0JvK|fVHYk@ zM_aEAn;I)Ii@H=eIfXCm1T1+=CJ#c#EMkxG*GT0iu5L<;*>PfQ!CaoS72xHnhh_&i zb*|}PqBB5-Tg66UpHUBO@!q6hvxd0hO@z>rI2xJlk1n%#j0@TR0`mk%?8HOCLR+{J z6;}cUWk(PYpjKa8PLnqbZ#&z#sM>>y?5pQpjcrM(3c!tp@Ga=a!J66AM1}@!q5hU7!T^LHl#KUfI~*F(5`T>|8}kY`(KA|J zVy1xq!y!g&G6w;OEZz2%CebzV#77aZ^;l^YdKX?*2E03R-oGO7L!sKCDnsp1s@{sf zqxsJV$geQwAJbeVijA6wwgM6vC_aMMk+0O<8?R+aJR0aVbfvWgOFn#BcdKPms=W)L zrUsH!LfNfW3oN|ptg5yWB#RU0E!p%qh*`tP%;zS)mg}yWwOgtoJlnLR$);<37GH~d z8!j399zBC@?v9@K>m9t$UKQp1E}A2=cBpNT;Bw+kOPU&OjQd#a7$$M|o zo@`e;KdDQ;G}Q>w6=c${^kLMP z*08RKBH8D{vG@M6Yjk39Ch6<+B1%`fr+f8zA+k*VS^8~SN|ubs+KQ2AS_NGoVtqvt ziHHRGOFd#dQnc4X0b)it!i`Bof&lka+yOY)+=(=Oh0LUDYkCz)@ZAe=2=*&t#nQ&w z%6}UUb7V~j9y+#YRdydzI4E-jEk~`3u#KM*yyfHBY%j@G@gY!?o0}+=zY55BUs&_@ zbBifPCNq!5T)Q^0Ie`mD2bvtrKZ28{FN~YMT+jkF16@Vf6;%cX{WP4315`+yQuY%= zB>j_+{#drWCSTV|&qH>fsHQ6}U_`e$YDd*=L=vMgGu)DX;q&pNEzc<8dF+nX_Fyu`VO z=9GF{aXW?pPoUX3d@q-^4h#Of#)CbeHbEtmN<$V%@mF@OcfJkreC3zUrMD*urg2px zxh1r;3U9PziNgA=8p|~`5~Q3Lz{XRyFAn+=#YnXhQ<(2bU4QHQT7W5vo44v3l@S~b zcD}F=+MI)Fc)r*^_EG6?oj)Ly1n&#X_3qBjNgn^ae@NU_mU)vo zm~sgq=F7QU4HX`7j4{4#%fxo-QKEDmH+98f;%} zqkFqKm!O0Lderq+?lPvIBJKAQcA0>jcNomk_DLL^s8*+$Lm=u5G2Eo zM{VGj*bQ~)%oV4Xlp=2urfzw-s9j9!=nGLkk+8;nCo%gL?KYw|^Znl?aY&&;)SPg9 z$XbqX50yRhr2;%^00y2M`CwtW>carYBCF=WG~_`Ka1{ z+n^37YlCXfyo{o^D@jFYF7zS!VJ7xiyRz1m285h@m@L*EG>mG5Q!A6Qf$Slcg9%v# zJJ1H<*&p~Ph-s)AQa4-a9#OJ;R(xXxk;`Dm03BF^!xgjTTM8gqE=>}0 zC_C(BjLF&N#U(UjwP}1*)@5Vy6D!0!E(0GooNnv=!CP-E=}F5&IcaZv^%m1Dc|!#X z3({Ga0zC*$R+0E$;-jgyCTdd!m!N)cnV+&G4nuu`*_fI3TkO_vn&So6U&SdBAbz*k zV1Lv!{zD`LdQTp=+HNP8&ujryFG*Nwj7;|QFpf`*H#d5cjF=)Nxq&L`QIl4kKYLjeI&s^>CH!2{TSz^eyKpR7i+I?_JU{ zPT!iNC2b&1iC;Ck*^?9Prt9%>Lb?}rWab$RU9|YkueSu@LiFn?xC_A9_W|Dz_6<#6 zIKGg0bsc|`?kKeBt&9EYO8Q01y|hZlZE{qlXcz`#3f9pUTkhWqD<3jlq} zH{Qn8+RNM1#?l4*KNqQ_)1jmT>Qw{yMfhNnlGy(*@-I9!RZIOTNYMMw;NAp=-Oq-s z5Prj4;FXBB7W5O9HH}p5MM`sZxsgrPO+urbF-XW1rcy&7zCrucU;e9-NM*?zP=^O19*KygG9uM0?}bI@}+X7KY9| zuAa*t^bF8S@?U6V%I}nD&FPcXQ}FPQqZp}mcRkbk?Z@L7IgK`k6Lu1x1WCy)IE{Fj zfIqUJP0ACz%X4P;P0^WftY~>kYHnTLDEU%Wv0>!Mzul~nDIotH6<~x;ZO$Q1?OMsM zNSnpSLSbpx?u?xb?P=8B%m{rauI(c5#pxZE5mhys|JP*y#>?s9<44P%?8%=Toz&u1 zCr$@WwjCB4zTacIUJNzkR)UUP5RM+SDiSg0s9)w`b71?c2%&9Xvf}_Wx5U^UJ$Ai^ zwLDRsj_<}sLO=ti3iy|d-I9;>Avg_Lb8Fl49M_+Dpvn?-q;OSxcE(aZ^Lce|3{11O zTZ(!ZOM7(W6bi*WY7jy3=IuX|7PC)!l+awl7(5x^ImI2t?_rnt=x1G`&`!yfp?(hU zQQ;8CkChOHra9}T3~dKyt{j_0jHs*Xf>YC-iEuc(fy;r-f%(^8cLvVigX{}6<-nz7 zJScI?1k{F=0;P04M`=;|Tv!AodUb_!K5mgYZHOBYf=C<`I=VQLu3Z|aAqsD4gyu-L zl|3&knTT!Z&>*aXgnjmM2@O0WTk+1`0q z_;o7q-tTgw^1$z+o3KO6VcsT?Wkh`R(=HhJCH6th0=K$d^g_-1SHy)2O}%Ao$1vxw z40}4>;07tx1EwCi*RQvOjb@!Mln-&zJc`%;Gn{wQq|Bg+|k zG+QNA|DY;af*{g3#}Z~m$5L{uk}8~aHjPF)7_HGgzHgBWJ-W1g>7A${59Iti>=mlH zoqkhUQTw<|(ZQl5U}*Ac38D3spuV>b7=7Qm{QJ|7AZFdge;8hz*~LYwBo$&TvGSGm z`?r$Dhs?aG`i7n3c^HAIk(C%nh1Grv=|6Ql6H`|jAnCZ>90}nvD!S!C^zw6ReM}%g zZbxi9OkXzCC^tF$@7t0*&4DoJqRM;zW9i|@P~6F5cTC_qwubf$^+9`3zVf>>P!Z~F zE$ox0D#JypJXH#A$5NveJ=@D9{SZvKd}T*-YD^U^=!dWJ2~|?^%*<+MmdAj zW1vBTamUmz7R+cGrku)zRSG6!7dw0yfO2dPChlANzd}*G7vc%JkRch=&)lF7CGNsU z6T6&i#|oRj0^HN1a#hEL562CFD?YxTk*7W)ubAWmR7_-LGy89wP*ruZ2MDo3ZrCwU zhQRqo^7Kfd{M(dF8^7wCsNbOy%3e{qGA7jCh$K)TC`vaDSNf65FuoaW6Yb==h9__}U+V(m`3%2ep_;`87^DtdIqJ@5;FtgfB0k6ZidMvReAc z+tNkwcGRNOVB%ywiv^FD&Ffz}9~&a#qYZ<=ZZqDzsy33UlngfakVhsn=L&%AeghRh|EXiut) z@`v3X1xr&#ZXO*F#|+5Rt-eWpi(DIoYUPYl_OzcVZLyAON$%W2HyPRSTtmxXIK=Sl zE1a{QY2L@bQmmOXIVuyK>=R>0jng$FJ!;kA5qD10y2{3^I}Dd+?J!Z#wrj}K{&ya3 zaW3*$(CGT26&*m?qD^7?wuzY4l+#xZUg!W*JkM(LvkxUCn9pU~$Ge)debjr+XY~8O zwI?;W%bVoWt1?_qdtV2^WxUj7$lu3R_hVF)vg zks{wrx;ccRb2#Oqd1VT|sNAgCa^)a*b6|-~B!myLC<99KdZLq4Oui)bdoe`Y1mDVX zRoy^RqMyU$i{eOMN52zjT1!bJ_(+pT8EO#4wfv5N$bur5LZR9;+gkB8D7KMMTiq&6 zLv<;CuYya-*jBB)A%jXHkZ83x(|_lO{geIOc$`FRDth*xB@Tk1ui4_=rmSdQW)`7` z-#G0;KVtwKhb&ww33+>)44X`T2qYC)e$BN%yWcOZuYQuh-<)9uqR=w@Zm8}#R|r6K z=uNs#Z7%y@Uv;h$0xOaoq7&ale>MAe(a*6=6+cB9z=|m2N#B_sUdM2$0s1p@1%zNkLQ$ z2!l7KonU#h6Zzen>v5$x#+xie9=A{5gfzX15mX869r4RwdNxA>*-7o|DiuRx#2{JJ zG=S+vuwk()?jR`2>~|okB5Ipq;Or7=mvyZ^vUws$zw>Q`iw-Q&nd1P=-@Cl~lz^LJ zV7W&6eTZ01Ytl_%!O-`U8)3Y(Hw(Vpfhb2z85R=ZFH|GWf1ec|!6LwT$6XzW6okwt z_yODiq5}LODp;)8BPxZ5#OQxPE<~l$*!)jG>7PJo<}%GWwP$5-Cl9GE4Cx0CA<{;t#WEx{M(vl98=zTm!>uMelyr&|jPoY5QSl8;YgF=hQPKHa@94>t?9 z2->ZF*UeDgpPygUtAxc!cvm{VFpvDp=qru2y#q#m3X6+Bh(GO}HWlGGs$ogx?@TuZ z2`gSL5_*{r4NH9_bUhPvbDLSdHO1Y%wp-Z@SzW1?@meT3-RPJhuYURZ@BP14p25eK z-hWQ-O@*>c=5@z+3;MQtDMYCn1lWQuL+^$(Hj>(DpLC2!gDoG=6t?oL$BE~4v>5y$ z=$Zg=Lq%#gS?!f;6Q_7cn&w6mRmvx-Tdq>Yva>R?Ya#EYrmY%QVMG(_%v39c=l$|k zdCDA3i5mtsyY1}5uuJksAP{oP6*D+O4CYEJPk0tI*6x#f6u-T+_?#%XulI91C3Q?} zv65zyJ0cqWovv|Vtm&(z2Xt!g;6iqQTnBtx+YixZ!7|jdSmWVT5mWc`Dc_hb^|gS>h(W&yfiAB zTFx7+Cx4c)*B<26^B7_U!CDkgUMCEMrqT4y*`~aVnFBbu70Wd!A#)3c=pe2>>^Xpb zKOAf2FR#gbBshYsCk$2!9v-||)z{`B5wVcLCOh+ZC%h0rz^@YZFY%)+R(u-`yx1U| znG?Hj4z}w(a5;sbp>~fdwJ@Ihi&BnDTLstcX8|p~Qww$0wL$J@Q4jG1OZvDGGLEZdm<8QBEv=5G3aWsEF7YO)9FtT963${ z6Z>T2SLoMwg(1zRH?p`eQW5P;FtdWq^!iCCmrk&d|GAZCYyro@ zbae0=iKD&~_bNj%up~PYKpXOAB%6WNknf_+n5y=yhjBF=Eg93Tw0#?m1IzaeU70+} zV7sBE>lv4XXRO6~$q^}5Afz^LYHhL3+QU3gf2L?52&!n8m;CSNmZDr>hQKh5AFb&R5>C5{nY*=R#Fe0+6Z3y zHS!d{Fg5&)Yt?F0`1k?EQJB1E0i^jT51nn+fqBpby}>6a#L`cm?ps2(^uSAeWtSQHpusxMyCvQcC5DZVerj^=F z{^UFOt`g-Zb+Q8;gkKQ#8BgaC1DW;m9)q)2)4TY@H1M@v+ZfUU1X_}aMv#xi8|WL& zn(^U|69nXBP;^V)ch#(gDw2$s#&+m5{KpK6T!nhw)0ofP(ZYjG|6EWICQ#<~ii=($ zn?48T_8PpEacm7VMQ-)`To(cDB7U{Ol4>LT1Me(ap7^$k*Y?EXV3(p`6r+Z*tQ0yo za(JXpEb`Udi)+H!!Yf$jW_{S!4osj^(%(e8;sLZy`cC5eye$ts5PL6KZ1j;|1cAou ziX%F@NEYYDxP8Btne%#iFgot^5OG)+cOA*^qqSdtFCLd`AM80bO|xf7vGYdlIhu0+ z$-8Zt6+Qr7+~L#*d4OOA%6-5FY7h<}%}z7EK(zZP#sEJgD{k>-_HsI31-9gh`GVg~q zG%CqQxJ#TadrU6iFApCoC^c%PG<6OGz#E8lPWBJKaBk^oqNvV4;Uv^#2@FO1noP1g z{YCu-nan*C*_eTgkV4j63&r8}@R^H5?({B8PTGi&g9m@5pYBegsP8k=_I!%eKH&IC z=gJtX6b)s~wG>TmR;p?Or>@f!G@5ZK@nae<7-Y{8wOcN;bp5^9JqjVr+EzMZYHg35 z1NwGVzAAp48(cLu6|qPa=e0dag#;^pb4vJn#VC-vKkMc(fXpVvnyTJsnEW(1=3l=0 za8z-tz1l{mvUK7~HRs~kLUceE5+LcU&h@Rro~y z9h=G!lOS#i8P^_j>^CHGR@h)XctA;zXmZFJio^TOJbL8))zF2v-Mn@bXl|#6vde9y z_+wUvW_teYyqCp{YQf-kM&(Rx#tMbj_SPS=cGLKRY-x$f`@hQJuvvLc55PE{Mk5|S zSEuJWh-6HFIp|V4uG)2QEq);TN!wFWpG78wqr3z}Kl#H$vFyF189&AIOE}mH$8Lrc zaVY1~aKR~0G{J!Xw_R3+^EJ?kY?Nal!Gf(As;Pv8L4HoZ@%GQK_0lH|B%F*E-s zzeOgFUdu@C^O~kf>|o|iAF!}4y!N!|ZRA!wpJeyYT75y%u;;1a65Jytxn$QBcP0L( zXUQX8x~M%-<`qmu0ok{54<|JZv!Q0Qazx1R^#_c$)`4xg+FEXr$oX39&-+9dU&+i{KHX#oA)PvBOfoWNK)FRO|MZycFsoaj(VjHK{my6yL zehRL0uV;%P#gwncjgv{pVT?D748)fqs6*CO=$jlQ#f2KBb*C!B0nq}1xSyrr=Of3`Itez__5`#RoE zqxw^g+s-`&imC2nABo&LBXq1mMv^DVG&lk}XWGp{guaDlD*)51Xa(1Ves_qI-XAv) zb3)K!46V_tUvX*<#T$topWw>1^bJVt0gRi?Hqc;?cjjwoM9r`)0#nCz?+Fq^M|t}i zwoh!%>D#$RzdR8lL>t;n?@^0JmsCI1xjZ1P8OTNve%&(T_Np;WLODc4aORXlc!qGD zOFqP^{JkTETmXzI%~ut*iHyp8$Tw`JUP2HMg#a&q$x_+Q81?g7i4!jFjK?sK_*Mf? z6CP3*WOaS0=Nv=q&~OSJhs7SexaXg?C$ba8CaAlaq>s)m} zT6qbl2tHBgrO5oR5%!1lP7pa=AMRV+ mq$D7mQSN}0z~Pxv-m^JEdCVA=afpP1ls<;8{eLmG%>MyBy%b3R From dadd307389fd531e5874e4b1326cfee9f91c9e9c Mon Sep 17 00:00:00 2001 From: junwonlee5 Date: Fri, 16 Mar 2018 02:08:07 -0400 Subject: [PATCH 24/25] Instruction and Reflection link --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 03e0b6da..7c82f9b8 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,6 @@ To do so, type the following code in the command window: $ pip install pygame -Link to project reflection: /home/junwonlee/GameProject/Link to Interactive Programming Reflection.pdf - To run the code, type the following to the command window: $ python SnakeWithBoundary.py @@ -22,3 +20,6 @@ To play the game: 3. Catch the "mouse." (the red block). Once you catch the mouse, your length will increase and the mouse will be placed in random location. 4. To restart the game, close the window and type the given command again. + + +Link to project reflection: /home/junwonlee/GameProject/Link to Interactive Programming Reflection.pdf From e83243779328dc3bbae71d305b38a2177c805ac1 Mon Sep 17 00:00:00 2001 From: junwonlee5 Date: Fri, 16 Mar 2018 11:27:12 -0400 Subject: [PATCH 25/25] Final Snake Project --- SnakeWithBoundary.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/SnakeWithBoundary.py b/SnakeWithBoundary.py index 84427fa7..4d0a0fa5 100644 --- a/SnakeWithBoundary.py +++ b/SnakeWithBoundary.py @@ -263,6 +263,9 @@ def handle_event2(self, event): if __name__ == '__main__': def mainloop(): + """ + This is the main loop that runs the function. + """ pygame.init() pygame.display.set_caption('Snake Game') model = SnakeGameModel()