From e3767047dbf79c86465ef8c6ba5e6ca5ef578c1e Mon Sep 17 00:00:00 2001 From: Apress Date: Fri, 7 Oct 2016 03:55:57 +0100 Subject: [PATCH] First commit --- 2490.pdf | Bin 0 -> 182807 bytes 2491.pdf | Bin 0 -> 955134 bytes LICENSE.txt | 27 + README.md | 15 + ch03/build.dtd.xml | 14 + ch03/build.properties | 2 + ch03/build.properties.default | 2 + ch03/build.start.properties | 17 + ch03/build.xml | 227 +++ ch04/build.xml | 150 ++ ch05/build.properties | 65 + ch05/build.xml | 288 +++ ch05/src/shared/conf/SQL/plants.sql | 13 + ch05/src/shared/conf/SQL/plantsDelete.sql | 3 + ch05/src/shared/conf/SQL/plantsDrop.sql | 1 + ch05/src/shared/conf/SQL/plantsInsert.sql | 15 + ch05/src/shared/conf/database.properties | 7 + ch05/src/shared/docs/LICENSE | 203 +++ ch05/src/shared/docs/README | 4 + ch05/src/shared/docs/index.html | 19 + .../java/org/mwrm/plants/Constants.java | 47 + .../org/mwrm/plants/PropertiesLoader.java | 53 + .../java/org/mwrm/plants/SelectData.java | 156 ++ .../shared/java/org/mwrm/plants/package.html | 8 + ch05/src/stand-alone/docs/index.html | 19 + .../org/mwrm/plants/client/PlantClient.java | 154 ++ .../java/org/mwrm/plants/client/package.html | 8 + ch05/src/web/conf/antBook.xml | 3 + ch05/src/web/conf/plant.tld | 32 + ch05/src/web/conf/web.xml | 66 + ch05/src/web/docs/index.html | 19 + ch05/src/web/images/banner_under.jpg | Bin 0 -> 21943 bytes ch05/src/web/images/cyc_cou.jpg | Bin 0 -> 15502 bytes ch05/src/web/images/gal_niv.jpg | Bin 0 -> 14827 bytes ch05/src/web/images/no_image.jpg | Bin 0 -> 8646 bytes ch05/src/web/images/ran_fic.jpg | Bin 0 -> 13703 bytes ch05/src/web/images/tul_tur.jpg | Bin 0 -> 21047 bytes .../mwrm/plants/servlets/PlantServlet.java | 209 +++ .../org/mwrm/plants/servlets/package.html | 8 + .../java/org/mwrm/plants/tags/LettersTag.java | 63 + .../java/org/mwrm/plants/tags/package.html | 8 + ch05/src/web/pages/footer.html | 3 + ch05/src/web/pages/header.jsp | 16 + ch05/src/web/pages/index.jsp | 4 + ch05/src/web/pages/indexBody.jsp | 1 + ch05/src/web/pages/menu.jsp | 5 + ch05/src/web/pages/plantStyle.css | 75 + ch05/src/web/pages/plants/displayPlant.jsp | 15 + .../src/web/pages/plants/displayPlantBody.jsp | 31 + ch05/src/web/pages/plants/displayResults.jsp | 5 + .../web/pages/plants/displayResultsBody.jsp | 63 + ch05/src/web/pages/plants/index.jsp | 5 + ch05/src/web/pages/plants/searchForm.jsp | 1 + ch05/src/web/pages/template.jsp | 47 + ch05/src/web/tags/simple.tag | 12 + ch06/build.properties | 100 ++ ch06/build.xml | 899 ++++++++++ ch06/src/shared/conf/SQL/plants.sql | 13 + ch06/src/shared/conf/SQL/plantsDelete.sql | 3 + ch06/src/shared/conf/SQL/plantsDrop.sql | 1 + ch06/src/shared/conf/SQL/plantsInsert.sql | 15 + ch06/src/shared/conf/database.properties | 7 + ch06/src/shared/docs/LICENSE | 203 +++ ch06/src/shared/docs/README | 4 + ch06/src/shared/docs/index.html | 19 + .../java/org/mwrm/plants/Constants.java | 47 + .../org/mwrm/plants/PropertiesLoader.java | 53 + .../java/org/mwrm/plants/SelectData.java | 156 ++ .../shared/java/org/mwrm/plants/package.html | 8 + ch06/src/stand-alone/docs/index.html | 19 + .../org/mwrm/plants/client/PlantClient.java | 154 ++ .../java/org/mwrm/plants/client/package.html | 8 + ch06/src/web/conf/antBook.xml | 3 + ch06/src/web/conf/plant.tld | 32 + ch06/src/web/conf/web.xml | 66 + ch06/src/web/docs/index.html | 19 + ch06/src/web/images/banner_under.jpg | Bin 0 -> 21943 bytes ch06/src/web/images/cyc_cou.jpg | Bin 0 -> 15502 bytes ch06/src/web/images/gal_niv.jpg | Bin 0 -> 14827 bytes ch06/src/web/images/no_image.jpg | Bin 0 -> 8646 bytes ch06/src/web/images/ran_fic.jpg | Bin 0 -> 13703 bytes ch06/src/web/images/tul_tur.jpg | Bin 0 -> 21047 bytes .../mwrm/plants/servlets/PlantServlet.java | 209 +++ .../org/mwrm/plants/servlets/package.html | 8 + .../java/org/mwrm/plants/tags/LettersTag.java | 63 + .../java/org/mwrm/plants/tags/package.html | 8 + ch06/src/web/pages/footer.html | 3 + ch06/src/web/pages/header.jsp | 16 + ch06/src/web/pages/index.jsp | 4 + ch06/src/web/pages/indexBody.jsp | 1 + ch06/src/web/pages/menu.jsp | 5 + ch06/src/web/pages/plantStyle.css | 75 + ch06/src/web/pages/plants/displayPlant.jsp | 15 + .../src/web/pages/plants/displayPlantBody.jsp | 31 + ch06/src/web/pages/plants/displayResults.jsp | 5 + .../web/pages/plants/displayResultsBody.jsp | 63 + ch06/src/web/pages/plants/index.jsp | 5 + ch06/src/web/pages/plants/searchForm.jsp | 1 + ch06/src/web/pages/template.jsp | 47 + ch06/src/web/tags/simple.tag | 12 + ch07/build.properties | 110 ++ ch07/build.xml | 1024 +++++++++++ ch07/src/shared/conf/SQL/plants.sql | 13 + ch07/src/shared/conf/SQL/plantsDelete.sql | 3 + ch07/src/shared/conf/SQL/plantsDrop.sql | 1 + ch07/src/shared/conf/SQL/plantsInsert.sql | 15 + ch07/src/shared/conf/database.properties | 7 + ch07/src/shared/docs/LICENSE | 203 +++ ch07/src/shared/docs/README | 4 + ch07/src/shared/docs/index.html | 19 + .../java/org/mwrm/plants/Constants.java | 47 + .../org/mwrm/plants/PropertiesLoader.java | 53 + .../java/org/mwrm/plants/SelectData.java | 156 ++ .../shared/java/org/mwrm/plants/package.html | 8 + ch07/src/stand-alone/docs/index.html | 19 + .../org/mwrm/plants/client/PlantClient.java | 154 ++ .../java/org/mwrm/plants/client/package.html | 8 + ch07/src/web/conf/antBook.xml | 3 + ch07/src/web/conf/plant.tld | 32 + ch07/src/web/conf/web.xml | 66 + ch07/src/web/docs/index.html | 19 + ch07/src/web/images/banner_under.jpg | Bin 0 -> 21943 bytes ch07/src/web/images/cyc_cou.jpg | Bin 0 -> 15502 bytes ch07/src/web/images/gal_niv.jpg | Bin 0 -> 14827 bytes ch07/src/web/images/no_image.jpg | Bin 0 -> 8646 bytes ch07/src/web/images/ran_fic.jpg | Bin 0 -> 13703 bytes ch07/src/web/images/tul_tur.jpg | Bin 0 -> 21047 bytes .../mwrm/plants/servlets/PlantServlet.java | 209 +++ .../org/mwrm/plants/servlets/package.html | 8 + .../java/org/mwrm/plants/tags/LettersTag.java | 63 + .../java/org/mwrm/plants/tags/package.html | 8 + ch07/src/web/pages/footer.html | 3 + ch07/src/web/pages/header.jsp | 16 + ch07/src/web/pages/index.jsp | 4 + ch07/src/web/pages/indexBody.jsp | 1 + ch07/src/web/pages/menu.jsp | 5 + ch07/src/web/pages/plantStyle.css | 75 + ch07/src/web/pages/plants/displayPlant.jsp | 15 + .../src/web/pages/plants/displayPlantBody.jsp | 31 + ch07/src/web/pages/plants/displayResults.jsp | 5 + .../web/pages/plants/displayResultsBody.jsp | 63 + ch07/src/web/pages/plants/index.jsp | 5 + ch07/src/web/pages/plants/searchForm.jsp | 1 + ch07/src/web/pages/template.jsp | 47 + ch07/src/web/tags/simple.tag | 12 + ch08/build.properties | 130 ++ ch08/build.xml | 1344 ++++++++++++++ ch08/src/shared/conf/SQL/plants.sql | 13 + ch08/src/shared/conf/SQL/plantsDelete.sql | 3 + ch08/src/shared/conf/SQL/plantsDrop.sql | 1 + ch08/src/shared/conf/SQL/plantsInsert.sql | 15 + ch08/src/shared/conf/database.properties | 7 + ch08/src/shared/docs/LICENSE | 203 +++ ch08/src/shared/docs/README | 4 + ch08/src/shared/docs/index.html | 19 + .../java/org/mwrm/plants/Constants.java | 47 + .../org/mwrm/plants/PropertiesLoader.java | 53 + .../java/org/mwrm/plants/SelectData.java | 156 ++ .../shared/java/org/mwrm/plants/package.html | 8 + ch08/src/stand-alone/docs/index.html | 19 + .../org/mwrm/plants/client/PlantClient.java | 154 ++ .../java/org/mwrm/plants/client/package.html | 8 + ch08/src/web/conf/antBook.xml | 3 + ch08/src/web/conf/plant.tld | 32 + ch08/src/web/conf/web.xml | 66 + ch08/src/web/docs/index.html | 19 + ch08/src/web/images/banner_under.jpg | Bin 0 -> 21943 bytes ch08/src/web/images/cyc_cou.jpg | Bin 0 -> 15502 bytes ch08/src/web/images/gal_niv.jpg | Bin 0 -> 14827 bytes ch08/src/web/images/no_image.jpg | Bin 0 -> 8646 bytes ch08/src/web/images/ran_fic.jpg | Bin 0 -> 13703 bytes ch08/src/web/images/tul_tur.jpg | Bin 0 -> 21047 bytes .../mwrm/plants/servlets/PlantServlet.java | 209 +++ .../org/mwrm/plants/servlets/package.html | 8 + .../java/org/mwrm/plants/tags/LettersTag.java | 63 + .../java/org/mwrm/plants/tags/package.html | 8 + ch08/src/web/pages/footer.html | 3 + ch08/src/web/pages/header.jsp | 16 + ch08/src/web/pages/index.jsp | 4 + ch08/src/web/pages/indexBody.jsp | 1 + ch08/src/web/pages/menu.jsp | 5 + ch08/src/web/pages/plantStyle.css | 75 + ch08/src/web/pages/plants/displayPlant.jsp | 15 + .../src/web/pages/plants/displayPlantBody.jsp | 31 + ch08/src/web/pages/plants/displayResults.jsp | 5 + .../web/pages/plants/displayResultsBody.jsp | 63 + ch08/src/web/pages/plants/index.jsp | 5 + ch08/src/web/pages/plants/searchForm.jsp | 1 + ch08/src/web/pages/template.jsp | 47 + ch08/src/web/tags/simple.tag | 12 + ch08/test/org/mwrm/plants/PlantWebTest.java | 110 ++ ch08/test/org/mwrm/plants/package.html | 8 + ch09/build.jstl.xml | 44 + ch09/build.mysql.xml | 41 + ch09/build.package.xml | 358 ++++ ch09/build.properties | 136 ++ ch09/build.xml | 550 ++++++ ch09/src/shared/conf/SQL/plants.sql | 13 + ch09/src/shared/conf/SQL/plantsDelete.sql | 3 + ch09/src/shared/conf/SQL/plantsDrop.sql | 1 + ch09/src/shared/conf/SQL/plantsInsert.sql | 15 + ch09/src/shared/conf/database.properties | 7 + ch09/src/shared/docs/LICENSE | 203 +++ ch09/src/shared/docs/README | 4 + ch09/src/shared/docs/index.html | 19 + .../java/org/mwrm/plants/Constants.java | 47 + .../org/mwrm/plants/PropertiesLoader.java | 53 + .../java/org/mwrm/plants/SelectData.java | 156 ++ .../shared/java/org/mwrm/plants/package.html | 8 + ch09/src/stand-alone/docs/index.html | 19 + .../org/mwrm/plants/client/PlantClient.java | 154 ++ .../java/org/mwrm/plants/client/package.html | 8 + ch09/src/web/conf/antBook.xml | 3 + ch09/src/web/conf/plant.tld | 32 + ch09/src/web/conf/web.xml | 66 + ch09/src/web/docs/index.html | 19 + ch09/src/web/images/banner_under.jpg | Bin 0 -> 21943 bytes ch09/src/web/images/cyc_cou.jpg | Bin 0 -> 15502 bytes ch09/src/web/images/gal_niv.jpg | Bin 0 -> 14827 bytes ch09/src/web/images/no_image.jpg | Bin 0 -> 8646 bytes ch09/src/web/images/ran_fic.jpg | Bin 0 -> 13703 bytes ch09/src/web/images/tul_tur.jpg | Bin 0 -> 21047 bytes .../mwrm/plants/servlets/PlantServlet.java | 209 +++ .../org/mwrm/plants/servlets/package.html | 8 + .../java/org/mwrm/plants/tags/LettersTag.java | 63 + .../java/org/mwrm/plants/tags/package.html | 8 + ch09/src/web/pages/footer.html | 3 + ch09/src/web/pages/header.jsp | 16 + ch09/src/web/pages/index.jsp | 4 + ch09/src/web/pages/indexBody.jsp | 1 + ch09/src/web/pages/menu.jsp | 5 + ch09/src/web/pages/plantStyle.css | 75 + ch09/src/web/pages/plants/displayPlant.jsp | 15 + .../src/web/pages/plants/displayPlantBody.jsp | 31 + ch09/src/web/pages/plants/displayResults.jsp | 5 + .../web/pages/plants/displayResultsBody.jsp | 63 + ch09/src/web/pages/plants/index.jsp | 5 + ch09/src/web/pages/plants/searchForm.jsp | 1 + ch09/src/web/pages/template.jsp | 47 + ch09/src/web/tags/simple.tag | 12 + ch09/test/build.xml | 297 +++ ch09/test/org/mwrm/plants/PlantWebTest.java | 110 ++ ch09/test/org/mwrm/plants/package.html | 8 + ch10/ant/org/mwrm/ant/tasks/ClassSetTask.java | 60 + .../org/mwrm/ant/tasks/ExtendJavadocTask.java | 188 ++ .../mwrm/ant/tasks/LifeCycleNestedTask.java | 347 ++++ .../ant/org/mwrm/ant/tasks/LifeCycleTask.java | 194 ++ .../org/mwrm/ant/tasks/ProjectHelpTask.java | 72 + ch10/ant/org/mwrm/ant/tasks/package.html | 8 + ch10/antBook.antlib.xml | 39 + ch10/antlib.xml | 22 + ch10/build.properties | 139 ++ ch10/build.xml | 1468 +++++++++++++++ ch10/src/shared/conf/SQL/plants.sql | 13 + ch10/src/shared/conf/SQL/plantsDelete.sql | 3 + ch10/src/shared/conf/SQL/plantsDrop.sql | 1 + ch10/src/shared/conf/SQL/plantsInsert.sql | 15 + ch10/src/shared/conf/database.properties | 7 + ch10/src/shared/docs/LICENSE | 203 +++ ch10/src/shared/docs/README | 4 + ch10/src/shared/docs/index.html | 19 + .../java/org/mwrm/plants/Constants.java | 47 + .../org/mwrm/plants/PropertiesLoader.java | 53 + .../java/org/mwrm/plants/SelectData.java | 156 ++ .../shared/java/org/mwrm/plants/package.html | 8 + ch10/src/stand-alone/docs/index.html | 19 + .../org/mwrm/plants/client/PlantClient.java | 154 ++ .../java/org/mwrm/plants/client/package.html | 8 + ch10/src/web/conf/antBook.xml | 3 + ch10/src/web/conf/plant.tld | 32 + ch10/src/web/conf/web.xml | 66 + ch10/src/web/docs/index.html | 19 + ch10/src/web/images/banner_under.jpg | Bin 0 -> 21943 bytes ch10/src/web/images/cyc_cou.jpg | Bin 0 -> 15502 bytes ch10/src/web/images/gal_niv.jpg | Bin 0 -> 14827 bytes ch10/src/web/images/no_image.jpg | Bin 0 -> 8646 bytes ch10/src/web/images/ran_fic.jpg | Bin 0 -> 13703 bytes ch10/src/web/images/tul_tur.jpg | Bin 0 -> 21047 bytes .../mwrm/plants/servlets/PlantServlet.java | 209 +++ .../org/mwrm/plants/servlets/package.html | 8 + .../java/org/mwrm/plants/tags/LettersTag.java | 63 + .../java/org/mwrm/plants/tags/package.html | 8 + ch10/src/web/pages/footer.html | 3 + ch10/src/web/pages/header.jsp | 16 + ch10/src/web/pages/index.jsp | 4 + ch10/src/web/pages/indexBody.jsp | 1 + ch10/src/web/pages/menu.jsp | 5 + ch10/src/web/pages/plantStyle.css | 75 + ch10/src/web/pages/plants/displayPlant.jsp | 15 + .../src/web/pages/plants/displayPlantBody.jsp | 31 + ch10/src/web/pages/plants/displayResults.jsp | 5 + .../web/pages/plants/displayResultsBody.jsp | 63 + ch10/src/web/pages/plants/index.jsp | 5 + ch10/src/web/pages/plants/searchForm.jsp | 1 + ch10/src/web/pages/template.jsp | 47 + ch10/src/web/tags/simple.tag | 12 + ch10/test/org/mwrm/plants/PlantWebTest.java | 110 ++ ch10/test/org/mwrm/plants/package.html | 8 + .../ant/listeners/BuildEventListener.java | 116 ++ ch11/ant/org/mwrm/ant/listeners/package.html | 8 + .../mwrm/ant/loggers/BuildEventLogger.java | 195 ++ ch11/ant/org/mwrm/ant/loggers/package.html | 8 + ch11/ant/org/mwrm/ant/tasks/ClassSetTask.java | 60 + .../org/mwrm/ant/tasks/ExtendJavadocTask.java | 188 ++ .../mwrm/ant/tasks/LifeCycleNestedTask.java | 347 ++++ .../ant/org/mwrm/ant/tasks/LifeCycleTask.java | 194 ++ .../org/mwrm/ant/tasks/ProjectHelpTask.java | 72 + ch11/ant/org/mwrm/ant/tasks/package.html | 8 + ch11/antBook.antlib.xml | 39 + ch11/antlib.xml | 22 + ch11/build.properties | 144 ++ ch11/build.xml | 1595 +++++++++++++++++ ch11/log.xml | 14 + ch11/log.xsl | 210 +++ ch11/log4j.properties | 94 + ch11/mail.log.properties | 8 + ch11/src/shared/conf/SQL/plants.sql | 13 + ch11/src/shared/conf/SQL/plantsDelete.sql | 3 + ch11/src/shared/conf/SQL/plantsDrop.sql | 1 + ch11/src/shared/conf/SQL/plantsInsert.sql | 15 + ch11/src/shared/conf/database.properties | 7 + ch11/src/shared/docs/LICENSE | 203 +++ ch11/src/shared/docs/README | 4 + ch11/src/shared/docs/index.html | 19 + .../java/org/mwrm/plants/Constants.java | 47 + .../org/mwrm/plants/PropertiesLoader.java | 53 + .../java/org/mwrm/plants/SelectData.java | 156 ++ .../shared/java/org/mwrm/plants/package.html | 8 + ch11/src/stand-alone/docs/index.html | 19 + .../org/mwrm/plants/client/PlantClient.java | 154 ++ .../java/org/mwrm/plants/client/package.html | 8 + ch11/src/web/conf/antBook.xml | 3 + ch11/src/web/conf/plant.tld | 32 + ch11/src/web/conf/web.xml | 66 + ch11/src/web/docs/index.html | 19 + ch11/src/web/images/banner_under.jpg | Bin 0 -> 21943 bytes ch11/src/web/images/cyc_cou.jpg | Bin 0 -> 15502 bytes ch11/src/web/images/gal_niv.jpg | Bin 0 -> 14827 bytes ch11/src/web/images/no_image.jpg | Bin 0 -> 8646 bytes ch11/src/web/images/ran_fic.jpg | Bin 0 -> 13703 bytes ch11/src/web/images/tul_tur.jpg | Bin 0 -> 21047 bytes .../mwrm/plants/servlets/PlantServlet.java | 209 +++ .../org/mwrm/plants/servlets/package.html | 8 + .../java/org/mwrm/plants/tags/LettersTag.java | 63 + .../java/org/mwrm/plants/tags/package.html | 8 + ch11/src/web/pages/footer.html | 3 + ch11/src/web/pages/header.jsp | 16 + ch11/src/web/pages/index.jsp | 4 + ch11/src/web/pages/indexBody.jsp | 1 + ch11/src/web/pages/menu.jsp | 5 + ch11/src/web/pages/plantStyle.css | 75 + ch11/src/web/pages/plants/displayPlant.jsp | 15 + .../src/web/pages/plants/displayPlantBody.jsp | 31 + ch11/src/web/pages/plants/displayResults.jsp | 5 + .../web/pages/plants/displayResultsBody.jsp | 63 + ch11/src/web/pages/plants/index.jsp | 5 + ch11/src/web/pages/plants/searchForm.jsp | 1 + ch11/src/web/pages/template.jsp | 47 + ch11/src/web/tags/simple.tag | 12 + ch11/test/org/mwrm/plants/PlantWebTest.java | 110 ++ ch11/test/org/mwrm/plants/package.html | 8 + ch12/ant/org/mwrm/ant/api/Copyer.java | 100 ++ ch12/ant/org/mwrm/ant/api/Deployer.java | 354 ++++ ch12/ant/org/mwrm/ant/api/package.html | 8 + .../ant/listeners/BuildEventListener.java | 116 ++ ch12/ant/org/mwrm/ant/listeners/package.html | 8 + .../mwrm/ant/loggers/BuildEventLogger.java | 195 ++ ch12/ant/org/mwrm/ant/loggers/package.html | 8 + ch12/ant/org/mwrm/ant/tasks/ClassSetTask.java | 60 + .../org/mwrm/ant/tasks/ExtendJavadocTask.java | 188 ++ .../mwrm/ant/tasks/LifeCycleNestedTask.java | 347 ++++ .../ant/org/mwrm/ant/tasks/LifeCycleTask.java | 194 ++ .../org/mwrm/ant/tasks/ProjectHelpTask.java | 72 + ch12/ant/org/mwrm/ant/tasks/package.html | 8 + ch12/antBook.antlib.xml | 39 + ch12/antlib.xml | 22 + ch12/build.properties | 144 ++ ch12/build.xml | 1459 +++++++++++++++ ch12/log.xml | 14 + ch12/log.xsl | 210 +++ ch12/log4j.properties | 94 + ch12/mail.log.properties | 8 + ch12/src/shared/conf/SQL/plants.sql | 13 + ch12/src/shared/conf/SQL/plantsDelete.sql | 3 + ch12/src/shared/conf/SQL/plantsDrop.sql | 1 + ch12/src/shared/conf/SQL/plantsInsert.sql | 15 + ch12/src/shared/conf/database.properties | 7 + ch12/src/shared/docs/LICENSE | 203 +++ ch12/src/shared/docs/README | 4 + ch12/src/shared/docs/index.html | 19 + .../java/org/mwrm/plants/Constants.java | 47 + .../org/mwrm/plants/PropertiesLoader.java | 53 + .../java/org/mwrm/plants/SelectData.java | 156 ++ .../shared/java/org/mwrm/plants/package.html | 8 + ch12/src/stand-alone/docs/index.html | 19 + .../org/mwrm/plants/client/PlantClient.java | 154 ++ .../java/org/mwrm/plants/client/package.html | 8 + ch12/src/web/conf/antBook.xml | 3 + ch12/src/web/conf/plant.tld | 32 + ch12/src/web/conf/web.xml | 66 + ch12/src/web/docs/index.html | 19 + ch12/src/web/images/banner_under.jpg | Bin 0 -> 21943 bytes ch12/src/web/images/cyc_cou.jpg | Bin 0 -> 15502 bytes ch12/src/web/images/gal_niv.jpg | Bin 0 -> 14827 bytes ch12/src/web/images/no_image.jpg | Bin 0 -> 8646 bytes ch12/src/web/images/ran_fic.jpg | Bin 0 -> 13703 bytes ch12/src/web/images/tul_tur.jpg | Bin 0 -> 21047 bytes .../mwrm/plants/servlets/PlantServlet.java | 209 +++ .../org/mwrm/plants/servlets/package.html | 8 + .../java/org/mwrm/plants/tags/LettersTag.java | 63 + .../java/org/mwrm/plants/tags/package.html | 8 + ch12/src/web/pages/footer.html | 3 + ch12/src/web/pages/header.jsp | 16 + ch12/src/web/pages/index.jsp | 4 + ch12/src/web/pages/indexBody.jsp | 1 + ch12/src/web/pages/menu.jsp | 5 + ch12/src/web/pages/plantStyle.css | 75 + ch12/src/web/pages/plants/displayPlant.jsp | 15 + .../src/web/pages/plants/displayPlantBody.jsp | 31 + ch12/src/web/pages/plants/displayResults.jsp | 5 + .../web/pages/plants/displayResultsBody.jsp | 63 + ch12/src/web/pages/plants/index.jsp | 5 + ch12/src/web/pages/plants/searchForm.jsp | 1 + ch12/src/web/pages/template.jsp | 47 + ch12/src/web/tags/simple.tag | 12 + ch12/test/org/mwrm/plants/PlantWebTest.java | 110 ++ ch12/test/org/mwrm/plants/package.html | 8 + contributing.md | 14 + 428 files changed, 27159 insertions(+) create mode 100644 2490.pdf create mode 100644 2491.pdf create mode 100644 LICENSE.txt create mode 100644 README.md create mode 100644 ch03/build.dtd.xml create mode 100644 ch03/build.properties create mode 100644 ch03/build.properties.default create mode 100644 ch03/build.start.properties create mode 100644 ch03/build.xml create mode 100644 ch04/build.xml create mode 100644 ch05/build.properties create mode 100644 ch05/build.xml create mode 100644 ch05/src/shared/conf/SQL/plants.sql create mode 100644 ch05/src/shared/conf/SQL/plantsDelete.sql create mode 100644 ch05/src/shared/conf/SQL/plantsDrop.sql create mode 100644 ch05/src/shared/conf/SQL/plantsInsert.sql create mode 100644 ch05/src/shared/conf/database.properties create mode 100644 ch05/src/shared/docs/LICENSE create mode 100644 ch05/src/shared/docs/README create mode 100644 ch05/src/shared/docs/index.html create mode 100644 ch05/src/shared/java/org/mwrm/plants/Constants.java create mode 100644 ch05/src/shared/java/org/mwrm/plants/PropertiesLoader.java create mode 100644 ch05/src/shared/java/org/mwrm/plants/SelectData.java create mode 100644 ch05/src/shared/java/org/mwrm/plants/package.html create mode 100644 ch05/src/stand-alone/docs/index.html create mode 100644 ch05/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java create mode 100644 ch05/src/stand-alone/java/org/mwrm/plants/client/package.html create mode 100644 ch05/src/web/conf/antBook.xml create mode 100644 ch05/src/web/conf/plant.tld create mode 100644 ch05/src/web/conf/web.xml create mode 100644 ch05/src/web/docs/index.html create mode 100644 ch05/src/web/images/banner_under.jpg create mode 100644 ch05/src/web/images/cyc_cou.jpg create mode 100644 ch05/src/web/images/gal_niv.jpg create mode 100644 ch05/src/web/images/no_image.jpg create mode 100644 ch05/src/web/images/ran_fic.jpg create mode 100644 ch05/src/web/images/tul_tur.jpg create mode 100644 ch05/src/web/java/org/mwrm/plants/servlets/PlantServlet.java create mode 100644 ch05/src/web/java/org/mwrm/plants/servlets/package.html create mode 100644 ch05/src/web/java/org/mwrm/plants/tags/LettersTag.java create mode 100644 ch05/src/web/java/org/mwrm/plants/tags/package.html create mode 100644 ch05/src/web/pages/footer.html create mode 100644 ch05/src/web/pages/header.jsp create mode 100644 ch05/src/web/pages/index.jsp create mode 100644 ch05/src/web/pages/indexBody.jsp create mode 100644 ch05/src/web/pages/menu.jsp create mode 100644 ch05/src/web/pages/plantStyle.css create mode 100644 ch05/src/web/pages/plants/displayPlant.jsp create mode 100644 ch05/src/web/pages/plants/displayPlantBody.jsp create mode 100644 ch05/src/web/pages/plants/displayResults.jsp create mode 100644 ch05/src/web/pages/plants/displayResultsBody.jsp create mode 100644 ch05/src/web/pages/plants/index.jsp create mode 100644 ch05/src/web/pages/plants/searchForm.jsp create mode 100644 ch05/src/web/pages/template.jsp create mode 100644 ch05/src/web/tags/simple.tag create mode 100644 ch06/build.properties create mode 100644 ch06/build.xml create mode 100644 ch06/src/shared/conf/SQL/plants.sql create mode 100644 ch06/src/shared/conf/SQL/plantsDelete.sql create mode 100644 ch06/src/shared/conf/SQL/plantsDrop.sql create mode 100644 ch06/src/shared/conf/SQL/plantsInsert.sql create mode 100644 ch06/src/shared/conf/database.properties create mode 100644 ch06/src/shared/docs/LICENSE create mode 100644 ch06/src/shared/docs/README create mode 100644 ch06/src/shared/docs/index.html create mode 100644 ch06/src/shared/java/org/mwrm/plants/Constants.java create mode 100644 ch06/src/shared/java/org/mwrm/plants/PropertiesLoader.java create mode 100644 ch06/src/shared/java/org/mwrm/plants/SelectData.java create mode 100644 ch06/src/shared/java/org/mwrm/plants/package.html create mode 100644 ch06/src/stand-alone/docs/index.html create mode 100644 ch06/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java create mode 100644 ch06/src/stand-alone/java/org/mwrm/plants/client/package.html create mode 100644 ch06/src/web/conf/antBook.xml create mode 100644 ch06/src/web/conf/plant.tld create mode 100644 ch06/src/web/conf/web.xml create mode 100644 ch06/src/web/docs/index.html create mode 100644 ch06/src/web/images/banner_under.jpg create mode 100644 ch06/src/web/images/cyc_cou.jpg create mode 100644 ch06/src/web/images/gal_niv.jpg create mode 100644 ch06/src/web/images/no_image.jpg create mode 100644 ch06/src/web/images/ran_fic.jpg create mode 100644 ch06/src/web/images/tul_tur.jpg create mode 100644 ch06/src/web/java/org/mwrm/plants/servlets/PlantServlet.java create mode 100644 ch06/src/web/java/org/mwrm/plants/servlets/package.html create mode 100644 ch06/src/web/java/org/mwrm/plants/tags/LettersTag.java create mode 100644 ch06/src/web/java/org/mwrm/plants/tags/package.html create mode 100644 ch06/src/web/pages/footer.html create mode 100644 ch06/src/web/pages/header.jsp create mode 100644 ch06/src/web/pages/index.jsp create mode 100644 ch06/src/web/pages/indexBody.jsp create mode 100644 ch06/src/web/pages/menu.jsp create mode 100644 ch06/src/web/pages/plantStyle.css create mode 100644 ch06/src/web/pages/plants/displayPlant.jsp create mode 100644 ch06/src/web/pages/plants/displayPlantBody.jsp create mode 100644 ch06/src/web/pages/plants/displayResults.jsp create mode 100644 ch06/src/web/pages/plants/displayResultsBody.jsp create mode 100644 ch06/src/web/pages/plants/index.jsp create mode 100644 ch06/src/web/pages/plants/searchForm.jsp create mode 100644 ch06/src/web/pages/template.jsp create mode 100644 ch06/src/web/tags/simple.tag create mode 100644 ch07/build.properties create mode 100644 ch07/build.xml create mode 100644 ch07/src/shared/conf/SQL/plants.sql create mode 100644 ch07/src/shared/conf/SQL/plantsDelete.sql create mode 100644 ch07/src/shared/conf/SQL/plantsDrop.sql create mode 100644 ch07/src/shared/conf/SQL/plantsInsert.sql create mode 100644 ch07/src/shared/conf/database.properties create mode 100644 ch07/src/shared/docs/LICENSE create mode 100644 ch07/src/shared/docs/README create mode 100644 ch07/src/shared/docs/index.html create mode 100644 ch07/src/shared/java/org/mwrm/plants/Constants.java create mode 100644 ch07/src/shared/java/org/mwrm/plants/PropertiesLoader.java create mode 100644 ch07/src/shared/java/org/mwrm/plants/SelectData.java create mode 100644 ch07/src/shared/java/org/mwrm/plants/package.html create mode 100644 ch07/src/stand-alone/docs/index.html create mode 100644 ch07/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java create mode 100644 ch07/src/stand-alone/java/org/mwrm/plants/client/package.html create mode 100644 ch07/src/web/conf/antBook.xml create mode 100644 ch07/src/web/conf/plant.tld create mode 100644 ch07/src/web/conf/web.xml create mode 100644 ch07/src/web/docs/index.html create mode 100644 ch07/src/web/images/banner_under.jpg create mode 100644 ch07/src/web/images/cyc_cou.jpg create mode 100644 ch07/src/web/images/gal_niv.jpg create mode 100644 ch07/src/web/images/no_image.jpg create mode 100644 ch07/src/web/images/ran_fic.jpg create mode 100644 ch07/src/web/images/tul_tur.jpg create mode 100644 ch07/src/web/java/org/mwrm/plants/servlets/PlantServlet.java create mode 100644 ch07/src/web/java/org/mwrm/plants/servlets/package.html create mode 100644 ch07/src/web/java/org/mwrm/plants/tags/LettersTag.java create mode 100644 ch07/src/web/java/org/mwrm/plants/tags/package.html create mode 100644 ch07/src/web/pages/footer.html create mode 100644 ch07/src/web/pages/header.jsp create mode 100644 ch07/src/web/pages/index.jsp create mode 100644 ch07/src/web/pages/indexBody.jsp create mode 100644 ch07/src/web/pages/menu.jsp create mode 100644 ch07/src/web/pages/plantStyle.css create mode 100644 ch07/src/web/pages/plants/displayPlant.jsp create mode 100644 ch07/src/web/pages/plants/displayPlantBody.jsp create mode 100644 ch07/src/web/pages/plants/displayResults.jsp create mode 100644 ch07/src/web/pages/plants/displayResultsBody.jsp create mode 100644 ch07/src/web/pages/plants/index.jsp create mode 100644 ch07/src/web/pages/plants/searchForm.jsp create mode 100644 ch07/src/web/pages/template.jsp create mode 100644 ch07/src/web/tags/simple.tag create mode 100644 ch08/build.properties create mode 100644 ch08/build.xml create mode 100644 ch08/src/shared/conf/SQL/plants.sql create mode 100644 ch08/src/shared/conf/SQL/plantsDelete.sql create mode 100644 ch08/src/shared/conf/SQL/plantsDrop.sql create mode 100644 ch08/src/shared/conf/SQL/plantsInsert.sql create mode 100644 ch08/src/shared/conf/database.properties create mode 100644 ch08/src/shared/docs/LICENSE create mode 100644 ch08/src/shared/docs/README create mode 100644 ch08/src/shared/docs/index.html create mode 100644 ch08/src/shared/java/org/mwrm/plants/Constants.java create mode 100644 ch08/src/shared/java/org/mwrm/plants/PropertiesLoader.java create mode 100644 ch08/src/shared/java/org/mwrm/plants/SelectData.java create mode 100644 ch08/src/shared/java/org/mwrm/plants/package.html create mode 100644 ch08/src/stand-alone/docs/index.html create mode 100644 ch08/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java create mode 100644 ch08/src/stand-alone/java/org/mwrm/plants/client/package.html create mode 100644 ch08/src/web/conf/antBook.xml create mode 100644 ch08/src/web/conf/plant.tld create mode 100644 ch08/src/web/conf/web.xml create mode 100644 ch08/src/web/docs/index.html create mode 100644 ch08/src/web/images/banner_under.jpg create mode 100644 ch08/src/web/images/cyc_cou.jpg create mode 100644 ch08/src/web/images/gal_niv.jpg create mode 100644 ch08/src/web/images/no_image.jpg create mode 100644 ch08/src/web/images/ran_fic.jpg create mode 100644 ch08/src/web/images/tul_tur.jpg create mode 100644 ch08/src/web/java/org/mwrm/plants/servlets/PlantServlet.java create mode 100644 ch08/src/web/java/org/mwrm/plants/servlets/package.html create mode 100644 ch08/src/web/java/org/mwrm/plants/tags/LettersTag.java create mode 100644 ch08/src/web/java/org/mwrm/plants/tags/package.html create mode 100644 ch08/src/web/pages/footer.html create mode 100644 ch08/src/web/pages/header.jsp create mode 100644 ch08/src/web/pages/index.jsp create mode 100644 ch08/src/web/pages/indexBody.jsp create mode 100644 ch08/src/web/pages/menu.jsp create mode 100644 ch08/src/web/pages/plantStyle.css create mode 100644 ch08/src/web/pages/plants/displayPlant.jsp create mode 100644 ch08/src/web/pages/plants/displayPlantBody.jsp create mode 100644 ch08/src/web/pages/plants/displayResults.jsp create mode 100644 ch08/src/web/pages/plants/displayResultsBody.jsp create mode 100644 ch08/src/web/pages/plants/index.jsp create mode 100644 ch08/src/web/pages/plants/searchForm.jsp create mode 100644 ch08/src/web/pages/template.jsp create mode 100644 ch08/src/web/tags/simple.tag create mode 100644 ch08/test/org/mwrm/plants/PlantWebTest.java create mode 100644 ch08/test/org/mwrm/plants/package.html create mode 100644 ch09/build.jstl.xml create mode 100644 ch09/build.mysql.xml create mode 100644 ch09/build.package.xml create mode 100644 ch09/build.properties create mode 100644 ch09/build.xml create mode 100644 ch09/src/shared/conf/SQL/plants.sql create mode 100644 ch09/src/shared/conf/SQL/plantsDelete.sql create mode 100644 ch09/src/shared/conf/SQL/plantsDrop.sql create mode 100644 ch09/src/shared/conf/SQL/plantsInsert.sql create mode 100644 ch09/src/shared/conf/database.properties create mode 100644 ch09/src/shared/docs/LICENSE create mode 100644 ch09/src/shared/docs/README create mode 100644 ch09/src/shared/docs/index.html create mode 100644 ch09/src/shared/java/org/mwrm/plants/Constants.java create mode 100644 ch09/src/shared/java/org/mwrm/plants/PropertiesLoader.java create mode 100644 ch09/src/shared/java/org/mwrm/plants/SelectData.java create mode 100644 ch09/src/shared/java/org/mwrm/plants/package.html create mode 100644 ch09/src/stand-alone/docs/index.html create mode 100644 ch09/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java create mode 100644 ch09/src/stand-alone/java/org/mwrm/plants/client/package.html create mode 100644 ch09/src/web/conf/antBook.xml create mode 100644 ch09/src/web/conf/plant.tld create mode 100644 ch09/src/web/conf/web.xml create mode 100644 ch09/src/web/docs/index.html create mode 100644 ch09/src/web/images/banner_under.jpg create mode 100644 ch09/src/web/images/cyc_cou.jpg create mode 100644 ch09/src/web/images/gal_niv.jpg create mode 100644 ch09/src/web/images/no_image.jpg create mode 100644 ch09/src/web/images/ran_fic.jpg create mode 100644 ch09/src/web/images/tul_tur.jpg create mode 100644 ch09/src/web/java/org/mwrm/plants/servlets/PlantServlet.java create mode 100644 ch09/src/web/java/org/mwrm/plants/servlets/package.html create mode 100644 ch09/src/web/java/org/mwrm/plants/tags/LettersTag.java create mode 100644 ch09/src/web/java/org/mwrm/plants/tags/package.html create mode 100644 ch09/src/web/pages/footer.html create mode 100644 ch09/src/web/pages/header.jsp create mode 100644 ch09/src/web/pages/index.jsp create mode 100644 ch09/src/web/pages/indexBody.jsp create mode 100644 ch09/src/web/pages/menu.jsp create mode 100644 ch09/src/web/pages/plantStyle.css create mode 100644 ch09/src/web/pages/plants/displayPlant.jsp create mode 100644 ch09/src/web/pages/plants/displayPlantBody.jsp create mode 100644 ch09/src/web/pages/plants/displayResults.jsp create mode 100644 ch09/src/web/pages/plants/displayResultsBody.jsp create mode 100644 ch09/src/web/pages/plants/index.jsp create mode 100644 ch09/src/web/pages/plants/searchForm.jsp create mode 100644 ch09/src/web/pages/template.jsp create mode 100644 ch09/src/web/tags/simple.tag create mode 100644 ch09/test/build.xml create mode 100644 ch09/test/org/mwrm/plants/PlantWebTest.java create mode 100644 ch09/test/org/mwrm/plants/package.html create mode 100644 ch10/ant/org/mwrm/ant/tasks/ClassSetTask.java create mode 100644 ch10/ant/org/mwrm/ant/tasks/ExtendJavadocTask.java create mode 100644 ch10/ant/org/mwrm/ant/tasks/LifeCycleNestedTask.java create mode 100644 ch10/ant/org/mwrm/ant/tasks/LifeCycleTask.java create mode 100644 ch10/ant/org/mwrm/ant/tasks/ProjectHelpTask.java create mode 100644 ch10/ant/org/mwrm/ant/tasks/package.html create mode 100644 ch10/antBook.antlib.xml create mode 100644 ch10/antlib.xml create mode 100644 ch10/build.properties create mode 100644 ch10/build.xml create mode 100644 ch10/src/shared/conf/SQL/plants.sql create mode 100644 ch10/src/shared/conf/SQL/plantsDelete.sql create mode 100644 ch10/src/shared/conf/SQL/plantsDrop.sql create mode 100644 ch10/src/shared/conf/SQL/plantsInsert.sql create mode 100644 ch10/src/shared/conf/database.properties create mode 100644 ch10/src/shared/docs/LICENSE create mode 100644 ch10/src/shared/docs/README create mode 100644 ch10/src/shared/docs/index.html create mode 100644 ch10/src/shared/java/org/mwrm/plants/Constants.java create mode 100644 ch10/src/shared/java/org/mwrm/plants/PropertiesLoader.java create mode 100644 ch10/src/shared/java/org/mwrm/plants/SelectData.java create mode 100644 ch10/src/shared/java/org/mwrm/plants/package.html create mode 100644 ch10/src/stand-alone/docs/index.html create mode 100644 ch10/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java create mode 100644 ch10/src/stand-alone/java/org/mwrm/plants/client/package.html create mode 100644 ch10/src/web/conf/antBook.xml create mode 100644 ch10/src/web/conf/plant.tld create mode 100644 ch10/src/web/conf/web.xml create mode 100644 ch10/src/web/docs/index.html create mode 100644 ch10/src/web/images/banner_under.jpg create mode 100644 ch10/src/web/images/cyc_cou.jpg create mode 100644 ch10/src/web/images/gal_niv.jpg create mode 100644 ch10/src/web/images/no_image.jpg create mode 100644 ch10/src/web/images/ran_fic.jpg create mode 100644 ch10/src/web/images/tul_tur.jpg create mode 100644 ch10/src/web/java/org/mwrm/plants/servlets/PlantServlet.java create mode 100644 ch10/src/web/java/org/mwrm/plants/servlets/package.html create mode 100644 ch10/src/web/java/org/mwrm/plants/tags/LettersTag.java create mode 100644 ch10/src/web/java/org/mwrm/plants/tags/package.html create mode 100644 ch10/src/web/pages/footer.html create mode 100644 ch10/src/web/pages/header.jsp create mode 100644 ch10/src/web/pages/index.jsp create mode 100644 ch10/src/web/pages/indexBody.jsp create mode 100644 ch10/src/web/pages/menu.jsp create mode 100644 ch10/src/web/pages/plantStyle.css create mode 100644 ch10/src/web/pages/plants/displayPlant.jsp create mode 100644 ch10/src/web/pages/plants/displayPlantBody.jsp create mode 100644 ch10/src/web/pages/plants/displayResults.jsp create mode 100644 ch10/src/web/pages/plants/displayResultsBody.jsp create mode 100644 ch10/src/web/pages/plants/index.jsp create mode 100644 ch10/src/web/pages/plants/searchForm.jsp create mode 100644 ch10/src/web/pages/template.jsp create mode 100644 ch10/src/web/tags/simple.tag create mode 100644 ch10/test/org/mwrm/plants/PlantWebTest.java create mode 100644 ch10/test/org/mwrm/plants/package.html create mode 100644 ch11/ant/org/mwrm/ant/listeners/BuildEventListener.java create mode 100644 ch11/ant/org/mwrm/ant/listeners/package.html create mode 100644 ch11/ant/org/mwrm/ant/loggers/BuildEventLogger.java create mode 100644 ch11/ant/org/mwrm/ant/loggers/package.html create mode 100644 ch11/ant/org/mwrm/ant/tasks/ClassSetTask.java create mode 100644 ch11/ant/org/mwrm/ant/tasks/ExtendJavadocTask.java create mode 100644 ch11/ant/org/mwrm/ant/tasks/LifeCycleNestedTask.java create mode 100644 ch11/ant/org/mwrm/ant/tasks/LifeCycleTask.java create mode 100644 ch11/ant/org/mwrm/ant/tasks/ProjectHelpTask.java create mode 100644 ch11/ant/org/mwrm/ant/tasks/package.html create mode 100644 ch11/antBook.antlib.xml create mode 100644 ch11/antlib.xml create mode 100644 ch11/build.properties create mode 100644 ch11/build.xml create mode 100644 ch11/log.xml create mode 100644 ch11/log.xsl create mode 100644 ch11/log4j.properties create mode 100644 ch11/mail.log.properties create mode 100644 ch11/src/shared/conf/SQL/plants.sql create mode 100644 ch11/src/shared/conf/SQL/plantsDelete.sql create mode 100644 ch11/src/shared/conf/SQL/plantsDrop.sql create mode 100644 ch11/src/shared/conf/SQL/plantsInsert.sql create mode 100644 ch11/src/shared/conf/database.properties create mode 100644 ch11/src/shared/docs/LICENSE create mode 100644 ch11/src/shared/docs/README create mode 100644 ch11/src/shared/docs/index.html create mode 100644 ch11/src/shared/java/org/mwrm/plants/Constants.java create mode 100644 ch11/src/shared/java/org/mwrm/plants/PropertiesLoader.java create mode 100644 ch11/src/shared/java/org/mwrm/plants/SelectData.java create mode 100644 ch11/src/shared/java/org/mwrm/plants/package.html create mode 100644 ch11/src/stand-alone/docs/index.html create mode 100644 ch11/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java create mode 100644 ch11/src/stand-alone/java/org/mwrm/plants/client/package.html create mode 100644 ch11/src/web/conf/antBook.xml create mode 100644 ch11/src/web/conf/plant.tld create mode 100644 ch11/src/web/conf/web.xml create mode 100644 ch11/src/web/docs/index.html create mode 100644 ch11/src/web/images/banner_under.jpg create mode 100644 ch11/src/web/images/cyc_cou.jpg create mode 100644 ch11/src/web/images/gal_niv.jpg create mode 100644 ch11/src/web/images/no_image.jpg create mode 100644 ch11/src/web/images/ran_fic.jpg create mode 100644 ch11/src/web/images/tul_tur.jpg create mode 100644 ch11/src/web/java/org/mwrm/plants/servlets/PlantServlet.java create mode 100644 ch11/src/web/java/org/mwrm/plants/servlets/package.html create mode 100644 ch11/src/web/java/org/mwrm/plants/tags/LettersTag.java create mode 100644 ch11/src/web/java/org/mwrm/plants/tags/package.html create mode 100644 ch11/src/web/pages/footer.html create mode 100644 ch11/src/web/pages/header.jsp create mode 100644 ch11/src/web/pages/index.jsp create mode 100644 ch11/src/web/pages/indexBody.jsp create mode 100644 ch11/src/web/pages/menu.jsp create mode 100644 ch11/src/web/pages/plantStyle.css create mode 100644 ch11/src/web/pages/plants/displayPlant.jsp create mode 100644 ch11/src/web/pages/plants/displayPlantBody.jsp create mode 100644 ch11/src/web/pages/plants/displayResults.jsp create mode 100644 ch11/src/web/pages/plants/displayResultsBody.jsp create mode 100644 ch11/src/web/pages/plants/index.jsp create mode 100644 ch11/src/web/pages/plants/searchForm.jsp create mode 100644 ch11/src/web/pages/template.jsp create mode 100644 ch11/src/web/tags/simple.tag create mode 100644 ch11/test/org/mwrm/plants/PlantWebTest.java create mode 100644 ch11/test/org/mwrm/plants/package.html create mode 100644 ch12/ant/org/mwrm/ant/api/Copyer.java create mode 100644 ch12/ant/org/mwrm/ant/api/Deployer.java create mode 100644 ch12/ant/org/mwrm/ant/api/package.html create mode 100644 ch12/ant/org/mwrm/ant/listeners/BuildEventListener.java create mode 100644 ch12/ant/org/mwrm/ant/listeners/package.html create mode 100644 ch12/ant/org/mwrm/ant/loggers/BuildEventLogger.java create mode 100644 ch12/ant/org/mwrm/ant/loggers/package.html create mode 100644 ch12/ant/org/mwrm/ant/tasks/ClassSetTask.java create mode 100644 ch12/ant/org/mwrm/ant/tasks/ExtendJavadocTask.java create mode 100644 ch12/ant/org/mwrm/ant/tasks/LifeCycleNestedTask.java create mode 100644 ch12/ant/org/mwrm/ant/tasks/LifeCycleTask.java create mode 100644 ch12/ant/org/mwrm/ant/tasks/ProjectHelpTask.java create mode 100644 ch12/ant/org/mwrm/ant/tasks/package.html create mode 100644 ch12/antBook.antlib.xml create mode 100644 ch12/antlib.xml create mode 100644 ch12/build.properties create mode 100644 ch12/build.xml create mode 100644 ch12/log.xml create mode 100644 ch12/log.xsl create mode 100644 ch12/log4j.properties create mode 100644 ch12/mail.log.properties create mode 100644 ch12/src/shared/conf/SQL/plants.sql create mode 100644 ch12/src/shared/conf/SQL/plantsDelete.sql create mode 100644 ch12/src/shared/conf/SQL/plantsDrop.sql create mode 100644 ch12/src/shared/conf/SQL/plantsInsert.sql create mode 100644 ch12/src/shared/conf/database.properties create mode 100644 ch12/src/shared/docs/LICENSE create mode 100644 ch12/src/shared/docs/README create mode 100644 ch12/src/shared/docs/index.html create mode 100644 ch12/src/shared/java/org/mwrm/plants/Constants.java create mode 100644 ch12/src/shared/java/org/mwrm/plants/PropertiesLoader.java create mode 100644 ch12/src/shared/java/org/mwrm/plants/SelectData.java create mode 100644 ch12/src/shared/java/org/mwrm/plants/package.html create mode 100644 ch12/src/stand-alone/docs/index.html create mode 100644 ch12/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java create mode 100644 ch12/src/stand-alone/java/org/mwrm/plants/client/package.html create mode 100644 ch12/src/web/conf/antBook.xml create mode 100644 ch12/src/web/conf/plant.tld create mode 100644 ch12/src/web/conf/web.xml create mode 100644 ch12/src/web/docs/index.html create mode 100644 ch12/src/web/images/banner_under.jpg create mode 100644 ch12/src/web/images/cyc_cou.jpg create mode 100644 ch12/src/web/images/gal_niv.jpg create mode 100644 ch12/src/web/images/no_image.jpg create mode 100644 ch12/src/web/images/ran_fic.jpg create mode 100644 ch12/src/web/images/tul_tur.jpg create mode 100644 ch12/src/web/java/org/mwrm/plants/servlets/PlantServlet.java create mode 100644 ch12/src/web/java/org/mwrm/plants/servlets/package.html create mode 100644 ch12/src/web/java/org/mwrm/plants/tags/LettersTag.java create mode 100644 ch12/src/web/java/org/mwrm/plants/tags/package.html create mode 100644 ch12/src/web/pages/footer.html create mode 100644 ch12/src/web/pages/header.jsp create mode 100644 ch12/src/web/pages/index.jsp create mode 100644 ch12/src/web/pages/indexBody.jsp create mode 100644 ch12/src/web/pages/menu.jsp create mode 100644 ch12/src/web/pages/plantStyle.css create mode 100644 ch12/src/web/pages/plants/displayPlant.jsp create mode 100644 ch12/src/web/pages/plants/displayPlantBody.jsp create mode 100644 ch12/src/web/pages/plants/displayResults.jsp create mode 100644 ch12/src/web/pages/plants/displayResultsBody.jsp create mode 100644 ch12/src/web/pages/plants/index.jsp create mode 100644 ch12/src/web/pages/plants/searchForm.jsp create mode 100644 ch12/src/web/pages/template.jsp create mode 100644 ch12/src/web/tags/simple.tag create mode 100644 ch12/test/org/mwrm/plants/PlantWebTest.java create mode 100644 ch12/test/org/mwrm/plants/package.html create mode 100644 contributing.md diff --git a/2490.pdf b/2490.pdf new file mode 100644 index 0000000000000000000000000000000000000000..139099beef980b167904fec755f0c4402671b380 GIT binary patch literal 182807 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 z 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

?t6EyAi=sJS8e!NCM3RjG#RVwn1|v z&W$)XtZrD{uo6h&sRNpTmZVpk^rZTT_%Y!DL{XFmYZ}&e6mm?ofGTJ@G##3bs1aox zGxR{_0(AhBwow4P1~TOEy z25K(UT&YnbHO)2cHLMi3E@l;#1SIDhf=^p>GXtgW@JgIODTzRK0oMRVIAk#p0-6C; z8Gz(UKdk+*_LEv50@%=_U%Xx*dD18BUD797!mr%rXSnb_YsHe9QDU80ifkc|Nx5Ijkd!_%txCUHrT?l* zf3ZqmfQC{)!f+gxGS75{^;2QJHmnzhb!2;pY^4;L! zS@dtTQWg3qN&bjdl3wr_cnkPvBuEYLn^tg-i2o`2ABX-1$#;nO*GZl1*F`I({k3Gj zpIH8l81;nZ{|-hyPW*Dzqn7^$tcNWBe$dO7e;cU7GQr3acZ35 zm%ZosMPHn*xA?F>?ttThKd#Wzd=QHqMXW;4@B#l8-tU#(9xuGO)m_0w{DilWziL3Y z_#XdxF%7aESG*qX2LGeHCfLhY8F31?8N^`bG`_<7ExsJ)WpP>=>*b4maWRz=9_B)Z?vzsud%PRFR?GO=i0OF^XwUpbce^0=9uo7=5RPP zhw4xq#E}u77&UQdpd>@{2+~v`RoV6^LPChQzCs-eo}K7SR;^U8Eu+!&YEr$fELvJr z9k)+B8C_OX9d*=wwSJJ&A2mRWD*NJ;tgFWc6{fve(e%gahX|#`dk1 zo!t-(h{i;ALv?iZ+T5?z4=Fp8=8EzmrA1If{SbX#*-`PNu+!(u8z#d@zS4p)RQxT8 zuo%e~VI-f%WLS+1!#2&YC?CwvPXxV7D@72t&$}{cOCpyKLm*e3AcQG7#3yt4lpGO; z{g6oJo|CPXJ)Ov8^F+{~VIahBh>*cj0|A3ZsdV?=aeIx#bQ*{u$1!Mw9OvJx zSAA?#*A>6#zAry)=RMo8{a(I!wqsLx1@h%U=qq{oVk>DVYp5Diyf_J;V)TE8vh4lIM;Q3dr!-bNJ}cxvI8kK z{{8*Cwei7j!GS}jOvXe$kkN8| z1Gs5J?XBY*zOuDr+#0u9#_d#d0$4gSi%(OBtzNdSS+v*6T0_>bHD(E!Oai;Tm&4b> zv@_fr&W4A=!{M>8$Q0W;F4)#^_>(Y~K{UYtJ}u2TpBa?+W3L05GqzHV54VzA*`n=fW*!qJ zJ9IRz>Rd&ei49=k9!Q%eVZ;EA89-ALzKDAQ=?uY8U_wx!QLZ=5 z{+40#z9D`}#o;(BmW5Y@YJ836B{xELQZERUik!d;ltU;SJTgdfkAtzc-hI8qCdR!v z;poB!sFp%-$tG~`-o2a+-oQ9!t_mj-X`7&MiN1^FuS74OB?3Q5-+h}SOC;7f4@7r} z!e!J`!ohMP!(R9*(M+N z(y35I*G|5nndmdwHlLg&^|LeHI`DXdb(Iy6gg#%qwl-d~EEWk%Vk8`k*VI;51^k8L zzFmE?Bsrtr!pe26wT-)m7EV7L9@^}4%Z2i~>dFo2&RrAi%4>%~+JU7XN9t{Z3WKHF zYqJ7C?sJkORE5oug5xj(AA$&zP;;IP@>{mDNX#cK)gr5Bk+Z3ozK}oEPKEiqH25+b z`3LuApqE@BPGZ_6#1@^LE!*qjvRxnVlwnvNld1e2*VhiRvHJQ=ldY|?BAT0hekDLw z+YPH$H8fnw@l~sB%p%!%?*{jdu$!o)oJ^hVau`_MoD~E=6K;3WBq+95E+R2IM(tQC zHWHhT@i7nUF6bn^Buj?K2%%ny96G}H89oU*W`K=S*`>6ZM;cr}R zsq3p9C|gxgUblQ*bNtIS^wk^i#FGufzg!sm`@)5n{_^wN3pXZS>gqoObvI6=D?*R9 zFPy|o+(gKW7_k6(*)FuTls2MGYdq0xjqWGkCA6Ty2Yavvmtlm25$~++z;*=F_%EWs z9umMF0{^hFx>Tr4L699T%8@C!jpmQp-hu+f_QWfcta4l#QFuiUPSJ9hSq!dewW+f+ zD%&yjmWRQ&j(j>h2cMc|Wd%VHCwX`BUst^X!$4Ed~W3pBMhutbU$ zMH~5FzjpUX|JpJdjndM}gY^23Rv2YV8QLDkHJ-*bmcefOIZ1QY1+|h#Ycv~~&X`gb z2rQQ@=`raoNwke;_^pm-f?Kt{jseer_oVZu1wZkeah@soK=>f|zV>nOV{O{F!`}(| zvC`&sq1dkn^kAtb$w8;)EUnSMq(2`VG9*o>G+3m&bkWV}R1mcwqF3_q?n#`6EZc>y z`av1wNv_&GVd;8MnjK@I&9+`)b72HP&|q`fpthv;Q`jsB5-LLF3JIt4G@$McMpM|867R&rKF zSX;C6$v&%ozHdULO7S*qv zIQ55$jiYzgL-*I8-cSU>!rdq|!jIoNJeujd_^aO@-?i&!=NE3SRV!EGE;lfr7crkp z@cZz0_CoQjd7Hlgxj_T^|=HnkU~UH zE1V+Q5=eT%e?_^^%0<}15M%SND!UWv>sG6HBC50Me81(X^W;K$WR=MuQm?Y6q9};@ z{v;&(`oSOZL_DE5RHFdy;)PT5S7>J6sfBX5_2R-Suyc@mZtf_3ZN8Hsyc^HG1H$7Z z1Z8&98$5UuWqZo9LRQR{9_5dfN^u$wJ;gm`JRRCwvR^n*a)iE6^g_w&+?(=9WICeY z_oAYDygq**=qPkkj$@(n7@o3yNQ;fl zC^%$s69}QiFw}rsJb($sgOdVodDxUaQUS&YOg3;6aifeb2GF&?7ZBf2ms z5WycE#ox!*%!*xU1tAbxjp`VM8@~dyggq$kxF??*2VF3D*vDlvRwx%T-jt}QJ3DbF z>5TN^UeX(3fs+Omfr${r^s)}i8qag`TI<@7wY3FI(WcleMkBK9Bc5oAE07hm6*FDW zPPDgR`~K~VUYh^)uI@G2SRj#`Gk5*)!0s2`!WQcn4;@Pk>?m{`>q$&qP!r4u%9P=) zoB#OOBpcxk4_XXZ332pbvKsa^!aE^}Vcoz;_ml-tT2B)_y(~SL9!p!&{!-oH zBjgpl5wGUez5U)nug&XEeQsi(K|r{2-^Fe=7(UiuRJC=y6UvA`ujP?4R$_@+LU6h2 zplbJof^v|sZq*rA?Xfl-7Nj<$xL{Z1h_~UOC(?$ZzOsPcJ`v3JGR6Z zS=&`-(@%f9bH&)up_dOW8Ns1r`00to#V7j~Ec>uA_p^O(+=)Qt=ij@+`~oU3q69A2 zYd0q@TK^Qin6R{4x~yBcZu`daP0lXw#>j5&MX$ro?MabooHap}1hq1|^QNdA=Y(xl`6_9!Ph$tc_HR>L~{F}%lcp@IgQ@|?$gOr}?NilkA zS!ysfma?RZ= zz=b;-F*7M##jD&`X?tyt*5bTZp*h@W-QHqE2xt7xawCcKX~)- z?t{DDxO;h`Yujpay!YAVA8r~PIKOdWwUG@W+x0U;knKd&IL!D9Sk*($RrUS;K?p@U zvXujkdEEz*Z%V&!&_{f4VHLXN50Jr)yw`fu^dvKCL3G5Agg)=10Z=hwAB^hUj7DQ+ zhDu2=JEQ1rEbSVNeiR_t4_P}<5QPaHCZ=R~a9AdC2m!ZID2##O6(^X>NQ7a7;b1Q7 zB1eKU!*jvP5DKrwJ(yt3@q|OUCk&Y0JNI5LXJ90ZkAHFl=SnYOOW&ze0*uL;q)VKO z=beH>wuk2_tdI8!0e3)>f;7Y`g?lFtt98aQqAi|cu9>X49!`~xBk|I4KrS7N=J8>l zx#)WZ?-VCr1`p5k&+s#a*>aQ8!Y>kfSFO=Z_1&4jh-?<=+v07kWqj3;(`woxdtvm2dN(3b#YIcr*h#92mkf_q5VC~9qbK3?a57f_r=F@lS8uo2 z9YZ;0UuHCOI&+aZpSfna=D2IQ>#&1ov0H6hxgKi|yT`VN<7^Il8uC+lc>%|DCnwoL zVM$b?tU`!!lCnyyD=bwiF*z*7l~|@a>EOyORzh$LoLZcOVsVrdk|bFm=XEuah!e2; zL?-!5l)@;bfpo0}#p-9-unjla@Y|*Y9@VqR#d^J@*;Nkt9%iQ#=BOMh7X;EAG7m!m z<1jRkUB1FpHYjSt+@di<`sr){4A+?&2e5t83aCK?H5406kux<8Fc8LXAffnRg&4HX zh(Q_bHm*I8fwCkPbAw8OPSpY~wKY@g>+WBMVs(nw_#D4>tGUUksyOk~lee6XNVPV( zII4XqPMwZ0Tqc-*IAejQR<5>^;`KReChD4=Q70CzQv4pOs*@w#%=4xF#D%3TNdvDa zLhL^QFAbm3uksYT5GT6)&Lp4W(-zIU2`< z5Ls=e#?;e#Z5CxJwFHf83`?z=C^8w8f_Kx=vVl3j^L!cstqX2ViaiIT9yDKWuhi4v9)N=&3Qif{#@euVv$ z8vQ$6%T;Jp)N(Y3bMU{zCB`ojJI5iUX^AAKeFbFIpUXxe3l1tn%1Py%GN!P~fL?=Z zFfktC6!-}5Ce8f7f$-``(Ao=R4bHJGL+O**<@q?c`!RiR~m#3_cbLWFaLQ;UiI_1QDq-ta8AM3hxh>Aaez(OdK$f~Lu>yQvaT3g1{O{nSy*{BruA&9f*y@aak zqWFE^yL;dF?tPx;_j`U1#1F<%FBFv)?>8P}de!_~Q0s55rJFYA`H~)~?`FPj9NTa3|)GEDeC>=^^k8U&O<>O;tJvjF0ILS$C7XHlc zhMXj#AUbcfoOGY&-nG3eF)!gg++lo#W4f*OG@`v}3on-=bdIJFEzv67OdB*y_k>6a z2vmw{$Ous(S6Sj!o^tXLp5l9yXBROzToL_WA(5^%~a zw&DY|y|sI_FKP$=c=caX+m62e;)SdKIl7JATH9W`Rr{#+Jd{ag-2MCWJ%>-%eqFnG z;RtTTEATUCju6`b?id|#7eP&U_hpoYqrTBu%w>1VJAylu@2AJIKT^0o@}D$5E z%BKlSeM-uvlO?T`>Pk0fhf?27jb$gY!iNY4lm?|&`9uBfAbUEEf0y{g|7qfr)W_+2 z35#OHLuspn03wDXK`t5xxOk&+6jGZSL+MI<9TYBc&fA#w`Mi{sv$|103N#0dz*v9{ z^kj((mRE`>i;e8LEcI4)CVL}GXPdA|me}M)Y?398IUOchE-|P{mX4ohveWpb3sFLu z`qN*dOaRGv72MX>z47e){!&;x*&N)hVLDrk35UH^|0!n3Wu zB>|T5EeUu~j~sqSN%j@yujDssb-`3$9)CG?^Th4nwp3RXzY}`?)vee$PkL~d-CXW(~rmiEJ6T8ceRs&Hskb(Jw~Qg>Q37iCtTJe<0D>{%GzA z&oH9H^TIPwp&-2QkJ>86U3(MJNWF|GI%U|AlSXYUg|{%P*T6X*f|w#TA$&-*7-ig# z?lAG%ssVzSqGfc?l6F=r1~Ej%Aa?WyxvXXt1Zsn3+EPPeetO}7A-LVt zhP;nVf$KkABnE`RoZ%&Q&zp1eCC==*j0q-{hb7rO3NsB&%>~imVN=lvg-GjyN8nujl4T33W@qj&pEfGT6+_9bNxG zx^=y!S=WQcc0oCor`+q?uv?9kCMu`-DI4w9-TTnK{Hy4=aJ*;4*xF8`ax`SMIXD%?dT_6;N9ZZ`ws&{-EZZb(5f1SOZ3hMCfbW2hid04_)TlL& z3gv7=rf>xZf%e6PnJK;`riGGda(QP_68lBUfM!&rRkPbAGGbYtUijE(5K8Oh5qY~z z=j2ypO8!Aa!sNuwWur{NvBxqK87fl*yG_%p3>PD0XEHc5s-e7H6bl6~{A2KdWkdc7 z-hvWHBX4w+kQUJ?a4=VD;S5Jf<@&h^ zj+Qw5fW!Tu54)FlZ(GbZ+(G?8bj{7*9hPRtE3?&kkaeyS znWO8u^A-|QleCD@@Ze(EyHxS6E_Nw#*3;h6))t$B zabqX}hILd0X>qXyP6`qE*`#E4Q;t%*3TK~Q_+nBd-Did%lw?&X`QfLKXb%V_8@RGP zO?n&jHt2ci`4ZCq_iqr+sad$iBDTG)tsOYjR382(g>Al-s9aDYgkqr<@tS<=f;FT< z$+uFgUrV$t8+ke0@X`HE>nmE4$|bejxwrN{-KDr~ey1dQ%VW>AbmEgu>sD^;SbOkA zSN#va*WI#m_r}E0=VGy@&TMNTv++bj=? z?^vcRzvBKDVc2B1eYj0c?xc4yuhNH^Q}h`tx0=J9*1D8^g(qCMQud383Hp!}#b13% zON2eaQlsnydzPiyd!i2^IU$OYz281&KVfGkpgCu!kzKN@_GTE)*l*Z5JD~qkxo98N z-tS%1$)sTFgBl5dGe2BiRBqLZ%U^mp`xrkop^>gvX@N_sbXdg!o2;OESr8Q~Tt%3u zitB}-fJz!?-#)h#|}%m2-=+wV1|JTHfV)lGjO0;;ut)zIOBH z$ItZt^1oD94QvzF9e?lceDC~`^ZD$%*zwmH$B7f$acCTfQy^E8k}N9=Yk&r*8w*g` zq*jeXht{eUo)|)bYRQ;Zm8vwbF}5*jWFesm+E!QPYm7*lRDXo^|)XcX!YC-n-xb_xt^~It_22UdHZJ(~H?1$B*xBZjN)GO@I2kd*3g%w(^tj zbX6(Qfu;D;A0KPF`u^Cj{2tKr4S=C;P>%@y_qZhBhx)-)iOdd(OoK(H0iqsrT1h@K z5aA-QB$E_R5wN)*O}IT!Sx!B;cAhFqa3v2E5A>bLwOw3bK$*En5u!#Zjqa^aWl)rU zy~>JbEL_07S?IO&iknHFzb`=cSoT?ps2G{>UovKmdGr^Hbv5q9TfJKX{n5NPAK2#| z3>;R!;~sI1cu(U~+}Y?k`~ki~uK4~T-3feR+{0dx>sFspkA#mH#pq&`xD5Qu2lL2) zJq(0_f`}4uBj6$*DMmOHQ6ffUQ-scIsFk93t zOwt~?9(Ld!$FPHQq!rYNOq53hXatR+5}HR=dVxb{_EsIJ;x<*`(JEXug&n54C}Jck zq9Hblrf3n{SF}%a-$e{qgN2O?xxvCxA$O<1V3kO;Ei4omb>C5!Q_R*I+!fp#7Z09L+8{Zw9JMhlmF`hW|^OecRLoRzXx^DN{ubv#*`IXff{Osh1SiC)l z<>8Gr=^AZcIMluKuY;4vQ3*V8KWLWZ5^Y1hC&5Szg~ly6}>{Eb~_9HtADuwaB9 z8V$kegd<1q7)H9Gjy=OBCvFkNbOU3xnM9e~5~Ud^bm?GnxtX>FU^XB)$c<@~eo#8s z*_lbx6j`5W$mG+n39nfW3&r%=bSX{DbTQ4Lv|g_zwpg}En-gym(nYY5UTy2NZMD56 z{J8!^nv~Lu3C=K(5xD?pw}T2kxyI-*o->}ey+Lm?yVmi98gh4N z!CL)^Kq%M|hHiEtsj*cHCvh?v=Ivo*k2nl!FjOtC7xl9`AJ#{7PQP2XNrbVUi#KFw ze6O=vY;S1aU*<<}8B2pXu+MY@Ck^DdKMs$D5{-4DLam}uD-;+DWUf8i`!`l0oF5%9NKRwQf^8T%podH+0@EbhW zF_7)~+SO}+07O3peA&y7ArA`juP-AyF6p3m4kthm$t=i>FlDXLMA!go;1E*a01L&q zlAf3@mkZ92-5+xiL=?gidYkqpj9uY5B1}EF!Fs^SwfAT?2rKP&Mhw(J1A-{3a=9FX zHOO&#ru0aRgIW=t06O9g#!h^B5al;Y^d)9Bg|I>lGDdhr@?acK5P=*OejtnsJbe{` zsnJZVp>Xzi!XcO^J%!lNUGrEoWWYQHz< z%cH#K25<2h0kCO-tZoLfVLB>Xdv`_(Q;7&Oh{ZGPa&LV@#xMG;eeUP<{>ts%9aRML zR*_gGhei96IK;gn9&#L34hDb7{meV*{)qe7c~iN^{fl?2d6Jg~V0J^+56D&LA_1i% z72oD~E6o!T@}zr}bpzLF?Fnz@Hd}XcgWQmN$aljELlQ!GjugjSkhVX4QUezc#Af)&x!S|6aiG1!qA(1Zq*;G|ZV@ zYL>3?vwlp!2)QolaevmSHp-^FN#>EP$cD@>%2=i&vBFx)?V|b#-#$aErlF}1@QR_6`DZ` zsl=cQJ`s5Bmo)I&P#!?hnFHwoiNQJ4(t-*(+}<}KBFu4xZLBz;8*}8-h``(I(X7Kv zWh-EpsN%%4q#P(mjQh(ifBD{W%T{jL$}KBvnX)yjDZZ@FaAhlCXH@V7m%eS=Hn&(w zebDO4Wd&2Ig2f`BUO)%pO}u;eq3s7#VeQ&mKf3$r`L{1G9l}4cD85~*dJk}qUw`@K zUElN!{R!ib?_%=XGp&8qE#|kt5A`6#ziN2{B{*q0yJIP)S1FUqPRgW-?N4Au7O^DP zVTrb}3Typ|snP_MRhIfpq-2rGlNB_{CRN8ml?XZOoKx68u8I;$w=I;EQrpaevQQSK z61CG8mCN*ZkruuWWoa5YSsw&l&0w8a4gVz7VU~zkq#1~ruV%xTGwm!J*>z~&Wd2%~ zQ^|)Cbc-I~^)oZnx6*W6cf>fR9joCx_zp*x?;wBBVR>7?>D2znh&VzMkM~U$zTVfG2~{?Ahr=}uX5gRvQ%k3dE0WdK@s6F`_O3NUzy3x? zswLDMdC~1&x#!0EE`T3e`(L)JHMWi82;bg`$G3QV=y;SU>P|dTqE41bi4RMn&7&nz zHXoL3i+Y%lqc$q~$PdW^;s!=gt98>hDG&)QT*E~X8z|cT=#Mxq?JxygyMYiO1(X`(`J{{TVp<2y=v)=Pv5sa*0zH z!xha#HtSqOV4X;$zo7N5Iz2BDB6E7V+KfYf0&g2E} z1?kdct?3Oz)mxR`j=x>FUAa^FsB*8;)+)CQ3JFiLqhk1lDWA-=F(Q{#@@bKhBmFD#y zh4P!l8HsRDUO}u2*U{+%i*i^ zwZ~}>Ryq86q{%3}j%Vb)db09s@*LE4me*dCH0=R~1?2MW)yGuW)>iKd+UW;$psix| z*G>y}fxAILD{MDF;qk`^5gB276|3F_=ujV&0VS&MDjzB=;Kb_vZ6IYD&V)V;!OSWK zo)gF|WE{K+_VA?!cQ6we0f&N(8j45e>7^gKf@M`A4#iY5MR$=-P@wRYhP#4)ifcopCBHNl zpDKQFd~oMse{^{1X7!hY@gM(%9F6>N{(GCcfj4_wEe8JZ%GwQ2c*x_FjZK`vY+pHk z`sp9c4kRThbjbX4N30`wiv8}Hv#-n^T0MLDLdBRg!!4n{R;+Xn?O|uj;eQE(|t>wrHnXC^Up@wl3(tREjU_JYo1NJc~aHWunq) zbmQ?J=ziR3HmgB91!6mk;A^Jwxg1TZiVr~UrndcQAP?}H)Q>wUh~xD*Mv z^PTocz?BawUB0XwP{wRNn|lL}GQ=>QHly2R*)S9H5ayI?qY3PEM<&5NW3$?`|d@!^^mk z?&%rXQ69@PLw;3lO_#|RF7(Pihq?kD;$#>;3TQgZ{h`6=yz@H3%{=9DUMF>1XSo>N z&EX(?T1AJ$8Qp!IHN15mCH_Ksb01THL|?T25r%UzgFDcS41~J zrQ)su5dNwAP`7A7GewPV*XVXFg&<_biIjlbVEjkjiu+Q2G@L@}*@3DlmaemCBjuzv zoYaO>hN`1(Lyn>jjNh!=kbBSujQ^xtQB`Ie>yLCR+L1+H|G@ZR3_N*ax~!v4f0;~{ zm&@nMTzQ6{h)JPdt1;bcFfzy|`}@Ivq2SvR9^b~R9({EW|6dW^epA@Qyu2xBw1106 z=N|dh(_kK~Ta5F;gT}(uX45 zCdL?=n3=^tCe&-QSdDy>!8nnNMJ2Cg-s^1@oT?I)$%=ecX5|`5=#EsRPgD0tQ)DG| zHN~cIPAtu4)nc)uG*x2PN*g7XDG4RE1Zm)gM~s&i=jLnd$zLfyKPT15(hHh)^geQo zbVs|Wj_?N~$W{`oWk%z;#1n(+CSpw1nrjZ;ptwGE^ovO`Y4+X=jP4Sav zM`v>gsW||4ot!fZ8lmJIFg1w?TyMn|Bk;M*G^$J1f6nSZ-Pfr}SYCDBfeK4u2 z&f_o_)7yJfJ1r-ZZK~QfQYNP^_9~4`W`pA3ACSog*}Y7bpqUH_EnAM!w%OzmgP0Qf za1?A;BPN=XOf(;uXg)BBDsB^7aY3|UoQu2ZNvxA!DtxAgQC(!(>E?E7sGXWroXe&j!kP* z;Wnd{5VTs;K-XVu>s4aav}(0hBq)`dfi&PB)HH%E{0J%#MyoDs{}`bD(ScA^R;d;P zRTD6p@O{sA8#IY1?}y)e_wL=@=ll75zBqXBQnN>LCgwH|zQUvubY>6}iMwLE@p-Gh zUowB8L@0ewvUnyVWU4NuNE0q8m&JDb-aYYFp^Y76k4Z@Wx{NB2mbu{7a7jk7^1kb zAO0zD0br*gl0Ol^oj}DAxqJ{0^`dn2yRVJz)n&i8vTE@&LA&N*S8h7^yw{HdF|@WK zXuUXW|9bS9$6r`Hyj6>VMKJn>&FJ8<{U;Zb4LJ#swr)3i`i=Dpjx!oa`!@4ah%wa<4EAv9 z#`Accf-jC^Oet)LATGp<7*M>3fAB2v0l3SuD$i>w1{RSb3@*?jaue9tUL!Tb=m+wf z@^8^q_k8lE+bR9kgVwv($XmnTK&Ra=3pe8~&92s2Z3JL9rJ=XOR~6dU&<3t|8i~ap zy#RU7W`H7#Zs2+gJI+q9Eq0o9viEo!CT)I-r}+_eWHeg%ym)`Iu&Ld^7I1Vr_tfb0 zmM6Dg;?)h8G5z#JLG3B8my41Hz4YOJO_-h3dWi-?UjaS9{y zh#zAZ$^~9$rxQWi<}7J>l&1n2P1AJL)LS}D=^}Wa%lZx7p^uy2e~tk7p?jIUy}y&Z zi0#RCBhYav7PTyinFQtnNQ5zMbrP7apXf4G&wliBm?yq=_*3hLGU=^hDLgP3^sV~b zVqtAx%;WH-70vLVFmv(UcSnlGiZvl~$Kr-344|cqOq{~5*FT%U)C73hy>y%YJ>aFn z4t4Qj)CgW`Hs&1~Me+AXQT)A;5LY;Z$Kysym|glaAt?d#Ocl=y6&Gg+DOM^t&|wGK z>p+fd86lK+#SW@ymx|P^uAp&cLZKDOOAXIA8W7!OXrXCKnWAm~ql^k@w;_7S@lSUnAkK?F=c4YIe)hgPpeqE*2tmH-bg#WM=j21ztRTa)p z^x2SbV;Hq6LCZp6zSGVFJ2V=&i1YJ}VR2rvU;++>p<}v>u_7%=CEIHib6zVN8soS3 zpBKNGad=#woW~rmP1Kq-r%;A6*m?)*LKzpnTLum`G1(cSo?svli*FRqEd6TiZoP4G@3<)8EURHixfMM zkE*e`xTon_YAA-RlS zEd7pzkaRuur_|q4Olp=1+1?2OjSCY(OJIaqw8D-VO01-Dh$~JRXxx}Eng*jAg9dH< z4Cz!A>6b=(!Lg}5d7sGsgT~0VnWYqJj9F!1%$X$w-8Oua+b|EbjSazVvEB9e5exX% z0}dqP^M-sr?oG&^WV^|IXIXz~%b1@6q9*c$& z2XUP7SPIt2n8zx?P>~e3#fz#m?ALJx+A$NiNE5R%vr8Y$1g&(Z;h}jmXceQu&R$Yy zFF}G^NN@|uD(Vux=0jT$V3}Ysq7Uxl!y9~POFp=d57t1521ua_|L+gp%^0DpKpOKA zs8&RdL^`}h5}|aU2DF8RtUp7Ty6%ahcC4+oJWNV-8HWWm{`e-gn9V&%hv z7sT&^WIaJIR}|zBJB#8o6mo)+J-D$@ZqIi$?AB%R?ehQfQ!GL<1NpyXS6gTt*BPEO zdzss6cP=}-GqV@XUS>v{)$YpL9Z9pe*>Ukjwv$SwO&Yr_a%)2DhZ0N0fq;eNhekCN z)Kd4sy`W$yNhu_XUCVL=u^dF7s>aaTn1E>rBK3ndHOBQrTZ#VXtduydR_FZxIdeN_ z=KKHu`$(@o<-_-QKp4HT>*(P4aqOKDkPu5D^>iE^jwA9oAD{@&7E&lgq(O+tgb=BM zA*Cyf!ephS{(-d#W$!PSiruBH-RQ- zx|O*kUD9u=HxtYH1D#pOpbG{Xi;VS5L?(LvsR74UHAf31R82Pm2zT++n<$_T?5s90 zK+`B3aq*%PAE|#+|Dgudm*c5FQNl9X^!rUHp4D1rF+*o4go43PF+Q%KSp`vws4Ob0 z%5CKnC9IrC|Na7&0y|0o|Jsj%J9HpVfFRh~z@<~{z@ZHU<&%OYLvE%f+rYuv5Na5V zb+sVH3C!x4RoS*H72F}Ho5SeH-MjU^+_REXnB8A}>6xDm|FDuQ1#fNt<>1yk$DS?q zeg9;A;v{`4mpDCYzlA)=W zvAB?ojmTTu`q_XFLcaE1AUrHR7C!1C3> z)O+a_yA5ED&Mc@^qAx7jgnFD$U1wdHJORYo~P{&g7shnw?p(O)=Ww!%!0c3yg zPpP?MB@z1J<-uFd$*P4OG&}~wkQ56^7aJ*Znif$gNQS2~ix8i^Kj!glf`r*;eT5|E z2XsaX?O8`8$V;C) z>npugh#TO{o}N~Pr4+oDYHkxdY)6^2f5*`#8$y2j97(Qwg2~@>NF!xJ*d?`>_R4*J zNd0BpuW$amJn(+d;CR>ilG<>61~_W-R0Cm)t(<#RW~&*E21-43OrSt#QDTcGJ-wG% zU)1jYi(>%q`1uaJ0r*{KpYhG&8U7i4Ke;6M}IR5|zg-b0>Zj`Sni$@S6;Ozo-or zsQxtA%(jkwl}q4J%JE%QAE1~dVPChCwzYTH@eEV12Bu?GBc>gp1=`*eWkVb8&YXGM z1IrG*S)8^owm(!6nWt3xr`5iPzNKl_sjus0?M$Dm*tugNNFUd1wVgIQ16qaUAjx0N zIj-%)2_6+x{qu;H2!D>QkYbN*)s1O>G2rNVk5jz{!V7ZOCTBlkPcMH z#Bih0q^u1RqzIs@en8FrlO=j`d}aQY>$RAm9T_f?=b3F{sw3>OtuXY3O{(H+?C>7l zzw~zV4buaCE@?NIFNS0*H+$WL;sOiq&53gvBDo~TbJ!cOhD!9Ci{2==f z;t3@ z_8Y0&+dAE9D{paiw}eb%b&mKM7@!G5W>~b^0j$-wn@;F?O)>OCnA733q&o!o+-zY4M4}`kqDTF8BQhUJ%3h& z{=Gn5mU4=YT1<&Z9v9M6=q6Bo{s24Bh0GWt<&N2+-cR;|%(#F(0F#qFC>0t^?Im+g z9QpnIuGJOLq5DPerIN0toHEMywPn+T&hc7uePv}}9dC1C(^-p)HRMe7H5PDN z^xO}0oci*5W3IXIdQDU?i9Eav@?PL*IPOhfoBl_R7|R=f2m=`j4~AeU2t4jB&mK!U ztZw->%d=GgMRe{h@0GdN(dU$Fm*Zd0D(BI=^z=1Ft^KW|gD}#l!j5Y>!nN2bU(6Ml zCo#8Hfd_d6ZoDw?FZ!v2K6mXuwH36p^l?;*(gf3l(uLWQuM5MH6rTj&L2dW`K#xdj zu}4I600^8Ehws|#dwYux4&Or>ZpcAi~Cei#o`J;S-dLDQDKw zrg%#R+q%~bWI;h`&BGQ2&jBv$G(@v1rIs%54Nq-u8y?WopjB(K;@Q2-liNs3h6u@o z)k8!MG_h*tH;-?NJ7=u0WmC(iFf`>mNhIjb1n^Ebs{mbQxB8}tf0I%rm_E8QhKYG~ zWq!-FfmKaalg2!k)0$k^7OK7MQ7$6cP_9U}TagY1f+$F~9Y}7r2`=1uLA;%)L&n|F zP*|$vU5lrCEz2CY);C%YL9tI%VZP-joNi{X|F6~yZr1H>N@tCbr}Q!NyL<-T>K%MP)gopV`{6oip8A`|fJz z^gx9eeUhq5YV)ovo@f2!C8RP&E)MUsZ_|vLmIWm!39g5m9hxxKeKF7v>B#vlK*WxM z{1>R70hOPf4`yXu&&5NxLd)+geflk|qh|j_D!@vY9UCPrA3G%#%9;#73`AcCJfMXg zj2TSdH!%OVBNUd_%?Q|5L^PzI%r5OABoF@`m0wLW0M9AF#|g?)VKi5Z`COhrAQ&tb z^Z)!XKJHV> z;px%(WF361j=hBlhOyD?IZJ=#?Qz`xn_LvCl(q^WFk*BA%-7UM3Lyv|q>n&I4`dV< z1cMWhE(quh>1JO%Jy&u8L!V845ha9H0v$ZC{Q0{?SFgBGU1ks@m->X3@{!a>QbjX! zPwlF3%vpCQM7c^NSJ8#>j+mUvAK{yvgV4=CdUUEX~S@5%6nuk zg!>Y8C$jb)I@{buL0&}Ww16XPucX8 zJ=B`9a#%jYnA6>Pi9nmBpGoc$*{g5a9$u#CghQxJC=Jv}|{a9$yO zDnVS3G+&xCQ4H~X%9xCC-JCaFA~AfaEY?ZnaUL}Z>rCI+jFd%!gkvFf#7D;3I{G>7 z-J3W~GTzRCI(|03E-SGy^hmv~mI(t!BL1i?>oT=;ApPF_L%^g;uufF{*&1nF)ab#D z+0)PX;FTrG__*Gfmd@-LL!w0Dk4mUZLce(qy9BW?*nvG>c!`m)?D0`KNX7flX((UV zp_Abs;m;zjng9pHlv;r_+*JvjcwIm6>u0&kZ?Rg+nw%E620EVb>ZTT4%kDZY9oS~B z@XGjmCz%Gc;R>3uPWvHZE2Bp$G;&ss|$XNF`qgdVneB z5dx_HWVmPk|2O6^&@;0${U^h{lCzc!dD+w!TY|jNiQ%;oO2N9C70taeeiWnrT5U6X1_E!&hWf$eeT}&{yOyDLeZBZrt#xraE-=UGoYj~ zGM!*U!R9~0cqr{}V4mP~AIgurL$@)=W^FA)i{xFse(sR%@nW>h-+*Cr$4(4lk*q=Z z>p%Kqo@^a(E3I4rk&-J-N98gGn;bluX8UVsXX)vyXU@C+(&nnl&C<{W8SGc*&|oaU2j{W0nrpK{tj16IG6Rvj9PoML2B^YGT*;va}C<>-LQMS;rjD>(< z$3o9dPjpw<7b$R%my~D2QWB%)3epK$8Mqj@If^-o3z?3@NLR#UOwY{oq;nRFWfom3 zT5`V_WKL^dW6{CVol%;RngIw~`mS(U^}ICE6lxp;`yN#@Ui?ZN{}`d8M;5!fW!m&Q_** zg)yw2gn*Aa`t-ud-l- zSC`0Amm7J!?_v&1HU`&((EMXbHd9^SCrJgOZeS9>r&J>h(U=!g5d!dqCyWTyr(lWm z97JE3{Kh8CQ*~6$SNm%UON29aTZJ6@ia2Q2^INYv%7fcOk_O*2Ik4RKVApAkhv38i z)bt8~IHtA;k~;`_VPP-yqOGy9u>_iVrg9e{`6Fa-sG*^zbU1$f1TR|Z!Ug!J(`wZ} zrCZyX;SD3(4I=th@CYDidGq`>dxs1;0P(*vg( zJ)R8N6}?Hrx)Yc5KCF2 ztO(_pZTo%M?Qd?lZSpfs3rtLlqy@m_1^Dex$f+@Q*5Q$|6z)&y;k22}MBi|&3xy18 z$WTcc3`@G$Q$&Y!mX#FK{-e@!xI)9)qBxAw&(^%#1B}c`Rz_?fHX@9}*H$)8B-^rwP7Dka(0& zD5=(tCn}^S0J7kLJ{IaZdMs%^2&QCPIO+4pJbd`yy}tqH2-JaRr1IH%_l&x)ppw3{H$-1Nb(fFxhpKswKXVzCuQ@o?u6hJ^(YfBa%Z zgU~B(A;CGuJg?;8pBY?;#U9e^l;yaNrmtH@`V}FKA8eh$t8|Sg^(BSV!@8Jy$Qzh< zI=SJ1LR}v3TV5PtS^F9K^a1f=wYKE)k%vUW0uw0L@IAYSVwBCb7leFAl= zJHD0=CKp{7dQXePoo{)aUwdGZCRQZIJYQglorBtSy^B8|_LERDyn?26Td6}xJtv(P zH*ioI+pI8%Khn~TngxW(&|FJ=e4mMNas@WP1vu# zV1oxBAp#fQSj9$M+6+SLy#orlohbBP71AUKW<7g>AcJ=HtR)dJ`jJ74OSGgd&uKQ{ zfa%I2c%Re^pX1IxcMqzQM=gHOynpAeC=i1c;vqTAxKO|mNwIE3N^uRX5{SN_NdXc2 z*!F40?H}7kp|Vc31^<}){~69(HdjGT5aO2U3EtD%?Ki%QzJSYVCFC2fdUL}5@gRHa zDU`UW45Z)$jS%BmI;{BIz1zcvm0Ci4Z#1J2w~>8`t_{`d*LMY&B6pwbq-Lp%x{4a2eF8H% zN-iC;A;pNS9j2NOT1}`RAOI4t46Cw~rzS!i5u1<(O_)bogowZ_=oP5Rg5V|0P@pXU zq8Anc25O+Amza!yO+qQT!s{ewJ*z#mRL%B-DRZ z_Nq3U!EXP&4&Cr(h07`-<4LPg?O76?8^`QCl~yzv{eY}JA%1XTEzfDD1GAlfbZ6*! zyj4?lcaO_e6Jf7hbINI*M{ZlJw1no}0> zY=12TQ1l$#5$VgS;|a$iv<|AOJp7AJn|-mJOA@uNkQ`1EBv16g3CtGtHziIU_w>db zgc$a%CT^rwZP`-mGXG+EC<-@fyM&TzR#~&Imq%}du}PXX;Ev)0^NqIQ)epzb*%w^L zK_7t{VdiWyYBCB1hq1)UPVB#Mu3s(~BQ1(|4)4@}^2fjamry#CfxI#M8N4U|JL^Es z^vnGS3EuTdz;zEF#7h7modpzBJ7k}qIp|ZA#PsNTt-jc9k+vA}X9RLneLl2Fuyp!f z$wL^OHh4kk%-Go*o{Iy7Iw_BhA`}7cV2r}JbqA!>dHQfJ5@Of5GR`^}Wce8hnma?q zFNQmf|C?C6?t!q|gVjXY?Q2US0#B1<>?b(?)uWw)Uca6~y1ytMDGd^1nQIRFW2Pml zQ7D)7ip${!oTx3P$!)AH1Y&bRS+lky$C#?haNIkPW?pnR$m=f+pL=#_tM8VGxPQ{2 z3cT_CdG{8NKw`9|ztt)B>VQ1+{t>y;2=^3M>K=^UXd$WL5vFV!epp4bfpUjg1#vXA+!Y(*k z?+&&3S^{Ujeh{l8e!?{AZ+!w~$1_1YOxFT-A>65;r@Ic-|VC!juz4B%UR+qwR?U)rPxT#D1fbZr&ZBhX>kGMez;j-BfhzkHC zXUDNK20EjYdQD7lC?XP#M=gQ}nLiE!cQd$oEZY(nh7?Y!-o;?LsP_c!L0k zzMezE{Zgf}c)Jaq>Z0ffMHlH?dW(xpO54Aqll_?cmM2sUXtHl19Gazq7OjQQ9xqij z(M?x+jI?6o;WH82%zUoLCvq(%T#c~O-;^eLb&f*sS7l8#8RUF|be?=1{607w>i70ELr`wp_PAZWu_#C_ZcM`b*DgrO~?;K1OqBdAT16%5)8m!(~Ad=&~FINeGlTg93eHJ!+Va^L*k%I z|Io`!_b`4G*u%JZH@>Q2Uiryo5%olvd%&zt%1*Z zg<@{(5e-)#rb|hp`(Nd4b(ccj%!WT!eK$S9BhM;6l%%VG*Ud{n_ z;pPQ>#l)n3AvjNHB2C!oNs+=A1S)zsJue4tOdJh)bz9A|uX-bpY5MWRe1p8Ba+dMR zoXOyGs8Srm(vY$}3E!hWcLr$mY}9&AnR>^@ChYVYTl8ZY&vJ-0M@Xl_(_Y70OXaNi zlpB{&=1E zQtNm89R`<>B=rh`D-w!K;on$y`<>`nzoI6ng2dq?IEK4pH2Qn#`&RRkS29DLL%rpx z)okvF?Ud+HYku!96sd?HAior$c^EiP_@IaoG@(SWZvc=V6N1%QPym8}SmEdAM~)v5 zSxk5%?!_F&53P)@x9O7J;Ys^Bzs|#Ep8eC9C_%cL?K$Jx^O(JR`xT>an}aFeFV2h6 zuj`84GPaHMy@GeZ-2}X5Om+gxeYEbovv68{uap;ez5#rTXof3>6By67748|h#_87d z`pr0FlA1Bk?+de-;{5i-&E{LECwZe8@aAb6h`x)VvEc?v*dc75c6TN>d_ z1Buim{2y)l2ZhjOm?oPKqbn?HFq7WD7V;!x$R7<_-H^a-K*600_$A+$>}7}u%hxLW zPtkqs-u34;eSBk~s|lxjhY4@{tO`Bpr1r_p-^1+8;hr6B7`Vvsu=~88+>oNcGfVlR zmpn0VS+z6h;E+h|clah=6-RP`^Cst1+}qZrZfrp5l?=a;Kc2qtaaH}=uxYF3OAFOQAU?zMy)?e$mR(Hlp7G3f`{q=I~2yue#7?Kt5H?kS#EHTKxM0dNDx940q zZ;)-G2Kufs<33iXH&76;F{byQfc_p(2em9`pyS6k|KoH!-TEx3!B_76$+PYQp{W{N z%$+7OQ-dtt)xi%N*;s-$uO%-Z9vfjNPSq^>63}lLtBB(JG=rcRGGiN$Kw;l93bA9Y zAiWoZ-WC+-0n^dI`aoUcTpR5j#EYB)vfGZ?2lrgi45bZa@Q?ov2S&ILpVHfYeeQf- zEx+u>dbZy`+wZf9a{CP4j=JjmY%8}K%a}LWqO7KMRE{XMn@C0Z;`qjye%h`x9BQCs z_ev6OzWp||={6nDwTLyrvKk3f8VUy!sPWflwY3_~&w_rcT3z4l{fUZp`k~^t!>?xz zEMc=HNEf$iszmoRw+)2VC3zQzr4<5tNE?iAeMwVRUZ9x}-Bhj%!k3DZ zN$Y`~#o>48o8rBaaD3_b+j5nPJ*);ThdY<=!w%_dxW@R6u6MSWd?`4%a*IgR%Yna= zpSeQZmS%jaJB8=ZLG&nA=llw>GSK;eR6H0@#>UDfnT;@p4~CUcq|pwoA+K*@pTu^q>Wd&nVOPa0VBtzeb66d2M%6D3{H1~Y8`C3 zvjmYz?6AUaiZx2gaM>yb4mN`7Y!|?C(IWw~zd7*9sX3W3>%h*}5ni}&7|kqZ*W~BE zvSw}o=3;#{LTeN`UG2^wvNIs57fvV06`?qICJkMOxO;`DUH1=wY?r@-gH04+g1k0i zbwr=8GIxD6EN`nD>Yf@)`GclS1E&Qn#0UIqHk2FC`j-)UX3&Y9z~)$3l{P3DC7mBw zPF7ykChXbyVjdy-s_c$H%Mqm>4$eresbAUnBd5yF#3MvEcc#&P21cuJlIiRrNk6}m z*BR1u5NH2`Ss7=>$dNt*KA0nE`HC)703#)3piHEkB?_+aYN+EI{yDA7F32sUDDgMO z^=C#wsFd2wZ5P5b6nDzM+u>!#M8|s16!bmG{x7uE>5Z$8?Clu0+U#KIRHKSYXRO_S zcX8F0nLv5V_*`mYDzCIauRe^kJWDiBoRn1b zs@`$o$@ehScNQjj5<)=@z75>PDH%xm{+j1v=tkKG+gV7LqWu6iU3m`q;(Vgth2+lX za%BtFC<;dp=Zlu0z7R?rCIvgBwM0xRK({h4n8smXbBa;p@3(A~k{|9%4Nq?Uya3r; z<(Lc-VUglgU(Wiw?lctgNx(u#AI8mQyx{I4P`6z7mKz|YyGLEZ=}sVIM&X{h`v*|> zy~A2DvRATS$HjIOfD=aNT_!FAL<=4CA^?{M>nHsR<4JM;3rwjsTJ8TW1Iu!mPn@8u zWzJG-c)zAGSl98Aa*^2?PAEWL9PlVqDtB^@a%oMF*=}#?z>H+SK|( zDG7&iL${~j5pUW&6fJ9Bz}$S^%o4G(aS?M1onn2;$nOyF?!Nf1jeA~+lTGMA6d}|W z00C9X@ZiL(NJLU2m;!1aosem6Fn=a60p0jWQsjnxiVrab|W}WELm6837BH`1`Z^& z-+hcF(vf9eY$q544GQ< zD9+l##$)ggp6BxWtGs$keY)m3je4rJiHa++s=8_?ye{Ldnqzm;Rq*n){)?!4EFe>) z!Oh?ls-ZI?v6+;-UifsWhtPa+e4EDs(etuIUwYDeVII8h%#OIsQ+k?#N* z2IPQILyk!17CoE?hbg91RizTIQJ>|F%a^rLi;T0a@Gn)me7@XW-TmD0+`V1(&$M-w zS%O<3h2q5u$P^kN%o`B=yD=>BCFRz_q!)I_{yId_)etAPgBnbb}6Ze(^ws2+G%Ms?X?Oe-p-*%HW3ZpXH;vQ(fpTHL&FvqTVSO=Q;Wgt=T~og@MH)dHwu z$!nf7ZGX!sx8k@0=eS95P$2UPBtqA&wfI|JYx`GW863P)xxXzjv&c0ljs>bf0r52a z>P%sg>B$wT9=esNeEV>jZY{h>L5U{p4YCc83i02R9~o8U~A02rBYfDyy?eyqI0a!@fVo%n>m_d}MHeD}Sv^l4PW zL}IRd?~Tz7J_bAIA@UdeZ8NFXkFI2fmpg?iPU(cybq`_+ZGc%@J3hro6-BzSSs9y9 zg8oa>^Ok4bE>+1{zUni9Pl6Km5KRBR92jqj2)1~>D`Bs>TN$OneBM7Un+sms>!a!H zfFy+yP16?}lUr2DZD?RN^A-I`7s6t>9k zf$qWg9P$xJ2E*T*!4uxb_fyyDd^-u0h-olIE{EZ843g9bTl;%E2wvTqRFF&Vy^7G7 zjlfiOgN;ydsi~;lOcXu!v_2GKVzhtLb)hPFJ!iw0+xy>=8gIE!X)Ug$nT@ocJme6e zLh`MmBAz@2vXR4W#F6tpS+WQwl0{1{9z4FAE}z(Yd?TYkl!&#K#;E9VERX@fLi0Xj z86(IJKV~iB`;ku3EI+t4P9gmkC9Ee7q%QY{{T!!2l~(#xzQ~#k?(>d`iH?qmw7NQs zpRy_=mo<-a)bDQ#XWw4I>*Hd1w|x&-%U)ZQ0i5nJ^UiCzVu_*of`cvOhKY!zZi9-c zwYIUZE@M`XG;zMota;+jWygIKJ--buSg-cS<&`g%IJ4SJ6Ea}Q?T3I(9hsA$N zalZ{i(*aX-SWQYqm!ZKW?A>KyAQORu1I_G9gWs>{1QoW`rq`WIve>o4#@{EXZc)SS zm%REFws~-dQg0=nHY!HI+5S$@5OVgC=7eJuHI4&UYkYf980-G+R?tOzT?7f#(XSeT)q)3hN005tx^EY@Lb7XjfB+^ zS>vZ#2@@6H3+$cI|AC%TEBDUYLi4E)V&4v1u=je5KI0=^#z>>FiBL%L9GmlkUb*ia zgF1QEp|~wGa2$iV%bPEaD2uk))Y_;2Eqwi4Ryb2Kbubxl9zX(C#}=+jLY~)G`MvJd zE9((a9g}Pp;BEB*R^J~v%-yN()?M3PR%shtB=ZjCvjpZ+4Ap+#<0%>_^4*OjkidmN ziwQhrr?WhbQi{g1f#WWk4dasiwo}sDzZ?+`6WEiq9H!@cgG^xH4gEGM1g@TBBJ4<+ zD0{>*E?o-{cgebQL_N9f#5mUN>mC77?xnV9|stSYH!0CDwbTrdFbUl`K_L;mlVke+3 zP>pQ$y2i!|v?e{)!j_KPKpP-`fh66-K*}5a+6H21SqCY(Xn*%0$f0z*D>C>)Jw$QW z8gg~wLLp7({`8%`5VeF4Ezm2(bUt&|u_>&nqO$^u zN&R=Ue4jDrt59&7bqlr(YF8R%H0U^VZ0>-+D~=Y9EVUAqeW7Ap{IKM}B8JJz1Nqnm z@YFDd(OKY5Hm|(p`Xg_x@TA6469 zw$rtvt&C^Bar!A^zjC+!ppRT;zR~=BB(o~ZH~01u-hlHc8K;zf5qR_`guK+Iz&tz< zOnmhiDlyp3#O9WV>LL{mOE9F%m1jzh`|`hTNO{87$8qa)|Zw6^BSriM7WFk}v} zOX)0XQ^DP9H_-5=<#ixw-wr7sPTqeTbV>MSvJ}?BtnT!yt0wWq3^AioEd`iW@6d1s zL=<2EVOR0>i~m$(Rmd`{c+!`ji;IXTRH8w<30wL@K%k0du}eBxG+`;Ml&jTKs(h;c zI&HLOR&5xKxRgA~J$QSPeD=KlxE6(ooRG+=()KT%IS<0CV02vRq@D2;D)3#crcG=C0>vC8j70vjL$ z%|u|6cgzg=k3+g=RbjSz@tRhe`iht8udn6>XpiZ@P&P>;l6*ZPnr|+BiWl(Kv3NVOr`)u1Zrc zx(Oi2&u}yHs?}|WAw8_>R99sWP4>D27>FR?n9uUC;xl``K!A#=ST(HRP;0R233$X6 zO&i`b*!CDB9l$unmJ?s?6d z(_q0Kx)XW&cc|oJGZFvocQRpaAt>@2t`x$PM{v8xLc{j}6BA4-Gp(DO%x_0XSpx}t zg1x5GlFpJYj<0=kRh)7-+&*;RwvhCPYQ}+=Af|ZEfg?JaQZQ0VmA^nw3*faoj^91}kU54J(efC1eUPjv7*jQNDz}iGYMa9N0uKU!YL91L& z$V^G0@}gD^Mmg;Y2;6^XB$y*B=*wZ(YxU3Qtn`>4#~-~u%nN->8XYn-{U~UEp8!%1 zm8c(NNd|QvCm9{SHiD1=qm_-u>zn|rI%wbFvCeH#TkqQpai~2Iwb$C@I~cLQD^BFV z*h}#?@WcO%0f@bV2G$+x;dv)nKl~y7R8|~2kV{h9y;e`iZam0-T3X({QK={&+qm+y zF14)9ooFD=L`@TgOVWUbS5X1i&FJFuIjf3_$4Jz(ZpPthvff`9rrMQJp$AXghCKAc zy|8XT+5*(o4-TacFa43>7QzHuWe7xO-RxU+8K$7>1m(e@p9kb+U#s@}!N5&pEOpD> z&~E(=<(D;rREZ;BB?p)0m62(z-`k|DwNhsz6L|e+;ttc+mta2+K9`J^>a)}C4&zfe zM55O|PY_~}VkF2A79y=NM?j1%kRYYymSeQ<8@eX0+@IEEi6gQm&1VMXG7$ZVyeJCV zzA~bgOsf-;2qUmrG9T1{P$)9!Z&T1pv{+7>xm1$h>lXXfo&Ul|$|GT9jEbrfO9T^C z@0QQhcX=WD=PFCmmdPP8oO#Hebh&7K!A!2Ve7-^LeD+@AwEdX*!z<*HGkZ6n`IqF-(IQZvz~w6e>GSk>WR_ZlD#%9{FkIC@h%BbcYILTLyxy1+^hs!g9~Le`edA;f16!IF1jwggViv zbYER->to@!PUc$S$5_d36Rz*n_RVq%CIFMBLx8GqG!F|kCn-n_3t{!Y0NNo4Sb^na zGe1L<7OR*v*TMzMxPaO@AvkCa;bpdFyoo(Sy7zWIkC+Xw3xhwM*B!|foVuceg&f}8C z6*?R&>TDN4{lDLO(B0z}iS7L4$3+^|OuZrh#ax{>MHw<@2qg(^i_(GB8|S#4r{wC^ z%l6Ch843Ul&|#Vg_a8w@mj4Y>GO^MBA3;hLNO@!ptQ&-mK#+i<>o5YRjL)kkKSKP7 zFiw36NyZ&05QtFyfS|!h#5IL_>TLnsZB+O!4Kc*Kf%$j?d3)+Z25LhbT(pKTw;6(G zHeNFe?CS08itK8S=he?$->%=v*Y96sgBO=HabgE4`lD2g2nVJoi4a3zY+FWCtSD2V zle+0hSM+;a$_sN3rALorbQGm8D5De6#MvZ!Q+k{t>?vJ7 z`rR`g(P!AQb|<(^&Kt1SRn{HR!y`*4jZ>M?8>Ozt`r?y`Hg%S3NLR5qDCCmN#$P9I zCp^c@8{)c{BXCS`RKz$GmCBlz059SPRPt4-6r3o*MCI_ht)EQT;9IF|bc_N~5aP+yE(Ff)fU z)>N)MT!=c8x5sacV(UxSOQ8*u~;@!8VV(Q}AexR=d42_DuY*!$CBlk>_80 zEgPDfN%C6#Mu5tT3xvL4?uCMb*`YkV;?%>R-a@~TrHJeCnB8hkknBMe?}ZBxiVt#n zH^IqXkSgQA;AOm|xr2c$?z&GXj>Is8>8LRa1md+RYnz9k__$VWBX7yjQwMF@WSi0T zCSsKmMkmauwKzSAszXx8x-u~?Z=ykmsj-Jpb8b>c@az8T}yd`od z=yJgzJp@cnuvE{s#vd0GXo^vRBmrAWqN*J4iXUIRODo}Fn(u5r4 zqfmlSpcUAYYljbL$`1h)oJk4exS0jQ3zPd-2HwZ&!+h_u<97_xn4>+zps4BN1W^%K z0Sedg&r5~L9(iNE=RuGhM45XrW5qn~3+1EA(1Kc*d(nA?CTx!5JTToIeg-3@Hx7^c zosKl3jz}0 z?=q5KT%o&C{$SL=TeU=J=1XotWm1$i6jbbvLdbBCGm|jd&|zvS{nOY{9Yior2=;a4 zv%J~irD(kAMwZQkRazOoHAMk!(~bq`LUpwk&;6!a7ZEt$vg7)8DbU-#3nD662y1OR&D!Z?V zg0FATsQzTa&4Xeetq*-kQw7%`<@&mRSuKvQcH6+;GV6g#zh6t@2glB-v7u4?#kM!a z-owA(Oi5#=ppxlKlhutH^+G|9*h=Dl`~#KMU`6gPgyx=T-EfUV4!411b@c5Z?)Rr6 zy)Ih=Av`NVl~z7cFGcKhySEswmiWOn-+V6MLKRP*4qZ20UC1^$4!v&1yVTaF)GO^1 z3^Z?kL;Q$Zd$*zS^gMg;(QLsOoz?oii=rux^Ldaw@_G*z$T0(Cg5|EYy!y;DiGRqZ z)KH%+;yPsQmW%Wu1Tx{3r3YaoN5yFbOoa8G<*cNGb>A~n)8?y@)8ogw$*WXa4L~-LQ+2mr{T6oYU4J?Lvyfs%k zy%O!u7w>X=tu4PD-WoaXAX8N?dV^ zq)LV2A1EEITnvRsx;n}*R0VbT2r&X6O^O4>gBz^;5>$T{?Y6#>=;ind7hW6 zafzSwqaELy?)RSCon9yu^ql2g9<5WS#UB^F9Tm|r#tvom0c!eK-nJa5x%(aTIY_U* zQy_L{Ug-|b=b%34ZE~8*9|>ryIz*K+C^#V()%64HN{|{e3rWSG)RfBr5Q>Q3dM5+( zwTiY_)6ylZ+T60gXzhQLH;LZ3j{g;NjvY(nkPemK@Z3hX6i(Ej-)z~0} z6IFZhpCpAF^D;c@T3*(BqQze};AA4XRm>hgcJgdqp0z5#>c{^JuGd&vS=la)j@WztxRjja zeKB!%wnQR}nR|gw@^@NnEz#YqhYI=Srgx+3)=z1DebCu?|$D!RNu+kfR zmk+xSemxo7s{OnD`(Z0x4TG6B%0JY9<)}XeS z1ckw#~@LHrcLyWZQHhO+qP}nwr%5#ZF}a7ZQJI~`@L~@Z`|03`=`1)yDKv*syn+P zEAvVF4p1Op@^kdq@J?zRO_d*qDOQAs*VJ*B!KQX0%Vy^5IB_KU#AfD^##_3x{F(}rCNWK9O}wDo zQ6qi6%8Hyl6q3&!dw__7>PfY~*T&E&~K!gb}vG>?QAT zK#(Gp+OUZ@RoX2}8emLxf76dgTnk^|_bG5qC0}2M)7x-a@LSp&%tg;?*SlNrDV*zl zDu&)rxIqk*5xNY6i2ERLCyw@XJjRnU>^&&7AxFje$MnJdkez%+C$(LFe>K9t)uvB6 zsMhZ;4CdbzQA@S0Z7!0-^I6V7B5NaRI-f!(qJ4Mvv{K7-JbZ9qnl9OUV&r4OGjfg~ zz7lWn=Ao?w!@L7-=*iR*buE#PZauZY-nSw@4QwQ7I+%tP7LY!7gjjUrP)@!G~= z0>WD~Lc;6B_D+xrJBU80+hw4zMC%i_SQo&UGdd)54qk%(DBxnvL2!G;8xH9P?z7 z;PxOWPzA-VN$Sq68^*!yQmmrOkIX!6l5@dzJS`xS=r`}#R|%RK+Rq3AmmE;Jhr$r# zm#yRDLLD+?OmL$tl&7I}IZI;k+7``-g?k`z39o@oC?f+J=s{*CrNRSHh?ivdgJDJl z9fAZ2qK#eu<`V4KlONP=0~}eV(gIBe=T-xV3W6|hpZ%Oc%gFQ0yTG?u|mDt#C)7*1f4xYC7^e)B@6Lw}OPt*tSnSBC12ZbskW}5xB zEibR^D9*05ndnxzDUn1y*~+{Hys)5C(==!Zr6yGTyYr3h>$;n-*>#O(Gy4B_-OZKoI0cE)UlSu_?b?)ymWOdfJC?Zv6c3>#G!(pC}l^8f7$iAN}%_~B6z9vkr zzkz9GDN7ldRC-b0f=4KvPE=V*U55(hz`d!4#&qOCKjBzA#^oPpLe2Rk0-Da89#}QS z1tHf9-rE}sVK*~No1O`D;OUSxB^-o91GrUko?z`sD(>jqdpa+mmH|omc3$)E>}`W} z8ts$EWh>f-85TGCDiLP`aIQt8i}(`u#Aj1y0Z+hyXgS6O;T`-&mLL)%{Ub`rC9NClf?&dHV^5L{ zSV1KpjiCK~YYB2zn)BE=XLSOE7HBWfuSdC7+NG3Z6O+8%wNKqp8ZKY^UWO2;)p`c= zxI|^IxYT-=M%U@<>L%g9x5QTCC3VSf{;dQbbWsGgnKh=NfK_MGEou1GJX_Lm3n`YU z)Uun*H17jaLHp(e``wrOn-zb|MV}+Jz`{zZIiIS`wJED$ch`#@*#PcI&MoGvx3`&F z5sjSYE@`WTNDa%n5;o`dQmoeb6h*FJ83XqWhVa zLa`^ZjMjj-0&E%piqSefgAF_5tcGprAV=-m`&$vFaY`}uk}e0o>quJ5rxoYSY|{88YmH80m3_yH6*WZv~g8o(wyb?z0pD2Bu{AJRAh9TS_Uh#V)O; zGf^5mNsp=nJKYy6x7_f~6ljmxVpBbvRRu3G|9|Ovfjzq8UKg5Y$3=SzfErWmkq#sp zT>%nf^TQmLw{hi{xB9%|ZfQN+?@x4+V>$QhR9#nAw?T2vgexFqchs<=wc__VeT*NLmI)|wN!j`1R+rgi?a&#n6DU*H}~BTFB8`$##q81`-yFn z-L$_Um`e2@7m|NZqEC?do4)XsKp{FE>@#cjvQP=WO8Lf+C|_3$9E4zNZK~qUjW;vr z(pI4qa#o}-Nq`l#w-s+9jRSU)vvH8HuUj z&))sznpR_mDPhCqqkPZ{MBCzO(y1lHy%)gRM<`-lxNj(+ru?Io1hfJ48=iQ&vLR4D zL|Xp@&j}Dg36Zd?PYP>FS{ob)H*L%e6FXb0uI}ZChjZlPoV+XjPQl3ehqw3vvHZ_I z{2$n88%jbUSvH~Ka><03)#CW!b8008SB95{_9KggS)xw)w$E&4C1H`g^U`9vpH2HX zt`s}^Lr4%p6KOf7bB@+N^;Tkn%r-@()963vEZz3*lt+zp5_lsd=P@Hefmgiy)UY`4 zSG3|6G<8D_eGRIHAMqEalRH&bvBm@D_YiDmwsl6UYrE%L;x1IJqQYJlpS7TR8#6#h zLQ5knB4OsPC19R=gnOMu^*AWoFZ;&nZx3;PK1<2-hz_x4H>@g)tUHU3)irljdpJ|d zhZ*7XRGE=ZE^O|u`4y%om;hOK>fK+D%T7y~rI`;U!`vHSMQI8wUX_J|ELJT;=PwTc z&B!%+)!{XrRu<&c zRmhow=jVc%E_<#UF<>j;Z`lI_Eck?sbV9PGmm(pg5UOSyHT~0SVC!0<^wTy&q>I7P7*$p(>xQlHDLPqfQ zJlq_@1S-g2YN1Rrnxg3A>o*PHM;e z*)~T6$6zlb-U`8FWo6rdzHOk5gfZTI)lHHgpM#)ihkno)2YTknJ+Zxb&Kog>bQS1s zO3Gt+J{ZNJ^)GvH11OU}Zm4%nU!qej$(S5;P)msdts zg~!H5MVStHK3uv27-NLO2+n{^_f>omtcO=r9vB)M@tr~%zL}Tzd;6yEyqWbuME60& z=#O+@dv4+KU0?ZpuKr!=@1LFyh$CkH&1@HQM+{AR-mxiFXTBt6yOP;VoC1yjWftq{ zronOUA3F$HRX4tac*Dixrfum(D4m$?>SvR?19;CwoFevXO$}+McZAq{z|7NZHJN4MNL*9PX3;Mr=+dilX7wcMQO{ROpgjqPzTgT+W32U2 zk>~%nVC5={$?Rx(xeD!G)_resf z&GgPYshDR@094Ydt#fK*Iy*jXW^J zSLNt*Z&AANJHRtC1MZEHurxon<4N}c57PJ;xR^)?2%a6W2wB5&z&h1+lhmbaWY@$$ zv4m zOC_uRR?d%zijCg;*`V|UXq~UU2YEttSrwo6@bfyKk2_(wG|Z%~qjEgyh}mlxi%OcB zf(Fg~QE}6ivnH;%=|c6cAa-r=#gqCQ$?+!tf;1_!M#lU`6p6` z_pz9x&EyvoVNVuTZ+EksWENL4cGCHV{N~+ym$t=yq}=%Gimo1RmWEDZza#u5%oFIB zZgUzqCt(g7v0TXL8Qui~08A|akWCU*iI3-~o-DMVA04LX`bZQV&*m`j9wQUKMEq9O zuLT#J8yTt{TV%DkVv|GE+QIa$eP7;jXE`0QnC|Z4sm>`h{6modE>AK9Ea_9lrpKqH zR82JyOvI>_RGN~*?n}<4Caba%)icJKo3e&uL(zt6U`tuER7#e@=u&lR*t;nl<( zAs}ch(t5L~OP1Whv#|_(7S{fQ8#kA;g@QeL?xJQXv*$0x<|)pUWpUV%@llM;^ul{0*K!0>Cya zc>gvw|G#J_9s1gVr_r+Y9zU3or?v4p5h@YS*6)e>8YvqwHNWeOmI=HYm->l61)(_* z`Z<46K_ixjkhD<04GTRNI1n}q|3uw*Nv3%+ZU~#VER{Zn*veX_FOT}SfEvAT z>BnUQE!#pVFlrozH0f_KVq~5lL=D}44;oi^>gP9lXAvIu)%^8Be{@9`cq*xthJJa7 z=hVIXJlP6;NNZ-NM|5(&)+Yhdfa&tmhz)H#T?LAb_3gx@Wl(nVlv4080Z__(X=1!- zdn#~N{H+50^d;CmjXu=}G@IS`*PDYB|49d!>Rwxh|4opY@?Kk{E$VSAcva72Hx(0@ z6Dc?=cy^d$KE$9s@()FW>dd=-8sm*RCDM{WSuWS=CMC#4;@(GQBD4xZ5TV$Tv(bD7 zEuoB3d#@(wjNTyE?yLC=k4V_(<8)ucD$7v)>y=oc@t6mbCm6>Jt>$83-?0oj6CE`@ zcn@p8=yr|ZgJBzgFMU?p3+fH~vF9S`7M{tN0h1@(v@p}Z!WVs6HLa^7$hU3mD?)tV z=1IYOm5roR3xF8vlolvdk~n`7_0;Icj7XaV5~my1ugHJ1k_qgRHo>t>2%zC3pA|oL zLS!F6(#lRqEsGNOBM5`|Ld~1hx<%?e1cdyuEM&A~a45;9cqte&UNc%*+$%!gZ;4gJ z@_%oanK+i%u-WO;IEV{1qeEDDwiNMsZE~YbgX#De?1^hapMmL_K?21A7hsfeq{A%V zd#lx83H7frf>LpaTg(4=0YaZsacs-2FOA!SIiI}CGr_yi!otEnBdNneEq4XKRm&F+ ze#}))$=1XnQl7`-Hv+eTL8r?N<1jU>>R7W%k#He_Fwg< zKkO-YjUDjU(m=4pJxkIj$fAa2;HcgS=c3+CXQqwxHDypzVkX?l+UNFL)J3l{E%nH-#m@J7zDJWbGTWG3J*(~elV6| z;@E>Co@N4PdtX((BYjy?@DiLki7gYK?=_(3?4(>Unob()O!X&e}>Y*cmv=!t7yL;9s!! zMaxsIIEp*XSL{%d_s7R?j^zPSh!qeOkPD9;m?NNhY6u!lWK=Nfv--En#UQH6g-+^* zrrGvi7keNtA!NwkTo}ERS z^bs@#1%{!*&cbmOTGyU#oOFa#&Q1}Iy5hH7&06qxP8@QD8ZZBr)67-wAg+% zM-FBVHVRkI9j|4&oa&qM+Py@+Yot7Uj^g7BI;!`D$v9y{%c!Xlv#YCuPoW{(8ribO z4YTG1pi#Op3PEs8%5=k@=PgOWR_XcHNFj4SBhYL=L1;AzD2snwKNwDL6b{(%sa!i? zV-I*7nm3NUxgAWeOD)|w!pi)zkyJ4EfqT1<~!iq@S7vm=>OIDWXl=I zJ$Z7&jM>l$RaRJY$A(k$aM;lbkINf|AUjFB$w){Zd+mhe(?wkWUauR_rhu^*e?MDL zTYcPMF&?p7O;T4Ryra{nls>VbLoi$j7a~&K23jy=oE6u1n2EH*ns2iNQ%X8idVc(J-?B@7I(_7VJGfG__3%4k-Y%pM!b&%yceA=ue= z>3TF(_6H-8w$Hbt|3gBjW_oqdM;ja{YX;TEtg+m~eSgtf+ItCIbH?6yZ7{(EPArwD z8uD5ogt86tf0R~vxh?>GV=s^1U|2>e-TQnX=znBI(NX`e zagD71-?&C*2Il`uRO9~}4>CLPpXC8P{K$Xf zR9D!z`;VD^$CnG;OUeY~N6New3#|>z_@oxq^)ee#4};}+(5(^-5+4Xv3>_L<2+ShN z2xCMth5Ha|?Aii`8p4Cu#A7lgHS77#3p+2(aK`s=bET2Y(ul06)waZ#Bw~Xih%D(s zd4xB!n68*6zLF2#cFq z04D@?rRUfO4#&x>(ZgGMc4C1NCot@oPB^Z~(`qV0zT|aJXPx)U>+I_94MBof*vsV# z-`WuU{Cvz;S#pK`Sso?# zK4)LWVV8_KR!aTBR!9rpM%b<&3(3ah4rTk}8Kb)It#sT$-C4Zqz$?1Sq){W7{=0R7 zFeJCV)E@}?Kd>Yq@Bh~+X8Ye$tZdiVQuZ=GmI#Q95}8v;Q=X zzjS=Y{~(nr(ka?G8#tTb)BnmbwlEO1bJwE(rL!_H;ip_wXa64}3p4F6mFc%( zVPXGm*%&!!>2>H7O`Pmp9F0tz@EQNZ?f>ZUpUYo;xVh;>fA#p!ff=9SKOwz}bfPTy z4F4U9vN9t+(|=DzS@9V-{>y?+-qFrT$;4TUPF`4)PT9oWS%*%<-C0cOKZ^cx5>sNp zXJY^Fv;Rlne@6LVfzl?nX3pmL3~X#{?EgO>RiqzL?#pbG9c1q!-tNqX0Erw&)?7s%;vaqb6;PXrMWtY}9E4C-7GTjjW{L=Omn$G*yDG*E<+HSSmGB+-X;kDmN^< zb2=-OTB(s}<%+0rX|(1|mtb^4!k4cc0pXN$avz8;(lv38tdGMal*crBdgwDh{Z(A7 zE*Vw(Kx)u9T~-wNoIA8BixO3XYL=2BRQAVOnpqfG-Khv!8D$#Hh!%oULe$r8J_J~h z)|Un=H!%H(uKO@;(233n8a{7c5?qW^L z-8xk*+KgydY|ZM3F$yRQTHUpA1{FS7bDw?FGs_GZED?tPX$H5O-%&yJxCw!`ca-d8 zPhZ}#t*~r&!e=0NWE>Fq7?IHca+igqO(zv)caidHBOMv3ly6o1fpY=g4e@V> zaEol^nBEOT*M)J|X~}uO5`_6drl%juD(tm))dV24*#(-o?q%zgLWS8OJ}!gZfHX6( z7fg$JE7ZWmk7DZ67EqcVZd-BGG#R;?BWp6sjx& z!~rK7X_3Sid2|oqyb$P|an4me1>2$K4}AL-O3Dyw{ye@PffkE=9s&PXPsW|y7Uo)? z2WPeTJ(Y9vwvw8P)?XE^iuzP_n%H^h5E}p+g4(7h>I6o#NgZ+%n>BLcY{L-f;|)bg z07T+xImv)kORUce^wDvGc2viL4;ILpOXR8X5=R;_@1ccurjJKzHWLb` z-0!L{3eP_?_qE<>jQfhj!No^lNU?zZZM&A#7L~cP5Yd+=h@KJTCFJ&`s>`LjLt0|q z%%phe<$u>M^aEfY<*7;H`?Ap zpBh4Wm%6u}+b^#~--&zF*>bdtE>Q*Y^FZ$&gSFxCA*jW98|!4*YiR%^2>6p*QopSu zg(x>sjUYJe&FN~?Fl`puzBRM1LK=08{MyelGn2NOh+n8UzRe+f&ee_#(`QdQ3O;C% zWQ>k9@!iEZe;B5&ok#V*wr(K_wP8+qwVJT`*HZ)&8$5wtNJOuY(k1Aq+VwHR2k$mI z&X*&5Dy?=K_mklKJZsI^!5PE_B2&&W5$y2C2*S9AIsve$qi^VR!UAvqY8 zR+va+kQ%=0sk%G`hfCCr5S{dqwlOl*Ie#VTkA< zpq#vi)XHg1UtCLA2rR~&Uzkj)4T92|Jeo{q1iYO=Jt$86MSiXE1Dk&f@Dps`(;7#& zXobSXl&Y`9Y}xG3QXNm;BiYK2XE1J$7nuQxB)~N+3ovEM(9+mxUt=+M8-WjXJ z`o*smG}WS&Mqf-RUp;`=<|5*QZ0v z0Ia3eF?<1H&H0r+W4;`c+@A>e!GA^R7VnX`* z*M!x?`b^9T9#fzKRId2~HAfrw@ik4I4_2p?5#(<3i@Qh&(cB5{U#nWRLIl zLcAHv_)|OD84sSFEBCF4+%M5O@akL3f(YErZ|dW>6!xQL1#qY2VXz`=tZ4a0k?`a2 zvV*w`e#knt%lFlc3=4v({4B-H{blABo8DAi{dhuux^mU5W=by>SX2x499$B4*Lb@P zzse3*a)IYvNwWh?4$UW?X$}(01nYBf(>TYzUGp*WX+YinOBzm~@e+vi5Q`D%hF@Q9 zB!njzZc}L~$5zpJJGPc>)n-+GZmDvAos6S^%Py4njp}AYfvciruY1Lx?ps9;Brw#A zeHiC@4+m~&oCyiz?(X>S$Fi|0(F}~q=%aDh;B3Bm>P$+fz)tvwgo6B5B?tl(?k`11 z$mZROn;&r1w<-v7_9;~XXK~CK5YY8TR`bZRIj)ZC*Ghxs8cpT|vI;#Be9lvJEt2F7O<%QwmcZ2i`UWU3tjP8PJ@?IT`4({k9q<3!!B9=tss z6s-wL*V}yt?I!ferrEwIOS26p^8KQSHA0C^y zxBLD+93L5ZaBgq<_J3U8oxOeslnxq}?de<&ak8wkIn#I&_$KJK0_&mBih{I9@H@pF!4e% zn`A}Xz;793qlTjww)e78d*K}G32V`vC=CHd>PWG@@mPKlD`kfmY9>_hgbb=3=^kJ$YdI?q}ym7*XX5DqRB`Ir`!bNmEcw#=3xzgJ+(m$hh$7onh;@(~`nvH%OZ)2f-m;OJ+oxM2722@%($i1j z&UuNOUr=)AeH7OG^bgl>UM8fFMk?%c_F{G_&dTlI*;8YwdjUyY=$wlB?LR>c6Icqn zjbp+36Oe_IqPOCsq#1q0+hnp>y&;SJqKF=Lt4K7>d-HV9kIAR&lZ%U?=08}C3h9qP zfj9c_wR!F6BO>x{-?g=E_Zv$WUw5}R6TKJDE*~Ed&p7-SmOuPt6HMQ_seXjMv0|vv zXlVi|5oRhON3VXa=5SaG1hpkJR6w6T+XyN(`E%yA01gG)rp-`&(#|G+b@C{vHp z^nT+tZ{*1uF?Fmy2OL$({lKp$=7)UYDIiyOG(Diy3BuN#yzAlwLKJ7A|H&%V>^>|F)_%vxtQ(eUN)grR5Up|~ZxJL!rKpV)4L`Bo zZus6Z*13WEe30WJtQgi`IW=Aye1ttgOfUrpP<0_;e7V_R| zAm5zyC7~vtpX1oB zu)Zt3DvCQ8+FE1{TxqObeZl#(B}^Bx$`bXxE43*La)%l|1Q~ zaj)??W-`Z6&_W)6KblQLkFnEWRA86nlITQkK5*6{lP_{E7UhuVL4H{zQ(xho!z>we zxk9S7a_g({A!Hptej2)5Co^B+RmeK*W0f4Wk*)<|la#Y9OA@b=vNA%okOQnF_+X|c zk|ix+KBRzSA@CN@mb7r4EFyvh18t?wgbSd#Mw*v7JT-@(P z#&jX@X(50&!@$zo{EhKs#W(27a=B8oIqIk@#ISg9PRjlGivPzVcsSI!ZUyd%dY0Dg z{oy6;wziSz`@w0?FZ5P&n2BPc!MD!E4vNL{wq~_|^+8Q$8_%Xd0!ZK^Shj+d85CPA3WD zuvrr<8KpT2aaIX(Krj(VVPvEjklL_B0%uaN2G9Nt^E@WT@hwUNb|+bCqYzx6<2n#_ z258qiWa4O`!`)#3MU5o>3@i`0=x_mCMO3Fk^ina!>X`8y0j=xllwCEt0F&W}(0zXpLX<^w4#gEQkdH*-FHVA0;#=d!~MX zvjSgLuwZ*yXP$v_iCiWxd@TavGH>5nKM@J5*I+L$bpT00 z;;~LPp4zBQ9PeD2&~I$P`caw4Je(z}8Q~Aj|6`cWeQ|P-O9LyeLkGK=O99DuJxFD} z4aptg-3h3P_`8&1PX!QO*jY;3LSDztnown%T?Z!fBU8shl~7c*q;txuJAesL3L>jS z23SNYW(W3}V*rD9EQpbE$yP;p*!;nG_Hp7d(S#>QOtzupS zSrC3LO&N5IVQogVp;4YVV%_rC-d(3#XF++9tnF;**&#xhaFn^yxiLh2@kH?${(Rs> zsS}2KI@`&jVm&eDS~a)VpeXg3Mmrjey-iY$e!p5KWid=(NMd9_E6Mv%Y6|JC_ko}= z7Py`ZCTo&Z^0w*FT3s4R2$x{glRU*MRS2BNd63ki3JF4LzTe)!IX^~PNXGEo& zf{7-^MyH#_iB46S6)h+ro}G!0JGl=9v-5I}cQ0kc7k{0)7!nKU^Use@dFne(j1Rs& z=WZyzL#H&mtIC?f3(j5ZkGWigidA>7Ce9``6+lEAN{EWTGa>_(KXVWz_4W=)=imxF zY@#J9p#*^e6fvQ^m__20yAN*y#9a`IDylH1d76SZdv%R5n}I#`h?8|}lf0d#S&?=E zb_XUJ&0bJsKy-IBT*OP!Vj-fm3GKCV@@o|TO-{G8?c4rCf0QNSfJH(UL|eV zVx?`3L(Fq8&Oi(;UcrnXl=FS!eJmwni`4+VaE8dvDttE16oL1~G-rI!f${?a&nn%6 zjImkMgIw3#iJ@xP&NJ71jV43g(py%-8qA!&v%gZX} zILH^XFO!Wp#MAa9s>_=EV?gwfMM)YQa;9vJ-QjV>DPC*0m$N>h2j`_=)3Ok_))>S? z9?qQ)Zg=gTYP`aq-xg4Kpir|gj$VXk6`Sz^Z>|-7UO>h{e!I!Xf0~*^pqPa$2F`G! zi0*AFj-r)6_9HHk zuE5t{A1ZCR-;@SOq~R1oS~tf>q@^g;w2v8x&|UyK#&q~p(n%X3)-=jg;koHx zekGeZ**#_)_5tkGP;gNC>?L!2Hd5 ze{t_hlxT$&V$9S(Nj*74@esJJO@P*7DfBXkJ@RCCSz}Gm*-(qt^RDwceB(y~flQYQ zJ`UMVAjEo>=#KlVl`tZPMTVDk1{|ZC0LG_GDI6u+{@Dw0Q(X&bn-2H@y>^ZT$vwV* zY_v!-<^v=TuE#`(Llb{XF_m$++!jo*i1EB;qE|BOA%F=_vN-+>J-K zBtzAf1H(RmL}KmYss>{r%12z{e~ZpfHL(@^BqPD7ct7;n3|82Pnr0=es_r-ASjZe9 zN9vWJzVF9!x76|*fwo;eyNFxs1q{yYltjQKg0_Cmf4J?3Y^+&#@Zlr7JmHfyrnFg; zQf4KLhyHYf;8rD!Sen+08^X)wYktwVwGn3MBupOTlv{5HjKjwFa>eEJN|oF668HNT zpG0E2ia-XLiRwr60{SeC>9QoKMQyTlIb4zbgf?9iUXmv3AQ`Y}te(j{dU7p-e3KX2 zRz@2g@`GCo&Qq*Z6gm}WBz=bj0+~>jqdTGXsAr|C-{iyZoxak zaM}uux{S4fV7LiB9U-%2?~M?&<&LanzS{84Z~WV)b zr5ERfwVQQ@E-Hs=qvWo=(g@OLkg7Dru5qtE$9I}wPSPd_=ju)zr|GP-WQYnoV}(f@ z%)e!x>PcnJEjjHgzQ@*8#Sl2rFj-A;RrFLjS-fryD+8 z@$x!pZugz{H|mb)b5KvLF+4^URbBAW_Trw)q$c(*uSiI7EzY~_dRGWFeX!Zo;foM( zfwQEC=|YSwP)2>sPbdAo6BA7#7(AT-B^JD{R_MI=YZQkM1QIZoCUKq)3Wmob zSrQDVvsV#GVrRcjS|`O>?Km9+YL&&;r!NP%RO7!nA|wI;L^v$CD?J(crEKMsC&oib ztt69@1GSaT%eWd}W)A;0DDp7soWW1!B$J3yh)coks_Fkj7;|EGWWw z`5SNEsq0`c6;m$W9G_sHf;HW*Q@_I`+V<>s%52%LfOzPwf? z72wPr6y1XF0pjIVFN=Ga-bYDyoxlH{ED#06OW9U2`CwV@u)~PxSloWT4alG%L+hlM zLvK|l1%@XjL%laOQuy#X2!1`z`#nS}Sf4C)L4yS~gA^E4>N_D4ews6!I)yyt5<3u( zh8e=-e7DVKqpCd}%G?f8bfs2YH}r?u!~^DE066ZK+HpiR4dJ<|xRN9Oy-69UI#2s? zU5Re3k&DAozuk-kvAzy&wOuD{tdEMmWM66 zrTPr4clj|(t^^Y~b@899Nsdl$yU&J=4!_LZwEg2OQR`5$LC6tI*v-4X$Ai&SRL2s` zq(buW5)Jzfv>Wt{#bN9g&?o)NphTTal_JU_5 zG;0F6Q1S$u5bE=RppvQ3nbzgCp!DJqwy9vsU%hfjS)39pExLL*DXr&edwL_+8{2Wy zWfAozo|-cT;z1zjE<8cWDxKJ20$Zdq=%zo-k1Z?0`MF5g$G^4Fp2q#au{D=Se-p^! z7rAREIa;$g#k=-v#N49a++%BIa900}?q|22DCEzSW_!GM<4F?RNYk>B-rxM`1Qqk_ z!YNILJ)h0xbKeqiAseKCNjZwgCdpM*#t=AzG#VwmD);@24|CNuW6M6T%-3X7cc-G5 z+?INz)=0enOWuJuQE4$ByEKa|LyCA-9#f|Ot^OuchIS)nn1hu?$4w=rmk}dE{J4K| zB>(Ev8d)-k7fgEx`Ly{AL2>g9&Ucg1jT|YTalXS2~IY%9#;(K}ONKL_j{Ox?EISyu)Va)`^!{6sja~ zYCpeHgsgeXcxrE*PR<3bXZYCAhuCHb^89Gotz8_pA~Nz^oB10lid4$YhwF|N8f3bCrO`0%Kw(YWQb=iK(Mwe~dwr$(CZQHhO+pc-%+l?FZ zA2Kr{_c?p5`loE*Qk&q4P1)u-_u2e2S>3&L-B@OAHC-Y_8!e= zEgkFX&`Ql`bEB8}mk5_Lt_ruhseUJWc&^^LOiqIZ%0S}L?J2xwAs=}K2+j!XRe}K; zRG0cL0WGdJa}6yv=(^khM~V6et9mD#q;1OU620u*OXWhiKz4t+r3qR(>y25A9*ua; ztkv&y5Pt37xl0ZqS=}$=z+S7nRJb4C^*mERnE(=mm)2YAjfHrFp{l=QZGq}sK7!za z2j@WH>9=eyi5Tx_PhreeMWG-+**Jj7TfV6agUw&#GE-M=aT7XuTRvu-UjNw>$lmWz zXIBYOtzfr!evA+mm8}XJQ6q|IqdH3`;hJW+~Cb%9A%YnPkxn$~_ zvNDZ#^$@#h$gcSAxuAkPen*&P>u}CezU{Q1%V@t(giul*TI9bCD*BFM;k#1>V!m7D zxqQ^M9veG-)~!rJ7i)Aa*lyH2XmbWL!?NbM;k6N9#f910a9f&Ed^*K98~*3*s1q-R zKEQCyRv79OIE}jLe85b`DdqIWCPYZsjfcAQsq3Nob3WW!kAoB6uZceFZ>!llT$l~e z4>$L@v%09q4)ntfVS7$P0?l9##r6VCx+#ocp=OcUHYLsICmy%v&_D9`A~6~5gQ)12 zF8wvC8lq~KEn=NFFMo%$Cl&bp3g$yrpn&|^46zVsu1|*Alu5tn{0EQGw&lf`Cc68qJ-TG`GPqBAr z+^+2l%DR>E}3o(vFso(D_MZUa!ElUbeRB)iYU~Tlpl1 zI&VU)X#p_+5F&+f%G2!lVHjNP#becYDxnJ4{kmrJbb?2Lzp=lcOikO*)rE&?DnNf< z+0j*~cqhtyohkqCP~|JvxAj)D-2sch40hqvn2{noE*|P>U}{~a?}cS%v?6FRzIE(@ z>6kt2Idh6~@66U_h-ReoH(N>!9FkRr?3;QF*n_P&tXm)#D#F;#56aNA;@~FO=Rx}( zN8#wynt!Vi97v3^FsJN`-#;!_r*#A@8@%_jmnG~U(BfH?Pl}!+WxIrc)n*4x7A(TrrbUTkHM$p|CE$F1`Su(LRsAjJR_1EX!2U*x z^Hg0vHMRe`d2m#%$yO|lr536$L~0k->LGR9R7p#PE&*jcdr{C=Tm$YZP!_)EpxVt^ z2vP;yeRLeWAC~f5?QT>AA+Nd7Q4d&rc=5SBg}3$6JQMi@-i*qGhu`%~fe(YVs3bQU znoHYF0{qr)j^t0505^5b#b7<&OK-OIpQkXqSU+o8#*f-xwJ>J&hZl`X_QN?1WYl}FXMR>Xaqg>uun+MmPs6I4F)^RxJmC)^!17XpE zH>=4~P%=vAWmB0yip(8xS00|LrMzf8QbVHoe_8XraMbCO?xXUpDXEBDwc?MFG`@(( ze^XLs*_?*faW1bh#t*)dmnBDo;&sL~p##9JI*MW}+G4s-Q4ubG z8V)S*ZSHuH6`!SryQ9Z1JM;C${j44Rh>I)xm|r0w59B$}2XZX)BQPYS3#60N1rvGe z#)?g^bT$;Wr8Fd1?|&#ir3wzTl>)oMfkWhVjfR(g{Iivt!0953@D_m9|D7$(2xSl zIaYZ58UDBl6BjNt)t%gX-w#J(&rD6HzX@WV(Ao&Qrh(M_;j$7MOei9oS_^$%>9UM$ z+mZ~`gJBiatf0_taU)vNhR?kOwytvAh&^KL*GXP=w+7RrQ||uV!!%H4t6?j$C|NHS;D= z?c0Aa{1_bkTth3Yb`+Ye@H^{mORS!r%N^HPV3PQp?&fuWgmn zhcX#*GFR?2{UjM5-0@PkTB+W^XXoJ=R&UQ8xICr}!tZHTGGT%M95)#{)*Pi?xkX@?gU ze47ElF>=*x*S^vI3Ae9WB8aP`QZSn|6I?ng&5-e`eF-|$ob*~z!yI&gK@7HwLd)U; zZC{0Y*vU*WA%4u0-7V3t)W|5uPdAGOW=bb@x{WM6i5Y9vWg2|mxT!xS5_PKXo}j-9 zy?ssQ1eFT}dbj_+P>XxV`0X0;xHI;Hvz$WZo8rLv=_~a6aq+c_R=QL1$sahY=oa#3 z>lVLpiriTX^iibY?q{|(tlEagLDXrG$N%bmAlK9DSmWy}^kB&1n-!=Tqlsliv=Y`0 zHYMtTE$Z3|sv=l#!i_(E#{#BxD(P4pH2}_GD2Uc#o!wU8l55CDziKX`P2j6)abdJF z>|M$k?069mmMJ5zHV$|`azCeP*y+LwcV~8h*5bbEr<>RQqXpi^bTp(aq3Jiw71p4* zV(%JLx!@mZ0x%0c1TH=Tg|2SC2av-@i~eO{LfV80x}mN!zOlqn@DBvPJz`Fd|?JCzI&WGQw~v1asCy#IJ2=$>yNQ&x9#s2v>jG&a*_6v z=z9-Medzx3(Bnq+*4 z^?^1OmG-`U-kHR?qP-lO+fwVPg1YGzy6)z_1MwvqZfUpG!^j8g!Ot-od)LLdlsa5< z$?$H=gK9XpR7^NS)U+ra)Do;7icVyQY@LU0&CKw}?F}iuq5)54>c8&a1&cNG6PVca z_8;afk*U)u*)}*kg!gMtqxxD`MGQX5BD=NY$ZoSvZnIt}1DN#xMQ%))EQ!NnDhKv5 zr@0u^|2+%YHl6-d(fv{TEzT8h1zQ#&qfhq_xQz?g-i^sOyuA{`>_G<6i#)o~H5nQV z0Zh=RDB-3^;nU^(wpur(ZtZJJguw7L-Cg+7z#rftMX`^DC6|c33n+sH`_^P9g7#)z zxFUG-SUA;TSNn_hp7Ar;=V&!u+~Mq~02lX?ILFlO6TQ;Swe^mdh8FMchF6Ilib!-D zoC84*Yme0+=kV#C@|2aNqN8T&oX#8w_!)zrUD6e(&hF1($s6e8L*K9Rt}pMO?9bd- zIk$eJ0FCQ?env?6XyQQ+$?6a-1hkEqrS(Ykn;Hz47$2=2ZJQ~%#^JV~48iZ^mX6E$ z_W;s%rzh21v{}F^aBG5>#CDhRmMhP$=5XU3vmL!-Ld?(P&YY!GbSmaO`aX{C7JBXN z74G_v8uz6*YjR3oyjZl29B{P7n4jiFtSN+d*#T$phNRQp7i4&CUXPcAc@mHz`YZ_t z^liYXfB40Fb}6+1hXL&XbK$DfWpNK2egZl`5&GL42ZxQbdxdZK^S@Np_V<3(HzHFB5qixTqrqcGOK*w3L=6=Z09=ExAc)1E6LSOoM|zOebGU^hn1%TYS$i=P%ppbszcFGq1 zuAGB3E9kkCMLu}rXu&3Y)m@)}NE=?Q7 zq{}WM*-^~1({L^hk?qRx@U&T)9lP~MpSNm^OvYj>-EU(%=rNFIVHmxW$;|sYz*cFj z{?V}92eXMkJ7#ezO(>LETwVH2XKych9o2)`bS4#>7hv zXu|$%^%le30fxz%#zCY$`v%7k&$Kn%Vgcpimr4ZrNlv~X7kdeTBB^)6yyO-#(e_{Kp>4Jmaf2M2W!DODFMv0x;)|4n*VB-Bl z7;Lk3=qQYYv<=D&Y7{I9R1G$xL!2uMtm1tOAYlvb3x=vCaAXsrWoS;d{{5LR$XGt6 z$Zz??nPbm0ZDe<(rh)gPcYPaQQb%QkTGmLt~$1p zh86`bPb|4Z?jXhN%LVNd*JMdOZON>X)X*%lWqz1c~8=BFQMbJO0m7oor6+9n&o4!5>birsi>A%7i4UftO zdoY&@wttn?)a{={8E-pZ;5|j2 z5L*yPEt}C^Q|CC>Kon7;Jb3(`_)e1lhEgVcU9SnF$(yqe6$XcV$NY9@NY@7=ivIY; zT{)Mll$3l|OItILaNT?hv%h^K{RwRPynb-y9%j|ujE);R?^$*gI0KsH{U$s;Q>A`? zuD{(fm2&eiWjsoLE@NoB`&ov!09c<3sHb7O&fid|s2_9YPtXe^^lYPwS(Id#-$a)X z&&<9vA4B+un9S4Xf8hpoUfQGG(2f3w%mxuzy1}bS68U1}hKPW4xPl65bb7*)w>WH-9HLD`+?Zm$Z>qNMwyZniw8-INHd`ld0a)J@^@1lCzdjaP` zAUYOxbcqC^oj6rcr8kmK*^cR17B=D7YtxS9WV3QNpX+#K}-)87D z7NrY~`e&VsGzR5l`F#t7b{FJZZwty9&ybGjJva|MdwqQB%GBkT=Woh+1ck2u(U^x3^BaUe2BhWdJOg*@}G3x^+LOY7h9BU4iOl`pY zEI?bYf`KLE{Jb(G8vfCO^Rq$nJ~FxK#eBk0 zpIF4B9$Y3V}_WRN*_n!rMR_^x?gxWQnFsLPk(mp{USg!a7hvMTb# z&FW5GIt5O;oC~QNN%Lw1i{6^rDaufRY~&ov=M|4Fgf<<8E!Sm*Q(bLffpk1?>Z35L zN|X?dvZhDBHnyeVDk?WlA|EpbW91CD_qN>7izrr;|$>a$Zb zl`(A0@k)nUH;ETWYF#Hb?uj%7@T(M++xBmh+-L#L5JxMI?w`ZK)i{V^bUgP$kq}Oe zedH?z^m!1eE)t#-ABn&tiJJ~8?>({gnzu?No6ruiQ{#%nRxk-e*3?Uv0yo#I*E1$+1|Q0F-J z$QC&ow~;-`^aC0UoHt@V&qyYNrNuwq+EwJnJo4S)1}Qh13A*rQy;la@siXvd2$fQl zcsIG=%uz;VJ$xb7j~Y(4#%Hcqw0~tTWi&>0qDoblo%?&Eb0CdHG-02Oxzt!C(HBd7 z^h=L%%zD3;^-PZX?fDVA^27*9UIg*&#=W$=~G!GX`s`$%NrGcx>-w@J|U zU4<*m1gNmry2tL#bz^I-V{6+OH`nME6B;6O?#pO%6g><>jy<~mtO%-PZdel1gs%|8 zci~-gmR`kjtG;f~SKb*F!-zm9AoCGyS&uq4c$z!p+AW1bR57S~T~The#BZbrUCxPz zv84q`tO894jM(apEXTduggMhK_M^6>?$ZIHFm?0L0q%~3 zBjVxuv^vhmDS3+8eDfO_3`LHwFLWB8@u|rD1DvOT6^VXZ=Q9U05mmww1%1bQghiN7~~AjSJEmi6r-qj>QH1 z?d0&F2(&VEE^VthQYjppw^>hU1s5yY?xnW7E-sU{W<50u0B>iIt0mD@I&>{NtGCrY zEiYaMNsH(65f=zm_=}3tAW6*W&|Q&zwkx+2yrJPDeher2qM#r^=viBq>ew6ZAk+FC6JRgBlfi71#P-ws zSP$h<5wt}le|x>D*+1>AC@Xo)3A+wA_gwctUdY?QZGDgfb7aA=PzaGgZo_di7AH~I zNtZL>gm#4?VL2OH>ys}i?U_7b^YRL)d8;fyBd)>X%FRyy!CseBMgG27JHIJ0q(P*N{1#lLnmIHMBQbJu0O z3MIkJ<4b}w5YG@$qbpW~yWO&1kQ(0tcw&foENZlxH$~U^Vb06VqVKio_~=W~^4Atj z%q$9PwO+kGCYm9rn9^lc&xJ6)@!l(j1)gP_+IG&IF^n8>u#)&py>&<(UKtb10CFiqgSVDUw8i8HW2Y{af17p2XNO~VEpIPBUNmLt z%r|8=9Z~ff8WgR<_=b~|HTTBUnd=(N)asYuUkjxEDkg_F{CfL(86G35K$|@)4OGLt52c+mtotbnA9h6BYeO8Nj2F<%u)5^MmE_m<uA~~1L)hHXv+a@EwNkuW84*k;TAKDZtH*o*JEF*p6Cx^p(ZDH98>t+0_{S#6`}je_Tj-3|YSx z8bHr;j-?AU6SKYjGS9b@jkBbYei=6$it1#2L6zn2EURq5wsnh6b!d!%}fM z*QFfkNYFL~XjT1eb$h*fRdllXrDotY_jLI8`!<&^(E~K?DQo+TWw!X~J;M!LG86Wc zl78@{)B8KVmb_%D;4$-Y^PM8=Gg-g)$Lsf0*7M%CVOtR=dH;a}h2M&_aFMt1z65&q z9GSJp@BIu@f&#^j?k`H?r1$hNSoS~dX)U5QlqDEO?uK}|97hN`ZCDyehyRhzN>oHR9uAuC!>2xEsF6&Y zHcuOvZ6f=CyDq}S)m39$+PuG6dbKZ>Z6p2+A6b=anx@357creF)$+S&HN z$IEBRrXdTR3FI-s$gNxp8y+x5Q-mTL>+SL_(1v2(d2p`{33$kvP)JLha6G=>hcVvF z&C4ym{Zg@Z6<;s*p@Fq`Utds{_@xsME}_D)^o@3?eZ>S8g`pjXQ%<0aq{yu7*sPZ}5M=k@4b4p-(hVXp&=xy_YUs6p^^rb%4d4J=nZ;-)J z6^wQ5i|dl`jnj--S6YrTPLokwaV02@IHA4qXP z1t3cJ32PIUFO2mdXeb?i{<*S@i{4q~8-sJk@Cy{;{LRvSbv*PA1fE zBTdh^44kR5*iGQLcY#xTLB41}FmxoVY)g<{k>4GZj(pO1SpgZLx@@O@ei}MI*yK)Z zx_Yb^ude<>AI}0OShs?W3R3dEew|)oRpaMQ?SXm(?o~QptZRm0uiabHqi6y>O;BpV zhyPU^X>K`$CF3+xY#pkAMi$_VF|0<2dh<7^UtwQtg;H_F`U7P0<&lNszlgBJOXP=M zDU)7NgXfIC?++KlG0p!4%lTgl&HvABVFCOf+!lI8X9K7Ih1mQr$%gUY|I0`6Qi768 z6i1gCyAKo<5+r~)`bGNBPXUG`k5uTu5e69$F&6(16?6cJpCAtrDBg~WCKV!*0yD)A z0#J5Fanlx7#t>5zaW>^~WfM(2BUzH2{cT@rQQ=bBQc+pCyZY_DeXHynE0K>QSEh8) zb@z0X6r@%v7fwUWsKN`PehI3Cms-=9W*CBA2o2M5L5@C{AXu)>jG=I9NlSu6h6+N} zT&0tgl|U;ScP&AFb#M*ER%@&ib98kq@)nVJNHTPC)#N0ufQ?kg#;cx_KocvS8kP+; zz{VI4nXO-pl%K#H&YdXq`v^%y7#&7>gscuMo+LRW)WNMnBOZ}_OPEmnEBn;zkSF)w zVnX2@C8jZPanb|5MY4Y_&>Z?4k-0?&g0@6$N$aBRye>csQ#}e|%6h616Q6oC2j_;_ z%Y=j>0W%ppo3(?9+Kbh(#Q~m`+x+E4a^GFGAAzX6uGBC|rfvJt!j^GbKsSl?vcfYtC{zwV7@cV@w+ zd0W5J^u_VI`?{9KL8r-Mo)RMbU-@8A;Ea8~VZ~wIA~$*YBlzj(%$RY$WR+y@q;#se zYK&#vrO&F)syUk|Te#-RLEo@!>Kkpk)2w6f4dLtA!yIig-S?jRkmH16@0Fiw+Un55 zze#!zO;0{8LaqI7BGcl1szBvU@0E9}XZQLIFXzfz=-p4t2cedN{$|aU^qNZz{JI}< zzG&aL-}*l$e%yNOb=+fsvkUNb@a@y>et~}9?KFG?6bBzgH45~KovWsIaW&^Q%eP9} zZlp*e4Pw5?t4)hu<@V?2mN0A6)=}$TtY*N)0DON;IxMWNNidBYxdT6@CKUe)01-43F@k+pIRqjA1IyA#} z13TwL0rZpTkJ;Zxn-jq_m~t)y#WPJZ>`U*VGb+L3d+ctpAjT#pyFC*(T@|@tC|Q%* z@+!> z6Z9@EcvDL#*oi;Ar`({ep?V*9pA=7L?pggUX?JqwN@<|6m$IDLkH~Vn0&v5v?+O8#EN*}>b5l05@I?=Hf z0&%sQiEys}Mqzu;ah7>cdhhVHZklwCZd_R_m~xh$V>OY?XGI++cHaE!34nd}qN?1^ zzONnrjnAw-@%xMJU9-i0%;uU6tCzW-6as%TUKi8FGp+G?oc{GSlU=<5=qtFGK+|1L zBt4A(q*I_Y$gu;g7xB#tWn$;~L9yY@N^^Xb>8%Fi$|$f&^YwV4d%_a+Y+ z@qgLS!+eVKc~grslLR@y3oat#K>NKQV?szsD#+?~$rDy_qOi z<|-_v%be#N94p{gnN_>5|C{jBTGCpP3_r+FNIWD}0=EZ$Mp7+F)7G|EUkngC099r? zSzknBO$K-*x%^e&AP^}pjDtSF5rYNrk^D0tgUJ?9$;$_R# zO=n=_qD`)Hb%EuhWAT}#YuJI0V;8{-RoGxRBQOvQ6>vJW%B=0D z4soJBJ;q&CHUHo|%czVNu{j)PSPP9QUAzqO^1x?es7^X@K$Kr`#xE|AZi?heF9Pjd zjYCNNpr27P2~J1eo`957P7#5Tr(trKocXG=&FIC&>VtIV)u#=PPB7U#Nrde2!os4u z%2FO&7`kzBNuQ{itr}^~ z$l5N#vdr^OA_DU(J>(GFQ@Hrj5%bcj(rV%@`;Oy&$DaITFIMeC9>om}E_#XQz(JXl zhCb(JH6#wkArh7V>5!h1+<$c&p0em0Xa|s{wyS{zB~sC8Kon+ zz}B)hd$1&{HlyvX5}&1&7r*dwfbnr`&CNymYtO6q?enW=9(!>60C>@Y8VV zb>zIbGEgo{9bJ~xhK~1K0EoFi1W8HAq*}ES1-} z+|^o`R8U5MJ5<}l1ZpTeZs|yWNG5?+p{qWkL&#G;jepR(tjE4$o)CiRc$%@p>T|xo z7Z!NF`ZZ6tl6P>fCvRfjn9M|}Ocovc^YzJX{Cw))&ek^u9UPDo0vJMQA1m;brYzF2 z7gpDx%=el)r1vL(dCToUeD-07qN}^YA+19V7i#;@oiktn=JZ~&VQ8d#X$a7eZC&5QZokKUOw3Ix24@a~+0dUV&Cd{BE*36aLsa(pU5_h+ zMJB>C^;RO@0U^tIQAs*$i||4wJA)xco9N8oyIR`Ez7VpHb#w4t(CzcHs*a6$`Sbha zEPF_u_N>36spk2Lg{mx|=O7>d;r)#^ji-ktL}EBfX`|JJYh%`r&xJUG%yC`-q6>-* zhUI5*Wqa2e7->t(B`Yfo&8rg~{eqB+107%3XPm#!h1^O_l zv0Y}H7Cz55mK5ROY)8ck7tV#3hT~TKI)8h(aExydj56LFR38-d=e{OQ4sU~+=>SW8 zuY#@U7;bI$!j~8!AbStt+y&7doo57+Poy6a<Br0?E9RF|)3JxDM@GNh^7p{4to2>E&LQ7dbU*IF~2EMoI50iSkfe{)R3GSz_ zXzKlzP|$np@-oqT&}lRW1Vqn?l#oBdi;hwgQ8Z2bb>FNlk5D!R#2U$Z$Z98;W=z4# zLA1)sW!CzV z5$Wq;d-2+VVKOweTe%0t9|k>*9;#+=1*;NSx+X39kZU_$1K!VYMU*7&Zj{=m{;`+z z@fZOrl`_JT_V&Q}cLwz&MmN&O%*5x2Hru{fL!?>RYuVq}Bgu+h8#)B1f_)udGKIMe zfYaJlnLf->Pm!bb`Z_AYISU+}kWcxAwCh(J2Eb4=xHYfNCfc~bXauSQ#>ey0&ZZiF)_aH?Yp*MmoFC0wJSVETKtdg;Uw1 zC|>H|uwi;(dY|Ky922?bkP^NAC4^jr3I*daXOi+(Hz?Tc^=x7Vd)@{8$Zg@TUEB*# ze(rNl%?LEXg9#XPtLH4$Fq3ie=(=;fHMh^$?B9_+;unG}gv(K!2|*{{K?+csF{l1K zqo7bkT?cWD&B`>hDS(Bnr+`R7o7!}LK0d^otidvYE*#Cwq`x-O`B-rw$`lAnb0C;V zU~1xPRfSu(k&FT?Y^u^MarhtaAJP<*A#Djw2#fHi+>QzBTl^Hna`Az0zrRxe!5CwD;sBG~Hl*LHs&u%QJWoqfg3nV*evrjic1eU0A;f~!T91y&(y8Z zXmr@8BUE>l(C?9fTGD8}W`2V6kU>4aKWrOc*a+%dylwiu7D@~;#k12hvPbw4M=1~U z99nU4Fdw70;O_@1^_l~uPDg+3uWCq))5g`^4R6*3eQd3F_;g{w{7REWF8xL`(;+Uy z=J;aZ!5p}$vqhJ*QMPkF*DBnbSxcl>a`Y7j14Cr$`w`A$m>g_^)|w^cKydE64f+bw4`krYe|Q6O{3vDz#!)+PN%3t`qa>g0kv}7?>DmQ5cGeiiR-g6m6nT3W6Y#0jBUPPX=fp5-@dCP$PN% zlIFIQj#&yB`N=)K?r|?SPW%>`Qz!1n)vU)Ij$QoS_nYos&)eIdngMziIhto40>{+* zIa|Zhh>B18+lip{B;>ibVtGKoxg^ z@Odd{(q5V6iRB({WrE97GQq;40AYN8kc=o_Aa=-i#E@{iiXEq}NY+5CQ9T#k$TnBN)7=rRWKjUrGcHk{h+VuHXX#Xx zKDfkRXTSEd&OVr(4L_h-J3tT;-5?n(C=We#5MjQ&_N z_DRw&-=LL!4>mi+v2^#{U`DQ)cRQ!*;22DsXkx-*g86vNmX0Y|7q>*JngdU1V?%!W zs|~IQ1AMiInS115zba-3SsU${c|<+6QB0_D?byq~`su2O%c86EP%Z%81@E18-~KAu zywr_`LuqOERq4rUlD0`DYNi_}Yd7N_v7BwN7M~O+#?;I4vES!uXOvE7#h~Xv`h(UZ zmw)7OIeAHJmZSfs@ztvHzLGrKO5}2vcZdT{ZEq95$TP}v$&JV|zN`jFGWM*719%$PIORAi z$X=qK>4amdhN>;Zqmy@_+s;CcS%5F^@Gt!pUj;YmmY7fL@J8)KLqZdjd`&MXg*_B3 zq8R4M*GzJkos>+=_4tCT_IknjpnHj>c-?6fCm$%b!O$=^S*0Wc5ln>j$zr2h*kLc{ zKYS(TVABMyi)AoTcGY@mmM7N#HBjU)@j0X$?N~UCD9FgAZ}uVi((UzW3g@{ST5Ev` zfOQN~;j7g{pp)dPls8*dPAG&X)*Dz4-A4ZRco|xf&bX4!Foy8mbvG_e7

S=Wt(hFhBZv-vxsDP1Uno*58AfXESb4$qe4|_<^5P9N^nBRKYDuek ze3#C~dUJ(NVlpafbMvxrS6E1yfrSEO9iap8$7uNKYd`$;I$O*Hofh20w2 z4y00Jbb2lcEDTz~MsbYxFBGkAl3$69HgN7NOZ)1Gi{6mN5EbQk{*x@4U`pmSBr`JT zp$1;aX#s(X!IThcA#|%faHKKr6()3V31ZuT3jcIO&=o{TM}jcXXGzC5Zth}pwkw|c?wz~RywZ%(pc^Ml*+7;Z<5RMBEM#fWNfYQ}L!bR4YmrtjiGhITDaD}Gded(=^)rB*Vkhi6A~F9AIK&MnuzM7T zT`f`)I69VC8lQ;6duN<`rFn+H4C9z8)X32$oP$*{iHK5Vb@i9TRIH2{Th&r#OO)Rw0Ypx}Q@_J#S$7PfX=kQnvo^N9 zwvVU1`Cr?+{Jn*JO-%Y5LGskRj5mX5&Q3Yf9(9e{>cUxO;Y~nK5y_TDgW!NB4p#HF zVpE0lVcZ*FQ(dum|NRtA=P47j0e=UkQ* z8tz4p|998DN1_=gPrzGiO>tdtiI2x`iCF=r?!GzWu&KF%O`U>{w`?ZtH5&vIGHbt7 zh-+4hlJ`2Ow}3cxb8~LH0M?Ph0I_^gWYBRWWn;Zq!fF)Ivlay^7G`z(jZ{?&zuZM- zD)`uT8Tfjo`S0)#r+U z?(yW+1N?52SWtHs3j+)dS4Oib*O1Z|Jb*Yj6POxIN%Cl(-8^fJXM=nr`)A4$Q7mnX z`>mjz)xi}h5h>NjtTzllV-6gtxz3B5Bn9i!&DiI-(pEFKj-%m&&$?IjIgkr-lrfeo zl%}TZ#vhEs<-bcxE+hGATS?lDk}>r`T#1)X*9NA+He9G>VV401hRJAPLaCxh(fptT zpWjlD$O(wRLVrad5ruPrP?3<3DwTkcE(5WeEL8PclT|uT8$x9~6SVQT+L*H2eYf9F zymsHedv0BOauwy`R)KyUV}E#;T+)G^YF>6@v_`#8Z<@-TH?S*Smeh~`yg!*ds9?O- zS)(#*ZVXlPooJ)+A27vb$8Mjxuz`MaBqiO6!=r?32w@L^4|!4gBOn{KM{Zg3`XE87 z`{GtEAl!Xw&giu1gG~GEHpd|7WVADEJK|hEYqKmnNNCj3mXl!gTn1NqHf}CjmWL{n zk3v&nUh(PMWkqFM_Anqcp3<7ZeT8(M@mSoVV>%ll;KyLK|1J%6r_GbdM-W@3goZ5) z8jQOz>HtVR2L8#DjE>M}&LvwYk-vdk|E^CS37MvW1Uo<};)YbcIpg9`+Wik-?--;> z&@Jjt+qS!>&9`mawr$(CZQHhO+n%<&r;Rh;J~#Hg_r#9#Z>^|^ij^4|6;-*io@X>X zxfInLXe0YHzQ-2-$$9a9yNxkFf=wNx??#YbX6rz+o(D2iVLLqdHC$XrP|Pf-wkP=l zktM{a&`RF>LGeLLjF`!rH9hp(ndn6ZCMywDbc5z6+8)DB4*sM}M3mIabW(WLh1O&e z9Xc>|N$!pgYW4&0*2APw*-ol}kic8HEA&3#?;MK zrt*Gjc!~a7HO2n-$@K1JEsVj?p<{)h4u^e-%3i6}(s`w5N_FaAVdY-+WI-rmwtNJX zB6UU1#16yn^>TDRIUvzhn*24z-)v-es_rJ&Hd#d;yr}PzT$)P1by>< zmPxJ+)4guKtbcApuv4#OY!SWTu717zCsF`9Zc>jq1Z>R0NL<&##p@qxGFtXD(q7vinzSk$RxwrgHVJB!)D&;}oDA!wDTpMjoQmTp6 zqWj7RXq*9@A=;}`_tzS@kS)FT)O&P<`V@B&*nO10Fs!kNP*b6&iAYX$&os7L8^Ox~ zE01W9AZm?z>Y&UW$XUeIfvh!YEg^r-qe2h@f8slfuOT54b+vh0mafO#w8o%MXx!RyYWd^%3MdCbg{cPJp%SY017sHvPwuc0Gut(+WGa;IT|q<0A?hil zvOC5;?r>fx!CNDDko^lpbNuhha#_s{!pkHagKeko99P@9Mf=)3prmGuT2l|WP5aQd zZq2F?(_@$uPvZ}%r+ZH0s>$Y3orbA;qhb1M#zNuoKw)ibM)ZPfYV!|(`IKQ1;T7DO ziV8>Bxynp-7;#IR_t-s*_dOB!1lSG}_CPBz)m$u)XZE8MU!bb764R0fU56s?EU;4L zM`gylh4IF?67qZ_gG;A=D3~Yo4Myx#-Sni#%spr$)!TSSAn=Z5mt!2N9~)L&44M4K zOU4Nk3OZAHG}pb)3H-_BZ)sBgrhh7~7GiyPZx|N)co_7y;uo0;ioe_-(=)2c-NLHI z-ndSxzhCIKBUnoGr2?cXahg%@BO#3`E8Ubj>ie@TrQT#C+M0qf)`a=17So#EP}Qfi z%%stlpLfVNX72ip4@t~2cVR*Kr6BsZv;*j=sUuOLs;G=82+JcQYNJVaV)5BY3O$iA zc{V+5FgBJmvz8=*Y;3KxVspDUZQFMPT`baDgRR($;)8aB(DxZzC8`u?+|(T|x`Uw$ zcCZ9b5=`7g^Mw0aVCM zIy(4W~c3Z_uOuC_T2pRDj8Dusi>9+o)=~Y zSSW|SA-T6Q+Q?d>@!>7 zLd3pxnWd&wSly8s^-R!o`}?Z!>qebOrDM30mRv*PQT$+Ex%AhsJPxEA zM85<_rY}I?A3CZUzJDK6;Fh2@cr5F2&hP}S6PYD2Z=J*UIoEs0%|l#`CyW5d9T?q$HY)Z8zloLaB4KF}%NO2#xT+WvxHM)iUTks)J|W9i8vD zo89g~Sjxa&PFQUb$h(F6N0@h=YBRH&j=2+zUhiufB5SXfb8Ku}yr=PqAr7M9 zbIw-|nOZca43k*ENKEqaNj*Rp+*0!EIjKTdza6O&#_ggWn>^!%+Iway_yzyaBNvi` zGtAjMi;lO@?m+P^+Wv8N6CkH%s1WI1ksbeZdzQX)8|w-*pl7QAb6ZWck8$aIz||1H z&Z98cJ_&@RP%ulUc3@}`njTGs8QU2G@*!7bgx&bqe2*ZszLqsd`~vjPH_9wad_vFR zsU=gXk5WKI%cUM-1*bwg#+I&DWRVcXO7J^K=xDWWq#as6J20#aGl$sTG8hVO`Sz_V zP{lz|@oL(9f+9s6tYUHSi8X?0K?*e&4=FT6MRWD~t;iF(#o zaV5kpr@DDl!YG}tfbiA!WBcxl;`V!7-B6j?{qRq^vA1(9ctaU>588r8tD#Ug90rY1 zfx$w=g68Ho6&f}caZ#LD#$ATg2m%~}b{F=RZEPDVVkvk}Li5Pwb^6f0c@xsU+Kb+v zQx6wK;DUo4qdp|sxEQaw&P~AQR|yC3oxr7w3&D_~i;Ay`M94n)YlFVT*CnC$vA4im z5~NovS(~)Kw?1B!R|0QATC?9HGBEtDsqW`Vwh8;gjp@(_23(n!4b)bPu&cs(fahm< z$*8yC5k@#(Jte84cw`|XAIvc0S5aNj?T>`o=A?!uvxHcOgYL<%2-VR?*z~!x*PqZ5 zxQp&I_5D`j+7OV(*_Q0v8%elYQnF1wnT5abHk*No8ZHw^DqHs}eLEP$BuBznTd79p z-wU|5pvBoH$4Va3^l}@Le{%lV8Zn{Mv_sv@}#2tTC6xq5g9Bfui=kKYpgl; z$INHrrQ(p8=`$}f5qf|mvN+DDHeOhWB*9&dvr>qxUu~m={&$6qAy%vS?6PB6C67ro6n^22akA`uZAuA{7&-W!Mk4q}CY| z4e(Iu-RlEVRz;9p-O92MLr5n`8(Kc`f z(oz0h;n;gysnQEm>&?jPYI6MiT1gEF97|TMT%vVI zn$VPs`PK#4SJ;#GD98<<6zXX&jnqrO8R38%G5J0y)m{pfV0lg>GaYAH&2Uzj?Ww4{ zqHU9nEhT}>eFm51z0}}-Pv5p(Wpj`lY{l*eFCpY=dcKP@^ZwEJLA3WrVSKvrA_@q< zDR>9zE9hCNfMSjQK_Hm6w{ih{csV2WVpL*U_F@KZ&hEM0Pk`o_*xD~e8Cwh9{|V$P zBlN(xC0|L^rUgp4ipZ1Uu8+`QRz25zwN$5jha}akNFg8XA6j~9V@z-TLv$_O7fRba z0#Y~loP|D3SD8BTayt1C?*BF6RdjzhJ=+vS4&E7?aN6~EMrVCL)@TdGaK*x~P0c`rSSh%lgG$AErQeCxnxrhz@p zagb9KP|P^MpL4V%`tNgvRza0$=ue{0;*)6xWmGVSbBkXr$Tx{S`k&*WY%Llk9j6}r zB?;_5j2ffPKbzy!LUg)%prJJdn<05bG;bCaFkkl`Ed9#h=KK&3^_w zT0~hKN(~wv7&n^mHPd6$GIp@E8t}b_S5m<)6{B?2tOmf)DZ;j(v4v|760?9Mq>qtF z5N)A|{Gr-FA%Q@LVa$PmrVLwZG#z@XJ9Xu!G&y+e?76SuSDP;JyZoL{z4tzRZryTE zGhTdjCz7VbLw4nL1ynB(%Kttk#atc0939>ZR&;^=f*EwCXKO>+BUYveDJJQuR1`N7 zP&pr*q*>I%?3R*Tn?edJSv4l7WnJ;b(UMVS-SUOmP*yXkERks$6)j4+y~xHtislEn z8P9?s1nx2{uW)d@r6e;gKqiXP33HJ<*fVLT=Qp_{&+LY?9B1|fnZkXb>Aym5Q>dL{ z_}lAa(PYPc0rOe6Zdxaz2kOmRy*zt1Kwlt6obrIZ*0y)T zAE=x8{Z|IODS|%Aa!G{BqBAnmfE#h0@JCO}dem2? zGbduuP{yQmGSiaRR5gol2DW+?mKLx1Ip@s4;j(w6aC*`ortJi@eN0riMj2l|!BWH{ zB=NbOCh1odFiD$c9dkT*P{AhuP`B)Qf24*u$z-XxcDvC>3SDq|gk zA>Rp`p9W5+X@z*a7Gmn$STLPMyp2#>%I(sLTIw2Ijpa>lCrH-o{@Bo_PWo@=cKM?e zu?CIBY?*Q(R-y{-Q5DpjnQqz8vJ_73srv79cZYE?(51x8oNXd z@V9PN9SyF(v;aaNH zR~H4ES5{qBl~jFvGAfe&zG-gc33R><_y=t@qPkm47tJY3JfmqnnJg?)ZwrqU0=RXF z#{YaoISoq)D|>Bk@QOtpAclyTsbD&0Nf^bn4vQQ0jv^P$<{ud?gt%1x_E_+}RuqZY zwokXW$%5FxA`juu;-bkNFuqG>5g(I3iCKXZE+i)1{4hz5IhPf(JGEdT0yPp;`$38j zAn=aR7t4TT7B2FL8<9*sVQ!GO$qBP;U{?M{$4bbr(NCzPDaRw^A6TTEc9^DhvX|`# zKF!ky!a&|nbN?(pG+jU?P_^_jptdF=kBe~Kve@^TOWjYG31^`iZ_hCHz4tZbhr~lq zZ%h?{G!@vg3j?O)(Nc%497jlPHp}UbEQX8z<0}IEVmUSp$-}+tiGYsiU%U&4SC(w8 zZHvZtWAs_ychF;~$J?aXl(aEvO~e;rdnIe=Cpj^2N@eBLKG%00laa^#JiXzC6DPBK zJ4Et{#o7<8?u5N6aJc4Escv~q>pjHvW}y2tTJEnhy#@Msf;C5tr2N_<2Bs!amh<9g zFi5=yVGWN$5eC};xlzQPK76KxWWTwoav2RA!l4AGT9xJla`a>`-v`uD)|@^`~g z>L?P^iqfM-&&ar2r-Z#z&nz!lP#fltO+sSMy>l9Ss|CtL{w;V2ncJWA%c-Xp&iBHS zwuZPXUa~L$-2hY5?xgdqiJu^KWF(naxPP$PcWthJR%|-#l=HDt%3zB^m!6x3+Qm6!kZz&tiw7_+Yi{G&)vu)L?iQC$Zn^Tb=gGH!0e=l zuaPT zJmJ33HJl(P;iZef7r(Rn*og{`eo0x`|Jw$2xo@zE&yn~Zmj>B?T&E}xV%zjnps##@ zxN)*x#+{kl!Re{wjJ5?qG%Nqv?b`Uw?o!y>(m8MC5jVFG}ChfrSc_vHYI!c~+A^Mzh=^S!Eq2MDD!^I{r zn<&RD-f8^L|v9Ep@LGJ)(ihj=HFqgaDDh0?> z^V>aBTiZ-Gluyhz@W!n6K?y3Vw<3Q8VF}QVs;2s;X#dOBJveirvz~+jvEC!#u!@@^ zk{TiCp9EZup}{8PT*i&`qO!cJTH!vryn!$>s1}|Om?|u=-=1llBNh^55_aF7a?O6m zo*lQ*U+`CuIH;PW3dII@9oDwl>HB3H8~QQ&so-_nKXczG1O zM1t+nFMN~c7Y3f0nm<6L-M1kKuNdbudo+~7O0iB0Jn%%`I{lyV0bEi07Y$MS94CZ5 zc!oS^*~n;-l^Qtrp3Mv|5kU5j#1R75;CKYY;M*{vw7NC}{dZA{XC0lXO6NlgV zBs7GQ-s@3Zkg4-ra?owPmT8j>oeAMKqY z8yXx8Qm-Fi3|(kpF)@*GEdq{Nyd*AI%Yx)kH|A;>SHNqm$Iz^)n=+}Xqy-VQ?b;QAWdrfWk+?JvmrY`~m#p;ZY0B1DH@ia2%v*fl@;QZ+918w}!*bC%$baWd)8iuKsmb|K# z`AN0a5hVe{%pFZr7Mb%tohIneK?mHIYzpB}59O~2{hR0(TzWOaz}-N!mpqteV|D$R zvju-cT3KISn_0q-1^8dA-YyIn*JJjnaw#*q#l9UAdo45B!Ze*bOCq zn{ROXEBSgG(A1i6`*v4|D^@!O4YQk@hwME!i>sGC|NdrL3V-9$P`fs@J3Z-ji}O-p zT1uAJ(UHP(sgL2aUNc|I4PzM@6JE;W4V@M^#JUQ`Z+p|?th$VL&tshZn3tqUh zbAH!=5}8U78xM~b!>qo`G_pEbF)}1^g{DDY)M`fLOyOMU(+A`%V2>tO08Ihmcmk4? zMm3-UI{Kn)%?75ZB4%%Fp&pvO zZW5bHBz6pWg_4cABPpZ~G8!(Bwa)UOJw#`uuaD9tnrnsGI^1}qQ^T4(qxFqaz_h9_ zA+k@{NsfK(0UpuY5E@qI@d`_ZX2%bMIQQ7Z@yLS@9B0ba2^jZ>W{&#jN~)MvFll6i zP1Z)E}y8&{=RsZ2v zBb2Hi6O$fzJv`rzmkP4`)_#J^RmBf&f3)B|SGMLBG(9a8%HYLGE~&4Z4oEL_4XHiBI**wfRd z^yHPh<0b#_ggQrCkof#lERV0a&d46BywWoGaMRHVxB*s zCE`&L6Z)aA>sjJk0)C+98vF3S)CL86s>Gfm_CVH8J?j=~!{o**w+&Mym5+P*hWFOk z=IRoG+A?mhzV?!DLjRIveoPk;GID5JA``)(kwqd4F&SMDA3WlXin@szSeQlhS8MOV zr2Dn<*jfFO0=bTENYc%70$ELT9XROi9VpApN-0yOGHJ*2ac0m+C{@fm{Rh5@B>PKio$KbcU;xP)BZ&}>-iME`$BYelot$!6Q6|NyI`nCH4IQWn5s`J zeSf0@uAuGR(h-rCMJ-h@&7mqwwwy3gt25j_vT*Aykmiwa_PfB zGcRSU&$(a7x-)=U07ICO@PJLtk;gdgcXEib&;PoAoqh_ou6$D1jFIiS`jU|T#=6=9 zGEo3Yf~sO5n6=jXa4|;@(S9DpPlu+a8B_HGbk;F2DgKRG(Vm<2)tS=+1!S^}>aB0enA9hBd@e*& z#!lIg{+STO)V6X293*}6k%F77RX6KGHn4N)5qw%!a7?}Gjyx}SGy+9TAf&Cu2KSf& zsy(ufAk-~u!FK>{9T0-tHGU{z9WVl81R+jPXDzpa>T||IymR@RpYdqq^jWc?QuvVOkC`s;=JXh{`Qa+jOS;yMfyAg(MLa2Kx zH%^ox0dpn@?yPM(3j*gUA0e8Y>lV&sl#6-8%|~$R_}#>g-dD;FR0f?#&2|!G%FMM_KbHU$t3ea^~;O(y5z>jl}_oM%uJyhj?Fln%+DrB z6QuqQg^g7qU32z35c6CA^F^Bt(N=3Ml?aWYS_bERg}AZ6q?OLOaqRtpFdIEfN$G&J;&Etw@N=q=FwHt}yoMJZ2btq&p- za~q`H9mT0F4JW2EMj!$`{5Pmw?VVuLyaMi}jXYFqo~6M)#iezjL$&X(ndcDXO32-l z>~*6Q6A?nZ;s&G{zp}CC0b44r%$OyX0k@pg#~=O6dhdw8X!EG?xwx-+pFX+YqOQ*F z#!qR(0pY}AgOp#Zcl`Rpa{2z#wdK46HQ<{s!o@-qU{aY^KPT zM}H(cZ+3{brL8v-v|7?0DxqyUrowEmpdf^Y)CWt8o;AGMMO_d+eMv$Ia0zOQ8YdNT zG+*hNzrC(bT`bj*(c%xU(iupa%{aNjBjr1M%;BVxm%Oagv3AuEB7Yv5#+27$Gj3@v zl)5aJWAO@*^nIK#eL+NNHbXk(Fv-RUdi%pj)xQsnDmsok@;dqZ%6p##9VI^uPM#j_ zN3o5XL=MM61U!LpsGIwD{izSFefQ}bjqdne4KElRoF4wU#a~9Tg)fg>ywVVw-7S4{t-CvNM+Y9#X(VeN5qbH)g3Z@w=~eLRRebD7_!z%5Un1UhgyeWnUSQ$7J@?Odki8#0=b6L760iApp!IWfyUzF;rZ z$Fi;|`xy>5MtxmV-?y5TiZ(SPsE*j0-8)C`%y}9S&Nzo?iYWYUzUkvIzLhP6w%SUn zQ$vHj@GxuS+r7N#jpf(mr8oN(ovB5)GRb}ASP_4GT#hTKnW3Q2_Kmy9pJyw~T^y$B zoG}oHDLKYso;!MSh@)7u-qgwm735Y$W(2eiX52)PXFKO6Jt$qz5Wv$vzPZ zz9b`hlVZkrjDq(r(HxW3E})x|bC~)fm|r2m44zk#lcZ=TBt&p048+}o<9Z53AFbhP zu>DxwjrXFzbtH;6nzV;VH`FH?m7I5M46qD;zS?h8kd^1hvhBj%nJ$ zT@qyXyJx%1#s0Sv!O{SsJGBKNa`XK~#c>y7D#8zThBLRN!mp*+ZnKuNjw-aB!cvGm zCV?3o6|!ghUxN^Lbe)Lc9>lE}dpeiLH67^qP4#A`n=D{D-y+uPnZ3xqnUy8q6ep*;_@|TNLJ#Y? zI!&QWsQC-?%j>2pMw(Jr)9N(V`#Eyu$qT5@zMPU)oH+S6<}9;Upb!3HO9#1#V%V-A z-~c2LE*hbhcC%uo{P-wYE#aal%R>kVLg!y@#UJTiu_lVqhOv^#LovHq+!;XWa^C#b zsOQH&9c>^DZ&7u%3ihXzeN%&otM_SDJ!y2Nlj7S9E1@x|iz$|)2T0L_s$=d~1g9ML z$R62P_>?=`F%2HUWp{@I0XCBh4yKmq92MpXfCNXc;zH{J=Z_?iP%aB@mr>L9k|s13 z?-TkP(FV2EfKZEk?<#3F^woTppS8G@KB3+)$SlY?^A82`%(31sC(Fz2*PcF)o3B~z zt5JrA%C=I;%3{hkGA+8Q(#8sb&V~v*+mdek<>b*5sK1M7B48dPQ;%)7yKG-wqr7iP zdpo&)x9TnqHzyHEFV7CuuXu@Ly?r*aW_CVW9mX+!uXfk3d)&A=)(v|eNqtPEJ{CD! z95xEKt-cXxS6k0V5|QIKy>QVs`AZ=E3pH@gT`WO&+Te@Y1WWujryx29ep%y&Yh_+L z2vIIAOfLbE`6yMvbDxl)o!@ceb}=f}b7nN^cR2#@JXw==E+u=G(0wc9YvP~vCRy(~ zX)IwfZJbT7Y)wyg3akeDw?bc2Zh!0cRyeGC-Qwj(m#5#)87|#!o^Dl_>k31*7ghY&I2%}77zx;#S(^~j^YX%(*c$(1&A_q#|A!%B zYh-6^VQU5uwlFm{aWt_tGI7#kW&xOc*qfW!0_;s3E$oZ|PSyra=7cQl03$nVJ6l3l zW`Kb+AqN}40AL6(0vH2K0Hy#lfH}Z|kb#~ZU=6SV*aGYT_Wy>=3~&TE0i6Fu8~`^$ z21W*ehtB_74BLMfBW+@9=4?*L$j0$M;BWrFyc=Z&8LMD=#GX^NX$L8Ug=z{IB6)3S z{C9z!=Uf?4>SfGA{Lhz}Fm+Gy6BEW;nUj#!nHGj2;HMp#$`P>60rRlOX3h}%F<<(4 zruiVvXQk~G3R-zN+cuAZ28JEbY?Su{!0CvMy(b+(6GXn9Y!Qw$LYdb0+aHu`%WH&K zbM$e3$oX|7%|7uDDlt%ObH9!)QzUinQ?Db5BkK}Da+$dP4D|l0s9((QKX{bLN4phv z=a78=gmosT>DrgM|B+y{qNW+)c(?aAErK#0XDOVR7CN~Zl<@g`L&~cJH zlbmOb@f3;dTO&!@?r!vt_53xn9&Uw43&Hf?`ggCWTpRQ@>c?vSK)>kP!?6FS<;wnl zPAvl?BL~y}FuDI1wve-;l`@JMcJ8mFU@iasVETcHU%=o*iS{qRj$*c!hWy9aiA116 zz!LJ^U7D2?^SPDo8ddUu6|f2DTIJ+TG*qMo&+692&M0)%8qLd^y>^1!oq*h?pXV{R z-pAfsrnyJnId7Wb0eFK3^}#=A$%;13##zy&BuNSqD(6j4ozR!d*66fm3kUGd!BP4s z)&*{T1Y%~tVRjHY7VmAHE5|7FUYEQ<&CC%Yf`izJav=ji2?fO2k;6!cD#npX5GaKu z;~k5ED@0cbvl94-2#959FwpZzC1xchWE08BMbs^;DwkDzCdzATS+g$6Gc{WV)J-c? zttdhi%}SS5C%Jd3RkLb5TLh{A0J&0FRTsy^X?_iwC8nMRZM$WyHM)vI=V`)hgT+J`tP1mW7LB@ufy{(yz!SRjj>*kal&8^e^Eg`@E7#stesw@>cmU6iiYf{BdGh|dPhyJ_}r@L$LHMPRTPgE3NXHEt*{Er_Y{qH!GJWalsp^UAnd}|?jt*)PDh^sP7(T%31ilvi85rGg zbj9vU_X#IHNOpYhps_`6^Vj-klY!_kij9qR!ZpIh!TZQTEEAEXl{K10K7E@_c4~TT zhuI_D9l27xZCv|PJmo({o5og4S)11mf3NM~(e24rpw*eRaUH#d*G7KB_=5a`{t|`{ zgkOSB&VzrK^Lp?J?u+olCI^s_f`*i_uc_~JEYtYT02tR*iU5KVVy{Ap}j(< zIOQg(=he_(jqAslxjr-7oDIfDWF$dvfls<;#H7QNL)Lp3#+2nGyknd_{XLOh@IBqW zH(%90hrYCLuUV$ZZ=#fwJ<+Cc;Z9iXR+<5r-*Ib4U9MD2O(t-WuaxhqR~QK(JnEoLN>A6 z2wse!5!8{Za1S)8QPt6#h#qt=yYHg6A0iL#yA>}|^buZq58$4`TFD{R3@g~G*p=os z0>0hvw9KQbVeWhnyMe)t4}BiaVQ`In{G_HAISlU3U#R*$inB=h0(m;|4L`8R3xBR$ z=#fHpuY`W61EF&pFZ01uP^slQ2uvf-Cg6 zN%26}`x{uYzsr4=2C4>qIRBbyF1YJrigl8*aG@e}m-#4*^yA^G6kX_RTz1kNu&qvQ z)m|OH>j6Wat`sC>$=RD1f-tC0X!th2MiG5JoZlq$fX2&8GL-bvm=FWeWD8iuQ9_&s zpudY<*&K8{O`A*weR@UO?P0cm;s9CtL#R4iGaiDhSP58g#2eT}c`h=hQJQ@)q$l`- zgTyUOsGG*9Drv91?c6ogHtFHjij(mFH3m;LD4mSFl-Se3uOtKYN|l^O`D7Ii_pjZG zs5QIru1E-FA1H17y8<7E{-zjT7~K1+D!S9u+ErCw(JRXH_1b>wX%R-^CIdw2fqVo) zCw_YIL4hawaA075#7sKWcY!_+diawgc^2RjLfBbS_qtuXVSmU(A$m-*LwYh4Q9&S7 zlpRgfSKvMfLipn&LN^A;5Ci{#rKvM@*hvDQ4WT6wOm-_a`FyHp+j4&aJLxxmbf7;8 zeRY)B4sbN>ATmUcje z_fcoiH&~V&_yxWiwjJa;&w;r)^t=7Qftx?z(McacGQ8LZGkPi_D(RH(SA_n-{MYT+ zhoL@jQM0l=oaaJo32r;+dyXa$Z~!r9MZh91e4H*}`#^yA`7B<@;R#vj7)Xx0$MY)j zr^K_4d0K*=mWHHvgB#% zAJO~Jk+amKQ{D?ypuM!dUu>g2w!mHJ;#Gni_G8BPWgZmluqd{Hpsw#M)zfZkvDyq2 z#XAc+)9{b{zn;k)aA&u>ZPkW6fl>Wg*!K7K3_b6u$*Q8UYC^ z@>=qpL|1TBjqUtwJO2I@h2b=lg@W?&GQ+m~Kq(6j_5w0g=F`Ip8Idff3}q5CBg!+M zlX-7zF7GsZ9WPvaJOE6z(zr9#aNMAD3`A=x%_NJ&Psz;zm&{i8tJ3I3 zHO)VmwvqZ;O#qAzg4Y|tpk^DVgm56W_uL@(nqL7V)>g@Q(FC4UI>Yjg^ASy5iIWnG z1qWs6t4m-J>FhD`AxxxVu}1CkL1oj0C46t-8$C*B@nv0utpO|iGm;QruSMVEzQki^ zN;l*UjI4E3qX3;6)t?7&6DcVnA(%M&CXo$s>&Tyt@BWtlc7Htii#F>oAJIX8v0Z{N zx!jz%2O?Ng)@@ur&EmiV75Wq*+$15_Cp5eP3ak-c1~kT*8JwsRpD6u^O5YDM6i$Bf zh?YDC60k{ns7bmHY4)oxsdB?DIuF0x_nj$pdxJerc1S}*8-u)O*fS`CI1R8Alw>rN zwUA)VVIM$F#)i0Kmc)H3Fbp>J;PmwkxOog&+9P0Upu4H&SQsU5SEyu67%%!b-Vq2N zn4bfjIsm*h$$a_u@sW3tiiH`3%c7uoStN4e!%_PR7wq}IO8enWm75|ArtunRDD5AW3J(k1W5&%&P8-^nPG0+_W^A$bzeM;_ zu9Odt6Wuw+le4EOj)1X4bVOsM(~VHqkrVU*pQ6L>=gBLO zumP+7niM3f{S$NRk@NFK1Gt{G{b-va}f_)MYx!0a2!j?vw%5H>1zYj|{gmUzAr5pThJjx2=rJldWCrHOGU$i?a z=jI)`kes)geaQddiOYUoO7jc@$TOLs+F^d##JZlqwqbdh`b!AoXiep;4}rz35EA>l zgz>MwuG-W3keHb?0wnpjpYnjIISAMX)zWOKN`{}`F@X=g8gR1=VD^ESf_Se8x59uB zR;(OVU~KapTzzcJyk&#i98wj*Ir1fNF` zCpwmHbBa(x%@8mpRsVd@GqTsM{noFa#!5WzN}QDKm9&+yfo(m}0HTOOFk&u!=NE8< zqWfHZ<5IR|K~?ojLucc=rhb1Gn4{6%yTHC_%)$L?Rc4~9rEc=Lftco|wD|diQI661 zFM|(Y#-V8zXVtau%ZxPpT12AOvVpYvKVTZ3DZ>j%vh?_B)DOv-=7SYN7>xkawT%Ib z28`>#&g$~%YluH2x=WR|s&2zDUL#rOtjJ%<-_)pRYZ!XmjI?}W$Wh6p3q|hA+_H^i z=>>fMo@96Nnqo;Jhp>_duqI+bD6s`>vhr~j>cDvQs9caROpu{)%pLWe)yX_tOhyt7 z(eGE8PoBmHh3-6XThZ{SmfwQ1nbJ)gh?`8a10I<>i$^JARB<^0o3@Z zM*VkNCsRj*yj{JV0|Xo!N*_h=I^e9D;A6hAHN-L^?B4H*&GMFqA$u3|D!*&X3d6eg zuuVu)m@tiu>>66x+^+_DZVogb6px4hO#Dg2m2X^StZEVHy7YvzSsO?I5JOxcq|m6p z{@i6GiOqL{>K2tiYdvgnlE$BLw&YBh_jtSegM6>-36QyP4m131Im*+>@!<&J|^nonYl-X%1t_I1UmN0)~M>LKtB+CK4zbDfm5-Jjw!dSW&>7>*baP(U#%6Zbity~;HUolAgnitBfM=<4n+hI>2jh}-HH{+f z(V;G*B)?m}`HXc!S)E}P=LDJpaZ%21GOyxm&9C>wVIPRa;)U&96sQ<1!EzewHm;W} z3BY0(`e3#ey;y$-r_$;s-@1XA{M=APZ@`w(CZSbQ6GF@G)vj+*TS--u=y+8% zuj1@pk)7+XM?8#mYCrQM$y4kG>l*(h2~l40)6)Ws4sJ1fcO(`u6EO|82ZuumWxr;> z#3>X^hGWcj|*KWG@UBtyXB+pRmA6G|nf z_yAR4ZZQ%1Opo(p*u3>B^ihuiE#-neRJXoqVja6zsMl60Oi~Et&`q~l`)R4Of<&5m zTrS6y#~B(iVbMVQX+&!a$)aHYhnm2szr$@(ZfoMW3ox(oH!;0{YD8#1Y6UdilY^`$ z7!=Hxs`@9C*x;;7+X7^oI<1(J^Or5ebU=v`U%%!6Z;iCSOx%j+Pk zaY!DB<=Rb59gvE1src5&wRg%JDe7VedDdgZFAdf&Ct(Srs42+8)t-=Y+F)GMq>Kl| zK0`lzuqD5tL(d-`U>Htvb^wV#@&DrM9fL#(x^>Onwr$(CZQHi(-L`Gpwr$&X_inp; z`a5T?BJNE6sLE2JDxz}L%6!(_H@}S09UVDx;@zGxX5Jo?wSNTzC2or5-XBe%4UP?S zg`)qXT&jp&fnX_G9#Ir@KTBv~yVR8O1-j_yU9!tR3fT-egO#j`(Y!gjKCsg96 z9H$^A6f7n9-u&pyl%#-W31-iGhReQJC~wp3X@3B~OtJ)r!#zBdV^=qW)M8g-wggtu zLb04X<7I7=ok$R;4JIF}jXs7kBF=vg1kjc7b%%eV1so z=93LjnsblYXs6NUeP*m(3}!$<5Xvj5-z&WIV~hmiwl{PaFJ@L&nHX_rRsqL0zS16` zi}_zqx2^yWX>pP$wA;e`Dms=T-h!=n7&4I7 z6cGhgeu?=W0Wdo>K@y&b_nKs8q3B7<2^rgC8MTb6*Skg*Sm8(u^Xu8e!XSAT-UXJ? z^sV9FoHocxFx|s<&Kgrf?c@nygbEk#<6+H zpF(gvrk6voYsw(N6I+wPQ#kg$G_h-)L&3$rNusQtf#qS`jlVXkOU>Rm_vG@BHEAJm zV3aG`6xs4(K>QWoLibO)>~k{!4cC;nIuWkh=s!Z^#J=;x1FrB4r+Q#~n-aI4Afcr~lx)yrNL z+}I`A;y;Bpdunw=GV`)4XK9b{%r{JR(p3RvM5x5y_-Kbgrzz!;T|cdiHo~GSxSnW zS{!z6tL*CIWQ+6jsmW(ujVy;~1IQZkkpv{fL$~M*clT7G{U)L4yxA8OOrGQe^UyYV zvB)ONa$-^$lrX8RP|-vm?glFf`6K-3xNFq`5{SPJh-TmUB9)EwjFw6QwO*4{kWZmE zynAJFW{wtG+rra5c|Bn~cr+hs7;LN_sjJo(Zbf5LI|rV-Px;SHzzpz|rl+dr;b%_Q zd?yD!Mt;z+m41?^-()!#JRMe9b@T0t7x${E?jP1X0`6z3;%hvDSNIHLacp4#CYb|N zmW#d#&(a40t}JO*EoWP6XGt}Sn7s3la@L`yr57nPV2C6vIyLvM`eRr9n1_+VB2zg* zrs;*Xy55r|w08(VYK9-27CAe>r3T&;D&Ss^*J1#OKr^h!!fM$Vkk`5JW-elkwN zGKD1tc?NL6fGaJa?FMG4#XM&s{I)m{4I$)Y9}9WOd<#?%V&EbyVW8+y^C)7Y1fvml zqC<2fp4Rl$nW;;3r>XJJvDkNo)|*b3-ItxOn=fCFJCa0S*4KnYsL2pn ziaiPAzIYHhg;0mc%(6szsm}YnU-%dU65O~`EL^TvkyPtMyJq7k{2jhR$v6MN<0oZQ zR*-}z!pZ&vJx?zr5t%`PZjc9gLr?~tc+x0*5A+Z~M5jAdFjXB;N75(oXG%bA?*T4p z>M;4GXg~!4hemRR{8A|^%Q71{_KxvWr*%r4@h6ujyxYz;7q|7X7L7qjJyb_0_9JEd zeE3tVy83ei$<5{-}a7 zr2M-r-zJZWQ7#!0uGDPSX1}Iz-|g9E1B^Wb?43;J(Z_*T)OYnLsrNCNB zs*shHRUxIqOp=j-v2-LftlV9rHgL2gzznm5gN_#t26h?IeQ&F5j7`*}P?ii9EJh9T zd?-|gpPlRpu(?Oag^|=}Zf0zf2so`US10o9s?c%fwR8CnPeHcp*^xTZWJrvr`?Z765L!dxG zJEGjwoYW>gW`Bf*Lj^w2hJ2*p2sh86V%27ItqlWOHBrORgshl;h?CBmsvVkoh*&|I>Zvu19L$<3)U4T&Az}Y5M4i^2%8o zeS>-8sX%CTq_1u(yxfxjPGT3WJ3<84^?K)O#_PcaAnYl6-=Ke#N+c+&ncpN+2>z$9 zgnoKL37Zwxhp0kSrGa!R~%U>eQIw? zPXp_T(^vXFYpA-i8%M08CYhWxCgBw# zEW#shF?bn-WtnhRJ4kIImd_lAd-j!5OOy5=SV-B`Qj%Mu`t2)~zS58oypFPlyr?||fnO;ew%x^Q9S)2D)q@8% zHovD^RjG07Jy)K;)kl%m?pf4nVy|RBW;}(N7wKH0z5{xdFx%(jv($>0zSvBX9eoNt zed+1KQ_l*r-wf)kFCJ6TdrR&JDxrhn){M_MNwMTj9omy_^+{PDFHWatDw`bU1ANXc z7$;8-XzZ7T^|dYv_!2yY@#!o)aeCOq2QnA^iNGES#4*P1L$Zb-4;MS^W?Fo}dzX_o zK{fSaMTf?q{Y$oI&RO|O@!JCM!U-$}2Qd)Lv4qrJj2ofTyP-Z-b7IUO<^`b+SZBnh zcmTpj7g2PY! z5n0cLA5e-lGR+Ca|MNw>|^t=J1E+*$djkSrMmo^Lx6etN3l(#!&u`I zN0fYJkLHdh|Ld|{G@N*Xr`=(@O>vO~;=(;_3RX7or@s8PX}B%>HS!>aI+R_3K~gQe zkt*u%$iJ=`ebx&*0iV#YCvCi1elS((pA#FOmZ-vTy&x%mAK;q%*AHgP-vxvN1Ze34 z6(a+n&;9yg*S8XWqe9H^z{6PR){&Eu&+`AC-}7rNb^(eU>BgiE3`m2JQdTjD;`5ZL zkR=zGmLvt_6K4Qj*@4bwD#7)#hBo!yYkoD>r?bWAzY#FZfHO?#Q*$)%3r+II6Ram^ z*n_?inCsW}>2BQL7pQE1KHn?v$gtD_#6|z@?rh2f6Qwa z%F1S#qzT^);4LBw;YC1z72uKM4DbL1Fjfrygol|Y|DjbLp!^`D zCl^IF7GsqV<_OcO8aZ%~pk$HpT5d@d^5;|O~<^4)6R^+`ST=(+XMO*Ih0 z0vpdDcRVOs#j&eFD;8vKzS9#}-Alu7FJcV-Hyrf|V$D%0#O&MD-!F}tlS5$EFAaYC z{Kw^G0}ZxJm{&QK{G(!KYp5939h>USa0sRZ-*ZH!gNsM!~E8Y9G%f z2j0GY4C7Mf6}U(q;r?2s1rXsAToUwaqtw*N=Zq{irm;kRKA!T z?k>HEjO&w32SLX~uugEZOkOh0nJ7(#*xtjD{*HfQDAS`A>$**tLXP$DcTqEi34a}4-n6pV}< zl#v^^!i1!WL6j-IT9+MCt>d(bAZ?zKHe|N^LwW|cUZBF#I%L-VljAz{Xm&T5Io!S% z2@O)$qmoro8!krq^uBw5R~B=p-Ey}1+!n>~`iLX*5e?tFo$G@gs^72n3z`FmjdBSg zBToXumW5^0(c?yZMn=>XB%o6OZAazM5+s0R*m^syIR+Eg2MEn8#4-3hGbki3zmKSi zsEjAb9oKn0nIK+YhyZ@GKTS5JSdga!D4dL< z2q+p=Wo6{F<>avx;lwZPH$guo>3hf)XsfVd5`DH`k%X-k&=e-R>OdM{^ZYG1JN4$rP`pJ@-rY^&-C%R!r#}q(c$NSsziYbgO<_~R$=uE+!@0O6 zxAy&Mx%s#D=WVeuQ4$yBSad1rG?pqegrO2^Z4_kEFH?yh6r#0o z-q>s{qHab!cQx+ZE8MB=k^QMgwtu@q&AiR-t_*`tu;lAjU0zB?gq^hjuLrha<~OCl z=rx>gh4X_d>Ek9NlcVnR#rqu(m70`}2V7iK$Oq z8Wg8!z191}u+-V6_=zsJW^hj#36N6$S`7x=u7B+}Big=iR+W$DefBSa6B&Bjhx``XhIU@LX zuftm&d>p*JBG`HuLt)b2_Ve|pHFHQ8)--No)_=g)zjUOIM{QUJGiOd}#fn*K{;C5- zkJn|X{(8TBN+VvD^$u+OTXlJME8!Qab(y1q`N~xn>)_1>1=EPQBAKM+|IvWBTyQa$ zw=LnAhHLh)FY3MES*ff^n1FeB)0)UT6(*()F3T_ZHwxG6FmleSn(fEn@FLMxwtBi2*51vUT+J&}uJbMb z3cITL$RnGe&;Hx)UZQ2x3)tK$Mv%bb4=5>;o~Ebi0Tvdf!$$-_kOxN;KE!Y9-0tS# zl{*qb9<(EeN8px+5a1uQY{;r&HoJ1lsL!}-&jhP1PA8rG9y9$}_c`&%o!xD`y_HzB zz!~U;>2JS_y%`BM8SGaWzg?6-??tmKn$s(QYl)AokDc2NErT29|i$(#d zlp+OB+>gtzu0vv>zxc)msvMCCmH;m8!pwYwMwA$YEmmb)R(SV=Em*O5kH!CX zb9UaAEFd}?CJl`=Z29v98}qpLg3#Bv?bFaDCy%j4BwRbwwW@Qar#qwjPNp>Zt8t1o zAHz{`HtZH6mvzd&8VcpW+Y|TrX_fvqtp`;XOEW7@w>#!B;$a9cYXgUIb&1)qxm3yC z#InDXT#rWpauB#rqK#a~K4L}#C-I6tOhIkAGA%habNP;1g7WvptlfpXsqNaD`09qawaI7o0XhRbQMbm6HVjw z>!yr&&APPM?bR~@LKkN0lz1-58mKbK6wNt2_?hF*vt(^zZq+r1{7Jav?eMdU%v%<$ zRqDug1sen(Mj)4p0Rbsg=wHV11pF$?4}5hh!W2ys`nopd1%-ZBz9*rA*m4@iGYZnC z;F5ErwY#1-!It$I!Q#l`ZTfT5P4Df!hqFIa>Sge&Kj2Lt$BT*5#4f!1G70yU%KKf! zWayvKwGOk&l}jqenC5Zzwx$x_@b6u3+dk%*Gdwfom5e<{vF<6rS^Dcy06niJ zj8jcxj_eg$>n#?yt#hYP2?z$~85)jR=&ls+R{=d(_7{ENn{Ks`q<|)3FD|ZyNyp{l zLNL8~(b)&^%rHE3XG9~xAMc)!c6h-2@4aZ=fs64y&XSP*$cL1}z_W;&$$f$}uy3P( zf7&YAi?z(}Bn+u38SPFJB3-|T`6o|-4)^C%M+RrO2J~@b>UwBuv-~}O7>eGGaO(`S1zWG7r%urk{&easA+|D=PW!25Il zv*2CRSv9A$k*6^kV2QBW0}VH{NAU%-`Ui?(xaZqeL-@yv;m>nFb{UywS%@A*O=N&L zsSB$>FZo`Yx_4HV$@`uIAcYxyhQ&wt-ye*u@hm{T2EpRx#%vqrPB=8aF^tm?RVsw|Ht>!~}?rm?<1#qN$Tv4?DYWqNv(M?8a ziC}oluaPhgY3 zD*sjU|7xAQftd-NyumLRwX$#%K8Nl(O>g>HmN|zq!%LJK7m3nK*0F$qS4A zI)vPvb?8LgoqvbMe=Gf)rE`kDv1OxCtS-00)!ialqMsabtM&BUU#JKu z7|^_N3|1i|-GXquHB&|Ug8 z@UIX`i)d4R4ck}xQnl-bqo`M%k;A6#gozo_lJPzTbd1(KMd4Y3S{3Rl^B3cp*V8fA zJ2h+L(>K@8mV3r~AIffNQ5#@f{)vHR_y)lKpG2Go&yrxhaU#$i((`&!{92 z`9qVtH|O4YzWpVERWJOhE~>!E;6&|2J$qsWP!ZrI(;BKj$6hrbI5?h4(0$oy)P1SS z9q8mQMDX~p)KvDzqnS6cWOS#qx(pn1@NLm7OMet*b=_v!IxDZwryaXF%*Zk+l0f+R zAN}MkJ*Q<{KAwYvQ~h3&(O+gmI)_{wfqC%xM(2qz&_&=}$aoHzl}bP+o*$;4Y#kgJ zvN3A*-V=3-W&~FF(=Du+TQ!K1|7?4ihkLpMGrIGLx1oQczoYNsiRD`BBl|pdKi&oN zQqG^=uFCHi?mM&DG!5n=j^J26?y#7lSrC)yvz8Y(iU#~l7xfL z^3u{O1Y_G%)SvUMuFV07^?liXhtG8`KM`c~L#btA9@=E=BVF%w`=V>VPF>l@}7;5rwZ5e|;a>-0G8m1qJ`DDwYwC&bjA}b$M zsEOlndjcH~xFHcB>XGNWH(xXt6H)}3F2r(lGeJQsowj*#;ww7A#HKE)NV~LMZS23JMQ1~1!NF?4?Fj#_!~^1Adf4=q`F+L-`@xo zmj!r3GCJFMx8smN&{Q1$!&yljH0RorD&I?GWM_hyYhcdPd7*iya6k zl!6J*&Chv(!{FF^Jt8$auwRokXZRMl-^hQ7;KKk2#R?d3<{Wpxg(r@5D#ARACb+b` z4r)w$*)AM0AaWlvx~JYs?HSn+33rP6pdvC8C`7ST%fWXmY^i+3^4ibhd9^j~ z75a?BNI^p%<>HI~`j~?!W*iQ%tC6)dg(>6e=P^Gfh3di>NZRJ1+k~K$_t7Mkp{FLQ z>)FE#8Ad@-M+ZX+&&R{~gm_>W7po4F6gAQVkyFruO`_+wF>u}lu>m`zo5zpPlA(wQ zk#5jU;#;e-u$Q(4Q3{gnLdV6(t8|+yy0R`M3&akYMs`oY++yHpvA~n;N|SE4a1tx= z%cH$84%sYfgK`cD_Q9T21un&`N2FTh6xE3ukE<{B7qmLiR@JI^eGc>}2?#aDxC!)( zc&nOShTdCm%jW`=qBzN=9C0@u2w_GSPM8v!D|h(cB@x;>Z@l}<|Bh>88YEvtj3r=& zHM;;ci>{6RZn|4)5UejjBXA6M5ByEF*x+q0K`U?!l5K*bZ4aMW2cqj#Za^!6q3ERW zEEHOjf+_^r)KiFQIg*#-v}?@q_fbewK?!r7OUjsRbbzpMN@?ugK_zn*RQCBNsgTo2 zRHmVRClmSphI`cap!(#Whr(H8eHUHy-haI8SNRkWoP9R2TwCqzRNn32S#K42uAc0Ob$%W| zE+4(3?0P&S{G*PH%B76(!OgG>vVJ80W${h$HoGJ8Rr*}?gE_#2dP_{v4wIq*VhM)~ ziWY5706Un;Ytb927~5FzXjW#fPW8zSib_|RSMgk~J57$#=nfez1yUJBw&G4{YQjD9 zw`?y_;aI4GTm<@LgEAE z{7B-$a=}`9GPWUf8~>l;PVEHjQ3L#rTBRijY{VZaw6ijy)m82;3O&T*7nX>w`q9;r1Ty3+j>K;ycN@XtNTD!*3}#mb7jHEr>aNLqx3le3^d0jbAhkw~{ zZj+v>C3t3+KeQbM7hy8wE{0R5Uk8X3#KnY3nhU;&>=P?KG~k*>70&rkna_4hW$^ zU^~nzYHBrH0<>(;vUJsfW>^s%MBPki4=XQ7#$JfsFmOw0GagUBO^O?^<7Vj($0m}8!%GX-F8GyCM&QIfi0qvunIlzKy_!>wyywODBZ z5MP5bB$iEz;zf^q$`z6tTgKcISoj!gT+YV*#;>VnRvDIPwhAU!R!L~?5KOUi!rU{h z0l+3kf^Ff06>B_lmx$rWYF3QBdmL{Z&z?$**{vbYW+s3$ImDR)&?%p0fxI=X;6BO- zU>76U#esN#LOzAm-axyQS*ULpGr$uMz?%~8jlC1Zo09G$!Iqqp#2eDllHPPCbn~e> z985DYN2nzZy+nhNY&{r39T~bWGl;_IFF%NF1QP5jObZ1qq?>{P5t@S0QmpaUT*Kre z7bH9<5VJEqkKL@o8<#@;DmfDS1XwgaJPP|XN;JmG)M%j-BfTO%e4KQH5E!YHwD0a@XH4@mo$^e)hQ<`W&2UMfT8zG4qf6edG`}yh!+RRQ8q{SV!C)_oH>><}P^6YY@^CBf6 z(P;2O{XLPD3y~9SDKtCm{mh-~Ck;?#Fwt4MzrXij%9>gWx4kXu>KpzZXz3&sK?Gz~ zjKvcECTuQvJjyxNseP43O4QUXAVB&m*&-704MXzJF4%H!zze>A!`lg_2~uQ9S5Q0< zS&fX$=DSR+n|D0zbUMuZ{m)wO z@f|^ddXHu^?gK!V)rW&-u_Q^7xM0#Y8LH=F80qgA63@@tz|AFglEqOP6Xa~x>bZ&6 z0JA#5!VPvMNZe0!Zj8^l%0cO>w0=fLYH7MOq2eN7eAYIZEv;G@Ltlb#k?-dX;uK~4 zdJNMx`EHj~omJ&v0;CbRF@EqqWKx>DuQH1bm7ggye8VF?ItL1Fz%t3do?`WO1U)|< z5Q>*DA*^6vCMLBA&CCN&Jg;Cv&5r2SSFqz5j=@B~rjZoYiO**st}^#05~G-B0DMJq zm6z)NlQ6YsCRni!Ncdw0!jSyVaa^#@V|wB}1V)*u504Ukf|s1hx%tDhC#HH)0h}@n z&@kP#o&y_a*D4TH}8yb31r6RTMZrf-IgunGGU#AO#1ZUv~NBtHB26(~=8P z20}?3O^1#eBBT^`5Cvk~cPluljvZRF;woWO)vc%-9iuo~@1s2kx1+XT7Hyvb#ho_0 zg#|xX$9Bn=OL^q#azHxzn&#Erd+;c}#&1wqs-0_aN zr;x-fRdBgTD&aq^$i}EGZ;$SJ>9qM^l1qqt1Ym~yGi98b7_^r;Q!Z+}+N|)^&Us+a z_}R?#6$9M2p!VD4b;^UIbvYecRS}B4BdM@VeK@WGAgD5Yr{R||2Bv4!&s@fNU7=xW5HbE-3Vy!6ub?)+PzlZ97P#nj`9!$dmAa9)Olly;u7a^qq{8D~a+gIl_!+ zjy&uqt0YU$UDyE-963}>R}dJuXvi8*7Q%?v~g^?Lu$$q zRBCciA8Dsof{E4)j^ezw0bsQn9C9o3`L|&NWx}>8Y^=Nc51RML@3~5tU9)i$T1=a`8C*i zr}`1969c6ZXJji;Z*dO~)=QJdn6$P1_BCjDY;FvW)QO3io$BrFiK&^LX&muXmxiY& zw7#}ChG)Vdg+}SrIH7DFoGI%|B-_gGt1F}W>ei$#OayMe)$jOPNgkx@f{bn*B#l}v z22X~la1S<^HF4wn7HLLR?%Z62sl&&?UDQkovyD@AG}#A_)RophrS3el0@2$Nwy}(y zAaBaOY-%jt*e6G?!laX<4l_BihZ!<@|LJr#c_DP~eXxIL7$*!_mum9;_By3$eE$4x zy~JG3uf2$gyD#@OMpi$QKr>&afTc@RJFEL!3l^Gg;fH!E^ET_IdT znGe<5+dqtf9o%jG3;!g^OA4sp1Oko3`8Vth zT;btFrbkrs*Z+oK3m8hT*!>BOK02Qkv;8L-UGzV`f`+6bq{-Js4$5D~39fD93Y3X5 zG|x$<6e7W;OImWpFXjJKwaTd&^)L{RXlD`%ld4RB|B=l*k-E?5pNe@|oN4EdbHHRp z^^Uf$iz*FLEM-E<^ix$kY+#!xsE;dMOGO^#EgKQx~S3Get| zCkI{ou4fxwlKJ(Q?VC5j`o?vWj@Qq+rMDa;*4()*Zl=1Fz5;{wS_}&~;TU(Za5+ zRfp4UJ9>Xmp;4$M$7q6XsM-*JbU;*=(3sI<5c=-CNEkk*R+L&Gn+oT2j@U_b!w%xa7HpUM|k07RO-FGZ5YB!vZpBP2-cfD zjafn-+25&gJFjk{#NVYpKOwE7vT-ix6cBcgo3@j*Y~)iKN0$RL{F(Ck8ISi z@4=`+$F@5PspWb#s0z*0&y+2uEYR5k_FZ#~Zs@ED0gm^7L(YV8)yhL{1uRq{mP9MQ zpNDoX1XM#-oUlU zLQmL-1=WQkC|)F8JxDM@YISb<)BM^zQ{Du)q#8PxsfF0nVJNq9?#$>v6*Y|Ij=ljY35_0^0<-ai zBs+omFL_m!#1mB^CFOPTqC!;B{@42ZN?W>8yl@v*URiW1rP8SZ0>ljWF7{wPw@P)# zZ~UYoswF2KT*dEqxTAQPlC)@X-^b{9yu@$96_$m^19O%Q6 znd*~xUP>@dt2O#sxRT)%katGlMHNNsVgdO`>Ppcp@eZG!y;FDdC``#?#>mJB)a)hK zWR_4XKE7q0R~p`#6|n_XmO|Z@nPX~>BFc#hr}hfzQ{>R&n z0XJn{IMGEaSh&Ur54SiQa6zcS--xh(<)poAaj4oZk!B4GiME(;nz8{U3C@8kI_^T# zV%?zMF!ob)RESv$(_2@xMpipEc~-}vMI430R0}Q0E4;+>$+DflSX+|DTOm=%T?D^M z5fR=l*92CKz6;XDAxqdiQvYI#R1>9i|MdlHXvo>THlLj|FJe)e1y*?gO@+W5KR3K% zmL2&pKb^G1x7-EO58qQA^a5sQP?fpoLu$?j9duOkz3ct?eyFT<}Ayn3eAoWLIWN&2`RwkzIN**KkKV&=cFM{F@QiP zXR6~}e7>aV4goXpiyC9p!h=&zQps0w3Sz?vr^#rjW6p3aI8PBogGnXKUc*k7gTHK7 zkY!s|(r|BA$PqPaZ&GRI-(PR^iZcpK`i1;cfa&bmruHp|+ z|NbKH;Mc%xF;mw-fvk1y!4|7~tf+UOOw34iQl@>sc&C~V;@jqdEq4tUi|jrGDorbf z5?!z2{JD4!)$J8}e2nb1{+9~#-O&F-ht-q`Eh#?)&*mG|bNiz$jaC_&!FGk*%__JO;ue)5a_I0ptzrM13%0?P z+ARN{Z8JE|R`se_r)WmbJ?RToAYLAOXd}|58Zzvxvk-bBzD-6R+91wOOd%kOR}@4x!T{10D6QSp z*DJ$qQv$W)*U()#L8e4cGZbda3($Zjx&YFa4;}F+P`7&P6D{C!Qe%6siB!JT{Cn); z_42e8JpZ-3$LLz-0N4XEORAzu!`%=t#sz;Fo@~s)8;MwIYLG)igt<-F?~=5Juq)=C z64ohuzi#Msfq1%ob~+qVeE@Cg;Dkkt3)NuppqYIvVYh#P`N62nUb^VsyH6J6uN;jSu=%@ z4O8y+d#1Tp8ztW7daYy?nej-1T&X&~r34QlZpMxHoWHvW;_nStaw*ky&5r z(0V^R#WWJ=;SvB+sCc(SOyL%rtmXCg=6!eDDZ10X>TTGN| zamsgmV@^QSX&J4P^Db#-Tgsj~c*0pAq2%+o46#5}u6( zw!|dRDjYnft<3$SZyi(*M0W)ZlY5cVMR@Dj$@F2(R8~G%M1q}GodrAc4B{j~V)D3B z;!&2Q%gfHu5T~6%kRF`!?$qJXkZ*SNy}k-z)ucw&2J_Gsot`PxJtA=ZQK&LrtzJo%41>hl?ES9p=@zAn?HF?eskK>zdo#%T`I>auw za?piM-m+e}G}!3Q+0-v_UzaeXf-iEf9};P;RD;iC&jypAHjK-Tsb(Y#QtQf;kM^K) zFpAM$>+R6?O7sRZrLS>0yo`&ED9eyo+D4-Yb|!ue5aELNfIAC+=aX}I2M^~%G=l45 zJ#@)y^u5Cv6SMZzSBn9295GTK=k9choi6)ei8P&kG=rQiR5<7IB$P`N?51W#hQnoP zB-#ynw10BgAnZhCG2aHz)&|OhCV`N!%6PHZdZMRg4>w(HL_NYe1Y(!ja^oBD#;|+Q z>U!0Bf>(4BwGeAbg|$QCEX*c+OEI}n$6hlf%*6Oz&feK_?df@DfOp*)V@xa`Gjqgy zvmj?9+RWL8sQl!uf4yK!DBKVDEnSn>FP~_}uikhx%$w+-d;mFQ&S4pUCw>6Q zrV=YuToM9->8h(Jq5=;$@c}h@`N3#-osPD|XHSVYGr|(9RLvvb2)M76Bk&7Sjd5O^ z$XpcHV@UY5os=?LxLo|PoRMx-9_)t0a%8udL`A1ahoC-!*?xj8>NboD*&tKLy~ODU zahBS%;8r0x@hRAtdXUmaRb(=nW>-$9*wZiyv*5?r0a92Xn@8cwNM>Ch3A1n^#`WXv zX)WwU%C}R|q6@u135r)8wFQ_l4bx~FDFfzjeL!6+qT)*Y|_TI8XJvm+qUgAZme(4K5y50*V=0x``G)>_v6YK z_uz$djF}@d_j$?akrlVSSL>gRIF@s;@as=s!MCtUKtE(waK$eTzj)gteJZ#w<3~IHDZN|MfpvfLHpGxAQU(|0NVkK_#~$40fgiiPAHL8W z+JWR-**r|W^U8_cN7p2yatz%$%`3kK(QAV)-LC?x;c8$Re&IBFKcV@2t#YWzSHV}#AAud|#<**-~uh%F|F;ls$*iJu_TxgTXoZ{70f-FIt#MtgoG z885fg=S@_hGR}zibljBO!&I&di?qfbH!7PlhvM0BkWJKItT-HMh|qztwPnBgwqA;L z-r}$97B(%3(}m^yxwPV^&*ab1wg&xr7;Wi_4K&v-Bd=aY4dDc`)@Tmuahv$knb z_Ae^(Lb@4Xs50QY+F^-THb@{jSYDI;Hj}DeUiveLn?b}nKr9!C`%NV2QOvs(gb*a5 zMc76;@%hA|x4Zkkke*r2Ja`RSc;E=j>+FOFn-Sa1 zSTr(n?2=1-`EW#K8|C?VDqBUD32K{d$co%tJ}Jotlx`uVSd9II+m;RL492GxWjkW~ zbKwMvY%rai2qV^;uA^y^1^Fx0cpa7y8)59WZ+CG8-AbJnLy&MdN`}bKpk8Yf`=pTH zrk4%zCcY{D%htBJ5|W9oXSQmnx;0G6J4432Wi}yfWqdnJGQGuTa6jA`qUiT?8!~d* zg?a4EP1R@eG;VieHN`JBA9yw=GuaEwztr$4_{9CD?LKpQ7x#Yp!Sxk8`#c!qbzd6l-_8cF#Dubw-bz2U>Fi5U{&O~vmcsM zuDhX^KgP_gMzu#}_NiPOGA^K}s}+ji7t>tPsN5uqPzHM#W|-qIk@RDVI{QLp2A0a@ zO0_E1(!V;^Z^R-`rxq)LsnNwf&+N=XVqx;K6#Jq{j)L#a}EtF?(MO zwz=RuVq17=B0XH!q68unLc_>R>tz1*OoI%3wqt%0Qt^bq==5IQqIEA%h)H!gjAF7` z86)G8K&ooao&7R?+h)*G``czrF7*Wems;aQ1b+Tq7ZeHa2(Nl+?TXb3O{c|#it`pz zRs@PJ(CgEw@xoYgC-*v@;vb$np9`gO4~eApa_sMYsmKZoJ;9_)@Z*vO@p;!|I@_pu zF!hO1X+p-uWTRZvok~5GDraJT*M{+_AL6p|6(Ser{YZ|uaURdF;J3gW04?Lp@yMNk zdFNx}h*cH&My{R)7F2i2QSsw0(*$voq?dvg4qIrD$?eG@W9+D^bZ{`y+Ez!lG~L)u zf0AUD)DXI{Hx^zBwP6XetQ>}1zRhfY)<>LggK=X)Mx3&LU1qkfX+O0gW+@Jpp2^_z zbV-9^Kjm*BcG*k+X>@|cE9^}{lYvS9Avj#6V^0aJ#-{Jvv8PZZ3t05_Ul-E*#lMb1 zH?k^Ae2e(yz&hck#M<#iEUC1X10M|mF^t^;^R>XWU1pjF7Q?CrG}@TUTfgk(F`Rqd z5zGvmnmKhDGWp71(K5B)S<8cMq)u(UOmh7=Xa1+rVe%=Wt*-oidoz@RN@Kj^SFb$#i~)L!TI#o3tk zGHwKFCG1$e^O60~L84gXhZK>CSl2ZFNLw3`(-TvhZ~Duvaf>s61YfMKL~UY)sg}A1 zwKgS^sXdgB5fK)9H(?pIEAP@_E?s69P4*+Yxi#;D7h|JYhZk$!-j4x?GGZBO-FOm^ z#lmM1h6?_3+2g{Y4YZV=se#=Gfyj9mN&b;Id$ZO|2o-eTN!GsOdCuJlIy^U@6b2HW zQg>71q6NpT1{khAim;S-ij5_{p-jGfYVR(Ut+&Et46TZsw7XdpcSbPvmdO;vOp7Be zlK{`L!W8JoW$I@=+Fcf;FiUS$Xb(c*-Sq0)B<%E(DlUK|!BEEJM7c;Gj6%M7L~bn| zsCm@NUx%wahm;fqvogN^u1^CDLGxyHQ+i_}lS5)C>v%BjFKH5pn{_Lm&ddJ#w$^Ue zlha3m3OfAT-+Gj0WZ}lQgOln{y>8y}fx~B-stH5B>R0@q=6}1iwOKV6Z6+y=1^D04 zsux21++Ug{^N&KFz52l{y7+)$eDz!snAO>2eEX`Z_j1_z{%G`lDqMW5n$8H!%(K2D zRqk8&jV<;4$J-T*8RM+VTM+fypn8n@#~p&4>;k>3p2@{~e*MYt_aSAlUFA|9`(F=S zOWlVked?Y8U(@4EMPfx5u_GFUu8{;Q)!ddATB@R0GN`LAC(}+Qg!)0oZjV4SCI!EE zVqia`ayxXKoh?ik7U}nVHHz+*Ys?!N*DLp{d1LZ~w^mm}TWmi#5ZXd!5V*dWmnF5n zD>!y}hQ!zpaJ5>OFOP}AsWb9{ecAj4&X=pTLjV;_3>&Lalu60Cf~;fC-j1j9T-R&s zCL#9g`|yu;+EA5J(m~7C{LQWkIH&1pXx99k(EbJ_#!cLEl#ENiD>^G{y(l#ea|Z`> zy2Z9N3m3YrMRi?U3F6G#C!xOj&L)r>GAQ-W;V&g;*R-jQOZ%%V4^~Y21=WXGOWcC- zv2Q-FwbgB($9RiYuV*N{`{>9cgsamuh8GF+-)GM0&)#Ov--Wm(A`^|-9?JDWs2Uem zIao7?5~$)-A^VOLSLSuMAjslPZz>qv9~KY#g=+D$4(^bQmsxZfo4R_~SBO~VmQY&3 zmo&fG_#VIOF@JT*Q(GEjTvAlDRB?;fWaa^fqFSb8s=O!`;ydG3XfDluP^KmaTQ5>w zG<)8QBRCHZkk-}7Zn+st-S%}b(c!+TlSi>?7d~gLLN$@c+e=}2CLJ|~! z?Xj5z64%`23?N8`3sHfM^tJ`B}k9;o9NNiK4i%3E3JzPDPk9TAJZia-yE#uUz2d} z_@85x>hh`bw>N0!t{&LxTW@>u444~N5%EP(Wf5L9~{vQ-1?GdRYy{$jRe-(wU`XoJqg$GbiBh-;p0cc6dzHT07odWA>gz z?zL50ARwMvbVQJo!_CBwl@d|pVOYXv+IQS#0s3`Q?>bJh6LTJ9*<^V z3p|y2`n<*m;j3#X;hJ}tn5b4!qMROR&8(xNMxK*}L4XJl5wX?p2t{D9IKQPjuDMO< zP&|ay;uv^-K!v;ahq4&OBNbA1SNH;5`Pf}ypV45OvFP@ytg-x?}R-WQY;g|97;fwQcZhKzCvf*Xkc$7mF!MTK!(Fkz} zA2ncllNEwZK+|L=aSV%(I2$ASML+wr)0%;8@UI*eT<20JnHN1Y%%O?jwBDfjF&Wkk z$|+~d7#5C|IJb`~f4&iRM0lpGzO zm((YS6PcBZQO4ZTV(Wn6_$&CICus%iriAjun#4}J__|&6H zJw0#j=bF74jLkA8p$|wccnWFW!J6NDT!JR+m1fl2Zo&cPNZjK(Iy9)&F-D-uKp*sGk+%k?YWs>F3)1`p~%c9FI8%M+BcA4|lgln8|rEG~ql<@z5dRFB&t8 zM(YavYZzG1bJrEiYF17IKHG&Mbnv1{SQZ|txaDGn+ziW0zY$H%(L9l@mBP# z?>9x7yW1;D>)ZSwfkQ}l0;H7sS$qm(o85#La#Qa6u0(szv|i_)n>Q|_Go63Q3@u^o zV^J}EwJFEQ*OG}Ztlx{*ms3nx)P^3y)K1h#dutDA3L>t^1PwYeyrX$^%t30*w0z-Mgegt`UJ#ps)ukyi`PzR%tf#bI%%13 z2Icj|#G7!k{W(VsRlbR5lA_*q>tMr^8OCHH{XLBDW^}>)x zHS_Xpp24d9U7hk}N~jr3oXEq42LnT9{f1u%Kd*zmi%8tt>(nI<971qR(!v?G8cUgd z#D2tdRbr+NSw`Dq$S^s_?Cl=Ueu}hcY7Hz`43V}AM+b>?!ai==6$oreCkh)xahc3p z4MFSup1-N+Mt`R6#unW*2dk{or7Bp)TpNm;NG63>xay*SE&i|vMZ70K9M5Fe8^_cs z$_&Eb$71t|NA@B^8){u^SNYe&VHv9`RX|IPcy%q~c{$Orci`MI2TS)hg zIne|83x0lR)7?0YZl7v-t|7K_8ir^#Eg+M6#bO3(BM)@ya?zY=QR9hD6GBr`hRZKtw?GJE2}`ozuJgbrD*ZNR)*nXm z>T1E|BC3KSqB0oHJ3sO>aGp-lK1z6_P@wpLHl)<(D(C6*Tse5%=CV}&y^d$)Z7cg% z+QL`^&Yjl@IG$~>wEEDlZg=~gD^5!y-=Wf=i#zp6{*CK)w$x>ta2%7WrY-Vi()S5P zQ_`ZJAD%p1c(oUq7iG|@e^11{9cDje=>{GKfxu!wjMhwlc`hWhDS24Fc0(rr6n10c zhM#nP$6dg!jq8b=iLZJH@y_-&w}2VjEt!sc+O$@K@!Lt#c|g1G#9$-j17)cE1=v|x zsYyh^^f~oK@+Ldw-2RC3Q??W<(oh?bLMB&gdiBUgK5}e3v1T11N#s25(A9CaK!Va_UbBPlZO9P{pIwuDqO2 zGxEPxMG<{(+-^+?^Y6qLcrO82!_tOW0{!uH`CA6mI~>mFM%TIFHs@pETm;l>)l@Jd zg^{y(aa{bZ3O_Q0#==Oc{T0lyczbr8xsahu33L`@V6;#v^^1I;VDpC6oy9g)tBDvj z4%g#S0GIj>f5L!S-g09KpVCw~=pj+A^-yGoyVByrkm2v@@VwxgIRA=s+~biAOI$YM zQ3ia7n4yw)m94c=1o5P9Fm`O1;;NQ(|p z1s)AOmZ;@=Yqxxgb9y}h)yjHWsx99QzMgrtQwis~@fY&@LOj~&&Rg(G&k?PH8~Ir6 zM5FiS-p$BHMuIlbVWc&2d!WRxd&eCXWz}MJJ*Bv@H~G4R#+xX#L8^FjcUrKu(~(lR zABR9_;-ep)SQ*ja+`LS~`e|s{AYTkIpW4>JZ7*>_?4qfOYF4wVQ$fm8v*YPw;zFNV zN#*vvSmlG-bQltQczaem^EVt$6?vw2-RjwSS^Z{|2D{W`7|OG4uF=+o0OOR5oZQ-?~B>f;Bn*H&^U!J~^?N649zwtfGEmd|#eHTI&*u^7D`JlFG z+&(qvlBmvi>bf_SyWOG5!f~JOI3t4RS+3m}B}7_fta_Cha`Es02WH;TN{2YATLCemu+K-qLtKJ+tcnv?S=E}*M-`oGHZ$rTnHaExj6XIpUE}k zA8|cCMXI)%6KaqLdm55=&L)S}zP-NQ>edIV*$`1rTnVXEIN{g-G}{|X_HLh|BMtdB zrEOl2=3)B-pVuWOqHZU2@lB<(3}3CP3?BN+^3R_rfOj5tEYIDSxx+})6npX( z7ph?z^@k`1WCE!`)2Xp5ts~UADAh^VYWi2)ef?8|Y`*cHjj3^0^NT)~{Z8+7%FblG zenuqUQZ_pMk)D+Jb8hy6TG(5U_Ihzz{rbCZhC4GO_`HB8gL<8m25xf;W`dWquC#%o zL!_DEa(6=b>G1T8RCqamV`qQG>&}Jla1R0{FRcP46p|!@9GBzeByzh+ESX3G;`;v{l`9K{cf8P6CJx% zhSN;UL`83J>I`gaz)aFyMYoq{et36Q=ZrGuh8ufEi=tqtqd&CBrg+SFd4}rENT4~XPJiCK_Zo3RQahS79m=4+)ThOhT_EM``$xGNa zH;|9!NM97dxH-CNc%&eMvww{%@w<|d7pi5Q2DCoZltZK1R_%Ye8NWH5i2`uOM`d{6 zGKhu3rvyzQ_a~7J=U(U^+op%wPAukdRm;XO#=JVR9Vv1+{Yp<)$AFOIf>)H04LTHg_RRIA4n zE{connY(NOm(E3JPS1FCE9#1wW`#RsHkDW2Bl4t3)gkriiLOqX0>qL*5*0Zp+u-lM2xk zmhYmuO%ADLX;6CBfQDCP!HZc=BjSqt7H5$Wc?@yiIS@HKcx_Tdgf`&!{*FRJS}b|n z5GO`kKIbR7WSbTtGthoK(F{fkyEt<)MgS%a?;^Q@8ES7<5*HceW1*PG)@Tt>WRUjE z$yBY}S_tVGw;yNF*D$BWu}`I8 zu*kya6PD%d(i!P4D(BcUQnzrhUR7uvNA++gUgC zS{F^T88=vTXuAZ?Fm`?n9l7p*=d|rvVrM-VAQ{_5;_(8D-75YRohG9)w|+J>%G3`* zKeHlqv?tn&%$b;5{+&DaursL>@Gqyy3R>C}kElx9Dy^}XZXE@p>F(B=tGR;SMQ8zc zT0JEx1Z!9qS}i7|d=-Leyh4_DcU4&1#n2}6_YR%G`||loW|N#J{h!*whcR#vcb=m6{|REjbAU&F&A?PoLak>OOat- z`>Dj|2FP==(%Mh8bJUkqIGYg1&|E!Hg!w^rTg`#lU6sRa!I$c!p%XE=Tr!QO2}T(G zXY+e!QG+*JUELHv2;>KqP=V&O+E2J zQ80;yD)qwL&hIbzBEwmgeM6+%%2p9eFx#n`6FggW>{<@px8aQNjt<#G9PjoE4yWTi4=1k-f~3-ZIaJgFe}0DQZ!=0_ zg8FmNC!*JrH`e8sMhGf81f9d%CUq)IbMtNk3A%&c_k7C!ymzY#$ndSz-skIR3}b0tpoU39X8Sv$ZLulewXZsR^NxojaYW zy%QCH9>UZRkT8}~5Ri@4lu**z+QrG)5!j+bsiZ?is6hpwm2fsRF?2R0`~wpudO;Uw zbHD^;7binoLO^C%S5sRjs(&MB_#YC}(*H+VS9J?pL0cz_|9BQMbTS39OVCT0TDzJ$ zTNoS4nYx(L3fWnk0QfIV03dX9auzl>bOi8Q$Qb^s%EZe0U$cb%$zc1R*>4FM|Ka*j zw=i)wchY8JVE}Mt{9hJMHbNFQKsH_uhCjm24j>-kWF}-{1Ly_l0}3-IfS`lnA3d4b z|5Y+G{l}cYbN{#UuZ_Sp{t62RfZPP|%*x94k1(?nva+)P)@1yn&);?+5eiU0RzN?n zWC!>QIPOnBBja4Pf5qo-ogGNb0vre2>tAD-0puerEG+*q4_Ies0NBC?SRYVl zVFLINurF}Gf8YOKI{-BO<2k_2j12!;8rT3F&d30W1<)QQ7DmE9vH3ILAD#c`1dJ1K z1;FgTHUQiItOQ(v6A-*V$^jPu$RFha3IQGSCon(&{44l>%fF5RmcSq}1L#hGMgScL z1OTw@&lo`Yrwu@U!VC~#+n@D;+5;U2cm}rrozKn$(BWV5$MJuI|KCb>RzP5Z0SAKN z-vkJTf0sW%_zQ;rw#J_z1KWUr_;&%=4Rq)~dj8k-|L(;O(EG1L|GoSR$|@taR0ykz%hRX7>hr1SXllo!87B3OE>-J>iLh$=zqPO{(D~R|6iBVKioKf?<6K5 zPX8|p3&8!rbH)sC8$dV!;bUh2+(m%9i5ZX}94IURSg``{A~wLe<^(_wP_q0v^Z(5G zJNJJpf#ZP!T;s1Wa{%rQz5C^fb0N~C6ILGXq0Eh!%1PC=dfLe&16QBbN=N}!| zfI6~q0P>Fm+JXIm^9~IApAr~mz;R;(!krUP0_Ji8jszQk9Ep{K13-fWumfNlP-kHI zM+YEefKXuqoO!@LEWmpRP_hD!A2SfL0O+zYumkQHMnWba^Z;uC5`hzP0>-le``Ot6 z{eba+exNNZ0InlufF6JJ2i!;O09{!)0BZv50Ya1c&k+UM^UwY)3_!{%;7_2Zft~|K z;m=LN3cSt$Y6I0{WCHF1u#Jh89ncE^3vde1AYl1-I&cZ#^gjY<2V(x8>kU`|)c&Xk zT!MoG5N_a1phS}fEyYZ{{KPPIRQ5!5E1}5{JZ>t0}vAb zl0Pu`7aV}~|0+P=0Acc<`v39Gzn%fm`1f1s|B-i|k%5)<|7&t|m5&N&Ur;to-OP|3 zG+Z$?ppxU-T1$6h8#sAb_mQD?03kiTcg zElCzwHBO9;Q&Ux$m|$GL4Sd*Oa4G2uPIH_c^AZZJpK4nhnH*+3z}VZz$j3;P733kv z%orbxUebPaubtOX2&nHA?ba^y`mC=JW64A>Pdl{ZH2a7tEoW;enVEu^HU9G;`FAr! z8^p7gdcGztxwNHkzcu_5DjLeLJZ3?k9C5r%yop3h0mdvt)6w%niOPx9BaUCV z56LFj4wFjURncXq6`k4I!{1`@oi&eYhWFW+{g=md9N?YG?Rn3i;RV3Fs{A{L3O-Yq! zZFK+Cu}Qr_J!qA&_(>13UC+a+y|>+|O}p*lnd7l-zjo~B&|$=d%%;$0Hw-80ovcin z2Fn#QKYOQ{ccgcOchGz62POl(F4^*UHa$F`P2uYHTA$}gHhGMTuIY7FDxV|V}yku)XRNFZVWwqdvds#YLE zjxq;{4q64ww;tW?SfWh@BMqA(HZSWXBXg!Y%sWg3EII56>3aBQ2Z<0_0GWf=3I7d z6#OyJJ3f2Ed7tK?hEThWzb!HCiVVa7w#81~RQEt!@~&$>-fjGKs4}YcMJ^wdQ$<9K zIE>X5!eH@fYnYL5r+C=dneWpQz5lmwphn!b```F|Y?Z&2={l+~O2& zG=u`;Cjzolvxph%-_FRxE#hmrnrYJVrcRJch(N&SArxju8CK(hencrD!%(Ql9T#Aw zST$>g9cHm@Vwx~!P3wp2HDO50`)EO4Eirw7DV7L!$GC!uJ!eE|5@Z4gt#ud>(uB5w zI6we*?BoV5^szQCenEh>7KMW~RWxTa5>g<%^MvaWoC28y&4O+DfW#37g{+rt(a+GR zp-Rn_8@K9A-j3|2H+YmQpdv0vsW8BhRk4R7Z};Gghv*5banG9@0p3JeMA5{JB0v?$ znw`*%t*+w}fDF+?UGW9PMH?yNtw$KofyY7R8?8Vqo`&)Lv`Y{YG!8sWq&ylW+8&c+>h~|;n=0EnA zfZ!#oAVuO_G5v0t@eGb@L;Jlyb=?G);Ted~7F2p!a4Jamox_nDO3SOX33Ct5lGsX{ zZ`0d;v;6d=!>aY|k@@3XneARAC`oTDP7+l5&VYFRVPy+}#Y75$VhTEHWvDc1TfJm_ zY#4f;SWZ`oZya$EwgT(6;g(;w=WZqJ;LIwxSfP~fTIWX)`6xbE$>;8??)9;cLhWY$ zetdKD_FKO@HS7_%{dJIV_&!=({vv5*Bj9%%`@tTZ=ees!I9 zK7YvrD*pOWLooCDql7>O_OJv}RHHH+UYJ=BOx*b>ff=-cL`$u4UiqWXbN`vQxbg2t z=^dlZPA?h%ru!kRR{PsL!lxmpDSsY3iM{UWZ%)eUg@+a;!;r~B0fnT?d`j>a zweC-=yu`wda+k(@zPL=~z?>Hu;T;&j!rF;-S7`|I`){3lUP4Y$fk~jJ8Ob(UmaGo_ zbm8U2rN!U;kys>%I<0w-W3!1B_1$&F3?cpPtxXeKE28A3;i7kXE<`u^l8sTytk;L3 z{axIx{)4Ck`F5|VS(m$KfCG|x3VfJ5h^P=`}c zGb7h96{l-2e8j)By!wsOej8-kVYP5xaP`C+!*s8Q+=x$z-n(r+OzX4Yr*cg`T(*=B z{Pt$+k@ufae7NOg@$8redlF%xY9p%VRDMcyVvGje+saiSEqh03u^%W&@YtGKC5Zud3Z|-8L$6%{3 z=~}x1>F{6ZAlM?ks>DUEAd70xkl$w!YeqXTjFBP8y2);-LI$$RNg}@wX5R zzo7QWdrTu_Q}HN-Hzqg`u2C}*dDKSEOQl-$U&b(b=QhFyPu99WpNUdN^SQ}>azCjU z?0&_k2zwy==-SYOekUh;&6Jf)>gGbqz4{w6Wqr=p#p$E$otknlXM9e4iSrMax>kxa zI;8@{%gKUoN`99Ycv~T{m{|dG$v!ZuN8kx{AR4NO%H5KYt~6XWQm~pSQy;F7)V%I1 zhWIbI@Y$5he~nH{KD&^sTg;-1T&tH8CI)7!S++bP;eoMXmJH}ZUR2aFY=_{0P;j{P zTi-gW(dC3z1<|>kI5?Y$GT$y$Gg#2c^yRTs2cLVIUuUn~7*Un6Z|Ycy+O<6%V86unQ#`&LxD z0Xue(t48R#f~27G&Zj|Tv0kP9OUf-&Y7a-62!!|?oQxPtC5fsGnn{(}?pu8){1iqa zqLiQbAqD1mlR3v0P@g%USJ@4sDDid@zC?JwVpDxRHLKW19vcXUYpTJdANMslGMGv! z&|B{^5e6%bD4>)E6Jxe0NAEw)W-)LEyTeLeoyZTYqAAS>@X{SERCS%UVrdFoDzWEH zyZN(v;E%2xBQh-iqB;KH?@(5Ak;uJ(B-^k{rzx$8jlgrO3D*=GThB+5)=#DcNpcu8 zGATmW$sbSe!tgml9lK9mkzd9qfYiR{;p%h#b)8?fpJz0|Coh>ZOW6Sw^~H$RDlwHG zN{}ZmG1<(dTk@4C3Y&vHzkjY@4kn%I=eA>aGO6fNJb$|tt0YsbF5QnKA>dIKqremt z(7XJU&)gc&|87vn3zgM-q1x$UxYlmm55*El{O%E3$Z#>FZuSy5c){$hq($~(cfSW} zffFRLe){BNa2z<*>pI{6NEan_sRmVL{`Z+;wHx4I6`KAB$L&lR1w5eYLhI7~~?)gwwI3DPhFpM~M}#4frJ6MEDPKL#%} z@)&dsZ9*JoeeJr^54CyVRzeOVALw-aGVd|JyfZ)-dtpTlxJCRmdi)}laj0^SD>CQm zH&390hOPkzFNNW9GL-Z-uAI800(K|y;53F8%d#gjTLAo}3Fp3?Z&O=~Ph z?jG7EjDDpT?@>nErKaU%YP^%ltx>H5ssZ?KoXzD|m32LkhMZC2u zU&@q0hvAkjZX2jlhe`?I3^wW%&LF0}p|@{4Nz>v7GCNHFz-;47-UY1LLqRV8zB5xX zVd(r`tTmnDd!wo!QQD*3Qp3_>8`eC6m8l;o;CLN#6J$WBliJYs)#5(+R;CA{P-TFi zzVd|Wu?34h$%skX>oW43@LSKwZ^FGc3HhA$GK;vG?FNU?=c)DBV@U3kv>t zgdBa>*uGn)A9(qqKtXUT&1#WEslb;nVSuuy&^k&)+hvqZI>c>2NF{Gd*Rd|M{#lyH zbbD2(md}d!%Zq{&xs3xo#r$QlYbs(J*)p_P3W`!+CLNz@68)Xy#V@(HA+-XTNlcwN z#C57@DB99vk_3_{QU|#`PXxY%u|T17Ym3|EaPfE&W2PArw@`vYhBnuUFR`(AB?a{# zzrR)FWWVN1kfz5q^3w08u`nwgU~QTuvX*Y4v7>GJ+cN8tObM+?&dCsSYeBD7v2uMC zw=q_>P<=M6=BWIYW(;9Aq9Y9EUJSOVG8#^bXBJDjEGS8b-t}UCcstPxVjgvn0s``u zl3_rX8^R*|bULF7-}rWMOI1GW(|ipUAY?v-I22$l2eX+w5ro!kX>?37V!f0f=UPwJ z5$|Ov@nPd0`Fe=EvTu^1BX|XV$&DxA{aSb5P*GQ%2l|4SuP$NCDZwuD8$C+tcQ!SV z>LQECM={CB8kiamWqU*VZ~-V#P&Fje$Qn&HO%ogwaVWgtoEl1$#gcBs{(-)_ls>6A zjLEzt{;wMb5pS_?jGJxG8|{a0=bVRb6Bl#`iv8vDztk@z2)ZCG)xYkWc@N9!zp=WP z({I~+1-Td*LcCmC8^5fglD@2px)zC-JJX~VY;-||7k;wFWhHsn}jF4^nOQ2h#(NKkvUt0=(nYcMP*vc`!)06Yl@zF;) zT}SBZWZ=3$_WnAKcbM9Kd(cPlGOMVSnMKKrF@TrRa(Q zLu(^Z&30%z4paosg2*kb>Cckv%6~G}3nTdgk;F<1a$v0;b z&v%NKp-gtq8UF9;EGtGA(Nd*XVPq?*G^zIej(zI^&2nq>G{Nu?JRG`TgVvnY`AKl1 zVETr?a4yqHkbRp7y-M>}-AJwoi*9pk!N&^b#FVR%0y{0-dPGzpz2!z%SMF=se^#qCVc(!Qw65^Bfn;UxOB@okHTn`8Y+Lb{q~{ zaploHu4#1FxOkMRsJ4Rg$vOL@*aqY;vMuYM%ihMnGo)`njgB}uj^tCz=?!eR!A)3s zH`zt(J!!j9oncL$HYnkWUk26 zTFpM1QESYq47uIzuK4l&gi&IH6oGrwZDp<;JG}qkjU~eJ#YtBxnV3?nRvdjX_pr2T zr!-oogML~!$mEOhU`&z37bczC zwNfqQ?RpK_%KPL^AYOevs&uilBdeCzVMXnvC6Et?*?YNe^z34pY7)$;G=%s+?1SYd zWDY4!^=K=Qk5{d;j(RdreH5W0$T$2h4c4TKX5gDlg0;zH9La5iRz8m59eCtMARBhI zJ2QK8Jqw|2N~h5cUnQhyKphIIT}2$rBGRL4X*m$4(TyJ@64y%40umw9HIy&&k*&jk zLU*w)hVVoMr*4({T z6dC4=Q$8*;D5@gv;0w2fnzDuh^9BNvhU^&;8C&(dosiu6Rfe550*Y4w9m|FfG9L)U zHdhwH*n44uUfGCqW$D|WXy&#?xM^o+zQFeSL)7?QnIp`YUM|Zhh&jgugX)8S2@=0n zq!c$`HLJpNAGHnjT*hXT81uPMQ0T*3`Baw`KAphg`SGVvkCYI{47D6O>S^N-+9B_&6>S>Yc+r|noR0yZ_F@~BdQKN3FQYbUlcN9(z3rZinGG#5$TLz zb=2jn^;Lb6QI<{-vN$Sj%+A1D?GhQ$dG%T)&pp9z*u}@nJGDz@vC=ns^D0{A4Jgmz z!(XGWn^|4qPRUVqyKkQ8l%E{8*eA{=D9Q%C*cnY^zoNxi1^V^zUT2K#RBy=wQe%=| zrhbT&TmWr@{WXo!+KNdx+L`w;o?niy$bP-u#){B;A;n0!#PcLvi?d;8 zGSkYlyj(hGjbMmUy)(uaQ8A*pnl<~4qe3I9TJqaq5f^#Kmm(i`h|M%mlK71@`q5_x zDJh(#=x{ap9ln7Ep_*2qE7OMZB5HriRuI9c1PO-O$u^ccrPSc44jY)^pdn+gCazCD zu@fxMpWaR~N!F^z$CxRAQ9*LhKt#}Z4V@wFUJ@(`g?o;Bue z`Yr4MaV(TelBl|nyx!wG^$n~DdmGzJ)|X6|PcW9#`BC?zRG9*&!hw=KDiQjpjLLT* z89g5HUn(1YL~0VQxeCXHF>W%mYE`xcl6Rk~9$AA@`?2eg9ukv#X>~KM{l|8!DlR`J z^Rq!a1+(%Z!}F|W+gW0%6<$>G$}5&lIRyEH045&D<8Kfj7?fM3zVXG@8AJ486eL`@Sr@~Xf$ODq7h*A@*?62^d zJD7dA)kKKnYyJ$GO74Q9O6y-GyPa2g5!H#Q_JQQQbTp~*^m5cvv^5Q~kZF>X8FiEy ze(6-Bv4@U%v0PKjX(fkrcRv>0pv5|4OW(e!eEXtVsh1;v7J0h&{Ipi_^r-w(7;Mzd zsibSJ38}ks(ndUsAN^Atc9GIAIz%44k>_XSrS^sq0!+C3b1YCcTR7;YHqNd~pLc?N zRZz74lt8TDbG4D&C5yC~l#Za+#A6*R%HoJkI{ZO6?&7P`C^T<5Dk4XYU?Kp zu~da;P1PslQ)DH4prrAR3mF92mlASs4dp=Ez$`gFjKvaIHX&A$wmjfmj+}>*9Y+i6 zFtEc_H*H8lcIT&YdG5Qs!&rUdyQXog-?8s?FY}WFr`QX%PqtdW>|rrQpR6lht#e+U z`Dx4?ZF#^Q31f8Aj1Fo}gQ4#YZmv)WGFi@KD;6EYi0rD*)fxW!vj$1}ZV1={VsI$6 z`2#G60pRsJd6K<#k#QPa!0Y3vdV69O%37MrwbVZ>7bU4ltsDpZPT^Wf_p79}5a5r* z@69$RCJqiJ`Y5lVChIMkWm%zbzMeLOp@`23TN?e31vhzo^#tkbk=Y{}`Vrr=u@9P4mR z8jOsB*JVfE3*^E4@(2Yarv}pjQQvuY5Y_9kq$TI#o*C%t`xB;%aa0(jwm+>3 z?~jdUUJ(5Er5Kx%&uPqN#Q4zSOx^=L=yHUov2A_v`@Eb7qHXDp5$-FPmklrd?*}~} zZwdPl&(Z1oKc_4(7`cb;G9kFyC!by7W%-P+^{x#J4CuVyA{@WHy&Xpix2bZ8H+}vB z4i;X5zvUDDi%6q|Bm-u!wt?JE<7d_Kn8v&b(vB~~5{&yLLVGkRY89WSue5+*!z ziqD`iZ%@w(dgq~f=Z;K=+t_=qHy6CY&0fvPcuelbA`Cn*m^@0f5q|ZgATg8`pTs!b zsxUY=D60!MMw}^Ub0p-WOief$_(Tr|E&V;#-suB}jdLon?LVlde?(I2=6 zUc&NgrKrbL7Pn%|l$qNdxw}g}Qe`AyI03#xnIZ94M&Lxdjp5Rfo#PjKC)_?pc zE?RqGUJit{sn&8~V7n4fc_^N>+!wU_TwcU@o4TVpdZ@2+KMhIx)6|TVn%?bw?~%}* z7C!adqmSX#ZAZZ9i4>hg3A*Qys-(|&I*ju6v8Ki7%$|KFM|IniS9h;tzayHiA#*|H zW){p1;*9wI9b5LBfamg8L}fJ={2ocd?-`V!SEnKjukyq@c?aOhy5P0s48oYAi$2A0 zdPIBg?qeu?`Kt!V5Y$7&zM`7sO@iPP$VDk|W~gt@9InM04*8eqT*8^Vxs9+he2c3F zP=(shCSL}BoOa?Hvu2~ht$ivX@42*oE6Grdl2S{{=kKk0G!5)u8S(2|dZS+q zj+Nmg6BXka{Wi*Tp=Nug{OJ#F!cX>xu@a~w)mXXq_|DY-7r@r+Xz zz^HBQYN*G@6oa%Deknv|0cK^9R&a@5am#|6FUTf>g-Ps`Eg)Pr96ff8B8tKrP%YxD-Yc6_*QKz)@rsBor zpuPk3VvoHE>ZXOJ65G!?4OjMQpgna};5~^${N+kMZ)L%i9$Tu|&5=f(pJCxS+O-9H zh=)*6ZEdb)-o;p{0`!Nr%k^9amfsT%M@7jJPYJZ(Kn|*%SqF7i1Lo=YYbD3ofAk z+i3`q(f8k+|NlGZoo^pVZr824b-Qle>f4=LRZ$7iUALYM`JM3hi9I4>u0ogHk<4kr z>jL?G75Afj62?R~Z0uwu3UR5-CSXPOH_71XZ89VY&oUprkR}Vqt-Jl zo1~MK5e}Xv5wqFB-(8_Q4QNU5kD^`E&fgPn;;>yB)#-8fZo@|h;d#$k13_QK;);j_XLJ&2=r$0~?-w;O!gr`p~+%5KU!Ek8bKjyVFh2SD$;qxAQnwHR0f>Q#&JS zdRZUtRo!i#ndEper!26vuG(&kBrp1&d+o`RvFl2*?DNnd-&>hu4;60rxzF*ie0gzR-J>OAY&17x>ObxYI6-XtKF-9YsnsMq zI=m<&aq06b^E}rq!h~DQJRWIhnn)T?We74QVoQ--MMkfjweY4NpZ9;Th;iE7w(t-4 zjM9_f&0xXk;qLZtnirq6PG7S7=FtY5Gb`s7Tz~fc#MFS0({<1symCP`TvqXF~6WB?sn6vg#Dv5f>ABIR=OX`f^`Ge z*FSh<9vNz3lM~&y`O=4M_6GQY-L=(R&%ezh-cKEFe`7;-+RDwl#t?}MFA8G4XBS_X z<2A?bbc5LPyIROB&Qo4((sXD}wQ@H>)q5yIUrD`CF<}-k>dx=b3|xo~8Zf&G0il?DkW?TUGaZFAwtKiAvv$ zOV%cCX>j^xz0pR zt`=NS-U^jgUcBA%>z&uL3YuP=s%vq_N1Xh)cdUDQ#@~FPq{tsnxeXz>!9U9f6H z*~Hyvvlj+`TX5A=;#Dkf91+LtrJ-MruC92$>EfVs-xBt+IkQrGzAbuv%=+QTL%~7L zYvxKq&qdh>Rh)U=M}VDKx&7Fta)-w;O;tl~p1+*&x-?L*EGd3a!Sb3Virca4(|+B& zdh+fAd72rSX=b~Jmh9S=IrClS(8G}fX^o@zOPyWo`+hteS{63kGZFPqnbLpv;6aa? z`kut{|2V$(!pQn*xN-@ma@p(I@A|>$CV`v~G-eF_VcFPKdz))=n;MtzcTKd}r?!6d zcmsRwpvEJ)Cp>veJR2O|(SrpC<`&JhI5i+s;^P^abt`wONzbCJ1uF&1q&BI$pE!%N z3RgdHcFxY)Mho;h7Ji8p=3L*^;g$MW<5|~|%~hkTRLslldn5drn{usdk4t$qoW^nq z|0Xvir%TAn6N}@+FRyZi&-CAFdSU7*h$+r4GK-rsYjIBOfqvmG!xvahpX&7R>Y#|g zRf)q!O0qIoa;hy8x3`o{Lrw4S=5k*1U1q`g0o@zOMD zVORgwos&vZC!F(qMc=ohYgon)*2J7Aqk^_NXst852}jI%lXj|W@3I*`t-s!MS3YfT z*0ptyUnL}@oJ2SJ`l6`sO8VA=M~)mkn2?;%ta%ku>-gI!lYdzM8a{ZNYQEs`p31S? z7hl@=Z1bTef5p!(#MG2`*}7+@YqGYzb3Su?-Q+_BcWMS(jC&EE!l{{^J#gRgixp$9 zI;`F$4x?{+A^7fw`sJZLw{K5uz58Oo;n3rme^>7u{;;&=ehN4Lb;(|$YQ;zA+jlIs z+Su5fecL3}LghD(*6h5Wl9SP2nCtYS|FYC)k$XoxynXZUd+vQ0($_k}x?sbRh$b}s z-Sj(~Ku+x&c_UYwN94}%NgwoZ`q7)*&^4a#&YeHoQ*+JfEk_WwePN5bW!~G~d5kHi zN?v&va~uv|xt4tJg4M(D*AtndT@_PQJz8hHd!SDH<{y`*r6)Lso*sAlmHnP+lM`(n z(%$>*d(=I0>%D&cSBxnBIX3`L^nN98T)HOmo132FTC?`nwp=R`zYTnx@lZN-M8Yo_ z6)Q8v5p1qs;Yx|kRAMvYYnrx2kbXLLdZ|NnSKG?_PlBIy&A-+X-}m~2TRN|nS=-M{ zpI$#X{i55HV-IKgmHFMjYtws(89%|=Dx%iqwd$qgmBBNenxF2i+CO>98cxDhhhk@O zx7sCJ2jVM`kSEn?6EwS>)cKV&yR-_HabG>1{PNCJONICcF! z)|!nTil7Zu1AlG)rFyL?=b0tP?@2?BWl(Y2tYxz~MQLfYxS-;YXJ>rQ?*2Til~1=+4b;-44ce8Q0IN&gxB2#jRs5 zsXxA~czQ%tHF?pB!TZXqYG6^R#r^n{)SlySKXoar)=F^1HUz8z0@Bv8VnzAtws`7laIdG-||~KQbh( zsqZUn?FP&r=07s8`1$}laah*v^#xZvMl}uDHz(&r!Q{TKM5rJp;M%g*W`QbZsqTHj zOJ0JN4VLkSw|MSb)8l=*Bn&wxI`I5yT10f?4wi|Yt#jSH-aIcE9nU#f0%bAdiN@gL2)YAI&-3eV=_a z=M7Q}5BPog;1fFrU3oj(8GYQd-`r~-ZRfi69x%V>07d=0dqJV26t#^w3{dJ#F66VbuY97&DSm94pPc6j;iJL@w&F;%Al# z?ZwrqV`r{DUHSK669yh0v)JiD(8*T?xgW;WE<5k&6X7vx{n=IbPA$K0_f4-Z8++L; z{;bao={?fsGn1@FIyslDXW#9-KZirs8N-cn+w0n4U%x-E2mepyVzdt)_+9+T z@IsSdC8GBZ?66h9ZHTlV24iI~t)F@YcK9R$=a4Tn90iY$>1ZelR?EkuDn$%TXusGN z$=vAfVDKIqkILl;NX!j#X#F+@&uoN4q)&Xp+G z{REL|xMOkB#ZyLg12i84d^HUxdQyD{K@CNzKkI-S0rkxEohnha3QHqLk>YQ zIN^gKz~c~A3~(N0fn@E5hNZYVnd%&_k;y@JcNMAva&==v7_I;wsF(^TAXo4qL*$SK zQJ`7^bV&v&VJSJ7GDM+45J(L?Whq$^iMUn=1cu@oh=>JshBH{IBM?Zb0}iPiQluy@ zBZpq!niOPf$1oTI<8HtQ{ZYbNsSeY3NFX39<8`nGP>{t~7?V>R+JGQwyO0fe=@kR= zqPTe(DVvvGl^`#}rF-cW%u5W7YiBQ}h{Y7K*oatcpz@_~d?_4XBOG4?j+lsrCQYI`Kx%NqDAF*BG|Y%J%s?ZdDno%2GEikiqXaq{gJ~g{ zqJ^ny*oYRU*usV;V7(Y%Fg@GF0LBzdE(oEB5hG$SOl=B@QaC7ugBszW1{?&4K}E5{ zDRi7d$BoeOHUtBe3{5~mQdXQ2f{r58QG_}pLY;vknW`i`u~krVJJ{HkcKGy5wGP(MsKij|=wq z9`5M@+D#HADb-5g&`wKIVk)gD$(^pJ5rHxZhUhds3K8c{j|>Q+5jc*;q2SV7g{~|H zi{nBAMpTI;;+i-b%au{FOVZJ9s1wa z5t-C*xoVvT)6YGb6fBGo^2)S8O<3T1Wm1tG2R9BdabUF?1NVIWx(FydP-9RjrGjF3 z=;w9_5>FK{)Z>$&7nH&SC{@toLB`aeOprl0C~_~1Xm5v{^CApZDctEv46w?8!EKQ4 z5r6|7L#FX~LWa;AtTYH$xv~=veH$c?wst=^<@7LMkVw%&27?FAX#a-eE0ez@n};*FCl-`uKz4?89h~j_d@RUMDWaHVGfFIPhFq{UTax^_(SdQ zx4@d0T*Eq!7m@2|7K`P^0?R@DVwVn<&~3rPz%tnwiwS~`faojwg*Jsn1s?m{>ZT+7 z*q0XHPM;4q2DLwzIDY=IWJ>#U$rLA}&}2y(L~daY-oCnlPs2gugIF6p8d*agLOurs zVbK?9Dg%rQVz+dL0kThFEEYfmPs!xbPRru3*&wb?XBZcRUFrnXeETY zKgq=ntZBh(Q}QtI01>`GjGay}z7Paw=>&6Qg1|MMVJr~xrV~s+28QVj`}26X3CI9A zpW+F?>(4_!j2he=iR7wlM!M;B=r{ literal 0 HcmV?d00001 diff --git a/2491.pdf b/2491.pdf new file mode 100644 index 0000000000000000000000000000000000000000..94c9b92246edb3d226bda1e2c5f93b741115d0ef GIT binary patch literal 955134 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 z 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

b*hR;e}XJm|+mUs$A7NA|Co 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 lO(LbbH?QsB-$kK9tT?9Ms1}y%YvI z%@_NYbCJUgD*v9v`m(!B>nsDJycT%!VRi&fJOO}cRA^!tE2m8TgJ`NZ;UM!OY7kk}FHajrGH1`VxX{{RviUR%>5~ORMgyZxGB7 z5?68@WhQz-84N&l5*92(QzK!4iZwE4f}Zm!$i~6E`mi)M!Gqo*H6ogifvMLMTvqC` z_gh;tLCNisjc|-R>6vh3tNh?4B!loTCN`DLs zrD8eY_OkmEvYSPlDgmb1zD61t!bWxjS%NYw!qQ5mA* zpfDgz+VXa$>dk3h{{8Nm}+sn&Z*pswR zhJv{%eUc3I?O&mlgt)&mXlFSybU(~Q@Cz51>JMk#<3EI9hXI*;r>P9UaW-mNNq6yK8Fgz3$ovP}T;5QS?A zxE>0|D&V7{_Owsk9_Y@IyCqM`kW>bODYX_d4$)uY2sit2S0&XBJexm*?zE^`$vT=f zfV)Tys$gA-k_WG4gb;cvDX00aV6n1dn<_FD^)KnYMp{Jb)g4X7Fu-RlkG5WYSkuE9 z4QMQhnOS953s(RTB3{EeRf|d3Sdlf`(E;K#(@b#`V<(hdeZZW5-sB9UI=`dQ)_M~a zyqi&Z_)UU2dY9%6R+?j~6EV%AloNI9<;%haEI+OH>pT<-)UW2I+9-cTs4C=RR?6Tk zKU9Z9w^C}LCrB5j&mv=7_?dcXD;giZ?y>cy*sBJ#b8h!kdme;nxh|f`*f*9${av7d zb)K3#INkB*pH48isj3#%XanbGvfklBrkHhM`h7!`V_tT%1IkB==MOaE%r2g<-#($B znzw~7ta%iT38tV!uZK0)$^TW`g3l*1dT%KWr#6F=)69OzA4oPVsMbqq>#wjz1fjtLHWW65`7)*fuVx z+V>1?i}B;0D@foxRXV3D+98Tt=v+7b>@s7)idp=t_%%;y(iA5QRhdWZluyrDC9`#;crd5aHS(VyB^c+XyJi}kka%wXor@!Q~ zvZ}A(XV~2Zr0yodOr$$Gr&w7dB*@!=_QYQ!4WUYnxi4#bgxK@5hrH5X!BHWQcN zP&+TIf4U3-25Bj(xi*z1R7Wcnd!FIZy1|EJ@a4MGOi9kzvzETUf|(wm+Q>3OS}X{l1eetwWPom~`PMiCy1-tiFcue|Cjuoh$s@!h`<)|+{?7FP zhAFiU=5uR7U9Z>0IFx*uCKl2(Jr|k0K8skGWw%OU4Ky3cJv;geX^C5xlOgo@kHg!? z8Gh9)`%4Stook+1!B>Cbx7hnGw?xuYASp&y+1+Y!8aG0G^#N;6yTbV}bYrhron4U* zoJ(BOu3)Vc5l(HraKIRGh19PlQ?pvNRs~y%EZYGZGeQ&p0^gp^OqRx%JG!-Wm8rNP zP?$&<9Em1(h5QSHX-OM{P*&t5s1DxF+iuc1`Jv5B{gnhc;qLYTiIeD}<0vQjgZh=`^0*)k= zZ#*>b>%`HGv(2m_RNK8QQP=2mkkpj0sti{}w@Xd~td;4@dGM!|JO`XhM4eruZH10W zW#LjV?!}F5f>gO3K0w82>BiMhx`ofX)~a_kwVpezI|Vll&)~A|8IUsXsTw~i zJZJgE2{@cudI)X)_!!wFbZ?~6a9KA(owGcyFkd2Oc`MNF?T$N&YG z`>zbfJ-R`i~AKCE4(%(~@hlu$KIaYf*R)-!X2MniJ zwlDpwf%V!<@s2*KP3UUC*HDLw6ZHTVs!*zS^@$>9CEGU`R-Sdzgk8h!4Y;gBLuxg!%> zm1vQFT(AM;2m-*F4Fblu3s&Z<$U0m1l4`y@3PUyaQ`|DSl#B=sOdk3V-}|J@pW=$* zPkTGMLL>-*4iX7uE~8E#Nmq*9yKok!_%dw{NP_Qs5m);$OQ{u-%G)LZc{@?>dW z=3=kRVlS~587LmBnBhxJIi)o&Pkq6d*_unZQb#Q|@0~9@<&#$R2 zzUEKgEEwuq^qd;IN#@pTa-4nSX2|+3gj9Noy0KprO`&!wux(ztRbS`O_O5OxYS5*R zSI3~>h%uw};5M-2mYl$`Sp%`psGjKsGqCHsG@}PxA=y7HSQ$FAN89MXELfCPT6(Kd z#f+@OFEm$}CbtNK2K=ak4wrRXnip&zv$hFgVD2o_rE_p8yrZ@7Qr|hXb!?AX5b-!( zXE~#}i+QTfi(NTjEzDCxzq66%UnHrSd7ykpjJICh9NB@H)worR(MJLj@PPXrv|Sb= zdZFzB*u*tr;zd^xkR&EoLVw|eG?KmTq(1X1pW%e*Ts8l6hCgRIUPQJ~qG-^OsNIsu zL5DiPMrmPxTA(-1r?WpdN#Zn`%*Y3@H{mtxygI8pzg4imCK2nXSV2pXDNBoDu0Ik9 z7ebGdi_0$P#*I!J8l0P=xw*76bG2U4fFM9!7|7$jGi|w2{fuX4*<$-JusL9Yw) zfIZ0EeRVO{UA)IzTSgq1k9z*T$)&{s4yNA4#$deTGXluG1lDAIZ| zEnFSFm>Lu;z?vB)6o|qQ50m4VCJZz|lBIb6WN|)gEo~PmN#Ez?b8C4BRO<11@tZ^I zoPi7$CO*JMe{-(eD{mXcxxP3cBuZo6VX%c6v5ExIIQAVxNDq7xkvM_kcMcN^M}3wf z0N4y+v6;pcqIq)*W)eh%C6b}FZ}-Pzad56s_RrseeEn*Rj2|gwOa>c3TqrnpIR$P& zLE;=0>CH$qL3TuOY~_eL0@MZhT@qbdreJzL&Tw_U2{Y@+8A!hpXl>Nd@q`QjTGAbz z1%id1=7R=6bpj15`w@})O!@d9s-(lh-XU2lOj+`N4?t&nF1;ssR6QVWGe+1+I1Tna zR;qZV$<>XNaVv1?>Rwp53c`9oD9TS}AVWy|$z|UzSoXII=JxG^VYOS{e4O67bqHv3vzpkDW(bo%3Fu5 z(w?NhY+(d2>mF690LxrZWKn%@m)K^4|gJhvstRHRtCmyy6aR*cGJrILCX`Q?NBR>) zRItG;_5L3}?8N@}CCRX}P=8>c#B)U>mOhrAR0r@a^jf`l#mX}k{VZiWY2V1r*F89FG? zLD9{q^U)%fS=FHLlhqEeh2V-YH?8R?qb=`_EXMp4N|-=vMO>f}C^v}nNvs865>|;e zm!Jm4C_WVcwrN4t2%XiIOg#mojZ-0Y?6ATI+W@W?s2q)C>;*uzs)lD&D{Bkx`svh~ zL#fq$F02ygj1t_aI+3rK!d}v4FS8VJ%F0%q^hkybJKJN~<#5jXH3&}5sEbMPsC+0T zTJv(GU@C`P)ULvP!l!BZ5M{-vgdAF+IRU28!in^e;^I2Ms~Uxj`fZ1uV}`EHAX(H? zhFIjLQX}Ab8@uHG;5>I~x~BHx_G9d|Qbs}&7%CUw{iee<>1M`5q+reAlp}t-A($<# zebZre0NyQDEMX!g5;j{jjble|_u_VA&L^IS8POkdV_@ku6 zt)`=Hl!9@X_b;7*MyT?@3)k^L+3{$N3rBRHz@l~Acv#ypSelsJu$97RtnrmYc3 zAMF%A2t)eg*mHcT#J+Q@>rE6GpI&;&7{^Kc{v5UzCeXGj`z{=(<(}KPP$#D`jV%e! zT7J751Mo|nV5ThjD6#sa%8glR%KR*g;-@hTSQ}0ix@jSm7Aq32_U6{~+<87S1Q)JW zWpas(-EW5e6$i6cLJ|7BbGBs}sjrn7nVxzM!4MMLWq1kS>FHu_5r|=*=AGp*GGF#V zemCI9chcGZO<>p*X9R)|U~)p;5Wd8g1OsGUB%eROt71-U5EdLagMHHN?sVm$GGpw| z89qi;sC^7{UH>&OBY38G$0;gTyv&U62y4&~?ngRiA%_%=Jc!E8TFwS(jG* z{^r28wAu1PJu?yy44UQc#iywXe;suWA@~2Jg@4fmFv}quiPta_D!Wyh3SAxnt*sz{ zpt#I3!hBRn8;045K7_qtb8dmlSH!Z9kOxPL`8*LDh7^)vfCBw2z6sY5Y}F$(B&!cO zBbAjdQt~ZIk2P}O!BdBgh93!lN1}U?cXSe<%Q%jrcC!0&l_ULuG=kKsBIW6KSE_l} zWwbKcQOq^wv4eM&xi-;(x#VWSiA_@@sW@^`vz_7D$+Rkw>s_|T)&;sqbLX;~CwAQy zn8+ZcPJ?nC>hp+VJWv+$<5f#rcI`ok9Z{SLpq|ic#rU+wC264;JB3kY##B>vTl!uLi2^ez7btpJxiUoVIOcPBy+(9MRz{UmS_tw_LrNaB6C)U%+R9vECN)~$sI76ySdypOsrcYcaDckcM|A0c1% zkmi-ad0UCqWpdEW%p)W-`R8zPFr4H9E& zYmd$&cPo!r3#I6DLE^=!d`@L!yw*zYsn1%Yo5WWxh~t^!;)STg;Tvu7+mwfl$Ze>>tA06f z{mbveZt#Ic$0KHCJQf*CUr|8-|D3YoK+0C;X5Oe5|Ei6klY|-lAozY@k#N{kP!$1@aKzvo(C;&y(0ux|QuNYFV*DWXJ zsnc^BtYB$CnY?`MnXhV9NhTgvIk+^vl-?43o+FF!QM00dS~8^uG0rI!1zPk-mu;+V zY1P%O3XAtrWYyXzZDD)1sv~${P~lC#C}^KgIJRJlRdwr4x)yCz#Rbt4b0$q+ zj$cx;FhUmZJ(-^1p;x+-giP?zrWt^u(9jS3t|b#I?&Dos^xp2V|Fp`fuj`5Z5k%lO zv@XB^+tjn(H8bv%tjsg&VkB0m-(${1_L$|QAdIbEZQ0r)L{w*Ja)T4LyWM0Ap*IxW zpXp2@UlF2qfmShURLS5x9M^$Cs#^1yf-}RHL5{KaA~PDhpCp8&Ic61L?KI9jS*l5c zqI7BWNYjd_ePKHyL*1j~E3;u4oTHmgWdjJfciexVh%3)M;M9{Bsj+9>A!Y`$3{^A9 z7}Y4#`u<_5)MZXSXrN|m*$_j5aUgE;B7xaLW;C~w*C)4o{-L=_l-7I|wrdsPNA)=# z=B_M{u`&u;1C0fvtGr;H672GTluIcCqVUK1+a0$f+~kIUM%IM@x3(!)g)Gc;I>T4j zj091b_l$;FNT$6_5e~pTuBpzTuvXK8snN%@w+W}Du?iO4aJ4i9fgmbUW_815bv=Oy zQ>U-`aA_8zmBt9sFsRQ6NCv%`67xbrG!_}6m8xY)7q7IWL{k@rvv9HHN>+!5k&E;R zt4t*7{4*Njxo9PW_^rX=`jt1xfuL^uLlpyZnqAD5E zp`5AmGIs^Oa}TI9DJKr?Y9pMjh#kEpMVWZsino=KYg*lJM9^m#hb@`-ifA#*x)1xq@0iIv0Dl$E1=NTh|k&2g$8_&w&t z)0G|{hev@fs3l$#dnO<%5Si{eltcaIgh| zjDceZ4Gok=m({RlW|bDBh=VvgEbv1@S%AklT({@?vmti)=4v0Zc~z#Q|MW@ivQAF^ zelms28jW!8asv5Al8=Wtm6m0);4s_veyK!|v1jqgLQB4}og1{5x3U84mfc!ZHwM5S zj{yB{02%;u=qa1*q5EGfVq_zfK0XB9Vxm|dujGvZ>4bJS(bs`!c>N!q%@`BN)mTr8 zXJdtV!lw9R2cvZ+r${5fM;kLsCs3O>v9_T{IF}iF&yvPdqJ4bWa^HWZXgPK7UEluj zO`>IgjJ~)CQR`mvJ*i2d5;cH#DdhU%JvzDA|6B(G3X#Z??j=!1p@|BzlKe$QYmN4s zeU!#9`8B+topj5Kf)NR-+_8-H6G^!sF~P$o2u5CT%9QCI4*>?#z$bm;K=pL43uNK3 z0KT)AT|1|7R9(pXMno+&WDew>&XY6CVc7XgO~g%C`s7(;K~>N6mwbksrB3&s%;w7# zkkbZhYfiC|AWfK$xoc@r=8DD8DL<8IOs2YoWQHH)O#3+%?FW=7jwyZ0P1WO&r1UEa zh#J%Y#1hMF>)UBO)(prMd#ujVdgndo^&3d1yN~#^(?=o;mF=H`-b^l? z;h*)I-6%raqO+LeX)nKE8+)*gTq9b~C@h{bo>Zya5uNX2@WqiJ^6mJyQ%^pE^kQ&{ zOIuDh8G#YkyYk5d5+>z)Q`oyO(U{e1Xq(E(hZXCe3;xWB9FY6v8}P~zO7>@zJWf5NFq@!a^0)pEq+`-m;+z}+0a?N}opwoxdFZXNNsX&L@B|8@UU>2=% zt)PYLFmHQ~h|4|c^t@~lTsQ&4u6W=%?l*0tpbD<7gt+DrP&z@};VYw+A&&cUDAsrD z5IJ8mzMdKv4ElAXvbU5)!Sm-LyI*(J)VqDdDb`duGqe=J{f?RjOB1-4QZChs48XiG ze?z!K(H@Ts82gmt|5RM<`M{3XisAO_c<^;We&p_WI9#82*(ws*tbQ0KNNA?JvzPgU z4_p40AD~;z1>gXZuE(r!gfT^GR=O28igCfA9GWx1_O|C2KE~`Kk7OZ=5!8PXT)!h(DE4n5=zJ!}U^!m=>U^@Gr9cFG7s_Tdj3xkNY)Tx#f^!mIP35`bh zxOZk$Z%|_`gcgQA+{_2Eu@uDJcjyc;wAB3ECu&&>Vo*tv>*^h=-fDE0N3v?s zixf_wXt)O8#im2ho|Ma4(^!-27v^iNq?E&C9x=M$IQ`;xJCIWs3`w)K4n^ix+$cQp z)t?jG)gqos;NE%1WOsPtV&|5E6<0W@{uQ&tTa>MQZ$d_Z+k6T9ivMx?$-MgB`jean zR_o}YO_dzY%Nvj4+io-hB z=DGC;$dBtG5Vrr-k^L97`cLJ}+{wzA%+XBW$k+(az}Ah%*v^rhR?xv%-^td2jNi!C zz!*>5%F5Z%$>E{-`bPRr`gs4;5(Qd*XD74o`4ycV^=01o{=e$de{o~<|Dk#P%go8?n;O%~={p$Pd{b~N|8Ko9dWL_t@V{-#Kg0jm z;@JPhjIrX;Gyl7GS`oHyaqM4w?Egp{qZL*BCeE1u8&&q-^|5~@{ad=yg5Ubtf4XV^ zZAbno!2j5h|BuIGVW z;F$ivBe(m@N1Warzr{AIbZ=2)lZADsKR9)_dcEUz%{RJMY%aIN@CP656JLaBfZtDI zwIZ6tKA4c#`$=Z*`sYcm1NlM>H1#b!H`y4#H!eswe&1l%;~t8WaGfWHuk`c*p_c^n z@QEUFJj}Ykpt3#)9);$%*7_ocpN-Pp8;Z8|T5s*u#9fVj&@DJTgi6&DFLMyrFO5zk z*uTUkbsj&ICaYME8)dw#-WEjK&n#A83{_RY(|&$l4y#^$J}y0oneLeQ?7rjqd_MHQ zEz`D&97O#bouO6m#`YD5;1}PKd?aw^gTng)JHCFYs z-t&mh<-|r=6LChQ?o+6Oxa$^;YQivWM%)iuFz*nDsY%`5E?lZF;y+fRxx#wVkQHJf zF94??z*H;UEl9L);K|?!#KeP1A{#8^h>ReCDs>iTZ8XGM9GT}SDJJBpW60hF&F?B( zl*YcOub`ehH#?`nV)>1U!BUIK{=`*D9V1GAWD74uB8SMOnwltYY^toFqmHh<=oT+e z2|9hAz7dy{J?L7&fDuK9!S9lol2H_=ItVaj!xV;;^TL4}`3 zs~`n)kfaIHop|m~#tbMvlr3LK^&UI_rjR}J^20Ab8lOgRP`vc0M!1j8IF*w+s17$| z&NS+1+X$Dta-;(9c$E?@W+{HI3`GDeT`ozS*bLT#v^}`&4hh$6=8=c z+g1#!RggEb`2LZ9DaiVxJRSiq6p@NzMrV20lR^np(U7`R=4RRyI$!ktO5+HE%6s&k z+ACV~g;N+*qPZ$q|FNXp#w{MD6038jTyvg%@uqn?4T?GsRhUW=z6#lx2P&ANfp`VAS zmpO~G>u&f@KTj(4ae< zBF+tRx>G;_pb-N>SG6Y%27Uj2rrFN+?l?;;%CuXo)u8c0_okH>;`&x}I zW`&W5R|b=qdxoL2OLfu-1|hRW`Pc)fdZ(+kGZ-S>_h>iOrhV@sZHS>HPRPO zUvb2O8%VuMM%`@H*J%I}w$C6YZABsT!pagwJrkJ=TM=K_jUYL-m)lqe| ztt^z1ApunSB@ileZ1<0}LYDJ{>$I2IEI2j!R&hS}E@A8)GZ!9mi)F;Qq_vqOp%JAw zx)80S_@}D_<%DuXC61SQt)5tjJRG=m$m*H;Xr=!US=(kw6t5wZ1!$il(xC%DU?0v^ zOiLXn#lA7I%}mjmUiDSb)8C*ZeArBI~YZS~Yjj9}&v}0d?G@BaB8{=@r8)w`IQlmi+CWziO0gxR7cxbr;u~0K4`L^~*Ewn<^a;m#Y6s%jqXsz)?JoXh7s-C8g7TC4QOnFJCIdU6^Gk0Ctg>?`dSi60;=u%6A+*j z7S!eZn7N|K1{F^(KNnC{Xlw)g&=K8~^ghsUJi$MMOC2BTTB;oR!7VE!#j3eM+c(^x zMq(?u(-L=XkNa|`CR9+{KHtp*_F3-`=iY23UjV7av9u^J3qK534!I46@$O9_Ea6w< zsmZ|DRFRF6$%bW}a);QfMNDUC&gkhx%$MRJZZJ!ACaESB_|5T&L?N0;6m$5vA%#GLmuy=F=FEerCH z=HFFp`*IX@^JN*j&b}d0h!<%2j=-+l{mBCDAS{NDgtd0MyAzFt>d{h^-@6g#8ght{ z{_Rb*g#vmi@NH;g)HRn^Tflf$nuFXekQ+VHTY@w>fRFBlIYqr{$#fVg$%_Uvt>BB) zW!lfga&6tRu4a6*qInnDKl(QRvV2*!*91qr>sDliUv_&!BQrD9;{qwPaby}9D1hdA z{F&Q~{yxl)2QB*srmlgsExV_arcx!<^Ai$Z$L&o+c+QW-aDEcd3w6(IWW?*`jC`2T z>9}|Y)s_?Zz_@RY#sROl8+w~cF+8D|avxHo7<^mESc)(TX<|^D$Ibog!%o$;s$cch z=|FV&{->9rc=77x=6*R9>8U{Q-)DVkg!)OM!p{IRDJnKe1#XUj`1EHxFZ?75MHryC@fwVBykg-Zndd$^+YBp&1M~weX5Ns3c|ak$ zAdSPzSZjp+^B65ADa3rfDEtEUSpjAUg@TB96YuuAj!%a8?B|KYt#avtk#;6A753#9QhP{TR?BNzy>@OS@h zilZpI6C|6gj4D%4B*pQ6i0=QtZYMdquw(YPRwIFS`}L0K`Oi{+{Vm_1Qu&SjTmOyJ zUr~+F8IaAr(Jw->Q)S0s68zohFmEt05z$K2e?Kdj+CG>y$8`#0db_`aSVhH`Q-hqT z7lC><`gLgiuBbklnZKbn7%V_|LH*1lmmdb}9DfF)wK!34ro$iiA$SPoH8Zz&#KRn6 zg}s4x-o;~y8B4w$%)q2i5|xBr&UoOL@k1>z!VBGyo+JUx6A5Fk5C;=cw}5wu)bJ(-`}bm||b&`R&4$^aRq8W-#x> zAl@GJ(OyNoKMg;f0-MD>Ngy=((D&MBu2IvF4QB0b5;Yi46T_GWnGg4c_Y!M@!S2>cBv9{FH^I1Lx4$TwFCrcpmr{1#LOqkFk)FaL`^9cT#D@7fbqMf4-T6Bqim*AeRU*Mu8 zc2x6FcwK#{%sVkrS;A-EOsX}6#n%D}SN&vS>X)5pNPRc}5X~bgyHS=eYmgDym}yA| zSBnE3qm*gi3ufvK{()tcj4xP$U!oClLv{(qd&vj-g~#vJx1TV^twMcS57b}MtvG)d(11y2UM!gE1%YUh9Qf{dak zrXM`Vwgb+raXqLL90iCB>Jcm03`ge%h@;gu!y>gi+S|`3!Dl$P{*ID?7K}3?uw*RI z6Kfylofy2mrt$ge2eHlwfkHU|UH7T3Sh$))+WiV=&Pg zZ-;BRVA_~Da>s*JX#7f}S}@Tnz_ju~P@SiD0B@TBMOiGby|io&=3=e%E`eFkE|K1m zFxPq8q1H7q;;W<9KQbgKo|%CObgL%RPfrGZ?0@Up(0$A#@Wd!sN5PW>X> zr@AWaG$ga#77UEt*7K+~!I&x$~9Os@_xL8%QHA;K0MD0q!xP)C&9(2Q6>7BH<2$b8E(s zd;Ekl$98{+ZzergMVrDC_Kjko1-tTeyMn>Fy3zhO7>olHOdB7}Ue~FHT$`C zEnQ&Hb25W$nBzKya&>Gv7KUlY1CHX`rS<|NPy)YXaU3N}AT&G47v?Azu1~QO&J>OA z56yH{b197ZnvaR8v)R(BOp_T!me?}I4_oebZ56-drU?&ai6!>o3xh6fD?l3(^v=8! z!{1;Z4M`lvGJ5f?Gy|K(lqH(j_yu1XHtP74+&z2a`aw{$~ z<1PcCS!N8GWw*~YY8KK#?SFJCz(PlfVLawkAI_FAB11>oU`WzlzVN6u)$sF-z`CmP za(g5edc66g%!Hxo^5s?;e@T3SR?_meLsqqhA^f3SMEEQ6wkK1Ea>bDVh z&pp#ypzMrtz1EhwCnP!=wq7!1*E0wYF7byGP2B-lc8VuV;ucRHahO2IND}N%J;4P_ zY-svsPk7w@_vo+}%&AW9uWu&R8D8&p2%(ymGP};_#pZMDm7Aib{m3FZ$5rJLV_s(F zdWb$EY{c!rz4YYNAv11rJJvU%B!KDD?ohWoCh?N(d*(;87)*KU9~q3&t$i?CHlra8 zETS2ho|@wwOra!zM3JIO+BXxn2M*?_VLtsL+@=4}eb+qXjz6jAj(28xAn;;mN%6_V zDc(1&{CqQ|)5ob#M(3KFsa4Ddy89)eKC80$9gOK}`U&^5+kW2Sn~4`AR{Lt&iLs`g7-`x( zZOzn@i9_OQ+EgMSRiaq3S<_C~ns#EWX@6*@8>CA`(@u;v?O?2F1FyDDOAc+LY4c5% zaw-8l`ziGaThr#jd0kCA7;D-*_m+MNB;Pu(rpnszW0mX)5GHs5jA zBVr$HSG_dYt&#Ls8@l-dPH}^2I21stvy16nR^K%QBC~MO4^P% z;r8J3R@hu(lATyZ@UmfX=@uCbDxE3DXGBC+SKj-!D*7~4f)_@|`iaN7t4f$%%SvaCZGO+67!{XnuvAW&!V^<@A_i_Y-ioc& zY*qY{1KtQ-Vi@GqWN4lB(PRz=2b(l!{sj5vx#djEgH1oFQ)M(t*s>@!N?>Y=d2Sc% zLuYa0t$j1|RtJuH>MmToYZ`5Vd#zXH-oIx{>lSdc{=p7CSf>s>p-dN3UbZV(^8nuCSTfzo5R2iVmH|8cD*#&PL|I(4iL#n;fc|tHbI5f*jT4N11BxEa3~U z%=D<;ie5bGz~?CKJfp>krJ3j$CoT4zA#M5b1vka-IL1;e47+f&LP>j48LSfa0z#JE z%DgW|f^Bes*d{A!cW$+EK6o^#!7yG^KAi#?V7}*4WFYG+6l<4@Bd^&=4)dY7sLXRjR8*BYdHwi9Gd}Ut#cdv@quV zrI#)(c)ZQ$D!;m^3PX(0z9*_GA#JefMNh2+t0K#XuIbB zd4^TE6x-?DOwh3nsG-Wm&UQ`&oMfuv4F{|ZOf9CsNl``cB*`+ML!o407S0=Z#JsETP zrqrTbpWgH)R9K~2vBJ|1)-?+sQyTF|UbbAz8C%t08&v5q?_hWiz4HeyL54ns9IIiC zvOg`2Fs%Xiy#jL(b(vbSKE1*5btW>dcMjiK&b$*tQX6`CJ)`}~#8=4BSpUJ4Mju~& zFeZSTp}O=cFh4E|8=4Qtdgt|3uMuOJb<+4cVK8oFUnn!&ZqFR33y}bfsHHkWOi?y= zz9SDm89hH_YZfbK_fZg!%xpe7*`JS%0?}y6MnODfgpF>r zihQ80Vt5gxJ`Y1)Ds>Afd0(g|6$l8rPmVx+(&oRcA$ zM$||_RLVbdM}K^D^7HR9(!(4lxfwIk)z^c`2Bgt(0S|HLUcc z&a5*U4uVsO4^O;v`zntr~{(T|XGB)@20rX!RV7o11@x z3$yKuxq^}NS%iyOTfV2s-kI?t=As6!tB0aj(IP&IU(c~!tqFAW*2SqiImWSQQ91$9 z$c#3DXWCW>DIkRLs6Ka*h}L77XMrcIhKdO`i%W_3MQ{}YF4I5FydJ5)A|QV6IK#Lv ztspUugMCMbnDRh96S&>_nH@jo2rOIdG!meBVZE@X<@F;`n!I86UnCDISUV-J+r~Y4 zO%;%`hn9wNdaJx@PxcNzdv(IIXA_+4*%B#z!z*91H>{iW>;<;$b-T4s_JWY?b-gz{ zd$FFUkDJ?-(uYRSvajiLe759-r_Uxh>GM;I{6$Ny`9s@BE9K8| z}Dfpi>1ipmU?a##^1@A=Q z1Vse!rANJI%eoe+;g>A)m=bja))O0?a!X~ri+^EnKPKKm3=`u1Fsfx;P-uPLub{<# zNO8L#jExS@+Oo^m_vP)piXCf=euUn8M zq<5laZR6=Uv^1tHS@j5|9bO4*F~0r^W~hia*<;eu$ctV#(#F}>JmAqsS>O6KtLQ{nDFM z-cZ10+QWf7JI&m>Nn!F)ke;pxn0IOtd5A7NiyuX|2W!z?l-#Ic&4(_kA)8gwZ>7*~8Ss`&oBT9Pwtde=+v9rnA^i1t10GEu=BPJ$0c z1>c~y6^ifXI!Ez-<%Z(fUS?7}%g`TyE8$SQGp_h(?o`lNlrC%Ad}ZYk6|2{fyu*-u zFfQ=+Jy!V-#w8z&NFEns&w@_ZqDj7+{(Qv1Lt-Y$2R6wEA(F@U)>EtGaj}|Ny5tdq z6@^J2M^S5%d_5Xb$p<#c8*wDx(2)#lm6SXz&K+yF732EsbE~*=L4> zZ4Lgy8Et0I3|1wvwWuSD;?$AHZSC;KK3>zVb&? zT2OmJ2Jwizj2Y#F*>*$d%3Uu`D<8%)-7$I|b+4>HPOM_|U9-#-I@2HIR9d$9~V^MoZ#Tb7`Wkw!SLFhw@aV0wU=Lz-P zu)I!RJ&nM+eMOlktPd$FWKE*Kq=M0>6o0e!iqeo(vrkH#shsGE$5$6GcI;27V7BES ze^VnVYnbJk2^4N`XBt7OQ+rAse4bL7>9(``$W<{zA93KGHY5$)bm$q0z6%WL8EOA0 z^G4VHs~Xf9Q88DEo919vtbL%wwj-{$!}$_v``s?YhdUvOnkb1lFpNUSYf6N8U&QRP zsbXynw3Zhnz1G1zCAt_6amy)exk3V`Jt?7$>zTm(F^=sxD97M(W*_Gew|5R1YieFU zlI01kCJZyZGEN1XRUC%gs|)(t+J0r?E6Aj-|6q!_NqqIea1%S*2Sb(jHLb0f(#GGqU6UwyGAr`l=(LDI2bpwFO)&aJsxYd_NGY!xoI|BC5UC+PSgC&Q^fN7INpL@ zJmBQU`gI+$Z#)w5lW~VG6FvL0zECGpo#_20JboMk&G6*HtA}A+sR`bAzy)4%tH1s_ z%zUJmkQvZHG3KtumoWH>D2#dkh>I;6zJk5;cW_lI9xEM!KU*5BF^s9|QvCQiIK}D= zb~ESKnPK4Sd-j(vVel1E81w!Smz?W@F>GDvSrRLlIe8|??de~PX)9iMKQewKkSWhN zUJ2f?mN0$rX5h-J39dZD!3ceI`@$LaZ^ldaR?)-Bk_gc8OM`0H0F9d4ter4c9K}A! z`;xpY+(;&niMak;OmDo`f<0R{Wv^s=Rm}5(k<*9~1$Tqut=J}@ZXXDNEDUy3nPFO9 z%G5PQmR(w2#ZL9j)Pya4w(h`h`Owh`uvJGhOGKZk##rUGY1Mo1c2V5^;9T`YSyciDyng( z5prf+6%=TQ(Y^dc)4nYSKbdoWoT*_29hS;@EXh)b`I}oR)*n4vDwqk;A4>%ug~Cz~ zK9-sou~eSH&QmRO9HVki<=5@HMr^w;)l?masopzNQ^fl6rxR{E>7T3*~xZ<0P)I8E@?hWFKR<@L|!jsR%^OrUkfXM zD{spv$is0wBq8++Wvr#;4x?OF#(TWvfg;8{_jIG&g-_wMqs}mP776V9fxAUUPR2>v zz?$EI>liUIE8UR+*7|Od*?7vpr(Y=3&0`7Azn!OoGs+s*V_GsHoW}&KEox6QkG9h{ z-X8R#=*;eu-DBTO?3`EC8y}emlUq45zr6gI%mcS{b`b+yic5tRqt^;<66?6O2N9BP%MMT4w3C2-*+-A1WJOj59nrGtYYMyz2yP2sxeb|r4!^z&U zYhD%@d?cM)WYb$;k*(C2$Omj9zZnyG?vTb2dB*ukQRHdGC{g8U<_sNl2&AZdz^3w> zF_i}{r(@<3(`7+LUd&k6ik#OG`Hi>8<03VcDDs;zk>^!s=%C%bK}xEQi+hFVo=eHW zCh{Nost=Z3hS>%e{#?xJYMV1~h-3$!a=h@wjzhlgr|OpE9@#yT+ysQ zLicL#SMd-V)a%Y5iee}HFJ0$v3?(`;-9(VBhe}))ONTu##p?5E(am<3lvQgq@egKS zueVobz=P`J)l_(8`T*`G-K}|)mf1=1ew#n^2|kjAeP>T;C16C_;&zxRr$Dr?qKVVE zW5{$oU5>PS1#-3O3vBboPxZJ?%Y;MM zSExv9Gj;HgSH>?gYTMe(J22Q|sgKq;r9e(C@fC?(S1EulSWVMn;+Q$D@6MTJdA78s zTTaLsE$Sn!lE!1N$X02QHBZD-+6udww!L;f&u4%7Ag@ccw{AIZPG>BrZvDM=tx_1*c(mUvq4RxX&V(ntJeK-Iz0U z4_i;)ftdPv{Hyq-R;3kIP-XOsCAW9X#<$oP&a`|-)fr?%!fP*0_kAQA5;76(t24xD z=*ev058jGl4DUxh^Bw3@wl#i+W7-DoO!=$;?rWYM42Lr|V^-J>$IAO29FpR>e1&?q zE;*!3PKa^U$go#%9Pj3gB{FxAb1c#Kx#uN7X={8dP;9eIpMv9aH)XaJ*da+ixs~@l zUJ^I-S5?;x8E$jJAc8T`nfJwH>G_4Roewh~UDG>bhjueX51~uT;pm*$jQ6kr&HB<6 z6meqvAWOX@F)bUqWJCYB9lN=C9pNv|SByWS>HRgo96$J5>F!;T9VCQl2hmnM&9@(Up#4r73XEMXN}mhA^A%`c3^hN-$b-)6KWPh&~iAmnh+kd z&|F(G=!ya%O2Mpy-7ICI6`D}r%tGB4Y~ao0K(7}0Lv8j23!n4#u~P2p#^8Fg23^xQ#btIu0W zpPYxNj`v%1wveblNmZhLcZRL5&qWlj5rF*<;B+c7CwFzIBh{$-VT{ zX&PH}&yvQ*dYk33l@*+f6zc=RZKwMy`Ta-P%v(LEiK{_{;94R}F=bF=vCVbAH~qb$ zBI?mLsEReC_9zJ)lq11Wu{Afn6V44nY+>*M+HUC&*1&e7#fE zS0sHb&RkZdtep*nF?RJ+ zg>?)oOk(d$)pv>!UUBJjHo2Amkm|PwL2=8ZzxhL*NT*S(C>pit(A#tt$zJx zE|o0k@61bCyLm8A=p71bPu1+50ZTJl)hW(E1SuWB%YrP~%Om{Bsz{dlC-oXuus_j( zK|;6j5*g4h$jBQ>`b7#=MDH2Qv7^K{NvMqF1V8WlG# z<5%Wbq&t5zXJ?#W5vF#{Iv)(o?FDK6U#R<27R^3Oij0{22><0xybqB@BH!VgZ^l2O zIS8RitD95*tml%rz*rE;lyWf$Sq%~g>~%s?r9z@ZKZ?`<)9qwkG0@YllZ_j1i8CfR z7<*_-^T`B>3yeq{Eg3=LU}>+H#DR%DtK3%nW)c^$y**>19qQL_=90MfSn<$`{Btp- ziuVIES(7Uy*^40yDzHlUF1dB0c*GUZu4yA?PZ!SGx&+2LgAdE3nX^@*eK|?493~I- zwlnxEQN6IMX5N9}9!tI{C3I3awX6}7r&rq;ckP~iWJKrfW=~Hce{r*PH6e`^A!InMv{#eH!P21(|H7H3H~a9pwk1U} z7>z8rDQ(GNDw?TxV6>f)xeV6U>AhvrhIfuI%uLRIz5=*X1SiLZe(<7ihkc<;)-!yE zh0=sNB4^~b@k^$~B}0p^fR$38InTC$F{Pr})~VDPzZup_9s7-GPrDeD0Q{Aib13dL zo!b+m(7a?^>}ClW;-WAg!1tbPH3_(eLD?TqYZ|t5cUu92JRG_rYnuVQ#1W3yo<9!5 zAiuxD?x~mESn(+R#$>&yC zG`G|R#-wgDl#(u%J@Q~ELdQ^r+6U*A&hJZRFZtYt0>`Fv91G?q-iP1@Q@&uocHT61 zn(o5xrm(fJ+wo#_`v9Y%I$?WoWe%R-@X@EWsC^6&kC;t3qwm<)twz|yA z>2*8Mo$gH8vkLm|(tl;nSN%^b>;EuGTb=OL2ScSD;?Ckil5od94Bbb z$RwY(;R%W?+9_F{Ep|VO|M_6YbzJ4|@0Ua`%fu+j#FK=4!d?gQ8sz>c?V2WBqK@Sl zpyLT#L?j(}b1G5evOzs3RcQj5&${N&7ZgnmMnKOPSexu_Ji|%sL`vU?Upzwt}L#I*UP172?B;HYywKc&qQ- zVAo)lNDgL4Iyq&KRwM-);>`CI`ZdE}oZ(fUneHTQ>DkK(dWEQ2vzJr3&6F&CIrSUq zHqTy8*q3gZXD=U+aA(LKUU0ZrJ$p2PvS!)4cjB3)Gp^Y&LiS(*tFvd1`Vej(HG4Tt zZmU-IxB+W9q>n`UXf>pdzVH;u9tr(KQbeiyW9MwkkQ02)xe_hTi;=jQPBs&_W zaiXRA`~fS@D{iWPpYpL`n>RkcVFs@Oh+#k$^K=Z$XVA|2&eQLP(kmln4J=bq76?f~ znd(C>C+KE{;@=_2@)pe-BX1ak6Zk5Q(~7h?zJ_?k-B5aEq^yC>+V7q&-#k4*yj`DO zF5tG#Ve$_IKPtX|x*VV(yx~vJmv{E_m&>0Y-v9jg4n_O$^N&A$_-m8j?RG2&JribhGPd|M8a81W?z0$1y@cYj{$Yz#KYC+XYvyoRICfObewd5SCB4 zPoz+xv1#zU6+vf?D6_cF5wMX$Gg$Z2J6G6PJ;*X6?nD#~UdKKFb^bkRYqXLxj8w9< zAYSpjjO5!0+ojtKt|VC~ZWiiPJp$yhuUHEe;7Y`TSx}O^t`Tz3jo@bXh(_Fw{4-a| znPeUP=YVDqI5s4Xu(5KIWlIF1TrEor$wt2JVQHVkIUCTcwEKd8L(pGk_}TR6fv6;^TqEh=zls^4G{TU^I}cVDvL@Olyl) zOGHB7)Mv^ubUBBfcc_PZN{r3mLivP5N*ot8kp$b2ih=&ux%3jrl|8#b+lH#LWOs?m z`KTLA5*IyU^#JYE!kL&=AZ^1IW$yE3AvRRmzHdV?>{@A!yF@G^H@|MEFwBcD!jZk~ zyt0iX`b_WfHIMxP;a3`QWPft1KBMJSQ}l3iE>BKdxusJs@o^vn#duJ@(`oT5X^S$V zr^pr$I@R)8?4Pgvs-5>vq31+)4sy!gr)lim=1$LT?EDO@JKBg*vaMYBHIAlPo=gIP zr32(!N;vRzn;TIR3`|XMQT0M%X>4TO#>UnJ16{YV@iliVM%ZXzBV#k{5pSH`#zxw0 zY^=?2(Kf-r+mzlw+yojpUHX`Cky%orT5xRJ3dN~Y#)jhZLK}rIs4i_JuDNk` zmed6pcwAB*#x^F`<63az@&ym8lEvm;BpTh^_}mK2QZYA1_j1%U&cNv??vU@fvpVe( zXq|&IUiU~X1;*^29?fLrcE%BI>`rGC={;gQ|48tR1MEcc&hQMK;^)<7E62MrWmMhF z`Br^%b`Cgcl#%E;9f9fTFay;GDAwjq_Kf51bEA8vq{a6E7Qu`0w*!5-r>T9ckGELA zjXTb?^8L?qdL{o>1KNL%35z;hz>6QBjQ$4L>>Nl8WS|om&gUx*xV%4sC)sTu=x`lP9 zU`>2u>l87Y_&NiL;7iQ%rz*;WN&ZxYd@yOWL)7!ZXYPm&9YAz8-O)q!)j_v#jWC5R z$VA~rnB0B4%t1I5ZgP zB*xpol?N4!R_Tu4j>c=xmaZ#<&rB!ruCLs_TryaxRvw(LjD>=Zdq%}i9XZt$>SYw7 zRAnR3V~^0t36gmZO3(q%uxO^@=yYmYdYM*MBTNy-(Wjd4`4ZJN>VQi_hz}WIb=-v( z7vyQrmo79qaN0-4|3b13vrdbAIXH#B3kr7-eISbq@l6?2d2sb4l z0!geGU?ZJw8zE+|&i8WQsH>n-7aF`S3nli>zq#@|75*Bj;)p?J4>v;0vbIaS&|FEf zP~7bN)gtIbYaVN70`x>Im<1)t>l$gdxr|g{1xF)nM|Wwt0xA$cvm`zXDM=925Y`nS z^^_}mAm%+ujUyRhew1|jh@{$#$T1k=Bl7JG9n%lf{M1v|AhaS3NwsLWjyM%oSdyky zfcTwPGVwj*7LC$DB6u7zyC;m%rju^K$;ZWf)0u7*az4A9G^@4F{6aNx)D0#{841PF z3Jb+9I*}o0t+T?DxzCq{*wA1#=-Uj|hzpWLbe9H8LMo}cAr^>ypnB;-2442dxs5a` ziOw>s?Aow1myBY(mz?1Gsitt?lU+sH5G+b69da#6C-!1&g72pkBFR9k8oX^`m8jNs zisQBY6-}sKfwbs`DZRC3{MOn|aINkP2dul%NaQ$L8A;A;?kq>MJd*?h&jl!rUfYlmNf$&=07_Zepd97}o$FN7dv0kei?X|k`9>Ya^1OxL? zdIR+ljNBJ+R_I0PV{)&}l3w}+N8DEF!kjW{;Sd4`YDmUP7O+y5<-_Pr)3snALQV4; z+o;fv$l*qY3m#S(fex)QETpy(qE(f}-!@A08r0miK#Hw}n@=MfEtZ`ZDb0Zx83tyg zJV$Dzyhd&eIB6myJ96>@JyJpfKL#k)+Rl)S!eJtm< zsIt|_m75quC}s{@&T}|DQthRll|30dH9;uW>Ofgt^~k5qr8;beVkzd42@C_w92B~)!@B@5Q}c4-M+{r#8k zDoK(g2Z8r~MZO>{v@70IW<8g#%l!W^fP;XXsJ1#(cuGPDfy<#!7k}q>3AL@4OE4hU za|PjN4&WBynci;+qR)WjL=BS90-(9mg5Z;oE$`X*lfQ{NSVWK)L;Rwam)+;Xa5Cd0 zdb}O-0zbAlj@>jV0uW*&bRU7pFH%iNZ|lK}8U{K3TY{-mWDEA1F9^yn`r6?13 z)T2Ph{>`T_M<`W;7$qcHbiTRR`B@)C8#Q*mD>lBdMq}H{?sR85?|NrwdOtOxm{D=Z zJ??y|@Z&Op9t4p?S2Bewdt75;L{u5c`-uR30<= zc;ExC=^Jr&ab|NA^q9~8x&(uBEoz0I@jAkyAJ zQS&KRX=IGl5H?57eF(LWME27wIwd@n zoe9~zQ=yzjxzJ8#2i`G*^ykEf0t1SSsKU@FF+jWAK#CBV2Q{X}!-_4@qE6jOjv6uA zF3ODRkx`>VNYO-&9HqdH9>6b`gIel|AV~~9Go*?wP~`ulAWW&AQ(iQ=$DBEC(SgcM z5Qs{RrXQ6z)!P3x;3HS6S3;Ia0kX_2EKfU_Z`Do=N$CJybSTrlel_suy2$rBrthcH#DCT-stK~s1jT1GP>{p8uM$U<`ky{Nj`(5UJOnsl*t)`pJP0^zU% z6~xs?(B7#L?fni~VY`B^QC%t8Vz!FFYXgcy6zxv+fCa6qp1x?Gi_jc|5g|x~^Nb+W zW(3z@NUrE?XXx7JGR;rDbv=Y;gdt>$9`_&#g(VikpYyyGE_syKvARhUKx$jkLnc`&aQ`CSckAf6-F%(OS5|CAFARm^$dw&Bz^BeTs&Y%B5FjT|LOjY$Yz6iOObVvf;nCz+*MiSj{XJ zNeto%RIA@|hAWcU6}fEQfy(9`nCt-g-FfW%E}^#datQ|HdalS}SEMj_W(1b_E6`Vs z>{Szawa8t=3)epR8`7?evYSwLO@!TKVW%h2yU8^GVX-x%PDR+ z!;M35J+-qn@!Nc)w*ht&o{}clIP5;uHk8>e$q6Mkp+i=3qPo|oa^rPR!cAGNev;bQ zCfvr(%5AJH-3Tj<@<_ktQER-C8PV~ReB)W?iC_=}T!3hHc9L*oCk@9ih&YC>;vB)! zN;+<=B;*(dB{x=*a$^N8H&zmJ0%ycY&W)Ay+*nD_33NrrFi1KMZ_soMqo@nGDm<_4 z8G~RkOR8oZuDGr0AalwzlN=$4J3W%gEjzGkF^h-kHVv1@X)dsV?HtT&W2g-#(W z58GZ&nV&LK);{S>Bh32AmwiYa=^st~W;ocBG2W9NBGT@CD$js2U_Fi2Qq~jT6v<1m4*xQ?R@*u|q zR(Wv;CD%(DEe`mo;HECmtD(kq%SgzP`l@>iL`O9_&3$yjtidi7d@MDwggqOJ&f^aw zxF_p)iXDVvDTmfmHWr*G1P4u>%1MamoxzsO6!dkD!iJX`g)?;U-e1-$u4YY|oPyEz zBT`sm0GhJAhUY*8kN%Z;B5Q+)x*5_dIS}_{y9QYOa?N48dOeQi#g(&0j~-yiFvKin zBf-g6kRfL^y5q`kMR5Cb3<#(ntt$WP2apL<)E;nPCJ=( zR{i1fZMRhc6~#Bh(L;^g5>tj1mNy)}>x1RZk1-GGQa3DH(JiiS!TDymV{lF(cdQ=Z zhq)hif^8a=tcZ586ZqklZIs=$H6(}|SWmIJ!EPJWa;(5;6NxfJseChJVLvVuWj2)N zVs#f{qAKSw6RK?eLRRqA(RFRBCH7%y$$l6PX3Xy0?XsD55f&|vYkCaH@Bjnvhmg`} zmu<0$+r%ydB|s&;?KKgo`vix%Ot4LT@*e_+Mzu)YtZgJY&*QSs?WPVAuej<_9b-Q3 zqoZ>NHo&&n=i_-4sJ$uQJbmwn6iEw{%Z-WrJHW2Nks5D@DW!rswC4|AcTwHRaJq)d za!9rkPb;#Fpj3siW07)HKYqA}c3x*Uobsw5TQ^vED=Ev`OY|&RlJu=ex*yW2>7^a3 zp(vVkBvMfuPr>{#^P6@rUXR2&Hx^%bR+hdp8-uvei=UT6;m_47mJWXqy2LBwbK57R zy!tQXQB0lVXIaRhRcwx$4*sh>MNtPmq<8A&nYYeganvNbRyTHw42bRyP zFYKhf1zc2H_djem)>W}ZQBg-Z(}9RiclRLZba#)4o!BTQ24bRwg^dNah$4z&f{9{a zWBd=peV*su`+MH^|NFe}d|=|7y}x^}z4l&vt#xM3m+)JU8c}j6`B{Cm`j5&RDb&cN z6(dHC8?{8Uf$vDhk`)>bhKR>MWD`R^_=0uOokt_oWPhKY1E!($q z=QZ-<@dbu`nnQVe4_uFBe$5Jf{sqfVBJJKcz2A(hkb=I^OhCghDISaFU_Nd?cO_Hye za_o7$d@z0DYy*1T+^pmCdW3G!jkeJv)9n$XcpqlJ;tm^9XW!hma_N`It0V#R#KjY> z%15{c6!h=;ajX;4aHMMDl;K;KSFpzYA-dXc;&8*z9gB-^y5SFVGt+NPDBm$?`mmXW zeNXDAcP!ma|E145R5n@W8wLDo__Aq|TAG(#u%IXI&8}_hNZr(etcYUG()ZrGS$UJ- zsZQYb!_1VYpQhSQdlyTgzlx6~1HaOf#A$ODudX?G?)nze8s+`u=tYT3zpkKUd=N|W z8W#Up-#(&K9p>n)!3O$vp@uXBUeQT#Wk%QIlRK@lE$^Rm@@76#)O?ap55?GP7S?eb zZS=#RZ<-Ppc`5NSYVxV}BMtbdiT-x$s*UwbUa9`L*8RI+(lC0)HmqaPj`@GghP7+{ zy#4-(-uu(;O|R*js?FT&TJ`dD!{)N5yO*vUQu8%%`b}vCB6I%C7=2ek$0f`#o6=zkk@?cb*V@j4iKC9lp1|q1N&8)2+d)f39ljIQk27Vk7b6 zG2mDJ=|SkPXWRTvLT_fZ88hO^^sBSAs_$7Nf`F|B>Ne)&vh9UEMjgxQpFZi-t1m5{ zG&_Ir(Lwv=``o_wQ>r$1?3vd4yfwyep0lINgC5{FFKi=A3m@+qwB-7dtC1aQC8P`Q zC*&cXKG?Kx;mae*w@(e53z>5}ZQn*&DDu{$^Ts^#>C##L`DbP2K|S+X1w@brZGUrSx%}|v{Ut$0!ROC2@L9(m{|jRdTYK7F4(wl#ptsqN8B$Ty;k3mv^6o?ai2b#`n&VS zF;BLnrwA;Zq$hj&y*aMDGb)#`*LUB1{9Q_OckfS<&d)}n&aQ7(wgp((T1A@Ed~1ttz0ODMe=Ht-X5qrlW7Z>YoZi+! zelS(>nY833=k5EXhOcn3r|$NWVN*NrNi1Q)2Ye3h$(dyl{ya*D+~|_nH?@63{Al|9 zydfwf`KWr@g#2f*H(qP2bmQAjVSMu$Q@^~9@$LUK<#pY(5<+U3^cT6h>i5Ea`}R+2 zy9|HraN6_%KW3mlZEZc$!%)vZzjL%=@W2%D{o)IlJ!JOP0)Fe5$GOjc9`2fJK16EfN;%O+8yj8PBf60W z?fA)o79=h^8Zw8M*?HsO6`dD%UPB!6V!zJJsBG8g>aC*OUBZcd3a50b*~VKNd!cLolg<5C;c=#N0dL;Z zsP?0V%<~VM&?aUaN6|26_MqO`v2AB|*oGXjdYxyFb@SbV5!(hwTX>Ga-qIBO;C9DC_3qtdZAW@fZ))Pn>^@uS+Ak>3fk+U~uHd-6UtwKD$D z+HRs_Sws6{Rpgsd!7)T>q#Oi z`)us7DKEBI)N@a-t8M2_$@MqGk*d+Gj%BX0!DXI3_l+BdU3>?!pgsKJddU+eB?!9I z9)Mp7>>Y|tV<3(Xh7Z?X*}g#1$b$C!+rmEzOxYh~Z)!}tKh2wvn|G;{`{eN34{m*K zCUM94p4oT!^Q(r$KJ0$P3c1p;wGd=Mn=-Osq@{WCjok!q(po!bH=4XL zKeWE?;rZn=4&n)xnJxU_oA$&=E@=Wpzb@I-sXcnmpC6}`Mc zJWM$A4|&|^`t84aEQuX@?7@Ri1>8BYe|+HYT+N0)q?C8m#&0zyuIO-ifRq%R-TimF z4{vupt?xL%`MEeWmQu5RWYL{noZbtPZ}e&|?KbZaF7;b-d(uw+Dnjd;tQ-2x=P+83 z2CcY}2JQUWSR<-xqw?Op0%yuGLXQlP22C{K{nl2I1-A(=$cRu^k_ra5b241=7-UbU8$ z9tXX=O?L$tv&%MQ%zs$Wl6nlj`aYnm`ZX?o|B|#r)Pw8yfGlV&B*y(m5A=WgrD0c2 z`G`nnMCP;yPkPLM;`zK%^&IuEO=33edu7?a%<)CmbFVJ~!cm?`;>+^k<7Mp798#3QL zNS>H`^YopWi?3&lVqELhW%lmNkKIX|7kfDk%lrRPBMz>*Eoru0Aa3ZgWVl3J{R%J6 zY}X}+xh--=-?Ljy4QG07_72){y;_D45-Uts44;Z6&Urod^cY>y0yb|r`tB)R^Ah8;aeBo`EE2+hqN+n7ez9 z2T9N%o$6L5Pd!dHd&H;3y#Qe5rt4_0sA?f5?bB0=laNP;#aOoDcBb0Z0w|0YO+_U*&MIYX|B5$qi+)}{(3l%cHA zX|spl9U{(-9R2a>tVf@wd_SDmAlP!JZW6t4_tdM9UCxr->3Y}0br+!93}PC3v5qV? z9B7&R-pyW>gh|+_w)8pD{Yq8)dh302pOZ&xll==Xu7kG`=3vXerN{1?7t`ivdXI*y zcOPWWS>LslvE%J+yam3^3%;_Sh_@#vWH$TSW+=4Tu~_{`$HpcAD)4A=(?LO}dA)|o{|H93wRV5Ea{d+dyZ!0f8I`p@MAgtO zD~4C!t+GTVQTkY%*^}okZrfgUaK3u%0^#dUv=r*nLC>DN-|)DQxbkhntDNjC*|)9p zE6N%MeSW^#&)n`N$pX-f6K zs;VK+pFE$`J4RQ#y4%jFo43Id7}^QyeA3FI!4^G}H>{Pgq~)TIlEj_b?JVw@u9jud z!!7*FCBcppAL4x-)pI20B5L%jG6v=mo*|z09J46}dS%4SlZ1A&fw|^=z0U61?+lD% z+WBezPj5dhxOp$`@QJZ#+N$gy)Q_-btM<)Yt=25)oI&eUp3>hDKXCHNlZ4MLYCaxP z=4@RNw~9Tw7oX-lI{3Pv zhkB=bVA{Ei_K#vk&sUK~%pBaq}&~!(vYv_Q})uc9(_8&%28b{0< z);{Con~F(wqcVS`v_72qkZ~jSd$h8oWMVC3$K(2#gBOF}PkJBSTgRz9+avX^z_lk= z)a;LS8EeuraL^OJJ>6RvA1eH_cE0IS@Tp<_f%`AF65!&C9WbRwgp$m6ms$CT0{$H_ zXYVb!b?9^InLbI*U%2%Hay(zZ{gIbG;k){#^w@!?N8hYN`PnaDgESFT#x5JpFM3-zYP~g zWhJENTy6g4KrPmm@p+Y|%Y(6JSM+KVu|>Uh?9am-UHv|D@%dF2+eBv02DN`uY0I*q zj|bY`O3}J?`NfAgch^n+aLz0l7ZG?~-SLU_tVgr`@OtCAUWF5H_UfMKenM`;8b-N^ z-rak4@}uqTW4k83cMcd>JtcDO`}!o!_DO=5Q=o`}&Yv?Ow_6XX=mR*uAJ|Yl#@i6$LVKZ0E^FGMyx~4DqgqeRP~yFlb^X-YWhMD zb1N$bSGVAs<`#dH1(&Qf?mb$$;%KRVckfwo1>au|%#(;Cy6-vNXF>gpbBKrqS9dn! zZm4TJ4Odz2ZFd-I3>G04+_+t^SajCujw%^lPGmW+J z6BIp+eu~y=OTVrYX7z^`k9kpjAKyi@;TUg9rvahVuk%Zzic*-y>^9N8N};Zy4{%Ed zw5+Kg>ys{i`tBg@SfBW#iQEo-W&P5>G@L%OsVFe~%h+D4>knOJP1LHG^^e;%+~Ax} z$?H`bo$46#*7g(js`lH2++hRveoP*r84zfsesPpHEHDT!&4FOK@#}rcOyK`1*6_9I(BTR}DEQUljfR z{Wk3@Y!XssJ3hY?wi?w7o%#9I({a!*^CkV}f4uX&PEbzTsJHn@hk*Oz7 z{{A)!_|DyUx9g@eAEsY@?>%*T2grUlf-sKJzAt|me>Qrsgw}V+Gc&Stzub-i&5Mc6 zSEVM1{9VOue?HpUu2*Jl+H3rQZ-3yNMelvJ^GCi~y=>zhb>_`CJNf&iIiccdSCU)4 z?m+4G7KQ2NT{?Zn$Z2ZK^8CuxTW-IP7<#F_)BJP?bm+~9Grgy`_`QC^^dY;4{o*@x zq`}?i-(9>SdP&p}Td4oUhI7iou|uPMMViYGGDy3{E7S**ZrGFdamz7m?8ys2S*!AowC&%5q=w#ocgBOhW8ka>sxU}lU^I>gatHi0O z!znr2kGsEhj!57 zR&=0&dF=OW-#Cak!kk!PsAzYcH-YK9m2}oWFH zSi!!l7mgPT=cGItJK;#q=I_GZ=@GUb6$dL*ch(d(41O$#?1uDjlHehy4TIy^~Q#UEynUyqn6H^)p5s)?@7#rX{zEyE1N66 z{D=;%#}YP!A%D`I>|J%Or_U{DXSsT6@HEcXDLE4uWgPb7s=A1**0&3{-nS;zdEn{y zV;yDX$p^A?Lx)?=@1L7M%Ns%V9+Qs}k}p?WmwdkN*_$eO$?Y;f`g%Hk!N+@n(kbl? zy&^s}U_Ha&{f3is(CX_7x4)g$FD4lHQ7u?YyJorQH7^X&rkk^Dg%^sJ>|Sw1Thj*( z8TRd2^Iv20#w!r7a<(2iad_^h6Pb#P&do!=hxa+9?Z7tt(XV&ysna#ej~yZ(D2Jm~ zaN6`>F#KiLdvbnl>^9)mrkQ&emq*TNO~i~^N*WLe&xly(o=@&vz8%-5*1oHztZew< z%3*_)3FE(^o=i_4_w!J@q*(O89>-?WCftPD>ypttUfL+l$gS75R$QOB+$wIJ^MOw=e?AUZB(EKnRzI)ff-ns4T=12Pk!;eqjO(h0;29DHqn()Ka zYjVT6Ew>>`$9+>s==k8hgFFJ3=r+b!7xv;T%+p!jLV=M#M&CZ{!zoM!RJRj8}0-AG_ z+;2M$}Sv?jDS)wJw}J zdVCdaog!ZjCAB|7PmVgVO9$TF=h#%HXal9S*uFq6eG93N7j4|{y3y(B!{O^yhU2$S zwDQ0!8B4wFvWudt*(YyRwZ8QF)2g_M_1KA?N^7=Nu?8}+1p`OCJSm-1ylSnQSoRi``sG2v-Cakcw>_p^ zqWthdA6KlN3z1~8_eZYWT0ccU>u7Id4kY5{@#YKd#wP`DyL0-kXEAfA4RL?93rgcsz#cxLG^v zaCUNL**+fipa$7a!Rfw9=1;yFx%l7<|EK(3uM=cRlBq`+D)857(+KN*2d|HqE^a-j z3cOwQkjbe?H3oP6cuI$33S`=W*S=eOIqHn&ixP3KtCl_80{)13XPcB|bDP0s+m{bn z2sF&x+tbn}Vw7#LwfUn8;heP9yg+OD;SrCLVe>rl8*4sPxQ|PaMW?mfK8_M#1D}(s zd#ZnbOCK`(N=o7%1$kBa32yeZSSKY%#mv=i^hA{_x-PfQg%=yk#t2%DyyuSje%9kB zP0PI}N!ht3bmb&}X9PQ=*D=+F*Y*3z1oEVn_s5?4wz|%Ad->4wGk&FzEA>5Ah6E39 zPRMh=srub72L4sR9nFEO(wc5>G z7bZa~T2*oWUD>`1TbDDh=q6LHH+y3tj_#6Sh=@Bsb6LyL=`U1O>hpoad!BYXx$kb)I*j_{=co z+NDz~7M|am)#>H9&y^rs-2Nyj z^7PGJn7^v-$qfU@f%a=73H++5c*}5o=*!s_;>%mV?Hnojjruuv_x$IHKcaesWgLnVk20&A6?jlE=eFZ7`lhriqTVbYS+5(~i!T9h z)s=OWz3@z#3Ri8vcKI0(vb0S^>b2gOg!pUaUm*RjSBEZKbQLH@1a7!jpH8b!I(yD> zI%ocmJ#~F|cGx%c_PTC89=z(a{9%2wu8FEsXJWB8SLQ`69xUj0E4mKtJG3*a$2^b& zO*{zo?f&XTeIjpVl|>owgA@4XOT7kMid!i=`zd|LaKY~JglExfj}KZldR|2%3EG&+ zAGY|)cFim!=`CAkeS3J&JBrsD{!{_keqv_*OUlO8osP*1S5oD`)a75;%laHsF5Y^m z@NBWy*x|_io)Zy;%=Eni@9ePK>gLzG-?&qws4wYm7?*YG^2?;>8K0JWy?H-xwChsmxkkfxf3l;a z|8m)eJ;@7e_HU{?+fuS-blm4wwp!X=)*0`Mq36sj!u5mR{Cw)#_vAv+`+%l)KvDpT z>3Sb|{Nl>kuh!-Vc62}0v!LhZ#8WHB#-mnDcsq1fJHI|NV&J;T9j+c;)kPTm%8L^C zvPV_&x!?G2I}hI(F9aUM{tU54#P{6|rIgY@>Ir|%p}3#FW?V?jbw(`RKCpH4*sSy2qBT5v3IH$3|1SO`f{*OH_>@Iev@TQnT#CopWVGr3R7%2_Bu9IH!tw zbzfXw>#pr?6(RB;FbA%mXeqhaY}@&?C8puuvMfcP7Y&>$fpKr`eKlduk1}SngFD`_ zx(y!NGiz|I^hozNl`Bu=C+3A|&^k}))%#&KkePQ-Q3Ic(poI__Pt)w<*8FPwdLAUV z@co%7=L&!9n;Ct7<#itIOHTvt=6YeBao@vbh};XgbT%dU_;==d!l>Eo_+_ezgVIvX5Y3dyCaWQt8zQl&iq6e{3iHq zcO;{{e6NUe^C9zyDv?Yl^dH!7)8a4>+QXsWlM2q3voj02XZR2IZcqCN@}TWGXgi(> zX}c_*P(gb6- zohA2fX!>vdD-l||vixI%`}UZ^3H_0^WKYHEij2MszQgthx{%&KIiRJV?v!@+VqE%& zInk1_b4{+w-JNd3X6KZwhe)R|+eR&W)o!&VaAKYt4VU?%COloQ|Uq zYwfFFk|KXbR3@e^e)3#&O!DH}%8O4b#?i)8lk-}v{VqS*vX`f(?;$#OX2+wx`TFf^ z7ZIMmIyLNm`2$an!La&CgoRt@KJSz{ zE!nVb_|AsSd_xJU`owbV(fTOk<6=p2AqiQZ`h3ckf!qD^PVH*E4$ZU{fDVOwp07zA$)0V$7p-m3iaq z%a=1>y==I2y_CFsQeN`K2DDeD8PZe4eu-aM#!|vGud+V9pguP>@7nXGq21*V9NfsF zO4AyW<;~$woYcKJ)AFiDzk4DYHaV)#hS(T|Dyn~(5`T2Z%9XcXE-u*dCCaq1M^}Vh znYk;IBZVAU`qq5IHUK0-dwZk*qUzAAj+Ehy#iOt9IWlWe&Zctc0{&z7)EKJH) ze!SP%NO@u(UIb>uk7K=?h|pT6Qkatvw+C)R6mm*Zw?gVZrnSo^9Ue-k7%we3xwZ2m zg1GMy9v$XED_YaSv#Mfy)wD~u7Ke@-if?@PMt)y4_G&0uk?VguBIS25 z`N!L7zkl=*-9NSY`G)^Ngf{j~?b7&hXl<`d`?bRA=KULb>WY4){C?g@gogVk5gPB5 zyNL*G(U$4(8RwtCV7qI~qdUJa@K9>{*#QF-^B)`gHP>d2bv%B0E#mQnGdI6q>jHT` zeDY(?lZ@bff!%)e zajw&nXIe1eb?LEr^><=_nmRk38^Qaz;22$-h|mszL}>A=s%8(nIB`RCyfcQ>duP$k zHpe=QI{$XT(GMdwzZgwA65pqyDz5duQ@CDt5uY6kpc0zj^D>wk5B2?U+@OeEb_yw=*R$>Unv| zYDMc0(cG(7Yp##H;N7}w!3h1G{?Bd~PfT4s<4GprO}k6VFAq25ezA1um3j1Qw>z}K zrbqE9S^eXyz8(AR>ZdF^dgDFy`sQ=j29sW1ulRv#Z=auVZ{v-mLsReFU$J3m;?-}= z)nkLV4ZSv{&#M3QU8At{?5KrjZ{K!*lfhOsbIty?f?NA?SHfX(!65VAX>p9$JBz#6 zBwf1WQh$B8fLnjLwr10_80P!fgoOT2N@U-P#<$2hP_FuUh`w})+VphD>rET3WK@05 z*r0CFqkUwbv74qv?CB)Banu=Ys_&Lzk+gzd9%oXs5H+0-!AdK;ue^Ky#`NJ^4DD@q zmJYcQ=_s#LUR8eUtzZ8Ga)&z*3bPWw`q%9`+O~Ymsi8CPPI=wA z+fU%ZE5)*iN%*%_C9Lt#l#g%9eUS(5U*G;2_pCaT_@HdSRuzXy>WEvGeLDS9!>|bV zFXjbq<)WQ^)?Cy+7&ap6q7Iob7k6TPpNiss-_}jb%k>NmW`A4Xf13Hppo?u0N2nW$ zdYH!#C5jTapIfozbH5ccJ};lz`~C3QRfalOZ^8H$PgnlFnPii9p9$@Hzk63wQu*uO z{tvl3KTdjn2mC$WQ(eXw_nM8Ej~z>FtIpQNC9`flxmWS*H{s&5K6do}*~0ahBR4Hm z`*A_OPaOY6+|c%TA1zz>aKg=RzP>+qEbR2W>qC1Kt4mg&(D%B5*>9G-7LC6&G;>^G z;_RurVoxsY_hL!>`Hp*MW`5KdroeY+`gxwI+vcV`@!2m{wtT_KzbGwa*YKtc?Mf^@ z$ZOU=ws>9A*u3AL3b{GxoN-Gy&3V+#+gd-EwfE`gXD4IRSg#JXE}T65s2*3iee;yr zpKIOgH~j1brV^ zBgEwn?s2=T*`l*y)>_iC20HKY%HzfP;Z8<1(dTc$N{(=3(L z&iY>ovylI!T0%l$|5q+FHs>s~>zpqe&UEiMi}WOWCvCwxkr>h{ZAdGcr#8-3@Z`?v zwWGF3)u)#qZjqinX1r>~ofCaZQ&JB-FjTFaSkwK2Aa@o0MMG`BVWXHYsvQHbT;7!; zkS4~wEyQ$Dtxp@Vwc1mDj?M4Y9c%1h-F=uoqV%<(WamBf*6e;W;DrQzs8smEEI_eRU$GZjR*Tn1=?}%O2ZHKE~!(rr8!vO`=3} zIPkhKrtjx972G{X#KrE=Ji%=N1RPZ#)ddM1_lZ%;REYY+jVdZnv0?o+v~tbPOCfI!fnKTD5+= z%NzxZMaLv`h<9mpaRL(MPdM#k#qgb`w3K(SoEEWoY4RweLH$~FA)h?sMW3=0%8k<(C z>|W2fn3xVxeSEqvF8|aevbIi9pRJ{Ds6X9{A@;u$li<(2|rM zZ2}w$MU8=C#~`307&;Dti9?_jf2r71=wJ2Nc8yUN{7XID7&t}*!^AcIq5iD*mqP!l zCo*`gDx1=1af7M?`_QN>yu}m#(Dcb-3@hKEbh)*SOJ!V)KPReBN_JTf)h(Z3%2M^V2~<1r+_Q0V^@Y&!Ihat5tYZ}23*|61_RWB({=w1O0d z2>{LnAn|y<(5zqx^mqbZPsR)J1Uep10x*2MTTC_hG*nzjNyYi;B(|50$0PY>3kMH@ z;=>OD9xUJZAmfKe2k>L@{Km@QgO4Ww5G0;trkGW5h6PU*g%9I(fC^6sPwM$(0$xle z=*1L*-b^L%L^lFd&J5XOr;$#(zEukK~c@ST2dc7EuU%5jo&j zQ3Gx@Er8Yi``=Hd5&UWn2@jQnEy$?`v4A45htG!r|6TB}mHwCS0W2seUk?gRRO9_* zL6gXMx&Y5-3qaAxcx7068op6FKDkNc@H3x+_tUB1u+WHjGbkQ-PERNOvs@D(A5R3O z1;<5AC-UtquqY91fP~lciQqACL_i=L8&nos0Ct5!7tjNI37JZUlZ|RQS^MhPVrhgNP?gaMr@8w0Mjp_nEIQ)+df zjSi>N>vk#8KDz*qr-S0tNd!JPUHEb`5u6aJ#<4Y!NdzKU$QF|+VgbiM*DC^g1vwZ7 zw5w=-3Y#WC3OPiIgkeBp`S~j+Q~z2Q*@{Umq5kVNy`2 zMvYlR5hJipZpa_hJHmia2rpz{2+bb0NQ~kMEE>5~;!w#bFs%$Guqdn=yHe_Ksi-io z3jTi+KMV*VSr}5O1!YuN9bUCff!3LwT(d)|v^kkprxP9YxSS9lpv2?-;55M#$&FKt zgvDbNC=%8H5jX%k!UEUof*6N64Csb>tx{Dm=u^Nk><~v~mny7G34?*QQN%a^B|)L^ z0NP>``XFX196;Fv5(I!JxyabkclAfEA$I)0*(EztnMf7A&H zj4mHUqSf+w5QhTl0vrU75Av6yeu6Lz7;?w}JXsG%030gQ`)8N@#Bd!vldn<%Rue@` zvcnBZnuBKZVogw+$fXh?Q5u$BDPc*eT!K_CBl`*Rrln_4+9*;P*kQ{5!&3mj`gmBp z1W2B$d^gP$1~i-01ha-Fwn!xw4qpHZNYrL5DJT>$=q{l^Om^b+Ziie#qmvwB z71HUHI|C3NVBuj*fXBku;RI|r)2$Ck;7sqIJ#2gz{`i+C6M)i!W5vX4r8)>)A_onh zm~9PL#Cid&lLT0{fQ!4Q=6iPms&SP?{1~1Br(z&e` zrQ8`51z8ZO4P{kIP)?{8@X=jPDwhs-A|wcwQ*J{_Ek1@*#8ZjvE}ah|M1%p=c$3qm zW{OEF6=)S)I*Sbjv%!p7CMk$hu+3U;Q0bwe%xtXO>yWcdQk51UGg(0r(=8^e2wt6r z;K#wl7OYQa;e-Jp>L3D3*1Ba93{IqF2{2lm*$9){4IY;ULqdnhMuC?m6>{h*tJ}zS za727hC?G*IAR?RD7m}c~UX9QTu+1u;lNttez_k`D(ns~`Tm&W3gONd11{#gyGm>0E z6kbf{$tW@h1e|{0xQZZ10HYAo0I`T;bkV^DWpug!@)QRA&oMawk=ej?s;60Opa!Kp z08b$?{#!*kKm+h>2cQNOr()^>v{B)fC**aIPfesaH*ShY5*rzOEhR3*h?Ntfnx$F z8lth60?@!T76+H#ze@T^5*kHphuT6Klo_Uy;N(zafZAlff(VE{B;bR$vtwXPNUF^! zRS=m1n%rRI;S^Gu3N*+#Q3wDnq#(dD5-LoxsgsFfZk0w&;U95kgsATYL z4F9gDKL^n%)~YxXm`I4jdoeyChubKZh3|4eYymON8S=RG8aUHwmUA)g5K)gqlPIzf z3latt>ntQJn#a(A3&Mdi!iZ3+%a5S=S-Oxx1$PI9A*U)p_6F1}supinavXXD#%ETl zEqH{>=t2knx@^OM|7|J%~9~% zHY{8zb3z;t872sWs>BKo1E#i1p%B1C^q|#fj3XrQ2YpnL8|~%7EZ&FDB7HEJx441`6VK^x^6+#qX$?;AX_(GQu*a*JbEfIwQ zSvZPT?F07-zz=ST;FjqE_m}_WF$>qCfH@h&=) z%{Q6=gvO1xGaw2E2I;gS&`c~!hm%1_fCEnhBr1vw3=TpT0H#CoAZEM{CjrHQ7=2+t zt_+X>;QHo+8@DtdQP^=X7nWz0qM$CZ3(kZXq(P(CZZmlRzCx-6?U-I?0^L2()F^01 zrv#j@BCm#tbtywmOBm2e;e_N;PDt%11SDEDo5l6f@kYDT3t`$t|4Y&THAGE-{~yNg zUjY9c_b}l9Mj_x{j~44h0;GCx~qnnH6pUYzBu7%{0PPA(n#!L+PMsz-aK|XkIG8NAaq-QhLb46{zT; zCf|lgW#dEYfI!PffRNYo^TH}A-~eXVc~=_8;8hZ;>ZD-lSS5&MSKGS>7mju8fwQ^_)_0uJ%|btI~k7cfyI zQW(Gv`n?)D){8b#RAgI-q!YlIQj{5QHjr&js97Vls{jp;uh*z0VmS~pVJ!l*uW4Vl zL+l6}j3=gJoLZQKC-O4r5H{H*P@@cVZol^22mogxM9+vb26HOW6eI@hOxZw$C2m1w3Sn&BH>|*B+QGF3r^26V9e5-e27QXzO~mRBgz3$ZXF1PX^66)20qp?A}L zHku!&BZdJzpo9i3fJHGNDh!d!6BEFd4I?=X9+edaMGM6Op9+paYbY9_02@N<7!H}n zKn+O{Bo)0+2P)h-=zwnZ3;g^>?W(!P>DlKVpCLJkH}+mT4+Gfh6^;g zBJiM{2eDhhO^gqEy8zbT=yKqBYy{}>`x-4dRYws+G-M4`03*@;bcK+q*W>tL)B;Ad zeiD~Qv+&^tj}&H-+QMUK!jYwH9T#O#L2*1XONw&K{c@ty@1eq|befZ@=W)GEJLrGV z5kZ?;N|K5Y8VKDAhMIn}0VOt>eJBCU;J~>gC~p`Lq2S@M7O@=$Zbr-y*69&wAzqg$ zM4)ro?ts@O#Ch;;c8I4$u=Pr}LQLU7l?J3wYQ!1^P^QxkfdO<@(56HyNb)cs9AZb? zs4A(1Wej-@EEU8I5E!&8srP%~p;dYJo#l zLbXq5GT>iK{*uAEZkBx{_D- zEz$5iCN!Akff-B?64cq`&e;NR2+a`WQEfsm(`iGqpdnKL;^brb;M9de9RU`^E`Xxd zfDxjFFr7Ly2`V+~0Rhe5uC z9FLbf&1@aO)FEi#4F8X#@1g-A5@^Q2T`i;ocQpw3-mbtl#sDsN7_c$SK$*O}pcPkVsWJ*E6hm6c`P;<5!~GbRy!PxARt3{CW)sJV8I1#3)n1fZ_vr2 znQ7QCAYe1Y+(DVuNpN7CIPi-IcAVHGSsk1(-tMY{Rnv8#sn$E(Sn5KrgUKWSR|( z#B^A2l0pp#(0`@~0}>ZN^I5bGaChVdsVEvuh;i{jE5u{L0}{{z1sdD%6M#^oi$c?Y z5mQqeVL-4U9|Rn5G#}#woE9*bg2n&Y2A&5rwt>aNz&40Vj??0B+H6vc*F_ilR1Alk zED{F!A-*ew(@MN__MdB64CR2C1cl7#6lisFMPsJO$|Mpw4uwO*_K}T7KE}-iths1)e5C&ZD0Hje~Jl81&Q#4H}f~FAyV>(Xb2sQQv0pWoe6$pT8D(xpW zmHsbcDrF%IN+u_OCM4)U5GY}h9U3Sd99V&r=>ftG`-vbF7VjW=0my%#5CEvzuvYwp z|7Zmq9vkTVV!+o%t%Ly^O}@xu0D^88j;mJLa1@=y=LBFbv_lQWi3~E62nvybYtZO| zfdSZ`86$`aRHBV3MPpG)3MzoLpiwAhlf_n95imeZ@p3pgE)>FW1ZWHzgG7c(s8Wem z3{DNa+d*aeB)p&j7Q*^HYOGu8b!t@v2ivSc5#1h}8ZBcmWf~FCwN)ac(}G}I;F`nm*x;}=83(N$qLk~H zQnw8BNzg2fOyhFk{8l}O&QjTQWQdKVmXY;Revn5dqD*qV8cbyIO&QSQ{DuQ$!FShH6tOGx#tVV%$OtN>%F&c|R?2u*nUtm^30Vp>#Oe@BEM5g#Wh5fRSQ}O(Ab=4f zMdG#TEP$QkLn)0=E{2cR^JGH6iwWu=fR}}1NNgN9hV*9=gCVi{zG?d<86>3BdlE@V@ScM&g0uSyqIE>|)SlI4=Vs(Q_e4FsL;7f;O0s z&tr!WI%^2Wgg3dwc8J^qZX^r^9Euik95A!PMN$y>S|OBy3VOg)D^UmMTPQL+RN zg~Nw>ybKC>F;i_;OL|7?Erou>>ZhzA@ z>Q!oaEQy)L;`8WE(BTI!>adi`Am1bMVhCW?5g`XRPOBQQ@k-?}EE1oU{<68oz$$UYWE{IYcq6KMeJX`GY;+1-; z4ZQXM&N8CX0|bIDa4)9&g`kBdlZ;L>7?NS_E;|AMFaGGTR!Km@`S&6XE9EZ>mj-~@ zemnv0{=&ngE+rLl^N`Xef*;6Vf$wD2fE8>D8owPRe4igd!8!ZxNW) zT7#MuaPWNr9$RlGOB5&+u?Y|bhnpc@@ahPI=QK-#;8g$*PD(_$%}^Rw1ygCkOK&VA zO&=gK{7NC4$uuFk4yKF5!DB(Um=V%~0SXwv!C^GCO%v{+jH&c+7|$9-I|v@d=F*5lbQn z8qIbs(=G%lAXN~h4%O5{h)N@e*+NXOO-W*Dlop+g6VSk|KBinE@Nji}s$1g5hqzP% z#7p%NEj&0@A{0q5A}j)9lXz4z0UUHm(MFElBy7rxScx(T-NRF&VT%95-do2-)pdWv zDguItf|L?clHvq2bV$b#Lk%4R%uquQU7~bJ3JM0@NP~ccAPs^b9ny_73WCp3uj`KA z{XB1c-ap^lk09=|&)WN}v-jF-t?zdYf*6FRr<%MM;Mys`c=0+)XpjNmZrNEV;#`Eh z1wnd(y5@S0mS{I?Cwn(2UeH3_+#dK-{|} zaK%v%g;m4i0PhDQh4$39vzGy|OSrX*o)uQeMP3K6^&q&Wo~ApmJ^(^`$Y>(~!}hOw z{4MbBqej*njn&syH&Av#BeXPx^(^J}1u<|1gbNa^4Pc2X^3otLgf_1|;Hhc?2&RxL z0INvJ{Cmr9fr=m{C!_$NSz)=a#8d2P`4x@aA+i;}mTovW_1HgI0xcg{(+LYid{(x$ zvR(=H~u5Q;c+EhoV7llz|;0SAyS&c)Kh zUO~Xx)=f$GPnrcHk8rfq2JEC9kOz@-fMa>}VD7eHeJucovO*!W&{`k}T2&Pbb--K6 zq5;Egt0D*ZD((n%H-4NT(iv*UFXUaSh0K2I;XsPMq9NetcumTtX zPj@9bHz$-H#L-C}hlc|m62d?q3Xoj@Dgyjh&RhlzL@0no7ewhpTr^eeWq@Q1(%Q?x z`mb0IiG^AzdI8{!8cImO6DtTtOPg!SI%AzNju>aG9a0Z3s12AjYhmcGh}s4sEX^w< zV}^tJnzWV}M+PxvmGVfSx=`6>xg7fP?j0pt&wcRaMAN znHORpfKpIXv$nv(b*wNjH&2kOinRqw7o(%51_o)X83=hm)g7P$x_Bp9q`8bb5P~|} z;?R!Xiso*B(Q$Cr{u6*(pbWJCFRh3^2rdg8CHAr)TOn#jd)7Hd6>;&*qmg)xPn%)Q}6;)?o z=5{CmK|x!2DJd)3>7WcWwcWL>JyEJKJQ|GA!vQCoxtE0!%FQ137YPcjD=39Cu+;$Z z8#toX0Mpi{Vtb#+C1bp?>EyFOkI z41ww@cv#utp?GCE8%uKqEl)e7nhwU++SbVmV4K11 z9kiXWx~@>XfxfbeE?Nzxt1soH=_n-UYHlHiQNseRuYo2^T0;S4pbQW-;0gk^a6KVG z4~&7i7q6?ilcS)5I#gd**iG0?;4g|1+5_q>qb6smFK>%T9ih$t1Unj4l8-P&(P|Lsa1%9s< z0N4Lp{ND@Z&kX<5X8zN9%G-g>y_Fqxz=CLLWofK{o|=j>uw)!D!j>>SYYfU(Sy@=u z4X3LIlYy(q{5hAkRKd!QiYPQf9%X=4*Y*G_IHTpA0fP_bRe<^)0q8{{8M3dqs|A(pP)I|p9il+hFx z0w^{(kcKUg+VWOLS|YJ%TkM}@1JYID6}FSoc2M?|0itt#WjPD9k|Rn^(cA)OuL2+w z|05o82Z8?3n18d1|FC_3Q-J>v%yBk<2+Y6P=6^Am|FEV1jpF?OfsJly@el5|lbZ|f zH`(6O0))X~>@f~_SAZ@K`HT5&Y4JA|8tvqSvjM0%0EHgp-}*P{`oG`)tAYP&;J+I9uLl0Bf&XgY|1TQ&XCWfS0jNIo0Ll!n z{cj5^1^-d&_;+O^GvrtOqo#z!HQ-jD4DuR8=pTJ#93Ak#d>CdZ_*b7lC6P#=o(hCS zy8st}dw*4GYJxN!@jz)BGZ-knw6sA>J9--ax!d6!};qyx_7GTZlTl# z3wx5|KH0jyQ+_O_#d7|QEyCU`T6vE>taxHmm*wN3U?F&bqa}vY6m88~_14sH@8#K9 z*J)qmb)KWq3E9Bi#Gj|j*DC1;UlO*L5}lW(lYg>UlDb{EBq;v*xRaDTRtq$Qm)jd_}SLsZ=%X?QbmGkk(5x z7WTOgVre$;d0mZZAN!Iifb6N==n9E%da%bl0P25sXN_vPLyS zvt0Q^vbf@>+}xW4=H2dMp87NU(UGk@Ypz3b8S&bW($~&!yL(pMSbJ2gC4K{=6;SX$HgR+TzbhTJiDHt>@+Bih->PTqqHy zFI#dgF(_6HH8m3->mxd)*4p59IXx)pxk^l#Tx{2L!R#`+izT=ciqiNl$h(OJGsrJ7s!#O8t8 zY^8Txf`*oKJ3_1d`xZ`YbOuu$$`aaw>FPgzM9Z))_=PHZtBP3eT+X4la0G z=%Z7abh6cI=r$W=Sam^@813??6#VjLkCX~hcfJ_IhGqfE`!bvNJ}d$^Q6!- zkz^`@IexiLpSovHH%B|q&qIvt#094XE{#fB4l5NKW=&P|g-@`B4Lv;Mi9o85-sw!8 za9tqw@HHHz=6gu$F`!LC*^#IJx}poD0FyjeB6-5h)6qC|m3EmtD@ncUVk^m(_=B;- z>uuTu60w~1FP=lig+~(8MoU7s2eb@;*G`vOa@HLV2d`b$y4{*|*{V--r%l z*&e%RPEofaD}-vfvSLavoCQrj_#TfMurv!)c|Nu9{-c;I#5;O^DcWyEYrHV5*X1ix z07hCccA{NoTeZu*b}=!ww(iZy*FmUwUX28w;}ywpkI%GzkL}^b-B$ZX<}cmzIJzFC z=)0|JtdxMtuV(W-th~vbul$fBQ1QuR!tf!D=3enbeOy+x8qpoup_m$D4N@OV-pd6| zUnVvhC+o}0EZd8EZ%G@I6s7xbM)pR6UufnX`yIb^mya<@@mdhI3Qml8($siuxaq|% zu}x)*7DKD;1|=WpF|q!=l_*Q6Wuy1O_j4LQ?45SM?Yak4Pi-$WPHSwv;Eaff zaE2ASh)iu?^3w=0tz_0E_UMkek8W=EsVNhWm9L$(nGtV(x2OO1wy^PP80H())hgPg zeV5Xk$^l1mMQ8A4-_ZWXbq?M28N96D=2YkOXMgezO^wI9&nISr^2Qzzic>m?tEz!) zN>)fr1il?vyLZ@mG%lZWgp?G&B2=SzlWRe>=3q0(_-0OjoQI$?Z_jN}gq~mAMRDkIk_3Js!$4pi?f8;5dg$Xy+5%mAy`6zSV%~7lPQ8ms2r}?<& z%fVX9gDXo{4^%i5A3VxaKRanYq%yY^pQYg%={_uhfa(Hhn znn~~+yH?>kdT-D8YJQJ}c$8)wD2o>LiC=HMGmBATs$@FeK{Y(l`*WL7&{CQE#!d`f zR+&v*c+3To8V}wQV%w?3s?=JL_qeG#GV1A!_YtURi-VY0bKG(gi!jT*S2h$&_C>6p ze%T`>f^nLUnn#j`hx8T&j!V7g(~EnIminrq_ro~3-trzY)2Fy(I}Pta2GY$EZ+-QR zbZxNWpP9b;<#}m}*WFeDtR5TDwTm&{^)!Of;)3~>iSdsayxf}EMG6?D7%Mva%9#e@ z5FhA~-!QZ99BYZQ#0F*cSSYp-6prNc?hQJd^9N4bcDWt541UtJ=)P&%u0_u(1ruc) zgM+W}F1|qe&vg)ESceWf=SNn`)yKR0iYNWW^b3DV;g>CuighEjsY$4V z(b=L(BAHv%Y^Ts{K6(2`p|R^5pAXmfKAabn6x4aoB!&7-$E@#7^B2C92&k?TV~X(N z(%w79WLwC>x^yTnlILZGlfM_zp+E+AmahM74w6^x;3P4RADFw~i2cGuZ-J1u`9hdf>tIab@cx z@klOBX}Iv~*mW(Bb4#w2luIv}-tPM@PTok-4sa&QW^NbK4DUleGmq(pnyVDKE3nzT zc0KqWo5>X%wVpUf_=vzYO5G)#k@><5r1;^+4kh~91XGvS>lUi=#|q|K{Z6;d*Okc@ z!$_CzCF7{s{7o+MMu(7bh$OHj)H4os;`vMOSf5X_QBS^5K`BDU0#N$}d7OghiFl;RB4cw=|-r zLu?*idgnuR!e~~Y75he3fWNFqgMQsBXi@Lyt8E?t!0rh2f0d#B`b%Tl%7-6xGE2Q@ z(Mm;^vrkYuIkjeNvFf(zM>IR$RU8@uSPQG~8=TDk;e1KFR1&_N>pu-1h-@*KeKSHw z-Ad=IjZ3Ee`0D35NsSs6vv9RZc#i_zdpBjx<@JlN45Q0fU%p{94K%fV@~}?Y=%Kzu zt9$T@@7>-DxLlJtA`>RDwBl$82ZD(8u(fx+=h^XxtanlRccGEz36zfCf}PY^1e$#g zojgniruagsxy;^WYlPE>@V|40rAZOXj?MVWk7S%%9wAIDm{+e+R%Z>G3M9_H{1R%+ zeVfwcqLs%w<>wI)&Ia1vS6b@N&xE=h0GEhUD{$IfG0)>~0AV$_K^yuc;=KI*uEHFr zyDE0qczJS6=WZTx(dIOjx6-YngShVo30u}avLsz6yF>eAOxBIi9934{w0A@^*xLi&y|Te{I{E%KaO>Zgnuzn-@{pl)8zdW18d^#6shj^Jy*GyKz{*D#&?o zI#2yG_A{E{?XS0)Q1@ma*}BA2pGFwldwIBDe2R2Wx~5~UK+X2jVg|uE zW19&({SX~5mc**>yVIiR{28fYA1lV_bV0Rp|Jy|2qMNw7C9I}20}-tk3GdZanMSL8 zM$R1a!DmekKYk9W2&o~p7wWgfn+n^wC^m*y5Dz{-6qMgM$DME}KB-D&o|Zw{qOGy9 zr5X&94d^YqmKms)N9JufJ(216AK_62k6mTwnll8dk`J292cX}aa5+_CC&n^_W8aEz zzXWOAQ)9@56U?e?s?z(Fb(boz`={jj4$PY^RSDA?Bwjvi*?*UMw!pLf!&Soz>Q*x+ zQ0M>-38iN=dz9TtQgP=;sT?Nc*%pVo1o!;i{ayEURV_cO5>>4nN!o+~1(KQ^5t4A$ zqUgvkt@O2bLkTU`Lf+A-+hYuwbj=j~8kVB&vF2+wR4d9L_|3-CNxyWCRHm-<6uiDN zB4X_IY{gz^|EcfuYtQ3~lQ_1h*{o--(QTPH#!=@5%~S;wbG=a#xKbf&Ie1a4b+#}| zFCbTf1)Br4AI?kC(S9I}enI9yb4ro09VR@(YPWWoaR*91XEid38)|TH2V(Qnydi z`B^i~qv_yB;LVIK!7mi;tti49y^eb)esUgz?903o>wUM9W$Rze9JQo)U%gydqw2b@ z$e$t%FXEYLuH^dKsk2?eGjnOAz=9Lm%e?c4@?rq<0zgn-ijX&(%Q=9#0~F0FSC1C z7LiPiXk609+{t4-y-`$FCQj=d@*;cp?Ri~0_Ay>Nyq%-H-iqaBMT7b0G2+yAi70EF zNQ*p=pi^Dt@Yp=sve22ZUoD>X(-^t21+hFeJOzH*1TH8eNMNTq`QCQvd9UqI*=3o7 z5^xYAxl7HrjkS!8z^jGWnor3llTqb+mPWLyz)mfHv}!uiul07S*jD*Nc(ujQn0!k6 z%tmHwWd9k7#%N;c#RDsht0@oT3y1TqEUqsiCz?`w?Jh)()NR~f zoAOq5^ZSRLAx>7)^~mzAgmHb3YJu&G&kx z7*sMG@fMwn&CK;{GlXwt>Myy5hRUGmLkNQj@@E*zo9{i7?Z=%+cUH}R>2}H>p)3Kv z2Y08_a23~HGR;&)B|arE`JrYR3Nar37>d59*IJMWrMDxqeb>|2inL=EOMm&Af?}1S zh+4&CbTow8iqHZ3(>mhdY7M*S>kIAf%Zzj)7W*&Dd5Hrc?Zti~s3$%~7mbThJH0L{ zAGO`-DyA!fwh?m3+{J9x;*byhOmx*Q2ow1ybYI_1l3T=kyLT8xgs`&BeA@qk#=3J} zDG|OKl;zI2fbM$W8ghAgnVLV`RmNGV6|&Vl&R6mvFY-&JRWlfmpJs`=OUXH~aTO&m z$aEh)Mtb%1uwoCdhqQ(aBv7$59FyfgSc~$#d$p{~nb3O`n}Tvz zq+l={Rfm|omzvEP|i@;OAkH~OKMhqs?H_OH_*EIE=wGsS;O)h9#yHjUkvMg+5K^%KOC?8t0J#(9hQ?TBrk*5qvjk?TbPb zk8|*|=t`HmYwB-SCLs<*Y-P?olIssekMcr9Q4U=g!JiLK530 zcQB+RdI=3tOgD-Oesva4SyI$UlHhE~Vp?YRP1PylnC>5wwGvoy^S-(N^g@iw$$hYd zhs;WQ6wh6E2kq&SIlHU1cA8wTi6hrz8IA8UyzS<+RFxWmZG7d^H`vFGie-hkVX-O; z43OQ_T$IYeQ*|mcZjRK+Z)5rk&nIj7LJ7gS>tnBo@B0hPk93B55n~r3Riw*2R!477 z4h)t#F}C;gvsWau;JEa)m=H;`>(&#*H>~gpchC{b&w6NwR-$IbB4FVMDm(`-!pBUtn1gYV9@MFGvWUQ_QI2r9Bi9u~Tn zbiL_km>lUN=1!O=LmM}P+P*j=NDkQjYpRV;BTc_BUf~EE-^&`4^+RsFk560SHI9Fu z4;pu~Hq#Cj$=rQUXfSJ3((KmZ!qkb0zPbY!enJXgWj(lYvMdo5k6Me=esp_|^x($5 zp$k@5_dfOF&y;Gc^Sd79zal7*BtV^!gt$!)zUt3Azg!~xl>ff5F0BQxu3oxr&&g|x z(O3OAk9$?$+`G#BsKqE79%s;x9BT)}3=!)D5Xm2|Fgo7qJCLN&p}ZmfpV={_BUf62m>3diMSbxw5-SAW0!;QVey{)ux^%BaBeC3%-679ZV39131DgU<#S$wnoNGeXAf9g9|XmW7b_=*aZ$T4fQs+pTjQsisi9Mcw>#aGxFe zgr3o~FJG=T#Vt3h85yAFwJ}h0iS6#P{S)fQP*jUzK{own{v9q29$2*d*gCE4*piAr zy#;P;85)+HHa&lQfBGq|7I_`pdeI_P%#Z`Tk7{Y>Tz?|!G=B@>^oR@ZQ(gI5lke%* z@u%d4xX?psm{+E6$>3yxH?8CobLw>yFzn9iHBmwTwxUoOZc3E9XELszJZJPMysoqF z?wlWz*6~)1vn?%uTZF*FdLkCEpK!4powqA?CLEpHOqFY-WHc$GQb>0^g~_6(aT&h7 znd(G)=I35wRBdOlBzv6TT~Q)PblfWTc?#3^R(G@ z-lIbA`~B04Un>vI=I55f)Z58Ax9d9BvI>SDb*kkQ6pbor=Q9~`>M3czHMLXH zCP>Y@ZIR)v{Ztk91d)`_^Z77IcdSYkbuF|=;tof7T_j#t33ZdLT)CF>7Dfz)(nf_p z+bVl#C9nIr53(Ekxh=0`PY@GSvX{<}Pk5b}7Dh-}6Bfi65=|Kd7N<#=(ib7=c z9tW11Tw_a6Wm27x(YvmUGSE0yes3!j9*<5b3Qvo+5X_0F$XVGwXfUM9j$MWB{1JYXYq<;{Rs? z%4#g#9=hnF>dTK&Zgy$YK{h#IwKK<}@awqm3(zRS;XOMaPU)qTI_b_ReqXr=&B>N` z(QK>?tK(qC+BH)58{Q*N+BqFVx}~Lcg4UB`zJfJzCuWvgzMb5`&A_vJnP@C z;$@|U;_i7G>_O+se1rzeBu8$!Wo((LRr1HvcGRdzIn58CM$@c?(#AACCftmMaJm<> zuggjfzw@j;6`zxPZ`}HzVO59;8|6Ldfdrl0nrpY7n3ESli0A`{QG@ zWWybmBqu$p_1p0-mBuvR?h?Z*3X5JpCLT_;(`{!IUrz6?Nb@AtfUzHI)qPV*lD&HR zJuQhGVHsKQHAUMGcXml-)I-(rTYaNzu_8gkMiGp4=kE2ia%{V*fu!H)Gl$vZ&<}S_ z?q}yLt8>R6h3D%uB6`1Ab2ezYS>Zg&V$p~!smL9pK?=YAJM=C$`0{0qC-@4m62 zyR;gNfcw7oucz*#;!HOxETDL6+IZb)&|FCCMpup5GE8AF{|S#=4UaewNfg7Gw6{oy_G0y|0XhxM8L5fM z2>nQ>SrH?u{lQN@CVlGV3Nphw(cQ)Cq6qaAa}oyxSqJmi0asdu-0Gt+Uw6Ag8@aV;`?sY39s{PDLS)3$o=dNusa$ zTETW~LMPNBevp4xij!>ME$hrxQ#*dJSkW++<#}g}br!gP^~a6xcw3*asijL#b)E7z zC{AL;4{l}#`hSl;44}K_X9YW0%NlVfNNo+Yekoq0X z^rnBT8St@Ptq{js#}BNGme8bs9g~rSP@V)G>v5OXKOv(zk%9N4$eu6-`I}umGrM>2 z3f-SROR8UBVA_){NGB3EnS?lN)HBl0(FQT?ld&HfzP@aIhSGaf z^7RIt)edd@>!CwNF~e;(AG7G^(0dN~@AjT}G_*Muv7)aZ(aX6Qc1crlYgIUn1aTi_ z*^q@$g&l-IqUn%aEkA06{k!tBw<|NgE4IG8K9zNA85AWobXWA?rNeh$;?w9RZkLki zx4l!4Ci72ZIfy9kiuK3nGugML6$;Op>1MT^%;LNh3?NOD(k3*Yo;0U5m4-p&_@tf7 zGUOKd`=`1ldn*T-cvUJ4^vzohCM`ZJ@(HWQpvormvr$HZ8Vg+;W_5h;`m;G*w^-zCMQ;HL4D^O5>I|=uw=AER;RYQ{{Tw^yG zQIQ!K4KZ=`QE#p-S*7^4nc0_GEL8eXO)t>?J#e|;m7q^#6D}!Q?^#P&(leexb(BM2 zq0Q9DIv@XOZ$|{bdiPN?U6}#jj8KLJ36TuVf{S|hb%`no=&CitI4NTfzLOLug900y z%Cl+P@-2~RNa#N5=5w@uJf)cw6I#?PU`c4f_E|j@F+7~Uz<5X-ZK#TUJ{C6f@wS0d zk|OaBx1clc-^6B-MPPr|;$~pz757sy^D~*ra5H7c7P`((wZ8*a}z_^apW6 z+vV(EjY4dNiIYKJE|zo?i3JhnaJ)9)Cgzu;^Lu<(Bw`ya>fiOEz1W6u{Fq_fOgR{) zGJU>v5)3)IzkOlkCwNN7D&(lxxM02r(O+DgU6VlY#_h==&MIq2*w|e!mqR5$LB}qT z#rXcJVj01bj^rAdnYQ`<6%>+KvwCyjqp#WavmHXZZ{N@6ykrS<^dr<}JkkoQ>Wdf1 z78)rSvtI_)tCZ*YndJ!@(w8x%ccBCIQr|4~JhuHTW@_Eowm zKAh;?(i4x)VVUDP0=tR$^CX_}WhG7E4R>}I-ewaeZlwr&Q!p~7Q4w7G7@>gBSmoto zE_=cmvZDcJQ86G-?8ZXS3L7&$(GsC3#;bU37P2r2rq zt|+x|=~=$RoB)%H+N6%f1D;&H2M+l@m1YiMURP_l=~1;B7hm#DQBI8VH7GKzQ8|!s zvpFg}U^2KMG-Y(;Fe@HMs>Qbw{&RyOFQ8b7=yFD(;13dIEY}#%zYoca5y=i^3EG zFj)ob53Ug`Hmeg*U-v^PuO?bqc&);hLJhL8_=3f7@AGaK^fg3`W-`N|(TltU13993 zqoiFW+=N7G-<9hHr}sIx*4wY-6j1xqA*vUpBme`l3E85f%(d@ zb05iYd;Jq@nrQvmw)Z6VO$)3qZZGB#I$z-)j3^hQ5HQE_GTV(L`dUIWu0L-p6sTYW z(Ldr{-J>g7jUZoe!-!MWqpGQC@Xz&(b9M#R-M$9$e56wKQuQ%bWNcbCp=H?Rc@UOU z7d#BsHGU{|Ov9Y6*6Us#u)beIy`P@fVcyiGUFjwxyu!$3pWYZ=lw}`wcPssabi&cV zQCEUMgqiX8o8~e0OA5(+k|L!zu=1NY;Pe0MwhC&UC&`(MmzU&^Lu=qEhuWf zGcqMTgu@(`Kwyu#oL9^n7)vd+5yE%nc~z`&$Nk5tSW)wtmzNgH#F<1g(#$Cy!eXkK z#j|E~VF|Qvy&8DohX-Q^4BV$#ip9;L0j=Bb?wMsvNKt~c(?C5|!dBG}niuCgcdl}SBaf1R$G zm%r%)zIe;Kyr}u7_kD%To~L6BPX35Nf#ut~ZOdUC0?@2CZA799<2UIa7K>xl?M%b_ zFbEv^J^H9mc9sYn#=0t&^oO^!Jmq|-E|u*r3lX2c(F4SBTJc>P#k^Bee40oB^8*3> z2(c}_Fo8?7A#+ymmrxUrEH^;O)-hzNG72+lmEthjvlUCHu7cEmUrKYTIX@z+M1}G8@jPi z#&-X6p4_+3@L`8dX$vLvbE7o~+y5FF|}#IAc7foyAW>|BNBC z_8uxEu7)~=@sSa|m1r{e)u-N!l6J2?~PGRZ78|VLRs9ew1w?cg|^Y&eMk#TLj*sSaq zje=a`QN{V#X^QpsHHnDwCmNh#MhDyiUWyNF?Q^M%)sj}qHp6_^hp_skpXNm#BAG(d zqE&d{mO9+`B_RlmsaY1w%!&TX&jMG<(?;uSFOB#G%bcHWa8$=U3?f-&%zNxj_$Yd~ zkGhMhjHPWyd(h!ww_cpu1BGHwmV_z!l4iBb#)K4|Fwg^@B7%p*CUuuy@EFOxd&FJF zLflIA=~nZ{YzlQS1y9SZQZ)}nE#0=bV6u&{wQytVO+uj&BC!{-aae1!hYYW;<+QNh z{^n$4A5ND3(q@2?O0&N!h-!VL!9P)ba$Se&Gt$JJCG)ser5#`QjvI*DVs!$(Pow< zv(`12$AzkpUG0%KA;sI!dtFY{PHUhVc!7*Y?cI;|oaedhC_USW;7+emQe&#}ovP>c z;+|Kw{^Yz@d%DC0J<5}OKI|ss6BMh-^2DG>rOULdzH(lPzPa7k5JyRvG?897_Cw|C zo19}20mGaaKZixQwq^HXHzSsH__O(9T+04br`@nv3n%BBxC#s0B7D8Z+jZ{?H0F6n zHif7cA9667-s>7syV#2cd7_}@#i}qSu8!yin%(A8HIvo}p--%DK17W;l_@CiM|EW1 z@^OlvNSmZdi=HrA46GqI;O}TkTiAHtG*Ir-SJ$!&3{9~~EP2LB^(R4X0thuV(d8URc@);}A=!LB&Oqd)?IgKyYReC9 z`LvwaG1$0Vk=5|cA>|q<@?>)=gmcn%8kb4^R<~Mqvj!ei`nW{)%rrEuPv}`lm=ss3 zjl8rsmzeBJ^8@~#rog2)Gk#qGPM3d5oICA*FrDdG2>m(Lo4K%?5hvx{eDka8(ZT}1 zJ5p8u+l|t4M#uNBkOUENTq3=TOW*D}ZPEAlfFwQ$HZC5b^Wz5|BIdi1^qMa{w|b~M z5EnS>1z&yJBf)?#<Y zV!?|G8>$cbWeR+K>)zJ9lAQH*J>AZ&Ki!RW2sk znCFedVMF)tj?u_Qk`%EIk;W4(J?-sQX70PURG!s;I!2@z9pIYOyZWOV6pZJKo8;1c zL{`N}>y`P85|f!i!cB90L9BYoF6V-g>^(?0Rq*IxFd6=?=QI1{6Mu$rtDM(S-4Z7s z2@RyAg_O*%@b)CY=qcEppJJarWj8g4Vn=DQ(@CX0_bKQ%gc9DD`oMX&&Ob0lUQ1$k z7kFJ^-8sQ6UK_uN-H z2@wL4-p?47Vp<;@1Qc0c72%pG&t+>5xJmP1ezW*{fwD%!gB|Wbi!q_l>B8Ywzp@St zRC`5pCC=|fD9@$%4Q7kZ4{Pf zSjsk>?sF!R!7#qBLNL$WT<(}sYF!o#pt;MWpOVp_sBl!{l3gkG!_(PL@{jQlmw z*$1bm-@78fS3mH{9^;3>Gi`X~ZK|(^`TZ5_MLo+=8;x351LLM!Gvj)3v@bB}qOUaC zeMa2RZ|!6xOhtKe0!sRER$h~|E0IE}!|6J+K9Sb1Bw5!(=1ro&Dt-qm?H5nCg&K?O zub6%0Bc-_`(RGor4Mco$ESO_EDe*JoT%@VAiQ#mE?pXMRV`_}I#B~21ao;P7BIvj2 zqMOB;ephjw$^i#Ig8~d+?A-a7^z(7GAZfZ3Q<>S|ZMTx6gZiS}sZ0u9VIWb$kJ8#SO-}g$myijV{5tsh1%ZRzz*|Z*; z`oIESyTW0$9dZ4|WnY2W!JPAgUA`z9DLuuD!Pi-xj@RmN@9&OnBW~(_uQPt1&Ohqg zs>-}N=rpdwQacE3bR_%KmtOctW^|272ybj~TAeg~dqv7~MA>l%t7MJAEWW z+$3z#mfll8${<2iw?5$ZJXvrFk@3T!qLbL?hXj6!gwRU0abeb8Y1TvBl%nNMi&EnT z#bi@}h=z@tO~ZCn;OnE*yaQcB6UKSVOk*g)ur+3QO``SlhBawZ zuXygoo9#kxY>s9dvNlEb2ja<_6(}e?8UjDW?oE7rbuEfXWNT!NHr8$Yu&TF*jpaa} z%lZ1k;|w}whweEBN#BsPYYGmn=`!?4yjHyVt{K%$Xy@`|yYgz)k_nT@Itd(`$95(X zTU+xZxpy}0+aR>;MuPP9J3(EPL*kzXpYFY8d-`@Mf6I)2#P^Nih1I|-ZF-2;Ux*aOY@$JMDeH3<%E|Wb#hj?M_2q9*0#=&^y=Q< zi5gst-ly`_YH;sP3E4Q?8Gd^&JP6nq>2~?uA{Ke)R?Z0aB70{~&*K$!u3M{N^anOE zo^7!>3O^-Xt#d?*6lx{;ihsne!3d)9Juz2J(0Z!49f-L2V?f`^6` zlrfe4?R?Lir}$<1+lvwxYQ*C2QLeGZ~){oMhJ`b(5EIucsh zNkd8ChLFEIS<2cokMY&6eR^v$Lc1)raRG?UHBu`n}BdA3`#@zxpsdN%Q%*t*ky6!vT$`5M{}> zN+n0qSFqkZlY|UC=<=! zS`rtVB!cQb$A3Gpdq$#bb~jImh*$lCiryOOXu8~evT%~d^n=;7JErV{{^v#|4ZL%K zhsoZ1eb{blTTR33>pI2-ydDp$CBKPG))kfpXu7TLQ!Ibvk-ph=V#AofA=SctK78K8 zWZ?1;Rc2mj(924SI&w%1+CE=(Opy$@pI&|La)o2j(*WvUeIbn%m9uinK4c~BlEK+y zb#Y+oR@aVFr`j;?NAk~`B4e@xJWq=vl}$_}977Uri4JZ}C(?QfHI{9qE5!vpj2_+~ zifdAQ$0h#O!{;-v#86vCe6n??Yyj7>V%(j1S+iU&(9EVny6=x<5A@Y^ZB=YyqUYdQ zU-ApdjmXkL*Cij9xzw-L_kFyC`4wq(zN*Q6byVkS&3n6W+an-ESNg=L2ERZMPWtLLL6_W4N=FDDsb+?m-=euP6 z>B%kKd#i#ou@{NWgaXCE00|Dsk^j*tiK64YjgEMOk}ufB*2g!tSJ+L3KE!p36uUI6NbO#Uma`_HE>uqC>_uggh@GzP8DHQwfDp3M^YTV|Ii zo9Qz!PxgjxtzG`E_DWV!nb--E)o`?L^)NGcaN;z+!pEw!;lTQt!q zi95SD^X`J|_>hLW+OTZ8-s?R)%VRR`;<}L{0*s!5lqfRuS^T9E53n=tJ1Ac=YjdB5 zD)_zzbb?t^{RIC6Uzz=y<}-$zs-W&Mi%!v&+w1wN2SJ<2>+`qyxW3|V6rUNrfK5Lx z&`9314i^@=^oEd2VAtBMfZi8bx4wO+*p=d!&3y3x%4QzRXKPOe#hra#+fpT3n^OYK zKGcmtgz;Y%;<@{ho|BJo^+DBSmC3d5%$5hNN(F9f{w`_TLF}d166^N1KfXdj2V|%1 zhEx*Y-OpaHx~r=F_Ikt&Qggri!!RP5b*ILp|I^;i!dc}1BJDfCn%cH??P3=jHf#up z0n;0bnvmW|NRKsv^d3S&uotjUR1_>=LqG&YPy_`ls1&iFAOa#HpdyL|6gzK;d+)Q) zzUSWi-uLoJOx7CnpJR?O=9puyB9{DJr;*;`( zH|V3fE8BwSwKz-_hw163u1wuH1bZl9(nDBLHmtv>NmwMj+x2STa<{YE8#m5f`9A%j zVf)#7lg&T6K@oKPkLf-q&5#)rG#=k4PujL8^wmpzTUptUh)w-reCxOigKb&Gw_VR; zFNO`17-wcmu-+|s71hJs&`+D^t$w^YW`4GLTE^kUkB1id41Vn0sspdCpZ-2?F}i8b zxC=M4Ybx{h=$ID#H4jX%r)So;?>58Zx4X^UjE{}%B{k9Y1=SZ$aZgQA-a0J`R-6`T+a~ z_p~UNy?*R_y959YFsdR!?%URLoX3hR(cRV#YG&zP);DuG`B6nZpb3vuJlS$~&&?e%Lv=>d~7c zpVE{4ciJDW3Q}Avk&fIRuyW_>sV~yMV6r$}1D7Ipaz0VtZR}`XKcLBF#>qF{KL(UM zu#Z`X???VI@X`7mKk3jfKWd*i^jU`yPes#bnK1PG{EEj#yQ{6!Yo=XMF(-_%X*9v9 z7rJ&I6x!t~)S^R$?Vix|4%~>e!KXLN=EM*5Q?-Q6pwzwO5s&1YDjv*H&2-%WQ9ir1 z|D{Eq_jsE(->5Er{O|#1s^-OsBMEd?F} zY4=?5X{I@4QCAzf_}Zc9_lFQ$DTUpqcB%@OeM&9;dTngeR))H)kC4p`@)e8XuNznmSe_e>QS%*4_oV zn5V}!CKf~s{bRl*?AqyeDYL_8G&rM7zE>fW)`CURPY=Cr4tPCl z9Q{J>lQTI_yGCOUeD!jfnfxNkXTMiijqA9P7pvwZ9gXV#c_#mv<`ZT25=h;P?c)+A zu21tm-DKYSwDK^_?@Zp-^u(FWZT>B{SR=9zwHzo;2)`6teIq`Tbb8v#bjWpYzT34j zuhN~F2NaLe?E1ZnqMH5lb#dZ6x<`uJSJdYh!ewul%|4M59@f6tt(w#jh*_`{xv9SS z>Oym3VB#Lm%mXt$%j;w(;y=*ltvwpS^=}1z{}gTrt2>i6eZi?V^kEuuj`xYf4*8d? zMUOAP$(wg1?Xv~ zMHN3xV{{KPc*NYO-B(BDPd)ZJE5Lta>DBP*D(fKOj>p_B9kPIkP|1d4hh2_Rz$*roMxo zjGCERJ+I{1&Y-c!hv)V=*OjN9#lAaaWJu!EeP3G^4H$V!vwPZE+s>*5r*C1qp{@k8AF)Q{1nsi%7OgGy?`&H={CL6K^oJuRJfW4J=^o=pPe@q} z+TO9{jOG9$fAWFkvM7SDCTLv6bkLQy_SP=9oI5eMU2c}&_d1)ib@TEC%ae)@7xKNa z>qZw`2UUgCPYZnV!{x&q4{il%_M*C=mKq2v{>@Mi#+PCB<1ez~QcIim-ELIG%(SiO zJVGv?XM)#mkRSe9G_T7p*d)_wVTZRwuPIG1z~+^i*VY{pebA@bSBeX@id5Mj`D|e&f^0_BNZSD0P7g&Nhac=nB$xMGvga1&!wv;Zt&TF@E z#9a2P&0hoDXMI4w8&tdFOO#@k*S;q$`2(uvXk2rqj_;bkEB?o019_Flv0V=teq(vJ zr!4hQ%|1RV>bM!!NS^PRxgq_BUmyAaBXafKJ}x&is6Um-dDSaLthwNy-HkopCl?-K zO->Z;x^?IfZ}%J-V{Y!zeXpUHzl*y*(jS7?-uh_wT;W)Ec!_CQ^Z4j>?@!c3^^~2+ zxKVVC{z@VXJ3`neZ8%Pzm_O~k`zUdSu=Y|1`jycGk$t`~%yl@9KKI}(w=uhN1UqFT zH$NR1^wJvDBKmkRp%pj&ogBOAg5#K=%eoPcfnWF;dpzXmrE|;r4@%m(al(M2&@D$? z7rgm4rt0kJd|j547ZKCkv{&r1Lhbu;ngPElyT-)1Ie);$a@fG_eDc=j4NhmhhS7_~ zkga21;!iz(c0cXM>ZZ)`CyE^nr>FLL^>xegyEDVTK3jqMym!P;`KF!~sF(YP zYuMNO77nYwfjBnDF-f@iHnOB9#cMBqKbaGYbYIzeX~gY5gICRXvm~V39%ERZl{Rd= ze{>?Uyx~ccs>r@$AMx3H>pVwOo8QPYwv#V#O${1n-!ReXyN6b-Yw}8K*JMrJi<#$_ zwAQQr8h34a6H`6+(pGR_Lh*oV4OxehB`}Ab6Q9b64uf_VBI%pJO;}7eWdPV=n ziq$o;oG7u+z>EG9r+%H7fh0f^peu*^zUkP#=4kj+*8cDP=335PPGDcVKF+P6@A#9N ziJZevH=>YthTW)pH5fJK(lC4I@iqP_U+?uhdHQujO^6Grd)=m6kB;6M@_E9=0-pHn zyV9|QjtwI40%~4!C;M5IuHvkoaO^b2G*vB8n1m;44P%dlrUyURc=YiLdW^vM0RHO~jZgx5K8$tImd;bt5!|9dN<3lG56oh@@%JNxMO(6if9x-?}cS z8G1%5iI|i(G&g(dQay@tLn1nr?0?H6hVXgrjLf=pxtHZ^XVEIJ*x50%qrY<=dtGrs{v`1>o5jXm%qsb$e&x{-F>sm2s zjQQcN<3WbH_cbHM3p-wqvY(@rSAOs*p1<_xRng(e=XrOocKR3G-DpeO|07OW+-K6M zhUKqc74Zkz!PhQ~pZj3oB-u$!cx?GgtmabMk&$Qa zxjszxxxHq?UNiB6>EW6yJ2Tu5`CJa6HPnn+I)3-JdTsH->`EB(;{166n(MQ)8`p9H zCV1y-&cgA=>E|Ck)n2Xtir=J^9KXGFi%yB!p?^MrFW$4cb^GziAZNd8kLC9*-yX~k zKR)KkB{Vi?$K!o7Ck}}Je5>Mo-3xcWMR~|)tmhfy6Pl}=-?vhr{DFm}?h*ALW1m1V z{)qEZ&DMv`u3Mj9t2=l{Ot~p0pNaJ=Yu#|*RlD2A=LZFm^H0YI?>$EgS)Eua@@sB8 zpxW~Erf*NkA&he-sbF*U93lOZXTLAg8>(ZyYq$6RAtBb@#q^~(i2{gKn2>|DSKjwo zv-7+?Ii};a|Axyasy^^PJLpNx^LxHSYPKHTeOF9%&K-RsENNQo|*ppq+P9e4XHVc#Dub$`$h zJ?85e{p8roX`N@#URgJS1Rs^o3q&hrpKx!ESA?aLN*kIB@+NVEND(g!YZva-XI`t2 zue7(e>z~9_AeQ&LE667{yw^QzaXYG^yM>xQ0pDt1e{ybay8i6;p|QFj97iK%E!pqe zPLWY`k)Cn1_FJ{F0r-uu3@ajkp9If4!i}!8dE8M__be;fw&3o$TT@T;hYMe&CHdmF zhkZ6peaxI%po%Ft&J!+{wKCZS%V=RCtu3FKqdvbC4#ACzaCgpt@qhj`uNM=g7XO#~ zGIsu;+#xo+dO4cvHBYuZW-ozLT^#gn{?}Vir%p(E)0AAdMPIJuI_rbF3j7cieY5o} z>4+xU+ymG8^FEZejFmRJbJ}Lp2+7R&35;f6$gK;C3b2h-!T^?p3Wi(z3->>&z~Ce(Z|9D5SSN*&{@XgJ<}N?r5JEMd(L+HKgJ$CH{+2N!QGIH}Bn z=jO1ai=N$0|1kGWIjEs8_eAm!kYnuGbo2WeQ7qo5&Rw+m{c5+6t3GYKfooql^k~i9 zxc#rsB&;EIigg1w(XK_`k$H^{NpJHI`LDU=d}m`6tS5_XEw8f6UMzn5VSL{+v-;%z zJa&KS)M$*%bc>8C!avZuIcD_(DzF!w$~+ z41B|x3w`t?sB-D$HI92OjVIqUE!UIQFOV~1#xJUw!p)b;?DbzkvfC%;DD}%~`)1rf zH|Ir0(>vcK<(Zjhc0WW8Pb*F}HMfdgwnK!s5&LP1uZ+IoH7POPW8zd%yl2a^?;VeN z+PYwQ_cig{0rfxpUJ7zfC(-7P%X!%{;c>nPEPAFy?4C$~YlW0t*N&g(Q_8b4YeG_% zkWLPO=b!kJ*AeezZ@6}1{xub|ZIc)O^{dtNz4wZlgMTE93%V`)P(Ts>HSX(Pl&pga0=5N?>Qz7 zd02fK{_XRj*ZpwE7Cv5by`nLi?0irmR&3Frzl4vj(}!vx;}!C(K_7z!1?jJBP|d5+xgR0=QUTIk2&f-uPZ8I8e(jn z0pD^Y2T)=CZF+h|WwbnuNZXI9E=(Py`uhr7O^7v9Z3`(nhrI_HyipT!%# zdNk$b^c+jgI}tl3X!2xlzaED}=Wt7#e_h^z2+q~7o$}E&DhYs#k)ptb{5K0F4bj7Jfgd<562BE3##(TsKTZiYnzDWA z&+2b4OKGB}J;#(o*a=Ryo}(=-ALHZ@U!%_C_L5?$YK9%bx19vK}1X zyQ$&pk^|%Rt;1A=Kwf;0Re%0|0|gCe{9OvY>|Vi`e#5sSpl;qF>8tgk zIRlC>SKk@5>(=y~bKi#TSOz;Wnh~$KvHJza>+GEGguc(8y^Z{svZ_A&k>JpjIQxyS zcMEE>*;@`y|LHq2#gCL%7vWQ*+k0}q_I}p$0!4MySkZtFjSmbNq`B=TqhqB{=XDWd zAK{LF%0)&;M}L3X9%lET38DsfaQQUs()cU7xwE^#yT(lTEOqnvRsb?rr9v`i&wg_< zx$QvGrOzd^i>!~vY%(WgIY0VnpW-WC@9u$^`)c32w>j4)iz!uz3y)qyHZLnNRp#a| zUiG=li7T2odvm1NUT5YgtOc20N>Xbp&W{mbi=SUkDyjD9yQ$E1q@K-wq?_Vx7y${B zAwh?HA2+{`{F#@r06()sb0Fo0_ukwK*PrhTOY1A&CJBxnN-}^E4<>qcW$jy9LciSq zLG;1FX_GKa_qQ{NOMiTg*pf9i+4+cb@Y$n`!9-Hyc2>iEd12={X)TqZg7XSbHv1Yk?*k#{d#B5E*=+|=6~yK zpibL#d(5MQhuF}e#GE?yJK?ZQ-=PUltL}AXZS&fCJ^9pn^vLdGm!|6aIrkkrXx^4% z)RZ+NqEhlZ;~$5PxpH-zg2O+Mb7Az_bCt*A^Q>vh$X_c~W2zFF6ESCH$Zf<+kJ%EH$0pbtX;pqCkwUUd&|C(xyQ_hAq$j zc(S5rs_ad6T|IcJ#YIy4v)S`g>)TFy#}zO)>|xm)&G?E9D|cdeJBDw1mOh9-DkASx zZ0)8AgQ|x$kQ?U>j-L{&K}{T7Gj3y4-r|pQmO*B_?D*Ml`@W*3@TK?UQcgfR9nA&l3q@*I}WyHZlZ|)p2 zFLwIfk-m^;n22(B-{e;k0H<-PLHrFg5(;L zCfaWqLNyUO^)!@gEkjR_I-EHHNbIrI-SLg>cYA(zN`Bzpx-m=l+1?3< zJS+4tT#AoV6P^=%s$A-ZUmy&)q^*@Ewihi3Bnnq9Uv#=?{#bc`$n#@kb3;egolz!V zUgYC>C;w8z39XoWhq+Zl=FV9hdT6^!`{`!~e)jc7!>Utxuaxh`4~bulH||XPzQLON ziaRyVb&z?u(~PxIW2;VT_pck1w2ZTDz_DGNp()P6DgFVQ+R2k`SBhcJx|igA*VAX8 zJTtY}M!(Yk)NniWo)2>Ky((EyZiI2ec|zm&1KovZbqaDx@b#rFMezsn=U=)r;`_I| zE79K0F)Nh0sh{>w>0DF0C8^xdb1rxF{J@3hR=aGxTb@Ms|5#CVaOM7#fFnJ&+RS;6 z6a9VOz9^gN3UBhb@pG?e`sJUtuX}Cl)ZKe+JuY>(cU+qbE&TBC%D@dvzN7rE@7@e+ zI5T(UFwK#Md;Q)9?|)rhIPXZ=xMUfjVO|hR(k~-|6wdm+!}wv;D_?~CuLh_;0Q}CKLDJ~Q|vbKIytkb@&E>~{F=Qb_xtJ{a#5H)ZQlt4nwATVimk5pw(s2ORxs*8W?u5zV(;7&k!M1!*QRl5 z-f?N`$cy_qU-mxeq-P)L3-eO zGAOBT+RD1Y(>!+^tI2(L2&SgA^JW~~V?}SyQh#`x_3~&BVw(Q`nhQCmmjWRb;h6a# zZ>BFwsa(OI*nxd~g$S~@{Fb>*r)V~2Mi8+Cuze9GpuF5JPH_S4|kLtp3SgpTMx`P+#D zH(Ebe&7CzsR9HYxw588DO}KSZ*jA9bzAO{FXiw=mx9-E;2wF+kNk>kH=c+}ME-Y+G zBR&l99D3#jdtA$xN*rwEwdzReLH3s5eu>N8if1&p_9w(vu&A-^Uh|C9ry}K40}eik5kr$7+gB8o9;bx140aScSY_^Rj0;q z&j+PCmzLlBJ~G>@eOOaQ{7VfAx9Z+o?uY}5l+#(W(n9+q8YkaxdXq7ZndFnR0lfc7 zU*oJI+p1kVF0DDnTwfISs;yrEnzJ`@t55v8fHyNYd7fKSk{Y?Kr*wVe9d~T;_T)b6 zcfNkW13kF+6P1UW80VV5ZtTMEUp)H^YU`?RwJ*4V%5Nu8o>?0YboW0x_+sLZqt9RF z3qI60T|9Sp-@C3mvQkj{35Y7}N({k2&Bt#~#0j&@n^;*qKWl8pMXzv7`#6e5(ZcH{ z!JS|1B`^6o^WJ^$ukO6Vn@o1UtfGe2^D(NhtLdqyQMa524So_rtI0c-+CIc^MFHpZH1e7uIlZj1A#Eh7}X%|Q(>sCd*udF5yUo*mv7|A5!T2C$B(>7wJ z;lvjBoMD*lak$ZJ)`Y_nJLmSchu9D6eyG9cL)3Qc4^YAEyY+{=jz_n>oUpZ@ga2|% z&6F+{p?pWv>j{HNdjhz^DQD)~>L4^8n00ol>2V$RMS{;Le@|<(;mGvuPNO$5V-W41 z^T3}aM-^MyLx#zR9m!rk_wmJ)G*D?1aYOg^OS*E}4t3*aR?T*2G+~MQ>=Mw@j5T+^ zX5{pI;gaX<|I+GzJs|YXXp7IH9oS77=M%IKcK3~zY?=Gv_C4Oz?Hv?!_L(&&ULL;h zxAXe~tN_o`t$wZ?qaiO@615_S@on{&SsT)f2mL&*(&zVgO-emIe0FDvkVy0jPUb(l zhTmU1V%Sn!i=`BUFvKoq9a++T#f5iuSdXmHY0oam{?TiSEBoGk)4F%?sKdlT7QcIl zCMkUe18?xEdXfBY=*JvcZqk&>bob}*>{$=`?9QLLYcToT%~oa1&Re3i%5!F8z4sI^ z#Iu3;yxXaD1Kj)OO+3>;L_~V@NJ84lB}p{{cvev5LGekz?X@(KsadfS+7#HZ`tFV zk%Q64s;4uG;oiC!{8C>Z+W^Gn2b2=mQFE(+pJXmbP=!rvAf-(F7oJ$k5hqtkWe;)c1#O;-M$a5IW`Axc%G;~GQ01{cYKBk!z!eWx)l}m0 zyT8x1egD2~P@#n|{!;bTbpy&w3-3iuh?#Ofh)eW8)qw@evN3f|mxo-5MO2=;D2^cJ zXYfa-;quj-0lu?<53PTgUljSc;^6b`v56C>E%;bGaL}F(F^jde+P2%1R~WtK{1x)@ z9Q?a}4PjCE{v(KoTA*`b5%%=tDQf{zbM0`#BX_08XHAOPYA)HjwZ!%G6DN*l$G~*2 zh#1Pk8*w=gIO9faT)*+m=ipNtd?uDpq$M|P?L_ct93kv%@bMUQWF214wGAD^_5H1x>fQ4d!H z{kVi2OY~l&p!S3W{Cp94}uFTj>9Ob;9}0A_UZ32?oADCgFb6z5%+W)-S{ySRLMH>0HTo9Obigww#U zU`a6PxG|SxCwvZYwLuXrucr0cGg`*g`b?%LKj3dbcPx9|`m!MFa_8mIP3{NhO*}#I ze@wklFACWnu09a(ti!FpVE;+qg#O)-z%4u9K@RQ-<5E=CgTdY@-f(l5di?3EC2wc7 zURxX4;W=Va8E@+M*1lcb5l_n=&AmDyyL!t)*pTkR(j(f-QFl<&3Rco?f4;h9#I#R| zFE_fT(w0Bu`pp`e9aCP|^~~k|4iZjXxv@yZbB^_h*l}NA|9to*=~ie~ZRJg_t!(Jr zDdArpZS<|V*)u1GnOs{-o9u2eW7h5(|HBB5!l|A^R;ZJ-ZwRN#Cr@ zbaJGQc6D3<79i!4Zv2Pk>kNJM-fK=y5Bgqp`Fc-`hNE1|ro3YWe{nv&_uk=a?SW=Q z&E7Tk8@Hx|&qp!KCYRs1ER)>%`1~ihp*pLXmes%W%g~Z36E%J(-cGujxYV<|XH#q9 zp5rn7Ul*jgZ%;0j?Ru*|)3{T(v`IX6a{dQ=Pw|e3%6PAq+1tJw!1RG*yNL*&lo#w2 zaG#Qua<^l{mpwWfnLR8DdUkxv}5ubH0&>zmsW~j?&TQHZ z=UcA+$O}5LM-6ngFeVUt=Vzp@de*TIAsNf)U8~Dyo7<SRZZr{1@%bKYkM-k-V;>LO6W6wPu(?7ny@M(3{-b>+CaVc-^!I$)-f##PE zdb!&!-Ze1teicGAYl~Lqan`G1z^)$K&((L9`os6`oUNSC4tO3-ZcT48dQ>bL zl{;q0s|6}|MDu|hL(1fa3%hdP$+XMzd8+3>?sUhk1{`vKMzs9&WSUd%GHYo^UU6f> z?AmwZ49LB)*7Kn=+9$e=^B7_(O?N$A8T;ZTbk>P@;*+mKo>o-_zshV5!}k}c z{60IKp0GGsHkny;CdtdQCH_<-b=xV|{6l4@L*I3m2hSXKd~VL7Nsd5&o9G1`^x8&E@328P4J(V)&-$ zO#zyHdjw5u)_9T?X)hL2!CA^#r-^rNWS$y+By!5=pRVJrsdlF-{g&^;X)E9_rlr91 zZ8z5@yLG(dI30;FQ8u4k7wfW$I88K!Z#yzAg0nk&+r~Iac1nUIJ3ezue0+8AjIHsz z-p7@K4vub|z5B(kOL=D=UTH)TzGXjf|GewyMN`XzIu82H`3>dC&JzTJ$_-at()zfb zI5)F10Q)Gt1W!+RxTElDNqt-9i=(ZgRivhmA$~6#dwPCMVmDk}KP+HV$yM@+W~c`$ z0p>JvIQW|E_>Z6Ogt=vxoVuSrF%Oyg%~`Q--SVFAdj|h#Zq7eC#D8n<))J5iMfskM7@R6pMX=?8N5naD0agwblZ89PFp_Ih^^oSbl% zA1Z%}+VuS<$j0O&(8R|(h?w0jV~uSi?+{N_9<~bgswJW|ewx-hjD`r%wCvx!gE5;dAS= zsaa#~8zVM+1=X$;?y7jdiniP_Zg!hD0qZy9A>-h1>eC|;dD-(+;nxdi-d)B+hP~fX znzUkMe`~}T_}rFR&8`u9Cx3QdP0ca37}11R=jtAo#ksgDHq$JWB{x>%b3Y}Q9p^-R zAXQAQh*@!NZt0HeNr`1M8Kt4gCq{9yYge|`5YK)0_K&k$)MR#cLC-_0-zqN8`T31R zY5$10{-57(x4tvISkvP+dFGXZgyzJ`^}K_dhNVX3r8Qg)?Qb%!f)(oO>l?-#zRn%- zGqv+z67s-}!Hs?Fr{_P=Ws2tPo{79|-BJ12GVI6!q7(l?0X}>iHE!~$b8GG6R%9>n zJ1_Rz+KTzv`YZ&M>T-Ee#e8~>02MUC87lbtHc=|4`P|Hp!45qc2y&NR34txK)F(DB z^N_G$ie^WTjs<28(}^0|6-V;$DEW$Vvp zr(y@zzH{zkArxOXJWb6U`(|FH&7b;a;q&JG{!b!Y-GX+GiNKHUH+I3qMzBZ47x$KZ zC^rkKq6P7G>Nu}Brs{Dd_SEh14{N79VO|l|SO)w|d5iY?NqUxl!&3nxKV7lCa+GN- zzq~~>hIhHIL6u+a>GNds&MCLOJ(;g=?+j=wlW)G`h&Qs|vL=0am{)nq<4FRl2Stb7 zRh?}cVlzBp?th+;->jYZa5sZH{5sIQod{PoVhDWeP<+jYdh*3%QFl2@)E12B@_Gc-0!vYyTVxVp#9^w0*2zT zVgI!WbB@>o%ph;;mfD}^4M!i@$38cZeeQ00ry3+Hg8Ljg=)JVct);XCigW@ee%wSU z18o^QlpC4X_NM4S&*krLv}dJ76<@LLB+8~+Eu^E3HOnL|FIIvSt2RD5D^!godX42ewMR|te-t{kYV@Z3;V$LA;_{2Gof|~$bsivWQ+j3I zy&m*Q*Xg^(3tukkJE)JrZA1EhqGo|X0Y;L4rv-rkj3vK0SN8K{9@7rsPTSvMUeky%>y{}X8d|D zl^H{=ex9BH`QL9O)891sHz?o)fCcYm<@^62{McMfM*v{b-GX>pnkpo&5!u^lR!5M z{%Rm60E9RTVGsz?2ZHf|LwHb>FC6U)M@jzH@VC&P?U=@3wZieYc32-6ng>Pu{`v>| zqut+x{%rSe9F2euzx@0MiQ^ydbn0H`o1~TyIS-f_ex84_2?3GPOaJss@m_97h0&sy zS{KsTL~^g9e?RySQM)?Ws#*v`!u}=r`_Mn+RC2XaWd#IL{}TM;*gqtH6H|h*8ZZKf z<8ZYSTA&h#$0><8E)Gw{;Rs+f2N%L8t8Bq!Y`Bz+wNnYqP$mwC;AnL$90-Ezec*9` z{I3V`HytsK^Q$rN;Nb9J5CTWglC&}yO@|}%dJp3iU>S}IoK$j%cpRUISMo`CrIw86 zh-v#3JAzVxR{xS;Y?ozD?G9zLyjAFTuYz`oDY)#sCB5D1ku}FgQCguon=A zqXyzQ%s^mhM4YsD^c38$(Q$~shur(jA>r&)GGG>pKTZn_4>+f!68bPRa2HjsX?{fDBB)Sgj5PgQYQo{Iy7~KxdMR^^#sdv&=w)$qh(=nVT-u zn*d^9vpF=xB1PGZfq;F1;Zq5C4iGLJG0`6g2-z>&s)z)JA`U6n&FR!v$-reji?L@=4i1IRBABO^=325VYQe+Hn0?jvjbs* z^C$iaF(B-)e8j&I00TV1=w3jQ$Y4Mkr8E=S3X&+OLLDkh5+(u}L}W8uVS(uY7G{k? zWnv*v7+pY^5vA0?!vqus#>@xP*vA1yFAl#cL=uovLR)zd@4$ltW*$ z&ZgC9_AzU4|2&}*834|4 z8bD}oV}oE8IT#C(V#5UbP+&Cwjpn^4LTF%`1t6-{^=b$=fx$Su!3OZSo7o1S`7grk z|Ec-E&i-i!fY2K(6WA1>UO*H}jxdLd0G8}ufgf%`20;j1Hj{utBcV{ZND@rI*oABZ zK;|7{73uVHwGeBeYl8v|3^GI;q%b*f7%3kPP&^9>m|j3EIGm)!*n}cI7b)TyLcmOr z4uv$6)i5rHOUG(K8Ze1WGZE+t5m8M+Saooe9A&n#Kr#aoD#Yq65P~#V3n)Nu7e@c;{v$`s!VLg zn*WFf6&uM?fVgN#FCY*uh;TR%IwVRs;BMI;?(X&Z|M(;%$%B8*92VGt0i&f>G#K6s z7-)f$gwj8fB?cU-a0FuXB8r}cl}foFAzjAjL-mS4ZKzPhGqD1>I))A{*Q0exGCPb< zL!rfHl>kg7IOxPsV=o|&rm#xFg;2BvCeUKT9m)`@l`GQ)slz#D1rG@VGe~@%MTDfv zdBGyNT!_%xj25+&!9yU>YJUa9Bo;!9OokL#H$}aG2nmixHuFSC0*TK6Ll|hJKS^g2 zm_zhNYA{`IV<<&*IL}{-l<{=}hF!#ffLIc(#^1`-!{7=MpAEFpA@Lw1O``7wL_!5n zE>sgjV9?~DXqMD2Vg|$Ugs>nMnW)yOC^)(iWw6=QW~mej;u>@mAwwf%=;d;dGSn)u zq1ghOMGZ3$`C1mV7tn+v2jCH8e+52J$QFizK)_taSQT0wl8Ld&B}N;QWuPf|B9<8o zXPB^-AUJ~ygPLdxFdAaRlQ{u2Er}!50{#S(dI5Xqu#gDWLcvIejR(fDHEab?R`C^V zAlvd>kA4 zzeav9;J?oXz6JvU@vKyg!z3Z_DWOJ5aDZNl2tn(^LQUuZc|f2MrV?8iGAkKjp->$L zg)vCL1ymN0)nM#zr&z)%z?u<;7AQat4N0VjBeftY+o8g!1G#p%L9YoXnFB&he1?gn zK`NmELNSwN=7ul~DuNA)H0TgGgxMj&gequ3y?|`J%)v9U^%TC91LS5wxH*It3bl%D zOtOV(<~TxxN(vBZ779d;ry1#n5T-yv13S!`Kn2JGMgFQ75LmMfj3e{Ky?{VT@>^fg zFIC|bs{o9qGX=qb_sm9!2&gJ-B0Z2B(HfW;NF;yc z@~=Wi5NNc41t?4y;J6?;^!Ho_hZuVc9y5ysM*UI-+}j4m7n`*P18`qj1dD_*qHGqx zIVPksR0ikCghGtk3T*zNG7XhVVronRnUYA-@_RK@0vnYefjAH(G#G#yN5Q6ZU=EQEpq{kLkmlc0PcH(g!!&#& z7YjzpLM>*bl|_TXAsP}vPKJu<7_C$r!ZFc6WE0$|z(E8G69Ea-nJgNF!V6|-C?tkI zRB7eoP&iIluZ9*f8$?Bz^?=*L1avmbrq^&4beqn`X9JPQl^ev;V1J2(2Nz?B8lg>K z2vP|s>L7u_ATYy`Dv*T50r+!y;V_Af+Y1P_TA(r%DU5F+LjozLKuuU6QNTCK%?LA? z1B4615*}_+7&H!r39M)H)HofS!bK=80;5a?EYCtLL}o&$RVWHc_#5z-bp>>k)hIK= zbXJoNX%9C-g3Jb^ASg&kfm28#qzNTLlA&@?XfQX}XcA*7kbq#SH5eL54X5jjS}oiN zGNb5n-tUE;NYpa;5PX;b8xE9mfnZ&5Fo@3zu$u5dvBVB1NV$P{Bb7$c1Q_%zC_d0A zh7mDpwH}3`NrAPQ{%7j?WwG8N|6f#ZNES#e2da33Eu5)vgko&rHi8MlHL;N>sFVm{ zl8i{RPDO_QF6Y1&EdgP}vndFb+Cm2hP>>S2(8g3~`5<1nED#oIfMJ5fkPx~~U^U5t z6rmJ>RBaR)?G_AIs}2R~+CK|M&7b=eD@F|x+E@;umZB%aq~H(>of94gBRB%Az;YEp zw=u{n5j22GL#WJ}AYf&;2LO`+maN2qXYIfMh^d=(s4G1kA8%SxgNSr$UE1l)+(AePFPPs>RbZ8mS(R4q@!7 zSLT2RqZu|<0FuQE4c6gN{)X@{f$rDd>Cf$gjl~lDu}DeD5CV|y@eaUqAfp+W8Kyss z+AAIsi~-BJ!3+#aE@W6ZSPo5t1$OHOInBzDiTH91D~uS(QE6rN0ED@B$N{P_0af8J zW6&s*St_#Wc;S3tTYv_M{6hjvMwTuVK>!EAA#ARhYvJj5Mz~n;Yj1~UnjuJ{zsX1k z(ST5b|Ed;x0spPU_)kVhnxGa8n98OC3l>33L0TbjA%Vs~3PZ&fv4cSZVdQj-I)thh zAbJ5IFbX;xgc8fyL@fl^{}|y&jufvznb<*Ky$q>k1{w5>a1z-JBiYDytp7OQ3Yipy*HG;mL9o#d4FJ(?Mjpm&0|iNf z$rz0T&<2Gy3()33gq5x{1#w{{BR3#SqYPqG1K?pc4*2(#C4?Dk`YS$rL+^Kx{x9(f zNFu->DNxf8G%BOP0ON8o-jneo7e4I~W~ z0GDVmcAG7%^s|*+j8)Skj!DuB$1QsZO3q%MBm_-1agAqVQ7D@G$$bNRhZ@@oOUmBm{=DGhDr}Y8?{{PE!G6s?lW;%p4gh>&gv(iXZlaR}@l2sC+K*doi z!y!~^m;j>C@i5_3BUGcopoES)o@gT-zBlX5{EOufE@g1F#S>q*ed*o==ew2 z0nYhT8#}%?8hbVTryc$~6L8Vt6cZe2lCqIScUxmJf15+wMIArhM zT0l@+AhzEda3Rs50P###Adc*0Bp77;Rf_^wWq>Pd|J{?24b}tu!~etHTgOGUwQayh zJqBWTi(-$mr}l(B-Q6R`bkFSRunP;Z6-88R5gQ9zRBXk>z-}?I^II_IImaj8_xs*I zzvmx*ILxfM*IsMgab4HCrFf{Y3nFTjWUwD40HcYA05QZ5$pj`CGJ@1TEldeH9&z#VDp33 z{&U}R9T3Sa2Y{v6B8-74D~w>8075Wvuq?kB)UY5`uN*KY_Nkpd5VCBfph>Gn%dn(C zRDva7{bZk(B~Z&{F~3hnf~nl7!W!@@h(sP@1E(bB5Ne~6iv#v;V>q1<$w~S zoUCG6&1{JW=JFA-j2#J+oL0R>MZkNVf)FH9$fQ^d&d83+y^u$R0qDMuVAavAXabR= zCPZ-&mc<*!^LV8AGgP>(60}mzSAuD{IYF#nsCWB0W?s;%v+A%YB%%|M$$A#UOU4)? zCPW{JaELsWNkTNpB-B7CNVR#RddSUj*rRbENNBW@ylT5FEXR>UUJ}DkQV2uZ5E7<3 zWHO?` zZg-#p*m$6~nVoz#NzL$aJUF}??<6omM;WmiwuKQPELBGlpAj+m%qXp%E;p)}2v?6& z0&>X~Wa)$i6GAWx!bAa281S2dyh;l_00jn{G^Q1EAvYWo^Nnhj3#)cU%}Q>7Yf~|# zGLTwxERZ*VBGD}@r`QiD3aT6&1d)vC1jV>7WJIa-sMsGNARHu%{6w~l=)`M4=0gZD zxk8;krqptDk#I0(aR$XPFU1>k13*knMqro}aH}|cnOqKg^fp~Iq~~d!Mt}fPEb*8E zkX)-lZ?V{!3N=atcomw3?b1U5ry77iOuE?SWk4iE3t>T`5D^1N5I}U0!vpcyke(L+ zrxxUK0E-W~p;-K+pv(YFmcWRf2kK)J*$;^rL8n@y;>MsL!=@5RLu>Ejl^Ihn2eG7E)<3snu+S^<;WT zs&trP8w$88k`JX9bIDeQUyF{ZxS+_ES+z8@$L1%hF&Hw3EqNTCl5aAuc9h z&}lUUK(1N!I46d#6?+ZdcuI^z*|7|lhr*)jktoQrFya8;j{_;FBLrK)aTG}{eh{Gv zkOPwGQ7}e?!_di078LZcqye!l$OwvM4oQ?pu*syA`_Lk`NL55zK;+{29cVoW%X~x7 zhZR`}PQA{qSNm~3724&MW3>Symxzs87y+0O(6Sv;PY};TlUQOkQy~QKB+QL_8z+vh zB{+>Z2FUgpDmT_(LZmceAV^mm-9kYi#1!kiY)#M?jq*IO!4yPc00e4;X%L`4%_6K@ zZNwpHCQd8Ynd9hONUO6VD38=+HA>_jN<=25#O$6hK>$7nP*|D|2Str6dqw#0x*>%T z!B$2j7^y(ycxa)A4Ov9$3Z$MXshl!MiTM$wRRDG?K@TDxi5fIR-irDPa6cgq@a%N1 zImSZ)F^865gsnDzh>Hpl&>;MKHZKQu*%c0_&Q3(hylOh+ zX5&=2K*U2r1+fr{P38pxMhht@Mf4)R6L8Etu<4CKEzNJSFvB>ug$Wx;N+~&pid#s= z2|Z3S;=$MiLL*8U5Rv>eIhy71VX0od%`G;7Of^alv6%{$II0X zkDJJ}vupssz+udPuoVGgh|W}racW2;Vj%$hWDs;XotPn%VO%JeE$HLmXgrsnXR~@d zSSJk?qJ~k_SU_b(0urwmEe0P$A@-=-=Zc2_xsFIf2Yosz60}EfG;EBj!JwmBw@T_1 zSiz>}P?=z9d59fQp5_?K?Q&!AMq>a&^7COg6frq%m>^ND4dR&GI65a65-f6b$fog; zm^ya_osBm;h=>!T)u{lU5J1dMvqC7u=r9;dOoC-->@Ho*?v@F;3X3qP^5`uNrCx6a za409f4+S`wi!z9XM%bjY`XCoC3NWbv(~XvbT$U$e36;Pt7_~H?Jjx)MxKtdVmsKRR z*&#RRLS7Kc0&K6)kBJ%7s`!*~7^@Cv^lN>3jFD+^1+ey@0yc*@2s)^uQan;3pbgBV zV2CHgfqW|jbOp``)u47p3^BDcte4?{)A3;4I*-j_tK5fbgw68Md{MxfO4${s_pgiv z^M`w-#FG_(6f;OlNeJcv0?H052eRJ_7zrU*QotCI03BO7pxMFou|Ou^CdRBjhanI` z*@b$vNQXmXsW`37<&#OmVIPNJrBSR*KP^Ua0D=V3i%}A`%gdIC`8*pIc({PVFBDb| zh+##62MNKj2QM`etRlTrAJ8&v4nYWsicB(r$14sil|n7VWs@RYpIl|;8*Nx8Jqobi zfRN_*p-^yC5|hwnnm9xd5p$_}AA_K9@B$G@AP@jC%^iXfltgGGp>+_f3Xz36ibMxC zIKn4jxo)1{>~p#_oFIi3P~%Y{z;@7lK9XG=w~&nSIKb`#Tft!`+1XKa%q5M6FeJ4> z85Y@;WR8tvcVeKZK`HU$V5Z4H1Rk7^CHsX;mlI^5F8+cU>ZA4ShJP-kPL4WqU~}YD~b+AY(|9Ri^6`sSENugNN$f5 zFnr_?9WeefEDW>FpfWQ%r7#!xLt0Er07!;PXhj@BZ=4H2f*hk5jd43=G^#?$K|6wM z85eP5xqPM+;394luOfQ~9_QbA*~;vl1o8&;9|)%y!<78JmxVwv_=}hQTZsS@VJrzk z>G|TA!R_Qn?FcjARr#a@!0b8k7_yLGxhQlN->8*S*-R!uVX*3SDycl;ljzL`uR|b) zVS<})^y$JzpBT?*jhm4DPDph6dfA(Vnb0&a$)=Y>Kjj}~|Z zHvrCMfKZG;WSfcSQInivh$}@Y#3-y1#ATN??rr{Fobk^XRYe@72;5Q+4us1JeI#24 z-UNJ;Ne9RzLS-DKaOh5O2*{OFmMQ>JEh7Or2N!}xE*$s+Mehd15CG$G|Rzd>!mysa~Mbu^|nat2(ZElOjVF^|as0gZpe3LfhqjP*xCnDl2d~zQNqhhLY zu*U3)m~{b^L#Pg*F?@yAP4dfd0WzDbi*QITH;&;55R?)jQzGTz37mKat0r-FUiV?9YiD1p_Qs5B`7&%CO(10+g2qhKp4Mi9S2P+2zU@OR?{sy*&U7-9o3PFrP zQE*~VSWD61ApK|Ij^7Lk#9)s~=#>M;gcY?m5e#YtY8#pvrSL;U11K+8T)a1ei&{Nm zI06_J9?EG_;~AuongMcnw9&^FkuW5dQRAdpZB)7pL2PkgT#rIf#)^a}hEjn&=rEhj zWCai+5!^5u{F^U^!TAWj1(=-I>;^o(zz;dWEMPVc2PpwKZ;FpmY2p86AV6;; zCV(JQNmznOPmHH?T!=@8*{p~RZ)1>Aezd@X6&TQRi4~7!Tf!(62*SXJ{qL-;wD4Dx z|1Z`mUDh}{r-sA^oI8jkMNL{dVo)#<#E3!A0ujhHMMSWNnE_!`k8wy8lz>fGp~M54 zu}ZXqM5#nOz}Yu|=Lvav@ni|OIW>sXW&ywsV+drIVZhL;7~&%dg$^{qL|3TYa-xAC zr=kS_E2cyhV9fa1R89z0v0hX@LrzedgA$H|LdC-4;nCgvD+C+mF{U|2h>JoExFDiJ8;CeM6D1J)cxao)gJLpi6o>|D zQzgn?N#6e}pZn`;A+{zIjXMWGs)=KMQVeB;1WJz+gZLf7kWQ!9%IQuvkEjwD1f&?x zX!9Z{B2Y@eY%hS%KsFd6#z-NvP-b>IeTG<+z&4@c77AeoMy0{go`5BdwUq=^28S^l%+5(Yt><b_ei(zy?#RC); zN@GpUe9PIas;Mf4;@91+gZ|M{sU+6eC2KSRxqF z#|LnVSD->;5R+6N#xb;1DpeW`&_GzL&{;%%B(l!#Q-%OtY>o>WqkJ7$55AqRCt&n+ zt=7qb0BMp#dNp_(DY-$gZ^Tmv;g=nac^2 z-6S7DtyhWcVH!B}LR2tnRsi(YWi%OJ6h_F!OTs*p-fs*>I6ei>Qvus?6l@1B8u!?G zmCS%c1#l!F;R@;eD3TLriV~wThTCkT`vIhc;{r_of0Dw+pXRU65RRa9I45027i&>w zGml}0M6gM%)H#DfCx#UkN90&RKopRY6lM!fZotsIa+4XblGYGk<$#=89ZE-zXRtvE z8S-g_A)pY%Q=K+93k^UL9E5X1I<_PbVM{F_w+#P*;)fxS)rte4L_@Vqivdsqj91xFdSI#2Cx+S{wzDD<*J20v;OZ3jIR13k^lFb{8ug z(nl~1GKOPCI7*8|;FTg|pu(_vjRC;us|X8etPn*f8*lEVEM&YcOsFSph-|pM(pu088$x9FQTg zfie#Ou2Pc|153jcHp1tt-8@r}EDYILypa4qP!<1><5vzC&n?*~EgA>Mq$<4-r49rT z0f66Fd<-o1N%fG;slrzzQc(dAwT9I&3IMf%0BjG@;gBEk(E;bIlfiCVyc)Hru%NP} zi41<7)a#JaNdPxx(rrF6GsHFd`98G+0vsRR0K5=K#S9pnUW`zyQ5rC0f*WW;E5nPI zN!F^IQ2cI%919$npNtr#0lGmV;(1913(xPPhdDyvnJK2A*ny}~tm>7Y*c2>ECi86z^I@P55X1v_yFi4h-=iN&F0KtUyxM}2yfUMM9+ zu|S5wm#H9(U(Po~0Lnsxy#x`PE@nhSEQK-d8+z-^PvQ6E_3m@5FF*04_psrG7l9TC>&=*BugCF9f+yu2p5U^{g=l}rV0;Ukhua^l39u>>wQ*eM5 zG@!BoV6bA#{AwcwsOTy!BtrjaBTzen37~+DzF#K`grmTABA6^9<$KJqTZYoi4Mn_i3(FllTiU8uHfb$aqkF;_?FPr2+Db3=LlP+hX zaZwmnkbF9`&O&zs$_a<_${6N=EXtNgNp@33EOi4~7eF2;pAa@cM4OWg;p||8k&RHi zUbaKtm_-x+)Oe_P&8HoA_ zPzAc82QeEkVQPpAlJxjxk2p~X040>s4Vz6`K2c5-%YiIZN>(#M1gqoL+$eG5FuF|hwcesn+YF;QT$NY4xX>xX3@qZ zMhjpuZG0KQ5+tfv!~nQzNsh4memZzYi|W&ohkG<>>J%wfYyliCIr+NY)=mldwIxXPzLJp!r ztI^BEga{{s;l=l1NNV7dbuI_qCpJkV9<*KH^@2+$UcFPv)B!ZwDU&PoIy@=JXKTX* zDo`eaV+yX8+kk4f~q;#u`Na7y&$M zinnr6uog63fh8ePoX^X52BbC&%V+k$5gFGdkb&x);Z~USU-_wUb?l2M~lBCXlS^^ga+M{*eAcpkVOg z2nLcL=mCVV)sLdnWD#aa6AjB~c)FL)(rRTqI$$q=QdCFf!T<;dz^Rxkk1F*(IKUHf zG!c`}s|@<%xlN23lgMaxD@BYI`ysl`C-B8&L@yo^5fw(M17lHz+%$Gf#xe2%xJIR! zbU-vi=9`^NlG+yuBU&*-<`WX693&W5Vz7Yhj;RMhM@=T9R6#EbZO5<(BqA3!xPu{q zU*-tuq&NeUtca?kQ8N&`Gc|!Q(E$7#$}f&W`X~zL@JRuoMvdPN_V`o|t>4O^G4KpM zny!a*K(G^v0kJKu5*i28SVd}50gYEWdY~#-OF*SYos zsW(7J0Wb@L4_8K@zY9J(rBb0#P-uvd8VJf2ZX(DWBk@&sMm-`W&j9W>g3}7F@da%n zJ0RU08ioL2N+c!^Ncs_v#znI_6jmC|!eKHw1cr$TbdF?^7(?Yo*j|c3LZ(LXaR-Y* z)F5R;G#+s0OQB#%Fa`_7V3#@Nc(9wXHZIE|6H0769?xsDP)HQ2&F8e+l~|*aVk8)_ z6sBCRQHo7qA?R@2ACl}kIvhnS$xIBQRiOzgoyY`RElwTCd}%tb0|5dDz?_RUCgAYN z1cTXYLV!^UJc&SeMu0ZSOlPWjHeO8NwNySs0qlh-9+`xv6r+J;5isxo^P&ThnCP!H zAynYKOp^lmMkn)can}(I@{qs3!BjcmzmU`ZQ$|p^9$;~tMj$%}@mPT)D8ZiOD%4~E z{{jyI{#Jo4Rt`vT0T~I(;pL-1O$@p%I=9s@SuCSzc-3 zzcc?|4gWt`UOC{uGyngK<&^{eYQ7in9pH*N#ETM1PLqZY0A371D>UF(E}TQb;Hd># zEzU&6D3ufu%oTz?Df+vRS~=jaarLjG2Y!Q~cvFkY9ux8250woe;>|#uw#wcV@qhf$ z&m!JCd0{?vi z|9t}geFFb|0{?vi|9^P`f3>AExj`?wFlahg_g{9t!~WU%?r(kWk}A95N&EM&3qA^( z;?>3C{(KMLV$>1@X{%VTHp0aqhKv;-wF!AH!!;KQh z)9-a!%bv0*>38bpZqzaKog44(P`2qql68J(?@4N;8a6xsA!~3_$a4(0bm<0Se-A39 zc7m}>^OGyz-G7nYXx^H4QG7y|%d1jzv$oHf@qAC$Eh+TH7t5VDySOy-8j)-~*Rz#^ z?&n_cyR6+qSh2GG*p90%p6FM_5zHAwA60g=tMO%|d+X=58-20h`?T0IVoBfB!5*u6 zRUkp!IUN?*|}t0{ikM;AnaKEVK{C7=FT!%voBR{ z3<-30+?7{9+3LdO5oXoQ3%yo-34N_!r(M$HCS=2hY2`%UsrBEDeOt6?BtNlgPMf^p zhX?SUGKh5d_92(=6nrQy#3U4s9)A4jS?YFQ!OxOZ^g2`bx|giUW$iMj(d!VlF8R`J zXpJ02=$vX%YM+VgFyj-Q^_I6c++H9VU$xhy7m0NT@gH|BzS&cHJ+^ysauX||)zLS7 zTU0NGkORl}4;$X@9HGOr2PsR{WmQw^uD-4tF`#;j-?mTtsr;8KkNAhWi*dFP>}{FVTqL=tY{nuiFKBWA3pGhBn+YA%~D9}34pDY1g`0sj5ZzB z6B&dCuM;rXBqA9*7})4RDqe)~Dd1Jm7%>UlN&r8JSaJ$_FyOrWo}kZQ0^dWZ815Ha zD*hdB_Q(Xb^z92VF-aI)+!`h}34@P+KNAOjjZcn=2ftQ4FDWFKgLmL6hlH2}@N$Jw zQiw@R!oU@03H(X|um16!kl5!j$V`Dj5Gdy%xhWDD3^5`BmaJlG;G0=8@YSUFm#}1D zWVmv;{{1UHh?slH}CZG|Mu;j|o1vEkuuA*Hfn9(nDs<8g=8d&16SR(0vIHYAN z-kck|8g4u(IZ&0=y{WI(nBS({{H871bIrJIg}mOze%5Yh()Y&roz4_|Bfgzh9wh!Y zE_uz#c{Jgy^?l1`d}prM6D|LtTtBJ2?7c5ko~_jOdSw~hHg@?=`vLE?pYJ$cUG@!d zv>4Fu^r8Y=zT{Mu^KZ+Y8(VKvj~Z7G)%*JOcN=9*Kjq6#?QC%VSj}ch5|*_6W6zKL z*V`8!_+tC~((WCx^B<6W&PB#4=1*l$x6xa57yb~qrSWE zUB+Wy>?uGsoqp)h)d#t@ql#5Sets`pdVAETQ(qa3{_7d4J)cqUFP?LPNBwharu*h?nD^=WnmUKqr%8+S(@*#)ZDQMpcQl9EN2ZP1FWI@^a)*Ma zoV~MJQ5Kit&weh5ZST{L@a*!%i|#&oDL3v@Qe6jT+b6AX9A$X(1lRMLHD55J^~6Qb zA3bI~6gw779BV;!eE03QS3P@fEV(zeX9|KY9ig`FRS#~aNZj#a){hmGys*J@iy5+_>ex^@plT&t~ZZ8J^8TWTNwNr4$J%0Yy>7$PZ z=JvnC9H;2?vfC#1n8~iO)zSD)@0MoIIxel{nALm03$^#bXRK+_F*1EASu_bduI-Im zmpXp$VB+2Us>oPyzkgy8H^cV%tNJ*h`PMdP??z`NGc)H4f3Dp1y6oF1%ERW*&r91j zYJOFpd-&5cTk&b=2D^Lng*0(SJ~CKZvN8o{bVbu-;C?RPWM-(fB*Jvuc2O( z`$;F$3=h=X);v)!A3t@=Du1asXX%fivd|DP?-|nq`+jUof4g1y!7uAE-@Xn|{W+sX zkZHxWnK!>x*&RaA`*#mm@*(}yjl}E~IlS}^jH_c0m)t5cbRPZsLARDire9jJbazAK z{$X-ffPSOUbMuk%hz&Vxbn+~>leH||y-xw%{K?EYb5SkUlCiQOM|#vPid?}Qe<;Z& zif*>6lR~`hOD4bij79evQo58h-MxR(CLwmjDE`*O*(G^~vC9~qAIp%f)%Gm^dVTq+ z1+uOmMUAtnZjDiHY#WiivhB=?U+=ra-}vQ|o4nud=^6_xuuPm@J$(_?ggkum8PSdI z9Xfxp?fPA;p)0eOESZ$J`a%2qGv8nMjJkL=XMF#H1?%QKEdJ>o)xYlISy|81Soc#e ztUBA=e)-8Kemeqj-L2Y7zVRNcx$If*(LZRv@wZv^Z>P*U@%{0|9|s!TZ{KlF=7oWC z0%be03MVS|4?1fdTAW{QZPPzgXIk{OuG-TLTQ?rvt6FoWY*eV+J$k2R6Y=@ZqPx-h z(O~)g)|-YL7>V1{Jtw1sW@Y}DDx%x>pU!cbmnznelD8jiyA%tR|G0Ag*1F5eoR`SX z-W%HVT>jhTQL6{#LD{N}llo+``cO7EicA}F^W#AGifrchlb*I81nXTJ`t+P4TybeH zw$~4PFUmJu^{4&bj(K0@WHq_+O3vazywsoKNef*_zmZw5Y2}b=T_Er7rH? z;OhOJnIEXtECsVZZot`xC0tx_-1}qXj9_tE!L~cE*9O+7A4+*4=y+&Ta04cqyo|Q? z2J;B*3A1+r{xtJ<&B2!onziOhFa#rn+{1l|_ z+$KGM%v+Ng7@2t0_43n`BkerJip9ZhdGkLVvXo9JGyYx!N|CGrSg-P z_JRK$HP^X(ZgIjP*_36my;*Esah?3BrGs9VbV zy|pTnd$;OVIdjN^N&fVyuLAY!G$hR4HsN4>Q~~SA-B5!U+EamAOP(IvzVKMxvdzZ` zooim-7v#$tx3H<}cHtUV+PW$mza`zpUf;Si;gD)(^W6<|Y=XeFC@1>b*(Zv6cX0lQ zHC@{bcF?Qku35RSS;EcMS1m?W()kYE6ZW-n-0y4>+%Wa7ahlt>W{p{B@kC>zv0P@d z%OI|IV%BVAWP|Uw%-U4^ttM@d&BVN%k0U9qNsBu*qMj%nyecbkbx|u%wLaIk=QE$Q zt3EV|-sd*w%ZNee<;RTOs;%u>N3&eh?&#r8J%3;DbgZk@`mSxXiLR{u%kFmFn8B{q zXvR$Zk#|#PT=>>>s{KJt8nsbdP>s{*~7=OuUvQD_*fcgRI52JHL4sK zODR4ww*I9Qv};^1t8w#!^iC_Mw8U6j>GHZ*oqA4D?78hn!MO3h9*r(-B-Lw-!=Feh z-jk5sihuGdEX8NG8)_shnSOU=#&6*h{6bR?{(0ttjM%mF)5J*gycE*)5!b2?&fpJP z(z?(|PtBi&Cp{H8lZ~-qn^unRT<<(3W95nsE0zf^c9}AnojSPx2UPD*&DoYG%a?6x z_4M4kEhOg4U8idf$qLqLnL~Pzn}3tVYBh`JIW_qas;`~hTz7h7>hB*;J{z~<{)=&V z(pmcQy5|J5*po4HlBfSRuL`$t`q6REANR_x)k%>0B{;BpiT5lxj-3>D&9HSzgVvfh zn||+jsi?=?&N=i&w-}u`gOl%9y};bvw+(LgB*WO($nU*QOkPnx@N%$JTV)zmd$@~w&HuD;)4&o| z^JAYgpZ0B^*y(Ih^Og%19V#dmOv~)wqqm}`qvZ))waL?AbjJ&I?lq~>_MW`q=&uEr z-HjxZ`wj38E1edKPBmWl70qbR{cf~PP(B z4Mf|%GgDWWi;h2Ga-YMqFZ38%r#ol%h>Ljg^uut+jG9?C>(}!`b65#=uHM-{RsAES z+p3KX&%lE^X3DN~TQ2)Dd~W^X!F$u`^?NqFcfM)8lIh#F5bc2#x)p_abmQ^4J@D7b z#kOm!%A2gAuC6H*|MXm0->GQ(gBmZNHz_#y^LUh$c6Va^q+LX1%P0GP9zKLwC_S{E z*{gQLlM9T#)wO3eHlsVW|27i+C{s7ImSM(#j8DdKdunuS+8gF?YkO^4YRls%y)Crb z8dGUCXw$NAyUNWU3Jy?rvN_8?4_-^Sr)w%7VK4 zy3TobkZ=6Glz*y}kQVHJ`cuD)-xaKh8=CuXu$mEoTq~JBX1uFe=9ZnC)*q2SnObMn z(3v?CShv$V+9|kh6R#}ZIJ5;Vwzofi&crjqoN7F{&gpJEmC7JJ z*K^v`(aATqIWH<-&*>~#exz|Cs_kuYihA{kfxWIyx!M7#!fi_7w#N1o={s%p6n(kb zPSk10{93Yx%BUy0n+x7X;8b$i6)o7W_MwmNwT0HEe7_6E|8F*gGBChOF&|PTjJ%9T49g*e! z1#9|zJYA(w|6y#yGRBD8;qz}sP0Vw4>+-Zy+0In#rU}6sJ90}i;oB{?XmQ2j-6gTJ34!OmsG;^%3dabBSol&uU;d;`)!O4f=cuk68&O7T>kS#Ya9Vt82 zcD?<{o-_UM+}j|aT{TJeSNyQWP$RnX#rDJw5w zJ9>uoPG&XHDDF%0;%+y&yBln3gd8z_bD!Ue$Yw2ScUj3dd#@W ztyLy!a+@F2ykP%mlD*@8SBEC=+4CtY*KN6W+dLrm=7)(Y@_gHnNYNo#9~(bXSTCL6 zwB+j`E1K442zKqHw0-l7mM>N>vEJO=c6h~K%ZO)o>ArUNl#DG-YunurTR5Zbjh3!!eWtA2(0lgz=ys>nf2?t40{n2dsdfKeHx@pt zf2vo$bGCOuM=Pf4_(dnG73_2t-P)S{X8w1xFQHXl)rXzRiJn~-2K4Qfz3!#>_ql10 zbt~s65}pd~HvH1;_4(yGC^wV$Jg5(SUmiMk>ZJeHmx)bx=PoKHF4wFYSLdc;S^<69 z>hf;7-O1Bi2^a62x42r$^>5i^(*@^;6RA%pKbkddbs3Sj`ulNN$(t?PM!so$@dhI> z61h0=F#FuIFuZM;^njyv->#trt(nx#`aJ>}YcxCyGrjQr(J=cKWA)?01{<}fR0ZC1 zwD)Vn+w1#owZzRDS)Mlj?&Wq%(?`)V)U!9^Yj#~XEwMw_b%zoP)^tL5uF<2uF533y zqFwFA&$^bfZC)*lU{x-$h0q>0%-l8i-a+iDlgE!>FCG#V=N@UiI!vAUam==w<=?Rz z*AM4y%GuQ8+?}yc@%5_>ueq{io02O@hebaQ$ChQcP#joG+Z~mTk>a>#eJi=O$Ibj_B+QkM7QfgeluSjM&s;KOPiZ3cc zO@`fw?n2Ry6nrJD%XxTAI5&6V#sy;%Eg60DY>8V^TlEi~-tk~vpVNirTjEPsUu`jy zbX(Rm_8&ZMp1!!nrny@>D>hUs!RStcp4N?3=iYWpNLzHYRN2T}!}!eWFtt;`H8uMPvJz3q9)XVl{nWfrO-RxrzXBMAKZcSC~ z(;pa|+=FZ>*)KVDsQ=7%tDhC3?c3)Rby|@+YevUi2DiH5T<^PKty%RAg^%|f>TbM1 z`|+cE9sBTF?eT}lb@X|~2{*?aY1g)NY_l#4I(%yRuEC@CIW0vU zsyC8IpIo}Wx@T3&l;*r8t6EWJeyAZe&ToXs6)jRrA9#ILYCl>$Bbo9V*R8|p=YxAK zsdwtwyY5TR92ws`le`Ewp?iN0GPXxe;)CRmTFcDN>-(Oqi+7xA-jRkLIaZg}bW7t} z+uM53BaAH!+LF4gQ=c-r4nMSOY}2%A2bQPhJ*;!L`_zo$`hj)Kq`dbLMTaTX%4&7y z+l6-Oi-JMRCL3i$X{{yM(ZUHwoOfKxp4Om?1992c_Pc5XWWNF%jWH9 zxQ#hZxj!~?yukQ^Xr9-0K-J<{r{3m!gWle0l2PZw{Jw^ydyB4rIJ&H=DB;tPt(b2o zk9TS|YX7+G=OfEqtuwsV{Baq^O;a9450ti`ue^mH43dRjL%sdhof_JsI3K^6i8HpA#{QvzG<= z`&+CUs!qPKa7Eg}_j3}CdDuC=#c3L+Jm1koJ2%;uyjub1HP1;qK|OHqog4rD^qe0V z{bnsLZgh`mo#JgdWWvF@TQ)V`UDUcx`Pq6fxLo9Q1iq1DYR9};Tcaqn2u z=+39(F!NL`L`qIIk4t^8M7``q9y>)LI$k$zMjZn`@%qu&`M0BLHebHuj%@d;DL2GF zdf%ts|81Dz>$1)KG^rOIdj0m|`HN}t#;F3t`%>D=+WgqSoc6U0=Q3;EKVN;!^CgF> zK2>RlKFmht5%SL7ez3CFfw!`dtH#65rMY?EhD<#;uFSZYK5@%}euIZHPV?I4 za@Vq032hs+NWRlFdi;BfMeLOKY)79vC!2GT#EbZK2xWfC&0PA?ThlP}y1aRMe)H^m z0&U8P%k;jMIW~cW)viksjCc44u)32UsPbN$|KQ~6IvORx4dsLgnkEOf^ z`PtFxX7R@d3pQrz&8e^2Pp=(*f^HYOKHz%yZ~GP{8rJ#}UY4vx+{i55+oDL1z zX-*eIHzOq@Mzu{dKRwgcJcnbb07qugo2<8uJo2-sl=!I^a_OD_2(C?QL*W@72M%y#C>=z~+*!$<0<|KJESe z+tM9%JM`j9ZnsY#ak>40VO_Y;h)@RqWx>1R3va}kSC1Z_+p_QkD^bR(J@tPsjD6{};u+_|fXT+zhTI|M&P|)AzhMbO zBRR?;$!kh3l#X3;XY92O`}WS+hkJyn!N)W#dy{A`-8K#P;%fsNeR)iBF1>sHhM7-} z6#O7Heb#H@k*+U4RA2Sm=Cmf8LnzDISKHcLcb>LgSog5WbGR_C#XjWpE0YTB?b?A1myJX@>ZP2TDlD>|5Cq_@o8FGoy zA#=&~?aS*Yh7zjt=dOMYMmQ$#5FT8xel4|~_QkAAX?;_FePQ9#G8kf(~TY4 zU;9DS)LP%JamM_Gh4>vO4!=(8nAmnt&pPQ>^kryR!Fcy(d2~c|4I6iTdy>OzZ8oKb zpz*zC+b?fgmXIwG)FK&NB}@8UHY9Z#uHIsBFL*G0aHIW4*FEa?cuq6k?SXaM;^z0a zgjOYQxh{BcZQr{pA0D^JVs3r!?wgr^VSC4`UT*u%HRdnqZ`u3qP1aW7)BD~1ix1a8 zDf>-)$vS;$W`ER&qbuK$KU{cxx_jV;ZYjUp$mFjE_s(WFOCDwS05v(G^T^Dd8*vS` zi1uXqYHY%P=znj-+Mb=NZXrBL82QO4`sO0&iGkG&g`;Oc>;_JN+ zTO<1~SU=UgXgqr%SXDMP(i5G%YNKy;hg->QSF$!`=meVExSqc`gC}cjyS3}e_e17J zBkQE!P&8??KcT*L@aqws@U{!MiBG@e%^N=#t4QbG{?zMJPEnf`-=C`Q@RdvT=ise( zYPK3E46Y>f@BVG*`M~N?x2>!0cWm~0T48>QXiPu*sh@?HZl=^IooTCiv%Ja8GiT?n zH@s&K`mV*iNbG(mqve+yqqCmQi0ulG#XYULs{4@W0CDpb%ldu6;+C@7_UthAlzpyT zkXR(p4=K&5bF!W2P`%E4Ve1D!%a5j z>RXgw9#<5oJD$C1=`|ejNRJKaS=Q@czn8m8`VV|Fqs?c;`o3x8MoR)ZQV*?fy?Max z52eJJnj-T1`M2!TpA0bKQB}*;RY%UN!avCH{&kmqN%yqv{MKz%sVs{J8x=?vqi zh-dh-ISHlBPIB;d45^mBwXd5Oo_=jzJuIa5&CXS|UjA;Ub{Ps;zG3Dkq^#xRbkpKj zo4@ZlM}p4pZ$CWQRzJVb^Lo>_Ne_xH;}C7@vwKsR%%=4^Df*=dN=5HGCUlv&mDBUE zL&Yh2Y|biPJu0-hcgwvNeTLF#!l#t%ODlW5SGWKCxuUG6eU@Lz+q8i-s{WxHj&J0g zdNkphUHE!codZXYy^(5@~!!3E+Pvte=LscJH^0jql$5*clT0DJl zB)L{S;+5((>u&*}a*siq$#Z)3cpT2Cp0#Fml+nM8>t&Q* zJ+tEX^gSQGhx#0QXYP5IO#gAdAw>UiyX`qh0MqQKDPV~NUKT80b#K>zb1AjP&hkxd+of~o*JXCsy3232gmA^$ ze(&Gw7HX$8Zr1KSN1A(COV&7$yTXi7->zguM}DFdx(5!l z&ur=<8O!$Zfc#cox73D-j=hmL?)}5w=B?wS1iN$wO8lX0Zr7b-io#pZE0}GZYYxA> z{PW;zl+ZbA%P|pe_7d3~{izlge-TS)?i`u?f%x-y zn@d*{lE|%J)Tp27dsN)J`MQtu>*OCe+@yQ=lMP zGDO6z*WMI6U5&8ZeR(^pZ&(p9ceuK>-YCYlq!sqp>1GcnZ|6vDYL(IbS}m!+Xsf#P z{f@z?Y6~^lQF7zj%O`LBT(irB{I6wmuJylI-1BOmjSViUQYokb>x#htRPk>CpH1+;7L~B+?SF&+LvXjV2r{ z9e4il+=7Clri!XJs+GQ})3|VJ+M0Hhne#`@PO#+nH544mo##`}+OS%4_<}+CV%qS* zBcE_yrq|s5xopnvR^8{`Z+mF4cG#0f$DAjIogR^#KdxtMq#)f{WV^rT){wRrKHVGV zcHvcRlM7Z2JbPw;iP!uhJAGoVy}ZMtTDMw}L`AvVKHhi{9d^6tnuf3G4+LNJiQ`@r zHhXaL`I*u8iZe>aooxzd;g!u-UOeBX+uj$m*JVVwtvX)wHR?Ot;n{r(+1~&4*(0mc z69@F4)a~L(pKkw)TC;FVLq{9rozzXdF@5axAA!C*e%^9->DaVQ5#e(#yEq|za_eC= z#y`M$ZpOiw^BXO4@I|{yhp2rM=iGbuJArSIWfe1g4okGTlOw#L+*(!w^pBA zzqsioVaMj{98+YNpDRa>-qUj7f-mRG)NfOGY18MN;Mr48zwZu3lu2F621m3<)_>yn zsI%N8h+dohzNvNk-u!Pf(%_G$2yY(0`+Z`zKjGrWo!PhdRbTt)*qR};Yu_ALXuBp( z972%iH6OHYLQ~neL9Lh<@FhBhtoQY&EA{8>Ghp$Z`&ZF zJ|rI-b9pX9m+v#0Hd|~hbLzBeoZD_8;Z}N(EL=eTSAa}~L%3)Fo&9$C=027L*o*O+}vs!M-c-<@&i z+V9UF4EosZIe*TvZ;e(jnm;0~oxb0K6-yQ`EHISnKgI?ZkEmr*bhXuX zc7F8hz0g)tyIaPj%k=Tsw&#Y7dtFjze_?sE$Ozn#wiIRKk6Be#tg)KBHMXa1pVTM6 zV`kfzi*r78Ey+3kyb$}eqq4|B9p}hI)+}CpH+(8jk+y4Ihd$e~+KtF7t@Cnx&Axq- zblmT~E!}=3gu0b~*_^)rO#QUBa{ZFI?X1r)gZ|46tb+)TV?AF$a-y1Duw$lx%KY#J&t{1<*_okfWqdGS2yS`jfZP|zU zWnJ=Gxwc;W>iv4O@t3wU8q(@v8|Vo$c9ETXe|r}h+j#H6{#Da^^y!#ue6_74rF>Vf znwrJ+S{DzLZCO{vFeqc-X8w~P>FxX{>zXer?iUbESXf3_bYu3ib;FO>YO8vgko~5nqgZ)^{wPIBQ)>#!Bpz0)t^YGroLj5-ckI0 z%W`LpK;+ye;bl+64>#t|J5+Z}hgTC)Up&%Mwr}{1YP7A($7=^V)ap*nvW)Dw_*+-> z!l83+s5Xx4SF-xirLyMdGJE_#08>D$zW_F39g)#->Q}fic+*#MtgH0K8bD-9AGwgG zs#p{fEtUpY$U1j}VGq{1R|;wzT{H0kSO6(ohr63BsOSVs3qdudHbDjZ)_Mr4yo5qf zrJHa;4bueG5EE1^aFbeYQz?^E&~K;j=CY}&*`cP-Ly4NA!5%fMX#k?8cnT)@BwG#| zatd;)j@SrMN7Ga4*t49f?P^L7!Ijh$JI<_?=;Ke2LJqPt>o%gfG#;_%dC2KebqqPB z&OX$1hd#4bqLlYTOqbsQG614Dla{)v0-&}kDe2=%O1kB122pvjRN&ND9p`)Aoy%+)d?HxL5X6WcrMF<@=#B_9d1H?;MP+dn4Gs3?c)l5gj zHXVJiQ!0}lxLRn~3zya1N|gBLZyG~2C9TYbdmyz^kv66W!CR1e9tbkqkI#Dl zT!zbqILb$|wvY!gv#cF!lrj}DjT1@09X}A^fwM5VJ-GvX{RsrGBB)}lAc^)Zj0o^S z6_>Px%u{4KMJ4QIVv3Phdl5q33E5JC)Xq0;6iASL&&_wc9BXN(K?vFNNL8|GxE;p| zgo-g%P|5W@T$9O*5<0_P?$qMCJ@p0mGhdv;hW>KwoI@b(R?lH;aQQ}tT2&%=4qM?c z#0a!JdqfW1_QN`&IrJ4IhrWg75H8i#BZ=hnoRLJgJ&Evo+?tcCjJ9rA4wdR^a*t6G2q1&FqAL)`5LK<6lMgM*v>$2iF zViAMWBPnvDmg{8AZn$4c9znV&@uGe+Y`HaLh9P>h{P2ur%|}g+#`goEOuQdRVFnFq z**HwRwK*&Hi#IBJrV-e9Xf@UIu-mp7cQr@e2^mVt1@VfDS$3@t;=|36M|3X@y6D|R ztea)eIA-Unbq4RT!}2>#oLno_#nSGC8p50GMQxrQN=1bBd4EJ(_yP&nYB@(rK9GB5 zo*}4ERsl3peI_v%`%8U>UfTSAB{n~0F?BCUlZLwRhXXi3Db%-Klu=1VX}ApAvEXzZuilYNjGhCs+U zp2*;y|A7>Adl?zh#lsfD8L5xfY|#E{XJI37*XfMOdJ^^>7C}L#Dk)Yt@-*Ow73{i& zFLPU#hWdH5IuVa1?V7N7JA3-x$=>|T(|9Oyco%y9+~74@uaAGQ(S5G8)6rZ0%jyY`2^!LK&*h=Nz+4C1@(#7~IQ z9BV8k*e9aIcSMN~`^+1(CeLQ5yTn5%Xd^m2xIz46EAbss;?oMZ2JvCfvorC@3-wcp zPx0t8h)<_g_Av3?cH$?5iH{ZLh*t|X6;*ZOcNIAO-kmx^{IHGq-KnI+|3Pvg{zdS$ zrA4^D69U!l6hOR9jyQJLWm{4&Htj?W=}jZhN$6!IE0`^N$c&~+%TG36VeqTbw_uaT zn-BWkT(s%WL%gV&=t~uPb@rq|2YghEFQXixX~X36>(Zh-c- zKHEyaq;dz7?dnN9#J)0OY-gZ z>z}`Wne_jJ(fz!6AwxO~>pLM70*XBZm7DP?hG@sv>9h9wgZFq`($%TXKa8R?EP_6i6cqb^n3UFf#^fZ5q(GvYSM1p z{sWxa(GAenTbr~Pq0dUbhRyV6Q~>&l`r#J8qHK^qq5{x2Q~(kn^fRr;jp=^+or-Pd zNp~u3o1Rc%>I-UIZw$33aYSEGm=ZO@JFbT`vWq8;SWE$XKe_4eCr9-CG^Anjy51^s zUia3`>Ua2eRpRLVliPf4%BiK-qWpL?QP zy-7`Amys?Nw{h?@bw<%Hlq2ga$iaLIJNRsR=^W{H$mceKwQl1sElX##c^!Et1Vk;9 z&sB%=n7TjTRGJf7qk<}_U4fUk$c;@`M%ejWhESIpD~Kk>9do4iyN-Kd|i zB|EQ=d|3{=5<`U!h}45Cgd^AVc@DkcK9QJ({;}U*5qS^fS)a%t=0AZ+wJ?V!bV$33 zMVno&o7;OJ)+F1AF{OPPr+$SSqR+477%rD-u6FHabc#d{JUxq@ICjU0RL`Ltu@M%t z&V6^-gL~*#ifWwQa`A~IZN~L5!KpsT*+v<|9t~MA1oP;wt;3PVIy7P9m+H!G-1A(B z4iKde4=5l}hj7(HwrwHyE4d-a`@=C-=ZZETN1;(?FLM^9ZV1hr>Z~ASqkCjub~(v* zXAOYUy?w<3;5V*?*h1`Aazl{!hhq|1s3z{VjvH}waTYG@!3Z6n>~=fbm2NPS-!3!g zmv(|`oXfu5N{69lRwBQ6g|Ou@>Hz3)`1@Jn`?^hbY}M_T_%xm)#B1uW#>3uq>5P0X zNes?iyUbdw-HyPKFS4#|yC)sv;(*6(S`^3~j}cXlu{j4Yk9fIH)d_~siQclr)~xI% zd!jbjuAA*WkJ~TyvG4vEQKmT2mUvy{^AcI*zIZtDmhhPyn$j_3Q(``y6 zZXzRa1!_ttoM8`MQ3xu? zOe2hUVEUQKh8Jz+LAI4OrIi+~N^P=VyiGgnF`}!Of+Oxl=RIG45}@*%7O0ee*kz<@BA52a z)dZy8R7@5xRK{M(9xQgR6j499rQrjx@cqknl_NQ}<3N8-(HEGG$DKTn;(tr!%>9i? z?4VShGDSXuSP~#YRmlgJtb$oj3t6os2}xEfhPHXhDwtK0tOC!HWHn)tRVPGNY5xfs zr4!4zWEIR@_X@FEWi?@y)sK6ztXBNnFIjblWwp{Yb3!$N<)*Hy6?d*JtpHvpgtgKr zQnIinMunC3JS&8iP8}nq0=%}@l?w3NlZ2J-wp$1*;c>FE64OI#-x5``L!;W(2;D>s zwt85V6^yk6SyBG#1{PL>uB%36L_!+h(qiU^jLWYzOdW!16E z>PN0ht>TGe`Pe0Y(JvE2cpt4a&QHUGhq2dxf|=aZ_zOkuyA?~d3#J{gY2+2y*#u`a zI2UETFgniCeoY*+G2i0Fm5HpVGSTWJN?+kB@JZAeL~eFv#?wBSImNGXHX>BA-=Tc# zT#?xyk->S-N|7-Q1Q8#q0+`;J51aSG zU@QyGXWvX3n;Uhao%J0|9V7I;QR^9@@4%y+tnXk{Tv^@$i#F7$A22NP?u5uYU^6iy z@umZxmaj`D)x5%tR(VfY<^AJYEbk3v$V0EoyE82BKrN5Wz@voRzj(c;s;-!=guD}; zEz5giRNmqiVPu7O>d?KqN`d-R9|A1YUF&n+Bv(b=B87I&Lddad%}>@dc(>M~0@Oe`Xo{UoMyal9|4>B(oOWZ3@jvvk?sLTtrq{g2O22~TzF z`K#Gr<)#F_Fe>jjdA6rB+g&@bs`a!2ewj7355u_V5G^-m%C)BUa7zUoF|LspHr3J7 z3fQ;UntdJ2hA_<&ga=8z<7IP~GlNIW_yU|> zYC1#kORTDC0jbL7cvVPT#!G59F%;tWXUruH7EdYk*)}B)kb%nyf@O;#o4S}|QUo5m zoLNw>^2a~0d3=czwv98Cx#$V80w$;Jg5vXn?ReX3=H2%5Bgi?b9J|vz&6(N{#AC1p zjWgA7oNA2aF22xK%56I%vLAuq9kv1%t7Y;9!*PZ&W(6iE%_6b#zQ>E>g-Yp?@))gf zwSia0oJPD8K^9MAv=_Pa;;VQ0LFpmTt`rupj*ldLr@5Wr(6UG^J=;eh8JMcJR2YoYPnK5P=!Z3O|7hyW> zvJ5kHKWPPoQA8?v42NaLgdLVr-%RA)lvfCSsGzI-Fw^)$&{3L8CUj;9-k5R;)9lZUP{UPu03>EW zk_gu>O5F4dhM!V&hcK$$z`d5}I>2iOeu-62USW1)dcr&xn8v=PJMztVE}oFUCEbl? zuAhq;i!7ms>5(y@F2-_O!7tt+q7f@ZXa{!_#x_XENa{@I9{ZMWXt&$F$*Ehr9Zf{j zq`KR%f!iDnudHY;GxVgP%Wg5EjcM0k-I=$zu*>);fraWmsi9I}pKIWp#j8$M6gXFc zKrYRgz9>7IPA@!80IwrKc#Z_R=`2&_Ju_vpC#KJ3c221}9_~^gXV0PDEOI&2Bwmsn zUHb`*u{iY1VNes+8n*o3R7XXi3@;SU(ra~Xa>Tq7vsud7RWr$;J2zwyZE%jX!ZJ^l zHsK;l`;o0uuY-3-pO{moL2DC+y(bW%vKLG%(Ify@S;;UI%vqP|OC`Woz)`ABVtU|b zvl=<$+JkTOXa35#PCBDH2`rsMRS=eL)o0a7Fg$f5eT(AR??B^qP_Q@{@zk(2~_R$tw8POe;`cx<7%_b*+>U zzmRC>PS$K62MW(=?N zuBmcbu7jg3R+9~9)OpP;U?`Zeq9EmWBsATlMGc5=B%odc#^9wpkZQzKNsMnM5<@-q ziOpaC@}7MpEUQ5mP-`96P7~chR zHp0hJYUY4AB}tlL4;~S%UkpMuA_D-WA!vqdsBs!Wkr7~~9x5w3VjW2sPzB8hcPu_2 zBg{ABdghGk8JV$?p25u7FFga3XH>rFNP6bj^~{;D!~FTpgr4msZ9=;4PbRp(8N|8N zbNBQ&9d%4V6Kd(Gd!R$4|B<8mRw*T8Y3Z`T7;XEvMLe$gBAmV^TN%u(TqucoXq4PE z5K5V}GLor+Uvf~bX~k0Sh^!`v>d_6SIPnewAE=FYw3fys9NEs!sz^qjyrTPKl}9nh z5cAqJ-|VUSjLO$~W=;8uYn5xhfEBakj9y+Oqt%2LE41FLb$9Rk%i%I{Jd(83d^h)r z#4PC(&d8*~PcO1|>V5HS;(2zuN9ch=Pds0N`;gvEeGxdutxnM$!W=zAzkqHq$B{GY zbo}B6;o*0Qt{^L^-0+1y6NHS;rSDE-^kVe7rRMZ2v&XrZ!%q)>RW88?gIrvm+Pz#w zCRt+$a~lO7V>DaA4vKIvDsFK03fE3yG{aGD;w5mE9FspBRauK)=62Z|Sh; zl`utJs9AKhBWg3HYJ;Qa90!*?b2w#g#&+cvV@oJnklLU0U=b!gVJHWrPo@ulFuv(lvcL0r$({;}o6+SYDMl~y9 zI+UjVD04D%_OznQV`SPJ)UXSmGg~j#WuTlSYgNwJ|7X8SawJJ^;C)_EAJD+}bj%|4mFWw^hTJLAMs4}9qr z+V+M8Z7`6UIPRE$18qHV^CELj0Hc#&wWnzMoN7|*2fx%votw@IcOaxL&wVgTN?A4~ zk?{}rNBG3yp&IfQI);%3a-4SWhe00hDzw971Pd$yp14PF%Ys?C9mA3)C3%MxxDjXF z6CCpn+2IWBkg_br>n8%ULD`YOD46xkhW=?J6u26UQuxxZC}rQ@ajt!Y?smx2WxX@U zfDd1(|9U~)D&Q)Tm$5n9i6h$%XT*&6H^a0aJFAMi?e~KjmHRHk z$LOYAmxNn;MT3TGwy**>H$HhPN?<@-W=YcZfE!e&S25`10;49XNyt5Q1`K7@<)5|saqs(^!{0Vjq}HNh z0%M9f3>7o7RT0y}kopw`gIOk~NkE2}>E+;~m%x}_KFnhOo^Gg8FM%<=1V$YzV^v5h z$JQek5PPq%plJ7Yt?AGEgII$ZRVvn7 zN4!3sn-G?}J(zBR%&WMjYsQ1VTCp`FjRzyG9bc!JB%~TYccIB!tvibjm(FxeNdgN#^A%; z#dL5I#9^f3+b~yDd*6t=r(#O0KQa`2-1VKwnxUTz{&a41G4OFD9P+`OJ*UlDzJf_n z@cz1XWWDtjER#gzw(<-xGQY_@o2`)SrkJ^ynA0kAxUX=ZB~{tQStaudUcF!MZ}FXR zFUpIdh0!m*FZN`9N|$HJNtY8U+C8Sr!<^(84*q0fx*V9T=EETLQ0w{l&Ooe<$!S{H zMy3?*(vARl*zMH&`ZMQ?#f1yGF_h-!;2LBbK$UiOoz`jU~6;#Fx# zXJaq14m+p)4EWLysbj|9Q?)rj1?ae18a>3d!Cm^D2})R^=sTvt@e89}-#66(m&(-E z;DL*)IV2D&TRFgk6sF^bZUYxTZ9&d?-QOiXm{FvIia1wWPXc0>+%33`VBqr;UebQb zn#tg^PB}1=&#@`P;eBsDvsj6$?D(ag*?6J5!ap-H#Roj+!w;}$Xy^%(+Xs_+S4Mq_ zjMO=cEIl(@rXuFY`z^Wx>f2Vimi7pa>nXsO*+~9!LfToEryMY6F!K2s8mm|%Yvpr$*I1QP);i2PFelT?$*D(1 z2CdQ6k$N|<+#$HwAf`tU(jPKk-31VF;w5|JfF-uJ&0S=&c?^-0wkl~BdT<@Y;W4j% ze^-BUe_H0yPWRN~aXOI9J1|u1J2>n+;|}}9L3h@u;336g9OfOEX3?QcFCUCNu6ji( z7sjt*Zl>3o?YMqLJKFYR#g_OI+%hrEkanFLOlI{Cq0S8Mm}Y~P0AT6l9PtF&ZK*W6>c@ULG`HPay**= z$p!OI3n7uRe(Dq^vy$-fv?LbbNE5GdJUz%f1nDdMuy45oXy`8TC8UXHqlQ2Q#hO z`as9h9hs_0K&~Gv8>7BoThoTzy_!OfQCXivF%uscUm$r8aB_QHUEz>|4cw?3XKSzMpK z`0w9;KsGW#RLqeDfsQvQ2yytgE{+yOrjZ3GJvzRk;BGt-1cI+otL=n^|DYpWSftbF zXNfQq3A2Plq;j=;$HRt~XoFNsa%fhwxTPhr=j)uf7n}@N`JK|alp4(1a%fW{%yL^I zjD6cVgr9!yc-SCj<*)yK-IJl{s8j_@CzB{I`SuqJx7l6MB_2zFI{v6tyr( zxdMSm!;F~W|BaCr6&-1`1EYo^`?rcq)NdFNH*!a-oYP=WVvpJCMl@$*dX_bVU6zcQ zLvAg4_@@;r0&zPYzG42`Wx=wHG=RVZ0|iW2g5)9y!3l#h0&lkr`(E+2#Y_hP|GASl&m*N$`PL-WzZ*Uev{_k zF8<3d4gziXQn~Ybub~Hm+ueNycduNJ`%0H?D!Q*BF825z`(@K&*=>a3{rweZ*&Wi? z`j$?1j&TBkfq;8wLU7vMgTal%BoOlNQ{Pp(xxMk)3`5`d=p3n3Dm{7?)7N0Ab4wqE z+dX~o26}W$-%S{_x#1R*(hBLr8z#CCNgtRA__$gA3cQ$c4J?0j#q2fY4=*vZ_mDq) z(y`nme|QzjV_E)g!{E@MKRAd(i9!-8P4I4w{+8umk!7z^tYOMG?w{UhCv|WL@IGD( zPpo?I{IKV73sKQSS_kS0W*TQ|T>#h9!u(~tj7)#$XW5=D^a3{}ur5Bx9)@mmeAYAc z3-7*P^eb2;I3LELz4ip_lyRH$xIMu}rQ4GAk+5G1gu~ZY@CnV&`jF}S7<&|ZWU$&T zQ)HS0x`FI9`df~FMUDZ_o!k^&R~uMw+%s@+y!#XQ3U&?V`rA+6(Eohkzb~IJU;X*J ze0=`bUem)E zkAHuB_xex%`R_+CL=Ug;|6uw02!{FL%TbfQS(5zh$Fcr^y_E-;*Vm6v0E6=I>G5yR zf4O}7?4?L18FyBLUD07Xf`>ZcmIfz9B|oi_UVFL7^9tr80j}jMlSN*8`<<6Y%e0g_ z3hbZ?RKTs_DmRvm9XZ|;8XSy+?kSbkS)u|`q{O|bpiU~jfokD_RH-w#e?6PT;@`!)5wVL&^LhhY2b-n*ro;_*^R%peMp*VU;L2aZ4_mS#P1NTPHMS zQDQTlK@jPuzaq$bBthka5gkK zEPt7qOc+idFBo}D1LL<L{f*rs;tFA!g5Y+lbPp*4ij&@4bC*2{c0?680wMVeYv=zjvDoE!=MbK zHvGmyLW=OtZ=0$li}NBZ+1t*QttI2*j;-K9w*#co(+Y*6M^2Mtw4Txx6zHT}o|HDQ zt0!;blpq6DImpj(wdj=8j|y2X>5MpNsHJaV{BqE#cHRbcR(MH6R?MXo8a&E&i;v^`g zA&2a0L%2%`X@j`r#^}tc3o>w=Qy$tjlFM?r+*s~1X_Yw5tw>~cYvZ{Vn5JTFM7MI3 zG_JsODDIH&wNo8O30SAeDc5bLngS)erAIOu*-kpjjqbQc5${p!`bWT%4ssykjqoH5 z@$1mHh4I#z5LE^<-b!pn=b*F9GJ>Ac5lD}V8BiZ2_qKM}la8aW4flj3=Y5cswG)3^ z(6?Jm?QLUzMEyQ*u-^^)eJb~{oL6dwdR*OthaMjUAdRrtPz?6^p`HcW z_*GS6W^os`DTX!Ej%|z0Y^LoDiVa^T%AevW6G8qIhnxr+J+XUEwC1L8(Lu1!#yy(E zUnSgy-a-g-NuaP!2<|pqp-Grzwp(ZfD~sDCJ9OllO*jz*EgL3_C{C`o)a&w2iaK;r z?9gSn%nn^bOIM9-x#06kgBB%$2;HwCGoWNb3@=sG!VWz#@3ck0eho`xiqB{rPE^t= zC>Es@flNmVL=_c}PFxiyMe0lvX7z}_i>Ea+%;76!Id)GhXNR5y<+KNQW;)>&D@Yy- z#>JB-rnoABI6L$t7!`-^QWy86Id+q#U?Y=7hk3C>XMSVFkVB_;mpXLrXo*9YVNRTs zg#`7T+9os4@j7A40}5tuxW})l)3;~OhiCAGa1!^r=l1PVfJ&`V<1%N=2uim^g`d)L zN>@-Xvm#Q3Mu5i=rNRj;^O~5T1d+iZ<}t=#ews%y3hAx#D! zWQ5%DU@W?%*Iq7zF*;$jQ-Qw>S(8Oxi@cnaLK_7NcOpI@i>_#=Osw&VYlzh_X*Wz* zw8{#0N>C^=_o9M28Mxa}5xoZO%Lz-}Sk>lg(szZCI0pTu${$$x-qJV_l|&Eg1j*vV zW%^J<$^0RQIq0d*U?A3Pu7dz*iEvq1WzMU&^y~6Y8dJg448!4G@=yQ;9B1Lg7lsl~ z0xyKkCx~}SpFJqz9;e0>w-6sWoz}vs)=qdCRM8UIaH`U>#nd=u)nyV=5vsUaWV)s( z6mM2l!4O|pboQf*UY5NSbW(}fJY z?VEFJ=~xnjY*yX9;UJdGs@%&4xN%BXu;7bAg|xwBp`>!+ZHYc{RHX?#Ke-Um2Etd9 zhOOihrMDe%^zFFg2_-6k7Va>?Tkp!Z-gm(Dwi6DtjD{_dark9~oc6g>4&Sm&q6nM| zk}rCFBVF$s>QDyOp>)`};-1=uyWTe5p$x$5Z6jW90eQV`%p*CX-l*5xhP~c4?vZrx zp$z21^ak{yjO+`#h_s@#Hs06TlWcmIGY%`b(4Z78G=;!GnUYdTCoIU)d??-|T`mI% zCC%Qpp-`8|4ZP%A^H)Hfh%Rq6cuhD57D$z2an>^R&HhxrlQ@!kn5a=N36X(iqMm^p$Uv)D@I8AGBpFJ_PHaIzrV*!4UeFC>kG-L ziot^kqcauvXNn!Dc*QyakLwU4sj8Suy)lH^Jziu+u!DMEq!V55l6>^bHIrR|UO~w* z==GG$gkD|Qb;u=`4T%ceq3~OsA8sTwe)gQUyeZ;=eoyzwGny$=d?(d-_`WKknlcBd z^J8D9Q#a-Ik8U0Eyt?_*8=;C|{p21g@$iL{{Hgw?Ii%nK^~TCmmCGz=L9e}ouY~6Q z;HR5Edrqm=?`aWK(DI~U{4@YwMUG6?HwV+Ff@-1!%clvD+Nr_tQOc&@+3+X+26Ui_ zfG9e}1y^1SA18yw%rlYctxy;IuwHrERf-}A0vo8)3?iOLWmB?p=dfEZ`AiiZuDn1) zBzlJ00|kBv3jv)Xy||(uWo7-JI13E~N;Q~KP~=6&6*oH`>m9IB;>~x)i*MYc@!E^w zG$)XK?VuiL_AU04Wfsn>+U?po$K!S;I=#bvb#A! zibL(3Kuq19OCCr4p>Ry?qscp5lQY6bak9Az{!jP59OHroIpY->>;M!eY!4JQVkLx0 z;xkM|#GyY?#<6wrmW^^^d#sblIdM!bH`0mSvbbAh9a}S-aNB6-G8jH8H*KlG?&*d% z70sStLPJYejcmDy*fSM9pRh_Yqfq0txpMY#s=X!BPnO7341fd( zpr_;uJck$V6pJ8;Pcrde4fx2F>XndXQh+Qo3(M0E=3BKBLsB__7ahuHUmp!Tx-Rm) z4$0l!9ajA;5@v^{wo`aKDNx^zq*c0%GDSzmjT&>{5Hs!aJev`59tY9cS5F?`*k$LhQS7f8Pf>~7EY#3Da22G||yKBS5 zYk_cBfePa4D;V$8h|Ycot#Dky)Tpi$9Wh%);B^4SC5ld`dclIxRc~K(&P8Yr!io?i z!g*E@YBPc~7?Kp7;|yKZD%K+Li?N*&v9TtR)J|sx9F7+qJX?H*(wuVtx zzWw@eB!)WXUOT2^>^)GXUUR8q$}Jdr9m&iqjj2r+BJe9WXId%z=lRBE!Wm7tWZuqv zM1okk)l`G3W9M$VY=h)u&zbRBGd6)h%d)Iwj}k;nEG zXv_e&-M$Wq?JIED`MWgnLDJy1UwZ#eyl^|4P4@?cqOKm~WVRBQ%|vB0GTHFIx4>gH z(pb$b7D)`^2~?}U&kS@XQD- z@mHX)8riER@@kR0hBvPLIfj2sAoO-MTB zI#qOzG;`9wP;j731rRa|>z?AMQl0J29(DIXJSf$g3Mdu0h9b=(r9Uw;4~_axku z)#^K`jcvkh?5y0z%F>On(kQR=YaX@6JDCw3Kgl=#>O2t)f`AJU!_H0;ZtSGt7zPo? z&{doxSXxQPjg^EP!=U8GN>XmDpykF&Vou<%alh!*msIl8Y?NLRCAn&aA#>|3`!yFW!z##cJ&QbGm zT%+gdKi(vI|#omW4~&}_bqyXz-0sO~`xrh!*NF_g-J z9yD@v2$D8BRS{@xd*Fj8w2+QKm^1O^Omw+2Tkb@bs<*UZZtLkN4z=@C&}my96!jsu zvk63Wy00XOs4Q`eM3HC&a|e!`!L_6l9R`YAnIUH;$eH+Ygq0TAu_kh?Z`_!u@p_qO z+dvQ*F7TBKNxPX{c*hFTKPNFMFrX+WjYm~a2589*ic&e*&}2<%l2VXsO8sZe_r4VpZMVz56j?v` z1*3tZk{`U0wI;#7_GdDi>68A(?_@ZU^-7=oqWum~N`fFWL*F`kbt#aJXOPhrB(Gp^ zFV@L}91~dO#T`^!pE781z()l)b$MP5HSSwRLXI?7-CH0gs>x;Us}p7ocIn__sfi_= z*;sTQe;C0%*~g#QMJSeXX}x7*!FfV((9}=42ob%r*piuoxz15I@KU32hA!Uwr_GA1 z*^nl;V6^>;6qXo(rYx`FIS|34|H?d(wM9hT3~5RZM853Q0IMh09JbW!b*wI~Ts3<2 z07Hc#W~mwpPEJ9FT-Ef3ZJKMl{I@thbjv20WxHfTI-+lbzd!1F?IKAf)x%o{8mTtw zmcrrTsu|oK4*SGyN^Md`g=mJHC~J$QR?25`@e3`S8Y*Am*Qw`*(Uvv+;Mbad^QlyW z!jk&gsjRc>H@9!QtqZ6rz8Q`ldgPXvGOVz?;qYA_EN^~{c~Q5zVL6JjxVi=Bo8gYZ zIgQ-0dw?J2emDuXX;rEs+QmuWhg*(OcGuC6ATqF?VsnGtHmK!Tfzc)sWr$MwX2`;R zTxiN{D1D3FU5JUgoWo40vh@p9!KtHkZR;iWVQI_084hO5?%gff%(@7Rw#PL+hGckv zf%ij5X|>C-IK*w@lz|qYmfrT72-I_e!`vn~rat)(fkUg>q;A#@lA7mrIp=m$2Z>kQ z_2`Z9o3H?^3cxf?1oca6;$g63vVT5*?WneB}-Di6-D<$ zSv5`Cu^O79$wVR@web|pA1lA<^y2+UtaD@Yg=b~yE3>hPgkJo-914H#R7T>?>RJK;<)NhhUmV@sKQYfynwC)9r`5s|-v z8Du}^FPe#@V0x2h38+!jI$}90=yxJ3`?=j*dnTii)=WJURLvV)CTJw5gT>QxGGDHp zlhr`fXC8nhg0~vJXMhXOs!9H5qPEpwSWYUR{O_OteT-eblg1`iI?Wc}h?90)zobm9>tc$Po zI`tlILJwiD;i8Op2n3a73KXl35J!gyvndNpgRdh^ZVqX5EJ^m$53F7h$9Joq%d4&R zaCNIbjm$pUUeOMHM->m2IhZcaVdocmQ%6iXWpL!Uo4KQw$S+FjKu1yI8bp|d!Y-CK zh-(KoO^fSB0rpdHPAOKNEtYPBvOA^S6s+@my=t^!5GT-uTDirgP5b%6S1VG7^SVEC z0I2I9dOe5e>5IQ?@Rtq#vcdl^8}v*DH7MeMj|=;VX+}}EVa-r;D%caNAwqI)`*On7<^N7jzj2a40J z79q#OdVTiX`wOF(uB*9fTyk*f;q*&c51#U%8ty^uwR^ZH;X6cuVC^AFkqSnQ`1C$_ zOOxR1$dTKV3_3)D&*=wldmH#>=DQY)UCe4J;2pwn;CY5>4N;6`448sWyZdBcs2;de zCQm>`Zr0ZlDwuf1h;Bdys~SesC%B+Zjq^gWw)%$urMp^^97|!~zE9y3IQR$w=W&Er z)A!#FAf=FARj(?t9tM3=DUj&QyQ^vat{th~v;fO1TKD6IeCwV8|oVvtWH`@1tVXHU` zwc2&3@!azX%wg1<*_o@<3~wAnhn{RA7)tDXhk3SGI&2*($1BFI-nOWPBd)=i4DwK8 zld{KV5kuH)b-Be8nq3E2g1;p+PrP}_CfvEmO)&hA~3(~BkN%amFoE*RuvILozy z;3g^z7!`=HTwE|4PQ@ausA$)+K_e}kvXE7&t7TW@nD+E;?_ArK(OXa((I}2W?vs>m-4OB{MWOO z?`G?F-`ziBA-||2{-SW~f5ipanWqEDAV*w9z&3thO?@j)3a!#;;xQ_VhKmPp)qG() z8g5fv(Cx;J<>(#zTtJ=H5iJIrihDZY>8i~Y40RZ3?Bx7Jnh}T1^TUPhVxtNU!d<`D z<$}Ae*b)KA{`KsXxr{thj3i`WigNq9u+e0bj?CmjwK}-FNM2}k!0Zxnze}F(b&TiJ za9O_QjEA{eB>8Ij8sT)#U+C*o0~g9!Fh8U_XKCj(vtMUzXhKGP)Ymq(iz{t+?}9uO zD$_X`0#jiWsmqR_Tq!k*r6wI~8>n_H zN~uYMGKNeQ<=wS%>gftw`KsGymrI*6&-|@BdbBQ+9-M9C6E6|NpFbBSa79k?)|@X% zRX>*X?Q=-o=O0|s0o*ou6+u_ibhbRkkQ`pNp&-hL7lR*Cj~HVXKL^P9?lq4>>We++Y`s1(o`z!dspuOvWv!UnBt;!MTbQ5V(m`jEJ?=wF3Gz0 zom^h1sZNj7!#b@DGhQnR&Z5!`Pl$|85wmHc;ezYy{J*>6c&r*J9adYp>T3NWknOAT z^N~2$clr5ct{Fq8pEF3Yq7b=woZb?-X)DYL1yg_+baN=NDJ%|d(#k@0Rhh4MDZ)(| zI6gLce(r4t-?yeRp%~VV%JMK9KkvsDKM~gxrJ6)<(0**Cm_nYCD;@pEXf-oh0%;*B|C+9hkXVH|5q5am3Sy)**yE&5cAgc${0hD&alHbw3@cP1h;d0Ti)XIz6w8LfGvb8K{Qtn2;`C3C&IpKqS8&2ibR_#J(wnSV3teG zm|t2_)kInd2`UocmaiM%9#>I>)Z5{iw)=PS%vdhk9#wX-K9Y<9tkPywX*r(f_gz=1 zmNu3eT7S;so@3$(G$VLy`31bLNC<(1)psZ`bejlGFk)wp_)RVTv3e5KNf zK=$ELwY_0+(7KO9=%b&uG4jt>OwPn8{hJ1!4|$Y=SM+SG~enaRKw6dL*Yz zeJ2hH^eJBzAUgt;_dgo1#jQ@^5Z;3{Vbn=$soLsq1iMSI7DSg+D?T8$$Sn-^lpeL6 zMXOa+!C4lsTLd51Yi=qA+ea*#hi_jQ^u;%8e@m}+BS4w5rpAh&>s_eZFpIl=|A`ox zRppG<)g7RLu2nfVgv0A>Ew2G(r>$$anhw{(jhAOE6k)EKX*!k6^pyhgu4x-tBs9?$ zsU*E%p-&Hj?7elk+s3v&+)%^Jyu;umvdj*fL1vI4C^K7Y%$cG8BS z!G^g>!{69DZF72h?>*1+`|~^dXFNzioT+wFG`~_9auD6kNksTP+-?Ze&!Ao0KZ+u{GT4`~Ixo=l7fBk*>qf)d5 z9j|t2_2c!?vf;C^N`~FFzf0edZ`?Js{JPrjIu`3!|G+@P-3}`>sE2aTR{NMBE)l_ZK#= z8$B=0>@{ot@Q{4y)o<~4>Tzqoxz`{vq*rs@VN*ATi>>?q=8ac3j`j2oUm|GK%rm#l`!?J5xo0SPDVb$OH3|>!U!1>m`}Pu>W*i+V z8aZLr@JQKq;hXr>VXxfJ)=zZzpYBXDuQZ-Nq2aAdS6bzDlh#xbjjefhG8k5U7%zT!?_=@nzrMfva!HlPWzOxW_DknJBk}j` zKi^wkf5olF)0zz!{BmxmdR?wr?~U=z+)-xw$7$ESy$*Km{pkl@$1Xh@>DtX(oL_J8 znR&3a;jw6m%iRl`O8!uVDAH*5&(#9cTb!9lFIw9*wq%!|))C$7oVSd-y4O1Y22tp( zZSmm4-;V=t5s(}&UcU@;#JqCV3*Q)-VB4PG`03(>NCzaUf1dpLP3q>e&E=k4u3LGL z((viT`+G-}wi{CxdWV;qQlgCM39skpZT;Uqz%Rze?Y}%^^%%oF6KDOshbyk>myB*N zw4Ld;>@IDbuFT7QD}06y6C9&j?Oa#v)IQ1NWt*=y&!74U-_*WQqeX1d;x;NkV_G_PJ{@?0^O%0qUh7QzN#bsI z6U(7keD0?Y1a9pYoQU42U-D(GANhM6wL0!uum17un{)lc!4(^7*O;?@lIo|)m3np_ zb>PQ!KUVzx(mF$l!F^U_u)l;Jb1m^n~6`t z`vYClof`DAtopoaW?5SN!rS|6Cw9K%46W>Tfjp5oF=N}3$ALACR(7BDlREG7)x^MB z{ssGY-RZyS$I4FFU8zHlMt9taWRDt#!kiAZtv%yYcQ)_!3NO;{qDg+chob`e+kUC~ zb=-1u8G@mH`MYkCvrcl%&H86cymTX_4%xPQdY+#fzUL}5dD`h^%bff6oc}iHYN9`T zJMjH}_M^5#N}st_*$6P`np*Bz_LdGlNQ$DEQ| zw_kp^xNNynT|z5ob}3S3j`hTfrRBz^cAowG$ikmcw_Ukc@e$s!`9C!L;c@%A^9kw6 zE7xnZDp_IGln&?0*ZgQOOB_hvcR$bq*cWl)ClniF?1YZH3p4@7}%9+(Gn1>W}f4;O_vt;0cpcv(CQ#_299&J$9ZA zH#@C%(iiRskB)S0zGcP}_-gk#eXeYjUSDNN*6(3C$Q$Gsy`@XXTHV;2dKO*UW0tmY zy{Yn5nqrw-4||W83C*k}-rL^-MP(De+ugsx{aYV9o*{-^|GD!11y90F@9w*!>&G9} zb^(*~pvi_E+QWAwZP6u`tuJ0QzKM@tf0SLFe}2>DI*+J_v@Vt&=gzIQyzYMV;rRuF z&u-s3E>im%8|&uyKDxpZR2nv{sy#Nor+l4R2S4;%V{P{6^_uFt$)ukD>DH+e$LBuX z6Z`z$(tKx6hG6w({1--va=$g&Z&$A#(zSfIjgOaq-^0FjTX!q}9g&J{gM}x$AKG-j zN?`5gpSzA7Q+?+IMAmN;af>*yY42~!j*BDRqgT#-?7Na%ue!F#mZ0WLe!q*gGozP( zs?_LO!``<>p1t{c^6W;J>qDpP6Vw*u7x^OT`4;_^$s^wdAB^=Dze?TeRqE%d_x8T; z(0KQN_jirTkG1HY=kf`+ZgzXdqvwD8bnI-^^^ew9!)D|Mw{KcGu<5zGw?C%WKl`=% z)7zg;9;~`^^{u9Drdgpr7tZe9xTa^{6Em)RKis^uYsaRkKOKHQyzANaGtT!}K20!X z@3Ust*4~0n-Rj6%vTo?gdku^48nI{RvLTo6-|4nz(X~ROK~$oSnLd z>Gb^HGJBZp?k`#&zIke8wZ46ykNNp&k5jTwAKzTxGpPQpMwMdE1&+N>=5|cq`$

9G|xaukyBQa-x1@30{rYGnWn@ zd}1zDXK6FJard|}=&lhW#=g8Ug$f;r5(7rWTffu}U^0~Bdz!S93j2%Jynp)aFYg+a z-7y!d`TS+;E`7H&sf60bU^^CH?~e}IQNy>mme5D8himQI(z)w`9epmn%UC(zFWdw> z+K@MtCoWI#{_D4&Uas6wd&;nVTbQ*B?|&S0OJA&CyM4;jfs?qcuaEiVd&aM4 zbREu8&F(e5U;gx|YQ26d@y2dGK6l%l25Kf&cf_vY@we}8-S4#V{m{hc(@#DNcO=T9 z!!J(Q@o8d(tp}55rR^2XUs};(Wdy}GuC)JB-qy7KovV%J9XbD`*urjOwOu+a>dL80 z8&buZ;jjjc*>1f#ltlpNeBt>_cBbq?-lK;#>f9^D4s30)%2si}z|Nb;Pv@G=7aDaK zxVPJP&DPwU)~eLPt!u8nZrxvt>Wrp49C0lzPb4!>dT zTx-8z!i6DdyG@H899uSiyrP&xb~gZz0<7zl*A z8@ov}Yyw$$q1|FK)?>qB6?A(50|Lmro6_*E>t2Iq> z_Q8t9O!<+DSBKu8+$I0}eXTYwAFv_5ac@2S`DaFDKXK>66|bpgmpJwAJa1@)4fmGK zKEAyFk-)U7twVR`{aouw3Hyx|gHJEaD_Wys1L>V{%}*c7ThVC1lcg7~cP@XVYqUzu z1g-VkCxt%OJzW2%GQG>1ELALTwryE6zF5WYUQXRusQZ!&gW9IP^Vh#HtNobn`TH&( zThwy3vHu{$nQj%fFF4wx(ZbQ6jH!)^H+K&0oBwdEa>1d}(>IsR=kHta%{u?9H6ORM zznOoiLe~cd`Lw5VKRmGga%Ik^*Cpz2>wYlh`k`Rr+H;X(w$p`)?^WrVpR{1Y_4J~|2D|)I&k0k&JPx~*g0sGj7Q&K||K!@(;?`7WP|5TX*)*x$b3sk7fp{O}(XF zIjlm@#}Dd-Yt0|9vr_BtyD#puxNy_8cV8|LuTk;)Jz1@vvBY~~E|pxRvImr zuX`R^)?&=N^X-RLm~^yohr4jGV^uuIuB^B*!1em~mX+5?>y&HzC~*d@a#uC9Li1mJ zhr%4cunXFI3Hq&}e2vND^Nm-{3n$4McvefBk9%IN==r^e@_w54zQL4nooB3?Het+& z<7b?UM;o^~7gs!T?9hjD^m{*5-#3|-|MR0lZqXhtd)f5yySI;+cCPH{-Zc5pEh|l| z=c`7R?Ja*pM9t2@4nPZR-;bp zl%m_^dhu>ryzs&MogZHL`Pt+EG4=kEgXJ$NJ@%UMQk@nS@|U5XV7L8rxyz`rYnC25 zeIA$HI&Eq^=}9SZvt11iwEhkM)?G-ZXOt*>?C8yj58JGGJFnx?-fu#Wi>-`5Zu9c3 zcbsjSzU@%1;T>5#F|r8z*wSSyi`gc*x6F^S$J@&BBJP#3 zt5b%qsJtELo~|w_I_!rf(h>3Am#g<)tz(Lp4H~?mn9d4SjdVBUS9QHuu(#L2dmQ)T z!;_$$OM{Zpl^3j@^x8^$w4#sq^X&`$KCf=H=*JJQ8{E{!PgWpXcUsCHxWYOmcy?l; zQTB<97bi}e>Wqjex$8DumE}hl_sVbcho8;pG*Q>C)+PIgVUbI}-WpkS#_ss* zY2UoRP}6tw;`7P&WeYlI&0>2dAO&YX>YmD zj_W0;h8Uy4yCDlp&bfTzeftZk)(rey5q0G@n~Uyie0z$pPomUXUHuNy<6SF`?&|1R zgvls-I#s(;nr;rZ+I_CX#nJ9s-DBsCAWkj%;wbo7m}lF_pc= z`yfT@rmykpwT0}V|t?%_f~)V zsl>p>PD-JxE-}%{RS#r~@a}yr!y|R+`ylC-vBkf}gX=9xb^vs{>JNDzUz75^=;MWnLii)Vd8kRw0qa5)fz0R-CgoauuUBfQVh6#o;F4`iDXU#kPx{lfKr+we_>AtEs)}eF9;jSr9 zj5ne8M|yBLbGlUSxo*hHR>OKvN!B>CZ%qB$A1d6xedccaA5J>Yb?ZAcUVOO|IdpbK zV0+I~nbI3m(qNhA?!z{YvD(=seH}~hKD@W{(YblO77ZMGwcVwB%lsN6S6)RAOnX|p z@qLE3ZCE$BHr{wg&6eq%`KL!sexmMLal2*Eh^CDfte;W!V*S|4#Xr zkU4!8+H^EVf_L(C{khb<){8bB-F0_gC7&hnOR-I*lNVd|u$<}$t$x;caZJj%S?T-_ zS6biWAKg`@X_9=c>A2^H^?^Ydc|MSKfMc6Oy zO)a`{{ITyZ44U=Rupz3oWV1`(AAGY9v+rrp|4dT|-9q2}eVZHSFSXt|T^nwEwdTba z>K${${faI%93I`V$BTNW+jLreqjOZ*u=%_*?RsNJQ>xyb!Jmef zFTHR^liSsX_m1>9SIYBbWXdi-JYTN;X3faS-D=)Bdef5SJ$LA=y|(w>RJuvv!Rkqtv)8+9b8HzgVboSvs5i%RDSUg>ho*Z^jhTHn za%lt&OUp(O-wdyJ_xn+smK-{~ZNN9bk6(86C||L=&+Xo2CnL*GE;dzdIIq!>Gu~RQ zUVm(SarA!qOY8M3D<-ZuSMge%iH#i*<%Chy_~&P}7+$1V*`<#vVB%04yY=Y&n)gmU zelhLQ`SbDS*Q?9=?(S9p!qnAkdY@^k8=JJc>d5=OiO-+J^2E zQ;O(_r`%Oev~&AZwgws49~o{QYF zFZ|V9ZF-kec^_xJ%~U;d<<#qTJu6Bg6>C#X6oR#NXH8ExU8vhuW$U8Zmu8Mx(74*C zt|JvKT2~Ztwji&Uy_N5V`hMvBrsEo@-EY54*!cJ-cCW%MY0VCNdvCnfw!YYqQIbCH zYVp=nF5H+h>8N7_L-1

OI$JF`v7XBKErU=qe{E)07!~JqtcO6t){a?^^NELfYn< zPfr}kpIBTmw$+#y+nX)0y>9jtd53K~cI-R)%VXW!ujb$y+%2nB&M5N&We< zt((3vRDJ0)OnI!_mbd3(mqC**T_WGlesO7P->0pry|`&;)-$hI*GRLBV_xG0`wPFC zV>q+CP4z?LuT?f0je=G?C&!!cyFEcSjF}reQ?G8Z*qx_m>WsQ0JyWbv<;D$4Z?vQ1 z()Sf3$1z&=UNd*nkz+6FG=F>WqvqzO7Tb86W*6EhFVb+&NCA7cXdc$%$fg>+y+meLJm-i;>K==b&q^g2e+PJ>m-&CB+N( zgR9;PtS(~fcWkk=QTL6W`?oHY{=jS3;kVxYZP#|KeD<5Z$E&BGKlfGn>h%;J{P`F5 zbKRxhCk78(tQt`HII`|SU~c^nRh%zc?TbFUY%6y1<%o52>-YHFds6j}x9$WYrU94l zjw-Tw@}PBnJo6>RZayhot?hRQzcssz{=h)xkkM(e`2zEm;G%Q*82TW zMb5C6{H`McWsqLH)^u5|k7c>-TTiL0ZloWuaJQ^6v<107Lv)d+z8n9cYZKUo?(5vO z$N0u;`?kOH{cw42a(%g%2PXD(&U>rmUO*Scde1#$>0Zp=mZpzr2ed|-i5R>Z^P{(m zU9Cq%m&GPq2iER4{KVVajJ>+%>_!c%Z@Z>X`@gf~BP;qW?LD*sx%NcIZlN@cN$)jY zI?DX0nfQHZ`&-J!i5;E$)K{^q8nf3l`2=;)%Ws&JIU#1c8*+L zS0YG!zDw=!8rPM0e{&{QeDIkfzpsh&)QfuLF&o@?y;x+2GU)AP7qRwYSdba5C;9tu>Y+=|*tKVp-yhiPhZ)Rdn zMe8M7X0uC;T0VLP-oDB7M(IcUy=^Mb!?*3dVEf#vRe96t-OuxCea}G3@e7wkYQaOL?hBNlRuzF{HXm@mUn}h3L^2%wQ*H^zW z9vXMA+S~cl0+|6rs@Axm+i_?PJ-?r8<@o`1esB3MuO{K~tV?L?W{v&!~U z?|GwZTe#Dimt9Q#DnFOKP)u7@@%O2Y7e(5O&5UhRikhR}6~ENzz3aftiZABb?zrTA zn77SRWzG4)?zif0Txwo2Yg3`yOlXLSiW~DmqckXC;VqxU)*%GU0%NPC< zZ_5@>Z5ZGE+ol?A_cSZJ=cr)Dy9y`Hw^FfXXScpvQE&F)Zc|r$8ga$Hq1W~n>)MzV zmRm(v*yp_6Z=asLdF<8UV|b|3z$z9?%X}^G$zuM>n%nDMyPdqkSTOY1&z*fOdloBH zq0MHt_E!5nD|Uoy{rAL&wd>FYva-rGehdWU9T$r!*Q%n1M9I5B=>Wmn$ADlHx+u9Ro{R*zpU2QtdmXaLgHWQ+W=z*B|N7?CFj@&GP)N4$UlVHC>I1+&;fN zL%NL_jmen_I{B_=A$UQEd(W# z$u>!5n<(jpU_PG@(HRhf(HgX99ZN?jEY&&^YXo}BvEjG=`B)^@CdW}5XEY4?tq|OX z4uOtJ<>k5(yJJq$k5m3=Brn@F=7`3r4$YdC%KJhI|B8cuAq8##TFfl1y!KG`*{^8* z=kzJR=dU6DO9$CIe{lQ%(nAWv|5+H|Mgjdl2Meyq6k+fG-rNiM!`|Gm^V)+4+KPYz zQc=JoG zUkwW`{jHtP?f3eqjtn;EuZCZ){jH@xjCtK1A$|a22?Tm$(5^Ii1ww&WA}|Vs3V}cj zarJ_jS>{W)Wc&;!<0lnjbzChFu=K%@MnIzraz8==XrKL&2%0uZ3EBzt*@wZ8ULb^M zEP*&E4LTUgkU(b2T^4vChd=>tdi4^az$_7Z%~GK^C==>!N>S1)6MDTWu^@_wl2If_ zP%IRv#e!t^pI$6r=_CT4RxDJTq(Z$(l1e&cshCrq;(7l3mz2nbNvB3EpxZzXHkr?C zkQ$=7`#FMtHvIab|L{A+0|V82!JtJFK~iEU7_vZN5a`tgFf@q(%Z*+x$c|1gDHw9@ zQ!f=H6*3?exkwNM!vpuc3i03D6%f=5L}0W)E>49=A60>-BG7?Y;MI%3H6Rf{D53_F zr8WRoqzZ!~rAH+)2}9y{+9YN*F7pXfmXzMF6Xpn-DY;Lbvio@=L)x2=g!CDMDM%n` z8&fCJnDvn$N1M_3TxPr6B&Np|3T0HS6#2Y%pAv|UFw#*;qDsFrA;~Dk2C>(N8O>>n-^Nvm zgiM`L<5o(%DVI5z^yY@F4A`YIzbojHnwdO8n@OgTrt-n!Z|h~Op19V>hLG&Y7J`8L#P0Yr%(eF3!A-e8bVo;kV?dkDJXrwS1@F+ z#hK=@*mec!Ry#c=zQd^{f@VKW=ix^@xStS*U88^oRr$(6+=p$*NLJelBCPT z86^&9a4B%ddZsMG^hw}o5F-@{(h`yIqB#yz248~mlS(J*@{_TD{IE%(G?~!rG+Hms z$_=2FxG0zvv(Aw+inLk_;zl%KNl41h5rjl(B*}_tAi2~WgguZznc_nTA!5KPvm-@@ z)08D<@g*ESGAPm_u%Ds_>~XU{CKahfcCCS<&d3vfLeB}Yg;0(lJH-pf>8w$`Q9+g9C&cva#j2AX)bSej>lRAwIk`eR}QoAB3X3!~; z<2Cvr8r(Vh5DTZ1cM1)KprrN;$Z_3^uR8Y)FV^S{5IIn zS5R^_jz|myQ^IuuNica91P|CTlxB8?NRHd4vN%jO${MiPZQP)>fWwGi<@3`cQnA7; z1@j@|3W6f9QijBQP|D6mAx=UQfRaL`TE`P)P(LB@!vUj9&x09?n2N!SXXG|39+XH3 zqg0>c&`ugdZlMOD10iYuQ9geO4mYvGP*S9IiJ^=f11hF5(6tB%8^0)Uj^ID4a!$vM z+B7e1McMYGHI#_DXmn{t7Nnb`q(Tzq_(B@7lO{}|7RaQH0&j)-5{Vo^nmFd6r6W?a zl$5dwJ{vP6Q<&843&kB48xL10!~vl*mC@1TrbJ3l=kriQf@6o}5RqguAt6Ht*-d^j zLC+An0>u_cZ4NHv<;tNLojt{z+7TKp`}!DIHAI{97-AG`Wa!fPOOt8-5OYz;}Dp6qu#)ap=b;>hS?C?NSYEf zn~Vmrb(Zi~Q=DXoofmZDyBLX6zYWxTw%)*v|>yvOJJh$!>BFA zrC2N?1sM~WI6V&06K0af(RuVL+#R6^3C}^`OpBdm5QAf7DDcrv)XKF$Nid^C1ky1I z+^Cmp@r2S`CEsmK`zW@-sAmcUYKJDt4l2=v$tg7ISvHqcnL<^33B*pDC2&Z_z};5T zYn4!RJ`sdtX$TD%*?e`5LwPWzj4Bw$fJ^ScQ>33{KvJuX2glqLxLv=3#kOn zgs=!6kCz5Ir`5Rw94;-ya9C6XBLw>`Y>bU4WjTUrTF7PcSi~}^Q{p8Nsluk#_~=X} zLinUmQov$zq;j^0Cs11gDuNHRDU4`Sfk;^Gv})BBuug+!0o$3d=ooQtj-Wt>M73fl zB4wtzVl0zVk|-m_qr;?D<+DXmyN3v5;u5JqoD5S;NGAsN9#eO`(M#Go-iA)^~dFo!du;HQa*CIbo7IEphNwb%=lNE zn9%4ldLCe0$#&-mCK$R9X;8YXlr5^#T77biDPg(Tj<8Y7(o=$9z#|qBlmR6WmEarheh^T(GXhB}Dp5)urUV!(c+n&e_V6v76fj{yjsuDXQ>ZDf;$|FDp;9Hs zH93M2r`8_|c>{@vIIc&0s5%t$qdL7aEC7bZtWm>EtIJ3QbeKisPZOy?D1h-IMx)k% zNuz8DmJushWSkUB%~pPaV*k-82RJ@j+9X9olmlaGNLRvRg%eD`H)51(AkIyDzW*-qET`I8%5t#Lim;{$6c+LQb znEvMQ5XwY1;A9XB;PhmSvY`41$#a`?1f6M>*^jUSLMtp0Dp}#E9gFx4s24>UA&fyW z)%=hv8P1}eZZkiaaS|YmA(Cmc*_e_9%{GAqjV95AFNLakXpZ2&MKpw&qk&R%mm6XS zf)EFo#(&d2;AMmuiA!<9j3{+!qeYr913z96Iq;NGJ7N~6bPSDHABZLiQa~6*gx6t3 zx$#uo#@E6bzfx(DxIzS$bq5kI5(s$cb{bO<@k6NCLLfxMopWzF4!?4AxGBnn1j7G? zIV7PbjbbB=D&+y7KQWfotz-l|K9wtFhzmG5f>Mixh#AZv_QE4E8$|axEv^X0@i`&X z>kEan1k-6FK}sYLt4(w;H;@5DKS`m5LxZ>h4Gh5`NHNA;LN|vh2 z&ZI$Eq6#Y$LLCJ|wt850Iu{bi|7gu2fu=$N!QWa-(V!=!Gb)%Nw}uN_!Zsa}OmJD! zu*io*_=}6xU@uq#_|C!fWvY@zK97}YY)tam=YBiA}Bv$g`x-y zrNn#-Ee5`OP#wzh;37Vr;adaN0((f~sZqNo>$HuL3{b#K)I+mzO^`rGXo0#iBEVY9 z-5^%ZYJk>cPoZWQz{^p$*Mc#_F=osaz|0pb96)A85t|&Wb z2=G)u#bBiraeDkhj>M%#4Llje(KxMK%;R9vB``1MFj5Xf8ligw2FPUhM>Uu*lhOg& zavsCOi;`r4qX)*_31p}Y#ZZ&uE6b6yA!Z!nU?e0!)E=6h@x|-^&!Wi<`CsKDqPZZY z*6(%#AFPkZ{Cb9!OfrQM18Pxvow}sbZk0<@s9dUnl^}0Ra*YX^)0I%r!WtjFiMsGnYp|p%B}}i(#;flfVNRKRe+;X)&e3 z#xNu-Y9(00C_(bAQk|d4mWQk?H$oIBHqD`^xrZE+yv2KD`W^j z8Ep#HWD__L{n-<=Y;c?uq!;MgMtGfwpP-akX;EPS5gN~?oIuq1WmS1KZi;V-YvgejC69-41Y;D6sUb5NqDu%BqJh~_ zCMq%*;(V=72>514piF>CSlI!fjxwARU{e7foyIgm37g7fQrJu~lT+hLo2NV-5NlX++q99%rM6xMmEUS0{J;bAfXao{@LRN^#ZSC0R}vUoM2#Bd0M4UxK%lN>gbhrX6uVNm-I_syJS>gK_!hcUFU!hW zXh}l_lM-@r0v^mIba22~Ej*+n>GCL8ohO#KinH0M#b8kcf)1`xs?}Sg8V(V4i!%IB*mM=thqa+ zAx&B=6eg#G7?4GTX$Wr0dPoGtTu?>;5CSC!U>|{S!V?m*9dJRO!nDC6E-Yk`VOB66 zWuXz&#&v-OZ8Xu%BC}kHi`XjE7GYtu2r2?@E@P!x6Kvo%0OrLvV|=e2xAQT-5vD=~ z7F&V<)0E1j1$st?7Lg=K1FVEF7MBZxc_3MbC#b|35ssVBWJkk3hmo!1a+EmEHIR7R z2wAKaqmC1|y8UX4p#Zm`JbnTk>O*2|*vboe5KAHkr!<5%YQ*f$bcz|%Mtocs*JT$< z#qtb_+knH9_$_pR1qH-O93YR7(i0?&2}E1Kp%o3_F)F1EvE3#sKc#VLl}cGSE)p?Q zz%dFCfrg+dm4p+uLBKhwL8K-U;ZO!7 zd7sq$h0SQi6$Fa~!VA8!1TZThcsnvr!K-^$qh=JiPxRN9I*X1A<;R6+?g(w8b z&IYVd!4-f&poBXN&d9+oNt|VIkqBEvC?!fIfW8G%V7(!!IRuM11^6N9$rx}v5;iI{ zHfGWsPnsn(P#gwolJ&nT429B+Bv?TTSjS-zL3x-=v)M8pJxX91m0T^MxZw;<#KDl5 zv>*#0NS%y{#}f**EoehIY9gjd`AIp@F^Ctj#vOh(#`LRUI*3Dbd}olRRwbi23Fi~`#zG(+qli{J~g$$bv8W3lN#L^*;v+%751h9*%OmW|;%Gq9kSORpN$%t5;AQ#cw z*$yd4`8gR2pHguBZUN$!*xgbVUF}Ce1{D;bxWFRS8c>w$20>0d%#R4I2^z;#U=PCx z6);jNv)7;T3S}%sz!=prZG;~Lb#|^1j%#(WU#4{gtO1VSN1z-!0bsKP-Go~ql@v$= zG10@Nh>b_2}E2mfyR}T@ykkK&_j^QiD$wXI~0%vQ$bAcq*)0ylR@!NyOQR2 z0j;z}bu@#~1568(qs*!|5N1+Ta7D4^i=cWw= z6<}*%1{>ohNCux$snT3kS{;n>6RwO(5{-+rCY93RB-9y@m9i32f){r92|iG@9Kl@A zeqAKN%ji_hVAx}lz_D1+O+Xe26*2m38NI=8u+fx2n^6{lK^WrYV?I;{tS}On1j2B} z908vRG#Shh45fJ{kr9ze^(HZvjO!>vN*Lf-xsFhTLFxgV{RNpqfRg{uaaq>seNpVM zf-?}g`D1KI?V<(Yl+eX+N)V?@eDWwKBcjLTlrlv5 zd2CaV=U2Ie0LcSIS}MiQ$uNf6RXD?sW$;i$ZsWLgxGQAW`-2+N!Ey4;MnRa88dNwc zgS;T4WcZj=#%+-kOdUwjbxysOZVX9m41SWQQxxPW8Lc7B*HT&ofO4{-GGT`J8Wf`2 zvJn@MY7Q>^%A$N_O#UbWfF#J`0ZEW1$6+oLih4jM1fp+*uY)uy9z))N(EcY$=3R!ph!gsLueR9EkQ_Q%D{4|$ioveopgF4THxr7 z3aeFsE3t%@?z404Mz5HVuwn^q)CM#Y_)RmJ;iaIAD4swa~qMhI?TyCJQLmr-h5kikvT%&HKm5LCGnNF&$PI)bJvnD4kS_9EjZKRG7p{ zhe4ZC#uY51Q5jGmPQ8Jy;7ABO!nQ-e<^xaz7!MyX9;PoTY>q<|@z4r#1pt8mYpx@Z zYkdHs1G!F86y*Rg>koi9K#N#qpwuAMIW$o|?DTL@7Z{T$N05&v?MiOgXcy_gB6o0A zehQdSsRxgkJv1^4Hp^{5vHz;VWJ^1LR&_{Fh)t?=Mis~!;>jGrY!aGg#`#zTgXs)q zB$i;th^So@Rm3r|-3>XtE~6SXnfPi>w%BC>Wek=!1#yvVOb~V%0QY}%Td-0>*+e8; zR!WM$?i)3w`3|O977kj~25%@BR}mh%1&O6eoilBW$`C0G0!TCp5*B+wLJ07a9ET(n z&BDn43Zi@!h!?~?e@9?=Kntxr94rEu=Jcp61QsIV1?6BpQ<%^Z;fRPH4EQV=2^w-T zBLt{%r|p)w$|X}#41rWb0Jm}gzJDRk)_|Oy$_*Lg)39)m=Jp^c z&UR2F0>w0F!XJ+qtrD{jqXYJ10Qpx2WE>~UqmQ_q9tuS%jzBE6#!w1Wz#J(<#u#?n zB?b1-u1pJXmlu)x39dNk;(!bb#D0Hb-Cw|}|4hy~4*z^OD9sRj$j#w`#0U@4rKHMk zFo3+8#|c~Xq%JKI$rKuyj-lhG!U`dS6^RjKAkE`>aW{wbFl}5hoFj-*n8#$t9U4A6 zg=T1|OX&*QnF$M~iJR>j$Q>k7W)k%<87WrGzyn1I7R^FR94V%T7YIZln8S5PXsIA5 z8}SQp>=dexJFHfK2mqWHM8jOa55<*Hm&u4|M1-FbI)NFa1-NmZGm-{I*d>FtD%7Qj zxq#=1vPc>e>{MVe@ib~LaHC?c#uOJYXdqiJ82uNi{Ra?V4znsy61fM|1`05TD2GjW z;Iz;#_i5sENs_+ zM8SkEP2oC1sdD+PX1m#DL}0E;=`3(kq!$+B61EyqYf}c0c>rkn-|KmQgh~LD5@>)6 zOA2K==-*vfZk9oyfCKISmk>9M?|Qp$?BpgT@n} z>X?z)L*byoC-93y1p%i@W1_P-Jh3Tg062Bp6K2yaF&CwDQfz$QtBY_`IVOS4*{G8C*7zFEZaDfKEuVYJXxEDtjvbkRT}%gthr zW(a_lbO!({ztl3n8hcV$;J!gr@rV1)4f+2nO_itkMg^UQ0BWe*W)bD46Acki~x@hOnIDfxReG4r5W86Tm27-Q)=VXxjsM#{_l_VRRApV1i+B7BY!~2N=W0Ro3%luM$Jj3zQ8OYFE1DfA_PHk zMaGPTD-hVgLi(p|9b|%MaibtKCV1Hx)0Bmr;au%SSg;8s$03MG>A@t#%iWPivfvzO z4rcVr#SjhDJ%WCI#K_T77K-v1$Ydblz1^GcITpF2$0D~yRaI*-yN9~YNI*r>0>fK2LsYwAjWCcSbGXQM_n_wV~1$h3yLq0XpO_*kGI64gF<@ZLWFS zf7ycj|FB!y<@|GRG9D*Gxy|4%C*%&f!(hin3~XnHzwAtQIse$Ii{W_4@5HiOydgXq zqY5^Bw}<{}@y{E$3)lpE(ZQ~C=+AxbU-kp%HU(R3_x6)u__0dw+RrFD z@r82tvdfz$j(zyP+4_@`N%UwC|WzNDywfnc9|NYS- zg@W-l-0?Q+M&DSNHwYc zz<@%v%e0^MYz4Q-&gUwy^{`i9a~J01>os2tZarCo#1wVj=&>IW8X{r)jhwu|avvvXHkRlby(-Zig^uWcm zAaJM6Tr~3fgINXrOPSzn?pa960$;zdYXU8poPx$2a5>AA0g`g_V0Lzppd&~}Mx91C)dkXt zrI5*;qPjtn6eTle#{;^P89{%%FI;`aSGI!!zP>Con8N|bV*mGrw#d>Ydbw?-Z(rx{ z88G&YVAY7~SKpm`=pXqyMBF^su}-UMBUG0I?&ITbyIykNjZC&#)VNuE;=#6^4>aIg z%I&GS`}dFb5#c?lUG|-+wS%jyJkfCEh^_~o$%@RLcBJ|EYW_(z)?b1g_J^BC@+Pz_ zHl~!6Shdl5we_b`*LtUZi~sgSJAM$doLW@4;-}zmB^S}A%#kU_7p*nTD!te>HK~c? z-B7!{(6Mr#s;$}GjdAusi@t59P4`EaObRWjfK_Yq!^3{PKYVz7tNxym7FEBGFQ3ls z*>gZLik^%deXwZw&4$PKuCX?C{5ECr@}q5Q1~)^oGA&yg7z1R6rWFssEgDYWuo70R zsD{)zRI>K#=X5H(Y+-xrP^9jx74Ozn-QR{azRarMm+t!iXuGE%U77|_+pBH6SKGF2 zTdQr`#%kNPZQHhO+xG7F`(|d(j+lr);*Y%#>!c1Up2*6lGV{I=s-uQyfTh7LNlMD? zOWeMDF)USm_}ieWmrKO>8|3fp6(R{MRqxGBgi}P+Y{4YP_G?Rff5m77B1Y9>^%eTk zlKI;pV!2kY&(Gu3%!hTZ&v1fn{RtcgCRvA{0Dp?Nq+QD6+^M(SNS}#l%{NRaAP>Ol z=K&or%w+Vw8G>t{Qm?JDIq$ND^CIGbB`OGsOZ{au)Kk7-GyowTwi z;6G177MrwF9RUf>JPDC8?gv*+dy)ywBRJK6JT~dm_B94e)fl1w@GGhDb`;6PK%ov~ z7;%aoswwApp^k3@-_44jI+9~^BsLx$208?&=}O!${FLjz_zUm?QT|9nANr=gaGR&D zw!dk1sg`@-`Z9mbE}~p+1?HgF{Z$e60;fmxzhvpC)<5Lgkzx29Q~~e3bz-T@PF!@q zkuKIj2+%;MIB~~v5y`8BhD7N~Xc+3Z$UVv%M4?+m9LQP3)^EdQ&A#OmtN`ZGGXUjo z_lGsIrFN(AggT>#0fIw9LS~c+9;UFsxpfR98#G4aPv1J+vhPFnpqIy+FCgbc2vg7a zI1b)9tn9+oEuGljlAl3l%lax1-Q7m$^LECW@n^{5rmR%;!n#X8d(+#b77QalqLw~j zh+x1<0S*Ys)F(IH&}P9oW>ql?u1X0pM3-k5V$6tbK;ZPV0R;J3drYTu-=StRD zBQX}+qo*6d$mGQl{!6V044NO40Qk<5eh(xdI7UWO`|S=X83lM)fj_}z4jByWpPuU> zQVuX(S~b4uW4>C74G;oj7sf<^dz`~@qBqGvWe>o|6G0}BxE(Ztqc3DETJ5;c zx%2Q$Y)OPDaS>M>{LF8iMd8zp0%K&%yZ|aHhj)6EXZ)6HQ5iyF`TNmab^KQ0*maWx zC3^_EMn?oMRoA;qi$?PsI)Sb#WG~<)bI$KunJSac{My+7U2&;s#SQI!9uer;q9A#g z9GN}X0ztt$adXnP6R$W3Q4iLDfQ?jYN=S$`=tBz77(LR8j7oTT;hjzzn;bYKY`gc_ z%Uy!zEf`c1Ol8h8bm0j0dNsK3S7y&(^Qie5Qw#N8@2u8j|@UDcmmJWoDT{*7mOjMG7a2= zfVqR2pH<4(G&jnPHps#uZw4`I&GnG zC^}|#hQaD58{qA>MbA{2MTS( z$I1@sY?XQE^3xx!(h3&eK2@IZ~|#g)dCm&+sjN2 zWWR5dg0YFH8Jrf(w!_bJIhFfM>$}|v&BZK$7dw3tl=eA6Dqr&parR+v!Dmr>v4dCI z_WDl2Iz_ChJJlG@?rPP97;m<9mp?R9UuqShbB*ejfSd>6z$)fcscM~dt8uYBS&unc zPbeo>2xp|TApP6tRijE?ntr0+)dF)_h)H=*Fnt9>J^UDd8=2>^hnWWub#}j!Os*iF zX1VyXkkDnqNt>~8AxnxsaTr{U4e%YBc+R?Td*tMvX3UtSJ(jx%yuE-kUcLp>y#F{m ze}-RFwrIJ+p7fxNvmkqSbs_K(G1&=D9?)8^v3BiF`(nND{B}Zj4f)WS8IH&LeH)tl z-6TW=2;T<&`;!mbV4uJ^yYSA9?>scA)2-_piJhPB*v~BnLbhhU8uuk5{fWrzi~{#64)P@zrEtB2-@wc#2VftY8)f4>iKD zKk;ik3O99zxW~^+U9}QOc<_#Np(%|ol zy?vs!i`s5LB2=AReMrwZ@Qp;!>-MzdrJ2CK{j;pp>VZb?J6rJENP}lqDRpxO&Rm0T z#X;*7@Yrr4Gm2l`+JP?w3cbmqI^H|d@dAe7$Ax1VlkS3;n)>!9(o1|=A=-}Wyou& zjmfj{@G)KRKqmNN>5%db^BPi1B3?#7a}+R-OVrcJvMbROm}BKk7m0w)H>EO(L~Ozg zMOcu?%tYYuqD~LWho~|D>0`slN9{6IW_skoHK!eAj2xUyvss1F;$CkU5nF&lUn2Ac z#ZqYG>fnGC#$L#zk*mcH2{|j}7DVw6?!bh>eP)_W?RKOPN2HSsj+ARPO^^@S;z98Q zB~0Th9~W?L_<2cjvCGc@klqLhbu*+w62(U_l28V$YY5rmmdnG(YQq>8s^p8OOx3az z62B+)5{Z$#C*uZ#4%Qax{1WY3%?wtGfE(pl60hCuO4Cj znNlH=A#EwEyQj!AQxVL2X*1BIUJOJ6fk>05f`a_r0SVbPu!3uGX%};R+fbt9P6D!( zZ-N9HrNd{2F-|RAWje^Ab5coCB(uyV@gabE_7ea4U>{+`4Uo16{k)u5qPpw zjHyk-)f&XOv?cIFJ1T7`Jw;|P^UjNM@s%3l95KUgldusPeU+O#ZFItURt>f79>=J| z#Ogg8fRY&Vfem#cUy(@W7z5NJLl$T&t~r4v)aY0Ql_C8v50soiFkWR$KB`~Vc}lU z&pRHw+34n;`@!A^O3|rYhq=%=Np_dZTosqS_P%d|$38>6_l8^G^$)fY(n$ANOgf(d zbIUP_$5j|>Ca@<<_H5Bt*)4el0>7#lK%gvv?enq|L?7|Wl_ZktYnxVIF5@!S4hj5& zWy?ib%mzBfHY>^L(Ts9$?)fQcdsE^j{EPN#p7N-8wmnfu$|;0i@CuKlU~F_hjS>{hP5ZiXjmLClPH9+ zT34M%GxW2{!By36>|{EKi!SNHJR!I5GqI$|8O*N{KF!3_UFWZ1&|ly(cWTiaU!U`# z5)NZKPA1U6jk0-jI@oSb6lKYb=%o^befv{$J3>jXI5KkiiL-*w7**P$iZ4dq_Ly{f z5%+1v-v`9X%c;Rhj=y-uLR$7=sDcvKy}vAVA7-qZWxD@Xj8`=qY2%3Jb_YT})A5jn z=N=SbRo(V`j4aw7Fk!7V00@&3lcT~J)8ofm@>o>_XlqOz=2m9O83b|MX@Vg>Cw(it zrbF?Hkf7=-ob1NasqHyMbD2uI-QXp)9+nB$U|8UsqyBOy5O6L5bBm09^fHKpplIPZ zb@EKoCl3Ius3*L|mJ@*AfS&@7@fZuqO0b11wF^YpC7e4Y6l;|Bv!Wx`IH+b^tgVb?lrc=P*DLI@uRnvnZI%aMO%4#ZcEm)U;9|-?@vLl%cobfo1!?SZdl|O_ew&(yJiO4Kp0) zwTB~u)b^DJzY031D5}jlKzwG2Vt04(HHdUp2CnYehiqekvAtCGSEC*=s-Y`Vlwtp6 z6q-G~ULorGPO45ULlQA^i=sfIJSWOXAA9_-7TE+7)YTGIhe7J!W@G%VGzd2f)T7W1 zHMFxzwVGz*-K>#cxZ^@RGByIZ;}cy4?LV8Xar;}FQXgi5xn3K?pfnP4g$2Z*7h)nL zP-_Ur@AO>f9RsEC7MO-r`E#ve#{v6eCMgJaXDIpw)Ima2lu^Ga#2zpgHY$M!8|Oxk zWBmr@TSv@fbdgg>M%<=M4?2ulNIp#o7_o`nAfhv328M~~*UJKsGq<}S2|)k>Mv1^2 zb?Xieu8(i43_8D|5-p5XP#MK?R~#S4-f@Nrm$&NM=M)?ALnHPsWW?O+q`^ui)nY@B zeGH1IWpiFnp$1FKdh`FTrk1@sfPj^0+hO(Xe<~1~m9lf#zP6}`^l1hvK|kEjYekcBokgsxav+z^1d1~9zt@L zR)T$&(JUr%@`b~7O$oT5Jju4fcJlOn{3LJ))Oarmow!Ze2D8_ELUW11OtC2i7L8HW zYMNZ~i5;IsefmFMox~ftY14HDnu>|{O`v*c^o`oOWf{Ck3P{}RJd=J^X2wEi7hDKU z5Ba?E=K4zmSL%YvJf6ka)Lz2|Pd zoit%;?(E3GC?J5Y0^>-Ke zsYfnfMIg0+r(anF>mA7et3omYd93vER-EB@fj*F`K(YPsJS)|y#u(>@ssSn$Iy)gf zGQ#lrqNjb#Se9N-(qg-*?l*zKwDObZ7{z1+Ka3d^%7tK=0nxl{^N8|McDdoBWg;cv z4CH}0%QTQqs-KDpp$Aui{UCYLH@`p@j~v-785A`G)XNd%+<0IxLHwAIl7Xq1)Eo;d zKLW}8qAnE&ifC`%mU}ohGu@g-LPQ&Zpn;g`ETHI=LY@K94e3P=&Lf~0gMT-Y!XzsE zD=%e8>B2NQ+T;~IA!)RXX?ycPENcf1Y9}}8FYULRnk(3eOc(F3L{AE^%mj2|c1U{Li&R&dGnQiBo0V)CHO5s805(;{OflR^x zbKf|l1?Qdel#48ShCWVh9`XF{|2bw3U;twMYs^dnbq)>kigoyS!d`V6?v5sZ|vv@ozjW zzO^s+1vo8Lj^6~zHsSij%KDAZn2;j&^G9D3is^c)C8z%-a@A%8bE6`eccVHRn$6LQ z6@&rF%gW{vd^IMuq1z^XUWsOHGyPKr*l()xWJ1c{-Cy0Pjwc>fr*ZlDf? z4)=UHnrq}l6$;q$*PV}QJNcA#|0)ciA5+v)}4JC&y9dc&KkR{vTVK$ z$UbVY4XR5^TF>?FJu6@9K5{erNWJQOEArK}g#bTk+YuQV&F5D~>yHhaA?ea3-rS}t zjAo~D2aRHN*10fwoK&lJjeXM8kX)a78_#4P0#zcQWTLc84XTZ{!Twq)k|?8=7P*vD zWZY&MdV8w)c#UG!R;RdRjp7vcSk80(<0W!$>rDL>A5+_D{S?|g>JdFf55(xZMPMFb)B#;X2i95Y6>3I|eb}ng$2$X0Ojf1+Dj(=V_ zuRnq~)G2DQiL%k{_TFO$D6^uh?BhXc?!3V%#k(NS)OW28v8eqe z+YJrnm>=X-I5+m~ab8!%cQ8QAFYqNFYA}&p!9QWqcp=2GOuiv9yp+j8N=dea@G;FaG5dSNI4b6b!}hTTuRBBGnDgsg8el?`Cu9l*klc|G(ll) zzk}%vYkFcek}dVC>E75(7^JvH`_CLQM_`3xlXNfxuTjy3*IcSd%3(aMMl#zR?%PAU zo{6lx4;-dY!RESxSc6u)7kORRJ#aplC_b+%p~cUXu4>unsYv#XH!FTuXo=G5M(7IH>92ak3br~BOR>~ZCYGzQwV^zaW#iL-98okm%7*Z0NPdRD%hE3?^L>31}O+#p5GNxz% z|IVlwR8_`)Qcto|d-#mt2j%z!N2i3Y@2pJN+e_Yp|A%?9M)-P-#D`=!*jkOa-ZEKA zOtiu1=DC_-n^ICi{PAWfN`xY@jo87p#hjyg*w<=@rB#VMUy4ak=Ad;zVe-|f^(7Fs z3-he2k5_vdMOI_!A+wnI^GLB2G?4g_v6^c8F@3$+`W(t_vb6Z?a1sb9QCx?BNemPQ7U*OFaiRVzCPIM(+S zIUUAXBL}q^FkhKS0%yzwh!t*!XBI+ri2JIW{#Pb*JV3#>Tn+0~;T%z$RjzKDVFZ zDZ=_UHqL|dgN@e${tFwY#{oH8{|6gi77W$=O`A-K^y>0g+MkeHJCnT7AG6^YPMcMJ zGkKR1Ch#x@i#Q8a34{L>(qNeCvc&r%Cirar6}{_>B3~U%)s>ule2d6EiAwwx6?qfR zNSWEpnwd#B5iQhlp^prmSH*jAdHhsVKQnR?!ocV(K}}Ui04W-+_~zIeMRE!^AkH<= zy=q)=to@r0XVoxlHRM3lBjST%=*Jo#3K;d#ZI3`3Ga|QVGybsCt)d|7%jG%evqPe{s7_)38?0Ee$!wU|2S~u!Gqo{lg!Y&>G8NZp1BWP4`Od+&@;HL zenr}W4~e-3OweJ$$DYsk=X7<~*l9sm2ukb4sW@{8!CQ{NdDtk<{=sx!wN72u3-$6= zr03zM6;-d%(;vF8!Qvvc?|4P!@Ie3Kg~ov!zEHaUI+551_z{V8?~f2{FZc}jPVUW5z`O`qX; z`q_V3U&#h>n$c5SVc1M4#ai&alDArv56^RzIeH1``BR7yR zWzmp*-+x)-{c56VQS1e`y5e{2n|kahyImTO1&UUUf#n*HW`;=?9>SCl*vee0L-bl1 z{ZmNp@}kfjg%1C+#*2QeadXlCw8jy~e-AYJrUwl=<^D=X+sH+xoW_)F7FcyN`vWrX zGwl+}0=);^CO4^}sos!Hn_-^Bfo0Zx^-FG<_u&mYubB2n8P{QX83+CDww$qMAmc{> zyP%;$n~%slFw*?Ryo{w2U!)1?h9$gu9P{_^nSlxL;=;GVrnSA>%<=kAzfF#QphYcz zqY@>Gq(ftX3NgCaU<^w3+AgNifE^Cx*{a?y3=7ag3UTPnJfrU5n_@vRI;+$d#wZ4?zu+8o(BBarw1N zOgg9ksuUznM};PSvI}y1QU$%h4x28I)Myl0V6fJtHK~gY=15QAP7%gBl`aL-l_KQl zzJm}2$J)hwU(RVd=P)4lj>y2)7&+}7VQ*C!j|_*oYxFx-=XaJar|VboMNRS#p9C#c zg(_EeG+mV>M3BKSRHkU861HZ_+WO42@M)zWcweiPj%Hkv){5H*@d|Kqin&bE$!G}h zUNLDYR>{m6fa?^mX$NtiireqNmxdI!~;EpFr^uLdUv&z)D~j z$)X$rWv~?Qq%+s@8yfg?TMRT6_Yf;B}Hh6aK z!Y1?5Efs@aQJC!9;%|zIaL!M7kJjh!AWVR>os6r;5`a#pHTwF#;*tjgH zxB9JdgC*yfU-Ee)s)Cvz$*5}xFaSRk{ecBWktl6$Uzn-=0$hx0R5&x8(Gx5ZaFeaf zpwQZt?ZVWqcO)*7O6^X}Umihsw{;mpqz&1v)&V2g56iG!+M+Em4>O6s_AI@LGk{hIHv znKUMZgXV#35(B4^BUV0rVq_xiIWTRV2`k7+zfv0*N~$RCCqoGg$7-h0;*XbWNnSD< z6Crk0(GpSgoV}0wL$cRO5DU|CSTS)$$gL;4hArhXq?RZgR6H8AZTIPQyKWEU50$Jn zrI(5j-!2JFRH<~J8%M*OJm8+YLSncNxA-FU)QJseCLnR{uN~yyadYKV5@B}tRGlIiISbbz_ zpTS1Evg?PE{esW0gS-wMGN#qK11 z|NJ5`XvSQrP>%kG9T!yDgEOuWa2x<|4Zs?R#xrx;XwsWD8y>p7G|#IEz;~2lCi70% z$+L3u3@K=Yr|+MV{87hlR=%Qc8Q6kR{`j<{J|U!^ttu(4vvpd-VN3qp`H}?4@C>A;OPPhFFI-yf#D4EP#b9u%r6}I5i({NjeA$@jVE!FW!9D1_(l~6&z&hbAWBVoU8-r)9HTY3qx`Yd8l ze>=^omo>eu`)wAgrVFDfQ)tJXYE3<2ypTY8pESF`B_8~YmB`wqaz~krW zn!y&kN8{zx$Yxb-Kk)d*Ln>gz4?OPn1CQgB5_In5(xUaAyLDXo*DH}dy^GFOn(J^T zF0dIaj&iqNOCO*sHk668L>f0%&6t95?b%5u>WD5oSZat=0kbxzzjj?ULc47CmU0fB zNMrbyDr22_N+vJ#Z-Ra%Ax~#D&J+Zu!vmW`E$7OGCRK#G%I?XxX>Y*++(3%y{^DuN zD4elutx)(Q(ybMSDl%jWRLV_&mP@N)w^S}gL}kHquWj;l%e{)?C;SOvQ%mRLf+Gwa zBrf)9`Rhs8|o`QL6gPYKF zJY0Yo#SN@yr5xYVHbdAxtC(e}nN%9ubigW>)K+2EHBM_5Fe{LnI>cS1e&xta;xyRI zj1&WgkM@Hxnt7==#WXX<0BOA1UEki)Dw;I)O7#9*;m|Fi;voMY(pggIjmdR=w62HC zz^T49RDf7|sIh%D!f|zM2SGG!l5P!Nx&qbiLVRz*8B~%>HCpyae{Je!3xDi)$&~~} zSR!wjDR!sN{=Fx!#}=XRJJGoylx<#@c+2PN_pIc$(y%ZcFDe!1_a{p2ab(~Xd~)l2 zOtH=VyI^%j__dE-MoMKgQVH(NTu!;t2otEJ(5qEnQ!}u#0G+YakeEj!bK^wHsW`eH zw*7#q#=?!=7T~gf>}E}^AK{+y!Es^|PPM=h_u-;C&+AS~CAe+?Jh;xxtRZ!fq6uN9 zd(u`P>b2iPHK^1wyPvw^+aBKddqWOjNwdZB;5jRzgwc`koj58!QbN zb~G@Ds|f*GN6!Aq?QJqXJ|Juz-Hqb>FQR>1U=Eel89~?GD1-wIDYlYOyR?8Kw7Hd^kZAQ#tNUFeh(`KxS zghU)%>RGDe+;*snB(wK1z~K2J@Z1#42#3<8`8N@wdscfqu8dEPZ}#mJ0`} zF4WO&amI;31=-3Cn(+<|FDW7^a2omyQ}d5R&Yzn>{HVI)5R+jXq#q8JHzF#CPSRB@ zV9;jEc0Zpcxo2^@M1zQ_p)m!9^Ef|SC>VJ*7x(wqEUh&q%QFmIbf)*s;{)(FV1rrM z$SrGOP@73oxNg&wWr1*BU58zNV?^7AwWk)D*^M(>;ny;gYMb_``lUt550YI5TBq&! z&7vfqyNl-&x*@=}}Bj#y&svM>ZK46oq)+4m$> z-uJjVahFCN_V3^Ay(NLk?-p7f$C}*JttFv+u#-BTUQF!vu`AZF?%5bx!!T?DFxI3~ zfKijerIg*%jjAHr%+hZCjU^tH8PTUv2A9usg%SVQlTy)!tLNb ztkcBlYZ>|c@8p)1mbB=M_y!8~;JDQGCa;PTMH zr>54+JDQ6@dM^5wfL(By^X``p$x*M)hH+>}N& zta4uOu3OygPi|t8W)l^8bJ&isZq3S~>it9P!#r;tsaqnfjAG4HRIIVu<8V-H!lL~I z#=&II@Y?EY)^(|}cOVme6 z)a(_5n)%C;O1)|o{!E|LPS7Sw#;|*B2M2;1aCF_*=L`}=mUjX7%`UxIdjXGzt72oZ z6__-7K9H~LLts=r>RTI-U_!{)l#)y`_BDhIQ@BoS&G&|WYZoz*3-8gSPU=vla-w1L z_JZx6Drkq+@dVnm++?#2Na!5)YYV2CzS?m=AOYp(+NiZQyA-{J;L z`)KyCn>{_9mxn7&nj8qj2T_?y3YwWkmi&mrpW17LlKJSu>sFYaZtD~ zQ&2cjEl{Pig}76dX-w=9S95RGx;{>#zarFe>{W7-=l4LE^1rn4-N&av1OTAhw(Bhk zb=&H{7AY(MBA`Ei7shNv{2TJL#CG>?j`E~W*Lxk;M>Fw%wDCwp>WQD(HS-uY(LuO{yY`-4rnv&ouhklLd0`o`0oDM<^UjVHnY2WIHni~Xuc$5f_43LmYe}$>uJ&gMG zZWJEuAL;-c5d5AnaIJ+nAzxTfc^w4D?!hlmcfO-9kyyRvxwvbbjc&?M{>h$YzRdiV zqG@jLNUD%u8`E>3R}49%&eT(;ecIe8S&iZnGtvkAx)6ybpJJ#0v$SPP4Jis( z8een+=}v$-RNgn9iOKh}$lc@pqm85dhc=Ev^*?Cil|R}z2+Tj)_;V)XGDO$j1?UP+ z4{-nIiGRZ(EMhLXmz)WB^=ogHZ6-_8lr^6LuTp&r7OuK*z%PqG&!+Q`CFO9_+$|-QVOdvIn1x)B^cKtlz7frM zEubu*xuBc0wE@6$hJy)?3z|tqi7Ya^QHdgWl)vved-5u11IktM%2$Ce`MTklO;i30 z8@Koe8&_bmV;Kzc7`=fV2?bxLCd9RP6-oaUXtyvAF_3W*8x%tQ_=U43_?Efwv`Nh@ z^&trQvjr`Vu!0Qo7x?IwbR&b)rHz-FKmMv+Hf~?=why3g3~aZS_psvf(U5fjk<4>t zFKqyhE!(@`v)@twS+|Fp)*wbrAGsz_UW_nh&jnnAxL z8(YR5=l4RR;!<1k#CJ`Y@FD?2hA0N=)Ft1Fp(!%`4Gdl_9r-D3QiD$k$hvOe=y!IwF zTf79D+KSqHkm>UNRv1uvo5MruZ@e?;8k?jJZOnv?4hl+POsI+;7?P1OtCa0(>^T0u z+%c9ftFLwCca|Ig=|{L1p`1vcp}+%-=x?s(WLX?6PgIPNN51)hU}|4Fh}J^6?D#&) zh2ee<#&Q3fG_GBbi7t@venI~ujk^rX4zXb+;sagQEfS`8 z_Lu4JY?G>#LKI2K2-TIg($}fktzd*edhBF_pW;M?H_g3t{5p1l5?r}TiCgs(;R(uI zmLH$1Xv9~DGnfvty$H@|Aw*K(5ER$;DzoBtTv7q}P?FLg@v1nlwr^dI@e?j8{H_|WMVn}v} zlT=iDWh(qBpqoX)2&Ul~p|s2AQ=u9-z>^o6?AH3O8>P53ntZ2OhlatbRvBEmYepCS zkMs9o7=CCW`_zyy3n*@J9@QhrTSZ}PA00g*mGtm>$r%_s<*`Eu`%yRu(VQ}!2zd)Q zP;!cpzhgbahz$z!$uNNdK#Xoj)qynV66h0z`e!HS<;aDj<6b3-PQWV0b6J6(@C>0; z?@Bn^@X)m!k5D-RzXO&aeu302RA$cO?0lWqa@k-zm*Y}LH}Ss6JxLSRUj}h!bIigv zFBDQ9+*a*qw{8Ym7f!cU?sIgYIL*1W-{eZ%bO^>V{N&#dZkj(c^2fyFWC0$$YO^9A zCzz3hsXFTmzS&E@O#bY)>izW-o;6xsGkF*1UsJlRKfET8qCq|ucg9J+dg3hP)WGsU z$ih*+hVo`{&nslabV;G%?5$I)Na1;e;?%RrxxcLh;E~vyf9K;or{El#Gks2UnaE}( zs~k@}ec(?t$BS_jG<7>OeTq?yD39bO*M-XBf&3=@|f8mFDjosE`V*Xda7kA1n_N(fcID>5HJ`In;avv$Gn_G9tPg=HUC9KHT+H2L05BFYr7Gevs2(Q70 zjPuDt@3spU5t%GT9%do69fi3C0qs!!EzwmeCv?NK6zcB#b)GA#JYjcOj z^$VJK*Pw*V?s!^u;q8RgOqiYfdqq;$exHE~YvXr|Iwf*Q8l_!9+rKq$EAvqBtx-9% zGgG@FvC4E9zT5SS%hS8;i7k1}^ht7N`kj*Mm)dV3sx*7t4L7fp(kHg~7qvw%7fYwg z6@TWVpnGd?9boC6yoHy>3}akF$-li2H#w?Z1`UH+(ijNqg{Hnws+_U^*kh+m|6$we zkvkXnn*OzQz|s1ROSN6VWrelV!%Q8EEQ~5SoIzd+=8P$$hA#lOp3x8!r$soEJ$_0* zTD@#Xew{DMvz&$Y#BjYPs}5Xt%Mu>}RC>(<_dus*lnD31!9cWHQ!mbfx5aK&7{XDb zo@{LuD#jF*I_QBH5;%_|32Cf~wN=3wssJ%yJ}f7VuaP)v2R$lpa5%QO6$d0<5J6N2EI)7@<**p6cWVuL?f9Fu9Mfq@H6xZ?yJ~thk z{l{18lgbAORqp_^iJw~>{Ow|AM2b-jD$(CplB2ZJ5t*F+{@wNmh2?`@-Jns+KcaNQ z{k&~`>ZnTIbbp9TxRlGL1}IF#HUxSYEv^^=6kHOvI-)U8ql)ckrjK7mHufv=x#!Jh ze4d%0CK_CYU5IDjm$zg7mxS>w;9%5hY?vBm+z@vU(aBAm9 zt4O*emE%`t=JCsrNl_g-wat|K1w0y+uTCFRdaf>mob({EGDv*1vQ=Xmd70zI!>BGM zP%-hZuc2*QhG{7fF+4VE&UHeZwG#*ZQ-h4qWFn&e5p^Zw?5Sg8oSP?Zyz@C3I^(sZ z1Kq~s0MwFHObFFXMJoSLFDbLsSjkOmmm(hHyhBa_+A?G8a^B9~k_xCCA#}(~6l~iZ zH}F}Lpf_k?b*cqi+;nApZT86srzaDjDIpdj{(1KPkhVP7l0YI*iKxK>k!4CHk}!)nzsep@bS) zQ&SfP3*1FVd_q9@S`qs?EFX|MmI3oei)E1Kl$7 zn+sH10y~=Ct|o!sR@WT@_5SI-UuTwNnqb4#@Df+n32 zR#gSD?+zm{19D&arCpd!5gAGL6ktj?f7aiHOthbi@b^nEf=UP#dq!9l zdeW0!ieA&gI+9F_Ma!i!wfx^t_a|^|?PPDJV0+uNiTl6ok_01Efxc|r0^(VpFJmr9 zNiRozaL=J&y?uQ9iRLx=Vuvs6g;iWo3XVy6npwaWMKVD|wle}6D`*ey1NHdRS_{ms zH^CzrIx;|xfpLuH2L#ic60|Tkk}q-g+hkkTAqy6bmGQ*1pcCMU2Qjr_j{&Ba!nD~U z*kiwI?Q2-P7t8QmLYY|=`BY=hg%oM?c4~U3s>9u1)q;?(50;_|bX~qLPu-`AP6#T( zS^GgD3qf!8Q4V)br{2FrnFQ>dtcF?h0ZKW+SS8S`q}zSpL3g&E44qe-n%jw=2C6YX zB##-{EttmPwg9fQU5Zv!YL!R?&C^bC>RS(y`MAU3%aWV|9g*URnAI&lr%-TfG0n&?G+oy-dfE?oGHC9OT~Gsl6+ zGH7b9I=V=bz$i>NTM!!E?2;`Nfc2Bu%*Rtm#Gspuvf_#5&6^AH(}4XDH)`4eXF&GM zpKFe4HjY+Fz9k&`Inp-VRjc!(5XWaXNHfuPKfSFj1*BpcqSMuMUX zT=MAW;ectiGEH4Vn|@1}KeOXbXWY?TpriOFkRkiQr|k5;c+=}m(UK3>VaPM;lO($x z7l_4M3hc8?nps`dOwHa{zjd}X5#Eq?c8kBVB6eHx(8sd_ek(+H{|zotAUTf9xr4dk zYro{dxFreLFg0e!P_PNQC@hXa;5b(1;qSa>IHGv!&C}(Lgv=9ct!mA* z%DrKzs--nhZU>Ysk#&n-DaC1Lyk=#*(zMNASDq!YfE49HJ~a-!32Ak=Y<(&(cu0na zj6#4ViQchwHz(43!i%dTLy& zPmAkfNDVfvk12n;LUt-eb4O^^H@~`OqGC4*kU4b6iB(u=ct$KP%Tv@+mysVEK<;}Z z7~(U924f!Bq3#c?lSyK*8Gh%haKesH^s`+s)j0Y7y%ZHaO2zpm`xoHX_{E9&|5 zr{D1Jki!3tP5e9W@IS;R{+)98zZRSL*X{mW)Zw4&|KG6*5$2!P#J_74O8@V=6aPG# z|Fb*6%Fe{}|Jj{bk6Ir=0J&q+nT`snxQ)h5 z${kfvi!n0xYDv9+w{~HKJG!T1I0vj=dS=yTll^!!83_>XBCllk^|MvLAsUwJOgw6}OJ`ASoPa-}~AgNHS z5u1EPBX?Okmqk<8Qb#oo*QG~sWPxqtP|g=pVm>;Qz4m^&+T`teHYupTMdLr~q{H?8 zIDTKQUMjOEL90|<7z@Cs8R^p{zspo7n(Vm?G`YIGbl~A+t)~mQ72Ha*%*oCxZLYKU zJU+Mi=$8zE^yXHQy`Y49ow}>@kytqXp!t4cmTrE3B5`Nia0%vZiuZBXUc0KQ^CvIU zbiB0s4hTVg8cF4~9bJFi_Sr!qcw7hD^7+VNeyJrn85H&QG zhc~a#;znjwq9#X-XFSldx`X*MT=X#izo@#WAiyz09nQ4YG1F&QSKZ6Cqo6OY1FV>h!$Nn>!V z!jLJE>cM#YbnI<;kix@hdaNb>@gf#`p>L`4nR0Tu`l%iK5TzLhskZpwD;H)mw4nU* zIy8Eg`&3;kw$13U;KDA9dp0Zxu2e2=Rae-ZlL-oK;1ZXn)TE>gb&cdlPtcO5X7f!s>F*#_CCg`WBo+A=iUc=IfqhVRdT&dy~2`8UtUJTV8`aM<6^gs*i&$oXH4b z+nNS4F&aR`82@m6+RO)3d5dmZ&%p2YxsTjpFaduj@NSw??up!iawa3T&nEe8iR_Yg~(UgNID-TMR#pL!cQ1$2hjU$**u z$WMdHFf}!22Fw|`LDQeSom}9=vMP3ed3qbQS|MXD_3k_hE#)zmghr05n=)D`AXT_B zK-In6j}xwfa{XZ*87U0FWi=0hhat`MCi;__cg0$;)@CU)VSep(VFIf^i1`o2-`g}G zIQmgA4xqaQAQmk!&u2+5tPme76Hcu7`~bb|!Z!v?iKan9%eix-Edzcdd z+`mN^EAE~w`{)r6&YltKe5JL;m|=r=>ueY;?`_z^zu-2)!Px_~#1F3|2()Bs!9=GE z`(hY2S(Zjh4FFUm_*t+z2x_Ir%d`;nLUrV^oe7DDcJBz48`(^djV42PCrP{n30n8Y zjLDv4R*>3*B6M|9PpBcowMOD0mtJRfieU27*Z;!WXQrKHk)g?X8c8{lxNcV-&88rq z&2)j*(*1;P8BQrgxAAhHWCrDBJxJ2;S2c6|4kgpOm0vX@M8up8LC8z}d zD!FkKstxg`X=f5EZ<8X+2<);g77i5cOTL4ExkQiC*H(oqm;h+gSoUa)$iOa%( z086NAP0k7odT29#bhK=JGg!wrtB$U-aQXy}gW^`JRh!bO_cb`8 zLiY?`!gZtEO&jbqb~`<;Hy>SZibYJN!Lt_mEMix|WJ0@|{FN^EIh`Zc<#}fsFyCCV z)4__X!|n zp>wz;PKaRI@AW9=8#xWV#jFIu^mx^gNh)#^wk>T z%?Mv|wbkC;ubk(%tum-jD4aY_h?Ex9W%UXKk?(}ca%eVbrQmG#77u{-tROaQ2{?B1ihY^}`Jf+5QOX`27rgU_&);f< zw6QK!*UgjovWbf?cguH8w|>p{CzA*2h1rc~fN;VM7c{==VJqcuk_sSjUu3ol9GIW+ zCze3`rIVM?a+(`PHp@v?c(Wq2C%1Md$opdgCW&?;NW>S4lZbbA7t@$vqNC2zr~2CE zeNYyKE9!fd%#dOAhxRXMnv(GA*P8o_8W#sI&5V<-CyyiK^mqx$2#CJ0BCNamGmR>) zA+G!r+WX0{^>FdbfaMW=?2Lt3>};o7n&SfvO6bQPsA&l0#)RO8Qy^4pLQRC=co0gs zS11n{x$r{1>eO)_(s!88bp5&(f zc^8e*NS+zPA-jSuAeA+p6SoZzp$k3BPg*zSi0hPTQOwIIF^@+8ok)(qK&zfo z@ig0owo|h&_sK`=0H&KmWI2diWZ(BI0ClT6}bT& z06BjRGNyS!0x1-Uu2c_p-`{xK(7vt>897aw{xgd{&1e+Ub$UTNkC~-ziUD31$hG|1?WF5)KiUxfmfH+`BBvV z06j-VC!z2Rh``PL3UkW(>{LQIWym`6-<%Hl17|7puM{UE42~<1zK! zYD-UwvDrqqx?D_I!4dF&gMcAiH-H&wbCJeX`CHB4)y5zAEBbD!ai!!1Pw!lis1NUr z=CXE)beQ(`Bx!??{bpk$>UFd7r0>D|L`KP|;j(h=!9#Q*_&f~l?HAd79n5yeypZ^N zbmaf--Pzsg4H+f}AD;UrzWs6YASUi3Y9)Hkx(IW5pcmDndwCso_?qL2|LgM-a-_I( z@$r}x;we2wRh*%n$m0w7p2l{JW{bP`UJ%7`UJA>yDN-~2@|G8j1H0%D(Qa2eFZ5>y z@7;gr1?Xow{40Ehbz+p3s`k*%t4|t;8E=O>vOKQG=5VccelD==e52Lx%ppZb)F%ct z+R!DnbUWO-^Nl~F59bfw+=c2IUg`bl{b=a@f_Tg5ed%*7((duILR!MudF~9=&iDD- z>*PD+aa(Q-4?T5k;cCTc5%BBrcbK-D8(hV{7eHbzTWjy%hrP*l>Od|++>h-*iwQ7a z-{s@nA>_Yl`qRcl+94fZ0;34d&qwK);F%mnJ(;D0sx}%{inyzQr+kFRuY239VdMO& z!Lx(RFu%5(=ihyI05*O591vxGkzIgvxO+7uhQ4C~pJ3@YPdcg-(@f5WaEH8fOzgq z8M)WSQK@KE#p#`wCcalmi76O7U!;n)gq?YPj4ZhfPT|53QKi%s;!e^&j=ST>F%R0C zflQ$kxtExv%$_4UDVM_1wOSYwMfA0wYwDg&5FK3HxaQUB{=UHxDZ_@;iP_FxO~0JRrXogZv|b_@orpR_$;(4G=4p2?zbqsM(JAG{y2T5 zl5Xunto^3O?Jc}NGktwcZXMp*7matd)u+x$?OM+?U&?h>f7%&`j@Wzi-vk|gIU2o| zu+yBLL{6`f%IDTWcDrdwN{(n-5L`zt1{$y3(mK8Gx^^PCiu5^TIJJE4MStYK*5kHL zlBvZt@=poP1AC(?KQ;`_CT$+TpDoC4C?gb3HnXXGFbLorcLR*zAsNn2M&@puFfNtm0-Z7OQ_`RG)kra@LGFo8R#icJ(ct%IeZ0Xk z;GLHwKKQj)V}*2Mj4m)q7hXqWi?y4!0_Mk8r11|X#r)NF#RsaXP#0m~b@o)yQtI3m zK^A%}o#_#N_n4)h6`x$&O&VMlua7j>H);qxY60sT|u*NdiP22OA z%OzsHdP^Cp$qEmD=TrDP6=(}SU~ByLFPky3tGq;sT1i_(6m?mM3jBAbDm)odW2Pi> zSY~`LvFv#u`>E&!bp=$TzimZaP0~awhZqh9uW^;i<9Y3<;UcZFT&)0&N*9Q8-B`@g zo_ZX}u4B(Uir9rfRgQKe&asOMdPdI=W+a3g>Z0s(*p^7QIL+0*KwRf|m~huYrl(;$ zsGdKZPByu`Gu?6Z^wcTVLy5e|tRn}&X?@!7M}7(0cPP(g`v>m*`*S&vn{5UF`Q}%xC%OcMYsZwXGmQSr~u>88s%N&~9%tQ-5dn1>GKB@NX8* zqh2o6FH?wGr7UsGEw0#(MWKJ34tWZ*L{~_n&e{(8<4eSxEyK7a{D)g8$g@1(Qi;z} zQil4)!2D93O_$*$jfu#B5n*+i~*BCNfHP(2Lc@obu;V zgf^Q7n!X?dSr=kRCu}MkSn7aFF2>-*@udP5N88cwS}6XRkjWy61Wt`RbKGnq$CHYo z{ByfZHmB@$kB0P1!7+E^M3rJh`Hoxx6ESl>09wUO0vK=PZS}~2Po$KwT@8Ma09 zHkDi52*M+%R1HiCj9$YrcpaZW~e}mGZ-j~qZC^_(CRxx!pk9hG*R~aW{ z7D0*Buly0I50^C(SF^mhIoQgq%x^24wwVn*y?_r55`G|eZV4hQXCP+@>&ojm6#%(9 zo?>rSN)j^6Og6P$O(W*Ud}aaF;%uVSxXCV+FfY_AFKSV4A@(wu6hZXx5yKwHqygB@Y|A`S4_84ogCsE`_-jEvbTf~_p{(ip*{=uXqH;7G~UCR{LM4Q z$5X_b2g}evdr~wXIlp0~t0~)Y8hT-`HXJNHF*|?{1Y#j3LJX-EZ~RKvW!@12^~37K zwtxq>2+@$D!L(}_17T?xtBE-S6euST>yi?AKwDf{_!(5|9~T-A8055vF@e%GKp6?; z5MsoyjE&^6N*fgslG6T#2M70pQt+r`#8)4kJ0B7Y>GLy+Q-A0?NJ@O4yyR{ze!!rx z46n-igBNVDH5d0jhaFqiT}@m}YAK3{KAeyh_i?C!mA8BxCH4A6Y_k4MmtBFu z1%WoLw3SO~pLd4rNXm5;i6O2yu6-7a-*jakZ{82H?j0}d)G0YJSGyu*59|VLJgT>% z$b#tNjJ%ScszpykQYU!Y%Fb&=#Om{v)!IdQ&9xiEUT|zWc&5mS z`vOYZl2|>tKM3I=t)U%pp|3>xrqmI5XjVlqtYK{N^F>aFF-NUBPw6BS+V0^YcyA)j zq7ff(5Wi*ObvFxfkqkv|n&22I5nb|bJTbiF>g-9~#d>3Gs-Gl;R; zbW>}2&~oFu79PR4Znl)&4zj@WlHtK;h9L@X;&Bn_y1virv|Y8R+H_iLxsZ~M-P3WF z!ZEh87DX9;$+4R}%^gB&Eievlm@mLK1 zOKc?OT!&wzIb?LGz?-8vvKGmuy}VlLk+H~RRrp@QqFOC zLJ>~kba`$D3nwu0jIsDaq}4gVmqQ0RO>TIi@P5+}rF!6qk65H2@+HTKNRsC?#!+ex zxpr^>`SQ7k!n+cU_gWCI1Bpk8F$QwJl=R?3bI|+h^>F-htiDK?!^YZJ5FBmPSDny< zt1FmF9~AILLB$Pnt{kK?ThVz6ZISc>Lc`HjMS5A6KSD8RdUsrWQB3I771LGFhHArn z8+3)}3BPMp>2stIm5{PqxpOBK8I`cEoaX*rGwm_YS~!4P)2 zD8ZW1`7xlxBc|;`YP=K7eJqwA5j5aKKBYoX_?KA8~k!Ug4n(`3v zS8ZBU@GsRnvTC>R-_;-gajQnp5mwDomZoi3;_)Djo*Y^8L zU$_nbck&p_o-NUolqcewEc=|?Fe~gPOV+xHQ44ywHL=b{{IZfv{)@6jKJC?*;X4GA ziQk5eZs^bxGTX(6cE$^yx!neBw=bzqTlQ4RJD`BPDy##8X85E@K?8ca)yt0N-+B!5 zDif4QB9L34ilrTgP|Acg@9yMe7szr2eCO|1K zl(VYQ7s`n4&12ewm@7Vawql($6E*^C%LT?>}8)0B&`u+~%$mZ0%h^7dJrv_hja#4?lBgJU-&ATD)pCu3fFBG^n= zJZ3MBunfN5Du? z%^%Hvw1sen7jZcvY8FpFpDvt_Z#Y05x9#R(&_u;Wj>mOF+VH@ zI|q5~4qcqC6K4Qo4NiraUi>MpTs=BKh*4aBBHIuq|Jo z&M2e%5<=7$iQuBGKQvv2z^A#1X-H^tNr@wc6{LVo2Oz@bSypBZB~0SvW6VEoW{jTK zQri@iON0x_F#Vh2>JCW(O%K0(fS<7Zxk4TPb9S<3{;)^=I6GH^na!%mSpyz|;)*9o z4R>{yhe@wAjKuagb3UMC#QbsT`L@~J9Y|uMjALey395CisOJa# zG2m5qdoUC=vgkk1PGLZ12Ul$f#xpe`zGz0}6*U~<(gDNs5_ls>r_)XS;t;~L6%|J; zZ`9wMi+$M(0wl@yrtOCMzg+liW@n{ZL1EkKR^w9rTE}EqZsqc9f~eP@3ns%$R$_^o zbn8CBH+D-< zHn5@Ido0B)jU6b(+6ey#~^HqwKiFT0i#(oBlAOlxl-#dO$)B2$r z)*g%f1RtcFq^+kk&>4Hbz6~OlV(v$1U%s-n0;?sc_|$zzmSbmm;1K1Nhtp_U?D5Ij zra!bD)wH|kkF;YokzTsmj6ujqGWsqE|K}*jW z5yZ!=yFnbqChs_T-1-nLx7WW8G&VdWul-0nv_3j8!Mv`OY8)T@CkVB2GuF9rcUQb| zqV(woECjD}IE1|+$4YB8e}lgD*B--OAe2s3jo$cY&D+Rf7A|d zB|m)&bNWndl=oQ55oL#4lZgDOygl)LRDcyXGkCvB;6gv0492Df>3oetUSkRO(Pe+r zY6BmsAl(+xunGoH^H_w%P;k-46EyF!pkb37#W)pAg@%*DhV%$l&F7tx>#n91&9dmc zN_C!&jdyC~L0m;y*|hLJZ@pQAQA=%g(<}|;OM%DJ7k!h>$VtMJNL+fSF-PCsKWax4dWW$u z*mQ~Ln^Atlf{uzbS@!FB=9_1vW?S44ksiVVRaSN5Qo4J4?vwi;plIA45dOfDAhK2ZqY98NSW!` z_tIfQ@k{=H)DG}JYUe=hF*(IJ58|aEtADfWKWYa(D_zU?>Qu|j)_TS7H)&BGu)p0F zzFADEw{Cz3&pCA_rGNzdwA+jE^02B$wg)V0erVl_o%{$VP{0Jkf7DK)V9;7paB=@i zJPB(k6GsZs`zfeOZPdD>T%sYWOq3sNj3wU z!{*ecyyO8Yv2$KwnLRYY9|3*Tf7DK3X34N~;jedcw$dMJ2Su`#e=U3724eZOTZeg_ zE)4NRpn7v}zU0$uw-UL0(0wbH{nz3nYTS6VDBNO zLNa%BRlX_a(Ul_dRDtvwve68Ly1Vrd6Td+2xTos&_f8R3TGfT%2>g*Lj6<7iJEq;v zpJ#$(BGr_EKJV-SQad`Z-^cbs)g4#8)_fAsy_KplOxJ-UN)&sP2wMs{wu6eiSozqQ zv`EXo>l2ED;wW!A2^$#=^{jm!=kpa1&*Komrn89Si6ll~2 z=ia;2(gC@WF&{mt{GkbYo?CwhtlDz=U8qsmLNp-Ug6Ytj=odA@45$qK$xn_~hE`G( zVOtenZ1^7CMI3o3^wJGNZGs?708`2u?f6Zj?~@EJF98FET)VZUk6ri0AM=4%dm5a1 zeXj@1zHE0JEaA3*KHS~rD;r{Nx{wcE@#}LM5~v1y$hH=#(oG?S3N?%Dw#2DKzhQEy z_wp0H6s%;l_o^^2yYyEnY6PlXwk*4DynZ{PJ*vPQQ7{i?{+i3D%>)ZU;C!d6MVa)g z7CgLX-MFhvH4qU2L!HSq-(L)&-t43CBouQh zbA7A*{_-P1UaiCsd&5*|jz}_KKe<;`23je8c8F8X!)jvqfWLE5iEq^sFq;c^82a+n z9ns8R7;l>Jf_h54x|sVsUy!;qK6+kUeUAwE%&C3}?{9ubU^X=Bg2wSrw?+D4fA}*$ z76Oz1qymSHmQiWo<9I1I4&E|t7IzeFL}P9&aJp>rWiP`Mf@W&Cb^JZ8nM#I&Ml;Vs z`Vh*151qWH44SH!2PWOEIsR;etFdem`sLu&4Ps0~IDbxWD&2la>qT0o#l#lt_YYqp-$&3=2|m9ZEE7% z-K-CWKDE?aQ?96m-s%Z^P%M{DGX__;mxqPpN9Ldq?p@g5w6 zi&jJf8URtuM3$Q2RArsFUQbqx4?Tg#pq=!*IB{A_X?1w6pUF+5J>hlVx^ptuF6Cht z8>!nR1oi#lpw@@nJf`XCD_(KbXr+^@c;@pJT4~_mt7-igFbXBaja5rtf@rT~w7-e2 zZ5gp2p7jUgX*0NS?uYcw?+;u)#kzIl?X|+$_ybm2p*`8tXi63`fd3T@4cGdZ@nQnPJduk6%?t(%OFsTgsi0K%i2%H{jf68c$PEkza*UD`lUH8S&DKPWr&DO`>^hv|gN zNlr5G%z%l6I;LSf9aGHQPd)j|sxwhES#h#Wa5)9#KZ%F9v)AWu;%@AeGRqcqnH<$z zxLp-zc5OGXTT__u(mTP4nm+s!{(~ZNS3dk%gxjX|$YPp2{;*BU{*x86S~1i`&D(9u zg@{Q8m4D9?xBPJqww3`=UJD%g=>PF`qW<|ho-*~1qjBDaL)c5tKfX?#hiYE_@cV`> zrAQ%OJpvV~??@EmDN7^t}Ijn~5m-g7B+bVH&$Ofa8Cnrmct!mf+LP%UD#6MhzpoPPQz?@nLYSm2~dC3mP z^B9Tt{HuP?0+!Vbx4!(Xq+osI#x`@1>6)j0D!wvOn9B6w9@U5tIx?oR_=Ss2bw{_KH*1kt)0>%$kC6KRY@IEAm^OfmICyBugb2EGo~qUo zZOx%W4(urERWR%Ff&;5tzOoK1o)zGAwc{q-ae988WL0--U_A=u=I_5|2FlDeI7&<5 zH+3CK9{)@0&|3Z0_@Q;UW0)D4jjBhYRCKM7UB&t(`VFYz9L)?6vC4ZoAWes%|9qdt z2QWluw-L?OdMW#Df;shkqj{mU_5=&Qz|058lU5g7So#pIDn>NpcNA&d0vbei4g8fk zT^iMF5>fp}>)a8%fOn&m7&Lev7QEhEwnDw3WIFpu*2)m_r8ks}Xk?u$mTk~QcHV!D zqope!MlCO4>-p6vv%>}vo>@`X0{_rDmTj3ZD+5!hs#HI;PR0+d^XDNEAmWGCQU9TJ zP=06~y?k0+pxT{dhcL zG0irbV2LI`=^G*r!!>| zgk;X#*J{S=d)75%7a{M^R<$%=j93KVL877yOh0#IF()CbQAaS`6bIi%3e_A}z{Wj8xuM(irE6 zg+?Am3p|tUVHhP-JoIVP#;>b3@CHb~^gR=|5&&o^W@1O~&E@-yHRqDaNx44c#B@!k zLhsS3kvYX*td#IqXf+TnDP|Z<4hAvfb&li6KeW#J53PeX04E03MaIUwBwV&6L64=8 zWF&pSjMXIGr%1pM+dm_d0&G&dF=dw+B#{wi>DcJ+gl=3n93Ozrfd>GcoR zu?2$M`TmGly&Dm56`72iDO` zlLzt+{(*I%R{n!^_HTY*odT5Wvz>Fq(pG0XPgkor3h~$26GJ>oV_@3RF$8R?c(k8e zp1*EfeO}(d|G_$gD*s@e%pX{1$@>S^sZ~ljfL!{LAW9nas-wu5&n;4`grL>xceMKl z>$GY-8T+)Y^AHjiH7gc_RB7cW(fiP2kVsiw-AUj z)AKy>+hpFN-BLjt^GXzuJ9a+OIzIY*-c$A&e^yJc2m2EJF{N91OJ2CSXKfjGf4g+n z+sLT6_#I+OMU3fO43q{(NY6>_2-L$;g(P6UlhN}7>!hx(e@c(gWGac3STrUa|39$K zyEj9ZwVJi%PHtQw<+AVcR7f(%#XELwBHy~9Ri*a2!<5TZMtjMnMGax4eAa^`-nUyP ze>BwG?%dsw#!+~E8pC++g(|xPH9O3MGsK!9S%sKg`8}Dy{)6k$*NC3DA7A-p3&;A) z1Pu>@CIEQWb@SmC#bHh21 zP0o|@I*#`xL~R2dUXZ`E>xeyBqx)*}-9DZs+R6k4D%<9$J3p@N;oXjt_sK{)jk=luq zcV=~f>vWjwbXx(m{o-2>cauhw2DEVruIbZ{dxOJk-L3^|R=HyOH2TdJ8D!lg&8eF- z9-SOR6^%mMmiet?)pE2@xhngPTPlKjcI1=j$xkF&)JzVcKL6s> z=R$G5oxZpSd!Ii}*n6rT25L-QQ$t#0Fwv=lWrQ4tg~;*TUK}>G^X-h?1IekR@Sy@D zG&4vJR}C9j7fzU*nkzcXEw!poI^&qea|70bT4J@**BNy*^=qt4^BDVLjFhdA_GU3=}uweuZ5VtJEOduM(qo_lx*+B7M-N^UGNkp6soBQ@LdrMUBafsJ?$ z&$)rE$ARg&*vZbxXmpDfv=v>&vfgzSS8fj7I-=B=ud~KI^&^eHDhaaXnXM7;HOHQn zZYVh*SH?2)bG~bs9?|8u2!z`NUi*<7dym=Kgd4b#rrhHt^9XDR<#W&ydGgTcc9NgB z7kRMCTBUNH;V@aa__xT5sj}qJ40?a|(uqWOwQtzyqkqscFJDJTx|RBv@@D|Ved+*vK;eY-h^73~~+7AGG5Mq#|aS_Jxs zPu$8gGV9(^kM7M>qWFC8VOQqHzAJvc@A&ct;od6}9UVmu`I&mf3=5WeKb>3JU7=UA zpzW?cgZkp(EN8D2+1 z4l@oF$OZxg=NpOWq`t!NO~l4nhy*TjDMTJ85*H7{4PE0qU-yok0^hsSaA>PZpr3q* z)}r}_ZD!mS>F-j3A4GzRSxD{$IYj*SFw@g(lQMN-b{>@$snw=%?^3$b?%&IU(WxKa z_Tns}Xp!4Kmn+LTR^D}~DmeKpGSQiG&3B`o?r2_?bJ~FjmG}U9GQ;BO4EgM#IC=dz zCaPgFz=Pz8So!jHe%{;k{^RS+U*YC!(*`OVv>aCVA^^0$SbM<9B1~+iDF0TR1zu;S zzR9FYY`wcevHR(>f)tVEOzR63iA)~Cx7NGIe&~D zY)X?7sPPU|+_jAX_}|#Kd#>#XB%6|c&tWhY~J2+CU z&TR|BQqJ!Mfg~n#4IO8vFbEDp&-xyRDo)pQkk)4cYd>C6Y?+zKgv$$T%C<_67@f2 zN1sV1sZH5@U%X*1{4mQB3{OL;u>*^E(Zv@K1N6ZP#ndKv`1j2r3~xF|Bmsy&huRXu zXNt=y`#ubUx?7)n#J(^RNxD*CGggiGt{9&4Jd(~&jWg($?A9Iw0_VdFTjx7JyAL55 z0XUT!RRu*NY_O#z+0kiGFxM?qkN1m=Xoy5rD{L;PV_H`+Ch{1HvtB*R-tY3a6y0Vl zkC@~Y9(=|;sB_2#J5N1j-NMN79F*Bbrv*ytzIJ68oZjUbj&(+UKovy?wWa5_V)MjKu_ zch5wSC46WgOlNizba4ATG0+6N#%+dl#%u~SuOcO2IcQW(`rOv0a$%AvzDczRS==oO z&`RG3-eTT6aY`ItMparu3{7hBs03!I-KYd%Typd)w%&X>Z4jmE53>VU1Nzoo$-fo# zu%tZHWaD?V5$xpFDItuw6SCTu>U8b*jyK@a86V5;UC8|___nMR(Cj+U#yo6Q;q|(P zyXdy4#Zk*5?FAP7W}}_RQ!O6p7hFO&&CWC`#lO=_L?fBs{scY1a-T2onN|ynwtz#ai3-# zdzhk9i&W{g_@uuz6F_{biE*iW&S~hCJ-6foZ+4dIjW{Vc(9V^+W?<{EE!xbj?}X$3 zN;~4(8$8h3vUY&OmwfMCOShCudo&Buk+=_J>E@~I+Xh}vTht*v zA)FYYB?S2oDtH{H(D*jxp^RjZY!M0kaB?yzxmvFBQ=rk!2d>YB-FnaYTgF?tbHwi3 zKDfT~X)!kbWO1s&IGfvf$NWVfX45wIdBU$+XJ^4w6Ac@4tsP@jpjfTv^2Z_6u+pRt z!&`i?5nynE($QMWx7NBh%>q+!`3NWzD17?eN^S1qsWo_!sKDElM|I?s+(&N%?AnwX zn{d{LXRXZx`RlIHGg$A}z2{)$jJ!NTAC=SS0yT#-#?yHeEr;t5M!yP|3!=OjnUF&Z zH0PnKta1xaaEm?hULCXR5ef|U(tH!;I5XBYJ|gtjj~7tEnY_<0=zr%Jn&t)Dj;ewr zydG8-6c8E}D6fY4Gc;m?v|WrH#@Ux$G6Jyw({{M?0CH|1$@{ewzt@wDxetZHW6ex`{N6l=6XvNt>#wl&P3adScxLZw4N&T zI$_k17*h^T70&^5<$d9({?z`?`6i|#H^TtToT8KRv1<1#`>cyrsdts>8J_wMq4W}e z+wcz3)yHDyi6dCKV9poKt>zPHnejEL@AM9-J;c+m57LqHP|PQ^?NDPlQDHg!z9ihe zxaWQ`h_22_!g?VV>~<~EN-)n>gGNPRm}(p9yy(#bX?W55D94)X9ZgA54P2-s(+PWH zvIZ9lyNv7vQ64RlDMymH3q)b!;+USjqrjlmbF(KNnl$U(7#StUqwa1I3^@%}f_Yc( z;*`-h2-;8++PhgA1@+7T2CZrVGPv}o*LWe%qX|UMb?xC89*0>-7}JBkiZP3Ff9$40 zg+*H|n87#Y7xBzlPM}~sl7N{BgMt6jSY&~)K$~(J zp>{&}4wWbcaK`J~(4fCW&XR4-y5G|WwRZGOdYnf+?IAZx>C}%bZkgOI=wS-oyoRw! z-zdJXZn`4GHXV$V$KZK}wiS#8_~ z_&sA5jo)L%IcYLsu)ZjJvFL?;nYxAH6#MgN?I}w6Mu7y_whm1&;TTA? zkhnIQGhmHf9xc`elbz<4Ek@>aDX7L)FlAPl+3BXz^Elnli?MAaf%&2K`;r{h zPS_g#g!-2oZ1XVwU(PkWr0&ES6r2owh?%xz*gUQ(G_Yjsa!Hp5MIWXRKsXA)`Mt|! z+om9b!g3hHn5YMN+#b;c<(p4XfmE&i3@!j|i2$k6hCJ*@Y3F0A4^N>6ekOMo!`Q*Y zVE@xuH2$&TuCiTAtAo6|)j#sXU=7Jj(4TDqn!wzm+{V&6n0Rqc-_w0fsNF2>Yf*{6 zC&Ey%o2Bl8*?ln4mA#jZax65a{4rklQ-PY|CjhMkTr7kHOH|ttFVSzh?b4QMrSh7_ zBbSJyuB#-EEiX~F|D>`cTt!*E7HG>BeE;rL7>(x9y~CNO>8;w8vy~tqD|<%1bvR=6 ze>QK~iDRs}(MIHqy%YH6goP~3AU^n+(Xzp{1ZI2|=Atgymn$OmTN$3HiE=n?Xo~lk zjxXnjjlBx1Z8PuW7J!Jp>QJLtP^!}=tK!z~Sr0~FepH#LJiRW~s@D`27tvy1;lX6Q zWN8rfLA*5`m2qT+-jh(Icf_7}9*)nw-UfZDUrLr;2RgfDiHrg~y@o;cNUv>}7VW`CPq0|sF2X>2 z&Uz?G<7m=BZFwRh$^bRG#{t_HuA58%2n$;nhZs+iAXw%M(U4f{kZLg$Yr(Ls*}UYY z#tUvzDjKY@{vIp>Vah=vDb33$@6$FbK~VP0UkEqEvfrJ~)^U$_8b7R}^DM+P z>2v%O2Ig1!!|o`qtq*|b$3*(GZ}}WL>gjje2v&_~eLz zS0##WAk)MfN)UD6`j0*3QnISBQ^zz!<*ayItl2(OVD6B8#sxY%ZZ5TmT%k zsyrC-=?DYf*q9X^Y=7#+&HNx)CCqew+|IeSdu{#N6w}aa^-SU8M9#%3I5`AJ??BG>4XYrPCFe$M-DqpSr_~mOUaV)p)CCwICEERB{l&V+1)bn+-fS71H_j=^TS=raF3;%RJbDYb2DE#f#o`ISC zw}E}%&zd-Yfv0h{0AS_{0ENR(-53h^0GtaoI(+S=>!=`Lnx@8t24$0d2oj#F0Y0wQ z5tPQ=Jq`~m?5?T%eo({|u`Vvbjc8TLUiXPlOucWdm=r8hq>%JluEpidYq5{jM{lq! zK~PS~P;GtC+@F2^#I|eKrvAbVBOC$ik(aD9MIldIHBw9 zHfe^0;C6hN;}4>2K(zl6<(8gi{PeB2gswYs(P@=XJ2!X>RW{W4-z+e1Y@ON5+l$K+ zE#l>@=-#0tFMD)5vZM_7_(-kmvM#2+$`j(H9>tzPxb_v3Tma4OM7qL#qSC0P1zFJQ z?vta1@cfV6)2szdT@2+oT6Yf^1%Xohm1sWLf-HTg=tSM3reTDs;!ve2zw_N}Wm zBq|Q?+o`%jfm8qcIuTB{_IuZFLiGHukonupxuK!yaUt}*>QhUjZ9JY)5S3Kx9hlf5 z%G>Ir596C0E#{7;}Io@?4Pc5r_x3XWG@?7^VnE_;Bp8BCQP20tPa22rDT!USj1kkud zu8A)vbq5x9_jm9@(0X)MkE*VzqG#rfm|G;$?f7tz5NSm8=gV|WT`}t1#w|gER{#Aeb~}gQ*lUG0-OC6h$I?!^kR} z{BJx6{FM~p1$5&Q9^$ltM|G3Tcgm4y+QFI!PFPvPzrC+yMzT&3UomM`9)UrqXzOwv zBe(RkKI5v@K%7^qcLGf2AO8A_O$paD_pXY(B(k=*y+Q~Hwt_eHlSf^_tv z{3F83#PJrAa?c>{IlOgp;+^Pt@M$V?p^GfSIwr*l@Xiy~9RV**lL?K@Fg(`t*6268 zD3TXUT(;j{xWTTf1?~%1?wJ10L{2E(G9@8rO2tzxy{Li*uZ7zzoZ<@jdGF}~Wha)H zs=AALk1dyqi@LEKvaYf$pi9LRXI9z#%Hs^a>J$(1T4}#(n9*luaR-+Yq%Y@@9u_lJ zp|*jn&sZ(dNBIt{vvjCng8qR1))R~DQ@5u}QfuTJ+~zU=N>Cs&cUC)@GWJ}Li~;v8 zpaQf}{_BJb)wMI(s4t_g5KF$PbT6D3n6$ll+;Gs@Zg<&6h6=N_1pLWngl?P_bRzOP zELjRc%#D*aXs>Ux_svDyG)U;n%j9-JENxSEsIOW%n*_dY#ny&120E(WrWMma00RUF zJ&7f?FMa7(L80Fg(MC%8?(xALv=Xb@(40+5AIa4Nc`QTqY4Tw{bZllCs2bJ>I6io` z)#7~ycC7l<1G7REW+<|0J<}=0#(BdeEsap_63Yt^S0g!@}_Unj-!G z|7kpb{_{Eihcur5Jpcck#`Av{!NWno$nrlaLZW{N7+L?DG{nnGFYjn)q-5f(MK3Qb zO0R63V$ie(S8~DF(;(vF||2d6^mE#Zl|3ey2wA!XE z_8%nBX9Yb0{f9ZM>Wyx;F7#WWT4qSoMuEa%Zjh)DnifM7lks>?#%O|{UYGqE)X5Bt z@b`N4;Y!21diT3aa8h1e^4XK5C^b;%mt16L2)|MtiU*-f7F7M1S z&2uo8)LYULHbY z2aj8=JI9HY#s|F5#EFPE=+@FEH%ZRt*+xMzIA=l3u|RVyl{TCL65z>k7(VRL@6Xy7?!q|r+rn2QVBN{5jpMMX22>#D9xP<}Po_$zMD*@wRH%V9O9 z)gaTv#sD76cFF4X{({h9?d-Dsoq zYSauymD2@!a5Q{dgG@4{Y+?=~jr2-mft75VfJX%C`0fX=8i-N2Q|!yRC97WnxS1By zcmgnB-vxTfGRq>P(u1+vfqyeW1yNquAwkA8=G5?r~qYROj#Wp5xIdLRJTz*(JbXHstGfW^YQ(3@^9Ejjfexf0`Ff*=H}^R)@1;|( z;&mho6e)KO-lgZI@1>i;*0@`kJUkRt{W!ksPKY1des>_Q2fhqb%$SC?&ozy*VOULK zT03&qH#7$m$Zqv=KK)Gwte}_*f%Lwg+t8EPtdNti5pSMb z&74$=20qHbLq?vY)16|rUxvl1tCJ+tbId*$89LZt>*tIb)1S&z6)FX#GQE%nCPZ_u zB26J}uOpFTKK6rgb8ej5?BioNk3Mf&x6j9ACFVHw@DJX{VO;2h3Bk)IXqX$#%a^bT zM2SPR!`%(2m45i%do!49wKcn1!{^!R9Ii$P! z-{kN-5vc72xEssA5gXQR2bJhioA#GCs$Y^YUW~%K`X-2PY;A<_9tbx2Jj5e zW_!(-S#=Siu-FnDWs5wCK8j|v2NGR(Sdu3mZ3<_R{hxIcSiL!BPWNrVaa{xBRUx z^>kUQHwTqzsX=?G{)E3P=sTVT%;lat+R5FN?T43%Tp_(rZdhdS_t(%~CY z|GE=`q-sD!t_lg5vn4~@0jmu#BWL-*12eIyrX`Tkk{xKb*wnOiFKJW_NxTF; z+4CJy;gKXPI55Yl1rv0|`Y&SK;)h%_xWO`hhTXT;nr z3|P>xV|*fLz&0HP27`1oQ61#U65*+R0Ir?T(3gUFBMi2-Lkyi@%=21TO$BXTR-l3h zZN^??16#F04{b6bkV7W*6jAcD`s@;1fnf&^^%2QEJSz(18k6wJc#+($Y-8b2nsvEJ z0vgqp@+56RwEZMIu`z_D4Ejh~tvC-85(SPc`O2?XG)5N7eEEYOqd^_ZPJJk-B_%p8 z$*c;M(J*z%G5-kevBP#PXBAOW*m)!43~=P#M7ruaP#v4?3Z;TT(uBk!(-C+FmKn)$VflJz!1H7xI`@qh;zCh%2G#-TWy}UrJ|e4AG3%K6 z{NIK5wYR|9OdLj*zS04r85bXs&8b+m48!7YV^AAo52yn%O-5HgXTNfq#E3QuEokAy zTwJP2B($sun{gU5mV$fe-x9=#uq_hTlO@#pJqKA2LTpBlwOSZ4?c9QBmBe*!REh9f z+&d4N`t(TGp|c7cA*{{7#e()I?=~aVQ57i7vOS`@GI1j)qNcLPVCmE?+4f*!*HIp- z^PVAxAE`ic?S3#yUPkV}!gn>{O~Ah$n*j=gh7oo_b`d$y)q=^S^GcjhrK8g{<-Pva zHMmJU`;Jep!Y{(Vw`ifwG0aBrZO-14OGg?<@{D{=<;-_UH{5vdc~hOJZ3;cNbYjx* z^gsZR2MhVh8{;DH=)%cHuV&xj=lvdIU-L$Rf3P8DIlGgRD|JqT7yF;(2lfh6NQW%k z7r}2{grCYqmhcNsEJ*JTan!kM0;@NIeOU|VrVc2Zd0DC>WvgvEGE|(i0UZX*!jHS= z6eNk>=$ywA#RnyBa!Ic}1l!L6+Gj_Ysf7GU?@&x371Tq8QN|$>yfkH%5FnY_$XCOw z6L%pU!(zKrfl`G7DX}3h{5d)_3@_NQ=Np9J!?_;ovk%~S+Q}}@G_nA9)#lIr1BnB+ zFNv7_1^K0Q5fg&BoX5Sp+SAYIUq zQZEquTx6>ZnZRj}99iVFXK*`Vlx5BQiK779Oh7~S`40=o)20p(L6J`3bilA+aXmvF zoVX(ANz)N2BsS`Wg(&g~~c?uIAR|u{j^>rNabB)AD=&b96AS;Kg#w2e_fl zy3^vGyUIpn|0SK5@K|xOT}6hiHl~H#T*71q9ajtwRr0r5t&>$j&K?G>w2kme1WlW{{iwHtN95GLiZRcnb zUah}atdx5b2s;&NE;Ko%GO#sQd5 zCM_N#iI%Y50-DqqC2J&75CwRpNE*>?7n)fI^B>aGwQAj-eWcVY+pR8K`^)))v;H`m zlmXGKlH^YMWYUkJCIu%3v*P5`y0=@;7+PQG_~{t8`;CnY*c$E z<$;8i^;cO_oW2Y~Gb7cBJ0&~`vuSJ@KLe8zIhRJ7L$ zVQ3pehWNJ=6~@`B#~R%+c389tks(;89P0AtV#iDZ48|szi1+8123uL65ooKdf0_v9 zo#c(!kx@>iQ)bAuTsk87;f$vT+d9)4fR>B6Ru}x@KZy~oJfQ3n%ITMoMSj|!*6{s z1t;I7daaVJDLk;H2b#8^i|-x#->hju!CSh{TU*{yFx3BdzT-Qn@1pCJ<9fBqF ziPuo@beMUpQu8hj6{n_|j|ultzKAE_9|-H0QNZV3i4}N%hPfF)7bwe^CMUbkKTQwM zw{F!}Z$(dFhucP!~um=Iv7v$9_dH!mW_rp!^5#3o!lS{ScaBrLN;kybPCm)82gr zb95$5UJ3TD#iZ?~K)00XT*HA>SD(!Z+3;u{we<(eDi$U%)?ixYdia7^t_)vK;aa92 zZPF^Us%*@FR06j~kKVfsN^_5urcogZGv$U)c%=K=0KxT`#yMA0Y~DXXkB<8VW5rB} z%NSTlNzH>Y^1@ z%&)TItXllPUyvYFk*`dfrE7F5JMNX=1R18VaQ?H%QAzBh58T_Nq*hX21BYO9D(m_j z;LR0VSX>g^p0Sww`JpPP=%cWujneETI$j2UvLEMmi4D4qoPEoUf-;4$W~zqvkbiS= zP7dx-xIjJs!I?0~*`g-%xf<6-T}Wtiz9=IRtd^Cbf&PuYVz=b_fy*39r_iKXpg8aG z+}2}0HBeVMZGFD{0;Jjb`=P*QD8gVYD>VYEXe%dsb$%@t#eFgvX<7=4uZQ4 ze?x>;m(uoL%!-PepH*Jef5uEelK)p@=5?X!g=TQV)AHH52-x|F1iV^5@hIugIS@_? z(ridlDp+&Trp-oOXg4C0XFSPMr*a-n88ZQ-HEvBU_s0WuG7QVy%LWUuO`X)ar;P-# z&P_}yd-7wqV!Ea?B~YK0Ln;@$o-RHOvZ=GdxM!d@h`^SIb2*&aXq1Djj#JS+pg(2OEX%i3 z(3__DHYSZVFs(Z6u1qUSvV?ETmIZXVQw>g}(HVP(e$u-iAn5$j~>XR5&DTbJa408N6-)TJBn5Jr`>z+sxD@o!f zg0KTC5x77PpCY~)ob-C-TMfTV9KVdD{2Ulp>I_O4i zYisAS&R*olpmdQHT9$|EAqf7o>YOGyoSpKXj*5Nu_WY%hp=54@Gpy|$u z#wyfdA=%VUPyJ&qukFD2?D~gn*4bef*EoZJ9#rPyI#z;k}c1WEgn zcTP^|LgY+1xRb``9NpuK4O69b=cNmMt-kP~!=j4p$d0EL%i!yUQ_SONi5-iy8QYDp zRp`G8-)_-9L>f+R5a%Uww29bJLtFPhXPh_gNtn$AO4-@QiD$pa)d!rVwVb18iXx?W zxhF3tmBCR1*;qN_#$Sbh^{epLA4z?z2%4^w_DFX}0VPK0C8Av`pOACR_=Z0rK?c4^ z*9!)JQqn)aY5sZIUHf_TckoH?IZH06TDQlfE_>sj;<+`OLQ8OEa>gudzmI3F+MAgh z`8Icb=$Xo=fwQY)=|T=GCzJA-+rvPLW6LgsVA<&OrVB!!OZRJsq*d)Xs%ho|Nj+(4 zGQ=%AvxRATSe`Z0=$QD89b1DTrr`aCkSI&O60DP8>E{lOrKGBQ8;%8!=|FZ+5vc7S zO1pWM8d2L@<6G01clX+ukPAOY*D?_;pII1BAre^^3~&%FIgo3K@erx4b9YV{FRA2S z;p0YSMAq;(sE|De4rNsC{)ELG?N5u@-b%(4Ur(`lJA$1b8fmIWvXIv-Yc=ezXTJu_L^_e5h+^B~c)o1RPn4C;7Zj2%3 zRYwTPbc<>1B0R2U|7iC-o`go$IF9b7=;$L+Gz^#rYmIg9!MfaGs{x5qQRf*e?yMZO z$bCZxW929g`XR0(I*^?sQ&ty-no9ofj<^*uvcy``ZGGL|6GEHTCpigW{voRe#;K?d zI)$v;S)L}8jdvvNDY8o|iL6WC#V`sb7016edG)qk`1b5n7f+)rqI{FzlZ4Jem(41X z7H$>ITC8rfp}XC3Jw1p7W#h%!QKsY-#>prNm{Ykp8%=d36i#B1Pvre zqA5Fqu$oWVb=g(7)Ap%hLyi#ehjY=C*8{dtCt@=;6+U0d;Fn9AuzN44iZs#H-61I- z+9IB=8itOw-{0Af5>!gdW5j(=u}S+P9jL6+7!B_2*656cI%q`TMy8S#Wq1T|=|daMfEYX0IH5;|k+rXeCY_;^)!F7u?0rWvq-7@IciRXU4`>l#+1N zrR+H|MkI1Hr-`nqz&WkX80z3l*HgjXnLrj(l&VV{@=-L-pygKCQq24 zfumA#)?QCo!7cmxR(9Re@y=|BZK<*r>9$TCPyOLmNftRRyvtL6Y%FeFMA9smfaZi{Wx9^H&si z44|_8Bs)386}lnTZlaDXHf4E8^_+awbnQCj%qS4o4i;yv4CVYEuwUzDBvs*EB_E(o zUiKqQMC6CdHRd^`$AT;&@I-cvBwtkSGSrAZ_m5w7#i{GJ+bCL8Q|ZY&-+X89K0wm3 zQJp&`>CW}qTLV_u<^zBRw|)2)4^TE*CFOHgxJE9>fS0oG>@=^>_fe%g>7BD$+{90{ z(t)BdPRU&7wn2X)((8Re9cUe{bAnn$dX- zkxV`H1!8}LNVa<{*YmjU)VJt+B!m;Mmc2D-#@w+aZ>(OJga(x)9q6z700yTH@w%CZ zUYth(6o&*-DY(0HqOUpXsUvi3Fa5e(($Kwo{@ZAj$OT* zXv(c7_h?yFtG!b-PuMi06}?$-H|JOEWALJv)h`C?mJyHqDN#Bq&#EXQo2*M(ijC!r zsX{O?g_0t%Ls$i~#ll(*0kT%Lm!;IqWlgmWX>3}k1uFgG`MoP7AC5c|V!3m*z`45^ zqBN}?Mtr@B>%aIb_I<<7&SUtjZ^K}}>;L|W{S6r~Qi=or=@1jcO!?&QVCej#%!8_h zWJyAJwPYVSICWoo5#oMXJo}H-u8%C?7hi29b==XZ0re{$7^_u5ma$4G-6A&W`%c-$o-tXqf8tCst@|JC?X&=0=P)05r#F#z|;{p(mLBSZaF2MX+Sh} zn_YFMbkR3IAZZCgF-W&jch=e_DuaX65WBz)x#|+B271X9tk4hEl=EX~khNS9xOcwb zvq%nU61-a0vKs%v_#X2H)Eq&Y(>Uz99K4jj82Vtq*;q5&TNWZe+6 z-i1Q9j?;E{qafAc(DP4H3ir@D$&~<&p}4K5C%^~^QkfX5PPJm`}QkN&I!HUUGA=@0$55=(9m|v2Crmgr=a|6?}Ph z2XZEli{Rmx!xf&`v7?w8Aoj zepzC%!U;cBgUB)}igbW<^U$3|4eT(K3LZd|n-$0~I?6D#CID7Sc3usNA>-m?YD1`8 z{L3u7P%!@&gAnl>$HUP{C{FIz<8N!=-$*7Huiig}a%t}vRLenbsm$~r3U$UsyYe!B z3|k3-V@|8+9bF8maJu{pFoHxWg=P}gXlUc2>e*JXI)<`r!_f|`WDRRZG6yp=lGV%- zV#0VNQ-cFRm8@v%TAFKU4UinQq;z39nz=q^*1J+7@!sSCAv){dY^I<+e~YcYc1 zY3DMCMIX9dg%6YHAR^Chd4aCTyjm~j(yRD*5B-nF*R(l<=F|+0bQ{!=su0*(;z&=0 zs~sldI3PN>1~$X>Ms>H)6TelyTtaj>osF0_%EA;tMIzmI_*-d^E+WT}rmRV)B~$1| zv_I{Yf;@RV0`ZqaKAbNO8{LOT?{aiOR6DJsFvP^Y)!o~blB`lc<*e7RC-)LJgjhHT zt2Fpm*eONI$d95$ zgR+rYi!Y4WAmk}61KBERE6}zyz!%sucnY$|BPu2~R0Y3t6F>DDy}bXD57K8<4LY;S zTQ&%ng&NH}lldhb=n{oizKF~<^n*NGY{+4{SBZ{MAINS-S1=Y0pmnX|p+7I{i(;nN zd^)hX5<9_4<=eT?Tzr~>mtjDvXkk%~{z1|r5L_3F4nrQw!X;mOFEZK{cMyB>5$|TF zX_KlfaPYclLoG^RX@E$L;xiiY_!aqVGr@eR!Wn-^7UHt-Z^UuayA;`nFUw=F|6#z5 zP7WD_pQtPr*Z|quFniPxi>RyLm3lRfe{2MLjdnAPAdxUfzm?{cUeoW*tbBCT^vaYz z8Z}!hbPDL0lw<|Ru4Rr*tNhsjEi*m;%~$w=jFpA$+S$oiC$FLdeuF?UQp&KiT2kt| zi>|dHQQ>jRW}VML`y9~X=werC>t|u9?UtaE}In*0? zDij)e;vzc2R=!8 zrOH^ep=V2h@TsA+0WhUQ>d(QY!1~n`#=)7XwH`sb#(u0}4>!{uPg08px(BMlgWCI0 z^_9^Sog@(uO*e~AE6r9B9P=eXO%m*aT9q3v>qh|yF6%zEz#HoLtG>abGRGb8ukh&r=HdV86&dV5G-kR5D1a{xQ}tXGY6{d9L945GMpE4nuV<= zT0uMt)gnck!qmR}+e8u=bIH0b4~5HB<$KY?lTmxrkDBR`Y5y+iGUK|whVtnfG)}R5 zIAZ`9O=MzHI9AEaH*fo0$iF%pOjVPcT5GQWbj~%ComTCIb7+rSl-DILv1&^POYH3q zHP9oiYBQ~vQl_4g0-xzWmTQgGpnxCVBC+l4F98JmU!<3<4P#yBkoGEJ8;&n z2SIx}NkvwZMe!hIn#C><>Ddp)Tt3`aQ0ch8{3I-#CE$apLm<+)o^n1)Gi=#dR`1;V3uQ zn8B>XUB=tjz&4?j>lPCB_P?XOa@I%P%+%IsE~vXh3O@&3PzW%{2#1>h+tmbwKfFc& z!b;rZ;{Cf29qv=uRLadR9cYMA`PpUSt+QE}(vK`yadt{vbuz zac$_fmTptF>+}0Ynf_r;=9M$iU&4Qq&jV<$N~F!GJ-nn*cs@4_$w)TXCsljJG+oSB zlEEf42S&p3n>)w4B$A~HJ!EgL5SVnfWS=ergol(M0A|OffR@ghF?~W7o~&%KdSl8u zFG3we8q2*h_#Uc1ctIRn!;-x*qaR^6;-E-(wTZdKHS}QHb0z7CQsv9dbb0oLop(CA z{*a1tEx7^?rJu-)wAJwJ7j0%;F(}4B2c4Sp^BKPO5K80*U`>bFIKt*v{XNm~`UyWA zvHtD|_ynwp^+lCp%M2zdd}kAMT@HBx5fJadF0xToBQpu1kt<9%M<@!@Dk5Wd%4+Vz z+>o`RsxPW7^Vz+ya40h5UEGazoCF^`ADKUm05l)vYubo4Skcpv=ZR)35aZVJ((T}> zh5ceM%A^2F`Ge;JV^~sYKfzcj%$y<)r7XwQ|Jspt--6kQPEgv0>xIh`QE@hCSY73+ znSta{+8Ep9N;xSOYrM$cORID;K#bHpDIN5x0L~&&6-M5Bg2hrhk>Zkl4Xs3d@!i_% zxnFp6#8b$}+)Utn6G4eDP=t@oG`fc85;<&tqeyMZ&%Q;^XTn5=p&L z&V`S+*nQ3zy#?X6@~kO$J#o0FNrM_<4x6G_?CE66OMijJ6>M>1xqU1uzR=qXnK zvw9u|DBU6^zVUZ6()ea~JAU48A!jpSIBVG42r!F(i^oD+u!_N~@g$qC1=bg7wybs2 z8Q*<9njCS~I7M-2WzPb3CXGMl(LKjR!u-cOb#ds;FWGKMA)-_3YjVG!iyHFR0hbk&J$Oz&OT(o&l1+eq)c3=ib> zwI_X`MooHXF(RvFs4sf24fe7qG3*wNJOtC%9&gv^6!qr9A7LHLi~kETRBhx?_51W5 z-t~TYQBL2&t1J|TYmfZtC@-xWJl2^N`RYwJB*n@8*TF=~!83|SkLe5(AN!I`**(&R z5%up^<$oWfd&-t>Fne`5BVWwDoLrZlF9#smon8v@Twk zJ2t6RX%_TN=>l(}MiOmX*&kT+{x`bG){+9C`CpuG02 zL%IvM4DrFiiJ}k*l;=|X*+3*|&f0;i_1Q3J<02t;?K7U-NfoYCNi=HFS+LVr3+*^F z55-!T8!{vgo?;hMF0AU=@J7eV8lT^QKt!*w?>IS@t#ShFMM>KtMhzSd*zf zx{RyyGk*zl{e9@0t1TIsV9felsq;_PdSs)CA!jg&G)@6z@=SJhL3alnH(u|ihQa%8 z@enXyK3v?u6Qs$ir3OP+e+}gd4&~G`Ok;6X)g!L|++`_JV~-r*jr$uLsaVvRHI;cz z$RR!+n&4q1hk9?Z3pk+zI-FOSE^S{_UOW9fOv<+n51G~}p5OWKyJ~=gu{PITvmBCD zkI)TkJ+iSJ?okHI2g#)Ahbsj@E$rR=U#FuDAmmA#A^`pq=6mmMs+^$V750^k0VhJz zaNGAIj05FnqwxL+8>$wgH02ybR)mFWL7*rSMw7T8A9PuRr(cx+9gB)V3EX}2CU(!} z5G=6hKHsG*QGNr;A8Lb`o*6LwU48qn0*F#1DpN4~2DSijw5?>@2Iq!_&8h3FU!c6l zTwJHc9-QHiwokaOLga*VlX58@t(K6|`ru;A`*=wl9)egtc@WZh+xLhQq&XUF%L4}s z={=itq^eD6{_@2QL*`9o@LXX(2!9+x!D;;1{DP?Re2{J1*luiOVu$GwCL1;B+X>)T z%qV^h=F_r5j;{9h`;IiNR2V>yUn9&MlL(n|F<7gMzQR3)=PX@!ONO!rC;OhfV<$fB zc2g1`V`0hrgS?f|6RAPL+*6}ip(ylvDr~M(x(M77*_F@bKc%&z5*d5jH1FWI&+$4u z@a(JeG?6p=h8uwfiEt2Q*oUp{NiZl|1$eDah0P+>RqX~F5zwluh(^zEKyHTM_Xs43 zWwcxdHmrtdCl%mwB$X06FQ}F+J=EX787xsu>|2K5?U(s))j#(I3)d9I)ZRToNRdVryx9Z6zeY%ZP%h;cFbPtj;fpF%ir}0(@reX&YQpII^XPW>x|4ypqo9 z{v)1OHt|rKU0v|GiJ}A(^Aah=nG9LLqnZw60>$iMtKt^GjNN-5T!k0LKfk@wjQStI zk4tN2{$|B#p{=F*nW26z&dpIi6`gBYYbm9H;=LjnjAOA|_?NVv7lQQ6HG*s?fn>6* zxWKTHrFzK$%B`6N$6~#F7tS>9U9jDeG&2)cp6$^KIVcm$qKZ1oVjW<)EzlW5r=;-C zF35%>jm3x`YN=rx>7KF7rWsHkLyH@iUpN4dOxU{O)D0P~!c6h9L+RJ=cTv}G%1N-b z5m5pVka(faPxL_bEmMLldW`z);DYn3t;c&-h^9~jwrJi zT7*Bu$|e2u&&Shjkn-?>@7sE62X~D-;LhLfBcV4RYytjGziAaBimxe`RS zVSP(BxBt#TI0$HEaVm=zb>qwNCjm=8LBjp8K`|=2tl)hl-IB#gj0|4TiuEjB4QVgM zo5`oyqmTp>;QwRc?YQm13XWxUx67l|?!STHsxdpMaX+;w_nI`)+yq)US3`9~fGIG` zuk&7{>DC0iJXscA1*&mm(iYH$HAw?ZZfg?dB$O6Lh1`k579T_dw5G2@EP|=`0;)wl z1cOFpOK1nUU2_VhM(>q?YMdjoe}(FFmTVGBX_uYUQuq!lOI^Yv86wpD533I6W7dyR zaAImTG~6fU&tihrcgGT@GN?tZiX7+MiY5>7CXC8(!5LapKyE46ulNIXh^(6fs z(dt0BbDrn*8X^(D+Q__Mhc(AAmN}F0Jm+V&n#j=q!hKE?`TUuzOw7S7)Q+53&kMZQ zQNhm6!|ECmUi5s9U%3Ai`}Y^_4;!sXEYpyis>I8h*_G39;Z54ILRqMOpHFOGIwkOl}QfZYalOYj;^6ks>=BIV-!Sq5W%38(O^3E+!% z=b%3mi2>_)Oy?=0QsrZ$_pZmtgy@Cp1Gl(H{xB`3E38(XX8`S#i5!?W{BuZt>T=po z3m;hOI)lN^%RRH?h7NbOpL=55p-zk9v%oxg_V=yUVc7mJwD7m88>}*@MxxcUIO@&? zX2OSuKU?dNe~8Ybv{0YrA_mcx0?&c(=nT7H@`Vwcqoe_G;;zql`aVVE@6TVr!n<%~ zjuvAAL$Z4ReOw8dav9&^gg7G`UOZKZ7^IN^1XS902`2|3nvBy38h7glcL@>zlxesI zbrEmx^L&My9@DkSmNKqUmt*Xsl&$F|lr?ulHZ1CL0mZS4y8UE_PNsFi4F7@yj$WW; zvO9-^0*U)(uNX!lH45~zAg@ORld+P}pI2=)$(2W8Mi@!TE%k_AYt~Og#GMX zZk!uV-4(Hw<(_9~M7$~IorFM=A-S|2S}~_aPs+qu-?cFCYUjqYHRSe~1kDb}RSR;9 z?h%>t>y1uVgE%H5u{Py9cjHT3op*g(5$Cr3ZRzp9b)a*-k^pK$ssOG2l)T)miTwXa zg2a8ya%z0c11VV!Mfs#3_k{u=wi7Ci#dwb8dbrXzCYT-WT+dgn1P$i>2QYYuy)CzW zj5Tv^{0JN;T67oXkmb%v2emZjV@JW3IuL$t46Io)eX;kA+&mHWxtF|Hjs*3%3w|v= z!u#6LypY4VsG8cnvxpt4BX)ubMjQ}C@p2zC!wqSi3?19$I6%p$fEX+LTcNk#H73ui zs!Q%b^#y?7_ZcZ@OWCb7A|V%QA>m<_cEq#Igzj3*B|546Mf_-P3GQxi+KgV2=1>Ma z6l87#jo#JM-ZP&*pSD9!Oj<7S^Su$M*jjS3Jj6$&<)6hYrB9Z1yD_fXv04ckQIGwf znNgy%aTLcS;hD`<$-hHB3NliZxcp-PI#DS#(Vfm2>qD%kV{7>#qHZMAwvKJXDI210 z+Ed8}H0tyy3%O}^o&`&pYm&#TpSowLn^clW2bK*_O)jN2#9gOJ!hO`P>75nKsss0M z$i#pZJkn+wt611}|5AX(c_}xqt&=u3JzH1hJJK!nq@U!q&%&9WFu|+5cOzVhF)i>8 zkAUO?YYsh?q%FfMC|Q{#jrE*Li}BVhI7~vsd2W6yF_W+A0r=7ujS}^CsVV(x@!ou% zW!F}9#rO&!^6y&Xqk(JwvC%&=>6oO*HR56}n5Wxe!AA0s=O`&>})!rE7G9 z7jkgeXaJ=<9NwDdNF-Mhs&a)|GObriZ!;Fxj*O>N^^}0K#G6Krxc4gE6aOJa98P7* z(#PI*lzBM+J={{bGI}Pjh1EW=8kn!^`Hn?gkq zDxuea_AqIj{e>jeC(z;0k!@ZIu!IN& zHISpEtXhm{D08B+%tb-y+8N+P&XHB4&KP}RwO|+hoBsB10Vn#@^8nO}Oi~!ld}WH@ z@E{3G?V|j)qc@3=dC@7q7=4v1Vb$=E$ch@c(f};PM-7~Z5Wu#gT*<$7VI%pi zOxt?tFdtRwGL8O`+HK5JSF^Us4W*ZFHtOf=$B!?lQjg*6Pu;v#cJb03)&oo`6Gkku zZs@S?$LH9pQ`uDE1N*7nXp#Mun)b)r+xNo*{q}O|p(xB??E*50@1|4kH`~ikjWAEs zWj=qy)YM!fje_&r;7`5wbjXDLX0`)>)_C}Y8Jey#!8M)!K5)9qh&;daUWbSDROmxy z7BXj7du9h=yHhy2p?D)A!s?$uEnPes2#`2#o4U{XyLAwnYLb~|yqR`-DfOsbO8-r|3-gsnBS;msTKe9%2iO$2BPGYP^6I$ zrj{Vb!@@B>%J}?k6WhQ(*FLT-i1|UxdO)|}5Gpu|#_kw=3#mRDoL_(KA6kl2V+mK|w%0`WBXgFPy6{n6b<9 zdQ&My`6p;4rdZzP_u~AKEi*5ojBeNOiy{d-H;8q-cRsWGWrVrk9@=_{ZJxW7gB-&& zr1h{0?&CC*<0YVj_uWjISR3+N>Ifps7`XLHiYgi#IED76DX3g6eHOM1% z%R+nUx*$Q*x-_&hYC~ylug=F&LkGeo+oxRpVDB;imgi#h3-ygI2+>AHe)<5hNm|l( zT+NpnWNoyA57CTG9dE$R=#cXXbVfUyd}V0BF6KKOkdCX*62ou<<{CwLm`X7l19_Nc zGk%?Z3(HVac036AbIHs+x^aaWNY1Xuw7cB(Hek4Bi(HVaF>QC1sU0U7S$_ibl-o1_!VdX~3FcO905PyLK z_)1@}13P+)vnNbNry*qM9s-KRlenW#Sf|gow+w*i_pH9X;B7{O#5{eY9_)yGZFmdD zu>^jZeqPWo(~r<*QttVKVZM5kglH!^Cebu89`6Zkn35n!c9ywXALOd_U!^~j>8v&K zxtV^%TQq1&!okqpMK!I`c4&ccDS1IrFMAqzmRKD7zasrTnRu2bLaaKCbj#RM!jDQk z+{0QaRX;|z+$%g=qLmV=%io+0l}Tnlb?OJ%G3h>2uq|J(2sJe-1v!?R5{@d&PTZX% zb~{W3q2nU|G39JjSbqDzD_bKTzG{6t3pNX0!ED&_E&R~1y3<+@=P_P-WLT%P)JuUd zOU#NpP|-ImH~5>h*&hZYTOP?CJ`i}j0R-+R!%p#_GCYH^pX#L{dnTHC;W^!w97Xv| zkLkN~x1TT1ZDreZ$fEy4^tXPA{*R8GNdn&|#QI3#V0$@BsIS&R?YiDphH#A%6S5yp z5Uf`y#zi|L8zpku)q_c*q(+8^!^#rG z&HuvOJq6d+w`+sXiftz|#)`FKuGltKY}>YN+qSb}+qP||^E~hV_Sd_syZWfB`f%1b zm{qfC-t`}2+}H1FERpM{f2dx_+DQ1Wcj4kkh|sKeFK&_Go*vy5FKx{>rEfI~kP+gZ z5~XlmZ67c_J)Tcal2L%xh1S=W+ahewzOo z$7f|=Wc+`L<0q)B*{uyDRgUI&>E&%e5Rme>0t!KMd9liLb(av(7Nc-t9fIfMYrT9@!~wSqGYEvS45{^RTbf%k7xgk>0U(}g(n3 z`;A3PMo3hn9viij7L*8)$>{+AoSltW^o|EIvusMO9ZA>N;j&j;=27gY~RY<6w7?}ZW<%=X&!`i>QCg2IKmv)oxN z#8&)?-0~~$0Vre|4%N@(F`=I>E0`sw3pHx2BE5n5EtRdu6b1eAm=C|Cs%|t3W8!rr z_AUr6m~t+Bc0KX>qcWE+Z1pPzY+)FV9C~n>L$hnj2H91G-`z;*m0w4_p-gMxEi&#U zGIDJo$xWjPAf(*$9VJdhYZ(L&k!&{)Hx? z9gaUx_=KD1%z~)PSsN(266#^sv#qPIVby`v@@IAo-~=<(pdC+D7W8wnDlPBjOPHV=Fi1l5&yJpStvS=e|8z3P-#FV6WsTBXG!Dsr+r3#S1NHDIZ_JDtNqVR>+oox9 zV!_1z+XJ6tWyNK$QgMM867R31c3tvUdkZ-CTC5;Jbo*@pGzjs_Kt8H`Eiq$#wPyCz zA)lZ6ElJ|%R3t?|cwULXLhro_i;I&3%TLGRU{ zYHg^<*TSWWq_MV81AUP^wbZ_A34`M$j}bNSx_X|_&Xt}7U>xNL^SWE%{(Au;5CV&+ z6@#0`bQ_lyMl{Jl*X?HulR-wt8O7*CF}q>ogdWifek^ja-E`kydSFDM=dqL7{i+~9 zDN^>jy2JYKdB&%oS#%l^h?Hs?y2MRX`vj*vt}7Y8UF^)yYzV9G{i|F64=Ode7r0+p zKXtr@22FYeeR(kf``i=$W;(RPS)zElO;CI|O4D3<>z6)oJKi5yEO$kd?^jfzN8iWx zn>yc{0GcB=xpP_F(vowS(oD&7!c};^F*&ok01q4MX^aAKjFvWQ?&U5QvoVuJ9K@36 zwrt=li{YVArLA1SD_6Td_8^W4{-g|6#YqbDd98d6@CWF|bcx~8dtI<_NDT@|X!8tu_6Ss^Fe&3a&nF|eJ zoTQANeUa+m)QnIKl`T0GR3ND2{f^Q?fA_~r{!$-S3O`?_xmiB@yOD8{%?D4fmbLT2QZ2PqIOW3}@pw7$z{WL&@Xrp`vC{*wP*?bCjivL`}|1l&}pujeA}C2K4(9q~>?>f4OLmgfyiNGZNPM zgi`AfjRhEc?4%C6ktl~%1g^-5mJ;fPQIGJQUP^_M{LL2C)1z3?OQ10j5$Xqz!E=ZF z{)=RuI%ie#ib1Hch%|C?9i9qs?H_N=SENYP8z@X5(+$-SH{h}nHF|uqz@V+*sE4@t z9X2I+S4vu4&fHH+44n?ce1zzIl+>bE>dYY-t33QOmLi|htC+IW z^-IfFM~E>tIiTE*6>cc^x*i1mt!YHr~z6;O?2t=%_~k;gYH6dVTv!0xxDKDpH$M^yWE*+dzwf z&dzj;g>pl7zj5=uBG7pVkcOAi(`c&aNUa#ePH`GI|MSL^R6hdR>)Q-kz|ZbChC-u$8G!&VL@O_v1M>L;|Pqgr^HP zNg#qCls+bHec*4y-w@~Q1WJRm1(};WADhOjBl^@4D!~?;BmLxIPGN6FVdL2kod*xo>90xe-UABEV7lAIUR1Z~k*xdXlmD4geW)0LOL8|}sQ z32gD5U)%&`WEKrRrJQIH+;HI9fR5bv7#b+6NI^+1J52kbydR9&F&drKzbg75QcuN6 z8Ah(K)^w~qpTabe92fZW%X8cnQYiBC3O-BgHnR}2Gb7VhR3Ly-L04R>gTFjh_iiP# z0_=E7h7OGVTvWP(;??r<=2i-%;1UKa z1PPB_lM&upWIS}T*{rEaTH|`YS=3ZAib?zy59}9DH<(Dt)q8IO&f^7HI*E^L)vmqu z5$hicW8oX^%(hT5Wt(W<53L-igxZnMloUp1<6yjReg@OcPq|TLXHIl9WR1!C6Csz& zVt{=VW@I94EBu=F`SJFt5fA&RI9GofC0`^c zH$S$W&86|?|M*btT_a)Q{k~SdDqhp|dH0Hav0!Tc^@jb>dFU27yERpW5A~r>LJ{rh zeRB1Id-`WeV#{vjzBb!i*fWCi$h6$T?S19y@zq-1;X-J39N}W8hSJVI>u4i4D@iGT z8QO?}Fy6t-53N&DoD3(>7=1ycgyu>Nwjk-<+r`vuTpAmTOGQ*qGhA%dz4)N4!z5R+ zBZOXTVTUt^t7_T&h%!Pjz(N+yH4+Jan*8K_M$GK!fQ<*HkQeRh1|Q=cG~A8?lqmio z*tkis#;mUn6`HtF%}8Ic?lOKjNz0Z+k6qzlxm7*E>2o=1A&7E5(rP`CWI!AiDqOzc zOQRt13u9)>(DtRHbSEAYM&NzJz+UsSjcMcBRsQesR2_ZyTBCX$aGw|tTTr0A>P3=U z3&JCtRFK(}dlTi`s$-|>WMtUNlteZu$h?hVw&85jPTBc{z^)zbUL4xnYQy-?{;U~N z6l1YSk56b)6u8u_WZhI{zeyvSNtH<6at z#rHPj2G%RhMYOaKSQ}|_bU|hJnZLw1db9H$f!EPooJ?Woyvb8X{dUfs@@C<~ngoyK zl(8&A>xnZRZh~h))QoEu&XoO@2U#W6Y6#)VChP}J{tJZ+S-9W{$w5+`bVk+@F!Pw8 zS(5LmY>KINP1ai;^H{)HE8U-|OdswiA&c+SfB1^M_Vo9Krr{ozv3^TwYhczf$;*Ot z@oEWtkZ=n!Fr{Hn8kl}lSz&S+VFihO+vb)U}|O3 z-}ZFK8yl@IR$xY@Y#1}0xXh8{44Gk^2XE_&M@qZ#Ki%y?d*Lm@p5iaB%qTkg5D|4eR*^;4U;q2DTEXDS-O3taj=}troj`}1^WRUAK zaUS#TPLFy!2`F5$4T9l!wIN>bLQCB(F1qtS*YTILqdrDITOWWqF)8v`Pnr$qYE0nCx+34$)s+cG+yC@U9=jG6S-}B*H zA%7Y9y3^VnRy|LP^%&m)Xilr4w|X&=0s>KGpGkn7wW~(RH2p5{(t1YsoS=dyHSgds zd~=NZ3>Ch00a5Sll!8vnj+OKH&aK7ezFg@|GAr>oWu^EoJ09WqYFPd5PANFqHYLjy? zV>{E~d776%|AgLK{qBtiTHJ1d!_wtL`f@P_N;vLgoLZvKZQC4#Fx03yE@0pR?}uSX z!L(C&_Qxs5B?3!^c$*2qf)84Qq*Ra3n+^w1VD9i;dsmDH8^((&2G<%kaaV5pk4NQ5 ziGwkJ_a-qRDYFF&y&d;wN=yDY85dASLPk?b_@k&D*0cW(B+5^gzNo?zQFu1=vd5&? zjj)%@_q>fOGmn-cwDgH)B)W9@5l(nedsPh0&yyEZ6(+_?Y8isSUhzvGCRz?SAko6_5M zXK0v@;2%;1DxNf{{5CI8{)VVm^S1m#hhfp9S_0@e6mlhp@)n!;&QmY$2W88uDSMX$ z5_B$*EelE45AkJC)&OFbVQ$0otOOf`QrkeJ9pc#&V$nt^KYe;qk^Qk$${~cg-Fby2 zDHEX-{>Eb`EiuZ9nwX-We6QU?j3-aR&HpWmP)6S51zZ0Uj_*+O!%2+$4#%T6HwDmX zq8Mt{5gA&bKAr2KVtC|<_O2oa2OD>H^N$E>tmn|x4-f|#gdY=H)&^+G@5$>S9`HTP z7Q()-C*NVGY9dQmD0lytC{hmJ@^Gx^ur0!0*f3*MT446K(IC5}Z6?6WTQ4N=&68mvT%zA);s;2o(sG)7<9Ib3}V z=!+1|KlHF_6^zL6m5de=cfff{i5K2~MDMZZ*C#*+*ykpWVqwBR4vC8YV~QMon-h5h*H(Z0JWp~MDlwotN(sL>} zdRJ}pEl@p5xp2`j#}%cu&m#z!%-Ivy#{n9=Hzkar=o|YXe^BgFD_17?=QY z=2SWPU7@9PI!^CJa^3ucN#~{rRQ4FmsajC0f@&wcQb=&CnKW6XGX*~$Q zBsHP$LcTZ#2ox8WUX|Lb8xO1-mtjUvc7DjgE9`+Ot(`HdL+`nEE}znkISV~Hi<|>pZ%B+XUN1D2lJ25B&qhNDg1x_ zK}Bq%$2nA)wysB|bN@`Js_oMMjL z&k@@tz8q1iafjO(fvWq?8{B#9F)2)+Rv1SID^9iy+7l~tQ>!@iXG)jps892c>hi&bHH1b=kg%`?dc*$M>{F9+2m^Qb z!JjI11Bn@3JM)*V026)bfiWb$vLEEFa2p+Z^g~dl>mZ^<9^xmabF67|Z&z2$mw+ZE zgBYZ%tz^N+SU3L;D6j*<5E#|p(gxse1nOBUOkQFUrt>8EvTv7KqFKpMexo9-lmhCh zW&c-HB>w*a710*&mRLI?{tqf5_Kk}Cdw|QqSfJ;`R@(TTOuP8FI&-5=#LrR^)-edV z%9$zX&a1*nqcX#6_EYKG6p8uQ6e-&%wW`T;T-Z>#u#d%7!9?OC%H;7=Tq9uvSFjW8 z$|$var>BwTcH9V14xmsBw^~Xp=!J$c4Fmo@!jZ&#SqG|@)WNy>|=M!RNtnhLWfTDS-xbAnfsu)EEU?KKWz!V z*>84#h!eg42PqQ4#i0~jzPF9HY7u;}H=OFyi6f6X==?x4sCvd?HyYgZ`%)lFGjln_Xqw<#8#U0tvUuBF9Z^-_4BS;I z4|KmVh{}wkH}b3Apn$JcK<;~YZtbty_gj0jd&&-nk(ss-;`%b~R*xfDk=yQ)i6s|R zIL1GssAo;DnppQ{@B#7jkn{94JrgQU=7+qo)g(Z5T$mxOPi(OuqfCz-8GLbv;Zi1! zTo~7j?I+0MYkbwXlqE_{95%dzS7f>BF@WE{3LbjDLN;5Y6Qd_Mp@{7hFQ9iZ0!@0R znpTNCS3+@Z9M;==G_TNqAbqvZ0Tblqhu-bO*W zJiCCU397la-VTRKg0)vXzhidHp>dEi6$!yB&iXwu8WQ|>4_L_1q%^YCdBF}QIMUE{ zNsGUZDJg(e8QBijKMsdVthLrJ35P0_-Ir;XrHopX> zh4S9?%p8&0NNi!;mkO_(V>p9xf?CmCk1yoW&4-3`jok>ezX5-ei;1kO|`4YR51Kt_Mbeyzi(|b@(=e~ zgl90W3w3YCD?zO{4c(X4umkwXWK%yQ9 zfrINwvR)cwwRl5+J0h6TbGwkD3Y1bG z|0W&+`8_LKObHxm3E&C&R!ATN*ip161(T`j52OuB-6U`ho3f&IWjSTQGMftXOAuN! zr3muoro`hyMv<*Z!UTy^IBoV}tG=I#=;RD1V%Zt_WrX63sG7zC%!!6x|3-#lkF9a7 zK?qJ9|CBF)=8lY@;19USA;v{Itw%1*FB+CZjgBH>Dof@(6)7GV4r7kho5)y3CXJf@ z_OL}o4?pWqi&G%w?9 zbd@=xVOZ#9(00p5?<}8$TS!171Jn)d9>tfnXLFR_@#{2WYMecSE%nptXkxV-T3WX= zw}8R{TJ6L_1K!YURC495fGLvxj9mMX(6->~c+NV=pBrnB+Y~X@=}Loe#);~&aQO8v zN(3Hm;`?@F1vAuRqxOhJk<2U3)QAnySt5^X-Uqy_xE}$Nz}D;IsXPHdKV}A3C-e}Eg?&ceaug#trxTs#`F`X{ z3u=xHd|?}z#~X5|Z-_)w-Fij!8zRA#`bY@>hDZjI#x-4*0I2ZPW~h_X1Mc1{8n(>t z1tT<=7xqHX60m#mB`}(1siAm|ViZ0u9?1tTSvB ztKHD$53iKB9g^iDrP44H402z5D|X=(t?VGsSlzd_Luu9Kxp`AIxW*6=k5La*2&n4cwP{E13HdHGp(g<~ zW~np{IH{R^AtFE{1N32Z;@16x-D|As(cqz9ZJooY1vOD_;83{2vwd?I=@A0IPzOJE z^9A9-hBraLYA1#O3HT;cFe%EXpYB%xEX>ol>UwhhyY zuVMCUFYWzT1^B@7q5%&A)>{nCgtNm;<6z-z{;v2S7DnB}JPD`` zgR{=i8Et4~R=f-RN8Hl-BXKKTr-a6ShT!J#_&9Aag+Fn~CCuJn5kEGZmPHQkbQ(H# zuj$KEoFP_Vew*mN#tVXNqs(O~9Km0{_SY{TL$XG;pG*BHl)VR*+ISWiKjI8}kFXi5 zqKtFOO|`CUhG~DWe9|PRLLEUORF5pmEx9BN%yN)_Wob$nX$D98>B#?4jEwYxiJnCiDoX;IUBWhlh1yyzkM~m_+ZZ3FWjxF^nKQn%T zZ~ha{ht#hbyUW-IMt_0ii%D+HjGmfYi|+I3yTTZ|JxdxpT{U(rD@!r{r=BEbLvG4B z1MMgE>nrJ5;FjIT#)!)1))Bhqk_*_LwuhPP4KKS=qbi$=n3e=ALINaH#oImP-XbyW zZA_tC;>OvxEMmkD68;vs^cS(AV3vZB2nov^jN*_F@(+EGbhBub(w3 za)$55{SAwRcUxR1!+qBM{i4IUmjq}2hDA04FZ9yn5;`KNat_n>%x4oMcG5)TqL@i_ zmfUgDe!xHStu`NCUSV%^Xi8yF24S+AC$x9=%>-QGF@*Q;ooL?n&bi|nT&Pa@_qHz( zIb7HL$>x6g>{XClTF_*swe@(gag$s0FMgMWd&+rSkiYRi^kg!= zfH{mzysGnqp(sQggDcjQ=?Z%K!K}`+(V?1`<1dTeceRvrUf>Wd1f%PGNBp|7+UeWA z5LzMtrx`xhf6FBjnPH;2e(&RjJoLsJaPlCKN>2=OtqK2n4Fg@0(=+bC-%%pQ;}}ti zo+yoGyAsx}X0bri&QWG1kHmqsnA8-;JGGE|)Iql`U@gS+VTc5M7$(mkvKuAA z+dC)=IX542;+|A(h843Te?(eb`0ey`HXufI9E=0k{g=ltc3y*0K3;hm@C5N|u>&Tp z6V}Q}y#-^mIrnAiA6dlxA6dkix+edkBY$%JE3Dk`C<*=;-gpoW*l8T0q7@JjJ!1V!<@^l-G$Ter~ zZw4WfF~F7Mun3^-G<<7o?A`Ll+g46GQildQ>5kUuheH|CmK9bqbM_&#B_|p%w~-%K zv8U7}rY9s{om32~V)NOnnvLF~I2m?8x>0Dx$;OhSP< z%259;L;mRlp(*YL)p<>LLHVy9aRw1+aRdJKvqn1x_F2yjq;1KohN*+?kH$wmEi*c-wCCx=T;; zWDNDPF{+1}Ny@&+W^upzl3znGMEW*^yJ;pt+k+fmS5<6C>B5x33t5_Q^`C?>7v(p1 zv207uA1{Vgi2}yiRHCu6A+toZ_>t?kXoms(Y`~ zftoHx^hZk#C1V;31HIf2o@MIZ&U`tsyxug?mNvqmhmZk~L+f*{YZ^Z8;i^g>TA*|+ zstKN$ABt#nCIKA8m+tAd%!i7@wdo)BoJ|}R>fl}~o}HELvFSw;+Z(4*CGA<_*zeq$j4gDF84L4dBEV$-+eT`#Mv=w`Og>fY!^L!4vbvob%cZ?>GDXsJ|u z2Na_2zGgi2Q-Hm#=F-i4p^pcxO>$%?M~kJ$14fQ6<0hntMv9WUyM^c`)?3p#JdZD(e?~c9u|V4P}fyRxl))Yk*(3tHgR5 z6A#lYD2&M=`eF4FbOT^0CEA}sn7ZHSMwl8O657gNm0oNn(+5s(NG+ftKYRCDrd${s zR2P`au4eL_NQ6JygxTtnY`*|(RSbhW@ z1d725jF6k_Pa}WZuEk)-ZDkcX#TcZwwxwF_!?ghyjX{Ewhzq5^;;Cq^($eTR} zEJJ#h?(SQ(`qDeDTxqHt>ub$=6=Y-GmSv2ZGXbfT7Jak}qLi1~-sPl82LwNe7ozxL z_vxFt_o3%FXBSNG)f*NCRV<{;xM67Yfl{clt6G5V!oykkaW7zK?O3$b;^cy>`!c^>5%b#~kZ%W(N%583D32NXP}d`t)iZp?6@4fq3|Mm-IS30z)-62sI&-0FQ z?3kv3YRr9^FBv@PzHEapsQToM10WYph9En&rTlFB4p4k#8NqE^s?GIX1(355F$|^8 zOd|`o2AS3@-j9|x9PF@a38b?mWJ>J`}?o^`ie!oe_TJO)ovZ7>!bbUo(4LE&pBAnTM2!5O84v zl@@?F+2S8NX$I3sopBN&gb>V^yH?@fJgq%%o}{l_1bpVMlD}i#lcp7v~NWO+V|aS5*^O1wHRAFF1uY#&Ae;oVU5!r8-t*jR0XCFsk5mGo74P!6A z?M3H8uqqO)yf7N;ibyWM0AP_;CQ>r%?AiEW z+E<>1VVf}7DJtyg+;=p%E=q~4YVw9`pa{7BD&qpo!m{gcG))Z*Xm zL5Uhg2L&0vTf-2qztPBbDxRi<9%rjEbDNe?KQKhyYqt^?Z<|$>xco510$b;!A#I{O z&%VRE1a56WEVs08WZ#qE1Q>!d#SeXaW@4f?)vZC~P~JEhl1d%9s6xVTHnQJSS3kgQ ze{;%mPA8GvacXNI6w@uYY-nZvyC1q#;fj4dJ_Iqe#^E9;zpk5BI6%|<&4?^!xD@`V z5wvCzhO2MFXg3Xm5mC{sx|8UNpN+^SFT`q-GQ6raSl@dcNUnkrvB0Lgzc*tK7cw4$ zZFZzD;3jifkGRX6kHBxuKQpgm%R+{i31wBo{3!f%Q_E9BrfxC_SlCkRJd_(|edht!7b%L$&yOQhFqSB7qzV zSJ`8oacS($z9L8lOe?7=trD;L#=#CnAWOaEdX;Lus-)Mh)NZLIs+bG{too$9v#x*J2wa%N0dC;etb z4B#KA`bxmcbdPiAo4D!SXL~_A>GkhF?EKadRq99B+@uKIX3&2}kHQq~-!5pAU`eEz zM`?)jK(JV2&5a+G8d8_a02I>VJs!00gS7R_y89u20^?+F9ac{ro z9z-CdzWv9ykH5Xy+8$(2DzsJGmgzFPexVn+2qLS=kHjfg3%73(ye*IG8?V9hLvNv) zV_fRdZ}JTO)V@119b1R^Swo&ClDY^gGyb^ua_+AE4^gV?xHYFVa8D!EWazLQC z)6ErOk~@C^oVerhV*nu}*zu^*BqP~FFsQ}-0HnLy>*J`rV}Gh@HKBU3G1VQw)f961^}zb1l<7$TxW^Ivc{)iCd)K2l=uu|tOZ}XCGTd&-{{f3kO-2@h z)Qhh}!>JN(92U4OEF^(fIErG0d8#*ZMygyGXueZEswnZWXmA$z629s32kcl#w)M(w zJ56lOs2%JY%?Eq~;se0byxY8TipGWW;AQ+u6-k%)$Izvg~#Vp=m(=Oo~+Pcy3D4U zwXvg$7{N3Z>P`MUUKK&xo9jcOy}RK}qTM^t>4QO))JWsR$&{IdB%sbucC#T>hMNAX4TG-;4>fef|;}Kbm2R4Q1tT$qvv2& zwaVVpama(#t0bD%Fw|~*7io|^h$$?&m>#G4#cZ4zXTG#>nnLSeX)6Y$gYD_w(%FwH z(k*Yjf$;=FwWnP|_qXj3pD34`PE9eCOVXYoQ?W0goPJI%W`y@YA%7SNhRC&&Ks(TftVZO#Q9Sa> zf~BsZ2nB73OLV#Sd>uVNFoS4=Gy(>gJuWYXhW#LWUNlyL=oBpY)46&Y5OAgOM5;}8 z0EY7Mi=}-06eqNhS~L4ssWZR7D7aP&-t6>urX$PZO78fJECn2*YJLJ)r0JV{(I|0o zVESojK||er#A_47WE2;7bMYsKO9kpRBVw6A-YuRS`0)!XB1xb*CaQz9BCkk; zLX@i)ZOzhh8)y6`f}v|svF!-yC5bnyN$O*!z=bN1PV1E@5&jjS5}JHw2DGDc2lPe^ z#~oEuz&7nMGCZmyPqH}CSkO*IhP@$y3IpuJ&u?Kj5Qr&Na`w)A(Bd*#gOWag1+h%q z1KRg;?BB2ti=0d0DQi5OwHK)6o5|7?WyGhyrBvU7d!;TE0A#N6WHJYfwx4M7JsAO< zX!NekTNtEvh9fU$xRJAr+~$8GJ`AqnWA_MIY3e>3@(IoWVSZe^9HQ9N%d7MiD5o(U zJw^(iMAT>(lQd_$L}=5UG)90;l>^tZ4xIy3IJBvvv|W>qCGLP6NtWZS0I*plKhs}N$Z}1%!MWWPQnO*TuP?o2LdU0z```d{;VG9G6hf2e z?R-HPN#58wR2UTMJ?xV`NxIS(RsiG^bFQRFr7-uoSj2)E2WaksqVw_w>mj)CYI~0= zUp}ncfE3HP)bQj*bn97Z{>Kn8A?3w;%zTT0lDVP|>Zpr?_V@c9DkUQgh5mK)%$Io^ zaus!>j{J!jLJ(7wU~y@t&SmcTCn0yO(M2AJCMM_~h@(rtTiWqdb}sGKg@1ABC{|Uo zj3I$TY}(5&HHio;p=9vca!hwQJ9-qVuN$_R-h@ZRr8)`w_fDDcVS`B8M@D@;qVMIG zH(|bFUz*^ieH$WLzQ;wZ0WF39CqqQ-+Yk|A*8a5^cXc}Rr{-P!ZE zZiWUC?6zzgqnY*C6^Vj3tzHAyM2<&Di)J{Fx*gzI9zJf@V@oBHiPOaOD|0%q-M8x} z5g#lIvwX$gTGzIDU>YGmDRlykPp@04&0Snr6+t)#*e2Cs4Fwfx8|p@!m5!l% zRUWVS6W^`Qu)zJ{qW45(k8XXgw*CL5Wid+X1rKt|qgmE>m7 z7-uNY|MI1-K!IpF?b{8r%|8NsGx(Ypy%9=$P(BB`kdB3W4fyZjL}0j@)2BRbuGI~; zt02_aCcvS^u zh~lIsB4a1af-`-8)_9Hei1sSm9deQYsn;8k|vw*Egk*9Jl z?ra-1yat-Kqy<*WhDa0-MEDH4W1q0?@ddVJ5QdG>nq`SJBT)o>h<4{6{#mU)+~5L^ zr;?NduJCJ`94E3b7R}4E0X`fjNrA@vr<8*)8T|D^{QH> z-#>^*IMFmRJBsz>P%22VBIv|!&fEq%^e)`3BwD$Uz%fL(Ge#!>qQu`uMH z9DuW&Nlwvl{JOeu(KWhZL!S(|utlUVWcyeud>6JUu4Tpy(XQ>_2swYks^O1+5fPbM zgYmQfAR=lWR+Ya0A|iP^A$Rji;&Mui^#);HHID4}K{ecv&0vzP^MG$egqGt9og?5Y zVDTSBWTDcrm>bC3je1HVc*8u*B&snw__@&Dc7vR`aY| zi(^fngdA~ZGYVZ9Xt%Mbd=TXrDR9=>6nj|&Xd{(R7kJw@Aj)1%s^N({Qv``YagWIW7(D=lZVg!7wc;ad}16A2f0*(S!jnl*-0<_ue( z!wOVVq`|;-Y4$RdJ4j}-HQcovvUev!gO%1s6a(|BDG3NFg-Mh0*6UaVa;8Rly)#~^48?uBX(I&lOD$Sl_9;IsHk~il66sXvOna= z&{}VZ=usw2tH(RES&7!2_VfsgNT956){KR4U6nqM2{0}BO|bXqH7*E^1B5+PD+Do} z@l)t{X}Zu;E(r({uBwEHKRM--GmeYjO<*A;N;=}u@teK!Nl~$+95L+;3Zh@Hx#KEm zx4a2#MwqKc@(U%zVons%9rS8TFEawaB1Bn2$fk_WZCg6%=>gcpkgbUr%pQ@ExUzWZ z>}80*qw3mx@l|ZfeU3_sD@M#gK;tfXu~HuWmdIGsZ5jEnZu0Vz#JUKFtcml>rqae0 zq{`W4iKD&5_;57S6l?Z`3{HQ&P{_1VX#BH!e{EB{< zsN^U$1MEyNh!GtYk&Kwc+E1j$vDwVpjKU)c_aEj3CgP^~ey-C-k9c)f3%qo(-QI1y z^=vk^-HN62ac}Cz+7f(hECupRsHh!*Y(>F}Fl)pf(`Zr~?J<4fgyhh9xvKf-_7 zg)iq&i9x$vY>$sKVFivB_K;r8Z#tlo)?Oc}ONyI@V%D{4)rm}q+b(nCQ^`0tkC_E zXPc8#GkZ-9y{(41An|j<{{>ySY}CPuA|iuF!d=HUdX^Ppw36LHcM^O+Nd?lY*wkdh zpR=dOC*7?5@@Ozp)NEs&%E7qv7-*q4Zj)lrLzwTCDcl{U-;XAiZ!x;40+d`t+uVij z3ce7vmEGZ~e2(jJ6sA5uyo;ad!@RJ_$gYw^{xJ8(k$V+R#QUcc{>t*Qe;CxPq-_?2 zAU|9}bjA@=ua{@X*UQiB`{?BIRyioEbSC&^W#rz+)IfB! zkaif=V<4kM2Gkhx>-Aq`Mtk3&2=u?8h?>n2BAp)#q6Lw@oz>B~+?s+6#B;{~&f0hOXp~bLgej$XM z%`(B=8X0Z(Xu_eE5*fi}r>UP* zCy3jDcB%PIRu|#EL6N$7%*yEELKpwO=WSg_!lu3FDc~K?xr9YWJs~=o-S0ME&_>6q#4|#A&#~EEio$xim1#XTNms%tIjOO zAi?HggaO4llwTD+JwdC?j{%{d#2TIG`#mZ%5F;rs5PnKq(sk_vYf@;9M`=?kv@eK` z5mCRzP@#T9QeW%1b*s@Y;gb$ErOq%RlQq9==Ru0W=f0>O-dhPKW<(6c1SPq^X*yvwqx}ED+&u+} z(nWiMFWa_l8>ejBw(Y7@wr$&X)hXNdDcknc_x0_2V`jReyI&^eDI*{9B_ndJjJ@~z z{l_76?y;`(c&nKXt1g9N|20KgMH1el;4PUQ&BJ;koKiepEY)lU5KNs zVQiQ`sz@Z{k1Dco8f~Uq!hqLWB@fLaZ&uWS%GR-9_`PbIzYfoQgeOK^D|K@MHyB{1 z%R{b_w#a-j8f&5np$m5o9iONMOOBEcgL}Ub%=^v!d1=u)5fuFBBB@OXYukt&?7LFh zGK#NDxuNcifu1ZnYbQ0B@fpgUSmh#l^k;=}wT^srV4I$eS_hR;J(eeD25>Lp!Dv+q zK1{7|Cs{{MhA;cd1}j|i>4Q_x z5xyy*&CnuehK1-KR^-q(M?vwSX$GydyiiF`(^hG`A7!{B!H|F@IPixRQP}O*C>7Ue z-S;J!3yB#MmEbsg(0KUeQZ%e}P6O)g$PhhyO{Qjfji_;tKmp10*~9giA(lDdK*@)>BsW?sF|@|_R&`}3zQ zJ1SQ;UxW^S)#=_={65b=%gpQ$qd>gEIoBmp`?gq>ukcrb*m*Xe@MiCaR<@$L0sMLn z%&=nYKDk@U;}Toye&4n5{N0~7r{FFF*S%j)6JqXR51s5^6_3zCO-K>_02P6`!)3QNySTcp+T@Y&Z9}Ck8}f*U)Cjo#9tkDr;PsAPL41+s+&r zLOrw2*VaU7j=yR8V=)ucqUvLFxLvqs$1Aq0b)eAb=1vpM##TA&vCp8`rChAWxBI4S z-bbfVvbi#`@Pu@@?JLBoF%0?PQ+r->GP^LEYUnezO3G}6sHfH^R-+p%P(3l_bioQ! zQQMNEzlIL*;RTukAkQ)xT#ewZ`z!=s*o%p>B1p$qjV%~IdTc$Td`cpr{D`-H(J5lM zEj|4%VIBpr=H|#mz>TY20#d}7y! zN`f30C|(eh^GkQM5P>0tFGSPjCFi8S?|~P?LnSt)o@10tqr`G!LJ+Uj%N4)j{N1XS zQH0XY_6eX!`PycKTD&E%w8jF(73#4)kQRJtgHbI9TXaHtPNPK0qu-LW2y+k6PpAqN zT(TchUwA1PdEzA-*rkZVd6y%ZESY2HE{vdKAm7!V>5F6ZA*Llh5ooXgF+S5}H_BLx zb)4<7kZN%|EA?>W@o16IGpZ|d-jHV*0>GPu{vcNs=bPLSk}UQvTsuq*$mg2iOxdjt zV(?ck;eF2)K&(pXABS-M#i>TY+eS*jd=xzeB;p})BnYbw3d4GJH+^<|10WWK&OK+2 zTYnZP-#ech*&&Z3Pi8{7;~R7S&tW_{6&+SLD99r>?xtdo^sO~bunWAX<&W^~a{hw% zT$fPXcghmilG3iE=#q8Kbk%tJed&Y;5V`pE>4$!+HUe3QDBPui*eh17A| zy1v~UILVHzGGudIp4qX{!{)~ci4UN)Ps=WFU;T94c?*3hm*_=(9WcjzbX^Y8U!Nr9 zWh~2C5Q(~ipP~gL`y2tq1WqHis3SSy;>Uy51+~1`P{vrZ=mqel_aF*2mZTtYf}c`m z?_OcWRc3s!jX@p=ku_^Ost!yS?b0WM`__rLs_JRwsZ!>dd5Ib zs|FMn8VavM6ybKET9(p&^kv~07X4_iDmJ$?4Zyfp6Zp$9zk}?bhgXhwC(VxMg0j5@ z0-bFbUiFGxftlM0Z~}}({cFmsW$R(^0m9DGvK8e6a22Q)WRWmV$Pf;6$V9GCRWrp9 zxJzP$UOt55@XFJq#%u>`yS%rlv9KI<-m`|=g0sm;t9r7IJ>^+{=|(%!{d6*)PpO+L`I+5(!y#d#()7|Ik_by=p$g<^ddgo9akz6{LLmF=&zbn<9s|%N$Atd zuyIW7#T50c$p$2Ieoe_X39Ddpdy(&X|V+4auzWTlO3V{8)5r&f$+$W)$}jVq?n?1x_eY<8#bf| zq1sKz83LHQQ(K^?gTOdA_NI{2_>mT-XSAo7ld^W%MHXbanr$58`EY|}?1}{iHjzy@ ze(sQlyNVIu_4vrYlV?-e!d5#JvmBfn*%xigy#TWznu#X-N zRpo3Kl_txb^?gA$@%O%?X+c@_;HRF04d)}Re6A$d#ntbhV{2PuNlQ6x4+>%T=JlCl zpfNq8TV&4N?kdpt$<&ZXY+_KHvthvCMjSVteOe%B0)LWm_nQNCuf@jsqH`U-c9C8i z|L$U;|CI_yRp&;KBnioape%*PzUopcA+tibztEbR#gX|L!?E>XyiJEk_@fZ<0Xrr( z<|@E>C!D<`0lWt)mj^L5i5sjpe3Yj@U?M(L2)#Ehwm05@>TtT^xLc^P7VO(ip-4X& zRNErr_Puy3BE1y_+R0~jCF=cM0N%qOVh}}dZ?H}SFfD4voXK*-^oh2Vek!?LTrKNk zk|`yEN7@9+JBmhtn_%3P7|ghEUk#dV`rZ&iBIFfF=B3`qBCnKVdWth*&)0$JMTIK&JYeMM^CHgImNk_#q$-_l?)i=5@B&6A0YIvTjnb9vig00Ncavc_#XAPP!P z!U$TPv`==!aJsiOng<`sBU{@a@cHmSP3`ZAUkM`-%WNyNCg=xD`BffcOGg zUj4ZN(v+ktV9*3^bx;`C^`P;V!px)#rxemUTuU|*Yy^D*ulk8UgX-V>4*sJhNNVIu zexX$aIhYjb@gfQ$Ek-<-)%xHxhOqkVBVKenhE@d?KvIGbfPdt^rZ%zUoQV`)O9ET` z6{5ljd{WYWM**!riN(>`hyT`15k#?6MK4l-&Y_{+#VX9a(v(q~ooZtyM3EyIfjKr3 zHOd0p`8AN~EKlzdSC|M^sG^o(V& zx!v7WgnB=J;=ATII2?nnzfgI`{ioul$TGWIW#RxhX%O^%AlZK9#Z$z(8c)O>V7}}e zSBmwPjZAJkLU`BlJyrhvdREp(tm2*xM?IPTKrX6;7#z-(OdbSyK5nj6>M!D<_0gVa z9U03R)^}?gKjY;}+ymo@576yL@r&jDbpE9zQ@bVI%8__?Ryng^Kn6FT_!1`r-o76Eb?^rwJX+&M5NlJ^eUUEAV*>6;!ySgCucW~^bjx&le3T1n`m46k&#>!j9n|XM}F%=<)Cctcx z@BBqzxcBp4f5zM%&}i z1qJCBk2KOj9;igFIU1^QXWFqMvSr1z^`}AOoAz|p^|r&8pi_Mn%ic+fu`L-w@M13< zzkD>ul8WcP;B=@XvK|X}a`4kTu!^N*Nw*{&G#lR3wDyn&jCCpYNYdOUg(JM+?MXw| z8Gq+J>F^_b2hRO{vX!mqzT8;$yyFc$X!KS_+@?Sm#CP46&wL1ksZcq0VeRBY1L>p1 zz4(q5-j{h_hj~&G-Tf%fdfDD0tv>yhl3@r_%JVk$khq3n4|gXe^w8obwfDM3tY-K9 zHL=A>=*~W{0|a{85aw_z)Z?(;_hg3mHaQ16dt65D0P{F0NZuzcbeZ{F#wPSu6O{9c z5)QtSd0iqx>jPIyv~WvChgX3EW|7LZ|0AWVt%QO=kX^VB1uLc@!g<5%L|%YES(FB} ziB4!J>1#Y~;xti(th#++Vk2A_-?$$!|Lu*Ycy9;#vLXd3Ho$&f=rMzY2&;5vo~xz# zTr5{aqhR$H@@l4{9EateV@nCO1iYtz-mkvxSL(|t72l3op+Hm+RZ6eqw(XbUx3UJeIi8pbLpWdUZdKcu0DXV7O1(}&W;cC-)AmJ=0y1cv!= zzbdFe-LDHz?xu?FzCRh3zNv@w7M0=$V@m)Z3y}1@{r`RpH0{~O( z5{(pCbdvit35h*(gyr6X@B_;$2@91*ym3RloTB*NWCTKiXqp#QU{QG|W#DRpN&d{} z*cyIPQk#rvs^<@JB}9x#rk;#c_?Ai)ct*x;_1HdzqJP0={1xl-x{%G-GZ=`f7Lk5W zB7M*%)$!clFb3v@?!-8Zo|p-SG7EhgUT7XIH^8yu+q!Mq_N}d!(b#zMK?~J#55iuG zPZ%H~ORnn4r;|+vI4pQR+fYpSD7q&8EQ084-Et(IDl+phQ@W}SzE|Zg`8q@_C&q-_ zSbO}qmjugB74slx3}O;}V_-2JIfOp{z2!SJ<0z)_c*RX@> z|Ek52h$fFWtKzB3ocXCugrW94or5}ze|^^^TCKQClwZdql0QpeG&6e8MO>U&ubx*j z?U0>&ZxcFL+$L4vL7 zd0Ms}e1vPliBF%x%DeyBz}cnDf_EOfGfyIw>J{UmXbf0 zvJSFohN$0@3hNh1FzmA+C&^*+3#q6bL|@CgsvANRZq1XUS)cT${91_+*q)J++p=j~ zY4z2E7kdnAIk66E{+vZ7fAPy79M2j1hymx=s0vrifS(+wY~Cvdq=1M#0X?^Xt}#T# zDhuOO0QbZgQ-pp)g6&DRCg#FvvIBSA4FHy#>-d-}g0TifDKFC1rRgFW0{6y!OsRx1Z(jL}DbC0L@z~EJEOYGVvKgF*^R33+NK(o@AE?dY}w}JjytX z{!Et~SGX7gW9u75L8hM}l{J=r-Pp{VWMU$_qJ1FC;hUPi@tZHlYy|8G65EG8#Cj#c zuPJ1spB`S*R}|3Mwk(KWmmEc;oZ$upcY5^ zP$O&Lt9o27!zQ3pjBSOZnk%HeXqs#MSi-byOA8s6aCKp(9kendb0j@uxfV)~VhoE@ zC%MAmWR;@*T3jH~Mcm5fruz<5pv8K6-p=YuEqVzUSYQly`JM$UhjN%m7+X1ZDISd1 zl$AYiB?pUpr$X=0866?fU?Ns9*Q=3)951yy=DHjVQ6SRLWJtX|^927{?T( zY4;9%=mN4dM%F&zCCD+^8iMm}RBIWA!k>%xR%cWlVT{wTDaS$E--~V3qOHz=W=yhm zvb0;ac6MUh08S^fRf;GF%#onTepyLn$c{brd=6Hsy8N^(d4XNX3JK8gN;@L%$aAK& z+qO0yZ0a=aTyeU<(rN&Lu zsnA_`c39d7X}ld`yy;Hd`#5M9vUW)eUNHmj#~?Etfxrsh#_l2Udm~hnsxh&dl!a#o z@pelsqtlqSk13pUjoeHnr6ZGNe1Q!c>IuC29}o3;UL{3?&zKh=b-8v>(|7W&vZ9@!S}1H;*SpMru#SaA^= zHX~?C=nIxqhEmkI#udst9SM ziKg`<85e|QGPIBE!{`wS?mn4gC8{)W3o4upTHW@;Ch9+k28qUVutz&Trm-;!z8=dM89^nai zXq<1eyc1RDAs}^7IEkJwqj~@t*!S!)!Z#2WH%>WeOZ{0{vx~q`J>hYKfzn~aQprDO z%%MY-5%gwn`CYwP?<(#g?|)8v=)U#Pwft<8%+qGbHRigr_nM{@b@FGg~`ygaj+ z^2Z`#trnrKwpdbyHHat9my}yN$w^ziZVrz;tv-#&<+5pbpUohBKAQJldGI$Tj*?C zf7lJ;?gL`bI$0lMS_1LiN_s~Oeo3{GoDO?FrUBGi!G;TIe%+v88WG^BU!?y0qo_*L zJ5ku|Nc@#9d-SaoyxMG$RMmE3~GudVn+>qjJt+OagL_RI@&29;R&jZZyNCjoW<3D zye_4~d+|QQTI~Y{a)t+FF|8QL1lmH|~5(;u)4#ih3~lGBeSWlCHCFBCiEn z^x<;7E$Q~4%K;Habx+EZLCrPxxa$Y~acO^{ihsDSwz$ogR~JeTwSHhP-M2CFOiHyA z2^-!MHJ9?5O~Cc9zvtHHHT_=_EBPy4Y5eC9G9>4vK1DU)u%$0b@AO`63BXM;s9H;= zXbN>LZuz9n&tiT9AFnQu&AjxX`hqdXlEX7-zm*2ZAH1)P-=xK5n~Yy+05Z6FG5H|Z zVsfIt@B9S8Ga)pGl3WxfCMJ%j?3s+nJGv9^fY9I3Tees!6AK!MV&S#CNKp$PCV5tJ@t6=r3;T@yfz=phhrx|d=UuzWe(_}HVM4ME!>`uJr}NO z_&c^xr)(Vp8sHk8pctLJ2ygN3L&q5#W9fG6WqJ|6QV6ul4!*0N9+_*@XYINOf#Lqx z19|C}DNyH2E9UM}5yyOnGr}#CibDMt*M&A;zIEsFA6yqj6Lk8IS(X|7VEkP5SI4BW zG_9^!N3W#;naF5H<;i=TDmqF4)&LsyLa5A$WI--=ROKkQ()iIjnVEPN=|GlkhMkWY zly=7R$sOV_iYnz>Krn|-o}yC$ZGGB$fZQxjm+pVUbwQ&&E-PJ>`Oj?^7%!s!%XOh~ zI3^+C693*Y0B>G|CK!Y1Aur0HCAjlbMNlfwRiew-GBTYO^UiC41XGwZ|59i#Z~WW= z?lCE@k<{0~A=sGAygUVXb;TAImjt(GEZThfoa>wOnOomTYV;Bv{i&JyaPF2~(5>X` zKU^1OGGX;(_5Uu{MPI&Ce0h(^5==M8v`#WF_jYdUF`E*gtDL$vS9S*1;auOc5)-om zgxDak6=oHc*S#Ro^z78UaBk}y-I1jA<8>kY>vd^$DsBCZURH7Qv&xP9r)B~m{U6m# zR|RSp+WyfuYv*U8K`e?f`Go zGH`c0{yzY_s)=NCd{zz(Rg!>YdxF{^pX!Kt>V88psd>lZFdNzReN!UKux{Rm*f7tw zFs-SAZP00RV_I33#(h{e%cIL3t+pc#OWUtyPY}A+3^Mf6iCjoRZRVt|`$3`S{y?PvF(SG*UNO^Fo@OOOQAbt^^wS z>ImA*Oc18U?YA=x)I>2tg* z+F1DccI|X@u9w+nlI10;<$an%W+_)|d!-9;HO67Q1Ff6Y2MIFc1NZx|+bem12$Q`; z!5ZgK|CACB&V=!vdPpR6aJuWQgA+RO2oq;}dt`DZx5v*V9l5=M&eis6@A!x=MAn#t zD`jln!9B6mC|yQpUZ&X3#^-0s*;J7o`KRAhz&D7bn} zgZ7%Moamn2gdcrp>AeSSVd4kjI;otjV$^nl7c%c97Ps|9G} zsed?N_rz6;o^sO`e~mwQr>EF5 zuw?VMmCb+nE$ZwRHG=yk)A7b@?-Ibq?mI{6aN^I|>RuZ1TI1*t9p z6fOQ&Xi-?PLYJGs3s#93AHInu)LiH2-o(@B3$@`r`t@ECQc`gy%;C9hEAaprZ!is9 zg*#N7&q$xUqTq1ryP@nP?c8~Dhd*Y(nIYb~GA=*)^*~~0l{v&nxJ!F1v2(!|GH~Vk zx#bhm?q+5Sr{_N^)tHlaq)m_^W#+PuD_a&GkeZa;A&KyVcU`K5?So7HJT!eaN@RX? z?5#!j-qmu^7@d0dDp4>gcpmj3D-Rta&s%${*fJQROQv}2AnEkPc7}1}Kr`sZ+_@_a zeN6^y$0LbS2%#w{wgeqt02OEDDYk1_E$&?-CtuS99r?ulJc=UXe%i(kd3Zsjl@D=D6)*XpDi73au)(%bhlCl1e8P{_#?a6AKH$k_ zS2=w3Ak~Wl7x#D&2ItM=9)l|K7PFmcFG=qVB>#1~7O!kGtPOR7MAnI6V|N)h`~I90 z79BU;Hn$Dh?4`t@anN={bwUzMvI9*P%#S&Xpx`V88$KErpN+GM%XP(Yt z__5EUr|SN&_Ow^87_l%W?8TG0ezl=U?R;I@HNpqIK-Ne&SGShZW4McXyuG&_^=CaW zdKMHUp)XWVO?l&R2Q~7plbbPnBkUe!Y}s2kDr%TZ9e?_z#M66aeyC4Ux}AW6_mZj# zlBueYlCrLNdokLmfLohGwKd%?eE4%~?<@w@66y3{Arh83cSb0`E7ca`4+nX}TKO3l z4e`_Soj5Vo^a3`b*KE6_531qvI-TL5v0j7DDA>aW6i%GR*Hlg7u-XOt2k|vbTU}TE zwGzI@iB~U_U~6j$rrgk|uQ;0MAE>KI6zx>uhU73R%9@vT%)c3=G|*skv3!YUzQ!@H zF$C`ZO+UlNB9C5(L5Fil6AN52-efKeSz=`d{R0O+T0y8>+tfiJzF>d7rt3)l^0>4E zx_4+q<2`Jn!gO&Wr9F!?v^1jOM4ROcIZ`)e(N$9rn$@DuY_9Qr;}08Jc|VXX2;0Jt zC5aFC0Aa4+Qgx}O`9t*Fs)>Zn@!o;AK2~2w-$;n9G-dyADrx;Cu<)0T+RIhaOyJx@ z#DGw>;Wp=tDnN&-(_1a@!utNTdYJH*OG z1W`HWR9EpfQ%}m)RlBSy1rj=;Vsu5m?3NG|?`hF_YkjeDk4o9En#2V^BEr>htz3Z7*F>;_7lwK6w^9``2HjoEkJa!(;B9u02&? z1uZ@RDR7&H?y&&m!xfTWW(CU&`e}CK^l$ewdi-xx+Y&ywsznX_)Jq&Fb0d^ZbT6yK zS=O{~Z+*w%uI*2@BWiCw(L-&MUr@unC(927{N9!3_4c<19Y+{k2N1|K6J9~~Hi+c9 z#&X?vD^9%%e*1#Bq36+;dCVEwr{qjDh>%jCkR`tua(Ig4EHo+V0F zyQF3aEl7Bh?!mvZ8oGc)Du@T?2>YwX1sDDvizj9ZVc|L@e7Xh>QTKbVoJr`~GzXVj zJxUm-Sa=CgKWvq|*G28#+e2~7oVaiqW@&MW#B`){SvGudNnD5;2}SisiS%95Xf(R^KBC7nkWDn!J+SDke)_{LQ202MA2UIQo&NJI68o8k{bw| zvLiJIQI`n5*>iaHMK;$R8+j(!hp=yXd0<;@|Jc_lB26^Mi<`*K;}J@1GqMLA>{2N@ z>ae1Ve|hy8t|C1>q^&^5n5EUm3whqBq^Uf>E$dZ{w(W5Pr@&Fy^pDfkEo}YcbS03y za5^45aRkD}>vwMbonQM!ue4LF{$QXf1z3v!7RVMN38@fe0^<()>AeN^>UieQWiktv z^lD-wTN2<;>H6bzF+>^)`}~GJi{p?(v7*ISmvA;aJ9F(hr&;Pm(f8Qe_ThCiaQ-H5 zi^8!?`mGmbwog@wg{LdULahqk!B_pF4`h)za?=IcFpac64ohww`S-x zj%2oFek>AN{TIfP)oIgx_pNBsU@=q7Uad?+4>`}3!b~ZUaFEYC%`DR7&vO2Y$C3l} zGF)>M_R2(h)dAr&nE|{ZqR`#^0x$zvJO}R`q!`3zAL~=CpvB6e5$P8Or<2xbxzWK# zo8m-tB-~wdz_Fshn{+k9kfuKt+K7l5uv%4!3N=^LMR7cwET*x_nZ+7%`<%Jwvs=xl zNyW)(YK)Czc7yF%)`9D4sD>KYn(eEIgw#oBbcmil{;>GjQAAP^sq@I!@9_-o{57Rg zQ+{x-0&nV!9la;i&b2pQ*JnQ?fBLhIUW)xIzdn)1#&+P0K8JlMz>N{`l*MPHqS>F_ zT68OuX4E}KaaQh&s@zHV&VbaaRt{id@r=b*xVB+nZK&FvV=AqSJU?mi%)!^7NuFl4`gvzCXW?@A_ zg@KHML?1XFj!r_ga@59aTN?ORlJUkXcaI_5Jlh6Ua*&%U(|`7bI%1<-`Iz5_tc1WZ zr&RO~&IXmZT(13%AW=%7nS?d!Te+#aw-l@np)6Z*v;!(wLz|Gy!OV$7iO4aeDr?ed$rQK|?M`_m zBTpO-L-cXThw;Z^qknqzEXNi{x6wI?Ku_FQ-@aWaN-OtK&G`(y@vLw|iG_i&N<+>$ z&iR{jrChO03o?D+j5&H`NrfhyJ;ZxH%2EwvrAp3^SQcY$Q!$x#-ZIEE3ECTFe_v9| z4i>~CHLi~>p4ocoI8qsA9kknWHZXw5B3t z{y`#$R|Q*AG3en`2olD8yB9flJzU0k*U?Hth;dQXKs4Pq>$td4!cHz!Mt%@2oRE#s zTG%mSgOH`N3g)b&t47~c2U}#%;3>!&kFFeFR~GE`Ie6(cetrSYh3U1ffm_)6RX&82 zjTIxZkp3YP;T4YYGgK!q0))I;YQb;vw;GGEHjLYbxnwvBO6$Uuo9?2rFN%pl>viAu zLi7kL<=4)c`r_*ZoGc?!MGK2!j1x)Aub_rl40!S|_D}w3Tk%>Wr zup^a)d>bHJ8)lDcVi9%q+Y+yavG?@=uaPc>VI&gfsMnJ0l1uu()64H3)n6IXrz7TT z1{@nU#)B(6UqW2ADZt$T-}Z4?djQUaYWoHvny~1u)?VBxh}Y9pP)ZnrR~3R?#KGies_a?fl8}f> z)?FkK72L769+ATp-|F@)k&%}8FG)U1h&DzKBG`lU#C5ycO~d zJ#kUR>P1r(=I!;b@09;!(<%rZ)9YpdDP&FOP(0O>+0{WtE6l{WzP~=MhCNI9W++-T zVH7Aq^QmLCfH0*Y8Lc5_!2PZ-h(om0>^OpbBYdyq%yP4vuGGtbyGLpz!a9Od`>kRk zJVz=aoaT~S(^{e9CxhdVBy!ByM^sw z6Nh-oso_do9sBUJ2lXUy;5ikh1An?J5vXk@2@jdIEQ)RB%1@Ei`n2i0Qmk4kh~%Qy zooyLq#i*j=&ASw-^q1`uL90~)$^Fwji<)>zj6QX^(aQ3MHMYLfzjOsep|f0CkM-_} ze(EZ{XRGIDVx7J;wpLcj{foJMd8}Q7V=t@vkkz_D>5L03cc9t+{%{B_Vo`02h-{ts5dxj(VTSa^6R-CDFAZwM=U4oZYIALlWJOZ_^cZjZHHl*srRI<* zTeK;os(BMI-fdgSc&*inld+a)4G4Q{=4;Q@5{%ncUpe>CNl{eaA{CrVk67y9u5Gk$ zEQ-^!W|`nF6_CH=E)z<{EE_T6r7TZQP3ki-KobxW%I|4ySw-^}ZM1Ug#2q>jXkw$L z5arUS$l28D(H|NCGIuH0qL%sn<>~^euYhkri)4I9M+`C007;Px`?nXWa8tJ!jJ^3A zBWN$Z!Ru=zw}>NflsE8Vl}N-`f-cGI@BAQ~1cWf_6ek|<7=-@7@EP&-rJ~!{n1wsG zkes$bba-BMvM5`s1AUtxvTLaYk=QOjEOJVCyJ*4o2Qie1n+BLw+QfNQ&J!r_Fox^5 ziCdAL&7q^;0MV{uR*JS=blbFsTSxvgE*ZoeQkljj#e&7!mPg6$1y!FV#6)u73#h{J6=;HR)01^+!(Xnd+X7Y%WEe& zH*M^b2S9pi)OYFhE#~)@!sQ9F(4@ciI-@q2!;aK0qK4s*^AOvBuD;0IGuQy4j9ZH}C;3y87Yc1Zm>INR3`(l(CK)M1G9-&bDa&!^y|ky_^+Bvb$IWlVbjRcjD&H9}E~93tmI&jO z)7;W1-zN)Ggr?WavcO-&8%7az)Pdm*tB@-cZ>GT^xFN{~q)E4bloyMaYN}Vm22}>MVeaO*TA@)qsjLF@(yCTi2@X9o*@SIQ@ zkKq0-@RFpoj4N20@*lPf&+EaS`SY&kM&CPJx{iPio0W4}XR7*2qFYjEeunBzJKJgT zNEfH`DQne+vN|YeI^8yGzhR&@6ZtX3uu;~X+*yJC= z`iV;r_YqWFRagZ<#coRoC=WU(p=BlI3 zb-Jsnuc?2IE@)~tJ+!oFL)6BXmuRA|T4!1&lrTv05gTE>b{QU5J$)w_;?}Kk(`7lP zmR)?`a^K$_zj8nC=<)4xCMuMw*n=ksoXK+=VJs4`n%~P8*g%ixm>Sf17!01gAL{Re zy|QFR1y(}$k!tDRQ|K^|qR)JQCNUQG9JQ4k7|GvfFh+UfSq>+;pJ6EG4l;j>*xgtv zU1Et!6It)yZ+tu=W(%$1Cz>G)mykf>gcCT!0+*!;m9&BR@Nl0DMmeEZtjy*gXU4u@ zAEe4rHZSTA8bT3^?PcGuG8*#n8@es2v*|@PW$rF*5m1`z+emL;M+WozIgmedqov-r zD3aAM)t9{11^ZYO>Gya=A7koiPjq5y7xv`9ADrze$Xy2;sy1+_`h9p8^Lsx(E2nMZ z)f5QBbwzx)mzC7+AL>kqeD)+6lHp|8wKLIj(2nHLVLC^p#k6Kob_};-MDD23etZn! zR$kZMY5IM==hhCvdsZVl-H1&5Uem31S}3P?-;Q>gDO(v9kM-$!0d{Nz(~VsBuEx(N zP_1>}JwE?=icwne|z&`KI_nS7vbllp+YnruMFg_R$|!cxDA zF}IgVOg9Hfk8#~^#LTVfkLVN+?Y7jlY2iZmcSX&FodglScREbc)9m3))M0gmaaBRVQrXR^-qalePO(A3 zSa(M$*n8bA&rwa_wv>Ymc#EROs?nz=0sksANJ__8e(QB8W7proSeyH{Ne;=XTj+|l z4%t`^_aL3+on*rF-Ie0E3ie)M;PGfPC|SyeC}7^C*@cIn3SX#`2E3Hncm_15fcJvg zP+Uj>u26rnx_tR%XVF<0guFO2G&D{9U=lA}iw=iL`A+@8J-MoU5loHC41YswI5G6^ z;mDmsNg@||05{2FYa}BI4NxW7as{CrFiQt2XXJdK7Z`IwW+5s6NLiTuK@={gD0FMjx5cHDtCDsw0EtA1;#a)9wAeb5TQ89-_dlU|7E1 zk31|&oZ?Vp37}F?v1lTdpYmQ=;0hqz$lzbz*@jkYAdctTAGG2joy3#6%{EFK) z+z&jhghMaPE+NX=oH8JC62q}BJ065Ce`^j=3q=2I(y8f4vgWYrEBh1G!|{m5Z1O+ zAGquEAGm9q^PY>amct9!8eTtO*Y`$W?>NRc=xA3Un~-S)ytDtj$>qEZjO9s&75dP9 zf$9vRu7Rs?tF)3pwZJ4rg^L8$-i&pm?`N-V`qRqpzsX%N?VZn8qYh&-ku<$*C01wjVVWkO89r%H}R)u}8eX^n1)QU7eCHG*B^U*0QwY$xBFQ+%^6p%mQe zI7oytAvTRbDdkBU9Hnb5>2RdO>dgdI;)VX2+p=Dd=+{0?h)E&V{K}BQT1i3uE>Y!D zgx6Iz6_qQlTvm($*fd5*Zy0hnP2dP<;ETySf*zj~uPKl&S~%%~If2kx?M z0+h$l;>G<%mHr5HO=CjbEmHmE67Z&u!EWlJ)A zUbM}$?*E?PyV>CmpH;i&M`(4s;a8) z&-?qS2)x8>^De59hE-}#ey5`9)m=CqSrBa}=jLo#GOSEK$1>Dn}}nWTL@0HK%tPvvjaVBM7c*X`1Z@hn;i{(re$9<1P4R@vWPEsp+8`4Rch+PiUTK~9R%GtAr zCcwPz!haZ77sVNeTYdb0+%AWp2rc)P-&f1IQ0(+xbEwAMk^P-&lLksp_R_C=Sv9Cj zcJ`W-myA?66+SC32dm#7=)^^nAC6%+mDA}l+PS$CSpq6yhwBeTz*f~u%zLKhRB$4# zaM98(VX)?S@rtWoaD4cI1n~O69?7FbjP6bVvj~My|O4+!xMGH?-b9ePbVc z6=f7bQA)u+7!=H%26?IB6rok26@w7o$l_M7UcW%CpJ$$7#SkGAA*Zp0p?z%WuV3mM zCYce={YxO>wSWwe95-})Vy=GJu8`OiQoLww!z_QybTIR4Hs^yr#cIOq#^tzy4(URx z{q2^umC*&!YaoY~sr+>iQh!@UWwT&t&tS=w^ zWUP}ULjSk5Mf1tEs=-U=MWyFIy~IV8+`di8!^c2K$7CUOTa2=%$d<|xPrHfuVR5kGo5>!~DM`078IZpa{(-ybJg@(O zyR37KM`rw*`zCn{BDO96&Ip)s(4UAzhO|AT@fKF7@-xzV*CEJ&>;&xuvbc=-Fe{=< zs8*V%0d19t?3&|p?vo$89RHz(4={C|#$e~;*)G4P>&grDN=ZC4Y!-izn4vKOKW-gH z9RQ_|d(qlrl~)-gS;>f}>{?<*dcFr;Ud0L|z9=xmdRxi}5w{n64134r-hoiCjO84q z42~A}eI_*uDWt#x0R%O<4c8QE)u%9`z=d7e;bBcy{G2oOB~85dKXDWnL;xeC(9aP& zJqgk;I*Fon&icB}lLerNE4Qsqdjh!bwf)(RHDEtqzN0t~3^dzmGHuza8&=vlwa@M- z60~&#UD@0yK2?3YNafNEO)Xe=*_OpohQxErDuPi-Ifr;j^?gz`ah8V#d~o_n4qk~o zkS3{jHk0^neEi5&2|f-0gfewYK`orQgB8$JzKuM*7D>~ln8w{|r`)=96L+iUSSI1Y zRJjA{ZN@S`iyFo)nP_oa6IX?i{annhTbcW^xB9=ByQdgWqQ6hTJ#F{2-P5*h+qQmf zYudJL+cu|d+qP|Q|KHv0W|K|!ZnIaFs*9?m>Qv>NI^Xkrd}GLNcRLGEolqlxCOwz&vf4dAY=L+x8lN?2jrHwXljnQ z&x*`=-^Y1Pdo0K*qP;*`7!=RV`yQJUSarE%%r4j3od7Y6T+udFd$%V`TcS>o}xi30{a`8e0#V*M$Y_eJ@nA9jiSKsV#cjl_5k zFyzI_-xM4lF#UfhkGo8SC#P4B>h^eGttA~3vEc> zR{$&KbT8~(Ll<`ie!MdtEQdV0>=_mu4u9Tac6Vah)sr*I?CO&$LK~ub*nI^czsffk z@B`i3l>-AqIdF0wc+T>+(UgOC%juKe7K?in6BUTxcQv|<@*dFB%82z!1W0i;4kUN$ z3!SwI=PAVUXEVdu#<<&wDO=y7O{GkH=Qa@svB9`_XU-}HEMOq3qLiw&Vm#z4X75EZ#?qUT2&H> z2PO@kn79(wN3LEAN48P9N^Q;}lWINte-a=p5YDKbX;xi5YX0#*B-CwAv8HuanRO#q?*WB|1s*`uA~o+w|J;lkt33O0^lpwi%S4ifcr4iY%v|6ee^<#QKQV0y24YH$64X z1&c{yfp0r!JI%xF2(5n43jOSq^RASKh1+!K<6e*|4*yA@c?Onke?y$7{T|;OFes|m zvS8NeZQ5OlSKLqu2U&liBm@ODB$8rf({W)f5f4YVtNQnRB~S}}ZvZ2YJ_aZyaxE#! zxu{?`JWy+?Zb|QVNwJBR9voM}V)M0}E-w=|`ZG?cXr$}+5U8i3mHB8_~_tB=4$)wt3y*-}8(M zO?00cX*6d$L8#w_FeT$*$(%E=y|uqDC`gQ*I2oQCr-UaHfcwrdm(org+cihIyJ{pl z7@&tHzEh6$xtEdYYSV}jHF7nW0wN>ieok7@cl;(BJRv>p7q6?mEv$Qvfv%y2DGtX( ze9^&qBH;$P@cQS8iQH>a+arE!BQ^3apR~zFKwo?yUxdneGRsksh z8P2$~C%;*DXLNBtIcd=dKP*AvR&|7`^Y?aT{IN-4FZUyIAFtQf1vLhsUdEx#*|_jU z52kW9D2`;7peIO@k!?8l?JzjgMCqYvca?)ls7Zz{Cy_Zp)zXfCALL9R|*k2EW{ekRm z=kLN1V6vn710@Zl4Go8AsCy7q8T3<{dl>AQ*Y@D=+$@-9r67aEb^h=T7fNf)H*=E`zbwIFv>L*|G zm@9uM>for%7x$3U!C%=LbPUg^%j+n49yD*K_~S4zq@c3(_v%6Jz|7AB8FGX0MF@Eg zxvbuSNpV4e>DT}P`Ph45A$Y>xTE8heWRKS*PW0>CrKduEm+z}nhbhu)!qNz~-gZz2 zxSsxtL;cg}?av5C|8tAEXj?(ApsR}o@~BQ0@6J-&rS`uFiYZmwtcLmGjun32%xei{ zqKh9rm_5t)qB7bNN|>R6=?8fAZEol=9%wt1ic7{p2^eN&epSs{A+6!$Wh1r>$Mn%PX8cP*2hM5JGYbWn<(pJiJqyl(G9VF-tV49Nu_2fDKWeqq@ zH_iHB8i@)dykd{uoIi2dchb6rzC1byVMsb;ut?t#30`A%?g;y;*K9)*-Xl7NGnW1Y z>7%xVSk1b)Y!6-IIsQad+ET~uG~h?l5Coz{dMR?}lb|0?NfcUjtidb}Gu|Sn*dWGM z=q~2?hs{+vYjI-v;lXM?EE03@0e++>^0DSAjm!f4m7wg62B#1wJw_rpn;`;nx#q>a zw+M-8uFQd_XzPzs6hs2TJW16U;1DtQTKOns2-iMo_*EtCnG*+?2exAVS3y3h((+k` zEJbXOf>L52pe(Ccq@{P8ckeMblOe1)5HjMv*k|O#98^ztreOXvWqw9?6rQk|j2%j% zEUNQ}JYwMX7Sg16Eu2=iJn_3FOJFBSeDoY@hzH$NRfugfWtOC3mOu^*F!bKl4^iU%xe)1Dd$m%dyY8&A>KW zi-{<))L{ZwR|vvhB|1Fxw9>MU^|%=NK`^>GO?=0@AL2Dra#poFYvg`=T`xzqQ<}VL zP{KP%nSIfQ_=9VEjL_SaT4Ok0pt}?$&{?amI!$i_vqrPnh?qB8AcRK{>&dwebGIDQ zXmQz|FXT|IFa|Kq(xVIZHFep|8b#W54P2VK^dQ^u5L(kfTvewD3w)94bRG%y=RCsRT}0&p3#I|oxk=)KckrY4Tb>(TEYzdf0Vk|{wF>4 zzoagXpJV?oq%QXVT!)tz&e+E2N56t&{?GpZ=Tg^yZq5HLb+K{Kv;AMBt_`*I==Bjq zusil2sjI4IuiTC7H)yJkEo=5b2TY9tKK)$}B1HtN2=qU7rq{R3a*O!(NM=JaIt`3k z_jIqaYEGxK1sA?glZD}@qxZu}7axYP(!)1Whj?|Gn;3{X1ppE!pfq_s18kb@k1g7i z0YJM+8(`7aJ!^tEot$GAOlJBLjSUf(ZkPqNaL2-m!6xkrVhv}u4Ds2oXPUQvwyu}L z*QL~JWuv`(+m!xk=@!zU%|Yd?opOEX2USOGk^!7!?U2te^BrfOpyR_{fA(Tb8ku== zlY44k>qNi!IH+9I^*x;N6CrVbFW11aT4@r8e4_Pu-l2Ep{Q>x?v4u$ZoJo)LV`v?M z%bY>=K!>5jkom~H578)8GtN1z;u%a)inNa>kG6y5`n}G*#%hY7*^r!}y$WLDhiuME zGQgiCvJOZzYpTAbSc*Dh6{%2tbXFVLb7T!s(M(3IFLw|6W3^^`2QF4p5j937?bdFI zhx)W%&AMGAvv!y!Y>{^aPOBAIkY!RokIJeIbQ4QT#eitHJSxLp!MAsfAsnQ{( z)>e+qy8=2zs7agv;;+xXGGmRCf$d7yyYt}p_0XdaEi7sq_Q-j8i@gVJ6|h~o+^)H} zp0A{`xmyEg1MjHdrCfgsXr7_Myb7-E;lsrp2R~-oIG)`l@frOC$#hrd6n)F~Cl>@H zUVk^nS+7s0a9Jdc52Cw7Pv+zXOv-PI(A5(A1Y^dqa4_KZCAR*yB3(h%$y}kSzOg}E z^q*=yRC3&QCD+`~yyWQ#eZl>ZjT1_mAA$z2dx*BT?<9G$NN_Q|;RQehH1%^5ijc zzrL>*c*cH|Fb*u#b}uRe)6K0&G&hKIOX~_DK z%>{7;x%V#uNQ_mw2_QpR9QNd$JYv+Poj-E*JJDoY$YaQ#sxnr9zg9r5^J?)PK_8yV zEsQ5!n9Vw>%+sm_F76d%9=2s`^v6!Dvtme)O?_#v2Q8O#bN;a>wD<_l4vvdxP9*3#aX{~Hf#C4Ktj1Y&J%r0G+R%TXmcY@O zun)D`<%1tM)v8gIfLy=k{6_WmoV4JSFfrl+p#vuO`5q)~-XcsAvIxoLb# zz1AFdH?PFuqPXVZqucoZ5thBcF^|St-Z)~n{(z!djUh8pU(&?BDM&ceXEh}3G)vL7 zlfMa;|KbyWl-vUY$|*Q=y7Q=y;$KvMH5wX7k|SBGsC&n5v}q=pQ=!6z3A#g$2)-32 z?bwp%%OoYE40J5}WDMXu^(3SkoAN@vg8Zh5M~=o)9*gVu8jk3M`7!}bxlHQ^VG2H> z2*F+`8+oMVz`?X78KnVNd9JQG*&Te+L^S3QkL4US1-xRVPI#Kg}37i7sT;&c2e$fu%eA~r59_@;Q3gZ$Fa;&c3 z*cyj`$QvRg@FhKe=^FmRg!*LTaxuP*;GIL2e-*ea!d=#tZ*XbZ8l%KW?b`=B2W93hyLbK;(lleja6anqxj*f05m+!d-%cd0Qe#M*2vvb6f8)Ep+b zm?qX8d964KWZYVdy~*0IuujCf2N#=BLsiM=NW7ZP8vPu>wEA*#&ZbT-50~N_#^b61 zM?dIyszxHhEEhqh7W@5nlb!J|skP|Mh~97cEI372_qGh25p?_g(J58c3<~F9wo)*0 zY1uoqJ=&l~V<)yVcJd&(r^n4+M{kL^LDN9Z$8`@JC}#BpZOM#7(O`>%bu#20{8ee! zpHSDk!(~QVELs;tZOCN^e)JHV^P^ih646;y^H*%RuTLvoX$Gc{k8v^aNX<;b!tv|p zqFXac!sPglM&EYkIYe8PjxrLkLTf4}a9{UIkHP6HS!2KRfiM?|scMPB9Li}Sj`3s< z>asK;h&|A*quZ5g**yDy-SHHhb*P*+U)?T(7?-Cf!DmMl2mJXr*}}NYeTPsc zExmnQ4$+4E%k<3qB{0Jw+jHkklpRzyjpSEB*GQ$fPrFi6LoC@C9iF&LBo4MgT2< zK2g-SJYJt3k6wJ0GnXD~2`H%7w>Ol590J4Q$jrkvSYX*jy0JBPv8sjAg8G@F^Z+yd zP8NqX5v@Y#Lm)fhYm-UJ-sbm9EAztKcB5O8{h`3kjUedExI$PMAU4Z=bX7Es6O@mO(OJMcA%DmU=)^uJZ&C zlI%HaoFdLdGL;fde6DS7gN9?mH6YX)Hq~2a08o1PB|m<617k5hp!5{ygOKG%h%Wq9 z=F>Kj!1!sgyeHy~q32*N1tnDT?oI*z$4g>d_aSMqjZ8iaN87sEh+ivb+bj7O#DU2= zMEDYG6}x8I!TG;~Nb2%TL1CwmvmcH^5=ta2KZe{d#A^yw*-yfGkRO!KWF%=&{Th6z zTRwuxpjLjpzN4W#Da+A_s(2kIPAhA(l0HO)hFTPMMwS_TFw_i}&37#-EF44exm` zn8;cTv74;QyR>2UVp51E5wrrf*yz-~6%@2ifHF_aBHUy4EUQttEh)C^!sr(iuFJO! z+(ar}M`DdNE7i*%l_!?(M^sc3c@ZckPJBU~WE32Y zL^H_@gBxL`lkS3sk?HCJhG3lios`*ns0z^AIzXkI$XHGU4%A6f6m>(xJkdFvjs_!6 z|D(H55#amTr&mpaqqi@8P9*1<`^VJ>32%+r-?ZxgrNLDn9X#((As}C$Kb9IBgR3&R%TyZPegIsA?^pj*zeUey zYN(YLyt~Z|TfXm?kC%P9l=tf`U6JnPQK+6ji2=|g#}w>+z1+on9JQ?h_L1W0dv zbMHO4onz1VhU1!?+gLxY%g_D8KT$p{_iV>4kUwA|KEpHI}PLGHw z)_|ggw?!oG=HW~5sb}Ckul6$jtfiK8=pGzAU}y`tc-@YUxMSlfp2N0LHPVKEPd8LG zG43<&XXGHde7&1Ce*!ourA}T0F-XgWGfudl`_3j5j8nDtbd}}Fz_$6p{siPtS@dN~ zB%N8zxG+P=XL-xvU_INKgY9G>`(TRHu`uZ8#WBR<_75 zRUt#KqL}oDC?yqFS4=4`=k(96{T_58^2^9CGz+uu`-igY^3=Fzi=^+yl{^i@nkOzNFK3fRNip;Tz@ zMP-_j*$V2XyHDonki-SAs5i<$O8#3O!OdR%tA7FXqAZA!fl3M|*!{re+D2PJEa|NU zARnwiOPTObE1Q{XJuv6nOSbHawHQUKR( zsk>>90=i&DGf22lpqsEU^mE3BX_DY<)vpp*IiiK0e0M(cmE)PwFU=Gh9>fx)f!;6`O+{`B+vEpCT z>H>G_^t9RB41+3A1FLyty`}7qDebLfgDcYM{!!9sxO)a6Qy)X&1R=85vQ8%(vnV07 z{h1hvGEiq+iz0Y9`@H(&Akd-}t;5d?C+iKk8KyVUc1X|d$4|SYAW0TQL*`Sdh>6u< z(0oOQiPgEfq5_4`Q9v;~l0nGoM;!D5P$uAiCJRzI;bg8-ZpX`ej0|y(mG4>T^4djl z>5F=I0wQC%t|CQJ9@aKxOe5jdFB5n9gqDnwmkH@0ie^Op`fx)LM)IlFC_pSdcd!gt zVAtS4(5hv1yo~uk6Oo<3K#ACDsn0&|0MAp-U z-2S&KK_wpk76p&H`~Z(^6om}|uLEaQkWy9F4P$9ON&T*Jk$FVfeWFSVej%Z_^{z#GC}Kn0KGCy z8QslpY=%5qb%fmcDUA4+Wfl%zw};DqI49NtxOJ)k-YkixaK;?IR49oGx(Ik2nlh`- zNKbz|M@n)q$?T{}(jvCA!6^AyXFt%g+$l7g=bSQu^>6CLg*aEOe7Oq|bKq$?TH!{& zo5frJOq=kjwFr*ay53D7Bb6`O6@9Ok*X6@4oYw#U+mK)2$TTNUjD(Q1Ki>GGL>rz-kY zoa0R%>_Ptn_(NXg1q^3IV}2v+*790{m3s;iJXPzA1cfGfU=Kf(L|Nf4n0n?v;cOBq z<3NHE4J|a}3nYwfJu}90W033%V>7X9z`|9OQQb7+jaZ2rO+bT7eN)59U=hZLgvA`b zaYpz=M;!Tx_gJeK4+LS6j)ezc+y;Wce*zA+)+EK}>>rxxK8}G24Mxs*KlDurU9-4Yh3PV?(wY5ehQVVkP>>u7C?)tK8KHwMJZ$Bqs|9m=38mZ-~ z$veQh^N=v*si`^RI*b|%Lrz> zGeVT!*450<$h3VHXoYao*?c{SmJ+J-wTX>+zVu0aDf=kFQn2%P);W|qq#aV9G_~9( z&20SnaJ)C2rdWLAq49^-%tndKk@Z!JGbKIu0G%)Kw;+TVFM*0(qv*X+7z^HBy&?Mo zcgzj*)nHCX*LJgi!+=F&68l--CXfD6dx7H|mk;UR1AfLF5K5+~n^?KAdbuRUt0WRY zMK|+1%$xtx51217$X7N_H*+?ozWz%tQjiR|2y23z{4U>Xcrtp}9mMLu^&a%>en6l#VK(^%_^i;JlZ(}7(7BDzVe|TD zeFwWhddM1wUuru~3U~CI&~ECQSOT4$%oHT{;OG(M3*Y9uLnI8^L8O{dEr@((Esy*{ zXwq-euxWZ!#E>sx%;BX$Ewr()%Q{)Y;{k>?ZE-T^@gp6g^Obas9;dvlas8Lljm9F- zjuPxGWo8e5s4UGjCzE-Rf$XxME{{q)W)N1%WKu(n(j`rtcfD{i;kPtcMM=ZQ5BM98 zBUTOa%o!v*qwvu%RRGx?)s*&52hI-+I-_(4mfa8I5-#$4fGiCo4!DY6GS=;QkElL( zQ6mBiArEJ3@NPXVc9IKq%sLU~(!_ZemrDFQ^F>~tKMqj^1B(RQY!t2#GR{rjP?NiI z1&QXYglklRNR&$?O@W8e!V!`peI%{`Wn~uR<a(7LfPy?!CkTDdkwhff#jp)2qOi5a$3-#ImCU{S{OkYPEQ2T))5`&!cgm5&5{v9`eBr|4J z`BWvGq52^II(-3V{I6su(?&^*wT&plM`0*XO(&n)Sh)h$Db(@kYWS@9t+HS%n zcj)zUTYp^vL|O@cC5^!E*%D7mdmz8bam>mOvLS4+X0DkSHDiWZljyF;Eh)?9y{K5^ z(Or!gzC$yc_^#XNg$z8QvR{1Yq`%;s+pW`e`jF|iW=$5qg9s|9AviE!VxUz?z1{- zheT?{+LI~k$=dg0+Ti$~n`c&qZ66VJ!qsNnB*L~00iN@k^Cp}nWXS8FaO>ld7dy9- zu&+IkY{o1evlfO}cUhfPZ48Z1Mb*s{)!tZQH21S6LZfpIuzj4eA;ATDz(N70WKe9* zb9S%+p@t`vQ;5`6h5JL2g3$nZ2SXAHHr1J*4Fj2-Xy(C&y2Nx;5@;5`nj>sL;r9S1D5T>pio z#J)y2yfo$Xu5l8gW421LjyYM8sfzLQw#0cB*22nV?o(;LP^`<6hoMRDFaSPWPCxdC z+bR9wb`&1Kw3%ZSo+NJkul9XGchT`HFR4F4hv!|8d<223zkscJs=pPby*pc6bTiJ$ z;MkWkAaO!SPAN@n07fjE!%f4;RilD^A?a8e=07Q;Qx$)V%~-dGHXjo(l%I3K=XRVNZYm3Xj}-T7PZ#sTOJ)zLe|_UPa0_u z!rx-oS3wCmH`U^Wm6O>;^TnC{+d#yob~NY0;6X&HCt{h952QcX`y?YS)R8%s*leU1 zTstQkF7Yjf0tiLQXXZyz358d1+U$f&y+|a*WM%~vxbaZZ6goE)`0z9%E7g%HmL|ez z6!suDeY`s&jqZzy&|f5j3O6Tc{~3av<|L$|V8|yX3>B1Fc#0C|Hw;rMZf{5>xC$9$GKJ;CuajQP6i&uCIZ z&Fpg*l2AH9slTheJWPD0Wiq}_m}2g$y!KoT8HoETkn6^Te=>?(E({56^w@?DYhE|j z3$Oh1;Xm7>Fp97>qM4wt_s*0y`5@u5@4}cl;$9@@J?jlYP9hMSmS>yQ*^VMU%rs&K z6R%d=f_{D=5Dis%w+ByIEr;32zEj|z(av2HjP*=IL?D)4aYgeRdGUbpc@e4syuT?qa9 zbKYcd(Mmi)i+;^p1X>D~UnzO{1}Ai9*2g$|WQ{Q2CYYH7f>6)d!gn#j5?<@17KkHpLXMfiFzGI0^He_-t9k5oz8KE@n^eL zAW_QLPExx!c8jn!2q9j3tVOI81%k{%vWZQDid2V8Z7)G+vT#W?H|IaRsM&bB_l>1Y z_p5Tb06^mNLV0QRF=M@Da|vt#WgAuufyY5g8dFt$%kHHbA(@SD=wGSUW-X40hW4ia z{iNOSPNwM93QrHhU%pJx^+rk+#LGS6n|_*M@{V&e@!y#0a&>LJHrNXel|5$2VT{6M zo=ipnK3ZmD*2J#CE7}2JohbmR^6Fbq`Obnud-EgGdu^lfHY@~_$@5jRmC28yv%a5> zC&b9z)ALSH*tmA6jB&>ER%Ek;keIx0&-~j_ z7BE0{1R!LUqk&v(yF?!Af2}^d=Q^Yg*xYl zzzNciqGO#Cdw0bbE5?v!@T2I=;t_QRA1kj`?*vi!=y&)-k!XbDM7O-IS27G-S#r7; zUI4Qt;HvZ1bk)Lq@>K{hG_#~l$3%LKBp*?=yEcj{oGRFp>___lC^}HRssZ!8^s-nR z7G(dW=oIrDUG_Gv)bo=G(QgtDs$zjQjf7ha1Qo77!SNjn88*sOj#9&yYdR{f%M9UE zf8Hs(>}pxjE{V;lR^{s2c%?)f#Fm$qPKoUE)tS{BHP=)%&d^f5m&s0n)?ilRzO2mXkc+IcYbdUN`JP-i_w!Qb zKol&SdU8)tZgGjR5SFvXVwc^YW)IbH2sx!qE;z6E9s>98vCQ)s*U72A9e9NnV| zUCFf?tD#CznH_1JSLwG*IZr#)3&yoV&RQ_Ti8vupJQOC({U|!pT`Z;iWyoiINueX# zJ+SqE?$IZO73n)i8$cJxEpY2_P#?JBl0G+Vs(BJ-#Vw1op~{coXpx!Y=X>`~InwBs zr$#OC&zKN;kb1S?wwZc@Oc#m2nH1J7=&8w)r{kZlXrn8KQG>ehlVPkSbLFxdV#3{F+)El&!CrzwHH{|KBCwh@X9K)i#jCZiJ$;Gn>8osj((q|@Bi+e=GW>Ipp(dfRk>Pq()}xvXx%0ed+ti;g(2yE zYVY-1t>p>0)TFk9Z92HI1JIipmZG4G=nVl2%`Df1wa`@HIhWjQ`QF_|y7MXbFb<+^ zLZUtZQ!AM6`j259(++Bmg9HehZt2LJyIhJt7K5ql&bCiq>zqt}qtUK|&&u{p_h!i^ zsRSNZ;twN)Ii(~SVRS{z$xg<)vGOywi$E_|4b(r|?&@;eaE@}l9xaeewa<2;!)gs` zlrC0tMIC3$>BARnO-yMQnYixbb3Pa$_sSa_b4@f1&H>KlIdmCp9-BpIaO~lRjABEu zG7@=MBQO-@)DT9DvBDOK;6C#oVJqPOa%!4}MMXANr0T1$|#tJk!9GJyVFuIsnLR%m$gzy>zwm5?TAnw zV^#uz{-7uWWt71}X<#nvxWI2^Vf3pcAj}I#cJm2jB;MS(_6x|dB*g-Ci@6_X$6`1? zF`b#*a70;QONXi?`#;W3yR~y$BgOs1c6))?Ipb;XDl6|T62r%9JG~#3Lww7Tr$qT% zU8QY~&>8RdE@jS!Z3P@oj~O7;r603Mn9!#Dk2FYtB@W_+y~6EN4`x6OG~Nje9A2ZW zam@PbtI6MO6H$5N2&Ct>k#fLGD4vUse>hQKg>?N(Z+RrrN{Q@ zVNm+ngE&v+{22XyQ~VA!<>XD^$O#HV1}PS8YuD8G2I{ckqWEd;+L+2uQn8cP?!wB-Y!8Et-NB)vr`JuW~}G7 zZuI`IE!RsIOA^#zt+R4+$m)w5U-L^?Yc}~Jv3tOiA=RKTJ6(f-y?>?3QKh;jNM=23 zPcx63GDlJISIUJqj~!Wm%%lqICJlKU-E6d7Bu`dLCsZqHjL71)$c;ge z#7fAFoW@O{=t%#5a|@=Dp=i)S$0~1%VMQ;svA)aU@OnLVnt46wR@GH#`}u0$s2H#X zOk6v=hrwUr()Z9?JEU8aX^Q4AvwBk?2~^ zjH|Ju)#c#SmTI*jjBv+b+^)RE#!Hgcto8Lfw326)m%2u)Uz_4O#xpYU(W&AG+$y6e z`eMmwyaEF1Bllg?)DsO!*tyVSN4{Tut0^ zC!r0<`xhA5w(TDV!JGhMcX2KDOc9*5qnCCMlHYlvD$pdc5t2E5U-j+?R8voO zeou%Qcbm$}>lmGQ2yjwBRv92x1lmyfZSMT|F%!IqPddm+Hu=iLYs#m+%w-@A+7?3} zbMfV*bAsaXaX>Aen=enT;e>@-@Y9W(-4Uik4zo|C^$Cx0MzH!xtOb(ex7^*=?UGH6 zbqh0Zf6>UqP%0WaP`F~eSyzao6qcjWE zL3~5d86{;vEb*=bhIJ2Whqo^B^dS5Hy;PYY{O#G*4~isLk5>-Vcm{N`TxxR5uA7@$ z^@*BEp@Nyt!v&U)J0G|6W1r(Z5xq*ss+}t9V#23Ns$6cbWTdJ@RX}Js5pqwcQD#9J z{lQaN$3}ywdS?&B%VA+!HKuuwJnC4Xtd8|h%N*3iKaw9NT@mzJq{>7^r~fV!a~NB2 z*^A}Rxl{R7PbBa5U2vlry^9PYoKRtsDTz<(Qsm!au_lW6adQZh z3el+_P6ck@v#m)C6LTEgY3(|YY&X;$DiF`Wq#Xj-S!%h|QF%wz5KF_EbV^E|FB2&f z`n9Or`{Yr60g$sQcP6hk<^}aEv)RGGMFL=(M6Fet$z0C77yv1R&v1i(tgMEfr^@td zXQmL(GFt^Gk-@n_itB>qb*`tT|9fE*oI$LtXr!Hy0aiFp9zYRIJW=b6|5HP0Zv}22 zp7krN=Hzxzdn203(>e5^nkGk5GCYYd-VC?%d*|J=+hZ#+KdaY$85pP37SSf>_z%yc zkW(h;y>PAF*ZpDLVN}pnXmi_m>}t%bSF_s0;4xq1e#4_Rs0BnL^ICy27Bje%@GBf( zUCNh|AeGQYzp!CVkcLUb9Vu8p;DP}VfyFu%vHu2LkBvda%uS2WSJ8OmipF?NP-FJG z695oJT-X)F_nfUJrQ*%x#9ps5J*A=is(!yI3tb(jky?wrXR7!!f=$7EWs0KlX z_-lN+sG7+l7j{}fB=Xto_j)m|sJ4_)dPscf_y+BxarM=F4jn|uV+*S}>Q@|nO>gEs zRq^gU_WA&~*EVOZwTy~0NIz3@d|108Fl=aCDrPbVupYK5bY89PV~4=Oos`w(7olN_ z3?-;ilg8;0hwNA-G@re1+e^o}_gts7x;51`nbCFlV~$e;pa`Ce@6!oM+#}Mu2}Y}W zwOWH|xlw1*$!IYmp&jaA+M2C2j+Apl3r~HVn*mLUboQP_QP;%fIf#Hnf4;#FOx0yH zqFxMv?IuMgNcf8c9H7EywP2*@LK5AMVv-bG_-))h7H2tXpIf6ef+y5V*n7zxKEwW* z)z;0Rj)bpn(NPu6+EpJBGmy-`SDAmv!l5=9L(sSHDAgVr;doim@l_0n2UETd+zNk_ zeVMK!2#qAgO2=U(+o;wdvwLiuuDG0CZU?lXfd|spo=&mD8?(Z9n0VtD!R((kje)^G z+h+%oqT8H4Ij;@1qBO5A6}IT!+!0%#Wt0B9+E2K%-h3Zv-McC#paF2qB_q9Wgtf5l z=;W(KD(Ex1E2NsV$~%)BaCRPeG_WEcXEdcbiw8ZMZL}UgM#y&1CNePV?mbkyphZk3 zC)u2D5!|la3nZcRb*OyL)f*dMN@#ZfNSBGURA12+Mo^PF0B8AA8*f;MMPs+={h}b{(JPB`G zg$3C^qb?dHrkksf!pxK=73A$Um zE(bb=O?H*(R#8Zd*4uC|dEv3MN4$P(*U7G2>d<)}UgbM{#PG4v`Q-Q@~Z386S^4 z4Uab@8_h2wu_KkuI!Wfv;WF-|zwNIIux-9%3qF!?+I58tsM&RUN|xz?3{m4rIB5Ta z!Gj=epRVE7K^(`kL@dVaEY|AaG&8W4-O53S@%i4%+Q`w??p^1!+4B#3oD1Q(lsbn# zTCRNM-bY`)+N|m<ep_KbO+N$vZgb|P>dD8KIVv2;sP zTs~>fYSc^?QnWAmwXZcp<=E7yR{R30X3R%``m`n z0`V6_|JRYZ0pOkvcli`p?Pu~@WHRB9ml2kLEu&R6r$w{4)1@E1?7+`nqP;#k*pN#wW*qdWM&6x)XFs`F#@3&gJkt8z6Jo{g2p z#hLJJ=tH!miXG}N_qi3m<4SdXN23xc1siQf#9UksBL0HA-E(P+2j7tLg_|d>jrF7X zx_EdN3~0>972j3gg)5L4ZizZ&MQ}+^Ewe%AG}A|usi;W4!Y2@O{8OxEBQg!$FjEXY zwloXuA*|CcNAZdH3rd(hjT5o!vBsX3z-U&1D@F+NIMN>$@Q2gJuU`&X{Xj%99perx-5r&APlD9}cC zA>0k)An8Ici1d5U(SiL#INFvfsfu|PG;w15mH!N?%oi4>^+QfyflNCc8ydWhk1`UA z?nt9`=oBIvn6FHM%VqZ=Vhn5Wj$(>npXc|H+BER-)59>4W2?FfIV((@UpPHomM$&1 zkuYkVvVv0CVjNZ7r9i*Cvcl2`p8{yG0-wU3YEcx~s3=+T-)cf%Glj*odcC~ncd8%D z&-lmKVWNijrIULZT}VS=fL!P)Pd{aAl8Qlei5>ax#!f!{XdzbRp&cBw7;sra@ePtY zA=XgEz_=T;?@fif@6UUIr>3rmW7cJ4WK2(vbbh2cw~2}zbwv^m_KTl@fVFK;Fp_k^ z@hjaSliPG9Y;Z5~f9N?60_hGAVKa%mrA$UqUtv0aS**=Z7W{_W$_=eJwwfY=K$dFH zX7iA!2T5jWkCc~GsPt|uIRQv*jE7%sEu!Y>*(`K#?W-P4^?DBTgy(wL(03d{3bDuk zrRPXt2RjMk#zU-Fx!VL5u47Ox3>&d_P&d`WmD3rbNs}8x8xPGpXuFe3(Awi zJfsezkSnE9{H+LviC^8XkZ#4YXFsW3m(Ws3WzrGM%`CvISuKRJ*0^PAVvKd~DUFQG zKC8wm;)Z6hWD)fHZ@k@Oj403gIQTQRZTpPRc;<|4+qP}nwr$(CZQJ(F_ul)%?thbg zw{I%x>ZDR#ojjecr|MG?&G;>#%%HiTo3yn7z;gzJ2@VPxNw`#&8GSfZkvvMwN6tRH z#a-}K8lhE2aO7BTou#~!5f6)s0}WO_N9w%n9Y1_dsI{iWj(D1Lk0ZQpyXMF+dexb7aVU{%Gkud|OU5iVBGeA%5p9IGz%2cn9wUryj5-x7W^aqKJis;B4 z+Go6qMbwrFfu*)+mr;6&id9Hu9pq~-PcrzWscuDWENMZk*Y~C)aDa}JdD?uhY~aqz z`;;4+QR^W=U=d@ti$-jHJ3a1FXKPQT=Wc#jZfKF|c^}Am+idhhNVvS7GFUa%4zDaS)Ha`h1WS466&7z8jl)FItHl>9Y zf;BPI=*GUPHRq>k?Dy;Lb8req?!N*bCFrb2+r$e|K~1RLdFfBD4}yS_+wATVKAsoQe{L^d#&{UG zJrxxk0wfwB-)CfvocO_#aayq%U>6;Q@X2N>AGWE8Hq1f^fInpFZ@Xl{N_PF;bfE1D13%`P;b^wS6LWc3P_}c09FD~4IewhvWMu55 zSzx9wc`eviXiU{^iwRZaG{_Pg3thlv6iupRN#<}(e46TPiX<=dyy#JsBWnvrrI#M& zl$kCS^4^>&JzA=rmMDN(Y|#dY^KOg%Z4S^$b;9s65)8h508Zya4+{b2 zl=x?!0??*g&q#^w64Oy294dd#Alkn2V+yFz*2Dnegq0$M{6e#>Jgb_4@rPuKo>Zh< zqe&duK+El}ZBdu?t`EX`Jfo_W5)`PkkP?O~!WK231WQNQ%rfScFD4Pk!4d;vaI=um z$vY=c$RrcKK3c}+!;>Smc<&-=xvUU$1s1em+V8F~4#IE%S4NW+jX__{eU(OB^U=zyLcc zQRcOJUmeETXmOopn45)FX+2}F()o;9v6_DVXs~I{#O+5uuXd7JHQBet&i~HYGIyXi z_THmD2sZ5?_`@33)oU2+M1NdNPKC%o0X;a@;s!p3yb{N$wn>L}Ul4h(uDH-h`T#&H zt0KStzNRY(#Ni%$#VLpvPqzo-XjXN8#aY5BjH1SnE-yRv<2t8?zlm5v-y3hLw6cYHMuN&oJhr;@-zj7Ifskf{?g~Z7j($46PMnv!) zcio9qLAJf|9Y&d|Mu}z$iANkLq1I|w6r88}x`m0c1mcYupI9}t&{JR|5dt*E!ZEvs zgkUM7C$SYH@YPi}XQHWE6ld%g`?H*U*)z@>#`>96!}6(b;Pc%hNf~*Jjt<4{nYm&>#TNieueQAxMv@0eU43OyW*VE5i5xF0*Ab2}n{BfSg zuL?NCp%?-nc1xLNSW3gRJ{|)Yi59qYni9RcBsw-P(GY8-Ei6L^z|l?mJFioF%`s|) zEtEF=b|jan&=_@dltPSPFCS;nFw%7-A&UJEw-X#fq-Q_dCk8vo<4u!1Y|#C8IoCrQ z`}Ot8QwL97^R+-S2iLlOgf-^t$|g7YmGa! zm52G-mre_~{WpbA2y13Vj6^B1UZ;LZVM67&0Y{KQ`R&oz=GHu*oQSxf8T7Toi!Cb& z#NZJ#kRn#=VcK!LdX<(;=x9T`1X;(4^~jbQvVxc2P@~Xv`L9&yR4?stQ3`4Ve&%NJr;=BZE?Tb-kLSNt z(V1>GqH9iPXmE^N3QNZ; zs|B-o8!w;9tnorJ^RG2z!!cDqDv@f6*3?Mf$Lxx|-ZaP_JY^4t%a?aOCo<7fWndJQ z-SCZoOMeGVXg(mgIW(d2ln-MD+drL+)s6ToY@B$A!zQW9Wqcp}T8GSD0r5#(WC=fELw` zafh2vQzzSRnN@WD;00D7)IcS8&psdcI}0Y1I|R`Xj!un{j-O!Do2J&HV_k(HtK<~# zOScsfl`N!X8t6ir39bCRmR|Yk)kHrOTuCz+4SR@YtW~Mqak>ne;wwQsQmDgZa&EX0?Zei|?d)~VuG3w4_rAF6Wc&O3ld;y-C-ku*sM-~_aB?|- zQDuynRoWE-RsHfDj+=|#6*bd(s<|FA;~hn}`^)3&RbJ~MI=Q@67J??75q3ohk^Pbp zikkA~f<`A7C`EBdh9|4Xel{f~a@w4R^5kOA>`1RSlfMJLmk0~smECzKE*T7>&zD?! zorBxLff)dbB2?H<66M(tE+7FUL(|Q##^jIN9ju{w@su!($37Ty1SK1=AX88wR|aYd zQRLSU))ne_R8cH>uk1EaT=IIM^<=I^1}UQkow6u&Y9bx{vNG{#IiB>Z1tDU#Mnym8 zE%6GvN!J`q6Ur&}cJV`^GH=?HSi*X|&iLGD4D?j!%9P)C@S+$F~$2Xw5vrA z-E#^fqk381BucR&fg&czsFi#1XMrH`6mE#*dYdjg1irXu-s5cpvb7C59%lv3fYZlE z;T?PW+Ia?dpL~If^54JMgt`_F+txvmB#kLsPD|u}ikQv%ZW9cm4r*DlTP1w@4*B$r zKh1SrbMl@d!DdquRqI9(L{#QVsP)tEDOQqPrD6w4xtfAp5TQkHdb*JFy70v>5oWQI zhS}E-v_-8PD55flZCxq2t&S%Mu^(82Ad$zYqFBcvHNZrekms>Dr~k(S*eq zAf-hcN?jWT!Au2p7j6FxTrA${E5PEmz(=eHBB}Ynt2q5DFK!-Xs)o2<8OsRJWvnN| z-Xyr|OobgoK^MjyB~hVAj=9!8PD8O`QAVTZiEO;pc*=K^h+X!qE+Zl~XGc5bWWLq# zJa`3FY5tBQJCi^%p<~x$BRYFG8BF&mZ`vFDSudof%I`=k; z8X84W<$d5XwXD~EwN&T5v4`O?8w+lKWMyT_S!v@9aeF032da+I>lQ-+xWsbbs8Swq zKx}Xe^Q<9PFXe8nKIYvm-f-v=HGCaE<@+TExBb*)iilxqcr#n*1>91rz{snH749bW zlBfQN*5TO^8wlJ@UzMAQ@MB`Ac()*&*IEgv-f>+|0=v7i-2lRbTuZO^nq%*xZmvtG z)S8+usZgqdUPGt+nd`R&)YpD0L#%Mv{k%EwH_K3!`menyV)M*6wi`!i<_n0sn&)ts zg7Q6xC8FqK`<@oUPxPlbpgqN@>#?e0(rl?`=Ew)U&BHh#I&i>QD#e9@t#7?U?mxXG z^ie`OE@Gou{kI(R-_Q;d!#@BHt%9qKA+3zA@jr!~p_KzZ zJ@Y>*j~uO>wS%sMAwC_gq@jVSE}ylF`ag{@(=*_+urX-T^4nS4{8P#Fhvui2@uy&7 zV*M#u7}#j&G->4w?X4Z{^bPItndtv%?th@2e_j9o0`1TW(bM76GyMnpp_Q?-)|WSQ zP^Xm<5TaEubaBw66?AbBmjCB5IXP*C<>~S1SsDM`+5gque}?J*iS97{f1x`W%9hdV zLkOU6vfX;zalN6W$=8CiJ++$y%EO{KjY7I;Aku1?C;1|Yw8b0SH?&ub9PP-0r*RGR zc6)K{jP>_VocDX}*+912)Loj?S|23HzABbzrOC#9!`z?nL$PS0u?L}O!g`I`FK_DZ z-8Y>)q^z|=@z>)r6;a{RQ{~s%Ukz^eyaQJZF}Y+oyItcE zoqte^xeElT@K>ksHWrhQCn7!qyt3#SVJcI3dyF7=i?l90-k+PVwYojOGhIf{v;Tg$ zga?nf-kTX-z^Z7%yLx36)r`aG)w)g29gMd1Os{r@z#XjlXaMV;yvhyG$ru@|B9awm z&x*P|>}s-q+ZMlNnhnY`hDbdEhD(L!U9aC+ohXtqpXHoMlBHp~izGgDlKaAnzi0K;0MI@vOW?2bM4mAYz?!|x^3SSp%by6rL$UxA>#I75P z)hlHC9*sAUZ`NK%u*>AIl)1vp&Pk?RZ?3W)sE?R#pGyJLc2tYc!C$e&O63f z>^@UoEpi1aJrb&0eb%)jdDAJrd>fIj52wgzZ_i^z+Dob)rWBe>b?$Ea{#IQj^*7Ao zY$t{1| zs2A`EkPMztH>Yk(vL=5Qn&uff2K_lZcu>7?23bH+q_3(NviZhqAow@zO#Qgfv5{VKdrqm z=dPZwCd|>5N7YxE^?G>csP5fxzNol>Za*ylSugzJy2mEP7A<9d)>&Lv!ea~n#%Vp! zMD$221S(cEclYKQNd_R=F5^0t*uA?>sU_`7PNh@t1@5IHh=PU(qvy~IKZn<2Wa+bm z9FfV6f<-JN6{SO1Ey{TsA1r}qQ40atBhu>1U@0};N~)F^O#HZ*$4eF60 z+Mxl%jH;~KX?}j#hX%;nFK3@pzj09fVNe~PA>g_b+<~?dL0Lzb?zt6yfGuXlMeNc5 zwnBJ`JC8wrWVStfUqv`W^ivB#;SlF=e1+3|))f3M`% z?b|w2u&GEUH%nYrk<|!PHn0B6kv1!2Ov%cZY>U9a3pJRS5Z9(OoTf*t~J zEm>fMt}pof22lqu*@({h-abp7kdNuy{x^O3>gQjlyDuLjvWqR6uOa?23?iU3EYqGj zxFZdbd`iu;pGllva4AI8T2tZZ~j3*3S*P zA>{LCa_-4|8`F^<4xnewvHWqj^u8asZ!Jzet6mgQXGYna;H8l4;4tSFLUdu(nxl;9 z^9rJsEE6_)!TouF&GgrP^#DGjAFh^M-%S_RJaa=!vg7w+m{ru{2VHgBye=}uZ@OvV zx(Au(fTND&8IPq{pK4bpLpj%1ugB|a?~mO{C`_7BpLW#-L^H~wWVW_q8h!&!%sW=$ zZXy`gNQP0?sn`V-dCWVk>I9eHbV_+;yKt!BMz+Ss^Q)|9*He(1a*gU!@G9(tr<+QQ$oEOZGl|{KqkPzdo7P&H1)hC z&0;jJh3oBD?f?u{3)WI~Q`(kO=eOY8r$i2zA`6*j2f#hsln1m%>0|k^ld^7>ID)S; z93gEe8R&SoGTg)&?i7K3rd&!jGtuuf5ocyv&`hqw--Yg%2Ubr)6|pDk0xY>0*FnKW z-C3~Sjf%;BlaNR2Wx{{p&H!-gz$Ai}M$Y_+re?j_P*b5W!meQ`JsXM+s=DWG%DIYc zLmXcy<$#7y1kGJf#w#jrS^`GiUD_yal<=0K|JZ1Y2!gO%ZCh=3$Vl;ZFiA^jnT*Rp zKftxAGzU!E`7;aqp|B3)<_IS(E8t8Miv+^T4Z*44Cf-WpA}y)_062mDUUlKNWGb)~ zj*eAOUtoA3;6~7IH86NeLl*$Gz|2)8*zDotTMu7`roC)7NMRU9%J(YZg?@2xO4k-8f zo6*}y3pu!nep0mY6Uj)>kW`?7R%hnxms$VQ%=mh?@->|@Vm)RPS+R%5`S&;@B( zaCGQX>FTH8BI-3VHJ)HVGSa@)9T@J*nRujy%wKBfXbI{-2;6iapn?XIGYHo_;)IPda|;R>1DrKjcjMIfz}5wfGG&uU zfF6=V@f7-d3dZXVaP_VOaCsC$LHflJk;)*sYC?@n$2z*0$I6fRE`Ll}&9sDlc6J;H zF}d)m_ko(uPEJHf7bKV%mYzGWXgRE=bvO<#6G;7-S_w%ns#ww(f4Am>;J?Wg$v2xT zCTW=YEF*3hj-Bw&1FX^bOc6LGozeR>edNjOPC_-F(jijw%HoPO)#mmPPi-P$mA0ww z(OQo6C2>CGpW{;5Tt8_&cE?`wrez|M{U!PGW}|IioUo#T&VHwS%GHd+`4n$|AT9vL zL??F`kDKRv|=`-H4SAw3}r zIZT_LsJ=tX`3A;%y*koP={iQzl+NmP*tA!)#*=ER=f1*nf>h2tr+uashj^Bnf`{Hj z^Vn^k2OoaZ1;3?`Cxf?{{UP9rGyCT_9C#jc~*(o^@!BVPDD6_ z6%wD~Z1V@YIy{8Pz%8StCEH5D(@pVw$HM7tSSQ%oE+sVa)X}zFwh@27gAQJNnxDSz zX+mzm=>D5oWxGqch^fKWo$J@<(xC6n8)12*t^0cOVyE{Yk7#uT0lag_t_CS_yWfvT zd&5n0TO0}7A4UVTH&pt;{dk9R`|_}R`})8Q8PrAjtw~$#zBkXM4?R6D)xlp(jq*z# zJ6YNU5mXjw=?cgrAU$nk?CBNZx&w#wZUBZZ5hqLvGPo=FESFys)NNJga!N{{?iWQT zZ~3`yK3caKW(?JU8uEr94!yr z2h2P+kb00VJRap8u^BMZfR644WAcX5nG074 zH~%=3Efd###uQ-A!_a*++te3}Jld(WJt}Hf=HH#Yhga>-*GS8l_)(YGpFTV8p=Jjg zvr*i&OIxAgE*~z=Z^nn)k1tOzKYCG%=hoPv_4=3B=ecQk4K=ezx#ri4!>}Y?^~{O( z_Y|IY{pbDz*0+Z*6tETycMYfJ?IbCfCnLzKYP01BhP!w&{PMF8NyzP8=3+~d&c;;} z6rB(T-@AwG-c}E6;;)*s8+aSpu=t0y$w1C&{R@If$u5S}gT{64$v5)YC3)e~o3~lr z*(@4}=04THG}YsdK7I@v^w1!Hx-SzL-@wqf<#_TTQ6R z;8!&`Xkmwz2dpVJ7#kq}ZHs;uyWQEE62?xs&<*217pZoGm5wME;OwQUK$=QQyAiip zrJ<@u__t~WGCBVcdGz5Af9^@E{K4+_y_5XAkjtcCO zUlL!+Ekw;b{>~9P6^XRVbECW}rLC#*%w-Y_K3_xATE6npeCM->n>-I(ZKR#~xxqXd zYMBtVo}vY2m5{X|MHZ`+yfpNCE(=&e{>e~9C__TbbVNSOjQ1shp%7#*4lAFrcuI8G zR;txpU4&+w>9FsP!e42$pcN%lfCV+n+}D(Hh|hsaSajb;B6!c~6_;w!7CG1vQmWM| z)(kS?A_;f2z?j377Oia`)3w9B^86Y=dTlf)grzV3&p@=~HtLYNF`oj)gbS5DBRdBU z$xr@HESQLkrii~Yeq&ulS9&e_FX{$T9O-rDLVm9L=hS<7@5y?y0Dk>FL04j6N!q=>qg;w}nd5 z9Iga9iCSRVTPDuaz|TyXXl;ZyMN+Rxf4ptqUQ6TxGoGd z0+0aEcPPk0aXj>N%%cLlUnPwoXV0={l;kMJSR}~-BSs;IP*UQ;XrPb@o=G4YJ%)78 zOPCv^^ed0pU1X_D!E%9*nZnr^VBXxI5J!XT?~MY*B4fRmis_P4{ z^qu5VAdA|tV4vqQAai_ zK(J~wdy+&OAq5`HTBdg9kuQEs2xEjq#n6#@)u|DB`q?6gHA^GAx9u!w^0LC28#yrZ zqeN1nsIx^2qlkK@R#SzAdZK^oR9zo~B30(LYzKA&1$>Uh|aE<`&y>U<>te#vs~%wxZSTR3!yEljGc& zsfH+r^J`H<-HR|+qn$0*=~O2Lx)YPV$gtn(y5YRZxIM9D3aH7dVO^VFiZXvDY{LBq z=m8%7zX3hV39tciN2^UaGRY$cfc-ylCa6DGDJVz*4c|=B^uv)iZ!zbfik*Dv%;|5_ zZJsh z@5oekF2AEzTH<0#P&hy#W6G;(WDc3zuvQ@4VNxMEMTTTIBk)G|j*&mcV2@oQWNlj{ zuP4dor0sy6esTIU=Mh$t=myUpy}8zM#@7i^ZU@&iDhSy%DFEb>J! zQf2qM?`0B;32Z!((Vm$>R%UD5ZH^=NoRisG;EJs0WX~e0aN4Y+*=N>a1gu~sEK0D7 zH1!!EolneNh-vTs+4CQ(_F|1*(&0INNo1`1#Yj7f2dSfPLdI_jGLpo`uYUmKI94(K zim7HhGk=731K^kt>YyebfhcQb`~~$NoQM^1>0bolp5O@1EF{msukmG{z~2i^KqaAa z{?q;#H?1JMI|lVfAWyi2OJ*my27ZQOF1-I;R%z+mSN238M&s$@o+{k$~fDwNCh9gh>Am*2%5I&@8Y^+%uvqauu)w-_C)pNYlK$VxeF~9;wF1^;OvC-$_M=C zie1_;J!#WE4XW&;Ra%5ZJgz`TOLT2FUM8|&v)|3g~O~YuyKAdG^+>Q<-kWE13 z{3qIfFl&&?DYpd|@WTh1r0uByi>*=_t9%U;mU^gc72dbwfnY$Ou!xer8FG3aaVvbm zkcn{i`8~tIEE8F7F3~7V`ZbENh_hJPe14Hxfhg?4o+#WN+GPK=vrv3d=q|>BFlw0t z?*e>@(kywcKdr+VYOZNFpMeSV1Nx}1-aVkklGFW zia!R?D;PIfbTGO^@5cmPi^7T37Pz2S?9FcLT#b=OFYJc2Zm zb*$HyS;TTk)w`_1L8=Dn(*-IEDX-S)kSAh)*KFvwMUl^MlXD!nfbm@hKu#`U&pZR6 z5>oE;Tx3JbZ3U;|ivd5@HxWeVYdmqJjgwK)C6Lha zd1!Z~JH4))Ay-759eFc(cqH^yc%A9Txe@vCdD{Nv^YH!nJeMg>=|4UX)&KZB4xm3i z&+tD!&!-)65a^K>hmp=jr%aKSy{XPvCAu5V=mb?{sU#ZVjkMKNgWT)%IaV@+vBPfM zBkMf^gx;a7JWg3uru#`9PFysX@zD9^3NT>o{ba@x0WMoV=W|)3gl*lkM2UbCf;W+=(VF^<_gH8UW|!-3)9FGJVSS~D1;_1LXhV@53V>C+JWXgOBJ0K1kIzH+FQ4a|Sj#12GU;DF53L=;dg!=PUL8uR#oM;~PA#fw zh2j75c@Re{1ZdQybLt*}N!xk8t~i~(X>yxB*u@0X-W>w5Vg1 zqc@m3Z7<2bgBq~%E>IIR(R73(Ct_bH2l-nW$a&Wh|Rb{RTam2W912}alu<*ah!AZK@B#7BHDA`?84HgZ0->^ zMD{JjKbo{oE&VnFiVa4XVBKjNB@LShnQ{k69Y(~Y6rR7THe9yTZRC~Aw?!>+k*w|w z4w;>ktO62+Tn!T(7cs95gd9Fdw_nQN1%7gqG(6B8WTGvuaY6d%0@(b@woy8!WH>C& zh<4Eaap@eQt*!n^=^UYKzEpd}$463bR#(I)z-@W@=)^d|EGFzhvI`&^$Xm-#RlGGR zB#Ml%&YVh)F>HouqE+w%nOdUXLNl&P z7*2)p30aDXo8QEh&gL@u&VFn8VX(Y^Rj(%#LGXgv$p8BC-q~j4AMLjY&7#>X@(8Vx z^+L5p10e=z`_wqqJs@FAbBlgJK(xF;)d01B{baX~-QABH8@=az?7fkE@9T&)2PZ5e zDvI7)o?P;nR7GCoHXRDe;@NSe^9U5bi^YYE zAufv`hYHb2?~I^mh_lb?=8R-w*ctk1gyI>ioW|m)6AnK`Vj(dlN#9?vhNRu*iNsPq z{9z~pM_?AF!A3CC4xN*gcaTMnMiVqrpp{;TPDUl7Y7z*ew%3zRVC8?_-lid1?KmBQ z>5?Nb{jZ2fObP;ud{}T>ayI&lx|LU!k_=0&f~X}Qke|+3 zE(yC3pPI`@+n382fBJOem6A4+eVM~vib$%c`}ocXOA@5GW=mlXnLV(g!$LiSp?h3n z^}UEOl5X9(3tN6qd@N?epkjXLbf5kMuB(oPftE+dN1wjmBdmtsD$yDrn#_nAr9h1F^ukYQZ>OsSEK% z{ZZx;#wRTsG`uQ@GJ=6U-7zl>C&^ef-Yi&#KEJ{(5#eQ`% z%u>g*q_N%IveXS+*x^1)vvWD2M3bP5pRL}7TIa%cw@}m>n3USP+3M3c`PAlbqt#5G zNAjhhfh3Rh>Z;Dm)>hkJDrhqDAG)lP{ZzWvhfwH`0@M}nJYL5JjHd$_0> z+|bg{Qz_GrcsOexAPCV4hkP%L?Y2X^W zLyy~q0R2l#P`F4iya(SLDo?8BqxQC9PAD@C0c)SWlk#-L4Gddp7T>1IA!3%be3&sT zsY$G5yPVH)WvF|a$76j(p2 zsa^S|Nc))Yl-g6uGuph~IAA7puR}7jx+(kuVR;z>OPtj@+=m8j8z-w zGlqT3)4BR)pmlAl8lI^7W0;%kgJxA6e_37`J6h!TP~K?VDvhvdE*jNKncLGVeGUJA ze4aR!$ii#H76&SYP1o|kUU!;E5^%uNZS&9Ersj(nfRhzPIg zDZEqWUwNq_kVP!6Nj{i@l|)JPzFuf`c3bO{jm8X^rjrYdyo(*ZhJHeJ>?$2xWasmZ z_H~#cZ&N@u0ynb#(~vg%s!XHbQVUI((Bq}7K$ z2MwZaTlHs`X;o=C$0MhCyY9Yfqjs8(h3UQqi<98K$coEQp}?$5%|mnfL+SdRI)u@m z5o}|5lg<>Ku8)x(n-SAgII~k=i*l$FrD736M^vap=)w4Ig6JLE1nsV#QvdOJT2!WV zthh>0xH5Mjr+!y)KRZ}9G&h;|_&~|c`0=!4!v7f_@2ckI+J4NMR3s<_SLWToUog|2iA{q613!J3dd$U@U?^t^S zS8hI=AIT`cM9G|SR=Cwk4L{w(cJj)Fa~#N%Cl!urPvtNR|HvzlazJLP;tfzGuc+zZ z)c|WTRn>rlwAt{p7puLysCD2-*rdL!(%IgAuNTAuwFT5HSr*n{Z^)+Aa7$#@IQ+g) z7Ox{_17ClpI0Huc(y_=cCfqXnIT5@TrY}a*-tTk~s&m3lkB4tUS)xbp6Rm0(+0%W$ z8uLTZzuWBQTM;NsPbP!NX@w8nsEFk*$$6hp#=P?$%DhdT;NCHz@?KQM3l86@<`Nv% zQ`~^t)Mlbr5v$+RZC4c6I^Koo(2JR~b67A(zZEL576qfN#rIqy_FYqn z-m_{L#UylB;_6&fQJQcwysUjVZyDctI%vSZm@;4o^=VzMBaNV0OW8gDr!t`XxGZDyd zd5h6V5nkG!I7d|Kk_y+Wxr#^WicU%bvTiSOq8Vj9~aA$Ki0 z3l!s6C5|ijY0tmBY!Ysa?KX;Owpd`jGxCze{DGO*bkj-V!I8OlZi6k0^GOXh15Cj2 z1h|+Ma*r#NdLq_stoXsEq^QDKF`9d*RaxCWV#~I}Vcx1{PSbH|TECgJbN@s12v*?) znCJET%=(Iq4}#S1I{cmsi*ibU!Tlk61b>L01kF_awfXi=drMk-!E+D8->1hpZKaun z^K#kwZR{hYhs!i-h<_yrKHwkORKnP$h0SK;YV`l&E7+3~xSOS4ocCVLbt#T`TR+`e zFn75-eWyab3gXJoKCDwt4)+~b%*x$wJ;FqggOCtKBaonVf1uf0V6q368*N8>(nZ?exVr?%%{k1 z%%2k$si%ZFSRo4`YN_O}QxZb6K?Oj$a%wV{LPp}jL)2M^M7}H*saFo6ZwaJ0l$V$W zpFnR=#(G_qDGx_waaeAZuBp5h=Xzwlxti~oVq?=3Dcv;y?d_$Rl7qrF`j604`W9Mo z%@I83`Nd!EVe4JNaswy?)!%_NWkP~zFaN27iLSAqq7xmS)(kd5BKEA4C zxI4eTDpq007e_M+)aD_yx@2s{wVF~*h=R!bpgY)?)KL6}wVE9xbW}{Nb~f#!#&Gep zxc%6ehwa)ND}{#MbWMN`LNqBQ*6W$V*o-mw ztUMja9xD)5)ijo}{!FTV6t8%C?n(u1Gb^upH0KC(33AN+90j{|OS+@PiK^_4)*FsO zDvJl0UAF@f9TPlkY0Y>vBmp^EzlxiT^h5Mm>KGpmHyg6l%@{y*sBh9cJ{v)iWka-3 z8=UQ31WrQaUJ(`bi%z6_O4Z)xk9Ng=M7cc^L~hk=(e(0Y&Ut-Nj7Y;n+brBvZh6aRNg<*Oa{DBxQZxGOhzDf|bs+Rc$!`@$rA{|7FbSqmD>`1;Xu!JPI;b|ft7B)gVHDYH^{UvheZ0g#T zOEk5GZajSBHh+l5_yCbV!*8-{gKBS*zJGp|$P<98NR@z3W9Ese<{>v=CJ>D0vpk~s zT_dInlZ>>|;qd#SJ5v`j9*d7ffu~j2?&px~VPz39TMQs(O*!Gks;JE41Gw^M!@MWYHKQP zCZBBK@kn8V7c`So`Pnec5cFqjvw9iX)dCSLuk^)y?)1n-sIR>|YjGjG%h=~xJm|kT zJ7Q%`F;(tex?T1JVcZXl;5-PR@AsPXxF!IC{ZW|nbVTKlj4t}!%(og{GM)-GYap<4 zsTGlF(ya&=G@Ce7Z0Q%hpOzj*@Pi{A**4>0JPgJ+b_bSk0?QOtwASt&yP=&jPuOjCeG5d4mDz(j zI)a(Rm^)6voZkFZUpMbrrT8Iw?stEHhMRv8Jy1VHPhgiA&zG4P(Rcvr8be|LRMOi6 zyo+Zx?(x5fo_pb&N=)t6%paoXag6g-SB&^UQ|RfzA{4Cins>1C;^hs(5t@WjZm!Ua+`z!2{- zh6+@5sHF0&YFg%*}8(Jb`QD|-k<+NoXW+VeU^eTct%5<;* zTp8Unc0(;hf;T~J-XvqH0Zs_4gWOGIiWM{|l{Zb9s!|n=+dME}S@jw0Z6u|(F?YS6G)?d z@7db8>YFMDQ6|CdfT^DW+s5vLY93$wwjPaM55cYkTB6u1Jmr(9-QGR&oas~e>ZyR@*&P_ zDBwFymg7;fr7|NgpXzPG!??@4hLM7;&v&{mQs5Qio~*y3q$(6ptT@~fOJqWGcn+h0 zo}#f5s$rG6z}P(2YaV4GB@7wEyQFUNprg6k1)d*5BYSJ z;_P*>rpnTBD;bv|IfhwfN*@4vNXC8!;TiLON&@7kN-vg>ADUh6|+a%0=#Vk!o5P$4E!D(k$UBlo6S zb!YQ#Q!`7#8Z5~2@*Kw4iR1;%0ybg^;W*nP6NCXby>=~;n#DqRsgG%fN#nV~$ab#K z_rw0=$jl%Gb~-7!3MESbji0RdRZD$~Ykm_fDZzzh5vIc7F`By`Cbdn{KJ;X6`!}U!v-gc2hNscDNq&9IN_2NRRvSfI8L<4L#-%IUPnPxdfw! z?0=A+<{zY|y)o76AEZZ#^X^TsSX2AoNYA_(Ds4J7$0laG5s<6EzcEh1zQ)Pqfhq_*^COA-i)X=J-rgcY{3UH zi`~00HJKW9fQ^x-$PlLq5!2;;w^}x&Z|!PJ`GK)j++4Z;%jg-F_%V74$$|v?*Ci$b z_hww!BG~g7nbim4r*E#KV?uM<0D zQK>hW2Ld0~9;zVD5z{^8ssAB*%#}Hvx!|xf20yyRE0CPrpP`aBP$-ALU*uh1-#<8> zx$$yu{6>Kr*ZO_+;IT1@0#vt9TDSvCU@p8r(n|3?@{-$bhS`x zZLhM`eb%}x#amEP`x3=sZsq`EF2(>fFW^nXzR3(aLN+F!^t>VG(LhLx_Z-s719k&y0j5ILr%U2sk`kRvLlZC0CA8(fp ze>-2K$nuN7&sQn}GhSGkR>p#sP>707D}9Z#W<&MXYP@+zyH@%1*vP*7+2gkze53Cb zHn8Cli+&R^{eSUxkHN7;TL7Sw8{4*RJ2!T6W81cIW8T=d?R0G0wrwYq_uf>^Ox66F zAM>Ys_pYu}tLt>{KHYn*Z`HY{#NH|`SQ=W zVQvDy^~W%)J61E)h0ZR??+v^buiFq7nQIe&4iKEDUkS>F@Kv61eD6PTE2wcsc-OR# zmWqSo%DiWkga=P{!)ljsNGQ=uh*$6r5~Ud+4*vz(vvUZbKi53U0W~vCBHX;p?AqPWy!Wit{9z+aT3L_V?<(C5QU&YAG$Y3rG;?5R#2Rep-zt*xwfej~ zS)YbylZE6I2cu@Wb@jl_aWgG$#6gRM(LH4@b;-i1>~@!DKWdE@=JaL`PA1AO9&H=+&={Thw7= zCCovW%Vq(^JD!hP`(9CSx=f6v3rHElp3&q+2BmVu2U^TPL9|i`*_mkf<=0|vSyYu z<3bNx+u8)Ji7H2X^WBZP&uFr3Kcm5kL?VsnJrXZ1PU2h=-4A-Txgam7T7xxEcIKNf z0r@wtg5R36a)tI+HzBk6`|E+H&G2r3AD~Cid1ioCQ&o*`^S4m+3BOFuM#L4KX`ZYO zrIt9(1(FM#K+%I4C@JEu@tMdAd)HB0P^_rMk1$!h5d@bK!sF3$r2#ZlXQX!?c+^JZ;VG36;*R>Vybl`tJYLk18 z9ad;azbbV$3uIZ8W7YCamMWYtlzR>qz2T(}s>z;fj%O+9<{OR%SCTrD;tED&BP;zb zDM#L6MSo`#;E}?iTiakRLAgla>o=TMLrRPCIE@2ZCBU5RA~iyvTkd#ObZZ?WLL%&x zWF1($mfC`HW!O*ZqNx;$8I_JyVK7J=hSk#S>Gter3|bPJ^BC0tL4sW3G`bCvC~Nh* zW|k&|kAG*`SO6LAmWg+i1C@)AV9Z+qJJ>6jLDK6N`SLzm^ z_4Q2MATr#K!S;tz&TL*ikAmH9Y^51-U4V$xCAb;y_E>m3wKDU)bwr$(_$xen0+AJ4 zjyt9jyGDpyM*K%-pi7?_IyfXP>hH~_P}b}P*Jx=tly9Q{5YD)J>AkgQ&Yv`CeR=evBU1{}?^doC3%5i3Fh7>7w01 zcTR{`)x#>S?YJ#Sa0r+>!)h6akbxlATxC}4C3)viwz;i%<~c3gzD1fFCIE}uKzuTm z%P8>RoY}vu;HgL0c;D+^zk zwRxVuhr;d3OVB|sRGm!~Q3oMI3@;kgcrDnBAO*L~TGCNJ+W?=WIH3j1#;MxPZxUwL zGu4<+uZ`?px#RN#xJI#ab|>+7j>U?aaVN?PpXPJFbZ9v>_Kcp2MKiM2ZpW` zi;Y65i@)I?B>{LUoa?3%pY;~4faI#*snR82V!!wK%A5yQj)XR+fCdc10XYT7=Hk|` z>$f~-UDBV6I+F#AP5q!~_S%S}6V}$^ugGLLA^qG=*cp!p<1!=ck+At4lk`;gI=l(M z^~AEBFjwRb$ML^IId#cmYUEja#*iEy)<6WJ+&LNUBQ@cm&;1qtq*Uf)Vlb)W=Ar5R z+cp{oRrX+ki7W-EkjSuXlglER*JXus+(vNGjTwo~^D+&~!p5*X8o@va+R9HG2W!|Q z^7@xEzY%wNg`^s|!~LlQ+w}(!3LI?FD2BG=5=Z#p=ME%e*Vai-!R}YY4mZIq#v=diD78bKWCWZ}Xq^~;1xl6xI}uW@YjRz}Wy-f?-^Uw-`bc{Y~DAGrcGjbB+&!e~nCU?L}ce zvI^>9oJ(rRE6eAn7QH7Pi~~Q8(+@dm{Q89`WFmRk&^aH=?(k7~>=r9aZ#9*5v0=OU z=%(p5$Ngl;+gV->^JV=YLdmjbSjw>8Tdz@{%Kr$%L$@vXe%J!OPD0>)#XmFFB{e8m z<~kh3w9P>|cR1zzmMg`9DB%V|?omIx089H!UIw{MqbLfaINNh28ZG_~@V0699t>aY zb4^W7#CwR6wz70`v6vFx0sF{Z_BJ5hol zTG3`@`!i%r0=IPq{iwmTHMD?TVFXwE=kF0ubgU6iw^q$)5H=Z$%r=G~Sn>H2!=mtt zq+Oqsd_WO_lE%~<-9sM(brnomCku+)a-p*O)>xd_tSp3HD#G>tT zChImZo1XZkV!031qA(UCqROcgoa%d52}p?mj$%B!4JxfLof89Iid3r3f2}ZtWC38)n5FahihO-X%p=g&iRpF z(H~WVzaJ?ywe21N(DiNqV8^C4YSh9vJ}X;6*i{a)>qb@QP%qYq(%Q@%p_`=rwN}fz zu_&eYcAuM4ljl$z4xHLmVl-n8j`xOtUdjI3laf5W#k!o96RLiFy^?hp!C<0_*3O6q zYi+%`dffv2bG{6|Qc`&Rw~vpv(IKKLw1rbN%x|b;?sDl#P8Jp4ju~oV^XK0sh)3-A zof@2gb3&}NL3Z63A=YW%WgiOx{nAQ!NVV0H5)@(_3_-R{heMtSvW(fj0=2V~AT5l$ zaHe^Kdf<|XAs6g@Zuk+Jcu|c^n@T|SOvtjQ0R}GkFAdW@at%qFv)~0yM z^4UQ>ix=z;n~kiK6r#fDC`*F*ItqxYFVBz>c{O$IV85fLIbgXo?f@)rUwmGhWjK1j zoN0bsD0nz5Ee;K4I9&Ev&rU#A08T_u8IphLR5g{I$+s^+-ig{J125~IEU&JXElZC- zUg-p13rt7;Bn9LMBzS_RK4dPQuubPZyr#Q@OJ~3yQ!(@(Rrq|yl~5E<IH=5p0j!~g=*=U*uQ-p+sF%?^b_BPr51i56pmFc1%xts@rD z>dq>52ki1+rpIs}!gY)qOhi~7UfPe7uT~`BwixFsdt9hRB9oBUZsg$66-x`I6z6y} z3Zqg*QTT{VhV)TIGUDu5i7O+Dlp^IEQl1!!2|T&RHPB9!hvKQs2Tf(B_#S!j$#|v0 z8QM6|i8#u|y|-n!p{2kHq2b8-qlo=jdQ4DX!D>jv*0Xc}?heRLnW60|@E%P3Lbu&7 z!q7v$FCaQ0lUr3@0I%_BFJoFiWGuAANzTq&Ls_)$;FOCNDl0^rLx?BLHDuDjS8w9b zEn}^Na$zbT*Y$hy)OWhrc=j}sz&{Yy5+O5GzF9c2-S=598EFb8Dq0|b9L-gZ2)eZ8 zsOG0!|AC7=0$}}(P8?rJ+LC^c5z7~B30pJG6?p&nhN@}E#$W|{r<=Ea>gb94SpJ1dv8#fB0KSgV_3JvOhdzEy z+b+}`l}m|-gUDN|UMyloYf76!Fu^gd;r?~GZ%mNvJOk2@iQp%#Nj%p;qo6t3BBWAZ z>zGSivE-?aZ6QHHN(eN%DC`1E$5L1fW`%!gmExP)(MVeIf;)PC{>AO(E0GBeVB#w- zL&qn&14hoYkXOee`_OG{wH$!`Ld{(p)#j)Fva&Afn&R1Rk^j_obgv@~Umm^6B#x{i z1W$_O?%1hEoch8*CSb$TV8$wA;}n}uDal^&S~qdHImQ@kePH#~*>fUsH!_9L_C>!( zFj`_zE|%HNnnDmyWEoG@WNhv!%sj(iFE8GKlLx7(A{V+4Bd7r;H3kuKR!eU>@BXs;1VHXQ4~(OB*$iqE@BvWdKs?5VDH4~pNwd!N$ecukswMLaegE|9-YBV&|N`y)Treibe_4zQS z1*IR<*ePoW33(T8!~AW-&Ek)Mw>6dxlQ2BBaDQfUqvaI>_q~pIN@ZV+m0-j2Ou7#| zyBZdnsI?=(yVr|@h$oxZG_V<($CVggr#)cGCa;jHou9j`1Z{^*MVg4zN-~d=adO(a zhV{?|Y$CxNYXoj0OD@GBPiImk+SIQ^S!$ZFM3X;@L01JtD3SM>kN^!!Jk`JXlO ze=$95{}E~ae_(o8|0mzTnb;ctgaF6(pU3};Ma<6D`3J}m`|)vD{$~S;F%vSe{x2{w zmY?B&)f@&f)}P^j55u6W{PPSJ_Wy=1#{M(?A3I2qL5%Zf_UuXGiUQ3yNH>cl|jtH+S$aBLCpFG_7O2LvNJZ}=XY{;G%>J&gO&&%P_u~H zXhj0MtMdb6nSyxin+r>%l=AQFSvl|2=NSS7daHx_7i+O>%IU3Jdg+6HU6%!#P1iNo z^{n+Y;>YY&7~Z0JeD!NlRS*B<7#w_fQ5B}@$jZz%6EJC#PxHQ4PNl15~|G4f@YRGEY+;u6O_p2)kktP zV01(BO%^GNW`&=2n+XKc4K}X{QE8^|8-oaI?iE_?DPz+05s+fIf07v_d6MHOrLHL0 z!?$vmmz$Og@xC9+GjzY7J|fKHaz&O=IlB^VecZ+5=<()gjIjsdrJV&O)(VnDqF)*@ zjw$l=lMNDjwPD9pTsF;k=s=pT12C}{F>66~_uHx{O!l8IJ}o2@}b^7GuOo zOB)Qzcdrf7_YvIq^`1!#)Be4GwW4y+yv(=TyLD6s#T99BKp&!H-r4jipy{ZoF!iso zB(h3&s3T+;cpX^4$&ah(ESzXoLu>f^8|UdYQ20%T+tTB&`hgPgy}?pCX1~*MsYGa_ zC+QHg^9H)xFe*ca2DT0eMsWRxL=FuNB){k$xVgv>NG}N>0VguZe$VFi@3*{tfE{6~ z6J;`UY<|9wV+eK^`aJ0u+&$hk?96x`UX0$IZ|MHC!-XeU0(tJs?l?!tnVORC{P1?V z9_plq39vq^sI=yf?yl-yfM(w@4*2x_25iIbAoQZ($WJ}%iyCUqCq?# zv8M{0hr`jWg1EEdeOedYs&VV7A8&4z%Yys$t4nv%YwnIjq}cyuCc;&_7kE@fYlK~H zDL1S!v$_7s6FSqrnRfS>6Eci`IB6tCNk5aWWM#FVqdYU<+Q0x}!lEa-6NEb{lK+*o z^Ox2&dZ4<$df$;O5imDR@;#old4|o?&WEAYZTp@<=&gF8XHL6{y>Fr*!f29r z+^Imd5VcIPlo;omu80_!c+MjUPI2SOqSrBHAQL>(0>W=hF;I%kc1(d9YPhotOUtF7 zbnM|hURvxEebfLR!%BtZHDB48KVG$ccvVL_2;y~MNZwL6)>GpLBsE6zx5-W4GPEI| zwK`F*H-;{pk!&30fsqE81gVqwqr7}xT_hvAAGX@lR~7XA-fbuu2DoY8kAIVADH%*_ zIGgpo-ug~Eo8;}i%tmvKh=%&Td(jb;fe@UkS@-J&U|~uz30C$fqDI}d?RSgnoJ9%M zIk8AVStI&w-984od!NX ze1Wo$yql*9cHNr9B+Yk!ciba2!tzR)_Z7`yNi5e9+*0WZfYeAFz3CS@t+iZJr z4G<9Y*<&`XNQ@WFI%`!^-H%ADI#*H$8^lrEt>aOT+7_NHtv@F_^$AuaW2){L?YCPP zF;ay{qSA#FZ_cnjYmfHdtnUP!$Q<@FZ7zki0xy=*gEk7qnb6QK*cRBrATHa?)QenrzvXi5;OO zZXT(o+I5HC1c0dFXm!gcqB*fh3_cYGrRXWPX9#q=Zr^=&t$i}szxyM@#%$hAQ}+I* zl3Q3W+sIK1;QE6PK=d|P>@+awb`DOSzWr&_r8{{Hp{3|y+eckkoy197q^Bcl=RRnU z-RkzNusdKmlH_w(p68YDi_1Hu9)r*>N71y|mCxT(e7f=GE$9~~v-4of_rR1EK7%O= zZ=k?tn7I9lvWSE3VS=bHE7Nwr)Y{@Ycq>Qw$R!aFqAlB92 z%0)P3QtxHK=HJmv%HX~_GJjB2p3YRErRtCqG{d2_*JUgB%-h3PXBGOMPTrzxmF7@Ole04>b8MM|sLXM}rNHlh(~lPWXjL!;19SmYNF zdl1iql3HB@57a?*sip=KAp%p2#qVQ##^!ST8g2-W3r`XDjh0%J%nlX6-+=@*2}p&+ zs^D(C_~kFLNG}EK5Ti_ApBI{c^)GfD-+;Bx5k9GEU2S;oQlNd`v7dMf=e$)M6*a{W zw>CE7rb20cwA zj&{~;30EMAO2jsZJ^Q;7FFBx@AyS1T=2#`0zq}?A@N>5Unt@4?UL{Mswnkbm%Q(W` zC(**x5ob>lmBiCGCX|!X71K1LQ7?p+E17H(-cXo{&3yP5846)WQA%WEXsCiEls+IX z+G(VqOJwxY6)e@<<8RS;eC`pyWTl%;{xN;8HszYgtPl4ZV{=@wu%q~`t&+;H3b6*o zab~rbyv`3M_kOb?F|;Pf84?cI#~-}IH){E=>p_Xu4@AC3%g#-CQEi=7-S1?oD0OA3 zX-UpdJBE}#H=%t%jg~ldU?C}sA=I)`s-wWI*&=t8k4Jsr4?x?`eHjhW%^Fi)TTXpf z*2_RyUDkbSasb4fZX`FQcy8zfi^jkJ3)a-GCX~J1f3zQL*O7c4yH}A|@3K1oB$NK!5~Yx00}j@mB)zVXY`KBD%=WS9E?;(hx=twsAx=X`0)T? z>%}zGYb8?t0?omu-N$w7M8 zSkIO_6G=U*jlojELEbQvk=UPLxSNqcKdG$|tG$S=pDXLAf=#NGiRSK_`=`e5)%C~{ zQE8f`GuDWIZ4*~<=*!77jeB?+aN)icQKqo`9iiPxppjsp8Cp!x%Wb6!=KPt*R0+kO zV}FjrERj}ojvdTb(zZX@;ZTd>bZ&c26&@B5#{+a7?dEz*DsL}S-ibxk$ckqx)E@7! zd;yAi-zVOAm|sXZN6q*g-`^L*q>M&(9L!)rb*@EKYB3dU-(NL*PKr0X zus?s*(`RfYd$f@Sf1y)vOuppOhQue-w+(Sz6RGtl&(~VabE9S@7OHQg4hG58zckh% zd(v^GWHfsUJ|bC;JHbh4OMgipGSGiuVyTBo=7q}l8HX=#-sRFA4h5#^g@G%6T}`*~kySo0kw$;nt1okb#V#ra|E-g=m1d8;#h zPN}gVJZjHePQv338(tx!ff!}l&#;(IKKJzsX0WWhx8Uz;TKT&Z7(}^lon7Dlt15{_ zd7HEkOAtFB2Q$s;?{kd9NZU?Q{?9ejJ~VY0>ge7zB_@<5K%a|w0*tU>fIQ_V$MG=4 z=)WAj6q0Kxcl~K;fmdUeLukITDu~Z=`o$z3!AOLzDIqtsCwTyT=T`rRhPXMghQK9> z3!gdXV9uIf_^uTE47X}f`6O+k8H4joW?Skmd& z*62f8Y`XdAoyM<5S5Ic|_0Wy#5@fjRLO{>pm(Yq% zBry~)PT4RVv0t3#AAr;JUA3BbakwNM!)$E0uhL~4vA{rZkK7+y-qjeP*AE171DHHT zS<}Qs_u0q2{;8Zt$rbaq`^~o7Ni)`#&W=o^!pLg3qT=UGlrdJztJYziZOf0B)E2vnC>U%CWqn~&lx?fI*8atccZKYv%6+A@%C8GR{mnLf=PLR6n}^lc*> z!z6v=WchqX(V#!z*p2)JVa)8o$Fy9KqD)vYYaI(S@-vJIbP10W;%egKmpsbkE{+X$ zw*2WdOVR+pGy#Gi>`Iido8Z_Gmwl0q=dQMTK}BwDu{^HoDr9`oHkK`~QIy71N@SB4 z;3MG@W&C!E-Zu8(lvJ5rAx|0yI789yG#W{E(|3}T(92Sa3^Jf!8 z$~g-3D+q6)Ko>~T^oE6K(Hc1JyCEP|>NC@E_5z>9iGL3yNtQ7zLhL?fOg8KC8~=uc z#zp1V_#V)z>6W!T#7N6Jp^zfi-$TMK79sXdIuNHGrFE@VzP8;i z;n6=>b7LE8%+m+)Q_uqa}SYYFzwza^D|?xtx`OKk%Ypm66mNJX0jeH@ul^w)D4onemo zrLy+w-{zvJLQUqa)ud>u>Jmz*gr9bCGJq|5%c5#gOpWb-SGvZrw!WvkC^sXnP!0ef z@uCAKgOVcP%M;g(rwSsw!YEr($xiw#`KfuVSkUHZRkf?nS7V3vzicibvhJOuI$xL#p36$Ohk<}FF8@g+=D5%f%viT~ zYQ05m%ob8@a#SB_V^%|m(hiN`xp4qtx9uPDDEIy4zyisEXJ63RP<3PDGq4W28Kg9K zfZdNTzOG!aqlf~{-b=*8<*@nwvmiL-L}e&ebqd?yv)JA%AG5nP*%qP|@G@5)+WyNi zCJy;B-hQF~7O9m0rfmgLEG#6bg*WldZ zdw0OLfwh)t_p>67!=BykfJ^t&l%+=0A3(rG69HTFm!%69RE;AP&nR-EFskhyQnzj- zC71LlekS9m4o^9=hkD*E%$(LaCw&qTn6ZR$o-!%Y<}3D5{Os!k-IIz{H#Y8}2$PFk zNsXugw?Pw_VV|Z&SM}6&*45?S{^znY>;g;2M5KInej=4bWKAg8L8RP>R7-r5SZ$RT zFlM}4q>sv$AIPwA|xWbR$ry`pLXEv*I?$`QkCR72{glhjMX2^R{lS?zs6 zC#!Sy^g$-L+|c&^hIK*NF6xrSEE%;W>q0Z|SaiBfM{HC;4dIv|C#9UPAS)8*^ve=a~A3=sSfZ z6;!-Th(qHuwjv=&&Tm!mL~k&0zdHHsM#ebVuGWNzb1iH-xfg5w`Pk`-vZ>?bq@K99 z^5ZZO@ut=ZBWDB61Yx<_=>-$=j)sQQhsWB!y92JS!C!gWQZv{lX8osB_Dv6}^g_nd z5MF6VVtN?Voi}rmb(qlJQFiBOZY|`p`T8!zB2v~Xf? z(ibV6Y@_HIRxr&~%l2PJ-BR%fnugS?p~6TWuJ8C~D`zz_i=-%=RnY3S4~ zBjSj#(MB$DSLL%M5SY}kOzq`yJ3FWwu@&j2EBT$xqkakd!Znrg8qLz=g(PdtFYjt; z*GXh$g`O|-(PGp|05T`{R!i=dVSk$)wl-y|0vT3exr4R=#mQHfwwGY^F6=YkJ^|fn zw2B`nVQN18>qzUrP=cAR#@FHxlmMuLDW&SddP4U!mX^UnSJ$<7Pk|VZ3}qrXD;ciU z{@Hh*47i`PAKY;#;qcz<`4kx-s5(LQ-Y1x1p!tX0#R+fRz@d$fEdr%G;-|gDxjhd=uH9C}%vRHboX5 zy=q^r4kwb_MzrH^&JOSMd2*}jgJ?&3@edUUZpw1qKRkO<#+~<%AC8H9;pxxsNW`d_ zNuB0`U%mz|%PK#cyhsTfaFMEomw>5=DFFIbn522i2?P%E-kkYEY5-%UOJL}_Qe$^E z$b8bth2Ag`SE2Rg>8vf->G@+~#CT1N&_gjvdM;jEpAwY~w+?;kY1}60@NqK(`-4;; zZCZoz_YircKTg8=UF_YmA7PC3|C|K7s1NF)A17fbXw*-?JqqsdKTbl!>v|>Az_JDI zgTyM9t*)#7YDrfu%%?!aZ>DC}v}xfX-;v}Y9>9qvNyP)Dd%S~~SaWuIkUm}SsXiu$ zi!EEs!ym30js6f1A4a-n+L;uh)arOc8n^&WV-2=Fk-5uzFo9uVqXh-(6b)_V#*@P4 zib^i+_t&zkKD%3oX8!o*a;(RC7kaZ%B9%X?S&>72hO^`Gt8&s7dE_)Nm7cEOm@DMO zDjGYO{*%si*wWiSXQ4#F<-80X+i#!MRfBoG4cC!8Rjl^trY zt*hY9gE3v#!97)FqCL=B7*P|mE4~!S+i=b4T)kH(#~mF9Z@1W?xwqXgXYxuaT2T-BDUo0 zLCwIIw{M+g{^uls{MSjSL~INU{p5#uyf}VjPYF&W#=X5WUK&(Om#Yd+nIW_$<4wGU z{&5mIehrqB4BQF^ttJK+?Pik54&%^eJ zMN{L`?x*5U85~1(mXd&P&T%57S-1D8(X9X3Eu2zDxB=DeL|~YM|9|G)ySFNO;4Z3_Gb!J zCO$Q%!PWr>+uf(aN(gz6KXBK%PnvWc2{-V62-P*i6bl1%iJ!J0>@1L{xE!4?B*76x z0zO?s$4x=HC%l&p>q0f?z&eC5ao;eh$wZivnRd{e-vDq=!Ds$FCO6=ThbA_1c>(@Z zV$LAcse_F9{5@bU=9v@`P00w>qyQE-mx616#A7v>x^9b`-n0(p<~M})5Imb)Ps`3~ z;aGXFxGJItgdtyDJngXApS=azi3Ssq0xibEa@Y*oIZ<4hp7)Sf)NJckzZ&6_tTh=ESB9~UR*kS~-6(x^Z8pl;@{=9*J-HJ8 z@h+?uUi8xLN$5%O0U2RKoyEy>3hh8HuXKYq>HK6T-wuzg)&*zcM`b3^G;Or55bDvm zSECtEH$t;mqnR6UwXRslMl{uGiiRe4vLf#${#Gqg99KLL+dtjhZhK0pAg-^$TYum- z+FT$T{kI~nt_HDc`#LBoeG>XFL{FcfSK=%=Vxf@CdHCz^P&!ZEs?xD(Ng&^!F0@HM z-6yp6)ptJE=WZi^hBH7n<^Gl5;9z}25lDK!!#*_d`Y^=O!ZUIqVv^W!WL5nd^etv( zI>JT%Zt5BR=GBI}$n}c@)7eAxiCe7}lo~}lz|u)48r<3z;$%%`eU(82hkL}l`pr;{B73gQ z3o5!uA&q_n(P(h%s`SBCyef&NbkoTms(cClAgPC$GsAvv4LP1Dm&3=Auv9^+bF(NU z`VmfnTV_=v_JHiaK#SEKP2vC&dg?8H`{rIX z|CGmI@aaZ5JS4Z*%vIjzG!$inKgiKAs&K=^o&jyfbB?c;$el`1*IOBx>f*Lhh_C@t zA09vNhw1w!Us|gHmoyqx^=PxmrU4 zBCKQFQSK+w6bQ@mdGWJJo}Wr7U7AsRtE40MjFHsKp?B>xog>PWr~I=5nT0 zsvK1|H|p9OVKHvI-<3L2b5xUCDM5Wc#qIkgZ0;jW8NWQWacjGQ6roEyYjUE?n>}%0 zU6C14eF7LrBJc5uV#5Pt}SseY)v$r`1L&)GV=!q$RpABj%4${Ok7yj#z!7PNvm z+B(Q3B)_Ss`#CB(oA_|2%5X;~iGwy<-_`<`oh!@DL?v;X4fkPt+zxHr5OZBNyfyNj zrRLaWVk+W3DR!N);tMO7t2hsns3Hlo)En7?;!B1d`X!#uCEv;73!_GBCctkUlY)$( z=#}IVIu))puo9DSb+O`aQ1Oxw9lLAViv-yee{a5e^i+iwe0AGS57^UsH&oU0hvLx)!Ax|H@IN#OSGg07);l z9I8ZsJs@78>Y@IKMsE7O75+Dw+7 zm))#7pMYxS=bqsj1pi?}S!uI_XA%at7?5`c%Sw$s8OkJEfayV;xJ*!vRsNi0VuVNz z^}QpU%T9KI>4%P{;-csp8ghjMNQrmvshMvR_^M}Aw z1>R^q8pK;ugq6Vl5HJ+*kNAmQGM@H{gOG=Stg;`yI4kD%v>V`?7Vq4MMVMI7=C|#V zWQkx@miHf2G(dsY)Q!p&+sCdp1`%W_I{EVBBPnb(fgwjZ7DL#;GKl~dW}U=vhHVHy zk;?{z?GXC|CNv)*5o|nZ!h0Q=%6tE|I%2aG-I#!j2I?IOvy_g9H<;qrvh#7RLK3)e zW_+sqHYSwsrwwk0S4#Zz{cCk&FuI`Mjh7d6oeq_K^ zFc&QtzB_A?VE{L?Do*wAq`{&jv?MiQ&J|f@So^0|zg8V)0Pn0Bs##gj9^7njG0|_C zBxID8*+C-L?ez?(4+&`R+q@B-BQ>9B;NL@?D#gN_MMXE=icUn6rt=@OL6|l4(Li9g zQ(zkgO*m(0`g->);ulzL7#*fne#cquE+5H)nz+hOI_*pPzjG!&*cEj(ZgIB5q*tzA zG)Ci$F{eMraFbTtMES&GX{FSymg84L`~3WZ%~#TIIg^J>tHfMV7= z3G;kD#Tffu;cx9RE!N={s3h2;J{Udf>iET2O-1HNai z4CbctNbj1ZW^TC+iP)A95=KUNhh)j-&`wkaVHR+1Nh{Y?nP8xz%P4NpI$=#(E}xEW zGgPa(Suyrz>2>QWZX*TIlvEH)NJT2QG%Fr}6KT-+#cec6r#S7QgmvB&a`mrB2n2Wu z0AN0E*^3EJC*_Qsg$>^z*`q@|m(sf~7Y}9%Z`#lnPE4k<*3_;c>pVK9A3+lHSldjr zR{Iua!~$2+%%Z;6%h{C}x#k-31b^F+m!u;ZWB8NDWQy16w}0;~;I);QpEdd>2rM<% z0@^bDN$`29b#{UzGaq1bEFeJq)Dbs=N1V|Po92`8!zLVRdw(JP)M>mq0zZOiVqa1x znX-UOik#X6+SEXuLH`6Y9&YEy z{Qhwhn)KV$>fI4EG(4)-%%bMjW>HIR>?JJS?QDG-@{e#XIG)FONmgk;e|-Ix*SV zQaM^^UA;|KsM*>N?K6Nn+yW9?dBklTL>jvd&7LN9b{iQ~`@zC9l%}-6LlvL?{m&s!?3-z4`D*ew5L;!2cwX%8f8IB6D_u<6Oqk4LC&!S7= z|1dnF*4}ssxJ+krlRZ7F)>7TK|3ypa2ft~JZNVHWKAvFNMp128PU?wYe}D$&qo_rgbVI zSRRdnZ};@p9z7abY#ifqeSYL+mPHP+=fPdgWi^Pj=~+wHzZfFX1x&M3jCf7Y7WLD2|c^q{z zU%!r==7zKQ{@w6!T5sbt8HaIRJ#BV^y(fwwN^zdHcz&$mPjSsJ=3I)(T(f4*3MQWnraMI=kH@% zNgc`Pbe&aoFuQEbi^}J}GHjG&=TOB)&5UJ8a?~y|7r*orD?!-3hJ%%^kdry+e zvb&wWA9qo*S+HC*!Q2S33gMerLVm+32C^fNtu^OfSfGPvV2J&Y5b*4_vGNV0oUH&v z?Rqfwm^m;d$J+@#K`f;+t7t1JesH!Ltp1VXJX4wQl4znwN#1+C2k;v9#cG2A(mrhnsqGaqS zbs2*Li4G@x9^ zYb8Yt`lx-`-FG+A%EK+tYGL`_Ut5Rw?6gy1LJEEOEGDPsVcgA6K6vy}LnU#Uv$CZE&m8g2`tlYZP22PWO)jUBya*~aQ5r-SHV%h{B5C!N~UDZ~(7~olOtLg9N za4cp8M}VZB&w_F11WrBCvOZC`?s>1TR~5+q=?;1vzz@u_6;I0O)C4p6G_^}xdh13BqHK49|S^s>0X8M7HJv~fQJ`FC9YH8 z`{US1(mG@7$BWY9fO;j+NsE3 zQ(nHQOQPWhiw;A3|6sc&A@j0&G5~a49R-Y zrjm}b%d_%NH_p{Qj;D!`f053{@`T^2yHB+PGDL*z@x|nc z?FNg?m;RwOX>Q?(4(cQ$YNDnA9U^I-aFRN*G$X0pDaOi4=gxYvD^ z9L)4ut4Sr0(!g)dP~Cx9fI%T1Q#GzXezpdZu26LBRLnbd$^5OA=&vwO(EUQ;G^G|7S^OG>y3on(;bs);~;mTt|FZ#}c6 z;B>r}kz%_NEwm7EiK(Lku~l<6f47M7aA5{i{SFR#eNEN-NhjV~+KZomXsDLYK`RWw zH89E5tt~$qW@%VnkgsS(tY)|o81h(Fa1rlY05vJXT#DA`-B<5ArfD2z@%T59{hu!N@&D+LZ@ z@obi0wON!o23<7WtHmEI;R^VP1dg|+u83pSYizVaUx9Ras=26>h8%lK3KbT_Pf*a> zawr&+&iv$q^{DMSt6la6&5XV835Xo?N{pb0&NU87<}{E?$ZZM%5PaTL?*ahDe$USs zI(qpDwF6V{>=4UTEhDTIo~TkgJyiU`60!&+57$%PpEr&IJw+jmmttl$u zPF+t+L5&9q#AcWLNgt3-*W%TVn=Gki+Vl8Jq|mS-v7wOGsV$h7Rft!+Rs?Occ5C+^ zD`B^wh1#Rz|J6!RaMH+7UFQhqR>k(OvYxyKifrgXtkDdwF-2(t{p4HBGZ1|{qc+rJ z|8rkWgtuKIIrn!B73Yd2^sXz>yxMlI((;VT{RdK_$ zb&=r~0qbVNP9mnRfD(w1)RTQ_e6hLru^2AIc*MIW2*LLY11Qk>LKf5#{%lW=iYQk03tJ0peOjq3FW$SK)tCGvk?{oiP8M9WXd_P+vh2J zx(;A*;q8Y*Z3T7cVZG6-7}6=pM3-|;n*56<1H)ekZ1Ia>ik0i@zfMBw$p3N@P?dk2 zg!FC1{S*(5zy`lUN-QwoBjek07mTGW^DDaVXWUD0o)SRnr&od0w)=bHPuLaS7Kj32 zEzDk9KmWcE*Wc~=k>!R#Qrb|O+QXwR)zQT$KvYuhng5=`s*Xnekqq3 zRC`M9MwWm|-O>7kF;L-hNrV?O3tDKw#ynh=wH)9*fUUcKbBgojtlZt`@Ou9K5fI-0&FbI~4*N)2s?=p?#_8%nS z8XC=hpm&uW#Dr9uTzJR6so%--^{~I+EZ$!mfknn`6&WfqP7CIdld4P5dlHi_lLWi@ z$4F2$#@64o5kKr#t?qx;AUR}7v2eE8++g#JM#bI&7i^g-UkCd!7%>~RL|8(|bF15V zwMMiuBL?zveX(wto-zK?cws5xZsWnJ|0xRia6oBqu|HKrH_~g`XRY)n5^kTtN1=Lh za{Vxl8dShyn*FWC+pxx6MGf)gZJ3;)KYl1onwfz^l8F|Y?O#?0`4t{_wby1&6FmcK z@6*Zn;o=;j6inUWIqu|x~9n6=SF^=}zXe{t--%4$0jn4O$XJ|GVn$$r}# z08hHokOhP-4UeHz=nV5|@8qaWB6j`3wNo(9s~Jt)^b{$%VN?0LcML9S9qkX*c{mBA z7tIob>G}}nw&`#djadAo?w6ss8g{5ei$#McGDiqSNf{}(jJ+C=AC*sv9b=mlB1z?u zG^xfU!mqCb-%V5pNu<@6AhtCJ-hWcS+&WA3LD3`&L>X6XdztkF^sEk9rne#z!c<2`MIx3X7VmN>l;jGz*5jF*s9KJFOl z*L!)4t0EfU0h5=DalWQLqs^@Fcb;47EjRGY7l4+713{^ds*_Uf-C_qbUlNf^=Zj(B zn9m{CaNp+Kxd z4Y{tNw#Jwu+F9FWHDe6A(Tw3U{6h|| z+M{#**NCV+15y-GqB-W2^#aajHdFDM5l}zmpSMl5h>=7Sfy(aXQ_Z=Fud@#CyBFdf zRrYVpa&e)LILB6mjZDe@ZY|`j9IGFN8AynuC2L23DFD3tH-I&!yLnm2s^CSX@v*g3f^UrK*5Bp`CoPjEQAi=LQGSF;Ex0HxD zC78MR=St0RpB86&((A`eSaa_)qZzhggiERCUIn_dNdy?^oN(Hm{YTU{J$w9e4(xlQ zoqD&|1Mrd6q^f*|C$t5}8urw;(}o=dhMLowF(EPcME>VGDi2FoclPj%Ry}%fjOQs9 zx>RQ%BG3=bDle0!;)yBK^7cR5aH5tEe>(QjUBz@QSUg6CWYV|6-(icJQjaQo<@3o~ z6usek+1vKDL}&yzX#srP%-%Sh%Du*4ora~AnLUnV);lbWDDo$JToW4STQ6X0zx8<= zY+Wm4Ot14SYYU&wl#iFn@uy)y9c;X}17&)0=K;)ECin*v(R|^y*(;rfOhVc+>G2xG z$E;?Wdwo=c<CVfTYa6UcqzIA(D!XbP4g zZkHTqL&mjCP9yQ{8G2WmmxVm~{?1CY!{=HFxnmZ^3b=HQ!L~+PHCB8Zjz1)G;!vj~ zh0okhyl?Z7;(NP&Ery4;Nq8F^><@UbQYl>H1Gw;;;&Pnn#G+4!R_9)1T9KB`e>&@{ zc01F97>|2-Jbp|Io`?G{co40r^wW~qpO%!KuQcXpH#B6sIidQsI5w=+;SMFSYWxR0 zP&JwRQz!kCmM#55_FOvaCsA|lbp@_wvY=|#L2#M&vG-z5Mm+QR$9XWoB48CVTaadJ z^4fIoq&(2L2o16eKiJ&%v)o66x9X&Ujj(Hik2e|7NE=bjX=Gwsfpjej8NXX`gnZM7 zC>N6%tpv)x#=NV6QTH@YJKlZ*-Rb~5W|_tM{M^D!@$&B%>QUpo6a0+7$MEPif100M zc(skBQB0L2mGdu;UML@hXY% zA$H|Rs~n_s90i<^9G2(hAz1or&lw&?_s?g?z*=ar&xK_gZS$Kp#pcjf3vmiVUrO#&;PFZ^-V`ALF2y~E{vZv0t6$wgffL<0J%Jo5C*qSp5g(# z2Y=7H&k3s&0{%-s{a(gGU54=Z7Y^s`J^Vr>C=auq;T6sB25PSPbJhIP0b34M}dETlc|R(Cf?bQ#b~aVgGbhF z1w^GxK9z7EL&s6-NOdy%O4GtElDQa({xvQ6y;cUbO6$1zk1-k%%le*2OsZiITIjmTJ(Wa2jNjZ9ou6ACNOK{p>IDKmB2wHjy2a@Pj`zSlB* zhndM*(=R&26|JQGuEp17a9;uy{Iy&iF*#BBbV<$Yq)QH4Q$jT21TkEVOj=b$iSm5_ zKY3W^sH#V!hGUIxQ(s-%>epHeHxyt<>CPj-VP+^@WmaZ| z{2HKik1Z(%>|drnhy%1ssNsZj>`;A?vuU&G=|>JDAO9y1o2Rm6c*E+s=a=cEE%r1z zVIBb1U5eDXbKQs2c3_ho?VqU_ZEWDp4V-XLsU{CZdRckrL_7xj5Hx)Tt614#@E}q< zm5A0OfOyK+&i7OEkul$NO74!LXrSDYWbfLGCbI1oN@Juzz_$!F=t*;+CY@jrON>s5 z37fA*Ae2`S`{}6;Yp)z?xMIYiH}puZDAizwwNDe=$4rrz^TgS!HT);8{n|}nBh<*z0 zCyGAMpu%6G|E+%T9~j_&!ukJi{ea`YZh*48y$QX%f!TiwM-yA;pFscrfd~}soPUD+ z2^r{ROpGlI1nu0k{sRrLF)|Udb291B3pv`^|EH3b<@Zl5^H0Ib%JEaOGjaZA(4ki} zak6u9G%|4_{68gv|4Tpk&*lGr*ALi#$OESTHt7Fn2;o0>>Hi5Ka4;}4{C_|QS!!Cb z8^dT2Z*9GX)W`m`DX5`p^*0deo{6g=@z_?6`A}~R#8lyIA{C^~0f;Yh4;atdrj&{a zNG$MiM`45M*PA`}*{}4u#jDP)b}6p+xu8Ttj^3$lr-E)b1iWAhCm}sy3#-wB^_yGn z4>enx?lliaFT{ZqGxwnNJlmh9-QLeH7OxA9Vb)@A{^wc)U(a`-Sy%U`uq)4}U>;Ds zr{o8NTcpUx-+Oe;4dw==H#(s#zN2I%$6gG-2+4rTGu7|u&qPf4=XG-Ii*Wk*dA_=W0bw;$j+!Z#gBPJY2B-6P>Q&mCw>F|u@fbR} z2l$#_H}7Zis_mY%=IxG+k}f)Pb7vb-*E(O(wkTeGR_hIFymYMvbjv1R3|eyu@P%+q zK{^|2UXJ6<8V~!ASu;wPB`3a%HE?T6J@#H|mYsN#B}CN$;3Mblqt+CF;$rI=nd%DU z?#rO7f%Tv71%l#K>%ZlkVQ623)q!|@U&t8wDr>Spy^jSu=;ZV+ZKSx7h&&OOh|4=w zHRgKM0KMzb-E%+$A7F6NYh>35ly8x>KkumpwA`|p?ElGM01~19pC2nRZ z0^fxSj2bx_pFRNfx)IEUjCvWcB>~L*ubGFFY17gmMZqX zC3O<`9?7a8bipM=KcIlZJMEiR-hV}4vuvK=szez;L0Ebw)OEU;nY&R+$r@Fw7%tl~ zi7ai>iuBl3FwM_FXYVcAcyEF%=Qt)8U`RI)EJ_r?^A~NHL@@C7$EX6%D&+HoHv!5d zC-K654umvi8G9sFpnG5hCu%ir|3U-0yJ-NG1xpUQK}qDaYpP3`1GpVWhrN#EZF<|J z6aaE2)cC}ItCjnD(i5b(5qh!_1QDt()<`Qm@dD^s*eXY|nFR+UR{>p@%$~9&W;uD> zhCK=uz>qLkiLiX2cN@8R_aUa2%x$Ir#8u>(DGcHE6{N?25W7SPhs*#$FE=l=KEG+G z83W)&>}lUGIrJ1S*Mc)?YZewgWNa*>7F-LFM)esO<|&7ebyEL4^yn6ma*QQjkh+tQ z>3uH|eZ;sGf6v`5RpLnPaj-WJyhc$>DQ-^A>09bw5CNh&199$iyS7}7Xs`Kw-;2R{ z+3Abu6e@LY|4gJC==At!I$V3rWt!!=rb*bpGJqa2cjjB%5I_}HnSeK6Pn7ti@v>$e zfL7lBn>I$GBgi#le~^i{!KtU|h;gun;ekWg2Pyg}GRE)H1_bKq9nh3hYQg68`h_sOxO28yk)bcIm~4& z)Iea)o6o>4g{MQJF$7nPh=5auNb%PUtTx1RaD-X=%OS_6MP=Lwz2{qb6Sz-dyWj z5@1k)xqa1Mm>)ITDnF0J8-gWGveXb|{h5pU~<4WFxij#Z6?7~7vEBlt3__iC$K&JrOU{y|BeslW3)W76}_@C`t)SO1}%gg&1 zR>g~Az$`h1jtI-K@>!-`kEY4e}CVt93Jk<>)TLZgu9=z~)E^GeMNMug|5 z09~Jh_8gN5BP;4-dR3P>V(uu=_^<@@)qZG}%E82m&er`7+>{hh1nS57u!Trhqr)%F z-~8e1d0Q3{0=KWPpITf3xgLH~NUA)tAbDR>5n{vij}?2a83IwjsrX%_oaeN|!`dJU z&$VP%{Y`AB;HjrMx^?d&W%f~HrKx|M+WY4j`UmtqiXt=EzQ0(_8W<1!_ZYAvG#`r6 zn^nc(h+Y&HAmQaiTx*X@tD`k`ZnQ=(lm=0u(yMbBD&_-_5MPDTob{w%BRWZ5Rpq+m zJ5M%ZEa3C9lcA*fx$nXxULG7Z@u-t07c|t8mCIcGuSge!w;nnaTucF!uw@m?A6$LW zrTacN*#!1MEwggjRb&3_dde<-LVjm5BTkHfm?W=B6%Hr!R?Mi#Co@bFv@d9q(MSnIROcRyU4puC z1koW9EATa&PZv#W5;a>e5Y2ZJCgH196_6iZy3pJuKuxubc};{Ca;|JH7-wltL%#t4 z^Krxsv5ZaPhWuZkc;p-%x_( z^y+SiZw*|Ka#0ZqxH;Vq-E6L&9&6042!PRWMyrCG)Bk(#9`C7$4##0o;xPFna@NfY z#?#-n$V{swvu8ce!7WipP-B2hi)X_!*2W&}&)KD*>WA2ayumv98Ad^%8XnUU5A|%N z#Q(`vT*~bmg}1|sceC7z%@I5VW7(-yTh;>zK`wZ19y5hBbn4_K^Atg$veIY~W0;eD z{TEqod}Mrt#+*(hla%tC87&bV1bu>20tI6HKM@^8m}rI3g+dI~<)bC55NCKzc*Odi zH%UACyI)R9VMFZa>8=R@XJD4ft~^_a!CxD3v;SzoAmLi$W%s<*Yl1oh(e6*UMK{ zU_3!?qU3fHb@$^ee%|26;lWsrpq_>ACdTrUt6D8948fFLTuYJ z(t~lH`Oqv5H$UI6(Qjw~oandr_DLA_Lenh>A%H$Fal_wHY0?_A8FuxE*4-3vBFj!7 z0{}?Gt-&D@ZbPHBt>?t8><5_3=xnHan1TO)xv`iHE?&TR6N z_(^Uh32Hv7jg)UJYJ}fy%x;1Nf&T!cV_3u`k;P0|>tYzRixs+>3FsJiL8F?G8rR)R zAv!$J^(@^Z@15F4`HSa7x_CkGEz7?{*D6;xM}E2NapfpH2;PP@+{pc@FFn>Av|j$~ zf=`y$F@hiCzNX6O-5)G}9nps;yKi65r=Lhsfo&m%ubHl4dtVIQSROCv}}PtlJMg(cv`_ErPsgB>N-OHi`h&M zjcDh+SMNaOwaW4=10gl4LyT}0tI7Mw0Ksg-37ztp9IJO+cz(U(J3__qxuZ=L45vtC;JxRI_v`qT51{AWw>1 z%e{|}SAl66nBQ=4Gt(-`ShXL^Lkr2R{+L47%I!0JJv?`nHz>#mB`L_?Bkz?q{W}Y_ zMSnEUO4l(qolBQv3hCsIX~YwGqo009CqJy=OxdNCE618xv`^TdrTkkL7Pyfy3n=Ge2p!R_dcc@v? z_9e+G&e-#Q)QP;A@_tlNM5bh}R|7NWu$9^{Ur!dDy`oeC%0Y`he##wj9*H7B926MXM;uq@guZA5oSn- zMJJ=BU>z~ZAGlwD=4bbEr%XT0Li2*RK#K*ym6%DP zZ7d9Jyb|Rw78@N_pPpT}(VLRm@P!_+6pCMrhPVn#G$bR3#wixxu_!{@`E_TprNCEO z9T7|V2N4c3^loL8W!EPtV9rz*)2UHaN_b!o3}G!q=gB~hd2x!DblB29&pFF-oufw7 zj=pcb$Z);>Wc5J!_;wkNvB^X}nX_Gr^0-;rKCum(PDyn?CxH{C8|p8UwZibWF5KS` zn2l!>puq}or%kfDu&fWJ{7DA59w;pU`~45oncrTJy7<>Q(%5!NnG$e~+AVdTUsCo5 z=lE{7>1Y8kN>nmJC~zQPF=BhGVv&d}5<3ckz_oLyt;tX4)r^-ai&w-coBkN0qqw!& z{*<0$mHC=pS7XjAI>zR-OW?pF>dpiVA_X~Gipp{0e2Jm}3Q+=qtIQjxZi%9?!dB0! zpLf1a-cv(|2(UphV%{Xl;pl7$Z?ei%&)mzi>Fe7NwI7_O}Z{wL2-UF?WLJ7CB&B`Wo0fxX&O$zM^A9Lx1$ZGTITdFXwYsUx|U7_G> z1!+`%2%qc5WsT;w=R$KGb?{>y#%j-Y2tw&JiY4wAvwkOl z&T;VLrrgHL$yf5yvu<+i!ch`k8p^U;VmCYXV~=J+<}D>*;ALZ$_x3Zao-v-`sM)6I zFq6dgBG5_VH{&QY= z){LL9De$wpzcJ_5Ax) zTNs^RE-EJ-lm2;|WEI!{=>(W^(J?#<0+rxqA5E$`o{KhESY0Mu;bz{4Pgm4PG|2fQilSq$smY`lROshX1WhCgW zghknH2(K_J3m;rG8y##xA~Iqhx$3XFc)U`$ur;e=r#17+$UJQbOCEY?vMX+1r=x4i zk2$5kNP(01wqTP?DI0DD?G0nX4o=6ak@}F;?p53=wwz71s6v7a5_V3- zmJ&=-PDg|l-j?TeCIWT6-^=o#mNYa=Pd2k@V@_?d?rP=izx;U$aMu_AWA&`7a;D6N zd$O_RKMBDgF~ym(>asOTDqArR-EMwDX2^FF&ksN=c~maFR4=FRTBc*g)YXLKj5?%Y zNlaT$(}pVKNciZTX)Ih10 zv1R!@$TcUK>4~TOF|i;_g>y()iEHC=K(|@qIuxGGun|T zWoubfO8>sYn5THjr=)a7B~`%j!GD=loXx~j$}dH7wf9W2^?}>yBH7~ale-_Kbp^>}JK2itq zGtW_lRv~Ci0QY>lx+8Ud6w4L*aOW;v|94N0xqGP*c*6{7j4{N#wL=%i2da%iCC(@1 zw=4@E5UaF2oC%lvLVo5KMo3TnE+VJf7OO8mi5woXBBUd3#3!+;5lIY0&L$WNE4(Rg zA=u$Ga#gFloDMmCl*e}c1wPc$z?2}UV`zgmcocKC!KY!D+~4#6lH)_mgg#=oPI zKq>(ba{U?MC7@}p)>S&`@mnYL_1gdl5|~rL#{1+>8Hxx!b#Q8W=8bT@%;8SQ;U=0F zdqfvd%DwQq$UQjwUJgAJ6~Ue3a4Z!}&3WQ?aP?ro zP9<dFHHe^cr@a^vR;%7d81*}zoL;rn+_oq zgGPDE80qj;t;5kD7qSn_kP5R4Cd=@#Sh<2wWe!IbU@lI8KO8yBs&k+c{_ZjhRjh)D ze96HKB%N^{i6nYXrXQf=m2HCgmo1vVDYz?Df9iqqITm}68KkfRvlE-A))7rFATb(QRbrF_ObW+f z>fiDFiDJR3u9&WZGg2S=v%ye^l>l6$YHyf%*P7&$SbtrmPsxKwQiv7reut}OT-Y9< zp}b{{sr(2bQ=;B!HTc)c-(KAxX8()^^LjCC+6S`QUb}y>tOga2QA=dk1!#yYLblYS zKVVM9PS1H-#2kJg0+DpUT@}%iIe-N-0X6&Jm(Dxs!pCCOIaw3&uYApi4oC^gsyak+ z`af@-9t@|?9&?l~G6nIk6%UW3{>m@2Q+W1L9YGEmh%tiU$HFBhKsITB%IQjYSV2(& z(gp-!fitENz#m+r23Co71KXpTPNLm5`k2 z)qhQx71pAp**>1p-Ks>fE7OOF!v%Q!Eg$XL2hqkZBDC4A|CrpvO9T8qu6O`Gsqz~> z5&^&xGiaO_5vUL|QGLk1;BOW2-Im0)=_s{lChYka8Bm>L1G07nD;xR0 zZwkXY%9&!~L5b?1B}%nRBc|g`W#2Gh;FHSp3`ce1oX{+71*Y}}v&&p4OjW2L#h%dI zU4%wiPuk${R)`MJjW?l}Qk6FCLvTWOJ+RHJ_FG@Y?LaTcdB}un99F%{Y$zLls2@pd z!O*HhVV7FDqv7|Qpv(r%PtxXknYQTc!hOt+2q!Qpn$x!Wgg7J2q)l~+@o2QBpTi_{77_&~yXw4?5t#tR zEE?V*;VDO#zyf1b!SCIQo30i!xPT$r@(hQz{rZZ)NvZ{D$6&&%2TAhQi-C$ETKtj? z7H#;zfdz(l&3U(!0?@>9CpQffuxztr1GRODQw^21PuF>mQV3Q6cNuTR3F2Y)<93?H zjYC@CJ_;r&!3d`%UyK#1H!udAagsN3SKd1Zp}-3`lohuW|IZps_TSt%zsg=9oVxQ~ z)Wn_K%j}hZZxWy}k3=9N1`-_+=~|c?GS3c|x58EpaX0xTqN?lhJ`MM0Vpthdu@0`E zq!3HIW&JESl9VBe8nc0-G4KNOqNUUz(KZNPh{5RdNKj7XJz3$u)l4U{M-?Aa*d}dw z@rLpNIWSx{6M+SMhX6MJFxls1Qlwbg=YqjM@ifeblVF@E{4sU& z#N5lmF^_>bD6G16_txBD8Mk@j@zf72OeIiAY+}E0ku3GX=M|KkPiUsFwO)<9X10Ie^$-yB|kBV-~&c=Y~+65G- zDR45XsALpj9A(OLuO_#-6I;h6A4i>wg&15FQ*et3>3IG0{CUL)XZAKBtUWnRe8#2M-iw%{8O|y6o`@WZzE2kHLIQcQ4tP(A zh%dKW1q&_#YpKNNkiGgW_R4pG>^>BO;Ze zYn4*|&OCupErjmio}P`e_=jnI)bv+*`yOL?L%;-Rn~O*8tcz`SSkRpF+AenfX=UW8 z?X|LLtgFR=vBl&m_NGR2?jHtV&&CA4h8X$k{Q^q-N5sMp(}q%}F#ov3 z_WGov2e3NauIV$;)EbFoZ2QgM(Wqz{fn+pv2b~B5#J-c=iLD~TI)M;7UY(<_OQ6KfX+_3|<;D-&~!#8d^;EZorYo*y-A8 z%zREvyNutRhd7UEPg_ zYGPaJfmS2ou9~ugV7$U&K4xhaRfZh-v@E(*|4aQLHYot2wx@+FLJ+8sstX@<$f`0?ZSfA9of{`U7E##Z zgvtH93K5FtE#t|(b$U4$jGm!?hTfz$OE70g%dYL>@Z}K^XWA@ZD3Rn+rtj;Lu$K)1 z^c7~;1fUxtMbxluNUL4QmGuwVAf>j!6&rFtc?o9n>y5{(Q_l{iZ!-GV{bS*_f)$gZ z6Umw{5yHN<0IOn0_xcYWLnDJ#``u2)C;_trJS5>TeH0~+O2_b5IT$mBg>r2cn3Nph zyG#NkoOrZ3If<`;%d9Gh0=|17TBNR}8(vUtH&vNCew5~Fh(Sk1_uF3I?^jm9qbzo& zdi+F=XoUnSBRSf-yz~>Mo*C`i8`(L=jN|9lnA-NvF}n7O8~A~q*V*H~uVaN}z5Pu> zM+zoa5)^aQhG&q&Ig%dJsABi{l}oRJFLS>C(C4r-0~lSob3~N5@UW&p1SetuMpXU+ zU4qe)t7eKn_3nftgwwrf^~ouinZ2pwXM3qres{ADC`49V06N%!OK2Wv&XYIv*=tp+ zbqy4i2*<%*ss@JMsmmGfW)S{>?w|)7am=+UZ>pNs`QDkTH+H&rQ+EO0e+?fe2A!8L~rb7&XejLzKjym4>qkvcZU_YJyr{B3dblbpX^thoOTZZ#oy}j_My2bGA7qz&4 z3y(kA4{ia!_bma=#|XrCeSdE%9A%;aYy^isyFq(e52fUGWTxQ6V>EryDP8cmoI=bP za@||EA4i`9UEGsR`}VH~cAb?zvKX4+mB{)WO%IHv-4Tmgk^Y%L*RTQqXu%|6v?%oY=bpP1 zvb}7pm~HQben{5-ua3dsHGAH`OI2F?U(KjDFb4J~MrF;2L+ZmYO0zSy;k9(7__n1t zTYeR8qE0Yqb+YwB?2_P(z*dVI?Rkwu?w0jWPyPZ0o!d1f_nkzF-s-?DwbolRxt$Cd z-&*Y#*uw0!w1`lzWdC)1xZYhO#%CL& z82Z;lHr+WlgA-D{SFw1uB5@FW44XDs-s;G(Qiin+7WSk45Mzp7e1y0^szY4hRph!x zX?0%8!Jo7j8YsTwgq}#=>4%;c^sDfP#tP!F`))f>8O^`=B+m}nKR_CVh#v64kczUhy z^=PAIzgHWL<$#{25J{8_@(pybjj}D(W;PXk)-~^?HpJ@7{AfQ-MQE2XpTPYYo#u_H z4w;|07v)DA&9Av;{PmgLJ4UYGyy$O{J$Llj$6xH5aoKcuf8aR}YCr%tkS&X`=tZ+s z(fRm=4d%gaH!4#I@N@R5X9>2hw$=r%A8r0z-6W#$Y|S^${R>+eG+5XS^Bhz!;VdNZ zsmE$i8-ucFSwWrI&j*5SHLu9PqqmRPN$oK_YEebTyAgM99(4w=| z&V9JZx6`b0*IdK*Cc(7)PRpU~s-%w=uQ_}0)BKp{3m~cE8jQZ;t~Kk^W~RPl>kLUz z|IYMQ7Rzg*Ho772n9QXyjG@#W$_Aa{z|iIbUCI7HP(V{u(-9c}2TmUS zkG9_t*bgKbOt^2n?E-`&$koRPhm+_>c<&|D}Fx$$zMy zq22QcjJJUR$m#{oeIou|Yy6E#=n9=5>L;@XJ4WOo=p3f#=x&Kr(+qjLIy6gN&ek4k z*kAM`nc4QGtK`urA4#pFCch3>E@EbdVn`aT3VjMP#8d7X$T4i#CJnvdQ8-le-r!vJ zm{w+(d&Ri>oir6evtmN*%phAO1jjBJ%uK-|hFy5LC~ED0K|j5%`@+`P9P&Beh!@1wUnV^^^RU1K+?Gb(_s>N0uSxp4a`?(EubaJQx~ zm8D*h8-qZRwa{5PmD>=}GMasdRxC9m*4T6%N@|nH>SsIbNnKIJRbY?`Ml43k-5) zzsLSex&wLk{vvt0+eiv!uPn-IPA0)Wb-cEARrbpzB!^+{kb}LWeFkCXC1>+YzwjUE zhf7g7DA~G$BD0~Ej`dpGE~@_5+Aoxz{Dr0isoS`Xky~`Voyr>{n>C1zxsHmw%mTdn z_#f$KENNFb1%6`mA$NQ(*m-566Xsp{go%tG5U>VzZzJ3-Kg^ub!dhPUu@^xZE5A=5 z@WtHhvp~QBt-RzDQVgZC+~GbiLpCV% zQGzV|PxKyRv$p~4Y-g;}iGy`|Igu5sX;aV8vVACO6)J5Dh(jnjTYvmnCI6mvoBwMu zJ{9G{YPb|A-H{c@p=jRy=iqK*+haBEfNLCj6qgO1lGZ&=e~xAq+#K0L1OcMfAsU3M zWG$cZ9QKy7{nF4mTEE;$GXq-UB@M<@s9mqiZ0l;(y_Tm77w}n<3+wW}cCO@BjK)^> zb8b|;hSIdT&IT~V$$HZLAC7|QmOD*(z;Z`S=ea%2rkDGWVEn&|OjD&X8Gfp~lZ@tg zu>s`Ece^G!yfi{BgwgnIBWE&h?+Wc z$gch46zX1EFP@QACP%Wic9ehb9V<*p9p|-IzY^I^ewC;=lsU!!E)S)E=oXKlYiwb+ z*((7PSRQb}Vky8gCr***8gH67CIRXJhW^zjm)eMqoib730{)h*+2m~^jVW$ZseN(3 zE?KJULafk!pKg*JKV#B>a}o9iZ&%Os?Tk+b6JjC$YV*VP5YF9p8~P2-#!|hU2daO4 zMb4m}!g(LzcuZ&;r^P>1_+Oz)juKgcGB#x$9B~Qa^aOgT?$_i8&bVg9w=&-SE%v#c zbu|XLG!@=vR9ygBs*BEZrxDZ65BCx;-GZzF|DZj6;5G$7B>{N zDqPo!3Uf_CWEN2Ak`8OBdhSE#1ZGkxT6ZotFgy+}zhGgJRcHU0J%>MLkFU2?!R532 zR|jr$av{0C(%s*TJyK$Wul5yJF}Nl)u8Q*edIYCUSi_-4)+D+lQRP#&OZ}URufM12 ze9!vl{j5gN#_MDA0^M3Qw{z7<;-{Y&A zgopK5mAdOrgKj2tIwGARmpRL{avg|c0;StJ(XfmA>kk83`@icj(?CzXio3i@IuU58 z9NCxQs_FnzddYm8yjeey>^e#M8FCtY2smk3mo>|Z?#Y_LaaD~GdbQ*2+P<(zIiYmr zm>A~(=+1AuK~k8qjdnMoOE;YM54Z4c_pK;8LhtfVX0gEobZ$ zvO5QyCDdemOVU~=`Hn@OrV(qDqCvw;0ps+Y*m`o@|op4Z^O?DJfB{2={>&1eZEIoNaHS6J%(AE z6&Z9A&GJ}h?tfh!53dY6=Pfv8Elk|TZMNCeJ(SARcWL~3ImRn3;Px#8H;YPlp z*m5jP7!e|e$BY+YGiw%NCJ4DPn~^RzTYCEwlZjy>mLv4DNhe#Ttz2uHwpTW~UYeUd zdh1?f_DNzet#FP+-R#+HhPoGKyDBhjWK^El5vMh${)OgD|89{lgSL0R2FTotlMnqq z%YEKIK6zdR2=ea=5}~Y`LqUcKIay<1FX{`7F03#G16F6$PBn2C*hgT9z7 zO%lgqG`p8cD16d=ax^Fa_@16eXvAnlGESedZ37JFmYTUd{q%I-J}_>NzK;$fdTbln z>ACCCd^i_+nxq+f)h17|dI8lpc3))Aj{Iz^%&}^o3}`GFWQ?ETkG9{(UR@AI&|Ym3 zQqFUgZ?)=``>p^_4l6~!?z96cPA&l}Q-Fhb^q2R%fkAz2kLJTz6E)!cxuHC-;)U9 ziOg!f_g_b6{rGF--)D0+l5!6o@~ZFQ^7>Pei)I})FMms|g>52}S->cTpdv8|NG#Uf zcl1esyMS#!JOb?)xh4oMbl;E{;v+dQUfbu8qqF~GcF5i#EYgXKQS*rqVICxm0RkG@Jpk1m(K^Wm zH8)El?k~%x1Y3Y)UdS))f0oB~>m6i1c-3zCw3Q~UYQPqK=vxeKY9XS?Tf<$1=+yROwm zCSS!TI#X^1?=;h$Ez5GwJ5XQ~pCHa=*}Yt)Z=Xw2b}!>&o2G(%w63-_hFA6V|Jio> zZQks*eB?IiG6bp`wH#ObAq(5zZ$1&`kkUD8tAWV~VQkb``tO>gcQxPI0i}L!bQ?T1 z9WEB)E752AqlrM%`eb4YONh|kOLuTau43}ub67v2i#x8pGI7pDuUPDtxJ<_&;s%*z zwm+s+Kz|guBLXn?VoEv5GY2SZtXse06L$AQgJI~IE%v*9n)ZP{=<(b?$)j6u8NPDQ zfxat4h>>sePd04Uz>^U+8}fs76a@>(>~st8)y&yiXq$eyZqU92r=1?jJ>iwM*_mT zKX7kPAm5Vy1E-9xRMO!yFND%)p{e`q z0`c1!^uxi+l)A$`4J@NWp(TdBLt=^TGif0gDNZmbF+BXv)_d9+iYPMXuV)rFwkBL- zLGUzg)5-vz5RXnXA^^1r$V@bB-Zg`AE>LL640PMR-VbEk;zUi+WUadCs1xGzmiIf) zY|lEcrLZkzwp&*mUG&$@t}sZKOg)tC!!Kog4^B_qZfTg?c{wZLY-rM?gd3RrPS$rX zv!_3P^!T;|JuON8sS!(ds1JTIS|gosEkkfqUFleIwFkvHuSSE?f##J&aRi_nt>Y;9B7@~oxYb^V;f{;Sq0Ri_j#cOgMPIEM)D;h&p*>8oy4?g*Hd)Hj`7e2_K}*Q zudOeh63lsCLDop2fpYF%i|nW; zQmKeqGxHIvHVZ*5HgD-#Sdx4OF4IvrCpB8qo~TAERzbj;y9NDhbxe?KXTITNq;cdl zB}IjkrswqwBUD@U3y>zJ#=a0~E*CKS6Uk>*FMlrmeQ&K4I7ob4(U_`n^4{Hu@Z{9X zEeD}wlRo>? zgeyZarC)-QFC8j0%F4b!cJB}3)7=XR(JKIK5a-sb`yErdc4FO$l)$;&`j;LO_wH&C zflH#d>}Ykghh;YH&c%%BDEYaJvF+}A8Q$s#@e$HY!*-v)p;Xhnb`?(6kHGitq>5XT z;ZfcWFCm$keP=y}@DDMYXUPA=4eGpfM7yCMwG|x%5nsLkAH|1@qQ1okyCY{0JYv)T z#k2BI{eKi6fwOtDlI;1sI~GVu<3E-)^Y^{kM&2&lbRj(Vrii;q?0To+A3(07lfmi~4ELEg)f}6R&Go%#3TVO*fXC!^YEsJDC z4DO>nvXz8#`EV^}i4VU|{I7GIAI8TcCfgsq2TvbM@+7r3A|fUZs-g}7#MF!f_Njp+ zRb)lPHWz6O%EkKY76|Pw$gkcWlsld=9kFZQB7gS!_|)6OftJ}}1w`QN@@7h)g31+dJb%_XZ`9 zT019IZ!5fs%0us~rSSLlhv z0_uyoWruaTayt>1 z&OlMGCGdvfOlKx27xig7zscw@%pBu%y%TICP~}?Bm3m#UYsgJ$_D&Won7Z@6@zpns zZCvxs%zt^;3r^3>J1vo{d_KRyv27NAT9usWrEM8TA#>70dYYj(6uN{TzzrH^b4SYp z9+XfTmWe@V?B}H?JjiE@el<&q+yrzwY}I?rO|KJB#jbK-Pfa1YJuQF`2(xCT{uL_+ z?|4p&Q#`D)o`NBu4Jkp_kJ4W@2A=A|3KvV;u0Sp+vp+0xXd0V&%Y2OBVwGAh_?^Qt z5{(ec^6UcxA!s8%W74ikhso<-#r$yK-2%z9bw@3%53>crChj&?ZAuDnFC>2U!7CUx z%|>X9k##gd=r<(p_RRpI;>s z&WoGnd|^|Z$DAH(>cl75gPTE^hekwduu#x4Umh|qW4xrhdtdOJ^zdB<^FopU%0{r6+mCr|8hegUPDz(d{DA zrk?~HZ^FR5eXNh*eLXW9DIXpD%(Wgr_&MyIG(odNKD_rTuGhwfHq!aKzr zb73Hc;P?}MVZ3;{JurK-s`C^6GDc}MC8|_)*`+_{8QtO`Y6bIPvZc|ch&Dv_Ye;T- zb>4TaTIf|0f}qpAsi0PviCn#NI*ciYLvq1%#$_!JnqyDW4TRdWYkn>&{YF*?sY5*| zf}FH~DHCm-;QI2R`T60Pq6FsB&`Jp~H^|UD?(Ad_+p4n+okv&HJl=gWfNY`aws&l? zx^7zOt-Eb4&@>R3G=nuBCavS&t{rnq`l|HCyI+O?r(wqYv8LQsP11}6wVIEDQi}o= zT!R-BjA$#4v%NK3_)zWs>(RhY$Yb%2TzO+}6WT(){SS@Rq@X=e;;Vu-E--&0obWo& zyUl(+R>@tI_B&&8C>lt91BvT+jPFG3FI<`Y2N|ud?Y~0Ol+4%{jNm3kvD|O?ztu`_ z1rR%quvd@fmx@Wp9H?P7>em$9X9jwS65tBP8fsQ^x%`{yYr^PeZ(ol}1cDxljL{;0AHeMu5?9S-OE1k( zbIue0ej@{dQ}QIwjLXKJk2_br5%pq!*Mls1hC!jU{i$>fb;xtM@UGPv%<;G&zK|VH zr{8ob^dw-Qe!+QmNOVhd{a^|g3Q$HC66&rEOJ(Wh^2{~+fa5xZ-es$Qq-1#NeXL`w z&=j_dA3J?%QDb!0A6hixh8F_>d+1hOO;D!NOXHNE;-+Ii-JQj}MP#;Yk`&FI)kGFE z%YbbL4{R(RSL#wKD%%%#Wqj*RpmnMynGBH`A2u>A+L7QqWQGawxTSSkveX0}V^NI& zkpj|YnO8Ef?N29w#$rXU-DZA2T*p1Ksn8d1q$;UK{fS|e&b6#td(AfCfG3$Y_Hizk ztI(40aF$63Yp43ntYxC_TtW(e#hTS1A{w@)(^Qv`hjli4{E&9F`oWzvI~<>Ty94pk zvYafx0eW%I9vKC4e#_7B#HeqY9qY}*OuAgx{hN*PhU;9G$QoqKRuxOS((fU_sDd<=cIvnr?6}(DbaH2RDOge5Ppt?K{>A;#{UlP<%uSn$ zjWN1a-rOyx=Kv|0l5JD&eK9|gmz9FN2WKlC>!+>>Qs+yoqFfUFTHy2#O2>Qvy=CS|Wh#iXHuTWcn&Vltz#6Sr}EHiGffgV9;{+e5%+IYera zZD`Fpih|}k5xZop_e2C8qY3Q=OJkXJ{SbU>kqo+W5>(+o+pqVmbP*P1$&5yQNF~li zMNO->^zesSm}=4h00ArX^qN^02eO1aJ}F_+g@J5yv&>8KvE0{FkKCEF;?Zd3>VEfhHfFj4oT@s2(2P}C z6E?l`3=!bcf-YELgfBbMphHD*!r>Jer=+cI$EU1!xp132EUcGx0Sa66XYpE89yUqT zMI&!VS&Do4d;s#CkBN;9ZD>GS(>!7E+>Y$>t%v-2MUm0$n|``q13rNsGo2AiGjF{i zAWB+ZD=0~E-`S^B)GXyxaGasW9Jy9(e7L+CwoVKi^IaFV;v5&)--k#*WMOrxJJfQz zIuXgvWf{*85hxilRc!40l)K*j$zQR|5%`)|TzZ5Yl1!(r1f6~@6NY$V!j2hnBy;|L zVT`64akeP&bh-P*%(^$%HtOE6Qu@A7kW2_njajQV%u|I8k0?)YX)MrD zs-M*3%I@#GMU+JI`S%lVo{GMD0;HGc)34dwhdjS7o#|*PhxIJSzLtbJ%UneZMSpX5 zAQ-&9GUgEA2T=UTks%9jJ!3^72@G`>beNl8_rjpDHlRnBTmI5|;K)HBia9OjzH4VT z!01ZIv8)`bTd8~wCA25&#T1+v(cpM4>UWTDE6(T0`?p{5H!LK_@2rXB;@rHsa^g8bWhh=1#Sc}$q2#J?RG;hlt2^p6NW zCfn6jOP;>*7uR+{FSw``Y~_Gzr^tnvILHO{z%!h^c)Yl|)F4~Wj1U+(>*;`l1}m`; zJH=n(C8vUWpmi5*xKCif#(UYmoSRH~A)C2m9mUlH{+{PGV{ChKGbIV|W;+88ixt7% z6G~6bq|R86I_8%GDb3e#Pg=!vd{c;~dD1r&lLl{gv+Q1NpwY8?-WadS6aag?RrBzA zH=o=8B*iHi6u5mc;bg9GWl$0AW%WrO!SB7U#xEMKweKXmkaw+S^#8mbRm@lOpTf?p zUTRy!s8%IW#f6x)3oLInz>v=1hskbs7;=aIPWdZ(d1p(tLx@ShTSY(gV;2@baA$5@ zW(myL#~kO7!D`%+CkkIa*P!?Lvyyf+%22dkZs5306#7*2bO5p@q3vW7S z00#>!C(d_<@6W;!3oJZls`#PY*B&J@YLd+8M~ovpAgYcZX(6k03*lSnuTzlhM8!c& zQ&Wgs492PZCq4Mrct*R=^;9z-Rb7k3X1HjNe2x;2`-q3akwWrzby82OZ^x7(X{akn z^k2GIh0%*$cwbsGx%kRs`z8jmJ`-isYNlDmlsG=C@^Qy@(yM-nE-wq|8>(dO@f59s0=$4BLWIHlUYfjHq-;wtoqQAx7I87QMg8QGPNH!_H z_SQe(AM^`wt^CgDa}a``PZ5Mgdld$9XhXH`aMSa<)Yn(DRrA8t1R zc2Sb9{FACe_w!qPIM}Gq#oNrQn5wd}k2eM%tR2g_biP>s4AJ?x@cb54>KtoNW%`sL zCMmr|BI{iAR7Z*@se%cpDwGpEbl>3>6t)E(qJds&xs{0^ZR6b5X@Z=Y`-tVv?{LFI z)5JBu_ZP^oyL~Xb|3~hJ>wlv)|C{?^XZo*>^Zz^d!~P#7NQs~S|KxuDd;b49_rpoZ z#QGo8NQpt5>qq|iuUN#-&!FIBZ>((UqRpTnD$bx{>fxfxAm-sBq5L1oh?kc^LYaw> ziIe5O{Unr`e>(mjgZ)oO2U8~(OH=2cX0jrjKcdlpTgi%W5wf%W&y4;rbNbI({@+j_ zW-caX_Wu_YC`o7*6$~$$FaF$S9D1$zNEpgxyKT9#p`M(*0LW9!en<+;{3x%??WBsqkFH4w648;0%wVJ6ychr4L^XC3Hy_32(Zm!!Y z%WAxsk_8Db<7rY=m!($v7}nmuT9wxU2HYvl7z6*58=13o!FFP&5$;25d{t}Vv?&?) z6x8%UJFAAFIG&9(B8`n1F5*+NphQf6%6e5LWf z7TDSuFDcFxS2Jx|6nF!LRgFx4UMoMP71z;L4SN3>W(;@)?c`t97n?XKd9;Bm z+ib^Wfg!jC6xVWK4dBa241bwUR2;5sA z4{Vd9e|`_;k2}aFs21--9UpR4w71bEDUu8#0dk4WLz*m)_98<4defm{j8LQ?+S5B6 zB1Cw_h&X0`NT<}U*QfoUF&7+64s)#86y^~&p)85%ZMa86rN;IO?~xNtSo^U9=W?>e z?01rtWqo5{aSW`^<>Khbdo%mlW&&tf+8yXfeP7T2*rT3&nzwHcFQ!%L*pA|musd~pi-uO!ogyrQHACTV>UwMOU z6expF=yMSE9@Vd31=>!I$xJ~!ky5_abW`I~LBwX-sQ2sQYJGb<6}D;%AyH94+()3} zNPrcLtY}{;6}2qCdh?b_itz?0R~YEqEyOMI=u1F=$%MZr(3)&_r`@dDQb9FYbKaye zNhptN2dERZG8~l@P@-)SjNcQJ5c@hQ-k)05Y)rc&TrCngYUuy~I; z4u~vDjqiO4dNTD&;I8L z0`yy8Ba3N;Ud?pdzRjgb3E{k6NxZMzlH`aoqurf4{c3X%#bQXnXclEocwdwPZ6j|L z7}I}vpd0vFQ>@M4`BQB*9g^{1D9J>C&dsE}g?+kDuo`BgA z$M`uXyaZoZgK3C?7?zW;an0?_dvPYZBUF{+(clXV1VwI^0&`_e5sCIg!)aGg*15|< zGt>2!mr_P|vwT$<}$MzCNkFSQtrNVM`I;V?vuP)nz?J z?Q*4%_Hu`^H4KDa8X@y(qX!kSYDVFhyW>4W5Q)SV7f~oP|rbT;9ECR$$3d@sqEz&H?V9)CwFwPOt}(j zBa|*jEs1ZUoP9xw(X$4qpfDXV9e8K7qLJS?Q0jpx#z|mM+qN6)28H5A-Q2(sxZNn8 z_ftzuN@7Gb(RUkfqoDE+m6^F3ksE%61w`n(j9f0J*k5TJ-Gki`_=$DIxgpxsi!T)9 zCWY9y5<#s+O|^j#@cU7BM%xXS3g*B(bcHcrQg%Kunj+8|`p4U0 zCFemXNbEf*uWRw<4@YJhULsD)Ga$kg$QN6_>5x`tKX$=@RfbRmzjIN`Ji%bb>~Vr@ zc17(QgKU9B`peY{t;hR7n532>;4iF$n=tQz4#TZk!ksyXaT5(0TopmYua|KB>68kd zb)nOUn?5hFJkR3xM$)@uv2wU87OfZyr=I%xOgQ%roA}nQ=V0x+#}r~%mf0;}^Okiz zI*wT?OUFQ1h}hA4^#(%*AAvDz4ieM7p5_3F{9;Y9$! zZR499Eg67X26uLcsF?mapa-vcmh?TSmVW9PXvMVo@Oz|-%A%D2W>h1p9J}~fJyX|Z zeZ{~Z=mQYp{#hv_7;X({ll;voM{h(NpGN^oa$DOQXMjWJW@W3P zec}5i-bRcZe0zWo)e)gs7lBL{!F0PtPQ~1}(=ZYkYY zPc+^iBLf=()CV}=PZ}($3N{GCbXpV|P&-EBeSwjN5WprfFcD0`e-DIm5V6~U5R<_% zM~8Jg>-CR<_%+JV_RMxu9)PsF37?2ma=`pjXt>X%D`vzZO~JF50)8k76f4z)A5*_7 zXjt6Ckx|ch6)`5NJ|@>x{b=FES$9*Nv@bb)5?hy@t=Z8QjDcN4*-VaiZp)|r^-N6Fh z5Tt`$=ZR;BcCUgu!N#=PtQK8WH@=y#bCTJUTtAff;(tQ+Z4bP;5mql{uUTljzJtZX zjbAg@rzqjb9}E~D<^tYbySe;QTjsMAXsTT&8ot-~0^a|uSKIi19IVJOnyrPyQNMeF zw-8bLnzu_i-7LV}{r%v_Wt5g(F!W!(AgNCoGz#mQReM2)!_TL!@7&viNdaA93kmK~ zHoS77QKRW*SKh1R&39#7$-OgQYh%{;_dGuVzfjjXfv+(*dxTr1?gL^*@q8eU<4pzv zKd*l`+aK=wpB^7?90Ux8C8hr1H|J>1_9 ztB)S;o*$jHhxgkMZFjGS$b*7>M}=8HHK~V&GJGG+Nq{Y)d8YS!K5ghD{GKiR)VTA^ zI)dWE=lQqWDFbSC&_AS|`aM0Lti~{BY|X^3j)4fqW^Ih_y`s2Mx*y5&y04SDu>_=b zk8c!P{c)5M=_wAJT97?*imOl@9JRD59@lRrb7Zj?C)1NPwG4jV&G9%&6#x{Qy?;0v z+!QPLvqPB_ACt?1HSjJ?TX)DhEe=c=o|SmW;g)he8spm@EW~)TY&0-1I?ak*<(jvJLdgqyU&>ra%-p!1K`fV$OJW2VfJ-uCD+1!(TU#nB6vVl%k>9_DCxe(Tf^hTrZxpxacRR{a z>%$QMMLXy6TT-&Ce1(l{;RW)0!y9%i1u|n&gs(mcVeBdf&#?ALI=Pn&3Z|>|0voBm z{GdG#;6n;ji-+O1d z&YL-{#&AF6^y_rweO=$awOFT{*x6?ck09bn6MD4iD&)C!`&TYDgkp}SFMbId?aj1R z88k1!R3aT%h$Pe^{7MytOz)K-67&J4`a$$Tjfmm?;6#2WTm)t5&aJ+g|Co7%-OJ20 z4|jCFzsIq%Y2A2baYx$D*WP8}j}m`R=HN6wX4}oIowFw*I-!2+VlHQukJw?)42C3G zSVd;4M`b%udXYsnOs|QhV`lPrxo0l!9xtN9lCW)qcb#GY}s4~bHg#(6i(IT9&QrG(%e=6DRXkE!SW{NbUCc*CO<{U%2q3qKlTdB>TpkJ!*pG_)9 zNif^MI84ct6pp+e&Y;A>IVS$p7~W+Nokt_d&r!3uXbfmCh%YBh7z+?d!jcWrNEnWHK8g|s*aZ!-kE0l=p%}cSmvdD%6+h3_{ zsF(Rxsoc;$SG1sxI6I0Fvj?Nik?Tmpm?rtMD^dbyb?2`WZDy!L<XJrqvrMma;@kBg$~ZwccE1X8{eiu zHBBL$zXX_eiH0NAbla2*1Blv61*>z0iz5z_sV6KdP@k?&kb&57dt@uiQ*Fhj2FW51 zlIbTb2KIthvQoWpSqzD@b6SGtmDMIF82}p-FP1i5(A@0YrpBu<1y#^y)HYmL#X-lpU0xWW$}30ar}V!iUexiIzO!7kTTiY`Hs^vni} zusq`&Y4I|CB4tMx^82{NYDN0Xl(L0U->#%X zsadf)AbrhL3ZvxV(ZEHvg{!UqOru>ig>(cUqWwi(QOPeK4^1vt7?nYT&XOx-_HTp* z%;yh1^;AaLR6*V zX00zmL9?o*q+T*q%pVz}&HFMfpRw$>R(KF1E&AqPZmCchBo{#vOISd|vWgm0FhGx9 zpIK8y$a11yN{~}28!QmcMNYnK3a70DitB(S#OWPL(j*^>y6n2gFuKNK<>VjF^J_ig z=tlf}!il#m0kIM*ooX9%C*R-PQut`eJ3rO69DUf&BDbHUq0T6hvrwE$C8(mQk_2yM zQWwXAt87Da(sdr;fi1jV!kelZd&bhk;+SU%uD2|v2q|#|WURCdmAJwyF|t=j*RNl} z`E&|qG#AxV{IS`&Rf#d5K)5Of;!yZl9QKJ!o=C>ZkOrRT3u zyt^o)$+;l{b@&-4?PIC~7s{`&e>fIshGfSd^#~X#8S+6ULnVWZ8N#7<@-S?RQ0mo1 z2Vv>Tk6|>#ekP18Bp>8B1z~wLua#U0+L?D5XHZhr8LG^6_nXaGP*T`KNJe}X!J!dsr2Hh@ zc^{8*`&@vTx~`Y#A;KX6@1o0R@QphWZ=$cVop^xc!Bs}Z8QH}+_TsN9-^g%m+y1`? zz2mloVRpt`!FYX~x?6%Yp7I+R+sN`@8$wm^2AB`7A^Bm39HukUg|K>;5#W)=vTUzQSYvMVI*FAyo_V@^LCgSJ z4Uh;sNuxW4r92c4(LuMO5Tc4*ORk7Ed`<^wqWa#-D zs-7GE5oe`U$Vce5B|Db;64-z>t z34~-uc!%-1>HAT~k@(JgI0#4M$VJ+1%8Qpb?zb`GXV^m+6xyj^AwEGAj~1`IND6{_ zEXASt*I>Ees%=06Mw3%LS$47~y||IhKYG*^7pg3addp>CX0G*UqONnuGL_nN2M<%3 z{i0{Irm~@Qyyp1o6;|S@-$!B;ck#!McMlvR%lo(1H?kLnt znGvIElr_B_fc@dQDvJ-~W&E9)#6}bh?H$qsBkmd)0AZfb(?vDF!B&>iy1{8$G45!* zyjiYYm56p$Q9)2lq#;$6i1b~tF3C~Fl_nv=nd+R<49RntleKBI)HFRA!%qEJ((3O| z;T_OP;rs4N>f^AkXai*)UFL{(0Hy`iuycnRB)5|#Rmj+mpNmm0XgSK6&uBX?YW6rm zla}T6aV(^xMxflSu^i|l&P5{wG6LoGcgY!803vI38dgxD+0;oyRF$y~2tN!o%jn^H zjueBU`a5835|k(3=MQkWKX4ST=q>f?x3rGoTbj&CGYMGK0bPBXI~;4{_&%bCE-}`k z>w`SfBMX{i2x%0qKiwMus&Y?Y2Nd!U8&$9O{Kkxp=Sg`g8X+73X)>h7f(wswJ(FGk59%?4qwmyFf z7BgXApaS0x*-%@tmb3eBqwiCqe;$Z%;eN0S>x#<2(KDXN@dHcEk$_=iNn4svpqfpT zC>t^up+=o(c(;m~4xtv#t&S*~wK?%5exQMC6fZz4InoKYh`S9Ty51y<87SHX8qhRnaXrM*ARgPqOeHPVHJc;m>MV=f4HLb+wxBK_N(KU%&oF{EB(p zxce8EbsOnVZU!FM0Y+_cXQ@SE=YF8>?S0K#U_}DTL}v&!8yWxi$qx)=7yx z0$TmKRNIauh&+4e5O1O_qDc%R1G9JGQ+ELL=rPp5e21?)pI-FIyVp7X zrw^d1(VGePVHhi!q3KTukbdy0UaCDMp(GzWuQNGb$Tc5LHu6HI&(U4?; z%Lm#}Qop#?xw`&7UNn|GKW7IU7BSTw87L(ph8Qi!Hp$t!4%1X1Z1Y!dWW1ftAU%OWH#ylp8a6RuD} zlo%Ah?(-fOGUGmy_hmHmiWz7X6i z)`x_?xjhkWUAa$dNb>4zqkqt!T=zk>qSnFP$_QLE!Wbr%;(Kn8s$aG}!-2MlNP*z0 zwt}A?#2}|G$=P`m`cCMQES2qS3v)kJiNlRR7<*Fz@d(Nn|J z{Si~4D%)hDw&-f=TD-XUWQV1j%!kw)SG{4Y4ju+c&{M~*Q<_Z?Y3Y#gB?szlrtNa+ARJAFQTP4x%W zo4Mq$kEn#uQ{RypE>4-Phf{jA6_euqxa66#s-kynT;+Nn49#%xsLT0v$sD0Fsa{^i zWT=V?8Q4@$EraX1s3T%QwPX{~T+1QEdz%VoL)GN7m3Gl$qzWp>5LN>kHb7PRl0l{a zQV;ExiW0VqnCECI>B)<1Qy+=5lD{8v;0x18M^*F32!G+>_Vv3!+QP|bmAts!w;A>G zrP~uWv>t+yj;dAl9>(n=>$$BcgVJ84aP@1`ISp*#oq$<|Ym&HoY}-_pP$-SM6d|n1 zG7YnVSESkT(W!b{TXzi$`|crr50?G9#e`-m^k0MTr5K;E) zSvggm*M9eWhSz28dvP+|%uC_a$6=7mQTqmm}PFEQ%CB8BF)Gp`oGFmC4l1AG^FIMsYJ-ZMwbL=hhApd-Na} zeZf6gna`hpKW2MA1;L-G0 zVzUQx)s;7HRXhO(E;&vN&5XI&N)|{`XoYy|P$5RBN52R$FHTvF?s%->yAFsoUJyT} z+#nylHN`jTfW>(gBhkXJH#=Dn?CE|Ok$ZnNa&6&^MZ>fT(7J=@^W-4?s@Xd8beeoiTys7vC|heIu~ucwx!k2uz0)#uM3%}a3m z@&Yqqbl=7xi3`~1ekPL@*nzW}#```*@@qt`(t^;?^mKcWrg91j0*doQynhf5lb4Q+ z@p!zs>xwXkGq+BoWJ^sX)*3<0ZzTd2mb()r#sgxX6&Z!mI6{rND9!7@a^utApEa^? z{1`EgO~+A}W#}}IHad(NNl{!F{;w6|FwZX0KK!F8a|m}Ai8T3QzU?U;k+1ZyP*BpRi3JfQlsc!U zt8|CLx0j%N{h0CHGNbgJqL>$eVO_Yu*vniDCr=FqU|>!umD1ZejY|OuS53VM$Ue5A3@^V;s-Vexqu`vRHWvM!gF`d_5qT(thMTo(1^XH zd_gdrH&!^T85Z_9olXLD$(yrO9<;_ZIgS;b&;=#VRrhWMeTvTkL>b8_{H;f6wr9f^ zvs+=T>K2yvUU!k6ZOv}@VPDRky7+Qf&XF^#lPJ~`(3if?mPXE6vu0J|(weIgrR6%L z(gLH?g$mZL2iajngNifl&X%4!#&Uh-Ipm|`>{zH@O&%91)LeYU`w!WfNOqT!>-TxT zN2z!;{#pP_UU4!ZpD7LxT+I&pA9vKh({C`L}-u?L6D@v=?XSY^FDgnrt_nMOjJvMs? z;d1(=A`QU{);(%3$L;Dim-R?^(rhW1=y_wC=AWF&6==H^i2QOB_<7yM*9p=tE^hne;x0s%ZICrS;5=DZkQ zasqq%gMlcV4n-b}YM_sD94+9t&GlJI6av!IK#P}?t4*wT9SVNC{!L~zFcJj;M(~=8 z7ywym3;_ofNv=U_qFqewJ62j@K4mNcen&x3EdX9Wt81a#4-DBPtGl^Ri&{kE++x-o zrH;F2ZT-5V7aJz7S@Ma4F&yqueixq6aOm!XSV&obMvc%7gY56i2MuJR8spK(2tz%h zY1x&98HhBpXIl)oDuuLK3~&rD0YhP@OT)AsG6^?Pij}A43BfcGFq5WUm9W=eB- zREYZB8-ocuFhqEFQ>vYHmUAPdK+jWs*R&XNH8#8_kz6JSpL5mn`9`xZ`V+dTr_oX#I5;Fs_HaV5ekap(%@cVgYlw3|71Tb>$#BlF0 zlcV-lUUdr=(}N-N#D%be5zkGqEKenR=J3*il@KeF25>vE-uSa_sw=}2Th-u00QDEd zHW~nyGCz8uOrJl&0z21%x2!?99TPDjG@>!?ac^U=MRz9L2aI3<_csL!tOT{5DE)5l zm>IOwIml!nH8QLQ@id7a*XO)iZCVe7Y|p5NT;zQgeLIr|6=VPgFE^5eeuu4 zPA0Z(+qP}nb|yBzv2ELSGO=yjm}G9|xA#8x)E{-~R^2Dv4^~%qb$8XOPp@9<{nDT| zD2e&5Ch|^Z%IwpEYf9t$HT9VBi3}StgPgw80z$;f4D=>bLmIzm?=7N;K7tD!H1G*s3rhEerH?&dh$-i(}`YWAmYz7W&l-tggOcx zaz##2F$(Ox(K+0pFIe>+u%81u?Rd)t!_f<#sp^|P6dEr5BcW@u`*?jCkQMjI>T(2) zp7P~3mM-EnMvy6zG!HSy2%RNj+puWzcHKb_J8p{%ibk`aAarv*FX#p`ICJ$ZcF0 zz9}~w@P6YOexQN>if+VrY^(nw|SglYsmd5<_l<({DFW~ zr{D2qig;{9j43=C$xcGICtURF1kx;$RQ7ALipub=)0rH;?peM}sS|IlG7cZ6s?spH zPF${n4-CPoZIvX$3&c#Wu~WIrs?oU5M8j1j8Q|S^*=af>O@?08z1u)0H_YeQlzsuH z*=TplGnQJJXoezO!4TL>3&Q@3mO4aL?uLv%wncZ2o>3;l3q~$7BpT42G?3x09NbRD zDlISfI8;K$u;dhyuPdQs5#e#Un5y_a#-OBSksQw;Zp=MxgUAr#h zhVLs#q8+-%Z&iT5l@mVmrOXO=zeB5cvHyfHdMozt#;x7X4!?1j;|pEUFPGghqN!1W9+O zXC*;)(M6knND)!Tyts@|bt37>zT&76&!H;D8h}{E4I#`oy z$dg>?6txV|x6yV--jA`o3DoHq&8cEQM9oF2&DF7_(K`v?*Rk|E>5+_g+_xb=131w0 zs6TTRz*$V_Xd;QE{@q&$I|vVz{jk+O)uu;7w!OG}<2*V>5!o5nWHUS$eO>T!Vf zX`hun1$<@ zr7p}@An4BS%pV>?@!BMhp@ttm`{^cb;*2Ngn5oBgpB`Eu8B-F;N?HWY zJ>d|4=2~e1v^e_<3x6%Hv^Kl4gXtrEXjm_g5Pt|p2-3GgbWF(WxSDs0+gZR)#1?Vl z8Mxk5N>|#bL-S|SBz^GjTM41}Z2ZbLw|G%H?aOaXb|@oMr+nN5rro{2gNrh41iJvV zZOv>wUh=$hJ$&4Y^v4GDm-;&Klf2vUP@Dq+J;4GzY8TI^? zP^sLgM70Ag4j^6Zt5x7~xTAYTVozG#M)`(98Qk!I} z1q=*}v`cRvkBY1WYGme{MHl?w-Ht!ZtV1HCB*tf(3Z&1fXV;t6x@(q@qoh=Vw`>_b zQ_Xv!WWL4G&JZT{wObw3K5(X>RH(+9KOedJlQeee;r^9vfYvtJ(o}Y;c9y#sP%NhY zv9p3sZEd=3oE#0u?pU#dWUw0jy2ZWveH0H(uV2J6|^51*XbNE=3nR0XtqHu6Pfxb-(B^~VkN zz-67da~q3yU+slI%5W=|S|@Q(AV@rE2;&Qsubwm+ik}`#w#JTzKban){jLv)k=bmf zk^i$5qihujxB8xOFhi0jnSSGAZz5Oc&;`uwOwV8$<7+EbWQMYk5V|-EeIp*a&Q)Kc z8!=stUTEHLwa7*%h&pHVTg00K5$N)%!W4R7>x=$#HRGevi{eIXKhu++@L&?~-0KH6 zs>}9`XX^b7PCeAF0BRX8omLv?Tm~sx2h9jmjT!d6tanI`cjJ;$-xANXNDy>b+MK4y z@5rC}?IvB!Mx<=UF9F6JI)k>I7Bq`>+6og~>eAE1={R3C>D>a#Fn+-{9>WYc$D;ods7Ru@fH;^YMl zAmj$B-7%9#LI|rUSGd=kTPi(}#sX{_gTW%It`I|WKOJ$!C97oy4x8r0MwO1;0^4hj zo$0r6+pjo8_SIRGTPKhZO;p5woP^;UiSz;UIc`B(2_c;0l{adMIqBsejb?VuW$>LP zh1}V+^vp1mRx)|ZJdai=E;AMHvX(;oaC<>@3f88$XhL4m!_N&Psv&!BtNM48u`0L9 z-gANlW;9o`*YKpXJ}nE~pLw$M3gdsC?dbh!nROa9gn~T4L$KE+NAuzPmwIuWi}$G- zS^a01Na;7$ZU%5bu;K0X>NMjU+d!c$H`1}=wXjCE)<8nEu$-|vd^D^Ew7i3-z<7)9 zP&lzVTdTZ1%mRB<8pFB1j#_0e$b!|gmDjO_)}&^5qbo93Am1$-orH@2^we9U|M@ zQVMAWzN=vj`OFg2RpTJ~j=3Pgs~8}3i82Jn)}mE=k}a~a#QxO$b%iDFJ1xg-N6{WD z67imDE%vCqemO@9VsV>4@f;OPZfB2lFpPh6AB{1gAAcQ0ycfo?c;Fs*k`vN!`QApb zJed&et+-Ed`!a7mqHq@&OKG?z+06{;mkv-U?@|`5rSzeNnoqgrMOZ{Z7t*}p2N*61D=kG`DW4TSxt#lt zIZ*=cz3H3A71}89soly~btl*;Tr0s1m$duxJ$;y!+xGhe15k!v0K(hmCV%2FT8A^# zTgBNK2jiu~;lM{94o>=*@X!ZUxDpGDz48 zd>WXDGiA7`MC|8lU~C0ICT0=!k~CHnpes6sA{^R{1Y(G*`RUKz4C;9!1ML8!+Cwx< zUn(?tXp7Fvb1^T=Qd(d~*T9tgh<{0-y@UZ{9*$<)n!KSa>^$t1{JD&65FA5A53=V> zQv3PZ6%IYHbLS81&o&Ma!^G=)PswFCrxNTZ=i& z)MLhRqlg0qEGadA@O0#Bv12C96rD8OsHzCTQ_>9JK#|htvq>&`bjFtG#?CW9oeJN^ zDZDgsD$~PyV!!_`BruZruyG^sun;X%1Ou{p5WF7$dYnR(4j5k}WrPWwB$K9o&7|H* z8(0)1DZVklREY#_g*;1a#i4Rvh#D(zi@&^B~0@ zL-NUY!}9D!!>2LzN#B+A=rPtp1{P9J!;C#RB9i{eQnWxYF~SL0$Rn}n#zC7`s7UH2 zS0C`m%NCZ|ZD1?YJU71&PM9sp3_8Hk`QCc2&PpVK-1ptI2BTFK+Y#yu>$qf0`{fI+ zudk?~3qW`la@TySAxB_yOuR@K>+AptC;C8yCGiU2w|4r&%>$`hUECP4LKE6lWf30z z#?W%_0S#&s^)%8>9h`5t9EE1;^5~d{LG;ePw%r2R7?qvSS19~6fn%~q(Va&8SVmo@ zO6?@o2Wu|X59YQM%#Vkd1S!%xN)C=?I};|pF+LC^;2=uu^*U0(YV zHDg~;C`R`+pHYsyk2RPybM;sS>co(7UfoN+)plEe<&vyvd+f_0{RkuYwrv z%uQ#92*ZUCjIpqUELF8&m88GK)%fy zz`cJ+=Ivw{RK*cTdKHj}5Oue<;36d^0%aSDZ64u{Y89Buou!}tJU~d;xn6d z!N=?2-LDBL|9MZ39vEX*TYzux5t;G*M2Zy9Fu!eAr*8J+u^%0uF5k!71I%LY<8qFl z$Gh3__J=obkC*4w@`By9UUs&B08n<|HoiDkXk(_^w1b{)SrJh#vN z+kthv-}iiS@-w>I-M=Fb*OAcg&X)^FeHw^gS7VJnAjPQER+d}jrZJw}KOP=pQ+jl| z{ce@54@+w+=u*HYL#Dl@UNk~O_2qs-(VjLfM{?IdOOw!Rd8Sd{t-a%MvuG9eJ#*N$VW+4X_0 z;oCEbDKp82p3fI8Fgfx4o(AdmC$xz`6AWBL5?kWWrIaZ+h|qGJ9rc73*#yg@$>=wK zaW0>mb6Qk6d%bsMW)pVU8XcBVkY^rZ*Uyf)>2O!SWebPOA(qCwIqMt-$ueMT6NWO4qsH?V`e7odG~Y>0cOG6E*8KrwOJWS z4np3|*k)CcKs^>=uYb;>(vlh;!O@!7;KNVKRuxD7IADH_T2cxrH@6|Bfg1pWJ3Eld zL=?`Y1b^koM)e_SLh{1Fh+;P{E$UW>!hTTUx<&(q1IY*2E4=w=N*;H+azD4-V>C{d z(nJ_vp1%DkxTS$6jo?4UKTXbu%e=AzW*O(VOpLKqzi$2{DuHpd~(XtF!fwKh%)UlD-DtCS2FtnNyi$( zm11(EfVQEL^U(|_2Ky8NybadaVXL++wObmqROV4KaeYVAtu~UhP#tT&7N;b-nm#A7 zTiEkjSxf^+<@{0Nd9xC%f5K)zQGAp&8P1`o8+Sq2bLr!6q8$lv4uo4#_k@ramy`8= zcP!~JN&tqPiH+!SZo>s*Kz9ER@z_udc|79SX4e%!OhXOqa}e>dPh3(Hk{{R1vzPRx zjghbL2k&+5Htf3(3Gf_Ig-F9a%d(5CQqH0tn*Rv&5S_p^e|WYpdLwQ z@RlHilSFQ<0K^rmPM%Dvar62dgle-b;9@4;s(Du!q0u~*I-k9DOVMruoZ@Uoq)sU1 zl#$C>L$m#KJQ?~^_cUK*OfcxG1p!08o**QJ($XL_JJoHCP`@Xbh;eA!JWE!2j+(q# zQUYi-hB%B;5_hwe5-#E(4P^4}haVcem1(LFoiPWT9JN_!HprnfxVu^VE(()4F7)sa zfULNc(x08{ffyYn^hy!_xsb;dP`pD35DE3E6EgEP8jcexaZBNJ#x)NYO0kgLNTh+h z<7$#I-P*V5PXb4t+`5U`RxIf@n+_GbNwP=0ZXbF2Q2Z%brLfOvHVGm5EF7FO=Qu7O zN7q287%cj8?3uffpZ&3pDhsjt5)r02FQ4zuhReU4-g(`rEFeTR~++9%}^RNV$}< z0$LI$G2NrwlJ-D<^@c7upj^;?6N4m<>aDr27h)j|s>CE6>Nb`FM84yK3g>M=eoI=5 zZ{00WN#XOH8|H#tv`VV zxJT~+)PKF#7jz72J6j2i4}>S??qzH~Ac3~^6A%;W&IG|mNRb^Vm%g!v->olO*gQ5# zAXLEaMN+`NLY4qh3G3+o`|5lM1(taXc8wXpoiEiG)?6r&jG$C*69GerQ>xvL;Q##L zXiI~mWEl6Wyn_vUFhL{9YxNtOECv*u_pBm;b*+YYS>}soz8toS1<m+0teD%ar+O(bzdZySEw z%sJMn=eB$(V=Y|Kz!XaC0_(b(<>7CPD8E=eF zG|Z9zV;^%B-8q?GlvD8r2$uohKUUz*+=q<#l-+9^T>`;g985!li?k)Rb6fAat12;8 zepSo(&=kyoiW6J9ZOX!ZaATqXf=2=?y_dY%FsLxQ41?cg5+`lr&krUS50GD8dg8Jw zFu2y}S!Jz!N*DY?R7;TV+M(zYDnr_5Sp*Bab#WMdaF$)-dd^iOuk&;!q#Zys0%Hv3 z9+IYlQfjU^iU;)s3jS=!z7_Wak;cQ*+4D(kBHS~d%5vGW(rJ6?%F6?f<Pj z@0^?M6fJ(rE~EEnM{-nxD1C1dI27l*0f66SpT#_dJKvfN533{@CKP7s-RvdIui$;# zUmK2*EidIla|2??K=(_aca#p2#$J!~-<0KL6ZK!2za?<7pz}hlKBU9??b-2zr$eZV zl(-0tMNW+T(r3JvHTI%90OhM>+j31Rgb3&bJ7W$E(<`i};AnGFUzFli5(!N}GY=D< zj`Paxg*PC~RVqYNdnl;1{*C082koy6Yl@8QG3zie5tH)>w?bZbmsNKY?Z%wk)tY%! zcwg=ol>fYiG)HfERXdCm`h|>>UVvi|TO-{@_S+)x5GQrqqr;DH-U>8vb*^k?;#Ub> zX7WpKW=my@edO6oUlxpkYXj_pe(f1Mq5S^JRd|hpMm@l)8Px~RWjFB3E&V}7AdQ$~ zKuHMq5zZJ>71?5)h_r4LC_EKz#j6= z0ZHm?aav5JMN9Z3Eiz43nJ`Mez;0cg>4R-)7ybYsVnlg0qg3b7F^Pp(02%8$S{?Q( z%stYG#*GzP{Xm_!BO`#jCNJECfOh$JH*3dDjG;`Nk1ix)80XpgJ;It%MrANxq0Ux4 zQEk~&3?+&)GEPCY(A;@U)j5zzlwxKU_~p!1zWNPJoIWrXlEO6d$14}rs8Dzg5^edW zkm(b^JGV9*Ha}P4qrhHC^t}t*dsI>brO(mnr#TbT+WhcAM$vZy0-V&yzeSytNz4?8 z6?HRNdcVTW1-C7zBAZLLBsS=P{mcgEMl=s zwc4Epffl-A(%~`rPlF!KnByS1{k75qB&Vd`qK9sf*?vpfI~|xf|BS*k8hR+2?O8TNlX&QmIgCJX^g z7>S7A>_W>=#_2ifE?s}^W93NQ<@lg}C};ytP;tLyBPO@E#za#Zg_Bc(uq47TN#7%Vx%>a{IB`+j5U8sP_lG3~V+`aSjYufiRA;_+3}p7AnFn7m=X7)uNLFvb z2|Ad>$S!Ppi~+LCceUWpwKq(VNDW06r=5tAayZ5kX{IrhfYy1cw6B=03e*PoRNHxb z9CYODkk?9*Xfq1OROK!I6cy1K4^<4;qO8Phm84BSvZ`a2(zzWghqB;r~bj(rZ!Mrzr)b+pQh zZz(DkPpEQYVJ!WF&>9?PH%vY!i5!PTBqrb8897a%YeRvLlSWjvG920JXfT=FA?WJ4 zCpOCXzL*H@MKZW>bCR~x2=sJXLK+H&d|YB*VG;0M(=jk#S(cSqLn*xw*_pY>x1GuB zT6&9;YLRF@2|S<;P=7!UYT*I&g0kWSa)%wtg?Ct_aO`b5WiUAQ;KpUQq^n{Nbq-4+ zlczK)X|{eYe^fG=*d@m~57FRzXM%?)_7=k6r(gy%Ip1#Su~Jo=3Z-uZ z%<`%g)((DSHt~Rs6#|Lro(IXPjFq*WyEi&`)ONm69tthE z1CGch4ldABYy&uf`_UV9UO(}UeAywJEmX=0*M=l^LbYNPT$g9#@EL2f4V?lvSxbki zdd-o-8HLNdnT!qiXqin|6T645Xa|LLrVL1xSKormcNP@dn;#M1Ya31YV8EG7pRbaw zO?84q*7wuNLX6#i`acVaTQp77u^+4qQUKHN({x?3{3tyJ32l?Hm-e~C0}54bl8F6} z$N8S>_YobzbGS19lTb#vR3D5ap=KqjH^t>x|-EmHB)}h3=PM(Pdp! z`#2C^HSqWcfafy0Dj+IxdcY-PW3_1cJ zNi-s`V_IIHLW#r0R*YG35Ha#0h-1lEPH};Ht!)h z_jwGOQzB97uJ%F4(2w>j#}8jS19 zs+#60DBcP@UVqS6XbDv`cF_HQQPp8eZBy8vsg|~XC_`sGvqzIinRYA)O@Y*4RC0J* zpU@`eTW3<2UEcpZ*|rJwQRamgtx@ylo}}FB2(%VN&`jk`DE;PbxaM@W(Wm2gOU?Qg zlrgNss>DyB?de}^`&GC_4_vSmrD&o=8a``kE~kb_XTVwM?sk*9D5 zAS<~&oXq&TlnYcOTlzY>uQ}mss(}U^Wt}hEet+(* zE<8CctPMqIy)es26$Vq4&4n0Njl5sgA0DNa=&}#rIsi4DJ<~L;)wfW?JueIALw^pG z7Y%oJNL*+bxaA2aYp>>sqO@XP5(JXZR9tJ`qu(+hVX3d!iUSGEC5n`cg$Ws#pcE(l z5jyo@vTWnAE4t_FVU)k?B{QXFuvv=8k+BCd0nV@8Inma%)>-s>At}rS@U`6_*81kV z=>&M*JtvML;uM3JaDCHUZj*FNwgzNQ2rgK(6K~=CbL*x34Htjxx#Ra+kN3~nFU1!d z!C7#tfBmC(Q@8Gxn!xjI?~BW zO52WJ(wPqx$?wU>>xw}tJ6rNFcJ$#3eXOoNt7m^rEIQ{IhB-8dwykqv%e-9uXb|Vl zo+3fY-rC2v8u0{!x>k*x=^OC$dD?h~E=aAeXtUJbYkjbPE2;#S^N@#q&V5?r*#O+& zte!$96o;aa+2y_xQHB8O;Azno3DFK2UFzKS5C zF6z6|jD=gy1@t1Y+xP)w>FBRFO+iqkuT?d$rTQuZVQ(O4jb#qH6X94yow z{AMU>iNXSV)$DVu!fy?S0u}`&q>jNd9jHVR13qpK{#qY=+5 zVGePR8qY`B>l0()!d4r=DVJ*BY^~GjGRna!o#!+>&{u+%L;Iqe+7j}<6Ga08a>SYT z?A?8XYdKiUcZfG0z5KKxmRYn2zj1Wy1~R6^n?=M2!AL9M>fu>4a}*L$1SN>(S%FSD{;PWT2!qCyLlGXlOK`_AdmbIL`wV9m5$^MG=r5xT41p#h$^K)~ijZ9@&wdxsImcB?#4067yCor6 z>J%*OfLnf&&v6Vk>>7&?b@RcbYAbT;0l?n&z+(Puul@8R9Db;IW{3rWCM_p% zdQ1~nbOSNQr%uA*^QJcEf^v%5m&U0Yf>HC2#u@T2jgxs6sxR8*GpC0AM};V5%3`** zOw%Vp+as$M21_FOBo`7)tSiT-f$U3SIa{Gs;m&0EGZddspHLa`QKM3zfX~ z>PfZ|0m7F%N zX*?50$|^uB`TL41X)I+)vO{Pk4b8(k)reohrXKu@@r#X9l8hTPC9;$=A@;fSv60<( zTpB}#$8HEtRrMerh!15@JM*A+LR_;91{PCg@w$vlr;cXKN<}bNHJ>h;j`%cEsa!i3 zwS_h_cv=QTd9AR-eavtgguE-F;Q^7s44#seH>1&Rg}s=w_c%>E^)9NJnZ1wG7L)>o zICaS6NIs+CH0KC~^C69MoCCLv4(R!5mYj_;y~6Ja z%bta!D5`GrKJ^~YO(aJ=%Tz|xBAf%X+cRGpCz1Qc`p7*a!Jk?s^qQ)KA3MHiq=xC<<_5}+n<)Py~P5dA=3 zuNUrk^N6NoD?9#boOl1yI7z-VP80|8jQx>kNqoWRa%4(;v?N|&l5Pqklzb{Uel$lO z--`s*flJKhE*z|p7Aj!_NTE>~P-H$y`yX03T=9*lgkaX4g%OtQv76V(bmzY64o#t0 zjj=1rK1vEUMh~7m%+%j&ZQ$$+?NP#xaKHO=Q;rC)xXCEr3YUpDmN5b>6v0i~7NTB@ zNET%Zi{f$#zjt~Myu`Fd5*BjMPDjo6z)x3>h^!Z^Ni4Mx8-1^6)X>q4dH(oVP_ax5 zEDFiyb8~|{L(nD!L$k)-Wm!_xO)Dqg{=bclqj81g-#bp`P3n_elVtDe#OE; z0RL1&W|WkHw!+N`T-H6XKibMH(}Ni39I85jaq30U4~;TcPf!lhcsA%_xm+Wp9XZvv z?h`eaLLo7W1Q%R9ylJDI8Rjhc5a<2UINOqzRlgN0s=UL;kgBTep9!dBLBLl?6=C^f z4is3v_oC*y;FZkmH<%WOR4%5@o<&ye!BMDFs8@m-!pT?%5G|^??N)wioOV2l^2K#X zDIjmjHBfO#{!_{nv>3R@fH)#__Tc+wQU>z@po=MU5)*88V zQvL-*=<0%O=PmauOE=eOGt+JR8vmnlN_o0qejiU{`A6dv+zip!$U2rA9<8J_YplNd z2JBol?tzc3U}oh(L(XNRGqCC0ifY^4X_zPOv?x7aW?cM_#@QS%B8X%YPdNvT`gTX? z&Ldaz-cE-Sarv3#T(P#?nSg0l$>~A*Ton$Z6rmbyJa4Y*94yMUgA!|1e$jsG8B=F+ zAW82;Hre7*W8!{Z?X^ikYBi27U9~5FtkzzLn~naUrg*_+e=)m@}g4d8R^&n8cLxTFvzQ zl63*amES#}MLo$EEfyYNfT;Kc+uI36%-O99V~_sE0NSHBcy~;-f2`>3|el0 zC2+4A(<+Fx8YkNUyAzXv-|-jY4EYzv$@njfQ^%~m^S>}owGC@*9Z>uFe`B2C#R5cs zG0u0|wtkaz2`@<|SRr(vaDOz=lHzuVCQXVEp~!^F@XmiQPD$Y-qnjpxiT~=kGt&lf zUIOX<+J-g0jwpt;L!o|1G&H1PQrRrBKuzVITP2DW5+K6P?NjcV)5Bc(A{VNkuI9yW>+H*UbIojVu2EJfURXLd<*FAMIQ}eOQ{x(+S_2B5)b&1vsNr?J_ zQG*walRsY8Y84@he5~HU6xQ_&t)AI1I;<55(#n5HW*>7?R8aozhg?FvzB(SeX*Ou8 z^64TFQ>*+_nE^}Xvhs>k1K|JCcq(+(9Dlj~N^dK^w5%qoP{@1`!vEvZArK8SyE}U~ zsCg7#m&zEPeVukk8QOtUocL4b8Z23zhnQ{xmxsGoj}--KC;v)MJyRIKyNo<*}Z3EX@qBCMI zv}Tsi^QMWB+(>T@0ULSMxL-cG(qT0`(zH6+nykt(aMYb$GEWNmZ13f^wo_O;)a={J z(svNPSm}v*Gd@B#v<~JTq_km>UOYs-+!#E#l`%?QxpZzh?Zs%04<^>T|F<= z?UskZwH<8Q&X&|ImU$a?j>e&b7NO3fdvdzzh#EPWjADzWFYXg{+lpz%RffsuB(}V4 z%+Se>t&43pN53Yu|HvrTz^-072IYf2|N6d|u_ApiiNAlM;SsQOl5u!) z_2Kgm#QD;GR4}We1TAX6*7qvB=NmS-r<_a1J5|#9T3aRvV(tEL*UkcYf`y*I+ik~# z6Z(R~!$57hWok%^4c8PpP)f9BRDey`@#>tZTj*oz8B7H)M+gUwQK9V==Y-qwYgo30 zwZY}kz{Z2G{#jg?3za5wX)xGX>$w{895KU3iAPf@Az_)@A?NtHw@+j8&wH3lzwNd6 z4v`yp(mtPWR_E{652ojBy}X-%F_0$B0sjGf_JwAc3X&#FM;_;y=AtQI^W8H~gQJs? z-Ni#ucor{oH9VzK-ZfPho;AE1aax-XmG|&>hGn1>qSwTB4-SW{yL@u2}ALkP?US*7se?Yxo-9sS6mXm>6gAHC$|dtve;{+wh#~In0G~nKx+S8Id8o; zyR8u)b7=#3wOIi;Pvk$3xtO*kp>CJdXU_#nmB3`j>l$genXbd#d~07E=l;E`X*u74 zR?JY17|rkBLrkjMde2gyAMej8Hw8VyhO)fkFzT0!VDMRY<;xuoR~XTA=(`QmXg&D2 zOG(T5&AN9)jDwq0crUMSpXcYEV|*Q!iro&;EmPLe0TZ5a#!2 z&i=(XbC^${+7FLmeL`n(a%sC0`{J(85WLW3d`M(3+}bz66eETS=H!0Ym!HBZ8?OwM zd*0)_jD;zj&%80TM?&PjB$ss{!^jNUV%Ec9X^lFFIAy4Bh056@*U>B8 zO`~=D$>H8Nz`)xDq7iMOtW1OSiQ=lvj$l<#o+PL7?Y|(-3U*S!KM<#n#Mt!BKtCuN zMxwp0IujASf2I{z_UE`^G}DDPcshQMWx;6Sx|xRS`eGhPA?xJGw`JR9+*EDb2t@pO zvx`@El+T!Cb-kkLjeKYh0q;36!xgf);aUK3bN(V6O&KFoxpAQe8{5hh&5nj^&|2UkYI1T3NI*ZO=kR18%^j(fr?PjULtS))hI5M^WayYO5I-GP$Wc?ja zSMLads5py094ZL^aX1yf98RWx9L}I`JcNTMYs65E^kI^*x$hKDY%{QoDM%tAo03x9 zUcG+rPv9)Tdca8-LyO*5zl@9pKz4pp*!)bPV9j&J)n5ZgC5tU^v)H9EQH)LVq0Z&5~}WU_pmgZ&HR+(iyL@3Lis60`(Ser9W+-qsF3!>?o%Q_Ivx@ zRhalYdA?o#SktDaM6L)PC&QCL^l zQ!R=n8xtiI8n#)^QOZ6=SNZqu9&(awt2U) zvB?Yt;`x#0+$IWA^c6`2=y!es0@k)Y!6;H?m(O%ZY;Loa@UgupU~4q}fL-qg0Zd1* z@R>y3QYPc4r~c|*Su8CrhTOWEat-YmwJJivpG_5Bjb))wcan{ho=MGVP^q2i&!LEI zR->;*G|_YPJXX4m9`(=0##{%*B1_w<$Om1a`S{bZa0x)r#jG&rL7c>FwX4oK5K-#IVe1X~?R+S508G-s|=V9QMlYpMy0U4WUl zX$uF|RVdTlmj}Uk3q8Rzv3@kKhkHL`AJI{mXD}2f_2{eWw?%$f2EfKw0;eVG~3wc~{K> z7lc=LdJfGjz^ghKnc#HFVc0#*8j4d}QZ%sN{j9K7HeQ<({4a*{kTY+bP6Ybe7K)ff z=}GxnRO!cYlb*|~KyI-#&)FuQCXE<+_M2=#dvllN7sCk> zG4FrWU9tCXhI8ATBF(~df&6zASRq3%^YY0{Lkl{dj$3$M&2G$aUYR)gCQ6vAr%;&I z*)GgDP)xot0!SiYh-_I$`Cilp=5@2H5p8m?TLMQGkKJGM;lMZp9)s;qTLwj5kj-Dr(mkhR#b0A&hW&sMzKi?T-AUMb9_?PeCIF2Ih@D%3~>O` z-t@VV3#9sj_AZ)>0||hfWy6NO*|61pAL=)Y_wT|rPq(ilK_De)K|X6xa1VYnXV4su zGCx4P$4HI0_&L5FHyW6yX>`{lI%-Nif3nuvVv`(=jQLmLG*$XiIKOGZtX>gf3IX`4 z+BSto))$e31#)tt*e5^0ZV~m$kwe|YfKd_3@Ow6dt7){`6NgsNszyz9^dV-q%u>RU zy|6)Jk@jm%LzEjQsCw#GwW=s7eYa{QS?G&?MT@htu!*u(V7P+i58}R%3AP9A=T|ZF zf~UTB#1L4UF^^dby6A;uElfrXTSL{S%QCuE4)pype*~VlM}}S(A)w7d z0!2A<3?ZjoFLlS=6fH!5BKnAl@UoB_>hJ&|RZGnWQ3sXDN=q44(8ymfFkBL_pgtwT z3yT8{mtOOrqo%mbVn*r}j!VA`IG=M`pAlI0@*&~k?I{qL##RuqW4V!vgE{`*Wj>oq zz{6>xym00<9f?jI!x>=Le=VABZo1Vtn4h*t3E?ErVxa(nNock=;hVW?KOUW%mgN(h zfsV`lH~{yg;24)!JW5Zaxw5p`yPfGfM!0dgN#{9en*^=5Kqx5fbr`F;QvF* z2*2OfsW_lU6jKbzEHTVIv+gb&p~zL^XQtvx*ntu?h7VUnz5s%}JZg@Pl|FO`V@QHI z`yRJSlHvp2=38~x>1^V>UD6JFXPxvHR&@+BiJFAgKwVye-9LK)~Y?}ry6`rK@ z3g3(4G_FEuk~wKZGv4N~9ecQ1O>9%9TIM|EIqe5B6tKAMQo2V`xeaIXq+OFUV7SMp zIWD3gn&|m+(9Q+a;p5~8(~8~`UnY3(Qlg`emq5@fcPXI>a}IGr8f*8#IrxM*+Zs9K zYVT8BQnn2?1FdV&uNwiO<$zmz*f?nN>okuqFE&g|QE^M0 zX2wUg4!Y30L3_$N(gjaD<-X1QG$Cz>9qPxyDT@|wjhB_~lqE)PeDSPEyl*<1IQ_-k5pOU@|_Q_iW%rbc>5n?{WWOaj1BAIv2P~-A~-{^d!nPtd94`bSgMZrqq*NmzS|VuQL_?| zvE&oXS8RkoS>JZqr!Luv=QfT-F49C@S4zD!xkB3=DPc*ti8g!BSCh@+^_49+6ilad zf;UdcS+UP#BtSr&_=t37zWy3|XI{4(#ZY^xhRhQ4$osQ9(Eq>K`|h|WimhQliu5K; zKpvWa0XCatQ|O!Cd$LIoWRq;_rtD@@sUiphBE3qLCL#zTO?vNLdKaaMR4LNFNrK4r zdVSyD_x<_Zz?0u*cjnBQnKP%(*;(MLxLVe1#_5UQ4V?U>+4Q=Hsn&;U54hnbF!^f6 zd8%9ID?5+Q9HK~X#m+20`%crr@^p{3%6|Dk>HiLYn3 zXx_d-!x^7WPBj!Y-%#=Px1RZ{r>?l9cAOjSZq#k|kjHI3Uw?UrT3k}9UyD$h){lub z5q%)}$-FSp#y0rPt8Xs5Ke_zyzFk$RAK8aH9TTj)K4)QakYGoPPbN(r)8Y%+e#Ec7 zv{ALCO-E_{np20@wbOy}zbC%$^zM`2l8tvie0c^Z@fB;v@`^`)Y+ScNg~R9j_P9!{ z-`%0fqm);<5br%U)a^{-@KpEpjkz8tPK_NEc!xFhVYeDk`|sPfanz(bI5E!LF++bF zIctJ>MfyP<*`_zu<-iFG`rtRu{c_%l2%V%5Ks9INBdD8sd=InqV*?(yB>F&)tarN_T3!QIn-s$t>I0&o?rLbjXnC#t6D@lCihJr zuzPpKrKNM1Eq3z5rXJG=lVv@Iw@j^SNi3T*TU+BuqF#oAv#2~2pl>&cjYj>XG3C0Zg}xmDQ? z?aNmZ`;2qy?BA_)3(nKRdiS)?ZzgEthsC798Egr(zcXCIV^WobI7vC?n zGcb2qeNOt2;%d!ky8+g1ou-TD(17&h(qV_QBlq9fuEIyXt7g`pVK1 zPk%DKe(O)Jep71Q{Bg{}J%gz^54RpYYOPT@M)XkWCw@PE(T`WAELSKtz5n=oUIowU z(affuWmP-Nd_AF#w`cBfvpFLw&A8F3<+5d+DyaKW8^&fL>h}7Gzf`-!19skW8+BJ| z1Wweu%Wctj$(i1xj&h$gPR_OC?-w!=BW@$xn z#d?dr99;Rq&+pVE{DKB=UfOpx6TCdlKGc7B*Ny8vdw=`g`2*FqKKkZ|xsMLbdU|Q^ zSHBGxJUjK_so4!`rc#GK-1vdE+#1)7ZpUWOUmnVz!uk8E2W7hM*Bd&2;98u%^F&Xzf#^SJq4maP7A z=C{MYnmn~!x*9ly)5I@xH(BlCgoza@mJyGde{)(Beut?829Mj?{A)>_heXZA|aoRJvFH6Y<0DXv)|rw_#J)ay`$y*w^TI@Clp7N<1Q??Rdd&# zn}=8aY~<_5W_z$PRh7x(*)@)1Ep~m?#PFDGR%^!li?(#S)8a(^!1}{gSJb)I==}Wq z<1uu~e)YK1V|(p6ylYgIYVxZMv*=32nTFTjZ+Yy(_7B{NE~~4s-%{@zx>L3|ZSDE? z1>5~Gq4RCd<3rDczctkB-cviNW`|uM%JZb+p)OOSU8dFF-Nb#RSFBISimq?*;EcK= zF8Q@#yUs%gZYe+cJfC{pV;=98JESm;I=ex1_SchdwcWh_k?#aL>wc*&uN}d;WES(( z$7{MY!7+WD3IG1~BtfYIOY42LXK8GR;?np>_K*5ESlbHwH2T{n?#3k#Eq@-txg+$> z$#OOPHN{6(L`Uh}qvvi9^zGDcTf;`%D^&lg^3ujTHduRJG4{UrcuQ{BTeo)a*x9t! zcKM5Ez7r1f@M{tOr)4~$FWzlrQ2nfY=gIBKd&;(czdbv3tZU^xZ`4^H>oj!xqP=4z zBfD)LBX8W`NLkgUk$V%vTIg>sMYfLZrW{z|!Q4{!%Q>%)82a-!osOM+_l2JRLPP!1 zY2=n8C(<{bje}c&6F6JXn=*YSUaoxp1kP64`%O+>|E{FM`e9xEJb|;_x#+?Losaif zpV&17oWNN{JzM#vxYvgjjy%~naP{-nq80l_Odri&y{|$&nUa2U-ww|FG7wo zpRbY~KiVw6I^}q#!p-3LHvUMH+|fCwIX`b`H|C6=IWeMah3dB!tM4s1eTP@(hWdKz z%rt$~LvxkWVtw0vy#JPJON<^huZ#2^QrWWa5O4ANg^DZG@wp2(G)qtUWqP#IB8~0v z55f-@PVhhf#{ToPRh(x_IgL&qDB1SIc=i3-BYOw;hdz!D5j<|Za>UhHG*V+qB?nq+ z(D2Bt{?Ay;@vZn<+}zfEa%eR4xO8#k9E4o8GL6IG1xWp!w$`V`1+ee)9OCi zk*fSdze(^z;oI3B0~P6#x}EM_67AYNXF9Iv*Y=3`HtqOe=;v!g!dY(;S0|ls|I6bU z*J6h6d%W9r(Gtt0O2PQlv#sxc-{m{m^V{l^+h=cCwSYIUU-xFme(8EL-FhVQ@vA`&8%;;L#s7h?R%)FCgx_2-&#j=ug|=iyO8F6-g|g&#F*Lh z`>qh`8c+NEFg?{=cOLuL__yAe)uz#MunWCXz5N|zyVo>+_{JxEM$1=kHqAe<`9;?S zsZLrPC=q4rm+HIusP69$+vIcpdKe^+4gU{EL4H04)o)?fkUji-bFIoBNiWSY&XMYB zlxgaC%Qir|a`BIKStA>N{$;HkQn%43EVk-Y8C$)fXJ_2mdvE1$ih8c<7)x9t`CmTv9Y zetpe@8=G zgL_g#&ji;k+W6hgFNSz(ef;9Vs87BgOkZOjE}h)Vyhr@@f`jrCUD&mkUX9FY{F`b0 z1MyeP=803z2nT-&ud7TxnBCCRb)xB`GVPw+)KqP#z0vB}nYOh~WhQ^#{H;KTM)E_Q z>X-L-ybvATcgurL)4!G+-5u$&^hEjh-`0M&{2UaFC2e6tNHUki${D~gA7Tu zMi7z6$41z^HjsoSa3)5#M!hjNQKBNrWP+jdciwMpe!oo#47Y)F1cQ5V1}`a4hZ#bX zOaRm{;z_bZP6s_C8q*R{KNA2alkzz{$eN84uRuYTq?^g#aOkvMx_}l5 zJW{n%r>>be4!|)bZo(goc5Zd+`wgv1g5J)pFhs}J#U(@_sLauXC8xJ~a$%3i+p24q zPMHpwNIU{?EXhR3Xre==b1OXGnGWDOe;aC5QYgZNJGXM^j3rDgMuvk-3Aa7F9Y@r* z#7E;1A|0c{C2)Iwt1gu~(OzE%vsC^P9Qf6_Re)jQ9Uv&3PPb2U+s9}>1dBu>h|PgG zoOYl@yF@n1;F)&OM03zu0ga&JRkdiMeF3BPo>&A5Iv}_`8v+egDk(H2B@!Mw7-xd9 zXi2_l+#O3Yom;i4RPqv1{51^z1r&GyU~%)XN;*OLy05|d-@|8uzCXM8FAe0M{DJNN zOA8r1{`Z3c9u(of>MXdUP(}RzT-*-@BmP3SOFDrH9bOW#70hgx*GRY%^w)==nLjHK zQgD)P7Y>_^v||g~aoJXw-+?RWz~#GMt5_`bM?GE48}wygt0!v55m;eC2k@VbysYEMge5uE9w2FZ&BL|?!8m!j#QmkD%%g}grt7H|EfT!0Ar156hV!vC}2%X@z*8I0h5 zq6;JnK|B;SS;8*0*^i1*zYMjYVik%?A%O`^*c5@37rcuJSBTOosV=EQQJyJG>QNRO zEquf%D4+kx(07|>(2l4nUm1K%s2F1LP-$2mc5~Dus<0Mrqdv%us=!0PNhU^ZGO^z# z7yH8svB{~Hr2Pu9->;RTF^wc0(-Z(o#i&k-rt^O$Datd-P@zF8)>-9ZlU0^UyA_#) zN0|}&Uj3zIN^#nwm!fPZXu+un*vxWstnj=5@KwRrEB!C8AtC6f$qza$;h|}nx!7e? zWkyXpGw7NO#S6VxqWRvLWW_EQzD;s8tx|wtQA*G-=pK0HS4sa`t_aYCN zvwU2GEa1eIK~+Q(Ixxy`H(sQj*s-zCcy0LI+Pv|Oh&^DKIa z+^!CKQnH*{YL@x~xW$&mf=+=}BIX(`dO|JpXS}v>+F$6hI^>cog5I!KZsQ6mLoS{5 z#|r@2EMqR9wuBj-)rJ_&q}Per<8Fr>CLFMtbVa-|9E;O#1)Owq{-^F20J5Z{8pB8= z=!(RXo~VoO3sZ)09LJ-SCPGpCEJIVQ6ojK_8juMpk>yEDDn$7?7Un=)K9V88A7V{u zbHy%4V{p#PHH2`V-s6yQq8vJFu^918LXZ@g$%reWw^-qfJ)D9xaVU+_Mpj(UHVRQe zfC0b7Hlf`MWhtMK2KS1SV)aU)w1nrzeWJqCG)hGwO%9^+4+_;_YsSva!^_B$BBm+twpU;ky_mAPGn>rX91wyY>UJ> z8GD4KNoMSv|MZ235J31M6jDh61zBVcDc_3N7#eX(xH5}^!-id^Kmi~gh-Y~=+A6mt z*<7I@M%&{8W6m8CAEDOx$h7Ln3z&Rwyvs$R=evogde`aVw14V;Z-NM@4Wb zO0%#6K&x7+N>Y&6z@&v%g~D#KF>Zy?=5latGOY-UnEh5*%@cVOc1tKHg>qptqG$AK z7;{_X(G+80vpCVDjEU0(k0}6*xs;4m$xk@wlrn=*iEP58VT-wZ9u?Jb5e{K?xY>;7W34j?f-SM!8mp zEXS4E!f?_Vvxl?^b=dET;XXq|lK`j|0Qw?Q#39T%Bpg8g}G(0LCfK&y56brW)0prpMvV_a+5|}V7 zZgj=@GJDF!NrN)r&+G!%xDP%a1~u9QrN^J$M+5>9r?Q0lzJ16lt|+ z+$06UK+8`tJXlZw=%oB!2ZUreikR8T;R&;rG{@sgnq#7b)}kjFo&ZodtUy9hmd=OS z2(tkd^ZeQb&ZD@9H($|eQoHq9X-=*!02G-5Nw-Fj(z*l|4U=X?_@tWBr-YV7EEMMp z%u#>J?@b2mR&EYvSph3ez&Ib4SnWzi>Va(h3@uSgAe+Ev(|QU3-6YI{S)_!^q(vgq zmJ%{h*yhy;(|j)ta}ht80<$VZoIF(o<60yPBaSDMQIi>x2y8B~fgSKAxlYhcpV|l& z0HV@RT#Ptiej4@@PPLYU0qN_GcomE)mcj_GKS_HfITcqM&T``}jys&wX<%+lZeu|j zC3vF&%b^YB>{K$w@fYb3{1j6O26l5)B<5qgO*(cMm$O+)0wY{367&9lq;r79%(fUUfq0PP

yx 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%0DQ|DG+`g$D6p9P(JeC%E2f5iGb;y_Af9 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

JL|#RVp%&C` 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 literal 0 HcmV?d00001 diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..d81faab --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,27 @@ +Freeware License, some rights reserved + +Copyright (c) 2006 Matthew Moodie + +Permission is hereby granted, free of charge, to anyone obtaining a copy +of this software and associated documentation files (the "Software"), +to work with the Software within the limits of freeware distribution and fair use. +This includes the rights to use, copy, and modify the Software for personal use. +Users are also allowed and encouraged to submit corrections and modifications +to the Software for the benefit of other users. + +It is not allowed to reuse, modify, or redistribute the Software for +commercial use in any way, or for a user’s educational materials such as books +or blog articles without prior permission from the copyright holder. + +The above copyright notice and this permission notice need to be included +in all copies or substantial portions of the software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS OR APRESS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + diff --git a/README.md b/README.md new file mode 100644 index 0000000..b2993ab --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +#Apress Source Code + +This repository accompanies [*Pro Apache Ant*](http://www.apress.com/9781590595596) by Matthew Moodie (Apress, 2006). + +![Cover image](9781590595596.jpg) + +Download the files as a zip using the green button, or clone the repository to your machine using Git. + +##Releases + +Release v1.0 corresponds to the code in the published book, without corrections or updates. + +##Contributions + +See the file Contributing.md for more information on how you can contribute to this repository. diff --git a/ch03/build.dtd.xml b/ch03/build.dtd.xml new file mode 100644 index 0000000..952d9b5 --- /dev/null +++ b/ch03/build.dtd.xml @@ -0,0 +1,14 @@ + + + + + Apache Ant book example project. The main targets are listed below. + + + + + + + diff --git a/ch03/build.properties b/ch03/build.properties new file mode 100644 index 0000000..a59da05 --- /dev/null +++ b/ch03/build.properties @@ -0,0 +1,2 @@ +property.example=Local File +property.file.example=build.properties diff --git a/ch03/build.properties.default b/ch03/build.properties.default new file mode 100644 index 0000000..e5c348f --- /dev/null +++ b/ch03/build.properties.default @@ -0,0 +1,2 @@ +property.example=Default File +property.file.example=build.properties.default diff --git a/ch03/build.start.properties b/ch03/build.start.properties new file mode 100644 index 0000000..ab8629e --- /dev/null +++ b/ch03/build.start.properties @@ -0,0 +1,17 @@ +server.name=localhost +server.port=8080 +server.scheme=http +server.manager.name=manager + +server.url=${server.scheme}://${server.name}:${server.port}/${server.manager.name}/ + +j2ee.home=C:/j2ee +catalina.home=C:/jakarta-tomcat + +j2ee.jar=${j2ee.home}/lib/j2ee.jar +jsp.jar=${catalina.home}/common/lib/jsp-api.jar +servlet.jar=${catalina.home}/common/lib/servlet-api.jar +mysql.jar=${catalina.home}/common/lib/mysql.jar + +build.classpath=${mysql.jar};${j2ee.jar};${jsp.jar};${servlet.jar} + diff --git a/ch03/build.xml b/ch03/build.xml new file mode 100644 index 0000000..a69ec38 --- /dev/null +++ b/ch03/build.xml @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The value of property.file.example is: ${property.file.example} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ch04/build.xml b/ch04/build.xml new file mode 100644 index 0000000..a1b4fcd --- /dev/null +++ b/ch04/build.xml @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ch05/build.properties b/ch05/build.properties new file mode 100644 index 0000000..9c34af4 --- /dev/null +++ b/ch05/build.properties @@ -0,0 +1,65 @@ +# The source directory that contains the code +src=src + +# Subdirectory properties +src.shared.root=${src}/shared +src.shared.java=${src.shared.root}/java +src.shared.docs=${src.shared.root}/docs +src.shared.conf=${src.shared.root}/conf + +src.stand-alone.root=${src}/stand-alone +src.stand-alone.java=${src.stand-alone.root}/java +src.stand-alone.docs=${src.stand-alone.root}/docs + +src.web.root=${src}/web +src.web.java=${src.web.root}/java +src.web.docs=${src.web.root}/docs +src.web.pages=${src.web.root}/pages +src.web.tags=${src.web.root}/tags +src.web.conf=${src.web.root}/conf + +# The scratch directory +build=build + +build.stand-alone.root=${build}/stand-alone + +build.web.root=${build}/web +build.web.web-inf=${build.web.root}/WEB-INF +build.web.classes=${build.web.web-inf}/classes +build.web.tags=${build.web.web-inf}/tags +build.web.lib=${build.web.web-inf}/lib + +# The final destination of our project files +dist=dist + +# The location of third-party JAR files +lib=lib + +# This name will be appended to the JAR and WAR files +appName=antBook +appName.jar=${dist}/${appName}.jar +appName.war=${dist}/${appName}.war + +# The Tomcat home directory +catalina.home=C:\\jakarta-tomcat-5.5.9 +servlet24.jar=${catalina.home}/common/lib/servlet-api.jar +# Use the following line if using Ant to download the JAR +#servlet24.jar=${lib}/servlet-api.jar + +# Required for the JSTL build +jsp20.jar=${catalina.home}/common/lib/jsp-api.jar +# Use the following line if using Ant to download the JAR +#jsp20.jar=${lib}/jsp-api.jar +jstl.build=jakarta-taglibs/standard +library.src=src +examples.src=examples +doc.src=doc +build.library=${build} + +# Required for the MySQL connector build +mysql.build=mm.mysql-2 +mysql.name=mysql-connector +mysql.jar=${lib}/${mysql.name}-bin.jar + +# The database properties file +database.properties=${src.shared.conf}/database.properties \ No newline at end of file diff --git a/ch05/build.xml b/ch05/build.xml new file mode 100644 index 0000000..81a3156 --- /dev/null +++ b/ch05/build.xml @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ch05/src/shared/conf/SQL/plants.sql b/ch05/src/shared/conf/SQL/plants.sql new file mode 100644 index 0000000..f95cb20 --- /dev/null +++ b/ch05/src/shared/conf/SQL/plants.sql @@ -0,0 +1,13 @@ +CREATE DATABASE IF NOT EXISTS plants; + +USE plants; + +CREATE TABLE plants ( + id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(80) NOT NULL, + common_name VARCHAR(80), + family VARCHAR(50) NOT NULL, + description TEXT NOT NULL, + image VARCHAR(20), + cultivar_name VARCHAR(80) +); \ No newline at end of file diff --git a/ch05/src/shared/conf/SQL/plantsDelete.sql b/ch05/src/shared/conf/SQL/plantsDelete.sql new file mode 100644 index 0000000..ea4dd57 --- /dev/null +++ b/ch05/src/shared/conf/SQL/plantsDelete.sql @@ -0,0 +1,3 @@ +USE plants; + +DELETE FROM plants; \ No newline at end of file diff --git a/ch05/src/shared/conf/SQL/plantsDrop.sql b/ch05/src/shared/conf/SQL/plantsDrop.sql new file mode 100644 index 0000000..999053f --- /dev/null +++ b/ch05/src/shared/conf/SQL/plantsDrop.sql @@ -0,0 +1 @@ +DROP DATABASE IF EXISTS plants; \ No newline at end of file diff --git a/ch05/src/shared/conf/SQL/plantsInsert.sql b/ch05/src/shared/conf/SQL/plantsInsert.sql new file mode 100644 index 0000000..1b11952 --- /dev/null +++ b/ch05/src/shared/conf/SQL/plantsInsert.sql @@ -0,0 +1,15 @@ +USE plants; + +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Galanthus nivalis", "Snowdrop", "Liliaceae", "Snowdrops appear in late winter and early spring.", "gal_niv.jpg"); +INSERT INTO plants (name, common_name, family, description) VALUES ("Narcissus pseudonarcissus", "Daffodil, Lent lily", "Liliaceae", "Daffodils appear in spring."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Narcissus poeticus var. recurvus", "Old Pheasant's Eye, Poet's narcissus", "Liliaceae", "A very late-flowering daffodil with white petals and a short orange/yellow trumpet."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Leucojum vernum", "Spring snowflake", "Liliaceae", "A lovely spring bulb that flowers in spring. It resembles a robust snowdrop."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Iris pseudacorus", "Yellow iris, Yellow flag", "Iridaceae", "Commonly found by water and damp places. It spreads quickly and can easily take over an area once introduced."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Crocus tommasinianus", "Early crocus", "Iridaceae", "An early flowering crocus with gentle lavender-coloured flowers."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Colchicum autumnale", "Meadow saffron, Autumn crocus", "Liliaceae", "Flowers in August and September months after its leaves have died away. Resembles a crocus very closely."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Hyacinthoides non-scripta", "Bluebell", "Liliaceae", "Cloaks the floor of deciduous woodland throughout Europe."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Erythronium dens-canis", "Dog's tooth violet", "Liliaceae", "The bulb is shaped like a dog's tooth, hence the name."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Fritillaria meleagris", "Snake's-head fritillary", "Liliaceae", "It takes its name from the mottled pattern on its flower that resembles snakeskin."); +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Cyclamen coum", "Cyclamen", "Primulaceae", "A winter-flowering corm that provides excellent winter colour.", "cyc_cou.jpg"); +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Tulipa turkestanica", "Tulip", "Liliaceae", "A delicate little tulip that appears in mid spring.", "tul_tur.jpg"); +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Ranunculus ficaria", "Lesser celandine", "Ranunculacae", "A dazzlingly yellow flower that is often considered a weed.", "ran_fic.jpg"); \ No newline at end of file diff --git a/ch05/src/shared/conf/database.properties b/ch05/src/shared/conf/database.properties new file mode 100644 index 0000000..ab7b216 --- /dev/null +++ b/ch05/src/shared/conf/database.properties @@ -0,0 +1,7 @@ +database.root=jdbc:mysql://localhost:3306/ +database.name=plants +driver.name=com.mysql.jdbc.Driver + +create.sql=SQL/plants.sql +insert.sql=SQL/plantsInsert.sql +drop.sql=SQL/plantsDrop.sql \ No newline at end of file diff --git a/ch05/src/shared/docs/LICENSE b/ch05/src/shared/docs/LICENSE new file mode 100644 index 0000000..f820d4b --- /dev/null +++ b/ch05/src/shared/docs/LICENSE @@ -0,0 +1,203 @@ +/* + * Apache License + * Version 2.0, January 2004 + * http://www.apache.org/licenses/ + * + * TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + * + * 1. Definitions. + * + * "License" shall mean the terms and conditions for use, reproduction, + * and distribution as defined by Sections 1 through 9 of this document. + * + * "Licensor" shall mean the copyright owner or entity authorized by + * the copyright owner that is granting the License. + * + * "Legal Entity" shall mean the union of the acting entity and all + * other entities that control, are controlled by, or are under common + * control with that entity. For the purposes of this definition, + * "control" means (i) the power, direct or indirect, to cause the + * direction or management of such entity, whether by contract or + * otherwise, or (ii) ownership of fifty percent (50%) or more of the + * outstanding shares, or (iii) beneficial ownership of such entity. + * + * "You" (or "Your") shall mean an individual or Legal Entity + * exercising permissions granted by this License. + * + * "Source" form shall mean the preferred form for making modifications, + * including but not limited to software source code, documentation + * source, and configuration files. + * + * "Object" form shall mean any form resulting from mechanical + * transformation or translation of a Source form, including but + * not limited to compiled object code, generated documentation, + * and conversions to other media types. + * + * "Work" shall mean the work of authorship, whether in Source or + * Object form, made available under the License, as indicated by a + * copyright notice that is included in or attached to the work + * (an example is provided in the Appendix below). + * + * "Derivative Works" shall mean any work, whether in Source or Object + * form, that is based on (or derived from) the Work and for which the + * editorial revisions, annotations, elaborations, or other modifications + * represent, as a whole, an original work of authorship. For the purposes + * of this License, Derivative Works shall not include works that remain + * separable from, or merely link (or bind by name) to the interfaces of, + * the Work and Derivative Works thereof. + * + * "Contribution" shall mean any work of authorship, including + * the original version of the Work and any modifications or additions + * to that Work or Derivative Works thereof, that is intentionally + * submitted to Licensor for inclusion in the Work by the copyright owner + * or by an individual or Legal Entity authorized to submit on behalf of + * the copyright owner. For the purposes of this definition, "submitted" + * means any form of electronic, verbal, or written communication sent + * to the Licensor or its representatives, including but not limited to + * communication on electronic mailing lists, source code control systems, + * and issue tracking systems that are managed by, or on behalf of, the + * Licensor for the purpose of discussing and improving the Work, but + * excluding communication that is conspicuously marked or otherwise + * designated in writing by the copyright owner as "Not a Contribution." + * + * "Contributor" shall mean Licensor and any individual or Legal Entity + * on behalf of whom a Contribution has been received by Licensor and + * subsequently incorporated within the Work. + * + * 2. Grant of Copyright License. Subject to the terms and conditions of + * this License, each Contributor hereby grants to You a perpetual, + * worldwide, non-exclusive, no-charge, royalty-free, irrevocable + * copyright license to reproduce, prepare Derivative Works of, + * publicly display, publicly perform, sublicense, and distribute the + * Work and such Derivative Works in Source or Object form. + * + * 3. Grant of Patent License. Subject to the terms and conditions of + * this License, each Contributor hereby grants to You a perpetual, + * worldwide, non-exclusive, no-charge, royalty-free, irrevocable + * (except as stated in this section) patent license to make, have made, + * use, offer to sell, sell, import, and otherwise transfer the Work, + * where such license applies only to those patent claims licensable + * by such Contributor that are necessarily infringed by their + * Contribution(s) alone or by combination of their Contribution(s) + * with the Work to which such Contribution(s) was submitted. If You + * institute patent litigation against any entity (including a + * cross-claim or counterclaim in a lawsuit) alleging that the Work + * or a Contribution incorporated within the Work constitutes direct + * or contributory patent infringement, then any patent licenses + * granted to You under this License for that Work shall terminate + * as of the date such litigation is filed. + * + * 4. Redistribution. You may reproduce and distribute copies of the + * Work or Derivative Works thereof in any medium, with or without + * modifications, and in Source or Object form, provided that You + * meet the following conditions: + * + * (a) You must give any other recipients of the Work or + * Derivative Works a copy of this License; and + * + * (b) You must cause any modified files to carry prominent notices + * stating that You changed the files; and + * + * (c) You must retain, in the Source form of any Derivative Works + * that You distribute, all copyright, patent, trademark, and + * attribution notices from the Source form of the Work, + * excluding those notices that do not pertain to any part of + * the Derivative Works; and + * + * (d) If the Work includes a "NOTICE" text file as part of its + * distribution, then any Derivative Works that You distribute must + * include a readable copy of the attribution notices contained + * within such NOTICE file, excluding those notices that do not + * pertain to any part of the Derivative Works, in at least one + * of the following places: within a NOTICE text file distributed + * as part of the Derivative Works; within the Source form or + * documentation, if provided along with the Derivative Works; or, + * within a display generated by the Derivative Works, if and + * wherever such third-party notices normally appear. The contents + * of the NOTICE file are for informational purposes only and + * do not modify the License. You may add Your own attribution + * notices within Derivative Works that You distribute, alongside + * or as an addendum to the NOTICE text from the Work, provided + * that such additional attribution notices cannot be construed + * as modifying the License. + * + * You may add Your own copyright statement to Your modifications and + * may provide additional or different license terms and conditions + * for use, reproduction, or distribution of Your modifications, or + * for any such Derivative Works as a whole, provided Your use, + * reproduction, and distribution of the Work otherwise complies with + * the conditions stated in this License. + * + * 5. Submission of Contributions. Unless You explicitly state otherwise, + * any Contribution intentionally submitted for inclusion in the Work + * by You to the Licensor shall be under the terms and conditions of + * this License, without any additional terms or conditions. + * Notwithstanding the above, nothing herein shall supersede or modify + * the terms of any separate license agreement you may have executed + * with Licensor regarding such Contributions. + * + * 6. Trademarks. This License does not grant permission to use the trade + * names, trademarks, service marks, or product names of the Licensor, + * except as required for reasonable and customary use in describing the + * origin of the Work and reproducing the content of the NOTICE file. + * + * 7. Disclaimer of Warranty. Unless required by applicable law or + * agreed to in writing, Licensor provides the Work (and each + * Contributor provides its Contributions) on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied, including, without limitation, any warranties or conditions + * of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + * PARTICULAR PURPOSE. You are solely responsible for determining the + * appropriateness of using or redistributing the Work and assume any + * risks associated with Your exercise of permissions under this License. + * + * 8. Limitation of Liability. In no event and under no legal theory, + * whether in tort (including negligence), contract, or otherwise, + * unless required by applicable law (such as deliberate and grossly + * negligent acts) or agreed to in writing, shall any Contributor be + * liable to You for damages, including any direct, indirect, special, + * incidental, or consequential damages of any character arising as a + * result of this License or out of the use or inability to use the + * Work (including but not limited to damages for loss of goodwill, + * work stoppage, computer failure or malfunction, or any and all + * other commercial damages or losses), even if such Contributor + * has been advised of the possibility of such damages. + * + * 9. Accepting Warranty or Additional Liability. While redistributing + * the Work or Derivative Works thereof, You may choose to offer, + * and charge a fee for, acceptance of support, warranty, indemnity, + * or other liability obligations and/or rights consistent with this + * License. However, in accepting such obligations, You may act only + * on Your own behalf and on Your sole responsibility, not on behalf + * of any other Contributor, and only if You agree to indemnify, + * defend, and hold each Contributor harmless for any liability + * incurred by, or claims asserted against, such Contributor by reason + * of your accepting any such warranty or additional liability. + * + * END OF TERMS AND CONDITIONS + * + * APPENDIX: How to apply the Apache License to your work. + * + * To apply the Apache License to your work, attach the following + * boilerplate notice, with the fields enclosed by brackets "[]" + * replaced with your own identifying information. (Don't include + * the brackets!) The text should be enclosed in the appropriate + * comment syntax for the file format. We also recommend that a + * file or class name and description of purpose be included on the + * same "printed page" as the copyright notice for easier + * identification within third-party archives. + * + * Copyright [yyyy] [name of copyright owner] + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ diff --git a/ch05/src/shared/docs/README b/ch05/src/shared/docs/README new file mode 100644 index 0000000..f629ac0 --- /dev/null +++ b/ch05/src/shared/docs/README @@ -0,0 +1,4 @@ +Each chapter's build file adds to the previous chapter's. + +Therefore, by Chapter 12, the build file contains all the targets and tasks +from the whole book. \ No newline at end of file diff --git a/ch05/src/shared/docs/index.html b/ch05/src/shared/docs/index.html new file mode 100644 index 0000000..dd2219c --- /dev/null +++ b/ch05/src/shared/docs/index.html @@ -0,0 +1,19 @@ + + + + Welcome to the Plant Application + + + + + + + + +
+ The stand-alone application
+ The web application
+

This is the Plant Application.

+ + + diff --git a/ch05/src/shared/java/org/mwrm/plants/Constants.java b/ch05/src/shared/java/org/mwrm/plants/Constants.java new file mode 100644 index 0000000..74b6e93 --- /dev/null +++ b/ch05/src/shared/java/org/mwrm/plants/Constants.java @@ -0,0 +1,47 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +/** + * The Constants class contains four constants + * that represent sort options. + * + */ + +public class Constants { + + /** Use to sort the plants by their botanical name. */ + public static final int SORT_BY_NAME = 1; + + /** Use to sort the plants by their common name. */ + public static final int SORT_BY_COMMON_NAME = 2; + + /** Use to sort the plants by their family name. */ + public static final int SORT_BY_FAMILY = 3; + + /** + * Use to sort the plants by their botanical name + * and exclude those plants that do not begin with the chosen letter. + */ + public static final int SORT_BY_CHOSEN_LETTER = 4; + + /** + * A simple constructor. + */ + public Constants() { } + +} diff --git a/ch05/src/shared/java/org/mwrm/plants/PropertiesLoader.java b/ch05/src/shared/java/org/mwrm/plants/PropertiesLoader.java new file mode 100644 index 0000000..10d07f3 --- /dev/null +++ b/ch05/src/shared/java/org/mwrm/plants/PropertiesLoader.java @@ -0,0 +1,53 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +import java.util.Properties; + +import java.io.IOException; + +/** + * The PropertiesLoader class loads properties + * from the database.properties file and passes them + * to whichever class wants to use them. This centralises the name + * of the properties file so the entire application can use it. + */ + +public class PropertiesLoader { + + /** A simple constructor. */ + public PropertiesLoader() { } + + /** + * Loads the properties for whichever class needs them. + * + * @return A Java properties file + */ + public final Properties loadProperties() { + + // Read properties file. + Properties properties = new Properties(); + try { + properties.load(this.getClass().getClassLoader() + .getResourceAsStream("database.properties")); + } catch (IOException e) { + System.out.println("Error: " + e.getMessage()); + } + + return properties; + } +} diff --git a/ch05/src/shared/java/org/mwrm/plants/SelectData.java b/ch05/src/shared/java/org/mwrm/plants/SelectData.java new file mode 100644 index 0000000..5a0ad89 --- /dev/null +++ b/ch05/src/shared/java/org/mwrm/plants/SelectData.java @@ -0,0 +1,156 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.Statement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; + +import java.util.HashMap; +import java.util.Vector; +import java.util.Properties; + +/** + *

The SelectData class establishes a connection + * with a database and executes a query, as selected by the client.

+ * + *

It gets the database driver name and the URL + * from the database.properties file. + * When the results come back from the database, + * this class places them as HashMap records + * in a Vector. It then passes this Vector + * back to the calling client.

+ * + *

The SQL strings are:

+ * + *
    + *
  • Constants.SORT_BY_NAME (the default): + * SELECT * FROM plants ORDER BY name
  • + *
  • Constants.SORT_BY_COMMON_NAME: + * SELECT * FROM plants ORDER BY common_name
  • + *
  • Constants.SORT_BY_FAMILY: + * SELECT * FROM plants ORDER BY family, name
  • + *
  • Constants.SORT_BY_CHOSEN_LETTER: + * SELECT * FROM plants WHERE name REGEXP '^X' + * where X is a letter supplied by the client
  • + *
+ */ + +public final class SelectData { + + /** + *

The default constructor.

+ */ + private SelectData() { } + + /** + * Get the data from the database. + * @param choice The criteria for sorting the results. + * This choice is held in the Constants class. + * @param letter The letter to use when limiting the search, + * should that option be chosen. + * @return Vector + * @throws ClassNotFoundException If the database driver is not found + * @throws SQLException If there's a problem with database operations + */ + public static Vector getData(final int choice, final String letter) + throws ClassNotFoundException, SQLException { + + // Read properties file + PropertiesLoader loader = new PropertiesLoader(); + Properties properties = loader.loadProperties(); + + // First load the MySQL JDBC driver + Class.forName(properties.getProperty("driver.name")); + + // The datasource + String url = properties.getProperty("database.root") + + properties.getProperty("database.name"); + + // Open the connection + Connection con = DriverManager.getConnection(url, "antBook", "antB00k"); + + Statement stmt = con.createStatement(); + + String select = getSelectString(choice, letter); + + // Now we get the data + ResultSet rs = stmt.executeQuery(select); + + // We'll need the metadata when we come to populate the session object + ResultSetMetaData rsmd = rs.getMetaData(); + int numberOfColumns = rsmd.getColumnCount(); + + Vector results = new Vector(); + + while (rs.next()) { + // We need a fresh entry every time + HashMap record = new HashMap(numberOfColumns); + + String columnName = ""; + + // For each column in the table, + // we want to add an entry to the HashMap + // with the same key as the column name + for (int i = 1; i <= numberOfColumns; i++) { + columnName = rsmd.getColumnName(i); + record.put(columnName, rs.getString(columnName)); + } + results.add(record); + } + + // Close the Statement and the Connection + stmt.close(); + con.close(); + + return results; + } + + /** + *

Returns the appropriate SQL string for the choice.

+ * @param choice The user's choice of search criteria. + * @param letter The letter to use when modifying the search. + * @return String + */ + private static String + getSelectString(final int choice, final String letter) { + + // This is the default SELECT statement if no arguments are specified + String selectString = "SELECT * FROM plants ORDER BY name"; + + // Check the type of argument + if (choice == Constants.SORT_BY_COMMON_NAME) { + // Order the results by common name + selectString = "SELECT * FROM plants ORDER BY common_name"; + + } else if (choice == Constants.SORT_BY_FAMILY) { + // Order the results by family, then botanical name + selectString = "SELECT * FROM plants ORDER BY family, name"; + + } else if (choice == Constants.SORT_BY_CHOSEN_LETTER) { + // The search will only return those plants whose botanical name + // begins with the specifed letter. + selectString = "SELECT * FROM plants WHERE name REGEXP '^" + + letter + "'"; + } + + return selectString; + } +} diff --git a/ch05/src/shared/java/org/mwrm/plants/package.html b/ch05/src/shared/java/org/mwrm/plants/package.html new file mode 100644 index 0000000..b64e7c3 --- /dev/null +++ b/ch05/src/shared/java/org/mwrm/plants/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants Package + + +

Utility classes for the plant application.

+ + \ No newline at end of file diff --git a/ch05/src/stand-alone/docs/index.html b/ch05/src/stand-alone/docs/index.html new file mode 100644 index 0000000..f615152 --- /dev/null +++ b/ch05/src/stand-alone/docs/index.html @@ -0,0 +1,19 @@ + + + + Welcome to the Plant Application + + + + + + + + +
+ The stand-alone application
+ The web application
+

This is the stand-alone application.

+ + + \ No newline at end of file diff --git a/ch05/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java b/ch05/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java new file mode 100644 index 0000000..bca1073 --- /dev/null +++ b/ch05/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java @@ -0,0 +1,154 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants.client; + +import java.sql.SQLException; + +import java.util.HashMap; +import java.util.Vector; +import java.util.Enumeration; + +import org.mwrm.plants.SelectData; +import org.mwrm.plants.Constants; + +/** + *

The PlantClient class is a command-line client + * for the plant application.

+ *

Usage:

+ *
    + *
  • -c Order by common name
  • + *
  • -f Order by family
  • + *
  • -n Order by botanical name (default)
  • + *
  • -n [letter] Order by botanical name + * and limit the search to plants beginning with the specified letter
  • + *
+ */ + +public final class PlantClient { + + /** + *

A simple constructor.

+ */ + private PlantClient() { } + + /** + * Checks the arguments, + * then uses the org.mwrm.plants.SelectData + * class to get results from the database. + * Once it has the results, it displays them to standard out. + * @param args The command-line arguments. + * @throws ClassNotFoundException If the database driver is not found + * @throws SQLException If there is a problem with the database + */ + public static void main(final String[] args) + throws ClassNotFoundException, SQLException { + + // The default choice + int choice = Constants.SORT_BY_NAME; + + // The user may want to select by a certain letter + String letter = ""; + + // Check that an argument has been provided + if (args.length > 0) { + // Check the type of argument + if (args[0].equals("-c") || args[0].equals("")) { + // Cannot be used with an argument just now, + // though Ant may pass an empty string + if (args.length > 1 && !args[1].equals("")) { + usage(); + } + // Order the results by common name + choice = Constants.SORT_BY_COMMON_NAME; + + } else if (args[0].equals("-f")) { + // Cannot be used with an argument just now, + // though Ant may pass an empty string + if (args.length > 1 && !args[1].equals("")) { + usage(); + } + // Order the results by family, then botanical name + choice = Constants.SORT_BY_FAMILY; + + } else if (args[0].equals("-n")) { + // Order the results by botanical name + // This is the default if no arguments are specified + + // The user can provide another argument. + // The search will only return those plants whose botanical name + // begins with the specifed letter. + if (args.length > 1 && !args[1].equals("")) { + choice = Constants.SORT_BY_CHOSEN_LETTER; + letter = args[1]; + } + } else { + // Usage information + usage(); + } + } + + // Obtain the results. This is a Vector of HashMaps + Vector results = SelectData.getData(choice, letter); + + // The top of the results display + System.out.println("\n-----------------------------"); + + // If there is no data in the results, tell the user + if (results.isEmpty()) { + System.out.println("No results found."); + System.out.println("-----------------------------"); + } else { + + // Each record in the database is a HashMap + HashMap record = new HashMap(); + + // Iterate over the results + for (Enumeration enum = results.elements(); + enum.hasMoreElements();) { + + record = (HashMap) enum.nextElement(); + + // The cultivar name is optional + String cultivar = ""; + + if (!(record.get("cultivar_name") == null)) { + cultivar = " '" + record.get("cultivar_name") + "'"; + } + + System.out.println("Name: " + record.get("name") + cultivar); + System.out.println("Common name: " + record.get("common_name")); + System.out.println("Family: " + record.get("family")); + System.out.println("Description: " + record.get("description")); + System.out.println("-----------------------------"); + } + } + } + + /** + *

Print the usage information.

+ */ + private static void usage() { + System.out.println("\nUsage: \n"); + System.out.println("-c \t\t Order by common name"); + System.out.println("-f \t\t Order by family"); + System.out.println("-n \t\t Order by botanical name (default)"); + System.out.println("-n [letter] \t Order by botanical name" + + " and limit the search to plants "); + System.out.println("\t\t beginning with the specified letter"); + System.exit(0); + } +} diff --git a/ch05/src/stand-alone/java/org/mwrm/plants/client/package.html b/ch05/src/stand-alone/java/org/mwrm/plants/client/package.html new file mode 100644 index 0000000..9148475 --- /dev/null +++ b/ch05/src/stand-alone/java/org/mwrm/plants/client/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants.client Package + + +

Contains the command-line client for the plant application.

+ + \ No newline at end of file diff --git a/ch05/src/web/conf/antBook.xml b/ch05/src/web/conf/antBook.xml new file mode 100644 index 0000000..9746019 --- /dev/null +++ b/ch05/src/web/conf/antBook.xml @@ -0,0 +1,3 @@ + + diff --git a/ch05/src/web/conf/plant.tld b/ch05/src/web/conf/plant.tld new file mode 100644 index 0000000..0066066 --- /dev/null +++ b/ch05/src/web/conf/plant.tld @@ -0,0 +1,32 @@ + + + + + 1.0 + 2.0 + plant + /plant-taglib + + A simple tab library for the plant application + + + + + Displays a character when given an integer + + letters + org.mwrm.plants.tags.LettersTag + false + none + + letter + true + true + char + + + + \ No newline at end of file diff --git a/ch05/src/web/conf/web.xml b/ch05/src/web/conf/web.xml new file mode 100644 index 0000000..c60d60e --- /dev/null +++ b/ch05/src/web/conf/web.xml @@ -0,0 +1,66 @@ + + + + + A plant application. + + + + resultsPerPage + 5 + + This value sets how many results will be shown per results page. + + + + + + + Resource reference to a factory for java.sql.Connection + instances that may be used for talking to a particular + database that is configured in the plantBook.xml file. + + + jdbc/PlantDB + + + javax.sql.DataSource + + + SERVLET + + + + + /plant-taglib + /WEB-INF/plant.tld + + + + plantServlet + + org.mwrm.plants.servlets.PlantServlet + + + + + Print debug information to the console + + + debug + + + true + + + + + + plantServlet + /plants/listPlants.jsp + + + \ No newline at end of file diff --git a/ch05/src/web/docs/index.html b/ch05/src/web/docs/index.html new file mode 100644 index 0000000..606c2b3 --- /dev/null +++ b/ch05/src/web/docs/index.html @@ -0,0 +1,19 @@ + + + + Welcome to the Plant Application + + + + + + + + +
+ The stand-alone application
+ The web application
+

This is the web application.

+ + + \ No newline at end of file diff --git a/ch05/src/web/images/banner_under.jpg b/ch05/src/web/images/banner_under.jpg new file mode 100644 index 0000000000000000000000000000000000000000..131c6a10b4fce0a65d11ee54cba46b10772eefbc GIT binary patch literal 21943 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 literal 0 HcmV?d00001 diff --git a/ch05/src/web/images/cyc_cou.jpg b/ch05/src/web/images/cyc_cou.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed0556c8da702a9316b72a885aef6fdcd8bc7a12 GIT binary patch literal 15502 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

The servlet client for the plant application.

+ * + *

Extracts the show parameter from the request + * to determine what the user wants to see. + * Valid values for show are:

+ * + *
    + *
  • common: Order by common name
  • + *
  • family: Order by family
  • + *
  • name: Order by botanical name (default)
  • + *
+ * + *

If the client sends a letter parameter, + * then the search is limited to records that begin with that letter.

+ */ +public class PlantServlet extends HttpServlet { + + /** + *

Extracts the show parameter from the request + * to determine what the user wants to see. + * Valid values for show are:

+ * + *
    + *
  • common: Order by common name
  • + *
  • family: Order by family
  • + *
  • name: Order by botanical name (default)
  • + *
+ * + *

If the client sends a letter parameter, + * then the search is limited to records that begin with that letter.

+ * + *

Once the choice has been extracted, + * this servlet uses the org.mwrm.plants.SelectData class + * to get results from the database. Once it has the results, + * it places them in the session under the name "results" + * and forwards the request to /plants/displayPage.jsp, + * which displays the first page of the results.

+ * + *

If the debug servlet initialization parameter + * is set to true the results + * will also be sent to standard out.

+ * + * @param request The request object. + * @param response The response object. + * + * @throws ServletException + * If there is a problem when processing the request + * @throws IOException If there is a problem writing the response + */ + public final void doGet(final HttpServletRequest request, + final HttpServletResponse response) + throws ServletException, IOException { + // The default choice + int choice = Constants.SORT_BY_NAME; + + // Check the show parameter + // to see if the user wants to select anything else + if (request.getParameter("show").equals("common")) { + choice = Constants.SORT_BY_COMMON_NAME; + } else if (request.getParameter("show").equals("family")) { + choice = Constants.SORT_BY_FAMILY; + } + + // The results from the database + Vector results = null; + // The letter that the user wants to sort by + String letter = null; + + // If the letter parameter is set, then make the appropriate choice + if (request.getParameter("letter") != null) { + letter = request.getParameter("letter").toLowerCase(); + choice = Constants.SORT_BY_CHOSEN_LETTER; + } + + // Obtain the results. This is a Vector of HashMaps + try { + results = SelectData.getData(choice, letter); + } catch (ClassNotFoundException cnfe) { + throw new ServletException(cnfe.getMessage()); + } catch (SQLException sqle) { + throw new ServletException(sqle.getMessage()); + } + + // The debug servlet initialization parameter sets output options + if (getServletConfig().getInitParameter("debug").equals("true")) { + // The top of the results display + System.out.println("\n-----------------------------"); + + // If there is no data in the results, tell the user + if (results.isEmpty()) { + System.out.println("No results found."); + System.out.println("-----------------------------"); + } else { + + // Each record in the database is a HashMap + HashMap record = new HashMap(); + + // Iterate over the results + for (Enumeration enum = results.elements(); + enum.hasMoreElements();) { + + // The current record + record = (HashMap) enum.nextElement(); + + // The cultivar name is optional + String cultivar = ""; + + // If the cultivar_name column is present, + // add it to the output string + if (!(record.get("cultivar_name") == null)) { + cultivar = " '" + record.get("cultivar_name") + "'"; + } + + // Print them to standard out + System.out.println("Name: " + + record.get("name") + cultivar); + System.out.println("Common name: " + + record.get("common_name")); + System.out.println("Family: " + + record.get("family")); + System.out.println("Description: " + + record.get("description")); + System.out.println("Image: " + + record.get("image")); + System.out.println("-----------------------------"); + } + } + } + + // Now store the results in the session + HttpSession session = request.getSession(true); + + // If the results are empty, + // then store a flag to tell the application as such, + // then remove the results object so the pages don't try to work with it + if (results.isEmpty()) { + session.setAttribute("noResults", "true"); + session.removeAttribute("results"); + + // There are some results, + // so place them in the session and remove the noResults flag, + // so that the application knows there are results + } else { + session.setAttribute("results", results); + session.removeAttribute("noResults"); + + // The pages will need to know the number of results + session.setAttribute("resultsSize", "" + results.size() + ""); + } + + // Forward the request to the display page + getServletContext() + .getRequestDispatcher("/plants/displayResults.jsp?start=0") + .forward(request, response); + } + + /** + * Sends any POST requests to the doGet method. + * + * @param request The request object. + * @param response The response object. + * + * @throws ServletException + * If there is a problem when processing the request + * @throws IOException If there is a problem writing the response + */ + public final void doPost(final HttpServletRequest request, + final HttpServletResponse response) + throws ServletException, IOException { + doGet(request, response); + } +} diff --git a/ch05/src/web/java/org/mwrm/plants/servlets/package.html b/ch05/src/web/java/org/mwrm/plants/servlets/package.html new file mode 100644 index 0000000..d9ac8dd --- /dev/null +++ b/ch05/src/web/java/org/mwrm/plants/servlets/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants.servlets Package + + +

Contains the servlet for the plant application.

+ + \ No newline at end of file diff --git a/ch05/src/web/java/org/mwrm/plants/tags/LettersTag.java b/ch05/src/web/java/org/mwrm/plants/tags/LettersTag.java new file mode 100644 index 0000000..6911f3f --- /dev/null +++ b/ch05/src/web/java/org/mwrm/plants/tags/LettersTag.java @@ -0,0 +1,63 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants.tags; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.JspWriter; +import javax.servlet.jsp.tagext.SimpleTagSupport; + +import java.io.IOException; + + /** + *

Converts an integer into a character. + * The letter attribute takes the integer, + * which is converted to a char by the time the tag gets it. + * The tag then writes the char to the client.

+ */ +public class LettersTag extends SimpleTagSupport { + + /** + * The character to display. + */ + private char letter; + + /** + *

Processes the tag when it is encountered on the page.

+ * @throws JspException + * If there is a problem processing the tag + * @throws IOException + * If there is a problem writing to the client + */ + public final void doTag() throws JspException, IOException { + + // The page that the client will receive + JspWriter out = getJspContext().getOut(); + + // Write the letter to the client + out.print(letter); + } + + /** + * + *

The setter method for the letter attribute.

+ * + * @param aLetter The letter to display. + */ + public final void setLetter(final char aLetter) { + this.letter = aLetter; + } +} diff --git a/ch05/src/web/java/org/mwrm/plants/tags/package.html b/ch05/src/web/java/org/mwrm/plants/tags/package.html new file mode 100644 index 0000000..fcb8df4 --- /dev/null +++ b/ch05/src/web/java/org/mwrm/plants/tags/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants.tags Package + + +

Contains the custom tags for the plant application.

+ + \ No newline at end of file diff --git a/ch05/src/web/pages/footer.html b/ch05/src/web/pages/footer.html new file mode 100644 index 0000000..8511c9c --- /dev/null +++ b/ch05/src/web/pages/footer.html @@ -0,0 +1,3 @@ +
+ Bottom banner +
\ No newline at end of file diff --git a/ch05/src/web/pages/header.jsp b/ch05/src/web/pages/header.jsp new file mode 100644 index 0000000..135f4a5 --- /dev/null +++ b/ch05/src/web/pages/header.jsp @@ -0,0 +1,16 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> +<%@ taglib uri="/plant-taglib" prefix="tags" %> +
\ No newline at end of file diff --git a/ch05/src/web/pages/index.jsp b/ch05/src/web/pages/index.jsp new file mode 100644 index 0000000..2b9ae28 --- /dev/null +++ b/ch05/src/web/pages/index.jsp @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/ch05/src/web/pages/indexBody.jsp b/ch05/src/web/pages/indexBody.jsp new file mode 100644 index 0000000..6410604 --- /dev/null +++ b/ch05/src/web/pages/indexBody.jsp @@ -0,0 +1 @@ +

Welcome to the plant information application.

\ No newline at end of file diff --git a/ch05/src/web/pages/menu.jsp b/ch05/src/web/pages/menu.jsp new file mode 100644 index 0000000..135b8cc --- /dev/null +++ b/ch05/src/web/pages/menu.jsp @@ -0,0 +1,5 @@ +<%-- This page is common to the whole application --%> +<%@ taglib tagdir="/WEB-INF/tags" prefix="tags" %> +
+ +
\ No newline at end of file diff --git a/ch05/src/web/pages/plantStyle.css b/ch05/src/web/pages/plantStyle.css new file mode 100644 index 0000000..48b3129 --- /dev/null +++ b/ch05/src/web/pages/plantStyle.css @@ -0,0 +1,75 @@ +.menu-main { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: large; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.menu-sub { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: medium; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.footer { + color: #000000; + background-color: #FFFFFF; +} + +h1 { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: large; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.letters { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: medium; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.center { + text-align: center +} + +tr.template { + height: 500px +} + +td.template { + width: 200px +} + +tr.resultRow { + height: 250px +} + +p.left { + text-align: left +} + +p { + color: #000000; + background-color: #FFFFFF; + font-family: Arial, Verdana,Helvetica, Sans-Serif +} + +.italic { + color: #000000; + background-color: #FFFFFF; + font-family: Arial, Verdana,Helvetica, Sans-Serif; + font-style: italic +} + +.results { + color: #000000; + background-color: #FFFFFF; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} diff --git a/ch05/src/web/pages/plants/displayPlant.jsp b/ch05/src/web/pages/plants/displayPlant.jsp new file mode 100644 index 0000000..6e30cd6 --- /dev/null +++ b/ch05/src/web/pages/plants/displayPlant.jsp @@ -0,0 +1,15 @@ +<%-- JSP Directives --%> +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + + + + + + + + + + + + + diff --git a/ch05/src/web/pages/plants/displayPlantBody.jsp b/ch05/src/web/pages/plants/displayPlantBody.jsp new file mode 100644 index 0000000..9c37af4 --- /dev/null +++ b/ch05/src/web/pages/plants/displayPlantBody.jsp @@ -0,0 +1,31 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + + + + + + + + + + + + + + + + + +
+

+ Name:
+ Common name:
+ Family:
+ Description:
+

+
+
+ +<%-- We need to go back to where we came from --%> +Back \ No newline at end of file diff --git a/ch05/src/web/pages/plants/displayResults.jsp b/ch05/src/web/pages/plants/displayResults.jsp new file mode 100644 index 0000000..6c7c31c --- /dev/null +++ b/ch05/src/web/pages/plants/displayResults.jsp @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/ch05/src/web/pages/plants/displayResultsBody.jsp b/ch05/src/web/pages/plants/displayResultsBody.jsp new file mode 100644 index 0000000..0c09a66 --- /dev/null +++ b/ch05/src/web/pages/plants/displayResultsBody.jsp @@ -0,0 +1,63 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> + + +

Search Results

+ + + +

Sorry, there were no results for the search. Please try again.

+
+ + +
+

Number of results:

+ + + + + + + +
+ + "> +
+ +
+
+
+ + + + + + + ">First + + + + + + + ">Back + + + + + + + ">Next + + + + + + + ">Last + +
+
+ + \ No newline at end of file diff --git a/ch05/src/web/pages/plants/index.jsp b/ch05/src/web/pages/plants/index.jsp new file mode 100644 index 0000000..3c51457 --- /dev/null +++ b/ch05/src/web/pages/plants/index.jsp @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/ch05/src/web/pages/plants/searchForm.jsp b/ch05/src/web/pages/plants/searchForm.jsp new file mode 100644 index 0000000..0043e00 --- /dev/null +++ b/ch05/src/web/pages/plants/searchForm.jsp @@ -0,0 +1 @@ +

Click on a letter above or a link on the left.

diff --git a/ch05/src/web/pages/template.jsp b/ch05/src/web/pages/template.jsp new file mode 100644 index 0000000..a1fff41 --- /dev/null +++ b/ch05/src/web/pages/template.jsp @@ -0,0 +1,47 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + + + + + + + <c:out value="${param.title}" default="Plants"/> + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + +
+
+ + + \ No newline at end of file diff --git a/ch05/src/web/tags/simple.tag b/ch05/src/web/tags/simple.tag new file mode 100644 index 0000000..8683c7f --- /dev/null +++ b/ch05/src/web/tags/simple.tag @@ -0,0 +1,12 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + +

+ Home
+ Plants
+ + +  By common name
+  By botanical name
+  By family
+
+

\ No newline at end of file diff --git a/ch06/build.properties b/ch06/build.properties new file mode 100644 index 0000000..aec73a5 --- /dev/null +++ b/ch06/build.properties @@ -0,0 +1,100 @@ +# The source directory that contains the code +src=src + +# Subdirectory properties +src.shared.root=${src}/shared +src.shared.java=${src.shared.root}/java +src.shared.docs=${src.shared.root}/docs +src.shared.conf=${src.shared.root}/conf + +src.stand-alone.root=${src}/stand-alone +src.stand-alone.java=${src.stand-alone.root}/java +src.stand-alone.docs=${src.stand-alone.root}/docs + +src.web.root=${src}/web +src.web.java=${src.web.root}/java +src.web.docs=${src.web.root}/docs +src.web.pages=${src.web.root}/pages +src.web.tags=${src.web.root}/tags +src.web.conf=${src.web.root}/conf + +# The scratch directory +build=build + +build.stand-alone.root=${build}/stand-alone + +build.web.root=${build}/web +build.web.web-inf=${build.web.root}/WEB-INF +build.web.classes=${build.web.web-inf}/classes +build.web.tags=${build.web.web-inf}/tags +build.web.lib=${build.web.web-inf}/lib + +# The final destination of our project files +dist=dist + +# The location of third-party JAR files +lib=lib + +# This name will be appended to the JAR and WAR files +appName=antBook +appName.jar=${dist}/${appName}.jar +appName.war=${dist}/${appName}.war + +# The Tomcat home directory +catalina.home=C:\\jakarta-tomcat-5.5.9 +servlet24.jar=${catalina.home}/common/lib/servlet-api.jar +# Use the following line if using Ant to download the JAR +#servlet24.jar=${lib}/servlet-api.jar + +# Required for the JSTL build +jsp20.jar=${catalina.home}/common/lib/jsp-api.jar +# Use the following line if using Ant to download the JAR +#jsp20.jar=${lib}/jsp-api.jar +jstl.build=jakarta-taglibs/standard +library.src=src +examples.src=examples +doc.src=doc +build.library=${build} + +# Required for the MySQL connector build +mysql.build=mm.mysql-2 +mysql.name=mysql-connector +mysql.jar=${lib}/${mysql.name}-bin.jar + +# The database properties file +database.properties=${src.shared.conf}/database.properties + +# The directory where the docs will go +docs=${build}/docs + +# Properties for customizing the Javadoc build +javadoc.doctitle=Welcome to the example application +javadoc.windowtitle=The example application +javadoc.j2se.version=1.5.0 +javadoc.j2ee.version=1.4 + +javadoc.j2se.offline=C:/j2sdk1.5.0/docs/api +javadoc.j2ee.offline=C:/j2eesdk1.4/docs/apidocs + +package.stand-alone=stand-alone +package.web=web +package.docs=docs + +tmp=C:/TEMP/antBook +#tmp=/tmp/antBook + +# FTP settings +ftp.server=localhost +ftp.src.dir=src +ftp.bin.dir=bin + +mail.from=antBuild@example.com +mail.tolist=antUser01@example.com,antUser02@example.com +mail.message.docs=Here's the docs distribution +mail.mailhost=smtp.mail.example.com +mail.subject=Ant build + +# The location of the Tomcat server +tomcat.host=localhost +tomcat.port=8080 +manager.url=http://${tomcat.host}:${tomcat.port}/manager diff --git a/ch06/build.xml b/ch06/build.xml new file mode 100644 index 0000000..f8e5341 --- /dev/null +++ b/ch06/build.xml @@ -0,0 +1,899 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${javadoc.doctitle} + + + + + + + + + + + + + + ${javadoc.doctitle} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${mail.message.docs} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ch06/src/shared/conf/SQL/plants.sql b/ch06/src/shared/conf/SQL/plants.sql new file mode 100644 index 0000000..f95cb20 --- /dev/null +++ b/ch06/src/shared/conf/SQL/plants.sql @@ -0,0 +1,13 @@ +CREATE DATABASE IF NOT EXISTS plants; + +USE plants; + +CREATE TABLE plants ( + id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(80) NOT NULL, + common_name VARCHAR(80), + family VARCHAR(50) NOT NULL, + description TEXT NOT NULL, + image VARCHAR(20), + cultivar_name VARCHAR(80) +); \ No newline at end of file diff --git a/ch06/src/shared/conf/SQL/plantsDelete.sql b/ch06/src/shared/conf/SQL/plantsDelete.sql new file mode 100644 index 0000000..ea4dd57 --- /dev/null +++ b/ch06/src/shared/conf/SQL/plantsDelete.sql @@ -0,0 +1,3 @@ +USE plants; + +DELETE FROM plants; \ No newline at end of file diff --git a/ch06/src/shared/conf/SQL/plantsDrop.sql b/ch06/src/shared/conf/SQL/plantsDrop.sql new file mode 100644 index 0000000..999053f --- /dev/null +++ b/ch06/src/shared/conf/SQL/plantsDrop.sql @@ -0,0 +1 @@ +DROP DATABASE IF EXISTS plants; \ No newline at end of file diff --git a/ch06/src/shared/conf/SQL/plantsInsert.sql b/ch06/src/shared/conf/SQL/plantsInsert.sql new file mode 100644 index 0000000..1b11952 --- /dev/null +++ b/ch06/src/shared/conf/SQL/plantsInsert.sql @@ -0,0 +1,15 @@ +USE plants; + +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Galanthus nivalis", "Snowdrop", "Liliaceae", "Snowdrops appear in late winter and early spring.", "gal_niv.jpg"); +INSERT INTO plants (name, common_name, family, description) VALUES ("Narcissus pseudonarcissus", "Daffodil, Lent lily", "Liliaceae", "Daffodils appear in spring."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Narcissus poeticus var. recurvus", "Old Pheasant's Eye, Poet's narcissus", "Liliaceae", "A very late-flowering daffodil with white petals and a short orange/yellow trumpet."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Leucojum vernum", "Spring snowflake", "Liliaceae", "A lovely spring bulb that flowers in spring. It resembles a robust snowdrop."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Iris pseudacorus", "Yellow iris, Yellow flag", "Iridaceae", "Commonly found by water and damp places. It spreads quickly and can easily take over an area once introduced."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Crocus tommasinianus", "Early crocus", "Iridaceae", "An early flowering crocus with gentle lavender-coloured flowers."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Colchicum autumnale", "Meadow saffron, Autumn crocus", "Liliaceae", "Flowers in August and September months after its leaves have died away. Resembles a crocus very closely."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Hyacinthoides non-scripta", "Bluebell", "Liliaceae", "Cloaks the floor of deciduous woodland throughout Europe."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Erythronium dens-canis", "Dog's tooth violet", "Liliaceae", "The bulb is shaped like a dog's tooth, hence the name."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Fritillaria meleagris", "Snake's-head fritillary", "Liliaceae", "It takes its name from the mottled pattern on its flower that resembles snakeskin."); +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Cyclamen coum", "Cyclamen", "Primulaceae", "A winter-flowering corm that provides excellent winter colour.", "cyc_cou.jpg"); +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Tulipa turkestanica", "Tulip", "Liliaceae", "A delicate little tulip that appears in mid spring.", "tul_tur.jpg"); +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Ranunculus ficaria", "Lesser celandine", "Ranunculacae", "A dazzlingly yellow flower that is often considered a weed.", "ran_fic.jpg"); \ No newline at end of file diff --git a/ch06/src/shared/conf/database.properties b/ch06/src/shared/conf/database.properties new file mode 100644 index 0000000..ab7b216 --- /dev/null +++ b/ch06/src/shared/conf/database.properties @@ -0,0 +1,7 @@ +database.root=jdbc:mysql://localhost:3306/ +database.name=plants +driver.name=com.mysql.jdbc.Driver + +create.sql=SQL/plants.sql +insert.sql=SQL/plantsInsert.sql +drop.sql=SQL/plantsDrop.sql \ No newline at end of file diff --git a/ch06/src/shared/docs/LICENSE b/ch06/src/shared/docs/LICENSE new file mode 100644 index 0000000..f820d4b --- /dev/null +++ b/ch06/src/shared/docs/LICENSE @@ -0,0 +1,203 @@ +/* + * Apache License + * Version 2.0, January 2004 + * http://www.apache.org/licenses/ + * + * TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + * + * 1. Definitions. + * + * "License" shall mean the terms and conditions for use, reproduction, + * and distribution as defined by Sections 1 through 9 of this document. + * + * "Licensor" shall mean the copyright owner or entity authorized by + * the copyright owner that is granting the License. + * + * "Legal Entity" shall mean the union of the acting entity and all + * other entities that control, are controlled by, or are under common + * control with that entity. For the purposes of this definition, + * "control" means (i) the power, direct or indirect, to cause the + * direction or management of such entity, whether by contract or + * otherwise, or (ii) ownership of fifty percent (50%) or more of the + * outstanding shares, or (iii) beneficial ownership of such entity. + * + * "You" (or "Your") shall mean an individual or Legal Entity + * exercising permissions granted by this License. + * + * "Source" form shall mean the preferred form for making modifications, + * including but not limited to software source code, documentation + * source, and configuration files. + * + * "Object" form shall mean any form resulting from mechanical + * transformation or translation of a Source form, including but + * not limited to compiled object code, generated documentation, + * and conversions to other media types. + * + * "Work" shall mean the work of authorship, whether in Source or + * Object form, made available under the License, as indicated by a + * copyright notice that is included in or attached to the work + * (an example is provided in the Appendix below). + * + * "Derivative Works" shall mean any work, whether in Source or Object + * form, that is based on (or derived from) the Work and for which the + * editorial revisions, annotations, elaborations, or other modifications + * represent, as a whole, an original work of authorship. For the purposes + * of this License, Derivative Works shall not include works that remain + * separable from, or merely link (or bind by name) to the interfaces of, + * the Work and Derivative Works thereof. + * + * "Contribution" shall mean any work of authorship, including + * the original version of the Work and any modifications or additions + * to that Work or Derivative Works thereof, that is intentionally + * submitted to Licensor for inclusion in the Work by the copyright owner + * or by an individual or Legal Entity authorized to submit on behalf of + * the copyright owner. For the purposes of this definition, "submitted" + * means any form of electronic, verbal, or written communication sent + * to the Licensor or its representatives, including but not limited to + * communication on electronic mailing lists, source code control systems, + * and issue tracking systems that are managed by, or on behalf of, the + * Licensor for the purpose of discussing and improving the Work, but + * excluding communication that is conspicuously marked or otherwise + * designated in writing by the copyright owner as "Not a Contribution." + * + * "Contributor" shall mean Licensor and any individual or Legal Entity + * on behalf of whom a Contribution has been received by Licensor and + * subsequently incorporated within the Work. + * + * 2. Grant of Copyright License. Subject to the terms and conditions of + * this License, each Contributor hereby grants to You a perpetual, + * worldwide, non-exclusive, no-charge, royalty-free, irrevocable + * copyright license to reproduce, prepare Derivative Works of, + * publicly display, publicly perform, sublicense, and distribute the + * Work and such Derivative Works in Source or Object form. + * + * 3. Grant of Patent License. Subject to the terms and conditions of + * this License, each Contributor hereby grants to You a perpetual, + * worldwide, non-exclusive, no-charge, royalty-free, irrevocable + * (except as stated in this section) patent license to make, have made, + * use, offer to sell, sell, import, and otherwise transfer the Work, + * where such license applies only to those patent claims licensable + * by such Contributor that are necessarily infringed by their + * Contribution(s) alone or by combination of their Contribution(s) + * with the Work to which such Contribution(s) was submitted. If You + * institute patent litigation against any entity (including a + * cross-claim or counterclaim in a lawsuit) alleging that the Work + * or a Contribution incorporated within the Work constitutes direct + * or contributory patent infringement, then any patent licenses + * granted to You under this License for that Work shall terminate + * as of the date such litigation is filed. + * + * 4. Redistribution. You may reproduce and distribute copies of the + * Work or Derivative Works thereof in any medium, with or without + * modifications, and in Source or Object form, provided that You + * meet the following conditions: + * + * (a) You must give any other recipients of the Work or + * Derivative Works a copy of this License; and + * + * (b) You must cause any modified files to carry prominent notices + * stating that You changed the files; and + * + * (c) You must retain, in the Source form of any Derivative Works + * that You distribute, all copyright, patent, trademark, and + * attribution notices from the Source form of the Work, + * excluding those notices that do not pertain to any part of + * the Derivative Works; and + * + * (d) If the Work includes a "NOTICE" text file as part of its + * distribution, then any Derivative Works that You distribute must + * include a readable copy of the attribution notices contained + * within such NOTICE file, excluding those notices that do not + * pertain to any part of the Derivative Works, in at least one + * of the following places: within a NOTICE text file distributed + * as part of the Derivative Works; within the Source form or + * documentation, if provided along with the Derivative Works; or, + * within a display generated by the Derivative Works, if and + * wherever such third-party notices normally appear. The contents + * of the NOTICE file are for informational purposes only and + * do not modify the License. You may add Your own attribution + * notices within Derivative Works that You distribute, alongside + * or as an addendum to the NOTICE text from the Work, provided + * that such additional attribution notices cannot be construed + * as modifying the License. + * + * You may add Your own copyright statement to Your modifications and + * may provide additional or different license terms and conditions + * for use, reproduction, or distribution of Your modifications, or + * for any such Derivative Works as a whole, provided Your use, + * reproduction, and distribution of the Work otherwise complies with + * the conditions stated in this License. + * + * 5. Submission of Contributions. Unless You explicitly state otherwise, + * any Contribution intentionally submitted for inclusion in the Work + * by You to the Licensor shall be under the terms and conditions of + * this License, without any additional terms or conditions. + * Notwithstanding the above, nothing herein shall supersede or modify + * the terms of any separate license agreement you may have executed + * with Licensor regarding such Contributions. + * + * 6. Trademarks. This License does not grant permission to use the trade + * names, trademarks, service marks, or product names of the Licensor, + * except as required for reasonable and customary use in describing the + * origin of the Work and reproducing the content of the NOTICE file. + * + * 7. Disclaimer of Warranty. Unless required by applicable law or + * agreed to in writing, Licensor provides the Work (and each + * Contributor provides its Contributions) on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied, including, without limitation, any warranties or conditions + * of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + * PARTICULAR PURPOSE. You are solely responsible for determining the + * appropriateness of using or redistributing the Work and assume any + * risks associated with Your exercise of permissions under this License. + * + * 8. Limitation of Liability. In no event and under no legal theory, + * whether in tort (including negligence), contract, or otherwise, + * unless required by applicable law (such as deliberate and grossly + * negligent acts) or agreed to in writing, shall any Contributor be + * liable to You for damages, including any direct, indirect, special, + * incidental, or consequential damages of any character arising as a + * result of this License or out of the use or inability to use the + * Work (including but not limited to damages for loss of goodwill, + * work stoppage, computer failure or malfunction, or any and all + * other commercial damages or losses), even if such Contributor + * has been advised of the possibility of such damages. + * + * 9. Accepting Warranty or Additional Liability. While redistributing + * the Work or Derivative Works thereof, You may choose to offer, + * and charge a fee for, acceptance of support, warranty, indemnity, + * or other liability obligations and/or rights consistent with this + * License. However, in accepting such obligations, You may act only + * on Your own behalf and on Your sole responsibility, not on behalf + * of any other Contributor, and only if You agree to indemnify, + * defend, and hold each Contributor harmless for any liability + * incurred by, or claims asserted against, such Contributor by reason + * of your accepting any such warranty or additional liability. + * + * END OF TERMS AND CONDITIONS + * + * APPENDIX: How to apply the Apache License to your work. + * + * To apply the Apache License to your work, attach the following + * boilerplate notice, with the fields enclosed by brackets "[]" + * replaced with your own identifying information. (Don't include + * the brackets!) The text should be enclosed in the appropriate + * comment syntax for the file format. We also recommend that a + * file or class name and description of purpose be included on the + * same "printed page" as the copyright notice for easier + * identification within third-party archives. + * + * Copyright [yyyy] [name of copyright owner] + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ diff --git a/ch06/src/shared/docs/README b/ch06/src/shared/docs/README new file mode 100644 index 0000000..f629ac0 --- /dev/null +++ b/ch06/src/shared/docs/README @@ -0,0 +1,4 @@ +Each chapter's build file adds to the previous chapter's. + +Therefore, by Chapter 12, the build file contains all the targets and tasks +from the whole book. \ No newline at end of file diff --git a/ch06/src/shared/docs/index.html b/ch06/src/shared/docs/index.html new file mode 100644 index 0000000..dd2219c --- /dev/null +++ b/ch06/src/shared/docs/index.html @@ -0,0 +1,19 @@ + + + + Welcome to the Plant Application + + + + + + + + +
+ The stand-alone application
+ The web application
+

This is the Plant Application.

+ + + diff --git a/ch06/src/shared/java/org/mwrm/plants/Constants.java b/ch06/src/shared/java/org/mwrm/plants/Constants.java new file mode 100644 index 0000000..74b6e93 --- /dev/null +++ b/ch06/src/shared/java/org/mwrm/plants/Constants.java @@ -0,0 +1,47 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +/** + * The Constants class contains four constants + * that represent sort options. + * + */ + +public class Constants { + + /** Use to sort the plants by their botanical name. */ + public static final int SORT_BY_NAME = 1; + + /** Use to sort the plants by their common name. */ + public static final int SORT_BY_COMMON_NAME = 2; + + /** Use to sort the plants by their family name. */ + public static final int SORT_BY_FAMILY = 3; + + /** + * Use to sort the plants by their botanical name + * and exclude those plants that do not begin with the chosen letter. + */ + public static final int SORT_BY_CHOSEN_LETTER = 4; + + /** + * A simple constructor. + */ + public Constants() { } + +} diff --git a/ch06/src/shared/java/org/mwrm/plants/PropertiesLoader.java b/ch06/src/shared/java/org/mwrm/plants/PropertiesLoader.java new file mode 100644 index 0000000..10d07f3 --- /dev/null +++ b/ch06/src/shared/java/org/mwrm/plants/PropertiesLoader.java @@ -0,0 +1,53 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +import java.util.Properties; + +import java.io.IOException; + +/** + * The PropertiesLoader class loads properties + * from the database.properties file and passes them + * to whichever class wants to use them. This centralises the name + * of the properties file so the entire application can use it. + */ + +public class PropertiesLoader { + + /** A simple constructor. */ + public PropertiesLoader() { } + + /** + * Loads the properties for whichever class needs them. + * + * @return A Java properties file + */ + public final Properties loadProperties() { + + // Read properties file. + Properties properties = new Properties(); + try { + properties.load(this.getClass().getClassLoader() + .getResourceAsStream("database.properties")); + } catch (IOException e) { + System.out.println("Error: " + e.getMessage()); + } + + return properties; + } +} diff --git a/ch06/src/shared/java/org/mwrm/plants/SelectData.java b/ch06/src/shared/java/org/mwrm/plants/SelectData.java new file mode 100644 index 0000000..5a0ad89 --- /dev/null +++ b/ch06/src/shared/java/org/mwrm/plants/SelectData.java @@ -0,0 +1,156 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.Statement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; + +import java.util.HashMap; +import java.util.Vector; +import java.util.Properties; + +/** + *

The SelectData class establishes a connection + * with a database and executes a query, as selected by the client.

+ * + *

It gets the database driver name and the URL + * from the database.properties file. + * When the results come back from the database, + * this class places them as HashMap records + * in a Vector. It then passes this Vector + * back to the calling client.

+ * + *

The SQL strings are:

+ * + *
    + *
  • Constants.SORT_BY_NAME (the default): + * SELECT * FROM plants ORDER BY name
  • + *
  • Constants.SORT_BY_COMMON_NAME: + * SELECT * FROM plants ORDER BY common_name
  • + *
  • Constants.SORT_BY_FAMILY: + * SELECT * FROM plants ORDER BY family, name
  • + *
  • Constants.SORT_BY_CHOSEN_LETTER: + * SELECT * FROM plants WHERE name REGEXP '^X' + * where X is a letter supplied by the client
  • + *
+ */ + +public final class SelectData { + + /** + *

The default constructor.

+ */ + private SelectData() { } + + /** + * Get the data from the database. + * @param choice The criteria for sorting the results. + * This choice is held in the Constants class. + * @param letter The letter to use when limiting the search, + * should that option be chosen. + * @return Vector + * @throws ClassNotFoundException If the database driver is not found + * @throws SQLException If there's a problem with database operations + */ + public static Vector getData(final int choice, final String letter) + throws ClassNotFoundException, SQLException { + + // Read properties file + PropertiesLoader loader = new PropertiesLoader(); + Properties properties = loader.loadProperties(); + + // First load the MySQL JDBC driver + Class.forName(properties.getProperty("driver.name")); + + // The datasource + String url = properties.getProperty("database.root") + + properties.getProperty("database.name"); + + // Open the connection + Connection con = DriverManager.getConnection(url, "antBook", "antB00k"); + + Statement stmt = con.createStatement(); + + String select = getSelectString(choice, letter); + + // Now we get the data + ResultSet rs = stmt.executeQuery(select); + + // We'll need the metadata when we come to populate the session object + ResultSetMetaData rsmd = rs.getMetaData(); + int numberOfColumns = rsmd.getColumnCount(); + + Vector results = new Vector(); + + while (rs.next()) { + // We need a fresh entry every time + HashMap record = new HashMap(numberOfColumns); + + String columnName = ""; + + // For each column in the table, + // we want to add an entry to the HashMap + // with the same key as the column name + for (int i = 1; i <= numberOfColumns; i++) { + columnName = rsmd.getColumnName(i); + record.put(columnName, rs.getString(columnName)); + } + results.add(record); + } + + // Close the Statement and the Connection + stmt.close(); + con.close(); + + return results; + } + + /** + *

Returns the appropriate SQL string for the choice.

+ * @param choice The user's choice of search criteria. + * @param letter The letter to use when modifying the search. + * @return String + */ + private static String + getSelectString(final int choice, final String letter) { + + // This is the default SELECT statement if no arguments are specified + String selectString = "SELECT * FROM plants ORDER BY name"; + + // Check the type of argument + if (choice == Constants.SORT_BY_COMMON_NAME) { + // Order the results by common name + selectString = "SELECT * FROM plants ORDER BY common_name"; + + } else if (choice == Constants.SORT_BY_FAMILY) { + // Order the results by family, then botanical name + selectString = "SELECT * FROM plants ORDER BY family, name"; + + } else if (choice == Constants.SORT_BY_CHOSEN_LETTER) { + // The search will only return those plants whose botanical name + // begins with the specifed letter. + selectString = "SELECT * FROM plants WHERE name REGEXP '^" + + letter + "'"; + } + + return selectString; + } +} diff --git a/ch06/src/shared/java/org/mwrm/plants/package.html b/ch06/src/shared/java/org/mwrm/plants/package.html new file mode 100644 index 0000000..b64e7c3 --- /dev/null +++ b/ch06/src/shared/java/org/mwrm/plants/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants Package + + +

Utility classes for the plant application.

+ + \ No newline at end of file diff --git a/ch06/src/stand-alone/docs/index.html b/ch06/src/stand-alone/docs/index.html new file mode 100644 index 0000000..f615152 --- /dev/null +++ b/ch06/src/stand-alone/docs/index.html @@ -0,0 +1,19 @@ + + + + Welcome to the Plant Application + + + + + + + + +
+ The stand-alone application
+ The web application
+

This is the stand-alone application.

+ + + \ No newline at end of file diff --git a/ch06/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java b/ch06/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java new file mode 100644 index 0000000..bca1073 --- /dev/null +++ b/ch06/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java @@ -0,0 +1,154 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants.client; + +import java.sql.SQLException; + +import java.util.HashMap; +import java.util.Vector; +import java.util.Enumeration; + +import org.mwrm.plants.SelectData; +import org.mwrm.plants.Constants; + +/** + *

The PlantClient class is a command-line client + * for the plant application.

+ *

Usage:

+ *
    + *
  • -c Order by common name
  • + *
  • -f Order by family
  • + *
  • -n Order by botanical name (default)
  • + *
  • -n [letter] Order by botanical name + * and limit the search to plants beginning with the specified letter
  • + *
+ */ + +public final class PlantClient { + + /** + *

A simple constructor.

+ */ + private PlantClient() { } + + /** + * Checks the arguments, + * then uses the org.mwrm.plants.SelectData + * class to get results from the database. + * Once it has the results, it displays them to standard out. + * @param args The command-line arguments. + * @throws ClassNotFoundException If the database driver is not found + * @throws SQLException If there is a problem with the database + */ + public static void main(final String[] args) + throws ClassNotFoundException, SQLException { + + // The default choice + int choice = Constants.SORT_BY_NAME; + + // The user may want to select by a certain letter + String letter = ""; + + // Check that an argument has been provided + if (args.length > 0) { + // Check the type of argument + if (args[0].equals("-c") || args[0].equals("")) { + // Cannot be used with an argument just now, + // though Ant may pass an empty string + if (args.length > 1 && !args[1].equals("")) { + usage(); + } + // Order the results by common name + choice = Constants.SORT_BY_COMMON_NAME; + + } else if (args[0].equals("-f")) { + // Cannot be used with an argument just now, + // though Ant may pass an empty string + if (args.length > 1 && !args[1].equals("")) { + usage(); + } + // Order the results by family, then botanical name + choice = Constants.SORT_BY_FAMILY; + + } else if (args[0].equals("-n")) { + // Order the results by botanical name + // This is the default if no arguments are specified + + // The user can provide another argument. + // The search will only return those plants whose botanical name + // begins with the specifed letter. + if (args.length > 1 && !args[1].equals("")) { + choice = Constants.SORT_BY_CHOSEN_LETTER; + letter = args[1]; + } + } else { + // Usage information + usage(); + } + } + + // Obtain the results. This is a Vector of HashMaps + Vector results = SelectData.getData(choice, letter); + + // The top of the results display + System.out.println("\n-----------------------------"); + + // If there is no data in the results, tell the user + if (results.isEmpty()) { + System.out.println("No results found."); + System.out.println("-----------------------------"); + } else { + + // Each record in the database is a HashMap + HashMap record = new HashMap(); + + // Iterate over the results + for (Enumeration enum = results.elements(); + enum.hasMoreElements();) { + + record = (HashMap) enum.nextElement(); + + // The cultivar name is optional + String cultivar = ""; + + if (!(record.get("cultivar_name") == null)) { + cultivar = " '" + record.get("cultivar_name") + "'"; + } + + System.out.println("Name: " + record.get("name") + cultivar); + System.out.println("Common name: " + record.get("common_name")); + System.out.println("Family: " + record.get("family")); + System.out.println("Description: " + record.get("description")); + System.out.println("-----------------------------"); + } + } + } + + /** + *

Print the usage information.

+ */ + private static void usage() { + System.out.println("\nUsage: \n"); + System.out.println("-c \t\t Order by common name"); + System.out.println("-f \t\t Order by family"); + System.out.println("-n \t\t Order by botanical name (default)"); + System.out.println("-n [letter] \t Order by botanical name" + + " and limit the search to plants "); + System.out.println("\t\t beginning with the specified letter"); + System.exit(0); + } +} diff --git a/ch06/src/stand-alone/java/org/mwrm/plants/client/package.html b/ch06/src/stand-alone/java/org/mwrm/plants/client/package.html new file mode 100644 index 0000000..9148475 --- /dev/null +++ b/ch06/src/stand-alone/java/org/mwrm/plants/client/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants.client Package + + +

Contains the command-line client for the plant application.

+ + \ No newline at end of file diff --git a/ch06/src/web/conf/antBook.xml b/ch06/src/web/conf/antBook.xml new file mode 100644 index 0000000..9746019 --- /dev/null +++ b/ch06/src/web/conf/antBook.xml @@ -0,0 +1,3 @@ + + diff --git a/ch06/src/web/conf/plant.tld b/ch06/src/web/conf/plant.tld new file mode 100644 index 0000000..0066066 --- /dev/null +++ b/ch06/src/web/conf/plant.tld @@ -0,0 +1,32 @@ + + + + + 1.0 + 2.0 + plant + /plant-taglib + + A simple tab library for the plant application + + + + + Displays a character when given an integer + + letters + org.mwrm.plants.tags.LettersTag + false + none + + letter + true + true + char + + + + \ No newline at end of file diff --git a/ch06/src/web/conf/web.xml b/ch06/src/web/conf/web.xml new file mode 100644 index 0000000..c60d60e --- /dev/null +++ b/ch06/src/web/conf/web.xml @@ -0,0 +1,66 @@ + + + + + A plant application. + + + + resultsPerPage + 5 + + This value sets how many results will be shown per results page. + + + + + + + Resource reference to a factory for java.sql.Connection + instances that may be used for talking to a particular + database that is configured in the plantBook.xml file. + + + jdbc/PlantDB + + + javax.sql.DataSource + + + SERVLET + + + + + /plant-taglib + /WEB-INF/plant.tld + + + + plantServlet + + org.mwrm.plants.servlets.PlantServlet + + + + + Print debug information to the console + + + debug + + + true + + + + + + plantServlet + /plants/listPlants.jsp + + + \ No newline at end of file diff --git a/ch06/src/web/docs/index.html b/ch06/src/web/docs/index.html new file mode 100644 index 0000000..606c2b3 --- /dev/null +++ b/ch06/src/web/docs/index.html @@ -0,0 +1,19 @@ + + + + Welcome to the Plant Application + + + + + + + + +
+ The stand-alone application
+ The web application
+

This is the web application.

+ + + \ No newline at end of file diff --git a/ch06/src/web/images/banner_under.jpg b/ch06/src/web/images/banner_under.jpg new file mode 100644 index 0000000000000000000000000000000000000000..131c6a10b4fce0a65d11ee54cba46b10772eefbc GIT binary patch literal 21943 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 literal 0 HcmV?d00001 diff --git a/ch06/src/web/images/cyc_cou.jpg b/ch06/src/web/images/cyc_cou.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed0556c8da702a9316b72a885aef6fdcd8bc7a12 GIT binary patch literal 15502 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 literal 0 HcmV?d00001 diff --git a/ch06/src/web/images/no_image.jpg b/ch06/src/web/images/no_image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e86c254e4a1b43f14f582bb31a3f6280d0187a95 GIT binary patch literal 8646 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 w6Q>LRJ1zbbKmA?!FZi9NzW@LL literal 0 HcmV?d00001 diff --git a/ch06/src/web/images/tul_tur.jpg b/ch06/src/web/images/tul_tur.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fcc77b230ba510c80c7c3125e49f9e1b2b7f4303 GIT binary patch literal 21047 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 V1RgxR+tNU<`HJbJtc>re|Jei&5nTWP literal 0 HcmV?d00001 diff --git a/ch06/src/web/java/org/mwrm/plants/servlets/PlantServlet.java b/ch06/src/web/java/org/mwrm/plants/servlets/PlantServlet.java new file mode 100644 index 0000000..bc9b9a8 --- /dev/null +++ b/ch06/src/web/java/org/mwrm/plants/servlets/PlantServlet.java @@ -0,0 +1,209 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants.servlets; + +import java.sql.SQLException; + +import java.util.HashMap; +import java.util.Vector; +import java.util.Enumeration; + +import java.io.IOException; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import javax.servlet.ServletException; + +import org.mwrm.plants.SelectData; +import org.mwrm.plants.Constants; + + /** + *

The servlet client for the plant application.

+ * + *

Extracts the show parameter from the request + * to determine what the user wants to see. + * Valid values for show are:

+ * + *
    + *
  • common: Order by common name
  • + *
  • family: Order by family
  • + *
  • name: Order by botanical name (default)
  • + *
+ * + *

If the client sends a letter parameter, + * then the search is limited to records that begin with that letter.

+ */ +public class PlantServlet extends HttpServlet { + + /** + *

Extracts the show parameter from the request + * to determine what the user wants to see. + * Valid values for show are:

+ * + *
    + *
  • common: Order by common name
  • + *
  • family: Order by family
  • + *
  • name: Order by botanical name (default)
  • + *
+ * + *

If the client sends a letter parameter, + * then the search is limited to records that begin with that letter.

+ * + *

Once the choice has been extracted, + * this servlet uses the org.mwrm.plants.SelectData class + * to get results from the database. Once it has the results, + * it places them in the session under the name "results" + * and forwards the request to /plants/displayPage.jsp, + * which displays the first page of the results.

+ * + *

If the debug servlet initialization parameter + * is set to true the results + * will also be sent to standard out.

+ * + * @param request The request object. + * @param response The response object. + * + * @throws ServletException + * If there is a problem when processing the request + * @throws IOException If there is a problem writing the response + */ + public final void doGet(final HttpServletRequest request, + final HttpServletResponse response) + throws ServletException, IOException { + // The default choice + int choice = Constants.SORT_BY_NAME; + + // Check the show parameter + // to see if the user wants to select anything else + if (request.getParameter("show").equals("common")) { + choice = Constants.SORT_BY_COMMON_NAME; + } else if (request.getParameter("show").equals("family")) { + choice = Constants.SORT_BY_FAMILY; + } + + // The results from the database + Vector results = null; + // The letter that the user wants to sort by + String letter = null; + + // If the letter parameter is set, then make the appropriate choice + if (request.getParameter("letter") != null) { + letter = request.getParameter("letter").toLowerCase(); + choice = Constants.SORT_BY_CHOSEN_LETTER; + } + + // Obtain the results. This is a Vector of HashMaps + try { + results = SelectData.getData(choice, letter); + } catch (ClassNotFoundException cnfe) { + throw new ServletException(cnfe.getMessage()); + } catch (SQLException sqle) { + throw new ServletException(sqle.getMessage()); + } + + // The debug servlet initialization parameter sets output options + if (getServletConfig().getInitParameter("debug").equals("true")) { + // The top of the results display + System.out.println("\n-----------------------------"); + + // If there is no data in the results, tell the user + if (results.isEmpty()) { + System.out.println("No results found."); + System.out.println("-----------------------------"); + } else { + + // Each record in the database is a HashMap + HashMap record = new HashMap(); + + // Iterate over the results + for (Enumeration enum = results.elements(); + enum.hasMoreElements();) { + + // The current record + record = (HashMap) enum.nextElement(); + + // The cultivar name is optional + String cultivar = ""; + + // If the cultivar_name column is present, + // add it to the output string + if (!(record.get("cultivar_name") == null)) { + cultivar = " '" + record.get("cultivar_name") + "'"; + } + + // Print them to standard out + System.out.println("Name: " + + record.get("name") + cultivar); + System.out.println("Common name: " + + record.get("common_name")); + System.out.println("Family: " + + record.get("family")); + System.out.println("Description: " + + record.get("description")); + System.out.println("Image: " + + record.get("image")); + System.out.println("-----------------------------"); + } + } + } + + // Now store the results in the session + HttpSession session = request.getSession(true); + + // If the results are empty, + // then store a flag to tell the application as such, + // then remove the results object so the pages don't try to work with it + if (results.isEmpty()) { + session.setAttribute("noResults", "true"); + session.removeAttribute("results"); + + // There are some results, + // so place them in the session and remove the noResults flag, + // so that the application knows there are results + } else { + session.setAttribute("results", results); + session.removeAttribute("noResults"); + + // The pages will need to know the number of results + session.setAttribute("resultsSize", "" + results.size() + ""); + } + + // Forward the request to the display page + getServletContext() + .getRequestDispatcher("/plants/displayResults.jsp?start=0") + .forward(request, response); + } + + /** + * Sends any POST requests to the doGet method. + * + * @param request The request object. + * @param response The response object. + * + * @throws ServletException + * If there is a problem when processing the request + * @throws IOException If there is a problem writing the response + */ + public final void doPost(final HttpServletRequest request, + final HttpServletResponse response) + throws ServletException, IOException { + doGet(request, response); + } +} diff --git a/ch06/src/web/java/org/mwrm/plants/servlets/package.html b/ch06/src/web/java/org/mwrm/plants/servlets/package.html new file mode 100644 index 0000000..d9ac8dd --- /dev/null +++ b/ch06/src/web/java/org/mwrm/plants/servlets/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants.servlets Package + + +

Contains the servlet for the plant application.

+ + \ No newline at end of file diff --git a/ch06/src/web/java/org/mwrm/plants/tags/LettersTag.java b/ch06/src/web/java/org/mwrm/plants/tags/LettersTag.java new file mode 100644 index 0000000..6911f3f --- /dev/null +++ b/ch06/src/web/java/org/mwrm/plants/tags/LettersTag.java @@ -0,0 +1,63 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants.tags; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.JspWriter; +import javax.servlet.jsp.tagext.SimpleTagSupport; + +import java.io.IOException; + + /** + *

Converts an integer into a character. + * The letter attribute takes the integer, + * which is converted to a char by the time the tag gets it. + * The tag then writes the char to the client.

+ */ +public class LettersTag extends SimpleTagSupport { + + /** + * The character to display. + */ + private char letter; + + /** + *

Processes the tag when it is encountered on the page.

+ * @throws JspException + * If there is a problem processing the tag + * @throws IOException + * If there is a problem writing to the client + */ + public final void doTag() throws JspException, IOException { + + // The page that the client will receive + JspWriter out = getJspContext().getOut(); + + // Write the letter to the client + out.print(letter); + } + + /** + * + *

The setter method for the letter attribute.

+ * + * @param aLetter The letter to display. + */ + public final void setLetter(final char aLetter) { + this.letter = aLetter; + } +} diff --git a/ch06/src/web/java/org/mwrm/plants/tags/package.html b/ch06/src/web/java/org/mwrm/plants/tags/package.html new file mode 100644 index 0000000..fcb8df4 --- /dev/null +++ b/ch06/src/web/java/org/mwrm/plants/tags/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants.tags Package + + +

Contains the custom tags for the plant application.

+ + \ No newline at end of file diff --git a/ch06/src/web/pages/footer.html b/ch06/src/web/pages/footer.html new file mode 100644 index 0000000..8511c9c --- /dev/null +++ b/ch06/src/web/pages/footer.html @@ -0,0 +1,3 @@ +
+ Bottom banner +
\ No newline at end of file diff --git a/ch06/src/web/pages/header.jsp b/ch06/src/web/pages/header.jsp new file mode 100644 index 0000000..135f4a5 --- /dev/null +++ b/ch06/src/web/pages/header.jsp @@ -0,0 +1,16 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> +<%@ taglib uri="/plant-taglib" prefix="tags" %> +
\ No newline at end of file diff --git a/ch06/src/web/pages/index.jsp b/ch06/src/web/pages/index.jsp new file mode 100644 index 0000000..2b9ae28 --- /dev/null +++ b/ch06/src/web/pages/index.jsp @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/ch06/src/web/pages/indexBody.jsp b/ch06/src/web/pages/indexBody.jsp new file mode 100644 index 0000000..6410604 --- /dev/null +++ b/ch06/src/web/pages/indexBody.jsp @@ -0,0 +1 @@ +

Welcome to the plant information application.

\ No newline at end of file diff --git a/ch06/src/web/pages/menu.jsp b/ch06/src/web/pages/menu.jsp new file mode 100644 index 0000000..135b8cc --- /dev/null +++ b/ch06/src/web/pages/menu.jsp @@ -0,0 +1,5 @@ +<%-- This page is common to the whole application --%> +<%@ taglib tagdir="/WEB-INF/tags" prefix="tags" %> +
+ +
\ No newline at end of file diff --git a/ch06/src/web/pages/plantStyle.css b/ch06/src/web/pages/plantStyle.css new file mode 100644 index 0000000..48b3129 --- /dev/null +++ b/ch06/src/web/pages/plantStyle.css @@ -0,0 +1,75 @@ +.menu-main { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: large; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.menu-sub { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: medium; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.footer { + color: #000000; + background-color: #FFFFFF; +} + +h1 { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: large; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.letters { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: medium; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.center { + text-align: center +} + +tr.template { + height: 500px +} + +td.template { + width: 200px +} + +tr.resultRow { + height: 250px +} + +p.left { + text-align: left +} + +p { + color: #000000; + background-color: #FFFFFF; + font-family: Arial, Verdana,Helvetica, Sans-Serif +} + +.italic { + color: #000000; + background-color: #FFFFFF; + font-family: Arial, Verdana,Helvetica, Sans-Serif; + font-style: italic +} + +.results { + color: #000000; + background-color: #FFFFFF; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} diff --git a/ch06/src/web/pages/plants/displayPlant.jsp b/ch06/src/web/pages/plants/displayPlant.jsp new file mode 100644 index 0000000..6e30cd6 --- /dev/null +++ b/ch06/src/web/pages/plants/displayPlant.jsp @@ -0,0 +1,15 @@ +<%-- JSP Directives --%> +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + + + + + + + + + + + + + diff --git a/ch06/src/web/pages/plants/displayPlantBody.jsp b/ch06/src/web/pages/plants/displayPlantBody.jsp new file mode 100644 index 0000000..9c37af4 --- /dev/null +++ b/ch06/src/web/pages/plants/displayPlantBody.jsp @@ -0,0 +1,31 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + + + + + + + + + + + + + + + + + +
+

+ Name:
+ Common name:
+ Family:
+ Description:
+

+
+
+ +<%-- We need to go back to where we came from --%> +Back \ No newline at end of file diff --git a/ch06/src/web/pages/plants/displayResults.jsp b/ch06/src/web/pages/plants/displayResults.jsp new file mode 100644 index 0000000..6c7c31c --- /dev/null +++ b/ch06/src/web/pages/plants/displayResults.jsp @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/ch06/src/web/pages/plants/displayResultsBody.jsp b/ch06/src/web/pages/plants/displayResultsBody.jsp new file mode 100644 index 0000000..0c09a66 --- /dev/null +++ b/ch06/src/web/pages/plants/displayResultsBody.jsp @@ -0,0 +1,63 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> + + +

Search Results

+ + + +

Sorry, there were no results for the search. Please try again.

+
+ + +
+

Number of results:

+ + + + + + + +
+ + "> +
+ +
+
+
+ + + + + + + ">First + + + + + + + ">Back + + + + + + + ">Next + + + + + + + ">Last + +
+
+ + \ No newline at end of file diff --git a/ch06/src/web/pages/plants/index.jsp b/ch06/src/web/pages/plants/index.jsp new file mode 100644 index 0000000..3c51457 --- /dev/null +++ b/ch06/src/web/pages/plants/index.jsp @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/ch06/src/web/pages/plants/searchForm.jsp b/ch06/src/web/pages/plants/searchForm.jsp new file mode 100644 index 0000000..0043e00 --- /dev/null +++ b/ch06/src/web/pages/plants/searchForm.jsp @@ -0,0 +1 @@ +

Click on a letter above or a link on the left.

diff --git a/ch06/src/web/pages/template.jsp b/ch06/src/web/pages/template.jsp new file mode 100644 index 0000000..a1fff41 --- /dev/null +++ b/ch06/src/web/pages/template.jsp @@ -0,0 +1,47 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + + + + + + + <c:out value="${param.title}" default="Plants"/> + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + +
+
+ + + \ No newline at end of file diff --git a/ch06/src/web/tags/simple.tag b/ch06/src/web/tags/simple.tag new file mode 100644 index 0000000..8683c7f --- /dev/null +++ b/ch06/src/web/tags/simple.tag @@ -0,0 +1,12 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + +

+ Home
+ Plants
+ + +  By common name
+  By botanical name
+  By family
+
+

\ No newline at end of file diff --git a/ch07/build.properties b/ch07/build.properties new file mode 100644 index 0000000..3471d11 --- /dev/null +++ b/ch07/build.properties @@ -0,0 +1,110 @@ +# The source directory that contains the code +src=src + +# Subdirectory properties +src.shared.root=${src}/shared +src.shared.java=${src.shared.root}/java +src.shared.docs=${src.shared.root}/docs +src.shared.conf=${src.shared.root}/conf + +src.stand-alone.root=${src}/stand-alone +src.stand-alone.java=${src.stand-alone.root}/java +src.stand-alone.docs=${src.stand-alone.root}/docs + +src.web.root=${src}/web +src.web.java=${src.web.root}/java +src.web.docs=${src.web.root}/docs +src.web.pages=${src.web.root}/pages +src.web.tags=${src.web.root}/tags +src.web.conf=${src.web.root}/conf + +# The scratch directory +build=build + +build.stand-alone.root=${build}/stand-alone + +build.web.root=${build}/web +build.web.web-inf=${build.web.root}/WEB-INF +build.web.classes=${build.web.web-inf}/classes +build.web.tags=${build.web.web-inf}/tags +build.web.lib=${build.web.web-inf}/lib + +# The final destination of our project files +dist=dist + +# The location of third-party JAR files +lib=lib + +# This name will be appended to the JAR and WAR files +appName=antBook +appName.jar=${dist}/${appName}.jar +appName.war=${dist}/${appName}.war + +# The Tomcat home directory +catalina.home=C:\\jakarta-tomcat-5.5.9 +servlet24.jar=${catalina.home}/common/lib/servlet-api.jar +# Use the following line if using Ant to download the JAR +#servlet24.jar=${lib}/servlet-api.jar + +# Required for the JSTL build +jsp20.jar=${catalina.home}/common/lib/jsp-api.jar +# Use the following line if using Ant to download the JAR +#jsp20.jar=${lib}/jsp-api.jar +jstl.build=jakarta-taglibs/standard +library.src=src +examples.src=examples +doc.src=doc +build.library=${build} + +# Required for the MySQL connector build +mysql.build=mm.mysql-2 +mysql.name=mysql-connector +mysql.jar=${lib}/${mysql.name}-bin.jar + +# The database properties file +database.properties=${src.shared.conf}/database.properties + +# The directory where the docs will go +docs=${build}/docs + +# Properties for customizing the Javadoc build +javadoc.doctitle=Welcome to the example application +javadoc.windowtitle=The example application +javadoc.j2se.version=1.5.0 +javadoc.j2ee.version=1.4 + +javadoc.j2se.offline=C:/j2sdk1.5.0/docs/api +javadoc.j2ee.offline=C:/j2eesdk1.4/docs/apidocs + +package.stand-alone=stand-alone +package.web=web +package.docs=docs + +tmp=C:/TEMP/antBook +#tmp=/tmp/antBook + +# FTP settings +ftp.server=localhost +ftp.src.dir=src +ftp.bin.dir=bin + +mail.from=antBuild@example.com +mail.tolist=antUser01@example.com,antUser02@example.com +mail.message.docs=Here's the docs distribution +mail.mailhost=smtp.mail.example.com +mail.subject=Ant build + +# The location of the Tomcat server +tomcat.host=localhost +tomcat.port=8080 +manager.url=http://${tomcat.host}:${tomcat.port}/manager + +database.root=jdbc:mysql://localhost:3306/ +driver.name=com.mysql.jdbc.Driver + +drop.sql=SQL/drop.sql +create.sql=SQL/create.sql +insert.sql=SQL/insert.sql + +# The name of the Tomcat start script +tomcat.executableName=startup diff --git a/ch07/build.xml b/ch07/build.xml new file mode 100644 index 0000000..a8d9591 --- /dev/null +++ b/ch07/build.xml @@ -0,0 +1,1024 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${javadoc.doctitle} + + + + + + + + + + + + + + ${javadoc.doctitle} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${mail.message.docs} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ch07/src/shared/conf/SQL/plants.sql b/ch07/src/shared/conf/SQL/plants.sql new file mode 100644 index 0000000..f95cb20 --- /dev/null +++ b/ch07/src/shared/conf/SQL/plants.sql @@ -0,0 +1,13 @@ +CREATE DATABASE IF NOT EXISTS plants; + +USE plants; + +CREATE TABLE plants ( + id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(80) NOT NULL, + common_name VARCHAR(80), + family VARCHAR(50) NOT NULL, + description TEXT NOT NULL, + image VARCHAR(20), + cultivar_name VARCHAR(80) +); \ No newline at end of file diff --git a/ch07/src/shared/conf/SQL/plantsDelete.sql b/ch07/src/shared/conf/SQL/plantsDelete.sql new file mode 100644 index 0000000..ea4dd57 --- /dev/null +++ b/ch07/src/shared/conf/SQL/plantsDelete.sql @@ -0,0 +1,3 @@ +USE plants; + +DELETE FROM plants; \ No newline at end of file diff --git a/ch07/src/shared/conf/SQL/plantsDrop.sql b/ch07/src/shared/conf/SQL/plantsDrop.sql new file mode 100644 index 0000000..999053f --- /dev/null +++ b/ch07/src/shared/conf/SQL/plantsDrop.sql @@ -0,0 +1 @@ +DROP DATABASE IF EXISTS plants; \ No newline at end of file diff --git a/ch07/src/shared/conf/SQL/plantsInsert.sql b/ch07/src/shared/conf/SQL/plantsInsert.sql new file mode 100644 index 0000000..1b11952 --- /dev/null +++ b/ch07/src/shared/conf/SQL/plantsInsert.sql @@ -0,0 +1,15 @@ +USE plants; + +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Galanthus nivalis", "Snowdrop", "Liliaceae", "Snowdrops appear in late winter and early spring.", "gal_niv.jpg"); +INSERT INTO plants (name, common_name, family, description) VALUES ("Narcissus pseudonarcissus", "Daffodil, Lent lily", "Liliaceae", "Daffodils appear in spring."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Narcissus poeticus var. recurvus", "Old Pheasant's Eye, Poet's narcissus", "Liliaceae", "A very late-flowering daffodil with white petals and a short orange/yellow trumpet."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Leucojum vernum", "Spring snowflake", "Liliaceae", "A lovely spring bulb that flowers in spring. It resembles a robust snowdrop."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Iris pseudacorus", "Yellow iris, Yellow flag", "Iridaceae", "Commonly found by water and damp places. It spreads quickly and can easily take over an area once introduced."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Crocus tommasinianus", "Early crocus", "Iridaceae", "An early flowering crocus with gentle lavender-coloured flowers."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Colchicum autumnale", "Meadow saffron, Autumn crocus", "Liliaceae", "Flowers in August and September months after its leaves have died away. Resembles a crocus very closely."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Hyacinthoides non-scripta", "Bluebell", "Liliaceae", "Cloaks the floor of deciduous woodland throughout Europe."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Erythronium dens-canis", "Dog's tooth violet", "Liliaceae", "The bulb is shaped like a dog's tooth, hence the name."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Fritillaria meleagris", "Snake's-head fritillary", "Liliaceae", "It takes its name from the mottled pattern on its flower that resembles snakeskin."); +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Cyclamen coum", "Cyclamen", "Primulaceae", "A winter-flowering corm that provides excellent winter colour.", "cyc_cou.jpg"); +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Tulipa turkestanica", "Tulip", "Liliaceae", "A delicate little tulip that appears in mid spring.", "tul_tur.jpg"); +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Ranunculus ficaria", "Lesser celandine", "Ranunculacae", "A dazzlingly yellow flower that is often considered a weed.", "ran_fic.jpg"); \ No newline at end of file diff --git a/ch07/src/shared/conf/database.properties b/ch07/src/shared/conf/database.properties new file mode 100644 index 0000000..ab7b216 --- /dev/null +++ b/ch07/src/shared/conf/database.properties @@ -0,0 +1,7 @@ +database.root=jdbc:mysql://localhost:3306/ +database.name=plants +driver.name=com.mysql.jdbc.Driver + +create.sql=SQL/plants.sql +insert.sql=SQL/plantsInsert.sql +drop.sql=SQL/plantsDrop.sql \ No newline at end of file diff --git a/ch07/src/shared/docs/LICENSE b/ch07/src/shared/docs/LICENSE new file mode 100644 index 0000000..f820d4b --- /dev/null +++ b/ch07/src/shared/docs/LICENSE @@ -0,0 +1,203 @@ +/* + * Apache License + * Version 2.0, January 2004 + * http://www.apache.org/licenses/ + * + * TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + * + * 1. Definitions. + * + * "License" shall mean the terms and conditions for use, reproduction, + * and distribution as defined by Sections 1 through 9 of this document. + * + * "Licensor" shall mean the copyright owner or entity authorized by + * the copyright owner that is granting the License. + * + * "Legal Entity" shall mean the union of the acting entity and all + * other entities that control, are controlled by, or are under common + * control with that entity. For the purposes of this definition, + * "control" means (i) the power, direct or indirect, to cause the + * direction or management of such entity, whether by contract or + * otherwise, or (ii) ownership of fifty percent (50%) or more of the + * outstanding shares, or (iii) beneficial ownership of such entity. + * + * "You" (or "Your") shall mean an individual or Legal Entity + * exercising permissions granted by this License. + * + * "Source" form shall mean the preferred form for making modifications, + * including but not limited to software source code, documentation + * source, and configuration files. + * + * "Object" form shall mean any form resulting from mechanical + * transformation or translation of a Source form, including but + * not limited to compiled object code, generated documentation, + * and conversions to other media types. + * + * "Work" shall mean the work of authorship, whether in Source or + * Object form, made available under the License, as indicated by a + * copyright notice that is included in or attached to the work + * (an example is provided in the Appendix below). + * + * "Derivative Works" shall mean any work, whether in Source or Object + * form, that is based on (or derived from) the Work and for which the + * editorial revisions, annotations, elaborations, or other modifications + * represent, as a whole, an original work of authorship. For the purposes + * of this License, Derivative Works shall not include works that remain + * separable from, or merely link (or bind by name) to the interfaces of, + * the Work and Derivative Works thereof. + * + * "Contribution" shall mean any work of authorship, including + * the original version of the Work and any modifications or additions + * to that Work or Derivative Works thereof, that is intentionally + * submitted to Licensor for inclusion in the Work by the copyright owner + * or by an individual or Legal Entity authorized to submit on behalf of + * the copyright owner. For the purposes of this definition, "submitted" + * means any form of electronic, verbal, or written communication sent + * to the Licensor or its representatives, including but not limited to + * communication on electronic mailing lists, source code control systems, + * and issue tracking systems that are managed by, or on behalf of, the + * Licensor for the purpose of discussing and improving the Work, but + * excluding communication that is conspicuously marked or otherwise + * designated in writing by the copyright owner as "Not a Contribution." + * + * "Contributor" shall mean Licensor and any individual or Legal Entity + * on behalf of whom a Contribution has been received by Licensor and + * subsequently incorporated within the Work. + * + * 2. Grant of Copyright License. Subject to the terms and conditions of + * this License, each Contributor hereby grants to You a perpetual, + * worldwide, non-exclusive, no-charge, royalty-free, irrevocable + * copyright license to reproduce, prepare Derivative Works of, + * publicly display, publicly perform, sublicense, and distribute the + * Work and such Derivative Works in Source or Object form. + * + * 3. Grant of Patent License. Subject to the terms and conditions of + * this License, each Contributor hereby grants to You a perpetual, + * worldwide, non-exclusive, no-charge, royalty-free, irrevocable + * (except as stated in this section) patent license to make, have made, + * use, offer to sell, sell, import, and otherwise transfer the Work, + * where such license applies only to those patent claims licensable + * by such Contributor that are necessarily infringed by their + * Contribution(s) alone or by combination of their Contribution(s) + * with the Work to which such Contribution(s) was submitted. If You + * institute patent litigation against any entity (including a + * cross-claim or counterclaim in a lawsuit) alleging that the Work + * or a Contribution incorporated within the Work constitutes direct + * or contributory patent infringement, then any patent licenses + * granted to You under this License for that Work shall terminate + * as of the date such litigation is filed. + * + * 4. Redistribution. You may reproduce and distribute copies of the + * Work or Derivative Works thereof in any medium, with or without + * modifications, and in Source or Object form, provided that You + * meet the following conditions: + * + * (a) You must give any other recipients of the Work or + * Derivative Works a copy of this License; and + * + * (b) You must cause any modified files to carry prominent notices + * stating that You changed the files; and + * + * (c) You must retain, in the Source form of any Derivative Works + * that You distribute, all copyright, patent, trademark, and + * attribution notices from the Source form of the Work, + * excluding those notices that do not pertain to any part of + * the Derivative Works; and + * + * (d) If the Work includes a "NOTICE" text file as part of its + * distribution, then any Derivative Works that You distribute must + * include a readable copy of the attribution notices contained + * within such NOTICE file, excluding those notices that do not + * pertain to any part of the Derivative Works, in at least one + * of the following places: within a NOTICE text file distributed + * as part of the Derivative Works; within the Source form or + * documentation, if provided along with the Derivative Works; or, + * within a display generated by the Derivative Works, if and + * wherever such third-party notices normally appear. The contents + * of the NOTICE file are for informational purposes only and + * do not modify the License. You may add Your own attribution + * notices within Derivative Works that You distribute, alongside + * or as an addendum to the NOTICE text from the Work, provided + * that such additional attribution notices cannot be construed + * as modifying the License. + * + * You may add Your own copyright statement to Your modifications and + * may provide additional or different license terms and conditions + * for use, reproduction, or distribution of Your modifications, or + * for any such Derivative Works as a whole, provided Your use, + * reproduction, and distribution of the Work otherwise complies with + * the conditions stated in this License. + * + * 5. Submission of Contributions. Unless You explicitly state otherwise, + * any Contribution intentionally submitted for inclusion in the Work + * by You to the Licensor shall be under the terms and conditions of + * this License, without any additional terms or conditions. + * Notwithstanding the above, nothing herein shall supersede or modify + * the terms of any separate license agreement you may have executed + * with Licensor regarding such Contributions. + * + * 6. Trademarks. This License does not grant permission to use the trade + * names, trademarks, service marks, or product names of the Licensor, + * except as required for reasonable and customary use in describing the + * origin of the Work and reproducing the content of the NOTICE file. + * + * 7. Disclaimer of Warranty. Unless required by applicable law or + * agreed to in writing, Licensor provides the Work (and each + * Contributor provides its Contributions) on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied, including, without limitation, any warranties or conditions + * of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + * PARTICULAR PURPOSE. You are solely responsible for determining the + * appropriateness of using or redistributing the Work and assume any + * risks associated with Your exercise of permissions under this License. + * + * 8. Limitation of Liability. In no event and under no legal theory, + * whether in tort (including negligence), contract, or otherwise, + * unless required by applicable law (such as deliberate and grossly + * negligent acts) or agreed to in writing, shall any Contributor be + * liable to You for damages, including any direct, indirect, special, + * incidental, or consequential damages of any character arising as a + * result of this License or out of the use or inability to use the + * Work (including but not limited to damages for loss of goodwill, + * work stoppage, computer failure or malfunction, or any and all + * other commercial damages or losses), even if such Contributor + * has been advised of the possibility of such damages. + * + * 9. Accepting Warranty or Additional Liability. While redistributing + * the Work or Derivative Works thereof, You may choose to offer, + * and charge a fee for, acceptance of support, warranty, indemnity, + * or other liability obligations and/or rights consistent with this + * License. However, in accepting such obligations, You may act only + * on Your own behalf and on Your sole responsibility, not on behalf + * of any other Contributor, and only if You agree to indemnify, + * defend, and hold each Contributor harmless for any liability + * incurred by, or claims asserted against, such Contributor by reason + * of your accepting any such warranty or additional liability. + * + * END OF TERMS AND CONDITIONS + * + * APPENDIX: How to apply the Apache License to your work. + * + * To apply the Apache License to your work, attach the following + * boilerplate notice, with the fields enclosed by brackets "[]" + * replaced with your own identifying information. (Don't include + * the brackets!) The text should be enclosed in the appropriate + * comment syntax for the file format. We also recommend that a + * file or class name and description of purpose be included on the + * same "printed page" as the copyright notice for easier + * identification within third-party archives. + * + * Copyright [yyyy] [name of copyright owner] + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ diff --git a/ch07/src/shared/docs/README b/ch07/src/shared/docs/README new file mode 100644 index 0000000..f629ac0 --- /dev/null +++ b/ch07/src/shared/docs/README @@ -0,0 +1,4 @@ +Each chapter's build file adds to the previous chapter's. + +Therefore, by Chapter 12, the build file contains all the targets and tasks +from the whole book. \ No newline at end of file diff --git a/ch07/src/shared/docs/index.html b/ch07/src/shared/docs/index.html new file mode 100644 index 0000000..dd2219c --- /dev/null +++ b/ch07/src/shared/docs/index.html @@ -0,0 +1,19 @@ + + + + Welcome to the Plant Application + + + + + + + + +
+ The stand-alone application
+ The web application
+

This is the Plant Application.

+ + + diff --git a/ch07/src/shared/java/org/mwrm/plants/Constants.java b/ch07/src/shared/java/org/mwrm/plants/Constants.java new file mode 100644 index 0000000..74b6e93 --- /dev/null +++ b/ch07/src/shared/java/org/mwrm/plants/Constants.java @@ -0,0 +1,47 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +/** + * The Constants class contains four constants + * that represent sort options. + * + */ + +public class Constants { + + /** Use to sort the plants by their botanical name. */ + public static final int SORT_BY_NAME = 1; + + /** Use to sort the plants by their common name. */ + public static final int SORT_BY_COMMON_NAME = 2; + + /** Use to sort the plants by their family name. */ + public static final int SORT_BY_FAMILY = 3; + + /** + * Use to sort the plants by their botanical name + * and exclude those plants that do not begin with the chosen letter. + */ + public static final int SORT_BY_CHOSEN_LETTER = 4; + + /** + * A simple constructor. + */ + public Constants() { } + +} diff --git a/ch07/src/shared/java/org/mwrm/plants/PropertiesLoader.java b/ch07/src/shared/java/org/mwrm/plants/PropertiesLoader.java new file mode 100644 index 0000000..10d07f3 --- /dev/null +++ b/ch07/src/shared/java/org/mwrm/plants/PropertiesLoader.java @@ -0,0 +1,53 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +import java.util.Properties; + +import java.io.IOException; + +/** + * The PropertiesLoader class loads properties + * from the database.properties file and passes them + * to whichever class wants to use them. This centralises the name + * of the properties file so the entire application can use it. + */ + +public class PropertiesLoader { + + /** A simple constructor. */ + public PropertiesLoader() { } + + /** + * Loads the properties for whichever class needs them. + * + * @return A Java properties file + */ + public final Properties loadProperties() { + + // Read properties file. + Properties properties = new Properties(); + try { + properties.load(this.getClass().getClassLoader() + .getResourceAsStream("database.properties")); + } catch (IOException e) { + System.out.println("Error: " + e.getMessage()); + } + + return properties; + } +} diff --git a/ch07/src/shared/java/org/mwrm/plants/SelectData.java b/ch07/src/shared/java/org/mwrm/plants/SelectData.java new file mode 100644 index 0000000..5a0ad89 --- /dev/null +++ b/ch07/src/shared/java/org/mwrm/plants/SelectData.java @@ -0,0 +1,156 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.Statement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; + +import java.util.HashMap; +import java.util.Vector; +import java.util.Properties; + +/** + *

The SelectData class establishes a connection + * with a database and executes a query, as selected by the client.

+ * + *

It gets the database driver name and the URL + * from the database.properties file. + * When the results come back from the database, + * this class places them as HashMap records + * in a Vector. It then passes this Vector + * back to the calling client.

+ * + *

The SQL strings are:

+ * + *
    + *
  • Constants.SORT_BY_NAME (the default): + * SELECT * FROM plants ORDER BY name
  • + *
  • Constants.SORT_BY_COMMON_NAME: + * SELECT * FROM plants ORDER BY common_name
  • + *
  • Constants.SORT_BY_FAMILY: + * SELECT * FROM plants ORDER BY family, name
  • + *
  • Constants.SORT_BY_CHOSEN_LETTER: + * SELECT * FROM plants WHERE name REGEXP '^X' + * where X is a letter supplied by the client
  • + *
+ */ + +public final class SelectData { + + /** + *

The default constructor.

+ */ + private SelectData() { } + + /** + * Get the data from the database. + * @param choice The criteria for sorting the results. + * This choice is held in the Constants class. + * @param letter The letter to use when limiting the search, + * should that option be chosen. + * @return Vector + * @throws ClassNotFoundException If the database driver is not found + * @throws SQLException If there's a problem with database operations + */ + public static Vector getData(final int choice, final String letter) + throws ClassNotFoundException, SQLException { + + // Read properties file + PropertiesLoader loader = new PropertiesLoader(); + Properties properties = loader.loadProperties(); + + // First load the MySQL JDBC driver + Class.forName(properties.getProperty("driver.name")); + + // The datasource + String url = properties.getProperty("database.root") + + properties.getProperty("database.name"); + + // Open the connection + Connection con = DriverManager.getConnection(url, "antBook", "antB00k"); + + Statement stmt = con.createStatement(); + + String select = getSelectString(choice, letter); + + // Now we get the data + ResultSet rs = stmt.executeQuery(select); + + // We'll need the metadata when we come to populate the session object + ResultSetMetaData rsmd = rs.getMetaData(); + int numberOfColumns = rsmd.getColumnCount(); + + Vector results = new Vector(); + + while (rs.next()) { + // We need a fresh entry every time + HashMap record = new HashMap(numberOfColumns); + + String columnName = ""; + + // For each column in the table, + // we want to add an entry to the HashMap + // with the same key as the column name + for (int i = 1; i <= numberOfColumns; i++) { + columnName = rsmd.getColumnName(i); + record.put(columnName, rs.getString(columnName)); + } + results.add(record); + } + + // Close the Statement and the Connection + stmt.close(); + con.close(); + + return results; + } + + /** + *

Returns the appropriate SQL string for the choice.

+ * @param choice The user's choice of search criteria. + * @param letter The letter to use when modifying the search. + * @return String + */ + private static String + getSelectString(final int choice, final String letter) { + + // This is the default SELECT statement if no arguments are specified + String selectString = "SELECT * FROM plants ORDER BY name"; + + // Check the type of argument + if (choice == Constants.SORT_BY_COMMON_NAME) { + // Order the results by common name + selectString = "SELECT * FROM plants ORDER BY common_name"; + + } else if (choice == Constants.SORT_BY_FAMILY) { + // Order the results by family, then botanical name + selectString = "SELECT * FROM plants ORDER BY family, name"; + + } else if (choice == Constants.SORT_BY_CHOSEN_LETTER) { + // The search will only return those plants whose botanical name + // begins with the specifed letter. + selectString = "SELECT * FROM plants WHERE name REGEXP '^" + + letter + "'"; + } + + return selectString; + } +} diff --git a/ch07/src/shared/java/org/mwrm/plants/package.html b/ch07/src/shared/java/org/mwrm/plants/package.html new file mode 100644 index 0000000..b64e7c3 --- /dev/null +++ b/ch07/src/shared/java/org/mwrm/plants/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants Package + + +

Utility classes for the plant application.

+ + \ No newline at end of file diff --git a/ch07/src/stand-alone/docs/index.html b/ch07/src/stand-alone/docs/index.html new file mode 100644 index 0000000..f615152 --- /dev/null +++ b/ch07/src/stand-alone/docs/index.html @@ -0,0 +1,19 @@ + + + + Welcome to the Plant Application + + + + + + + + +
+ The stand-alone application
+ The web application
+

This is the stand-alone application.

+ + + \ No newline at end of file diff --git a/ch07/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java b/ch07/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java new file mode 100644 index 0000000..bca1073 --- /dev/null +++ b/ch07/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java @@ -0,0 +1,154 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants.client; + +import java.sql.SQLException; + +import java.util.HashMap; +import java.util.Vector; +import java.util.Enumeration; + +import org.mwrm.plants.SelectData; +import org.mwrm.plants.Constants; + +/** + *

The PlantClient class is a command-line client + * for the plant application.

+ *

Usage:

+ *
    + *
  • -c Order by common name
  • + *
  • -f Order by family
  • + *
  • -n Order by botanical name (default)
  • + *
  • -n [letter] Order by botanical name + * and limit the search to plants beginning with the specified letter
  • + *
+ */ + +public final class PlantClient { + + /** + *

A simple constructor.

+ */ + private PlantClient() { } + + /** + * Checks the arguments, + * then uses the org.mwrm.plants.SelectData + * class to get results from the database. + * Once it has the results, it displays them to standard out. + * @param args The command-line arguments. + * @throws ClassNotFoundException If the database driver is not found + * @throws SQLException If there is a problem with the database + */ + public static void main(final String[] args) + throws ClassNotFoundException, SQLException { + + // The default choice + int choice = Constants.SORT_BY_NAME; + + // The user may want to select by a certain letter + String letter = ""; + + // Check that an argument has been provided + if (args.length > 0) { + // Check the type of argument + if (args[0].equals("-c") || args[0].equals("")) { + // Cannot be used with an argument just now, + // though Ant may pass an empty string + if (args.length > 1 && !args[1].equals("")) { + usage(); + } + // Order the results by common name + choice = Constants.SORT_BY_COMMON_NAME; + + } else if (args[0].equals("-f")) { + // Cannot be used with an argument just now, + // though Ant may pass an empty string + if (args.length > 1 && !args[1].equals("")) { + usage(); + } + // Order the results by family, then botanical name + choice = Constants.SORT_BY_FAMILY; + + } else if (args[0].equals("-n")) { + // Order the results by botanical name + // This is the default if no arguments are specified + + // The user can provide another argument. + // The search will only return those plants whose botanical name + // begins with the specifed letter. + if (args.length > 1 && !args[1].equals("")) { + choice = Constants.SORT_BY_CHOSEN_LETTER; + letter = args[1]; + } + } else { + // Usage information + usage(); + } + } + + // Obtain the results. This is a Vector of HashMaps + Vector results = SelectData.getData(choice, letter); + + // The top of the results display + System.out.println("\n-----------------------------"); + + // If there is no data in the results, tell the user + if (results.isEmpty()) { + System.out.println("No results found."); + System.out.println("-----------------------------"); + } else { + + // Each record in the database is a HashMap + HashMap record = new HashMap(); + + // Iterate over the results + for (Enumeration enum = results.elements(); + enum.hasMoreElements();) { + + record = (HashMap) enum.nextElement(); + + // The cultivar name is optional + String cultivar = ""; + + if (!(record.get("cultivar_name") == null)) { + cultivar = " '" + record.get("cultivar_name") + "'"; + } + + System.out.println("Name: " + record.get("name") + cultivar); + System.out.println("Common name: " + record.get("common_name")); + System.out.println("Family: " + record.get("family")); + System.out.println("Description: " + record.get("description")); + System.out.println("-----------------------------"); + } + } + } + + /** + *

Print the usage information.

+ */ + private static void usage() { + System.out.println("\nUsage: \n"); + System.out.println("-c \t\t Order by common name"); + System.out.println("-f \t\t Order by family"); + System.out.println("-n \t\t Order by botanical name (default)"); + System.out.println("-n [letter] \t Order by botanical name" + + " and limit the search to plants "); + System.out.println("\t\t beginning with the specified letter"); + System.exit(0); + } +} diff --git a/ch07/src/stand-alone/java/org/mwrm/plants/client/package.html b/ch07/src/stand-alone/java/org/mwrm/plants/client/package.html new file mode 100644 index 0000000..9148475 --- /dev/null +++ b/ch07/src/stand-alone/java/org/mwrm/plants/client/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants.client Package + + +

Contains the command-line client for the plant application.

+ + \ No newline at end of file diff --git a/ch07/src/web/conf/antBook.xml b/ch07/src/web/conf/antBook.xml new file mode 100644 index 0000000..9746019 --- /dev/null +++ b/ch07/src/web/conf/antBook.xml @@ -0,0 +1,3 @@ + + diff --git a/ch07/src/web/conf/plant.tld b/ch07/src/web/conf/plant.tld new file mode 100644 index 0000000..0066066 --- /dev/null +++ b/ch07/src/web/conf/plant.tld @@ -0,0 +1,32 @@ + + + + + 1.0 + 2.0 + plant + /plant-taglib + + A simple tab library for the plant application + + + + + Displays a character when given an integer + + letters + org.mwrm.plants.tags.LettersTag + false + none + + letter + true + true + char + + + + \ No newline at end of file diff --git a/ch07/src/web/conf/web.xml b/ch07/src/web/conf/web.xml new file mode 100644 index 0000000..c60d60e --- /dev/null +++ b/ch07/src/web/conf/web.xml @@ -0,0 +1,66 @@ + + + + + A plant application. + + + + resultsPerPage + 5 + + This value sets how many results will be shown per results page. + + + + + + + Resource reference to a factory for java.sql.Connection + instances that may be used for talking to a particular + database that is configured in the plantBook.xml file. + + + jdbc/PlantDB + + + javax.sql.DataSource + + + SERVLET + + + + + /plant-taglib + /WEB-INF/plant.tld + + + + plantServlet + + org.mwrm.plants.servlets.PlantServlet + + + + + Print debug information to the console + + + debug + + + true + + + + + + plantServlet + /plants/listPlants.jsp + + + \ No newline at end of file diff --git a/ch07/src/web/docs/index.html b/ch07/src/web/docs/index.html new file mode 100644 index 0000000..606c2b3 --- /dev/null +++ b/ch07/src/web/docs/index.html @@ -0,0 +1,19 @@ + + + + Welcome to the Plant Application + + + + + + + + +
+ The stand-alone application
+ The web application
+

This is the web application.

+ + + \ No newline at end of file diff --git a/ch07/src/web/images/banner_under.jpg b/ch07/src/web/images/banner_under.jpg new file mode 100644 index 0000000000000000000000000000000000000000..131c6a10b4fce0a65d11ee54cba46b10772eefbc GIT binary patch literal 21943 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 literal 0 HcmV?d00001 diff --git a/ch07/src/web/images/cyc_cou.jpg b/ch07/src/web/images/cyc_cou.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed0556c8da702a9316b72a885aef6fdcd8bc7a12 GIT binary patch literal 15502 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 literal 0 HcmV?d00001 diff --git a/ch07/src/web/images/no_image.jpg b/ch07/src/web/images/no_image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e86c254e4a1b43f14f582bb31a3f6280d0187a95 GIT binary patch literal 8646 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 w6Q>LRJ1zbbKmA?!FZi9NzW@LL literal 0 HcmV?d00001 diff --git a/ch07/src/web/images/tul_tur.jpg b/ch07/src/web/images/tul_tur.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fcc77b230ba510c80c7c3125e49f9e1b2b7f4303 GIT binary patch literal 21047 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 V1RgxR+tNU<`HJbJtc>re|Jei&5nTWP literal 0 HcmV?d00001 diff --git a/ch07/src/web/java/org/mwrm/plants/servlets/PlantServlet.java b/ch07/src/web/java/org/mwrm/plants/servlets/PlantServlet.java new file mode 100644 index 0000000..bc9b9a8 --- /dev/null +++ b/ch07/src/web/java/org/mwrm/plants/servlets/PlantServlet.java @@ -0,0 +1,209 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants.servlets; + +import java.sql.SQLException; + +import java.util.HashMap; +import java.util.Vector; +import java.util.Enumeration; + +import java.io.IOException; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import javax.servlet.ServletException; + +import org.mwrm.plants.SelectData; +import org.mwrm.plants.Constants; + + /** + *

The servlet client for the plant application.

+ * + *

Extracts the show parameter from the request + * to determine what the user wants to see. + * Valid values for show are:

+ * + *
    + *
  • common: Order by common name
  • + *
  • family: Order by family
  • + *
  • name: Order by botanical name (default)
  • + *
+ * + *

If the client sends a letter parameter, + * then the search is limited to records that begin with that letter.

+ */ +public class PlantServlet extends HttpServlet { + + /** + *

Extracts the show parameter from the request + * to determine what the user wants to see. + * Valid values for show are:

+ * + *
    + *
  • common: Order by common name
  • + *
  • family: Order by family
  • + *
  • name: Order by botanical name (default)
  • + *
+ * + *

If the client sends a letter parameter, + * then the search is limited to records that begin with that letter.

+ * + *

Once the choice has been extracted, + * this servlet uses the org.mwrm.plants.SelectData class + * to get results from the database. Once it has the results, + * it places them in the session under the name "results" + * and forwards the request to /plants/displayPage.jsp, + * which displays the first page of the results.

+ * + *

If the debug servlet initialization parameter + * is set to true the results + * will also be sent to standard out.

+ * + * @param request The request object. + * @param response The response object. + * + * @throws ServletException + * If there is a problem when processing the request + * @throws IOException If there is a problem writing the response + */ + public final void doGet(final HttpServletRequest request, + final HttpServletResponse response) + throws ServletException, IOException { + // The default choice + int choice = Constants.SORT_BY_NAME; + + // Check the show parameter + // to see if the user wants to select anything else + if (request.getParameter("show").equals("common")) { + choice = Constants.SORT_BY_COMMON_NAME; + } else if (request.getParameter("show").equals("family")) { + choice = Constants.SORT_BY_FAMILY; + } + + // The results from the database + Vector results = null; + // The letter that the user wants to sort by + String letter = null; + + // If the letter parameter is set, then make the appropriate choice + if (request.getParameter("letter") != null) { + letter = request.getParameter("letter").toLowerCase(); + choice = Constants.SORT_BY_CHOSEN_LETTER; + } + + // Obtain the results. This is a Vector of HashMaps + try { + results = SelectData.getData(choice, letter); + } catch (ClassNotFoundException cnfe) { + throw new ServletException(cnfe.getMessage()); + } catch (SQLException sqle) { + throw new ServletException(sqle.getMessage()); + } + + // The debug servlet initialization parameter sets output options + if (getServletConfig().getInitParameter("debug").equals("true")) { + // The top of the results display + System.out.println("\n-----------------------------"); + + // If there is no data in the results, tell the user + if (results.isEmpty()) { + System.out.println("No results found."); + System.out.println("-----------------------------"); + } else { + + // Each record in the database is a HashMap + HashMap record = new HashMap(); + + // Iterate over the results + for (Enumeration enum = results.elements(); + enum.hasMoreElements();) { + + // The current record + record = (HashMap) enum.nextElement(); + + // The cultivar name is optional + String cultivar = ""; + + // If the cultivar_name column is present, + // add it to the output string + if (!(record.get("cultivar_name") == null)) { + cultivar = " '" + record.get("cultivar_name") + "'"; + } + + // Print them to standard out + System.out.println("Name: " + + record.get("name") + cultivar); + System.out.println("Common name: " + + record.get("common_name")); + System.out.println("Family: " + + record.get("family")); + System.out.println("Description: " + + record.get("description")); + System.out.println("Image: " + + record.get("image")); + System.out.println("-----------------------------"); + } + } + } + + // Now store the results in the session + HttpSession session = request.getSession(true); + + // If the results are empty, + // then store a flag to tell the application as such, + // then remove the results object so the pages don't try to work with it + if (results.isEmpty()) { + session.setAttribute("noResults", "true"); + session.removeAttribute("results"); + + // There are some results, + // so place them in the session and remove the noResults flag, + // so that the application knows there are results + } else { + session.setAttribute("results", results); + session.removeAttribute("noResults"); + + // The pages will need to know the number of results + session.setAttribute("resultsSize", "" + results.size() + ""); + } + + // Forward the request to the display page + getServletContext() + .getRequestDispatcher("/plants/displayResults.jsp?start=0") + .forward(request, response); + } + + /** + * Sends any POST requests to the doGet method. + * + * @param request The request object. + * @param response The response object. + * + * @throws ServletException + * If there is a problem when processing the request + * @throws IOException If there is a problem writing the response + */ + public final void doPost(final HttpServletRequest request, + final HttpServletResponse response) + throws ServletException, IOException { + doGet(request, response); + } +} diff --git a/ch07/src/web/java/org/mwrm/plants/servlets/package.html b/ch07/src/web/java/org/mwrm/plants/servlets/package.html new file mode 100644 index 0000000..d9ac8dd --- /dev/null +++ b/ch07/src/web/java/org/mwrm/plants/servlets/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants.servlets Package + + +

Contains the servlet for the plant application.

+ + \ No newline at end of file diff --git a/ch07/src/web/java/org/mwrm/plants/tags/LettersTag.java b/ch07/src/web/java/org/mwrm/plants/tags/LettersTag.java new file mode 100644 index 0000000..6911f3f --- /dev/null +++ b/ch07/src/web/java/org/mwrm/plants/tags/LettersTag.java @@ -0,0 +1,63 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants.tags; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.JspWriter; +import javax.servlet.jsp.tagext.SimpleTagSupport; + +import java.io.IOException; + + /** + *

Converts an integer into a character. + * The letter attribute takes the integer, + * which is converted to a char by the time the tag gets it. + * The tag then writes the char to the client.

+ */ +public class LettersTag extends SimpleTagSupport { + + /** + * The character to display. + */ + private char letter; + + /** + *

Processes the tag when it is encountered on the page.

+ * @throws JspException + * If there is a problem processing the tag + * @throws IOException + * If there is a problem writing to the client + */ + public final void doTag() throws JspException, IOException { + + // The page that the client will receive + JspWriter out = getJspContext().getOut(); + + // Write the letter to the client + out.print(letter); + } + + /** + * + *

The setter method for the letter attribute.

+ * + * @param aLetter The letter to display. + */ + public final void setLetter(final char aLetter) { + this.letter = aLetter; + } +} diff --git a/ch07/src/web/java/org/mwrm/plants/tags/package.html b/ch07/src/web/java/org/mwrm/plants/tags/package.html new file mode 100644 index 0000000..fcb8df4 --- /dev/null +++ b/ch07/src/web/java/org/mwrm/plants/tags/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants.tags Package + + +

Contains the custom tags for the plant application.

+ + \ No newline at end of file diff --git a/ch07/src/web/pages/footer.html b/ch07/src/web/pages/footer.html new file mode 100644 index 0000000..8511c9c --- /dev/null +++ b/ch07/src/web/pages/footer.html @@ -0,0 +1,3 @@ +
+ Bottom banner +
\ No newline at end of file diff --git a/ch07/src/web/pages/header.jsp b/ch07/src/web/pages/header.jsp new file mode 100644 index 0000000..135f4a5 --- /dev/null +++ b/ch07/src/web/pages/header.jsp @@ -0,0 +1,16 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> +<%@ taglib uri="/plant-taglib" prefix="tags" %> +
\ No newline at end of file diff --git a/ch07/src/web/pages/index.jsp b/ch07/src/web/pages/index.jsp new file mode 100644 index 0000000..2b9ae28 --- /dev/null +++ b/ch07/src/web/pages/index.jsp @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/ch07/src/web/pages/indexBody.jsp b/ch07/src/web/pages/indexBody.jsp new file mode 100644 index 0000000..6410604 --- /dev/null +++ b/ch07/src/web/pages/indexBody.jsp @@ -0,0 +1 @@ +

Welcome to the plant information application.

\ No newline at end of file diff --git a/ch07/src/web/pages/menu.jsp b/ch07/src/web/pages/menu.jsp new file mode 100644 index 0000000..135b8cc --- /dev/null +++ b/ch07/src/web/pages/menu.jsp @@ -0,0 +1,5 @@ +<%-- This page is common to the whole application --%> +<%@ taglib tagdir="/WEB-INF/tags" prefix="tags" %> +
+ +
\ No newline at end of file diff --git a/ch07/src/web/pages/plantStyle.css b/ch07/src/web/pages/plantStyle.css new file mode 100644 index 0000000..48b3129 --- /dev/null +++ b/ch07/src/web/pages/plantStyle.css @@ -0,0 +1,75 @@ +.menu-main { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: large; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.menu-sub { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: medium; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.footer { + color: #000000; + background-color: #FFFFFF; +} + +h1 { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: large; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.letters { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: medium; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.center { + text-align: center +} + +tr.template { + height: 500px +} + +td.template { + width: 200px +} + +tr.resultRow { + height: 250px +} + +p.left { + text-align: left +} + +p { + color: #000000; + background-color: #FFFFFF; + font-family: Arial, Verdana,Helvetica, Sans-Serif +} + +.italic { + color: #000000; + background-color: #FFFFFF; + font-family: Arial, Verdana,Helvetica, Sans-Serif; + font-style: italic +} + +.results { + color: #000000; + background-color: #FFFFFF; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} diff --git a/ch07/src/web/pages/plants/displayPlant.jsp b/ch07/src/web/pages/plants/displayPlant.jsp new file mode 100644 index 0000000..6e30cd6 --- /dev/null +++ b/ch07/src/web/pages/plants/displayPlant.jsp @@ -0,0 +1,15 @@ +<%-- JSP Directives --%> +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + + + + + + + + + + + + + diff --git a/ch07/src/web/pages/plants/displayPlantBody.jsp b/ch07/src/web/pages/plants/displayPlantBody.jsp new file mode 100644 index 0000000..9c37af4 --- /dev/null +++ b/ch07/src/web/pages/plants/displayPlantBody.jsp @@ -0,0 +1,31 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + + + + + + + + + + + + + + + + + +
+

+ Name:
+ Common name:
+ Family:
+ Description:
+

+
+
+ +<%-- We need to go back to where we came from --%> +Back \ No newline at end of file diff --git a/ch07/src/web/pages/plants/displayResults.jsp b/ch07/src/web/pages/plants/displayResults.jsp new file mode 100644 index 0000000..6c7c31c --- /dev/null +++ b/ch07/src/web/pages/plants/displayResults.jsp @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/ch07/src/web/pages/plants/displayResultsBody.jsp b/ch07/src/web/pages/plants/displayResultsBody.jsp new file mode 100644 index 0000000..0c09a66 --- /dev/null +++ b/ch07/src/web/pages/plants/displayResultsBody.jsp @@ -0,0 +1,63 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> + + +

Search Results

+ + + +

Sorry, there were no results for the search. Please try again.

+
+ + +
+

Number of results:

+ + + + + + + +
+ + "> +
+ +
+
+
+ + + + + + + ">First + + + + + + + ">Back + + + + + + + ">Next + + + + + + + ">Last + +
+
+ + \ No newline at end of file diff --git a/ch07/src/web/pages/plants/index.jsp b/ch07/src/web/pages/plants/index.jsp new file mode 100644 index 0000000..3c51457 --- /dev/null +++ b/ch07/src/web/pages/plants/index.jsp @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/ch07/src/web/pages/plants/searchForm.jsp b/ch07/src/web/pages/plants/searchForm.jsp new file mode 100644 index 0000000..0043e00 --- /dev/null +++ b/ch07/src/web/pages/plants/searchForm.jsp @@ -0,0 +1 @@ +

Click on a letter above or a link on the left.

diff --git a/ch07/src/web/pages/template.jsp b/ch07/src/web/pages/template.jsp new file mode 100644 index 0000000..a1fff41 --- /dev/null +++ b/ch07/src/web/pages/template.jsp @@ -0,0 +1,47 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + + + + + + + <c:out value="${param.title}" default="Plants"/> + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + +
+
+ + + \ No newline at end of file diff --git a/ch07/src/web/tags/simple.tag b/ch07/src/web/tags/simple.tag new file mode 100644 index 0000000..8683c7f --- /dev/null +++ b/ch07/src/web/tags/simple.tag @@ -0,0 +1,12 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + +

+ Home
+ Plants
+ + +  By common name
+  By botanical name
+  By family
+
+

\ No newline at end of file diff --git a/ch08/build.properties b/ch08/build.properties new file mode 100644 index 0000000..d7ea7fd --- /dev/null +++ b/ch08/build.properties @@ -0,0 +1,130 @@ +# The source directory that contains the code +src=src + +# Subdirectory properties +src.shared.root=${src}/shared +src.shared.java=${src.shared.root}/java +src.shared.docs=${src.shared.root}/docs +src.shared.conf=${src.shared.root}/conf + +src.stand-alone.root=${src}/stand-alone +src.stand-alone.java=${src.stand-alone.root}/java +src.stand-alone.docs=${src.stand-alone.root}/docs + +src.web.root=${src}/web +src.web.java=${src.web.root}/java +src.web.docs=${src.web.root}/docs +src.web.pages=${src.web.root}/pages +src.web.tags=${src.web.root}/tags +src.web.conf=${src.web.root}/conf + +# The scratch directory +build=build + +build.stand-alone.root=${build}/stand-alone + +build.web.root=${build}/web +build.web.web-inf=${build.web.root}/WEB-INF +build.web.classes=${build.web.web-inf}/classes +build.web.tags=${build.web.web-inf}/tags +build.web.lib=${build.web.web-inf}/lib + +# The final destination of our project files +dist=dist + +# The location of third-party JAR files +lib=lib + +# This name will be appended to the JAR and WAR files +appName=antBook +appName.jar=${dist}/${appName}.jar +appName.war=${dist}/${appName}.war + +# The Tomcat home directory +catalina.home=C:\\jakarta-tomcat-5.5.9 +servlet24.jar=${catalina.home}/common/lib/servlet-api.jar +# Use the following line if using Ant to download the JAR +#servlet24.jar=${lib}/servlet-api.jar + +# Required for the JSTL build +jsp20.jar=${catalina.home}/common/lib/jsp-api.jar +# Use the following line if using Ant to download the JAR +#jsp20.jar=${lib}/jsp-api.jar +jstl.build=jakarta-taglibs/standard +library.src=src +examples.src=examples +doc.src=doc +build.library=${build} + +# Required for the MySQL connector build +mysql.build=mm.mysql-2 +mysql.name=mysql-connector +mysql.jar=${lib}/${mysql.name}-bin.jar + +# The database properties file +database.properties=${src.shared.conf}/database.properties + +# The directory where the docs will go +docs=${build}/docs + +# Properties for customizing the Javadoc build +javadoc.doctitle=Welcome to the example application +javadoc.windowtitle=The example application +javadoc.j2se.version=1.5.0 +javadoc.j2ee.version=1.4 + +javadoc.j2se.offline=C:/j2sdk1.5.0/docs/api +javadoc.j2ee.offline=C:/j2eesdk1.4/docs/apidocs + +package.stand-alone=stand-alone +package.web=web +package.docs=docs + +tmp=C:/TEMP/antBook +#tmp=/tmp/antBook + +# FTP settings +ftp.server=localhost +ftp.src.dir=src +ftp.bin.dir=bin + +mail.from=antBuild@example.com +mail.tolist=antUser01@example.com,antUser02@example.com +mail.message.docs=Here's the docs distribution +mail.mailhost=smtp.mail.example.com +mail.subject=Ant build + +# The location of the Tomcat server +tomcat.host=localhost +tomcat.port=8080 +manager.url=http://${tomcat.host}:${tomcat.port}/manager + +database.root=jdbc:mysql://localhost:3306/ +driver.name=com.mysql.jdbc.Driver + +drop.sql=SQL/drop.sql +create.sql=SQL/create.sql +insert.sql=SQL/insert.sql + +# The name of the Tomcat start script +tomcat.executableName=startup + +# The test directory +test.src=test +test.build=${build}/test +test.junit.reports=${test.build}/reports/junit +test.junit.data=${test.build}/data/junit +test.junit.style=${test.src}/style/junit + +junit.home=C:/junit3.8.1 +junit.jar=${junit.home}/junit.jar + +httpunit.home=C:/httpunit +httpunit.jar=${httpunit.home}/lib/httpunit.jar + +last.test.failed.file=failed.txt + +checkstyle.home=C:/checkstyle +checkstyle.jar=${checkstyle.home}/checkstyle-3.5.jar +test.checkstyle.reports=${test.build}/reports/checkstyle +test.checkstyle.data=${test.build}/data/checkstyle diff --git a/ch08/build.xml b/ch08/build.xml new file mode 100644 index 0000000..9d97f06 --- /dev/null +++ b/ch08/build.xml @@ -0,0 +1,1344 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${javadoc.doctitle} + + + + + + + + + + + + + + ${javadoc.doctitle} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${mail.message.docs} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ch08/src/shared/conf/SQL/plants.sql b/ch08/src/shared/conf/SQL/plants.sql new file mode 100644 index 0000000..f95cb20 --- /dev/null +++ b/ch08/src/shared/conf/SQL/plants.sql @@ -0,0 +1,13 @@ +CREATE DATABASE IF NOT EXISTS plants; + +USE plants; + +CREATE TABLE plants ( + id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(80) NOT NULL, + common_name VARCHAR(80), + family VARCHAR(50) NOT NULL, + description TEXT NOT NULL, + image VARCHAR(20), + cultivar_name VARCHAR(80) +); \ No newline at end of file diff --git a/ch08/src/shared/conf/SQL/plantsDelete.sql b/ch08/src/shared/conf/SQL/plantsDelete.sql new file mode 100644 index 0000000..ea4dd57 --- /dev/null +++ b/ch08/src/shared/conf/SQL/plantsDelete.sql @@ -0,0 +1,3 @@ +USE plants; + +DELETE FROM plants; \ No newline at end of file diff --git a/ch08/src/shared/conf/SQL/plantsDrop.sql b/ch08/src/shared/conf/SQL/plantsDrop.sql new file mode 100644 index 0000000..999053f --- /dev/null +++ b/ch08/src/shared/conf/SQL/plantsDrop.sql @@ -0,0 +1 @@ +DROP DATABASE IF EXISTS plants; \ No newline at end of file diff --git a/ch08/src/shared/conf/SQL/plantsInsert.sql b/ch08/src/shared/conf/SQL/plantsInsert.sql new file mode 100644 index 0000000..1b11952 --- /dev/null +++ b/ch08/src/shared/conf/SQL/plantsInsert.sql @@ -0,0 +1,15 @@ +USE plants; + +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Galanthus nivalis", "Snowdrop", "Liliaceae", "Snowdrops appear in late winter and early spring.", "gal_niv.jpg"); +INSERT INTO plants (name, common_name, family, description) VALUES ("Narcissus pseudonarcissus", "Daffodil, Lent lily", "Liliaceae", "Daffodils appear in spring."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Narcissus poeticus var. recurvus", "Old Pheasant's Eye, Poet's narcissus", "Liliaceae", "A very late-flowering daffodil with white petals and a short orange/yellow trumpet."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Leucojum vernum", "Spring snowflake", "Liliaceae", "A lovely spring bulb that flowers in spring. It resembles a robust snowdrop."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Iris pseudacorus", "Yellow iris, Yellow flag", "Iridaceae", "Commonly found by water and damp places. It spreads quickly and can easily take over an area once introduced."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Crocus tommasinianus", "Early crocus", "Iridaceae", "An early flowering crocus with gentle lavender-coloured flowers."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Colchicum autumnale", "Meadow saffron, Autumn crocus", "Liliaceae", "Flowers in August and September months after its leaves have died away. Resembles a crocus very closely."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Hyacinthoides non-scripta", "Bluebell", "Liliaceae", "Cloaks the floor of deciduous woodland throughout Europe."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Erythronium dens-canis", "Dog's tooth violet", "Liliaceae", "The bulb is shaped like a dog's tooth, hence the name."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Fritillaria meleagris", "Snake's-head fritillary", "Liliaceae", "It takes its name from the mottled pattern on its flower that resembles snakeskin."); +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Cyclamen coum", "Cyclamen", "Primulaceae", "A winter-flowering corm that provides excellent winter colour.", "cyc_cou.jpg"); +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Tulipa turkestanica", "Tulip", "Liliaceae", "A delicate little tulip that appears in mid spring.", "tul_tur.jpg"); +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Ranunculus ficaria", "Lesser celandine", "Ranunculacae", "A dazzlingly yellow flower that is often considered a weed.", "ran_fic.jpg"); \ No newline at end of file diff --git a/ch08/src/shared/conf/database.properties b/ch08/src/shared/conf/database.properties new file mode 100644 index 0000000..ab7b216 --- /dev/null +++ b/ch08/src/shared/conf/database.properties @@ -0,0 +1,7 @@ +database.root=jdbc:mysql://localhost:3306/ +database.name=plants +driver.name=com.mysql.jdbc.Driver + +create.sql=SQL/plants.sql +insert.sql=SQL/plantsInsert.sql +drop.sql=SQL/plantsDrop.sql \ No newline at end of file diff --git a/ch08/src/shared/docs/LICENSE b/ch08/src/shared/docs/LICENSE new file mode 100644 index 0000000..f820d4b --- /dev/null +++ b/ch08/src/shared/docs/LICENSE @@ -0,0 +1,203 @@ +/* + * Apache License + * Version 2.0, January 2004 + * http://www.apache.org/licenses/ + * + * TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + * + * 1. Definitions. + * + * "License" shall mean the terms and conditions for use, reproduction, + * and distribution as defined by Sections 1 through 9 of this document. + * + * "Licensor" shall mean the copyright owner or entity authorized by + * the copyright owner that is granting the License. + * + * "Legal Entity" shall mean the union of the acting entity and all + * other entities that control, are controlled by, or are under common + * control with that entity. For the purposes of this definition, + * "control" means (i) the power, direct or indirect, to cause the + * direction or management of such entity, whether by contract or + * otherwise, or (ii) ownership of fifty percent (50%) or more of the + * outstanding shares, or (iii) beneficial ownership of such entity. + * + * "You" (or "Your") shall mean an individual or Legal Entity + * exercising permissions granted by this License. + * + * "Source" form shall mean the preferred form for making modifications, + * including but not limited to software source code, documentation + * source, and configuration files. + * + * "Object" form shall mean any form resulting from mechanical + * transformation or translation of a Source form, including but + * not limited to compiled object code, generated documentation, + * and conversions to other media types. + * + * "Work" shall mean the work of authorship, whether in Source or + * Object form, made available under the License, as indicated by a + * copyright notice that is included in or attached to the work + * (an example is provided in the Appendix below). + * + * "Derivative Works" shall mean any work, whether in Source or Object + * form, that is based on (or derived from) the Work and for which the + * editorial revisions, annotations, elaborations, or other modifications + * represent, as a whole, an original work of authorship. For the purposes + * of this License, Derivative Works shall not include works that remain + * separable from, or merely link (or bind by name) to the interfaces of, + * the Work and Derivative Works thereof. + * + * "Contribution" shall mean any work of authorship, including + * the original version of the Work and any modifications or additions + * to that Work or Derivative Works thereof, that is intentionally + * submitted to Licensor for inclusion in the Work by the copyright owner + * or by an individual or Legal Entity authorized to submit on behalf of + * the copyright owner. For the purposes of this definition, "submitted" + * means any form of electronic, verbal, or written communication sent + * to the Licensor or its representatives, including but not limited to + * communication on electronic mailing lists, source code control systems, + * and issue tracking systems that are managed by, or on behalf of, the + * Licensor for the purpose of discussing and improving the Work, but + * excluding communication that is conspicuously marked or otherwise + * designated in writing by the copyright owner as "Not a Contribution." + * + * "Contributor" shall mean Licensor and any individual or Legal Entity + * on behalf of whom a Contribution has been received by Licensor and + * subsequently incorporated within the Work. + * + * 2. Grant of Copyright License. Subject to the terms and conditions of + * this License, each Contributor hereby grants to You a perpetual, + * worldwide, non-exclusive, no-charge, royalty-free, irrevocable + * copyright license to reproduce, prepare Derivative Works of, + * publicly display, publicly perform, sublicense, and distribute the + * Work and such Derivative Works in Source or Object form. + * + * 3. Grant of Patent License. Subject to the terms and conditions of + * this License, each Contributor hereby grants to You a perpetual, + * worldwide, non-exclusive, no-charge, royalty-free, irrevocable + * (except as stated in this section) patent license to make, have made, + * use, offer to sell, sell, import, and otherwise transfer the Work, + * where such license applies only to those patent claims licensable + * by such Contributor that are necessarily infringed by their + * Contribution(s) alone or by combination of their Contribution(s) + * with the Work to which such Contribution(s) was submitted. If You + * institute patent litigation against any entity (including a + * cross-claim or counterclaim in a lawsuit) alleging that the Work + * or a Contribution incorporated within the Work constitutes direct + * or contributory patent infringement, then any patent licenses + * granted to You under this License for that Work shall terminate + * as of the date such litigation is filed. + * + * 4. Redistribution. You may reproduce and distribute copies of the + * Work or Derivative Works thereof in any medium, with or without + * modifications, and in Source or Object form, provided that You + * meet the following conditions: + * + * (a) You must give any other recipients of the Work or + * Derivative Works a copy of this License; and + * + * (b) You must cause any modified files to carry prominent notices + * stating that You changed the files; and + * + * (c) You must retain, in the Source form of any Derivative Works + * that You distribute, all copyright, patent, trademark, and + * attribution notices from the Source form of the Work, + * excluding those notices that do not pertain to any part of + * the Derivative Works; and + * + * (d) If the Work includes a "NOTICE" text file as part of its + * distribution, then any Derivative Works that You distribute must + * include a readable copy of the attribution notices contained + * within such NOTICE file, excluding those notices that do not + * pertain to any part of the Derivative Works, in at least one + * of the following places: within a NOTICE text file distributed + * as part of the Derivative Works; within the Source form or + * documentation, if provided along with the Derivative Works; or, + * within a display generated by the Derivative Works, if and + * wherever such third-party notices normally appear. The contents + * of the NOTICE file are for informational purposes only and + * do not modify the License. You may add Your own attribution + * notices within Derivative Works that You distribute, alongside + * or as an addendum to the NOTICE text from the Work, provided + * that such additional attribution notices cannot be construed + * as modifying the License. + * + * You may add Your own copyright statement to Your modifications and + * may provide additional or different license terms and conditions + * for use, reproduction, or distribution of Your modifications, or + * for any such Derivative Works as a whole, provided Your use, + * reproduction, and distribution of the Work otherwise complies with + * the conditions stated in this License. + * + * 5. Submission of Contributions. Unless You explicitly state otherwise, + * any Contribution intentionally submitted for inclusion in the Work + * by You to the Licensor shall be under the terms and conditions of + * this License, without any additional terms or conditions. + * Notwithstanding the above, nothing herein shall supersede or modify + * the terms of any separate license agreement you may have executed + * with Licensor regarding such Contributions. + * + * 6. Trademarks. This License does not grant permission to use the trade + * names, trademarks, service marks, or product names of the Licensor, + * except as required for reasonable and customary use in describing the + * origin of the Work and reproducing the content of the NOTICE file. + * + * 7. Disclaimer of Warranty. Unless required by applicable law or + * agreed to in writing, Licensor provides the Work (and each + * Contributor provides its Contributions) on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied, including, without limitation, any warranties or conditions + * of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + * PARTICULAR PURPOSE. You are solely responsible for determining the + * appropriateness of using or redistributing the Work and assume any + * risks associated with Your exercise of permissions under this License. + * + * 8. Limitation of Liability. In no event and under no legal theory, + * whether in tort (including negligence), contract, or otherwise, + * unless required by applicable law (such as deliberate and grossly + * negligent acts) or agreed to in writing, shall any Contributor be + * liable to You for damages, including any direct, indirect, special, + * incidental, or consequential damages of any character arising as a + * result of this License or out of the use or inability to use the + * Work (including but not limited to damages for loss of goodwill, + * work stoppage, computer failure or malfunction, or any and all + * other commercial damages or losses), even if such Contributor + * has been advised of the possibility of such damages. + * + * 9. Accepting Warranty or Additional Liability. While redistributing + * the Work or Derivative Works thereof, You may choose to offer, + * and charge a fee for, acceptance of support, warranty, indemnity, + * or other liability obligations and/or rights consistent with this + * License. However, in accepting such obligations, You may act only + * on Your own behalf and on Your sole responsibility, not on behalf + * of any other Contributor, and only if You agree to indemnify, + * defend, and hold each Contributor harmless for any liability + * incurred by, or claims asserted against, such Contributor by reason + * of your accepting any such warranty or additional liability. + * + * END OF TERMS AND CONDITIONS + * + * APPENDIX: How to apply the Apache License to your work. + * + * To apply the Apache License to your work, attach the following + * boilerplate notice, with the fields enclosed by brackets "[]" + * replaced with your own identifying information. (Don't include + * the brackets!) The text should be enclosed in the appropriate + * comment syntax for the file format. We also recommend that a + * file or class name and description of purpose be included on the + * same "printed page" as the copyright notice for easier + * identification within third-party archives. + * + * Copyright [yyyy] [name of copyright owner] + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ diff --git a/ch08/src/shared/docs/README b/ch08/src/shared/docs/README new file mode 100644 index 0000000..f629ac0 --- /dev/null +++ b/ch08/src/shared/docs/README @@ -0,0 +1,4 @@ +Each chapter's build file adds to the previous chapter's. + +Therefore, by Chapter 12, the build file contains all the targets and tasks +from the whole book. \ No newline at end of file diff --git a/ch08/src/shared/docs/index.html b/ch08/src/shared/docs/index.html new file mode 100644 index 0000000..dd2219c --- /dev/null +++ b/ch08/src/shared/docs/index.html @@ -0,0 +1,19 @@ + + + + Welcome to the Plant Application + + + + + + + + +
+ The stand-alone application
+ The web application
+

This is the Plant Application.

+ + + diff --git a/ch08/src/shared/java/org/mwrm/plants/Constants.java b/ch08/src/shared/java/org/mwrm/plants/Constants.java new file mode 100644 index 0000000..74b6e93 --- /dev/null +++ b/ch08/src/shared/java/org/mwrm/plants/Constants.java @@ -0,0 +1,47 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +/** + * The Constants class contains four constants + * that represent sort options. + * + */ + +public class Constants { + + /** Use to sort the plants by their botanical name. */ + public static final int SORT_BY_NAME = 1; + + /** Use to sort the plants by their common name. */ + public static final int SORT_BY_COMMON_NAME = 2; + + /** Use to sort the plants by their family name. */ + public static final int SORT_BY_FAMILY = 3; + + /** + * Use to sort the plants by their botanical name + * and exclude those plants that do not begin with the chosen letter. + */ + public static final int SORT_BY_CHOSEN_LETTER = 4; + + /** + * A simple constructor. + */ + public Constants() { } + +} diff --git a/ch08/src/shared/java/org/mwrm/plants/PropertiesLoader.java b/ch08/src/shared/java/org/mwrm/plants/PropertiesLoader.java new file mode 100644 index 0000000..10d07f3 --- /dev/null +++ b/ch08/src/shared/java/org/mwrm/plants/PropertiesLoader.java @@ -0,0 +1,53 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +import java.util.Properties; + +import java.io.IOException; + +/** + * The PropertiesLoader class loads properties + * from the database.properties file and passes them + * to whichever class wants to use them. This centralises the name + * of the properties file so the entire application can use it. + */ + +public class PropertiesLoader { + + /** A simple constructor. */ + public PropertiesLoader() { } + + /** + * Loads the properties for whichever class needs them. + * + * @return A Java properties file + */ + public final Properties loadProperties() { + + // Read properties file. + Properties properties = new Properties(); + try { + properties.load(this.getClass().getClassLoader() + .getResourceAsStream("database.properties")); + } catch (IOException e) { + System.out.println("Error: " + e.getMessage()); + } + + return properties; + } +} diff --git a/ch08/src/shared/java/org/mwrm/plants/SelectData.java b/ch08/src/shared/java/org/mwrm/plants/SelectData.java new file mode 100644 index 0000000..5a0ad89 --- /dev/null +++ b/ch08/src/shared/java/org/mwrm/plants/SelectData.java @@ -0,0 +1,156 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.Statement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; + +import java.util.HashMap; +import java.util.Vector; +import java.util.Properties; + +/** + *

The SelectData class establishes a connection + * with a database and executes a query, as selected by the client.

+ * + *

It gets the database driver name and the URL + * from the database.properties file. + * When the results come back from the database, + * this class places them as HashMap records + * in a Vector. It then passes this Vector + * back to the calling client.

+ * + *

The SQL strings are:

+ * + *
    + *
  • Constants.SORT_BY_NAME (the default): + * SELECT * FROM plants ORDER BY name
  • + *
  • Constants.SORT_BY_COMMON_NAME: + * SELECT * FROM plants ORDER BY common_name
  • + *
  • Constants.SORT_BY_FAMILY: + * SELECT * FROM plants ORDER BY family, name
  • + *
  • Constants.SORT_BY_CHOSEN_LETTER: + * SELECT * FROM plants WHERE name REGEXP '^X' + * where X is a letter supplied by the client
  • + *
+ */ + +public final class SelectData { + + /** + *

The default constructor.

+ */ + private SelectData() { } + + /** + * Get the data from the database. + * @param choice The criteria for sorting the results. + * This choice is held in the Constants class. + * @param letter The letter to use when limiting the search, + * should that option be chosen. + * @return Vector + * @throws ClassNotFoundException If the database driver is not found + * @throws SQLException If there's a problem with database operations + */ + public static Vector getData(final int choice, final String letter) + throws ClassNotFoundException, SQLException { + + // Read properties file + PropertiesLoader loader = new PropertiesLoader(); + Properties properties = loader.loadProperties(); + + // First load the MySQL JDBC driver + Class.forName(properties.getProperty("driver.name")); + + // The datasource + String url = properties.getProperty("database.root") + + properties.getProperty("database.name"); + + // Open the connection + Connection con = DriverManager.getConnection(url, "antBook", "antB00k"); + + Statement stmt = con.createStatement(); + + String select = getSelectString(choice, letter); + + // Now we get the data + ResultSet rs = stmt.executeQuery(select); + + // We'll need the metadata when we come to populate the session object + ResultSetMetaData rsmd = rs.getMetaData(); + int numberOfColumns = rsmd.getColumnCount(); + + Vector results = new Vector(); + + while (rs.next()) { + // We need a fresh entry every time + HashMap record = new HashMap(numberOfColumns); + + String columnName = ""; + + // For each column in the table, + // we want to add an entry to the HashMap + // with the same key as the column name + for (int i = 1; i <= numberOfColumns; i++) { + columnName = rsmd.getColumnName(i); + record.put(columnName, rs.getString(columnName)); + } + results.add(record); + } + + // Close the Statement and the Connection + stmt.close(); + con.close(); + + return results; + } + + /** + *

Returns the appropriate SQL string for the choice.

+ * @param choice The user's choice of search criteria. + * @param letter The letter to use when modifying the search. + * @return String + */ + private static String + getSelectString(final int choice, final String letter) { + + // This is the default SELECT statement if no arguments are specified + String selectString = "SELECT * FROM plants ORDER BY name"; + + // Check the type of argument + if (choice == Constants.SORT_BY_COMMON_NAME) { + // Order the results by common name + selectString = "SELECT * FROM plants ORDER BY common_name"; + + } else if (choice == Constants.SORT_BY_FAMILY) { + // Order the results by family, then botanical name + selectString = "SELECT * FROM plants ORDER BY family, name"; + + } else if (choice == Constants.SORT_BY_CHOSEN_LETTER) { + // The search will only return those plants whose botanical name + // begins with the specifed letter. + selectString = "SELECT * FROM plants WHERE name REGEXP '^" + + letter + "'"; + } + + return selectString; + } +} diff --git a/ch08/src/shared/java/org/mwrm/plants/package.html b/ch08/src/shared/java/org/mwrm/plants/package.html new file mode 100644 index 0000000..b64e7c3 --- /dev/null +++ b/ch08/src/shared/java/org/mwrm/plants/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants Package + + +

Utility classes for the plant application.

+ + \ No newline at end of file diff --git a/ch08/src/stand-alone/docs/index.html b/ch08/src/stand-alone/docs/index.html new file mode 100644 index 0000000..f615152 --- /dev/null +++ b/ch08/src/stand-alone/docs/index.html @@ -0,0 +1,19 @@ + + + + Welcome to the Plant Application + + + + + + + + +
+ The stand-alone application
+ The web application
+

This is the stand-alone application.

+ + + \ No newline at end of file diff --git a/ch08/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java b/ch08/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java new file mode 100644 index 0000000..bca1073 --- /dev/null +++ b/ch08/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java @@ -0,0 +1,154 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants.client; + +import java.sql.SQLException; + +import java.util.HashMap; +import java.util.Vector; +import java.util.Enumeration; + +import org.mwrm.plants.SelectData; +import org.mwrm.plants.Constants; + +/** + *

The PlantClient class is a command-line client + * for the plant application.

+ *

Usage:

+ *
    + *
  • -c Order by common name
  • + *
  • -f Order by family
  • + *
  • -n Order by botanical name (default)
  • + *
  • -n [letter] Order by botanical name + * and limit the search to plants beginning with the specified letter
  • + *
+ */ + +public final class PlantClient { + + /** + *

A simple constructor.

+ */ + private PlantClient() { } + + /** + * Checks the arguments, + * then uses the org.mwrm.plants.SelectData + * class to get results from the database. + * Once it has the results, it displays them to standard out. + * @param args The command-line arguments. + * @throws ClassNotFoundException If the database driver is not found + * @throws SQLException If there is a problem with the database + */ + public static void main(final String[] args) + throws ClassNotFoundException, SQLException { + + // The default choice + int choice = Constants.SORT_BY_NAME; + + // The user may want to select by a certain letter + String letter = ""; + + // Check that an argument has been provided + if (args.length > 0) { + // Check the type of argument + if (args[0].equals("-c") || args[0].equals("")) { + // Cannot be used with an argument just now, + // though Ant may pass an empty string + if (args.length > 1 && !args[1].equals("")) { + usage(); + } + // Order the results by common name + choice = Constants.SORT_BY_COMMON_NAME; + + } else if (args[0].equals("-f")) { + // Cannot be used with an argument just now, + // though Ant may pass an empty string + if (args.length > 1 && !args[1].equals("")) { + usage(); + } + // Order the results by family, then botanical name + choice = Constants.SORT_BY_FAMILY; + + } else if (args[0].equals("-n")) { + // Order the results by botanical name + // This is the default if no arguments are specified + + // The user can provide another argument. + // The search will only return those plants whose botanical name + // begins with the specifed letter. + if (args.length > 1 && !args[1].equals("")) { + choice = Constants.SORT_BY_CHOSEN_LETTER; + letter = args[1]; + } + } else { + // Usage information + usage(); + } + } + + // Obtain the results. This is a Vector of HashMaps + Vector results = SelectData.getData(choice, letter); + + // The top of the results display + System.out.println("\n-----------------------------"); + + // If there is no data in the results, tell the user + if (results.isEmpty()) { + System.out.println("No results found."); + System.out.println("-----------------------------"); + } else { + + // Each record in the database is a HashMap + HashMap record = new HashMap(); + + // Iterate over the results + for (Enumeration enum = results.elements(); + enum.hasMoreElements();) { + + record = (HashMap) enum.nextElement(); + + // The cultivar name is optional + String cultivar = ""; + + if (!(record.get("cultivar_name") == null)) { + cultivar = " '" + record.get("cultivar_name") + "'"; + } + + System.out.println("Name: " + record.get("name") + cultivar); + System.out.println("Common name: " + record.get("common_name")); + System.out.println("Family: " + record.get("family")); + System.out.println("Description: " + record.get("description")); + System.out.println("-----------------------------"); + } + } + } + + /** + *

Print the usage information.

+ */ + private static void usage() { + System.out.println("\nUsage: \n"); + System.out.println("-c \t\t Order by common name"); + System.out.println("-f \t\t Order by family"); + System.out.println("-n \t\t Order by botanical name (default)"); + System.out.println("-n [letter] \t Order by botanical name" + + " and limit the search to plants "); + System.out.println("\t\t beginning with the specified letter"); + System.exit(0); + } +} diff --git a/ch08/src/stand-alone/java/org/mwrm/plants/client/package.html b/ch08/src/stand-alone/java/org/mwrm/plants/client/package.html new file mode 100644 index 0000000..9148475 --- /dev/null +++ b/ch08/src/stand-alone/java/org/mwrm/plants/client/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants.client Package + + +

Contains the command-line client for the plant application.

+ + \ No newline at end of file diff --git a/ch08/src/web/conf/antBook.xml b/ch08/src/web/conf/antBook.xml new file mode 100644 index 0000000..9746019 --- /dev/null +++ b/ch08/src/web/conf/antBook.xml @@ -0,0 +1,3 @@ + + diff --git a/ch08/src/web/conf/plant.tld b/ch08/src/web/conf/plant.tld new file mode 100644 index 0000000..0066066 --- /dev/null +++ b/ch08/src/web/conf/plant.tld @@ -0,0 +1,32 @@ + + + + + 1.0 + 2.0 + plant + /plant-taglib + + A simple tab library for the plant application + + + + + Displays a character when given an integer + + letters + org.mwrm.plants.tags.LettersTag + false + none + + letter + true + true + char + + + + \ No newline at end of file diff --git a/ch08/src/web/conf/web.xml b/ch08/src/web/conf/web.xml new file mode 100644 index 0000000..c60d60e --- /dev/null +++ b/ch08/src/web/conf/web.xml @@ -0,0 +1,66 @@ + + + + + A plant application. + + + + resultsPerPage + 5 + + This value sets how many results will be shown per results page. + + + + + + + Resource reference to a factory for java.sql.Connection + instances that may be used for talking to a particular + database that is configured in the plantBook.xml file. + + + jdbc/PlantDB + + + javax.sql.DataSource + + + SERVLET + + + + + /plant-taglib + /WEB-INF/plant.tld + + + + plantServlet + + org.mwrm.plants.servlets.PlantServlet + + + + + Print debug information to the console + + + debug + + + true + + + + + + plantServlet + /plants/listPlants.jsp + + + \ No newline at end of file diff --git a/ch08/src/web/docs/index.html b/ch08/src/web/docs/index.html new file mode 100644 index 0000000..606c2b3 --- /dev/null +++ b/ch08/src/web/docs/index.html @@ -0,0 +1,19 @@ + + + + Welcome to the Plant Application + + + + + + + + +
+ The stand-alone application
+ The web application
+

This is the web application.

+ + + \ No newline at end of file diff --git a/ch08/src/web/images/banner_under.jpg b/ch08/src/web/images/banner_under.jpg new file mode 100644 index 0000000000000000000000000000000000000000..131c6a10b4fce0a65d11ee54cba46b10772eefbc GIT binary patch literal 21943 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 literal 0 HcmV?d00001 diff --git a/ch08/src/web/images/cyc_cou.jpg b/ch08/src/web/images/cyc_cou.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed0556c8da702a9316b72a885aef6fdcd8bc7a12 GIT binary patch literal 15502 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 literal 0 HcmV?d00001 diff --git a/ch08/src/web/images/no_image.jpg b/ch08/src/web/images/no_image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e86c254e4a1b43f14f582bb31a3f6280d0187a95 GIT binary patch literal 8646 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 w6Q>LRJ1zbbKmA?!FZi9NzW@LL literal 0 HcmV?d00001 diff --git a/ch08/src/web/images/tul_tur.jpg b/ch08/src/web/images/tul_tur.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fcc77b230ba510c80c7c3125e49f9e1b2b7f4303 GIT binary patch literal 21047 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 V1RgxR+tNU<`HJbJtc>re|Jei&5nTWP literal 0 HcmV?d00001 diff --git a/ch08/src/web/java/org/mwrm/plants/servlets/PlantServlet.java b/ch08/src/web/java/org/mwrm/plants/servlets/PlantServlet.java new file mode 100644 index 0000000..bc9b9a8 --- /dev/null +++ b/ch08/src/web/java/org/mwrm/plants/servlets/PlantServlet.java @@ -0,0 +1,209 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants.servlets; + +import java.sql.SQLException; + +import java.util.HashMap; +import java.util.Vector; +import java.util.Enumeration; + +import java.io.IOException; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import javax.servlet.ServletException; + +import org.mwrm.plants.SelectData; +import org.mwrm.plants.Constants; + + /** + *

The servlet client for the plant application.

+ * + *

Extracts the show parameter from the request + * to determine what the user wants to see. + * Valid values for show are:

+ * + *
    + *
  • common: Order by common name
  • + *
  • family: Order by family
  • + *
  • name: Order by botanical name (default)
  • + *
+ * + *

If the client sends a letter parameter, + * then the search is limited to records that begin with that letter.

+ */ +public class PlantServlet extends HttpServlet { + + /** + *

Extracts the show parameter from the request + * to determine what the user wants to see. + * Valid values for show are:

+ * + *
    + *
  • common: Order by common name
  • + *
  • family: Order by family
  • + *
  • name: Order by botanical name (default)
  • + *
+ * + *

If the client sends a letter parameter, + * then the search is limited to records that begin with that letter.

+ * + *

Once the choice has been extracted, + * this servlet uses the org.mwrm.plants.SelectData class + * to get results from the database. Once it has the results, + * it places them in the session under the name "results" + * and forwards the request to /plants/displayPage.jsp, + * which displays the first page of the results.

+ * + *

If the debug servlet initialization parameter + * is set to true the results + * will also be sent to standard out.

+ * + * @param request The request object. + * @param response The response object. + * + * @throws ServletException + * If there is a problem when processing the request + * @throws IOException If there is a problem writing the response + */ + public final void doGet(final HttpServletRequest request, + final HttpServletResponse response) + throws ServletException, IOException { + // The default choice + int choice = Constants.SORT_BY_NAME; + + // Check the show parameter + // to see if the user wants to select anything else + if (request.getParameter("show").equals("common")) { + choice = Constants.SORT_BY_COMMON_NAME; + } else if (request.getParameter("show").equals("family")) { + choice = Constants.SORT_BY_FAMILY; + } + + // The results from the database + Vector results = null; + // The letter that the user wants to sort by + String letter = null; + + // If the letter parameter is set, then make the appropriate choice + if (request.getParameter("letter") != null) { + letter = request.getParameter("letter").toLowerCase(); + choice = Constants.SORT_BY_CHOSEN_LETTER; + } + + // Obtain the results. This is a Vector of HashMaps + try { + results = SelectData.getData(choice, letter); + } catch (ClassNotFoundException cnfe) { + throw new ServletException(cnfe.getMessage()); + } catch (SQLException sqle) { + throw new ServletException(sqle.getMessage()); + } + + // The debug servlet initialization parameter sets output options + if (getServletConfig().getInitParameter("debug").equals("true")) { + // The top of the results display + System.out.println("\n-----------------------------"); + + // If there is no data in the results, tell the user + if (results.isEmpty()) { + System.out.println("No results found."); + System.out.println("-----------------------------"); + } else { + + // Each record in the database is a HashMap + HashMap record = new HashMap(); + + // Iterate over the results + for (Enumeration enum = results.elements(); + enum.hasMoreElements();) { + + // The current record + record = (HashMap) enum.nextElement(); + + // The cultivar name is optional + String cultivar = ""; + + // If the cultivar_name column is present, + // add it to the output string + if (!(record.get("cultivar_name") == null)) { + cultivar = " '" + record.get("cultivar_name") + "'"; + } + + // Print them to standard out + System.out.println("Name: " + + record.get("name") + cultivar); + System.out.println("Common name: " + + record.get("common_name")); + System.out.println("Family: " + + record.get("family")); + System.out.println("Description: " + + record.get("description")); + System.out.println("Image: " + + record.get("image")); + System.out.println("-----------------------------"); + } + } + } + + // Now store the results in the session + HttpSession session = request.getSession(true); + + // If the results are empty, + // then store a flag to tell the application as such, + // then remove the results object so the pages don't try to work with it + if (results.isEmpty()) { + session.setAttribute("noResults", "true"); + session.removeAttribute("results"); + + // There are some results, + // so place them in the session and remove the noResults flag, + // so that the application knows there are results + } else { + session.setAttribute("results", results); + session.removeAttribute("noResults"); + + // The pages will need to know the number of results + session.setAttribute("resultsSize", "" + results.size() + ""); + } + + // Forward the request to the display page + getServletContext() + .getRequestDispatcher("/plants/displayResults.jsp?start=0") + .forward(request, response); + } + + /** + * Sends any POST requests to the doGet method. + * + * @param request The request object. + * @param response The response object. + * + * @throws ServletException + * If there is a problem when processing the request + * @throws IOException If there is a problem writing the response + */ + public final void doPost(final HttpServletRequest request, + final HttpServletResponse response) + throws ServletException, IOException { + doGet(request, response); + } +} diff --git a/ch08/src/web/java/org/mwrm/plants/servlets/package.html b/ch08/src/web/java/org/mwrm/plants/servlets/package.html new file mode 100644 index 0000000..d9ac8dd --- /dev/null +++ b/ch08/src/web/java/org/mwrm/plants/servlets/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants.servlets Package + + +

Contains the servlet for the plant application.

+ + \ No newline at end of file diff --git a/ch08/src/web/java/org/mwrm/plants/tags/LettersTag.java b/ch08/src/web/java/org/mwrm/plants/tags/LettersTag.java new file mode 100644 index 0000000..6911f3f --- /dev/null +++ b/ch08/src/web/java/org/mwrm/plants/tags/LettersTag.java @@ -0,0 +1,63 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants.tags; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.JspWriter; +import javax.servlet.jsp.tagext.SimpleTagSupport; + +import java.io.IOException; + + /** + *

Converts an integer into a character. + * The letter attribute takes the integer, + * which is converted to a char by the time the tag gets it. + * The tag then writes the char to the client.

+ */ +public class LettersTag extends SimpleTagSupport { + + /** + * The character to display. + */ + private char letter; + + /** + *

Processes the tag when it is encountered on the page.

+ * @throws JspException + * If there is a problem processing the tag + * @throws IOException + * If there is a problem writing to the client + */ + public final void doTag() throws JspException, IOException { + + // The page that the client will receive + JspWriter out = getJspContext().getOut(); + + // Write the letter to the client + out.print(letter); + } + + /** + * + *

The setter method for the letter attribute.

+ * + * @param aLetter The letter to display. + */ + public final void setLetter(final char aLetter) { + this.letter = aLetter; + } +} diff --git a/ch08/src/web/java/org/mwrm/plants/tags/package.html b/ch08/src/web/java/org/mwrm/plants/tags/package.html new file mode 100644 index 0000000..fcb8df4 --- /dev/null +++ b/ch08/src/web/java/org/mwrm/plants/tags/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants.tags Package + + +

Contains the custom tags for the plant application.

+ + \ No newline at end of file diff --git a/ch08/src/web/pages/footer.html b/ch08/src/web/pages/footer.html new file mode 100644 index 0000000..8511c9c --- /dev/null +++ b/ch08/src/web/pages/footer.html @@ -0,0 +1,3 @@ +
+ Bottom banner +
\ No newline at end of file diff --git a/ch08/src/web/pages/header.jsp b/ch08/src/web/pages/header.jsp new file mode 100644 index 0000000..135f4a5 --- /dev/null +++ b/ch08/src/web/pages/header.jsp @@ -0,0 +1,16 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> +<%@ taglib uri="/plant-taglib" prefix="tags" %> +
\ No newline at end of file diff --git a/ch08/src/web/pages/index.jsp b/ch08/src/web/pages/index.jsp new file mode 100644 index 0000000..2b9ae28 --- /dev/null +++ b/ch08/src/web/pages/index.jsp @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/ch08/src/web/pages/indexBody.jsp b/ch08/src/web/pages/indexBody.jsp new file mode 100644 index 0000000..6410604 --- /dev/null +++ b/ch08/src/web/pages/indexBody.jsp @@ -0,0 +1 @@ +

Welcome to the plant information application.

\ No newline at end of file diff --git a/ch08/src/web/pages/menu.jsp b/ch08/src/web/pages/menu.jsp new file mode 100644 index 0000000..135b8cc --- /dev/null +++ b/ch08/src/web/pages/menu.jsp @@ -0,0 +1,5 @@ +<%-- This page is common to the whole application --%> +<%@ taglib tagdir="/WEB-INF/tags" prefix="tags" %> +
+ +
\ No newline at end of file diff --git a/ch08/src/web/pages/plantStyle.css b/ch08/src/web/pages/plantStyle.css new file mode 100644 index 0000000..48b3129 --- /dev/null +++ b/ch08/src/web/pages/plantStyle.css @@ -0,0 +1,75 @@ +.menu-main { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: large; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.menu-sub { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: medium; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.footer { + color: #000000; + background-color: #FFFFFF; +} + +h1 { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: large; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.letters { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: medium; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.center { + text-align: center +} + +tr.template { + height: 500px +} + +td.template { + width: 200px +} + +tr.resultRow { + height: 250px +} + +p.left { + text-align: left +} + +p { + color: #000000; + background-color: #FFFFFF; + font-family: Arial, Verdana,Helvetica, Sans-Serif +} + +.italic { + color: #000000; + background-color: #FFFFFF; + font-family: Arial, Verdana,Helvetica, Sans-Serif; + font-style: italic +} + +.results { + color: #000000; + background-color: #FFFFFF; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} diff --git a/ch08/src/web/pages/plants/displayPlant.jsp b/ch08/src/web/pages/plants/displayPlant.jsp new file mode 100644 index 0000000..6e30cd6 --- /dev/null +++ b/ch08/src/web/pages/plants/displayPlant.jsp @@ -0,0 +1,15 @@ +<%-- JSP Directives --%> +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + + + + + + + + + + + + + diff --git a/ch08/src/web/pages/plants/displayPlantBody.jsp b/ch08/src/web/pages/plants/displayPlantBody.jsp new file mode 100644 index 0000000..9c37af4 --- /dev/null +++ b/ch08/src/web/pages/plants/displayPlantBody.jsp @@ -0,0 +1,31 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + + + + + + + + + + + + + + + + + +
+

+ Name:
+ Common name:
+ Family:
+ Description:
+

+
+
+ +<%-- We need to go back to where we came from --%> +Back \ No newline at end of file diff --git a/ch08/src/web/pages/plants/displayResults.jsp b/ch08/src/web/pages/plants/displayResults.jsp new file mode 100644 index 0000000..6c7c31c --- /dev/null +++ b/ch08/src/web/pages/plants/displayResults.jsp @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/ch08/src/web/pages/plants/displayResultsBody.jsp b/ch08/src/web/pages/plants/displayResultsBody.jsp new file mode 100644 index 0000000..0c09a66 --- /dev/null +++ b/ch08/src/web/pages/plants/displayResultsBody.jsp @@ -0,0 +1,63 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> + + +

Search Results

+ + + +

Sorry, there were no results for the search. Please try again.

+
+ + +
+

Number of results:

+ + + + + + + +
+ + "> +
+ +
+
+
+ + + + + + + ">First + + + + + + + ">Back + + + + + + + ">Next + + + + + + + ">Last + +
+
+ + \ No newline at end of file diff --git a/ch08/src/web/pages/plants/index.jsp b/ch08/src/web/pages/plants/index.jsp new file mode 100644 index 0000000..3c51457 --- /dev/null +++ b/ch08/src/web/pages/plants/index.jsp @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/ch08/src/web/pages/plants/searchForm.jsp b/ch08/src/web/pages/plants/searchForm.jsp new file mode 100644 index 0000000..0043e00 --- /dev/null +++ b/ch08/src/web/pages/plants/searchForm.jsp @@ -0,0 +1 @@ +

Click on a letter above or a link on the left.

diff --git a/ch08/src/web/pages/template.jsp b/ch08/src/web/pages/template.jsp new file mode 100644 index 0000000..a1fff41 --- /dev/null +++ b/ch08/src/web/pages/template.jsp @@ -0,0 +1,47 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + + + + + + + <c:out value="${param.title}" default="Plants"/> + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + +
+
+ + + \ No newline at end of file diff --git a/ch08/src/web/tags/simple.tag b/ch08/src/web/tags/simple.tag new file mode 100644 index 0000000..8683c7f --- /dev/null +++ b/ch08/src/web/tags/simple.tag @@ -0,0 +1,12 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + +

+ Home
+ Plants
+ + +  By common name
+  By botanical name
+  By family
+
+

\ No newline at end of file diff --git a/ch08/test/org/mwrm/plants/PlantWebTest.java b/ch08/test/org/mwrm/plants/PlantWebTest.java new file mode 100644 index 0000000..f1c5093 --- /dev/null +++ b/ch08/test/org/mwrm/plants/PlantWebTest.java @@ -0,0 +1,110 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +import java.io.IOException; +import java.net.MalformedURLException; +import org.xml.sax.SAXException; + +import junit.framework.TestCase; + +import com.meterware.httpunit.WebConversation; +import com.meterware.httpunit.WebResponse; + +/** + *

Tests the plant servlet. + * It checks that the web application is running + * and then checks the session is emptied + * if the there are no results in the query.

+ */ +public class PlantWebTest extends TestCase { + + /** The URL of the server. */ + private static final String SERVER_URL = "http://localhost:8080"; + + /** The web application's name. */ + private static final String WEB_APP = "/antBook"; + + /** The response code we're looking for. */ + private static final int RESPONSE_CODE = 200; + + /** + *

The constructor, + * which simply calls super(name).

+ * @param name The name of the test + */ + public PlantWebTest(final String name) { + super(name); + } + + /** + *

We want to make sure that the web application is running.

+ * @throws MalformedURLException + * If the URL of the web server is not correct + * @throws SAXException + * If the response can't be processed properly + */ + public final void testIsRunning() + throws MalformedURLException, SAXException { + // Create a WebConversation object + WebConversation wc = new WebConversation(); + try { + // Send a request to the web application's root + WebResponse resp = wc.getResponse(SERVER_URL + WEB_APP); + + // If there is a 200 return code, then it is available + assertEquals("Web application not available at " + + SERVER_URL + WEB_APP, + RESPONSE_CODE, resp.getResponseCode()); + } catch (IOException ioe) { + // We can't find the server, so we fail the test + fail("Server not available"); + } + } + + /** + *

The application should detect that no results have been obtained.

+ * @throws MalformedURLException + * If the URL of the web server is not correct + * @throws SAXException + * If the response can't be processed properly + */ + public final void testSession() + throws MalformedURLException, SAXException { + // Create a WebConversation object + WebConversation wc = new WebConversation(); + + try { + // First send a request that will not produce any results + WebResponse resp = + wc.getResponse(SERVER_URL + WEB_APP + + "/plants/listPlants.jsp?show=name&letter=X"); + // Check that this is the case + assertTrue("Session not cancelled after empty results", + (resp.getText().indexOf("Sorry") > -1)); + + // Now go to the index page, + // where there should not be an error message + resp = wc.getResponse(SERVER_URL + WEB_APP + "/plants/"); + assertTrue("Session not cancelled after empty results", + !(resp.getText().indexOf("Sorry") > -1)); + } catch (IOException ioe) { + // We can't find the server, so we fail the test + fail("Server not available"); + } + } +} diff --git a/ch08/test/org/mwrm/plants/package.html b/ch08/test/org/mwrm/plants/package.html new file mode 100644 index 0000000..a9c3f06 --- /dev/null +++ b/ch08/test/org/mwrm/plants/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants + + +

Contains the test classes for the plant application.

+ + diff --git a/ch09/build.jstl.xml b/ch09/build.jstl.xml new file mode 100644 index 0000000..491976d --- /dev/null +++ b/ch09/build.jstl.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ch09/build.mysql.xml b/ch09/build.mysql.xml new file mode 100644 index 0000000..98f2e76 --- /dev/null +++ b/ch09/build.mysql.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ch09/build.package.xml b/ch09/build.package.xml new file mode 100644 index 0000000..dc98429 --- /dev/null +++ b/ch09/build.package.xml @@ -0,0 +1,358 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${javadoc.doctitle} + + + + + + + + + + + + + + ${javadoc.doctitle} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ch09/build.properties b/ch09/build.properties new file mode 100644 index 0000000..3428e0d --- /dev/null +++ b/ch09/build.properties @@ -0,0 +1,136 @@ +# The source directory that contains the code +src=src + +# Subdirectory properties +src.shared.root=${src}/shared +src.shared.java=${src.shared.root}/java +src.shared.docs=${src.shared.root}/docs +src.shared.conf=${src.shared.root}/conf + +src.stand-alone.root=${src}/stand-alone +src.stand-alone.java=${src.stand-alone.root}/java +src.stand-alone.docs=${src.stand-alone.root}/docs + +src.web.root=${src}/web +src.web.java=${src.web.root}/java +src.web.docs=${src.web.root}/docs +src.web.pages=${src.web.root}/pages +src.web.tags=${src.web.root}/tags +src.web.conf=${src.web.root}/conf + +# The scratch directory +build=build + +build.stand-alone.root=${build}/stand-alone + +build.web.root=${build}/web +build.web.web-inf=${build.web.root}/WEB-INF +build.web.classes=${build.web.web-inf}/classes +build.web.tags=${build.web.web-inf}/tags +build.web.lib=${build.web.web-inf}/lib + +# The final destination of our project files +dist=dist + +# The location of third-party JAR files +lib=lib + +# The test directory +test.src=test +test.build=${build}/test +test.junit.reports=${test.build}/reports/junit +test.junit.data=${test.build}/data/junit +test.junit.style=${test.src}/style/junit +last.test.failed.file=failed.txt + +junit.home=C:/junit3.8.1 +junit.jar=${junit.home}/junit.jar + +httpunit.home=C:/httpunit-1.6 +httpunit.jar=${httpunit.home}/lib/httpunit.jar + +checkstyle.home=C:/checkstyle-3.5 +checkstyle.jar=${checkstyle.home}/checkstyle-3.5.jar +test.checkstyle.reports=${test.build}/reports/checkstyle +test.checkstyle.data=${test.build}/data/checkstyle + +# The Tomcat home directory +catalina.home=C:\\jakarta-tomcat-5.5.9 +servlet24.jar=${catalina.home}/common/lib/servlet-api.jar +#servlet24.jar=${lib}/servlet-api.jar + +# This name will be appended to the JAR and WAR files +appName=antBook +appName.jar=${dist}/${appName}.jar +appName.war=${dist}/${appName}.war +appName-test.jar=${dist}/${appName}-test.jar + +# Required for the JSTL build +jsp20.jar=${catalina.home}/common/lib/jsp-api.jar +# Use the below if using Ant to download the JAR (see below) +#jsp20.jar=${lib}/jsp-api.jar +jstl.build=jakarta-taglibs/standard +library.src=src +examples.src=examples +doc.src=doc +build.library=${build} + +# Required for the MySQL connector build +mysql.build=mm.mysql-2 +mysql.name=mysql-connector +mysql.jar=${lib}/${mysql.name}-bin.jar + +# The directory where the docs will go +docs=${build}/docs +tmp=C:/TEMP/antBook + +# Properties for customizing the Javadoc build +javadoc.doctitle=Welcome to the plant information application +javadoc.windowtitle=The plant information application +javadoc.j2se.version=1.5.0 +javadoc.j2ee.version=1.4 + +# Properties for offline Javadoc generation +javadoc.j2se.offline=C:/j2sdk1.4.2/docs/api +javadoc.j2ee.offline=C:/j2eesdk1.4/docs/apidocs + +# Names of packaged distributions +package.stand-alone=stand-alone +package.web=web +package.docs=docs + +# FTP settings +ftp.server=localhost +ftp.src.dir=src +ftp.bin.dir=bin + +# Email settings +mail.from=antBuild@example.com +mail.tolist=mattmoodie@yahoo.com +mail.message.docs=Here's the docs distribution +mail.message.src=Here's the source distribution +mail.message.bin=Here's the binary distribution +mail.message.all=Here's the whole distribution +mail.mailhost=smtp.mail.yahoo.co.uk +mail.subject=Ant build + +# The location of the Tomcat server +tomcat.host=localhost +tomcat.port=8080 +manager.url=http://${tomcat.host}:${tomcat.port}/manager + +# The database properties file +database.properties=${src.shared.conf}/database.properties + +# The name of the Tomcat start script +tomcat.executableName=startup + +# Subordinate build file +build.shared.xml=${src.shared.root}/build.xml +build.stand-alone.xml=${src.stand-alone.root}/build.xml +build.web.xml=${src.web.root}/build.xml +build.package.xml=build.package.xml +build.test.xml=${test.src}/build.xml + +build.jstl.xml=build.jstl.xml +build.mysql.xml=build.mysql.xml diff --git a/ch09/build.xml b/ch09/build.xml new file mode 100644 index 0000000..ae92a81 --- /dev/null +++ b/ch09/build.xml @@ -0,0 +1,550 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ch09/src/shared/conf/SQL/plants.sql b/ch09/src/shared/conf/SQL/plants.sql new file mode 100644 index 0000000..f95cb20 --- /dev/null +++ b/ch09/src/shared/conf/SQL/plants.sql @@ -0,0 +1,13 @@ +CREATE DATABASE IF NOT EXISTS plants; + +USE plants; + +CREATE TABLE plants ( + id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(80) NOT NULL, + common_name VARCHAR(80), + family VARCHAR(50) NOT NULL, + description TEXT NOT NULL, + image VARCHAR(20), + cultivar_name VARCHAR(80) +); \ No newline at end of file diff --git a/ch09/src/shared/conf/SQL/plantsDelete.sql b/ch09/src/shared/conf/SQL/plantsDelete.sql new file mode 100644 index 0000000..ea4dd57 --- /dev/null +++ b/ch09/src/shared/conf/SQL/plantsDelete.sql @@ -0,0 +1,3 @@ +USE plants; + +DELETE FROM plants; \ No newline at end of file diff --git a/ch09/src/shared/conf/SQL/plantsDrop.sql b/ch09/src/shared/conf/SQL/plantsDrop.sql new file mode 100644 index 0000000..999053f --- /dev/null +++ b/ch09/src/shared/conf/SQL/plantsDrop.sql @@ -0,0 +1 @@ +DROP DATABASE IF EXISTS plants; \ No newline at end of file diff --git a/ch09/src/shared/conf/SQL/plantsInsert.sql b/ch09/src/shared/conf/SQL/plantsInsert.sql new file mode 100644 index 0000000..1b11952 --- /dev/null +++ b/ch09/src/shared/conf/SQL/plantsInsert.sql @@ -0,0 +1,15 @@ +USE plants; + +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Galanthus nivalis", "Snowdrop", "Liliaceae", "Snowdrops appear in late winter and early spring.", "gal_niv.jpg"); +INSERT INTO plants (name, common_name, family, description) VALUES ("Narcissus pseudonarcissus", "Daffodil, Lent lily", "Liliaceae", "Daffodils appear in spring."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Narcissus poeticus var. recurvus", "Old Pheasant's Eye, Poet's narcissus", "Liliaceae", "A very late-flowering daffodil with white petals and a short orange/yellow trumpet."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Leucojum vernum", "Spring snowflake", "Liliaceae", "A lovely spring bulb that flowers in spring. It resembles a robust snowdrop."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Iris pseudacorus", "Yellow iris, Yellow flag", "Iridaceae", "Commonly found by water and damp places. It spreads quickly and can easily take over an area once introduced."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Crocus tommasinianus", "Early crocus", "Iridaceae", "An early flowering crocus with gentle lavender-coloured flowers."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Colchicum autumnale", "Meadow saffron, Autumn crocus", "Liliaceae", "Flowers in August and September months after its leaves have died away. Resembles a crocus very closely."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Hyacinthoides non-scripta", "Bluebell", "Liliaceae", "Cloaks the floor of deciduous woodland throughout Europe."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Erythronium dens-canis", "Dog's tooth violet", "Liliaceae", "The bulb is shaped like a dog's tooth, hence the name."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Fritillaria meleagris", "Snake's-head fritillary", "Liliaceae", "It takes its name from the mottled pattern on its flower that resembles snakeskin."); +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Cyclamen coum", "Cyclamen", "Primulaceae", "A winter-flowering corm that provides excellent winter colour.", "cyc_cou.jpg"); +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Tulipa turkestanica", "Tulip", "Liliaceae", "A delicate little tulip that appears in mid spring.", "tul_tur.jpg"); +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Ranunculus ficaria", "Lesser celandine", "Ranunculacae", "A dazzlingly yellow flower that is often considered a weed.", "ran_fic.jpg"); \ No newline at end of file diff --git a/ch09/src/shared/conf/database.properties b/ch09/src/shared/conf/database.properties new file mode 100644 index 0000000..ab7b216 --- /dev/null +++ b/ch09/src/shared/conf/database.properties @@ -0,0 +1,7 @@ +database.root=jdbc:mysql://localhost:3306/ +database.name=plants +driver.name=com.mysql.jdbc.Driver + +create.sql=SQL/plants.sql +insert.sql=SQL/plantsInsert.sql +drop.sql=SQL/plantsDrop.sql \ No newline at end of file diff --git a/ch09/src/shared/docs/LICENSE b/ch09/src/shared/docs/LICENSE new file mode 100644 index 0000000..f820d4b --- /dev/null +++ b/ch09/src/shared/docs/LICENSE @@ -0,0 +1,203 @@ +/* + * Apache License + * Version 2.0, January 2004 + * http://www.apache.org/licenses/ + * + * TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + * + * 1. Definitions. + * + * "License" shall mean the terms and conditions for use, reproduction, + * and distribution as defined by Sections 1 through 9 of this document. + * + * "Licensor" shall mean the copyright owner or entity authorized by + * the copyright owner that is granting the License. + * + * "Legal Entity" shall mean the union of the acting entity and all + * other entities that control, are controlled by, or are under common + * control with that entity. For the purposes of this definition, + * "control" means (i) the power, direct or indirect, to cause the + * direction or management of such entity, whether by contract or + * otherwise, or (ii) ownership of fifty percent (50%) or more of the + * outstanding shares, or (iii) beneficial ownership of such entity. + * + * "You" (or "Your") shall mean an individual or Legal Entity + * exercising permissions granted by this License. + * + * "Source" form shall mean the preferred form for making modifications, + * including but not limited to software source code, documentation + * source, and configuration files. + * + * "Object" form shall mean any form resulting from mechanical + * transformation or translation of a Source form, including but + * not limited to compiled object code, generated documentation, + * and conversions to other media types. + * + * "Work" shall mean the work of authorship, whether in Source or + * Object form, made available under the License, as indicated by a + * copyright notice that is included in or attached to the work + * (an example is provided in the Appendix below). + * + * "Derivative Works" shall mean any work, whether in Source or Object + * form, that is based on (or derived from) the Work and for which the + * editorial revisions, annotations, elaborations, or other modifications + * represent, as a whole, an original work of authorship. For the purposes + * of this License, Derivative Works shall not include works that remain + * separable from, or merely link (or bind by name) to the interfaces of, + * the Work and Derivative Works thereof. + * + * "Contribution" shall mean any work of authorship, including + * the original version of the Work and any modifications or additions + * to that Work or Derivative Works thereof, that is intentionally + * submitted to Licensor for inclusion in the Work by the copyright owner + * or by an individual or Legal Entity authorized to submit on behalf of + * the copyright owner. For the purposes of this definition, "submitted" + * means any form of electronic, verbal, or written communication sent + * to the Licensor or its representatives, including but not limited to + * communication on electronic mailing lists, source code control systems, + * and issue tracking systems that are managed by, or on behalf of, the + * Licensor for the purpose of discussing and improving the Work, but + * excluding communication that is conspicuously marked or otherwise + * designated in writing by the copyright owner as "Not a Contribution." + * + * "Contributor" shall mean Licensor and any individual or Legal Entity + * on behalf of whom a Contribution has been received by Licensor and + * subsequently incorporated within the Work. + * + * 2. Grant of Copyright License. Subject to the terms and conditions of + * this License, each Contributor hereby grants to You a perpetual, + * worldwide, non-exclusive, no-charge, royalty-free, irrevocable + * copyright license to reproduce, prepare Derivative Works of, + * publicly display, publicly perform, sublicense, and distribute the + * Work and such Derivative Works in Source or Object form. + * + * 3. Grant of Patent License. Subject to the terms and conditions of + * this License, each Contributor hereby grants to You a perpetual, + * worldwide, non-exclusive, no-charge, royalty-free, irrevocable + * (except as stated in this section) patent license to make, have made, + * use, offer to sell, sell, import, and otherwise transfer the Work, + * where such license applies only to those patent claims licensable + * by such Contributor that are necessarily infringed by their + * Contribution(s) alone or by combination of their Contribution(s) + * with the Work to which such Contribution(s) was submitted. If You + * institute patent litigation against any entity (including a + * cross-claim or counterclaim in a lawsuit) alleging that the Work + * or a Contribution incorporated within the Work constitutes direct + * or contributory patent infringement, then any patent licenses + * granted to You under this License for that Work shall terminate + * as of the date such litigation is filed. + * + * 4. Redistribution. You may reproduce and distribute copies of the + * Work or Derivative Works thereof in any medium, with or without + * modifications, and in Source or Object form, provided that You + * meet the following conditions: + * + * (a) You must give any other recipients of the Work or + * Derivative Works a copy of this License; and + * + * (b) You must cause any modified files to carry prominent notices + * stating that You changed the files; and + * + * (c) You must retain, in the Source form of any Derivative Works + * that You distribute, all copyright, patent, trademark, and + * attribution notices from the Source form of the Work, + * excluding those notices that do not pertain to any part of + * the Derivative Works; and + * + * (d) If the Work includes a "NOTICE" text file as part of its + * distribution, then any Derivative Works that You distribute must + * include a readable copy of the attribution notices contained + * within such NOTICE file, excluding those notices that do not + * pertain to any part of the Derivative Works, in at least one + * of the following places: within a NOTICE text file distributed + * as part of the Derivative Works; within the Source form or + * documentation, if provided along with the Derivative Works; or, + * within a display generated by the Derivative Works, if and + * wherever such third-party notices normally appear. The contents + * of the NOTICE file are for informational purposes only and + * do not modify the License. You may add Your own attribution + * notices within Derivative Works that You distribute, alongside + * or as an addendum to the NOTICE text from the Work, provided + * that such additional attribution notices cannot be construed + * as modifying the License. + * + * You may add Your own copyright statement to Your modifications and + * may provide additional or different license terms and conditions + * for use, reproduction, or distribution of Your modifications, or + * for any such Derivative Works as a whole, provided Your use, + * reproduction, and distribution of the Work otherwise complies with + * the conditions stated in this License. + * + * 5. Submission of Contributions. Unless You explicitly state otherwise, + * any Contribution intentionally submitted for inclusion in the Work + * by You to the Licensor shall be under the terms and conditions of + * this License, without any additional terms or conditions. + * Notwithstanding the above, nothing herein shall supersede or modify + * the terms of any separate license agreement you may have executed + * with Licensor regarding such Contributions. + * + * 6. Trademarks. This License does not grant permission to use the trade + * names, trademarks, service marks, or product names of the Licensor, + * except as required for reasonable and customary use in describing the + * origin of the Work and reproducing the content of the NOTICE file. + * + * 7. Disclaimer of Warranty. Unless required by applicable law or + * agreed to in writing, Licensor provides the Work (and each + * Contributor provides its Contributions) on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied, including, without limitation, any warranties or conditions + * of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + * PARTICULAR PURPOSE. You are solely responsible for determining the + * appropriateness of using or redistributing the Work and assume any + * risks associated with Your exercise of permissions under this License. + * + * 8. Limitation of Liability. In no event and under no legal theory, + * whether in tort (including negligence), contract, or otherwise, + * unless required by applicable law (such as deliberate and grossly + * negligent acts) or agreed to in writing, shall any Contributor be + * liable to You for damages, including any direct, indirect, special, + * incidental, or consequential damages of any character arising as a + * result of this License or out of the use or inability to use the + * Work (including but not limited to damages for loss of goodwill, + * work stoppage, computer failure or malfunction, or any and all + * other commercial damages or losses), even if such Contributor + * has been advised of the possibility of such damages. + * + * 9. Accepting Warranty or Additional Liability. While redistributing + * the Work or Derivative Works thereof, You may choose to offer, + * and charge a fee for, acceptance of support, warranty, indemnity, + * or other liability obligations and/or rights consistent with this + * License. However, in accepting such obligations, You may act only + * on Your own behalf and on Your sole responsibility, not on behalf + * of any other Contributor, and only if You agree to indemnify, + * defend, and hold each Contributor harmless for any liability + * incurred by, or claims asserted against, such Contributor by reason + * of your accepting any such warranty or additional liability. + * + * END OF TERMS AND CONDITIONS + * + * APPENDIX: How to apply the Apache License to your work. + * + * To apply the Apache License to your work, attach the following + * boilerplate notice, with the fields enclosed by brackets "[]" + * replaced with your own identifying information. (Don't include + * the brackets!) The text should be enclosed in the appropriate + * comment syntax for the file format. We also recommend that a + * file or class name and description of purpose be included on the + * same "printed page" as the copyright notice for easier + * identification within third-party archives. + * + * Copyright [yyyy] [name of copyright owner] + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ diff --git a/ch09/src/shared/docs/README b/ch09/src/shared/docs/README new file mode 100644 index 0000000..f629ac0 --- /dev/null +++ b/ch09/src/shared/docs/README @@ -0,0 +1,4 @@ +Each chapter's build file adds to the previous chapter's. + +Therefore, by Chapter 12, the build file contains all the targets and tasks +from the whole book. \ No newline at end of file diff --git a/ch09/src/shared/docs/index.html b/ch09/src/shared/docs/index.html new file mode 100644 index 0000000..dd2219c --- /dev/null +++ b/ch09/src/shared/docs/index.html @@ -0,0 +1,19 @@ + + + + Welcome to the Plant Application + + + + + + + + +
+ The stand-alone application
+ The web application
+

This is the Plant Application.

+ + + diff --git a/ch09/src/shared/java/org/mwrm/plants/Constants.java b/ch09/src/shared/java/org/mwrm/plants/Constants.java new file mode 100644 index 0000000..74b6e93 --- /dev/null +++ b/ch09/src/shared/java/org/mwrm/plants/Constants.java @@ -0,0 +1,47 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +/** + * The Constants class contains four constants + * that represent sort options. + * + */ + +public class Constants { + + /** Use to sort the plants by their botanical name. */ + public static final int SORT_BY_NAME = 1; + + /** Use to sort the plants by their common name. */ + public static final int SORT_BY_COMMON_NAME = 2; + + /** Use to sort the plants by their family name. */ + public static final int SORT_BY_FAMILY = 3; + + /** + * Use to sort the plants by their botanical name + * and exclude those plants that do not begin with the chosen letter. + */ + public static final int SORT_BY_CHOSEN_LETTER = 4; + + /** + * A simple constructor. + */ + public Constants() { } + +} diff --git a/ch09/src/shared/java/org/mwrm/plants/PropertiesLoader.java b/ch09/src/shared/java/org/mwrm/plants/PropertiesLoader.java new file mode 100644 index 0000000..10d07f3 --- /dev/null +++ b/ch09/src/shared/java/org/mwrm/plants/PropertiesLoader.java @@ -0,0 +1,53 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +import java.util.Properties; + +import java.io.IOException; + +/** + * The PropertiesLoader class loads properties + * from the database.properties file and passes them + * to whichever class wants to use them. This centralises the name + * of the properties file so the entire application can use it. + */ + +public class PropertiesLoader { + + /** A simple constructor. */ + public PropertiesLoader() { } + + /** + * Loads the properties for whichever class needs them. + * + * @return A Java properties file + */ + public final Properties loadProperties() { + + // Read properties file. + Properties properties = new Properties(); + try { + properties.load(this.getClass().getClassLoader() + .getResourceAsStream("database.properties")); + } catch (IOException e) { + System.out.println("Error: " + e.getMessage()); + } + + return properties; + } +} diff --git a/ch09/src/shared/java/org/mwrm/plants/SelectData.java b/ch09/src/shared/java/org/mwrm/plants/SelectData.java new file mode 100644 index 0000000..5a0ad89 --- /dev/null +++ b/ch09/src/shared/java/org/mwrm/plants/SelectData.java @@ -0,0 +1,156 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.Statement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; + +import java.util.HashMap; +import java.util.Vector; +import java.util.Properties; + +/** + *

The SelectData class establishes a connection + * with a database and executes a query, as selected by the client.

+ * + *

It gets the database driver name and the URL + * from the database.properties file. + * When the results come back from the database, + * this class places them as HashMap records + * in a Vector. It then passes this Vector + * back to the calling client.

+ * + *

The SQL strings are:

+ * + *
    + *
  • Constants.SORT_BY_NAME (the default): + * SELECT * FROM plants ORDER BY name
  • + *
  • Constants.SORT_BY_COMMON_NAME: + * SELECT * FROM plants ORDER BY common_name
  • + *
  • Constants.SORT_BY_FAMILY: + * SELECT * FROM plants ORDER BY family, name
  • + *
  • Constants.SORT_BY_CHOSEN_LETTER: + * SELECT * FROM plants WHERE name REGEXP '^X' + * where X is a letter supplied by the client
  • + *
+ */ + +public final class SelectData { + + /** + *

The default constructor.

+ */ + private SelectData() { } + + /** + * Get the data from the database. + * @param choice The criteria for sorting the results. + * This choice is held in the Constants class. + * @param letter The letter to use when limiting the search, + * should that option be chosen. + * @return Vector + * @throws ClassNotFoundException If the database driver is not found + * @throws SQLException If there's a problem with database operations + */ + public static Vector getData(final int choice, final String letter) + throws ClassNotFoundException, SQLException { + + // Read properties file + PropertiesLoader loader = new PropertiesLoader(); + Properties properties = loader.loadProperties(); + + // First load the MySQL JDBC driver + Class.forName(properties.getProperty("driver.name")); + + // The datasource + String url = properties.getProperty("database.root") + + properties.getProperty("database.name"); + + // Open the connection + Connection con = DriverManager.getConnection(url, "antBook", "antB00k"); + + Statement stmt = con.createStatement(); + + String select = getSelectString(choice, letter); + + // Now we get the data + ResultSet rs = stmt.executeQuery(select); + + // We'll need the metadata when we come to populate the session object + ResultSetMetaData rsmd = rs.getMetaData(); + int numberOfColumns = rsmd.getColumnCount(); + + Vector results = new Vector(); + + while (rs.next()) { + // We need a fresh entry every time + HashMap record = new HashMap(numberOfColumns); + + String columnName = ""; + + // For each column in the table, + // we want to add an entry to the HashMap + // with the same key as the column name + for (int i = 1; i <= numberOfColumns; i++) { + columnName = rsmd.getColumnName(i); + record.put(columnName, rs.getString(columnName)); + } + results.add(record); + } + + // Close the Statement and the Connection + stmt.close(); + con.close(); + + return results; + } + + /** + *

Returns the appropriate SQL string for the choice.

+ * @param choice The user's choice of search criteria. + * @param letter The letter to use when modifying the search. + * @return String + */ + private static String + getSelectString(final int choice, final String letter) { + + // This is the default SELECT statement if no arguments are specified + String selectString = "SELECT * FROM plants ORDER BY name"; + + // Check the type of argument + if (choice == Constants.SORT_BY_COMMON_NAME) { + // Order the results by common name + selectString = "SELECT * FROM plants ORDER BY common_name"; + + } else if (choice == Constants.SORT_BY_FAMILY) { + // Order the results by family, then botanical name + selectString = "SELECT * FROM plants ORDER BY family, name"; + + } else if (choice == Constants.SORT_BY_CHOSEN_LETTER) { + // The search will only return those plants whose botanical name + // begins with the specifed letter. + selectString = "SELECT * FROM plants WHERE name REGEXP '^" + + letter + "'"; + } + + return selectString; + } +} diff --git a/ch09/src/shared/java/org/mwrm/plants/package.html b/ch09/src/shared/java/org/mwrm/plants/package.html new file mode 100644 index 0000000..b64e7c3 --- /dev/null +++ b/ch09/src/shared/java/org/mwrm/plants/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants Package + + +

Utility classes for the plant application.

+ + \ No newline at end of file diff --git a/ch09/src/stand-alone/docs/index.html b/ch09/src/stand-alone/docs/index.html new file mode 100644 index 0000000..f615152 --- /dev/null +++ b/ch09/src/stand-alone/docs/index.html @@ -0,0 +1,19 @@ + + + + Welcome to the Plant Application + + + + + + + + +
+ The stand-alone application
+ The web application
+

This is the stand-alone application.

+ + + \ No newline at end of file diff --git a/ch09/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java b/ch09/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java new file mode 100644 index 0000000..bca1073 --- /dev/null +++ b/ch09/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java @@ -0,0 +1,154 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants.client; + +import java.sql.SQLException; + +import java.util.HashMap; +import java.util.Vector; +import java.util.Enumeration; + +import org.mwrm.plants.SelectData; +import org.mwrm.plants.Constants; + +/** + *

The PlantClient class is a command-line client + * for the plant application.

+ *

Usage:

+ *
    + *
  • -c Order by common name
  • + *
  • -f Order by family
  • + *
  • -n Order by botanical name (default)
  • + *
  • -n [letter] Order by botanical name + * and limit the search to plants beginning with the specified letter
  • + *
+ */ + +public final class PlantClient { + + /** + *

A simple constructor.

+ */ + private PlantClient() { } + + /** + * Checks the arguments, + * then uses the org.mwrm.plants.SelectData + * class to get results from the database. + * Once it has the results, it displays them to standard out. + * @param args The command-line arguments. + * @throws ClassNotFoundException If the database driver is not found + * @throws SQLException If there is a problem with the database + */ + public static void main(final String[] args) + throws ClassNotFoundException, SQLException { + + // The default choice + int choice = Constants.SORT_BY_NAME; + + // The user may want to select by a certain letter + String letter = ""; + + // Check that an argument has been provided + if (args.length > 0) { + // Check the type of argument + if (args[0].equals("-c") || args[0].equals("")) { + // Cannot be used with an argument just now, + // though Ant may pass an empty string + if (args.length > 1 && !args[1].equals("")) { + usage(); + } + // Order the results by common name + choice = Constants.SORT_BY_COMMON_NAME; + + } else if (args[0].equals("-f")) { + // Cannot be used with an argument just now, + // though Ant may pass an empty string + if (args.length > 1 && !args[1].equals("")) { + usage(); + } + // Order the results by family, then botanical name + choice = Constants.SORT_BY_FAMILY; + + } else if (args[0].equals("-n")) { + // Order the results by botanical name + // This is the default if no arguments are specified + + // The user can provide another argument. + // The search will only return those plants whose botanical name + // begins with the specifed letter. + if (args.length > 1 && !args[1].equals("")) { + choice = Constants.SORT_BY_CHOSEN_LETTER; + letter = args[1]; + } + } else { + // Usage information + usage(); + } + } + + // Obtain the results. This is a Vector of HashMaps + Vector results = SelectData.getData(choice, letter); + + // The top of the results display + System.out.println("\n-----------------------------"); + + // If there is no data in the results, tell the user + if (results.isEmpty()) { + System.out.println("No results found."); + System.out.println("-----------------------------"); + } else { + + // Each record in the database is a HashMap + HashMap record = new HashMap(); + + // Iterate over the results + for (Enumeration enum = results.elements(); + enum.hasMoreElements();) { + + record = (HashMap) enum.nextElement(); + + // The cultivar name is optional + String cultivar = ""; + + if (!(record.get("cultivar_name") == null)) { + cultivar = " '" + record.get("cultivar_name") + "'"; + } + + System.out.println("Name: " + record.get("name") + cultivar); + System.out.println("Common name: " + record.get("common_name")); + System.out.println("Family: " + record.get("family")); + System.out.println("Description: " + record.get("description")); + System.out.println("-----------------------------"); + } + } + } + + /** + *

Print the usage information.

+ */ + private static void usage() { + System.out.println("\nUsage: \n"); + System.out.println("-c \t\t Order by common name"); + System.out.println("-f \t\t Order by family"); + System.out.println("-n \t\t Order by botanical name (default)"); + System.out.println("-n [letter] \t Order by botanical name" + + " and limit the search to plants "); + System.out.println("\t\t beginning with the specified letter"); + System.exit(0); + } +} diff --git a/ch09/src/stand-alone/java/org/mwrm/plants/client/package.html b/ch09/src/stand-alone/java/org/mwrm/plants/client/package.html new file mode 100644 index 0000000..9148475 --- /dev/null +++ b/ch09/src/stand-alone/java/org/mwrm/plants/client/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants.client Package + + +

Contains the command-line client for the plant application.

+ + \ No newline at end of file diff --git a/ch09/src/web/conf/antBook.xml b/ch09/src/web/conf/antBook.xml new file mode 100644 index 0000000..9746019 --- /dev/null +++ b/ch09/src/web/conf/antBook.xml @@ -0,0 +1,3 @@ + + diff --git a/ch09/src/web/conf/plant.tld b/ch09/src/web/conf/plant.tld new file mode 100644 index 0000000..0066066 --- /dev/null +++ b/ch09/src/web/conf/plant.tld @@ -0,0 +1,32 @@ + + + + + 1.0 + 2.0 + plant + /plant-taglib + + A simple tab library for the plant application + + + + + Displays a character when given an integer + + letters + org.mwrm.plants.tags.LettersTag + false + none + + letter + true + true + char + + + + \ No newline at end of file diff --git a/ch09/src/web/conf/web.xml b/ch09/src/web/conf/web.xml new file mode 100644 index 0000000..c60d60e --- /dev/null +++ b/ch09/src/web/conf/web.xml @@ -0,0 +1,66 @@ + + + + + A plant application. + + + + resultsPerPage + 5 + + This value sets how many results will be shown per results page. + + + + + + + Resource reference to a factory for java.sql.Connection + instances that may be used for talking to a particular + database that is configured in the plantBook.xml file. + + + jdbc/PlantDB + + + javax.sql.DataSource + + + SERVLET + + + + + /plant-taglib + /WEB-INF/plant.tld + + + + plantServlet + + org.mwrm.plants.servlets.PlantServlet + + + + + Print debug information to the console + + + debug + + + true + + + + + + plantServlet + /plants/listPlants.jsp + + + \ No newline at end of file diff --git a/ch09/src/web/docs/index.html b/ch09/src/web/docs/index.html new file mode 100644 index 0000000..606c2b3 --- /dev/null +++ b/ch09/src/web/docs/index.html @@ -0,0 +1,19 @@ + + + + Welcome to the Plant Application + + + + + + + + +
+ The stand-alone application
+ The web application
+

This is the web application.

+ + + \ No newline at end of file diff --git a/ch09/src/web/images/banner_under.jpg b/ch09/src/web/images/banner_under.jpg new file mode 100644 index 0000000000000000000000000000000000000000..131c6a10b4fce0a65d11ee54cba46b10772eefbc GIT binary patch literal 21943 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 literal 0 HcmV?d00001 diff --git a/ch09/src/web/images/cyc_cou.jpg b/ch09/src/web/images/cyc_cou.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed0556c8da702a9316b72a885aef6fdcd8bc7a12 GIT binary patch literal 15502 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 literal 0 HcmV?d00001 diff --git a/ch09/src/web/images/no_image.jpg b/ch09/src/web/images/no_image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e86c254e4a1b43f14f582bb31a3f6280d0187a95 GIT binary patch literal 8646 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 w6Q>LRJ1zbbKmA?!FZi9NzW@LL literal 0 HcmV?d00001 diff --git a/ch09/src/web/images/tul_tur.jpg b/ch09/src/web/images/tul_tur.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fcc77b230ba510c80c7c3125e49f9e1b2b7f4303 GIT binary patch literal 21047 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 V1RgxR+tNU<`HJbJtc>re|Jei&5nTWP literal 0 HcmV?d00001 diff --git a/ch09/src/web/java/org/mwrm/plants/servlets/PlantServlet.java b/ch09/src/web/java/org/mwrm/plants/servlets/PlantServlet.java new file mode 100644 index 0000000..bc9b9a8 --- /dev/null +++ b/ch09/src/web/java/org/mwrm/plants/servlets/PlantServlet.java @@ -0,0 +1,209 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants.servlets; + +import java.sql.SQLException; + +import java.util.HashMap; +import java.util.Vector; +import java.util.Enumeration; + +import java.io.IOException; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import javax.servlet.ServletException; + +import org.mwrm.plants.SelectData; +import org.mwrm.plants.Constants; + + /** + *

The servlet client for the plant application.

+ * + *

Extracts the show parameter from the request + * to determine what the user wants to see. + * Valid values for show are:

+ * + *
    + *
  • common: Order by common name
  • + *
  • family: Order by family
  • + *
  • name: Order by botanical name (default)
  • + *
+ * + *

If the client sends a letter parameter, + * then the search is limited to records that begin with that letter.

+ */ +public class PlantServlet extends HttpServlet { + + /** + *

Extracts the show parameter from the request + * to determine what the user wants to see. + * Valid values for show are:

+ * + *
    + *
  • common: Order by common name
  • + *
  • family: Order by family
  • + *
  • name: Order by botanical name (default)
  • + *
+ * + *

If the client sends a letter parameter, + * then the search is limited to records that begin with that letter.

+ * + *

Once the choice has been extracted, + * this servlet uses the org.mwrm.plants.SelectData class + * to get results from the database. Once it has the results, + * it places them in the session under the name "results" + * and forwards the request to /plants/displayPage.jsp, + * which displays the first page of the results.

+ * + *

If the debug servlet initialization parameter + * is set to true the results + * will also be sent to standard out.

+ * + * @param request The request object. + * @param response The response object. + * + * @throws ServletException + * If there is a problem when processing the request + * @throws IOException If there is a problem writing the response + */ + public final void doGet(final HttpServletRequest request, + final HttpServletResponse response) + throws ServletException, IOException { + // The default choice + int choice = Constants.SORT_BY_NAME; + + // Check the show parameter + // to see if the user wants to select anything else + if (request.getParameter("show").equals("common")) { + choice = Constants.SORT_BY_COMMON_NAME; + } else if (request.getParameter("show").equals("family")) { + choice = Constants.SORT_BY_FAMILY; + } + + // The results from the database + Vector results = null; + // The letter that the user wants to sort by + String letter = null; + + // If the letter parameter is set, then make the appropriate choice + if (request.getParameter("letter") != null) { + letter = request.getParameter("letter").toLowerCase(); + choice = Constants.SORT_BY_CHOSEN_LETTER; + } + + // Obtain the results. This is a Vector of HashMaps + try { + results = SelectData.getData(choice, letter); + } catch (ClassNotFoundException cnfe) { + throw new ServletException(cnfe.getMessage()); + } catch (SQLException sqle) { + throw new ServletException(sqle.getMessage()); + } + + // The debug servlet initialization parameter sets output options + if (getServletConfig().getInitParameter("debug").equals("true")) { + // The top of the results display + System.out.println("\n-----------------------------"); + + // If there is no data in the results, tell the user + if (results.isEmpty()) { + System.out.println("No results found."); + System.out.println("-----------------------------"); + } else { + + // Each record in the database is a HashMap + HashMap record = new HashMap(); + + // Iterate over the results + for (Enumeration enum = results.elements(); + enum.hasMoreElements();) { + + // The current record + record = (HashMap) enum.nextElement(); + + // The cultivar name is optional + String cultivar = ""; + + // If the cultivar_name column is present, + // add it to the output string + if (!(record.get("cultivar_name") == null)) { + cultivar = " '" + record.get("cultivar_name") + "'"; + } + + // Print them to standard out + System.out.println("Name: " + + record.get("name") + cultivar); + System.out.println("Common name: " + + record.get("common_name")); + System.out.println("Family: " + + record.get("family")); + System.out.println("Description: " + + record.get("description")); + System.out.println("Image: " + + record.get("image")); + System.out.println("-----------------------------"); + } + } + } + + // Now store the results in the session + HttpSession session = request.getSession(true); + + // If the results are empty, + // then store a flag to tell the application as such, + // then remove the results object so the pages don't try to work with it + if (results.isEmpty()) { + session.setAttribute("noResults", "true"); + session.removeAttribute("results"); + + // There are some results, + // so place them in the session and remove the noResults flag, + // so that the application knows there are results + } else { + session.setAttribute("results", results); + session.removeAttribute("noResults"); + + // The pages will need to know the number of results + session.setAttribute("resultsSize", "" + results.size() + ""); + } + + // Forward the request to the display page + getServletContext() + .getRequestDispatcher("/plants/displayResults.jsp?start=0") + .forward(request, response); + } + + /** + * Sends any POST requests to the doGet method. + * + * @param request The request object. + * @param response The response object. + * + * @throws ServletException + * If there is a problem when processing the request + * @throws IOException If there is a problem writing the response + */ + public final void doPost(final HttpServletRequest request, + final HttpServletResponse response) + throws ServletException, IOException { + doGet(request, response); + } +} diff --git a/ch09/src/web/java/org/mwrm/plants/servlets/package.html b/ch09/src/web/java/org/mwrm/plants/servlets/package.html new file mode 100644 index 0000000..d9ac8dd --- /dev/null +++ b/ch09/src/web/java/org/mwrm/plants/servlets/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants.servlets Package + + +

Contains the servlet for the plant application.

+ + \ No newline at end of file diff --git a/ch09/src/web/java/org/mwrm/plants/tags/LettersTag.java b/ch09/src/web/java/org/mwrm/plants/tags/LettersTag.java new file mode 100644 index 0000000..6911f3f --- /dev/null +++ b/ch09/src/web/java/org/mwrm/plants/tags/LettersTag.java @@ -0,0 +1,63 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants.tags; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.JspWriter; +import javax.servlet.jsp.tagext.SimpleTagSupport; + +import java.io.IOException; + + /** + *

Converts an integer into a character. + * The letter attribute takes the integer, + * which is converted to a char by the time the tag gets it. + * The tag then writes the char to the client.

+ */ +public class LettersTag extends SimpleTagSupport { + + /** + * The character to display. + */ + private char letter; + + /** + *

Processes the tag when it is encountered on the page.

+ * @throws JspException + * If there is a problem processing the tag + * @throws IOException + * If there is a problem writing to the client + */ + public final void doTag() throws JspException, IOException { + + // The page that the client will receive + JspWriter out = getJspContext().getOut(); + + // Write the letter to the client + out.print(letter); + } + + /** + * + *

The setter method for the letter attribute.

+ * + * @param aLetter The letter to display. + */ + public final void setLetter(final char aLetter) { + this.letter = aLetter; + } +} diff --git a/ch09/src/web/java/org/mwrm/plants/tags/package.html b/ch09/src/web/java/org/mwrm/plants/tags/package.html new file mode 100644 index 0000000..fcb8df4 --- /dev/null +++ b/ch09/src/web/java/org/mwrm/plants/tags/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants.tags Package + + +

Contains the custom tags for the plant application.

+ + \ No newline at end of file diff --git a/ch09/src/web/pages/footer.html b/ch09/src/web/pages/footer.html new file mode 100644 index 0000000..8511c9c --- /dev/null +++ b/ch09/src/web/pages/footer.html @@ -0,0 +1,3 @@ +
+ Bottom banner +
\ No newline at end of file diff --git a/ch09/src/web/pages/header.jsp b/ch09/src/web/pages/header.jsp new file mode 100644 index 0000000..135f4a5 --- /dev/null +++ b/ch09/src/web/pages/header.jsp @@ -0,0 +1,16 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> +<%@ taglib uri="/plant-taglib" prefix="tags" %> +
\ No newline at end of file diff --git a/ch09/src/web/pages/index.jsp b/ch09/src/web/pages/index.jsp new file mode 100644 index 0000000..2b9ae28 --- /dev/null +++ b/ch09/src/web/pages/index.jsp @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/ch09/src/web/pages/indexBody.jsp b/ch09/src/web/pages/indexBody.jsp new file mode 100644 index 0000000..6410604 --- /dev/null +++ b/ch09/src/web/pages/indexBody.jsp @@ -0,0 +1 @@ +

Welcome to the plant information application.

\ No newline at end of file diff --git a/ch09/src/web/pages/menu.jsp b/ch09/src/web/pages/menu.jsp new file mode 100644 index 0000000..135b8cc --- /dev/null +++ b/ch09/src/web/pages/menu.jsp @@ -0,0 +1,5 @@ +<%-- This page is common to the whole application --%> +<%@ taglib tagdir="/WEB-INF/tags" prefix="tags" %> +
+ +
\ No newline at end of file diff --git a/ch09/src/web/pages/plantStyle.css b/ch09/src/web/pages/plantStyle.css new file mode 100644 index 0000000..48b3129 --- /dev/null +++ b/ch09/src/web/pages/plantStyle.css @@ -0,0 +1,75 @@ +.menu-main { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: large; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.menu-sub { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: medium; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.footer { + color: #000000; + background-color: #FFFFFF; +} + +h1 { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: large; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.letters { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: medium; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.center { + text-align: center +} + +tr.template { + height: 500px +} + +td.template { + width: 200px +} + +tr.resultRow { + height: 250px +} + +p.left { + text-align: left +} + +p { + color: #000000; + background-color: #FFFFFF; + font-family: Arial, Verdana,Helvetica, Sans-Serif +} + +.italic { + color: #000000; + background-color: #FFFFFF; + font-family: Arial, Verdana,Helvetica, Sans-Serif; + font-style: italic +} + +.results { + color: #000000; + background-color: #FFFFFF; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} diff --git a/ch09/src/web/pages/plants/displayPlant.jsp b/ch09/src/web/pages/plants/displayPlant.jsp new file mode 100644 index 0000000..6e30cd6 --- /dev/null +++ b/ch09/src/web/pages/plants/displayPlant.jsp @@ -0,0 +1,15 @@ +<%-- JSP Directives --%> +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + + + + + + + + + + + + + diff --git a/ch09/src/web/pages/plants/displayPlantBody.jsp b/ch09/src/web/pages/plants/displayPlantBody.jsp new file mode 100644 index 0000000..9c37af4 --- /dev/null +++ b/ch09/src/web/pages/plants/displayPlantBody.jsp @@ -0,0 +1,31 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + + + + + + + + + + + + + + + + + +
+

+ Name:
+ Common name:
+ Family:
+ Description:
+

+
+
+ +<%-- We need to go back to where we came from --%> +Back \ No newline at end of file diff --git a/ch09/src/web/pages/plants/displayResults.jsp b/ch09/src/web/pages/plants/displayResults.jsp new file mode 100644 index 0000000..6c7c31c --- /dev/null +++ b/ch09/src/web/pages/plants/displayResults.jsp @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/ch09/src/web/pages/plants/displayResultsBody.jsp b/ch09/src/web/pages/plants/displayResultsBody.jsp new file mode 100644 index 0000000..0c09a66 --- /dev/null +++ b/ch09/src/web/pages/plants/displayResultsBody.jsp @@ -0,0 +1,63 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> + + +

Search Results

+ + + +

Sorry, there were no results for the search. Please try again.

+
+ + +
+

Number of results:

+ + + + + + + +
+ + "> +
+ +
+
+
+ + + + + + + ">First + + + + + + + ">Back + + + + + + + ">Next + + + + + + + ">Last + +
+
+ + \ No newline at end of file diff --git a/ch09/src/web/pages/plants/index.jsp b/ch09/src/web/pages/plants/index.jsp new file mode 100644 index 0000000..3c51457 --- /dev/null +++ b/ch09/src/web/pages/plants/index.jsp @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/ch09/src/web/pages/plants/searchForm.jsp b/ch09/src/web/pages/plants/searchForm.jsp new file mode 100644 index 0000000..0043e00 --- /dev/null +++ b/ch09/src/web/pages/plants/searchForm.jsp @@ -0,0 +1 @@ +

Click on a letter above or a link on the left.

diff --git a/ch09/src/web/pages/template.jsp b/ch09/src/web/pages/template.jsp new file mode 100644 index 0000000..a1fff41 --- /dev/null +++ b/ch09/src/web/pages/template.jsp @@ -0,0 +1,47 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + + + + + + + <c:out value="${param.title}" default="Plants"/> + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + +
+
+ + + \ No newline at end of file diff --git a/ch09/src/web/tags/simple.tag b/ch09/src/web/tags/simple.tag new file mode 100644 index 0000000..8683c7f --- /dev/null +++ b/ch09/src/web/tags/simple.tag @@ -0,0 +1,12 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + +

+ Home
+ Plants
+ + +  By common name
+  By botanical name
+  By family
+
+

\ No newline at end of file diff --git a/ch09/test/build.xml b/ch09/test/build.xml new file mode 100644 index 0000000..78360fc --- /dev/null +++ b/ch09/test/build.xml @@ -0,0 +1,297 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ch09/test/org/mwrm/plants/PlantWebTest.java b/ch09/test/org/mwrm/plants/PlantWebTest.java new file mode 100644 index 0000000..f1c5093 --- /dev/null +++ b/ch09/test/org/mwrm/plants/PlantWebTest.java @@ -0,0 +1,110 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +import java.io.IOException; +import java.net.MalformedURLException; +import org.xml.sax.SAXException; + +import junit.framework.TestCase; + +import com.meterware.httpunit.WebConversation; +import com.meterware.httpunit.WebResponse; + +/** + *

Tests the plant servlet. + * It checks that the web application is running + * and then checks the session is emptied + * if the there are no results in the query.

+ */ +public class PlantWebTest extends TestCase { + + /** The URL of the server. */ + private static final String SERVER_URL = "http://localhost:8080"; + + /** The web application's name. */ + private static final String WEB_APP = "/antBook"; + + /** The response code we're looking for. */ + private static final int RESPONSE_CODE = 200; + + /** + *

The constructor, + * which simply calls super(name).

+ * @param name The name of the test + */ + public PlantWebTest(final String name) { + super(name); + } + + /** + *

We want to make sure that the web application is running.

+ * @throws MalformedURLException + * If the URL of the web server is not correct + * @throws SAXException + * If the response can't be processed properly + */ + public final void testIsRunning() + throws MalformedURLException, SAXException { + // Create a WebConversation object + WebConversation wc = new WebConversation(); + try { + // Send a request to the web application's root + WebResponse resp = wc.getResponse(SERVER_URL + WEB_APP); + + // If there is a 200 return code, then it is available + assertEquals("Web application not available at " + + SERVER_URL + WEB_APP, + RESPONSE_CODE, resp.getResponseCode()); + } catch (IOException ioe) { + // We can't find the server, so we fail the test + fail("Server not available"); + } + } + + /** + *

The application should detect that no results have been obtained.

+ * @throws MalformedURLException + * If the URL of the web server is not correct + * @throws SAXException + * If the response can't be processed properly + */ + public final void testSession() + throws MalformedURLException, SAXException { + // Create a WebConversation object + WebConversation wc = new WebConversation(); + + try { + // First send a request that will not produce any results + WebResponse resp = + wc.getResponse(SERVER_URL + WEB_APP + + "/plants/listPlants.jsp?show=name&letter=X"); + // Check that this is the case + assertTrue("Session not cancelled after empty results", + (resp.getText().indexOf("Sorry") > -1)); + + // Now go to the index page, + // where there should not be an error message + resp = wc.getResponse(SERVER_URL + WEB_APP + "/plants/"); + assertTrue("Session not cancelled after empty results", + !(resp.getText().indexOf("Sorry") > -1)); + } catch (IOException ioe) { + // We can't find the server, so we fail the test + fail("Server not available"); + } + } +} diff --git a/ch09/test/org/mwrm/plants/package.html b/ch09/test/org/mwrm/plants/package.html new file mode 100644 index 0000000..a9c3f06 --- /dev/null +++ b/ch09/test/org/mwrm/plants/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants + + +

Contains the test classes for the plant application.

+ + diff --git a/ch10/ant/org/mwrm/ant/tasks/ClassSetTask.java b/ch10/ant/org/mwrm/ant/tasks/ClassSetTask.java new file mode 100644 index 0000000..5afbdfd --- /dev/null +++ b/ch10/ant/org/mwrm/ant/tasks/ClassSetTask.java @@ -0,0 +1,60 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.mwrm.ant.tasks; + +import org.apache.tools.ant.Project; +import org.apache.tools.ant.Task; +import org.apache.tools.ant.BuildException; + +/** + *

The ClassSetTask class + * demonstrates how to use a Class argument + * in a custom class attribute.

+ * + */ + +public class ClassSetTask extends Task { + + /** The qualified class name. */ + private Class qualifiedName; + + /** + *

Runs the task and displays the qualified name of the class + * that is set as the setQualifiedName attribute.

+ * + */ + public final void execute() { + log("qualifiedName: " + qualifiedName, Project.MSG_INFO); + } + + /** + *

Sets the fully qualified name of the class.

+ ** @param qName The fully qualified name of a class + */ + public final void setQualifiedName(final Class qName) { + if (qName.getName().equals("java.lang.Integer") + || + qName.getName().equals("java.lang.String")) { + log(qName.getName() + " found.", Project.MSG_INFO); + } else { + String msg = "You can only specify java.lang.Integer " + + "or java.lang.String in qualifiedName."; + throw new BuildException(msg); + } + this.qualifiedName = qName; + } +} + diff --git a/ch10/ant/org/mwrm/ant/tasks/ExtendJavadocTask.java b/ch10/ant/org/mwrm/ant/tasks/ExtendJavadocTask.java new file mode 100644 index 0000000..e9c076c --- /dev/null +++ b/ch10/ant/org/mwrm/ant/tasks/ExtendJavadocTask.java @@ -0,0 +1,188 @@ +/* + * Extends org.apache.tools.ant.taskdefs.Javadoc + * and uses org.apache.tools.ant.taskdefs.UpToDate, + * which are Copyright 2000-2005 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.ant.tasks; + +import java.io.File; + +import java.util.Enumeration; +import java.util.StringTokenizer; +import java.util.Vector; + +import org.apache.tools.ant.Project; +import org.apache.tools.ant.BuildException; + +import org.apache.tools.ant.taskdefs.Javadoc; +import org.apache.tools.ant.taskdefs.UpToDate; + +import org.apache.tools.ant.types.FileSet; + +/** + *

The ExtendJavadocTask class + * extends the {@link org.apache.tools.ant.taskdefs.Javadoc Javadoc} task. + * It checks whether a set of source files are newer than a set of target files + * and if so, it generates Javadocs.

+ * + */ + +public class ExtendJavadocTask extends Javadoc { + + /** The attribute of the task element. */ + private File target; + + /** A set of file sets, + * each of which is provided by a nested file set. */ + private Vector targetFileSets = new Vector(); + + /** The internal uptodate task. */ + private UpToDate utd; + + /** + *

Creates a new instance of an internal + * <uptodate> task + * and adds it to the current project.

+ * @see UpToDate org.apache.tools.ant.taskdefs.UpToDate + */ + public final void init() { + // We need an instance of the task + utd = new UpToDate(); + // We need to add the task to this project + utd.setProject(this.getProject()); + } + + /** + *

Checks if Javadocs should be created + * and then calls super.execute() if so.

+ *

This method does usage checks on the task's attributes + * and its nested elements. + * It will throw a BuildException if there is a violation.

+ */ + public final void execute() { + // This is the usage information + + // We can't have a target attribute + // and nested targetfiles elements + if (target != null && targetFileSets.size() > 0) { + String msg = "You can't specify a targetfile attribute " + + "and elements."; + throw new BuildException(msg); + } + // We have to specify either a target attribute + // or at least one nested targetfiles elements + if (target == null && targetFileSets.size() == 0) { + String msg = "You must specify either a targetfile attribute " + + "or at least one element."; + throw new BuildException(msg); + } + + // If this is false, the files aren't up to date + // and we have to run the javadocs + boolean eval = false; + + // If we've got to this point, we know the usage must be correct. + // Let's check whether a single target attribute has been used. + + if (target != null) { + // Get the results of the check + eval = getResult(target); + } else { + // If a target attribute wasn't specified, + // at least one nested targetfiles element was. + + // We first get all the file sets represented by the nested elements + Enumeration e = targetFileSets.elements(); + + // And then iterate over them + while (e.hasMoreElements()) { + + // The next element is a file set, so we get its files + // in a semi-colon-separated list + String files = e.nextElement().toString(); + + // Next, we split the list into its file names + StringTokenizer st = new StringTokenizer(files, ";"); + + // And iterate over them to test each one + while (st.hasMoreTokens()) { + // We create a file + //from the current file name in the iteration + File tempTarget = new File(st.nextToken()); + + // Get the results of the check + eval = getResult(tempTarget); + + // One false result is enough to fail the whole file set + if (!eval) { + break; + } + } + // One false result is enough to fail the whole file set + if (!eval) { + break; + } + } + } + + // If the test failed, we want to generate Javadocs + if (!eval) { + super.execute(); + } else { + log("Skipping Javadoc creation. The files are up to date.", + Project.MSG_INFO); + } + } + + /**

Checks whether the files are up to date.

+ * @param file The file to evaluate + * @return boolean The result + */ + private boolean getResult(final File file) { + // Set the target property in the task + utd.setTargetFile(file); + // Evaluate the files + return utd.eval(); + } + + /** + *

The setter method for the target attribute.

+ * @param targetFile A file to check against + */ + public final void setTarget(final File targetFile) { + this.target = targetFile; + } + + /** + *

The setter method for the file set + * contained in the nested <srcfiles> element.

+ * @param fileset A file set of source files + */ + public final void addSrcfiles(final FileSet fileset) { + utd.addSrcfiles(fileset); + } + + /** + *

The setter method for the file sets + * contained in nested <targetfiles> elements.

+ * @param fileset A file set of target files + */ + public final void addTargetfiles(final FileSet fileset) { + targetFileSets.add(fileset); + } +} + diff --git a/ch10/ant/org/mwrm/ant/tasks/LifeCycleNestedTask.java b/ch10/ant/org/mwrm/ant/tasks/LifeCycleNestedTask.java new file mode 100644 index 0000000..bfd1215 --- /dev/null +++ b/ch10/ant/org/mwrm/ant/tasks/LifeCycleNestedTask.java @@ -0,0 +1,347 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.mwrm.ant.tasks; + +import java.util.Hashtable; +import java.util.Enumeration; +import java.util.Vector; + +import org.apache.tools.ant.Project; +import org.apache.tools.ant.Task; +import org.apache.tools.ant.BuildException; + +/** + *

At each stage in a task's life cycle, this class displays information + * to show the internal state of the task and its position with in the project. + * It takes a name attribute.

+ * + *

This class demonstrates how to nest elements within a custom task. + * Its nested element is called <name> + * and cannot be used in conjunction with a name attribute.

+ */ +public class LifeCycleNestedTask extends Task { + + /** The name attribute of this task. */ + private String name; + + /** The body text of this task. */ + private String text; + + /** The collection of name elements. */ + private Vector nameElements = new Vector(); + + /** + *

The constructor displays the state of the task + * as it is instantiated.

+ */ + public LifeCycleNestedTask() { + System.out.println("---------------"); + System.out.println("Constructor called"); + System.out.println("Value of name attribute: " + this.name); + System.out.println("Value of the body text: " + text); + System.out.println("Project: " + getProject()); + System.out.println("Location: " + getLocation()); + System.out.println("Target: " + getOwningTarget()); + System.out.println("---------------"); + } + + /** + *

Displays the state of the task at initialization.

+ * @see #logAll(String method) + */ + public final void init() { + logAll("init()"); + } + + /** + *

Displays the state of the task when Ant runs it. + * This method also runs some usage checks + * to ensure the task is being used properly.

+ */ + public final void execute() { + if (name != null && nameElements.size() > 0) { + String msg = "You can't specify a name attribute " + + "and elements."; + throw new BuildException(msg); + } + if (name == null && nameElements.size() == 0) { + String msg = "You must specify either a name attribute " + + "or at least one element."; + throw new BuildException(msg); + } + if (nameElements.size() > 0 && text != null) { + String msg = "You can't specify elements " + + "and body text."; + throw new BuildException(msg); + } + + logAll("execute()"); + + // If name is not set, we want to check nested elements + if (name == null) { + // Get the name elements + Enumeration e = nameElements.elements(); + + // And then iterate over them + while (e.hasMoreElements()) { + NameElement nameElement = (NameElement) e.nextElement(); + + // Usage check + if (nameElement.getName() == null) { + String msg = "You must specify a name attribute " + + "or body text for a nested element."; + throw new BuildException(msg); + } + log("Value of name element: " + nameElement.getName(), + Project.MSG_VERBOSE); + } + log("---------------", Project.MSG_VERBOSE); + } + } + + /** + *

Sets the name to display + * and shows the state of the task afterwards.

+ * @param aName The name to display + */ + public final void setName(final String aName) { + // The value of the name attribute + this.name = aName; + logAll("setName()"); + } + + /** + *

Sets the body text of the task + * and shows the state of the task afterwards.

+ * @param bodyText The body text + */ + public final void addText(final String bodyText) { + // If the body text is just whitespace, it might as well be null + if (bodyText.trim().equals("")) { + this.text = null; + } else { + this.text = bodyText.trim(); + } + logAll("addText()"); + } + + /**

Checks for task references.

+ * @return String + * A string that tells us details of the reference check + */ + private String referenceCheck() { + + // The default setting + String setString = "Reference not found."; + + // We need the references that have been set in this project + Hashtable refs = getProject().getReferences(); + Enumeration e = refs.elements(); + + // Let's iterate over them + while (e.hasMoreElements()) { + // We want to work with each object, so we'll instantiate an object + Object obj = e.nextElement(); + + // Check to see if this object is a custom task + // If it is, we'll build a string that contains its name and type + if (obj.getClass().getName(). + equals("org.apache.tools.ant.UnknownElement") + || + obj.getClass().getName(). + equals(this.getClass().getName())) { + Task aTask = (Task) obj; + setString = + "Reference to " + aTask.getTaskName() + " found, of type " + + aTask.getClass().getName() + ". "; + setString = setString + "Its id is " + + aTask.getRuntimeConfigurableWrapper(). + getAttributeMap().get("id") + "."; + } + } + return setString; + } + + /** + *

A central logging method that all the life-cycle methods call + * to display the state of the task. + * It displays the value of the name attribute + * and other information about the task, + * including the name of its project and its location in the build file.

+ * @param method The name of the method that issued the logging call + */ + public final void logAll(final String method) { + log("---------------", Project.MSG_VERBOSE); + log(method + " called", Project.MSG_VERBOSE); + + // If name is set, we only have one value to print + if (name != null) { + log("Value of name attribute: " + this.name, Project.MSG_VERBOSE); + } + + log("Value of the body text: " + text, Project.MSG_VERBOSE); + log("Project: " + getProject().getName(), Project.MSG_VERBOSE); + + // Here we build some information on the location + // within the build file + String locationString = getLocation().getFileName(); + locationString = locationString + + " at line " + getLocation().getLineNumber(); + + // Location.getColumnNumber() is for Ant 1.7+ + // Comment it out if you are using Ant 1.6.x + //locationString = locationString + // + " and column " + getLocation().getColumnNumber(); + + log("Location: " + locationString, Project.MSG_VERBOSE); + + // We could use the Location.toString() method + //log("Location: " + getLocation(), Project.MSG_VERBOSE); + + log("Target: " + getOwningTarget(), Project.MSG_VERBOSE); + + // referenceCheck() returns a string with information + // on any references to custom tasks + log(referenceCheck(), Project.MSG_VERBOSE); + + // If the configuration wrapper is null, we use its + // run-time equivalent + if (getWrapper() == null) { + log("Reference id: " + + getRuntimeConfigurableWrapper().getAttributeMap().get("id"), + Project.MSG_VERBOSE); + } else { + // This time we use the protected getWrapper() method + log("Reference id: " + getWrapper().getAttributeMap().get("id"), + Project.MSG_VERBOSE); + } + + log("---------------", Project.MSG_VERBOSE); + } + + /** + *

Adds a <name> element + * that has not been initialized.

+ * @param nameElement The NameElement + * object that represents the nested element + * @see LifeCycleNestedTask.NameElement + */ + public final void addName(final NameElement nameElement) { + nameElements.add(nameElement); + + logAll("addName()"); + log("Value of this name: " + + nameElement.getName(), Project.MSG_VERBOSE); + } + + /** + *

Adds a <name> element + * that has been initialized.

+ * @param nameElement The NameElement + * object that represents the nested element + * @see LifeCycleNestedTask.NameElement + */ + public final void addConfiguredName(final NameElement nameElement) { + nameElements.add(nameElement); + + logAll("addConfiguredName()"); + log("Value of this name: " + nameElement.getName(), + Project.MSG_VERBOSE); + } + + /** + *

Adds a <name> element + * that has not been initialized. + * In this case, the createName() method + * has the responsibility + * for creating the object.

+ * @see LifeCycleNestedTask.NameElement + */ + public final NameElement createName() { + NameElement nameElement = new NameElement("Madeleine"); + + nameElements.add(nameElement); + + logAll("createName()"); + log("Value of this name: " + nameElement.getName(), + Project.MSG_VERBOSE); + + return nameElement; + } + + /** + *

A class that implements + * the nested <name> element + * of a LifeCycleNestedTask. + * @see LifeCycleNestedTask + */ + public static class NameElement { + + /** The name attribute of this element. */ + private String name; + + /** Tells the class if we've used the overridden constructor. */ + private boolean usedConstructor = false; + + /** The empty constructor. */ + public NameElement() { + // Empty + } + + /** + *

Used by the LifeCycleNestedTask.createName() method + * to created a nested <name> element.

+ * @see LifeCycleNestedTask#createName() + */ + public NameElement(final String text) { + this.name = text; + usedConstructor = true; + } + + /** + *

The mutator method for the name attribute.

+ * @param aName The name to display + */ + public final void setName(final String aName) { + this.name = aName; + } + + /** + *

The accessor method for the name attribute.

+ * @return String The name to display + */ + public final String getName() { + return name; + } + + /** + *

Sets the body text of the <name> element. + * It contains a usage check.

+ * @param text The body text + */ + public final void addText(final String text) { + // Usage check + if (name != null && !usedConstructor) { + String msg = "You can't specify a name attribute " + + "and nested text in elements."; + throw new BuildException(msg); + } else { + this.name = text.trim(); + } + } + } +} + diff --git a/ch10/ant/org/mwrm/ant/tasks/LifeCycleTask.java b/ch10/ant/org/mwrm/ant/tasks/LifeCycleTask.java new file mode 100644 index 0000000..51c5219 --- /dev/null +++ b/ch10/ant/org/mwrm/ant/tasks/LifeCycleTask.java @@ -0,0 +1,194 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.mwrm.ant.tasks; + +import java.util.Hashtable; +import java.util.Enumeration; + +import org.apache.tools.ant.Project; +import org.apache.tools.ant.Task; +import org.apache.tools.ant.BuildException; + +/** + *

At each stage in a task's life cycle, this class displays information + * to show the internal state of the task and its position with in the project. + * It takes a name attribute.

+ */ +public class LifeCycleTask extends Task { + + /** The name attribute of this task. */ + private String name; + + /** The body text of this task. */ + private String text; + + /** + *

The constructor displays the state of the task + * as it is instantiated.

+ */ + public LifeCycleTask() { + System.out.println("---------------"); + System.out.println("Constructor called"); + System.out.println("Value of name attribute: " + name); + System.out.println("Value of the body text: " + text); + System.out.println("Project: " + getProject()); + System.out.println("Location: " + getLocation()); + System.out.println("Target: " + getOwningTarget()); + System.out.println("---------------"); + } + + /** + *

Displays the state of the task at initialization.

+ * @see #logAll(String method) + */ + public final void init() { + logAll("init()"); + } + + /** + *

Displays the state of the task when Ant runs it. + * This method also runs some usage checks + * to ensure the task is being used properly.

+ */ + public final void execute() { + if (name == null) { + throw new BuildException("You must specify a name attribute in " + + getTaskName() + "."); + } + logAll("execute()"); + + // Write the name to output + log(name, Project.MSG_INFO); + } + + /** + *

Sets the name to display + * and shows the state of the task afterwards.

+ * @param aName The name to display + */ + public final void setName(final String aName) { + // The value of the name attribute + this.name = aName; + logAll("setName()"); + } + + /** + *

Sets the body text of the task + * and shows the state of the task afterwards.

+ * @param bodyText The body text + */ + public final void addText(final String bodyText) { + // If the body text is just whitespace, it might as well be null + if (bodyText.trim().equals("")) { + this.text = null; + } else { + this.text = bodyText.trim(); + } + logAll("addText()"); + } + + /**

Checks for task references.

+ * @return String + * A string that tells us details of the reference check + */ + private String referenceCheck() { + + // The default setting + String setString = "Reference not found."; + + // We need the references that have been set in this project + Hashtable refs = getProject().getReferences(); + Enumeration e = refs.elements(); + + // Let's iterate over them + while (e.hasMoreElements()) { + // We want to work with each object, so we'll instantiate an object + Object obj = e.nextElement(); + + // Check to see whether this object is a task + // If it is, we'll build a string that contains its name and type + if (obj.getClass().getName(). + equals("org.apache.tools.ant.UnknownElement") + || + obj.getClass().getName(). + equals(this.getClass().getName())) { + + Task aTask = (Task) obj; + + setString = + "Reference to " + aTask.getTaskName() + " found, of type " + + aTask.getClass().getName() + ". "; + setString = setString + "Its id is " + + aTask.getRuntimeConfigurableWrapper(). + getAttributeMap().get("id") + "."; + } + } + return setString; + } + + /** + *

A central logging method that all the life-cycle methods call + * to display the state of the task. + * It displays the value of the name attribute + * and other information about the task, + * including the name of its project and its location in the build file.

+ * @param method The name of the method that issued the logging call + */ + public final void logAll(final String method) { + log("---------------", Project.MSG_VERBOSE); + log(method + " called", Project.MSG_VERBOSE); + log("Value of name attribute: " + name, Project.MSG_VERBOSE); + log("Value of the body text: " + text, Project.MSG_VERBOSE); + log("Project: " + getProject().getName(), Project.MSG_VERBOSE); + + // Here we build some information on the location + // within the build file + String locationString = getLocation().getFileName(); + locationString = locationString + " at line " + + getLocation().getLineNumber(); + + // Location.getColumnNumber() is for Ant 1.7+ + // Comment it out if you are using Ant 1.6.x + //locationString = locationString + " and column " + // + getLocation().getColumnNumber(); + + log("Location: " + locationString, Project.MSG_VERBOSE); + + // We could use the Location.toString() method + //log("Location: " + getLocation(), Project.MSG_VERBOSE); + + log("Target: " + getOwningTarget(), Project.MSG_VERBOSE); + + // referenceCheck() returns a string with information + // on any references to custom tasks + log(referenceCheck(), Project.MSG_VERBOSE); + + // If the configuration wrapper is null, we use its + // run-time equivalent + if (getWrapper() == null) { + log("Reference id: " + + getRuntimeConfigurableWrapper().getAttributeMap().get("id"), + Project.MSG_VERBOSE); + } else { + // This time we use the protected getWrapper() method + log("Reference id: " + getWrapper().getAttributeMap().get("id"), + Project.MSG_VERBOSE); + } + + log("---------------", Project.MSG_VERBOSE); + } +} + diff --git a/ch10/ant/org/mwrm/ant/tasks/ProjectHelpTask.java b/ch10/ant/org/mwrm/ant/tasks/ProjectHelpTask.java new file mode 100644 index 0000000..32172b0 --- /dev/null +++ b/ch10/ant/org/mwrm/ant/tasks/ProjectHelpTask.java @@ -0,0 +1,72 @@ +/* + * Uses org.apache.tools.ant.Main, + * which is Copyright 2000-2005 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.ant.tasks; + +import org.apache.tools.ant.Task; +import org.apache.tools.ant.Main; + +/** + *

The ProjectHelpTask class displays usage information + * for the current project. This is the same information as is displayed + * by -projecthelp.

+ * + */ + +public class ProjectHelpTask extends Task { + + /** The location of the build file to use + * when obtaining usage information. */ + private String buildfile; + + /** + *

Runs the task. + * It calls {@link org.apache.tools.ant.Main#main(String[] args) + * org.apache.tools.ant.Main.main()} with the -projecthelp + * parameter. It will also send the current build file's file name + * via the -f parameter.

+ * + *

The buildfile attribute is optional. + * The default is the task's build file.

+ * @see org.apache.tools.ant.Main org.apache.tools.ant.Main + */ + public final void execute() { + // If the buildfile attribute is null, we'll use the task's build file + if (buildfile == null) { + buildfile = getLocation().getFileName(); + } + + // The arguments that we will pass to the Main class. + // The buildfile attribute must follow the -f parameter. + String[] args = {"-projecthelp", "-f", buildfile}; + + // Call the Main Ant class with the arguments. + Main.main(args); + } + + /** + * Setter method for the buildfile attribute. + * @param file The file name of the build file to use. + * + */ + public final void setBuildfile(final String file) { + this.buildfile = file; + } + +} + diff --git a/ch10/ant/org/mwrm/ant/tasks/package.html b/ch10/ant/org/mwrm/ant/tasks/package.html new file mode 100644 index 0000000..26003dc --- /dev/null +++ b/ch10/ant/org/mwrm/ant/tasks/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.ant.tasks Package + + +

A collection of classes that demonstrate the Ant task life cycle.

+ + diff --git a/ch10/antBook.antlib.xml b/ch10/antBook.antlib.xml new file mode 100644 index 0000000..7927073 --- /dev/null +++ b/ch10/antBook.antlib.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ch10/antlib.xml b/ch10/antlib.xml new file mode 100644 index 0000000..72d6f9a --- /dev/null +++ b/ch10/antlib.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ch10/build.properties b/ch10/build.properties new file mode 100644 index 0000000..8337dd7 --- /dev/null +++ b/ch10/build.properties @@ -0,0 +1,139 @@ +# The source directory that contains the code +src=src + +# Subdirectory properties +src.shared.root=${src}/shared +src.shared.java=${src.shared.root}/java +src.shared.docs=${src.shared.root}/docs +src.shared.conf=${src.shared.root}/conf + +src.stand-alone.root=${src}/stand-alone +src.stand-alone.java=${src.stand-alone.root}/java +src.stand-alone.docs=${src.stand-alone.root}/docs + +src.web.root=${src}/web +src.web.java=${src.web.root}/java +src.web.docs=${src.web.root}/docs +src.web.pages=${src.web.root}/pages +src.web.tags=${src.web.root}/tags +src.web.conf=${src.web.root}/conf + +# The scratch directory +build=build + +build.stand-alone.root=${build}/stand-alone + +build.web.root=${build}/web +build.web.web-inf=${build.web.root}/WEB-INF +build.web.classes=${build.web.web-inf}/classes +build.web.tags=${build.web.web-inf}/tags +build.web.lib=${build.web.web-inf}/lib + +# The final destination of our project files +dist=dist + +# The location of third-party JAR files +lib=lib + +# This name will be appended to the JAR and WAR files +appName=antBook +appName.jar=${dist}/${appName}.jar +appName.war=${dist}/${appName}.war + +# The Tomcat home directory +catalina.home=C:\\jakarta-tomcat-5.5.9 +servlet24.jar=${catalina.home}/common/lib/servlet-api.jar +# Use the following line if using Ant to download the JAR +#servlet24.jar=${lib}/servlet-api.jar + +# Required for the JSTL build +jsp20.jar=${catalina.home}/common/lib/jsp-api.jar +# Use the following line if using Ant to download the JAR +#jsp20.jar=${lib}/jsp-api.jar +jstl.build=jakarta-taglibs/standard +library.src=src +examples.src=examples +doc.src=doc +build.library=${build} + +# Required for the MySQL connector build +mysql.build=mm.mysql-2 +mysql.name=mysql-connector +mysql.jar=${lib}/${mysql.name}-bin.jar + +# The database properties file +database.properties=${src.shared.conf}/database.properties + +# The directory where the docs will go +docs=${build}/docs + +# Properties for customizing the Javadoc build +javadoc.doctitle=Welcome to the example application +javadoc.windowtitle=The example application +javadoc.j2se.version=1.5.0 +javadoc.j2ee.version=1.4 + +javadoc.j2se.offline=C:/j2sdk1.5.0/docs/api +javadoc.j2ee.offline=C:/j2eesdk1.4/docs/apidocs + +package.stand-alone=stand-alone +package.web=web +package.docs=docs + +tmp=C:/TEMP/antBook +#tmp=/tmp/antBook + +# FTP settings +ftp.server=localhost +ftp.src.dir=src +ftp.bin.dir=bin + +mail.from=antBuild@example.com +mail.tolist=antUser01@example.com,antUser02@example.com +mail.message.docs=Here's the docs distribution +mail.mailhost=smtp.mail.example.com +mail.subject=Ant build + +# The location of the Tomcat server +tomcat.host=localhost +tomcat.port=8080 +manager.url=http://${tomcat.host}:${tomcat.port}/manager + +database.root=jdbc:mysql://localhost:3306/ +driver.name=com.mysql.jdbc.Driver + +drop.sql=SQL/drop.sql +create.sql=SQL/create.sql +insert.sql=SQL/insert.sql + +# The name of the Tomcat start script +tomcat.executableName=startup + +# The test directory +test.src=test +test.build=${build}/test +test.junit.reports=${test.build}/reports/junit +test.junit.data=${test.build}/data/junit +test.junit.style=${test.src}/style/junit + +junit.home=C:/junit3.8.1 +junit.jar=${junit.home}/junit.jar + +httpunit.home=C:/httpunit +httpunit.jar=${httpunit.home}/lib/httpunit.jar + +last.test.failed.file=failed.txt + +checkstyle.home=C:/checkstyle +checkstyle.jar=${checkstyle.home}/checkstyle-3.5.jar +test.checkstyle.reports=${test.build}/reports/checkstyle +test.checkstyle.data=${test.build}/data/checkstyle + +# Custom task properties +ant.tasks.src=ant +ant.tasks.build=${build}/ant +ant.tasks.jar=${dist}/${appName}-tasks.jar + +ant.tasks.antlib.xml=antlib.xml +ant.tasks.antlib.package=org/mwrm/ant +ant.tasks.antlib.dir=${ant.tasks.build}/${ant.tasks.antlib.package} \ No newline at end of file diff --git a/ch10/build.xml b/ch10/build.xml new file mode 100644 index 0000000..474b28e --- /dev/null +++ b/ch10/build.xml @@ -0,0 +1,1468 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${javadoc.doctitle} + + + + + + + + + + + + + + ${javadoc.doctitle} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${mail.message.docs} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${javadoc.doctitle} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${javadoc.doctitle} + + + + + + + + + + diff --git a/ch10/src/shared/conf/SQL/plants.sql b/ch10/src/shared/conf/SQL/plants.sql new file mode 100644 index 0000000..f95cb20 --- /dev/null +++ b/ch10/src/shared/conf/SQL/plants.sql @@ -0,0 +1,13 @@ +CREATE DATABASE IF NOT EXISTS plants; + +USE plants; + +CREATE TABLE plants ( + id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(80) NOT NULL, + common_name VARCHAR(80), + family VARCHAR(50) NOT NULL, + description TEXT NOT NULL, + image VARCHAR(20), + cultivar_name VARCHAR(80) +); \ No newline at end of file diff --git a/ch10/src/shared/conf/SQL/plantsDelete.sql b/ch10/src/shared/conf/SQL/plantsDelete.sql new file mode 100644 index 0000000..ea4dd57 --- /dev/null +++ b/ch10/src/shared/conf/SQL/plantsDelete.sql @@ -0,0 +1,3 @@ +USE plants; + +DELETE FROM plants; \ No newline at end of file diff --git a/ch10/src/shared/conf/SQL/plantsDrop.sql b/ch10/src/shared/conf/SQL/plantsDrop.sql new file mode 100644 index 0000000..999053f --- /dev/null +++ b/ch10/src/shared/conf/SQL/plantsDrop.sql @@ -0,0 +1 @@ +DROP DATABASE IF EXISTS plants; \ No newline at end of file diff --git a/ch10/src/shared/conf/SQL/plantsInsert.sql b/ch10/src/shared/conf/SQL/plantsInsert.sql new file mode 100644 index 0000000..1b11952 --- /dev/null +++ b/ch10/src/shared/conf/SQL/plantsInsert.sql @@ -0,0 +1,15 @@ +USE plants; + +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Galanthus nivalis", "Snowdrop", "Liliaceae", "Snowdrops appear in late winter and early spring.", "gal_niv.jpg"); +INSERT INTO plants (name, common_name, family, description) VALUES ("Narcissus pseudonarcissus", "Daffodil, Lent lily", "Liliaceae", "Daffodils appear in spring."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Narcissus poeticus var. recurvus", "Old Pheasant's Eye, Poet's narcissus", "Liliaceae", "A very late-flowering daffodil with white petals and a short orange/yellow trumpet."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Leucojum vernum", "Spring snowflake", "Liliaceae", "A lovely spring bulb that flowers in spring. It resembles a robust snowdrop."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Iris pseudacorus", "Yellow iris, Yellow flag", "Iridaceae", "Commonly found by water and damp places. It spreads quickly and can easily take over an area once introduced."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Crocus tommasinianus", "Early crocus", "Iridaceae", "An early flowering crocus with gentle lavender-coloured flowers."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Colchicum autumnale", "Meadow saffron, Autumn crocus", "Liliaceae", "Flowers in August and September months after its leaves have died away. Resembles a crocus very closely."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Hyacinthoides non-scripta", "Bluebell", "Liliaceae", "Cloaks the floor of deciduous woodland throughout Europe."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Erythronium dens-canis", "Dog's tooth violet", "Liliaceae", "The bulb is shaped like a dog's tooth, hence the name."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Fritillaria meleagris", "Snake's-head fritillary", "Liliaceae", "It takes its name from the mottled pattern on its flower that resembles snakeskin."); +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Cyclamen coum", "Cyclamen", "Primulaceae", "A winter-flowering corm that provides excellent winter colour.", "cyc_cou.jpg"); +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Tulipa turkestanica", "Tulip", "Liliaceae", "A delicate little tulip that appears in mid spring.", "tul_tur.jpg"); +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Ranunculus ficaria", "Lesser celandine", "Ranunculacae", "A dazzlingly yellow flower that is often considered a weed.", "ran_fic.jpg"); \ No newline at end of file diff --git a/ch10/src/shared/conf/database.properties b/ch10/src/shared/conf/database.properties new file mode 100644 index 0000000..ab7b216 --- /dev/null +++ b/ch10/src/shared/conf/database.properties @@ -0,0 +1,7 @@ +database.root=jdbc:mysql://localhost:3306/ +database.name=plants +driver.name=com.mysql.jdbc.Driver + +create.sql=SQL/plants.sql +insert.sql=SQL/plantsInsert.sql +drop.sql=SQL/plantsDrop.sql \ No newline at end of file diff --git a/ch10/src/shared/docs/LICENSE b/ch10/src/shared/docs/LICENSE new file mode 100644 index 0000000..f820d4b --- /dev/null +++ b/ch10/src/shared/docs/LICENSE @@ -0,0 +1,203 @@ +/* + * Apache License + * Version 2.0, January 2004 + * http://www.apache.org/licenses/ + * + * TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + * + * 1. Definitions. + * + * "License" shall mean the terms and conditions for use, reproduction, + * and distribution as defined by Sections 1 through 9 of this document. + * + * "Licensor" shall mean the copyright owner or entity authorized by + * the copyright owner that is granting the License. + * + * "Legal Entity" shall mean the union of the acting entity and all + * other entities that control, are controlled by, or are under common + * control with that entity. For the purposes of this definition, + * "control" means (i) the power, direct or indirect, to cause the + * direction or management of such entity, whether by contract or + * otherwise, or (ii) ownership of fifty percent (50%) or more of the + * outstanding shares, or (iii) beneficial ownership of such entity. + * + * "You" (or "Your") shall mean an individual or Legal Entity + * exercising permissions granted by this License. + * + * "Source" form shall mean the preferred form for making modifications, + * including but not limited to software source code, documentation + * source, and configuration files. + * + * "Object" form shall mean any form resulting from mechanical + * transformation or translation of a Source form, including but + * not limited to compiled object code, generated documentation, + * and conversions to other media types. + * + * "Work" shall mean the work of authorship, whether in Source or + * Object form, made available under the License, as indicated by a + * copyright notice that is included in or attached to the work + * (an example is provided in the Appendix below). + * + * "Derivative Works" shall mean any work, whether in Source or Object + * form, that is based on (or derived from) the Work and for which the + * editorial revisions, annotations, elaborations, or other modifications + * represent, as a whole, an original work of authorship. For the purposes + * of this License, Derivative Works shall not include works that remain + * separable from, or merely link (or bind by name) to the interfaces of, + * the Work and Derivative Works thereof. + * + * "Contribution" shall mean any work of authorship, including + * the original version of the Work and any modifications or additions + * to that Work or Derivative Works thereof, that is intentionally + * submitted to Licensor for inclusion in the Work by the copyright owner + * or by an individual or Legal Entity authorized to submit on behalf of + * the copyright owner. For the purposes of this definition, "submitted" + * means any form of electronic, verbal, or written communication sent + * to the Licensor or its representatives, including but not limited to + * communication on electronic mailing lists, source code control systems, + * and issue tracking systems that are managed by, or on behalf of, the + * Licensor for the purpose of discussing and improving the Work, but + * excluding communication that is conspicuously marked or otherwise + * designated in writing by the copyright owner as "Not a Contribution." + * + * "Contributor" shall mean Licensor and any individual or Legal Entity + * on behalf of whom a Contribution has been received by Licensor and + * subsequently incorporated within the Work. + * + * 2. Grant of Copyright License. Subject to the terms and conditions of + * this License, each Contributor hereby grants to You a perpetual, + * worldwide, non-exclusive, no-charge, royalty-free, irrevocable + * copyright license to reproduce, prepare Derivative Works of, + * publicly display, publicly perform, sublicense, and distribute the + * Work and such Derivative Works in Source or Object form. + * + * 3. Grant of Patent License. Subject to the terms and conditions of + * this License, each Contributor hereby grants to You a perpetual, + * worldwide, non-exclusive, no-charge, royalty-free, irrevocable + * (except as stated in this section) patent license to make, have made, + * use, offer to sell, sell, import, and otherwise transfer the Work, + * where such license applies only to those patent claims licensable + * by such Contributor that are necessarily infringed by their + * Contribution(s) alone or by combination of their Contribution(s) + * with the Work to which such Contribution(s) was submitted. If You + * institute patent litigation against any entity (including a + * cross-claim or counterclaim in a lawsuit) alleging that the Work + * or a Contribution incorporated within the Work constitutes direct + * or contributory patent infringement, then any patent licenses + * granted to You under this License for that Work shall terminate + * as of the date such litigation is filed. + * + * 4. Redistribution. You may reproduce and distribute copies of the + * Work or Derivative Works thereof in any medium, with or without + * modifications, and in Source or Object form, provided that You + * meet the following conditions: + * + * (a) You must give any other recipients of the Work or + * Derivative Works a copy of this License; and + * + * (b) You must cause any modified files to carry prominent notices + * stating that You changed the files; and + * + * (c) You must retain, in the Source form of any Derivative Works + * that You distribute, all copyright, patent, trademark, and + * attribution notices from the Source form of the Work, + * excluding those notices that do not pertain to any part of + * the Derivative Works; and + * + * (d) If the Work includes a "NOTICE" text file as part of its + * distribution, then any Derivative Works that You distribute must + * include a readable copy of the attribution notices contained + * within such NOTICE file, excluding those notices that do not + * pertain to any part of the Derivative Works, in at least one + * of the following places: within a NOTICE text file distributed + * as part of the Derivative Works; within the Source form or + * documentation, if provided along with the Derivative Works; or, + * within a display generated by the Derivative Works, if and + * wherever such third-party notices normally appear. The contents + * of the NOTICE file are for informational purposes only and + * do not modify the License. You may add Your own attribution + * notices within Derivative Works that You distribute, alongside + * or as an addendum to the NOTICE text from the Work, provided + * that such additional attribution notices cannot be construed + * as modifying the License. + * + * You may add Your own copyright statement to Your modifications and + * may provide additional or different license terms and conditions + * for use, reproduction, or distribution of Your modifications, or + * for any such Derivative Works as a whole, provided Your use, + * reproduction, and distribution of the Work otherwise complies with + * the conditions stated in this License. + * + * 5. Submission of Contributions. Unless You explicitly state otherwise, + * any Contribution intentionally submitted for inclusion in the Work + * by You to the Licensor shall be under the terms and conditions of + * this License, without any additional terms or conditions. + * Notwithstanding the above, nothing herein shall supersede or modify + * the terms of any separate license agreement you may have executed + * with Licensor regarding such Contributions. + * + * 6. Trademarks. This License does not grant permission to use the trade + * names, trademarks, service marks, or product names of the Licensor, + * except as required for reasonable and customary use in describing the + * origin of the Work and reproducing the content of the NOTICE file. + * + * 7. Disclaimer of Warranty. Unless required by applicable law or + * agreed to in writing, Licensor provides the Work (and each + * Contributor provides its Contributions) on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied, including, without limitation, any warranties or conditions + * of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + * PARTICULAR PURPOSE. You are solely responsible for determining the + * appropriateness of using or redistributing the Work and assume any + * risks associated with Your exercise of permissions under this License. + * + * 8. Limitation of Liability. In no event and under no legal theory, + * whether in tort (including negligence), contract, or otherwise, + * unless required by applicable law (such as deliberate and grossly + * negligent acts) or agreed to in writing, shall any Contributor be + * liable to You for damages, including any direct, indirect, special, + * incidental, or consequential damages of any character arising as a + * result of this License or out of the use or inability to use the + * Work (including but not limited to damages for loss of goodwill, + * work stoppage, computer failure or malfunction, or any and all + * other commercial damages or losses), even if such Contributor + * has been advised of the possibility of such damages. + * + * 9. Accepting Warranty or Additional Liability. While redistributing + * the Work or Derivative Works thereof, You may choose to offer, + * and charge a fee for, acceptance of support, warranty, indemnity, + * or other liability obligations and/or rights consistent with this + * License. However, in accepting such obligations, You may act only + * on Your own behalf and on Your sole responsibility, not on behalf + * of any other Contributor, and only if You agree to indemnify, + * defend, and hold each Contributor harmless for any liability + * incurred by, or claims asserted against, such Contributor by reason + * of your accepting any such warranty or additional liability. + * + * END OF TERMS AND CONDITIONS + * + * APPENDIX: How to apply the Apache License to your work. + * + * To apply the Apache License to your work, attach the following + * boilerplate notice, with the fields enclosed by brackets "[]" + * replaced with your own identifying information. (Don't include + * the brackets!) The text should be enclosed in the appropriate + * comment syntax for the file format. We also recommend that a + * file or class name and description of purpose be included on the + * same "printed page" as the copyright notice for easier + * identification within third-party archives. + * + * Copyright [yyyy] [name of copyright owner] + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ diff --git a/ch10/src/shared/docs/README b/ch10/src/shared/docs/README new file mode 100644 index 0000000..f629ac0 --- /dev/null +++ b/ch10/src/shared/docs/README @@ -0,0 +1,4 @@ +Each chapter's build file adds to the previous chapter's. + +Therefore, by Chapter 12, the build file contains all the targets and tasks +from the whole book. \ No newline at end of file diff --git a/ch10/src/shared/docs/index.html b/ch10/src/shared/docs/index.html new file mode 100644 index 0000000..dd2219c --- /dev/null +++ b/ch10/src/shared/docs/index.html @@ -0,0 +1,19 @@ + + + + Welcome to the Plant Application + + + + + + + + +
+ The stand-alone application
+ The web application
+

This is the Plant Application.

+ + + diff --git a/ch10/src/shared/java/org/mwrm/plants/Constants.java b/ch10/src/shared/java/org/mwrm/plants/Constants.java new file mode 100644 index 0000000..74b6e93 --- /dev/null +++ b/ch10/src/shared/java/org/mwrm/plants/Constants.java @@ -0,0 +1,47 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +/** + * The Constants class contains four constants + * that represent sort options. + * + */ + +public class Constants { + + /** Use to sort the plants by their botanical name. */ + public static final int SORT_BY_NAME = 1; + + /** Use to sort the plants by their common name. */ + public static final int SORT_BY_COMMON_NAME = 2; + + /** Use to sort the plants by their family name. */ + public static final int SORT_BY_FAMILY = 3; + + /** + * Use to sort the plants by their botanical name + * and exclude those plants that do not begin with the chosen letter. + */ + public static final int SORT_BY_CHOSEN_LETTER = 4; + + /** + * A simple constructor. + */ + public Constants() { } + +} diff --git a/ch10/src/shared/java/org/mwrm/plants/PropertiesLoader.java b/ch10/src/shared/java/org/mwrm/plants/PropertiesLoader.java new file mode 100644 index 0000000..10d07f3 --- /dev/null +++ b/ch10/src/shared/java/org/mwrm/plants/PropertiesLoader.java @@ -0,0 +1,53 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +import java.util.Properties; + +import java.io.IOException; + +/** + * The PropertiesLoader class loads properties + * from the database.properties file and passes them + * to whichever class wants to use them. This centralises the name + * of the properties file so the entire application can use it. + */ + +public class PropertiesLoader { + + /** A simple constructor. */ + public PropertiesLoader() { } + + /** + * Loads the properties for whichever class needs them. + * + * @return A Java properties file + */ + public final Properties loadProperties() { + + // Read properties file. + Properties properties = new Properties(); + try { + properties.load(this.getClass().getClassLoader() + .getResourceAsStream("database.properties")); + } catch (IOException e) { + System.out.println("Error: " + e.getMessage()); + } + + return properties; + } +} diff --git a/ch10/src/shared/java/org/mwrm/plants/SelectData.java b/ch10/src/shared/java/org/mwrm/plants/SelectData.java new file mode 100644 index 0000000..5a0ad89 --- /dev/null +++ b/ch10/src/shared/java/org/mwrm/plants/SelectData.java @@ -0,0 +1,156 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.Statement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; + +import java.util.HashMap; +import java.util.Vector; +import java.util.Properties; + +/** + *

The SelectData class establishes a connection + * with a database and executes a query, as selected by the client.

+ * + *

It gets the database driver name and the URL + * from the database.properties file. + * When the results come back from the database, + * this class places them as HashMap records + * in a Vector. It then passes this Vector + * back to the calling client.

+ * + *

The SQL strings are:

+ * + *
    + *
  • Constants.SORT_BY_NAME (the default): + * SELECT * FROM plants ORDER BY name
  • + *
  • Constants.SORT_BY_COMMON_NAME: + * SELECT * FROM plants ORDER BY common_name
  • + *
  • Constants.SORT_BY_FAMILY: + * SELECT * FROM plants ORDER BY family, name
  • + *
  • Constants.SORT_BY_CHOSEN_LETTER: + * SELECT * FROM plants WHERE name REGEXP '^X' + * where X is a letter supplied by the client
  • + *
+ */ + +public final class SelectData { + + /** + *

The default constructor.

+ */ + private SelectData() { } + + /** + * Get the data from the database. + * @param choice The criteria for sorting the results. + * This choice is held in the Constants class. + * @param letter The letter to use when limiting the search, + * should that option be chosen. + * @return Vector + * @throws ClassNotFoundException If the database driver is not found + * @throws SQLException If there's a problem with database operations + */ + public static Vector getData(final int choice, final String letter) + throws ClassNotFoundException, SQLException { + + // Read properties file + PropertiesLoader loader = new PropertiesLoader(); + Properties properties = loader.loadProperties(); + + // First load the MySQL JDBC driver + Class.forName(properties.getProperty("driver.name")); + + // The datasource + String url = properties.getProperty("database.root") + + properties.getProperty("database.name"); + + // Open the connection + Connection con = DriverManager.getConnection(url, "antBook", "antB00k"); + + Statement stmt = con.createStatement(); + + String select = getSelectString(choice, letter); + + // Now we get the data + ResultSet rs = stmt.executeQuery(select); + + // We'll need the metadata when we come to populate the session object + ResultSetMetaData rsmd = rs.getMetaData(); + int numberOfColumns = rsmd.getColumnCount(); + + Vector results = new Vector(); + + while (rs.next()) { + // We need a fresh entry every time + HashMap record = new HashMap(numberOfColumns); + + String columnName = ""; + + // For each column in the table, + // we want to add an entry to the HashMap + // with the same key as the column name + for (int i = 1; i <= numberOfColumns; i++) { + columnName = rsmd.getColumnName(i); + record.put(columnName, rs.getString(columnName)); + } + results.add(record); + } + + // Close the Statement and the Connection + stmt.close(); + con.close(); + + return results; + } + + /** + *

Returns the appropriate SQL string for the choice.

+ * @param choice The user's choice of search criteria. + * @param letter The letter to use when modifying the search. + * @return String + */ + private static String + getSelectString(final int choice, final String letter) { + + // This is the default SELECT statement if no arguments are specified + String selectString = "SELECT * FROM plants ORDER BY name"; + + // Check the type of argument + if (choice == Constants.SORT_BY_COMMON_NAME) { + // Order the results by common name + selectString = "SELECT * FROM plants ORDER BY common_name"; + + } else if (choice == Constants.SORT_BY_FAMILY) { + // Order the results by family, then botanical name + selectString = "SELECT * FROM plants ORDER BY family, name"; + + } else if (choice == Constants.SORT_BY_CHOSEN_LETTER) { + // The search will only return those plants whose botanical name + // begins with the specifed letter. + selectString = "SELECT * FROM plants WHERE name REGEXP '^" + + letter + "'"; + } + + return selectString; + } +} diff --git a/ch10/src/shared/java/org/mwrm/plants/package.html b/ch10/src/shared/java/org/mwrm/plants/package.html new file mode 100644 index 0000000..b64e7c3 --- /dev/null +++ b/ch10/src/shared/java/org/mwrm/plants/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants Package + + +

Utility classes for the plant application.

+ + \ No newline at end of file diff --git a/ch10/src/stand-alone/docs/index.html b/ch10/src/stand-alone/docs/index.html new file mode 100644 index 0000000..f615152 --- /dev/null +++ b/ch10/src/stand-alone/docs/index.html @@ -0,0 +1,19 @@ + + + + Welcome to the Plant Application + + + + + + + + +
+ The stand-alone application
+ The web application
+

This is the stand-alone application.

+ + + \ No newline at end of file diff --git a/ch10/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java b/ch10/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java new file mode 100644 index 0000000..bca1073 --- /dev/null +++ b/ch10/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java @@ -0,0 +1,154 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants.client; + +import java.sql.SQLException; + +import java.util.HashMap; +import java.util.Vector; +import java.util.Enumeration; + +import org.mwrm.plants.SelectData; +import org.mwrm.plants.Constants; + +/** + *

The PlantClient class is a command-line client + * for the plant application.

+ *

Usage:

+ *
    + *
  • -c Order by common name
  • + *
  • -f Order by family
  • + *
  • -n Order by botanical name (default)
  • + *
  • -n [letter] Order by botanical name + * and limit the search to plants beginning with the specified letter
  • + *
+ */ + +public final class PlantClient { + + /** + *

A simple constructor.

+ */ + private PlantClient() { } + + /** + * Checks the arguments, + * then uses the org.mwrm.plants.SelectData + * class to get results from the database. + * Once it has the results, it displays them to standard out. + * @param args The command-line arguments. + * @throws ClassNotFoundException If the database driver is not found + * @throws SQLException If there is a problem with the database + */ + public static void main(final String[] args) + throws ClassNotFoundException, SQLException { + + // The default choice + int choice = Constants.SORT_BY_NAME; + + // The user may want to select by a certain letter + String letter = ""; + + // Check that an argument has been provided + if (args.length > 0) { + // Check the type of argument + if (args[0].equals("-c") || args[0].equals("")) { + // Cannot be used with an argument just now, + // though Ant may pass an empty string + if (args.length > 1 && !args[1].equals("")) { + usage(); + } + // Order the results by common name + choice = Constants.SORT_BY_COMMON_NAME; + + } else if (args[0].equals("-f")) { + // Cannot be used with an argument just now, + // though Ant may pass an empty string + if (args.length > 1 && !args[1].equals("")) { + usage(); + } + // Order the results by family, then botanical name + choice = Constants.SORT_BY_FAMILY; + + } else if (args[0].equals("-n")) { + // Order the results by botanical name + // This is the default if no arguments are specified + + // The user can provide another argument. + // The search will only return those plants whose botanical name + // begins with the specifed letter. + if (args.length > 1 && !args[1].equals("")) { + choice = Constants.SORT_BY_CHOSEN_LETTER; + letter = args[1]; + } + } else { + // Usage information + usage(); + } + } + + // Obtain the results. This is a Vector of HashMaps + Vector results = SelectData.getData(choice, letter); + + // The top of the results display + System.out.println("\n-----------------------------"); + + // If there is no data in the results, tell the user + if (results.isEmpty()) { + System.out.println("No results found."); + System.out.println("-----------------------------"); + } else { + + // Each record in the database is a HashMap + HashMap record = new HashMap(); + + // Iterate over the results + for (Enumeration enum = results.elements(); + enum.hasMoreElements();) { + + record = (HashMap) enum.nextElement(); + + // The cultivar name is optional + String cultivar = ""; + + if (!(record.get("cultivar_name") == null)) { + cultivar = " '" + record.get("cultivar_name") + "'"; + } + + System.out.println("Name: " + record.get("name") + cultivar); + System.out.println("Common name: " + record.get("common_name")); + System.out.println("Family: " + record.get("family")); + System.out.println("Description: " + record.get("description")); + System.out.println("-----------------------------"); + } + } + } + + /** + *

Print the usage information.

+ */ + private static void usage() { + System.out.println("\nUsage: \n"); + System.out.println("-c \t\t Order by common name"); + System.out.println("-f \t\t Order by family"); + System.out.println("-n \t\t Order by botanical name (default)"); + System.out.println("-n [letter] \t Order by botanical name" + + " and limit the search to plants "); + System.out.println("\t\t beginning with the specified letter"); + System.exit(0); + } +} diff --git a/ch10/src/stand-alone/java/org/mwrm/plants/client/package.html b/ch10/src/stand-alone/java/org/mwrm/plants/client/package.html new file mode 100644 index 0000000..9148475 --- /dev/null +++ b/ch10/src/stand-alone/java/org/mwrm/plants/client/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants.client Package + + +

Contains the command-line client for the plant application.

+ + \ No newline at end of file diff --git a/ch10/src/web/conf/antBook.xml b/ch10/src/web/conf/antBook.xml new file mode 100644 index 0000000..9746019 --- /dev/null +++ b/ch10/src/web/conf/antBook.xml @@ -0,0 +1,3 @@ + + diff --git a/ch10/src/web/conf/plant.tld b/ch10/src/web/conf/plant.tld new file mode 100644 index 0000000..0066066 --- /dev/null +++ b/ch10/src/web/conf/plant.tld @@ -0,0 +1,32 @@ + + + + + 1.0 + 2.0 + plant + /plant-taglib + + A simple tab library for the plant application + + + + + Displays a character when given an integer + + letters + org.mwrm.plants.tags.LettersTag + false + none + + letter + true + true + char + + + + \ No newline at end of file diff --git a/ch10/src/web/conf/web.xml b/ch10/src/web/conf/web.xml new file mode 100644 index 0000000..c60d60e --- /dev/null +++ b/ch10/src/web/conf/web.xml @@ -0,0 +1,66 @@ + + + + + A plant application. + + + + resultsPerPage + 5 + + This value sets how many results will be shown per results page. + + + + + + + Resource reference to a factory for java.sql.Connection + instances that may be used for talking to a particular + database that is configured in the plantBook.xml file. + + + jdbc/PlantDB + + + javax.sql.DataSource + + + SERVLET + + + + + /plant-taglib + /WEB-INF/plant.tld + + + + plantServlet + + org.mwrm.plants.servlets.PlantServlet + + + + + Print debug information to the console + + + debug + + + true + + + + + + plantServlet + /plants/listPlants.jsp + + + \ No newline at end of file diff --git a/ch10/src/web/docs/index.html b/ch10/src/web/docs/index.html new file mode 100644 index 0000000..606c2b3 --- /dev/null +++ b/ch10/src/web/docs/index.html @@ -0,0 +1,19 @@ + + + + Welcome to the Plant Application + + + + + + + + +
+ The stand-alone application
+ The web application
+

This is the web application.

+ + + \ No newline at end of file diff --git a/ch10/src/web/images/banner_under.jpg b/ch10/src/web/images/banner_under.jpg new file mode 100644 index 0000000000000000000000000000000000000000..131c6a10b4fce0a65d11ee54cba46b10772eefbc GIT binary patch literal 21943 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 literal 0 HcmV?d00001 diff --git a/ch10/src/web/images/cyc_cou.jpg b/ch10/src/web/images/cyc_cou.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed0556c8da702a9316b72a885aef6fdcd8bc7a12 GIT binary patch literal 15502 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 literal 0 HcmV?d00001 diff --git a/ch10/src/web/images/no_image.jpg b/ch10/src/web/images/no_image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e86c254e4a1b43f14f582bb31a3f6280d0187a95 GIT binary patch literal 8646 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 w6Q>LRJ1zbbKmA?!FZi9NzW@LL literal 0 HcmV?d00001 diff --git a/ch10/src/web/images/tul_tur.jpg b/ch10/src/web/images/tul_tur.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fcc77b230ba510c80c7c3125e49f9e1b2b7f4303 GIT binary patch literal 21047 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 V1RgxR+tNU<`HJbJtc>re|Jei&5nTWP literal 0 HcmV?d00001 diff --git a/ch10/src/web/java/org/mwrm/plants/servlets/PlantServlet.java b/ch10/src/web/java/org/mwrm/plants/servlets/PlantServlet.java new file mode 100644 index 0000000..bc9b9a8 --- /dev/null +++ b/ch10/src/web/java/org/mwrm/plants/servlets/PlantServlet.java @@ -0,0 +1,209 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants.servlets; + +import java.sql.SQLException; + +import java.util.HashMap; +import java.util.Vector; +import java.util.Enumeration; + +import java.io.IOException; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import javax.servlet.ServletException; + +import org.mwrm.plants.SelectData; +import org.mwrm.plants.Constants; + + /** + *

The servlet client for the plant application.

+ * + *

Extracts the show parameter from the request + * to determine what the user wants to see. + * Valid values for show are:

+ * + *
    + *
  • common: Order by common name
  • + *
  • family: Order by family
  • + *
  • name: Order by botanical name (default)
  • + *
+ * + *

If the client sends a letter parameter, + * then the search is limited to records that begin with that letter.

+ */ +public class PlantServlet extends HttpServlet { + + /** + *

Extracts the show parameter from the request + * to determine what the user wants to see. + * Valid values for show are:

+ * + *
    + *
  • common: Order by common name
  • + *
  • family: Order by family
  • + *
  • name: Order by botanical name (default)
  • + *
+ * + *

If the client sends a letter parameter, + * then the search is limited to records that begin with that letter.

+ * + *

Once the choice has been extracted, + * this servlet uses the org.mwrm.plants.SelectData class + * to get results from the database. Once it has the results, + * it places them in the session under the name "results" + * and forwards the request to /plants/displayPage.jsp, + * which displays the first page of the results.

+ * + *

If the debug servlet initialization parameter + * is set to true the results + * will also be sent to standard out.

+ * + * @param request The request object. + * @param response The response object. + * + * @throws ServletException + * If there is a problem when processing the request + * @throws IOException If there is a problem writing the response + */ + public final void doGet(final HttpServletRequest request, + final HttpServletResponse response) + throws ServletException, IOException { + // The default choice + int choice = Constants.SORT_BY_NAME; + + // Check the show parameter + // to see if the user wants to select anything else + if (request.getParameter("show").equals("common")) { + choice = Constants.SORT_BY_COMMON_NAME; + } else if (request.getParameter("show").equals("family")) { + choice = Constants.SORT_BY_FAMILY; + } + + // The results from the database + Vector results = null; + // The letter that the user wants to sort by + String letter = null; + + // If the letter parameter is set, then make the appropriate choice + if (request.getParameter("letter") != null) { + letter = request.getParameter("letter").toLowerCase(); + choice = Constants.SORT_BY_CHOSEN_LETTER; + } + + // Obtain the results. This is a Vector of HashMaps + try { + results = SelectData.getData(choice, letter); + } catch (ClassNotFoundException cnfe) { + throw new ServletException(cnfe.getMessage()); + } catch (SQLException sqle) { + throw new ServletException(sqle.getMessage()); + } + + // The debug servlet initialization parameter sets output options + if (getServletConfig().getInitParameter("debug").equals("true")) { + // The top of the results display + System.out.println("\n-----------------------------"); + + // If there is no data in the results, tell the user + if (results.isEmpty()) { + System.out.println("No results found."); + System.out.println("-----------------------------"); + } else { + + // Each record in the database is a HashMap + HashMap record = new HashMap(); + + // Iterate over the results + for (Enumeration enum = results.elements(); + enum.hasMoreElements();) { + + // The current record + record = (HashMap) enum.nextElement(); + + // The cultivar name is optional + String cultivar = ""; + + // If the cultivar_name column is present, + // add it to the output string + if (!(record.get("cultivar_name") == null)) { + cultivar = " '" + record.get("cultivar_name") + "'"; + } + + // Print them to standard out + System.out.println("Name: " + + record.get("name") + cultivar); + System.out.println("Common name: " + + record.get("common_name")); + System.out.println("Family: " + + record.get("family")); + System.out.println("Description: " + + record.get("description")); + System.out.println("Image: " + + record.get("image")); + System.out.println("-----------------------------"); + } + } + } + + // Now store the results in the session + HttpSession session = request.getSession(true); + + // If the results are empty, + // then store a flag to tell the application as such, + // then remove the results object so the pages don't try to work with it + if (results.isEmpty()) { + session.setAttribute("noResults", "true"); + session.removeAttribute("results"); + + // There are some results, + // so place them in the session and remove the noResults flag, + // so that the application knows there are results + } else { + session.setAttribute("results", results); + session.removeAttribute("noResults"); + + // The pages will need to know the number of results + session.setAttribute("resultsSize", "" + results.size() + ""); + } + + // Forward the request to the display page + getServletContext() + .getRequestDispatcher("/plants/displayResults.jsp?start=0") + .forward(request, response); + } + + /** + * Sends any POST requests to the doGet method. + * + * @param request The request object. + * @param response The response object. + * + * @throws ServletException + * If there is a problem when processing the request + * @throws IOException If there is a problem writing the response + */ + public final void doPost(final HttpServletRequest request, + final HttpServletResponse response) + throws ServletException, IOException { + doGet(request, response); + } +} diff --git a/ch10/src/web/java/org/mwrm/plants/servlets/package.html b/ch10/src/web/java/org/mwrm/plants/servlets/package.html new file mode 100644 index 0000000..d9ac8dd --- /dev/null +++ b/ch10/src/web/java/org/mwrm/plants/servlets/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants.servlets Package + + +

Contains the servlet for the plant application.

+ + \ No newline at end of file diff --git a/ch10/src/web/java/org/mwrm/plants/tags/LettersTag.java b/ch10/src/web/java/org/mwrm/plants/tags/LettersTag.java new file mode 100644 index 0000000..6911f3f --- /dev/null +++ b/ch10/src/web/java/org/mwrm/plants/tags/LettersTag.java @@ -0,0 +1,63 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants.tags; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.JspWriter; +import javax.servlet.jsp.tagext.SimpleTagSupport; + +import java.io.IOException; + + /** + *

Converts an integer into a character. + * The letter attribute takes the integer, + * which is converted to a char by the time the tag gets it. + * The tag then writes the char to the client.

+ */ +public class LettersTag extends SimpleTagSupport { + + /** + * The character to display. + */ + private char letter; + + /** + *

Processes the tag when it is encountered on the page.

+ * @throws JspException + * If there is a problem processing the tag + * @throws IOException + * If there is a problem writing to the client + */ + public final void doTag() throws JspException, IOException { + + // The page that the client will receive + JspWriter out = getJspContext().getOut(); + + // Write the letter to the client + out.print(letter); + } + + /** + * + *

The setter method for the letter attribute.

+ * + * @param aLetter The letter to display. + */ + public final void setLetter(final char aLetter) { + this.letter = aLetter; + } +} diff --git a/ch10/src/web/java/org/mwrm/plants/tags/package.html b/ch10/src/web/java/org/mwrm/plants/tags/package.html new file mode 100644 index 0000000..fcb8df4 --- /dev/null +++ b/ch10/src/web/java/org/mwrm/plants/tags/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants.tags Package + + +

Contains the custom tags for the plant application.

+ + \ No newline at end of file diff --git a/ch10/src/web/pages/footer.html b/ch10/src/web/pages/footer.html new file mode 100644 index 0000000..8511c9c --- /dev/null +++ b/ch10/src/web/pages/footer.html @@ -0,0 +1,3 @@ +
+ Bottom banner +
\ No newline at end of file diff --git a/ch10/src/web/pages/header.jsp b/ch10/src/web/pages/header.jsp new file mode 100644 index 0000000..135f4a5 --- /dev/null +++ b/ch10/src/web/pages/header.jsp @@ -0,0 +1,16 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> +<%@ taglib uri="/plant-taglib" prefix="tags" %> +
\ No newline at end of file diff --git a/ch10/src/web/pages/index.jsp b/ch10/src/web/pages/index.jsp new file mode 100644 index 0000000..2b9ae28 --- /dev/null +++ b/ch10/src/web/pages/index.jsp @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/ch10/src/web/pages/indexBody.jsp b/ch10/src/web/pages/indexBody.jsp new file mode 100644 index 0000000..6410604 --- /dev/null +++ b/ch10/src/web/pages/indexBody.jsp @@ -0,0 +1 @@ +

Welcome to the plant information application.

\ No newline at end of file diff --git a/ch10/src/web/pages/menu.jsp b/ch10/src/web/pages/menu.jsp new file mode 100644 index 0000000..135b8cc --- /dev/null +++ b/ch10/src/web/pages/menu.jsp @@ -0,0 +1,5 @@ +<%-- This page is common to the whole application --%> +<%@ taglib tagdir="/WEB-INF/tags" prefix="tags" %> +
+ +
\ No newline at end of file diff --git a/ch10/src/web/pages/plantStyle.css b/ch10/src/web/pages/plantStyle.css new file mode 100644 index 0000000..48b3129 --- /dev/null +++ b/ch10/src/web/pages/plantStyle.css @@ -0,0 +1,75 @@ +.menu-main { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: large; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.menu-sub { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: medium; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.footer { + color: #000000; + background-color: #FFFFFF; +} + +h1 { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: large; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.letters { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: medium; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.center { + text-align: center +} + +tr.template { + height: 500px +} + +td.template { + width: 200px +} + +tr.resultRow { + height: 250px +} + +p.left { + text-align: left +} + +p { + color: #000000; + background-color: #FFFFFF; + font-family: Arial, Verdana,Helvetica, Sans-Serif +} + +.italic { + color: #000000; + background-color: #FFFFFF; + font-family: Arial, Verdana,Helvetica, Sans-Serif; + font-style: italic +} + +.results { + color: #000000; + background-color: #FFFFFF; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} diff --git a/ch10/src/web/pages/plants/displayPlant.jsp b/ch10/src/web/pages/plants/displayPlant.jsp new file mode 100644 index 0000000..6e30cd6 --- /dev/null +++ b/ch10/src/web/pages/plants/displayPlant.jsp @@ -0,0 +1,15 @@ +<%-- JSP Directives --%> +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + + + + + + + + + + + + + diff --git a/ch10/src/web/pages/plants/displayPlantBody.jsp b/ch10/src/web/pages/plants/displayPlantBody.jsp new file mode 100644 index 0000000..9c37af4 --- /dev/null +++ b/ch10/src/web/pages/plants/displayPlantBody.jsp @@ -0,0 +1,31 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + + + + + + + + + + + + + + + + + +
+

+ Name:
+ Common name:
+ Family:
+ Description:
+

+
+
+ +<%-- We need to go back to where we came from --%> +Back \ No newline at end of file diff --git a/ch10/src/web/pages/plants/displayResults.jsp b/ch10/src/web/pages/plants/displayResults.jsp new file mode 100644 index 0000000..6c7c31c --- /dev/null +++ b/ch10/src/web/pages/plants/displayResults.jsp @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/ch10/src/web/pages/plants/displayResultsBody.jsp b/ch10/src/web/pages/plants/displayResultsBody.jsp new file mode 100644 index 0000000..0c09a66 --- /dev/null +++ b/ch10/src/web/pages/plants/displayResultsBody.jsp @@ -0,0 +1,63 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> + + +

Search Results

+ + + +

Sorry, there were no results for the search. Please try again.

+
+ + +
+

Number of results:

+ + + + + + + +
+ + "> +
+ +
+
+
+ + + + + + + ">First + + + + + + + ">Back + + + + + + + ">Next + + + + + + + ">Last + +
+
+ + \ No newline at end of file diff --git a/ch10/src/web/pages/plants/index.jsp b/ch10/src/web/pages/plants/index.jsp new file mode 100644 index 0000000..3c51457 --- /dev/null +++ b/ch10/src/web/pages/plants/index.jsp @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/ch10/src/web/pages/plants/searchForm.jsp b/ch10/src/web/pages/plants/searchForm.jsp new file mode 100644 index 0000000..0043e00 --- /dev/null +++ b/ch10/src/web/pages/plants/searchForm.jsp @@ -0,0 +1 @@ +

Click on a letter above or a link on the left.

diff --git a/ch10/src/web/pages/template.jsp b/ch10/src/web/pages/template.jsp new file mode 100644 index 0000000..a1fff41 --- /dev/null +++ b/ch10/src/web/pages/template.jsp @@ -0,0 +1,47 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + + + + + + + <c:out value="${param.title}" default="Plants"/> + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + +
+
+ + + \ No newline at end of file diff --git a/ch10/src/web/tags/simple.tag b/ch10/src/web/tags/simple.tag new file mode 100644 index 0000000..8683c7f --- /dev/null +++ b/ch10/src/web/tags/simple.tag @@ -0,0 +1,12 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + +

+ Home
+ Plants
+ + +  By common name
+  By botanical name
+  By family
+
+

\ No newline at end of file diff --git a/ch10/test/org/mwrm/plants/PlantWebTest.java b/ch10/test/org/mwrm/plants/PlantWebTest.java new file mode 100644 index 0000000..f1c5093 --- /dev/null +++ b/ch10/test/org/mwrm/plants/PlantWebTest.java @@ -0,0 +1,110 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +import java.io.IOException; +import java.net.MalformedURLException; +import org.xml.sax.SAXException; + +import junit.framework.TestCase; + +import com.meterware.httpunit.WebConversation; +import com.meterware.httpunit.WebResponse; + +/** + *

Tests the plant servlet. + * It checks that the web application is running + * and then checks the session is emptied + * if the there are no results in the query.

+ */ +public class PlantWebTest extends TestCase { + + /** The URL of the server. */ + private static final String SERVER_URL = "http://localhost:8080"; + + /** The web application's name. */ + private static final String WEB_APP = "/antBook"; + + /** The response code we're looking for. */ + private static final int RESPONSE_CODE = 200; + + /** + *

The constructor, + * which simply calls super(name).

+ * @param name The name of the test + */ + public PlantWebTest(final String name) { + super(name); + } + + /** + *

We want to make sure that the web application is running.

+ * @throws MalformedURLException + * If the URL of the web server is not correct + * @throws SAXException + * If the response can't be processed properly + */ + public final void testIsRunning() + throws MalformedURLException, SAXException { + // Create a WebConversation object + WebConversation wc = new WebConversation(); + try { + // Send a request to the web application's root + WebResponse resp = wc.getResponse(SERVER_URL + WEB_APP); + + // If there is a 200 return code, then it is available + assertEquals("Web application not available at " + + SERVER_URL + WEB_APP, + RESPONSE_CODE, resp.getResponseCode()); + } catch (IOException ioe) { + // We can't find the server, so we fail the test + fail("Server not available"); + } + } + + /** + *

The application should detect that no results have been obtained.

+ * @throws MalformedURLException + * If the URL of the web server is not correct + * @throws SAXException + * If the response can't be processed properly + */ + public final void testSession() + throws MalformedURLException, SAXException { + // Create a WebConversation object + WebConversation wc = new WebConversation(); + + try { + // First send a request that will not produce any results + WebResponse resp = + wc.getResponse(SERVER_URL + WEB_APP + + "/plants/listPlants.jsp?show=name&letter=X"); + // Check that this is the case + assertTrue("Session not cancelled after empty results", + (resp.getText().indexOf("Sorry") > -1)); + + // Now go to the index page, + // where there should not be an error message + resp = wc.getResponse(SERVER_URL + WEB_APP + "/plants/"); + assertTrue("Session not cancelled after empty results", + !(resp.getText().indexOf("Sorry") > -1)); + } catch (IOException ioe) { + // We can't find the server, so we fail the test + fail("Server not available"); + } + } +} diff --git a/ch10/test/org/mwrm/plants/package.html b/ch10/test/org/mwrm/plants/package.html new file mode 100644 index 0000000..a9c3f06 --- /dev/null +++ b/ch10/test/org/mwrm/plants/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants + + +

Contains the test classes for the plant application.

+ + diff --git a/ch11/ant/org/mwrm/ant/listeners/BuildEventListener.java b/ch11/ant/org/mwrm/ant/listeners/BuildEventListener.java new file mode 100644 index 0000000..15f3dd1 --- /dev/null +++ b/ch11/ant/org/mwrm/ant/listeners/BuildEventListener.java @@ -0,0 +1,116 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.mwrm.ant.listeners; + +import org.apache.tools.ant.Project; +import org.apache.tools.ant.BuildListener; +import org.apache.tools.ant.BuildEvent; + +/** + *

A class that demonstrates some of the functionality + * of a custom listener.

+ */ +public class BuildEventListener implements BuildListener { + + /** + *

Signals that a build has started. This event + * is fired before any targets have started.

+ * + * @param start An event with any relevant extra information. + * Must not be null. + */ + public final void buildStarted(final BuildEvent start) { + start.getProject().log("buildStarted() called.", Project.MSG_ERR); + } + + /** + *

Signals that the last target has finished. This event + * will still be fired if an error occurred during the build.

+ * + * @param finish An event with any relevant extra information. + * Must not be null. + * + * @see BuildEvent#getException() + */ + public final void buildFinished(final BuildEvent finish) { + finish.getProject().log("buildFinished() called.", Project.MSG_ERR); + } + + /** + *

Signals that a target is starting.

+ * + * @param start An event with any relevant extra information. + * Must not be null. + * + * @see BuildEvent#getTarget() + */ + public final void targetStarted(final BuildEvent start) { + start.getProject().log("Target [" + start.getTarget().getName() + + "] started.", Project.MSG_ERR); + } + + /** + *

Signals that a target has finished. This event will + * still be fired if an error occurred during the build.

+ * + * @param finish An event with any relevant extra information. + * Must not be null. + * + * @see BuildEvent#getException() + */ + public final void targetFinished(final BuildEvent finish) { + finish.getProject().log("Target [" + finish.getTarget().getName() + + "] finished.", Project.MSG_ERR); + } + + /** + *

Signals that a task is starting.

+ * + * @param start An event with any relevant extra information. + * Must not be null. + * + * @see BuildEvent#getTask() + */ + public final void taskStarted(final BuildEvent start) { + start.getProject().log("Task [" + start.getTask().getTaskName() + + "] started.", Project.MSG_ERR); + } + + /** + *

Signals that a task has finished. This event will still + * be fired if an error occurred during the build.

+ * + * @param finish An event with any relevant extra information. + * Must not be null. + * + * @see BuildEvent#getException() + */ + public final void taskFinished(final BuildEvent finish) { + finish.getProject().log("Task [" + finish.getTask().getTaskName() + + "] finished.", Project.MSG_ERR); + } + + /**

When a message is sent to this logger, Ant calls this method.

+ * @param event An event with any relevant extra information. + * Must not be null. + * + * @see BuildEvent#getMessage() + * @see BuildEvent#getPriority() + */ + public void messageLogged(final BuildEvent event) { + // empty + } +} diff --git a/ch11/ant/org/mwrm/ant/listeners/package.html b/ch11/ant/org/mwrm/ant/listeners/package.html new file mode 100644 index 0000000..c12041d --- /dev/null +++ b/ch11/ant/org/mwrm/ant/listeners/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.ant.listeners Package + + +

A package that contains custom listeners.

+ + diff --git a/ch11/ant/org/mwrm/ant/loggers/BuildEventLogger.java b/ch11/ant/org/mwrm/ant/loggers/BuildEventLogger.java new file mode 100644 index 0000000..60eb52c --- /dev/null +++ b/ch11/ant/org/mwrm/ant/loggers/BuildEventLogger.java @@ -0,0 +1,195 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.mwrm.ant.loggers; + +import java.io.PrintStream; + +import org.apache.tools.ant.Project; +import org.apache.tools.ant.BuildLogger; +import org.apache.tools.ant.BuildEvent; + +/** + *

A class that demonstrates some of the functionality + * of a custom logger.

+ */ +public class BuildEventLogger implements BuildLogger { + + /** + * PrintStream to write non-error messages to. + */ + private PrintStream out; + + /** + * PrintStream to write error messages to. + */ + private PrintStream err; + + /** + * Sets whether to tailor output for Emacs, etc. + * The default is false. + */ + private boolean emacsMode = false; + + /** + * We'll set this logger to log only warnings. + */ + private int msgOutputLevel = Project.MSG_WARN; + + /** + *

Signals that a build has started. This event + * is fired before any targets have started.

+ * + * @param start An event with any relevant extra information. + * Must not be null. + */ + public final void buildStarted(final BuildEvent start) { + start.getProject().log("Message from buildStarted().", Project.MSG_ERR); + } + + /** + *

Signals that the last target has finished. This event + * will still be fired if an error occurred during the build.

+ * + * @param finish An event with any relevant extra information. + * Must not be null. + * + * @see BuildEvent#getException() + */ + public void buildFinished(final BuildEvent finish) { + // empty + } + + /** + *

Signals that a target is starting.

+ * + * @param start An event with any relevant extra information. + * Must not be null. + * + * @see BuildEvent#getTarget() + */ + public void targetStarted(final BuildEvent start) { + // empty + } + + /** + *

Signals that a target has finished. This event will + * still be fired if an error occurred during the build.

+ * + * @param finish An event with any relevant extra information. + * Must not be null. + * + * @see BuildEvent#getException() + */ + public void targetFinished(final BuildEvent finish) { + // empty + } + + /** + *

Signals that a task is starting.

+ * + * @param start An event with any relevant extra information. + * Must not be null. + * + * @see BuildEvent#getTask() + */ + public void taskStarted(final BuildEvent start) { + // empty + } + + /** + *

Signals that a task has finished. This event will still + * be fired if an error occurred during the build.

+ * + * @param finish An event with any relevant extra information. + * Must not be null. + * + * @see BuildEvent#getException() + */ + public void taskFinished(final BuildEvent finish) { + // empty + } + + /**

When a message is sent to this logger, Ant calls this method.

+ * @param event An event with any relevant extra information. + * Must not be null. + * + * @see BuildEvent#getMessage() + * @see BuildEvent#getPriority() + */ + public final void messageLogged(final BuildEvent event) { + /// We need to determine how important this message is + int priority = event.getPriority(); + + // If it's as important as our log level, we display it + if (priority <= msgOutputLevel) { + out.println("messageLogged: " + event.getMessage()); + } + } + + /** + *

Sets the output stream to which this logger is to send its output.

+ * + * @param output The output stream for the logger. + * Must not be null. + */ + public final void setOutputPrintStream(final PrintStream output) { + this.out = new PrintStream(output, true); + } + + /** + *

Sets the output stream to which this logger + * is to send error messages.

+ * + * @param errorStream The error stream for the logger. + * Must not be null. + */ + public final void setErrorPrintStream(final PrintStream errorStream) { + this.err = new PrintStream(errorStream, true); + } + + /** + *

Sets this logger to produce Emacs + * (and other editor) friendly output.

+ * + * @param mode true if output is to be unadorned so that + * Emacs and other editors can parse files names, etc. + */ + public final void setEmacsMode(final boolean mode) { + this.emacsMode = mode; + } + + /** + *

Sets the highest level of message this logger should respond to.

+ * + *

Only messages with a message level lower than or equal to the + * given level should be written to the log.

+ *

+ * Constants for the message levels are in the + * {@link Project Project} class. The order of the levels, from least + * to most verbose, is MSG_ERR, MSG_WARN, + * MSG_INFO, MSG_VERBOSE, + * MSG_DEBUG.

+ *

The default for this logger is + * {@link Project#MSG_WARN Project.MSG_WARN}.

+ * + * @param level the logging level for the logger. + */ + public void setMessageOutputLevel(final int level) { + // We will leave this empty to use the default level, + // which we set above + } + +} diff --git a/ch11/ant/org/mwrm/ant/loggers/package.html b/ch11/ant/org/mwrm/ant/loggers/package.html new file mode 100644 index 0000000..e30bac9 --- /dev/null +++ b/ch11/ant/org/mwrm/ant/loggers/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.ant.loggers Package + + +

A package that contains custom loggers.

+ + diff --git a/ch11/ant/org/mwrm/ant/tasks/ClassSetTask.java b/ch11/ant/org/mwrm/ant/tasks/ClassSetTask.java new file mode 100644 index 0000000..5afbdfd --- /dev/null +++ b/ch11/ant/org/mwrm/ant/tasks/ClassSetTask.java @@ -0,0 +1,60 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.mwrm.ant.tasks; + +import org.apache.tools.ant.Project; +import org.apache.tools.ant.Task; +import org.apache.tools.ant.BuildException; + +/** + *

The ClassSetTask class + * demonstrates how to use a Class argument + * in a custom class attribute.

+ * + */ + +public class ClassSetTask extends Task { + + /** The qualified class name. */ + private Class qualifiedName; + + /** + *

Runs the task and displays the qualified name of the class + * that is set as the setQualifiedName attribute.

+ * + */ + public final void execute() { + log("qualifiedName: " + qualifiedName, Project.MSG_INFO); + } + + /** + *

Sets the fully qualified name of the class.

+ ** @param qName The fully qualified name of a class + */ + public final void setQualifiedName(final Class qName) { + if (qName.getName().equals("java.lang.Integer") + || + qName.getName().equals("java.lang.String")) { + log(qName.getName() + " found.", Project.MSG_INFO); + } else { + String msg = "You can only specify java.lang.Integer " + + "or java.lang.String in qualifiedName."; + throw new BuildException(msg); + } + this.qualifiedName = qName; + } +} + diff --git a/ch11/ant/org/mwrm/ant/tasks/ExtendJavadocTask.java b/ch11/ant/org/mwrm/ant/tasks/ExtendJavadocTask.java new file mode 100644 index 0000000..e9c076c --- /dev/null +++ b/ch11/ant/org/mwrm/ant/tasks/ExtendJavadocTask.java @@ -0,0 +1,188 @@ +/* + * Extends org.apache.tools.ant.taskdefs.Javadoc + * and uses org.apache.tools.ant.taskdefs.UpToDate, + * which are Copyright 2000-2005 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.ant.tasks; + +import java.io.File; + +import java.util.Enumeration; +import java.util.StringTokenizer; +import java.util.Vector; + +import org.apache.tools.ant.Project; +import org.apache.tools.ant.BuildException; + +import org.apache.tools.ant.taskdefs.Javadoc; +import org.apache.tools.ant.taskdefs.UpToDate; + +import org.apache.tools.ant.types.FileSet; + +/** + *

The ExtendJavadocTask class + * extends the {@link org.apache.tools.ant.taskdefs.Javadoc Javadoc} task. + * It checks whether a set of source files are newer than a set of target files + * and if so, it generates Javadocs.

+ * + */ + +public class ExtendJavadocTask extends Javadoc { + + /** The attribute of the task element. */ + private File target; + + /** A set of file sets, + * each of which is provided by a nested file set. */ + private Vector targetFileSets = new Vector(); + + /** The internal uptodate task. */ + private UpToDate utd; + + /** + *

Creates a new instance of an internal + * <uptodate> task + * and adds it to the current project.

+ * @see UpToDate org.apache.tools.ant.taskdefs.UpToDate + */ + public final void init() { + // We need an instance of the task + utd = new UpToDate(); + // We need to add the task to this project + utd.setProject(this.getProject()); + } + + /** + *

Checks if Javadocs should be created + * and then calls super.execute() if so.

+ *

This method does usage checks on the task's attributes + * and its nested elements. + * It will throw a BuildException if there is a violation.

+ */ + public final void execute() { + // This is the usage information + + // We can't have a target attribute + // and nested targetfiles elements + if (target != null && targetFileSets.size() > 0) { + String msg = "You can't specify a targetfile attribute " + + "and elements."; + throw new BuildException(msg); + } + // We have to specify either a target attribute + // or at least one nested targetfiles elements + if (target == null && targetFileSets.size() == 0) { + String msg = "You must specify either a targetfile attribute " + + "or at least one element."; + throw new BuildException(msg); + } + + // If this is false, the files aren't up to date + // and we have to run the javadocs + boolean eval = false; + + // If we've got to this point, we know the usage must be correct. + // Let's check whether a single target attribute has been used. + + if (target != null) { + // Get the results of the check + eval = getResult(target); + } else { + // If a target attribute wasn't specified, + // at least one nested targetfiles element was. + + // We first get all the file sets represented by the nested elements + Enumeration e = targetFileSets.elements(); + + // And then iterate over them + while (e.hasMoreElements()) { + + // The next element is a file set, so we get its files + // in a semi-colon-separated list + String files = e.nextElement().toString(); + + // Next, we split the list into its file names + StringTokenizer st = new StringTokenizer(files, ";"); + + // And iterate over them to test each one + while (st.hasMoreTokens()) { + // We create a file + //from the current file name in the iteration + File tempTarget = new File(st.nextToken()); + + // Get the results of the check + eval = getResult(tempTarget); + + // One false result is enough to fail the whole file set + if (!eval) { + break; + } + } + // One false result is enough to fail the whole file set + if (!eval) { + break; + } + } + } + + // If the test failed, we want to generate Javadocs + if (!eval) { + super.execute(); + } else { + log("Skipping Javadoc creation. The files are up to date.", + Project.MSG_INFO); + } + } + + /**

Checks whether the files are up to date.

+ * @param file The file to evaluate + * @return boolean The result + */ + private boolean getResult(final File file) { + // Set the target property in the task + utd.setTargetFile(file); + // Evaluate the files + return utd.eval(); + } + + /** + *

The setter method for the target attribute.

+ * @param targetFile A file to check against + */ + public final void setTarget(final File targetFile) { + this.target = targetFile; + } + + /** + *

The setter method for the file set + * contained in the nested <srcfiles> element.

+ * @param fileset A file set of source files + */ + public final void addSrcfiles(final FileSet fileset) { + utd.addSrcfiles(fileset); + } + + /** + *

The setter method for the file sets + * contained in nested <targetfiles> elements.

+ * @param fileset A file set of target files + */ + public final void addTargetfiles(final FileSet fileset) { + targetFileSets.add(fileset); + } +} + diff --git a/ch11/ant/org/mwrm/ant/tasks/LifeCycleNestedTask.java b/ch11/ant/org/mwrm/ant/tasks/LifeCycleNestedTask.java new file mode 100644 index 0000000..bfd1215 --- /dev/null +++ b/ch11/ant/org/mwrm/ant/tasks/LifeCycleNestedTask.java @@ -0,0 +1,347 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.mwrm.ant.tasks; + +import java.util.Hashtable; +import java.util.Enumeration; +import java.util.Vector; + +import org.apache.tools.ant.Project; +import org.apache.tools.ant.Task; +import org.apache.tools.ant.BuildException; + +/** + *

At each stage in a task's life cycle, this class displays information + * to show the internal state of the task and its position with in the project. + * It takes a name attribute.

+ * + *

This class demonstrates how to nest elements within a custom task. + * Its nested element is called <name> + * and cannot be used in conjunction with a name attribute.

+ */ +public class LifeCycleNestedTask extends Task { + + /** The name attribute of this task. */ + private String name; + + /** The body text of this task. */ + private String text; + + /** The collection of name elements. */ + private Vector nameElements = new Vector(); + + /** + *

The constructor displays the state of the task + * as it is instantiated.

+ */ + public LifeCycleNestedTask() { + System.out.println("---------------"); + System.out.println("Constructor called"); + System.out.println("Value of name attribute: " + this.name); + System.out.println("Value of the body text: " + text); + System.out.println("Project: " + getProject()); + System.out.println("Location: " + getLocation()); + System.out.println("Target: " + getOwningTarget()); + System.out.println("---------------"); + } + + /** + *

Displays the state of the task at initialization.

+ * @see #logAll(String method) + */ + public final void init() { + logAll("init()"); + } + + /** + *

Displays the state of the task when Ant runs it. + * This method also runs some usage checks + * to ensure the task is being used properly.

+ */ + public final void execute() { + if (name != null && nameElements.size() > 0) { + String msg = "You can't specify a name attribute " + + "and elements."; + throw new BuildException(msg); + } + if (name == null && nameElements.size() == 0) { + String msg = "You must specify either a name attribute " + + "or at least one element."; + throw new BuildException(msg); + } + if (nameElements.size() > 0 && text != null) { + String msg = "You can't specify elements " + + "and body text."; + throw new BuildException(msg); + } + + logAll("execute()"); + + // If name is not set, we want to check nested elements + if (name == null) { + // Get the name elements + Enumeration e = nameElements.elements(); + + // And then iterate over them + while (e.hasMoreElements()) { + NameElement nameElement = (NameElement) e.nextElement(); + + // Usage check + if (nameElement.getName() == null) { + String msg = "You must specify a name attribute " + + "or body text for a nested element."; + throw new BuildException(msg); + } + log("Value of name element: " + nameElement.getName(), + Project.MSG_VERBOSE); + } + log("---------------", Project.MSG_VERBOSE); + } + } + + /** + *

Sets the name to display + * and shows the state of the task afterwards.

+ * @param aName The name to display + */ + public final void setName(final String aName) { + // The value of the name attribute + this.name = aName; + logAll("setName()"); + } + + /** + *

Sets the body text of the task + * and shows the state of the task afterwards.

+ * @param bodyText The body text + */ + public final void addText(final String bodyText) { + // If the body text is just whitespace, it might as well be null + if (bodyText.trim().equals("")) { + this.text = null; + } else { + this.text = bodyText.trim(); + } + logAll("addText()"); + } + + /**

Checks for task references.

+ * @return String + * A string that tells us details of the reference check + */ + private String referenceCheck() { + + // The default setting + String setString = "Reference not found."; + + // We need the references that have been set in this project + Hashtable refs = getProject().getReferences(); + Enumeration e = refs.elements(); + + // Let's iterate over them + while (e.hasMoreElements()) { + // We want to work with each object, so we'll instantiate an object + Object obj = e.nextElement(); + + // Check to see if this object is a custom task + // If it is, we'll build a string that contains its name and type + if (obj.getClass().getName(). + equals("org.apache.tools.ant.UnknownElement") + || + obj.getClass().getName(). + equals(this.getClass().getName())) { + Task aTask = (Task) obj; + setString = + "Reference to " + aTask.getTaskName() + " found, of type " + + aTask.getClass().getName() + ". "; + setString = setString + "Its id is " + + aTask.getRuntimeConfigurableWrapper(). + getAttributeMap().get("id") + "."; + } + } + return setString; + } + + /** + *

A central logging method that all the life-cycle methods call + * to display the state of the task. + * It displays the value of the name attribute + * and other information about the task, + * including the name of its project and its location in the build file.

+ * @param method The name of the method that issued the logging call + */ + public final void logAll(final String method) { + log("---------------", Project.MSG_VERBOSE); + log(method + " called", Project.MSG_VERBOSE); + + // If name is set, we only have one value to print + if (name != null) { + log("Value of name attribute: " + this.name, Project.MSG_VERBOSE); + } + + log("Value of the body text: " + text, Project.MSG_VERBOSE); + log("Project: " + getProject().getName(), Project.MSG_VERBOSE); + + // Here we build some information on the location + // within the build file + String locationString = getLocation().getFileName(); + locationString = locationString + + " at line " + getLocation().getLineNumber(); + + // Location.getColumnNumber() is for Ant 1.7+ + // Comment it out if you are using Ant 1.6.x + //locationString = locationString + // + " and column " + getLocation().getColumnNumber(); + + log("Location: " + locationString, Project.MSG_VERBOSE); + + // We could use the Location.toString() method + //log("Location: " + getLocation(), Project.MSG_VERBOSE); + + log("Target: " + getOwningTarget(), Project.MSG_VERBOSE); + + // referenceCheck() returns a string with information + // on any references to custom tasks + log(referenceCheck(), Project.MSG_VERBOSE); + + // If the configuration wrapper is null, we use its + // run-time equivalent + if (getWrapper() == null) { + log("Reference id: " + + getRuntimeConfigurableWrapper().getAttributeMap().get("id"), + Project.MSG_VERBOSE); + } else { + // This time we use the protected getWrapper() method + log("Reference id: " + getWrapper().getAttributeMap().get("id"), + Project.MSG_VERBOSE); + } + + log("---------------", Project.MSG_VERBOSE); + } + + /** + *

Adds a <name> element + * that has not been initialized.

+ * @param nameElement The NameElement + * object that represents the nested element + * @see LifeCycleNestedTask.NameElement + */ + public final void addName(final NameElement nameElement) { + nameElements.add(nameElement); + + logAll("addName()"); + log("Value of this name: " + + nameElement.getName(), Project.MSG_VERBOSE); + } + + /** + *

Adds a <name> element + * that has been initialized.

+ * @param nameElement The NameElement + * object that represents the nested element + * @see LifeCycleNestedTask.NameElement + */ + public final void addConfiguredName(final NameElement nameElement) { + nameElements.add(nameElement); + + logAll("addConfiguredName()"); + log("Value of this name: " + nameElement.getName(), + Project.MSG_VERBOSE); + } + + /** + *

Adds a <name> element + * that has not been initialized. + * In this case, the createName() method + * has the responsibility + * for creating the object.

+ * @see LifeCycleNestedTask.NameElement + */ + public final NameElement createName() { + NameElement nameElement = new NameElement("Madeleine"); + + nameElements.add(nameElement); + + logAll("createName()"); + log("Value of this name: " + nameElement.getName(), + Project.MSG_VERBOSE); + + return nameElement; + } + + /** + *

A class that implements + * the nested <name> element + * of a LifeCycleNestedTask. + * @see LifeCycleNestedTask + */ + public static class NameElement { + + /** The name attribute of this element. */ + private String name; + + /** Tells the class if we've used the overridden constructor. */ + private boolean usedConstructor = false; + + /** The empty constructor. */ + public NameElement() { + // Empty + } + + /** + *

Used by the LifeCycleNestedTask.createName() method + * to created a nested <name> element.

+ * @see LifeCycleNestedTask#createName() + */ + public NameElement(final String text) { + this.name = text; + usedConstructor = true; + } + + /** + *

The mutator method for the name attribute.

+ * @param aName The name to display + */ + public final void setName(final String aName) { + this.name = aName; + } + + /** + *

The accessor method for the name attribute.

+ * @return String The name to display + */ + public final String getName() { + return name; + } + + /** + *

Sets the body text of the <name> element. + * It contains a usage check.

+ * @param text The body text + */ + public final void addText(final String text) { + // Usage check + if (name != null && !usedConstructor) { + String msg = "You can't specify a name attribute " + + "and nested text in elements."; + throw new BuildException(msg); + } else { + this.name = text.trim(); + } + } + } +} + diff --git a/ch11/ant/org/mwrm/ant/tasks/LifeCycleTask.java b/ch11/ant/org/mwrm/ant/tasks/LifeCycleTask.java new file mode 100644 index 0000000..51c5219 --- /dev/null +++ b/ch11/ant/org/mwrm/ant/tasks/LifeCycleTask.java @@ -0,0 +1,194 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.mwrm.ant.tasks; + +import java.util.Hashtable; +import java.util.Enumeration; + +import org.apache.tools.ant.Project; +import org.apache.tools.ant.Task; +import org.apache.tools.ant.BuildException; + +/** + *

At each stage in a task's life cycle, this class displays information + * to show the internal state of the task and its position with in the project. + * It takes a name attribute.

+ */ +public class LifeCycleTask extends Task { + + /** The name attribute of this task. */ + private String name; + + /** The body text of this task. */ + private String text; + + /** + *

The constructor displays the state of the task + * as it is instantiated.

+ */ + public LifeCycleTask() { + System.out.println("---------------"); + System.out.println("Constructor called"); + System.out.println("Value of name attribute: " + name); + System.out.println("Value of the body text: " + text); + System.out.println("Project: " + getProject()); + System.out.println("Location: " + getLocation()); + System.out.println("Target: " + getOwningTarget()); + System.out.println("---------------"); + } + + /** + *

Displays the state of the task at initialization.

+ * @see #logAll(String method) + */ + public final void init() { + logAll("init()"); + } + + /** + *

Displays the state of the task when Ant runs it. + * This method also runs some usage checks + * to ensure the task is being used properly.

+ */ + public final void execute() { + if (name == null) { + throw new BuildException("You must specify a name attribute in " + + getTaskName() + "."); + } + logAll("execute()"); + + // Write the name to output + log(name, Project.MSG_INFO); + } + + /** + *

Sets the name to display + * and shows the state of the task afterwards.

+ * @param aName The name to display + */ + public final void setName(final String aName) { + // The value of the name attribute + this.name = aName; + logAll("setName()"); + } + + /** + *

Sets the body text of the task + * and shows the state of the task afterwards.

+ * @param bodyText The body text + */ + public final void addText(final String bodyText) { + // If the body text is just whitespace, it might as well be null + if (bodyText.trim().equals("")) { + this.text = null; + } else { + this.text = bodyText.trim(); + } + logAll("addText()"); + } + + /**

Checks for task references.

+ * @return String + * A string that tells us details of the reference check + */ + private String referenceCheck() { + + // The default setting + String setString = "Reference not found."; + + // We need the references that have been set in this project + Hashtable refs = getProject().getReferences(); + Enumeration e = refs.elements(); + + // Let's iterate over them + while (e.hasMoreElements()) { + // We want to work with each object, so we'll instantiate an object + Object obj = e.nextElement(); + + // Check to see whether this object is a task + // If it is, we'll build a string that contains its name and type + if (obj.getClass().getName(). + equals("org.apache.tools.ant.UnknownElement") + || + obj.getClass().getName(). + equals(this.getClass().getName())) { + + Task aTask = (Task) obj; + + setString = + "Reference to " + aTask.getTaskName() + " found, of type " + + aTask.getClass().getName() + ". "; + setString = setString + "Its id is " + + aTask.getRuntimeConfigurableWrapper(). + getAttributeMap().get("id") + "."; + } + } + return setString; + } + + /** + *

A central logging method that all the life-cycle methods call + * to display the state of the task. + * It displays the value of the name attribute + * and other information about the task, + * including the name of its project and its location in the build file.

+ * @param method The name of the method that issued the logging call + */ + public final void logAll(final String method) { + log("---------------", Project.MSG_VERBOSE); + log(method + " called", Project.MSG_VERBOSE); + log("Value of name attribute: " + name, Project.MSG_VERBOSE); + log("Value of the body text: " + text, Project.MSG_VERBOSE); + log("Project: " + getProject().getName(), Project.MSG_VERBOSE); + + // Here we build some information on the location + // within the build file + String locationString = getLocation().getFileName(); + locationString = locationString + " at line " + + getLocation().getLineNumber(); + + // Location.getColumnNumber() is for Ant 1.7+ + // Comment it out if you are using Ant 1.6.x + //locationString = locationString + " and column " + // + getLocation().getColumnNumber(); + + log("Location: " + locationString, Project.MSG_VERBOSE); + + // We could use the Location.toString() method + //log("Location: " + getLocation(), Project.MSG_VERBOSE); + + log("Target: " + getOwningTarget(), Project.MSG_VERBOSE); + + // referenceCheck() returns a string with information + // on any references to custom tasks + log(referenceCheck(), Project.MSG_VERBOSE); + + // If the configuration wrapper is null, we use its + // run-time equivalent + if (getWrapper() == null) { + log("Reference id: " + + getRuntimeConfigurableWrapper().getAttributeMap().get("id"), + Project.MSG_VERBOSE); + } else { + // This time we use the protected getWrapper() method + log("Reference id: " + getWrapper().getAttributeMap().get("id"), + Project.MSG_VERBOSE); + } + + log("---------------", Project.MSG_VERBOSE); + } +} + diff --git a/ch11/ant/org/mwrm/ant/tasks/ProjectHelpTask.java b/ch11/ant/org/mwrm/ant/tasks/ProjectHelpTask.java new file mode 100644 index 0000000..32172b0 --- /dev/null +++ b/ch11/ant/org/mwrm/ant/tasks/ProjectHelpTask.java @@ -0,0 +1,72 @@ +/* + * Uses org.apache.tools.ant.Main, + * which is Copyright 2000-2005 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.ant.tasks; + +import org.apache.tools.ant.Task; +import org.apache.tools.ant.Main; + +/** + *

The ProjectHelpTask class displays usage information + * for the current project. This is the same information as is displayed + * by -projecthelp.

+ * + */ + +public class ProjectHelpTask extends Task { + + /** The location of the build file to use + * when obtaining usage information. */ + private String buildfile; + + /** + *

Runs the task. + * It calls {@link org.apache.tools.ant.Main#main(String[] args) + * org.apache.tools.ant.Main.main()} with the -projecthelp + * parameter. It will also send the current build file's file name + * via the -f parameter.

+ * + *

The buildfile attribute is optional. + * The default is the task's build file.

+ * @see org.apache.tools.ant.Main org.apache.tools.ant.Main + */ + public final void execute() { + // If the buildfile attribute is null, we'll use the task's build file + if (buildfile == null) { + buildfile = getLocation().getFileName(); + } + + // The arguments that we will pass to the Main class. + // The buildfile attribute must follow the -f parameter. + String[] args = {"-projecthelp", "-f", buildfile}; + + // Call the Main Ant class with the arguments. + Main.main(args); + } + + /** + * Setter method for the buildfile attribute. + * @param file The file name of the build file to use. + * + */ + public final void setBuildfile(final String file) { + this.buildfile = file; + } + +} + diff --git a/ch11/ant/org/mwrm/ant/tasks/package.html b/ch11/ant/org/mwrm/ant/tasks/package.html new file mode 100644 index 0000000..26003dc --- /dev/null +++ b/ch11/ant/org/mwrm/ant/tasks/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.ant.tasks Package + + +

A collection of classes that demonstrate the Ant task life cycle.

+ + diff --git a/ch11/antBook.antlib.xml b/ch11/antBook.antlib.xml new file mode 100644 index 0000000..7927073 --- /dev/null +++ b/ch11/antBook.antlib.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ch11/antlib.xml b/ch11/antlib.xml new file mode 100644 index 0000000..72d6f9a --- /dev/null +++ b/ch11/antlib.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ch11/build.properties b/ch11/build.properties new file mode 100644 index 0000000..e1a014e --- /dev/null +++ b/ch11/build.properties @@ -0,0 +1,144 @@ +# The source directory that contains the code +src=src + +# Subdirectory properties +src.shared.root=${src}/shared +src.shared.java=${src.shared.root}/java +src.shared.docs=${src.shared.root}/docs +src.shared.conf=${src.shared.root}/conf + +src.stand-alone.root=${src}/stand-alone +src.stand-alone.java=${src.stand-alone.root}/java +src.stand-alone.docs=${src.stand-alone.root}/docs + +src.web.root=${src}/web +src.web.java=${src.web.root}/java +src.web.docs=${src.web.root}/docs +src.web.pages=${src.web.root}/pages +src.web.tags=${src.web.root}/tags +src.web.conf=${src.web.root}/conf + +# The scratch directory +build=build + +build.stand-alone.root=${build}/stand-alone + +build.web.root=${build}/web +build.web.web-inf=${build.web.root}/WEB-INF +build.web.classes=${build.web.web-inf}/classes +build.web.tags=${build.web.web-inf}/tags +build.web.lib=${build.web.web-inf}/lib + +# The final destination of our project files +dist=dist + +# The location of third-party JAR files +lib=lib + +# This name will be appended to the JAR and WAR files +appName=antBook +appName.jar=${dist}/${appName}.jar +appName.war=${dist}/${appName}.war + +# The Tomcat home directory +catalina.home=C:\\jakarta-tomcat-5.5.9 +servlet24.jar=${catalina.home}/common/lib/servlet-api.jar +# Use the following line if using Ant to download the JAR +#servlet24.jar=${lib}/servlet-api.jar + +# Required for the JSTL build +jsp20.jar=${catalina.home}/common/lib/jsp-api.jar +# Use the following line if using Ant to download the JAR +#jsp20.jar=${lib}/jsp-api.jar +jstl.build=jakarta-taglibs/standard +library.src=src +examples.src=examples +doc.src=doc +build.library=${build} + +# Required for the MySQL connector build +mysql.build=mm.mysql-2 +mysql.name=mysql-connector +mysql.jar=${lib}/${mysql.name}-bin.jar + +# The database properties file +database.properties=${src.shared.conf}/database.properties + +# The directory where the docs will go +docs=${build}/docs + +# Properties for customizing the Javadoc build +javadoc.doctitle=Welcome to the example application +javadoc.windowtitle=The example application +javadoc.j2se.version=1.5.0 +javadoc.j2ee.version=1.4 + +javadoc.j2se.offline=C:/j2sdk1.5.0/docs/api +javadoc.j2ee.offline=C:/j2eesdk1.4/docs/apidocs + +package.stand-alone=stand-alone +package.web=web +package.docs=docs + +tmp=C:/TEMP/antBook +#tmp=/tmp/antBook + +# FTP settings +ftp.server=localhost +ftp.src.dir=src +ftp.bin.dir=bin + +mail.from=antBuild@example.com +mail.tolist=antUser01@example.com,antUser02@example.com +mail.message.docs=Here's the docs distribution +mail.mailhost=smtp.mail.example.com +mail.subject=Ant build + +# The location of the Tomcat server +tomcat.host=localhost +tomcat.port=8080 +manager.url=http://${tomcat.host}:${tomcat.port}/manager + +database.root=jdbc:mysql://localhost:3306/ +driver.name=com.mysql.jdbc.Driver + +drop.sql=SQL/drop.sql +create.sql=SQL/create.sql +insert.sql=SQL/insert.sql + +# The name of the Tomcat start script +tomcat.executableName=startup + +# The test directory +test.src=test +test.build=${build}/test +test.junit.reports=${test.build}/reports/junit +test.junit.data=${test.build}/data/junit +test.junit.style=${test.src}/style/junit + +junit.home=C:/junit3.8.1 +junit.jar=${junit.home}/junit.jar + +httpunit.home=C:/httpunit +httpunit.jar=${httpunit.home}/lib/httpunit.jar + +last.test.failed.file=failed.txt + +checkstyle.home=C:/checkstyle +checkstyle.jar=${checkstyle.home}/checkstyle-3.5.jar +test.checkstyle.reports=${test.build}/reports/checkstyle +test.checkstyle.data=${test.build}/data/checkstyle + +# Custom task properties +ant.tasks.src=ant +ant.tasks.build=${build}/ant +ant.tasks.jar=${dist}/${appName}-tasks.jar + +ant.tasks.antlib.xml=antlib.xml +ant.tasks.antlib.package=org/mwrm/ant +ant.tasks.antlib.dir=${ant.tasks.build}/${ant.tasks.antlib.package} + +ant.api.jar=${dist}/${appName}-api.jar + +log4j.home=C:/logging-log4j-1.2.12 +log4j.jar=${log4j.home}/dist/lib/log4j.jar \ No newline at end of file diff --git a/ch11/build.xml b/ch11/build.xml new file mode 100644 index 0000000..0595862 --- /dev/null +++ b/ch11/build.xml @@ -0,0 +1,1595 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${javadoc.doctitle} + + + + + + + + + + + + + + ${javadoc.doctitle} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${mail.message.docs} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${javadoc.doctitle} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Jones + + + + + + + + + + + + + + + + + + + + + + + + ${converted} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${javadoc.doctitle} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${javadoc.doctitle} + + + + + + + + + + diff --git a/ch11/log.xml b/ch11/log.xml new file mode 100644 index 0000000..7c28a52 --- /dev/null +++ b/ch11/log.xml @@ -0,0 +1,14 @@ +java.lang.NullPointerException + at org.mwrm.ant.listeners.BuildEventListener.messageLogged(Unknown Source) + at org.apache.tools.ant.Project.fireMessageLoggedEvent(Project.java:2009) + at org.apache.tools.ant.Project.fireMessageLogged(Project.java:2029) + at org.apache.tools.ant.Project.log(Project.java:357) + at org.apache.tools.ant.Project.addReference(Project.java:1777) + at org.apache.tools.ant.PropertyHelper.getPropertyHelper(PropertyHelper.java:131) + at org.apache.tools.ant.Project.getProperty(Project.java:473) + at org.apache.tools.ant.XmlLogger.buildFinished(XmlLogger.java:166) + at org.apache.tools.ant.Project.fireBuildFinished(Project.java:1848) + at org.apache.tools.ant.Main.runBuild(Main.java:688) + at org.apache.tools.ant.Main.startAnt(Main.java:187) + at org.apache.tools.ant.launch.Launcher.run(Launcher.java:249) + at org.apache.tools.ant.launch.Launcher.main(Launcher.java:70) diff --git a/ch11/log.xsl b/ch11/log.xsl new file mode 100644 index 0000000..2272790 --- /dev/null +++ b/ch11/log.xsl @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + +
+ + http://jakarta.apache.org + + + Apache Ant +
+ + + +

+ + + + + + + +

+
+ Copyright © 2000-2002, Apache Software Foundation +
+
+ + +
+ + + + + + failed + complete + + + + + + + + + + + + + +
Build FailedBuild CompleteTotal Time:
+ +
+ See the stacktrace. +
+
+ + + + + +
ant.file
ant.version
java.version
os.name
+ +

Build events

+ + + + + + + +
targettaskmessage
+

+ + + +

Error details

+ + +
+
+
+ +

+
+ + + + + + + a + b + + + [ ] + + + + + + +
diff --git a/ch11/log4j.properties b/ch11/log4j.properties new file mode 100644 index 0000000..7fae6cf --- /dev/null +++ b/ch11/log4j.properties @@ -0,0 +1,94 @@ +# Set the root logger for Ant +#log4j.rootLogger=INFO, AntLogger + +# Log to a file +#log4j.appender.AntLogger=org.apache.log4j.FileAppender +#log4j.appender.AntLogger.File=C:/TEMP/antBook/logs/ant.log + +# Use the simple layout +#log4j.appender.AntLogger.layout=org.apache.log4j.SimpleLayout + +#---------------------------------------------# +# Set the root logger for Ant +#log4j.rootLogger=INFO, AntLogger + +# Log to a pattern file +#log4j.appender.AntLogger=org.apache.log4j.FileAppender +#log4j.appender.AntLogger.File=C:/TEMP/antBook/logs/ant.pattern.log + +# Use a pattern layout +#log4j.appender.AntLogger.layout=org.apache.log4j.PatternLayout +#log4j.appender.AntLogger.layout.ConversionPattern=%d{ISO8601} : %p : %m %n + +#---------------------------------------------# +# Set the root logger for Ant +#log4j.rootLogger=INFO, AntLogger + +# Log to an HTML file +#log4j.appender.AntLogger=org.apache.log4j.FileAppender +#log4j.appender.AntLogger.File=C:/TEMP/antBook/logs/ant.log.html + +# Set the layout to HTML and specify a title +#log4j.appender.AntLogger.layout=org.apache.log4j.HTMLLayout +#log4j.appender.AntLogger.layout.Title=Apress Ant Log + +#---------------------------------------------# +# Set the root logger for Ant +log4j.rootLogger=INFO, AntLogger + +# Log to the console +log4j.appender.AntLogger=org.apache.log4j.ConsoleAppender +log4j.appender.AntLogger.Target=System.out + +# Set a custom layout level +log4j.appender.AntLogger.layout=org.apache.log4j.PatternLayout +log4j.appender.AntLogger.layout.ConversionPattern=%d{ISO8601} : %p : %m %n + +#---------------------------------------------# +# Send all INFO messages and above to a file and +# all ERROR messages and above to the console +#log4j.rootLogger=INFO, AntINFO, AntERROR + +# Use a pattern file for the INFO messages +#log4j.appender.AntINFO=org.apache.log4j.FileAppender +#log4j.appender.AntINFO.File=C:/TEMP/antBook/logs/ant.pattern.log +#log4j.appender.AntINFO.layout=org.apache.log4j.PatternLayout +#log4j.appender.AntINFO.layout.ConversionPattern=%d{ISO8601} : %r : %p : %m %n + +# Use an HTML file for ERROR messages +#log4j.appender.AntERROR=org.apache.log4j.FileAppender +#log4j.appender.AntERROR.File=C:/TEMP/antBook/logs/ant.log.html +#log4j.appender.AntERROR.layout=org.apache.log4j.HTMLLayout +#log4j.appender.AntERROR.layout.Title=Apress Error Log +#log4j.appender.AntERROR.Threshold=ERROR + +#---------------------------------------------# +# Use individual loggers for different components +#log4j.rootLogger=ERROR, AntLogger + +# Log to a file +#log4j.appender.AntLogger=org.apache.log4j.FileAppender +#log4j.appender.AntLogger.File=C:/TEMP/antBook/logs/ant.log + +# Use the simple layout +#log4j.appender.AntLogger.layout=org.apache.log4j.SimpleLayout + +# Set a logger for project components +#log4j.logger.org.apache.tools.ant.Project=INFO,AntComponentLogger +#log4j.logger.org.apache.tools.ant.Target=INFO,AntComponentLogger +#log4j.logger.org.apache.tools.ant.UnknownElement=INFO,AntComponentLogger +#log4j.logger.org.apache.tools.ant.taskdefs=INFO,AntComponentLogger + +#log4j.appender.AntComponentLogger=org.apache.log4j.FileAppender +#log4j.appender.AntComponentLogger.File=C:/TEMP/antBook/logs/ant.pattern.log +#log4j.appender.AntComponentLogger.layout=org.apache.log4j.PatternLayout +#log4j.appender.AntComponentLogger.layout.ConversionPattern=%p: %m: %d{ISO8601} %n +#log4j.appender.AntComponentLogger.Threshold=INFO + +# Log to a file +#log4j.appender.AntComponentLogger=org.apache.log4j.FileAppender +#log4j.appender.AntComponentLogger.File=C:/TEMP/antBook/logs/ant.component.log + +# Use the pattern layout +#log4j.appender.AntComponentLogger.layout=org.apache.log4j.PatternLayout +#log4j.appender.AntComponentLogger.layout.ConversionPattern=%c: %m %n \ No newline at end of file diff --git a/ch11/mail.log.properties b/ch11/mail.log.properties new file mode 100644 index 0000000..badfd74 --- /dev/null +++ b/ch11/mail.log.properties @@ -0,0 +1,8 @@ +MailLogger.mailhost=smtp.mail.yahoo.co.uk +MailLogger.user=antBook +MailLogger.password=antB00k +MailLogger.from=ant.log@example.com +MailLogger.failure.to=ant.results@example.com +MailLogger.success.to=ant.results@example.com +MailLogger.failure.subject=Build failed +MailLogger.success.subject=Build succeeded diff --git a/ch11/src/shared/conf/SQL/plants.sql b/ch11/src/shared/conf/SQL/plants.sql new file mode 100644 index 0000000..f95cb20 --- /dev/null +++ b/ch11/src/shared/conf/SQL/plants.sql @@ -0,0 +1,13 @@ +CREATE DATABASE IF NOT EXISTS plants; + +USE plants; + +CREATE TABLE plants ( + id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(80) NOT NULL, + common_name VARCHAR(80), + family VARCHAR(50) NOT NULL, + description TEXT NOT NULL, + image VARCHAR(20), + cultivar_name VARCHAR(80) +); \ No newline at end of file diff --git a/ch11/src/shared/conf/SQL/plantsDelete.sql b/ch11/src/shared/conf/SQL/plantsDelete.sql new file mode 100644 index 0000000..ea4dd57 --- /dev/null +++ b/ch11/src/shared/conf/SQL/plantsDelete.sql @@ -0,0 +1,3 @@ +USE plants; + +DELETE FROM plants; \ No newline at end of file diff --git a/ch11/src/shared/conf/SQL/plantsDrop.sql b/ch11/src/shared/conf/SQL/plantsDrop.sql new file mode 100644 index 0000000..999053f --- /dev/null +++ b/ch11/src/shared/conf/SQL/plantsDrop.sql @@ -0,0 +1 @@ +DROP DATABASE IF EXISTS plants; \ No newline at end of file diff --git a/ch11/src/shared/conf/SQL/plantsInsert.sql b/ch11/src/shared/conf/SQL/plantsInsert.sql new file mode 100644 index 0000000..1b11952 --- /dev/null +++ b/ch11/src/shared/conf/SQL/plantsInsert.sql @@ -0,0 +1,15 @@ +USE plants; + +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Galanthus nivalis", "Snowdrop", "Liliaceae", "Snowdrops appear in late winter and early spring.", "gal_niv.jpg"); +INSERT INTO plants (name, common_name, family, description) VALUES ("Narcissus pseudonarcissus", "Daffodil, Lent lily", "Liliaceae", "Daffodils appear in spring."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Narcissus poeticus var. recurvus", "Old Pheasant's Eye, Poet's narcissus", "Liliaceae", "A very late-flowering daffodil with white petals and a short orange/yellow trumpet."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Leucojum vernum", "Spring snowflake", "Liliaceae", "A lovely spring bulb that flowers in spring. It resembles a robust snowdrop."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Iris pseudacorus", "Yellow iris, Yellow flag", "Iridaceae", "Commonly found by water and damp places. It spreads quickly and can easily take over an area once introduced."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Crocus tommasinianus", "Early crocus", "Iridaceae", "An early flowering crocus with gentle lavender-coloured flowers."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Colchicum autumnale", "Meadow saffron, Autumn crocus", "Liliaceae", "Flowers in August and September months after its leaves have died away. Resembles a crocus very closely."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Hyacinthoides non-scripta", "Bluebell", "Liliaceae", "Cloaks the floor of deciduous woodland throughout Europe."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Erythronium dens-canis", "Dog's tooth violet", "Liliaceae", "The bulb is shaped like a dog's tooth, hence the name."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Fritillaria meleagris", "Snake's-head fritillary", "Liliaceae", "It takes its name from the mottled pattern on its flower that resembles snakeskin."); +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Cyclamen coum", "Cyclamen", "Primulaceae", "A winter-flowering corm that provides excellent winter colour.", "cyc_cou.jpg"); +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Tulipa turkestanica", "Tulip", "Liliaceae", "A delicate little tulip that appears in mid spring.", "tul_tur.jpg"); +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Ranunculus ficaria", "Lesser celandine", "Ranunculacae", "A dazzlingly yellow flower that is often considered a weed.", "ran_fic.jpg"); \ No newline at end of file diff --git a/ch11/src/shared/conf/database.properties b/ch11/src/shared/conf/database.properties new file mode 100644 index 0000000..ab7b216 --- /dev/null +++ b/ch11/src/shared/conf/database.properties @@ -0,0 +1,7 @@ +database.root=jdbc:mysql://localhost:3306/ +database.name=plants +driver.name=com.mysql.jdbc.Driver + +create.sql=SQL/plants.sql +insert.sql=SQL/plantsInsert.sql +drop.sql=SQL/plantsDrop.sql \ No newline at end of file diff --git a/ch11/src/shared/docs/LICENSE b/ch11/src/shared/docs/LICENSE new file mode 100644 index 0000000..f820d4b --- /dev/null +++ b/ch11/src/shared/docs/LICENSE @@ -0,0 +1,203 @@ +/* + * Apache License + * Version 2.0, January 2004 + * http://www.apache.org/licenses/ + * + * TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + * + * 1. Definitions. + * + * "License" shall mean the terms and conditions for use, reproduction, + * and distribution as defined by Sections 1 through 9 of this document. + * + * "Licensor" shall mean the copyright owner or entity authorized by + * the copyright owner that is granting the License. + * + * "Legal Entity" shall mean the union of the acting entity and all + * other entities that control, are controlled by, or are under common + * control with that entity. For the purposes of this definition, + * "control" means (i) the power, direct or indirect, to cause the + * direction or management of such entity, whether by contract or + * otherwise, or (ii) ownership of fifty percent (50%) or more of the + * outstanding shares, or (iii) beneficial ownership of such entity. + * + * "You" (or "Your") shall mean an individual or Legal Entity + * exercising permissions granted by this License. + * + * "Source" form shall mean the preferred form for making modifications, + * including but not limited to software source code, documentation + * source, and configuration files. + * + * "Object" form shall mean any form resulting from mechanical + * transformation or translation of a Source form, including but + * not limited to compiled object code, generated documentation, + * and conversions to other media types. + * + * "Work" shall mean the work of authorship, whether in Source or + * Object form, made available under the License, as indicated by a + * copyright notice that is included in or attached to the work + * (an example is provided in the Appendix below). + * + * "Derivative Works" shall mean any work, whether in Source or Object + * form, that is based on (or derived from) the Work and for which the + * editorial revisions, annotations, elaborations, or other modifications + * represent, as a whole, an original work of authorship. For the purposes + * of this License, Derivative Works shall not include works that remain + * separable from, or merely link (or bind by name) to the interfaces of, + * the Work and Derivative Works thereof. + * + * "Contribution" shall mean any work of authorship, including + * the original version of the Work and any modifications or additions + * to that Work or Derivative Works thereof, that is intentionally + * submitted to Licensor for inclusion in the Work by the copyright owner + * or by an individual or Legal Entity authorized to submit on behalf of + * the copyright owner. For the purposes of this definition, "submitted" + * means any form of electronic, verbal, or written communication sent + * to the Licensor or its representatives, including but not limited to + * communication on electronic mailing lists, source code control systems, + * and issue tracking systems that are managed by, or on behalf of, the + * Licensor for the purpose of discussing and improving the Work, but + * excluding communication that is conspicuously marked or otherwise + * designated in writing by the copyright owner as "Not a Contribution." + * + * "Contributor" shall mean Licensor and any individual or Legal Entity + * on behalf of whom a Contribution has been received by Licensor and + * subsequently incorporated within the Work. + * + * 2. Grant of Copyright License. Subject to the terms and conditions of + * this License, each Contributor hereby grants to You a perpetual, + * worldwide, non-exclusive, no-charge, royalty-free, irrevocable + * copyright license to reproduce, prepare Derivative Works of, + * publicly display, publicly perform, sublicense, and distribute the + * Work and such Derivative Works in Source or Object form. + * + * 3. Grant of Patent License. Subject to the terms and conditions of + * this License, each Contributor hereby grants to You a perpetual, + * worldwide, non-exclusive, no-charge, royalty-free, irrevocable + * (except as stated in this section) patent license to make, have made, + * use, offer to sell, sell, import, and otherwise transfer the Work, + * where such license applies only to those patent claims licensable + * by such Contributor that are necessarily infringed by their + * Contribution(s) alone or by combination of their Contribution(s) + * with the Work to which such Contribution(s) was submitted. If You + * institute patent litigation against any entity (including a + * cross-claim or counterclaim in a lawsuit) alleging that the Work + * or a Contribution incorporated within the Work constitutes direct + * or contributory patent infringement, then any patent licenses + * granted to You under this License for that Work shall terminate + * as of the date such litigation is filed. + * + * 4. Redistribution. You may reproduce and distribute copies of the + * Work or Derivative Works thereof in any medium, with or without + * modifications, and in Source or Object form, provided that You + * meet the following conditions: + * + * (a) You must give any other recipients of the Work or + * Derivative Works a copy of this License; and + * + * (b) You must cause any modified files to carry prominent notices + * stating that You changed the files; and + * + * (c) You must retain, in the Source form of any Derivative Works + * that You distribute, all copyright, patent, trademark, and + * attribution notices from the Source form of the Work, + * excluding those notices that do not pertain to any part of + * the Derivative Works; and + * + * (d) If the Work includes a "NOTICE" text file as part of its + * distribution, then any Derivative Works that You distribute must + * include a readable copy of the attribution notices contained + * within such NOTICE file, excluding those notices that do not + * pertain to any part of the Derivative Works, in at least one + * of the following places: within a NOTICE text file distributed + * as part of the Derivative Works; within the Source form or + * documentation, if provided along with the Derivative Works; or, + * within a display generated by the Derivative Works, if and + * wherever such third-party notices normally appear. The contents + * of the NOTICE file are for informational purposes only and + * do not modify the License. You may add Your own attribution + * notices within Derivative Works that You distribute, alongside + * or as an addendum to the NOTICE text from the Work, provided + * that such additional attribution notices cannot be construed + * as modifying the License. + * + * You may add Your own copyright statement to Your modifications and + * may provide additional or different license terms and conditions + * for use, reproduction, or distribution of Your modifications, or + * for any such Derivative Works as a whole, provided Your use, + * reproduction, and distribution of the Work otherwise complies with + * the conditions stated in this License. + * + * 5. Submission of Contributions. Unless You explicitly state otherwise, + * any Contribution intentionally submitted for inclusion in the Work + * by You to the Licensor shall be under the terms and conditions of + * this License, without any additional terms or conditions. + * Notwithstanding the above, nothing herein shall supersede or modify + * the terms of any separate license agreement you may have executed + * with Licensor regarding such Contributions. + * + * 6. Trademarks. This License does not grant permission to use the trade + * names, trademarks, service marks, or product names of the Licensor, + * except as required for reasonable and customary use in describing the + * origin of the Work and reproducing the content of the NOTICE file. + * + * 7. Disclaimer of Warranty. Unless required by applicable law or + * agreed to in writing, Licensor provides the Work (and each + * Contributor provides its Contributions) on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied, including, without limitation, any warranties or conditions + * of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + * PARTICULAR PURPOSE. You are solely responsible for determining the + * appropriateness of using or redistributing the Work and assume any + * risks associated with Your exercise of permissions under this License. + * + * 8. Limitation of Liability. In no event and under no legal theory, + * whether in tort (including negligence), contract, or otherwise, + * unless required by applicable law (such as deliberate and grossly + * negligent acts) or agreed to in writing, shall any Contributor be + * liable to You for damages, including any direct, indirect, special, + * incidental, or consequential damages of any character arising as a + * result of this License or out of the use or inability to use the + * Work (including but not limited to damages for loss of goodwill, + * work stoppage, computer failure or malfunction, or any and all + * other commercial damages or losses), even if such Contributor + * has been advised of the possibility of such damages. + * + * 9. Accepting Warranty or Additional Liability. While redistributing + * the Work or Derivative Works thereof, You may choose to offer, + * and charge a fee for, acceptance of support, warranty, indemnity, + * or other liability obligations and/or rights consistent with this + * License. However, in accepting such obligations, You may act only + * on Your own behalf and on Your sole responsibility, not on behalf + * of any other Contributor, and only if You agree to indemnify, + * defend, and hold each Contributor harmless for any liability + * incurred by, or claims asserted against, such Contributor by reason + * of your accepting any such warranty or additional liability. + * + * END OF TERMS AND CONDITIONS + * + * APPENDIX: How to apply the Apache License to your work. + * + * To apply the Apache License to your work, attach the following + * boilerplate notice, with the fields enclosed by brackets "[]" + * replaced with your own identifying information. (Don't include + * the brackets!) The text should be enclosed in the appropriate + * comment syntax for the file format. We also recommend that a + * file or class name and description of purpose be included on the + * same "printed page" as the copyright notice for easier + * identification within third-party archives. + * + * Copyright [yyyy] [name of copyright owner] + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ diff --git a/ch11/src/shared/docs/README b/ch11/src/shared/docs/README new file mode 100644 index 0000000..f629ac0 --- /dev/null +++ b/ch11/src/shared/docs/README @@ -0,0 +1,4 @@ +Each chapter's build file adds to the previous chapter's. + +Therefore, by Chapter 12, the build file contains all the targets and tasks +from the whole book. \ No newline at end of file diff --git a/ch11/src/shared/docs/index.html b/ch11/src/shared/docs/index.html new file mode 100644 index 0000000..dd2219c --- /dev/null +++ b/ch11/src/shared/docs/index.html @@ -0,0 +1,19 @@ + + + + Welcome to the Plant Application + + + + + + + + +
+ The stand-alone application
+ The web application
+

This is the Plant Application.

+ + + diff --git a/ch11/src/shared/java/org/mwrm/plants/Constants.java b/ch11/src/shared/java/org/mwrm/plants/Constants.java new file mode 100644 index 0000000..74b6e93 --- /dev/null +++ b/ch11/src/shared/java/org/mwrm/plants/Constants.java @@ -0,0 +1,47 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +/** + * The Constants class contains four constants + * that represent sort options. + * + */ + +public class Constants { + + /** Use to sort the plants by their botanical name. */ + public static final int SORT_BY_NAME = 1; + + /** Use to sort the plants by their common name. */ + public static final int SORT_BY_COMMON_NAME = 2; + + /** Use to sort the plants by their family name. */ + public static final int SORT_BY_FAMILY = 3; + + /** + * Use to sort the plants by their botanical name + * and exclude those plants that do not begin with the chosen letter. + */ + public static final int SORT_BY_CHOSEN_LETTER = 4; + + /** + * A simple constructor. + */ + public Constants() { } + +} diff --git a/ch11/src/shared/java/org/mwrm/plants/PropertiesLoader.java b/ch11/src/shared/java/org/mwrm/plants/PropertiesLoader.java new file mode 100644 index 0000000..10d07f3 --- /dev/null +++ b/ch11/src/shared/java/org/mwrm/plants/PropertiesLoader.java @@ -0,0 +1,53 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +import java.util.Properties; + +import java.io.IOException; + +/** + * The PropertiesLoader class loads properties + * from the database.properties file and passes them + * to whichever class wants to use them. This centralises the name + * of the properties file so the entire application can use it. + */ + +public class PropertiesLoader { + + /** A simple constructor. */ + public PropertiesLoader() { } + + /** + * Loads the properties for whichever class needs them. + * + * @return A Java properties file + */ + public final Properties loadProperties() { + + // Read properties file. + Properties properties = new Properties(); + try { + properties.load(this.getClass().getClassLoader() + .getResourceAsStream("database.properties")); + } catch (IOException e) { + System.out.println("Error: " + e.getMessage()); + } + + return properties; + } +} diff --git a/ch11/src/shared/java/org/mwrm/plants/SelectData.java b/ch11/src/shared/java/org/mwrm/plants/SelectData.java new file mode 100644 index 0000000..5a0ad89 --- /dev/null +++ b/ch11/src/shared/java/org/mwrm/plants/SelectData.java @@ -0,0 +1,156 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.Statement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; + +import java.util.HashMap; +import java.util.Vector; +import java.util.Properties; + +/** + *

The SelectData class establishes a connection + * with a database and executes a query, as selected by the client.

+ * + *

It gets the database driver name and the URL + * from the database.properties file. + * When the results come back from the database, + * this class places them as HashMap records + * in a Vector. It then passes this Vector + * back to the calling client.

+ * + *

The SQL strings are:

+ * + *
    + *
  • Constants.SORT_BY_NAME (the default): + * SELECT * FROM plants ORDER BY name
  • + *
  • Constants.SORT_BY_COMMON_NAME: + * SELECT * FROM plants ORDER BY common_name
  • + *
  • Constants.SORT_BY_FAMILY: + * SELECT * FROM plants ORDER BY family, name
  • + *
  • Constants.SORT_BY_CHOSEN_LETTER: + * SELECT * FROM plants WHERE name REGEXP '^X' + * where X is a letter supplied by the client
  • + *
+ */ + +public final class SelectData { + + /** + *

The default constructor.

+ */ + private SelectData() { } + + /** + * Get the data from the database. + * @param choice The criteria for sorting the results. + * This choice is held in the Constants class. + * @param letter The letter to use when limiting the search, + * should that option be chosen. + * @return Vector + * @throws ClassNotFoundException If the database driver is not found + * @throws SQLException If there's a problem with database operations + */ + public static Vector getData(final int choice, final String letter) + throws ClassNotFoundException, SQLException { + + // Read properties file + PropertiesLoader loader = new PropertiesLoader(); + Properties properties = loader.loadProperties(); + + // First load the MySQL JDBC driver + Class.forName(properties.getProperty("driver.name")); + + // The datasource + String url = properties.getProperty("database.root") + + properties.getProperty("database.name"); + + // Open the connection + Connection con = DriverManager.getConnection(url, "antBook", "antB00k"); + + Statement stmt = con.createStatement(); + + String select = getSelectString(choice, letter); + + // Now we get the data + ResultSet rs = stmt.executeQuery(select); + + // We'll need the metadata when we come to populate the session object + ResultSetMetaData rsmd = rs.getMetaData(); + int numberOfColumns = rsmd.getColumnCount(); + + Vector results = new Vector(); + + while (rs.next()) { + // We need a fresh entry every time + HashMap record = new HashMap(numberOfColumns); + + String columnName = ""; + + // For each column in the table, + // we want to add an entry to the HashMap + // with the same key as the column name + for (int i = 1; i <= numberOfColumns; i++) { + columnName = rsmd.getColumnName(i); + record.put(columnName, rs.getString(columnName)); + } + results.add(record); + } + + // Close the Statement and the Connection + stmt.close(); + con.close(); + + return results; + } + + /** + *

Returns the appropriate SQL string for the choice.

+ * @param choice The user's choice of search criteria. + * @param letter The letter to use when modifying the search. + * @return String + */ + private static String + getSelectString(final int choice, final String letter) { + + // This is the default SELECT statement if no arguments are specified + String selectString = "SELECT * FROM plants ORDER BY name"; + + // Check the type of argument + if (choice == Constants.SORT_BY_COMMON_NAME) { + // Order the results by common name + selectString = "SELECT * FROM plants ORDER BY common_name"; + + } else if (choice == Constants.SORT_BY_FAMILY) { + // Order the results by family, then botanical name + selectString = "SELECT * FROM plants ORDER BY family, name"; + + } else if (choice == Constants.SORT_BY_CHOSEN_LETTER) { + // The search will only return those plants whose botanical name + // begins with the specifed letter. + selectString = "SELECT * FROM plants WHERE name REGEXP '^" + + letter + "'"; + } + + return selectString; + } +} diff --git a/ch11/src/shared/java/org/mwrm/plants/package.html b/ch11/src/shared/java/org/mwrm/plants/package.html new file mode 100644 index 0000000..b64e7c3 --- /dev/null +++ b/ch11/src/shared/java/org/mwrm/plants/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants Package + + +

Utility classes for the plant application.

+ + \ No newline at end of file diff --git a/ch11/src/stand-alone/docs/index.html b/ch11/src/stand-alone/docs/index.html new file mode 100644 index 0000000..f615152 --- /dev/null +++ b/ch11/src/stand-alone/docs/index.html @@ -0,0 +1,19 @@ + + + + Welcome to the Plant Application + + + + + + + + +
+ The stand-alone application
+ The web application
+

This is the stand-alone application.

+ + + \ No newline at end of file diff --git a/ch11/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java b/ch11/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java new file mode 100644 index 0000000..bca1073 --- /dev/null +++ b/ch11/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java @@ -0,0 +1,154 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants.client; + +import java.sql.SQLException; + +import java.util.HashMap; +import java.util.Vector; +import java.util.Enumeration; + +import org.mwrm.plants.SelectData; +import org.mwrm.plants.Constants; + +/** + *

The PlantClient class is a command-line client + * for the plant application.

+ *

Usage:

+ *
    + *
  • -c Order by common name
  • + *
  • -f Order by family
  • + *
  • -n Order by botanical name (default)
  • + *
  • -n [letter] Order by botanical name + * and limit the search to plants beginning with the specified letter
  • + *
+ */ + +public final class PlantClient { + + /** + *

A simple constructor.

+ */ + private PlantClient() { } + + /** + * Checks the arguments, + * then uses the org.mwrm.plants.SelectData + * class to get results from the database. + * Once it has the results, it displays them to standard out. + * @param args The command-line arguments. + * @throws ClassNotFoundException If the database driver is not found + * @throws SQLException If there is a problem with the database + */ + public static void main(final String[] args) + throws ClassNotFoundException, SQLException { + + // The default choice + int choice = Constants.SORT_BY_NAME; + + // The user may want to select by a certain letter + String letter = ""; + + // Check that an argument has been provided + if (args.length > 0) { + // Check the type of argument + if (args[0].equals("-c") || args[0].equals("")) { + // Cannot be used with an argument just now, + // though Ant may pass an empty string + if (args.length > 1 && !args[1].equals("")) { + usage(); + } + // Order the results by common name + choice = Constants.SORT_BY_COMMON_NAME; + + } else if (args[0].equals("-f")) { + // Cannot be used with an argument just now, + // though Ant may pass an empty string + if (args.length > 1 && !args[1].equals("")) { + usage(); + } + // Order the results by family, then botanical name + choice = Constants.SORT_BY_FAMILY; + + } else if (args[0].equals("-n")) { + // Order the results by botanical name + // This is the default if no arguments are specified + + // The user can provide another argument. + // The search will only return those plants whose botanical name + // begins with the specifed letter. + if (args.length > 1 && !args[1].equals("")) { + choice = Constants.SORT_BY_CHOSEN_LETTER; + letter = args[1]; + } + } else { + // Usage information + usage(); + } + } + + // Obtain the results. This is a Vector of HashMaps + Vector results = SelectData.getData(choice, letter); + + // The top of the results display + System.out.println("\n-----------------------------"); + + // If there is no data in the results, tell the user + if (results.isEmpty()) { + System.out.println("No results found."); + System.out.println("-----------------------------"); + } else { + + // Each record in the database is a HashMap + HashMap record = new HashMap(); + + // Iterate over the results + for (Enumeration enum = results.elements(); + enum.hasMoreElements();) { + + record = (HashMap) enum.nextElement(); + + // The cultivar name is optional + String cultivar = ""; + + if (!(record.get("cultivar_name") == null)) { + cultivar = " '" + record.get("cultivar_name") + "'"; + } + + System.out.println("Name: " + record.get("name") + cultivar); + System.out.println("Common name: " + record.get("common_name")); + System.out.println("Family: " + record.get("family")); + System.out.println("Description: " + record.get("description")); + System.out.println("-----------------------------"); + } + } + } + + /** + *

Print the usage information.

+ */ + private static void usage() { + System.out.println("\nUsage: \n"); + System.out.println("-c \t\t Order by common name"); + System.out.println("-f \t\t Order by family"); + System.out.println("-n \t\t Order by botanical name (default)"); + System.out.println("-n [letter] \t Order by botanical name" + + " and limit the search to plants "); + System.out.println("\t\t beginning with the specified letter"); + System.exit(0); + } +} diff --git a/ch11/src/stand-alone/java/org/mwrm/plants/client/package.html b/ch11/src/stand-alone/java/org/mwrm/plants/client/package.html new file mode 100644 index 0000000..9148475 --- /dev/null +++ b/ch11/src/stand-alone/java/org/mwrm/plants/client/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants.client Package + + +

Contains the command-line client for the plant application.

+ + \ No newline at end of file diff --git a/ch11/src/web/conf/antBook.xml b/ch11/src/web/conf/antBook.xml new file mode 100644 index 0000000..9746019 --- /dev/null +++ b/ch11/src/web/conf/antBook.xml @@ -0,0 +1,3 @@ + + diff --git a/ch11/src/web/conf/plant.tld b/ch11/src/web/conf/plant.tld new file mode 100644 index 0000000..0066066 --- /dev/null +++ b/ch11/src/web/conf/plant.tld @@ -0,0 +1,32 @@ + + + + + 1.0 + 2.0 + plant + /plant-taglib + + A simple tab library for the plant application + + + + + Displays a character when given an integer + + letters + org.mwrm.plants.tags.LettersTag + false + none + + letter + true + true + char + + + + \ No newline at end of file diff --git a/ch11/src/web/conf/web.xml b/ch11/src/web/conf/web.xml new file mode 100644 index 0000000..c60d60e --- /dev/null +++ b/ch11/src/web/conf/web.xml @@ -0,0 +1,66 @@ + + + + + A plant application. + + + + resultsPerPage + 5 + + This value sets how many results will be shown per results page. + + + + + + + Resource reference to a factory for java.sql.Connection + instances that may be used for talking to a particular + database that is configured in the plantBook.xml file. + + + jdbc/PlantDB + + + javax.sql.DataSource + + + SERVLET + + + + + /plant-taglib + /WEB-INF/plant.tld + + + + plantServlet + + org.mwrm.plants.servlets.PlantServlet + + + + + Print debug information to the console + + + debug + + + true + + + + + + plantServlet + /plants/listPlants.jsp + + + \ No newline at end of file diff --git a/ch11/src/web/docs/index.html b/ch11/src/web/docs/index.html new file mode 100644 index 0000000..606c2b3 --- /dev/null +++ b/ch11/src/web/docs/index.html @@ -0,0 +1,19 @@ + + + + Welcome to the Plant Application + + + + + + + + +
+ The stand-alone application
+ The web application
+

This is the web application.

+ + + \ No newline at end of file diff --git a/ch11/src/web/images/banner_under.jpg b/ch11/src/web/images/banner_under.jpg new file mode 100644 index 0000000000000000000000000000000000000000..131c6a10b4fce0a65d11ee54cba46b10772eefbc GIT binary patch literal 21943 zcmce-WmH^I7bRFYL4&&_xCeI+?(P;KP!#TN2@Zur@F0ad6b>Q5-6`DN-ARV8d%AmO z{*0{dxo@3%KkB`@XRllLoqhH>@880|4ZwRvSp``D92^`#{_Oz#TLwr2kPr|N5fPBy zK9G=*kWnyDQQihNI{G^d9Bf=%9BdpMJVJ6JJbY3D930{g#H17yR8&-WL?3BCQqq!B zQc?crN8sLWML|ZvLPf=*#K*y>{C_?Ebpvov0ksGz2yh<(@HlV?IB@@Z0aO409MYS& z|8e+#A8_yph;Lq^zC%NQy8!wg01tYv?;PLLy=kQaXADMkZz+UOs*SK_ThSGO}{=3W{3VI=XuL z28Nba)?aOGfp%{09-dy_KEB_+hlNK(Mnxwjr=+H(|H#NJC@g{$mz0*3*Ecjmo0?l% z+y3Jw%+Afj78aK_x3+h7_x2ACk1nsSZ*K4IA0D6ng9{FT@Lys5cVzz; zTsUvI;NO-75#>L);NZR93;_ob=>sP+uA~Nvg$v$Ct`Jmwsl@!c-|uL+H7^LhxK5!F z((-K5UH%8!e?j*D3|Q#@CuIK}*#E$_1i(Omds{pN9Dq3BnLV2EC;b0%Q;tSJSPLeM zRuu)hirNASl4<7S{-pl-Go_GtEGt*_i7;9@-jItC&bDaq7D9gi=8=>{q4Q6qg4ihu zBz%qkA56<+4!?mMZY`KXhL>DmI6py~L7Q-%P%E z!|?v6;lKPz{a0&;Gy&krL2?#za$IZ_L~_6Av6f5Bq9!0;^yJa`huDD~r5_mvcWKuW zEZrDE7+&~-axQ}X%=dhr(R}fWd%WWKYqs-5L{H=4m&<+kGF8JPG?&?%q0Hb;BdB}Y zOplur!C2$e7-A`=w%Pf*6{-98NL;25EN?3&g0u#ohnbr4fJa=fy7&nlDkT4p}skLA<#)AKaR)k3TofKgBHV49V>9H7a zhFv7_xjTZuGlLl=F0mEk6HxTC_k6}BnffI3bM2gcjEqRTG+tw`9EOl9_j;#qe^#lq zZ&rb`nkL+duU?kF;gooz{gi*gXXQ@|2Xg+eLa@?zeThf5{(_dZJ~Pjq3fo}_*k!?Z97iG?UM+KcvKhvQMq6o6!zY# z-gmbus*cgtkkOF(605EvJ42lyYwRdm3U9~+2l=15Jw+Me2-6aMH798avbHF`&U~)* zYyWZf^@D=ELq5Z)X-JR1qmpz6Hz-nL z&N-VoUi7Fz@O7(^ZS^6`v8YX()MI!}2|EjKtnLeq=RC=3(#UM-EqUyYVMFk5yIRF9 zA1tLh3Wc3)o2$xI)fv@Gida*Sa=Tg{VyPk1#}i^Jn`Rf|yVPp$D33U$9w*V9+td2W zCOy18(aRkac6<+$kwFB(Q-fC8*HdNkq=%foF17dGpuXnJw5-zV%I2y4XUt1nKq0&Z z10CuHUMMjJ&Yx5f(JlF#RcXyB5ASL=r^KR8FKyt*Sk+T%Nos`DaWQi!QHbf$zPgHB zFXKJG8Uk-_A%?ZX+A3Ho0gI^Ev)P`?aQ-q@eCfhy$#8wqXnBO49RkEU1RQ*G7yvkXh?lkkKCnZ{->REi;^;CREf}ZMVL{sJd z#C)^_Og*V7nzdG`@v{(&6iS;I4I_|X$i+6+AX9lB-l!6_ic^tRow~VnC>^D!KAD3= zOBj?ShNfBuyY6GGj(d?VTzIyFw$!i;kNEYdWomgz3g{P&>_@Gh9*{M|UNK!gASiAM%A`1M=Sn>y-hr3g z`M57YpkasGp&KS;+|Xu7;Xt4!J!>)77-J%fES20({N3TV(L=fb`L_gDI7ISb?~2sf zoVlr`OuGYNEg2T~B76)Fd=2IQdEtkNi#s;5o^;vfOEdks+6TR8zv|+0F8SW~%Xsg{zBtv`X$l*xG@=rhGuOCGM(0}Qc75bY z&schB-m->3Z`$~B$e^c(nhvR4?JZFk3}G8ZLM%cUxQ zrN8f@topYZSHW=I6E#(SVJTuV^)d&7WpT?b>M47zkOo!_8G`&t{D`yZ89LVYrz8Sf z!6GBu1Wg4W^q@&j4WoRDktGQ0PkJQ91_K`UP24YipR_mPyJ5gfxSi-LCWhA7Q17^L z&V|H*+e&owEL-QR33M9%!JwE!ElRD?8uZzAwg=D2B|ABH_Titw_~td_{{V(JW?1We zj7ILn=B-S58G+EzWuArwwq9?X)}FEEvv}X58!~hyvVgl2TA=J+dhD-lnHd`s;;RD? z5dz6Z?l+$5O+5yPLvRsN2F3LD)WO>!oup88u#=F{7&ETP4W@0%=1IkCm+G zPpU`b%#1(J|JtOgO+zTlvT#2b)hUenQR?xiSVw2qDO7(H6Usms$L?fT)+-+2eg z1y+ZA%|==dKLeN&IUyiWuw*>s{R6y1PTwlJyo)M9KdxXj9JWe0jWZXCHQx#D1G{85 zivUoRHh&QxP|{EFEHAgWxUWi`@5qa6&?|7q6}BGEKwQcbvNQ7rH{$eFotFH=y(=Uy zDeekwIF@((@FF3N&7PmN&qfzlc5Z$@J;A`XYc#WL%R050j8#sRxgeddbaIJY{3P}P z)4{QKyyxlnnZ-GXW4^U!OCR|&Xzg*;TaL6ZyeFh@2sYBaH0<~k2-8_LImYnQY8R~@ zokGXaDNaKkN6eZUs53XH+?~DrYYaR?+9mzrKxtFjvW##hlt) zmUA(cKt(V3ztf)GZ58wm`4?kNi zwUiAF^II#8F=(57G=qYU9q6)4mG9sCxK(5mfElz7^!*FFgtP6vg?p0@o*eW2-0;)q zo30?0&CK7%(qx3y1j)u--CzlVTXog!P?kK@gF zXsWHn->~rMtyi0CfW6oXKhz^cm*46pi&sh<-7)iC+_^lt@rS z@{D)3p^n?aS2=vi$#FyO=h$@haxUb2Ox4tQWWVixia_)^sog@kP!Y)~QAJ<|7@;yZ z7We7Xr6waHtQfj~U6Z_!%!z%?DKRzbGxv`B_^t*J=nC|e_Rcjc>$&@CeaXXuhM@{t zf#+KKrPKBCT0ePG_!U_!fBuJY{m)`{WX24=alX$|9nEP=gwEUX(qNa{4VYha|0P8c zKjC5;2M-br&^X?yzt{+em%ej#GziK2Sm9E%BgybFq0ye;`?uD^^^$)8)3yuAo%eE3 z|DmeIBU37vqhsTcbyKtg_74vw=*_& z-{JKuP~#y)Q(2*0A}JZTwm-+chefjQ0-H3%}8y>mBBDgxhggWg3hGgyZ35s!09sHM{unuq6cU3o8?k$OsbjSU#m&(u}H}6&dIP zE)^Q1Qc}ExPBf+)ZqR!IAU*C1A0-pid?$JObNULR8HqJyIM*?w0RaRgiPA_bT)xmpYKoCS15=?ma!c1(#-b?W)o?qAo(D_0E zFfTQ^$6m50y{3lV*Ik0{2kCzCi-hB10gZW9Zu+41WAJ*M*DQl`Y)a~+h7A5N8e@@V zunK^Ufb)s;Xwj;N!M;>O59ixp>)9;h++ z`wJLOBsR}*GP2AQF2rIMYi{fzT?aaOJKx>`lJDz_Ka0<50xGNamZBgaj2XLS*WFc? zHx^d+6YQjLur&&*5raGl#Za=;W(#u8oH*#4!1H3JK>h|q1{y#q#S^(+{6Qe%yuU*A zx}7NrG)pp<3D-L5h(1zcyhsH2n*;?#-~}`f9iu+JCtPEdcQ|uz)gTqf@;hYuGsZ*%5W&Hpj>{G(L0u&;)KqSc!W(x*|)kT<^LDnhQn4C`o@c zwWLj>531(4&*@w_g+q$QI)N)b84r-`~7Z<+KqhyksE@AMQ@zV#=m3Hn|P|v^+u%@WU=J@ z#y0{212yWHT9@%*jchFPxu>QA`|?X)V~4T}UiacX6;sKBTS(vw7gbqYSVi?&R!TP5 zzL!+*BU|Xg86UFxaF#kJzecKH z*eAeyA2!|$qKL}aJ}~c%D8kHS)76vJ+h+^;fdQ<8{hA><1qh`8iebUy58LE>GT7gt zuc~`TXCUDbTTM787Grq)d$ivT<9IZW^8-;u-&8(MaKf)@1bDH5!gOSDvD z@|e6TPk*(h^3qT%+z)bk)#6+PW^m zCASk4c(vuA`WKxA6h#w1vdX@O?i)L=5}x&1!WoqY3zPlaR&Z^CyUm08E*Ti$WCi+g3z43C>)T}y9N-mXa*zRR(WmDYFD zeeunI0Cb>`bcT787XSSa16UOF^G)K8)tsrFRxhbWEK%4#_iU{48da z;#?1xgz1i4$E)^8Z2ykj!9T!7ga2m+Uk0SdN@TRLfvS_`YT$*bttR58Q%7x?Ep_O8 za=sdMTu4jJn3Acel7*pA@Hq(WAWebnHJ5L(f1hMq?6&oN)JOP_`NBwtPdW~Y`Y>}F zIJaC-$mOpXmFn1`l3`uoJ6Ti-^z+!SsV9S3VZ5W`C4F6V^;7oj^j^}m3V9i|t%Cr+ z+Zut3{V0ExtyNR>sdu4sMN9Cp)arqkVkI-T)r7|?Ewi@-Nn3hXKXx;+K12}@K>dPx zUU^U4{rtS*q?p42?%O5D(GhM*sS0{|R-U!7vW0@w9%anL#`q*6x4evkhlW-05{67z zr#-|2zJ}&4-@AKR_nVZz+1}qIgv{id*&pzd&62Kww9$;8E^rZ_amPNQd&*d-sXHWp1*JEqbz z-x@^b-PO}$=(jek+^)J>>IdV#MCkYO^y4`dbEZr1AFmjsjQ9trGSyCNtBJhjB@OF^ zanghmbeZ~P2MI+9pSbAuUUlg^`VIuYs0D3_IuFk8vPE7ayIs{>{AI{ZJ(RedZaqgg z7{Dy@`*0OqBGEGR4?uHU9fm!W>8!ex!!x5e;nEw-mwcmns>nLW?uqY<~g zy4+aq{v_NZEcaN?_v}}oLp6s@8qxS|KeA|NK*d5J$svvbkZ^u$K~_CrLvXuVZ9c!5 z2Al)b%WE%?3(Rx3nNACt&ionHL!M_idqzZ%6XZHID3Ma|ldR=j_bgS}I%81^bA?>* z!!S_}ctQkLnFJDC9a^QRvu)p+{Scma8;jC?Q8`PzyWK4k2T_L2LD?;ynyk zY>4+j%!}R@rp3r_A0GJ=9UQ%ql4;0@bZ)2jw5g5tR#24PQ%ajy7D8h}_RxnNhjA>< zSy=vqp~Bvj!(MB=RXzKjncCk@AGtrG=qGN*#w$jT^@`HmIPDBIC^Nh#O?8i)MdmvI zK`|(2XJ3SC(q6je;FG2!NjDGpx1`_!w|=tefD`i&ZI;Q1`Pqg`=2SZchm5Da601wT zmpML0k}ulzI)(q|rl}g_R3O5b5A)yCkZzRq7UF8@0WrQgD0E+<@0Isf!SaZ&$gXPUm~s%KB4?J5C&oJ*P@`PNYU-qSTMAzi6@`St zbu~XpqLk7=d2%x5Q(6sM`wzABkJ~WtfL`1Nhlxozi6XzmJ_(i4go*vMde%!fdzjx- z0H<1Pmh#LurvH^HKBNlnc9fo%6(qOGjaXb0zCdm!ip6!p@(#W0|ED z{bQPsFHLu2|4_l^=W$ys5vga1g#{1oBgo6?gK*I`zY~&}4x+QSI!YPu-Z12ix!L=0 zSLvE=>EdpozuNTiEjiZMxUh|#_Kme03$hW*7;~3bdtwN5qadJ&z&>31DRo_>_p*3R z*04MB3jZLL*JMRNb68Rf$_jNG5ItT9B&7H_#!=1gA6fMN0o<$2+(E#E^xuBtf{BRb(*EWy3*B_PYsFbW zUixlTi_oOvF7|$AS+RY#xc%bF*lcZ}eoHuGG%MsQtuPW}hk4?1u#k?D)5$TWD@-0?1#P z|CV?VMRhQFVBV$h+~fGnuW5%W;7TTEBW>)!{T4)=Ghx~C=cB}JYJ+X0KWn%)tM}ok z%L}ZvZm^?@JehC6zGx^gbz)0O(x%Gg4;SvkoUN2IgV-;`)H-_ z%G1ENwfdXA=`1VD2SR5xz<&Tdl+V%A@5dn#5~H#xVuhLOvo~yTXZy1y^|fu`&L$&F ztkn`rszM=Yr-^xX{iG_n`2}W%YUEsYclD4t$jbWy1$Hs-6?YUw0+O1$6=sCGCsBB%;nn?UIL`^OZFu#oNZ)1tPb;9<6T~&>@verd* z^pYeB3d^N*%Bm`m&j;PXqM;Mm2qnOKL&Bm>@o9ET-IxzuU--#SX=oC#X-KNm|EPn! zZ0`eUaEfY&HHoWs^};0xI5}1^Tlg-&1#@QGAUA5LT=nlw#TxB~-I7!puO8&SYe)*X zGB%RN9o|n{c@M9;_IOhnkNP4#!>g1s!>-il@B3k&rf$L+)HwISC))Hy3o@nH|~=8H%DMk*;!aoKy4D&yEDU~=|opQp-K)J!dOivcG}jtomR2;ykangrL9)Du2tn={@!qxbnnLw@o1 zfaz?%TOi+5B~%~pG_ed7YyJ#%uY-R6A3) zMyy4Sq_vqQlDAxx)0f%X{^q|E@0V+EOLxMD_Ui4fT6>UlaR;?4aAN9c!PqV|X80FWl&n42Er=C4Vwcxvcm8n6l{1$pB z%N_-~9_)q9J&g}W9L#Bbt(~jz)-+LLb0HUp1+}L2f)_ZmKnW7BqGR9VabfmVa%(Lp z1zr=n7R!2=qj7sx+}a)sI8i<%IboZ1ZxLB1z@rMRps0&JWqVbLqk8{Rykw=cj_nS6 z)W-n_Fb5F;=V58fXZZ%|@BoW!%7s_Z{&UT#8X72F^N@XNX^fqO> z=WJB<4gy5w2=>GPm%C#xQ6)!GgxSR!U1#3+e|6RjR?@S@Ge^Pl)Hf(gH5p_xWu(yu zGe2+M1Trb~?|4Q-I3!pQ`P;!7)Q6l+o9QGrHKjC}OhM_$5z36iJPDuu`OZB9v|9D= z`<>2I_$4zZr$t8XJ|;OzvO0m9J{x~^vgbxw`UINHA2_y()auv%uBmsheAFw)4$Wfp~6-uy2r-L z1(B{rf91k$+-IOf>_?5^1y$_VS$n$X+2Yq75nQ=-lI^`QI)>T(!YIvqo7Q%p4HL?( z&An(&^y|=wU!4m1-VDk!v<5K>JU@3D$ghn^wM)moFX7C7(h>Y!#j2&iU8WVy&CA9v zT>Si*ebNN(YB(G3_Ld;8h(b5<0ERfY4V4zS|eifY6mQE*C^I z_y6}47f(jgo4j|KJKM9UyQF2ky>4I3*)p@`705I+o_VtxPo3%I@1ZR$!E5g>yM~UXAIHZq_O;e zKR`L17KuGp^x)#5R*>Z}LXOMUaafe}yhkkw&@I||ia)}}fuuF~h9mygj=eB)s( zIXb%5o(aJV1Q?`om38lMKQk}vPzEul32rCWgR4&U-1*$v_I}2>-hJVuE$>cU4Mnkh zguN>TI=KZnTSwB`&|W5RkNI*$<=1&n8)R8+zZ#XSGt8{DR(UE^+Hdat{{RLJ+&`PbtZ@e7Li7NyYIe8S;hr-_-T`0RQ`dm1sB8&8-3flLnl8)B z{4usR3WM{00X0AP;E6`IfIU;VDSCit*rwc{t0sFe$y9Pu7;-x(nY&L9qpOi8+FB`m zXD^%fL@eVCfjO5}DcYK!KCkGr3-0{&(A?IpZ$=o;(ax0uD^P{;O*0m5#qk}T@up4v zwkGzD98B;f-8o}(`0B)`Z$K9rJOq|;Zwqhx%GvXE2*Z^RV}{)FfLVbD-LHzX5WMex zCfIVMqH;Sq?%cYUx!b|PzGX5f&S?6H1+>{Ws;f66<6vhtN;8^(Hvm;&2<2Ueir8pi zBCzYkkk=f(g7PoY!**xTRosGj`hEq+Vps8q za^dhn&;Ef)J)$j^QpY51N=u^1ecM67QrVwU`jsRF!6WfM zkVKxP$!lO^4YYZQ{)h_NkX^Bve zyZQ$Z+NY(X7ZxcPyVn*VegUqrQ5qkXj*Q+;U_pj~&ac&KT%IQ53j>BzI*%c#|tDcKgWs1#J$E*4>PYt)l~VLwPc_j9lMef zB)o@#)H5GemQpmUI<_NL0`(|=yp<$Y6+cJA(Oy;}o02)xh%4f!-U=SejPu##9$h|K zSk$M3B;&IK?!>xMkN*KMbN_CCHfn$57x}hB=F*5Yx8H0nvdR3T2`AeLF)zRRxEpsZ z2LIYxH$t2l8L_4rUzpw^EUx&OqWpF022%RH?mLM)G5Kzrj-ZDTu|Y^{Y{)e^`G!`T z{EbpQV-lb2LH9S~uVuv}kiovJQ$nya`g;Rz*hST^(@mkh;c*|ygWW*G{9+}f)$^?K zRn9iu4`19DVh(>FYwqO!NpS?5X@oCGS%5iGUe-A-(e^*1<3G<&u#)3HawnTcZ8@PB z9-Ym|`OaS@4hSO5bgDxyFzZLi*36VXbg${$-MpxX*?`Ek@)_8`={@&)TKfI$+uA|t zA-4q3**OrpEt|Q1)uRpoAv;?ql{ywI!{ga!faa^K+v-8lVNJ(?0STs171k{~H1NI4 zaVY&$#%=HZn0Or*F&~a?Ir^eQ($X3^u(vsj(Bgs6Bu=`|Uiopx+&kfCnv~QT1Da^O zJ?!ULt7ZDw)!wIEdcdjJui@4lMR|IR$qrWE21oKhd|CNx(2QP3j2WttcG8g&kiiY; zbp3uLXVsbCt46n9+hZHzlO6(T|2vs{GV@Uu-${Mr{6(B1=|OE6??NM^7! z_^CZg4iVk}#oV@y*~@MqPpL%Oit;-096ikWF0hKE^;yugo z_}ak3Cc^PP(Kp|k#`(#HSCcH`LsQ%?8F&}VZ4wW5LH?Hj^eojw7r5$>IO|jKmzP~* zNv>#@%%CCoA;tnbvOj)vi1!`aX$@ks{9B{J2x)ve46*ib%qL1*trTWvuy| zI}^qjY12G46I~3h55uJAUZWV}A#Qcqrf?Pf)6&|6Vv-h5y(-nPN-6wqGhRFK&|&oW zjEJD!XWzNCG+wg7GYUOTeOD{jWqF2t zTLnnkqOz-uC*CE1)tXu^v7<#6@PX(oSWTD4OVp*$^%r?~HfzW8v5y!GWP4>aT#owK zrF%X>yiIX*thMtklfu_@9Lr_BHR9r@QuRpL5hdNMOn;sacB+ki59*XKR}wxzff_5A zD(}#w+#C67w7X3_)+39|mgtMbGrdFyIed>OidMGOR!7CgL@bYYvT|+bM~;TiiGzK$ zv?*Zy>nXiugk;mbr8WvrB!!3t!=aKjzEek8>>7j{p4zkQtt{UdBu4ELAD%@e^^4os zHq5ck%4(QP1dH>Dp&Ebno~TQLz~P(hl(XdxWfMMyk@|Ch+{*)p8qx$FgE12%?A`tZ z%Xqc@1H|wcnb>X1cBUOo6*tQPLqCB(J4^JiD>kD{=Re35A6|O<4^gxQ{8Sx2oeQD( zw9w@GLzeI^9YxnuM9ROA)Y$_LD04Zvf9`Enz@5CTPIaQ>Hn z0AOLi_w8Q0IL41G*=Tty1zfo#m7xzFbVXmB)ijbo6ED0an2Ktr1}{n!xp|+ikaO5| zt(R%&uNhNS5Am(wTgW0%$nV4`%`hI+dge3Ps;e9bstW9NTRSvQ6zDRdM3r#8yY~Tb zA$qbZP=V55=s`<%GjR)e2^cw|)*DWTSPqUU=^O0^N(Qp+A!>M z_4huvgVoJ{xJ3djat{m9@@0Lw?!bwo)S^WjFNxE~Qtb8n{%yGi;wvo)fucN#vS z{o0?-s+Z%V%wuU2c3}73ZAOa_mJqx}$!s?u#ma88r~g1RM&m~F%lIE441^09qDI3x zC~+J6%f4;~yxTOFSLUZ;{HkeSl$%%Oa|(&-Xt>I@Z$n5zUD-YmBE4~n^dfS7bWw05 zofPb!8=4S@xRL5Kf|x8(r5A&{Uu>g|aveX4%<0oF?kYlB^zsp@Yk)Qc>Gs$`fJ6IN(k<6TJwYhN|-0T7(H| zO9ffuTgT?4ja|9}(1A9FB=wn5>`wKZK}_KW%o!d2B7?~%Dj zcLVoZ?(ZQN>)&qWt8w==XSon;Mi3KYZ+6gDXE)*%=#To37!|?hZdYC6iA6j2Xgo`X zS)PRd0M-p)_~&5^!T~K^RnS|pgD*Cky#evN)n)3-(Ti8wbr`2|Y}LKIV_~P5mHUa& zxxN@z(%$;#q`f(s#4W^Bm*2#D%@tXfajQqbdO7R&0Yle2?v%5Ocng;x1FKmMNbVz^ zRi%_=aPAM3DqG+@-eH4({U@M;uDMI1u6Z+9VXA9vz^x(sm8Gao>1!-&B#GsYE0<`g zu9DVhiQ-lJ%Avoo4=&eP%QdQuu*)EE_dfvXQ3#@yo3Upir1K`q&-t%PJ$a?PTg%;Q z^zrui@5Fff$#_+^Tb82=8sN1LHHlPG#$o1#is{q2#wB8n2coIAvc|SX7>Y=C?mvLy zy@}(Nt%Cwo$H%8zT=DXGVQK45Hg}dJHX=}qMDSDwD(K={6#LLP(A>&DDM%B~x*sgw z---Pv9W6m3Y1Mk6!NCy{FETHdj!%Y2&j}q^wH&Nk#uQRfG;8Sov$n*F>@53Y3B{~f z#EU52u3MI*PNPfo{WMrItNuAbB2o5JWWL;_cH{VE{7k&Y%ke}Pld=AK4?#-gW{raW1PwBlf zb#j~7?dZJ@$7ZJD(T^=g?&zWVrx;>TT<+Y_%Tu>A+ON1pdB*e0#-EYBLQ#x8t9`6u)M3S0!*Wo0MQ(vdg>m2MBX{;`oK)ly?I z1M#WSm75Ud;_TCODm~P`i{8y-EXXLOOqoAa6=m++DPSZS>PHsG>n`fP!j2(=^%xp_ z=Y|xSwNHE%Hyo+$idU0glKW`jV=^{FGhgj*1j`-XwZE^d+(?a$-KW|#hK2D2n3-h~ zzhw09VT_M-o7vCy%f%Zs>rTy{y>M`^lIT>Mas>zuh=L{?jffpAg4mqv&2xovcV0m( zDpRM8yAm`yF7KtVX|G|tGt2aY8UbZ%`z5NFa++b|Va2Mh^P7PV>r4Z@CO7EXQDIF7 zR@)%(&*+un)ceAe*=OMeK z)A(USGy>j8h~UZhW8t5|Hsq%i4d+WO0g|_p-i~LyHi+0M?9QSG3JpxNvAps(HMK`F zKl&=+zh7Wj#?R;fn!dHf!=E+v9M=^&d6jXc#GHrX&(5RgsEtNedv^HqPr~wz%^+Pl zbUWp})X(LDPRcs^(|B5XvUK11h}hSi(hgKeH}jLE<9p_7p=$U*KK_sM14=+Tlvhhv zy#?HN1ddOSXFL4&5DN*c!EO=+0YIK%_uOtc-PdcW@W*d8R5@sDKjuoO?^V;)E_35c zR|CL%b1*+7w8FReUn@ zs9K+ubyPx!#QsT-sLYO|To5U60!Xsag0xKeDgj~49M&Z%_pWM$znf9ueHnEAMKAQ6 z+i3721qE70pDlU+i2o5ef<0Y#%j7UjlGwi%3`YCQJ2CJnbKA}YbGLs~3{~*f+^9Vr-(Uirx^a?Hgj4O95>Q?<2jE zxJtm%zKotqrnZ)0;qzpxb|pP64yiy6ke%LI*r&A66ujBy#f%8=;3nrB6aLLjJwiey zun!grOkIrBmFbPF#8&U2o)7pN0~ArM<5(>?MN-WF88;r-y%Ru+~ z1Kbo4j~FSqjqH+4MeftMOx~}zoADrO+`I*?q-VuE{eZTdoHmIY!-%56nmKz63n zbb`w$Bgsc9z*>Migo0bgq8}$_a<_&jyf$^uTMTBq?uQtG&??qAW~n=U(@tDmJ5!Jo zJiOsr@;LjKcJ{1mnl+z(2`>2B1}TclJt)pCok+JR%Qoj5_2B+FxrT%LM>hq1FgBUp z)ML^L@OzZLf3!Re)f?qfJa!L|h4m7m)2+rPG@Zb2Aj}9N>ZKnMdHw^~F)LLIx`cu{ z9-OQ&LrrBoy5RTiLE~#`K~-W##Oh@XEPU=Po2P8`dkkMzc3OFJ$`1lf{*2khxRA1w zqA&>DiB^uGDdm7borSckZsfrGg*Bh+2mXD~z~* zy|pe>d-!=t0@)gexhU01-ra0LW-aGy=;G+V|8Tix#SXJL&kcI@81)xyR61U?X>QZj z?%$!%e})y?YZI$;Dvo7Mr}MD8h1;f$E}9%P6!~=P^dLOU<370c;MpNf%SDnuP7U@+ zh(@UGfZ9J~G$rQ4c+Pw;PdLNx1jYV%TK`q+=#Z#VZVP!I(5KlEJB*VFpH(yRVw8t zWQ|9sB(|`AbD@fpalpz)YUlw$XsugpGEMqA-Heq3X)k%u`hh=FGh(>v z)bRskyi5t^t9jW(Y1_cGZUbk_&L6{}^aO>X7>6&|B_@N(qg~oZflhRhS`WJ6shezM zYT08*MS>RVMiQfo~o10!Duzs$j0f1MuJjlG-8j?`=L0W08qjN@Diohq7QfR{! zr{UYZ%L+`~XFCSn<_p1Dai%0ihco-0GuEW2tC4`lnA^B>*d}+9TNv%(?85bVtQkgQ z75C?F#usx5jV<+_+~q2bLu8&vV7T#5-lBHU)EBK~+qNCj7*^fk7*`WlQl9R9&TpwG z2qffs)e8@XukOz`ov@O&+$Y(@?KIw`wf6(BZ?A1dE{7zoWH%vuf=PqE>0N>FvVw4= zts%Q~VB*t^jJ?NZT!d1|dv8rIt7Py?>Zj}28q{nZ=Q$c)X7#DFMhX8a-pwZBNRa+?>nd7|ues<}hPL)4d z89MJwjlaxY%sVoE7f8MWgE4uj8w~+U?1l|sBh-}_Pj!y9AalH*Owe9Kht0C3Eum>L z`2B8b)V}Bh!JLW!WDKu9)&?;<;jLg~X1WB#bSpLpvNb-_QF3979VQM5Rt1QBOYU=f z$_viw2%$3)t<26s}}Y2US=LOi<6~g*X1fON;7|^D6EmXon-{ z%Io|d%zSE-7`nZ;dc}Na_9M2+gEw$useKH%09#~UdOPjj)BwDVl$!bO`1G86gT6h> zZU#Snm5%?D>i=%DFJWl+C{|&dOuyaY0f8NGSDhO@v#9k~=bqG$G-$YMJ5LRB0L1S8 zoUtJ}9BxTJ6U>?9Do3)DtMG)DdH?MMYGbeq#NBwk14|ViM;~QD=rp4hN4`7~wE9x| z|H4iZt`Smd{i^e58Bc9<1TyG0LWH(XJ8pf-rcHe5_1kM(OUYKwRljcTd(-u!MD*E{{mOlP^soB zDd^y6-DhuvoN7R>EDqLzYPQaQo zD;Cm2aB#sjW+tmiFIjtxbDzgGVlGXRQ4`)pAQrqW+L{_tY|NTnG4gSwCwwx7Iic~7 zu?$NfEYCypWRtemlt9lljXfW)uTHGRdUd~sl#hX22*Un2MGfK%Mk7xLb(%Ob6@j5Z znvk{!FDzQV^yFUsZH(uZ7rXJq&FjrYTqTe}O+Q~d;r{w=H4J}|!cue8MLPQJuj(a7 z!`fi9lHtB=wD6;O0==&lyKEa`PhmZYl&svr5x*HvJx>)aV&r1!&Q|4qSTrDf{kt+t zob))xU-`+~&+9jt_Dk2QisGbdBVHY>sRG2Le_mA##l^xXBzbz$6ZP3};L`KU5^lv~ zG>}hsO^y$`tXhsUT{{}*QPOa6p$7E890LN%GJ_%}d$P7#S@mUzhAVOx&t-QNaWZH3 zZ#b}R+m!$89cuyi#`Qmp_Z&E@vKT(u(zSqc*jZZkRJ|(YK!Fs;ftXz5NXr`c)8GA}sof?2^lLct#Fa=~oIfz^s_*xGvQWjC#)I4+NGW5X6>Yj(eVF zzlXc4$o&2kS6-T@L+?p0gCUUwiktq@d`;+F7h(3JYqcm)XHx$Ny~Oyn+=J-7II^R` zHr1>qFpN2_N~MC#!PQTG&FCMXq1of=H!scMQ(^zq%29j4xPtalcYqAgKt8Fv{_}Ey zMT%gFX+Fqn2`-?7q{IR9Jbz^UNQ`)j&X&&G@JoWo+1{B6ilgc*LRd%!g3d_GzNz=3!)UQsWZxijmv_KOQA( zCyKeQI-y=!sphd?3!1>OEwV76Wdb7Gz!DJ&ED~t|vnwtaC*pg^7E%UpTqxl{I@DI?LZKeC&S7&!c>}$Ty$HB3rx;g+xAVFJX z>8EmhKMbw%6jnQnp3MV*1@G!?dAEPDbacA*40QmAp2XmVM;_s{q4_rs~Nu@;Q3ie_qb16n+y{%$jnL zZBNLoPOriTSk6R`gP?M(Ow61ATQAoY)P&dNgMa}i_#K6igb_? ziXcrukSdBu4@wK2&=IL2bO=ppAq1pICsgSj{5JpD*_nO$c4uGq;mn=6kN2K)%lVaV z6}kMe;j~7@@Qy5o?Mj~psY}}>kQK&#(Z7v~GUJ?75PIR&)#&yp0K2~bFsfLj41>ee6>dk8^|n-H%FH-VsgllD66%S5$aPI~$Jqk6Dx5)+ zzJ44GKAeUjH5M#2+B2((L_Fw>@2ONC{8n2!{^sYmQ`h{@Z73kIafoI0x*zw~B&Jff zxAlN}cdvtsjlPOX_nKes&zHefuVcZxaR`Lgz9&2x!Z15Owv~DOL21Z~<(rWLyC2)y zD2JD2t)jqDp&~s+yb^NpUjVu+sJ~Hm{r-K2eX58(+Df}fqSjc$=@;2E0@~Nd=3P`V z2_;%L<^IDB@dV1#Zi$XbI#_5hD2YODRsjEud343Ho(D^9RhynBe*LMf!k5S0C^T^K zZs+e26y1Wq_+siG&!x;khtL5p6!ld&eO0<%MR0FYtJl||xw-ZA*U&6@6UZqvQ=a~o zrfUgF+W6h_YNvVZIO;9zRiR7hoaT9%USD`Gd3CjD`O3P`YL#;?Hr;X zFJ}&1IE3@HmgZu^$!r`;E6<|oiQm)ezMsGIkbM=b^zdoU2#*E(dCc&M#b%|{j~8qg zy-+zS=7f{+suykFG(JSkF|;DzM0K9)kdapz@tOXLE=dIjI);Gp`p0iq^E|rjgKMv^ zJ4fntET=MF2|ac$$&b~;=Tm|~npOt4UW5maa3BUJ6f2)>oEj&el+CQ|Jqy@L*0e35 z==SdpY8VJqKM)aqVogn0y5hobvUAu{SqOFU+5;{LEK#lpIgLT+U0|fxs3^-BP7T>P zXqZLDD~nk{t_ILX7JXTFCYt8vfw{&a&*McGzlEmGZY##xa*_Pz+J+m#boNG+>>&rr zr0CTamXnHZazhJm%xw8lu{qx}fk1g6C2F?rIp69BEB+G*azyOpr~LH2YAbDhyd5`K zS>Yir79^pKi5mzV#c%|&$+`>zz+UY42JsqU)qH4vI`oO%ek}Ez(08hMFbpU;n+Ew&yY{YSHJwjwrKEB+X7@ z)(+Vn{X*@oEm!tywN=a-)+5JMtSd;2yGKv-!q6t~?{{sg=qfKa?T4iG5}qYhlq@RP#Kk-!4@}glDz0 zIq+fUYMDqG)pLobyZsVT5XSm(NwiSLiOkS_pKl%wIl5-4x0$Yj_u(aTD`}8xP7u9* zxq`ybr`HvdMOc#^GTY3C8ix;_l^(QWMh;H5nThJCXZFsZFYG3d*r=?nkJ?Jne0HqC zhG}}Q&EPYPxk+nK?HmG^U`><0$P-=yEMZ+>Ay(kJdha2t?*_D|fJ6TZ3r(A3#6@AU zPj2X^NlX^oM5?#5!#Ok*uGq?1g>RIj6t`h_KCF1x9e-J>76=u^H8w8K0(J+qQ*Rh+ z@1?t7RV4%2qP+o>;TG!U%Vo^yOr)roF+?cz11^7Eyho}R`7G-WCBc5r7}fl3WE+5-7Z(T zT$)n?i%mmy64rUu({$e@XW7;OX_!Nf+O>nYCdy8r~cKmnUCa>U4bDN1JQn|%cK<0s9gC=}DVCBM}dSK<_ zz09(N?w1BDw-l*y-a(~dC&-G4iM4Tuz=&9r;pE5ubDli}eA4#^c~3=2Urm5jD3fhd ziEFl!^Wj`wT-nc4kU>g$cYI>Wkez755(U}YMPYvCT9+jsCi+Z(CNg&7V&S!zf6xAL zrPIzk^4a$7fW-2338iaKC$2Xv{_FlkPQhOQ#2Ubix&Z-l6lMho=xGgp6ZF1pj==p7SJ7Qi)^9zBqe6l3$E z_WtN7m4+~ts~kn=gKz#Rh`f^=bgC3((fwTd86kHp z?tU2tF>&z1W#XQdJdxCw#@v~7vGIN9@DjI`b8e_)*z4gxIKM6wxfA($(Gbc8B@I@2vk2GTO#_H4kXiA9A8}1Lb zg!x^L+`oX_xs)FqC2<|iofarrH;+Ak|D{9^*~3aylW~a^;_MRlK7+6EQ7`4@TAbY) z>X5~eL43Lt)7Y5dq?`3Bp~jkfo7-%wNs!g=<_;TG*L%6Y+nkzvWsFh3X$kgCpJ0UY zm}gAvu&KnL4g6-=;(Hh!k2%JX%8v5{{c~a`dAaGcg22tm86I<+psUo{ZJ;}gta$|n zgaW21Iezx{!$A^+G0t=@gZgra!)Ndlq4oe`F`vdCqL#JB^v~_~qL`ukxvxtI3|Sp2 z<~U(5|F%S0I?oV2t6=1snNf|$3(ilWJbl~+4(({1eTUQs;g}qNQ7_KDJ6E=YAzBda z8(>(x$NN)>|1$hpOX&Dd=K>&a7?5Nl&p9mW$)pCSm80VBu4@r`vG&DgISmS*Z<(J7 zY5m){UpwY!Cj30Iik%Y6y`lVomv^X3r@MIVxmkpa>(Q*EZQecKJ+BjQG9s@NP&6_v zmneey_|+!tjGKsI1g;*hEzM}Ha6_(f?5KiP&CEdRebiM$_)jydelRSw`f;>CiOfHW z!n=Dsvn&2Ct#U)nhGX7SIvO{lS7>JMgy3GQTWvvAMfmd+jk~!S58WiJbl!DV;W(J@ zi1#q_eD#XI3L&?1w_Dg})^EuxymKnv54Ud-GqJYLdP{z#kI9z`(o;}bUkauijl6K* zGj@Vt=};E#j&!hybTY469rleZZv_1JU}7}0kEUC^lBLR4d?opLm_$3DS4aRIsmXNi zGq?G5$&{jcAioEAzz6GuQ-Z&w88FRK%#<+Q;r@h9A>vIX7dv_vA4FV^obH~C*SwL? zmq&fPKBZ>oIJm61CASKxP9ru~hwWW`?@b?7_W&Z^ufXm_Z!(4I1TjaZBIR|{M^-Iz zqlKP$#qCCg)>JZqP)5uDCBTEic?|H$1gP}Tq*@~J#SezNk zC@{Vlr;tOId*^m3#=21Af^XrQG#%V(X=DohY~J*dd9+EaX&CY7#A;b?>JtqshK-mX z5;gW9xTaAL;7Imx!{SI#=N_#IF9>8WiN@sEQMM}8oCzlDpR-9k5?1^UZQ~dhTzm*{ zKI?TZKWw}w04kkvromE6xcNg;2o+&J1v-;rLKSS|iyelqj8r#;~3 zZDQJf7ufBsICEGOzQ#vKbO;_gkFASU={FY6PB2oG%Tv$ei&rTr@{Hk9J{zMG(dt0n zf=-^XzW_E1fD3YKf)X0T#IJiAw@{4UB_tkoFy2$8CO!($k{g5s zZ8YU^9f}Gj2?)At(g@vtKlnIi>9|-Rw5>)Yf%o;O; zK`C7$g)tT#N#UJ*TW#^#we44=CMm#eedP?v97#}h{@1+Jx4e1G5A*kW$`!qHQ(p!) zXeSiGDS*6EPxMDz53k*07psFO{EC+%MVod#suJ#jVe z6}E$;ZG#J;-7t~NimX761YK@BIbe~Z=ae$O8KuU6HGM)!xJ~kTNawt7RhV~qw^kJ3Hh7DoCsNtel$Nc+DgoIuFc6*zh8c%_u|&vfJ;}) z^TNFkEO6f<>JY#oDSM^4vXkpZ-7pz_x-WRGzjMWIBo1FMdCvagnok&>HChTxmsem` zm^a;@!X-9d4DSYh^3p1y1ppXTjmf*PMpqeJMl>jqCO-NG9F4A02l)G@?hv~-^j!vw zf2M+t)tbe;GJlt6nH_vmFmcN<$yF%BS(kE0KS4Z>1+B*w{Fzr-zsA*~=SAt{SuX_dgs=P5af$>7x2V_e|WGEjp z{vYQ8CZgYmhc@3v?=_&*V;^-&c$eSUF!?Kl@2)HiiVrjTYEP$U^YmzVr}Z}C;X);- zGv6sY^zQQX1(xE^qcbw4>dJ*w3MGhG{MyujT3_^ckW2N>Q24=THWrgDSjDM`#OofV zLwsmxC=7foXA{+g$#<+n_0{rB8iS{2)SU$Aa#Y$l=zKuFRYWplTufH^W13Q4S#xc3 zK9-e%g5P~1Aj5}z6)?8lX##)Q#{fX^lBY*0(nKh{%%ML$?4KZx}%+Hz!V&Tyhn=s2Mx44H& z_w?AR;d@zcSNMR8&!LMa%eRtKHYtq3cMg;Yzj4^9Cv9(?OMjnWO}~#yPC46XT34L( z!V&?pYd!lF`|Y#zl9v$T!tQbsFv3>Db2tHy4Pt!!4WIKejOMu7-C|sFct29{rV4Mcg_p| literal 0 HcmV?d00001 diff --git a/ch11/src/web/images/cyc_cou.jpg b/ch11/src/web/images/cyc_cou.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed0556c8da702a9316b72a885aef6fdcd8bc7a12 GIT binary patch literal 15502 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

The servlet client for the plant application.

+ * + *

Extracts the show parameter from the request + * to determine what the user wants to see. + * Valid values for show are:

+ * + *
    + *
  • common: Order by common name
  • + *
  • family: Order by family
  • + *
  • name: Order by botanical name (default)
  • + *
+ * + *

If the client sends a letter parameter, + * then the search is limited to records that begin with that letter.

+ */ +public class PlantServlet extends HttpServlet { + + /** + *

Extracts the show parameter from the request + * to determine what the user wants to see. + * Valid values for show are:

+ * + *
    + *
  • common: Order by common name
  • + *
  • family: Order by family
  • + *
  • name: Order by botanical name (default)
  • + *
+ * + *

If the client sends a letter parameter, + * then the search is limited to records that begin with that letter.

+ * + *

Once the choice has been extracted, + * this servlet uses the org.mwrm.plants.SelectData class + * to get results from the database. Once it has the results, + * it places them in the session under the name "results" + * and forwards the request to /plants/displayPage.jsp, + * which displays the first page of the results.

+ * + *

If the debug servlet initialization parameter + * is set to true the results + * will also be sent to standard out.

+ * + * @param request The request object. + * @param response The response object. + * + * @throws ServletException + * If there is a problem when processing the request + * @throws IOException If there is a problem writing the response + */ + public final void doGet(final HttpServletRequest request, + final HttpServletResponse response) + throws ServletException, IOException { + // The default choice + int choice = Constants.SORT_BY_NAME; + + // Check the show parameter + // to see if the user wants to select anything else + if (request.getParameter("show").equals("common")) { + choice = Constants.SORT_BY_COMMON_NAME; + } else if (request.getParameter("show").equals("family")) { + choice = Constants.SORT_BY_FAMILY; + } + + // The results from the database + Vector results = null; + // The letter that the user wants to sort by + String letter = null; + + // If the letter parameter is set, then make the appropriate choice + if (request.getParameter("letter") != null) { + letter = request.getParameter("letter").toLowerCase(); + choice = Constants.SORT_BY_CHOSEN_LETTER; + } + + // Obtain the results. This is a Vector of HashMaps + try { + results = SelectData.getData(choice, letter); + } catch (ClassNotFoundException cnfe) { + throw new ServletException(cnfe.getMessage()); + } catch (SQLException sqle) { + throw new ServletException(sqle.getMessage()); + } + + // The debug servlet initialization parameter sets output options + if (getServletConfig().getInitParameter("debug").equals("true")) { + // The top of the results display + System.out.println("\n-----------------------------"); + + // If there is no data in the results, tell the user + if (results.isEmpty()) { + System.out.println("No results found."); + System.out.println("-----------------------------"); + } else { + + // Each record in the database is a HashMap + HashMap record = new HashMap(); + + // Iterate over the results + for (Enumeration enum = results.elements(); + enum.hasMoreElements();) { + + // The current record + record = (HashMap) enum.nextElement(); + + // The cultivar name is optional + String cultivar = ""; + + // If the cultivar_name column is present, + // add it to the output string + if (!(record.get("cultivar_name") == null)) { + cultivar = " '" + record.get("cultivar_name") + "'"; + } + + // Print them to standard out + System.out.println("Name: " + + record.get("name") + cultivar); + System.out.println("Common name: " + + record.get("common_name")); + System.out.println("Family: " + + record.get("family")); + System.out.println("Description: " + + record.get("description")); + System.out.println("Image: " + + record.get("image")); + System.out.println("-----------------------------"); + } + } + } + + // Now store the results in the session + HttpSession session = request.getSession(true); + + // If the results are empty, + // then store a flag to tell the application as such, + // then remove the results object so the pages don't try to work with it + if (results.isEmpty()) { + session.setAttribute("noResults", "true"); + session.removeAttribute("results"); + + // There are some results, + // so place them in the session and remove the noResults flag, + // so that the application knows there are results + } else { + session.setAttribute("results", results); + session.removeAttribute("noResults"); + + // The pages will need to know the number of results + session.setAttribute("resultsSize", "" + results.size() + ""); + } + + // Forward the request to the display page + getServletContext() + .getRequestDispatcher("/plants/displayResults.jsp?start=0") + .forward(request, response); + } + + /** + * Sends any POST requests to the doGet method. + * + * @param request The request object. + * @param response The response object. + * + * @throws ServletException + * If there is a problem when processing the request + * @throws IOException If there is a problem writing the response + */ + public final void doPost(final HttpServletRequest request, + final HttpServletResponse response) + throws ServletException, IOException { + doGet(request, response); + } +} diff --git a/ch11/src/web/java/org/mwrm/plants/servlets/package.html b/ch11/src/web/java/org/mwrm/plants/servlets/package.html new file mode 100644 index 0000000..d9ac8dd --- /dev/null +++ b/ch11/src/web/java/org/mwrm/plants/servlets/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants.servlets Package + + +

Contains the servlet for the plant application.

+ + \ No newline at end of file diff --git a/ch11/src/web/java/org/mwrm/plants/tags/LettersTag.java b/ch11/src/web/java/org/mwrm/plants/tags/LettersTag.java new file mode 100644 index 0000000..6911f3f --- /dev/null +++ b/ch11/src/web/java/org/mwrm/plants/tags/LettersTag.java @@ -0,0 +1,63 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants.tags; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.JspWriter; +import javax.servlet.jsp.tagext.SimpleTagSupport; + +import java.io.IOException; + + /** + *

Converts an integer into a character. + * The letter attribute takes the integer, + * which is converted to a char by the time the tag gets it. + * The tag then writes the char to the client.

+ */ +public class LettersTag extends SimpleTagSupport { + + /** + * The character to display. + */ + private char letter; + + /** + *

Processes the tag when it is encountered on the page.

+ * @throws JspException + * If there is a problem processing the tag + * @throws IOException + * If there is a problem writing to the client + */ + public final void doTag() throws JspException, IOException { + + // The page that the client will receive + JspWriter out = getJspContext().getOut(); + + // Write the letter to the client + out.print(letter); + } + + /** + * + *

The setter method for the letter attribute.

+ * + * @param aLetter The letter to display. + */ + public final void setLetter(final char aLetter) { + this.letter = aLetter; + } +} diff --git a/ch11/src/web/java/org/mwrm/plants/tags/package.html b/ch11/src/web/java/org/mwrm/plants/tags/package.html new file mode 100644 index 0000000..fcb8df4 --- /dev/null +++ b/ch11/src/web/java/org/mwrm/plants/tags/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants.tags Package + + +

Contains the custom tags for the plant application.

+ + \ No newline at end of file diff --git a/ch11/src/web/pages/footer.html b/ch11/src/web/pages/footer.html new file mode 100644 index 0000000..8511c9c --- /dev/null +++ b/ch11/src/web/pages/footer.html @@ -0,0 +1,3 @@ +
+ Bottom banner +
\ No newline at end of file diff --git a/ch11/src/web/pages/header.jsp b/ch11/src/web/pages/header.jsp new file mode 100644 index 0000000..135f4a5 --- /dev/null +++ b/ch11/src/web/pages/header.jsp @@ -0,0 +1,16 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> +<%@ taglib uri="/plant-taglib" prefix="tags" %> +
\ No newline at end of file diff --git a/ch11/src/web/pages/index.jsp b/ch11/src/web/pages/index.jsp new file mode 100644 index 0000000..2b9ae28 --- /dev/null +++ b/ch11/src/web/pages/index.jsp @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/ch11/src/web/pages/indexBody.jsp b/ch11/src/web/pages/indexBody.jsp new file mode 100644 index 0000000..6410604 --- /dev/null +++ b/ch11/src/web/pages/indexBody.jsp @@ -0,0 +1 @@ +

Welcome to the plant information application.

\ No newline at end of file diff --git a/ch11/src/web/pages/menu.jsp b/ch11/src/web/pages/menu.jsp new file mode 100644 index 0000000..135b8cc --- /dev/null +++ b/ch11/src/web/pages/menu.jsp @@ -0,0 +1,5 @@ +<%-- This page is common to the whole application --%> +<%@ taglib tagdir="/WEB-INF/tags" prefix="tags" %> +
+ +
\ No newline at end of file diff --git a/ch11/src/web/pages/plantStyle.css b/ch11/src/web/pages/plantStyle.css new file mode 100644 index 0000000..48b3129 --- /dev/null +++ b/ch11/src/web/pages/plantStyle.css @@ -0,0 +1,75 @@ +.menu-main { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: large; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.menu-sub { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: medium; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.footer { + color: #000000; + background-color: #FFFFFF; +} + +h1 { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: large; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.letters { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: medium; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.center { + text-align: center +} + +tr.template { + height: 500px +} + +td.template { + width: 200px +} + +tr.resultRow { + height: 250px +} + +p.left { + text-align: left +} + +p { + color: #000000; + background-color: #FFFFFF; + font-family: Arial, Verdana,Helvetica, Sans-Serif +} + +.italic { + color: #000000; + background-color: #FFFFFF; + font-family: Arial, Verdana,Helvetica, Sans-Serif; + font-style: italic +} + +.results { + color: #000000; + background-color: #FFFFFF; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} diff --git a/ch11/src/web/pages/plants/displayPlant.jsp b/ch11/src/web/pages/plants/displayPlant.jsp new file mode 100644 index 0000000..6e30cd6 --- /dev/null +++ b/ch11/src/web/pages/plants/displayPlant.jsp @@ -0,0 +1,15 @@ +<%-- JSP Directives --%> +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + + + + + + + + + + + + + diff --git a/ch11/src/web/pages/plants/displayPlantBody.jsp b/ch11/src/web/pages/plants/displayPlantBody.jsp new file mode 100644 index 0000000..9c37af4 --- /dev/null +++ b/ch11/src/web/pages/plants/displayPlantBody.jsp @@ -0,0 +1,31 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + + + + + + + + + + + + + + + + + +
+

+ Name:
+ Common name:
+ Family:
+ Description:
+

+
+
+ +<%-- We need to go back to where we came from --%> +Back \ No newline at end of file diff --git a/ch11/src/web/pages/plants/displayResults.jsp b/ch11/src/web/pages/plants/displayResults.jsp new file mode 100644 index 0000000..6c7c31c --- /dev/null +++ b/ch11/src/web/pages/plants/displayResults.jsp @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/ch11/src/web/pages/plants/displayResultsBody.jsp b/ch11/src/web/pages/plants/displayResultsBody.jsp new file mode 100644 index 0000000..0c09a66 --- /dev/null +++ b/ch11/src/web/pages/plants/displayResultsBody.jsp @@ -0,0 +1,63 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> + + +

Search Results

+ + + +

Sorry, there were no results for the search. Please try again.

+
+ + +
+

Number of results:

+ + + + + + + +
+ + "> +
+ +
+
+
+ + + + + + + ">First + + + + + + + ">Back + + + + + + + ">Next + + + + + + + ">Last + +
+
+ + \ No newline at end of file diff --git a/ch11/src/web/pages/plants/index.jsp b/ch11/src/web/pages/plants/index.jsp new file mode 100644 index 0000000..3c51457 --- /dev/null +++ b/ch11/src/web/pages/plants/index.jsp @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/ch11/src/web/pages/plants/searchForm.jsp b/ch11/src/web/pages/plants/searchForm.jsp new file mode 100644 index 0000000..0043e00 --- /dev/null +++ b/ch11/src/web/pages/plants/searchForm.jsp @@ -0,0 +1 @@ +

Click on a letter above or a link on the left.

diff --git a/ch11/src/web/pages/template.jsp b/ch11/src/web/pages/template.jsp new file mode 100644 index 0000000..a1fff41 --- /dev/null +++ b/ch11/src/web/pages/template.jsp @@ -0,0 +1,47 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + + + + + + + <c:out value="${param.title}" default="Plants"/> + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + +
+
+ + + \ No newline at end of file diff --git a/ch11/src/web/tags/simple.tag b/ch11/src/web/tags/simple.tag new file mode 100644 index 0000000..8683c7f --- /dev/null +++ b/ch11/src/web/tags/simple.tag @@ -0,0 +1,12 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + +

+ Home
+ Plants
+ + +  By common name
+  By botanical name
+  By family
+
+

\ No newline at end of file diff --git a/ch11/test/org/mwrm/plants/PlantWebTest.java b/ch11/test/org/mwrm/plants/PlantWebTest.java new file mode 100644 index 0000000..f1c5093 --- /dev/null +++ b/ch11/test/org/mwrm/plants/PlantWebTest.java @@ -0,0 +1,110 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +import java.io.IOException; +import java.net.MalformedURLException; +import org.xml.sax.SAXException; + +import junit.framework.TestCase; + +import com.meterware.httpunit.WebConversation; +import com.meterware.httpunit.WebResponse; + +/** + *

Tests the plant servlet. + * It checks that the web application is running + * and then checks the session is emptied + * if the there are no results in the query.

+ */ +public class PlantWebTest extends TestCase { + + /** The URL of the server. */ + private static final String SERVER_URL = "http://localhost:8080"; + + /** The web application's name. */ + private static final String WEB_APP = "/antBook"; + + /** The response code we're looking for. */ + private static final int RESPONSE_CODE = 200; + + /** + *

The constructor, + * which simply calls super(name).

+ * @param name The name of the test + */ + public PlantWebTest(final String name) { + super(name); + } + + /** + *

We want to make sure that the web application is running.

+ * @throws MalformedURLException + * If the URL of the web server is not correct + * @throws SAXException + * If the response can't be processed properly + */ + public final void testIsRunning() + throws MalformedURLException, SAXException { + // Create a WebConversation object + WebConversation wc = new WebConversation(); + try { + // Send a request to the web application's root + WebResponse resp = wc.getResponse(SERVER_URL + WEB_APP); + + // If there is a 200 return code, then it is available + assertEquals("Web application not available at " + + SERVER_URL + WEB_APP, + RESPONSE_CODE, resp.getResponseCode()); + } catch (IOException ioe) { + // We can't find the server, so we fail the test + fail("Server not available"); + } + } + + /** + *

The application should detect that no results have been obtained.

+ * @throws MalformedURLException + * If the URL of the web server is not correct + * @throws SAXException + * If the response can't be processed properly + */ + public final void testSession() + throws MalformedURLException, SAXException { + // Create a WebConversation object + WebConversation wc = new WebConversation(); + + try { + // First send a request that will not produce any results + WebResponse resp = + wc.getResponse(SERVER_URL + WEB_APP + + "/plants/listPlants.jsp?show=name&letter=X"); + // Check that this is the case + assertTrue("Session not cancelled after empty results", + (resp.getText().indexOf("Sorry") > -1)); + + // Now go to the index page, + // where there should not be an error message + resp = wc.getResponse(SERVER_URL + WEB_APP + "/plants/"); + assertTrue("Session not cancelled after empty results", + !(resp.getText().indexOf("Sorry") > -1)); + } catch (IOException ioe) { + // We can't find the server, so we fail the test + fail("Server not available"); + } + } +} diff --git a/ch11/test/org/mwrm/plants/package.html b/ch11/test/org/mwrm/plants/package.html new file mode 100644 index 0000000..a9c3f06 --- /dev/null +++ b/ch11/test/org/mwrm/plants/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants + + +

Contains the test classes for the plant application.

+ + diff --git a/ch12/ant/org/mwrm/ant/api/Copyer.java b/ch12/ant/org/mwrm/ant/api/Copyer.java new file mode 100644 index 0000000..bd74604 --- /dev/null +++ b/ch12/ant/org/mwrm/ant/api/Copyer.java @@ -0,0 +1,100 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.mwrm.ant.api; + +import java.io.File; +import java.io.PrintStream; + +import org.apache.tools.ant.Project; +import org.apache.tools.ant.DefaultLogger; + +import org.apache.tools.ant.taskdefs.Copy; + +import org.apache.tools.ant.types.FileSet; + +/** + *

Uses a {@link FileSet FileSet} to implement a batch copy.

+ */ +public final class Copyer { + + /** + * The default constructor. + */ + private Copyer() { } + + /** + *

Copies all files that match the following patterns: + * *.xml and *.xsl.

+ * + * @param args Command-line arguments, + * though they have no effect in this class + * @see FileSet + */ + public static void main(final String[] args) { + // Our tasks will need a project + Project project = new Project(); + + // Add the logger + project.addBuildListener(getLogger()); + + // Instantiate the copy task + Copy copyTask = new Copy(); + + // Build the file set + FileSet fileset = new FileSet(); + fileset.setIncludes("*.xml"); + fileset.setIncludes("*.xsl"); + fileset.setDir(new File(".")); + + // Add the file set to the copy task + copyTask.addFileset(fileset); + // Set the destination for the files + copyTask.setTodir(new File("copydir")); + + // The name of this task + copyTask.setTaskName("copyer"); + + // Add the copy task to the project + copyTask.setProject(project); + + // Call init() as good practice + copyTask.init(); + + // Copy the files + copyTask.execute(); + } + + /** + *

Returns the default logger for the project.

+ * @return DefaultLogger + */ + private static DefaultLogger getLogger() { + // The logger for this class + DefaultLogger logger = new DefaultLogger(); + + // The default logger needs somewhere to write to + PrintStream out = System.out; + + // Set the output streams for the logger + logger.setOutputPrintStream(out); + logger.setErrorPrintStream(out); + + // Set the message threshold for this logger + logger.setMessageOutputLevel(Project.MSG_INFO); + + return logger; + } +} diff --git a/ch12/ant/org/mwrm/ant/api/Deployer.java b/ch12/ant/org/mwrm/ant/api/Deployer.java new file mode 100644 index 0000000..08e7c40 --- /dev/null +++ b/ch12/ant/org/mwrm/ant/api/Deployer.java @@ -0,0 +1,354 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.mwrm.ant.api; + +import java.io.File; +import java.io.PrintStream; +import java.io.FileOutputStream; +import java.io.FileNotFoundException; + +import org.apache.tools.ant.Project; +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.DefaultLogger; + +import org.apache.tools.ant.listener.Log4jListener; + +import org.apache.catalina.ant.DeployTask; +import org.apache.catalina.ant.UndeployTask; + +/** + *

This class deploys or undeploys a web application from the Tomcat server, + * using the Ant <deploy> and <undeploy> + * tasks.

+ * + *

The following is this class's usage information:

+ * + * + * + * + * + * + * + * + * + *
Deployer action [options]
Action:
-a, -action <deploy filename.war [-path <path>] | + * undeploy -path <path>>
Options:
-url <url>
-u, -username <username>
-p, -password <password>
-l, -logfile <logfile>
-log4j
+ * + *

The deploy option uses the {@link DeployTask DeployTask} + * and the undeploy option + * uses the {@link UndeployTask UndeployTask}. + * If the user specifies the -log4j option, + * this class will log with the {@link Log4jListener Log4jListener}.

+ */ +public final class Deployer { + + /** + *

The default constructor.

+ */ + private Deployer() { } + + /** The default URL for the manager application. */ + private static String managerUrl = "localhost:8080/manager"; + + /** The path. We'll build the default path below */ + private static String path = ""; + + /** The username. */ + private static String username = ""; + + /** The password. */ + private static String password = ""; + + /** The filename of the WAR. */ + private static String filename; + + /** The user's desired action. */ + private static String action = ""; + + /** Sets whether the default logger + * will use the log file or System.out. */ + private static boolean useLogFile = false; + + /** The log file for the default logger. */ + private static String logFile; + + /** Sets whether we use the Log4j listener. */ + private static boolean useLog4j = false; + + /** + *

Deploys or undeploys a web application, + * depending on which command-line options + * the user specifies.

+ * @param args The command-line arguments + */ + public static void main(final String[] args) { + + // Process the arguments and set class members + processArgs(args); + + // A final set of checks + if (action.equals("undeploy") && path.equals("")) { + usage("You must specify a path when undeploying."); + } else if (action.equals("deploy") && filename == null) { + usage("You must specify a file when deploying."); + } else if (action.equals("")) { + usage("You must specify an action with -a or -action."); + } + + // Our tasks will need a project + Project project = new Project(); + + // Add the logger + project.addBuildListener(getLogger()); + + // Does the user want to use Log4j? + if (useLog4j) { + // The listener is configured with the log4j.properties file + Log4jListener listener = new Log4jListener(); + project.addBuildListener(listener); + } + + // The deployer that will deploy the WAR file + DeployTask deployer = new DeployTask(); + // The undeployer that will undeploy the application + UndeployTask undeployer = new UndeployTask(); + + // Check what we want to do + if (action.equals("deploy")) { + // The task needs the project's logger + deployer.setProject(project); + + // Call init() as good practice + deployer.init(); + + // The name of this task + deployer.setTaskName("deployer"); + + // The next few methods set the attributes of the task + deployer.setUsername(username); + deployer.setPassword(password); + deployer.setUrl("http://" + managerUrl); + deployer.setWar("file:" + filename); + deployer.setPath(path); + deployer.setUpdate(true); + + try { + // Run the task + deployer.execute(); + } catch (BuildException be) { + // The three ways to log with a task + //System.out.println(be.getMessage()); + //project.log(be.getMessage()); + if (!(be.getMessage().indexOf("FAIL") > -1)) { + deployer.log(be.getMessage()); + } + } + } else { + // The task needs the project's logger + undeployer.setProject(project); + + // Call init() as good practice + undeployer.init(); + + // The name of this task + undeployer.setTaskName("undeployer"); + + // The next few methods set the attributes of the task + undeployer.setUsername(username); + undeployer.setPassword(password); + undeployer.setUrl("http://" + managerUrl); + undeployer.setPath(path); + + try { + // Run the task + undeployer.execute(); + //System.out.println("Undeployed " + path + "."); + } catch (BuildException be) { + // The three ways to log with a task + //System.out.println(be.getMessage()); + //project.log(be.getMessage()); + if (!(be.getMessage().indexOf("FAIL") > -1)) { + undeployer.log(be.getMessage()); + } + } + } + } // end of main() + + /** + *

Processes the command-line arguments + * and sets member variables.

+ * @param args The command-line arguments + */ + private static void processArgs(final String[] args) { + try { + // We'll go through the command-line arguments + for (int i = 0; i < args.length; i++) { + String arg = args[i]; + + // Check to see if the user has specified an action + if (arg.equals("-a") || arg.equals("-action")) { + // If it's "undeploy", we'll remember that + if (args[i + 1].equals("undeploy")) { + action = "undeploy"; + i++; + // If it's "deploy", we'll remember that + } else if (args[i + 1].equals("deploy")) { + action = "deploy"; + i++; + // If it's not "undeploy" or "deploy", it's incorrect + } else { + usage(); + } + // Check for the path + } else if (arg.equals("-path")) { + path = args[i + 1]; + i++; + // Check for the URL + } else if (arg.equals("-url")) { + managerUrl = args[i + 1]; + i++; + // Check for the username + } else if (arg.equals("-u") || arg.equals("-username")) { + username = args[i + 1]; + i++; + // Check for the password + } else if (arg.equals("-p") || arg.equals("-password")) { + password = args[i + 1]; + i++; + // Check if the user wants to use a log file + } else if (arg.equals("-l") || arg.equals("-logfile")) { + logFile = args[i + 1]; + useLogFile = true; + i++; + // Check if the user wants to use Log4j + } else if (arg.equals("-log4j")) { + useLog4j = true; + // If the user has specified any other argument, + // it's incorrect + } else if (arg.startsWith("-")) { + String msg = "Unknown argument: " + arg; + usage(msg); + // If there's no prefix it's our WAR file + // We only check for it if we're deploying + } else if (action.equals("deploy")) { + // This must be our WAR file + filename = arg; + + // Create a file object + File warFile = new File(filename); + + // Check if this file actually exists + if (!warFile.exists()) { + String msg = "File " + arg + " does not exist."; + System.out.println(msg); + System.exit(-1); + } + + // We should set the path if the user did not + // The path must begin with a '/' + if (path.equals("")) { + // If the WAR file is not in the current directory, + // there will be a slash + int begin = filename.lastIndexOf("/"); + // We'll add a slash or not + // depending on where the WAR is + String slash = ""; + + // If there is no slash, the index will be -1 + if (begin == -1) { + // Therefore, we need to take the whole file name + begin = 0; + // and add a slash to the path + slash = "/"; + } + // Build the path by removing the .war extension + path = slash + + filename + .substring(begin, filename.lastIndexOf(".war")); + } + } + } + // If a command-line options is not followed by another argument + // the checks above will throw a ArrayIndexOutOfBoundsException + } catch (ArrayIndexOutOfBoundsException aioobe) { + usage(); + } + } + + /** + *

Returns the default logger for the project.

+ * @return DefaultLogger + */ + private static DefaultLogger getLogger() { + // The logger for this class + DefaultLogger logger = new DefaultLogger(); + + // The default logger needs somewhere to write to + PrintStream out = null; + + // Does the user want to write to a file? + if (useLogFile) { + try { + // We'll log to the file the user specified + out = new PrintStream(new FileOutputStream(logFile, true)); + } catch (FileNotFoundException fnfe) { + // We can't use the log just yet + System.out.println(fnfe.getMessage()); + // We'll fall back to System.out + System.out.println("Using the console."); + out = System.out; + } + } else { + // The default is to print to System.out + out = System.out; + } + + // Set the output streams for the logger + logger.setOutputPrintStream(out); + logger.setErrorPrintStream(out); + + // Set the message threshold for this logger + logger.setMessageOutputLevel(Project.MSG_INFO); + + return logger; + } + + /**

Displays the usage information.

*/ + private static void usage() { + System.out.println("Usage information:"); + System.out.println("Deployer action [options]"); + System.out.println("Action:"); + String actionMsg = "-a, -action ] " + + "| undeploy -path >"; + System.out.println(actionMsg); + System.out.println("Options:"); + System.out.println("-url "); + System.out.println("-u, -username "); + System.out.println("-p, -password "); + System.out.println("-l, -logfile "); + System.out.println("-log4j"); + + System.exit(-1); + } + + /**

Displays a custom message, then usage information.

+ * @param message The message to print + */ + private static void usage(final String message) { + System.out.println(message); + usage(); + } +} diff --git a/ch12/ant/org/mwrm/ant/api/package.html b/ch12/ant/org/mwrm/ant/api/package.html new file mode 100644 index 0000000..9943883 --- /dev/null +++ b/ch12/ant/org/mwrm/ant/api/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.ant.api Package + + +

A package that contains classes that demonstrate the Ant API.

+ + diff --git a/ch12/ant/org/mwrm/ant/listeners/BuildEventListener.java b/ch12/ant/org/mwrm/ant/listeners/BuildEventListener.java new file mode 100644 index 0000000..15f3dd1 --- /dev/null +++ b/ch12/ant/org/mwrm/ant/listeners/BuildEventListener.java @@ -0,0 +1,116 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.mwrm.ant.listeners; + +import org.apache.tools.ant.Project; +import org.apache.tools.ant.BuildListener; +import org.apache.tools.ant.BuildEvent; + +/** + *

A class that demonstrates some of the functionality + * of a custom listener.

+ */ +public class BuildEventListener implements BuildListener { + + /** + *

Signals that a build has started. This event + * is fired before any targets have started.

+ * + * @param start An event with any relevant extra information. + * Must not be null. + */ + public final void buildStarted(final BuildEvent start) { + start.getProject().log("buildStarted() called.", Project.MSG_ERR); + } + + /** + *

Signals that the last target has finished. This event + * will still be fired if an error occurred during the build.

+ * + * @param finish An event with any relevant extra information. + * Must not be null. + * + * @see BuildEvent#getException() + */ + public final void buildFinished(final BuildEvent finish) { + finish.getProject().log("buildFinished() called.", Project.MSG_ERR); + } + + /** + *

Signals that a target is starting.

+ * + * @param start An event with any relevant extra information. + * Must not be null. + * + * @see BuildEvent#getTarget() + */ + public final void targetStarted(final BuildEvent start) { + start.getProject().log("Target [" + start.getTarget().getName() + + "] started.", Project.MSG_ERR); + } + + /** + *

Signals that a target has finished. This event will + * still be fired if an error occurred during the build.

+ * + * @param finish An event with any relevant extra information. + * Must not be null. + * + * @see BuildEvent#getException() + */ + public final void targetFinished(final BuildEvent finish) { + finish.getProject().log("Target [" + finish.getTarget().getName() + + "] finished.", Project.MSG_ERR); + } + + /** + *

Signals that a task is starting.

+ * + * @param start An event with any relevant extra information. + * Must not be null. + * + * @see BuildEvent#getTask() + */ + public final void taskStarted(final BuildEvent start) { + start.getProject().log("Task [" + start.getTask().getTaskName() + + "] started.", Project.MSG_ERR); + } + + /** + *

Signals that a task has finished. This event will still + * be fired if an error occurred during the build.

+ * + * @param finish An event with any relevant extra information. + * Must not be null. + * + * @see BuildEvent#getException() + */ + public final void taskFinished(final BuildEvent finish) { + finish.getProject().log("Task [" + finish.getTask().getTaskName() + + "] finished.", Project.MSG_ERR); + } + + /**

When a message is sent to this logger, Ant calls this method.

+ * @param event An event with any relevant extra information. + * Must not be null. + * + * @see BuildEvent#getMessage() + * @see BuildEvent#getPriority() + */ + public void messageLogged(final BuildEvent event) { + // empty + } +} diff --git a/ch12/ant/org/mwrm/ant/listeners/package.html b/ch12/ant/org/mwrm/ant/listeners/package.html new file mode 100644 index 0000000..c12041d --- /dev/null +++ b/ch12/ant/org/mwrm/ant/listeners/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.ant.listeners Package + + +

A package that contains custom listeners.

+ + diff --git a/ch12/ant/org/mwrm/ant/loggers/BuildEventLogger.java b/ch12/ant/org/mwrm/ant/loggers/BuildEventLogger.java new file mode 100644 index 0000000..60eb52c --- /dev/null +++ b/ch12/ant/org/mwrm/ant/loggers/BuildEventLogger.java @@ -0,0 +1,195 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.mwrm.ant.loggers; + +import java.io.PrintStream; + +import org.apache.tools.ant.Project; +import org.apache.tools.ant.BuildLogger; +import org.apache.tools.ant.BuildEvent; + +/** + *

A class that demonstrates some of the functionality + * of a custom logger.

+ */ +public class BuildEventLogger implements BuildLogger { + + /** + * PrintStream to write non-error messages to. + */ + private PrintStream out; + + /** + * PrintStream to write error messages to. + */ + private PrintStream err; + + /** + * Sets whether to tailor output for Emacs, etc. + * The default is false. + */ + private boolean emacsMode = false; + + /** + * We'll set this logger to log only warnings. + */ + private int msgOutputLevel = Project.MSG_WARN; + + /** + *

Signals that a build has started. This event + * is fired before any targets have started.

+ * + * @param start An event with any relevant extra information. + * Must not be null. + */ + public final void buildStarted(final BuildEvent start) { + start.getProject().log("Message from buildStarted().", Project.MSG_ERR); + } + + /** + *

Signals that the last target has finished. This event + * will still be fired if an error occurred during the build.

+ * + * @param finish An event with any relevant extra information. + * Must not be null. + * + * @see BuildEvent#getException() + */ + public void buildFinished(final BuildEvent finish) { + // empty + } + + /** + *

Signals that a target is starting.

+ * + * @param start An event with any relevant extra information. + * Must not be null. + * + * @see BuildEvent#getTarget() + */ + public void targetStarted(final BuildEvent start) { + // empty + } + + /** + *

Signals that a target has finished. This event will + * still be fired if an error occurred during the build.

+ * + * @param finish An event with any relevant extra information. + * Must not be null. + * + * @see BuildEvent#getException() + */ + public void targetFinished(final BuildEvent finish) { + // empty + } + + /** + *

Signals that a task is starting.

+ * + * @param start An event with any relevant extra information. + * Must not be null. + * + * @see BuildEvent#getTask() + */ + public void taskStarted(final BuildEvent start) { + // empty + } + + /** + *

Signals that a task has finished. This event will still + * be fired if an error occurred during the build.

+ * + * @param finish An event with any relevant extra information. + * Must not be null. + * + * @see BuildEvent#getException() + */ + public void taskFinished(final BuildEvent finish) { + // empty + } + + /**

When a message is sent to this logger, Ant calls this method.

+ * @param event An event with any relevant extra information. + * Must not be null. + * + * @see BuildEvent#getMessage() + * @see BuildEvent#getPriority() + */ + public final void messageLogged(final BuildEvent event) { + /// We need to determine how important this message is + int priority = event.getPriority(); + + // If it's as important as our log level, we display it + if (priority <= msgOutputLevel) { + out.println("messageLogged: " + event.getMessage()); + } + } + + /** + *

Sets the output stream to which this logger is to send its output.

+ * + * @param output The output stream for the logger. + * Must not be null. + */ + public final void setOutputPrintStream(final PrintStream output) { + this.out = new PrintStream(output, true); + } + + /** + *

Sets the output stream to which this logger + * is to send error messages.

+ * + * @param errorStream The error stream for the logger. + * Must not be null. + */ + public final void setErrorPrintStream(final PrintStream errorStream) { + this.err = new PrintStream(errorStream, true); + } + + /** + *

Sets this logger to produce Emacs + * (and other editor) friendly output.

+ * + * @param mode true if output is to be unadorned so that + * Emacs and other editors can parse files names, etc. + */ + public final void setEmacsMode(final boolean mode) { + this.emacsMode = mode; + } + + /** + *

Sets the highest level of message this logger should respond to.

+ * + *

Only messages with a message level lower than or equal to the + * given level should be written to the log.

+ *

+ * Constants for the message levels are in the + * {@link Project Project} class. The order of the levels, from least + * to most verbose, is MSG_ERR, MSG_WARN, + * MSG_INFO, MSG_VERBOSE, + * MSG_DEBUG.

+ *

The default for this logger is + * {@link Project#MSG_WARN Project.MSG_WARN}.

+ * + * @param level the logging level for the logger. + */ + public void setMessageOutputLevel(final int level) { + // We will leave this empty to use the default level, + // which we set above + } + +} diff --git a/ch12/ant/org/mwrm/ant/loggers/package.html b/ch12/ant/org/mwrm/ant/loggers/package.html new file mode 100644 index 0000000..e30bac9 --- /dev/null +++ b/ch12/ant/org/mwrm/ant/loggers/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.ant.loggers Package + + +

A package that contains custom loggers.

+ + diff --git a/ch12/ant/org/mwrm/ant/tasks/ClassSetTask.java b/ch12/ant/org/mwrm/ant/tasks/ClassSetTask.java new file mode 100644 index 0000000..5afbdfd --- /dev/null +++ b/ch12/ant/org/mwrm/ant/tasks/ClassSetTask.java @@ -0,0 +1,60 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.mwrm.ant.tasks; + +import org.apache.tools.ant.Project; +import org.apache.tools.ant.Task; +import org.apache.tools.ant.BuildException; + +/** + *

The ClassSetTask class + * demonstrates how to use a Class argument + * in a custom class attribute.

+ * + */ + +public class ClassSetTask extends Task { + + /** The qualified class name. */ + private Class qualifiedName; + + /** + *

Runs the task and displays the qualified name of the class + * that is set as the setQualifiedName attribute.

+ * + */ + public final void execute() { + log("qualifiedName: " + qualifiedName, Project.MSG_INFO); + } + + /** + *

Sets the fully qualified name of the class.

+ ** @param qName The fully qualified name of a class + */ + public final void setQualifiedName(final Class qName) { + if (qName.getName().equals("java.lang.Integer") + || + qName.getName().equals("java.lang.String")) { + log(qName.getName() + " found.", Project.MSG_INFO); + } else { + String msg = "You can only specify java.lang.Integer " + + "or java.lang.String in qualifiedName."; + throw new BuildException(msg); + } + this.qualifiedName = qName; + } +} + diff --git a/ch12/ant/org/mwrm/ant/tasks/ExtendJavadocTask.java b/ch12/ant/org/mwrm/ant/tasks/ExtendJavadocTask.java new file mode 100644 index 0000000..e9c076c --- /dev/null +++ b/ch12/ant/org/mwrm/ant/tasks/ExtendJavadocTask.java @@ -0,0 +1,188 @@ +/* + * Extends org.apache.tools.ant.taskdefs.Javadoc + * and uses org.apache.tools.ant.taskdefs.UpToDate, + * which are Copyright 2000-2005 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.ant.tasks; + +import java.io.File; + +import java.util.Enumeration; +import java.util.StringTokenizer; +import java.util.Vector; + +import org.apache.tools.ant.Project; +import org.apache.tools.ant.BuildException; + +import org.apache.tools.ant.taskdefs.Javadoc; +import org.apache.tools.ant.taskdefs.UpToDate; + +import org.apache.tools.ant.types.FileSet; + +/** + *

The ExtendJavadocTask class + * extends the {@link org.apache.tools.ant.taskdefs.Javadoc Javadoc} task. + * It checks whether a set of source files are newer than a set of target files + * and if so, it generates Javadocs.

+ * + */ + +public class ExtendJavadocTask extends Javadoc { + + /** The attribute of the task element. */ + private File target; + + /** A set of file sets, + * each of which is provided by a nested file set. */ + private Vector targetFileSets = new Vector(); + + /** The internal uptodate task. */ + private UpToDate utd; + + /** + *

Creates a new instance of an internal + * <uptodate> task + * and adds it to the current project.

+ * @see UpToDate org.apache.tools.ant.taskdefs.UpToDate + */ + public final void init() { + // We need an instance of the task + utd = new UpToDate(); + // We need to add the task to this project + utd.setProject(this.getProject()); + } + + /** + *

Checks if Javadocs should be created + * and then calls super.execute() if so.

+ *

This method does usage checks on the task's attributes + * and its nested elements. + * It will throw a BuildException if there is a violation.

+ */ + public final void execute() { + // This is the usage information + + // We can't have a target attribute + // and nested targetfiles elements + if (target != null && targetFileSets.size() > 0) { + String msg = "You can't specify a targetfile attribute " + + "and elements."; + throw new BuildException(msg); + } + // We have to specify either a target attribute + // or at least one nested targetfiles elements + if (target == null && targetFileSets.size() == 0) { + String msg = "You must specify either a targetfile attribute " + + "or at least one element."; + throw new BuildException(msg); + } + + // If this is false, the files aren't up to date + // and we have to run the javadocs + boolean eval = false; + + // If we've got to this point, we know the usage must be correct. + // Let's check whether a single target attribute has been used. + + if (target != null) { + // Get the results of the check + eval = getResult(target); + } else { + // If a target attribute wasn't specified, + // at least one nested targetfiles element was. + + // We first get all the file sets represented by the nested elements + Enumeration e = targetFileSets.elements(); + + // And then iterate over them + while (e.hasMoreElements()) { + + // The next element is a file set, so we get its files + // in a semi-colon-separated list + String files = e.nextElement().toString(); + + // Next, we split the list into its file names + StringTokenizer st = new StringTokenizer(files, ";"); + + // And iterate over them to test each one + while (st.hasMoreTokens()) { + // We create a file + //from the current file name in the iteration + File tempTarget = new File(st.nextToken()); + + // Get the results of the check + eval = getResult(tempTarget); + + // One false result is enough to fail the whole file set + if (!eval) { + break; + } + } + // One false result is enough to fail the whole file set + if (!eval) { + break; + } + } + } + + // If the test failed, we want to generate Javadocs + if (!eval) { + super.execute(); + } else { + log("Skipping Javadoc creation. The files are up to date.", + Project.MSG_INFO); + } + } + + /**

Checks whether the files are up to date.

+ * @param file The file to evaluate + * @return boolean The result + */ + private boolean getResult(final File file) { + // Set the target property in the task + utd.setTargetFile(file); + // Evaluate the files + return utd.eval(); + } + + /** + *

The setter method for the target attribute.

+ * @param targetFile A file to check against + */ + public final void setTarget(final File targetFile) { + this.target = targetFile; + } + + /** + *

The setter method for the file set + * contained in the nested <srcfiles> element.

+ * @param fileset A file set of source files + */ + public final void addSrcfiles(final FileSet fileset) { + utd.addSrcfiles(fileset); + } + + /** + *

The setter method for the file sets + * contained in nested <targetfiles> elements.

+ * @param fileset A file set of target files + */ + public final void addTargetfiles(final FileSet fileset) { + targetFileSets.add(fileset); + } +} + diff --git a/ch12/ant/org/mwrm/ant/tasks/LifeCycleNestedTask.java b/ch12/ant/org/mwrm/ant/tasks/LifeCycleNestedTask.java new file mode 100644 index 0000000..bfd1215 --- /dev/null +++ b/ch12/ant/org/mwrm/ant/tasks/LifeCycleNestedTask.java @@ -0,0 +1,347 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.mwrm.ant.tasks; + +import java.util.Hashtable; +import java.util.Enumeration; +import java.util.Vector; + +import org.apache.tools.ant.Project; +import org.apache.tools.ant.Task; +import org.apache.tools.ant.BuildException; + +/** + *

At each stage in a task's life cycle, this class displays information + * to show the internal state of the task and its position with in the project. + * It takes a name attribute.

+ * + *

This class demonstrates how to nest elements within a custom task. + * Its nested element is called <name> + * and cannot be used in conjunction with a name attribute.

+ */ +public class LifeCycleNestedTask extends Task { + + /** The name attribute of this task. */ + private String name; + + /** The body text of this task. */ + private String text; + + /** The collection of name elements. */ + private Vector nameElements = new Vector(); + + /** + *

The constructor displays the state of the task + * as it is instantiated.

+ */ + public LifeCycleNestedTask() { + System.out.println("---------------"); + System.out.println("Constructor called"); + System.out.println("Value of name attribute: " + this.name); + System.out.println("Value of the body text: " + text); + System.out.println("Project: " + getProject()); + System.out.println("Location: " + getLocation()); + System.out.println("Target: " + getOwningTarget()); + System.out.println("---------------"); + } + + /** + *

Displays the state of the task at initialization.

+ * @see #logAll(String method) + */ + public final void init() { + logAll("init()"); + } + + /** + *

Displays the state of the task when Ant runs it. + * This method also runs some usage checks + * to ensure the task is being used properly.

+ */ + public final void execute() { + if (name != null && nameElements.size() > 0) { + String msg = "You can't specify a name attribute " + + "and elements."; + throw new BuildException(msg); + } + if (name == null && nameElements.size() == 0) { + String msg = "You must specify either a name attribute " + + "or at least one element."; + throw new BuildException(msg); + } + if (nameElements.size() > 0 && text != null) { + String msg = "You can't specify elements " + + "and body text."; + throw new BuildException(msg); + } + + logAll("execute()"); + + // If name is not set, we want to check nested elements + if (name == null) { + // Get the name elements + Enumeration e = nameElements.elements(); + + // And then iterate over them + while (e.hasMoreElements()) { + NameElement nameElement = (NameElement) e.nextElement(); + + // Usage check + if (nameElement.getName() == null) { + String msg = "You must specify a name attribute " + + "or body text for a nested element."; + throw new BuildException(msg); + } + log("Value of name element: " + nameElement.getName(), + Project.MSG_VERBOSE); + } + log("---------------", Project.MSG_VERBOSE); + } + } + + /** + *

Sets the name to display + * and shows the state of the task afterwards.

+ * @param aName The name to display + */ + public final void setName(final String aName) { + // The value of the name attribute + this.name = aName; + logAll("setName()"); + } + + /** + *

Sets the body text of the task + * and shows the state of the task afterwards.

+ * @param bodyText The body text + */ + public final void addText(final String bodyText) { + // If the body text is just whitespace, it might as well be null + if (bodyText.trim().equals("")) { + this.text = null; + } else { + this.text = bodyText.trim(); + } + logAll("addText()"); + } + + /**

Checks for task references.

+ * @return String + * A string that tells us details of the reference check + */ + private String referenceCheck() { + + // The default setting + String setString = "Reference not found."; + + // We need the references that have been set in this project + Hashtable refs = getProject().getReferences(); + Enumeration e = refs.elements(); + + // Let's iterate over them + while (e.hasMoreElements()) { + // We want to work with each object, so we'll instantiate an object + Object obj = e.nextElement(); + + // Check to see if this object is a custom task + // If it is, we'll build a string that contains its name and type + if (obj.getClass().getName(). + equals("org.apache.tools.ant.UnknownElement") + || + obj.getClass().getName(). + equals(this.getClass().getName())) { + Task aTask = (Task) obj; + setString = + "Reference to " + aTask.getTaskName() + " found, of type " + + aTask.getClass().getName() + ". "; + setString = setString + "Its id is " + + aTask.getRuntimeConfigurableWrapper(). + getAttributeMap().get("id") + "."; + } + } + return setString; + } + + /** + *

A central logging method that all the life-cycle methods call + * to display the state of the task. + * It displays the value of the name attribute + * and other information about the task, + * including the name of its project and its location in the build file.

+ * @param method The name of the method that issued the logging call + */ + public final void logAll(final String method) { + log("---------------", Project.MSG_VERBOSE); + log(method + " called", Project.MSG_VERBOSE); + + // If name is set, we only have one value to print + if (name != null) { + log("Value of name attribute: " + this.name, Project.MSG_VERBOSE); + } + + log("Value of the body text: " + text, Project.MSG_VERBOSE); + log("Project: " + getProject().getName(), Project.MSG_VERBOSE); + + // Here we build some information on the location + // within the build file + String locationString = getLocation().getFileName(); + locationString = locationString + + " at line " + getLocation().getLineNumber(); + + // Location.getColumnNumber() is for Ant 1.7+ + // Comment it out if you are using Ant 1.6.x + //locationString = locationString + // + " and column " + getLocation().getColumnNumber(); + + log("Location: " + locationString, Project.MSG_VERBOSE); + + // We could use the Location.toString() method + //log("Location: " + getLocation(), Project.MSG_VERBOSE); + + log("Target: " + getOwningTarget(), Project.MSG_VERBOSE); + + // referenceCheck() returns a string with information + // on any references to custom tasks + log(referenceCheck(), Project.MSG_VERBOSE); + + // If the configuration wrapper is null, we use its + // run-time equivalent + if (getWrapper() == null) { + log("Reference id: " + + getRuntimeConfigurableWrapper().getAttributeMap().get("id"), + Project.MSG_VERBOSE); + } else { + // This time we use the protected getWrapper() method + log("Reference id: " + getWrapper().getAttributeMap().get("id"), + Project.MSG_VERBOSE); + } + + log("---------------", Project.MSG_VERBOSE); + } + + /** + *

Adds a <name> element + * that has not been initialized.

+ * @param nameElement The NameElement + * object that represents the nested element + * @see LifeCycleNestedTask.NameElement + */ + public final void addName(final NameElement nameElement) { + nameElements.add(nameElement); + + logAll("addName()"); + log("Value of this name: " + + nameElement.getName(), Project.MSG_VERBOSE); + } + + /** + *

Adds a <name> element + * that has been initialized.

+ * @param nameElement The NameElement + * object that represents the nested element + * @see LifeCycleNestedTask.NameElement + */ + public final void addConfiguredName(final NameElement nameElement) { + nameElements.add(nameElement); + + logAll("addConfiguredName()"); + log("Value of this name: " + nameElement.getName(), + Project.MSG_VERBOSE); + } + + /** + *

Adds a <name> element + * that has not been initialized. + * In this case, the createName() method + * has the responsibility + * for creating the object.

+ * @see LifeCycleNestedTask.NameElement + */ + public final NameElement createName() { + NameElement nameElement = new NameElement("Madeleine"); + + nameElements.add(nameElement); + + logAll("createName()"); + log("Value of this name: " + nameElement.getName(), + Project.MSG_VERBOSE); + + return nameElement; + } + + /** + *

A class that implements + * the nested <name> element + * of a LifeCycleNestedTask. + * @see LifeCycleNestedTask + */ + public static class NameElement { + + /** The name attribute of this element. */ + private String name; + + /** Tells the class if we've used the overridden constructor. */ + private boolean usedConstructor = false; + + /** The empty constructor. */ + public NameElement() { + // Empty + } + + /** + *

Used by the LifeCycleNestedTask.createName() method + * to created a nested <name> element.

+ * @see LifeCycleNestedTask#createName() + */ + public NameElement(final String text) { + this.name = text; + usedConstructor = true; + } + + /** + *

The mutator method for the name attribute.

+ * @param aName The name to display + */ + public final void setName(final String aName) { + this.name = aName; + } + + /** + *

The accessor method for the name attribute.

+ * @return String The name to display + */ + public final String getName() { + return name; + } + + /** + *

Sets the body text of the <name> element. + * It contains a usage check.

+ * @param text The body text + */ + public final void addText(final String text) { + // Usage check + if (name != null && !usedConstructor) { + String msg = "You can't specify a name attribute " + + "and nested text in elements."; + throw new BuildException(msg); + } else { + this.name = text.trim(); + } + } + } +} + diff --git a/ch12/ant/org/mwrm/ant/tasks/LifeCycleTask.java b/ch12/ant/org/mwrm/ant/tasks/LifeCycleTask.java new file mode 100644 index 0000000..51c5219 --- /dev/null +++ b/ch12/ant/org/mwrm/ant/tasks/LifeCycleTask.java @@ -0,0 +1,194 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.mwrm.ant.tasks; + +import java.util.Hashtable; +import java.util.Enumeration; + +import org.apache.tools.ant.Project; +import org.apache.tools.ant.Task; +import org.apache.tools.ant.BuildException; + +/** + *

At each stage in a task's life cycle, this class displays information + * to show the internal state of the task and its position with in the project. + * It takes a name attribute.

+ */ +public class LifeCycleTask extends Task { + + /** The name attribute of this task. */ + private String name; + + /** The body text of this task. */ + private String text; + + /** + *

The constructor displays the state of the task + * as it is instantiated.

+ */ + public LifeCycleTask() { + System.out.println("---------------"); + System.out.println("Constructor called"); + System.out.println("Value of name attribute: " + name); + System.out.println("Value of the body text: " + text); + System.out.println("Project: " + getProject()); + System.out.println("Location: " + getLocation()); + System.out.println("Target: " + getOwningTarget()); + System.out.println("---------------"); + } + + /** + *

Displays the state of the task at initialization.

+ * @see #logAll(String method) + */ + public final void init() { + logAll("init()"); + } + + /** + *

Displays the state of the task when Ant runs it. + * This method also runs some usage checks + * to ensure the task is being used properly.

+ */ + public final void execute() { + if (name == null) { + throw new BuildException("You must specify a name attribute in " + + getTaskName() + "."); + } + logAll("execute()"); + + // Write the name to output + log(name, Project.MSG_INFO); + } + + /** + *

Sets the name to display + * and shows the state of the task afterwards.

+ * @param aName The name to display + */ + public final void setName(final String aName) { + // The value of the name attribute + this.name = aName; + logAll("setName()"); + } + + /** + *

Sets the body text of the task + * and shows the state of the task afterwards.

+ * @param bodyText The body text + */ + public final void addText(final String bodyText) { + // If the body text is just whitespace, it might as well be null + if (bodyText.trim().equals("")) { + this.text = null; + } else { + this.text = bodyText.trim(); + } + logAll("addText()"); + } + + /**

Checks for task references.

+ * @return String + * A string that tells us details of the reference check + */ + private String referenceCheck() { + + // The default setting + String setString = "Reference not found."; + + // We need the references that have been set in this project + Hashtable refs = getProject().getReferences(); + Enumeration e = refs.elements(); + + // Let's iterate over them + while (e.hasMoreElements()) { + // We want to work with each object, so we'll instantiate an object + Object obj = e.nextElement(); + + // Check to see whether this object is a task + // If it is, we'll build a string that contains its name and type + if (obj.getClass().getName(). + equals("org.apache.tools.ant.UnknownElement") + || + obj.getClass().getName(). + equals(this.getClass().getName())) { + + Task aTask = (Task) obj; + + setString = + "Reference to " + aTask.getTaskName() + " found, of type " + + aTask.getClass().getName() + ". "; + setString = setString + "Its id is " + + aTask.getRuntimeConfigurableWrapper(). + getAttributeMap().get("id") + "."; + } + } + return setString; + } + + /** + *

A central logging method that all the life-cycle methods call + * to display the state of the task. + * It displays the value of the name attribute + * and other information about the task, + * including the name of its project and its location in the build file.

+ * @param method The name of the method that issued the logging call + */ + public final void logAll(final String method) { + log("---------------", Project.MSG_VERBOSE); + log(method + " called", Project.MSG_VERBOSE); + log("Value of name attribute: " + name, Project.MSG_VERBOSE); + log("Value of the body text: " + text, Project.MSG_VERBOSE); + log("Project: " + getProject().getName(), Project.MSG_VERBOSE); + + // Here we build some information on the location + // within the build file + String locationString = getLocation().getFileName(); + locationString = locationString + " at line " + + getLocation().getLineNumber(); + + // Location.getColumnNumber() is for Ant 1.7+ + // Comment it out if you are using Ant 1.6.x + //locationString = locationString + " and column " + // + getLocation().getColumnNumber(); + + log("Location: " + locationString, Project.MSG_VERBOSE); + + // We could use the Location.toString() method + //log("Location: " + getLocation(), Project.MSG_VERBOSE); + + log("Target: " + getOwningTarget(), Project.MSG_VERBOSE); + + // referenceCheck() returns a string with information + // on any references to custom tasks + log(referenceCheck(), Project.MSG_VERBOSE); + + // If the configuration wrapper is null, we use its + // run-time equivalent + if (getWrapper() == null) { + log("Reference id: " + + getRuntimeConfigurableWrapper().getAttributeMap().get("id"), + Project.MSG_VERBOSE); + } else { + // This time we use the protected getWrapper() method + log("Reference id: " + getWrapper().getAttributeMap().get("id"), + Project.MSG_VERBOSE); + } + + log("---------------", Project.MSG_VERBOSE); + } +} + diff --git a/ch12/ant/org/mwrm/ant/tasks/ProjectHelpTask.java b/ch12/ant/org/mwrm/ant/tasks/ProjectHelpTask.java new file mode 100644 index 0000000..32172b0 --- /dev/null +++ b/ch12/ant/org/mwrm/ant/tasks/ProjectHelpTask.java @@ -0,0 +1,72 @@ +/* + * Uses org.apache.tools.ant.Main, + * which is Copyright 2000-2005 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.ant.tasks; + +import org.apache.tools.ant.Task; +import org.apache.tools.ant.Main; + +/** + *

The ProjectHelpTask class displays usage information + * for the current project. This is the same information as is displayed + * by -projecthelp.

+ * + */ + +public class ProjectHelpTask extends Task { + + /** The location of the build file to use + * when obtaining usage information. */ + private String buildfile; + + /** + *

Runs the task. + * It calls {@link org.apache.tools.ant.Main#main(String[] args) + * org.apache.tools.ant.Main.main()} with the -projecthelp + * parameter. It will also send the current build file's file name + * via the -f parameter.

+ * + *

The buildfile attribute is optional. + * The default is the task's build file.

+ * @see org.apache.tools.ant.Main org.apache.tools.ant.Main + */ + public final void execute() { + // If the buildfile attribute is null, we'll use the task's build file + if (buildfile == null) { + buildfile = getLocation().getFileName(); + } + + // The arguments that we will pass to the Main class. + // The buildfile attribute must follow the -f parameter. + String[] args = {"-projecthelp", "-f", buildfile}; + + // Call the Main Ant class with the arguments. + Main.main(args); + } + + /** + * Setter method for the buildfile attribute. + * @param file The file name of the build file to use. + * + */ + public final void setBuildfile(final String file) { + this.buildfile = file; + } + +} + diff --git a/ch12/ant/org/mwrm/ant/tasks/package.html b/ch12/ant/org/mwrm/ant/tasks/package.html new file mode 100644 index 0000000..26003dc --- /dev/null +++ b/ch12/ant/org/mwrm/ant/tasks/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.ant.tasks Package + + +

A collection of classes that demonstrate the Ant task life cycle.

+ + diff --git a/ch12/antBook.antlib.xml b/ch12/antBook.antlib.xml new file mode 100644 index 0000000..7927073 --- /dev/null +++ b/ch12/antBook.antlib.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ch12/antlib.xml b/ch12/antlib.xml new file mode 100644 index 0000000..72d6f9a --- /dev/null +++ b/ch12/antlib.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ch12/build.properties b/ch12/build.properties new file mode 100644 index 0000000..e1a014e --- /dev/null +++ b/ch12/build.properties @@ -0,0 +1,144 @@ +# The source directory that contains the code +src=src + +# Subdirectory properties +src.shared.root=${src}/shared +src.shared.java=${src.shared.root}/java +src.shared.docs=${src.shared.root}/docs +src.shared.conf=${src.shared.root}/conf + +src.stand-alone.root=${src}/stand-alone +src.stand-alone.java=${src.stand-alone.root}/java +src.stand-alone.docs=${src.stand-alone.root}/docs + +src.web.root=${src}/web +src.web.java=${src.web.root}/java +src.web.docs=${src.web.root}/docs +src.web.pages=${src.web.root}/pages +src.web.tags=${src.web.root}/tags +src.web.conf=${src.web.root}/conf + +# The scratch directory +build=build + +build.stand-alone.root=${build}/stand-alone + +build.web.root=${build}/web +build.web.web-inf=${build.web.root}/WEB-INF +build.web.classes=${build.web.web-inf}/classes +build.web.tags=${build.web.web-inf}/tags +build.web.lib=${build.web.web-inf}/lib + +# The final destination of our project files +dist=dist + +# The location of third-party JAR files +lib=lib + +# This name will be appended to the JAR and WAR files +appName=antBook +appName.jar=${dist}/${appName}.jar +appName.war=${dist}/${appName}.war + +# The Tomcat home directory +catalina.home=C:\\jakarta-tomcat-5.5.9 +servlet24.jar=${catalina.home}/common/lib/servlet-api.jar +# Use the following line if using Ant to download the JAR +#servlet24.jar=${lib}/servlet-api.jar + +# Required for the JSTL build +jsp20.jar=${catalina.home}/common/lib/jsp-api.jar +# Use the following line if using Ant to download the JAR +#jsp20.jar=${lib}/jsp-api.jar +jstl.build=jakarta-taglibs/standard +library.src=src +examples.src=examples +doc.src=doc +build.library=${build} + +# Required for the MySQL connector build +mysql.build=mm.mysql-2 +mysql.name=mysql-connector +mysql.jar=${lib}/${mysql.name}-bin.jar + +# The database properties file +database.properties=${src.shared.conf}/database.properties + +# The directory where the docs will go +docs=${build}/docs + +# Properties for customizing the Javadoc build +javadoc.doctitle=Welcome to the example application +javadoc.windowtitle=The example application +javadoc.j2se.version=1.5.0 +javadoc.j2ee.version=1.4 + +javadoc.j2se.offline=C:/j2sdk1.5.0/docs/api +javadoc.j2ee.offline=C:/j2eesdk1.4/docs/apidocs + +package.stand-alone=stand-alone +package.web=web +package.docs=docs + +tmp=C:/TEMP/antBook +#tmp=/tmp/antBook + +# FTP settings +ftp.server=localhost +ftp.src.dir=src +ftp.bin.dir=bin + +mail.from=antBuild@example.com +mail.tolist=antUser01@example.com,antUser02@example.com +mail.message.docs=Here's the docs distribution +mail.mailhost=smtp.mail.example.com +mail.subject=Ant build + +# The location of the Tomcat server +tomcat.host=localhost +tomcat.port=8080 +manager.url=http://${tomcat.host}:${tomcat.port}/manager + +database.root=jdbc:mysql://localhost:3306/ +driver.name=com.mysql.jdbc.Driver + +drop.sql=SQL/drop.sql +create.sql=SQL/create.sql +insert.sql=SQL/insert.sql + +# The name of the Tomcat start script +tomcat.executableName=startup + +# The test directory +test.src=test +test.build=${build}/test +test.junit.reports=${test.build}/reports/junit +test.junit.data=${test.build}/data/junit +test.junit.style=${test.src}/style/junit + +junit.home=C:/junit3.8.1 +junit.jar=${junit.home}/junit.jar + +httpunit.home=C:/httpunit +httpunit.jar=${httpunit.home}/lib/httpunit.jar + +last.test.failed.file=failed.txt + +checkstyle.home=C:/checkstyle +checkstyle.jar=${checkstyle.home}/checkstyle-3.5.jar +test.checkstyle.reports=${test.build}/reports/checkstyle +test.checkstyle.data=${test.build}/data/checkstyle + +# Custom task properties +ant.tasks.src=ant +ant.tasks.build=${build}/ant +ant.tasks.jar=${dist}/${appName}-tasks.jar + +ant.tasks.antlib.xml=antlib.xml +ant.tasks.antlib.package=org/mwrm/ant +ant.tasks.antlib.dir=${ant.tasks.build}/${ant.tasks.antlib.package} + +ant.api.jar=${dist}/${appName}-api.jar + +log4j.home=C:/logging-log4j-1.2.12 +log4j.jar=${log4j.home}/dist/lib/log4j.jar \ No newline at end of file diff --git a/ch12/build.xml b/ch12/build.xml new file mode 100644 index 0000000..cb2a594 --- /dev/null +++ b/ch12/build.xml @@ -0,0 +1,1459 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${javadoc.doctitle} + + + + + + + + + + + + + + ${javadoc.doctitle} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${javadoc.doctitle} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Jones + + + + + + + + + + + + + + ${javadoc.doctitle} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${converted} + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ch12/log.xml b/ch12/log.xml new file mode 100644 index 0000000..7c28a52 --- /dev/null +++ b/ch12/log.xml @@ -0,0 +1,14 @@ +java.lang.NullPointerException + at org.mwrm.ant.listeners.BuildEventListener.messageLogged(Unknown Source) + at org.apache.tools.ant.Project.fireMessageLoggedEvent(Project.java:2009) + at org.apache.tools.ant.Project.fireMessageLogged(Project.java:2029) + at org.apache.tools.ant.Project.log(Project.java:357) + at org.apache.tools.ant.Project.addReference(Project.java:1777) + at org.apache.tools.ant.PropertyHelper.getPropertyHelper(PropertyHelper.java:131) + at org.apache.tools.ant.Project.getProperty(Project.java:473) + at org.apache.tools.ant.XmlLogger.buildFinished(XmlLogger.java:166) + at org.apache.tools.ant.Project.fireBuildFinished(Project.java:1848) + at org.apache.tools.ant.Main.runBuild(Main.java:688) + at org.apache.tools.ant.Main.startAnt(Main.java:187) + at org.apache.tools.ant.launch.Launcher.run(Launcher.java:249) + at org.apache.tools.ant.launch.Launcher.main(Launcher.java:70) diff --git a/ch12/log.xsl b/ch12/log.xsl new file mode 100644 index 0000000..2272790 --- /dev/null +++ b/ch12/log.xsl @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + +
+ + http://jakarta.apache.org + + + Apache Ant +
+ + + +

+ + + + + + + +

+
+ Copyright © 2000-2002, Apache Software Foundation +
+
+ + +
+ + + + + + failed + complete + + + + + + + + + + + + + +
Build FailedBuild CompleteTotal Time:
+ +
+ See the stacktrace. +
+
+ + + + + +
ant.file
ant.version
java.version
os.name
+ +

Build events

+ + + + + + + +
targettaskmessage
+

+ + + +

Error details

+ + +
+
+
+ +

+
+ + + + + + + a + b + + + [ ] + + + + + + +
diff --git a/ch12/log4j.properties b/ch12/log4j.properties new file mode 100644 index 0000000..7fae6cf --- /dev/null +++ b/ch12/log4j.properties @@ -0,0 +1,94 @@ +# Set the root logger for Ant +#log4j.rootLogger=INFO, AntLogger + +# Log to a file +#log4j.appender.AntLogger=org.apache.log4j.FileAppender +#log4j.appender.AntLogger.File=C:/TEMP/antBook/logs/ant.log + +# Use the simple layout +#log4j.appender.AntLogger.layout=org.apache.log4j.SimpleLayout + +#---------------------------------------------# +# Set the root logger for Ant +#log4j.rootLogger=INFO, AntLogger + +# Log to a pattern file +#log4j.appender.AntLogger=org.apache.log4j.FileAppender +#log4j.appender.AntLogger.File=C:/TEMP/antBook/logs/ant.pattern.log + +# Use a pattern layout +#log4j.appender.AntLogger.layout=org.apache.log4j.PatternLayout +#log4j.appender.AntLogger.layout.ConversionPattern=%d{ISO8601} : %p : %m %n + +#---------------------------------------------# +# Set the root logger for Ant +#log4j.rootLogger=INFO, AntLogger + +# Log to an HTML file +#log4j.appender.AntLogger=org.apache.log4j.FileAppender +#log4j.appender.AntLogger.File=C:/TEMP/antBook/logs/ant.log.html + +# Set the layout to HTML and specify a title +#log4j.appender.AntLogger.layout=org.apache.log4j.HTMLLayout +#log4j.appender.AntLogger.layout.Title=Apress Ant Log + +#---------------------------------------------# +# Set the root logger for Ant +log4j.rootLogger=INFO, AntLogger + +# Log to the console +log4j.appender.AntLogger=org.apache.log4j.ConsoleAppender +log4j.appender.AntLogger.Target=System.out + +# Set a custom layout level +log4j.appender.AntLogger.layout=org.apache.log4j.PatternLayout +log4j.appender.AntLogger.layout.ConversionPattern=%d{ISO8601} : %p : %m %n + +#---------------------------------------------# +# Send all INFO messages and above to a file and +# all ERROR messages and above to the console +#log4j.rootLogger=INFO, AntINFO, AntERROR + +# Use a pattern file for the INFO messages +#log4j.appender.AntINFO=org.apache.log4j.FileAppender +#log4j.appender.AntINFO.File=C:/TEMP/antBook/logs/ant.pattern.log +#log4j.appender.AntINFO.layout=org.apache.log4j.PatternLayout +#log4j.appender.AntINFO.layout.ConversionPattern=%d{ISO8601} : %r : %p : %m %n + +# Use an HTML file for ERROR messages +#log4j.appender.AntERROR=org.apache.log4j.FileAppender +#log4j.appender.AntERROR.File=C:/TEMP/antBook/logs/ant.log.html +#log4j.appender.AntERROR.layout=org.apache.log4j.HTMLLayout +#log4j.appender.AntERROR.layout.Title=Apress Error Log +#log4j.appender.AntERROR.Threshold=ERROR + +#---------------------------------------------# +# Use individual loggers for different components +#log4j.rootLogger=ERROR, AntLogger + +# Log to a file +#log4j.appender.AntLogger=org.apache.log4j.FileAppender +#log4j.appender.AntLogger.File=C:/TEMP/antBook/logs/ant.log + +# Use the simple layout +#log4j.appender.AntLogger.layout=org.apache.log4j.SimpleLayout + +# Set a logger for project components +#log4j.logger.org.apache.tools.ant.Project=INFO,AntComponentLogger +#log4j.logger.org.apache.tools.ant.Target=INFO,AntComponentLogger +#log4j.logger.org.apache.tools.ant.UnknownElement=INFO,AntComponentLogger +#log4j.logger.org.apache.tools.ant.taskdefs=INFO,AntComponentLogger + +#log4j.appender.AntComponentLogger=org.apache.log4j.FileAppender +#log4j.appender.AntComponentLogger.File=C:/TEMP/antBook/logs/ant.pattern.log +#log4j.appender.AntComponentLogger.layout=org.apache.log4j.PatternLayout +#log4j.appender.AntComponentLogger.layout.ConversionPattern=%p: %m: %d{ISO8601} %n +#log4j.appender.AntComponentLogger.Threshold=INFO + +# Log to a file +#log4j.appender.AntComponentLogger=org.apache.log4j.FileAppender +#log4j.appender.AntComponentLogger.File=C:/TEMP/antBook/logs/ant.component.log + +# Use the pattern layout +#log4j.appender.AntComponentLogger.layout=org.apache.log4j.PatternLayout +#log4j.appender.AntComponentLogger.layout.ConversionPattern=%c: %m %n \ No newline at end of file diff --git a/ch12/mail.log.properties b/ch12/mail.log.properties new file mode 100644 index 0000000..badfd74 --- /dev/null +++ b/ch12/mail.log.properties @@ -0,0 +1,8 @@ +MailLogger.mailhost=smtp.mail.yahoo.co.uk +MailLogger.user=antBook +MailLogger.password=antB00k +MailLogger.from=ant.log@example.com +MailLogger.failure.to=ant.results@example.com +MailLogger.success.to=ant.results@example.com +MailLogger.failure.subject=Build failed +MailLogger.success.subject=Build succeeded diff --git a/ch12/src/shared/conf/SQL/plants.sql b/ch12/src/shared/conf/SQL/plants.sql new file mode 100644 index 0000000..f95cb20 --- /dev/null +++ b/ch12/src/shared/conf/SQL/plants.sql @@ -0,0 +1,13 @@ +CREATE DATABASE IF NOT EXISTS plants; + +USE plants; + +CREATE TABLE plants ( + id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(80) NOT NULL, + common_name VARCHAR(80), + family VARCHAR(50) NOT NULL, + description TEXT NOT NULL, + image VARCHAR(20), + cultivar_name VARCHAR(80) +); \ No newline at end of file diff --git a/ch12/src/shared/conf/SQL/plantsDelete.sql b/ch12/src/shared/conf/SQL/plantsDelete.sql new file mode 100644 index 0000000..ea4dd57 --- /dev/null +++ b/ch12/src/shared/conf/SQL/plantsDelete.sql @@ -0,0 +1,3 @@ +USE plants; + +DELETE FROM plants; \ No newline at end of file diff --git a/ch12/src/shared/conf/SQL/plantsDrop.sql b/ch12/src/shared/conf/SQL/plantsDrop.sql new file mode 100644 index 0000000..999053f --- /dev/null +++ b/ch12/src/shared/conf/SQL/plantsDrop.sql @@ -0,0 +1 @@ +DROP DATABASE IF EXISTS plants; \ No newline at end of file diff --git a/ch12/src/shared/conf/SQL/plantsInsert.sql b/ch12/src/shared/conf/SQL/plantsInsert.sql new file mode 100644 index 0000000..1b11952 --- /dev/null +++ b/ch12/src/shared/conf/SQL/plantsInsert.sql @@ -0,0 +1,15 @@ +USE plants; + +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Galanthus nivalis", "Snowdrop", "Liliaceae", "Snowdrops appear in late winter and early spring.", "gal_niv.jpg"); +INSERT INTO plants (name, common_name, family, description) VALUES ("Narcissus pseudonarcissus", "Daffodil, Lent lily", "Liliaceae", "Daffodils appear in spring."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Narcissus poeticus var. recurvus", "Old Pheasant's Eye, Poet's narcissus", "Liliaceae", "A very late-flowering daffodil with white petals and a short orange/yellow trumpet."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Leucojum vernum", "Spring snowflake", "Liliaceae", "A lovely spring bulb that flowers in spring. It resembles a robust snowdrop."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Iris pseudacorus", "Yellow iris, Yellow flag", "Iridaceae", "Commonly found by water and damp places. It spreads quickly and can easily take over an area once introduced."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Crocus tommasinianus", "Early crocus", "Iridaceae", "An early flowering crocus with gentle lavender-coloured flowers."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Colchicum autumnale", "Meadow saffron, Autumn crocus", "Liliaceae", "Flowers in August and September months after its leaves have died away. Resembles a crocus very closely."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Hyacinthoides non-scripta", "Bluebell", "Liliaceae", "Cloaks the floor of deciduous woodland throughout Europe."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Erythronium dens-canis", "Dog's tooth violet", "Liliaceae", "The bulb is shaped like a dog's tooth, hence the name."); +INSERT INTO plants (name, common_name, family, description) VALUES ("Fritillaria meleagris", "Snake's-head fritillary", "Liliaceae", "It takes its name from the mottled pattern on its flower that resembles snakeskin."); +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Cyclamen coum", "Cyclamen", "Primulaceae", "A winter-flowering corm that provides excellent winter colour.", "cyc_cou.jpg"); +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Tulipa turkestanica", "Tulip", "Liliaceae", "A delicate little tulip that appears in mid spring.", "tul_tur.jpg"); +INSERT INTO plants (name, common_name, family, description, image) VALUES ("Ranunculus ficaria", "Lesser celandine", "Ranunculacae", "A dazzlingly yellow flower that is often considered a weed.", "ran_fic.jpg"); \ No newline at end of file diff --git a/ch12/src/shared/conf/database.properties b/ch12/src/shared/conf/database.properties new file mode 100644 index 0000000..ab7b216 --- /dev/null +++ b/ch12/src/shared/conf/database.properties @@ -0,0 +1,7 @@ +database.root=jdbc:mysql://localhost:3306/ +database.name=plants +driver.name=com.mysql.jdbc.Driver + +create.sql=SQL/plants.sql +insert.sql=SQL/plantsInsert.sql +drop.sql=SQL/plantsDrop.sql \ No newline at end of file diff --git a/ch12/src/shared/docs/LICENSE b/ch12/src/shared/docs/LICENSE new file mode 100644 index 0000000..f820d4b --- /dev/null +++ b/ch12/src/shared/docs/LICENSE @@ -0,0 +1,203 @@ +/* + * Apache License + * Version 2.0, January 2004 + * http://www.apache.org/licenses/ + * + * TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + * + * 1. Definitions. + * + * "License" shall mean the terms and conditions for use, reproduction, + * and distribution as defined by Sections 1 through 9 of this document. + * + * "Licensor" shall mean the copyright owner or entity authorized by + * the copyright owner that is granting the License. + * + * "Legal Entity" shall mean the union of the acting entity and all + * other entities that control, are controlled by, or are under common + * control with that entity. For the purposes of this definition, + * "control" means (i) the power, direct or indirect, to cause the + * direction or management of such entity, whether by contract or + * otherwise, or (ii) ownership of fifty percent (50%) or more of the + * outstanding shares, or (iii) beneficial ownership of such entity. + * + * "You" (or "Your") shall mean an individual or Legal Entity + * exercising permissions granted by this License. + * + * "Source" form shall mean the preferred form for making modifications, + * including but not limited to software source code, documentation + * source, and configuration files. + * + * "Object" form shall mean any form resulting from mechanical + * transformation or translation of a Source form, including but + * not limited to compiled object code, generated documentation, + * and conversions to other media types. + * + * "Work" shall mean the work of authorship, whether in Source or + * Object form, made available under the License, as indicated by a + * copyright notice that is included in or attached to the work + * (an example is provided in the Appendix below). + * + * "Derivative Works" shall mean any work, whether in Source or Object + * form, that is based on (or derived from) the Work and for which the + * editorial revisions, annotations, elaborations, or other modifications + * represent, as a whole, an original work of authorship. For the purposes + * of this License, Derivative Works shall not include works that remain + * separable from, or merely link (or bind by name) to the interfaces of, + * the Work and Derivative Works thereof. + * + * "Contribution" shall mean any work of authorship, including + * the original version of the Work and any modifications or additions + * to that Work or Derivative Works thereof, that is intentionally + * submitted to Licensor for inclusion in the Work by the copyright owner + * or by an individual or Legal Entity authorized to submit on behalf of + * the copyright owner. For the purposes of this definition, "submitted" + * means any form of electronic, verbal, or written communication sent + * to the Licensor or its representatives, including but not limited to + * communication on electronic mailing lists, source code control systems, + * and issue tracking systems that are managed by, or on behalf of, the + * Licensor for the purpose of discussing and improving the Work, but + * excluding communication that is conspicuously marked or otherwise + * designated in writing by the copyright owner as "Not a Contribution." + * + * "Contributor" shall mean Licensor and any individual or Legal Entity + * on behalf of whom a Contribution has been received by Licensor and + * subsequently incorporated within the Work. + * + * 2. Grant of Copyright License. Subject to the terms and conditions of + * this License, each Contributor hereby grants to You a perpetual, + * worldwide, non-exclusive, no-charge, royalty-free, irrevocable + * copyright license to reproduce, prepare Derivative Works of, + * publicly display, publicly perform, sublicense, and distribute the + * Work and such Derivative Works in Source or Object form. + * + * 3. Grant of Patent License. Subject to the terms and conditions of + * this License, each Contributor hereby grants to You a perpetual, + * worldwide, non-exclusive, no-charge, royalty-free, irrevocable + * (except as stated in this section) patent license to make, have made, + * use, offer to sell, sell, import, and otherwise transfer the Work, + * where such license applies only to those patent claims licensable + * by such Contributor that are necessarily infringed by their + * Contribution(s) alone or by combination of their Contribution(s) + * with the Work to which such Contribution(s) was submitted. If You + * institute patent litigation against any entity (including a + * cross-claim or counterclaim in a lawsuit) alleging that the Work + * or a Contribution incorporated within the Work constitutes direct + * or contributory patent infringement, then any patent licenses + * granted to You under this License for that Work shall terminate + * as of the date such litigation is filed. + * + * 4. Redistribution. You may reproduce and distribute copies of the + * Work or Derivative Works thereof in any medium, with or without + * modifications, and in Source or Object form, provided that You + * meet the following conditions: + * + * (a) You must give any other recipients of the Work or + * Derivative Works a copy of this License; and + * + * (b) You must cause any modified files to carry prominent notices + * stating that You changed the files; and + * + * (c) You must retain, in the Source form of any Derivative Works + * that You distribute, all copyright, patent, trademark, and + * attribution notices from the Source form of the Work, + * excluding those notices that do not pertain to any part of + * the Derivative Works; and + * + * (d) If the Work includes a "NOTICE" text file as part of its + * distribution, then any Derivative Works that You distribute must + * include a readable copy of the attribution notices contained + * within such NOTICE file, excluding those notices that do not + * pertain to any part of the Derivative Works, in at least one + * of the following places: within a NOTICE text file distributed + * as part of the Derivative Works; within the Source form or + * documentation, if provided along with the Derivative Works; or, + * within a display generated by the Derivative Works, if and + * wherever such third-party notices normally appear. The contents + * of the NOTICE file are for informational purposes only and + * do not modify the License. You may add Your own attribution + * notices within Derivative Works that You distribute, alongside + * or as an addendum to the NOTICE text from the Work, provided + * that such additional attribution notices cannot be construed + * as modifying the License. + * + * You may add Your own copyright statement to Your modifications and + * may provide additional or different license terms and conditions + * for use, reproduction, or distribution of Your modifications, or + * for any such Derivative Works as a whole, provided Your use, + * reproduction, and distribution of the Work otherwise complies with + * the conditions stated in this License. + * + * 5. Submission of Contributions. Unless You explicitly state otherwise, + * any Contribution intentionally submitted for inclusion in the Work + * by You to the Licensor shall be under the terms and conditions of + * this License, without any additional terms or conditions. + * Notwithstanding the above, nothing herein shall supersede or modify + * the terms of any separate license agreement you may have executed + * with Licensor regarding such Contributions. + * + * 6. Trademarks. This License does not grant permission to use the trade + * names, trademarks, service marks, or product names of the Licensor, + * except as required for reasonable and customary use in describing the + * origin of the Work and reproducing the content of the NOTICE file. + * + * 7. Disclaimer of Warranty. Unless required by applicable law or + * agreed to in writing, Licensor provides the Work (and each + * Contributor provides its Contributions) on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied, including, without limitation, any warranties or conditions + * of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + * PARTICULAR PURPOSE. You are solely responsible for determining the + * appropriateness of using or redistributing the Work and assume any + * risks associated with Your exercise of permissions under this License. + * + * 8. Limitation of Liability. In no event and under no legal theory, + * whether in tort (including negligence), contract, or otherwise, + * unless required by applicable law (such as deliberate and grossly + * negligent acts) or agreed to in writing, shall any Contributor be + * liable to You for damages, including any direct, indirect, special, + * incidental, or consequential damages of any character arising as a + * result of this License or out of the use or inability to use the + * Work (including but not limited to damages for loss of goodwill, + * work stoppage, computer failure or malfunction, or any and all + * other commercial damages or losses), even if such Contributor + * has been advised of the possibility of such damages. + * + * 9. Accepting Warranty or Additional Liability. While redistributing + * the Work or Derivative Works thereof, You may choose to offer, + * and charge a fee for, acceptance of support, warranty, indemnity, + * or other liability obligations and/or rights consistent with this + * License. However, in accepting such obligations, You may act only + * on Your own behalf and on Your sole responsibility, not on behalf + * of any other Contributor, and only if You agree to indemnify, + * defend, and hold each Contributor harmless for any liability + * incurred by, or claims asserted against, such Contributor by reason + * of your accepting any such warranty or additional liability. + * + * END OF TERMS AND CONDITIONS + * + * APPENDIX: How to apply the Apache License to your work. + * + * To apply the Apache License to your work, attach the following + * boilerplate notice, with the fields enclosed by brackets "[]" + * replaced with your own identifying information. (Don't include + * the brackets!) The text should be enclosed in the appropriate + * comment syntax for the file format. We also recommend that a + * file or class name and description of purpose be included on the + * same "printed page" as the copyright notice for easier + * identification within third-party archives. + * + * Copyright [yyyy] [name of copyright owner] + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ diff --git a/ch12/src/shared/docs/README b/ch12/src/shared/docs/README new file mode 100644 index 0000000..f629ac0 --- /dev/null +++ b/ch12/src/shared/docs/README @@ -0,0 +1,4 @@ +Each chapter's build file adds to the previous chapter's. + +Therefore, by Chapter 12, the build file contains all the targets and tasks +from the whole book. \ No newline at end of file diff --git a/ch12/src/shared/docs/index.html b/ch12/src/shared/docs/index.html new file mode 100644 index 0000000..dd2219c --- /dev/null +++ b/ch12/src/shared/docs/index.html @@ -0,0 +1,19 @@ + + + + Welcome to the Plant Application + + + + + + + + +
+ The stand-alone application
+ The web application
+

This is the Plant Application.

+ + + diff --git a/ch12/src/shared/java/org/mwrm/plants/Constants.java b/ch12/src/shared/java/org/mwrm/plants/Constants.java new file mode 100644 index 0000000..74b6e93 --- /dev/null +++ b/ch12/src/shared/java/org/mwrm/plants/Constants.java @@ -0,0 +1,47 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +/** + * The Constants class contains four constants + * that represent sort options. + * + */ + +public class Constants { + + /** Use to sort the plants by their botanical name. */ + public static final int SORT_BY_NAME = 1; + + /** Use to sort the plants by their common name. */ + public static final int SORT_BY_COMMON_NAME = 2; + + /** Use to sort the plants by their family name. */ + public static final int SORT_BY_FAMILY = 3; + + /** + * Use to sort the plants by their botanical name + * and exclude those plants that do not begin with the chosen letter. + */ + public static final int SORT_BY_CHOSEN_LETTER = 4; + + /** + * A simple constructor. + */ + public Constants() { } + +} diff --git a/ch12/src/shared/java/org/mwrm/plants/PropertiesLoader.java b/ch12/src/shared/java/org/mwrm/plants/PropertiesLoader.java new file mode 100644 index 0000000..10d07f3 --- /dev/null +++ b/ch12/src/shared/java/org/mwrm/plants/PropertiesLoader.java @@ -0,0 +1,53 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +import java.util.Properties; + +import java.io.IOException; + +/** + * The PropertiesLoader class loads properties + * from the database.properties file and passes them + * to whichever class wants to use them. This centralises the name + * of the properties file so the entire application can use it. + */ + +public class PropertiesLoader { + + /** A simple constructor. */ + public PropertiesLoader() { } + + /** + * Loads the properties for whichever class needs them. + * + * @return A Java properties file + */ + public final Properties loadProperties() { + + // Read properties file. + Properties properties = new Properties(); + try { + properties.load(this.getClass().getClassLoader() + .getResourceAsStream("database.properties")); + } catch (IOException e) { + System.out.println("Error: " + e.getMessage()); + } + + return properties; + } +} diff --git a/ch12/src/shared/java/org/mwrm/plants/SelectData.java b/ch12/src/shared/java/org/mwrm/plants/SelectData.java new file mode 100644 index 0000000..5a0ad89 --- /dev/null +++ b/ch12/src/shared/java/org/mwrm/plants/SelectData.java @@ -0,0 +1,156 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.Statement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; + +import java.util.HashMap; +import java.util.Vector; +import java.util.Properties; + +/** + *

The SelectData class establishes a connection + * with a database and executes a query, as selected by the client.

+ * + *

It gets the database driver name and the URL + * from the database.properties file. + * When the results come back from the database, + * this class places them as HashMap records + * in a Vector. It then passes this Vector + * back to the calling client.

+ * + *

The SQL strings are:

+ * + *
    + *
  • Constants.SORT_BY_NAME (the default): + * SELECT * FROM plants ORDER BY name
  • + *
  • Constants.SORT_BY_COMMON_NAME: + * SELECT * FROM plants ORDER BY common_name
  • + *
  • Constants.SORT_BY_FAMILY: + * SELECT * FROM plants ORDER BY family, name
  • + *
  • Constants.SORT_BY_CHOSEN_LETTER: + * SELECT * FROM plants WHERE name REGEXP '^X' + * where X is a letter supplied by the client
  • + *
+ */ + +public final class SelectData { + + /** + *

The default constructor.

+ */ + private SelectData() { } + + /** + * Get the data from the database. + * @param choice The criteria for sorting the results. + * This choice is held in the Constants class. + * @param letter The letter to use when limiting the search, + * should that option be chosen. + * @return Vector + * @throws ClassNotFoundException If the database driver is not found + * @throws SQLException If there's a problem with database operations + */ + public static Vector getData(final int choice, final String letter) + throws ClassNotFoundException, SQLException { + + // Read properties file + PropertiesLoader loader = new PropertiesLoader(); + Properties properties = loader.loadProperties(); + + // First load the MySQL JDBC driver + Class.forName(properties.getProperty("driver.name")); + + // The datasource + String url = properties.getProperty("database.root") + + properties.getProperty("database.name"); + + // Open the connection + Connection con = DriverManager.getConnection(url, "antBook", "antB00k"); + + Statement stmt = con.createStatement(); + + String select = getSelectString(choice, letter); + + // Now we get the data + ResultSet rs = stmt.executeQuery(select); + + // We'll need the metadata when we come to populate the session object + ResultSetMetaData rsmd = rs.getMetaData(); + int numberOfColumns = rsmd.getColumnCount(); + + Vector results = new Vector(); + + while (rs.next()) { + // We need a fresh entry every time + HashMap record = new HashMap(numberOfColumns); + + String columnName = ""; + + // For each column in the table, + // we want to add an entry to the HashMap + // with the same key as the column name + for (int i = 1; i <= numberOfColumns; i++) { + columnName = rsmd.getColumnName(i); + record.put(columnName, rs.getString(columnName)); + } + results.add(record); + } + + // Close the Statement and the Connection + stmt.close(); + con.close(); + + return results; + } + + /** + *

Returns the appropriate SQL string for the choice.

+ * @param choice The user's choice of search criteria. + * @param letter The letter to use when modifying the search. + * @return String + */ + private static String + getSelectString(final int choice, final String letter) { + + // This is the default SELECT statement if no arguments are specified + String selectString = "SELECT * FROM plants ORDER BY name"; + + // Check the type of argument + if (choice == Constants.SORT_BY_COMMON_NAME) { + // Order the results by common name + selectString = "SELECT * FROM plants ORDER BY common_name"; + + } else if (choice == Constants.SORT_BY_FAMILY) { + // Order the results by family, then botanical name + selectString = "SELECT * FROM plants ORDER BY family, name"; + + } else if (choice == Constants.SORT_BY_CHOSEN_LETTER) { + // The search will only return those plants whose botanical name + // begins with the specifed letter. + selectString = "SELECT * FROM plants WHERE name REGEXP '^" + + letter + "'"; + } + + return selectString; + } +} diff --git a/ch12/src/shared/java/org/mwrm/plants/package.html b/ch12/src/shared/java/org/mwrm/plants/package.html new file mode 100644 index 0000000..b64e7c3 --- /dev/null +++ b/ch12/src/shared/java/org/mwrm/plants/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants Package + + +

Utility classes for the plant application.

+ + \ No newline at end of file diff --git a/ch12/src/stand-alone/docs/index.html b/ch12/src/stand-alone/docs/index.html new file mode 100644 index 0000000..f615152 --- /dev/null +++ b/ch12/src/stand-alone/docs/index.html @@ -0,0 +1,19 @@ + + + + Welcome to the Plant Application + + + + + + + + +
+ The stand-alone application
+ The web application
+

This is the stand-alone application.

+ + + \ No newline at end of file diff --git a/ch12/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java b/ch12/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java new file mode 100644 index 0000000..bca1073 --- /dev/null +++ b/ch12/src/stand-alone/java/org/mwrm/plants/client/PlantClient.java @@ -0,0 +1,154 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants.client; + +import java.sql.SQLException; + +import java.util.HashMap; +import java.util.Vector; +import java.util.Enumeration; + +import org.mwrm.plants.SelectData; +import org.mwrm.plants.Constants; + +/** + *

The PlantClient class is a command-line client + * for the plant application.

+ *

Usage:

+ *
    + *
  • -c Order by common name
  • + *
  • -f Order by family
  • + *
  • -n Order by botanical name (default)
  • + *
  • -n [letter] Order by botanical name + * and limit the search to plants beginning with the specified letter
  • + *
+ */ + +public final class PlantClient { + + /** + *

A simple constructor.

+ */ + private PlantClient() { } + + /** + * Checks the arguments, + * then uses the org.mwrm.plants.SelectData + * class to get results from the database. + * Once it has the results, it displays them to standard out. + * @param args The command-line arguments. + * @throws ClassNotFoundException If the database driver is not found + * @throws SQLException If there is a problem with the database + */ + public static void main(final String[] args) + throws ClassNotFoundException, SQLException { + + // The default choice + int choice = Constants.SORT_BY_NAME; + + // The user may want to select by a certain letter + String letter = ""; + + // Check that an argument has been provided + if (args.length > 0) { + // Check the type of argument + if (args[0].equals("-c") || args[0].equals("")) { + // Cannot be used with an argument just now, + // though Ant may pass an empty string + if (args.length > 1 && !args[1].equals("")) { + usage(); + } + // Order the results by common name + choice = Constants.SORT_BY_COMMON_NAME; + + } else if (args[0].equals("-f")) { + // Cannot be used with an argument just now, + // though Ant may pass an empty string + if (args.length > 1 && !args[1].equals("")) { + usage(); + } + // Order the results by family, then botanical name + choice = Constants.SORT_BY_FAMILY; + + } else if (args[0].equals("-n")) { + // Order the results by botanical name + // This is the default if no arguments are specified + + // The user can provide another argument. + // The search will only return those plants whose botanical name + // begins with the specifed letter. + if (args.length > 1 && !args[1].equals("")) { + choice = Constants.SORT_BY_CHOSEN_LETTER; + letter = args[1]; + } + } else { + // Usage information + usage(); + } + } + + // Obtain the results. This is a Vector of HashMaps + Vector results = SelectData.getData(choice, letter); + + // The top of the results display + System.out.println("\n-----------------------------"); + + // If there is no data in the results, tell the user + if (results.isEmpty()) { + System.out.println("No results found."); + System.out.println("-----------------------------"); + } else { + + // Each record in the database is a HashMap + HashMap record = new HashMap(); + + // Iterate over the results + for (Enumeration enum = results.elements(); + enum.hasMoreElements();) { + + record = (HashMap) enum.nextElement(); + + // The cultivar name is optional + String cultivar = ""; + + if (!(record.get("cultivar_name") == null)) { + cultivar = " '" + record.get("cultivar_name") + "'"; + } + + System.out.println("Name: " + record.get("name") + cultivar); + System.out.println("Common name: " + record.get("common_name")); + System.out.println("Family: " + record.get("family")); + System.out.println("Description: " + record.get("description")); + System.out.println("-----------------------------"); + } + } + } + + /** + *

Print the usage information.

+ */ + private static void usage() { + System.out.println("\nUsage: \n"); + System.out.println("-c \t\t Order by common name"); + System.out.println("-f \t\t Order by family"); + System.out.println("-n \t\t Order by botanical name (default)"); + System.out.println("-n [letter] \t Order by botanical name" + + " and limit the search to plants "); + System.out.println("\t\t beginning with the specified letter"); + System.exit(0); + } +} diff --git a/ch12/src/stand-alone/java/org/mwrm/plants/client/package.html b/ch12/src/stand-alone/java/org/mwrm/plants/client/package.html new file mode 100644 index 0000000..9148475 --- /dev/null +++ b/ch12/src/stand-alone/java/org/mwrm/plants/client/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants.client Package + + +

Contains the command-line client for the plant application.

+ + \ No newline at end of file diff --git a/ch12/src/web/conf/antBook.xml b/ch12/src/web/conf/antBook.xml new file mode 100644 index 0000000..9746019 --- /dev/null +++ b/ch12/src/web/conf/antBook.xml @@ -0,0 +1,3 @@ + + diff --git a/ch12/src/web/conf/plant.tld b/ch12/src/web/conf/plant.tld new file mode 100644 index 0000000..0066066 --- /dev/null +++ b/ch12/src/web/conf/plant.tld @@ -0,0 +1,32 @@ + + + + + 1.0 + 2.0 + plant + /plant-taglib + + A simple tab library for the plant application + + + + + Displays a character when given an integer + + letters + org.mwrm.plants.tags.LettersTag + false + none + + letter + true + true + char + + + + \ No newline at end of file diff --git a/ch12/src/web/conf/web.xml b/ch12/src/web/conf/web.xml new file mode 100644 index 0000000..c60d60e --- /dev/null +++ b/ch12/src/web/conf/web.xml @@ -0,0 +1,66 @@ + + + + + A plant application. + + + + resultsPerPage + 5 + + This value sets how many results will be shown per results page. + + + + + + + Resource reference to a factory for java.sql.Connection + instances that may be used for talking to a particular + database that is configured in the plantBook.xml file. + + + jdbc/PlantDB + + + javax.sql.DataSource + + + SERVLET + + + + + /plant-taglib + /WEB-INF/plant.tld + + + + plantServlet + + org.mwrm.plants.servlets.PlantServlet + + + + + Print debug information to the console + + + debug + + + true + + + + + + plantServlet + /plants/listPlants.jsp + + + \ No newline at end of file diff --git a/ch12/src/web/docs/index.html b/ch12/src/web/docs/index.html new file mode 100644 index 0000000..606c2b3 --- /dev/null +++ b/ch12/src/web/docs/index.html @@ -0,0 +1,19 @@ + + + + Welcome to the Plant Application + + + + + + + + +
+ The stand-alone application
+ The web application
+

This is the web application.

+ + + \ No newline at end of file diff --git a/ch12/src/web/images/banner_under.jpg b/ch12/src/web/images/banner_under.jpg new file mode 100644 index 0000000000000000000000000000000000000000..131c6a10b4fce0a65d11ee54cba46b10772eefbc GIT binary patch literal 21943 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 literal 0 HcmV?d00001 diff --git a/ch12/src/web/images/cyc_cou.jpg b/ch12/src/web/images/cyc_cou.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed0556c8da702a9316b72a885aef6fdcd8bc7a12 GIT binary patch literal 15502 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

The servlet client for the plant application.

+ * + *

Extracts the show parameter from the request + * to determine what the user wants to see. + * Valid values for show are:

+ * + *
    + *
  • common: Order by common name
  • + *
  • family: Order by family
  • + *
  • name: Order by botanical name (default)
  • + *
+ * + *

If the client sends a letter parameter, + * then the search is limited to records that begin with that letter.

+ */ +public class PlantServlet extends HttpServlet { + + /** + *

Extracts the show parameter from the request + * to determine what the user wants to see. + * Valid values for show are:

+ * + *
    + *
  • common: Order by common name
  • + *
  • family: Order by family
  • + *
  • name: Order by botanical name (default)
  • + *
+ * + *

If the client sends a letter parameter, + * then the search is limited to records that begin with that letter.

+ * + *

Once the choice has been extracted, + * this servlet uses the org.mwrm.plants.SelectData class + * to get results from the database. Once it has the results, + * it places them in the session under the name "results" + * and forwards the request to /plants/displayPage.jsp, + * which displays the first page of the results.

+ * + *

If the debug servlet initialization parameter + * is set to true the results + * will also be sent to standard out.

+ * + * @param request The request object. + * @param response The response object. + * + * @throws ServletException + * If there is a problem when processing the request + * @throws IOException If there is a problem writing the response + */ + public final void doGet(final HttpServletRequest request, + final HttpServletResponse response) + throws ServletException, IOException { + // The default choice + int choice = Constants.SORT_BY_NAME; + + // Check the show parameter + // to see if the user wants to select anything else + if (request.getParameter("show").equals("common")) { + choice = Constants.SORT_BY_COMMON_NAME; + } else if (request.getParameter("show").equals("family")) { + choice = Constants.SORT_BY_FAMILY; + } + + // The results from the database + Vector results = null; + // The letter that the user wants to sort by + String letter = null; + + // If the letter parameter is set, then make the appropriate choice + if (request.getParameter("letter") != null) { + letter = request.getParameter("letter").toLowerCase(); + choice = Constants.SORT_BY_CHOSEN_LETTER; + } + + // Obtain the results. This is a Vector of HashMaps + try { + results = SelectData.getData(choice, letter); + } catch (ClassNotFoundException cnfe) { + throw new ServletException(cnfe.getMessage()); + } catch (SQLException sqle) { + throw new ServletException(sqle.getMessage()); + } + + // The debug servlet initialization parameter sets output options + if (getServletConfig().getInitParameter("debug").equals("true")) { + // The top of the results display + System.out.println("\n-----------------------------"); + + // If there is no data in the results, tell the user + if (results.isEmpty()) { + System.out.println("No results found."); + System.out.println("-----------------------------"); + } else { + + // Each record in the database is a HashMap + HashMap record = new HashMap(); + + // Iterate over the results + for (Enumeration enum = results.elements(); + enum.hasMoreElements();) { + + // The current record + record = (HashMap) enum.nextElement(); + + // The cultivar name is optional + String cultivar = ""; + + // If the cultivar_name column is present, + // add it to the output string + if (!(record.get("cultivar_name") == null)) { + cultivar = " '" + record.get("cultivar_name") + "'"; + } + + // Print them to standard out + System.out.println("Name: " + + record.get("name") + cultivar); + System.out.println("Common name: " + + record.get("common_name")); + System.out.println("Family: " + + record.get("family")); + System.out.println("Description: " + + record.get("description")); + System.out.println("Image: " + + record.get("image")); + System.out.println("-----------------------------"); + } + } + } + + // Now store the results in the session + HttpSession session = request.getSession(true); + + // If the results are empty, + // then store a flag to tell the application as such, + // then remove the results object so the pages don't try to work with it + if (results.isEmpty()) { + session.setAttribute("noResults", "true"); + session.removeAttribute("results"); + + // There are some results, + // so place them in the session and remove the noResults flag, + // so that the application knows there are results + } else { + session.setAttribute("results", results); + session.removeAttribute("noResults"); + + // The pages will need to know the number of results + session.setAttribute("resultsSize", "" + results.size() + ""); + } + + // Forward the request to the display page + getServletContext() + .getRequestDispatcher("/plants/displayResults.jsp?start=0") + .forward(request, response); + } + + /** + * Sends any POST requests to the doGet method. + * + * @param request The request object. + * @param response The response object. + * + * @throws ServletException + * If there is a problem when processing the request + * @throws IOException If there is a problem writing the response + */ + public final void doPost(final HttpServletRequest request, + final HttpServletResponse response) + throws ServletException, IOException { + doGet(request, response); + } +} diff --git a/ch12/src/web/java/org/mwrm/plants/servlets/package.html b/ch12/src/web/java/org/mwrm/plants/servlets/package.html new file mode 100644 index 0000000..d9ac8dd --- /dev/null +++ b/ch12/src/web/java/org/mwrm/plants/servlets/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants.servlets Package + + +

Contains the servlet for the plant application.

+ + \ No newline at end of file diff --git a/ch12/src/web/java/org/mwrm/plants/tags/LettersTag.java b/ch12/src/web/java/org/mwrm/plants/tags/LettersTag.java new file mode 100644 index 0000000..6911f3f --- /dev/null +++ b/ch12/src/web/java/org/mwrm/plants/tags/LettersTag.java @@ -0,0 +1,63 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants.tags; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.JspWriter; +import javax.servlet.jsp.tagext.SimpleTagSupport; + +import java.io.IOException; + + /** + *

Converts an integer into a character. + * The letter attribute takes the integer, + * which is converted to a char by the time the tag gets it. + * The tag then writes the char to the client.

+ */ +public class LettersTag extends SimpleTagSupport { + + /** + * The character to display. + */ + private char letter; + + /** + *

Processes the tag when it is encountered on the page.

+ * @throws JspException + * If there is a problem processing the tag + * @throws IOException + * If there is a problem writing to the client + */ + public final void doTag() throws JspException, IOException { + + // The page that the client will receive + JspWriter out = getJspContext().getOut(); + + // Write the letter to the client + out.print(letter); + } + + /** + * + *

The setter method for the letter attribute.

+ * + * @param aLetter The letter to display. + */ + public final void setLetter(final char aLetter) { + this.letter = aLetter; + } +} diff --git a/ch12/src/web/java/org/mwrm/plants/tags/package.html b/ch12/src/web/java/org/mwrm/plants/tags/package.html new file mode 100644 index 0000000..fcb8df4 --- /dev/null +++ b/ch12/src/web/java/org/mwrm/plants/tags/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants.tags Package + + +

Contains the custom tags for the plant application.

+ + \ No newline at end of file diff --git a/ch12/src/web/pages/footer.html b/ch12/src/web/pages/footer.html new file mode 100644 index 0000000..8511c9c --- /dev/null +++ b/ch12/src/web/pages/footer.html @@ -0,0 +1,3 @@ +
+ Bottom banner +
\ No newline at end of file diff --git a/ch12/src/web/pages/header.jsp b/ch12/src/web/pages/header.jsp new file mode 100644 index 0000000..135f4a5 --- /dev/null +++ b/ch12/src/web/pages/header.jsp @@ -0,0 +1,16 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> +<%@ taglib uri="/plant-taglib" prefix="tags" %> +
\ No newline at end of file diff --git a/ch12/src/web/pages/index.jsp b/ch12/src/web/pages/index.jsp new file mode 100644 index 0000000..2b9ae28 --- /dev/null +++ b/ch12/src/web/pages/index.jsp @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/ch12/src/web/pages/indexBody.jsp b/ch12/src/web/pages/indexBody.jsp new file mode 100644 index 0000000..6410604 --- /dev/null +++ b/ch12/src/web/pages/indexBody.jsp @@ -0,0 +1 @@ +

Welcome to the plant information application.

\ No newline at end of file diff --git a/ch12/src/web/pages/menu.jsp b/ch12/src/web/pages/menu.jsp new file mode 100644 index 0000000..135b8cc --- /dev/null +++ b/ch12/src/web/pages/menu.jsp @@ -0,0 +1,5 @@ +<%-- This page is common to the whole application --%> +<%@ taglib tagdir="/WEB-INF/tags" prefix="tags" %> +
+ +
\ No newline at end of file diff --git a/ch12/src/web/pages/plantStyle.css b/ch12/src/web/pages/plantStyle.css new file mode 100644 index 0000000..48b3129 --- /dev/null +++ b/ch12/src/web/pages/plantStyle.css @@ -0,0 +1,75 @@ +.menu-main { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: large; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.menu-sub { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: medium; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.footer { + color: #000000; + background-color: #FFFFFF; +} + +h1 { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: large; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.letters { + color: #000000; + background-color: #FFFFFF; + margin: 3px 5px 5px 3px; + font-size: medium; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} + +.center { + text-align: center +} + +tr.template { + height: 500px +} + +td.template { + width: 200px +} + +tr.resultRow { + height: 250px +} + +p.left { + text-align: left +} + +p { + color: #000000; + background-color: #FFFFFF; + font-family: Arial, Verdana,Helvetica, Sans-Serif +} + +.italic { + color: #000000; + background-color: #FFFFFF; + font-family: Arial, Verdana,Helvetica, Sans-Serif; + font-style: italic +} + +.results { + color: #000000; + background-color: #FFFFFF; + font-family: Arial, Verdana,Helvetica, Sans-Serif; +} diff --git a/ch12/src/web/pages/plants/displayPlant.jsp b/ch12/src/web/pages/plants/displayPlant.jsp new file mode 100644 index 0000000..6e30cd6 --- /dev/null +++ b/ch12/src/web/pages/plants/displayPlant.jsp @@ -0,0 +1,15 @@ +<%-- JSP Directives --%> +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + + + + + + + + + + + + + diff --git a/ch12/src/web/pages/plants/displayPlantBody.jsp b/ch12/src/web/pages/plants/displayPlantBody.jsp new file mode 100644 index 0000000..9c37af4 --- /dev/null +++ b/ch12/src/web/pages/plants/displayPlantBody.jsp @@ -0,0 +1,31 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + + + + + + + + + + + + + + + + + +
+

+ Name:
+ Common name:
+ Family:
+ Description:
+

+
+
+ +<%-- We need to go back to where we came from --%> +Back \ No newline at end of file diff --git a/ch12/src/web/pages/plants/displayResults.jsp b/ch12/src/web/pages/plants/displayResults.jsp new file mode 100644 index 0000000..6c7c31c --- /dev/null +++ b/ch12/src/web/pages/plants/displayResults.jsp @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/ch12/src/web/pages/plants/displayResultsBody.jsp b/ch12/src/web/pages/plants/displayResultsBody.jsp new file mode 100644 index 0000000..0c09a66 --- /dev/null +++ b/ch12/src/web/pages/plants/displayResultsBody.jsp @@ -0,0 +1,63 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> + + +

Search Results

+ + + +

Sorry, there were no results for the search. Please try again.

+
+ + +
+

Number of results:

+ + + + + + + +
+ + "> +
+ +
+
+
+ + + + + + + ">First + + + + + + + ">Back + + + + + + + ">Next + + + + + + + ">Last + +
+
+ + \ No newline at end of file diff --git a/ch12/src/web/pages/plants/index.jsp b/ch12/src/web/pages/plants/index.jsp new file mode 100644 index 0000000..3c51457 --- /dev/null +++ b/ch12/src/web/pages/plants/index.jsp @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/ch12/src/web/pages/plants/searchForm.jsp b/ch12/src/web/pages/plants/searchForm.jsp new file mode 100644 index 0000000..0043e00 --- /dev/null +++ b/ch12/src/web/pages/plants/searchForm.jsp @@ -0,0 +1 @@ +

Click on a letter above or a link on the left.

diff --git a/ch12/src/web/pages/template.jsp b/ch12/src/web/pages/template.jsp new file mode 100644 index 0000000..a1fff41 --- /dev/null +++ b/ch12/src/web/pages/template.jsp @@ -0,0 +1,47 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + + + + + + + <c:out value="${param.title}" default="Plants"/> + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + +
+
+ + + \ No newline at end of file diff --git a/ch12/src/web/tags/simple.tag b/ch12/src/web/tags/simple.tag new file mode 100644 index 0000000..8683c7f --- /dev/null +++ b/ch12/src/web/tags/simple.tag @@ -0,0 +1,12 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> + +

+ Home
+ Plants
+ + +  By common name
+  By botanical name
+  By family
+
+

\ No newline at end of file diff --git a/ch12/test/org/mwrm/plants/PlantWebTest.java b/ch12/test/org/mwrm/plants/PlantWebTest.java new file mode 100644 index 0000000..f1c5093 --- /dev/null +++ b/ch12/test/org/mwrm/plants/PlantWebTest.java @@ -0,0 +1,110 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants; + +import java.io.IOException; +import java.net.MalformedURLException; +import org.xml.sax.SAXException; + +import junit.framework.TestCase; + +import com.meterware.httpunit.WebConversation; +import com.meterware.httpunit.WebResponse; + +/** + *

Tests the plant servlet. + * It checks that the web application is running + * and then checks the session is emptied + * if the there are no results in the query.

+ */ +public class PlantWebTest extends TestCase { + + /** The URL of the server. */ + private static final String SERVER_URL = "http://localhost:8080"; + + /** The web application's name. */ + private static final String WEB_APP = "/antBook"; + + /** The response code we're looking for. */ + private static final int RESPONSE_CODE = 200; + + /** + *

The constructor, + * which simply calls super(name).

+ * @param name The name of the test + */ + public PlantWebTest(final String name) { + super(name); + } + + /** + *

We want to make sure that the web application is running.

+ * @throws MalformedURLException + * If the URL of the web server is not correct + * @throws SAXException + * If the response can't be processed properly + */ + public final void testIsRunning() + throws MalformedURLException, SAXException { + // Create a WebConversation object + WebConversation wc = new WebConversation(); + try { + // Send a request to the web application's root + WebResponse resp = wc.getResponse(SERVER_URL + WEB_APP); + + // If there is a 200 return code, then it is available + assertEquals("Web application not available at " + + SERVER_URL + WEB_APP, + RESPONSE_CODE, resp.getResponseCode()); + } catch (IOException ioe) { + // We can't find the server, so we fail the test + fail("Server not available"); + } + } + + /** + *

The application should detect that no results have been obtained.

+ * @throws MalformedURLException + * If the URL of the web server is not correct + * @throws SAXException + * If the response can't be processed properly + */ + public final void testSession() + throws MalformedURLException, SAXException { + // Create a WebConversation object + WebConversation wc = new WebConversation(); + + try { + // First send a request that will not produce any results + WebResponse resp = + wc.getResponse(SERVER_URL + WEB_APP + + "/plants/listPlants.jsp?show=name&letter=X"); + // Check that this is the case + assertTrue("Session not cancelled after empty results", + (resp.getText().indexOf("Sorry") > -1)); + + // Now go to the index page, + // where there should not be an error message + resp = wc.getResponse(SERVER_URL + WEB_APP + "/plants/"); + assertTrue("Session not cancelled after empty results", + !(resp.getText().indexOf("Sorry") > -1)); + } catch (IOException ioe) { + // We can't find the server, so we fail the test + fail("Server not available"); + } + } +} diff --git a/ch12/test/org/mwrm/plants/package.html b/ch12/test/org/mwrm/plants/package.html new file mode 100644 index 0000000..a9c3f06 --- /dev/null +++ b/ch12/test/org/mwrm/plants/package.html @@ -0,0 +1,8 @@ + + + org.mwrm.plants + + +

Contains the test classes for the plant application.

+ + diff --git a/contributing.md b/contributing.md new file mode 100644 index 0000000..f6005ad --- /dev/null +++ b/contributing.md @@ -0,0 +1,14 @@ +# Contributing to Apress Source Code + +Copyright for Apress source code belongs to the author(s). However, under fair use you are encouraged to fork and contribute minor corrections and updates for the benefit of the author(s) and other readers. + +## How to Contribute + +1. Make sure you have a GitHub account. +2. Fork the repository for the relevant book. +3. Create a new branch on which to make your change, e.g. +`git checkout -b my_code_contribution` +4. Commit your change. Include a commit message describing the correction. Please note that if your commit message is not clear, the correction will not be accepted. +5. Submit a pull request. + +Thank you for your contribution! \ No newline at end of file

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 literal 0 HcmV?d00001 diff --git a/ch12/src/web/images/no_image.jpg b/ch12/src/web/images/no_image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e86c254e4a1b43f14f582bb31a3f6280d0187a95 GIT binary patch literal 8646 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 w6Q>LRJ1zbbKmA?!FZi9NzW@LL literal 0 HcmV?d00001 diff --git a/ch12/src/web/images/tul_tur.jpg b/ch12/src/web/images/tul_tur.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fcc77b230ba510c80c7c3125e49f9e1b2b7f4303 GIT binary patch literal 21047 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 V1RgxR+tNU<`HJbJtc>re|Jei&5nTWP literal 0 HcmV?d00001 diff --git a/ch12/src/web/java/org/mwrm/plants/servlets/PlantServlet.java b/ch12/src/web/java/org/mwrm/plants/servlets/PlantServlet.java new file mode 100644 index 0000000..bc9b9a8 --- /dev/null +++ b/ch12/src/web/java/org/mwrm/plants/servlets/PlantServlet.java @@ -0,0 +1,209 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants.servlets; + +import java.sql.SQLException; + +import java.util.HashMap; +import java.util.Vector; +import java.util.Enumeration; + +import java.io.IOException; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import javax.servlet.ServletException; + +import org.mwrm.plants.SelectData; +import org.mwrm.plants.Constants; + + /** + *

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 literal 0 HcmV?d00001 diff --git a/ch11/src/web/images/no_image.jpg b/ch11/src/web/images/no_image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e86c254e4a1b43f14f582bb31a3f6280d0187a95 GIT binary patch literal 8646 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 w6Q>LRJ1zbbKmA?!FZi9NzW@LL literal 0 HcmV?d00001 diff --git a/ch11/src/web/images/tul_tur.jpg b/ch11/src/web/images/tul_tur.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fcc77b230ba510c80c7c3125e49f9e1b2b7f4303 GIT binary patch literal 21047 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 V1RgxR+tNU<`HJbJtc>re|Jei&5nTWP literal 0 HcmV?d00001 diff --git a/ch11/src/web/java/org/mwrm/plants/servlets/PlantServlet.java b/ch11/src/web/java/org/mwrm/plants/servlets/PlantServlet.java new file mode 100644 index 0000000..bc9b9a8 --- /dev/null +++ b/ch11/src/web/java/org/mwrm/plants/servlets/PlantServlet.java @@ -0,0 +1,209 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants.servlets; + +import java.sql.SQLException; + +import java.util.HashMap; +import java.util.Vector; +import java.util.Enumeration; + +import java.io.IOException; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import javax.servlet.ServletException; + +import org.mwrm.plants.SelectData; +import org.mwrm.plants.Constants; + + /** + *

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 literal 0 HcmV?d00001 diff --git a/ch05/src/web/images/no_image.jpg b/ch05/src/web/images/no_image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e86c254e4a1b43f14f582bb31a3f6280d0187a95 GIT binary patch literal 8646 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 w6Q>LRJ1zbbKmA?!FZi9NzW@LL literal 0 HcmV?d00001 diff --git a/ch05/src/web/images/tul_tur.jpg b/ch05/src/web/images/tul_tur.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fcc77b230ba510c80c7c3125e49f9e1b2b7f4303 GIT binary patch literal 21047 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 V1RgxR+tNU<`HJbJtc>re|Jei&5nTWP literal 0 HcmV?d00001 diff --git a/ch05/src/web/java/org/mwrm/plants/servlets/PlantServlet.java b/ch05/src/web/java/org/mwrm/plants/servlets/PlantServlet.java new file mode 100644 index 0000000..bc9b9a8 --- /dev/null +++ b/ch05/src/web/java/org/mwrm/plants/servlets/PlantServlet.java @@ -0,0 +1,209 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.mwrm.plants.servlets; + +import java.sql.SQLException; + +import java.util.HashMap; +import java.util.Vector; +import java.util.Enumeration; + +import java.io.IOException; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import javax.servlet.ServletException; + +import org.mwrm.plants.SelectData; +import org.mwrm.plants.Constants; + + /** + *