From 51599426b61ba915dfdc12fcaaa43df49a085b8b Mon Sep 17 00:00:00 2001 From: hadleigh-000 Date: Fri, 2 Mar 2018 15:11:46 -0500 Subject: [PATCH 01/31] first commit --- tron-hn01.py | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 tron-hn01.py diff --git a/tron-hn01.py b/tron-hn01.py new file mode 100644 index 00000000..d012cf5b --- /dev/null +++ b/tron-hn01.py @@ -0,0 +1,10 @@ + + +import pygame +from pygame.locals import * +import time + +pygame.init() +fpsClock = pygame.time.Clock() + +WindowSurfaceObj = pygame.display.setmode((640,480)) From 85125e9324986a75535a481ec5897e83fe44bc65 Mon Sep 17 00:00:00 2001 From: Naomi Date: Mon, 5 Mar 2018 16:35:44 -0500 Subject: [PATCH 02/31] Adding Master and Naomi copies --- tron-master | 1 + tron-nc01.py | 1 + 2 files changed, 2 insertions(+) create mode 100644 tron-master create mode 100644 tron-nc01.py diff --git a/tron-master b/tron-master new file mode 100644 index 00000000..16b7da80 --- /dev/null +++ b/tron-master @@ -0,0 +1 @@ +"Master Copy" diff --git a/tron-nc01.py b/tron-nc01.py new file mode 100644 index 00000000..1d58f62e --- /dev/null +++ b/tron-nc01.py @@ -0,0 +1 @@ +"Naomi's Working Space" From 7887fee08bb837ddd8400204b3fdfb462877093c Mon Sep 17 00:00:00 2001 From: Naomi Date: Mon, 5 Mar 2018 16:58:51 -0500 Subject: [PATCH 03/31] Project Proposal --- Project Proposals.pdf | Bin 0 -> 20077 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Project Proposals.pdf diff --git a/Project Proposals.pdf b/Project Proposals.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b45d5518440e4cb7ea16b8c6d8d6eb6c1d070ebf GIT binary patch literal 20077 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 MehmGYv|wKS4X{HND*ylh literal 0 HcmV?d00001 From 232ac3cb1c34bec4e7802b3a93766541e31b5d7a Mon Sep 17 00:00:00 2001 From: Naomi Date: Tue, 6 Mar 2018 13:32:17 -0500 Subject: [PATCH 04/31] Project Proposal --- Project Proposals.pdf | Bin 20077 -> 26215 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Project Proposals.pdf b/Project Proposals.pdf index b45d5518440e4cb7ea16b8c6d8d6eb6c1d070ebf..ed7a277e03733f9dd78fb62d6e878089026cdeeb 100644 GIT binary patch literal 26215 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 H0{8y_7y7;L literal 20077 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 MehmGYv|wKS4X{HND*ylh From 61cb44ce4fc69712947348acb58d68ee71d21a59 Mon Sep 17 00:00:00 2001 From: hadleigh-000 Date: Tue, 6 Mar 2018 15:12:16 -0500 Subject: [PATCH 05/31] Tried to add cell class --- tron-hn01.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tron-hn01.py b/tron-hn01.py index d012cf5b..537c3ed4 100644 --- a/tron-hn01.py +++ b/tron-hn01.py @@ -8,3 +8,22 @@ fpsClock = pygame.time.Clock() WindowSurfaceObj = pygame.display.setmode((640,480)) + + +class Cell(object): + + def __init__(self, height, x, y, flip = False): + self.height = height + self.x = x + self.y = y + self.flip = flip + + + def __str__(self): + return "Cell height=%f, x=%f, y=%f" % (self.height, self.x, self.y) + + + + +class Grid(object): + """Defines a grid of cell objects""" From 2f60db9f32947ad3d296449e967d60cca59042d9 Mon Sep 17 00:00:00 2001 From: Naomi Date: Tue, 6 Mar 2018 16:33:16 -0500 Subject: [PATCH 06/31] 3/6 classwork --- tron-master | 11 +++++++++++ tron-nc01.py | 10 ++++++++++ 2 files changed, 21 insertions(+) diff --git a/tron-master b/tron-master index 16b7da80..6f7f6db8 100644 --- a/tron-master +++ b/tron-master @@ -1 +1,12 @@ "Master Copy" +import pygame +from pygame.locals import * +import time + +class grid(): + """creates the grid in which the game is played""" + def __init__(self): + + +class cell(): + diff --git a/tron-nc01.py b/tron-nc01.py index 1d58f62e..4d4ccd65 100644 --- a/tron-nc01.py +++ b/tron-nc01.py @@ -1 +1,11 @@ "Naomi's Working Space" +import pygame +from pygame.locals import * +import time + +class grid(): + """creates the grid in which the game is played""" + def __init__(self): + + +class cell(): From ea53fd7319591f0bcad1522b2e6e9e83deedbb5e Mon Sep 17 00:00:00 2001 From: hadleigh-000 Date: Thu, 8 Mar 2018 17:08:02 -0500 Subject: [PATCH 07/31] added more brickbreaker code --- tron-hn01 | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 tron-hn01 diff --git a/tron-hn01 b/tron-hn01 new file mode 100644 index 00000000..1ea99e41 --- /dev/null +++ b/tron-hn01 @@ -0,0 +1,3 @@ + + +import pygrame From cae54548dfc834474d651a0d86769bd44795bc48 Mon Sep 17 00:00:00 2001 From: hadleigh-000 <31555834+hadleigh-000@users.noreply.github.com> Date: Thu, 8 Mar 2018 17:09:43 -0500 Subject: [PATCH 08/31] Delete tron-hn01 --- tron-hn01 | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 tron-hn01 diff --git a/tron-hn01 b/tron-hn01 deleted file mode 100644 index 1ea99e41..00000000 --- a/tron-hn01 +++ /dev/null @@ -1,3 +0,0 @@ - - -import pygrame From a0bc409e24fd3a206a4038a4e3ce1ce82dc3535f Mon Sep 17 00:00:00 2001 From: hadleigh-000 Date: Thu, 8 Mar 2018 17:10:16 -0500 Subject: [PATCH 09/31] added more brickbreaker classes --- tron-hn01.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/tron-hn01.py b/tron-hn01.py index 537c3ed4..81b379ab 100644 --- a/tron-hn01.py +++ b/tron-hn01.py @@ -9,6 +9,28 @@ WindowSurfaceObj = pygame.display.setmode((640,480)) +class PyGameWindowView(object): + """ A view of brick breaker rendered in a Pygame window """ + def __init__(self, model, size): + """ Initialize the view with a reference to the model and the + specified game screen dimensions (represented as a tuple + containing the width and height """ + self.model = model + self.screen = pygame.display.set_mode(size) + + def draw(self): + """ Draw the current game state to the screen """ + self.screen.fill(pygame.Color(0,0,0)) + for cell in self.model.cells: + pygame.draw.cell(self.screen, + pygame.Color(cell.color), + pygame.Rect(brick.x, + brick.y, + brick.height)) + + + pygame.display.update() + class Cell(object): @@ -17,13 +39,27 @@ def __init__(self, height, x, y, flip = False): self.x = x self.y = y self.flip = flip + self.color = (0,0,0) def __str__(self): return "Cell height=%f, x=%f, y=%f" % (self.height, self.x, self.y) + def __hit__(self, player): + self.flip = True + self.color = player.color + class Grid(object): """Defines a grid of cell objects""" + def __init__(self, screen_height, screen_width): + self.cells = [] + n=30 + dx = screen_width/ n + stack_height = screen_height// dx + for i in range(n): + for j in range(stack_height): + cell = Cell(dx,(i*dx),(j*dx)) + self.cells.append(cell) From 82d6b0bb3ac55f5e3e7aea02298e0f68555a8240 Mon Sep 17 00:00:00 2001 From: hadleigh-000 Date: Thu, 8 Mar 2018 17:26:41 -0500 Subject: [PATCH 10/31] fixed grid to be model instead --- tron-hn01.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/tron-hn01.py b/tron-hn01.py index 81b379ab..172ac40d 100644 --- a/tron-hn01.py +++ b/tron-hn01.py @@ -52,14 +52,26 @@ def __hit__(self, player): -class Grid(object): - """Defines a grid of cell objects""" - def __init__(self, screen_height, screen_width): + + + + +class TronModel(object): + """ Encodes a model of the game state, defines a grid of cell objects""" + def __init__(self, size): self.cells = [] n=30 - dx = screen_width/ n - stack_height = screen_height// dx + self.cell_size = screen_width/ n + self.width = size[0] + self.stack_height = size[1]//self.cell_size for i in range(n): for j in range(stack_height): cell = Cell(dx,(i*dx),(j*dx)) self.cells.append(cell) + + + + + +if __name__ == "__main__": + import doctest From 17f58ee844c8864bcffb7647833cd4d0f0e77381 Mon Sep 17 00:00:00 2001 From: Naomi Date: Thu, 8 Mar 2018 18:38:28 -0500 Subject: [PATCH 11/31] Working start screen --- tron-nc01.py | 60 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 56 insertions(+), 4 deletions(-) diff --git a/tron-nc01.py b/tron-nc01.py index 4d4ccd65..726052c2 100644 --- a/tron-nc01.py +++ b/tron-nc01.py @@ -3,9 +3,61 @@ from pygame.locals import * import time -class grid(): - """creates the grid in which the game is played""" - def __init__(self): +class TronWorld(): + def __init__(self,cell_length=10,width=640,height=480): + pygame.init() + size = (width,height) + self.screen = pygame.display.set_mode(size) + self.width = width + self.height = height + self.cell_length = cell_length + self._init_cells() + def _init_cells(self): + self.cells = {} + cell_size = (self.cell_length, self.cell_length) + for i in range(self.height): + for j in range(self.width): + cell_coord = (i * self.cell_length, j*self.cell_length) + self.cells[(i,j)] = Cell(self.screen, cell_coord, cell_size) -class cell(): + def _draw_background(self): + gray = (105, 105, 105) + self.screen.fill(gray) + + def _draw_cells(self): + all_cells = self.cells.values() + for cell in all_cells: + cell.draw() + + def _redraw(self): + self._draw_background() + self._draw_cells() + pygame.display.update() + + def main_loop(self): + running = True + while running: + self._redraw() + for event in pygame.event.get(): + if event.type == QUIT: + running = False + +class Cell(object): + def __init__(self, draw_screen, coordinates, side_length): + self.draw_screen = draw_screen + self.coordinates = coordinates + self.side_length = side_length + self.color = (0, 0, 0) + + def draw(self): + line_width = 1 + rect = pygame.Rect(self.coordinates, self.side_length) + pygame.draw.rect(self.draw_screen, self.color, rect, line_width) + + +if __name__ == '__main__': + pygame.init() + + world = TronWorld() + world.main_loop() From c448147b3b953af66ef743e83b8f7e6fb74430e2 Mon Sep 17 00:00:00 2001 From: hadleigh-000 Date: Thu, 8 Mar 2018 19:29:11 -0500 Subject: [PATCH 12/31] put in a player class and a preliminary keyboard controller --- tron-hn01.py | 185 +++++++++++++++++++++++++++++++++------------------ 1 file changed, 121 insertions(+), 64 deletions(-) diff --git a/tron-hn01.py b/tron-hn01.py index 172ac40d..461e51d5 100644 --- a/tron-hn01.py +++ b/tron-hn01.py @@ -4,74 +4,131 @@ from pygame.locals import * import time -pygame.init() -fpsClock = pygame.time.Clock() - -WindowSurfaceObj = pygame.display.setmode((640,480)) - -class PyGameWindowView(object): - """ A view of brick breaker rendered in a Pygame window """ - def __init__(self, model, size): - """ Initialize the view with a reference to the model and the - specified game screen dimensions (represented as a tuple - containing the width and height """ - self.model = model - self.screen = pygame.display.set_mode(size) - - def draw(self): - """ Draw the current game state to the screen """ - self.screen.fill(pygame.Color(0,0,0)) - for cell in self.model.cells: - pygame.draw.cell(self.screen, - pygame.Color(cell.color), - pygame.Rect(brick.x, - brick.y, - brick.height)) +class TronWorld(): + def __init__(self,cell_length=10,width=640,height=480): + pygame.init() + size = (width,height) + self.screen = pygame.display.set_mode(size) + self.width = width + self.height = height + self.cell_length = cell_length + self._init_cells() + + def _init_cells(self): + self.cells = {} + cell_size = (self.cell_length, self.cell_length) + for i in range(self.height): + for j in range(self.width): + cell_coord = (i * self.cell_length, j*self.cell_length) + self.cells[(i,j)] = Cell(self.screen, cell_coord, cell_size) + + def _draw_background(self): + gray = (105, 105, 105) + self.screen.fill(gray) + + def _draw_cells(self): + all_cells = self.cells.values() + for cell in all_cells: + cell.draw() + + def _redraw(self): + self._draw_background() + self._draw_cells() pygame.display.update() + def main_loop(self): + running = True + while running: + self._redraw() + for event in pygame.event.get(): + if event.type == QUIT: + running = False class Cell(object): + def __init__(self, draw_screen, coordinates, side_length): + self.draw_screen = draw_screen + self.coordinates = coordinates + self.side_length = side_length + self.color = (0, 0, 0) - def __init__(self, height, x, y, flip = False): - self.height = height - self.x = x - self.y = y - self.flip = flip - self.color = (0,0,0) - - - def __str__(self): - return "Cell height=%f, x=%f, y=%f" % (self.height, self.x, self.y) - - def __hit__(self, player): - self.flip = True - self.color = player.color - - - - - - - - -class TronModel(object): - """ Encodes a model of the game state, defines a grid of cell objects""" - def __init__(self, size): - self.cells = [] - n=30 - self.cell_size = screen_width/ n - self.width = size[0] - self.stack_height = size[1]//self.cell_size - for i in range(n): - for j in range(stack_height): - cell = Cell(dx,(i*dx),(j*dx)) - self.cells.append(cell) - - - - - -if __name__ == "__main__": - import doctest + def draw(self): + line_width = 1 + rect = pygame.Rect(self.coordinates, self.side_length) + pygame.draw.rect(self.draw_screen, self.color, rect, line_width) + + +class Player(object): + def __init__(self, start_posx, start_posy, color): + self.x = start_posx + self.y = start_posy + self.dir = "r" + self.vx = .2 + self.color = color + + def update(self): + if self.dir == "r": + self.x += self.vx + elif self.dir == "l": + self.x += -self.x + elif self.dir == "u": + self.y += self.vx + elif self.dir == "d": + self.y += -self.vx + + + +class KeyControl(object): + def __init__(self, player1, player2): + self.player1 = player1 + self.player2 = player2 + + def handle_event(self, event): + + if event == K_LEFT: + if self.player1.dir == "r": + return + self.player1.dir = "l" + + if event == K_RIGHT: + if self.player1.dir == "l": + return + self.player1.dir = "r" + + if event == K_DOWN: + if self.player1.dir == "u": + return + self.player1.dir = "d" + if event == K_UP: + if self.player1.dir == "d": + return + self.player1.dir = "u" + + + if event == K_a: + if self.player2.dir == "r": + return + self.player2.dir = "l" + + if event == K_d: + if self.player2.dir == "l": + return + self.player2.dir = "r" + + if event == K_s: + if self.player2.dir == "u": + return + self.player2.dir = "d" + if event == K_w: + if self.player2.dir == "d": + return + self.player2.dir = "u" + + + +if __name__ == '__main__': + pygame.init() + + world = TronWorld() + world.main_loop() From f223a8072606d181d292ef695fb58dbc58049393 Mon Sep 17 00:00:00 2001 From: Naomi Date: Thu, 8 Mar 2018 20:14:35 -0500 Subject: [PATCH 13/31] 2/8 update --- tron-nc01.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/tron-nc01.py b/tron-nc01.py index 726052c2..e401969f 100644 --- a/tron-nc01.py +++ b/tron-nc01.py @@ -1,7 +1,6 @@ "Naomi's Working Space" import pygame -from pygame.locals import * -import time +from pygame.locals import* class TronWorld(): def __init__(self,cell_length=10,width=640,height=480): @@ -44,11 +43,11 @@ def main_loop(self): running = False class Cell(object): - def __init__(self, draw_screen, coordinates, side_length): + def __init__(self, draw_screen, coordinates, side_length, color=(0,0,0)): self.draw_screen = draw_screen self.coordinates = coordinates self.side_length = side_length - self.color = (0, 0, 0) + self.color = color def draw(self): line_width = 1 @@ -57,7 +56,5 @@ def draw(self): if __name__ == '__main__': - pygame.init() - world = TronWorld() world.main_loop() From 62d5833815dab1c5d49799f4a765f500c9594eb8 Mon Sep 17 00:00:00 2001 From: Naomi Date: Thu, 8 Mar 2018 21:50:06 -0500 Subject: [PATCH 14/31] Pre-MV version --- tron-master | 134 ++++++++++++++++++++++++++++++++++++++++++++++++--- tron-nc01.py | 79 +++++++++++++++++++++++++++++- 2 files changed, 205 insertions(+), 8 deletions(-) diff --git a/tron-master b/tron-master index 6f7f6db8..e530f259 100644 --- a/tron-master +++ b/tron-master @@ -1,12 +1,134 @@ -"Master Copy" +""" +Master Copy +Tron Remake + +@author: Naomi Chiu and Hadleigh Nunes +""" import pygame from pygame.locals import * import time -class grid(): - """creates the grid in which the game is played""" - def __init__(self): -class cell(): - +class TronWorld(): + def __init__(self,cell_length=10,width=640,height=480): + pygame.init() + size = (width,height) + self.screen = pygame.display.set_mode(size) + self.width = width + self.height = height + self.cell_length = cell_length + self._init_cells() + + def _init_cells(self): + self.cells = {} + cell_size = (self.cell_length, self.cell_length) + for i in range(self.height): + for j in range(self.width): + cell_coord = (i * self.cell_length, j*self.cell_length) + self.cells[(i,j)] = Cell(self.screen, cell_coord, cell_size) + + def _draw_background(self): + gray = (105, 105, 105) + self.screen.fill(gray) + + def _draw_cells(self): + all_cells = self.cells.values() + for cell in all_cells: + cell.draw() + + def _redraw(self): + self._draw_background() + self._draw_cells() + pygame.display.update() + + def main_loop(self): + running = True + while running: + self._redraw() + for event in pygame.event.get(): + if event.type == QUIT: + running = False + +class Cell(object): + def __init__(self, draw_screen, coordinates, side_length): + self.draw_screen = draw_screen + self.coordinates = coordinates + self.side_length = side_length + self.color = (0, 0, 0) + + def draw(self): + line_width = 1 + rect = pygame.Rect(self.coordinates, self.side_length) + pygame.draw.rect(self.draw_screen, self.color, rect, line_width) + +class Player(object): + def __init__(self, start_posx, start_posy, color): + self.x = start_posx + self.y = start_posy + self.dir = "r" + self.vx = .2 + self.color = color + + def update(self): + if self.dir == "r": + self.x += self.vx + elif self.dir == "l": + self.x += -self.x + elif self.dir == "u": + self.y += self.vx + elif self.dir == "d": + self.y += -self.vx + +class KeyControl(object): + def __init__(self, player1, player2): + self.player1 = player1 + self.player2 = player2 + + def handle_event(self, event): + + if event == K_LEFT: + if self.player1.dir == "r": + return + self.player1.dir = "l" + + if event == K_RIGHT: + if self.player1.dir == "l": + return + self.player1.dir = "r" + + if event == K_DOWN: + if self.player1.dir == "u": + return + self.player1.dir = "d" + if event == K_UP: + if self.player1.dir == "d": + return + self.player1.dir = "u" + + if event == K_a: + if self.player2.dir == "r": + return + self.player2.dir = "l" + + if event == K_d: + if self.player2.dir == "l": + return + self.player2.dir = "r" + + if event == K_s: + if self.player2.dir == "u": + return + self.player2.dir = "d" + if event == K_w: + if self.player2.dir == "d": + return + self.player2.dir = "u" + + + +if __name__ == '__main__': + pygame.init() + + world = TronWorld() + world.main_loop() diff --git a/tron-nc01.py b/tron-nc01.py index e401969f..60219620 100644 --- a/tron-nc01.py +++ b/tron-nc01.py @@ -29,9 +29,16 @@ def _draw_cells(self): for cell in all_cells: cell.draw() + def _display_players(self): + self.player1 = Player(self.screen,10,350,240,(255,140,0)) + self.player2 = Player(self.screen,10,290,240,(255,140,0)) + self.player1.draw + self.player2.draw + def _redraw(self): self._draw_background() self._draw_cells() + self._display_players() pygame.display.update() def main_loop(self): @@ -41,19 +48,87 @@ def main_loop(self): for event in pygame.event.get(): if event.type == QUIT: running = False + elif event.type == KEYDOWN: + controller = KeyControl(self.player1,self.player2) + controller.handle_event class Cell(object): - def __init__(self, draw_screen, coordinates, side_length, color=(0,0,0)): + def __init__(self, draw_screen, coordinates, side_length): self.draw_screen = draw_screen self.coordinates = coordinates self.side_length = side_length - self.color = color + self.color = (0, 0, 0) def draw(self): line_width = 1 rect = pygame.Rect(self.coordinates, self.side_length) pygame.draw.rect(self.draw_screen, self.color, rect, line_width) +class Player(object): + def __init__(self, draw_screen, dimension, start_posx, start_posy, color=(255,255,255)): + self.draw_screen = draw_screen + self.width = dimension + self.height = dimension + self.x = start_posx + self.y = start_posy + self.dir = "r" + self.vx = .2 + self.color = color + + def draw(self): + line_width = .5 + pygame.draw.rect(self.draw_screen,self.color,pygame.Rect(self.x,self.y,self.width,self.height)) + + def update(self): + if self.dir == "r": + self.x += self.vx + elif self.dir == "l": + self.x += -self.x + elif self.dir == "u": + self.y += self.vx + elif self.dir == "d": + self.y += -self.vx + +class KeyControl(object): + def __init__(self, player1, player2): + self.player1 = player1 + self.player2 = player2 + + def handle_event(self, event): + if event == K_LEFT: + if self.player1.dir == "r": + return + self.player1.dir = "l" + if event == K_RIGHT: + if self.player1.dir == "l": + return + self.player1.dir = "r" + if event == K_DOWN: + if self.player1.dir == "u": + return + self.player1.dir = "d" + if event == K_UP: + if self.player1.dir == "d": + return + self.player1.dir = "u" + + if event == K_a: + if self.player2.dir == "r": + return + self.player2.dir = "l" + if event == K_d: + if self.player2.dir == "l": + return + self.player2.dir = "r" + if event == K_s: + if self.player2.dir == "u": + return + self.player2.dir = "d" + if event == K_w: + if self.player2.dir == "d": + return + self.player2.dir = "u" + if __name__ == '__main__': world = TronWorld() From c37f0f597aadf50aafc5f1dbec9b256090bd25c2 Mon Sep 17 00:00:00 2001 From: Naomi Date: Fri, 9 Mar 2018 00:54:24 -0500 Subject: [PATCH 15/31] Working Player Movemnt (very laggy) --- tron-nc01.py | 166 ++++++++++++++++++++++++++++----------------------- 1 file changed, 90 insertions(+), 76 deletions(-) diff --git a/tron-nc01.py b/tron-nc01.py index 60219620..7305473e 100644 --- a/tron-nc01.py +++ b/tron-nc01.py @@ -1,8 +1,28 @@ "Naomi's Working Space" import pygame from pygame.locals import* +import time -class TronWorld(): +class PyGameWindowView(object): + def __init__(self,model,width=640,height=480): + self.model = model + size = (width,height) + self.model.screen = pygame.display.set_mode(size) + def draw(self): + self.model.screen.fill((105,105,105)) + self.model.cells = {} + cell_size = (self.model.cell_length, self.model.cell_length) + for i in range(self.model.height): + for j in range(self.model.width): + cell_coord = (i*self.model.cell_length,j*self.model.cell_length) + self.model.cells[(i,j)] = Cell(self.model.screen,cell_coord,cell_size) + all_cells = self.model.cells.values() + for cell in all_cells: + cell.draw() + self.model._draw_players() + pygame.display.update() + +class TronModelView(object): def __init__(self,cell_length=10,width=640,height=480): pygame.init() size = (width,height) @@ -10,47 +30,16 @@ def __init__(self,cell_length=10,width=640,height=480): self.width = width self.height = height self.cell_length = cell_length - self._init_cells() - - def _init_cells(self): - self.cells = {} - cell_size = (self.cell_length, self.cell_length) - for i in range(self.height): - for j in range(self.width): - cell_coord = (i * self.cell_length, j*self.cell_length) - self.cells[(i,j)] = Cell(self.screen, cell_coord, cell_size) - - def _draw_background(self): - gray = (105, 105, 105) - self.screen.fill(gray) - - def _draw_cells(self): - all_cells = self.cells.values() - for cell in all_cells: - cell.draw() - - def _display_players(self): - self.player1 = Player(self.screen,10,350,240,(255,140,0)) - self.player2 = Player(self.screen,10,290,240,(255,140,0)) - self.player1.draw - self.player2.draw + self.player1 = Player(self.screen,10,380,240,"r",(255,140,0)) + self.player2 = Player(self.screen,10,260,240,"l",(0,255,0)) - def _redraw(self): - self._draw_background() - self._draw_cells() - self._display_players() - pygame.display.update() + def _draw_players(self): + self.player1.draw() + self.player2.draw() - def main_loop(self): - running = True - while running: - self._redraw() - for event in pygame.event.get(): - if event.type == QUIT: - running = False - elif event.type == KEYDOWN: - controller = KeyControl(self.player1,self.player2) - controller.handle_event + def update(self): + self.player1.update() + self.player2.update() class Cell(object): def __init__(self, draw_screen, coordinates, side_length): @@ -65,14 +54,15 @@ def draw(self): pygame.draw.rect(self.draw_screen, self.color, rect, line_width) class Player(object): - def __init__(self, draw_screen, dimension, start_posx, start_posy, color=(255,255,255)): + def __init__(self, draw_screen, dimension, start_posx, start_posy, direction, color=(255,255,255)): self.draw_screen = draw_screen self.width = dimension self.height = dimension self.x = start_posx self.y = start_posy - self.dir = "r" - self.vx = .2 + self.dir = direction + self.vx = 0 + self.vy = 0 self.color = color def draw(self): @@ -81,55 +71,79 @@ def draw(self): def update(self): if self.dir == "r": - self.x += self.vx + self.vx = 10 + self.vy = 0 elif self.dir == "l": - self.x += -self.x + self.vx = -10 + self.vy = 0 elif self.dir == "u": - self.y += self.vx + self.vx = 0 + self.vy = -10 elif self.dir == "d": - self.y += -self.vx + self.vx = 0 + self.vy = 10 + self.x += self.vx + self.y += self.vy + +class PlayerPath(object): + def __init__(self,model): + self.model = model class KeyControl(object): - def __init__(self, player1, player2): - self.player1 = player1 - self.player2 = player2 + def __init__(self, model): + self.model = model def handle_event(self, event): - if event == K_LEFT: - if self.player1.dir == "r": + if event.type != KEYDOWN: + return + if event.key == pygame.K_LEFT: + if self.model.player1.dir == "r": return - self.player1.dir = "l" - if event == K_RIGHT: - if self.player1.dir == "l": + self.model.player1.dir = "l" + if event.key == pygame.K_RIGHT: + if self.model.player1.dir == "l": return - self.player1.dir = "r" - if event == K_DOWN: - if self.player1.dir == "u": + self.model.player1.dir = "r" + if event.key == pygame.K_DOWN: + if self.model.player1.dir == "u": return - self.player1.dir = "d" - if event == K_UP: - if self.player1.dir == "d": + self.model.player1.dir = "d" + if event.key == pygame.K_UP: + if self.model.player1.dir == "d": return - self.player1.dir = "u" + self.model.player1.dir = "u" - if event == K_a: - if self.player2.dir == "r": + if event.key ==pygame.K_a: + if self.model.player2.dir == "r": return - self.player2.dir = "l" - if event == K_d: - if self.player2.dir == "l": + self.model.player2.dir = "l" + if event.key == pygame.K_d: + if self.model.player2.dir == "l": return - self.player2.dir = "r" - if event == K_s: - if self.player2.dir == "u": + self.model.player2.dir = "r" + if event.key == pygame.K_s: + if self.model.player2.dir == "u": return - self.player2.dir = "d" - if event == K_w: - if self.player2.dir == "d": + self.model.player2.dir = "d" + if event.key == pygame.K_w: + if self.model.player2.dir == "d": return - self.player2.dir = "u" + self.model.player2.dir = "u" if __name__ == '__main__': - world = TronWorld() - world.main_loop() + pygame.init() + model = TronModelView() + view = PyGameWindowView(model) + controller = KeyControl(model) + + running = True + while running: + for event in pygame.event.get(): + if event.type == QUIT: + running = False + controller.handle_event(event) + model.update() + view.draw() + time.sleep(.001) + pygame.quit() From 6efc65ce4d2beb03c10f780c81fba33a11aecda8 Mon Sep 17 00:00:00 2001 From: Naomi Date: Fri, 9 Mar 2018 14:43:14 -0500 Subject: [PATCH 16/31] Working MVP --- tron-nc01.py | 76 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 47 insertions(+), 29 deletions(-) diff --git a/tron-nc01.py b/tron-nc01.py index 7305473e..e11904f8 100644 --- a/tron-nc01.py +++ b/tron-nc01.py @@ -8,7 +8,8 @@ def __init__(self,model,width=640,height=480): self.model = model size = (width,height) self.model.screen = pygame.display.set_mode(size) - def draw(self): + + def _init_draw(self): self.model.screen.fill((105,105,105)) self.model.cells = {} cell_size = (self.model.cell_length, self.model.cell_length) @@ -17,8 +18,10 @@ def draw(self): cell_coord = (i*self.model.cell_length,j*self.model.cell_length) self.model.cells[(i,j)] = Cell(self.model.screen,cell_coord,cell_size) all_cells = self.model.cells.values() + for cell in all_cells: cell.draw() + def draw(self): self.model._draw_players() pygame.display.update() @@ -30,8 +33,8 @@ def __init__(self,cell_length=10,width=640,height=480): self.width = width self.height = height self.cell_length = cell_length - self.player1 = Player(self.screen,10,380,240,"r",(255,140,0)) - self.player2 = Player(self.screen,10,260,240,"l",(0,255,0)) + self.player1 = Player(self.screen,10,(self.width/2+100),(self.height/2),"r",(255,140,0)) + self.player2 = Player(self.screen,10,(self.width/2-100),(self.height/2),"l",(0,255,0)) def _draw_players(self): self.player1.draw() @@ -40,6 +43,17 @@ def _draw_players(self): def update(self): self.player1.update() self.player2.update() + if self.player1.crash(): + self.end_game("PLAYER 2 ") + self.player1.dir = "None" + self.player2.dir = "None" + if self.player2.crash(): + self.end_game("PLAYER 1 ") + self.player1.dir = "None" + self.player2.dir = "None" + + def end_game(self,player): + pygame.display.set_caption(player + "WINS!") class Cell(object): def __init__(self, draw_screen, coordinates, side_length): @@ -60,9 +74,9 @@ def __init__(self, draw_screen, dimension, start_posx, start_posy, direction, co self.height = dimension self.x = start_posx self.y = start_posy - self.dir = direction self.vx = 0 self.vy = 0 + self.dir = direction self.color = color def draw(self): @@ -82,9 +96,19 @@ def update(self): elif self.dir == "d": self.vx = 0 self.vy = 10 + elif self.dir == "None": + self.vx = 0 + self.vy = 0 self.x += self.vx self.y += self.vy + def crash(self): + if self.x == 640 or self.x == -10: + return True + if self.y == -10 or self.y == 480: + return True + return False + class PlayerPath(object): def __init__(self,model): self.model = model @@ -97,38 +121,30 @@ def handle_event(self, event): if event.type != KEYDOWN: return if event.key == pygame.K_LEFT: - if self.model.player1.dir == "r": - return - self.model.player1.dir = "l" + if self.model.player1.dir != "r": + self.model.player1.dir = "l" if event.key == pygame.K_RIGHT: - if self.model.player1.dir == "l": - return - self.model.player1.dir = "r" + if self.model.player1.dir != "l": + self.model.player1.dir = "r" if event.key == pygame.K_DOWN: - if self.model.player1.dir == "u": - return - self.model.player1.dir = "d" + if self.model.player1.dir != "u": + self.model.player1.dir = "d" if event.key == pygame.K_UP: - if self.model.player1.dir == "d": - return - self.model.player1.dir = "u" + if self.model.player1.dir != "d": + self.model.player1.dir = "u" if event.key ==pygame.K_a: - if self.model.player2.dir == "r": - return - self.model.player2.dir = "l" + if self.model.player2.dir != "r": + self.model.player2.dir = "l" if event.key == pygame.K_d: - if self.model.player2.dir == "l": - return - self.model.player2.dir = "r" + if self.model.player2.dir != "l": + self.model.player2.dir = "r" if event.key == pygame.K_s: - if self.model.player2.dir == "u": - return - self.model.player2.dir = "d" + if self.model.player2.dir != "u": + self.model.player2.dir = "d" if event.key == pygame.K_w: - if self.model.player2.dir == "d": - return - self.model.player2.dir = "u" + if self.model.player2.dir != "d": + self.model.player2.dir = "u" if __name__ == '__main__': @@ -139,11 +155,13 @@ def handle_event(self, event): running = True while running: + view._init_draw for event in pygame.event.get(): if event.type == QUIT: running = False controller.handle_event(event) model.update() view.draw() - time.sleep(.001) + time.sleep(.1) + pygame.quit() From 87b0c904fb65e0c3f237f3a1d052a38d70310dd8 Mon Sep 17 00:00:00 2001 From: hadleigh-000 Date: Fri, 9 Mar 2018 14:53:53 -0500 Subject: [PATCH 17/31] in class updates --- tron-hn01.py | 212 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 123 insertions(+), 89 deletions(-) diff --git a/tron-hn01.py b/tron-hn01.py index 461e51d5..bb40d7e5 100644 --- a/tron-hn01.py +++ b/tron-hn01.py @@ -1,12 +1,31 @@ - - +"Naomi's Working Space" import pygame -from pygame.locals import * +from pygame.locals import* import time +class PyGameWindowView(object): + def __init__(self,model,width=640,height=480): + self.model = model + size = (width,height) + self.model.screen = pygame.display.set_mode(size) + + def _init_draw(self): + self.model.screen.fill((105,105,105)) + self.model.cells = {} + cell_size = (self.model.cell_length, self.model.cell_length) + for i in range(self.model.height): + for j in range(self.model.width): + cell_coord = (i*self.model.cell_length,j*self.model.cell_length) + self.model.cells[(i,j)] = Cell(self.model.screen,cell_coord,cell_size) + all_cells = self.model.cells.values() + for cell in all_cells: + cell.draw() + def draw(self): + self.model._draw_players() + pygame.display.update() -class TronWorld(): +class TronModelView(object): def __init__(self,cell_length=10,width=640,height=480): pygame.init() size = (width,height) @@ -14,37 +33,27 @@ def __init__(self,cell_length=10,width=640,height=480): self.width = width self.height = height self.cell_length = cell_length - self._init_cells() - - def _init_cells(self): - self.cells = {} - cell_size = (self.cell_length, self.cell_length) - for i in range(self.height): - for j in range(self.width): - cell_coord = (i * self.cell_length, j*self.cell_length) - self.cells[(i,j)] = Cell(self.screen, cell_coord, cell_size) - - def _draw_background(self): - gray = (105, 105, 105) - self.screen.fill(gray) - - def _draw_cells(self): - all_cells = self.cells.values() - for cell in all_cells: - cell.draw() + self.player1 = Player(self.screen,10,(self.width/2+100),(self.height/2),"r",(255,140,0)) + self.player2 = Player(self.screen,10,(self.width/2-100),(self.height/2),"l",(0,255,0)) - def _redraw(self): - self._draw_background() - self._draw_cells() - pygame.display.update() + def _draw_players(self): + self.player1.draw() + self.player2.draw() - def main_loop(self): - running = True - while running: - self._redraw() - for event in pygame.event.get(): - if event.type == QUIT: - running = False + def update(self): + self.player1.update() + self.player2.update() + if self.player1.crash(): + self.end_game("PLAYER 2 ") + self.player1.dir = "None" + self.player2.dir = "None" + if self.player2.crash(): + self.end_game("PLAYER 1 ") + self.player1.dir = "None" + self.player2.dir = "None" + + def end_game(self,player): + pygame.display.set_caption(player + "WINS!") class Cell(object): def __init__(self, draw_screen, coordinates, side_length): @@ -58,77 +67,102 @@ def draw(self): rect = pygame.Rect(self.coordinates, self.side_length) pygame.draw.rect(self.draw_screen, self.color, rect, line_width) - class Player(object): - def __init__(self, start_posx, start_posy, color): + def __init__(self, draw_screen, dimension, start_posx, start_posy, direction, color=(255,255,255)): + self.draw_screen = draw_screen + self.width = dimension + self.height = dimension self.x = start_posx self.y = start_posy - self.dir = "r" - self.vx = .2 + self.vx = 0 + self.vy = 0 + self.dir = direction self.color = color + def draw(self): + line_width = .5 + pygame.draw.rect(self.draw_screen,self.color,pygame.Rect(self.x,self.y,self.width,self.height)) + def update(self): if self.dir == "r": - self.x += self.vx + self.vx = 10 + self.vy = 0 elif self.dir == "l": - self.x += -self.x + self.vx = -10 + self.vy = 0 elif self.dir == "u": - self.y += self.vx + self.vx = 0 + self.vy = -10 elif self.dir == "d": - self.y += -self.vx - - + self.vx = 0 + self.vy = 10 + elif self.dir == "None": + self.vx = 0 + self.vy = 0 + self.x += self.vx + self.y += self.vy + + def crash(self): + if self.x == 640 or self.x == -10: + return True + if self.y == -10 or self.y == 480: + return True + return False + +class PlayerPath(object): + def __init__(self,model): + self.model = model class KeyControl(object): - def __init__(self, player1, player2): - self.player1 = player1 - self.player2 = player2 + def __init__(self, model): + self.model = model def handle_event(self, event): - - if event == K_LEFT: - if self.player1.dir == "r": - return - self.player1.dir = "l" - - if event == K_RIGHT: - if self.player1.dir == "l": - return - self.player1.dir = "r" - - if event == K_DOWN: - if self.player1.dir == "u": - return - self.player1.dir = "d" - if event == K_UP: - if self.player1.dir == "d": - return - self.player1.dir = "u" - - - if event == K_a: - if self.player2.dir == "r": - return - self.player2.dir = "l" - - if event == K_d: - if self.player2.dir == "l": - return - self.player2.dir = "r" - - if event == K_s: - if self.player2.dir == "u": - return - self.player2.dir = "d" - if event == K_w: - if self.player2.dir == "d": - return - self.player2.dir = "u" - + if event.type != KEYDOWN: + return + if event.key == pygame.K_LEFT: + if self.model.player1.dir != "r": + self.model.player1.dir = "l" + if event.key == pygame.K_RIGHT: + if self.model.player1.dir != "l": + self.model.player1.dir = "r" + if event.key == pygame.K_DOWN: + if self.model.player1.dir != "u": + self.model.player1.dir = "d" + if event.key == pygame.K_UP: + if self.model.player1.dir != "d": + self.model.player1.dir = "u" + + if event.key ==pygame.K_a: + if self.model.player2.dir != "r": + self.model.player2.dir = "l" + if event.key == pygame.K_d: + if self.model.player2.dir != "l": + self.model.player2.dir = "r" + if event.key == pygame.K_s: + if self.model.player2.dir != "u": + self.model.player2.dir = "d" + if event.key == pygame.K_w: + if self.model.player2.dir != "d": + self.model.player2.dir = "u" if __name__ == '__main__': pygame.init() - - world = TronWorld() - world.main_loop() + model = TronModelView() + view = PyGameWindowView(model) + view._init_draw() + controller = KeyControl(model) + + running = True + while running: + view._init_draw + for event in pygame.event.get(): + if event.type == QUIT: + running = False + controller.handle_event(event) + model.update() + view.draw() + time.sleep(.2) + + pygame.quit() From 34d2ca1a11fbd8be556ada3092c3cf03a0c8eff7 Mon Sep 17 00:00:00 2001 From: Naomi Date: Fri, 9 Mar 2018 15:02:04 -0500 Subject: [PATCH 18/31] Fixed background --- tron-nc01.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tron-nc01.py b/tron-nc01.py index e11904f8..f2707463 100644 --- a/tron-nc01.py +++ b/tron-nc01.py @@ -18,9 +18,9 @@ def _init_draw(self): cell_coord = (i*self.model.cell_length,j*self.model.cell_length) self.model.cells[(i,j)] = Cell(self.model.screen,cell_coord,cell_size) all_cells = self.model.cells.values() - for cell in all_cells: cell.draw() + def draw(self): self.model._draw_players() pygame.display.update() @@ -151,11 +151,11 @@ def handle_event(self, event): pygame.init() model = TronModelView() view = PyGameWindowView(model) + view._init_draw() controller = KeyControl(model) running = True while running: - view._init_draw for event in pygame.event.get(): if event.type == QUIT: running = False From 804383c34480b0b39b354d12776c375c2e704a49 Mon Sep 17 00:00:00 2001 From: Naomi Date: Fri, 9 Mar 2018 15:04:47 -0500 Subject: [PATCH 19/31] Updated Master --- tron-master | 134 -------------------------------------- tron-master.py | 172 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 172 insertions(+), 134 deletions(-) delete mode 100644 tron-master create mode 100644 tron-master.py diff --git a/tron-master b/tron-master deleted file mode 100644 index e530f259..00000000 --- a/tron-master +++ /dev/null @@ -1,134 +0,0 @@ -""" -Master Copy -Tron Remake - -@author: Naomi Chiu and Hadleigh Nunes -""" -import pygame -from pygame.locals import * -import time - - - -class TronWorld(): - def __init__(self,cell_length=10,width=640,height=480): - pygame.init() - size = (width,height) - self.screen = pygame.display.set_mode(size) - self.width = width - self.height = height - self.cell_length = cell_length - self._init_cells() - - def _init_cells(self): - self.cells = {} - cell_size = (self.cell_length, self.cell_length) - for i in range(self.height): - for j in range(self.width): - cell_coord = (i * self.cell_length, j*self.cell_length) - self.cells[(i,j)] = Cell(self.screen, cell_coord, cell_size) - - def _draw_background(self): - gray = (105, 105, 105) - self.screen.fill(gray) - - def _draw_cells(self): - all_cells = self.cells.values() - for cell in all_cells: - cell.draw() - - def _redraw(self): - self._draw_background() - self._draw_cells() - pygame.display.update() - - def main_loop(self): - running = True - while running: - self._redraw() - for event in pygame.event.get(): - if event.type == QUIT: - running = False - -class Cell(object): - def __init__(self, draw_screen, coordinates, side_length): - self.draw_screen = draw_screen - self.coordinates = coordinates - self.side_length = side_length - self.color = (0, 0, 0) - - def draw(self): - line_width = 1 - rect = pygame.Rect(self.coordinates, self.side_length) - pygame.draw.rect(self.draw_screen, self.color, rect, line_width) - -class Player(object): - def __init__(self, start_posx, start_posy, color): - self.x = start_posx - self.y = start_posy - self.dir = "r" - self.vx = .2 - self.color = color - - def update(self): - if self.dir == "r": - self.x += self.vx - elif self.dir == "l": - self.x += -self.x - elif self.dir == "u": - self.y += self.vx - elif self.dir == "d": - self.y += -self.vx - -class KeyControl(object): - def __init__(self, player1, player2): - self.player1 = player1 - self.player2 = player2 - - def handle_event(self, event): - - if event == K_LEFT: - if self.player1.dir == "r": - return - self.player1.dir = "l" - - if event == K_RIGHT: - if self.player1.dir == "l": - return - self.player1.dir = "r" - - if event == K_DOWN: - if self.player1.dir == "u": - return - self.player1.dir = "d" - if event == K_UP: - if self.player1.dir == "d": - return - self.player1.dir = "u" - - if event == K_a: - if self.player2.dir == "r": - return - self.player2.dir = "l" - - if event == K_d: - if self.player2.dir == "l": - return - self.player2.dir = "r" - - if event == K_s: - if self.player2.dir == "u": - return - self.player2.dir = "d" - if event == K_w: - if self.player2.dir == "d": - return - self.player2.dir = "u" - - - -if __name__ == '__main__': - pygame.init() - - world = TronWorld() - world.main_loop() diff --git a/tron-master.py b/tron-master.py new file mode 100644 index 00000000..337a77dd --- /dev/null +++ b/tron-master.py @@ -0,0 +1,172 @@ +""" +Master Copy +Tron Remake + +@author: Naomi Chiu and Hadleigh Nunes +""" +import pygame +from pygame.locals import* +import time + +class PyGameWindowView(object): + def __init__(self,model,width=640,height=480): + self.model = model + size = (width,height) + self.model.screen = pygame.display.set_mode(size) + + def _init_draw(self): + self.model.screen.fill((105,105,105)) + self.model.cells = {} + cell_size = (self.model.cell_length, self.model.cell_length) + for i in range(self.model.height): + for j in range(self.model.width): + cell_coord = (i*self.model.cell_length,j*self.model.cell_length) + self.model.cells[(i,j)] = Cell(self.model.screen,cell_coord,cell_size) + all_cells = self.model.cells.values() + for cell in all_cells: + cell.draw() + + def draw(self): + self.model._draw_players() + pygame.display.update() + +class TronModelView(object): + def __init__(self,cell_length=10,width=640,height=480): + pygame.init() + size = (width,height) + self.screen = pygame.display.set_mode(size) + self.width = width + self.height = height + self.cell_length = cell_length + self.player1 = Player(self.screen,10,(self.width/2+100),(self.height/2),"r",(255,140,0)) + self.player2 = Player(self.screen,10,(self.width/2-100),(self.height/2),"l",(0,255,0)) + + def _draw_players(self): + self.player1.draw() + self.player2.draw() + + def update(self): + self.player1.update() + self.player2.update() + if self.player1.crash(): + self.end_game("PLAYER 2 ") + self.player1.dir = "None" + self.player2.dir = "None" + if self.player2.crash(): + self.end_game("PLAYER 1 ") + self.player1.dir = "None" + self.player2.dir = "None" + + def end_game(self,player): + pygame.display.set_caption(player + "WINS!") + +class Cell(object): + def __init__(self, draw_screen, coordinates, side_length): + self.draw_screen = draw_screen + self.coordinates = coordinates + self.side_length = side_length + self.color = (0, 0, 0) + + def draw(self): + line_width = 1 + rect = pygame.Rect(self.coordinates, self.side_length) + pygame.draw.rect(self.draw_screen, self.color, rect, line_width) + +class Player(object): + def __init__(self, draw_screen, dimension, start_posx, start_posy, direction, color=(255,255,255)): + self.draw_screen = draw_screen + self.width = dimension + self.height = dimension + self.x = start_posx + self.y = start_posy + self.vx = 0 + self.vy = 0 + self.dir = direction + self.color = color + + def draw(self): + line_width = .5 + pygame.draw.rect(self.draw_screen,self.color,pygame.Rect(self.x,self.y,self.width,self.height)) + + def update(self): + if self.dir == "r": + self.vx = 10 + self.vy = 0 + elif self.dir == "l": + self.vx = -10 + self.vy = 0 + elif self.dir == "u": + self.vx = 0 + self.vy = -10 + elif self.dir == "d": + self.vx = 0 + self.vy = 10 + elif self.dir == "None": + self.vx = 0 + self.vy = 0 + self.x += self.vx + self.y += self.vy + + def crash(self): + if self.x == 640 or self.x == -10: + return True + if self.y == -10 or self.y == 480: + return True + return False + +class PlayerPath(object): + def __init__(self,model): + self.model = model + +class KeyControl(object): + def __init__(self, model): + self.model = model + + def handle_event(self, event): + if event.type != KEYDOWN: + return + if event.key == pygame.K_LEFT: + if self.model.player1.dir != "r": + self.model.player1.dir = "l" + if event.key == pygame.K_RIGHT: + if self.model.player1.dir != "l": + self.model.player1.dir = "r" + if event.key == pygame.K_DOWN: + if self.model.player1.dir != "u": + self.model.player1.dir = "d" + if event.key == pygame.K_UP: + if self.model.player1.dir != "d": + self.model.player1.dir = "u" + + if event.key ==pygame.K_a: + if self.model.player2.dir != "r": + self.model.player2.dir = "l" + if event.key == pygame.K_d: + if self.model.player2.dir != "l": + self.model.player2.dir = "r" + if event.key == pygame.K_s: + if self.model.player2.dir != "u": + self.model.player2.dir = "d" + if event.key == pygame.K_w: + if self.model.player2.dir != "d": + self.model.player2.dir = "u" + + +if __name__ == '__main__': + pygame.init() + model = TronModelView() + view = PyGameWindowView(model) + view._init_draw() + controller = KeyControl(model) + + running = True + while running: + for event in pygame.event.get(): + if event.type == QUIT: + running = False + controller.handle_event(event) + model.update() + view.draw() + time.sleep(.1) + + pygame.quit() From 4b6bd8e90753884510a3a3013ec771a2723c052e Mon Sep 17 00:00:00 2001 From: hadleigh-000 Date: Fri, 9 Mar 2018 16:03:49 -0500 Subject: [PATCH 20/31] added structure for cell paths to cell and player classes --- tron-hn01.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/tron-hn01.py b/tron-hn01.py index bb40d7e5..67db012b 100644 --- a/tron-hn01.py +++ b/tron-hn01.py @@ -36,6 +36,16 @@ def __init__(self,cell_length=10,width=640,height=480): self.player1 = Player(self.screen,10,(self.width/2+100),(self.height/2),"r",(255,140,0)) self.player2 = Player(self.screen,10,(self.width/2-100),(self.height/2),"l",(0,255,0)) + def path_init(self): + self.cells_loc = {} + for i in range(self.height): + for j in range(self.width): + cell_coords = (i*self.cell_length,j*self.cell_length) + self.cells_loc[(i,j)] = Cell(self.screen,cell_coords,cell_size) + + self.hit_cells = [(self.player1.x, self.player1.y), (self.player2.x, self.player2.y)] + + def _draw_players(self): self.player1.draw() self.player2.draw() @@ -61,6 +71,11 @@ def __init__(self, draw_screen, coordinates, side_length): self.coordinates = coordinates self.side_length = side_length self.color = (0, 0, 0) + self.area_pix = [] + for i in range(self.coordinates[0], self.coordinates[0]+self.side_length): + for j in range(self.coordinates[1], self.coordinates[1]+self.side_length): + self.area_pix.append((i,j)) + def draw(self): line_width = 1 @@ -112,6 +127,22 @@ def crash(self): class PlayerPath(object): def __init__(self,model): self.model = model + self.model.cells_loc = {} + for i in range(self.model.height): + for j in range(self.model.width): + cell_coords = (i*self.model.cell_length,j*self.model.cell_length) + self.model.cells_loc[(i,j)] = Cell(self.model.screen,cell_coords,cell_size) + + self.model.hit_cells = [(self.model.player1.x, self.model.player1.y), (self.model.player2.x, self.model.player2.y)] + + def update(self): + if (self.model.player1.x, self.model.player1.y) not in self.hit_cells: + self.hit_cells.append((player1.x, player1.y)) + if (self.model.player2.x, self.model.player2.y) not in self.hit_cells: + self.hit_cells.append + + + class KeyControl(object): def __init__(self, model): From 57d11a2da38247b3d6ecfefa46ef873ae57bde75 Mon Sep 17 00:00:00 2001 From: hadleigh-000 Date: Mon, 12 Mar 2018 19:41:13 -0400 Subject: [PATCH 21/31] trying to add player paths --- tron-hn01.py | 65 +++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 51 insertions(+), 14 deletions(-) diff --git a/tron-hn01.py b/tron-hn01.py index 67db012b..4b56fceb 100644 --- a/tron-hn01.py +++ b/tron-hn01.py @@ -16,11 +16,12 @@ def _init_draw(self): for i in range(self.model.height): for j in range(self.model.width): cell_coord = (i*self.model.cell_length,j*self.model.cell_length) - self.model.cells[(i,j)] = Cell(self.model.screen,cell_coord,cell_size) + self.model.cells[(i,j)] = Cellview(self.model.screen,cell_coord,cell_size) all_cells = self.model.cells.values() for cell in all_cells: cell.draw() + def draw(self): self.model._draw_players() pygame.display.update() @@ -33,18 +34,30 @@ def __init__(self,cell_length=10,width=640,height=480): self.width = width self.height = height self.cell_length = cell_length + self.cell_lst = [] + self.player_paths = [] self.player1 = Player(self.screen,10,(self.width/2+100),(self.height/2),"r",(255,140,0)) self.player2 = Player(self.screen,10,(self.width/2-100),(self.height/2),"l",(0,255,0)) - - def path_init(self): self.cells_loc = {} for i in range(self.height): for j in range(self.width): - cell_coords = (i*self.cell_length,j*self.cell_length) - self.cells_loc[(i,j)] = Cell(self.screen,cell_coords,cell_size) + cell_coords = (i*self.cell_length, j*self.cell_length) + self.cells_loc[(i,j)] = Cell(self.screen, cell_coords, cell_length) + + self.cell_lst = list(self.cells_loc.values()) + - self.hit_cells = [(self.player1.x, self.player1.y), (self.player2.x, self.player2.y)] - + + def in_cell(self): + for cell in self.cell_lst: + if self.player1.x in cell.xrange and self.player1.y in cell.yrange: + self.player1.current_cell = cell + break + + for cell in self.cell_lst: + if self.player2.x in cell.xrange and self.player2.y in cell.yrange: + self.player2.current_cell = cell + break def _draw_players(self): self.player1.draw() @@ -62,20 +75,40 @@ def update(self): self.player1.dir = "None" self.player2.dir = "None" + last_seen_p1 = self.player1.current_cell + last_seen_p2 = self.player2.current_cell + self.in_cell() + if self.player1.current_cell != last_seen_p1: + self.player_paths.append(last_seen_p1) + print(player_paths) + if self.player2.current_cell != last_seen_p2: + self.player_paths.append(last_seen_p2) + print(player_paths) + + if self.player1.current_cell in self.player_paths: + end_game("PLAYER 2") + if self.player2.current_cell in self.player_paths: + end_game("PLAYER 1") + + def end_game(self,player): pygame.display.set_caption(player + "WINS!") class Cell(object): - def __init__(self, draw_screen, coordinates, side_length): + def __init__(self,coords, cell_lenth): + self.xmin = coords[0] + self.ymin = coords[1] + self.xmax = coords[0] + cell_length + self.ymas = coords[1] + cell_length + self.xrange = range(self.xmin, self.xmax) + self.yrange = range(self.ymin, self.ymax) + +class Cellview(object): + def __init__(self, draw_screen, coordinates, cell_length): self.draw_screen = draw_screen self.coordinates = coordinates - self.side_length = side_length + self.side_length = cell_length self.color = (0, 0, 0) - self.area_pix = [] - for i in range(self.coordinates[0], self.coordinates[0]+self.side_length): - for j in range(self.coordinates[1], self.coordinates[1]+self.side_length): - self.area_pix.append((i,j)) - def draw(self): line_width = 1 @@ -93,6 +126,9 @@ def __init__(self, draw_screen, dimension, start_posx, start_posy, direction, co self.vy = 0 self.dir = direction self.color = color + self.current_cell = None + + def draw(self): line_width = .5 @@ -117,6 +153,7 @@ def update(self): self.x += self.vx self.y += self.vy + def crash(self): if self.x == 640 or self.x == -10: return True From b2aa7b82a75b98cce8f30809561fe03acd0741ea Mon Sep 17 00:00:00 2001 From: hadleigh-000 Date: Mon, 12 Mar 2018 23:02:52 -0400 Subject: [PATCH 22/31] working collision for players --- tron-hn01.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/tron-hn01.py b/tron-hn01.py index 4b56fceb..72436058 100644 --- a/tron-hn01.py +++ b/tron-hn01.py @@ -39,12 +39,12 @@ def __init__(self,cell_length=10,width=640,height=480): self.player1 = Player(self.screen,10,(self.width/2+100),(self.height/2),"r",(255,140,0)) self.player2 = Player(self.screen,10,(self.width/2-100),(self.height/2),"l",(0,255,0)) self.cells_loc = {} - for i in range(self.height): - for j in range(self.width): + for i in range(self.height//cell_length): + for j in range(self.width//cell_length): cell_coords = (i*self.cell_length, j*self.cell_length) - self.cells_loc[(i,j)] = Cell(self.screen, cell_coords, cell_length) + self.cell_lst.append(Cell(cell_coords, cell_length)) + - self.cell_lst = list(self.cells_loc.values()) @@ -80,26 +80,31 @@ def update(self): self.in_cell() if self.player1.current_cell != last_seen_p1: self.player_paths.append(last_seen_p1) - print(player_paths) + if self.player2.current_cell != last_seen_p2: self.player_paths.append(last_seen_p2) - print(player_paths) + if self.player1.current_cell in self.player_paths: - end_game("PLAYER 2") + self.end_game("PLAYER 2 ") + self.player1.dir = "None" + self.player2.dir = "None" if self.player2.current_cell in self.player_paths: - end_game("PLAYER 1") + self.end_game("PLAYER 1 ") + self.player1.dir = "None" + self.player2.dir = "None" def end_game(self,player): pygame.display.set_caption(player + "WINS!") + class Cell(object): - def __init__(self,coords, cell_lenth): + def __init__(self,coords, cell_length): self.xmin = coords[0] self.ymin = coords[1] self.xmax = coords[0] + cell_length - self.ymas = coords[1] + cell_length + self.ymax = coords[1] + cell_length self.xrange = range(self.xmin, self.xmax) self.yrange = range(self.ymin, self.ymax) From d8f4b1eda4918f0343f0a7134a16d92555e19cfa Mon Sep 17 00:00:00 2001 From: Naomi Date: Wed, 14 Mar 2018 23:15:14 -0400 Subject: [PATCH 23/31] Added Play Loop --- tron-nc01.py | 93 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 59 insertions(+), 34 deletions(-) diff --git a/tron-nc01.py b/tron-nc01.py index f2707463..dfe5690b 100644 --- a/tron-nc01.py +++ b/tron-nc01.py @@ -4,7 +4,7 @@ import time class PyGameWindowView(object): - def __init__(self,model,width=640,height=480): + def __init__(self,model,width,height): self.model = model size = (width,height) self.model.screen = pygame.display.set_mode(size) @@ -20,13 +20,13 @@ def _init_draw(self): all_cells = self.model.cells.values() for cell in all_cells: cell.draw() - + def draw(self): self.model._draw_players() pygame.display.update() class TronModelView(object): - def __init__(self,cell_length=10,width=640,height=480): + def __init__(self,cell_length,width,height): pygame.init() size = (width,height) self.screen = pygame.display.set_mode(size) @@ -35,6 +35,7 @@ def __init__(self,cell_length=10,width=640,height=480): self.cell_length = cell_length self.player1 = Player(self.screen,10,(self.width/2+100),(self.height/2),"r",(255,140,0)) self.player2 = Player(self.screen,10,(self.width/2-100),(self.height/2),"l",(0,255,0)) + self.game_over = False def _draw_players(self): self.player1.draw() @@ -44,16 +45,15 @@ def update(self): self.player1.update() self.player2.update() if self.player1.crash(): - self.end_game("PLAYER 2 ") - self.player1.dir = "None" - self.player2.dir = "None" + self.end_game("GREEN ") if self.player2.crash(): - self.end_game("PLAYER 1 ") - self.player1.dir = "None" - self.player2.dir = "None" + self.end_game("ORANGE ") def end_game(self,player): pygame.display.set_caption(player + "WINS!") + self.game_over = True + self.player1.dir = "None" + self.player2.dir = "None" class Cell(object): def __init__(self, draw_screen, coordinates, side_length): @@ -112,6 +112,18 @@ def crash(self): class PlayerPath(object): def __init__(self,model): self.model = model + self.model.cells_loc = {} + for i in range(self.model.height): + for j in range(self.model.height): + cell_coords = (i*self.model.cell_length,j*self.model.cell_length) + self.model.cells_loc[(i,j)] = Cell(self.model.screen,cell_coords,cell_size) + self.model.hit_cells = [(self.model.player1.x,self.model.player1.y),(self.model.player2.x,self.model.player2.y)] + + def update(self): + if (self.model.player1.x,self.model.player1,y) not in self.hit_cells: + self.hit_cells.append((self.model.player1.x, self.model.player1.y)) + if (self.model.player2.x,self.model.player2.y) not in self.hit_cells: + self.hit_cells.append((self.model.player2.x,self.model.player2.y)) class KeyControl(object): def __init__(self, model): @@ -120,48 +132,61 @@ def __init__(self, model): def handle_event(self, event): if event.type != KEYDOWN: return - if event.key == pygame.K_LEFT: + if event.key == pygame.K_LEFT and self.model.game_over != True: if self.model.player1.dir != "r": self.model.player1.dir = "l" - if event.key == pygame.K_RIGHT: + if event.key == pygame.K_RIGHT and self.model.game_over != True: if self.model.player1.dir != "l": self.model.player1.dir = "r" - if event.key == pygame.K_DOWN: + if event.key == pygame.K_DOWN and self.model.game_over != True: if self.model.player1.dir != "u": self.model.player1.dir = "d" - if event.key == pygame.K_UP: + if event.key == pygame.K_UP and self.model.game_over != True: if self.model.player1.dir != "d": self.model.player1.dir = "u" - if event.key ==pygame.K_a: + if event.key ==pygame.K_a and self.model.game_over != True: if self.model.player2.dir != "r": self.model.player2.dir = "l" - if event.key == pygame.K_d: + if event.key == pygame.K_d and self.model.game_over != True: if self.model.player2.dir != "l": self.model.player2.dir = "r" - if event.key == pygame.K_s: + if event.key == pygame.K_s and self.model.game_over != True: if self.model.player2.dir != "u": self.model.player2.dir = "d" - if event.key == pygame.K_w: + if event.key == pygame.K_w and self.model.game_over != True: if self.model.player2.dir != "d": self.model.player2.dir = "u" + if event.key == pygame.K_SPACE and self.model.game_over == True: + return True if __name__ == '__main__': - pygame.init() - model = TronModelView() - view = PyGameWindowView(model) - view._init_draw() - controller = KeyControl(model) - - running = True - while running: - for event in pygame.event.get(): - if event.type == QUIT: - running = False - controller.handle_event(event) - model.update() - view.draw() - time.sleep(.1) - - pygame.quit() + + def main_loop(): + pygame.init() + running = True + while running: + model = TronModelView(10,640,480) + view = PyGameWindowView(model,640,480) + view._init_draw() + controller = KeyControl(model) + + game_over = False + while not game_over: + for event in pygame.event.get(): + if event.type == QUIT: + running = False + game_over = True + if controller.handle_event(event): + game_over = True + controller.handle_event(event) + model.update() + view.draw() + time.sleep(.1) + for event in pygame.event.get(): + if event.type == QUIT: + running = False + pygame.quit() + + main_loop() From 5df39647d9411613aece5b7f2152a1c7804fdf71 Mon Sep 17 00:00:00 2001 From: Naomi Date: Thu, 15 Mar 2018 14:58:53 -0400 Subject: [PATCH 24/31] Final Version --- tron-master.py | 128 ++++++++++++++++++++++++++++++++++++------------- tron-nc01.py | 37 +++++++++++++- 2 files changed, 130 insertions(+), 35 deletions(-) diff --git a/tron-master.py b/tron-master.py index 337a77dd..c94155d1 100644 --- a/tron-master.py +++ b/tron-master.py @@ -9,7 +9,7 @@ import time class PyGameWindowView(object): - def __init__(self,model,width=640,height=480): + def __init__(self,model,width,height): self.model = model size = (width,height) self.model.screen = pygame.display.set_mode(size) @@ -21,7 +21,7 @@ def _init_draw(self): for i in range(self.model.height): for j in range(self.model.width): cell_coord = (i*self.model.cell_length,j*self.model.cell_length) - self.model.cells[(i,j)] = Cell(self.model.screen,cell_coord,cell_size) + self.model.cells[(i,j)] = Cellview(self.model.screen,cell_coord,cell_size) all_cells = self.model.cells.values() for cell in all_cells: cell.draw() @@ -31,36 +31,70 @@ def draw(self): pygame.display.update() class TronModelView(object): - def __init__(self,cell_length=10,width=640,height=480): + def __init__(self,cell_length,width,height): pygame.init() size = (width,height) self.screen = pygame.display.set_mode(size) self.width = width self.height = height self.cell_length = cell_length + self.cell_lst = [] + self.player_paths = [] self.player1 = Player(self.screen,10,(self.width/2+100),(self.height/2),"r",(255,140,0)) self.player2 = Player(self.screen,10,(self.width/2-100),(self.height/2),"l",(0,255,0)) + self.cells_loc = {} + for i in range(self.height//cell_length): + for j in range(self.width//cell_length): + self.cell_lst.append(Cell((i*self.cell_length,j*self.cell_length),cell_length)) + self.game_over = False def _draw_players(self): self.player1.draw() self.player2.draw() + def in_cell(self): + for cell in self.cell_lst: + if self.player1.x in cell.xrange and self.player1.y in cell.yrange: + self.player1.current_cell = cell + break + for cell in self.cell_lst: + if self.player2.x in cell.xrange and self.player2.y in cell.yrange: + self.player2.current_cell = cell + break + def update(self): self.player1.update() self.player2.update() if self.player1.crash(): - self.end_game("PLAYER 2 ") - self.player1.dir = "None" - self.player2.dir = "None" + self.end_game("GREEN ") if self.player2.crash(): - self.end_game("PLAYER 1 ") - self.player1.dir = "None" - self.player2.dir = "None" + self.end_game("ORANGE ") + + last_seen_p1 = self.player1.current_cell + last_seen_p2 = self.player2.current_cell + self.in_cell() + if self.player1.current_cell != last_seen_p1: + self.player_paths.append(last_seen_p1) + if self.player2.current_cell != last_seen_p2: + self.player_paths.append(last_seen_p2) + + if self.player1.current_cell in self.player_paths: + self.end_game("GREEN ") + if self.player2.current_cell in self.player_paths: + self.end_game("ORANGE ") def end_game(self,player): pygame.display.set_caption(player + "WINS!") + self.game_over = True + self.player1.dir = "None" + self.player2.dir = "None" class Cell(object): + def __init__(self, coords, cell_length): + self.xrange = range(coords[0],coords[0]+cell_length) + self.yrange = range(coords[1],coords[1]+cell_length) + +class Cellview(object): def __init__(self, draw_screen, coordinates, side_length): self.draw_screen = draw_screen self.coordinates = coordinates @@ -83,6 +117,7 @@ def __init__(self, draw_screen, dimension, start_posx, start_posy, direction, co self.vy = 0 self.dir = direction self.color = color + self.current_cell = None def draw(self): line_width = .5 @@ -117,6 +152,18 @@ def crash(self): class PlayerPath(object): def __init__(self,model): self.model = model + self.model.cells_loc = {} + for i in range(self.model.height): + for j in range(self.model.height): + cell_coords = (i*self.model.cell_length,j*self.model.cell_length) + self.model.cells_loc[(i,j)] = Cell(self.model.screen,cell_coords,cell_size) + self.model.hit_cells = [(self.model.player1.x,self.model.player1.y),(self.model.player2.x,self.model.player2.y)] + + def update(self): + if (self.model.player1.x,self.model.player1,y) not in self.hit_cells: + self.hit_cells.append((self.model.player1.x, self.model.player1.y)) + if (self.model.player2.x,self.model.player2.y) not in self.hit_cells: + self.hit_cells.append((self.model.player2.x,self.model.player2.y)) class KeyControl(object): def __init__(self, model): @@ -125,48 +172,61 @@ def __init__(self, model): def handle_event(self, event): if event.type != KEYDOWN: return - if event.key == pygame.K_LEFT: + if event.key == pygame.K_LEFT and self.model.game_over != True: if self.model.player1.dir != "r": self.model.player1.dir = "l" - if event.key == pygame.K_RIGHT: + if event.key == pygame.K_RIGHT and self.model.game_over != True: if self.model.player1.dir != "l": self.model.player1.dir = "r" - if event.key == pygame.K_DOWN: + if event.key == pygame.K_DOWN and self.model.game_over != True: if self.model.player1.dir != "u": self.model.player1.dir = "d" - if event.key == pygame.K_UP: + if event.key == pygame.K_UP and self.model.game_over != True: if self.model.player1.dir != "d": self.model.player1.dir = "u" - if event.key ==pygame.K_a: + if event.key ==pygame.K_a and self.model.game_over != True: if self.model.player2.dir != "r": self.model.player2.dir = "l" - if event.key == pygame.K_d: + if event.key == pygame.K_d and self.model.game_over != True: if self.model.player2.dir != "l": self.model.player2.dir = "r" - if event.key == pygame.K_s: + if event.key == pygame.K_s and self.model.game_over != True: if self.model.player2.dir != "u": self.model.player2.dir = "d" - if event.key == pygame.K_w: + if event.key == pygame.K_w and self.model.game_over != True: if self.model.player2.dir != "d": self.model.player2.dir = "u" + if event.key == pygame.K_SPACE and self.model.game_over == True: + return True if __name__ == '__main__': - pygame.init() - model = TronModelView() - view = PyGameWindowView(model) - view._init_draw() - controller = KeyControl(model) - - running = True - while running: - for event in pygame.event.get(): - if event.type == QUIT: - running = False - controller.handle_event(event) - model.update() - view.draw() - time.sleep(.1) - - pygame.quit() + + def main_loop(): + pygame.init() + running = True + while running: + model = TronModelView(10,640,480) + view = PyGameWindowView(model,640,480) + view._init_draw() + controller = KeyControl(model) + + game_over = False + while not game_over: + for event in pygame.event.get(): + if event.type == QUIT: + running = False + game_over = True + if controller.handle_event(event): + game_over = True + controller.handle_event(event) + model.update() + view.draw() + time.sleep(.1) + for event in pygame.event.get(): + if event.type == QUIT: + running = False + pygame.quit() + + main_loop() diff --git a/tron-nc01.py b/tron-nc01.py index dfe5690b..dcaac0ad 100644 --- a/tron-nc01.py +++ b/tron-nc01.py @@ -16,7 +16,7 @@ def _init_draw(self): for i in range(self.model.height): for j in range(self.model.width): cell_coord = (i*self.model.cell_length,j*self.model.cell_length) - self.model.cells[(i,j)] = Cell(self.model.screen,cell_coord,cell_size) + self.model.cells[(i,j)] = Cellview(self.model.screen,cell_coord,cell_size) all_cells = self.model.cells.values() for cell in all_cells: cell.draw() @@ -33,14 +33,30 @@ def __init__(self,cell_length,width,height): self.width = width self.height = height self.cell_length = cell_length + self.cell_lst = [] + self.player_paths = [] self.player1 = Player(self.screen,10,(self.width/2+100),(self.height/2),"r",(255,140,0)) self.player2 = Player(self.screen,10,(self.width/2-100),(self.height/2),"l",(0,255,0)) + self.cells_loc = {} + for i in range(self.height//cell_length): + for j in range(self.width//cell_length): + self.cell_lst.append(Cell((i*self.cell_length,j*self.cell_length),cell_length)) self.game_over = False def _draw_players(self): self.player1.draw() self.player2.draw() + def in_cell(self): + for cell in self.cell_lst: + if self.player1.x in cell.xrange and self.player1.y in cell.yrange: + self.player1.current_cell = cell + break + for cell in self.cell_lst: + if self.player2.x in cell.xrange and self.player2.y in cell.yrange: + self.player2.current_cell = cell + break + def update(self): self.player1.update() self.player2.update() @@ -49,6 +65,19 @@ def update(self): if self.player2.crash(): self.end_game("ORANGE ") + last_seen_p1 = self.player1.current_cell + last_seen_p2 = self.player2.current_cell + self.in_cell() + if self.player1.current_cell != last_seen_p1: + self.player_paths.append(last_seen_p1) + if self.player2.current_cell != last_seen_p2: + self.player_paths.append(last_seen_p2) + + if self.player1.current_cell in self.player_paths: + self.end_game("GREEN ") + if self.player2.current_cell in self.player_paths: + self.end_game("ORANGE ") + def end_game(self,player): pygame.display.set_caption(player + "WINS!") self.game_over = True @@ -56,6 +85,11 @@ def end_game(self,player): self.player2.dir = "None" class Cell(object): + def __init__(self, coords, cell_length): + self.xrange = range(coords[0],coords[0]+cell_length) + self.yrange = range(coords[1],coords[1]+cell_length) + +class Cellview(object): def __init__(self, draw_screen, coordinates, side_length): self.draw_screen = draw_screen self.coordinates = coordinates @@ -78,6 +112,7 @@ def __init__(self, draw_screen, dimension, start_posx, start_posy, direction, co self.vy = 0 self.dir = direction self.color = color + self.current_cell = None def draw(self): line_width = .5 From d748669bf3abcc850bc4a590cad2add928bf2f1b Mon Sep 17 00:00:00 2001 From: Naomi Date: Thu, 15 Mar 2018 14:59:42 -0400 Subject: [PATCH 25/31] No changes, just needed to save to run python --- tron-hn01.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tron-hn01.py b/tron-hn01.py index 72436058..c3ab8401 100644 --- a/tron-hn01.py +++ b/tron-hn01.py @@ -75,14 +75,14 @@ def update(self): self.player1.dir = "None" self.player2.dir = "None" - last_seen_p1 = self.player1.current_cell + """last_seen_p1 = self.player1.current_cell last_seen_p2 = self.player2.current_cell self.in_cell() if self.player1.current_cell != last_seen_p1: self.player_paths.append(last_seen_p1) if self.player2.current_cell != last_seen_p2: - self.player_paths.append(last_seen_p2) + self.player_paths.append(last_seen_p2)""" if self.player1.current_cell in self.player_paths: From 2f3a174974c057bc9b7829e5ad6f6d5967cdc520 Mon Sep 17 00:00:00 2001 From: hadleigh-000 Date: Thu, 15 Mar 2018 19:43:06 -0400 Subject: [PATCH 26/31] added docstrings --- tron-master.py | 44 +++++++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/tron-master.py b/tron-master.py index c94155d1..e758dff4 100644 --- a/tron-master.py +++ b/tron-master.py @@ -9,12 +9,15 @@ import time class PyGameWindowView(object): + """View object containing the visual elements of the game. + Takes a game model and renders its state onscreen""" def __init__(self,model,width,height): self.model = model size = (width,height) self.model.screen = pygame.display.set_mode(size) def _init_draw(self): + """Draws the grid on the screen and is only called at the beginning of a game.""" self.model.screen.fill((105,105,105)) self.model.cells = {} cell_size = (self.model.cell_length, self.model.cell_length) @@ -27,10 +30,12 @@ def _init_draw(self): cell.draw() def draw(self): + """Draws the player paths and is updated and redrawn constantly""" self.model._draw_players() pygame.display.update() class TronModelView(object): + """Contains the players, the game state, all cells, and the cells that have been hit.""" def __init__(self,cell_length,width,height): pygame.init() size = (width,height) @@ -42,17 +47,19 @@ def __init__(self,cell_length,width,height): self.player_paths = [] self.player1 = Player(self.screen,10,(self.width/2+100),(self.height/2),"r",(255,140,0)) self.player2 = Player(self.screen,10,(self.width/2-100),(self.height/2),"l",(0,255,0)) - self.cells_loc = {} for i in range(self.height//cell_length): for j in range(self.width//cell_length): self.cell_lst.append(Cell((i*self.cell_length,j*self.cell_length),cell_length)) self.game_over = False def _draw_players(self): + """Calls the player objects' draw functions""" self.player1.draw() self.player2.draw() def in_cell(self): + """Loops through cell_lst to find the cell whos xrange contains player.x + and whos yrange contains player.y, and sets the player location to within that cell.""" for cell in self.cell_lst: if self.player1.x in cell.xrange and self.player1.y in cell.yrange: self.player1.current_cell = cell @@ -63,6 +70,7 @@ def in_cell(self): break def update(self): + """Checks for new input and updates the game model.""" self.player1.update() self.player2.update() if self.player1.crash(): @@ -72,11 +80,15 @@ def update(self): last_seen_p1 = self.player1.current_cell last_seen_p2 = self.player2.current_cell + # Saving the player locations before updating in order to test to see if the players + #have entered a new cell. self.in_cell() if self.player1.current_cell != last_seen_p1: self.player_paths.append(last_seen_p1) if self.player2.current_cell != last_seen_p2: self.player_paths.append(last_seen_p2) + #If the player has left a cell and moved into another, the vacated cell is + #added to the list of cells that have been hit if self.player1.current_cell in self.player_paths: self.end_game("GREEN ") @@ -84,17 +96,22 @@ def update(self): self.end_game("ORANGE ") def end_game(self,player): + """Contains end game protocall""" pygame.display.set_caption(player + "WINS!") self.game_over = True self.player1.dir = "None" self.player2.dir = "None" class Cell(object): + """Square object with area and location + Used as building block for game grid""" def __init__(self, coords, cell_length): self.xrange = range(coords[0],coords[0]+cell_length) self.yrange = range(coords[1],coords[1]+cell_length) class Cellview(object): + """Cell object defining the visualized form of a cell. + Not used structurally to define player locations, but used to visualize the game""" def __init__(self, draw_screen, coordinates, side_length): self.draw_screen = draw_screen self.coordinates = coordinates @@ -107,6 +124,7 @@ def draw(self): pygame.draw.rect(self.draw_screen, self.color, rect, line_width) class Player(object): + """Contains players location, direcection and speed, as well as their color""" def __init__(self, draw_screen, dimension, start_posx, start_posy, direction, color=(255,255,255)): self.draw_screen = draw_screen self.width = dimension @@ -124,6 +142,8 @@ def draw(self): pygame.draw.rect(self.draw_screen,self.color,pygame.Rect(self.x,self.y,self.width,self.height)) def update(self): + """Checks if players have changed directions, and then + adds the amount given by vx to the relevant direction""" if self.dir == "r": self.vx = 10 self.vy = 0 @@ -143,35 +163,23 @@ def update(self): self.y += self.vy def crash(self): + """Determines what happens if a player runs of the screen. + Called by the end_game function contained in the game model.""" if self.x == 640 or self.x == -10: return True if self.y == -10 or self.y == 480: return True return False -class PlayerPath(object): - def __init__(self,model): - self.model = model - self.model.cells_loc = {} - for i in range(self.model.height): - for j in range(self.model.height): - cell_coords = (i*self.model.cell_length,j*self.model.cell_length) - self.model.cells_loc[(i,j)] = Cell(self.model.screen,cell_coords,cell_size) - self.model.hit_cells = [(self.model.player1.x,self.model.player1.y),(self.model.player2.x,self.model.player2.y)] - - def update(self): - if (self.model.player1.x,self.model.player1,y) not in self.hit_cells: - self.hit_cells.append((self.model.player1.x, self.model.player1.y)) - if (self.model.player2.x,self.model.player2.y) not in self.hit_cells: - self.hit_cells.append((self.model.player2.x,self.model.player2.y)) class KeyControl(object): + """Assigns key strokes as actions and implements them in game model""" def __init__(self, model): self.model = model def handle_event(self, event): if event.type != KEYDOWN: - return + return #if no keys were pressed it quits if event.key == pygame.K_LEFT and self.model.game_over != True: if self.model.player1.dir != "r": self.model.player1.dir = "l" @@ -204,6 +212,8 @@ def handle_event(self, event): if __name__ == '__main__': def main_loop(): + """A loop which runs the game until the end came protocall is called. + Hit space bar to restart game once game is over""" pygame.init() running = True while running: From 1cc50f0e3fa3c9812b742191cdcf9784f80a3b01 Mon Sep 17 00:00:00 2001 From: Naomi Date: Thu, 15 Mar 2018 23:14:03 -0400 Subject: [PATCH 27/31] Write-up and Reflection --- MP4 Write-up and Reflection.pdf | Bin 0 -> 201650 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 MP4 Write-up and Reflection.pdf diff --git a/MP4 Write-up and Reflection.pdf b/MP4 Write-up and Reflection.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e8f72bba0418cce28e8bc111a03d5dc195c7a441 GIT binary patch literal 201650 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⪻GC8uf&FG1;;1iF{goi_LMYSZ-XXfPAKqEs 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 o@|G#yVGe_EMFz- zJ-4TI@Z>3D$y`3I)(cr`uj5q*Fz&Tzs->P{ka3-2kW%)G*!M0ZGZx4!s5202 z4PKu!EbB2BRiUb=*xK4&UOr}PudALiQOq^bonvu(AA#Ni z_I16>CRC%7C77>OaZ0xru=x46vBn-TBD@5*>@AQ_eG>yN%Wz6FiJLH_90N5&wzohe zru^Jpq=+>%v%kv5PU-jMV`>@QH@+F%5-S*Nmr+aHo!o<{voShdFjPEm>y|m@T}X=F zZ?6QcwMCXqBu8aQ_fd?RxZlW5iF>99VhQhMmIsi-Z?qv#Ln2Zf8<+PjXzo#y9N%?F z@TO*MJ%H%vpgD%g)edk=4k*34sc5BUva;akZZu0~~B3|ga*gmXW2NwzAH>%yZGR6O12VwS;4dfo0|la+T;D`G$}g% zks{!dOWyWtx{yz84^F1mDt@p?7Z$J@lfMLt1z`p4Mm-Vj28wZ~`cYCvBm@Wc7d-75 zix;$4&gQ@~mk6~c4-hj?@lRGrhvlenj`9Ci$=D-UR_0veuc~BP;J=VB+2FrWHc9nc zEg7f!+M`sFeSR0awB=eiFvvq@@F-a)6gBN{n|`RDjv~nkIpDe<;esU2!ROC#2=NQ^ zRVv7Xbi|sKOVK?o9k)I$l_YpjGC}wO-4E~|l#W<_;@&^;-kq}gfhItlNz!@@*Go(H zv?EzduHLX^pB*|{rs!(O@G6i~Op^N?M$J=sw7Voi>wJ&#WOKGHItJW%_A-(Xu@X#b zZ0qFhmWglCd}1rE_on>^@oEl*wsx~p$KzeW+gi`RJtkSDag{!x_?ICNBemels7Xmb zeMOlBjYos3@Lhzu8GkuS-W4cJr={sI+7m?hsmCeN3aGts0aH<~GDBIZ5Q)l!!uctY zItxH%J9-wDirOkG>J66I6w)!b6>$`D_@s%YIdG{#OJ%V_C&z<7L-C%kz~R_rOTJ_= z-Jx;b@TJuddJVTLe@mq?Iw!k`j#ueSvdf;Vb5utij&rA^@n|fx@b6+bJ(BFRL713X z#E@o~WA1+9o@=pz*hiW|yPaf-)NwW7J2SY=K>@0~Gc7^25agMx z%O)LFUt&Aj&1HAGQ|YhCOf4bhtf&l@_J`DGmtw+Wtp7m7=`8O@^RAFjaww~8FkbdN#KR>j ziY6cmKlv)!SG6cmRE|N^FxL)t->}BQiPx%x6~CMfU)KoH&9i~lN@6TI5jtxEK#V?u zcyW^HtLpR5a7(;eJVoA$yOG(sN=edCkTAVmq( z5l=r}8&sBn2QM|K-?I3t7rLX?E8kKUs@ziU^L&E>Je>q+L5I;@dcJ{Un?eLc*Vj=A zXe`_J8_Qr(^F*uVz0sQ$t2H1EQ#6&3E0;1O&DE@^iL2bP1*;TzB2VRip!|b|LzqBK ztFe+YmsIV@e=UcK%5h|Ag>+4aii@KEGt&HX z4|9mwUz>2Rn%SlaU~Bx+)4Ren z$10fEXp|jnZ`v!rS6I|Cm7Lb#ZDJwB%Lj|J;2Ha`i}xk4WZn?wDPd@#`>*AzKkGF~ zmk>{GmZIt-Y7yWkrr-8>RJ<0OgVZa#J3ujX>vjzmRB^gjU0SR}W0FSCFRlCcW5T=9!609h_? zZXB~X*XVr#e#2`+Y=+%R@N2H9&xdyrKfN@V?mshoh;Kcj?Vr;se2;#x>pkDRv+v*6 z{co+(1i&?`P=%UuC^O$Pg3?o1+5P`}ePfC&j3*fP=yZwyn)zhOl;+EnO>sugk-0Z_ zwDH`!&|t2tq=vb3ik_4>8;h93R&tggqVPx}f1Mv+@R!sxXd33%TAxXa$X(q~w0=T5)uhEX;{5;bdSUHCDvwzWG^>BPZttF>Vn@(N=< zv~t z8}7;0u?mKm32EYwzlF-uNUnfgN|CqYjycduHgsKIEHIdk?$s#()CS<0`40_nXm@FWrD zF3#IP*E(?U#X@s3Sz?&vBgjriAJr@>7qKN3M@&*%+VOo&BPnrfL{K*3l+){w^|onM z95_>go!6K_l!`Y6LFG`{uPCr})Dbm-IdWOF@$VUp#7aR6>ZBnVv;tCrPNmW65w(+G z=l%giVU&*4XedT3jxK5Dh9yN>-#=#RNVC+*U_#NckQr4an}b*e241d1Y-)JQNHrM>C@z882^=mFKGq z&5klw8s@>WGOzN6{QL$6I`Sfq{+7hugii;?P-GMeq1(BUf5Y&!bJH&+1wDZ#je{7s zTT$5O=S2r`xTQc zg{$@v@e{jc>B*wQ66K5zwBlFtFtn1=x-0QoSG$2EGo0g2ILl-dzIBk}Vjl#U9$9(^ z!pacUbY<|voM1|1R@w@`i^(wrv|`jZWHX2OHx}cUkU9$^iWk*7afMcBvIa>>oeC!MCfwehwigc%s~*xnCeOfciT!jbyVto{%@nOw zF0=oRWjr1QjGe`jiYr?hhHjipWwE*#oI`T5E*zUtl*;8Qrd;o2VQZ=BWSXtzgR!l` z;}{#(<|%1`Qb4B~c1GdZrv`N*H8f#o&uT*1G^03Zm$PJ>8o^lyohF@ey znB?@UQP5)|VP5IAHWfx3eR6hrENhzxuG0wbWa?;RtElV4s}xlBYCWE9OHWeNlE^%^ zi*)3S*UY9V+A9E|AhwULzA?5Il?^s9)Uc4~%SsOOOLUCE}{Jx%ehw#WtOy# za5Tk@c%MI9YzrPsDmA5lA*5m?At5Ix@i99}ISu>~Yw|-0_CuegL8KUkX;5@PO`eVu zoldA^H3!*Q&3w(;H!RGy$7)gWZVI>VCTE8D2&tz#%$WmLJyI5i;hXvqmynvPB zR;#h1^BL4_xAI^K+GWtx8Wn zT)!ZBpUdY$r_Zi$*yrq=-^)Gslrth9zPmz**>R zoO1aQ#AlJaT~>9v-aW?~<~VR6=XtO_(s=^smTcH#9Gde+@Zpy4#r`}_gX=N-48?|L zuEs{2=Rmy(pS36_>Zv~#`jFi3(izIS6u()=qnV3?x}B3TfpRVyi9Rb(o*+$3|YpQ25f7)abhN2m>fpyDRzQ9az zRrpiN@VCxqB_yPrM(4Iy+(EV!Q6-thea6&6O#Dme6a}$F*4#a`X||A1qBLH>E}19K zTBeG1U26(TJX6hbRp8k&T2RO*XgR~&G|Ou^Q=f&j;fk#}QNY@-?hOhGuH1VP6ZWo^ zX?$c?ByJ*1Q#V{lG>trBt5)b~Tl?#Be$6jp4tW%QV!bY^v79A1r;tpxV8az^X`CT5 z8n~^$;9w2-c~!ZPS4T~)-?_j{$CY4FRdLgz`Q;VU^yLrhfe^~>916)5lN!(i+sOqH z!9D8+jp|!sb0-xVl)@~)WrdmwN_%fpTs=xm$V|e&S))fKH)y-xT z^XhVAb^#gT0lo?r&YH``&dO~@tf<~@Fu%UZ?sE6|Mj$O9bUQb;1|FxAD@F!~s}lk) znmKjaj&1t#dL7BYHkRQfMxkB`v;=rCa}vMuFSH&AY{<%kD^`{lL}yIh9EVvwGJdwj zDwE9x=II&1Cgv&>w@~)J6Hb=gwy?{h_-9iJL|NFf0y}(Sz=jlb%Dxd{M`t8$<^K4mie!`Rg?VErX;6O4sJZ<7P-R`nR%f}$h%+=?+Y*f<{lUSk-0OlC#Lwu9av znh11momDe}uIbi6tcO?sLVM;_$Z7Z@<)%vvzgV~M0Z%0A#G8;T|CFg`0o?LLDAQ_|P!E0h(R8u#M*96xl>QX+$4v|&a##>i{9sbw%#qlVme94jmA#I?kzI~3u?A)liPe~AI!-J)OVS5~6L|0{#f_}^pj37I(9|AVpDNszG$ zW*bVVd?)7vc|SbTysXIdACAsPw#?r~_aE(id_H{BkaREw@QNWfq}zp$@z;jb?Q3g`27c6ANWAuC15 zQ-3fe(=35p^~u4RnKGP2j4i_(s`@QxcumvYbli-GOq_UWb#^db?N$3a@uCecBs3|^ zZkWiCrJ8T^=wB87NmbDHs>HN-r?)95)KG)5Q(f{9Bo}u;N*AG6n2e&5O(_*F>ye*) zs)>A*Jm!H;Ng{b&kD`F?{7N>9$)SiMBxa9NU_}c23|MF|28a zb{WRAzNvssK*N%>ro8b9UbPyN`d`z`^xsSK&!7YcJJbJ>)nH^|fKdoZ1A>7d!n?pq!XqOWE1H)z)v8-k zHS!W6yK=Qhg$}=@M*sD#Ac02g~ z0t5n?PWtxG9TWuJ3s4N_zW#ypkDuK>Z;-J*{!KfgWtwq#nLG~c`xM9^=j=8+M;7W& zAVB573=|NpRhJB5sj(1N!_5HmBhcX=0;qpey|FTeQC&eetlF=V2`sW6o zn!#WA0FDI^g?YPiG^ZgZ!5;T7|2Tmz7J2@Ab*T_V^3C_}nl=M}ChCg*kOrQN^#;oq zvsEF4RAPWH$i~Ix4Y5HRcyKV1D8mU;o5h8iu>W=Kp|~v5eUm(2(IE-!r8FEzxLpV$ z>f@2@N{xg)V*jR-ymt*22)pr~5caOZr#tkd%>adW0)H)-aKTUCm)!{bCOd2f0TLX- z5KIor8_@HOedo$&56U6~5qSSC3HYfWn?gWfL0uQ-j2@vq0sk{KH}oFqrUzx#kF{2~gN}=H^ye>DS zY^3%moFGsYeYl-|54)Pq262PdL0c!gu_2Tnrzn?usVmh$qxZr9H7BUk)A61#Ya9{PzRbBlR_P zG5smgF=rgbY)*+fHF}5H8-F`*LNYgyA&%C2#~?4t(Q|snXq;!{JcnW~&O-;_G)uVM z3B6(!r~`G6bWFHN_*>juSUo^Kst)Nn7qS4a0Hgq#C|bTmh*k(#=yfLwAvOAH(0y*2 z+W4l-CS;v0rt{ccy}L$ngA~5E=4eF-;%;De4v|6+}0!?vELBO z4{aZcZ_{jI4^(~n>_z*5hVZ%H6O3+<4u24!svaaCNfEEv1iWHLJ6dlCw;d=LT%8^T ziL6>EHzR1CpjCBw_^8v+4P-eojc%XkNZtQM6buvW2}WRp?UN{GfIiaZSXFsonKLpv zS&aAkThtd{vOnj*9>E6c66Nhmq_Mh6dBDLoe)6S|lcjyYF#!3GN7fI# z&w{(L2gTCU@Y;UP8_d4{DkGP=Gdw&mnwp8gh-0JM^ATup$`W6XQS> z)CRJx{D^%Hdaz;eDAJYCEFm26Bq+xtF-UJIv_afDxxwh#+nQzc!KFO)i84L`1I6vj z=$1GqZBS009x$Af0E05X?A|9o;4-{K5c-15#28^s%9gk_-b*5|>yNM0m%tW_SfvHU zC*3E-oA4VfIRlE6nd-4AuxejnRkTXIS+H|IkufZpPzi(1Dy=q|HvJ}4hxSX!4bGm?9Px3aVBB`n)!4(KXIE~1>8jFx`P1ahs#%s_7SI~ z6RF%<_p2xG-&iGZV?-uW_+u0y#fntqGHIE`L>8^i-4F2(;ScE##Scv@XOAAj+pgCz zcCF8z*Hhc{uVr!vQqLMb2zo6u2Q*Jpw~sGxLC+9+98J43&d$o)suqNTRGY%o03MBh zUVx%Q$V1*c{zDW^I;l^*H{Lf~pBUhU{6+NS^%em-xw{iV&qOw{iF1eCj-`IfgH+kUeUZE_^(f6xjno- zW}r%qFG}33uY+TIJwGN!J8xSrUY-s*W9|5Q&R#kWZV%=T5d2#m=zF>!E-AM8?p%2d z6~H#f>^gU3{m$L&KEZy>d%q29yV~x&Pe2XH5oa-|{IJ2Rf~xf^R|z*JTN*|Wa|bUN zU6Xmoa!u&7#|Ykmxu>_yC_-?FNJZv)}bAB!Kv9&3yFo; zI%1b*L%5NVTc?OkrZ@37vp0&=QS4Q3PZ+oAKXP@%Z;+<>1aru5w4VH*Y(D;ce+UW@ z7sOACSOop#G+c0|I#rG^Y zAoxR8_V{=Cu}Z$DFgwFz8)gQ*L`bm{#c)ZbiAlvQ0oI!)umHz-!R7c$fUhI`D@c2g zcg_ciN8|^JM`)LSr!_PQrd-2W*l&!3sIa5P5^LbjTw2oak$H92kzCOWSZl`0{BJQm zgZH)H%aZ*1D|2aMG?UVP65l~RA73n8NM+Lcn!X9f>9RT1?$)?o#r3ZPK zFqRWui_zG2%ij#=A#lcstLV@Nku)H<|4?X4st(9DfY1#t>{qAfJSXtAg*8Z+yU32PJR-KCexz>wNr$rTfghkMQ87-B5Z!3B zhLH6xIhd6IaE~M(r0NS4(;myR_%D`tBJ9OaIVQ&u*fKhfy0^ibuF`Ht%q@s9kJ%pLc?5qH(}(?ETQ~uy+jd@Hw66OF%Y}KOqhfcF0naJa^^{QC;G~B5O8BzAmkG zYR#24U0Ur7tn&wBj;$k|u0ZOHsUzEUHj1IODqqK$RY!DX{?QrKCO^iRq`K6~oc^-t z(;4sbFR!!zbdi%ew~mCUC*#trU`0t*S*-0}&yEo6QzX`Tsj>*$5({S>)`d%!oU42+ zXNu-osWqY}T37yeHZOnP@U;uNXiq)k);junt+lkZ%Ztjx6KC?~d7VWuHzn@wXs*+v zMTzHG={L@QgPZjN>>)n&HeF< z1>Zb82|mf;=WxvVK0#>n+2@5kQD_U<7YyG-vH!NtLVf;!m4>h;k2;G#NcsliJ#^3Rq$s^0PL`oZ=NrOK9m zF&YTNas-z3ASClvXv)37v`d~@w+!ni{u6duj)sPkf>vLi+oY1X&jY*Pe}$f!N5hMN zaVyMkG|O?e*ANec@cLE=E3DNy*ZUc&K$*?(7xP;%m>h`Vg--y3rYO#JNdSYF@=@H+ zXbDErbZGO(#Lik_qhOiB+XjPmrPEm3d-U3Z{Peib&(3LjM;c0_G___MQPVlH`xiq1>jGE~eI zyy$lF)#F}73j<|kyrD6$2jbJ8Dag<6O}d7jzA2Z?_)UOuqEu6CZ>vOm$nEb16yR*| zE5^AIIi?Vk00bO(xR}c)FYc(W1QAX5^!Z~EJv${*0|b%+QZnh7`xj@C5BQu27T;#D z+W8ym#6P1ZOvWjH$^x3*cY@pN#kp2V$R^90{t%P!^mZGmpIZHcBb|Ty>?DSka{tz(FZ)B}&kp^g-usH&`9wpT8jy%r=Kcw?4-_9v8O2 zK`8WjwTbHT%}yQK8t2Fh)CzcZE+lPC_+DG(o>Mks+-2~eid(mo7Wgy}3b&@w!VC>y zYjq=?|Abd`8VH{@yD1uE{ln}2K1z!oC|Fjor$1AtqLkg%vwA7ax~9OUq!#p$=7a@ zEYGacO$|B?DGZGkFvTDCoDBU<b42mN z(s~tvUYx=t1a2;~K~z_)JcPteQL`{(SC(78@`1F=)Uq$?)?iH1o8J_4GO3dv)ARik ze0g;vbfB?rCE5)Z)+q7hkw6n|`-|F4ig!B?_-H_+8?u^pNcvM^6p2paAH2{b)m@ab zy)ccuoXKC_jU+jC7uv?J$3h&UOJu=voX@7xeDt!sAQ>FnyP0FwqvZo$`~2vUoP8RvlzI|Ge7{=?`GR0wAk z1tv2l_#yP@`q53+M3z09vymx;A@AbK^&optMX`iiTD$!MS2_?%Art}uwt6zJv{7#Buu<+vc4iqcC{%4l=JGGH>iKa_{V{7&|NAlEk{?ESX^ydk*xA{TC}C zBjz4b(e^iP_W6OEv3MPsg@92EnSuDGtPn!)-}qwCg$}DqeA{33n?xO1p764_3jFP` zjCv2E5YOE_#{DvnDulT6HIbZ1@&&cd?v=4>X!@AS=dG0GWE!N4@hPTU zvbYGF&SBmpa_SWM-=ZXulM-+Gos|N%AjZLI6y;>>*yopvmp2G?#}0FUAG=lg+24@a z6p2?${$=e-03QLV;#+H5bX6QtrhD}SINVzzB_--cGAajLASEGU$^9Ru=j-SB*ePTngdg#TI#fhxa^t2Mq2qo zMK7yH`}Qy_gy;Ib10bx&`tt+b5Aa7?&teurvDd!``?UWA)Pp}5b{ZF|<=eY&^<^zU zoCCD;V~u}Z@XxX7_jBC$=MT2g?%43Wqf6~`Hl|hoFWCs|&&Y#f;6olG{=;$)j+Sf; z|FWTBoc8fXtLHS(_YG^H z;0Y-H7I5ny)ZH715t`mMydD#X)d$vqk!f5A3EE!ZSE=4V+65{OpkF{}I4{_7z&>O_ z5@{gLbfES7)5GuR3zp>+5fFbBT#6Sm^x?qJBqGCyEXN)>4Pb&Ke2t|jTi#%NjmuMg zV+JUdxx@>O5X%h@W8!aoZ>Q9uLoqNg-eH(uJ6G_QSNx=NXEsi_olfIgZZZU^sY92W z#2ynBX`U}cY-cZ^pDSO0|N83;YHmXFm`a<7ZxA=7HYO)Qxk+|zBlsYczzxOf&YkoD z>YRFQN;(BiX6BMvT!fwY!3fQUfANX!c}4S~j9wCmOpWH0y^5f6$43M}!iIB1AePm~@E+{R8EA8_Aa z@5f5Y%gTEWEe4Vu38`#e2KM%qyzNl3pub{pwKU-{7Ry<+(&6=W(>kiZud05!|e<&`wC$#=Jnd{>*mnlSgjP+jQ0aXI@3?0Ls zIbR##Bb8T{mPaIWGG?0{oS&yn;TCCuyS#Cj6#E#oHMg1Ddb;VSNR})>G*jXKLdY9y zJ?9eoa(t})kZmt(VR+Uze1Fyhq)Ph2rf0p4zXV^rKSrf5OfI#HMklR#gx-1pIRA}m z0b}%sg*;Frgg{w3|6AzSxz5y(U!jd+^bg#VOC>yK(8S!SUs;cED5=ZRkoMVmMWrp-L+)%^nQ|7jiuEX?XA?_+s zm7!HUzq-DLe&Vaf0a&c6oRsWAofmhhV_tgD(2n{-yRE3KUY6F2Pq{NwrGAcU*sagjpZLQ|!sQ2Td`h-n&= zk~#&-(e5}+wmXzZ9V#$FCa@He5Nz0|Y81_t7kY1;5#0%m>`B`k$U0B7>a9+fWRISV z-IPmNC>H00iiTnm7Q{;-XXK{owGvI8*m3+uDIGh_e%P)9!;-RYrMf-G6XtHpKCyJZ z{UoZBeT4fS!nW9$g&O*O@CxtqR5yb?JOeXZdU2sd!2t7mC0S z;v0;V9MxD+P+kbQHUT^kl%PfqtvG72W`L#wv?vZ8+<;FZp8}lPkJ~T8)xV?`?^Kjo zgPQ*^7ZfKGL+#T+MHwi3&8p7cBH7#T%{Tw<1V{$R;gf8x&UW(~QF+2~Q?~W=7#@Qv zrEni_O1MtuC+oOELzEvir&}%M0*E`t;Z6Ss5ynx0hIRaCE+PrCI3Bnlh!Lt@i9w#*o1;fiyEQ!R_x0iixIR$1~RAs70r zem|I~CshYUbw)aVlUBz1>`&@=_QE;#VPU!wEm9?Aa{P!BQG*>`+wJdXmp8|$`y)#> zHCCR@t*={=BSnt;=noj&?i)-|wpcIPOMXuyL9liu&;h%Mkhxl)tF`Aq&{7p~EAsVl z%z=c1XUS_hnbCb%{q%y|R{jJp(!{k_2GK1FNKKZdC2Nbev80%@sLDzUtI}?S#Z! zIW%e}>P|#VLFT2ebK*ti{EUwq-S&>!1{oc=UhV~?W=e1m^WfcU_Gc^{s#hKKOSq=NpbA42h?M~j4VMLZWs{W<3lbAfN!&PC!Ohpzr=D&`sG1G# zCXwYgPf2HgN~|+1v%9L&Hw#Rvj;sCEJkj3_=%~c^c1N$%0h{Wf^pp0y->_=$>>1xh z99%bqi^B-W^39lpGY)f_13{QRNa6lKq*1#b5I@r#bj?yPz^M)DI_>k&^dl7upIPP6 zk6os-XfCyWRvCW_zGIz8A=uJw1cSb0GB}opv7f@C`z8s$keLD$*b~KWrrg+zB`A?) zcZ1u)V{qfI%EvIYQrM7``m;q*M4&FBZq7sisTy`a*5{t!^;TvnyeWRqaQuT2p(P6;A%AG;g4rlMt)&o$ zyKuQxfc)joV?gr^49z>)esi4!;dC4i;hLXQ`v3lx`Ib3>3*fLb;5-D)S=9D8ZRj!Uw2N6o%ce?-D(iY1=RC%dt_=U{kz{Dx0 zdh3`AmUMv z(P@xTn$hW0E;mlq-u;$~yU|mqy|R@W8y(4Gq%yvPxX88Gj7x#|CB5=iVX>MST6Har z_EsV#9i3zHnJMa*wDSImGi;JT%R@5oK@%Grt4%IO(}#BF%mGM(3IfP}vn7S3CzM8a z0Hq;AG{QMuV@gFEW9HN{6_GFd4vM-F3^It2#&#+rXRm67NwukTC~2-)?j?1VZFcH) zq&S8vn-2B?_~+@UpaW-U4OGa+r1bqvObnKhhl~6B&oz|_Nw@{6oJsyqb)GIe|NASn ztd*C;RYZSp(FSNF>GJg=w=8X@4EpL|8m?d@Vs1tFUToT=9{QS= z)G0C6&=m=`xn6XJ+Gqk z-H|Lh8&DrF|GT~>v2?zdoRKIu{)jYxGCF%b2?Zaf^Qg>$AvX~!C?G19v42_Nbo}{S z3I3)59}d8`BUa_|jucWM?hgdidHWhr%;_N7A~{=_+Fck|Z~hZ{1fGr=n4Az46ZPEb zEP>huvMq%ps87dHTEQuYJLd}Y7Dec0EhcJE6?=Vd9!!Y}CPV=`L};0_(b8m|>?vU$ zBB8fjp#f*Wm5M@iXu^QY`ceF>Gs(ygQ*J=Z`}}GZRr|pLQt5>|AE=Y(Q75$O^Yede zjh+&!r;n&3HPKv5FT3rEsRxYb!q7!5X{N}vwOFba zPV5WQtpM+iQlCv!m4phwDnJ6~sPC3AF=ZAPK`fajRkYRe4VT-R>fGO&skB{O{15Nd ztYiZJEuA~HHGhuZzrDEwWTwX*52v^vrno~xKd?n~;mbWyurMQ!9>s+_p`i%Am`G9X zoWxGpH~+H>uwg@vV`}$@mSEUuW$7fH06>^6b_*P>nz#R$zFJ6a(#s<08Moxgy zjd}GaXEW=Z9vBIGH-CYoXy%OF z8>%RYSeNvMgX!S(qCmw>HKhTqyGW?;Z|`A9rd4Na0A8+jzm}aetn9pUeX9?906sU$ zz9+A@02i+~B_-b>L|Os@@-9RAAE}|@d^x(^31>}4BjQt1a{rh;4d(2aGa%M=>~fKA zjntFI)#wl>oD{c&J~`&%bVb^sh%J82_OX0c)7w#@?PCjxfw-b!s~lBIJxMKG@RPKl zx)OMQ`dn1;@f45jkUPL6|58yZTvv}uY>;UIBHRWB3WK9h`RtX1SRdQ0%a^4w4pp9N zv!?XvI%q%ATCXZYDx?P_kKWRzBGVqSw#dyY*NjT^XTvpflV}&{2wLvkb)d_*F)Jxa z$2NyfZCj0bZJMq*GnQ?+hQy9ADo(GUdQJUef?7u@JuWwY1-{#e>1q^cz_M#F6+2ly zez+tdDzNeyrxl_SFk2#Yj_gP2{ujJ2Ajf{KRnJ9}d_&lB2q~cw!>zyZ6C%mEx1US} zI+17COxh-Z%C75g@%PlIu2b2J9quOD&=!m;!v(QeKJ%pMeR)B-ldB~nd1dbc=fg-? z(Rt_#PyyyH;uL(re{&>mj5dpG)>sgz!$To6mYJfWO7AGtE9L0c$g(PdAKD?oamL4WWc)*EBQH;Z@2>;?oFliaUv3k--1TO z6uAT)at_evd27lmwUo7~eV0{~79HrO*10I3axW76{UzB(xelXD5>?|td6NVsJLjzP zKd*L_C>9GCA+}nXDdKsrz0s}`6U!db5iY6spTV2l%%OW7efzbxV3854!M)UbBXuwI6B0d+|u~$`#=BW z;n=(ZqRvO}E5~r-Mn+V*yWhM2nX$-=8_ewvt7m#+_$X84ujD`n5g5k|T}0$!lwfet zq7=i~+lEs-0YC!0ct4DXmbEW=v4B_Igq%%L&>-` zl8R=@!b*JFmM!9yRlvD?6KsO3X$l+*wJ^2H9xFOX;wMtdIH@<@c=C|+*k;;!jb0F? zIPb?djo&&KTS0U3FtnB(QY>55@c%geb6$+0ap350E(DGE5&$FWWOS1jEDyu1xkqKq z%KM@05U-@Pp`nf3s~EVXdpRK|;P)vbJ}rvR%>0mZZgI%TYra3Z$OzpgS@E=@5vV*- z0PlOfT>id%)kTzVpWHFtE3zd?B1e21|ybM|()1`bd54l`|;w*a47&u(o(A`+Q zosy#8v~!({0`1`#m=fl#QE6YimCyWoY0(u?zdR2Z2h4mYF)8)_!URD|@ov)DV z5y~$Yx0n8iBpqj>#qj2d1Z(hSKmLV};Sxs-#AqQRohW(*G*l5lwHm{n?f70zK1WtA zhbt}HV_Kc*jop;(Ez2=NG)v!18OH!c)-4QOlIJi}>5A@0BXA)8LnCIa8eN0R>H;X*l#7A3N=g~?@zSkq`X_Fbac4|BsZR#{L&fMJ!-9pKdQgEc3eMEgIQDVkT zMFr_-hWZydGsStB>ubGsg7J}YyHn%^d#d)r=0Dk$4xBLuF?7nBS2Y=)VTwR^$m&-V`wWb45xkiSH-{3P>fbXs0rTT-Adq}rt7mB)S z4e*WnC@n^-eA87DcP5+e>&ix_E|#s7^s7cSJvNCu z5Fzep=pURp|K9<46*aOU&@|2z)}%{Bh0&ig<30lIJvi~@vR93stQ&7fZJMHuw>qx8XTqH`#THQ3YpHfXR`yCb}y*lc5|0h^`;fW-(y{Kk#j2a2)olZ z+dUF>{t?Lf3msO@3P`V3 zu?Ml|DBb@nbS6kaBfxU5(#I?(BwOAJaO7xdyi)4d~m2Qvm1xwjK z*M%WX*PB+iiRstg;%(@_xh72(WSO+N?e0Qfy%D{eWwpk}MkkSt_Tz4Ju{bPS+t|{B zL=$m~m;3Lk4Hm04sYlVrFsg0r{&1LJJMpw(8AnZWQU-jqhS{FxRivfRN;yIgw8aMRN93O#HOVVlUm(&r-A1ug_=bM%euu5@Aks` zM(e9(Xu*vZ;g&p^`0NB>>MB!Qf05OI4=+}$U}(BO7y6v3jotrkRJS>#?bsuqAF^6y8`VEL(Be*F!8} z$F;2axS#jIRzChTYuX3@q_%C|V;Vs=k1}l-TU+yM+m0x=3T@INMew@^`xLH+dcvrUt1vyMsAT1ekj>8KG}stCle zj(Xk7`|POKstvak*c6I;{O*0fMHl3~aT~Lt#H-w>81UJG*W){s^#i;nNDKQv0soBu zJHS646EpMwgYVZ)+^{M553j-`d{U|=F`$xuG zc4ecOAJ6e)?62skcSFlT|30tHIjo6($sEkIR!QasG-t+x86o}}-LoW~$8)Mpi~+7! zt1hbJ+QtHsbxYKcZ`V_ME2k%U=$V;L!D|a<6y{ZWm)A1rOy~xeZ)Rj2j@Kk_Z0v_s8WD=zf^1;hw6?95=?uxbgD=CCpT6QDxey3}Z2Z5Rc|2%>Y=U4JfT}~LYdY1h zwEKq|xGTd+Cdlx&^AVx5qEo{_dRDeQslCT=AXrhMy?#q=-f_E#+eIWArhZ4LntX_S zh_8VL0`dHiLak5`Johi>6=ctAVPD7T8lWrutNwQ20_GXz>=O5AjT_uhsC(7_c^sJj zcgNwE|G`B6t8xB+ZB^M>=>9)jRWC?4rKP4H4bNOgMsbpxu|xVXI}?(`l}RFeTLC}) z``!3I0Dnoi5EJ-j`3w-?yyON^izAe(o-~@8mCrBM5rr(PnsqEREvuTUnwHCj8<(4x zJ(A0t(%LL@9Z6up%)VB(Z+v_cZdg69x>mM5tD07HJg>aO{{Y~DxB!OkPg7%mp&pW! z01V;+)IPb`;3`NlJAT8+30T{?8U7SgZ*;img2inC!CCGsb~qYd-vyKZaeVo`FSZx9 z=8&Hr8*UJ82!kSUEa*TB62f>yMz7Zx8VQerhxz|h{tfGBXsKxcr1%$d>>GdnVso}S zN82)pUF=hrQ{QAL>3YVPI=kBN`Nu@^htKr~wZO(3LC*vADb_D88<0xY`9>R8_knfy z6WYRGw>!rxoGf?CWp4N&R8%+4HV(tzKOIlR@6`x5Bym^zE#%+@*H@?8zsKL6ZZC3& z+U@j#Ml4X2zc`*)4l=i-y2RkBkz}7J%_nvX!cr!@rT=D( z^;FLmVLL+(p%CyFHcf_4c&`JsKM0iOE!QL|AVNIzt1$r(|H%ZbbvF@>hC?Y znRAK|m#utT@@wKS+(>TWb0`=q{EpF~?A-Gi929S;XuoeZ1Qgzt(5}Jg_o5k?uQ8Nw zej6B7=K7Xgp1v3*`nLe(Ra7{G7weoj7ic}O+7x-5_}91_b}q@*H@6rg-LiZSQHtMc7(F|Jx$;tri!4=cDky?orFM?0{GqoRoook#Z3!-r&06(X>ENsra%+KH5 z2PGb6;Bh=}irn=1Se$?;#6E}q8G6>YgWy>TJnF($!s}Ma0nw%o>mGmQeHic^x;vdc z+rNe#_@?_?eK4UrNV_PtW_Mb12ZXZu4!QQK3Qz|sX!Csbi(!-loqpF5$w5_2GPgTo zMZG!X;ui;;y@1XBe!+kK(rdS6(cO4>(skMsOt@cO@w*q2Y z^B|I)y%e&{(kmIoW-tK^V2Mo&bTZz^6X-A`J7xf07uH(%{Iu!60?7$vgYO|3M%IBk zbE70n^djBx3%2rt%#+|Pd4Ge(MW~bGJb>qIOT1>^Q`GVP97OYzh0F1`aA92vHLngW zqnRE7(D?a7hG+Y-;k`Q-d4|kSlOR^cB{a>r23O{m1;9C$xfB+dG5O@Q41=t6;GZ2UA zo}trnr4o;<+d?nsB8oH_(YrN;G!Sdv`aedfL%4Dk#y#Pi=)C4#;O|Ky!d!wue5__9K_Jz4Vksc;XPJdP2N zJzY*#K}YSCb*Wa=gd5<)g~SsxU`N{t{Q|**p*cder@N4o72RUlEJ4VL-3u^pj^~x8 zgK0^|(m2aO9Z>vSPR}LenxW>2pA0!Bi#vbZkyD#{+?|6b!5Ix)is38Td-V<(wElvS z0Zt4=n~j;gHs<G!RLyLbF%qjz zfd`3}tV_DAGq$XPk1A*=eWDYI+z-Y4iSrn&c!sS+E#Pnc9^wH&L>Cy$H@r5mHsQR7 z@YDa)j3QQ1{AOtG1$>9Z131|hP;CP5e9{eU4R?i>ap_1JXrXLjn$UW8|Q}BVHz@QSbVk*CbQ0FfaeZCdzr0tA? z9$szS8UkJ^Kdvhpr41&?q|Yhgw)pLkq4sd-8HUQ)cdo}0A7+INpgh{C8A`> zrFj|iSf?VVNT*PzSSA8*Q4T6@;xCc+>_^eF8;ATXV$W>(X*bhy#)&frk8B>(_=b7* zg|^{xkYB()pP})S`lUO^1Lid{a(pnTmzuNhgYF zD^vf5S@pe2myj&!Y2|6>X`K_86PpvBlctR67IKq$c5!h<24vxdHlg&qGp@o*9`O^C z6^IoJ=@Z(xX@;{bF^-bhv(2Kj%|}?M&;eh}pED7*(EQE98ao3vwlaNos=#15Nc=Ql z#ypEh)$aQe7+(BXb`+qwU>TJtM+%c>rvW zDqbm&i?kU`(J7sKASx2?+Mcl=<33VxUh;~SDzC^151uvc(8x1}~3PDRu+xP~Jy>w#aD5o^;^|4E?ag(B zq}?;=j=MRM?hJdrFZp!r44E@oHYM2hQ!NRNX;j|0X56989= z`>75_wnJ&;2haiIs>7{YjUio$dK-)4Qxtk4R5&gy`NGm`cko71gT z;FW!sR$$sKhu+C6Wt}OyXDAPOyYsK(XLhvJ(ZoAa=ufUs z)T0;Pp}?dTZCF@Em`@6xKH5XnTkTH*AMl>Eo8#0weIMc}K3*pWM2wg`QYSJ#N!u$n!2FUX&enf;nu_D|++zn-DgJ6AU#-9FX3 zmsgH&fSq36`RH3yFT|e!-=UT}>~`$!A;VW5AHSPD(J1=q@>M96DUMj zHG+*{+Y{GYz)#Fi86VUwBi&=lSLIKO?pWP{mxqhjr&mmtNaDIHs`Ts;D=Sb*ea`gk z>=}hMV5(^C(fKvuOB5H%t?yjJbSu^g15`%Rje+7i$+UhNW13@=R7Tj20PW%WHJxK) z)%u#+4K)}{leWtTs#xuz`?aM?zbiu?7wCtEFRI?|UWm1($}sH_vKym?HPo}5F8}*T z+ByaoLQ2!0K8jUos=%xK7a1lXy7+A(ak<#Hq|{@6_Tm8pD*q!jaLGC>l|8K0fQf&w zntFd`@;B|FF9)0K@S6ux?;PzIuR}0zy>b>Sj$c{b;;-(p9YNg)aD74}>~f0* zz2L*d_@jUSmA_RDEB>Sd`NpKWMVaJ>ofM{>6vS1^2Q<+`=_<*hLoAV>{$+5{3E2kY zX@zUxRNQH`f`F2*UMpL4CJ2i8PGAVsoQB-S*vj)uQ_BS8@Ri*7M-=*Lw8cuZX~LoKdh=seKn=E`Ayx@zak0&twqu0=5OUHO_O=YO-;5+A*zk# zlN)!|kY(FzXKTB5ZAxZ}dCQ8fao4-+&vJaiJ>`wIP^FVKPUPo?Q{_nw=Xy9IE6c9S z6~*r=spDPN6Dlq3Tr?wg75OZzii)*Ud8Nt$3V=Z)%Pe z0`pL=WEM`2mYhvw`Lr5xzn*7iu8l2CP3%gKO-=4fW;RzgmXM{JHM3j^ErCRdmYJH$ zYlsTcIdErl#Ri^y$)7mCqV*W@tU*X~ghVc<2w}3y7Bx3Y?*5S+mdX0YX((vqDP4t! z^UKdBq9gUqDzcds((-{5nq@QiN{q{}rS-bZEAKFW7pRT%%SjLMBRvJMDK={5hh!22 zk|F<=uhoFb8(MJUCg=qcn8*cQSqBt#$sjK6^P0u@ufNOrTTVX9e~)>>SIq?QAov@- zG*dnemiQ;v;2w#YK zc~wPV<1=rQdZlo&GZ`S`);;FsXS)P=W@?HC-HC0?(p}Z4HTNFn>BFz*y+q6=89G&wwxnjvi*&_#J5~3r~AMou<%U2429QwqOP*&BrRO5pg;7Q!*OVho0pm3 zjY|td3KGcMdyXecl6zjx{fv)K-{F_8`V9|NbQr zeOwH{OP#q|y*R(!ykem#E;>W&)ihfJ;$`6{qYsbm=RQvEGPfXq1P_1Lhy|19eYd)t zuT4#X7EfQ)o%}al&hA}kB5PB7Uv-?>T{0Z@LRKe8<|HXH(xujt7PmC>stkj?4=GOz z9o>&8M?;ST8Cw~kX;U{%15u8WCnlMzHF1^FT(AgJ^k~>0yQR-nTZ89I}+_4Oy39cl+Ir1O8 z*189;V(Wfu?$K>ja~xP9O2imW^u_|8XzTOf!zxWcx{qz``ZG=JxFu(MY37m(TbK>1 z|K%V(HW5m&t1O^(aj1$J-dE|YO5R(s+F(JbRCqp+b%0b3aV`_(6dBXKg}|(70}jQ= zN`6;O%qoAL3j0WHU`dD+lVhc1li3$^j=O<;ohP&5G2%EHN=VAGKv77w7Jk=UDOekU zrry1Rb>HBI_D*Nn=K3mm?Cq60B2ihim2!s|fQ%A*eOCjy91;X2ODT9$)f7xSLvluQ zf4o5B96&Z>nQMB1yMnFVcwGr5{Ys6>n@o$|XwCF3bfQ&%k64*v{d@>Yc`#GHilX|f ziIHrOrpIY5(r?CLT2;_0s45n8mut80{zK7&tPuvMe2_=R)F-HA9TN3~q*?L%UB@J6 z9Wrx7Po;0hQ2fZHz#+`Lo1`XNUzBM zdOoZuIE>uZyN#0bJ%nqg?m3CgduUnE7_~XQ^u&-8=6nJ3hchWQ5 zO=aC1&71|sM-d14D(!-JpAUO96I%7GcwepR@1*4Kj{+hTaTP(HrTMD+%VX?#Pc}YJ zk=Q)a6nT@dk5iTfK%*b9G(p(PblqYxIlNQ7M}!F}$!g*uD)p!k7R4^}_AzoxX!<-+ z>&L<<5O-EFIAQ9$JW+fzFH35ybCG)c8wHL*Pfbxb)h)4@Qf{j?Xfogz7lnRFs>fP$ zNDiLCIE20^B84bT9G5;}0G!dUKuv9v0ohiy_8W)xS0G zJpd@5JHWQ+p^um7URZ~QKRRhP-;Z=PZ4VuA!qME9qDxDs4)amHSJTxy>pdwRG68QK0%`!Ng)Y1$*|4EF}h%6TJ?gTWaM zbw~qfIPJ>BXS!PE&z^K->{90K!uHCF@Tw_Gsfw+kpawP|Zt1A@Y|w$pIV&f4i2 z2KMuCYn00)Vy*gEF5Mfa$A0KPA`0m-k$^w#v zm`IM}OhRs6(LBEuE0K7}bY_g4wxX1bx^6?!iX^clKfgYJXzH$2+5|D&oYuRetMX?z z1MFQZnCRUgO!t;my@5BpF%Y&$yGwa zEJX?%i3r-Ruq#N#(R~SF=z})G&EycOR9X$Y5z7y#dP-6~#*c8@$sKrGCbTnG&S|M( z)(yjy6PT7PQ|R8R45I1Cmt*#(EFP2-*abbvKB6q(xQ4I^(k6V^TnLTF1Zv|G`)%L^ zDtANwg14PePGbbb=b1)ru^hVtMCj5dFACUwr6%W!v zQ=`_9d8r~JhJ*gTAWxZH)JO5KxPa9<47EozpS7-IU}N4;he^gdFCyJoYbdMCU((IA zyh|uRK1d~_x49Seq)dWK91c=h(x@rn5WjUWmPaJ+Cmg4y0rpvJ_T)8Xx$Jt|$3XOt z+!EfgcFF;C;7Ud6ONrEb@ubt^!hJ;>ab3y5525MWrl6f1MIWjZiv=gbfBE47j(6~Y zduq}RT>#&zxJ^KQHP(+@G#!bk&!1k#LsK>lq-JQSkB>|Wb)Obj-*1w`8of+jD$T6# zn-kL~a5oZ6BV3irG#E3Xs1VAkYn)b0)U!8~NLSPs$x4d1uuSJT+qf8yqUuG8`pPAv zpl-0tG?v;LT2a;ajyDdo`&Z%k+GqDzsJ1PLN+id7KgW4H|Pp$YFfnF!9x>b%riFp4&N;kGG1r`cyQVr|@Ln!S0Md^l0+m`|{lh~oCP zcb4+9IldeMCpX8msLXz_Xh!yMjF`xBFS}DOlMk0Ce`(`j`~ueIaoobFixrrT6q}YJ z^Gok5cM<|e{VkvL&;)ge^@f!mt`Sif9#xW4LgH26RrFru>BIQOtQo|DRgOs#$fPis z=O0Z89KS_ANOWvDyE`nV)h>KW=x8YT2nJXkweLo^`40($*KrlGOvIthp{OQiCU2k0 z-i}!OdMP-y@C@YO+p;Z|YK(nw@dZeB;u3{dtqA0W6QETm%Rfjow8?Sa^vgH=5rA&gZ@8m&D<ig)q;^wYBmLLCK{Lm|mZP~3#efUc-a7WVJVnv5z0nu?G& z5>C?_ve#(9K(~gGv%#w zR84mRE$Lf>EyM$4s@A#t_-suf5b3^FL^z+*Y1vV$v30PWE&lqTu~#8sN;Dp&X%s4F zrB`h(e7{5jkFKzH_*WCQJ(8d?wbRMohmgolxO8krR%g?AL_gMFX^x8xQ#>+MUB%37 z-eVQJFLlcn;W@FpueX?hF6^El95H%hNN}QV%R+CR%cQzuZr`VPu2&~Cw}peOj3aE2 zo5M*Lo~awW zAF0kc{ya!vY~`*lW^+zytnu!TfO{-Lt`o=Rog6eGrS^&;;=0P+H8#J%K6iY4&S zl%P{jw=f|Qd5Nbw7L}cU% z3g`oZqa%5neE!)oBjkb1`d@rkiSt#Iuuf`H*3`@=RiS6`_eJVPjko0GQnZmtBu%rm zMks1yN?h4fj5OkNuZh!zR_&RcP7jusNHact29FoBM})bgrjrH5yg(Vm;5P* z<4_R{QzGYf*o6_-F&N<5tG*yI634xMf*r9E(*&qa-OfZiZb8DArCja)5k@Bv_Z1|p zl1nC?ZkBpAmu9!OoXc88;?NA+9dfM3bsDV2!Kv$ZtkjL{bh8!_#aFG_xGbyIgZH+> zn7SM@7F%Z@6A>Q`1qH1}D+X<+nXI)!Ta34To_SXoB_K)isyr`{Qxrk)+kUbA0_*P1 z?ZOfOqhfZtj^2xjmkjE&5ZM@A<$b>RsJ1pl?WH(w0&e@FVhkRyZ7kvicw5=J;U$mp z3Iv1{RN&*I!>Q5n(J1bZL9bIz@M z>%Ko;)uW)6-JO~4nV$CkW<=%$$Mx<76&%}M%;u*gk<(_6seROo__N!b6^UFst^aHK z7|CT@^1#Ts=N%gPW@MRz$5f4Fd}o5oi^PKwZ;>fHIWtMmVdm^m?COHpJW>l6gfgb4 zZ>g)K_A8oz_iyFsQ+5~{XqMnx&@Yf9aRrAD*qAJ^@_^|hw)Y`AGvnnXmi@oLJ&mj)bb zU2!aF8&5Q;oKG3mdY*}8_`$%jkb?_pP2qsQjE#Bj@9k7tMhtK;*+i*(gv9t5^i|^O z7zciQV^oP7PHso1V$@HELv@o1>3MT{1}?eyPP?^H--}H--FAB}ool;2oNB<|7zzg{ zG^MCpU(L`BF!+&s*80swILu9TF}ow^^8>z~TP&$rzpel-XY`z~Ouh?z>#qA`_4ynl z2Ve8*`03$XfdFp5!?bT~HVO8APUEn~X(P(+-=geaegQ^g6qih~TU+i#6)Fphsb34l zef!An-aMqCo_gz(rKU~3Q8WYTF;F{>aZ!Gu%T4qAa?uwTG$tvyI*;NNS211IUzYUI z{uED1OEoVgyKlP&FXRcAbMvXV1=1eUz5b2DpCL^9r~u&RsElFc|Lz>Wh18y#)ARPhb`IjzG$x-YHdJDN_a3mOg6yx`i-i zPDuKy$t1Z|LoG=oa-e5lq2R;AouM@~FA! z-RBTEeXaSZ;8Wq2{OK0aR$Ilv?X{lq&oBO@$}~2@i1&6@SM*-Xwe^l|$6pw7e-xiu zox+`LS0OIhsb+0QL*>76&}!_~z{*`-?kw>upZYLbI0Ia-;P&0b`9ry%b6rV`)Bg5& zLeJ+A<%p-tRu9}AqEb?Kv(nPP^1X~U@K?)^9d;K*KJc77P^f2IIgkt0niuL9q2f0C z?VEUI);rkgTm?&RrTxUnNu$48)%VzD$nUOwnfA^|pi}i51NT6Ttx$7nx-j3lC+jZ< z$~`rqw8%Ea^n{`}{YkcUZYFLIlO`L`LzHNZ#?qqQ8BtY?fJqff@h7>ac;{UZCRI>B zNB(C5A!!kXY_5QQ zsX8!TCTly-HzfK+Ce^nm_;w3HEA!5Z$v5e%2 zeLmH)gHsu!CuC!2`b}9Ad-8g*V6mg;Y2*-X#csSR@-N%(5e3fY52Lypwz<5Cwv*nG zjTCz&s}#k0;T{oGd*q)i+oSE0#QMh_rY|K9(#@(EW!QrmzIxs8u0?b6E9Z2pykI;! zcTZ82$c8Td@SvS?PwMwDJ_^RlnI%Z^ZeWPoA=n>}cuy+&vRUm_-8A$o^DATVCakHL zuz|M8YK@m?{7D@JW@8Ue@-4IQ{?@BdqA7nGalf0l9?PJN9D3UIhPpjnB+g6^sFo=!d`;We@j_7;^qbScSg~Ckw!gN0EA3xJnkC`3SC&gR_UW*z zaSzpqazU%^)=Xz3B<0~ULb3gFRmYA)q;Ufd4K>psFDk}NeDDy+O z(Ywfu459e~v^*1dA1D->t-{04Uw_MxXIWLV)IX5C4bp)Bb zJNQL+U)bFQKIz|YSpVPT;rnmo(e!b)gtDucz0q)Y_^%o}0e*fcyNs>9yQM4eYH#Xp z`O?zd$pUEj3d+g#_?4@hJ5+%0f0SwVYb&cPOF%lWbjEP7ldt^daV0lPnAK3E!!w@l zb@w^GnMKeJCXakM9;-@ieLDq87g#@tv$kG4_{=Zk11SXAJY$KN2_}SEHddonL#4mW z?aVy2J{ma+ zbVnU_518kC5=wni{>LDbSl6VsqhWB+@_}Gr_=mgim%W(&()+n54u590r4{?H`1-G? zyRThmo384-()hjl#ftRUD$PQ0bZ<_QxDENK7|MSwx<--RbaY?EMGHBOTFy7R=VN*= z<2sf>-bmcd$-0Iy(wLWN}vDB!$ z@_Y`B3g4FeV%*YRV!TnI{azi-*V(|(EQf+0HXU>Oy5GF+&go&C15(xg)r=OmqAJXs zZsr5QTUpnaBg8zj)X%q@L+58&;{$s|ZG@nMeCEANKcsS>4?9Z}?FhV}ifbWc|M&%_ z!YQ4_ro*YF?}^4TnZE#5zuV}8eA+0iyg5>0z39T&Gq`Li^Llkw0^unm4H zQ-xV;X8FL(X?B803QLUOB_|b^5S71KRI%V0IRLYwH56=ZRn036f331!dXrPhLXnbl zFN;V%a~T(I%Kgm%;`8PBnZBUx!<%)MNBhbrMKvwc+NI+agiS;>d@atlhhF-xD$cg8 zw7oa?Odt5$WrgZSwBQ{^V}0N2|Hab({m6PLCr5WnM|U^qV}Y$YlwH}Fo|> zmv=C=wv_z$tJJ?=k+P($dq`+)`Z@fc$@zYI2sg);8`?ZhoMj zhO()f9rUqQ9hj7chnf370`eck|AWbYaAnuAwQ#qA@^bS2m*nIEe*S0m`eCP+Cb`b% z<7IPt2{|w_4LTAHa4v`2_~eh7ADEzLajG(0x`KMR+I7VQ4x{y!qs_2I*Ga_SnQk-B z7WV}C1j)o{uG{gLsQHB6gjcoO_ZzRZ%(X2c-h7+Fb}!z$o2uizSy7`KXvW4B zRsyEGyT^~tOdMotHKAtDA8FQUyhPL(DZe-C6*SN;-3tP)b`EQ6SMM%ShpRmHhky3Y z%PQuc1!(&;6!?8?5dD4^4+VczTQh*xP8_bxWgBH_e%JZ4lu6X)M>H%akE&tmkS*zljiXm|8hbzV(W(evn^M&^H*I&4;Uag($CTafjc@iW#Z}9qwcg+k zpGy)h!0MyF#`*4jEcZT+LxwvSBFbA!smtq`zj%a&w$mni+iq=mxNVP}US9p^6bA+g zi7O5-d$$RaCiG&bIn{C>d2{gG6Wg=HOFk5;q~M|Bqo)X0cN~kKm~i8#!8KmJKBx*y zm6B)`KkiI{f>Tr2RBDbY3d1Dn%HpOpN%DCaz!s%9t!(JFKWurlEtQfmVDvpIz%w%SU56dm*G{okcf6t^nd zzGtCzn7H-DcuZh9;Bh3^I>U~nt0MqBvjl|hSHD{eMaqnYoprnSFwI&!BOFo&6=N0R z3-d*$)1n3wswW0RVPOk#a_FFxPfTENk82?mYKxD81lPsJN2ZG}hC;!kA)&#gYWT>= zrh=-FB%YX1pbHw%UPcW93I8bpmjG^U1BKR+0|<~x!zCaYPf?KMOa4Cxv%*C#v2HFU zq!VZt9%gvwBy8Q5sPAYwuwZx7n!9lBezR}4kO%C9bJ#=AaujW9@5E=n8RGP|iyy8^ zulqhL3YQ@WPP4yV+gj-&{exW@5i-%5I3@AXV8%M$4$6blNPIsTAAN}ciI^4X6<;A+ zfHx?;#mfN1K3gtwOZb!jz}PNsguL|(lhEi(jjOMIvSEf$FS_dEoH^p50{#IrO9SY? z31_T;ZTS6pY(uJ-8fgqb6De;2WZ(|RMz8Z6= z40cBWwCDLw8KU&%71BQT5U^OG96@EI$W`56b|;0{j2twdMMYYqdZ6oi1yi7x095E% z$ySGSoLriY;bxPIVVV2<%FUeAU~*symL-_6>J{g`B=s!#KJaS3m?NgB&dlLY#8qO0 zit){v+3`4^Qn(Nw|GJ99zGPHHwW3i$EQ(poJt2COY_05aPf^^a#gG0^->|bYpb}r6 zsio*=ckeydnMbT;2Ku0q^`rOxIi=sn4lUvLG|y&=(?h*}( z7n+8a2TcK^0V@ln6o%y6W7%Q+9QqfE?y8uS?F?d?2E%_awy_eiC_jsh56-$u zNh5#o8GfKtQd@QN_oDZ1Tp2DE8KJ#o+)qZ-x@;6bD;cP~=AZy}FGRyq0UrGM$*saf z?3+I3CyL=FzEwoQ^j-Fg9_1`DBMikHT%i8-%C}GWgp~-)bTl_<8;citD>vuv0p{QFXU{F{O@d;pKh*|DMX^0NF}=#l#mOt8cw2hpjfbxaiCU2(7OCLv>J8U1~?${fXe@jjoZswO?Cb{!l$!jIfr$PmM&0Cag-(}UP{Vjl5;d%j_E#W`d=nE7{KXZKO`v=yd+l!%XalO~{I`D~Wd1A$fNxFfGaQC({ULm$VOPaAynXh)p{ZbrTfnXM`V( zD=YWOuVMb@Hn1`5kI@spHxbuR0ftWMP=LS3Ld&<64ftySkQ2r}6nd(&3zRryPB|lh zECbeqQYO9`(X1w<6}NLaKYu`x32QbkT_cThYRGlNB0%;E8fRYRcUB&j)GL32hZx>j zeJig19KS5%I?14hJI%dxTO&OQ^RyfA|Qa~UXS-R#y_L!pS@#f_V ztC#XT&D2j(yJykL)%aVP{=!0IXdNy)# z&`U@^V73!T?qG8uti-KwRH!J)UTXEXpn^x?iBe@9$cn9-_;_kaX+*|SvB=#m6fe`9wY4 zZp&2LzDwO5OLgJvv~*bq|K(2nD$BTdFVsY^|7bumU_CF8TI^tMHLDT4Dz#yY0rK<; zR`8P0hnNr?Kp^e1PY6tmG58d=Qc1&?lTPzZo}S*-ImvI4_*^D|vboah40Q!=v`>xb z6&9X{(5nbzKXM{*9lmazNyrht$XrL|j*+^R@av4ePiA=~Q9r)^z+$fR+xY zsRw^FH&HawOD}eKVbKxut%OCM)Up)%R&n_JIr_zOpijr0_KT}ax2xB-Cqj7P@GKd0 zj;0zi^~Ni0ey^r;dk*#0M;is`BR4)a!CaF!6%-=odwZwy%vKQl=m;M_=L)0CNGVq|Y~ zpGv9yqsHn2!pHkdvBzOTFC&(b)T5o0tp=Il@p!GLSDlccZ{y^2f(~@jGjYhz(0Ge4 z;PdB##M7?~MznDI}MrgiUD^6tV2r{s&SvEGF{)Ox7keOa@cdsSZ z-{JDUjBFDWNgCB{GO4y zaWTqH5KIk)P58-W@54Ux`-cZfo+M$oT)2<6b~H)bfE-d;=8=Djpi7Bfc@fK)C>S|f zl;p)NV54kjr;;ryTkBBeQHnN5xB3t|K?tukZGQK@UKKG6SEE>8<8Yt`t5P<^M)iC? z-*~13_c4913oQeel-5HR+-)exemvBi5x(#&&sD`bh3P`uD-{joPv;Q4^+IpMBt-6N z&dQntGCkKdntANOVzb_g^$}r3+}p%{Dr4fee*$U#~khb$ax zPN=S&EU13*8-;{Y9kdJfsQoE0y8GHkkkl6O_I_Tp*+XqwUHq+hw8QDal_p|wyY|^1 zQJz&*_K2A^m{8jjR^`W+Hm(d};RN5}J{OIm-%`;=YyAX4&PrCc<_CY*!j_LY#BE0T z{#2}=uj0Fw!v@@Wzod3W$J;c7?T8Y!mJY6z8-YPo_KR?7VJU%J%ytGJjGoA|-aj>k z2|C>%x~}E`rx#70T-^Q!@}%Sj$n!qbCIwBkPz*Xsl|e%F7Q$Yzao zQCJIg^|AM5Vktg$m(?Y5V9YU%g?9BQsIhj?L{27}6qS5_<|Qo(DssF|>y(9<7;W$% zGZZrd4|0X}g$36KCqd;x#{311zOtfNsAGXnhnzNX()A?X%3hn&XE*gkZA_eO0EQ_B z9QrO_I#>X#o6r>qT%}lEv50^cf#e9i{XDFrorz-t!lOHdm-`w_q-{Q#cV2^W3k*~R ztD(ptt&SlZfiRp&-mX2}#3vZ=#3zd8clhX_5s+kkmJ|BW7&X`=ddwEEG?Ufxs%XJk z;@n;Yp-)g21YDgpw`**c8_I>ugzSE8Dcfow84xv3)Zj~M7~F;{Aj}(h>wOks_8mJR zqN@iX{kj+x)N4HMtP2cgwu0Wx+}caHtq2TV8Qzr9EBm^Nnl{`MI%y@}A%+NtwDZ>64&2cWZ0c zV-~X6ESv^z;KZvFm!U@FQ~d(VW#vm3!% zd^SX(sr!K}V|eK{E7^l-0a^owHKVUSUu^vGh(K!?{#!)_{YIPQ?0>M3NJ$%G0yANN z69fbV=*ldqQ9c!{y(wdc0#1r;vJVQ9B~o|9d&NwvAB3B;RT>g9fPYBSfB~#$PhZyq z_wN{T3W^)PBaVIiBsEA<;}H2Hl{rWnm{BYMhw}y3^dnHEC+bi^TI;#e;5a~}NpF)O zr=f(a!O>q1GE$@D_`Q2a@o#u~XaGD@x(s&XcWGkZh?s!t6W)J+)%MR<&PkwML6mpz z-tm52l~D+pd}}jZ{;xqBppUb7Y8HwQ#*Xibxee=8df0LJNA7ZgPuNve)$g2d#epWa zX7%{GyF^2lPnjRJM?KU8O}e_Oikv(T`0`mO{##|G{QiFfwGEXJ;BEGgcrNDQTnvMj zMr3B{Xd2+ELscBpq;k~dkVpXEI93UQyoo_qMZ|8@XtC*H4$RFRjESW@K6Y_=`D!9r z{QkatF$V-?;|6@~QZ{5Hi<3KLFepBASd9=eg~Xhcqfy5KgMF#;^elfOHC0hRSuyd7$g3JzML6I0^6YyQuZnlvn30MA{+l_$C7{Gx4 zfx(~-HGY>|P@t!34@^1-P2r4X8jq_ae6TeYW>6d8<5F}eNpxk|arN~}Z@tN>*^NF` zpuC=h5}6C+gGKjV7O~>Y@;& z+SCal(^8_~a2WXQTe*p3eOGjjDaDlizbtS3Mq0^mqHBxQdl2FR0>US2^t|gkJFpTM zv@CW2YN7|BC_o=v$()x zJSfD1mLE$>N`^ptM7lY9zO0?MqHYyj1|50c$C0VM^coo@U;SGjWrDIS)HR1~wOl+pRo0`EAt3LRuhM$)_e>KJ~#~`B?kR<2b z$Z!rj_26$O?jDYoLP97z6s7nKBl~WEK!w z6p%aRDw21(Jb_i(y?-2K0nRb1E+K(v7HMHAQB4-*S<=$Y%uganRfiO)<)ozHQRL!C zbFtI^>Sz4XM{glLSXL9Q@H*@}znCxsjJi);;nO^L_o*dP5u*%ND8SqxGMP^bxo6yp z>gpJH5M)(#$Eve7t7JMiHGge)NlzuSSN0--t&ML#l+N01_Ie-dp+419t+4U*{4H>D zOAja~vH^@xy#f%jDIv_wVJU|QNVvNMA%6P2&mUBPuShv%{`qX?1qH6nNx5m^mdBH0&Y0^S^;UakJyV)hw1fneT?gm^hRz-xE@C`3cXge?c($ikt%u? z?*KS-@cTpB3-&=aHBB{s5zh<&E-=cok9zN$l(VJ#r-wiaNN$WgG)u%`wCDAbC7D75D+=Tm~%IraV$x;;I5Z5U?_NN?>PC^CLHwne)ys768O7kwr$>BVtnxU zSyCYLDkx85c7L1Td`83VblUHx7SU`p=D|+~4t*|(?EN>KyyI_pyKJ&jEz#P&xvOJX zb+xGHQ?FW+YqQF5dR{uNEPMua?0XCO9 zBNNeCir)TSFS9FWJx=#^k0Z~Qo0Z&N57xT&HA;N!ENxj4AWq?6wU^gXKl;lyJKIYt z6Zc(PWeYReM?q6CNZ?oJ?^=}OHO+I)*XgM}#X3GU=l5;NwNJ^&gpY%Hy|;e0Y~S99 zJ9|;5ylf0SA1Ri`Uf?8TH+o|cL=*Qasm0h#7k>@e?}jl#=J}lGilFOmCDC!*ms=d$ z%V%E>-f#5ARHY=PBZ(y(S$=G@1BE`-shL4UU0>J23BzTqjeJhNwBDKpg@|Bn!g+?%3u=ha1|6IS9?)&@6dm!rN%8FY~J9~2L&b-c% z#|XiOScq~P0Zw2yi*U4)uB4Ui{7CT7FQ+?JuU=|-?Wcam?^?R%mc>J3({ZL5X857v zY%f*@YncR76F|vqj-up0sbVP1XVHyM195TlH;CS~23~m_X-lQF7N^D_dSM9Tfx&NY zKQ=f6p4BYp5QqoVrVo*)`Q-LPy{<*v^Enm2N^?P) z=a`C{dk%g0;46&!rluE4Bin%Hmw%>LHx(eQ_xf}B{!7A_)Qu0^Vdmljg8v|SAFEvr#J352pm~y(lQ~XgnY8}1a2)vDQ!FF!VjPO zx@TuKerutHm%c?uzjF2nx*4KBdMA}qrasqaCjRUcTPf9xVBYD6BRd^;N|3Iku05Yq zDlLO)_FbQ7@R@}W)61!fOs{<1PA)nI8xKkCi)M4LRzHm4IL&W}u$Ez*)UAC)&)4DI z)ahCmFS3-h^bR2gb~XnOf3{U&iJX+n&TBz`tD_E-j_QO->DMp)!-JT-3aI4`4y9*} zjEtTw&aT8qSQtr;b}v~)Uq}kCY0E10I4g?((}t*pYCJ(9UYY%uBaE&gHLRpPzmwak zfVPp#dc1FoPE7oY@Sk?Z2Hvc+ESzj5DeaX>W3Lj%j}$X~PCSJrSuv`sstIB1z_K@} z`nsE0xKexRP-o}o8E6X#vHv>s4A;)f5NKTxcJU%k(UW_Z24seEBGcgO!^?-@>Q-SP zKf(6wHTBQFr{hkwtMiw;L_~4kA4Wc4@MpK$OZ&?qqafLm7DJN+M)M6s@(h%mn2%nu z2_l$D#f9$Ahw=p7E-&mk2Yh9h&=4oWR)PB~*4E$a5cNmQb{wa^fSo>#hZ52UPYhOs zn9P2IZ|qI$p##j$G35sN%aViG8x>B-2~5TMaAVGH%BrB@s@!3O4w^cD35UAS5g<#V z6W8{?f^*;j9!eP_Iw+bpAIbqokJEsRDd8iR?nZ}7Y|7Drl~O@l_{iLN0II%^sH%fO z0qRfYbW-Vod)EfzVu2eP=KBm+0(Gy?mxi)ha?6{i(Kl5hpx2u{`ggMqfuo&>H)O2) zZ-bKpMD-gDhr*lqf9iO%QjLf9Y#xdMMbXrg zTY6%X*4Lwkm2TZjaj=}gj-DH*qV~Dz!{3GmCm=~TrihP>8|4StNd+-RdUgk@VMgj@ z8>vDH9KYC@t)wKFp|CpJJ?Le7nvcaP^mR}bbWkIA%iR>Vr()&^dph@&%VFV1>iU~(j<&ygt4QO;(aBbhKidUD=;9B| zJ^K@yQ|QZOdGfQbY+a*|>I|eMEwr-$EO5%q;{so!A}JzekDK$_aQ8-;mYdB-$oG(O z(q=$C{dm%~tOgC3P;)JV05=QE!{s^Xa#>>zsv(vyD8O=y>79aB76g102n%dioaNjsD7mv9L#A~lE{c>?^2xkZ$vg~H9O zr!H#XTQeKmN~I`|-Y6W%fyx}S&4^CGI#(S2^yxDK3U{`J0^NG0 zMTU7@Vh=Y@XWSHUci$^2n`I0C@DZ?Vpf1El3F`xcVuDH&1)KSAb%4gwk2H2l3?`w- zX+3x=n$ykFzo7T6i{SHtcY6#CNYbLXSHYVWFJB;d;Tz?tttBBc%b-tR&!?53d&vZG z(a@eH>{W?_6MSL!Fr%=MC9Uv8i{j7ExZNBE`-;PQl2eul`*8sW)Pn7CZ?C8ja<8tq zk-~#fn@47OVc_*KrYhx4sk;LZSu>=u^OSOc%?OGCijVRIB2)0Lj@N@GM0IBPCIJvn z4z$sEZQY+ETB~sAIIYJwEh)O+xWFnU%RwZ7UCyB<0P8(pT;#V{dR|%?>w&(IOx4^K z7O>opvJeumf#2|HQU#!c$#HgzldAh0R`Me<3vFj8xn*yLjtKW^x}r zxJKmqd$0Lb4q9SHi{l{cn(^Ng@iyV*^TwN%^1mXdfBxt{_#SKvTrH8RK4PK{555$y z@&ov|C*<7aCxsT*PZE6({z$wE6%o!x#j*~}XSF-{A8K>*bG0A90}03>hOsLA4O@bH zhPcRBLfF@G{zhS11m6nPS#P6vOpROL!Gke-bV80I|Ej?G^X5bJ){g*|0s|-9AZoIuPfvmACdPAP6))xZ9>}(W#bS^FHx7x+sWd0@EdwhME}o zOagTVf;Qo?i7`W|^%f)TjvFCYgGQkzk@?JGEf>LmB`3KunU8y?<^-%WjcIV!dv!_2 zJT(HIkC@N0WS(~QF2;m6(Xubx*<`(K(aW2$f;sFu@p-x*TPhu{wGT>W}3=~h`k*E6gbk3gf1 zF_xsMb=#)XPS`bcmn)y>1d6f#;lPLwsW0lUrQ+7efFNOiWH6-G@aIAA^+b2b--cY; zKE=;%zj)dgv;^L9+d|@4of5!TSn7X}YD7Jr? z`4}s>u%jaSw|1Q`h2{DmpxlH28|zT)%2pxpsZpCwAj2d3bc8+${18Y~2jv-^RY5mF zUwQyGKJ>ag0WHr`hQ4A&wNMQZ!Xd38;P#)Us&UaqA{0u3Uuj3X7rhj7tjyP`M2K8DM`!-)U@b7CJ&Z(qXJ*Kq?|9<@ z2*FqgUR984KMD&S2(iimdCe|+bt7^%0~qycwTu0&)k$Nf^WNo`ZnX=+=-?w%h2p2h zTz5S;;wFDFj&IxF?N9x}=SWouGnS5Mdb)7wFnF}{1)-aEJ^|B!$mJ~(A=~GnQFx&z zmA#loM*8%$PJ#G9(^|yqYQje=;25o-vFAN7Fqc5! z>3IczVyHuzE*VDtyMA{q1c&tbD3p0bzXfAIhyObZLp46uy*%siE2N?Qs2Ood*BABr zdm9vV@7}6*^~{zaT_~}>>5i;JH<7A4>_Kq7B;F=nxJwy1Q!~Za(8Hf&%1bGP)+t%( zLFzc^8x1KGa*BY+8;5R|vz+E%07v(`dF)qsB|WI&{k_FxH_y8nvnMJIK5&b8KF7H+ za7(0H|MQ5%h~0geS`!*y!p;8rUg2vw5gf(fL7F%QQ96|U3|pb6p=)Rz6!Dy(!a>z4##aAqQUC=uNAapHGwLZ!%TTBZTl`$> zUs(DE^>d!R0((V>V?->n%m`EL5SjQ|$w!R<4>aE5>Gj^fv?K3V z)iuXDRU6FE_|%eYD2u*Kq+$`PCH}I65*a3|Y4-MGqwS_T4h~EIi{y6((ExVcd(1$expj{bDF2w}@}FlMNlb z5f0-52NmDdx)?fp2h{vAJ#;=@jOxpK9nY9NYZr0!Y_8bFe6c0!ZAXo#`&$Z7533as z*V~IPaRCN9LMS0WilES4b^zM@=MNeMZpdTtC{BYgp_<_pKssg*DK>csHKHKtXPSIt z{(~pAM3c@lGU7{Z#JH;DN%7Iy5?{Ebk`q2-hoT`3v8fDJn$gFhqL4hHCOSdAV@NY4 zQb16KBN8zH1B42&eeSuwYDwADzw(_;Qh=-nD82sJ+;bpF(Tj>?)MPs)C8Z?CmL=}C zn{yQHqQ+yyTfqsQy!)nxWGc8>B1O3dhj~GedR|(4QKi#r;v;87TZFA|rSfB6IviKp zL^ktX7?P1p|5{`HJylz~GVRUYU_qaM1J(?E5?N-xgKE_fi4O8CwB61;YVbC*7Fthr ze0NV8`*EHH3N!jSLgj#)fQ`U@>+I?uVN7iHmV#)?`k*8`_R-Ac03VUJ^+i%^Rad0O z4yaL#>DVU;agTsfSM|nF7rt$%vB0~q+wAPs9yMSx4p%QqNV5j!G=v2;%A$K-#9Pyx zKldof>&CsE@&$dJO34Id@!za1}XUH4gPPCsU zHS(*vvPw{|g@K9{OOaicbG=$5=|@)$7r7w+u|QG~2Z?$*i%4cfDL2Fsg-g0qpL0s= zt(J*zkVozvjc}3wI{J4&gZ9y@74p#Q2+$*Gl@Wm><36M?ulniC%V^7#`Gc|f;JP5! zqT1rc#cp}s*z$&(xiYbIjDkj#?&J&M#S%ASUF-_Fh}g27?Ee390T;H2nnZ16q89M> zHhMh--#c5uilAZ?kxu58)l+RIy^wB`Q(G%d8o&A{3ovoN)W?;xvRLyWA9NKW;Lo@D38cWU2lKP-8a}&(qi;Yd^WA@dP%S)P14F{a0f(y zHg}h>u{f^=TpJB9hpjYyV(86^nZHPu`Cr$M6l?BAx&;8hF>cU&8P8D;H9S`m}3lE{D7~R48aQONKj5*8By& zcozfPq;ep=esI%9k%v%aLHD#+vm*R$GV_G8+>bqG1W>^7k82P34tc~mt&%F{ZiczK z+<^cU9Z=TaGeOUZ+{G(`^T806Y$J#X+l{p6QpI_HM2khS-zHGFr~Z+x+#T33*Wg%5 zMo@S6zU>9ef5YwsVDU+Y=LQ><53mDh9G?{BgCID3;7=)h{XX$~Z(~@OOLSN>%Ptk5H zX+kua^GBq&I7XS%LeG7|JMVcdCP)eI$JmZ#2u%pMzf^o*_&)WI@mz}c$Vy>`dnFG| zQgyQF7}qGB9sA)2RP1eeZy@-659K^1cNcv9nf}8l##MDs zawXZTL7q)q2 z##fJ@qGnnY6J6m&8Z8fpQ&A7mi8ZWL_Yu4H5Nf^}Uaru1<20RFG}Aw4f2o_DtFSZ1 z_Xd=Rrx7wr-R}PAe%2+T7+8U~(a|5MF^KF@^p8&#MET4pC6O9RD(sgL@8{DKb4^FP zCHumdH&mKCs|M+iyFYzn%>pAV&GuE@?3s;DDVJmSObP5afZ`t@#r_1)qEZkEQi|t? zraWi;{P~>o{b}rM9rSEI#|v7Xw85>L1i=y{(o6c0NCYafi z3ksuI^Nk>jWP4E6G4WacPG08tv_FDVaeDvBm4k+Fh)fYrfJ4}^_kP9a?5S0cE;a_( z)SNc;r+rBs(}HkwS_H-@hPM3W9eKN8!qTRO&Ea^gB&4v}-q5~F)ZfW|;r;#ywSX#T zhjn`2`R*!~GMwWkNfU608iH4o_5sIk4y#hu+*?*L2oP<;K^0s(+3+56&*Zw8!I>71T8+7qjs zf(x$kE!Q{d%m|UaX)%qkfaA6!WK$4O2_IP0Ec#D1da#`=2jYEnB6E?*Z#Q^VWR}j3 zP?2n~nX?}Z>GvjCufi!s{i~?I*Ff}zFm~qAbCw|htWG8fCNY;Jyz@4?$nYSp;>qnE zAck4``DU+n1jZ8RKNyG!)rgqKqKaTZH#9s$QU`KA*n>XtNv78c%F$d1_dxu?(Cjlp zE7SKwT&EpFO(W+ZhhCCw^$tK{9|DnH@^sM@TqDLjGU-et%AwnMWw>xbTX8c~qV)sj zdf1|9M_Bk%uFu_^RZUedz>|(d_IVVCrq5{dR81WGW=M8}b@ljtBSbMG1AwA$itujn z#erfG{RAisD?0LTAzldf+l5c2XDnOW2-2Rzh*N}GFbdKQUMHP@pD(!_vVVw>3{x?* zj){&KS;^*Z4TuB9`}0I^d`dMEj|SNs_UdS1<9$r~c8O!JojYB>anMIu^Gm`x3&kh= z^{SXR+{>JDR7X#kY#jUdrs8^_6auP&ij=1j@Y1HWa^3a7M#SjbYb#}!YnI$l9Z#^F zKBVgs!Q_bwZ#5Vc<_Pr=UFc@&F4lv96V(V`Z(oBupEY)EoWQhCVy?14SA;Cb+q*$W zM+K%|Hm#Go^ETppRNvdniCS${wb0Ok=0+oXqC>x;0s;EtpBN7WT zFv8^Sy=ZZS?SZ~o&?}EBO>{t$S%d}C!Lzx*lNMUyp+Bhx1SWU7vxj2cc?rFAe3JIH;-aBHZ+(=^fAuL zjSfo34>li7t%qJ;5)rN8zPofiUYG@9c^I41vuGu~9e|CLg%a=6oTq#tdZ2c3;B%El z&nzND0}YS=6KBRWLCGJfqK5gqSiI*<8o+|0o2eHa3=iJT0-LJY4*)h?9r;XBJVp2# zx>$d~3L4RSD3nAVh;0lSghGMGYVTp>(9n{ePm712IE=EySu^RHzLz7QjnKcDs4tNR z+;?n5NTO=6L-PG9q0xV=1ps0&#jlWLuHSujbt+HnYc@}7U1s9P|4GJ>NNfaBBQ1>$Vhe@CA{OGFiFECya}^R zE{5>u9I13JDY6PGkwdQ2`dYcby2nomtVD^zL4L?&`+9|SlSITi3C47kMXz)I+dL#% zU!sXkU@slp>_&N%6tNMDi5S?Aw}0a6vGp4vU0<#m`zl(#h)>tkl#FmuhCi8zT18xn z+x_9D2=YaiiTB|=1+2@hk*CU=vB`DL{(XcApPytTj;v$(vf2w}Oyp6G!ULe;D7ffB zW*!R?cLn1EKz`z1HguLE@p*nZa; z?~Od>s&pq>a`?R{y`re)jRDU_`~?>^bwkWQ=`bLJ4Qn*)d2A(e5nF!phR~Wt-rob* z@p(IG*JJ2MHIiKHhTacoSz{eO7~bs^oX^_Z`Q5HaQu>-|trY_t)#NlInW`0F#kL-J)%o_$5KW0oWa@4 z_r85{-tKvC&)I)==ggUN=icsntGlbKtLxUU%9j@`_-2R&KVAHQHV zkfDvuQS&h;q(LGfiOp7!_<&U7R}xt*XUGW?peWfSTpm7PIsjdjhP|`FRw7U@2f&?u0IrI-vQ zW|$8!4lWCY({NKEZvL^6Fuf4ZXzp z>JK$-)uLLV6ft@ol4(%)dHLmEDYTk-P6VBk&BE^V36WW(<#O}}S;BX4I%IG*v*^T80gMqB;Efw`5`Sl^Gp^1Pex zG@f$C&emei;$K{SKGRz9F!Fa$wSl?wi)q>NOY2-cuI9b_Fi0;;=QQ1g1f3$N0mvem zr=7o>qqMk%qDccam2Uhm&FoZt(roRwDPP6X$>au0zYLejv)alHfkqkZC#uMcj|4fK zuE+iS3I{4#HjsEUkvdL#}Y5G-HdX#7Uq*)%fn*lnD zU!HfYXmH){P*G6J>>=O3N3JzPi=SKeftEVCxWxm$Yat1#y;sdQtDV(n8K*D6t4I!Z zA9(Rnl0|rl9?W0upJv;VfR^_ngoJF)4v4G=SNSQ4iKe2HGyBBB`32^h5`h#z(t!6K z%7-jr=JUgyBj`fMV`xx7oUjaRtC!b)##SGKmvtski}625>n@ZW>Br zbhtk8Prrl6X^UdNvE;>SZEj}kc$tTh4hIl5TU5to9A{~#WkAPv8NFyjvR08~VS(0o zjArmE6)tP8dEV+u{DuK;P5cS*wZaE?$nxFg-rDnagt02%@my_|%%)5C(d89T+7B-l zpa~@~Kx!%t1R6A7*$%jcRWky}TH>D_jRt@_o=HEL9oo(8<^iAO2>4km0FH!Wqwh9I zY)uPb5MhnsUW?EX3%)*SS`;97x(DI4dg>csFjJW-D@V-xm0rn9QU-eU8O%6=+0s(w zv9mG}l@15&d?Rv!PVzm&Kq)Dv}!HNhl@)B@u`i&yO)u}Redj4>b$ z=t!&axBn4j!I z>mM~%EZrUt&Nuy;TYYeP9OxgvR*xndt}ZSswkflM=r>+>{zmrSYO6@-pJzPl((C{o z9{K|yAfUyPIV|fVV}h|fvE;T#E0k5m@*|8SFXsaQ#^!+JU6^YMQ#v{mzBc0T&>g_9 zXhkS^Ng6X#z-jmXPV=<=Zha_R={e^@y#u=MUgdj+k_{ni;b`@Lv-3gI<}~cE|0d`n zy>@Z8+o^9c_iKTuww=6{A|70x-4oraVZip;4F*Gn9j7%K*xRGNYE5l=8PMuwkcZ)> zFON62$d1A$QAM@~3j+P!`^ugx`y#AcGSm%(vt(KUquXS$u z56UXDldBzXPo{!u(}SkcIi(`=+ESp6-Pr+g)l-X~DLOiP_9{u)5v%i-H|5O4ppzVk zuvBCW=n6fPXOJJw4V%MZQ|Y_<(lNYs(7wU~oxWKN zS2Evd{i8@Gf(5DH3sSVL9rVJIz5SZJ?h2<7tEzIaMdp?=%Y8@7UC8Ti=XKeYxbb8<8-21MWsYe6vzTMGV3#n= zY|zu+xe%UFd9Iy@nr#(3gf-^dJ+B}ZhTUFxYH35$#J>^0fnURPn`Q0a060+$cnD=~Kd8IWy zHosrSpzQ!dzS5aH$XpepH1cJ1u;lbeevB0@^7|r}*V#tn=Q|CI%0`i=y|9?;p|^K3 zft#gaw@KyOb)Qz(ifd3}e|)XGP8CKZ&RT8f+{qk)QoN9hVQ0pfY>v^RL@N`H#zmmW z3@J<`?rEw?(-uh47m&9&1h+IQNo4z77Cp1RcN}`lXmzI^o%ua@zE@#&tujyyZLsXH zC*QQG0H&vJ=TwQnkc_O6$)$d%A(PTYLYqUVwpI>L<H zQ4gxP5(9dnoQsc~v6Y>MhPIxZ#lXFy3LmgoAfH4dw6!Bda6En6u16&YQIDQ@5 z{=n=$&68ER`pm~EY_6`QW$!5Eq44JP)GwV9@lf!e`F4t}&rRHicG`k~{OR8IHnRhj z)g?LXk5Veyaak#QCr8LlU{7M-k?Woj=9vL^b#ZGqNn1GwEri9<<>*BO@hNV%a;(_s z3cC|b1G4)0p;4!0Ge)Dv-au#rZisQ53?V{T7@g&|#rEEN#9u4Rigo7#sF7a)L3ne6 zse8~^TG%wASBb)zG~VH5>FN@+QfpqqFC}Ii-|COyD~2}1<*teb;JJ;p*AJT?Q(i78 z`fu0LxX_nZR`90(XoiOV-W$wZSz2|O&j{tIowZ2%Z#NxIoT9LAb|~T_P)5s^??hT#L-&cCw^zm zXo+z3H@NC0m6aVGHKN=Of~JetcQp4GRwbvV#qjUyQnURa@fyr;7-RlaKJ;B(?cX~D zROn%!pC8~vV#L;ukCWq)>p3~V;L;cYxI+Pt3nvdr7uC7@vwc1`kvJZJlJ4qM7IZ>3 z0~Xa)6X)&6kxjVPpw5*QW;&|bzP^gmlFXJJISuyqo7KbA+d_!nf!V9aGckOkdDkcA zG8>S8!3ARqrNjAERFwS1*;%E10e-3^3p$D5Tou}`|2;7y09h6T9Nqgn5wzDK8?L99 zj@PjY6bSN}zs?VvO%Q(vWQh|Zgi12#%-sXv?TZwZ+~1ZGp1!0iIjxm_#2K=$b;sfC zI32P11X^mwj)~{HSB%DF{u6<1cd+pjF(VAh?RwK#Nyb#HTr5K7v6}~Y(j%p?aF}DW zXm7@)CZB9?3iGwbw$!I*@>u{~=X(-1*7HzCD)`#|`BY(az;~mep#haK4d6QXrK}zM zQVS+F?N+AjzPh3^;2MAKw?L1a^(4KP zJG(&FGBTZRj92M|5%7U{i4Gnf=Q$x;TIN4n%LJzPW6Hq>t%nZPb|Q!wHJX{|cIR(3 z>F$?*9cUht*VhZulqNpaTyoz0l~+&77?-7M78T#gh=?Lip^%8!j~N8O0ykU%m`4)D z2asFPN9lgr^+=2u4mrYiEoV-9oykJ<6I6&%j?=sVLHn_&wVm@~>i`t0;v|m@`HKVZ zgmxh_$d8zW;AeuW(b*mmC1NvjBU#6-oUH46poR>rsb%2T;Lb%0DubRplcuHJay3ui zGGNMym0|FUGrktV%eM$T4>IZsiWul))3H@T4vnHAcJ*-akunW8tTwKsR3XP%Q~>&I zs@Fr?sFl*eQPBNla zQTPbQ?;Mo}Ngx{hN9rotr<*(GaqyBu2TfhMI3WM~2>=}lP(h4lY8DtDM9Il!1%QB{ z?YGG-O5_hZ@J)TSdxI+o9T9}Qn9Tal__cx+=|{qNsIcKzuj7F%EEa3mX9j{)S& zl(@_K)lOX8;Cw+;+KU^r#{I~f^jDXB<2P?I5CNFM{w=;clwkSfZ(h{J6Jw5s0Lcd)klQT*!u)}7;-`vaxO9S47=S9BSj=I|1>bhY{ zkvy^5R~n*1T3WnKylzUXtFPWQi3yw{VFh)rb9e(j_0MBx64P-m`(1PXEDR+qmDb>^ zbr8}WnPuvKP(*Wle4OynX_9D=y^MQ?(kKigsOfTVt3EG_T&Q2{H}{xKAci0&$>H2D zH^Nu+Nqlu}jqK2{1RM z=T@HwiT?!xjA3XWC&#A08&!9|*+S9uklT0Irwct={HMX~PO^u&wNTI;-pCwhlZD z^Zr^^572_u)$IVCyA=xTjag!JDW1}UMA1q?r_5D0<)ys#Kx82l@ll^0E$3y7xS#;5 z>3uONXG=$Qvb_~xXDr|C_SXbRYXCvwi>CB=zBn@fv0Hq*9a48(2ni&Gl9x{0ZdN=1 zN_M$|<%`8n>3b7bEl!J155t0tX`aBdwdmGPHwM#=v_pSO{X|=RKor9!44LL6qSt($ zi}}Khf;RHv_rPkQcep*e3bph4%y4%5kj+H8xZr}XwONf1+GVd6a5$_THu-8hzT8w! zLpTEU_Ba@)5B>S$%BRT+3J0`_M2Ve(@l%Eq5J|>O@cB*jcfYf1iiITAxz&)No{2T@ zD?uK_+yG7k=BLmsxM506<;88$+^$msdcg^pWw1`$Rco z6H%G4*)LZaB0$I#g=v{F1c}uBhmW$(x9(Z z$Q2Bu|I;#Ckk@Pb&0HqHeN{J}Vb~-8abwE+*S6NCz8&8;TVEvZx9+ zOpH_h`Ph+)&KMx_I-q)mfBZkvA%#j+i_j7yocam-9aLbkJwDn2ps3UUL>?Xwbt`>m z9Kq-Js#%XxEo6n6x_U$RaL&8qQo)7{ce}y#$1^ZLg#7QWf#wE(ZXfFoWe5{BHvgjU zow!05)|dCD1tX1BZbukS77_OFX5rM|0~+bSQ7-}nkg5TgBDw|n`Ln03Ay`q1l9Es1 ziH6fBE7Op$Gl~gbGUv?^5z4w!L71{=kXV4C$0O)vqRQ_jzsBDYXf6T%N!zke+yOA$ zD`4nZXUPcAU@>;lofwXv3G6F(AwPRb-R2GTZLPcq*m9zVrGbqIJxjL!HyWJWEW?5mVNZNCeIetErwgZ-|Z=~GY(a)RGSM_z5i zhx_RNA{{URg*E0&WdaFkfb)7ae{HtD!p^WG;y-TKSM%*0x0PIgHR7@_xm+R}4eb8qv7X&t zhA2Ew5drcA0NTmPvjEMO+#OWMK*s0ldAqK)R%jUqM8pGxJ`0(qCRS_VF1{o5bEJxt z{z%G}2*mRl?sP4i62&BF5N!66vpy&6(Yr#BPW|HkTS~G3=>=GJhKr>s`Q_w`rgHM@4#EkAmOH`V!JpCFC*sP(+6k zG^rpi*Z*&2fZw*V?aC$}rs zueO`r`?2?faH}Gm0HHL%rZ_KQ8Z*0PeC3m6v_Y$DN0Vi>`?rCGGSJzxCu$HS9X%6c zeY>;1i_an;TAdpwwQ~SLOWRnyIsaSU&i5+BD~NJ5jQekdhvGQf?b#3on6yM2ol#ji zcfQuLJg*W%yYnHO79}VZ?)+e(YOd zYXb_XB%#?hfqvW52lu(3N#s6H1GS5EfN0lUn_R?L@_f+%3iiWk$Ej=8+HZ~59u|^$ z4}h1dB(ENK<}SB?!Y^TI^13oE{=0bo31|yZU#!%(7P~eYDg$p^NkyJ^m6m-|^Irqn z0E_?lweIJao5s!b-DkUSj~71R&UAV8WgX@xl&dZnm}?$TDtC$9yw_MTntGnMp=Cl6 zJ(=)JpPxTZqytLJ=C{+e+K2hO#lo1bjTORKZVzCfo|fFWU9Q^h)_LvPNHN2@P0W3e@gvRU@7G9Ro!gIVl^3Xz$5)_9$%PM64BRM7z z*3;YG50Zs#V5m^4KoPW2FESg@ePct?lAaz*Ak{ z&PHiuzjvqb+Rit_olL-giwtiq_GTkd1kiw#*H$$(R`dXar(j)vjkB+Tqq)wPuhwp` zr>7Bsw7i-A#Hlj9TK4VeC1U?k+cn|05BmB)*5U)PHO;llVl5(53A#8qz0W= z#~T@4&YFotr}0?eVz+0&wZaD2s~;_S$0N3O5WKEQzdel#8cJGzA6X%EO)t6CL$3iK zfaPw=P}$*;;Qf7A)klJBzKd zWP*uBc9^BO*oK6Rtit}d*a~v^cCr2Fc7a#ed-MVQ^|jM;M#JhVz|DD1QpQbr;O3fk zQ~lHa%q1u})ZnMGwyxpyjJB4B_R{jwVtUL0O&Cu2{_|BXPr|4(D@a&dp){~scfpRCx}s+p4yoL`z4T=li4647vJ z-2cHESg0AT90V-nVo^p+*b; zy91^PeuFx{L*Hea{Gb6W-ova}{kFY&dVe)#ymvbkO8Q*H6*jLuP+6 zyyZ`tKfE3~r+UlVjqDn5E;VtWVfhrb7YR_P3DAPKBOcnQ8PjLDp;Kq%t!@0DXCLc(c$s2jccg9{8 zYb=(Tpri0|tQ>!+rJbbl+SgtHIdav(=%0>qdB(}1szvAO+A5)y3zAqaX1?8&W=!gg zaOs}CDd665q+h*`I{SJ^pKmaKnO)p zuMLFtG#j@vtr$ifH?B317neaa4WYmuh)OjhE4qn<%Pg9UP+(`|W`bCp6i|RMT8YD! zVg)NlOKA@8uT%$9j~iDV7-hW?!it}x1vkYlsvKaAD)SFU3U-*5QXT%SWvFVsMt~Qp z%#3J1?S>>PVU7{p6xUfV;s)1*uFzMNE(98@&Vm5zk?d%>bkP&_zp-(-u(fbBia?~> z#BGd80!mA`4fx!dPbH)t;;kSzv^dVdRS9F@p8_ARH{xKb=u0G31Szq%Hdy=yZL(Kn zG_sv=yvS;O$Kf!>CNFzy4e1;Dq#xZ%mYEjgFD3aIQtA@#?QfJeXM7RplVN@se~)_C zFxevgB+Rt3@G;bOq+=7CVeCW>ZfLrGYub$h#y5C%?yne86+~>YPjGeaGEjQdVSiIg zFBLB3-&kB6>8&uVGqTNM5av4G4x?4qze<-tjr%sF&$#Ur4zX)7$SL!`3?0JHUZN>T zQ0OPu0+`_wsJz>)u(rttF+&zQx-`)e@1!nm~8Q65U5DWih z_oFpTOJc1#%KIjAP^TPR1VIj>&s66a|9BC2XaGY?hO!H;```VB$NJPC)KQMOqcx;a zJegJ)#S9wZx3ln&W5u)P`0V=z*l7d?G?Wa__DK7VL2g2kq_a1^O99$&l87M~x*o-w zn>)+~s+z7YP_=|esk?gEM1*}b<<3Lhc3aV3Flg0%*%&BzqOd%yXQuFZ2!Lmrv+sNW zB`p4W02V377Z^l7&c?qW3}U(fxOX}ZOO_bKw7^lu(I2EYxWx%iJc9P=RQBt-kn=tc znH)g$bUrG~cV;4k!-;zKiMsBvz|y;xK}er81I{;$R^C8z?-t(VkHmXa!E{A-A4T~1 zRkpqz^J5gf`lsCE0qMHawrJghWhbQc2?qa-gujW7%Ej=gg*hLPY?OAwnwSXVS|5X} z6UuwwpuqEAAn!FHIr|2?UKpi;pVM57q#Te(*N_7hhQ`m z=X%h#7s#=@K755_*5|hE6F?C0NU!@XGj1Zre_Pa_j!YE2X_E9>q+&N5{1BtcPm^-v zEcMN^zV!U2G3bG7MLB7mMXh#}% zj_t{1n|NX(-s)(v2E|4_utL7_X&lr*zpFgDt5xtSO+UI{4#4WmH}U#b)A~I|>-@~a zI9ewUaYhF7`o^hIv=M(#`27^_je^RzQ8E#g?93kik-pvpLPfJaF2B4)egXq^;+sy; z=@$x-G|K=fOhsKDiOnAWS$;3mYXW2M7wgY|DRJ z7T~>>zwN{xraBN06VJLFxuHgYOR3V?M*M{emPsZ65tlLmp_meuP$mEdHzx=|ixL)2 zCIAiBC=daK^8beg4CIVRp(cE;B&gU!8wPKRhS{8BDRDBIphCmAkUodf;&g9>h{26j zD8prXlV(ru3)v3Psk;t9r(SVFW*zqLOdvQk>%&|?x8u$aw7nZ&p4xT9qJlNg2SbGx z(I7hxyTydoTjascEns)wxUU4uM;nrRG>U>_LMQ{xdyc2~M$FA%&ECL^v(A?x;2e|0 za)z+hU^sG!B9`=LgAt)O;Q|(pr=I1~*5J9`%9vPhWZ~b5-jw4>h^g*A#Y9z3>_3E7 zyzh~pF`zQ<6H=RawY74aldMj~q~~ci<Lnt@u2wtTh#J*7m99Nlgwvre|eQ@)!a4!}H#wL^ zYY`?pu?rCglVM1{QNGC9NU(q z>T*0E%B%_EHQ;-i-aY15?JuM|F(e|IoP7_1%lbyicNaNKij=ZsYhS#OdGPFdqJYM5 zAX23@i~uH;dCCEw6a9su7MQSq$|%dfmGj_DtxQlmX~XoyTen@$1s#sLy=2`iUgNEh z3{3uEFh!rNYqGnb>zwVp72lBlcg~fqv)z9hB1H%+v=cfziUIk7>(t>ulE7t2zcCvd z#BYmXgr0aZUhoIuc;J6tmwt<7t2(Tr=(eC_-oR}hj*`WzTcz@{Pr>$F@)d;G{96}q zRyvOOhir^g?1Eq=fwUAE`)IfFOHwc6IdI+VhQbAR(rt{g7*S;f&4YgWJW>eGA&6WQ z3aj3#7wAmWCSVs`~?aFYc!#Y4;$>dcQoS-HX#0NdyVjYdS-1=aG-b@h61>pX#Q@9 z5wZKlaom+p*klB^oj3Oz>_5^}w=a!9JNK;@qhmFoKk`ey3^in>W{$Ns}hofU1`l5pKy$f85T=CGr5U5Q^6(f(qTc807{y#j-V z&1qv~D7!|%LWe!S?FGAm^lu@3)8!rNk2EfalzIfX(C!xpHJ!QnR3kbx4$}%)8`SOQ z3%5>X9+E*(*j*NGBgVj3`>!W8Z$~h4VC2iWjA#QFQidAlllp))SBj9NI>XGIR;v19204un__el>nQlSglH2z|+ZmHZx z>78hs)9|CN?1Zu3IQ`J)O{W0e#ox^%-GjOkb%H_^wjqL)LzdDd)We&VpN<#@%|UcN zKo%~0Id|27S)ld}Fb?lm^&2$5n`SVe~j}0X-q)4JkHV^-2X9kEYEhf?%LM5vWM)5J}X6l;*}h z3$K1sOlCiLhR$BC{1j*&Li?@&?sofT0jfyKHxV}r6VMU}DX7UXvDYMNPBo+gr{utz zVphi>ENK~^Sq}6XvxC%3#;>zPV^4x z-iS$1aTR+>>N7eh8Us56m`O}!d7usMOb7(ay?lv$g2h6V-A142{hVWE{tJ-{osAc9 zh%-Oq1ME5XXG(sRR5o$4ztOSZKW%jQpe8v@ka-~vH=*s5j|sW&U+!ZRA~=C9G2P8C z@h3x4;IrZ{;N{`iohC?;J`JCzeGsO+NSYmD&+$co7EtL_a~_})uO=aRD9GN_f5&p1 zAT~LXwTEq#SjG#}>RL1-oQz-|^Hi4c@R!l)Fmsq7+(e~4joy5_>>PS49-gSy2?t3F zidU9ZK^xr3q9;bD-Lff^Z?Z(C?qP2x6P*x;@CVJG38bJ8Ze~%XzBSmgfVG=$+CwHR zw|1-uV5WoS!Nn45o~XbI!Y`}BN5UC`&lLfGSL#jr2|Y^o94COr&g7)Fx-|}~tTCbY z)vSqUBVj_nJ2ta0`8Zm0(uxBFd^~5W#LFsi5FAipZx>q#P>~$Si;!+tFQtD`5W7)$ zCV1b9Zk%tjNy9D=la33y9l|dxq%%x6mBOWq3QRO6Ve=d)&@B{nEGn`-y(V9 z%4x}qHjiYlY+UuC6IQBlb_>%H219NFU4#(;P_@&?eD?- zyYPbzf@xVY5TPfg^lUVRhy6u4{sN!d?3&9Zpz>3uq=g8+d|>L#pj_aSI?GU`jEKnK zRc!3x#pNmJ#n&dAuf!hf`F3w@Umh zWJ@JT?O|G zP!*u{L{1#uP;>n&z%BXt9NL<47Huy-&&Nf5brNc&Aj7_`OzGDy)TnsxO|^X6T~b+? zTAJY4LZ=23D;{1+SD{jGfWey+%I|R*Dp!!EV$EP&IilWmp8I8k z&bG0-^!y+i$IUp+HmWP#vGP6?NC;%U>E>>HWGJOM>+Ed=B+~EU}HZHJ1u4l3B zPYW&eAz9^vSXowFWb`C%2*@OJDW)gQ;KoV4CnBBtFkC~mAz&OOjPW^k`nM~u{$+g- zXZTI}BQB98IT3an5Oga9cc~Ud`on?^)1ci4D|#?#i-Ha%x0&QT1ZMvO`Fk}k2X+Od zgXnuLbtddK+T!pCdpZ5pf214kkG;oa=&@5wBW2!_)Z^79jdB5?-s{e*FH5=@O%2z`UWabG9d@pf7Nu-NtkJp9uCQoH(2U; zR83HUjz`lXl|=k=Q2&JewAdT}Gl9H3AKoxX0@zc{o4qber9%|qz@x|rYWarTgH+}D11DM6$fum8ElD`rlSbCJGVuo#1 zYr^xu3d-lNp!gieIFkhyXPh9H|E+}Iml;5q#iU#E_zq)~DCq-*|AY>KBg#xpXhtm& z*53@~o3)fSmx#wLRKA}+d4t1@lq5=Wx7sRhsb(*Kcqi}1@s422^0rIx_|FAel9Y+- zOr*Ms96*nN89BQKU~knwOZEsfx(w@X2?h zBZ<1Sr7xtV)WkMjg-G7R5!E<#S5{*)lS2LEQ*zt~r)lO}ESq))GHm!$*1HnqzJZ1M z#b5-8gp0U2hl8?>GviwYn9e?mP!ist$Yo6$o?3m0Hf$XFL^b&jXv&QfOTk)YoDK3< zq`f@NJCvKR10wFYe#{M4ryI{u@#NNrHW(-XVm2f$5F; zw>j zNCxpODwzL*{MLAY{Fmo9=@YEnZ+?W>odtU`XZ@(14vAsIEmr1f{63`mz1z{BzJ`ZQ zd0c+UnUi!wQb`ch5N_Zo)*sEWHD#3t{&d=Fuz@Y}Tu(Q{he+xcwuC;1FcIXwIL5cG z$|5YdnzkP_I?6?12ZMHtfXv@6*cmHFNv1)^@)1FRL!gG-v~9ouCNm+l^sANWX6R6! zXVHf?{)wKONZ~1YgToKhopGg(ALC3`Z-grYy|z$@GvAWlDNn&)`eO4^zVL;8fO6)IZnwPX2ZIJv6R$4URJ>7a6{Gqf z7FwS!-tX6D5&n(ms2`>!O0t5xH%HWNh$W=k3@|1H1#P(=1Q`34yeG%TK7PU@)+Hyv z4u^Q+efsJ!OyxT`XSgA7)hM6y{-bya!k2hfR1wCphPS#+NoT$$)dUnDhO%XcRUO~R zfpxw1$ks3{dOw{9AFK$S^fF3uoXC)Ni87=vMEJAk7;KU}Z)AUd>i&f6Njf{lefA#q zuk*8OY=px=BD~7*F|Hu%_`4s~c55~nbepV$xIHdjsRkw5OczN%^~IAHLe5O5jNS;h z$}3N2z*@FV_6eTPTSQ}5scCF$ei5d!ZNTMP)vz-{jv1xH$a&fn5E;PT4)4%>{n z4jYJtA48u8ML4VR43_4^PE`s3?}jJ`MKG8JiiPXVt`eQdp%udNB4R~`7rU*r(Lwxb z;?RjbbrQ((EgBlVhA}Km%G{q`YX0t;pMmmZIIuTb7$~VEz;94K5Z@7pIdO{x2FJxy zC=SFh@CUdBuF%4~W4FuCU)M+HxRJ03=R^_+R~;xa-$eG9+N5F_|Mf97Gk;TvaOx{g zfuz+>8l6k({IJ?~oKcSlqh5?__8(V5mu>hpH7PE1b}tx}V}4aZ_80GNSGIKPq3%#| z96gLEWAy=`1Woq(S?N!Jc<65YsMCLze z~QiQsXJkzZzOJpdnXq?3k4n8fQ^CmxU zEEhM|N3Q?jt@m-;L!!ER!(L0X>%ypfLR$A1OaJbe;&J@Yvs5azAY| zUmEv+p2!w*+1_7yz+Cm(i`4+lFV}qQyJubEwO=}LNQ%hdwYSSyTWBykubn-b1Fb$k zQ5>%?*%;Q@-n1fK60(dpQqy^Fj>T8ac*Q{Ld-~YR3 z=zCNTo$zyjMBa8h^M>cw-achN|K9tpicBuh>M^_cuj!JA#bCUM&vf_rZN;BImDp^+ zCxu1iX@|XW*$>*kVf*-kA5Ttt<>0FH?KY3V5K#d#lXf`#*+DW&i%32c$lkw z%5hFKfFo6yhy~Rzu0Cx+pL(z`x8_8!|g1{ zfQ;8_s&%~2v_ER78LkPS@)0X-w%urG_^0zOE8oK%Z(3s_rgZ##t@B*{oWT)Z3DDi# z)U3_|8s#hVoQ+#!)7jg0^;!Hk7p>#89WT=zA-pZkyagaO{ifYciSVZNzZ-^REi=0~ z9fHu~s?R<0UT+F~wi+_AgwJiknK#>lmL9zzs||k#2zu*-)4nj$N=H}*$z50#$U)B4 z(Q(MYqHfeG^N-P<&`Wcp#?jA4k?w`~{DG74608Zwy;`wga=(jjo4df!I*j$TL0^tl zGNiv@YLvb{>2vH`o2140wxLN{B8hM{bP)Zs~9l0uZ^8 zfEImDDOD|=%6@P9%?CR#^icmEHQtN$&CP`0b#<G9&59o>F zO2~k>_hgV8bcst%%B;&Fhtr~P)0Mg=M%>iI8E%2u zI=rCoeY(Xc$EG*>6oHW#twbeg(nXXsGqdQnkRwJdydUxKd9yaz^j(|v3LRKD^O=Dn z+wXCwQBrQ^JantgEP0=6Ob(8v%SpmOXK^vtBacpSb2v_kkyePhBZ4KdwPve79F>^g z+65JUD+c?@p^$sbI!lPXOl}*Px}3iM%6E7{sr+S6d5VPPf!>T^`>J~Ww|gB<7=oQF zpBW0RrHC#{92Z(FMS?M;TGEq!&mt_Zzjsup-r~!V@c1Bnvaz6@H1?EZ!NzM>KEfxN ztNvN&NTppV)q*N{cZ*LP9PWcgsxz?OLcp$C$jI(wT9Ws6FMeNeTlIsm)gP8bCwra0 zX+Q3l&lA6TzTd_)eooj)+73Zgy>G{TollZ$B|7Mqqgib)YmdGk6bTQDik%-S+Zdvn zn>+_rNRY$iC~+9*geMHCvcrxnHYmR?2_cgQJc~;xI3&(1zOUgZ7rI|xCR*mdx@GT9 z!seS}@SXZVrMI+Gjj(D&Tg(5=c~j9|H+v8mOH zGnB4>eRsl7PQ8y}+n!cN>`5z*Hk{{(f~!yt%o*EYHokP&F8-@RdPfi;kzat8Ae9#F zEGbe1q#D@FH@HhF2#QZhhcXnQa)NfcehtbzOE}W zHcOAY$qm#QEFK8#`vDPRI>gAOKiJ-7MgLe=MWJnW@X*MR*t(2*%jOfxmVX%{b<9u@ z2Xe_;QU2JtS`*&UmR9in;+*l2H9fzTI6IF&;UZ4!YoMcrJ(nwU91@>UyTdd7Q=6${ zO4HYr9xkt+#EZ=QJG{7FMWiO|tnF0w_G2Y0?o66CbZEv6<=*SX&C4V??wLxWVd~(B z+$ZkT<3aU4>~XHfEpUDckyWODN5qDJdzV1|q|TCynJOx9ia=~Zv#qLv=#IzuwI|hd zAX;2FLbq7BuhjSl=g{%9s9ouC%aaiYBlFomBzd-z=*YG zJO2lBZyi-t7qyQn2olmI4bm;$AuV-iC8VSqX*hr=-Q9TT!vO(BT0*)JID~{qNJ}>o zck#aOy}xgaZ`}L$J%8?T_TFo+HP@WaeCD&(GBnIz&gSH@RDVqTPO~91W4lKDkT4Ff zFfB|cLBwbGydOmG82{by&bITUM)W`;hh$=ex>Qopz6(XxvOowXhTJD`R`Q|p#MP|& z0o#a)?_UO*8SYsRzdkfkzq0j^V~6UrAH=BCWM)B1n2V|=en*!d%TvJ1?~%;HRF{$W zaaWLhozH?NO=gGObs?@&cTr0-2f~B7dc>x(opUj!?zq0=7sLC(vHA^#gRuHAqt%rpA$@&q01wAn)??A?os zIgj%fy@wnWkaGVA!0&u()gc(+$C5~k@sF>r{$ zni?7`S!;XXPbd1c3eRZ$h?(y^B4vr1QPUgsS#k(+qJQ|wcYELS{z4Gk9=mc?^OQ2KlTao-2y#ic0&{|#uX_w%|JZs--NVn#X?r; zibhbLGkJ+;8ILYGEM+Z#dAU4zmTZmvZ)X&joO>)CPFhQk-hW!6oQlFZaW}qnnXFV0m&N)kqAkdlc`b13VO&IwY994{k zLjAr6KO7Q4C5svvJNs|g**oBxcnL|R+clo^7WjvVKXa;G0j|Xr&-i3R_B2}Edzu-~ zb**=H_NpLPal}0>`)u)ld_+EP1&8Anx|D_A80m_m?;MW zU?E>h7R6pD4w89UVbssw(ZNk2_@oWsWsY_@7z0tNiR)pP+q^d4WUQkwn-2q-C-@Ht z{8F-{LnDB*jYGlyd}kwTLwrw{{xz-%Vwh}tf}zEY8^D8T=fr{X923Lut^vmPMUXgZ7Jw?rtVI#4{;R5taAuZF`Zv^K0{sb=hvTXHURa&~eGDCJO)~jd zTaIP-+4$CLgG zj9hqNulg1H(AevqI4VJkzFAZg0Y?8d9@A})H?JU$8AE%W5SngDx}oE~9RTC=Et0K2 z5az0}=O++i8<;deYd7H!y3x2X?bknC+ew99#v@O>6SjBQ`Yig6x z|M5CaiBbD(enfA{Z0S8;WyR91=*TuWj?x+0u`XV``1K^0Vl8&0yx5DL|0GM}XR8Ab zrt%RY;w3bkpTO-g&k!rK-_bG4Xxhc(eJ7S*qNs99suC!oNkXjX&V=e$mtA`eg$@?M zyKeo|#hGgDbdfn7jmx>y3)0w)8Nn7CsT&P;3ePwh<2N*dE=h=U)^wbc+z8`Q#qYCJ z1^R6qm?jX~68EwTH~;YUlEN9mW;>FHIPoQP*mF%|Y>0V_getUC1p-)Bd(eYXVK!e6b3c=Z$g~JbP zI)PfRS90?GML1%JH6lljJafc{Ca#|tpk@5gIDVt=5 z?;IshI3sVmhWI&cP|mK1?5bdm=on&TjvI`0_v4QIjI?$`9Bm#RvN<~FllJ50hBGL| z7Y59Ueqoeb?^Gl^WXnIm%F}8t`b801I6cgRiE*9fPaT78(Am7Ewca6qXNwcz6Kg&$ z76l303+Keza?c7=OS;q0eu{vY@$%vD$6wWwy#3i3OpG|2jV~zm!UD|Hx^d}cO^m-4 zT^$nJY=FZ{l-+?h+h8eyqe_xDW+ z?_$-$Jl=9UX6c&TrL?_Y(LW#1pcM``Xlc_M=h#(~EGrVkxpxj4<4Yae^A_mJ?w07v zjsgdJQ!UA7cb#IXM79MdRyGa^j8gJ2--NH-qlVRVvq`No$EWZR{}@%xL2h6g*yTkO zmJVve@Z`99{}ufo z_}p~(#6vZvtnodxPrk(>%-o#oh~JHVdfHE?Cx-WG>l5oqxA2XvI|BU&c`oh;0CFC1 zWAC$l3`dDu`@00Y&GNn>=4QB0;nDpp_(G?NNRyteop+|4%v}5JJc|Qk*x{J5JqWc0 zHH3U|wFPWiVe|AjA($Il@}i+)Jg_(I*aZ<7z3X=|YfH`E{?_ihD%>_r8au0ai7O=MSz4847}6w)YkO5^c_dUPH1Tj7 zp8FNKEGPaoY~>IhUs;|Xb4eg$8mdZ@4Sfq%(0qP)mO!CfS*!N@r#_02RzfbIs5(3h zxw98iRDxyViehEI71u}~eRxZ{Y>$>Apu)!oZy~ZTe2gdcrfVbKELa&FxJ(cF+tJ)L z<6cD^GhCBjw19!WZEd_-k!>l%^?cRZYDeL}ARyQc*F*CocM9a9(qNYyLANt!W#Cg1 z{V)8ZW55c&7f8-*%?#xu$BTynY^keR9gTbNUj)D30gspbd9%;t6nVBHWY6S#LM)BZT)b4@+4b26CJsR!7S-9gpp>x|qvhy~f+^FNu>5uuovxe_00^PFz1e8g+#6<9V)|$Tj7@r`B7?eJ z0919O8b1LB;bNIt3!ea&82ea>Te+F@MMgR*9(50|aAZoetvd&91LVGjV}@ErH4`g; zGhf{|p3M}VaZXd04>uvrE1|#pyL3>%Y)+9;*30m=fFTzmc?JezIJ74oj0~R`)j61D z8Yc&~#5MB_{^L(!Dm(iK+?fzHJ0H*1M-%91qkirIU<7Ra?LzEM?e_EY%{!GMJZuZ- zsUPE;GAPAruo{PW0eWY?D_w0SdsFuO-Cz0p0r#kyPj3t|WP3;}A4|w9qC6+TOxTp@ zlQnYLkM<{&NwVA@&Ff0m7>{|K)D?QbW-K>gl?Y+Rij2Pb_QP#umHOc^hkU3jsaAq) zDb{kddkOKu8xSfOt0V0p@()x4%{ek5W3q>YRku!s+|a68Q)7A76az zji8o_<)PYRamhD(;b^z5fRo=QeY@pb*CY$la}R4o%kGp2@x>c^&? zg^_Z&vN>zzDs^C@q!IK$_hApyxo${l+bB_BEM&20lJxnp01MICC{tV7 zBaxJ+p6EFZkxHx;=7IFr3%CbM)}^1>U(P272-tS~7UqFv@nC0iCaceHj2?9*IEv}H zRt^ymp`qCltQHS;{AWeCD$>h326yKKN?)r)nJ+O@ydtcuY1=I9*Q&~+gxZ-QCj@5x zu1d+=J|V3UBA;b4p|;S_Ed4C>l>)Y|gX4oGBBLZk`aa($suh8>=OlM!9ZOVF)~Dg2 z6i`N;b&Crvenz&agA~BTZ!_%0{<+O6R`d7Cg)V^>g;*jB@28LLTk>U^nQRXfEcbB3 zaGVa2EcDO+@e?QPz@Z7WQFIIs!UcYAzzx624LY9sU<;3F5*ikTNghz59l@XQMZ9<5 zC8JXRB$UU_rQP|3)hdKx;4PbDEukGiM%@MZ)BAt;#dicohFuhcv(!9rbV|s%2suA1 zOET)%M!P+e3N4vz&wG@L)@=JONd|-Kw@#zl5rWu~gm1ctMN-Q_HGhLelQV02imk?Y zE#> zbgVmnfXE`7^P-1xSHt*78?z-c&U2jgV3}s5T2y64CwBEPWkcZA<4UFFk`J=bF01nN zT8aLtTia`{I5#;?iz^hUN@Kf0!-OxwZN#2;6S#)w17pbN_o&ga)F1W}n3-IsJm9#N zcM5T)^TkfDs&jjl>r?J-MnbT(PndcyCE(o?IHMZ(KmK$}&pryWGQY8{aHjc9J>CBG zLr>0@8s-Q0Nxc%#Qxd16J<*kI7FL$}=;8^>GnT1fVRA^6D?PQ2F7-{vH%i;N<7nD+ z0>z(X=#$I3KJtq0a213MZvEd0il9^lYKmD5N{=td+tt0f?~_cQTr&I{Vu;s~QK)Yw zESH&lpL343=t_X34`=q_?(6>@Oa4ESn1MN3JMZTwBk67vym!yN3^f+@u%+$dD|S<) z?IHxjf#A}vSnyqr6T8b-RNL^+Jro@rddDj}D9;Ak-xa?a{xW+hVp`h?2MC!V8M~UM zim7@Yx_kaSMZeSw_Hyr0y9*7TfKpjnvX$Bw|M#yDt1BE~wJZs%ju1@B`ky9= zQ+J={lyKih`c`p0ZtTU_^DMMVw<|!EJZtxQQ@RaDCHm)!bh*F&;R}3-Ly;n)(PRk- zC92hLAg~onMRy(aXSl)!aLy7q5pRZQiBME9um@1)=bsod1-cT@r|8gIePZBm`GQU(du4UC` z*S|n`QD%C%%r~usOZR8TBxtXDa@u9LmBtU6Z*F-4lH~H6H?+y`740+~S^9l$#ggc> zpI0Dv*Dth(fx2jP5~7Q>)^}>&z@6;afL@uD+qA`_dv?f3HoOqJ&*aVhYO+_buiJ_a zTVPhe-Ak`O#ccX#Q{iL2R2hVNh5H-Z?e~NjRtxWnk4U+Po0&XB273Sa=3*6 zo~du#$njA!HDEJhcH>2r*)9n7%*vO4ul2Tty0_i;3p8K~+;M@G zhHZAMv#|y**vQf^$rz9ZJJ@CFB^=X%LETw5T2<*4hV_oCP04#X{mqh~k?luSt+j63 zaYl6uAMW0VaL4QysN%YeG8^3adP$b~WV^M^b8yF7>b&bqW_>uY=^vmRF236sG?#m3 z`KlP?QU!`H{*J4&Mr%AKUjG!z38~}8 zzfI45w!9dh+@|>(9yHLT(%3Kohr%=KhQid=y*NJ#fu8w#e|bc#x43VZvVPuc`UA-G zZ5G(YsEU^mABeVH<{F#lVi_76bQNOMvW@1->H|;WXm|FeEu-cGze55+fqf^p6?<~b z^s}YHS)J1y*b^er(+YHnT&9rCNX(Qd@D_h*0}1(F)jGevWzzW#Z@XHZRiAVIc_H^g zi~5?N?P7;kzv5TT)!K=s{ZwjycQNkjB_>X+lM}cTfwca3edBbUrN&ghchMgN-LANZ zPP?yo3ujBr?)K+j2ej%d5W2?8^dYnPa4q}J(13y7nYNMlZdRMmOm(UQ4Rm=1On=0O9k$+ky`cK+ z57_O~o8zUPG=tb-ewOb!jepiofQe*@xP9|<071|osz{dsNx*>4otbrYoZdEn(AiS% zGBYvR5;*-!vUT-TJiXG8-@83&ZK}~-oQ&tyXD@>@zwkme4{p<$@u`I$^W$RmuSc#% z$`xZwe$@IIx(}+W4<~15f2n)`N=v@K3sNpGAKuOY$1@-B>otfoKU)r__Recw9{?Bn zX{%$kJiXGS{&?*KSE>JHv%Pw6QY8owSvIx9Ig;Lr4s$gnY55F_HrM@M8ybw|u{5{5 zEwi%o-1zPY1JEs{zl(MIJh~zh=V{$)lR-fM{8Y7)^1w%xS5l;Tj^AlpjEygo9~a*s z#e?4bcORR9JmNh%PF#-KKjIhTfrLTsuM*)L)f#sqoB#j)RDTZSnRhy8faAhXo9ob` zZNBe0evtHD%Q+Q2A{#MnZhrkdy;DoVaNSctsD44D)@`7M91Jss`0i!CT)6dhFzCGo z-4{T`khw5EH7*o%5VboPjt3KjzrGnKal$4Q{QhD3$2_0Q(jl7aSE@MGj;roh!fK6n zhZCE^>M+sT&vwTfW0yaAAWd%P5nAc5gjnZX7J$g7_#Izuqm`k~;74C-W8v?+wpoJp zPJ!#Y0cW&;W&*%D7rH(K3^Dq4JIEb`q|7$xaQ!jREl6L@1tG<}Z#-9+aVb2|VDnvJ zl;I|xdQ++2?jFmTIse0>GsVtW%^@=sy~%QNw)eyC1#n-P^(}Ety}hP^b4LS|ASG({ zn_vxy?F@_Us}Ta<*pTvM+Sq-#h>{r;+r0*k*C?4Ge=olD0@t9v=JfIPy?1zf3ot3Z z%dF4PG!Wavu7-bEz7oB&k*L(|9`%=>8XQ0zPlju>-7c}@KBvw^_4J%>{VTXHetH=> zMhANV3=iQ+?tkqQ*bA{eAG?8xC5zc(?ZN&Al?V?+K!>t#5#Hf7T)?3bSsKs*dPRh(R{*gDabXK)CRlFXHAYcHQh}0c5SD%Ti zbYJ4^ilb8rS}(D=<dj`}+VX=?h&R^WpA1RJ6vC?R6mGb`DgugHiP@k&p1AWb8pCQK8banXZ z?BKX<$FE79t7P0T#04(qT`vmos<-($PSu85vHS~9> zmJVF_#Ht&(iqVu>Pwp^9@y#7$f2X+uD-a-LN|0GLBdHZAt+WqUeDgtx-BaD*Q>?WnKAQq6CxPa83LgV!N;BFc zwjV8fbPGr?-1JIg)Nc2s%gwi78V#P)2;^=hH4bG@i#qIH6_-zq=RGSy8m&Wb>%@Vq z1e^wG9f-!XJN06ZdUG(uqHFTSi`v!( z;chEKF*^iSIWgXMkvR}azlGr4Zat~(1pcP zt=0f$RD*^x|Na5NLH&=;xnJ`_(4ugaXcv#+rcN`B{)$Md)*t;k9Cf;O6N0Z>&sz3c z&c6q7GUEV!UayqUZ)}{%=7J+=6mFmA4>kpy-?&jU^Au=VX3!7K%f|KhPX)B2-BSjr zLk-?S+|UC$yDwEqa0@Xmh@)KW9Pq9wj*_T{>rtK9*!l2IHN#ymi>jd4M1Xky@`|;1&{3xxh<4i7v9_N2_ z3j)8fF+pwCkirV|sMazeY6o0Oq8ABlLpA*ooX(R)N}34Ecj@Onn3tzZ1ooj_&WcC0 zR_B-yImICxF{WME($S0dg5u>E0anBlD`)`F+Z8-JYxZD2da>8QsOECv{MhEVGE8Ad zJaewmcBjPY%ewc?hAHj96{@R9R67u=cw3tk#bOWEqoJ$&$k{q&;0h5f}2ULq`&i3QH z-vvsA#=>fuJ=B4i;Zkp{M#th^|482)ZH&FHq!w-+5?j_T8rm^#wzN8H4vjv&`T0Jx zEg-zm2dab+<*L1EoG7m%*MTfg`IH%S^(oe=OCvz8rpvP z%Ku`J=l95P2$@n)dq`M+h11dCM>_8AzJ1=;hU+8Y+An@pGaa4nx*D^CA>%Ey8%aua z7%)EY-yWeQrM2sWpHcbTdnZRe;r9WoY1)v&${?7mdhJHWZT?a~XF{gX?55-W*u{zR zKACwIL7l;?*p~=&BQ5n@>eP(t8rmf7cHRZee>p* z?9nyfHHP=ixl7^E;Pk69b{t{#+Y!yqD-9UG=dq4s%j>h4nJ<(^*6I3a=&u4r+uCj+ zx84W5VbC&qQ`RAC_Cm9^N9^oDK#ufaM@Xo?!=g?`Spu!|5QC38n=%o}P@{nI8+Snq z&s_MizTd9G1+ie-OAL1Nw5Pvy<^|L;(G>_qv|?!ZNi+CVb!0l;&W3cE4i@gEZ}Q}= zcnoK_f#G{WKH|EmP)WmI5-@g%K-!deXNgl?qiwh$joOTMjj9ph`7d61KIgSZnYbwk zE?}NBW#tjro<15!06#X<-~>R>Ln4wL5Fp=;`5fPQEL^zw*bUIh>hfnx)INJHD+T10 z+*uOuRE9id)8_@of3tz(Zdjh+FjEQy*#|XFp-(=I?|wWRB^%6cn@xe@Dpx*q4oL{Z#SV4cvhjbSZFjEKW7q`Eb3pVJ+)3gVF{4%4AX_b+og6PU1zh zmk4{PFLoN3`mFifUAKF;>AuU1ZOcbRat4rUrKT8pdtq#*N}z=n$9*WI`D|X z^{?$PC+Uw;-~?zksT8I1Ee8~mo$|F@Z-LO+Xm%Dvi<%6}QDpMW(m0<*;B((!!YH_? zP(S3OU+)Y_8o{vfPR9-!{Q+t*L#fQ3+FtnAGiqHSQy?-tEUt?X@2+`@W;Qj#k!`4y zcz!Tm&C7ZXU_^id13qB2z)Xb6O1gtPY0FU3YY8}0uf=N@G42bQ0U&@veR+MW|G>1IW1F0g2p7+I# za&XH~3~HT|PjQPbj)A^v!LOHwaQ?@b*mwAoJMj=^ zlqgWyRbND^vPa+~7tCuZbwn!LGkKRvE$bNHg&-l-&SXJb96$u(q#s0VbXbQd0hy7q zVhUwavHGXyiYP@DdHLT89Sg64w#HI7M@h_-!6my6=+B$M>Dd|qKDcLIFo#gZKR%yj z^U(4p#oipBpEULd1dUL6hg8crqR=#DM zvQxmdm$Lv2tkvurEje(2=u5%MFkzItO;!T3fcKR4yo{`03&s3-YdX|D3$rQKkCCjs zbh>)>!e#&~kAr>hAdf0bYGRKi5S14_*iZ3`QuR@p zNK1!2M;{}(IrZ=%C4r50&2ByJ5*;jl%IqBx8ZsvQZPj59w#ruAE?870OSf8-uy6xN zsyyF(CwhDdLb`TBk+@+_``=JQOv^!dwJ5DheT9`q7u#EMMzNe=q&pWHi&JA1<- z@e|$D>&DKaIeowubs~Z9m(vCx4~#I&H-A?yZbE(1JD3M1mb9jmk!x63`@G9x9YdrH zYaO|TiDvW`LYZx}B*GSx|AZXo!Yey2&jq%DzEPk?28fk6OxRKEvpq8)31h{iO^bA& zeUdu;GJ8Pb&$75Z2U)(?kg0| zfGT(^F$>#|%+0R+!FCJq7OI!^kCsIkqbsqCa~bJop?^X$!jm6wEYXH zmv%cR-9+@u3ZO@DDC{X+fI{GfGtU5gQ|4Hb2oW4;mjywLjdI6^Ddx;C*!}tjY+gG9 zQaEp}ru!fRH-KGN%ltblTyHZ1C$CnLq6X}wtzPpJy{YRfMqHF46V7XTDA-AX<%hb~ zj|N`)Z_oA_oG|W(K`B1;KKuCyE`OllkX*0MfZtdDEu2MRZe)_s%=hAnwqdq>BpZ{R z)a19Sx85k2l2ON#TJbp$j^N;La9teAxfx(%rh)U=u)`JvoJFR6mVv0a6n{@*br2j? zqz76*;jyi^oJeX0Y-HoZ+FN=1dlEn~XGd$R?ekz7$(ay3B%K|64~)xmbE!}?-HK9% zE1ZkCOTtyf&x8p*Dmd@D1;YB(8AQ$nv}PKSz=`IRrwWB|Xx0`Qb1~zDhj(|skao4d+s@cFmGkYc^5WIja|x}-g=6$Np#qh;al{9Y|AwX?PG){7h_ z&6106%N-%h@bt=FMr0U%SC3_fh~EiVT%{^L5U(L!OOvI*dKC$N4Yqi@Z+`fsC#+cL z3YbrMt@=&N^l~85lW*Bmby17JI;4*?=@@KmDx2`gC`^KND^@FdDsPevLRNUoCY)k` zI}>v7;f3^Mgx`P7PK%evI-!q*ASiTM{W7koC9OX;RWDa{^%F=)bUzU3gE{O;U+qw2dd~9c|qp`iwRTanDXS=W1a)g)?36;`sb&fcPz2 zpPNzuBTI*R^W{7mZF`u9$Pz}S6OMLHx%&R=6ePzE&~n?qCUV5C8PcOtnPhm-m;P6h zCl_n_OeK-=NokHoL)!C7H!QJ<@dVoj@bI4YXoe_q76s$GcJio2d2fG{21VMA zUm&jd7#O|o0EfOEu+hB~L!H%2U({(P!U)7nFcW;UyY0^r9oz}W?Pa{ z9J#ZcyU69EyQ-gw2uvSR)($U?E%mXr7c$#+JqE@0|NgD}9wH6Y$!I25qGY&AR$9W) z%iWppj$hP7U~d2`P*xwKgr3e$LebCthI#^^xYBX+(AKT~J1atr`&13ZS>3FPpmT18 zL8{vJH`c@0kToxN7ybt67vHd7oAc-C5)cRFsa>q`jEkHsHTJCOJFU}0f2FS6-M@8( z=u9NB4}lEUujA8rM(vhZIl4`r6LUT0i)C-J<1mtPvU5mR(7D6}_I&t^AGnQ3uxf!@ zivfU~XN+;U>4J_gd4As|lbv6#LPZvhBVOO;D|NnFnB@&PJ#qodj~?61dGFNjd=IC& zMZ@9|_Us!2_-lVIJFx5vjq4-Fa8RK4zva|&PX^}~%~bmp#ac(^MWjO$3FkBVQ(X7% z;S%5J(^WGzQY~jtf(~M(+1qJvE~=ukOk+1b+#GXUv3pq!duZp9q+ax9a@|GUlVNzb zi)R(uan;0>$W|(Z*1rjCSs|B4xuSzn2^MN@pbFI1ZLW={I^-$%F3AdulX|6O=x?4y454ghCn^oPnpwl96m zI)EuBaluNE$xmAxKG8F5soKtby|>YBBI?0fDA0MB9LshF0tE)h2%dqn*0JV)ucYv9Jif))KGYmE;cC|KM**fzSPs7 z;52E@(8knahwm50;W6WgIiuR-Uu#ppaeFXZ}oW*w3XdU|!A4d$E~eNZs( z)>8*1D1w}kmZEJ*lSz}wSylDzPCr!~*POXj4l=TrMcWA$hxHg7*`a+WT6gMT5bMBP z;PwB|1J@<@kUOqL#Hx!izr=joyF|Q|-fFUA`o*1N$ZDagSXhe5>jzFx7g?^}iq7`( ztkIYE3(F>3j*ofB_Fq5dVJeB(c$7e}dOQ)n?y8uLS}{mW*@E(|oXi?Pfdk)OfviP9&NeU7Ug2SCPgItyuweTiTi*$h zOd7tncULIRgn#eQ(ps2M;>Nzqui6*HZk zEB0I>(cpkBmgYHAJEpkC6_bqb^xKTpI7=c`ldq5|?L^(}BUkl~4%faC!4b=c=}TUZ z=C_Z%nn$5*_#^wLBY{y;gMG9Wft+s1=Lt zmY5EaduV7`oOd2_uDVP@KqjQ4b}K*daU^?%pq6=z9`bmHr6#WX)dbJ98rmH^zyVCq zwpW>chrxvSR)nXUr!Fr^X0}J4oj~c^8WsvGzQqstU$I_y=&>00gdcH2Qk<+`TU_%ql)PoZr zcT6l3-DH_Mmwnt<5D_W7SNk>pH>6zgJY_!gRRp1{mei{17iW@R8L>f!VjdpRWshO3 z+)hHlmxO`izS4tT>bWGv8f1*cJp8+%kXk7f;fwLZLquz*$ctZ|%h~S=f)wPppo9dT z1MikmncqVxwWTl8`ts~6hb-J#+TqZaeY@1U+Eb;wV4$+7lO-NoxtNPZN#o*&P=+h% zWyixxGR!>RSWrD84-F?!T8F$_F^s;Jefb_q2~%um#Kxr)q@J@UhG2+bfOEXGxP+YI z6xEpMh|Zdx*Bk7ll1C;jVg z5xCW2XdsHg`@&T0*_@CH>+vC-P_?=4?N4bcRwLq1s5oRA^wv9$2D&n|moQjKyQ`moHN4 zOBi4g(fDST!|>m$I%R}fuEW{gFHFFSLx@|aLIbV}rJ1K0Ron6CTj*vvwvFOM{wgZ7 zOm&qBtVM+@9Jjb{rT{3;03LZDwd!7svW4L|>%^_{AvMBp+I5n=ZY2x}rGQB%rBZ~0 zRr~_Pop7Q4f~c6meX|DniGz!thwm^T>hYl zFG1Io36_N=e-Zc4}rU@q_kLprs@uhluN7|9ti&nSvw-Jw|7 z-WcO<&XnaKa1=pF};7wLNCFgKA{Vq zwjWdDkL*PALTZaw3wqcMJ+XFkQLi_9ATL;xi=yrC4^0{cft}^_fC%pqMZ^JE^o@L9Q`Y897I~_>X>k0V%s14Hz*CQY-W#Q4e z54gZq38BYGzU1vsqaHt+aK0B5B})vO8}x>e$(L(TIPx&AvZb+n8?8EhrnxAjI842c zOnR1hxI`jS^3;9wXVXN5xzXN_&iX9}k3o6bBSa!wtT{{}E7h{~R+s-1x_xGv*aq<% zYQD?0Z=?G5pXlNOE4W6E*G<{t;fNBGt;b2 z6MoD-U+o0aHxc%@*5AkkwG}9~^_E)oD$=z9l6L_A-5H#Bw?@e}P5nA#aTMNw+I~j_ zJ;e>lrbCKMpBuf6*yPGGP{vfO86sOVm=eO!q9C^5{0FqCw?<`wlGO`Pr> zH)mMmC@`#(Ie>YTG0ihQKd~GCM$PC>@aH>b1I?nl)AVVzEiz1}MK#yxHUEs64FTG^ zM6!TR_`hn!6KsK9P-t>k6UI@l^Iw@7A~N6u;CFM9F^qV5p33jC#1*VRgP+BnpjRY7 zT%x(r?@(CsPbkag^Kb#IqKg8bvp+Vq^IyeJmPEOl@~G_FrjGB!)|mcL6K=pt38Zk8 z{;0}%1nPK2pm_1{*u4@6P9Jjf-C-b+5v>y=B08%@=LqH_D?Y<18-}+e+Wi6g$72Xc zbJJX0p0fABuk2k?(hd*3L6QJOtEwC^5`LhB=4O|l_!LDNR1&&qDna#>bgv=B4((^x zFc2G|y63DRk+8s%JH9&d>{$E0>KD@SK>>XW7CY#|DARSqbvVtW^XfTRANg{~T1phF zK1R~}s;Ff1IeQ}mY4+G63jRmjk4uJ`DwN+}@F|;Q#E8^~EP^zr%Xw9ij##97B=lT2 z5^pEE;2R;fu66Ie_=QR<4%+}g(z|ubo@5xBJePw`ron&x-A`jzf_|t?; zxve~~wdwYA{ZCn#M{5mf#5P{eGkw*YO)Cz77)N|XLfJdtYTik%e8SK8L$IRg~3)lX++k^mAf#gHTaEf%A#q{*q*sL9!%Svfr zq<5Ornt`X-qG1ar56*}nNN=pSJdLhjO1AW$84L7ab<`cEHZuJ9lYC}v*QT7(#@pC; zMJiJVRXIGCL?#UI>GdP+0q0egW?V)@k=DA@EEl(3?^v%l&-a^yG+LYT+Xea}0slC* z`ZsmUb}v?1Q9r8I2py=(rx0t>%;vpu(YsUB5+Fq^5Y>Ahq>x6GwN=`Y4$PEmU-`4~x1l9)!3I8( zCh!i8`siYY&QQVz^0*C?VvIK@*H?8s#y|D4ic|XjBIZoi^#4~_LYeiU!{OyEy>I6yVOQgB4=ABiT$ zJb-O!%920LKaNoCP48`~QmX!)$f(`m{yp$XSzrFpYTh!`kTLUAJVldOun+D_^1TB} zv1)C3ZoFwfPBOtd4A$Njzxi2vCN=3i8Bm5N?8#lEAyYUtcvZzt;cZF#d@W#td4pAt zUDwAWC72>awSf60``5lPLrPV2k~G{3<>8TGzLlW0z+QH2!dY$hrFl6OPm282 zJbS7%5^;^#Wnu()e11#uF27~9&0?k64(=l)*zDrPK|_1zeUoJ6Ks)N^6JYByGRt%E&dG;39A{3C(B6+Y=KtcPo-R}RW5M8m+j&R zcEA;Onb?e#{8n^W$6vmEQFv_X(VUK#x9?Mxn=9WNAOB#PPK;8VNjo41Q;O++H9fOU z^Kyuai3H3ZMHh2aw5$g{F1(twU-4k=M=9fnGJ*m$%Me}-5*TVjlB z^NY?AAKpqhyxrRtT1GT^bcjd`HrUh>WWULLMaVt~KT#=hGd*B~g|u#MT(Ks!7LOBB z%~Gmy7GSt(N!4C*n-JL`#!AF&LuGQrPlm*{yt*=C&zS$5jlV?rDX#C-=(LT8BemXt z{QN|XdeEW*hfFcoi;r)2Rbl5IZy7bed)KG1S@Qx77ZyfrAvfl^LrkgIk-hgAgU>MW z<+SL8Iu+s?aKk75ytGka_#Kcryp9-?T(wIJ?wqy{o-_9{{_&X4_XSx8ZYpzbk-8VG z!LB!b@V@WZeE~nTqOvxC#3J5Mvm2S^;f(`(Y|t(@J+>SBgB)S0;i^#TV0uL+UN5j) zELSe4iRYbou(CrQV>hIElq)bnu!!=n(8q zN(afa3g)w=A!P{;u)D-|hT2N&vJMw^efR06TcfIqt4N%#%v=jAY!)0G3cVFmAEMGh z`xxEFV1IunX~ZUmN1{3G@||k1^)rs+QuVBxQSDp#S&S~yhuYp7Q$1vHXM`Wuj6IrE za>@tA{@w|ADN2wDxeDqELhKN-=-g2DZ+!q|GMp@Ny{yjLbtBICO_&B>Rjv}0P}AXx z`C#~+rAmmn6_6#+s z!4z@+t@fE@e}^xQvYz8jH{f9pzcHjMXjLjcuW9WUs7yatXdX2;S#r$Pz!KsgRCHg~ zX*D{?%IgswLFCNxd^>|gC$8x{W^`YGUJJHwy#y8CM|XlL)>=vEU-ADi8bapye@{ zZU|)igW8JJx=w37AKrQ_cW7ed2($e1{Bd~hwYta@SJAVuIstvVYi+~VpDDR_*1&!R zU{8%43u{4QAOjJ7eV(;Eg$J}wQBbR)wh5>goyG#uY)jOS-$HySp2tMY;r}Tj?$d z>F(|Z>23rB>F#cUckw&V^ZWhz&O76b^Wp5-bI$I)d)IYei*#w+CCwl4kvC(OZr30H z`Zx9)dAIrP#M0PF10{hBBuJKs2av3ZU1ifUe{GgrWbsUbr2Ww~bj6NBE>7o_=m~~= zf5IOj^gp>?`TTRAFS!aZ*Aty}hVla)oXV5>G}$qInRdHP2`%;k_0Os--6fi6`+{k( z2lZ5Iu%g9Z_WBTm2nS0C-Bi4AQWez}JAeg7njFZp=yVH{a!@yh>?@eXUIj#96}cBD zab%O!;c^(4ShfAB0&fk`knXFo5`vj&6yx8z2|HlRVs#gs=e=2wiqfc8a&Ii?&hfij z*A)z+{|?{P|C%2sEpy0A*U~8oMzbEOaj@d0zJ+CIbNaPNzP;e)bn7%{GTk6=Sx%PV zE^Ijhr<6n!6gLX=O?SiJ1N4p@!~(-0rp@%eB$URYGW`0Ppm!Eim^AIg5Kr0|EKz|> z?^qu(Ed*jd8WLT6s*$aP6-FiQoRWso^jOFydo2^7g;sT`f$@i28d6p)B&o=*TKX%r zz4Uq49v)(?iaAH90#2;j=-mEvHWUEmP$TCQ;Csz(?{lqZ7qURsN7f!|VBTsI}e!LL!a=x=mExBAMgZ*C|v{5Gb)^*g0| zansZ3Xgh#Jots#_b(BDM8Htl=BqkYi@)|@{E+JR%f=hz8A!*3&t~!E$OCB4Io?m%4 zJR1GuRGg7ImG&wCjXFZnw(06Rhv{!ZgR1FsCDH$WfQP`Shaen+!cb#0Ruy)pTJjkH z2(Eqs^@2tYC9^d#)}Cc6)m{LW3M=bwArPM=U(3hXRgnL#D~tRMbhWERKDYA;uhebh z4owFNV$wR&+7APja^2Ne9V{iis%d+a({cW(nQD#U51Ud*hohDcO`qa^Gp@&SQ<|gl zY(N+cHO|5f_3&@O);^y*9ZNpDC(syq2@_v0c?FKJ$!H@-Ku$V)Y`_$1l=6rc+k!P-+}Bx$sy*QP z?S?)81DM#c7>cmI)^;`TD)s1e)SbS?+sf)+)2ok%3%}8B$O04ah4mE3;{Qis~J30Cqc)`vvaGvT^oXp~P^(Z^}2`I4m-y+@0GB#FlS`h1t& z<9LpHmklYW7&S)3QNZwvmdBJqHH8K}c_{3tjFQPX<3y~#mDaBHrZYJ-c8&~@ zO@<*W_?{qRd+Bu7jvV+9mfz!We*qdNU5rY3y>~1PRvg^$89CTni(hqDxd=tzM}uJ< zUzx9sZsydhB@Py3m1XU=#@{-MD_j&2#8GB)pKB`0Q`I@>BV?74r$wRf?5b?jiK-?T z-q}eq$wr@9ip(-zy+2D3$?H_XONa$kxW{6tI@*-o1J^d@W;i`ENmSRbG?2Fr6LFN{ zv_+t&oB}*$~P-nNAjXn;n~+kFYVj4>%%TbmY@s_o*VPZAzc+$Rd6m% z$#Guw#0{Ll%b=8#>7rDFa}<(S?Q2pXW5bw|F%-y4z(IUWh;{^wUN6 z#6=S5=f*_KZl%r$46KILh#b^5f1eR;Lb^B-=K}qZLi6G?Hmn;v*q{B^E7orud?x2hHt<1u#a)nG7qW zoIAcRl$#N8NZy-}4zNVueO-Jt(SyP->U9M0xd{sEfo3-PfuW_D<_>BhrzN<;WJau7 zYWgYPzRbY9q$wqBJweTrl{=ZGV~8j2PP=|%xUK#+^_i?e3_Pw+yJfp`TB`_f zMw^)YyMgJH>Or!(*$iwyHd5ikkS)|*+-%=@m+Dr4Ye*bDoeJ+=m3v_@|KD#yMHCpa zfu1rqO!$AI4VQaHq?&0~!+w!4ZEJ!f4p88TiW5lZv&aDlg&KDClclh7l;aSZx}wW% zy#-=drlaTkcmkzKYq=i^)e1?uU9$%}GZi5F`@#&gnWj46k%60=hP(ETh7n$eHw&wf zWq}guK7t1w#Y;7#LBS&2;n%1F3dj6}NotKn=0t5f_1L65mshD+UsL+~wP8;X4%YTz zfUhLnEbkf6BK0#oe0wf}n@L5OWHg`jlby=SL?kcYw$wTBbA4nhRi|YD{YFSnkVWM| zYhLc4qn;||5WI`EQkbbE96N(Ll>GfopiJ7F#tjhLB;$dCy(H8P)t010MW@X79mS~B zS=uq5C#cH&3hvDJJ}yqVq~$Zr7a7mGVKoE_7ZGH(+hxHbefU6xOj{<`;=sDp#Z@i7 zbP7xgEwxj=v-|uRG&pimfxIyDlIe}q`gf5RFrYG?=4%J zK`#BBgH|LN`O7G6zB28qQzdj&0_uaT>~$5Z)r~(e4o5mC_{1+U z*YoUZPh35?Jj)L)9hv^w1I}I*^=(#(&Cc!Qht6F!AzpM@{Ls7M*#7xN7T6!^N<2i@ zA=z$cDEaH!u@ie>N)}WK?QrLOMH=cdm-!w;W(=qDCxX?;etv}?b?3Wwj9N@CMEw^m zRkjz12+dd1b!OB{;#S7;1BFAPSc%$5NhgA3w8Xl2s}W0BJwm?!Vy7UUQphD!=9*ha z=`>Ps$@r2HQqxRRghqM`k+H2eN1JltwzSb`%qkDNsVAlT3Q9%2W}qdu2}y|pJOq>t zi)pK>^n2a|vH*&{(4$Le$t5G=Qwx0~RKV5zC*=|PSaV2MD9$#=>NPpm#SQ!>|6U!E z62CwMqePKjwT9?nju=b9>fslmVi3n~@!46Ow=~APhJo#<+2oJ)Sg~WLpOjEe1 zJF1d;*#iIA1p$E-+Rki;#bTXahub~+Ee3Q>e|P{ze3xJ#g#?!CzZreBc1^ET9nw~3H>q7!1l0Hj9-pL(nQY2DYeSZz%&pUZ@-OXUiH z;>h`B-n~B8G@Y=%!I`wU`OVs|uVH!j!pVkJfu)az%jiaKmACy<$l`+-%O25AU=b)w z5nXN~bCA=GX7>gdRC7|u8vC9KB$GER8wqzo%19uHtb7uu{Y%P97=S{YLhgaa8Ijf4 zb7TmcwvTMeB(#uY(_O$e9qA=w&<*0sM2L9vU2^jEUngLb!d@935O`$bSvUY>XB$ZB zr+Jg+&)Qp@6JlITf1CQ?e^*_-v7A7=D429pt$jNq zT_eW8WJkm~3PEK|6&VS4UX&;ERz=EzYgu*yuo`UxGzD;b=6_>N;Ecg2^?%6Z9s zxeP3keYC62g3P?KM*y%|$41H?mE=yFf3G#{-hCwnD-aNzgQ2G%r#QW>3KP29<>kf$ z%>Y983AEf3`CmW{!iPbm`-CQ zqXQ&QGZY{{VzIeKtkoPyER`$IjSOw1HYaZo?u^}C%@nq=73Kf;idJ$dPw|ddP5I~CYpIJPM=+mKN zL+L@4wT|*VIz`FdI(`j)0YI&JCS%I1P6Ksd2Pkh}Y(TelXowf|(aWv=7Zw^^cVkJi zb^Ap}tk~>{n}sm{-?f))765jmzieAwfGcAF{(oUr0Q&{pu+hM%==oV?f!YGfi&PCr zsJ9V-^IO~<$F5GeGk<($7@Xk!-`&}tZ!dwLh?_5$GS}4eF-4L#z)sV&qYpqISaeBe&zNYy1(Geh4$lz(~ z8Co1q*v1DkWS?5CCo(6n8BO$`0ElXYTKNMX~c)6@^VJe>| za!d{PUYOwXCqU&O)0coW9y+HX0@D0ySW(VXo3<3z7U5iva&e z+BLUL;Bv5=3gDrcS?H+J>N{enG4GnyEpIVg6X_LQ-hKUifL z*u>Bx^OOn9bS1!ToNXbC;i61&-Nc19%^>OswffY(>HoO4{DQ3ew`xGj^d%>kvhpMh zT{2neV7TL*uZjF}nwVPbxWd=eD0uW4_G!+Z-Q@ck-k;k5PDG*v=} zs!|9VkOAJ@`gYkNOcusT1tuA+;$ls_Ugx9euzNkYK^aHIDsQKh%Gw>qlr)H0MH#uX z3^*tu#gtxs>Ezvd>op)Fh$>8H91#qI|1_n{{wJ(g%4i5Q7KYce?Mp}ABU|j$~Wr^cXDv_-K86Y`~N+AlPi|!ks zSfnDePapGjR{Go(qKVc`8OJCU<+~bl!*6vZ1o*ZNq!^IjY|W}N{7x*xMj^UAsTwdGOEZS zV&Aw8(nO1`Ci75n9EFPM19E2(-oaJ+5!m^?$^L5CUAw2I3iY`!ZX~?ptcU`+Z?dT3 zEWnf2Tk}2#pR-dYHz<|T8W;YBn3DU$5Q%PEFf|v3VpX>}kA@=Wq!7BN%)Lp(?`0;~ z?lzcY%{Q$3;e7mYnn@WkcVV0$>1s#$5Xr<%0ps4pPrP{LdEXOqK_cF z{afPsri(-c5XXb7q$YdVvr8P#x{N2bgv=0B86Wx#eKA{lNuzHeGic!r*X1<{ct7)1 zO_)_C61KNo)n~vUzmHT)XUo|C!?x(+*QfSX5nvOO zY&;{_`gWqUr`1X=S^(^(kbxY#)-~Yc*Vi^XNbLh$dcOYN#i~ZxzMgQs=!vyPm;Hq> z0(I*mMieT+TypPXvcE4FTsrP`0CY9`ll8`YE_r7G24z!a2MQ@{jsYs6-SpI~K0?OS z>z{d0;tFBEWw-uk0RWH7f@=5=;{skrJ^&!+gS5M>XjWZ+PQDC4-|X~}^m2Uxg^XDi zb$8JNsn-heQy@eu1Xoz%UkOe$_-v`o3REhjiGwGg688qL5R1W?@B z7c3%QFky!=;uZJUD2=SwY`F7lfxJITvg{usIFh+G)7(+G}0;BE@oP$G}Vx zeaX&8wH~;7v?#tA^Kw)q(6(f>VaGt^62spaz?KOhQ|f8NN#96#%fNyEjaH1TLd6#z z1`F=T!hDZBK@p{8LgFdUpW6`UeD%&~O?N8PqH6Ja>X77s+N-wQPK`r4kH zT~~hxSR(H=&5#0PfNB1u^DPr5y0NzQ$CN0AVg>)~{UUY4$9c-QEzTH(fkYITAT%;& z+EWxB*~si^T#M0+So^eBvMjrpyH^1xj3?|JGMKilKRTB|emj}vE`LuI7w|P*1p-#G z#Fq*zXT){DEL?9H90pEKFiX$%Ms&2{^~1bMN*7ITDS4^B7`&C{RA@Go*1YFRQfercw;kUr&*`V! zacXw`-{MOz zC_Q_!d(IkJsqR*$v0nC`OO1>~D;C|RsbB{uuiza`zEG=Bq{unWU;zEfFv?())L{~o zqhg-K>$6wD1o0R5+yH%g7XxkN6VSHBLp^~s8&pf?Ers}z-Vwm_vmG3A zItoijRKjLa^vsK{bk}4_RXhMBR_gJSbNVj7F*WgBS9g*+%mHtZu^c}Enm3qnarOT0SCy%W7%-a z+`m`!!OfMC3=nbd4vd=UG*;3vayS4=H8UKX;$!zh-;fIE9{?RaC?$BI!vRWEL;_+X z_4P7{)PYnzR_JE_$n?>&%S7qh2m(&R^mr3NYMs6tWB=Lzo^R8%)>pLAAN34)7EGVY z0clvJ+k>9Y$&thwfb3q|rs?VafH%=mzSTa|R?O+rAT!g6UcYMlVexa@ zLH|qNHPI43Xy=uj7euFbCj-n<#kn8$LA6PUTAE#%s31C3ju$vk1X$GzQ?mkJX3UfP z!77*K%DDa(p7P#ecOr{GR^zg*4GB!tOIY237whPD(o0q&uDV(?){SwBSlzksciYXg zoTPG)r#qnUtpC0RC>6xGy=KkTavHI4lS{`OMJ?FtG>=JCBVM7y+*^ZckODh_qc<CQ9%;SF^gaWz!>H819RHr_%U<-Q5Q8&ZnlREw!CwerD8d*OtuOS5D=HqTB}v zQ?g%UH;$LQ;M*ePY%R5_*SGs{Sc$y$SInNK2qM?*0VzGlit}9a=%VeSlP$M8@kMy9 za4|SoWfDKD7l3sROa}^xQXf8nLtNN^*9$9k@b`4wr^& zq~kM~j4!Im^!Dr=4W9wfSvmJk%>~VjakH^-T( z_@MH+)ncJpzJa}Nr1@x!=s~wQC*hk$o%6KKf$fqv@MaS#n)3ce30~mmp*FGX7E*(I zKA4VJ>(yK8T^vS2g=yZ08c5o#gX4&5ne^LD`t`sPH)z;`#=JXc9ano^{y9+4kS_<&p%9##aPZMTH_4UVF6?{dwE~2Ta-Ab&hRuR;;vwvM&AaBQ;=` z!y79|f-!dAsO{^eo0CiDz5rR22coBj&l__w3=`5P+^0eZt&zWU>YY};9QgL?rPwZN zb=nGCAn@S-0)W*(mZm1Rp-alzuV71N=NPw6W3@d|Bzk&Yd^q2sEq7QnGDShlL?vM( zA^8@V0~-M|S|jw9r1Cw->PHA>*m~(zcjCbL-V1yKPf=gnV50GE))4u%Flo8p-rLC! zQt`{|4I4URtWMu|5;eDobmNKsQr$9)VS6>~vF=Kl?F#Ias+TC#HM^WFFWp}^TrV#@ zEbgpyjM;x=;Sr-du5%G=e|``wF10EwwkoyyeAMA!y>wr{%&^$?`KW%y`VY#}T0_S( zncz=5;-Z3jGFILeJ11#rEvWiL`aybq9StS5*6Pa2+}2NevXZJgRMLTo2e_PZ37TE| zp>vrynu*`PPtWqNmRptT&p}E@M5iqtAG9`oGD**iW=Wbc_%y71!v7R(jOIB=Md7Xz zZ6cvjvoq3}C+c|tFP_kKP)oq#sG^wWx4C&4e<$u1Abuy_3)Nd9OIKWsmyD;)i_7U4 zYuq?r+1}RN?q(zIq`arSySLB2MPW5WQWV2+Qu$CmU18AbcvPeG1x6pmixMd@T|stI zo5vlQh!^L6n)me7s9G$N(MlmuVV_1AMOkRx3mb#hmHkrM$JceUrv?m_fXSyNzZFg< zpD!zKf*KCz%g!zk6(L0qf4l4!(yvhR8hG4nq28_4m9@NA}*D7Astw=l2k{ zP5M57oc4%U^(}`fji2eko>YO8(j%>+^@>oTU%j@?{xPh=UbT@L&M%A z!l9y~a%|~gYJY~nRaX)x8^qe6s+kF%dt7R@*d@kqMtOPOr#}`_hB`Mw@?JG-TAzMx z;aCRluW63OPE$Z;qZMFd#0%wAWf91A&vXY2kosI2#=MElR?G0dL;Rqn6E(b+J+Gy! z?QF76DF!B$VsleBm?Qs)k35&soqJ zXZR4n;TPe%Wv8MD>l+NwwN*`SM-(iOc*$tSH%G5~qDUfI980UnIK5u1#1=z4fFp)Q zAXoc(;$3u{JDl;@7A#G84>3n;#$ueiWx~fqNySOw>(8{V2Swp;tswq#JCEyg7q6fN z2~eV}7AYnqv=F)Ni(jOROG}gHP=~Y+iB+KUi&?MUj1FfED3GIz zi>{#DWg>?W5{b<^wWJTJd`6=+*gGk=4bV7VDa3ZVn^SdU9o2I!{CmaJem$#N$QN2L z7%16)R=6vkD;lJvhwWB7%YMtY z+y&x3?x9E(IY|UQ$7~p?PyR!@U#xHV?HcoPu<>k`-q0#;cwC324-pq1 z#sw^HewmLJ*4AC0$Wh# z)%B_Ys&*76DTe!+ina%4v{j|&fp_I5Pud?UC`|kW*6Cr&$(_OQb?2N@Bk<%Z$!R4a z$)o-e8J{p!A5rZ1De=3Dx@)$fr3w5^}anzApoLQIL?4k(s}Wdut1C zed82E=3$eIa-8RixCFnZq@=jrw`m$x4mBbgWdN7@6FH8ueo|vndU_o_`_gf-1WLOwe*~WHox!tVOF!A* zz!{J~dN~;x?Nn{k?-f(@~!O*n&(xXlK7VW>dLOA**^+ zt`Er!Rajsjc=+e4HAq9ygi)8mvub@HKEz9^f<=$v7)LmwL~lC+#PiG6<% zg6<+x|EfQx^vTR=gdev?8T^e!+9|O$7}U~w)iOFZSl64q*&B*8eo?#aZ|MMX44jz&galD2xP2eM}4i^t;9=Lnf6+d~ov&?ggQlFBnf=Y$>Sk;WZ4G-}U*1&KoYhpG$Iwwa@_CUe z_`RRI3{0fpbJ#=s&FNShvNg^M|JQOWGXogm}T7?zHGQ6OV7 zGt<%Rzk+plmJ$;avJ!hv+Y%;C{Xq2sSLQ{c|1~2Wdb!8n0?;qS69=2WJQ~iFI6qDem|<^0-{?Q8eyFGbV*{zM z!2bd@`@bI$;72zq)_>huD811 ze^?otKoo2I*V(t=!ragw8f8|=4IjTPamw@{|LXu9HC8Q@29@OBJJ5GA7U>)>#Dk4{ zZbpWg;$?z`Q4}QJQ8*bdE}^Kpj5ha%VJ~{=h~Wc)LwOM;X-wv_!t$ISXs8gtu7=qm z!;pTw9Jb|o;K<9%Q~$-TBo{L9G7e&LA5CN7nDthc6Vuc6mDLlIlPz!LQO*!vo>1kx zCsQ1{w-8Eusd&UFfVu;O5fW7tMqkCgwyKPkimKp`o-8v(_N#x513r>tK9uaIoS&c5 z79VJoelT>23GoMlNgVt`^rN&ov!3eO*yw0oOQl%$%aDlCcV*|j@;M*#r=Ry6ry zj>2HRNF~-7icqG%xEyH%?O&dinfdb=0xcw9NoVkCEvR+Fw(9+Q9tG4I2hJKO(JJJ8^KU4x^Q`4PIObm=fER1*zEI`5AmhUQm zw_it&qkx5x2(D~xVr_43n;A10w7OO;1uBYR4i3`n;b@(*(_MtETJ9PTNTGOBHhfgS z9%>yqJj^R9y4W5K^R+23HHlaMRaR75Zm<$5=-{A65L`%!SL_;=s%1Xz} z*^$XrQOU)?fT*FVx03qZ;739XCX^qQweZkXp3=lrb%*$8gDO%gstP+d1%WgK9PY01 z%}wmmfl<9$bJWuEYEy#n_cSyVfZS@j#!YV{@H#!Kc5B!wg(FU*5uDw9H}(4h*wtsY zKF|F)6(};Xou|`G9ZjxReZxD;O;$ILCBw9r>KrP*z{6?A;3{ZOsqq9CSf3>vsGv2sIJzi zb-qfwJ9&oOF>T3<36Z-^T7o7V8W_Ps*TXm;&gVT@Xlt)&u(AUi(AC({O?A8!Pta+D zWQHe+(H(=8L0kQ&cC)y^U~%J$fo@y(?Q`~cbz9wgvqkwZ^7vEMAfLYmDhUjJA>|`X ztwz^}NjP^C2}dv5j&MbFamM}W@t}SMTiX2sSQl3aHt890kYReQuF~()_)rNpw=23% zhW>PIj6eQyb|96`_`A8%VYx8DZ8e5JzhBzqP++x5;3b;la)LwHR#M}$0o=R#M`tOP zSBiW-JQQ0RZ@x@sZ&vbpl8Q(T4p7r;`9);^vI5}*qs6jd@;4VT1^TH+cb6{OM6Zw| zmg}5$TzKw-ZU}fR9~h#I-~ZjJ@S%E~CRa3ww-bO1l}R)GTy+3NFvu;=0$kL*iQ7=arX?Th zZGd9py?=Wn__y$ARwS0yNL`OC-0fJmgWy-o@#FDC!kH5TfoGa(qTgtkY7yEv^Ec{MvW4d}550S_;SpYo4ixWz*G>D1fewzQO2ZROzk)VHOQ}hxN zEl9UvdrXWxm7UqB_QvK9Tm3}mzfZH#iH7Jx_;v zMoosNSZk_}P!PK~BZ&l;e{uuc3oLWD7X=!0{64_h&qE9L9W8)AE7Qh9CF$_4-KHv1dID8!a}Nb+yP=SH>#jwHi@nA;!YoP3frg`0akACK@Dw-!TNI*TioerR{!>+wE^O)_yCnT7QN|)9G~l}E%g)VRpJLf_eTjV4CjO?oCt!?qR(7({Lq%`v4t+p;f-&lc_I1?B z@2JOf#t|Jwd)Uow2RX&iBQKKM<-KJj3+$`{8k&ZH$g`q?C_yi{AmXru$J>((@5k%~ zl6nVt4QTDl1eQ!;qU}7|t6K5Qs_v(>8*KY0!T6TD8{$y$NPqh&zqoH>aT@T@- zMo(!0cEz%}_0bHKl9C#Pc!KD>QbST|^(Kf?4S5eRDsZku7Sj^Kdr%-5N4vvqbY}hB zXnqM2J?%-+AXb8a?7CtV4hV;ZzVb87{Kzu(@_t#nG;Dc|wFsk58`o$0waZmrV6soC zGHZXC>>|LK%nC^1AxT^LxH@_&t4zV0Eq`_JtMMKAHS>HVO4CSLh=+ldzs2 zIuCvxUya#ta?`tV&lHhUF`pjZqg}W{A>@~N{9JWqvfwN#i0rDp#E^k3An^~DLcUCz z-U(m4!iWvxXuZ>Iq%SO9!;uL{7dW2@tM*yR${B!6-=C@*x4Yj^%$QPD=!XIXr@=|#ykk0bA9rr+kBQx>w_GfnTcvdp}vDGV#APBPn zEHZ7?_a7;q{FiWNRHr_xC=vu%?9q4z!+b|U5|fl^TghmDT!Z8R=OCnsT@d2Zy2I5w zURw5}r(1&QLmc;qN=3?3O$>OP_nVF=YNuqmF@Btkebb!r66xN=Yi3$uuwt>!xp|#6 zr}JhK&&f?cHOt?eLGJE1l?AWgjOx30NOuUa$VLg=8s`<9I_=5mFUx2~Rg$FVra-19 zUBA^`blFM7Co3JLAFT1>g7YnMzIPaicxcJ6RLy+fpXeE7SrAGKc4;2)tNr$cnS1Aw z9E5@}?%SzpU;}_$x#-+{wNg<85sxe2U5lid^da7FG-7l6*T2Sn%Qd{^RyVZeia$nt zg|QtZYMCm7^IrI3@RV(S6SG6b;DeH)w1+gm69#Ek!GscZ5iROVMB7R0JQU4}wi<*<^dkp0*|211)-&GLDxYc)F?)1!*2gN~vR8 zYvWmlp{2M&z3Kd2hY~;Mwjrn}B90#@vwa`QxLx;Qu%X>+7&7~EU&R=ioz?q9vj_Py zCsMmbBWk}yNe#E}=s^TmRC?0lS7JO0OC!C*(^LdzJQxBL-n)TWKK|E>^WWpsjPBYs zB|bZODthJ&=M+pC^i`NbEQy_9a%WnzFf#Piw|=1@7+$@)1bUB=k-@?3Q@|0gBgQ@r ziLfIK1Z*XAy}#)^kS*Um5ud!H{yUc3wwF~DGok8A?q(P&NRo3ZzIwXbNEyf^@<}Sz zEf&5OlQ+v?S9zVjk^YvGo6Usn?PY*Htns`cOW;9v>bwNDN(b%~{uo#@CZc21c%EeV zMXiDXmDwk-uLFie9qcjWAr1u}@5PP21iu@7)kGGDxOo3zp3a`wZ%);Siq#b zmz6;!oYHgmlU>+_xK4>twiQa2NF#XJ-0WGx9RG5RkKAK-lFEtJ{40czw0*W*Q0LZ2 z&GQI%CN$i5NXaU;H?o&{oGxFk-1nj)+dgFs#r{{yXn#axC7J#*cvsmFGIF@+Ne9_! zyUWBf%l!A`z!)VS$D7s_SCF9s!DsYuFY-L(9y+!Pb`~LQ{MMit@zsoS zaCQ2SORKEv^gHBl;nYP1;OHgyeQGhE)*CQArsHwpZ2$AO`SYhZax(dSnk1N)`Iu2< zVcf&#Z@a$JjL|Wdz+w)6l3$DT)oOe(E-ImS#L_$dUY(e7U`x*$)*fVu`+^tgRCX^8 zi`PjILaaUyEJ0W+v!A5rD{_oXCv?57s;n@1z79f{RN%9c8+(X+lDD9r_^DgPGVWpX zTZ!6gM}2m7xaV|lY74g7a85J~5^P((IhQjk95cAE#u&z1h?+Pe753)eZGTtk)aPiq zs^Bp42T%lm8T|o72Uh!&D?LN2FDAKPt>r*QlOaA2$i>mnZHswnEHx((+6OmbaKo_mDE^ezOEaGxzj#Vqy-u@ASMWQw~m zZ|TiICPc~yWa><$(1Vcp@5#j=d-{MOLUtg(iB;N_fhO7e<+%J28R$?8SKri+cnuSR zEVI8mCe1RCBqy)CwQw=v?#Rr@`)Ih7=^#d2J;%L6%+_mUJ_*8w)F`C$(0SN7ZC>vO zAUmc>X8pls{Px#A)GbSb;uwPg2VWeQ<_^Roha)_oEicAoM6^4Dq@-|u?`5Z>#fZJT zn!)_?Q$-f3uyTE<_B`1u3{pu18p~Tq@SXQo*-b9zYaicc`gU>JirWM;g$zH@_Z7XS zt`g%)qA>;jr{Xv>@*%b{8qD?fB-Ug>Ym@dDaYPu%ug(bumH$P{jUV?{@*A|G8yn zp$kQ|Ud|8&6AwdUkFg()5JT8N#`)ReAi0K?n)VyC&=WPoF}SqhiaV9>q^uYs)ivlI z+DyhMel@e$keQrAYtfBY?D)57`jmWM=QNBq@SdU_3MYFzIj1H&+fa~}K=)gzk7c?2 zz-uIE^$!s5MBwaUbHxbeZhwA(ExH|m6Oi$}+tAh3gpZOFN)1C>*M)73%4tMB>?FvV zRm9PVL5R&dD0=6I!-_`^%pVl^h@UicjMAz~MjEoy$`E?{4V=-eS|SSl9>0{TB;Pvt zD-}wnyDLW)*NJ}mn6&*#D281QCppaWf>BY->UUIiXKsw#A|^Ga^{;a_;&tk;mtisS zyNO$mG@<^>dHA#rbCw2ZzPv!4TqMd?>!%|f4zNIO<2C#(a5RYkDQ8~~NM#E4*QtRs z^w?K%!Q>)ys#-GL;jauY-b|ZlLttJhK*>@J9_kR=pv4h-OZy(>Fv{vI93~_>S7a$j`xb!6@B$I zrtgYzPvpCbZvDQ29Gzo^4CbWS62Sqk z2Q*J?73-mbF)89)tz(W63&_tXn!+rnp7kVs7n`tC2tyvR@%#x!vrw>)e{-9o{ zV)?*RQ>vRDFKwa=b7bgbpzY>$k9CNFBOZ@!*z0}BJV!ahj_!+d z2vR8CAg^q)kmHnAPd3jzn)@;?y>Vdc`>`n&6%61cO6Yy>^J^Hz`)*0m-PDZkG+|~- zV55yQ6Te znl#?8LieT{-VvTay7+6;vtuM%UCWBRe1g*%I|?n1kfQy}7am+>sUmrpVBX!bf_)T! z^OA1ZcQez$%)0KO&!)i#(04P_ev;{5$)#BjLB20D?QP08>Yq}%I3a1fhJzC&2v!5y zZJ$WE+E!F;eof^PG0=zy7=BURw=l9QK;k9hJ}Vt&9XU`{jKLft>*i(Qvl@hx*YZ-L zP9I204|}N2J;7P{Be>_5dtga;63=Ys25aS-3_YcGttF}So1G5lCNNA0Hjjz^M8!mC zUYwtTH01rh#V))+GYGyXr1ZMT7&Kf|HUoh zrq~u$m~+lv*+y5}VC84T&!iu`Wee|wIJK59J_*JShJo(OpB>wa=6kYy0&_w;i?IU!LvYO(b82Ycl zRGB3WDZ_!ogQOwAxGx$LI0!ZlU~7aoW?a$D!j-Y8f=&wl(DEXqYqfU;uP-s$p^$nO z!F1+{I?V7{hvl=-7Tr=<{C-;~w%?;fQMINBOuR&YmHrsC2>qfBJ0umeDs*viLnSv8 zOsCqNUm=4{>ydV3Q`ed462W7Ws$L}7Gm-Cjl(NgVFQq<)Jo~lNS|gZ!JMWBQzH^^L za}^u=HSS6;=@p38sjw$v32~twzG#Fm{VDe>2{Se;RYmQhsS(>p@fGb~psxP5{pj-s z3hJW!a?X6NAlD-rE$9rbH*nBz$K&DyU=!%LRX=<;#)(kp3wBl zRMJomGYN4=rhZ^rcZ0sY_ebdlbzoEBy7UMp(O{454|t{>?RLi5oY$UE+El^Z5w&6!#|7YtgN6c&FhNci2Dwz{9Vip z*TggcksKbbnD3>=!YaHNIH0GarA8Cu#WDEj4Fe-_l?@?9>8TW8^Ps+4aWDSP^+{X> z*hRXr?lRi0M;8@cc&RI}awz=lpTz$CeTv(iHY4X?&I*Jb=$_d6S-x=THTXFBTp{~t zB`4<#xA}t%Yj6tOgGxcC!w}7Tw076!zfj*gvZH!9uW_4c(GJ|nBhzuKh>IepR2kyM zI2Wpo8ayBNqbbJeNtUFjSiw3ZjBs1?!$ILdFq*A|HM%*pu|5jV3P9G?ubJ29x(Jkz zeb0B%ds=X}alPvx!~g456pLuTLG@2bGl~7ZaKlN}?z3223I6!gldR3v;s;fqjXw^5ts*59JD&2O|fExsx z^3t+?^=RaM8h4*+B9*X`RWU@?V3Bpj5cw<@$NQ_W`MUvCrhQ{(K6GQ>o<>rZm`5(C zsIJ&4xi}&h$ac3o^ts%0cR}c+`v}U25mU_G9wtHoI8(RP*O9pCb%jb&x~Stlyl(^6 zLSV_B#Sp(q@uxAjUd`Cm=kjnb6BqlrMC+U}WcJ{Su+Q{jA&x`3!E*2F6(|uIJ{P*o zTcocau~w;39}4$Q_L%a==cqh7A=8q1`t~)G*yI9>^VI)9SOD#44%$2Pw;`U+M?NStz*^BIB>09nH^b?2Z7U`}3AH)` zCDisce-%TkL>%Ihgt=P$(`Hl}S{61t6j}%*n)8TRTY|CyxezS7UG^GmFgdEG9ZXWr z>4b@vhC~-U89&;9dl)sJCLOpU`zHguCDf>@*)ZO;hTv(Hk1rG>@&#NOD<20J2IHT^|RBPBL8%ApPM%`=7; zC-k^#x4yEX8A67;CD#X)w9QI>7)uREDpk-CxBKo!U5z^S0ugrafn^HUk|fmg|ni>Tx|(HC*CtHfcCX-D!DE zP(O65PP4zNxDGZ6;8M3Ntk25}#Vr_r?Lrm6*?-jETfB?bW zHMqM3pCb3ZwccCr&HS2KYx>XG=hQw@RY&*t?XDohn%vA`l*fxn$I|?eilXlrr@R$? zQ`45MVRX)Z*nx)~I26h!W@|4e(VR55Q`ZC{oh8f*bPWLOq~-{~V*vIGUR`SstSACf zsusio*@k&_pOtJCZMbZqv9lpyoSE^w@mbohKSnP#Dd%!+1M9JQ2c7OM#b+7qu&!+I zUMDM*k~gx;P=5()D;3>Stt~=-`2lR(QQL;58Niba$BQYUf&n}d9eX)%g0%c~3TL&wzCp%|PgOv4br^~ZCfwRWa+e>I?dolKdcc0;w9Ird!C4D*mZP93M{qJ(-jnB{LQI3mHEr|-{ zMd`@5xEOFK6tV7KiCW8Ui@+3Y3@BpYh_B69u&#=O=!vi7F1g6KnOX8C_&<{Ap=B4z z!)+#F!4Vwu6pm|T6z>HxhVR+@8Ph0k^l&74aSMPlxNfaz-dp-2&xQ;xrdb~kXoNzZ7eXJojzNs}X4(y+>mA508 z9y9M?kUvUsu4pA_LGW3YKx-glRbH4W8*esWZ#a1@h6t_cmD?+S397MrwPF`0YSuGaFa%a>KF z(g)HY11ZA?Sn?>fScQ>nYrCxVdISew1|nJy~> zMU7drE_!d(DJkb_!EOF}U?yV>Ukc6oz^i@c2iZZd8nl+VrSM!ft|&)Rg17yRK?3Ko+-eNp5|q4=-PwzEkEdFHTs__~s>HvGK3lO)K9=#^@A-NruE z3&XRd;Js+q_4GmWk1>VOPGGw^E#5q5A86Nm4CmK=GD^c8Myl%lt+H2w5ua8k49{21 zEJAfrg!v|BYz0NDPAX*wpy_t&s|60e!I${RvO=We9jRpqD!pdkCg-|)Cp0OR^6kTF zUjCtLSf*@%^`D&A2#}Dap5A^%&gIC`AR$4|4a5i0Q5yiKkgL(LT*@`FyAkcjQ&&yI z7rmXiDBEP!qv1g#qtaBS?VmHm8W;F%CL)7g;cITErjCVBNp{7mdV%Og)M5p4?vM96 z$Itd+Uq>gRQW4%uiZ;YiZ(F)-Kml_ri119fD?|nMA|PKM0sFFH{%MVPO?6e4T5a|9 zEsps7)aTupyvSu?R6LPtOdNIMzj1{YYMx;-Dg`7`;D7Xt+WD6n6LLo6_JI{yq2w9g zK}=e!A;?i}qRErpD-oNgEQtnxCK^Mq+uacXP^uel{P&^>qb2@?tjGSjdk2@J25$%{ zfug=Q@4l6B4JKiGjjOoj1CYD=r-sf|6C07#=O4p<8Ow{HiYICc7mU79OL&tv2#Zbw zpRf&}F2(EFKQof&vM~)RS@e;^QVb^iL*LX4iqPdLZ|{^S=Y!AB=r~7|-1`$`C-GCV zhU=uW)XePGnDhBYPMm>PSeD=lz)v7A9@VFx^;^v6f~S%Dl-uLZd>@krZ{q9UI8RJx zzs*Sa37)h%?4dD_FGWs{k8X3lYW2EhBs2u}-*WYb%=CnxC2I{IX81C>*SgO&_}#@wIr=P zZK~Mg1p@;d+V4HU59@{FyIF<-`$pRJ`o1Rla3i~KW(fqYjd*W!@?`^n-TQ3f{k{of zwP+gfkrfgYVjJoR{oFKmSfykOD`{bu;aHM0#Y-%RYlI-wgY2KfBV#W#?UJE?ANuD2515 z>5^w-a2mWM;YHVod!Iy&P)?9SfXj?6i-sC-nl5Jf9lcs*?JRcNfJPN=`_v z=Wij6(TM=lniIk@g~}vkmGPI(b=MbR0P?cjHm3C^$IA0TlSnZ2+%K^pRWN`XaJyqP z_~-T}NoEO&=qk}Cb&dToBzB@(sW6t}1ZfhG3M>QBsHl}Csl8%4Ivpt9bB0BD=gTp( zsas_iEz1oB>E{yVa^|w`jBjs+U4QpV==ElE#HU9&OKv>1UdbJy&R1f_u}v-0!C`$AphpK9i4 zzWtN9wdf`zw~wUunqDFlmM|~lC5RQm7nzf#Ce)_CatMRz_9cGheBWnio|^aUscXH& z!9_ZReTYR2-ME7#txn>g(efw!0{%$xS>>mzO0Wv?)act(V1_TR zFCM^P^O*_!RKV;}AZLN7sVy!dgO)}iygWY1U3>T&W6p_?Qh^uX%Mhfu#V$JWafVSl`-uT8oh>7!eA-FQ>pX0t@I*| zqNDLOx6c@_IE$>z7fW`Bq;ta}rM;5WVj*HM+yRzGk%%nN+F-5DhV1d2$6W2O<`Sx^ zHK|%oN}7)xk3V(JoG>>)iXw^V%mp(HX2U)CQsT60ZQ^mdsaVMP6iUAcGsi3s@KD3X)nO90UVbK{31olaZhT^5iD%yq^Z5pSCwMJ> zOrLn)zn}<=$U!q*xNpX8wv4{<^IpY%7x`N+pKW)7f}mlX%Rn%Zp2E)Rfm(IRb!l_MFRBtM?JhvTk|g?-oB#sy4ZKvT=5fs2Lp-!dYE_3ERC7Mz$r^!=t4MeuV9O1>B%_lSyH_zy3i3 z$>lP(UvHMsA*tu+AV4!jt{w!;P=-o!l_La-6Kl`VQ1CM;0;?wj(Yaj{n;{Nt?LkN5@X1 zIC+4$O$&$pPL-k%AjNi#37l^)7>F}vR2GQ}W%^%EZiXjnYOH)7HUsY1dioo_=!dkl zXN;z;sLad6vpF~R?E$mP3~dp!*Uh33MoI1GGT{A&<*${M9gtA}$ZEzaz!Gv|p^nW) zEgd5&Muj-yMfj6Y_oPwB{&`DJ5pe;)t^A~NRpn!;D5}P(^+zw8nyI;jbz?e{lUme_ zGfbn=mD3cS;m`2GA~B)s=&)UY8F$F~6+Nh;=;VZxcR!7!9QFPq=L=w2XhWoV<2p1r z;DTHwFnsLfq`@0QVt8Uvq{U{mHD% zJ?B2)Ewgm}s*X-~)dom8a7boY*b)ML~Kc>;wo^y zf@>&La!VN?`JhVET*=YIocwz?<72yeIXVZ_acH%4YQ=#pp~5Kgaj^qb5fj}(^U*LHo(x~ zL5Av5kG_0=keo>GlSJrsB;-07pQtL5NZI#xNA$M!nYC3mVv%xz194qL!CE~UWz5cm zQ}_=PEg6abQ&7rqDi^%(@Y%f}p~<8M{}l$+c#C&QV0(B0e2nnRaQ`)NKeRVOh+b1~ zv-Y(bW5Du^(s)ZFGs_RNC(IzE%>Zf1;GFn)eikaFq@R+CH{!nl|Edb7#qqI)X%WA& zXMPLfAk+MZ{?G9Mlq<>UB|;>wYGJ}}?gk7RgGa2s?=QPGMP#((Ll)m{4L?TVm7|~h z{AYNq>!~ieMI}z{ODkJ^pZV=Ld9RVxOi2C?CPB>*yfz~|2Yc-XV2YH%^AADOQUSn+ zfg-Rs&FBycHprDYqL*s4)sGe-?~())ajD~8G^Mt5EnD>H{DNhOLu6$%P|}xKp_LMO zujgc-GvNggVl1qQARFuSF2eBgr8wv!Mhdh_-LF5H<^zmq>_EWgE#UQGY^?*m4fecClv>X3#;@ZZcAkCd?)6y0MD=NL#npMiuda8Uh)#4PfF@+DR(lx zmM6!=tv{GOBpo+t{wdPWoJmEOX(4`x5C_aeuK+TDB*CSt!8sh_y{K7pz$5E5Kq_Vc z4kWv|lHnHSXrp{AZ%c|aXc024;ey%>83}>i6(=Twh{0PCHxw{mw4m_vv(Fd?`G9WL z=nya_J|t;*0TVRkj(q#^sMte@bl<}Qu@MN=P# z(rl;okwHq!9r&_})rIO9LsE)TNJ$Js*YG

aI$C`2gYUKja=#4iyZfDG;0edp^V#^hW=x(uA`Xqt`L!Hkg=M1?6=7!LBK2hv;PcYvp=YeZca zlhSr}WJDg;{LG0oRYKkJFY<6J{_Csnj0L!#h>fWUBZI^gl$4B;((vr($nUcOHb;F4 z5A&10HqK14*Y81Mpj$BuQ7AMUrf;2}HF=CmCH&SZPX9&1jclN{lP3H!EP3;?xFXY% z*I-5yyazQ*XEk*wY{=AgAn|Pj|Auj4eqe8ds=&4#d+Fn8R@$PSK8Pv^Mx1y?;<3He zZRP(6mVlK7+?Z^&jaF?KB*t-NL}ZN6A9&7->H!Zu6^9PST_Ri2oz#9TmU!7@;EPDN zGP@Cm%~v`$O~lY8fCR^y@3Rd!Y`p+~Jj$Yk*BKqMdeVGNB)Y;gCsqJJTJ7HZ)eR*L zt`}c@pPCOXsQMgFZ+yLB04gmuN2cSekcQ9bpY6V$6036MAaIsD_qg7SYaqNy=sw$x z`|TARVfc*QtmEj=!acmRA!t+vBhBF+LhiZ{4P?s;+jI;QbMufyeC~HOCdMa#DJ@pb zJlc@DA46QV>g8$hN2)4Dwtg?bO}(*}aSH&j0X9@l4!tkn{_2_>%^ya>~{MpiX*AUD@d* z(iWa50Vq8Ymbl|sRw7%#=qK?JOapEDGK6pXGAT!mAz8Bo%@1b78r|@gnX1y@FE|Z1O;e_^%lH!Auf9ISxB+@ zc^^J#>TXqpSDRzJJQ<}@eR!z+M8zlt(4Qx32XULG6}PkFL@QF0R8-)K0crUVGBH`pDm}e*H0q9G|e%w5_8>enpQt7Cb#{a8oH?K3-Gc ztpBsH@>Jz&Z(;D|_?jpvs?qk^ADb;>cZalkNnV~)x^u+5;)7ak;o!n>jPITO%<5N2 z8$@1=n5vIpbM>o-1zr+PVv?K@Ti6f&$9uLAUeKG_)+h;!z7JM%BN)nH9oZ07jg^Nb zsfDAPw+3d&bh+_WN~(>M5zSkugs;EleZ!T0N3bl|cD>qxYVc5>j-)W0vh91#2Dn#L zqRm<#lg(ZPQi(YnlimXUKz3~G3U8BV+W*WO=%Fha)-`kM-ij-uuXwHcA9ch%s_2n& zI)zXdDg8;!jo0gH1-wIFrQBZoy4tz+X5OJavL{SE$d9wuU!zoj_RGt3@L8P5Ed$!3 z@)nNf^z>Fb2{_G}tEC}-oeki08IuZdM^jDvB`V#Xp$EU8C zX`Ti&hvntbc}x=q^3E4wHt&5je5^n|=Wqs|!PKO~&=s*XZOz)Y8a}$6;6#wmev1=M ze1zd1(C=?p6J0r<$(=ubeSpl2_Efd(r%lUgz7Av0ZObbHrko-xC5y{uVE13M6btxY zfP#g{W^0>soAZ3lj!NH8aJtDef=htAX*^y1Nwi?nIyAaj@QBnHBN0(wi|3 z5*EXxxVW%$pW!at+DIrX*+3y0uL{a?nyJvM`{?H5vaoknnyPb`36Bo9v|EsE!3LtIQQfN={_1LnWPuISh>V|5%y332p2DOF4 z-KskwyQbG3=x(UXUTX^=_}(LjkNXY|`+!|J{QTHxo1dMKG#B@JzU9rzQy|s*OBL&x zIyaQ77`t*CI~!sGgvem*da68Qw@*%ezx?pnpy@k2O_Z^n*3!&*nm22ahH`Z0a~D@<3ln=JKmwV5MB*c7Cw~rwg~{0@ZCqX6SvX69>>WW477niD{N!v> zAUlw=hNFp@1v#6vg}aTJg`BgA7de}(jh(B7GZ5ODxLQbCn1Rdz1$he_D{EJB9!?;m zhMTFYmm`p} z^UOG0g4j)M`}Cf!yxB&7`YrYcrX-07k(v^>06W~eT1ID@MyhtnSwdy1fKhjrsJ23L zH$j0)ow8@%jzS~7L{F_mcGWysA~g@INBxz`nsMkIO$wpiNif0s{A^E(ADeMH*Ih_x_o5uK}v0 z)s8Yw%hCnbmx;-7Sy$5VojVV_qMX-sN4W#?ioIERp-L_yJV6zd5_}#7qvr)WhHqr} z;)<)*6L%0NP>!<$<@I3#CwgOg#{{U42|(&@rx|m6g#u>4KcW|A(9jA)iH~miMgt4W zYId-K^w-WE1wH3O^d=O{h)44Z5w%B2!*(~`@VA0=PG%>09z`y`_Xz}4h>z0kn0%Rt zi54GqTh7iEF&P=!4XVuPwTF`Kz)C~I$r>)BbFnep5JVjI>$0&irlNrq!BNDpJ(-vV zu=W@rNCJWZpj^ereI*+|ORQiDq7H|~QUCuPQL~#*MXMEE8!-XlbdN8u_VLQy3mimI zA|ggZy-Yv_$Y_5<4p_L}<<{>F`~d-GAj4Tb=9e8+d~63SWKXNJ>G)T86It%J%1O^T zPBo`8Pg0p7=bg)@C8Z*}d^%TK!O(8ZSYpWe&t=nM;nl3alA?AK8#&+ARyZ`V>`dHe z)O-#oN2@e;aWR%~d^RnrCUo}u`IZnx5&*(oQteUeKD05a1aryH< zHAFOUC^{SrVMCbad#2^TSUk73igK%GS-7f!@`0PWp(=UFzg32LZhS=5^l=wbg`IARu4L+t@t=*Wsatct#)iNYwzWIf@8L^ zb?`;NTE$M=gMJHX;PCC|#SCo=K*RUj!Mj1+G`&fsI7pfpt;@JBLAjAJJxf8WqRfxNQg3=k)X%ovq@!6J#1W)9M144(!ig(`$_Nx5{`Nx6c`)f0~;# zMg1Hea=IEIsfYVxCm%**(qyl3qO`RVCt%JKD=>CB-5O?#floZCBNhpYL`taDeWsilj~*ElIb{@^M=qI zcC6Jw-*iqQqqFJm`$rDH@r+P&Gvy7Tur@8y4nZ!LCXyk|E&YZb5RE0aC+ZFbLVLl+ z4rv#v{xl?q6ATxsmrbj1s@ggDlI|%e(M@qF-JxP;4%AkscY{%3|J$E@j@X~!{T4Ky zI_~5uhJGC17QXo0P8GqEUU32Kq%k~jl+mDoqN0Kw-#=zGjc1n4-a^9gP&Dthjdc5sTnVdFx@w$HyQ^Zc((@|?+X0Y@616><# z^LYf7r4Qn}uyeu1U`TP_uNf!W%Q9rb6D8Cgnh2tM_|*JY%=`{}9)y-|!kD!;rFlD- zh<7+Xi5HdW_kzRu9obgX4cvLjbSx~%Ny(^|zW8p_ge!D{Z~h=ad7ZSgeOF7Pyg(+g zc`@Ii@Ca9E@^$-zmk(Kf02W?ypH zWF%^bl0o+BRN(boFcSRtJ(!DJ^5%BNmH8kGtp~3Ga{y>uP1M-oF)?1IIpYN{biTz= zHvZzq#=3C;JGsSgzhjR~OrP@OXdh4^c`>;q?2QVwxAD~+B?iloTVX)UrH*wMRkxyz z>43Of*s^=J2TR4OC3Tb`CPIFL;6+9ES2K`6?D7GGHTx@cQyg4#7*(FC%mo?veOQ8U zwPgyToK25}h8u%euV@3HO|$9$j}jy1^`^jAcrXwbnS=7uf;4FNk7fNa@VAd@w+5&O zQPALxo@G-LPz60y1(;EvB?PF2iy5fuJD;{EsA&;c7!HPT=hM@PA(6q*rcQ8re-yO4 zb6KAPy7{k~BWR+js^P<7{*T%+v}EufH7k%JP|LI0RQmisYF-zG z{QsztK@HUJnP!P01Lr%3Jl*X9(5eRE$~#a*pc&|ZW#s&{WPbJU)lYyciz9Hen>Vd( z*}!z)vwU`MDE6L!1Y!pAYCA?(!~ZKi9{XzG{gqxGAHT=_D@kM-y~Ft{`Dcx&V=s;X z1*T)&-%Jp8oSqjs0Z-}I_I?pi;j=hID^KP=n*E4uoe^{vk8kpK_+@DAV540H;V_47E{i>2nv-}j}~F1BB%a=-$2wY7E) z6Y+nu(*#_&BS3APSPod=#}^oYe#=wUKq3zc9c#h69$UoBA7gsuf1w4qp*NELRY8Bg zKy{S_vwK)2dQl%7wbHxnOb#u;@ukYRxphuWJQ<0z9y8Db$6Hds02 zT(j(ddyOrhmkb-QJ7gn!tT(yY`7(dZ_SMVFs|}Tlp4U;n1&%LlE^@`ip#oN8#Q3hm zW>3%2chDsgCl|e&}e6>f#d1Cx~1n3hZ3^`2+FJA)TFh)XMb4PJzET#HG#E zgh0d(Hi}PVqvf0%>_k4hOtPJ-)UzD9{|Ee|ZDME2KO5qb0h)1LmQ|H#8f!}f!5s-k z8B!p$@%1YBY;GR|oNDg$obr-SPldf*R~fQzgu~FFbM#T7o)}jlaX=IS(j}jVP8I|; z$sdD9?_6dd-wA{_0TI|-bOe6q`^)9hH5Jb`ps{&bI0p#B+e4n9t0ik7>iAGA5G(f7i&Pgm!^-BR)#I&pW zN9+!%>E6TbIH}}p8_+jVJYfr;3sL{S`SrA@Jbn?`KrsHQYB?#NBwUX9Wi%nEKwKWr z(^ffbVQz_X5ey)DPSPhSZeu3*OMLc_Z~Tm&!_C&Ee#80!6;OdGssQ-%@Q2wrrP2C^ z-nYnPwPf?im1cG%_7E3$bR@DmypJ8&$=M*#^)xbB9hxo~oT`368&m)U{3+V6*_IuD zrP0O)FVujds2OiI@G2Jf(a=o|Q$TOj^d%#Bkr};n=LH{lGUS>LtJIXxKyf z>8RNsow@0lSK(%PQ3CX~JAG@paQVKSEvJ{MlmwjaIs1K})wWi( zd7}B1h_1=zSo*s65zKkpl1=_*%T84UQ}QycaNS7$u}AaN1sE5c`@&*!A?WVY?NQ&= z{-zJe;SX5VW$21$tKDr;!|PIZGx~o%I8>K5l-9}|-;aG!fxe$YGcb4jfOo0&9>Vm+ z#PP$`Mbc1IhriAQF#QI0RTngPJD{NT$1huM^sL4n?AU7o(O(hETR_y&Zl|1_4-Vc; z0z}rt!H;teIUfYF60D@F0!m#M%ib<#ju;`=c(KHQhgnO*k3|9!zp>}(e{~~uQP0`| zROVMyhXPkagFH}#$<~#YPl;DV?-5+lW5Y1%PB2mB(Z?C?m1T#)KQU?3c{3!v zqA^QuIrtWFZ0^!cIjO(R?RAVwKSTX-3H4LAdzM!tkd7|e&W59)zi~13AN-wtVSATP zDB-mqo2vLorBRL!ma9jipf(ihj!{z#7lP|%Al)#G3{2pvN)X&k<3tc}bYPVXuw4o> z%qBWe!T0Y-jVFdo$ca1l0LvEl8u4Oc-A(~R7a(Hm7YP9Q%01z%)Ey2~*vLBEDka$z zX|4*B16ILWxykuBkcq*JRg?jsLMtstsA_I<9sy)x`19&*avpvj5oAJDl>Z!9lLVau z_wP8t6nj7$Edq%@L>S7xnoUol4dCMB+lE$1T8&0hZbxo^{%;$_T%AVC^-PV>J(Mv= z*9BzsY&oKC5hh=CpUIS}86J|iPbxu8Pmfp8CNT|Vi48|d(1Cb#+UQ`mtozBvrWiNF zMO@))Iksg9HckqkZS8%CPt8rseD5fX;;#a(Z{FK&I|(IqDtjWA#pY6D1&^l@K)_CX*@fWG-P1#J`yCE>+b1XY75veC3~d-zmLhZ!IH##OpN70- ziX-aA+6;*cf}an(Eg+_4Os)Y@M;n2LQ8SF>yF1Id32{OLaLrD)20lc}6jW~vA~-+| zht35+O}_I{Us)nwg>)>(&Ze`>62tvpRA8wWDe#rRg46_eE+3Jx3h)Cp1w$=*6oE7Q zoTLS)0KRwGE~mC39@ucyzgy5N0nY4t^hf1CfipXc=CzhCaI(eghcGcbXS{?aVv#^< zWL`lNF@P`_1gguzvAqq&BmE~h0f>LuxpU>AywEq4ye+6oP z|AOa3{j_|2!?HCnN^Pm<^`6fDk>>O^fKkqab#VCcuModqZe{UL(tdeM*z>jcy>gfL z&$EIp^`zeRyy@Sf3LCE0o`sV`dsVlpLSO5B^hjWA>rjP{2sJn`Uu9ME=~0jBX^cJR zD?TniEnjKfb8MCq;#5j4t#+Tgg62 zAFzA^(b;Y%{!yJvXTiC0ht`))`t}1a;d{egJg_yLUcFW`{XcYxzUk%Wu>lN^7y7!< zKG4JAqZVu^ij&*wxHH_C8OHTn_Z9mci?BNypfi5DAjmhk({W$v9Rs@S0o`@{STtE+ z?X-6F-6vuwnoU=?{w9?`5zz15Y5A_FfRV7T8-_YmhbRJXV});d{gp_TO?p(XWwjHDw>>HmC)2dFlk8+c# zEVD1r8;h^ez(mfhBWZV97tZ-8Vo@IlzVK9XTs;0hh{}>=lkeGyVK=zBxwqO0|J8UJ zC_t>Lb6Syqx)fXbikVn)M7s0D7spQ6qQj_hp;>rBs4EXocptKkTlp2l^B~bxzMXFt zu|~GO;yZhne?6SVb!!t>2S${Vzt`CH)15 zMP3Y_YwevTaU8T`*oar|85>Q({#Q`@S2)&@g-_@Si;1<=DS*E+=SSV#E{f^8 zNoLDBUjC%nwe5S(ns!DTcQ4+5Q$0a<@$PHphw{UlzL=XLQTV8NgF|`;fe5YB3wAFz zfpA8l4BtK>Vc{j{Lw3l0PLZmID`wL4Jc?>+Vcm_9YCGx*lhm~simLA-)E8`$=mxJP zAVO;;FVweIY^OtVLDW~19Z0w&o=UO5ZX91JZIGF9#TcWS<&qHboo=k{K?XI(_qg@D z4Z64M;lLP|1!6m|JEd04QEfzLv8kruFx#(`iAa7pi$r%zFNtkj6K+EWXB)5IYqgyV z_noYC8hfpYr1pbsJCc-dN1}$`AmL*TXQ3BlVa9-SbIxt1f+5v0#%$jD^3sD81vLjt zDfsj%Ngb5)iee6m9QinjdUOu0M(vXG=IG1V3FR{rZ%gdnbBwjJzpY%!s<*9eTBKMD zL%n?bWccn#Z{PlL4`)Y~BE;nzfdwHh>{FIZum~8N*Q@JW!(7)$ z>x%+8xphUE4Xo+KT*$mdk)#T$EM8G8_XN9n|0-CZFTQjSmfe=0S1L*iOX=!IqVLA3 z??x`!M-L%xs6mm%Hb)+9PNENlFFZ_kCUd|WF=uZe2EB`8kY#w{oSZ1pqVu2h(4QoGM?r?F7I+#^4f+kR@okEyLdv`bo7A7k{muxl^C&P*TEWIH8?srQ3t z%d1HP>;JvU%hISeYp?s$P^UiF7cpeOdh7!Y(}c=8`M3Q z=SGaeOYkWs>T#ohkG@+$m7tiKo-auw3`2!-fif-qeaXJy>#~;|B<5ZY4GP?Eqb}-^ zWsyI)o#6d~J__=~yC0PVvXzjIS-aH>>$=#H%2rKa@${&pTKz%9z^T;sG;R#9APriA zg?a5XMUCv4gfv&Rm}erMLuwyJoM@`^9)`diq#0pRd&CX_KH62nc(|iJb8Wvwv?>7| zB(4|uP&YeWNQCBtW8*6Ku%CCHlaJ(l+?o^uJrDd z+l2~7xG-HW?wWmb3f>E{3l2uH!#W#Ak=FZe5Ht|v*K-&tCv?K-ZE|dtH=t)TM39NG z&g=F5dv=h5&oA=?j2aWWcuYQ_6Qq>^y(c_7%ZNm6+ zwvoAe)!!j$Cazjvm_x0|*1a;T`K=h47)hXu#%uv6-`BGk$#qE9KW|=Eu4Q<8q^%xRB43hCO&NcLBo>C4q zHFM0^r9!0CtcHm&6{j6G+c^EuWJAY@=MRUJKKHeNahZc&cKfg-11%kYfLU{TKIBi} zOPDEaW9M!GX13;jik8|x*{_CjW=k{VnMd9nmVJFNnYcSAc2hjXEy9@R#_--4T(Cc{ zvK>x-?`z2|f6ItOw4UH0ZCK}#gWDN&S=qGNY=H-LU29nt(%V4Rt#MYIV z@HYX~JU<$L$U01ugOu0qq`0h6!#LVlxK)+oMdnH`zh#H<{dTQ2S9j^#Z*o> ztOHLxwa-&Iv##9s3NnY;+PE5F!XQ^?-f#nFB^3f{vv(m-|> zu%Z31b+b?Ow2q@OEKe27wpcNIkoeT_Tdd}X?AQOc`U?D~)mIAS;0j=~F612SK&m=9 zn~H_Gjfo`4lUxsovy=03aFX*0aFQF4v%NEMenxQtH1@Bex`hkK&DqSth5Q-pmGN|y z({KgA+rKe6c5=?=TGWBX8vu2II{qfhvXgWDQ_XYoJ7+=_atsC*`qORK@r4 z_I&rA&G-K5Y<*dJyk!?C3KE|TY95dSYC#S|c0UC-e3k^Nz#BIook8C^pFo)Z!bAP1o zYzcLtLs`|!^mzw$juv8Mjl-y?Q47flSw^FIYJ!XXkLFwO%iZ&Phl(AP#xXxEx$hIm zhS4Rri{LHkSxI76a?#7%5)YTR*mSVP78Vk#ANbLh%aadlpPFaZkT37!2$CaqPX~I2yR33)l8g zU-}JQjNxu^jFuhxesu*Sf~<{Nt;VMs%z&{0{JDk8oMI09?zXcb*L`lTtDZx24ey$*dvskPP9ZELwQSZ_%Y48%h zecKJ%jToXklopC^HdK0n7un2TgSDsiq&#H@dKl4VwZ!8810oA`vlwfAVv@ZK@MQi`KI3 zN)05fRjLi7_qeK9K#6Jjy0ZMi*llMBY$xbYFD#++nvbaOb5N7yR)-{{4om zT;c^&jU2-#gEB1Cx9=I4C27tBL(9+%-|uATh|4cJLJp$FV1A@KR4p_bDDP4qhOxK? znXjN@a$HU8GbV4g*Z|9!>sedme-CZ_u~)Un3vS1g`M?9{Ivu|cdBobc&e!+9u=-B!5rjJt5d`FYEG$;JFjbSgK1P{(WA=>h=4@w& zpA&NX*Ps*erKw4f!&m;9ISo*W{pI{P9-G z30>6IL8D`?$RR`o;->)N_Oe<8u8Cul+5BBDFfOZI_Qq(njPaHbP9J_RbDu-C@r)@j)BVvSm!Z4%#7!F;~mo9zW zANhYo)d>%byC_m!Vh!C&hIWZ25Oc$Qw_SMc_-ocUZrojf$Y)mT@XYf23pt+2pJR&l zi#jLb^e<(Qt@~=YSiV}zUEm5^ila0j8odrHni*TZf}wMA7fj~&)oUZO<5*3aKr1^H zKlMA|!uyGf;miqY8?$AU%F*{POhqa-Fw6+0!F=U~G!Oetbt45$-1|M(yRb1?3uQ^t zDam8RR+8AFezY(LTrw;gx=-Q0ROz9uuiil1(`>wucu`)`pmyJ{h|Q;9O6@#MPWej_ z^J=4>_x!Pm1~Jh5fV5CZ_}mBHb3oS*Z6t{T_ZTphv;V*_y^be-3Pt%@an!Q7(LcG$1aF7678VYxariada7wtg? zH^Ud%+};%(sqQH6H!s?8`30e;^2lA10SRTQ+YixR`g`S{SSL~K2$ZRapkQIjpx~|_ z%#BhV2Je#U*5B2JMEW_KWgcd)&lWKYpG(eEq}Rjk&*UYT=jqLLuu`a+zub&x-+UD< zUFbaDhu=LA=*iqEr6u3hsVb3#d>m1XGI=(nL-_+cC#LJ5ua&oAB)Gjb40d6;yMt#6 z=}qiy4*4+!kq0F6!7a$Z_Ij>7Hu zeLa^CF-k$V@N{+k@@?)-NFT=}nNWSoIkSJGy>qF?7gQvV-J&u=<98)7y-*86)PEa> zrZh}49%TK2et<9khm0bZ#p_dk$MYN=JPIL3BpEgY(U2uQk`L5=L=QjP1qL>4PHB@f z$>If!c(dOl9$cx{DLH4HprOrqnNr;OF(U(i?qY*#q4qT5*qGo?s>2SKm2s)i@piKi zie6}gZ+O9Ppfq*rD=-6VaqKRb^!-jpR@XI?HP#}(H_iIu2O_h*aZBq&jEZX~3~8p6 z|KX3lB_f$U6zWclcH&>=PRpASlT`W?+{eD+&PxIAQnxuvWauwntN5HqqLBxU=U(ZvV%c{SO%z>!gCI_`CmgA8^14^FnVh4If59iFOs))Ba%d73tfx?%rwtv9%&AqFBd#eeB(XL2N!P-rmsCn%b+xDHgsrV>RC? z&_t@8T#2QYbna@~nl5zZ)v0MQ_VYqIKlPJcMRw(eKc6|N(~JpCH|=TCXj-X=bE}g7 zA!QsN!q0fxNNbM*j7o*MaQl+zu_aSISglWz2+>1eBF%~$Vd{LdB53yTr-^(RUmGR= zFzJLb%Qvf?w)gV}nv`~p)WnjAe?l$Oid3!fk6f3^&r+*A#voFUe4m>ZJd15Uw};_gr{~)r&6L^^p|I-V`;!f+8|-HP)qnQzZc2f9YNE<} zw?}*JZKN;fH7{ol&wBlLs++&mp40dJ4s=bFKDI#i zt-POSiq7Y>{!%90mJheCwSBky@aNs;Gv`#hmgh%kObAZq|M>0e)tSaq>>IXupVUb@ zIh|cPYLC>zfUK(ANzYRL)KnTNmQQ^$wd!tI%UQR5*EjYxKQ8*yVi?}C^|I1s$2%4C zbIV^o`e&|lAWX#NscCZ{tHJNW!%?$uhnAE-`DS|fYew7sba9QPL2DsmaoDPSi?Ux6Xdx|{@ zy7jV@#r($g-@g4EhnDACK6tBpqHxQ8O&g1zWz$;f63#^U7Nk65^W3<9vP9C3Ne>S0 zTIfC7JjZmU+B;SIce2(SLao-fiHARC6LXQtGmTC7eK_FOkcFU_~rre0)}Zk6IEBOdf&>qquBB8yN9QoT2!qX{C2JVd1vFK zKa%^(I&4<=apkBcteLdv^Y&kF#M)i&HB4dTQ#s-GVWGl*bEDnBQxr2NiCSrASoHnM zSoV3+lfDUU2g6?;543ubTFM>7wqx_u>$_&>^<7-dut-E&lkp$N;+GLmgo-YP8EXbz z{96AaI^%MUisZ*Rl}y^Uv5M4}%2y^Xm-t!nVK%S)8GhC5 zJvWvqbTeAbGG9_Hx1w?SrfTcRldEi3r(%iga1yfKz9XKSAT#{d;02~Vdb;84e zJ$6F{V;}~O3Iu0XrGg~%JzW%{Z7h;3(hQ9g4GoMf3{n$Q4NVPz2O3+XTAHPprI;I- z8`u$60qW=@R&6IIF)*sR9lIOH Date: Thu, 15 Mar 2018 23:14:20 -0400 Subject: [PATCH 28/31] Final code update --- tron-nc01.py | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/tron-nc01.py b/tron-nc01.py index dcaac0ad..dbf74f8e 100644 --- a/tron-nc01.py +++ b/tron-nc01.py @@ -37,7 +37,6 @@ def __init__(self,cell_length,width,height): self.player_paths = [] self.player1 = Player(self.screen,10,(self.width/2+100),(self.height/2),"r",(255,140,0)) self.player2 = Player(self.screen,10,(self.width/2-100),(self.height/2),"l",(0,255,0)) - self.cells_loc = {} for i in range(self.height//cell_length): for j in range(self.width//cell_length): self.cell_lst.append(Cell((i*self.cell_length,j*self.cell_length),cell_length)) @@ -144,22 +143,6 @@ def crash(self): return True return False -class PlayerPath(object): - def __init__(self,model): - self.model = model - self.model.cells_loc = {} - for i in range(self.model.height): - for j in range(self.model.height): - cell_coords = (i*self.model.cell_length,j*self.model.cell_length) - self.model.cells_loc[(i,j)] = Cell(self.model.screen,cell_coords,cell_size) - self.model.hit_cells = [(self.model.player1.x,self.model.player1.y),(self.model.player2.x,self.model.player2.y)] - - def update(self): - if (self.model.player1.x,self.model.player1,y) not in self.hit_cells: - self.hit_cells.append((self.model.player1.x, self.model.player1.y)) - if (self.model.player2.x,self.model.player2.y) not in self.hit_cells: - self.hit_cells.append((self.model.player2.x,self.model.player2.y)) - class KeyControl(object): def __init__(self, model): self.model = model From 331d96b4dffaffa06de94b74bf3061f2b1827f10 Mon Sep 17 00:00:00 2001 From: Naomi Date: Thu, 15 Mar 2018 23:16:12 -0400 Subject: [PATCH 29/31] README --- README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README.md b/README.md index 5f822327..6497f2b5 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,18 @@ # InteractiveProgramming This is the base repo for the interactive programming project for Software Design, Spring 2018 at Olin College. + +Packages needed: +pygame (pip install pygame) + +To run tron-master.py, enter python3 tron-master.py in the terminal window. + +How to play Tron: +WASD keys are used to control the green player while the arrow keys control the orange player. +To win the game, you must be the last one standing. +You die when you hit the walls surrounding the playing grid or if you run into either your or the other player's path indicated by the colored strip left behind. +After a game ends, you can press the space bar to play again. +Enjoy! + +Link to Write-up and Reflection: +https://github.com/chiunaomi/InteractiveProgramming/blob/master/MP4%20Write-up%20and%20Reflection.pdf + From 73481719920dd5ef4b0ff324747da926c1c77369 Mon Sep 17 00:00:00 2001 From: Naomi Date: Thu, 15 Mar 2018 23:28:02 -0400 Subject: [PATCH 30/31] Final Tron Game --- tron-master.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/tron-master.py b/tron-master.py index e758dff4..56a4a03a 100644 --- a/tron-master.py +++ b/tron-master.py @@ -35,7 +35,7 @@ def draw(self): pygame.display.update() class TronModelView(object): - """Contains the players, the game state, all cells, and the cells that have been hit.""" + """Model object containing the players, the game state, all cells, and the cells that have been hit.""" def __init__(self,cell_length,width,height): pygame.init() size = (width,height) @@ -58,8 +58,8 @@ def _draw_players(self): self.player2.draw() def in_cell(self): - """Loops through cell_lst to find the cell whos xrange contains player.x - and whos yrange contains player.y, and sets the player location to within that cell.""" + """Loops through cell_lst to find the cell whose xrange contains player.x + and whose yrange contains player.y, and sets the player location to be within that cell.""" for cell in self.cell_lst: if self.player1.x in cell.xrange and self.player1.y in cell.yrange: self.player1.current_cell = cell @@ -70,7 +70,7 @@ def in_cell(self): break def update(self): - """Checks for new input and updates the game model.""" + """Checks for new inputs and updates the game model.""" self.player1.update() self.player2.update() if self.player1.crash(): @@ -96,7 +96,7 @@ def update(self): self.end_game("ORANGE ") def end_game(self,player): - """Contains end game protocall""" + """Contains end game protocol""" pygame.display.set_caption(player + "WINS!") self.game_over = True self.player1.dir = "None" @@ -124,7 +124,7 @@ def draw(self): pygame.draw.rect(self.draw_screen, self.color, rect, line_width) class Player(object): - """Contains players location, direcection and speed, as well as their color""" + """Contains player's location, direction and speed, as well as their color""" def __init__(self, draw_screen, dimension, start_posx, start_posy, direction, color=(255,255,255)): self.draw_screen = draw_screen self.width = dimension @@ -143,7 +143,7 @@ def draw(self): def update(self): """Checks if players have changed directions, and then - adds the amount given by vx to the relevant direction""" + adds the correct number of pixels to the player's position in the relevant direction""" if self.dir == "r": self.vx = 10 self.vy = 0 @@ -164,7 +164,7 @@ def update(self): def crash(self): """Determines what happens if a player runs of the screen. - Called by the end_game function contained in the game model.""" + Used by the model to check if a player has lost.""" if self.x == 640 or self.x == -10: return True if self.y == -10 or self.y == 480: @@ -212,8 +212,8 @@ def handle_event(self, event): if __name__ == '__main__': def main_loop(): - """A loop which runs the game until the end came protocall is called. - Hit space bar to restart game once game is over""" + """A nested loop which initializes the game and runs the model until the end game protocol is called. + Hitting the space bar after a game ends reinitializes the loop which allows for a new match""" pygame.init() running = True while running: @@ -225,12 +225,12 @@ def main_loop(): game_over = False while not game_over: for event in pygame.event.get(): - if event.type == QUIT: + if event.type == QUIT: #if the window is closed, break out of the two while loops and go to pygame.quit() running = False game_over = True - if controller.handle_event(event): + if controller.handle_event(event): #checks to see if the game has ended and the spacebar was pressed, if yes then the inner loop is broken and the game is reinitialized game_over = True - controller.handle_event(event) + controller.handle_event(event) #handles regular keypress events model.update() view.draw() time.sleep(.1) From b847cddc0fbec7af438919709427afebca4bd642 Mon Sep 17 00:00:00 2001 From: chiunaomi <31549458+chiunaomi@users.noreply.github.com> Date: Mon, 7 May 2018 17:34:39 -0400 Subject: [PATCH 31/31] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6497f2b5..57f0316c 100644 --- a/README.md +++ b/README.md @@ -2,14 +2,14 @@ This is the base repo for the interactive programming project for Software Design, Spring 2018 at Olin College. Packages needed: -pygame (pip install pygame) +pygame (`pip install pygame`) -To run tron-master.py, enter python3 tron-master.py in the terminal window. +To run `tron-master.py`, enter `python3 tron-master.py` in the terminal window. How to play Tron: WASD keys are used to control the green player while the arrow keys control the orange player. To win the game, you must be the last one standing. -You die when you hit the walls surrounding the playing grid or if you run into either your or the other player's path indicated by the colored strip left behind. +You die if you hit the walls surrounding the playing grid or if you run into the walls created from both players' paths indicated by the colored strips. After a game ends, you can press the space bar to play again. Enjoy!