From 442dbdaa653c391a39024497c0f43838642a640b Mon Sep 17 00:00:00 2001 From: Travis CI Date: Wed, 28 Feb 2018 09:12:57 +0000 Subject: [PATCH 01/79] Deploy to GitHub Pages: c960588e736d450d4f382685f64f43919f0b687d --- admin-p.html | 42 + admin.html | 42 + .../authoring.md => admin/authoring-p.html | 322 +++-- admin/authoring.html | 149 +++ admin/customization-p.html | 84 ++ admin/customization.html | 51 + .../materials-p.html | 51 + admin/materials.html | 57 + {courses/admin => admin}/media/README.md | 0 assets/index-bottom.html | 5 - assets/presentation-top.html | 33 - .../media/AgileVSWaterfall1.jpg | Bin .../media/AgileVSWaterfall2.png | Bin .../media/AgileVSWaterfall3.png | Bin .../common => common}/media/BurndownChart.jpg | Bin .../common => common}/media/CostOfErrors.png | Bin .../media/EarlyDecisionsHurt.png | Bin {courses/common => common}/media/Fixed-3.jpg | Bin .../media/IncrementalDevelopment.jpg | Bin .../common => common}/media/KanbanBoard.png | Bin .../media/MoreDetailedPB.png | Bin {courses/common => common}/media/Nexus.png | Bin .../media/ProjectComplexity.jpeg | Bin {courses/common => common}/media/README.md | 0 .../media/ReleaseBurndown.png | Bin {courses/common => common}/media/SamplePB.png | Bin .../media/ScrumFramework1.png | Bin .../media/ScrumFrameworkAll.png | Bin .../common => common}/media/ScrumOfScrums.png | Bin .../common => common}/media/SprintBoard.png | Bin .../common => common}/media/StateOfAgile.png | Bin {courses/common => common}/media/WhyAgile.png | Bin .../media/cias_countermeasures_all.png | Bin .../common => common}/media/cs-testing.PNG | Bin .../common => common}/media/dom-based_xss.png | Bin {courses/common => common}/media/junit.gif | Bin {courses/common => common}/media/perlbcov.png | Bin {courses/common => common}/media/perlcov.png | Bin .../common => common}/media/reflected_xss.png | Bin .../common => common}/media/stored_xss.png | Bin {courses/common => common}/media/testPlan.png | Bin .../common => common}/media/testSuite.png | Bin .../common => common}/media/tree-uml-1.png | Bin courses/admin.md | 4 - courses/admin/README.md | 2 - courses/admin/customization.md | 12 - courses/admin/materials.md | 18 - courses/common/README.md | 1 - courses/common/agile.md | 1068 ----------------- courses/common/designPatterns.md | 426 ------- courses/common/hello.md | 27 - courses/common/lazy.md | 162 --- courses/common/sec.md | 189 --- courses/common/test-practices.md | 740 ------------ courses/common/test-theory.md | 121 -- courses/common/unit-testing.md | 134 --- courses/common/writingMaintainableCode.md | 596 --------- courses/tools.md | 3 - courses/tools/travis_ci.md | 86 -- courses/tutorials.md | 34 - courses/tutorials/tutorial_2_A.md | 97 -- courses/tutorials/tutorial_6_A.md | 69 -- courses/tutorials/tutorial_7_B.md | 50 - {assets/css => css}/pandoc-syntax.css | 0 index.html | 57 + {assets/reveal.js => reveal.js}/.gitignore | 0 {assets/reveal.js => reveal.js}/.travis.yml | 0 .../reveal.js => reveal.js}/CONTRIBUTING.md | 0 {assets/reveal.js => reveal.js}/Gruntfile.js | 0 {assets/reveal.js => reveal.js}/LICENSE | 0 {assets/reveal.js => reveal.js}/README.md | 0 {assets/reveal.js => reveal.js}/bower.json | 0 .../css/print/paper.css | 0 .../reveal.js => reveal.js}/css/print/pdf.css | 0 .../reveal.js => reveal.js}/css/reveal.css | 0 .../reveal.js => reveal.js}/css/reveal.scss | 0 .../css/theme/README.md | 0 .../css/theme/beige.css | 0 .../css/theme/black.css | 0 .../css/theme/blood.css | 0 .../css/theme/league.css | 0 .../css/theme/moon.css | 0 .../css/theme/night.css | 0 .../css/theme/serif.css | 0 .../css/theme/simple.css | 0 .../reveal.js => reveal.js}/css/theme/sky.css | 0 .../css/theme/solarized.css | 0 .../css/theme/source/beige.scss | 0 .../css/theme/source/black.scss | 0 .../css/theme/source/blood.scss | 0 .../css/theme/source/league.scss | 0 .../css/theme/source/moon.scss | 0 .../css/theme/source/night.scss | 0 .../css/theme/source/serif.scss | 0 .../css/theme/source/simple.scss | 0 .../css/theme/source/sky.scss | 0 .../css/theme/source/solarized.scss | 0 .../css/theme/source/white.scss | 0 .../css/theme/template/mixins.scss | 0 .../css/theme/template/settings.scss | 0 .../css/theme/template/theme.scss | 0 .../css/theme/white.css | 0 {assets/reveal.js => reveal.js}/demo.html | 0 {assets/reveal.js => reveal.js}/index.html | 0 {assets/reveal.js => reveal.js}/js/reveal.js | 0 .../lib/css/zenburn.css | 0 .../lib/font/league-gothic/LICENSE | 0 .../lib/font/league-gothic/league-gothic.css | 0 .../lib/font/league-gothic/league-gothic.eot | Bin .../lib/font/league-gothic/league-gothic.ttf | Bin .../lib/font/league-gothic/league-gothic.woff | Bin .../lib/font/source-sans-pro/LICENSE | 0 .../source-sans-pro-italic.eot | Bin .../source-sans-pro-italic.ttf | Bin .../source-sans-pro-italic.woff | Bin .../source-sans-pro-regular.eot | Bin .../source-sans-pro-regular.ttf | Bin .../source-sans-pro-regular.woff | Bin .../source-sans-pro-semibold.eot | Bin .../source-sans-pro-semibold.ttf | Bin .../source-sans-pro-semibold.woff | Bin .../source-sans-pro-semibolditalic.eot | Bin .../source-sans-pro-semibolditalic.ttf | Bin .../source-sans-pro-semibolditalic.woff | Bin .../font/source-sans-pro/source-sans-pro.css | 0 .../lib/js/classList.js | 0 .../lib/js/head.min.js | 0 .../lib/js/html5shiv.js | 0 {assets/reveal.js => reveal.js}/package.json | 0 .../plugin/highlight/highlight.js | 0 .../plugin/markdown/example.html | 0 .../plugin/markdown/example.md | 0 .../plugin/markdown/markdown.js | 0 .../plugin/markdown/marked.js | 0 .../plugin/math/math.js | 0 .../plugin/multiplex/client.js | 0 .../plugin/multiplex/index.js | 0 .../plugin/multiplex/master.js | 0 .../plugin/multiplex/package.json | 0 .../plugin/notes-server/client.js | 0 .../plugin/notes-server/index.js | 0 .../plugin/notes-server/notes.html | 0 .../plugin/notes/notes.html | 0 .../plugin/notes/notes.js | 0 .../plugin/print-pdf/print-pdf.js | 0 .../plugin/search/search.js | 0 .../plugin/zoom-js/zoom.js | 0 .../test/examples/assets/image1.png | Bin .../test/examples/assets/image2.png | Bin .../test/examples/barebones.html | 0 .../test/examples/embedded-media.html | 0 .../test/examples/math.html | 0 .../test/examples/slide-backgrounds.html | 0 .../test/examples/slide-transitions.html | 0 .../test/qunit-1.12.0.css | 0 .../test/qunit-1.12.0.js | 0 .../test-markdown-element-attributes.html | 0 .../test/test-markdown-element-attributes.js | 0 .../test/test-markdown-slide-attributes.html | 0 .../test/test-markdown-slide-attributes.js | 0 .../test/test-markdown.html | 0 .../test/test-markdown.js | 0 .../test/test-pdf.html | 0 .../reveal.js => reveal.js}/test/test-pdf.js | 0 .../reveal.js => reveal.js}/test/test.html | 0 {assets/reveal.js => reveal.js}/test/test.js | 0 tools-p.html | 40 + assets/index-top.html => tools.html | 11 +- tools/build.sh | 97 -- {courses/tools => tools}/media/AUEB_logo.jpg | Bin {courses/tools => tools}/media/BA_Lab.png | Bin .../tools => tools}/media/getting_started.png | Bin {courses/tools => tools}/media/git_branch.svg | 0 .../tools => tools}/media/git_branches.png | Bin .../tools => tools}/media/its_compilcated.png | Bin .../tools => tools}/media/travis_ci_logo.png | Bin tools/travis-deploy.sh | 81 -- tools/travis_ci-p.html | 158 +++ tools/travis_ci.html | 103 ++ tutorials-p.html | 80 ++ tutorials.html | 80 ++ .../media/AUEB_logo.jpg | Bin .../media/Add_Commit_Push.png | Bin .../tutorials => tutorials}/media/BA_Lab.png | Bin .../media/BetterCodeHub_1.png | Bin .../media/BetterCodeHub_2.png | Bin .../media/BetterCodeHub_3.png | Bin .../media/BetterCodeHub_4.png | Bin .../media/BetterCode_Hub_4_resize.png | Bin .../media/Clone_Bash.png | Bin .../media/Clone_Repo.png | Bin .../media/Collaboration.png | Bin .../Concurrency_Bank_Accounts_Example.png | Bin .../media/Correct_Sumbission.png | Bin .../media/Correctly_Submitted_Exercises.jpg | Bin .../media/Correctly_Submitted_Exercises.png | Bin .../media/Create_New_Repo.png | Bin .../media/Create_Private_Repo.png | Bin .../media/Debugging_5.png | Bin .../media/Exercises.png | Bin .../media/Exercises_2.png | Bin .../media/Exercises_Elapse_Time.png | Bin .../media/Exercises_Grades.png | Bin .../media/Exercises_Location.png | Bin .../tutorials => tutorials}/media/GitHub.jpg | Bin .../media/GitHubDesktopCloneRepo.png | Bin .../media/Git_Workflow.png | Bin .../tutorials => tutorials}/media/IDE.png | Bin .../media/JAVA_API.png | Bin .../media/Jarpeb_Exercises.jpg | Bin .../media/Jarpeb_Exercises.png | Bin .../media/Jarpeb_GUI.png | Bin .../media/Linkedlist.png | Bin .../media/Main_Page.png | Bin .../media/Participation.png | Bin .../media/Processes_SnapShot.png | Bin .../media/Programming_II_Grading_System.png | Bin .../media/Push_Changes.png | Bin .../media/Repo_view.png | Bin .../tutorials => tutorials}/media/Stack.svg | 0 .../media/Threads_Snapshot.png | Bin .../media/checkStyleIcon.png | Bin .../media/collections.png | Bin .../media/collectionsTable.jpeg | Bin .../media/collectionsTable.png | Bin .../media/compileAndRun.png | Bin .../media/createNewClass.png | Bin .../media/createNewClass.xcf | Bin .../media/createNewProject.png | Bin .../media/createNewProject.xcf | Bin .../media/debugging_1.png | Bin .../media/debugging_2.png | Bin .../media/debugging_3.png | Bin .../media/debugging_4.png | Bin .../media/debugging_5.png | Bin .../media/eclipseIcon.png | Bin .../media/exampleCheckStyle-min.png | Bin .../media/exampleCheckStyle.png | Bin .../media/exampleCheckStyle_resize.png | Bin .../media/exceptions.png | Bin .../tutorials => tutorials}/media/files_1.png | Bin .../tutorials => tutorials}/media/files_2.png | Bin .../tutorials => tutorials}/media/files_3.png | Bin .../media/findBugsIcon.png | Bin .../media/installCheckStyles.png | Bin .../media/installFindBugs.png | Bin .../media/javaCollectionFramework.svg | 0 .../tutorials => tutorials}/media/junit1.png | Bin .../tutorials => tutorials}/media/junit2.png | Bin .../tutorials => tutorials}/media/junit3.png | Bin .../media/nameNewProject.png | Bin .../media/resultsOfCheckStyle.png | Bin .../media/runButton.png | Bin .../media/selectWorkstation.png | Bin .../tutorials => tutorials}/media/sg30.sdv | Bin .../tutorials => tutorials}/media/sg30.thm | Bin .../media/widening-type-conversion.jpg | Bin .../tutorial_1_A-p.html | 72 ++ tutorials/tutorial_1_A.html | 128 ++ .../tutorial_1_B-p.html | 72 ++ tutorials/tutorial_1_B.html | 329 +++++ tutorials/tutorial_2_A-p.html | 169 +++ tutorials/tutorial_2_A.html | 109 ++ .../tutorial_2_B-p.html | 72 ++ tutorials/tutorial_2_B.html | 353 ++++++ .../tutorial_3_A-p.html | 72 ++ tutorials/tutorial_3_A.html | 372 ++++++ .../tutorial_3_B-p.html | 72 ++ tutorials/tutorial_3_B.html | 166 +++ .../tutorial_4_A-p.html | 72 ++ tutorials/tutorial_4_A.html | 243 ++++ .../tutorial_4_B-p.html | 72 ++ tutorials/tutorial_4_B.html | 265 ++++ .../tutorial_5_A-p.html | 72 ++ tutorials/tutorial_5_A.html | 168 +++ .../tutorial_5_B-p.html | 72 ++ tutorials/tutorial_5_B.html | 252 ++++ tutorials/tutorial_6_A-p.html | 141 +++ tutorials/tutorial_6_A.html | 76 ++ .../tutorial_7_A-p.html | 72 ++ tutorials/tutorial_7_A.html | 105 ++ .../tutorial_8_A-p.html | 72 ++ tutorials/tutorial_8_A.html | 254 ++++ .../tutorial_8_B-p.html | 72 ++ tutorials/tutorial_8_B.html | 277 +++++ .../tutorial_9_A-p.html | 72 ++ tutorials/tutorial_9_A.html | 114 ++ .../tutorial_9_B-p.html | 72 ++ tutorials/tutorial_9_B.html | 328 +++++ 289 files changed, 6058 insertions(+), 4181 deletions(-) create mode 100644 admin-p.html create mode 100644 admin.html rename courses/admin/authoring.md => admin/authoring-p.html (59%) create mode 100644 admin/authoring.html create mode 100644 admin/customization-p.html create mode 100644 admin/customization.html rename assets/presentation-bottom.html => admin/materials-p.html (52%) create mode 100644 admin/materials.html rename {courses/admin => admin}/media/README.md (100%) delete mode 100644 assets/index-bottom.html delete mode 100644 assets/presentation-top.html rename {courses/common => common}/media/AgileVSWaterfall1.jpg (100%) rename {courses/common => common}/media/AgileVSWaterfall2.png (100%) rename {courses/common => common}/media/AgileVSWaterfall3.png (100%) rename {courses/common => common}/media/BurndownChart.jpg (100%) rename {courses/common => common}/media/CostOfErrors.png (100%) rename {courses/common => common}/media/EarlyDecisionsHurt.png (100%) rename {courses/common => common}/media/Fixed-3.jpg (100%) rename {courses/common => common}/media/IncrementalDevelopment.jpg (100%) rename {courses/common => common}/media/KanbanBoard.png (100%) rename {courses/common => common}/media/MoreDetailedPB.png (100%) rename {courses/common => common}/media/Nexus.png (100%) rename {courses/common => common}/media/ProjectComplexity.jpeg (100%) rename {courses/common => common}/media/README.md (100%) rename {courses/common => common}/media/ReleaseBurndown.png (100%) rename {courses/common => common}/media/SamplePB.png (100%) rename {courses/common => common}/media/ScrumFramework1.png (100%) rename {courses/common => common}/media/ScrumFrameworkAll.png (100%) rename {courses/common => common}/media/ScrumOfScrums.png (100%) rename {courses/common => common}/media/SprintBoard.png (100%) rename {courses/common => common}/media/StateOfAgile.png (100%) rename {courses/common => common}/media/WhyAgile.png (100%) rename {courses/common => common}/media/cias_countermeasures_all.png (100%) rename {courses/common => common}/media/cs-testing.PNG (100%) rename {courses/common => common}/media/dom-based_xss.png (100%) rename {courses/common => common}/media/junit.gif (100%) rename {courses/common => common}/media/perlbcov.png (100%) rename {courses/common => common}/media/perlcov.png (100%) rename {courses/common => common}/media/reflected_xss.png (100%) rename {courses/common => common}/media/stored_xss.png (100%) rename {courses/common => common}/media/testPlan.png (100%) rename {courses/common => common}/media/testSuite.png (100%) rename {courses/common => common}/media/tree-uml-1.png (100%) delete mode 100644 courses/admin.md delete mode 100644 courses/admin/README.md delete mode 100644 courses/admin/customization.md delete mode 100644 courses/admin/materials.md delete mode 100644 courses/common/README.md delete mode 100644 courses/common/agile.md delete mode 100644 courses/common/designPatterns.md delete mode 100644 courses/common/hello.md delete mode 100644 courses/common/lazy.md delete mode 100644 courses/common/sec.md delete mode 100644 courses/common/test-practices.md delete mode 100644 courses/common/test-theory.md delete mode 100644 courses/common/unit-testing.md delete mode 100644 courses/common/writingMaintainableCode.md delete mode 100644 courses/tools.md delete mode 100644 courses/tools/travis_ci.md delete mode 100644 courses/tutorials.md delete mode 100644 courses/tutorials/tutorial_2_A.md delete mode 100644 courses/tutorials/tutorial_6_A.md delete mode 100644 courses/tutorials/tutorial_7_B.md rename {assets/css => css}/pandoc-syntax.css (100%) create mode 100644 index.html rename {assets/reveal.js => reveal.js}/.gitignore (100%) rename {assets/reveal.js => reveal.js}/.travis.yml (100%) rename {assets/reveal.js => reveal.js}/CONTRIBUTING.md (100%) rename {assets/reveal.js => reveal.js}/Gruntfile.js (100%) rename {assets/reveal.js => reveal.js}/LICENSE (100%) rename {assets/reveal.js => reveal.js}/README.md (100%) rename {assets/reveal.js => reveal.js}/bower.json (100%) rename {assets/reveal.js => reveal.js}/css/print/paper.css (100%) rename {assets/reveal.js => reveal.js}/css/print/pdf.css (100%) rename {assets/reveal.js => reveal.js}/css/reveal.css (100%) rename {assets/reveal.js => reveal.js}/css/reveal.scss (100%) rename {assets/reveal.js => reveal.js}/css/theme/README.md (100%) rename {assets/reveal.js => reveal.js}/css/theme/beige.css (100%) rename {assets/reveal.js => reveal.js}/css/theme/black.css (100%) rename {assets/reveal.js => reveal.js}/css/theme/blood.css (100%) rename {assets/reveal.js => reveal.js}/css/theme/league.css (100%) rename {assets/reveal.js => reveal.js}/css/theme/moon.css (100%) rename {assets/reveal.js => reveal.js}/css/theme/night.css (100%) rename {assets/reveal.js => reveal.js}/css/theme/serif.css (100%) rename {assets/reveal.js => reveal.js}/css/theme/simple.css (100%) rename {assets/reveal.js => reveal.js}/css/theme/sky.css (100%) rename {assets/reveal.js => reveal.js}/css/theme/solarized.css (100%) rename {assets/reveal.js => reveal.js}/css/theme/source/beige.scss (100%) rename {assets/reveal.js => reveal.js}/css/theme/source/black.scss (100%) rename {assets/reveal.js => reveal.js}/css/theme/source/blood.scss (100%) rename {assets/reveal.js => reveal.js}/css/theme/source/league.scss (100%) rename {assets/reveal.js => reveal.js}/css/theme/source/moon.scss (100%) rename {assets/reveal.js => reveal.js}/css/theme/source/night.scss (100%) rename {assets/reveal.js => reveal.js}/css/theme/source/serif.scss (100%) rename {assets/reveal.js => reveal.js}/css/theme/source/simple.scss (100%) rename {assets/reveal.js => reveal.js}/css/theme/source/sky.scss (100%) rename {assets/reveal.js => reveal.js}/css/theme/source/solarized.scss (100%) rename {assets/reveal.js => reveal.js}/css/theme/source/white.scss (100%) rename {assets/reveal.js => reveal.js}/css/theme/template/mixins.scss (100%) rename {assets/reveal.js => reveal.js}/css/theme/template/settings.scss (100%) rename {assets/reveal.js => reveal.js}/css/theme/template/theme.scss (100%) rename {assets/reveal.js => reveal.js}/css/theme/white.css (100%) rename {assets/reveal.js => reveal.js}/demo.html (100%) rename {assets/reveal.js => reveal.js}/index.html (100%) rename {assets/reveal.js => reveal.js}/js/reveal.js (100%) rename {assets/reveal.js => reveal.js}/lib/css/zenburn.css (100%) rename {assets/reveal.js => reveal.js}/lib/font/league-gothic/LICENSE (100%) rename {assets/reveal.js => reveal.js}/lib/font/league-gothic/league-gothic.css (100%) rename {assets/reveal.js => reveal.js}/lib/font/league-gothic/league-gothic.eot (100%) rename {assets/reveal.js => reveal.js}/lib/font/league-gothic/league-gothic.ttf (100%) rename {assets/reveal.js => reveal.js}/lib/font/league-gothic/league-gothic.woff (100%) rename {assets/reveal.js => reveal.js}/lib/font/source-sans-pro/LICENSE (100%) rename {assets/reveal.js => reveal.js}/lib/font/source-sans-pro/source-sans-pro-italic.eot (100%) rename {assets/reveal.js => reveal.js}/lib/font/source-sans-pro/source-sans-pro-italic.ttf (100%) rename {assets/reveal.js => reveal.js}/lib/font/source-sans-pro/source-sans-pro-italic.woff (100%) rename {assets/reveal.js => reveal.js}/lib/font/source-sans-pro/source-sans-pro-regular.eot (100%) rename {assets/reveal.js => reveal.js}/lib/font/source-sans-pro/source-sans-pro-regular.ttf (100%) rename {assets/reveal.js => reveal.js}/lib/font/source-sans-pro/source-sans-pro-regular.woff (100%) rename {assets/reveal.js => reveal.js}/lib/font/source-sans-pro/source-sans-pro-semibold.eot (100%) rename {assets/reveal.js => reveal.js}/lib/font/source-sans-pro/source-sans-pro-semibold.ttf (100%) rename {assets/reveal.js => reveal.js}/lib/font/source-sans-pro/source-sans-pro-semibold.woff (100%) rename {assets/reveal.js => reveal.js}/lib/font/source-sans-pro/source-sans-pro-semibolditalic.eot (100%) rename {assets/reveal.js => reveal.js}/lib/font/source-sans-pro/source-sans-pro-semibolditalic.ttf (100%) rename {assets/reveal.js => reveal.js}/lib/font/source-sans-pro/source-sans-pro-semibolditalic.woff (100%) rename {assets/reveal.js => reveal.js}/lib/font/source-sans-pro/source-sans-pro.css (100%) rename {assets/reveal.js => reveal.js}/lib/js/classList.js (100%) rename {assets/reveal.js => reveal.js}/lib/js/head.min.js (100%) rename {assets/reveal.js => reveal.js}/lib/js/html5shiv.js (100%) rename {assets/reveal.js => reveal.js}/package.json (100%) rename {assets/reveal.js => reveal.js}/plugin/highlight/highlight.js (100%) rename {assets/reveal.js => reveal.js}/plugin/markdown/example.html (100%) rename {assets/reveal.js => reveal.js}/plugin/markdown/example.md (100%) rename {assets/reveal.js => reveal.js}/plugin/markdown/markdown.js (100%) rename {assets/reveal.js => reveal.js}/plugin/markdown/marked.js (100%) rename {assets/reveal.js => reveal.js}/plugin/math/math.js (100%) rename {assets/reveal.js => reveal.js}/plugin/multiplex/client.js (100%) rename {assets/reveal.js => reveal.js}/plugin/multiplex/index.js (100%) rename {assets/reveal.js => reveal.js}/plugin/multiplex/master.js (100%) rename {assets/reveal.js => reveal.js}/plugin/multiplex/package.json (100%) rename {assets/reveal.js => reveal.js}/plugin/notes-server/client.js (100%) rename {assets/reveal.js => reveal.js}/plugin/notes-server/index.js (100%) rename {assets/reveal.js => reveal.js}/plugin/notes-server/notes.html (100%) rename {assets/reveal.js => reveal.js}/plugin/notes/notes.html (100%) rename {assets/reveal.js => reveal.js}/plugin/notes/notes.js (100%) rename {assets/reveal.js => reveal.js}/plugin/print-pdf/print-pdf.js (100%) rename {assets/reveal.js => reveal.js}/plugin/search/search.js (100%) rename {assets/reveal.js => reveal.js}/plugin/zoom-js/zoom.js (100%) rename {assets/reveal.js => reveal.js}/test/examples/assets/image1.png (100%) rename {assets/reveal.js => reveal.js}/test/examples/assets/image2.png (100%) rename {assets/reveal.js => reveal.js}/test/examples/barebones.html (100%) rename {assets/reveal.js => reveal.js}/test/examples/embedded-media.html (100%) rename {assets/reveal.js => reveal.js}/test/examples/math.html (100%) rename {assets/reveal.js => reveal.js}/test/examples/slide-backgrounds.html (100%) rename {assets/reveal.js => reveal.js}/test/examples/slide-transitions.html (100%) rename {assets/reveal.js => reveal.js}/test/qunit-1.12.0.css (100%) rename {assets/reveal.js => reveal.js}/test/qunit-1.12.0.js (100%) rename {assets/reveal.js => reveal.js}/test/test-markdown-element-attributes.html (100%) rename {assets/reveal.js => reveal.js}/test/test-markdown-element-attributes.js (100%) rename {assets/reveal.js => reveal.js}/test/test-markdown-slide-attributes.html (100%) rename {assets/reveal.js => reveal.js}/test/test-markdown-slide-attributes.js (100%) rename {assets/reveal.js => reveal.js}/test/test-markdown.html (100%) rename {assets/reveal.js => reveal.js}/test/test-markdown.js (100%) rename {assets/reveal.js => reveal.js}/test/test-pdf.html (100%) rename {assets/reveal.js => reveal.js}/test/test-pdf.js (100%) rename {assets/reveal.js => reveal.js}/test/test.html (100%) rename {assets/reveal.js => reveal.js}/test/test.js (100%) create mode 100644 tools-p.html rename assets/index-top.html => tools.html (72%) delete mode 100755 tools/build.sh rename {courses/tools => tools}/media/AUEB_logo.jpg (100%) rename {courses/tools => tools}/media/BA_Lab.png (100%) rename {courses/tools => tools}/media/getting_started.png (100%) rename {courses/tools => tools}/media/git_branch.svg (100%) rename {courses/tools => tools}/media/git_branches.png (100%) rename {courses/tools => tools}/media/its_compilcated.png (100%) rename {courses/tools => tools}/media/travis_ci_logo.png (100%) delete mode 100755 tools/travis-deploy.sh create mode 100644 tools/travis_ci-p.html create mode 100644 tools/travis_ci.html create mode 100644 tutorials-p.html create mode 100644 tutorials.html rename {courses/tutorials => tutorials}/media/AUEB_logo.jpg (100%) rename {courses/tutorials => tutorials}/media/Add_Commit_Push.png (100%) rename {courses/tutorials => tutorials}/media/BA_Lab.png (100%) rename {courses/tutorials => tutorials}/media/BetterCodeHub_1.png (100%) rename {courses/tutorials => tutorials}/media/BetterCodeHub_2.png (100%) rename {courses/tutorials => tutorials}/media/BetterCodeHub_3.png (100%) rename {courses/tutorials => tutorials}/media/BetterCodeHub_4.png (100%) rename {courses/tutorials => tutorials}/media/BetterCode_Hub_4_resize.png (100%) rename {courses/tutorials => tutorials}/media/Clone_Bash.png (100%) rename {courses/tutorials => tutorials}/media/Clone_Repo.png (100%) rename {courses/tutorials => tutorials}/media/Collaboration.png (100%) rename {courses/tutorials => tutorials}/media/Concurrency_Bank_Accounts_Example.png (100%) rename {courses/tutorials => tutorials}/media/Correct_Sumbission.png (100%) rename {courses/tutorials => tutorials}/media/Correctly_Submitted_Exercises.jpg (100%) rename {courses/tutorials => tutorials}/media/Correctly_Submitted_Exercises.png (100%) rename {courses/tutorials => tutorials}/media/Create_New_Repo.png (100%) rename {courses/tutorials => tutorials}/media/Create_Private_Repo.png (100%) rename {courses/tutorials => tutorials}/media/Debugging_5.png (100%) rename {courses/tutorials => tutorials}/media/Exercises.png (100%) rename {courses/tutorials => tutorials}/media/Exercises_2.png (100%) rename {courses/tutorials => tutorials}/media/Exercises_Elapse_Time.png (100%) rename {courses/tutorials => tutorials}/media/Exercises_Grades.png (100%) rename {courses/tutorials => tutorials}/media/Exercises_Location.png (100%) rename {courses/tutorials => tutorials}/media/GitHub.jpg (100%) rename {courses/tutorials => tutorials}/media/GitHubDesktopCloneRepo.png (100%) rename {courses/tutorials => tutorials}/media/Git_Workflow.png (100%) rename {courses/tutorials => tutorials}/media/IDE.png (100%) rename {courses/tutorials => tutorials}/media/JAVA_API.png (100%) rename {courses/tutorials => tutorials}/media/Jarpeb_Exercises.jpg (100%) rename {courses/tutorials => tutorials}/media/Jarpeb_Exercises.png (100%) rename {courses/tutorials => tutorials}/media/Jarpeb_GUI.png (100%) rename {courses/tutorials => tutorials}/media/Linkedlist.png (100%) rename {courses/tutorials => tutorials}/media/Main_Page.png (100%) rename {courses/tutorials => tutorials}/media/Participation.png (100%) rename {courses/tutorials => tutorials}/media/Processes_SnapShot.png (100%) rename {courses/tutorials => tutorials}/media/Programming_II_Grading_System.png (100%) rename {courses/tutorials => tutorials}/media/Push_Changes.png (100%) rename {courses/tutorials => tutorials}/media/Repo_view.png (100%) rename {courses/tutorials => tutorials}/media/Stack.svg (100%) rename {courses/tutorials => tutorials}/media/Threads_Snapshot.png (100%) rename {courses/tutorials => tutorials}/media/checkStyleIcon.png (100%) rename {courses/tutorials => tutorials}/media/collections.png (100%) rename {courses/tutorials => tutorials}/media/collectionsTable.jpeg (100%) rename {courses/tutorials => tutorials}/media/collectionsTable.png (100%) rename {courses/tutorials => tutorials}/media/compileAndRun.png (100%) rename {courses/tutorials => tutorials}/media/createNewClass.png (100%) rename {courses/tutorials => tutorials}/media/createNewClass.xcf (100%) rename {courses/tutorials => tutorials}/media/createNewProject.png (100%) rename {courses/tutorials => tutorials}/media/createNewProject.xcf (100%) rename {courses/tutorials => tutorials}/media/debugging_1.png (100%) rename {courses/tutorials => tutorials}/media/debugging_2.png (100%) rename {courses/tutorials => tutorials}/media/debugging_3.png (100%) rename {courses/tutorials => tutorials}/media/debugging_4.png (100%) rename {courses/tutorials => tutorials}/media/debugging_5.png (100%) rename {courses/tutorials => tutorials}/media/eclipseIcon.png (100%) rename {courses/tutorials => tutorials}/media/exampleCheckStyle-min.png (100%) rename {courses/tutorials => tutorials}/media/exampleCheckStyle.png (100%) rename {courses/tutorials => tutorials}/media/exampleCheckStyle_resize.png (100%) rename {courses/tutorials => tutorials}/media/exceptions.png (100%) rename {courses/tutorials => tutorials}/media/files_1.png (100%) rename {courses/tutorials => tutorials}/media/files_2.png (100%) rename {courses/tutorials => tutorials}/media/files_3.png (100%) rename {courses/tutorials => tutorials}/media/findBugsIcon.png (100%) rename {courses/tutorials => tutorials}/media/installCheckStyles.png (100%) rename {courses/tutorials => tutorials}/media/installFindBugs.png (100%) rename {courses/tutorials => tutorials}/media/javaCollectionFramework.svg (100%) rename {courses/tutorials => tutorials}/media/junit1.png (100%) rename {courses/tutorials => tutorials}/media/junit2.png (100%) rename {courses/tutorials => tutorials}/media/junit3.png (100%) rename {courses/tutorials => tutorials}/media/nameNewProject.png (100%) rename {courses/tutorials => tutorials}/media/resultsOfCheckStyle.png (100%) rename {courses/tutorials => tutorials}/media/runButton.png (100%) rename {courses/tutorials => tutorials}/media/selectWorkstation.png (100%) rename {courses/tutorials => tutorials}/media/sg30.sdv (100%) rename {courses/tutorials => tutorials}/media/sg30.thm (100%) rename {courses/tutorials => tutorials}/media/widening-type-conversion.jpg (100%) rename courses/tutorials/tutorial_1_A.md => tutorials/tutorial_1_A-p.html (62%) create mode 100644 tutorials/tutorial_1_A.html rename courses/tutorials/tutorial_1_B.md => tutorials/tutorial_1_B-p.html (67%) create mode 100644 tutorials/tutorial_1_B.html create mode 100644 tutorials/tutorial_2_A-p.html create mode 100644 tutorials/tutorial_2_A.html rename courses/tutorials/tutorial_2_B.md => tutorials/tutorial_2_B-p.html (84%) create mode 100644 tutorials/tutorial_2_B.html rename courses/tutorials/tutorial_3_A.md => tutorials/tutorial_3_A-p.html (87%) create mode 100644 tutorials/tutorial_3_A.html rename courses/tutorials/tutorial_3_B.md => tutorials/tutorial_3_B-p.html (78%) create mode 100644 tutorials/tutorial_3_B.html rename courses/tutorials/tutorial_4_A.md => tutorials/tutorial_4_A-p.html (74%) create mode 100644 tutorials/tutorial_4_A.html rename courses/tutorials/tutorial_4_B.md => tutorials/tutorial_4_B-p.html (79%) create mode 100644 tutorials/tutorial_4_B.html rename courses/tutorials/tutorial_5_A.md => tutorials/tutorial_5_A-p.html (69%) create mode 100644 tutorials/tutorial_5_A.html rename courses/tutorials/tutorial_5_B.md => tutorials/tutorial_5_B-p.html (76%) create mode 100644 tutorials/tutorial_5_B.html create mode 100644 tutorials/tutorial_6_A-p.html create mode 100644 tutorials/tutorial_6_A.html rename courses/tutorials/tutorial_7_A.md => tutorials/tutorial_7_A-p.html (62%) create mode 100644 tutorials/tutorial_7_A.html rename courses/tutorials/tutorial_8_A.md => tutorials/tutorial_8_A-p.html (75%) create mode 100644 tutorials/tutorial_8_A.html rename courses/tutorials/tutorial_8_B.md => tutorials/tutorial_8_B-p.html (79%) create mode 100644 tutorials/tutorial_8_B.html rename courses/tutorials/tutorial_9_A.md => tutorials/tutorial_9_A-p.html (65%) create mode 100644 tutorials/tutorial_9_A.html rename courses/tutorials/tutorial_9_B.md => tutorials/tutorial_9_B-p.html (76%) create mode 100644 tutorials/tutorial_9_B.html diff --git a/admin-p.html b/admin-p.html new file mode 100644 index 0000000..713501e --- /dev/null +++ b/admin-p.html @@ -0,0 +1,42 @@ + + + + + + + + Programming II: Table of contents + + + + + + + + + + + + + + + + + + + + +

Coding Bootcamp: Trainer and administrator resources

+ + +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/admin.html b/admin.html new file mode 100644 index 0000000..a11aa40 --- /dev/null +++ b/admin.html @@ -0,0 +1,42 @@ + + + + + + + + Programming II: Table of contents + + + + + + + + + + + + + + + + + + + + +

Coding Bootcamp: Trainer and administrator resources

+ + +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/courses/admin/authoring.md b/admin/authoring-p.html similarity index 59% rename from courses/admin/authoring.md rename to admin/authoring-p.html index 6c3ad12..b252055 100644 --- a/courses/admin/authoring.md +++ b/admin/authoring-p.html @@ -1,125 +1,197 @@ -## Basics -* We use [reveal.js](http://lab.hakim.se/reveal-js/) for our slides, - but this should be transparent to you -* We write slides either in Markdown or as a Jupyter Notebook -* More details follow - - -## Markdown slides -* Write slides in [GitHub flavoured Markdown](https://help.github.com/categories/writing-on-github/) -* Start title text with `##` followed by a space -* Start bullet items with `*` followed by a space -* Separate each slide from the next with two empty lines -* Add hyperlinks using the `[`_text_`](`_URL_`)` syntax - - -## Example -```md -## First slide title -* Bullet item 1 -* Bullet item 2 - - -## Second slide title -``` - - -## Code listings -* Code listings are automatically highlighted -* Start a code listing with three backticks followed by the language's suffix - on a single line -* Example: -```md - ```java - ```cs - ```sql - ```js - ```HTML -``` -* End code listings with three backticks on a single line -* Indent Markdown code with a space to avoid it being interpreted by _reveal.js_ -* Prepend a space when closing a script tag in HTML listings (``) -* Avoid two blank lines in the code; they confuse *reveal.js*. - - -## Images and other media -* Place images in the `media` directory under the corresponding course - directory -* Insert media on a slide with the syntax `![](media/`_filename_`)` -* Example: -```md -![](media/hello.png) -``` -* Use the PNG format for clipart and JPEG for photographs - - -## File organization -* Each lecture is written as a single Markdown or as a Jupyter Notebook file -* Name the file using Java variable identifier rules -* Suffix the Markdown file name with `.md` -* Example: `unitTests.md` -* Suffix the Jupyter file name with `.ipynb` - - -## Folder organization -* Place the file in one of the following folders - * `java`: Java material - * `cs`: C# material - * `common`: Material common to both courses - * `admin`: Course instructor and administrator material - - -## Linking lectures into a course -* Within the `courses` directory create or edit a Markdown file named after - the course - * Use a level-1 title for the course - * Use a level-2 title for units - * Enter each lecture as a separate bullet -* Example - -```md -# Coding bootcamp: Java specialization -## Test driven development and object-oriented programming -* [Hello world!](java/hello.md) -* [Constructing and using objects](java/objects.md) -* [Python classes](common/pythonClasses.ipynb) -``` - - -## Contributions -* You can perform small changes directly on the [GitHub repository](https://github.com/codeandwork/courses) -* For substantial work it is recommended that you work on a local repository -* Commit your changes with [proper commit messages](http://chris.beams.io/posts/git-commit/) -* Do not forget to push after committing - - -## Editing and build tools -* You will need to have the following tools installed - * A Unix shell - * Git - * [Pandoc](http://pandoc.org/) - * [rsync](https://rsync.samba.org/) - * [Jupyter Notebook](http://jupyter.org/) -* This setup is trivial on Mac and Linux systems -* On Windows systems we recommend the installation of [Cygwin](https://www.cygwin.com/) -* [Anaconda](https://www.continuum.io/downloads) simplifies the Jupyter Notebook installation - - -## Building and deploying -* First clone the [GitHub repository](https://github.com/codeandwork/courses) -* Run `make` to build the presentation and note handouts -* This generates the material in the `web` directory -* View the presentations and handouts through [this link](../index.html) -* Pushing your changes will result in an automatic update of the [web site](https://codeandwork.github.io/courses/) - - -## Style -* Use lower case in titles, Not Title Case -* Start each bullet item with a capital -* Don't punctuate at the end of bullet items -* Spell-check what you write -* Use British spelling -* Don't pack your slides with text -* Take care of capitalization: JavaScript, SQL, Java, C#, Git, GitHub -* Put names of code and commands in backticks, e.g. \`main\` or \`git\` -* Avoid lines longer than 67 characters + + + + + + + Course authoring + + + + + + + + + + + +
+
+
+ +
+
+

License

+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
+
+
+ + + + + + + diff --git a/admin/authoring.html b/admin/authoring.html new file mode 100644 index 0000000..24bd48a --- /dev/null +++ b/admin/authoring.html @@ -0,0 +1,149 @@ + + + + + + + + Course authoring + + + + + + + + + + + + + + + + + + + + +

Programming II: Course authoring

+

Basics

+ +

Markdown slides

+ +

Example

+
## First slide title
+* Bullet item 1
+* Bullet item 2
+ 
+ 
+## Second slide title
+

Code listings

+ +

Images and other media

+ +

File organization

+ +

Folder organization

+ +

Linking lectures into a course

+ +
# Coding bootcamp: Java specialization
+## Test driven development and object-oriented programming
+* [Hello world!](java/hello.md)
+* [Constructing and using objects](java/objects.md)
+* [Python classes](common/pythonClasses.ipynb)
+

Contributions

+ +

Editing and build tools

+ +

Building and deploying

+ +

Style

+ + +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/admin/customization-p.html b/admin/customization-p.html new file mode 100644 index 0000000..e9498a7 --- /dev/null +++ b/admin/customization-p.html @@ -0,0 +1,84 @@ + + + + + + + Customization + + + + + + + + + + + +
+
+
+ +
+
+

License

+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
+
+
+ + + + + + + diff --git a/admin/customization.html b/admin/customization.html new file mode 100644 index 0000000..523e086 --- /dev/null +++ b/admin/customization.html @@ -0,0 +1,51 @@ + + + + + + + + Customization + + + + + + + + + + + + + + + + + + + + +

Programming II: Customization

+

Customizing presentations

+ +

Customizing regular web pages

+

Web pages (tables of contents and handouts) are customized as follows.

+ + +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/assets/presentation-bottom.html b/admin/materials-p.html similarity index 52% rename from assets/presentation-bottom.html rename to admin/materials-p.html index b8e291d..02318cb 100644 --- a/assets/presentation-bottom.html +++ b/admin/materials-p.html @@ -1,3 +1,54 @@ + + + + + + + Course materials + + + + + + + + + + + +
+
+
+
diff --git a/admin/materials.html b/admin/materials.html new file mode 100644 index 0000000..6cc379a --- /dev/null +++ b/admin/materials.html @@ -0,0 +1,57 @@ + + + + + + + + Course materials + + + + + + + + + + + + + + + + + + + + +

Programming II: Course materials

+

Preparatory course

+ +

Java specialization

+ +

C# specialization

+ +

Trainer and administrator resources

+ + +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/courses/admin/media/README.md b/admin/media/README.md similarity index 100% rename from courses/admin/media/README.md rename to admin/media/README.md diff --git a/assets/index-bottom.html b/assets/index-bottom.html deleted file mode 100644 index ad81903..0000000 --- a/assets/index-bottom.html +++ /dev/null @@ -1,5 +0,0 @@ - -
-Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. - - diff --git a/assets/presentation-top.html b/assets/presentation-top.html deleted file mode 100644 index 9fb3da0..0000000 --- a/assets/presentation-top.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - TITLE_HERE - - - - - - - - - - - -
-
-
- + + + + + + + + + + + + + + + + +

Programming II: Course materials

+

Preparatory course

+ +

Java specialization

+ +

C# specialization

+ +

Trainer and administrator resources

+ + +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/assets/reveal.js/.gitignore b/reveal.js/.gitignore similarity index 100% rename from assets/reveal.js/.gitignore rename to reveal.js/.gitignore diff --git a/assets/reveal.js/.travis.yml b/reveal.js/.travis.yml similarity index 100% rename from assets/reveal.js/.travis.yml rename to reveal.js/.travis.yml diff --git a/assets/reveal.js/CONTRIBUTING.md b/reveal.js/CONTRIBUTING.md similarity index 100% rename from assets/reveal.js/CONTRIBUTING.md rename to reveal.js/CONTRIBUTING.md diff --git a/assets/reveal.js/Gruntfile.js b/reveal.js/Gruntfile.js similarity index 100% rename from assets/reveal.js/Gruntfile.js rename to reveal.js/Gruntfile.js diff --git a/assets/reveal.js/LICENSE b/reveal.js/LICENSE similarity index 100% rename from assets/reveal.js/LICENSE rename to reveal.js/LICENSE diff --git a/assets/reveal.js/README.md b/reveal.js/README.md similarity index 100% rename from assets/reveal.js/README.md rename to reveal.js/README.md diff --git a/assets/reveal.js/bower.json b/reveal.js/bower.json similarity index 100% rename from assets/reveal.js/bower.json rename to reveal.js/bower.json diff --git a/assets/reveal.js/css/print/paper.css b/reveal.js/css/print/paper.css similarity index 100% rename from assets/reveal.js/css/print/paper.css rename to reveal.js/css/print/paper.css diff --git a/assets/reveal.js/css/print/pdf.css b/reveal.js/css/print/pdf.css similarity index 100% rename from assets/reveal.js/css/print/pdf.css rename to reveal.js/css/print/pdf.css diff --git a/assets/reveal.js/css/reveal.css b/reveal.js/css/reveal.css similarity index 100% rename from assets/reveal.js/css/reveal.css rename to reveal.js/css/reveal.css diff --git a/assets/reveal.js/css/reveal.scss b/reveal.js/css/reveal.scss similarity index 100% rename from assets/reveal.js/css/reveal.scss rename to reveal.js/css/reveal.scss diff --git a/assets/reveal.js/css/theme/README.md b/reveal.js/css/theme/README.md similarity index 100% rename from assets/reveal.js/css/theme/README.md rename to reveal.js/css/theme/README.md diff --git a/assets/reveal.js/css/theme/beige.css b/reveal.js/css/theme/beige.css similarity index 100% rename from assets/reveal.js/css/theme/beige.css rename to reveal.js/css/theme/beige.css diff --git a/assets/reveal.js/css/theme/black.css b/reveal.js/css/theme/black.css similarity index 100% rename from assets/reveal.js/css/theme/black.css rename to reveal.js/css/theme/black.css diff --git a/assets/reveal.js/css/theme/blood.css b/reveal.js/css/theme/blood.css similarity index 100% rename from assets/reveal.js/css/theme/blood.css rename to reveal.js/css/theme/blood.css diff --git a/assets/reveal.js/css/theme/league.css b/reveal.js/css/theme/league.css similarity index 100% rename from assets/reveal.js/css/theme/league.css rename to reveal.js/css/theme/league.css diff --git a/assets/reveal.js/css/theme/moon.css b/reveal.js/css/theme/moon.css similarity index 100% rename from assets/reveal.js/css/theme/moon.css rename to reveal.js/css/theme/moon.css diff --git a/assets/reveal.js/css/theme/night.css b/reveal.js/css/theme/night.css similarity index 100% rename from assets/reveal.js/css/theme/night.css rename to reveal.js/css/theme/night.css diff --git a/assets/reveal.js/css/theme/serif.css b/reveal.js/css/theme/serif.css similarity index 100% rename from assets/reveal.js/css/theme/serif.css rename to reveal.js/css/theme/serif.css diff --git a/assets/reveal.js/css/theme/simple.css b/reveal.js/css/theme/simple.css similarity index 100% rename from assets/reveal.js/css/theme/simple.css rename to reveal.js/css/theme/simple.css diff --git a/assets/reveal.js/css/theme/sky.css b/reveal.js/css/theme/sky.css similarity index 100% rename from assets/reveal.js/css/theme/sky.css rename to reveal.js/css/theme/sky.css diff --git a/assets/reveal.js/css/theme/solarized.css b/reveal.js/css/theme/solarized.css similarity index 100% rename from assets/reveal.js/css/theme/solarized.css rename to reveal.js/css/theme/solarized.css diff --git a/assets/reveal.js/css/theme/source/beige.scss b/reveal.js/css/theme/source/beige.scss similarity index 100% rename from assets/reveal.js/css/theme/source/beige.scss rename to reveal.js/css/theme/source/beige.scss diff --git a/assets/reveal.js/css/theme/source/black.scss b/reveal.js/css/theme/source/black.scss similarity index 100% rename from assets/reveal.js/css/theme/source/black.scss rename to reveal.js/css/theme/source/black.scss diff --git a/assets/reveal.js/css/theme/source/blood.scss b/reveal.js/css/theme/source/blood.scss similarity index 100% rename from assets/reveal.js/css/theme/source/blood.scss rename to reveal.js/css/theme/source/blood.scss diff --git a/assets/reveal.js/css/theme/source/league.scss b/reveal.js/css/theme/source/league.scss similarity index 100% rename from assets/reveal.js/css/theme/source/league.scss rename to reveal.js/css/theme/source/league.scss diff --git a/assets/reveal.js/css/theme/source/moon.scss b/reveal.js/css/theme/source/moon.scss similarity index 100% rename from assets/reveal.js/css/theme/source/moon.scss rename to reveal.js/css/theme/source/moon.scss diff --git a/assets/reveal.js/css/theme/source/night.scss b/reveal.js/css/theme/source/night.scss similarity index 100% rename from assets/reveal.js/css/theme/source/night.scss rename to reveal.js/css/theme/source/night.scss diff --git a/assets/reveal.js/css/theme/source/serif.scss b/reveal.js/css/theme/source/serif.scss similarity index 100% rename from assets/reveal.js/css/theme/source/serif.scss rename to reveal.js/css/theme/source/serif.scss diff --git a/assets/reveal.js/css/theme/source/simple.scss b/reveal.js/css/theme/source/simple.scss similarity index 100% rename from assets/reveal.js/css/theme/source/simple.scss rename to reveal.js/css/theme/source/simple.scss diff --git a/assets/reveal.js/css/theme/source/sky.scss b/reveal.js/css/theme/source/sky.scss similarity index 100% rename from assets/reveal.js/css/theme/source/sky.scss rename to reveal.js/css/theme/source/sky.scss diff --git a/assets/reveal.js/css/theme/source/solarized.scss b/reveal.js/css/theme/source/solarized.scss similarity index 100% rename from assets/reveal.js/css/theme/source/solarized.scss rename to reveal.js/css/theme/source/solarized.scss diff --git a/assets/reveal.js/css/theme/source/white.scss b/reveal.js/css/theme/source/white.scss similarity index 100% rename from assets/reveal.js/css/theme/source/white.scss rename to reveal.js/css/theme/source/white.scss diff --git a/assets/reveal.js/css/theme/template/mixins.scss b/reveal.js/css/theme/template/mixins.scss similarity index 100% rename from assets/reveal.js/css/theme/template/mixins.scss rename to reveal.js/css/theme/template/mixins.scss diff --git a/assets/reveal.js/css/theme/template/settings.scss b/reveal.js/css/theme/template/settings.scss similarity index 100% rename from assets/reveal.js/css/theme/template/settings.scss rename to reveal.js/css/theme/template/settings.scss diff --git a/assets/reveal.js/css/theme/template/theme.scss b/reveal.js/css/theme/template/theme.scss similarity index 100% rename from assets/reveal.js/css/theme/template/theme.scss rename to reveal.js/css/theme/template/theme.scss diff --git a/assets/reveal.js/css/theme/white.css b/reveal.js/css/theme/white.css similarity index 100% rename from assets/reveal.js/css/theme/white.css rename to reveal.js/css/theme/white.css diff --git a/assets/reveal.js/demo.html b/reveal.js/demo.html similarity index 100% rename from assets/reveal.js/demo.html rename to reveal.js/demo.html diff --git a/assets/reveal.js/index.html b/reveal.js/index.html similarity index 100% rename from assets/reveal.js/index.html rename to reveal.js/index.html diff --git a/assets/reveal.js/js/reveal.js b/reveal.js/js/reveal.js similarity index 100% rename from assets/reveal.js/js/reveal.js rename to reveal.js/js/reveal.js diff --git a/assets/reveal.js/lib/css/zenburn.css b/reveal.js/lib/css/zenburn.css similarity index 100% rename from assets/reveal.js/lib/css/zenburn.css rename to reveal.js/lib/css/zenburn.css diff --git a/assets/reveal.js/lib/font/league-gothic/LICENSE b/reveal.js/lib/font/league-gothic/LICENSE similarity index 100% rename from assets/reveal.js/lib/font/league-gothic/LICENSE rename to reveal.js/lib/font/league-gothic/LICENSE diff --git a/assets/reveal.js/lib/font/league-gothic/league-gothic.css b/reveal.js/lib/font/league-gothic/league-gothic.css similarity index 100% rename from assets/reveal.js/lib/font/league-gothic/league-gothic.css rename to reveal.js/lib/font/league-gothic/league-gothic.css diff --git a/assets/reveal.js/lib/font/league-gothic/league-gothic.eot b/reveal.js/lib/font/league-gothic/league-gothic.eot similarity index 100% rename from assets/reveal.js/lib/font/league-gothic/league-gothic.eot rename to reveal.js/lib/font/league-gothic/league-gothic.eot diff --git a/assets/reveal.js/lib/font/league-gothic/league-gothic.ttf b/reveal.js/lib/font/league-gothic/league-gothic.ttf similarity index 100% rename from assets/reveal.js/lib/font/league-gothic/league-gothic.ttf rename to reveal.js/lib/font/league-gothic/league-gothic.ttf diff --git a/assets/reveal.js/lib/font/league-gothic/league-gothic.woff b/reveal.js/lib/font/league-gothic/league-gothic.woff similarity index 100% rename from assets/reveal.js/lib/font/league-gothic/league-gothic.woff rename to reveal.js/lib/font/league-gothic/league-gothic.woff diff --git a/assets/reveal.js/lib/font/source-sans-pro/LICENSE b/reveal.js/lib/font/source-sans-pro/LICENSE similarity index 100% rename from assets/reveal.js/lib/font/source-sans-pro/LICENSE rename to reveal.js/lib/font/source-sans-pro/LICENSE diff --git a/assets/reveal.js/lib/font/source-sans-pro/source-sans-pro-italic.eot b/reveal.js/lib/font/source-sans-pro/source-sans-pro-italic.eot similarity index 100% rename from assets/reveal.js/lib/font/source-sans-pro/source-sans-pro-italic.eot rename to reveal.js/lib/font/source-sans-pro/source-sans-pro-italic.eot diff --git a/assets/reveal.js/lib/font/source-sans-pro/source-sans-pro-italic.ttf b/reveal.js/lib/font/source-sans-pro/source-sans-pro-italic.ttf similarity index 100% rename from assets/reveal.js/lib/font/source-sans-pro/source-sans-pro-italic.ttf rename to reveal.js/lib/font/source-sans-pro/source-sans-pro-italic.ttf diff --git a/assets/reveal.js/lib/font/source-sans-pro/source-sans-pro-italic.woff b/reveal.js/lib/font/source-sans-pro/source-sans-pro-italic.woff similarity index 100% rename from assets/reveal.js/lib/font/source-sans-pro/source-sans-pro-italic.woff rename to reveal.js/lib/font/source-sans-pro/source-sans-pro-italic.woff diff --git a/assets/reveal.js/lib/font/source-sans-pro/source-sans-pro-regular.eot b/reveal.js/lib/font/source-sans-pro/source-sans-pro-regular.eot similarity index 100% rename from assets/reveal.js/lib/font/source-sans-pro/source-sans-pro-regular.eot rename to reveal.js/lib/font/source-sans-pro/source-sans-pro-regular.eot diff --git a/assets/reveal.js/lib/font/source-sans-pro/source-sans-pro-regular.ttf b/reveal.js/lib/font/source-sans-pro/source-sans-pro-regular.ttf similarity index 100% rename from assets/reveal.js/lib/font/source-sans-pro/source-sans-pro-regular.ttf rename to reveal.js/lib/font/source-sans-pro/source-sans-pro-regular.ttf diff --git a/assets/reveal.js/lib/font/source-sans-pro/source-sans-pro-regular.woff b/reveal.js/lib/font/source-sans-pro/source-sans-pro-regular.woff similarity index 100% rename from assets/reveal.js/lib/font/source-sans-pro/source-sans-pro-regular.woff rename to reveal.js/lib/font/source-sans-pro/source-sans-pro-regular.woff diff --git a/assets/reveal.js/lib/font/source-sans-pro/source-sans-pro-semibold.eot b/reveal.js/lib/font/source-sans-pro/source-sans-pro-semibold.eot similarity index 100% rename from assets/reveal.js/lib/font/source-sans-pro/source-sans-pro-semibold.eot rename to reveal.js/lib/font/source-sans-pro/source-sans-pro-semibold.eot diff --git a/assets/reveal.js/lib/font/source-sans-pro/source-sans-pro-semibold.ttf b/reveal.js/lib/font/source-sans-pro/source-sans-pro-semibold.ttf similarity index 100% rename from assets/reveal.js/lib/font/source-sans-pro/source-sans-pro-semibold.ttf rename to reveal.js/lib/font/source-sans-pro/source-sans-pro-semibold.ttf diff --git a/assets/reveal.js/lib/font/source-sans-pro/source-sans-pro-semibold.woff b/reveal.js/lib/font/source-sans-pro/source-sans-pro-semibold.woff similarity index 100% rename from assets/reveal.js/lib/font/source-sans-pro/source-sans-pro-semibold.woff rename to reveal.js/lib/font/source-sans-pro/source-sans-pro-semibold.woff diff --git a/assets/reveal.js/lib/font/source-sans-pro/source-sans-pro-semibolditalic.eot b/reveal.js/lib/font/source-sans-pro/source-sans-pro-semibolditalic.eot similarity index 100% rename from assets/reveal.js/lib/font/source-sans-pro/source-sans-pro-semibolditalic.eot rename to reveal.js/lib/font/source-sans-pro/source-sans-pro-semibolditalic.eot diff --git a/assets/reveal.js/lib/font/source-sans-pro/source-sans-pro-semibolditalic.ttf b/reveal.js/lib/font/source-sans-pro/source-sans-pro-semibolditalic.ttf similarity index 100% rename from assets/reveal.js/lib/font/source-sans-pro/source-sans-pro-semibolditalic.ttf rename to reveal.js/lib/font/source-sans-pro/source-sans-pro-semibolditalic.ttf diff --git a/assets/reveal.js/lib/font/source-sans-pro/source-sans-pro-semibolditalic.woff b/reveal.js/lib/font/source-sans-pro/source-sans-pro-semibolditalic.woff similarity index 100% rename from assets/reveal.js/lib/font/source-sans-pro/source-sans-pro-semibolditalic.woff rename to reveal.js/lib/font/source-sans-pro/source-sans-pro-semibolditalic.woff diff --git a/assets/reveal.js/lib/font/source-sans-pro/source-sans-pro.css b/reveal.js/lib/font/source-sans-pro/source-sans-pro.css similarity index 100% rename from assets/reveal.js/lib/font/source-sans-pro/source-sans-pro.css rename to reveal.js/lib/font/source-sans-pro/source-sans-pro.css diff --git a/assets/reveal.js/lib/js/classList.js b/reveal.js/lib/js/classList.js similarity index 100% rename from assets/reveal.js/lib/js/classList.js rename to reveal.js/lib/js/classList.js diff --git a/assets/reveal.js/lib/js/head.min.js b/reveal.js/lib/js/head.min.js similarity index 100% rename from assets/reveal.js/lib/js/head.min.js rename to reveal.js/lib/js/head.min.js diff --git a/assets/reveal.js/lib/js/html5shiv.js b/reveal.js/lib/js/html5shiv.js similarity index 100% rename from assets/reveal.js/lib/js/html5shiv.js rename to reveal.js/lib/js/html5shiv.js diff --git a/assets/reveal.js/package.json b/reveal.js/package.json similarity index 100% rename from assets/reveal.js/package.json rename to reveal.js/package.json diff --git a/assets/reveal.js/plugin/highlight/highlight.js b/reveal.js/plugin/highlight/highlight.js similarity index 100% rename from assets/reveal.js/plugin/highlight/highlight.js rename to reveal.js/plugin/highlight/highlight.js diff --git a/assets/reveal.js/plugin/markdown/example.html b/reveal.js/plugin/markdown/example.html similarity index 100% rename from assets/reveal.js/plugin/markdown/example.html rename to reveal.js/plugin/markdown/example.html diff --git a/assets/reveal.js/plugin/markdown/example.md b/reveal.js/plugin/markdown/example.md similarity index 100% rename from assets/reveal.js/plugin/markdown/example.md rename to reveal.js/plugin/markdown/example.md diff --git a/assets/reveal.js/plugin/markdown/markdown.js b/reveal.js/plugin/markdown/markdown.js similarity index 100% rename from assets/reveal.js/plugin/markdown/markdown.js rename to reveal.js/plugin/markdown/markdown.js diff --git a/assets/reveal.js/plugin/markdown/marked.js b/reveal.js/plugin/markdown/marked.js similarity index 100% rename from assets/reveal.js/plugin/markdown/marked.js rename to reveal.js/plugin/markdown/marked.js diff --git a/assets/reveal.js/plugin/math/math.js b/reveal.js/plugin/math/math.js similarity index 100% rename from assets/reveal.js/plugin/math/math.js rename to reveal.js/plugin/math/math.js diff --git a/assets/reveal.js/plugin/multiplex/client.js b/reveal.js/plugin/multiplex/client.js similarity index 100% rename from assets/reveal.js/plugin/multiplex/client.js rename to reveal.js/plugin/multiplex/client.js diff --git a/assets/reveal.js/plugin/multiplex/index.js b/reveal.js/plugin/multiplex/index.js similarity index 100% rename from assets/reveal.js/plugin/multiplex/index.js rename to reveal.js/plugin/multiplex/index.js diff --git a/assets/reveal.js/plugin/multiplex/master.js b/reveal.js/plugin/multiplex/master.js similarity index 100% rename from assets/reveal.js/plugin/multiplex/master.js rename to reveal.js/plugin/multiplex/master.js diff --git a/assets/reveal.js/plugin/multiplex/package.json b/reveal.js/plugin/multiplex/package.json similarity index 100% rename from assets/reveal.js/plugin/multiplex/package.json rename to reveal.js/plugin/multiplex/package.json diff --git a/assets/reveal.js/plugin/notes-server/client.js b/reveal.js/plugin/notes-server/client.js similarity index 100% rename from assets/reveal.js/plugin/notes-server/client.js rename to reveal.js/plugin/notes-server/client.js diff --git a/assets/reveal.js/plugin/notes-server/index.js b/reveal.js/plugin/notes-server/index.js similarity index 100% rename from assets/reveal.js/plugin/notes-server/index.js rename to reveal.js/plugin/notes-server/index.js diff --git a/assets/reveal.js/plugin/notes-server/notes.html b/reveal.js/plugin/notes-server/notes.html similarity index 100% rename from assets/reveal.js/plugin/notes-server/notes.html rename to reveal.js/plugin/notes-server/notes.html diff --git a/assets/reveal.js/plugin/notes/notes.html b/reveal.js/plugin/notes/notes.html similarity index 100% rename from assets/reveal.js/plugin/notes/notes.html rename to reveal.js/plugin/notes/notes.html diff --git a/assets/reveal.js/plugin/notes/notes.js b/reveal.js/plugin/notes/notes.js similarity index 100% rename from assets/reveal.js/plugin/notes/notes.js rename to reveal.js/plugin/notes/notes.js diff --git a/assets/reveal.js/plugin/print-pdf/print-pdf.js b/reveal.js/plugin/print-pdf/print-pdf.js similarity index 100% rename from assets/reveal.js/plugin/print-pdf/print-pdf.js rename to reveal.js/plugin/print-pdf/print-pdf.js diff --git a/assets/reveal.js/plugin/search/search.js b/reveal.js/plugin/search/search.js similarity index 100% rename from assets/reveal.js/plugin/search/search.js rename to reveal.js/plugin/search/search.js diff --git a/assets/reveal.js/plugin/zoom-js/zoom.js b/reveal.js/plugin/zoom-js/zoom.js similarity index 100% rename from assets/reveal.js/plugin/zoom-js/zoom.js rename to reveal.js/plugin/zoom-js/zoom.js diff --git a/assets/reveal.js/test/examples/assets/image1.png b/reveal.js/test/examples/assets/image1.png similarity index 100% rename from assets/reveal.js/test/examples/assets/image1.png rename to reveal.js/test/examples/assets/image1.png diff --git a/assets/reveal.js/test/examples/assets/image2.png b/reveal.js/test/examples/assets/image2.png similarity index 100% rename from assets/reveal.js/test/examples/assets/image2.png rename to reveal.js/test/examples/assets/image2.png diff --git a/assets/reveal.js/test/examples/barebones.html b/reveal.js/test/examples/barebones.html similarity index 100% rename from assets/reveal.js/test/examples/barebones.html rename to reveal.js/test/examples/barebones.html diff --git a/assets/reveal.js/test/examples/embedded-media.html b/reveal.js/test/examples/embedded-media.html similarity index 100% rename from assets/reveal.js/test/examples/embedded-media.html rename to reveal.js/test/examples/embedded-media.html diff --git a/assets/reveal.js/test/examples/math.html b/reveal.js/test/examples/math.html similarity index 100% rename from assets/reveal.js/test/examples/math.html rename to reveal.js/test/examples/math.html diff --git a/assets/reveal.js/test/examples/slide-backgrounds.html b/reveal.js/test/examples/slide-backgrounds.html similarity index 100% rename from assets/reveal.js/test/examples/slide-backgrounds.html rename to reveal.js/test/examples/slide-backgrounds.html diff --git a/assets/reveal.js/test/examples/slide-transitions.html b/reveal.js/test/examples/slide-transitions.html similarity index 100% rename from assets/reveal.js/test/examples/slide-transitions.html rename to reveal.js/test/examples/slide-transitions.html diff --git a/assets/reveal.js/test/qunit-1.12.0.css b/reveal.js/test/qunit-1.12.0.css similarity index 100% rename from assets/reveal.js/test/qunit-1.12.0.css rename to reveal.js/test/qunit-1.12.0.css diff --git a/assets/reveal.js/test/qunit-1.12.0.js b/reveal.js/test/qunit-1.12.0.js similarity index 100% rename from assets/reveal.js/test/qunit-1.12.0.js rename to reveal.js/test/qunit-1.12.0.js diff --git a/assets/reveal.js/test/test-markdown-element-attributes.html b/reveal.js/test/test-markdown-element-attributes.html similarity index 100% rename from assets/reveal.js/test/test-markdown-element-attributes.html rename to reveal.js/test/test-markdown-element-attributes.html diff --git a/assets/reveal.js/test/test-markdown-element-attributes.js b/reveal.js/test/test-markdown-element-attributes.js similarity index 100% rename from assets/reveal.js/test/test-markdown-element-attributes.js rename to reveal.js/test/test-markdown-element-attributes.js diff --git a/assets/reveal.js/test/test-markdown-slide-attributes.html b/reveal.js/test/test-markdown-slide-attributes.html similarity index 100% rename from assets/reveal.js/test/test-markdown-slide-attributes.html rename to reveal.js/test/test-markdown-slide-attributes.html diff --git a/assets/reveal.js/test/test-markdown-slide-attributes.js b/reveal.js/test/test-markdown-slide-attributes.js similarity index 100% rename from assets/reveal.js/test/test-markdown-slide-attributes.js rename to reveal.js/test/test-markdown-slide-attributes.js diff --git a/assets/reveal.js/test/test-markdown.html b/reveal.js/test/test-markdown.html similarity index 100% rename from assets/reveal.js/test/test-markdown.html rename to reveal.js/test/test-markdown.html diff --git a/assets/reveal.js/test/test-markdown.js b/reveal.js/test/test-markdown.js similarity index 100% rename from assets/reveal.js/test/test-markdown.js rename to reveal.js/test/test-markdown.js diff --git a/assets/reveal.js/test/test-pdf.html b/reveal.js/test/test-pdf.html similarity index 100% rename from assets/reveal.js/test/test-pdf.html rename to reveal.js/test/test-pdf.html diff --git a/assets/reveal.js/test/test-pdf.js b/reveal.js/test/test-pdf.js similarity index 100% rename from assets/reveal.js/test/test-pdf.js rename to reveal.js/test/test-pdf.js diff --git a/assets/reveal.js/test/test.html b/reveal.js/test/test.html similarity index 100% rename from assets/reveal.js/test/test.html rename to reveal.js/test/test.html diff --git a/assets/reveal.js/test/test.js b/reveal.js/test/test.js similarity index 100% rename from assets/reveal.js/test/test.js rename to reveal.js/test/test.js diff --git a/tools-p.html b/tools-p.html new file mode 100644 index 0000000..e101915 --- /dev/null +++ b/tools-p.html @@ -0,0 +1,40 @@ + + + + + + + + Programming II: Table of contents + + + + + + + + + + + + + + + + + + + + +

Tool's Presentations

+ + +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/assets/index-top.html b/tools.html similarity index 72% rename from assets/index-top.html rename to tools.html index f86a187..28b0dc6 100644 --- a/assets/index-top.html +++ b/tools.html @@ -5,7 +5,7 @@ - TITLE_HERE + Programming II: Table of contents @@ -29,3 +29,12 @@ +

Tool's Presentations

+ + +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/tools/build.sh b/tools/build.sh deleted file mode 100755 index 8432030..0000000 --- a/tools/build.sh +++ /dev/null @@ -1,97 +0,0 @@ -#!/bin/sh -# -# Local build of the material into the web directory -# - -COURSES=$(ls courses/*.md | sed 's/\.md$//;s/courses\///') - -set -e - -if [ -n "$DEBUG" ] ; then - pandoc --version - set -x -fi - -rsync -a --delete --exclude=.git assets/reveal.js web/ -rsync -a --delete assets/css web/ - -# Succeed if output must be built -# As a side effect provide feedback and create the output directory -build_required() -{ - local in=$1 - local out=$2 - - if [ ! -r $out -o $in -nt $out ] ; then - mkdir -p $(dirname $out) - echo Building $out - return 0 - else - return 1 - fi -} - -for course in $COURSES ; do - sed -n 's/^\* \[\([^\]*\)\](\([^)]*\))/\1\2/p' courses/${course}.md | - while IFS= read title file ; do - input=courses/$file - case $file in - *.md) # Markdown - # Prepare the leaf presentation file - pres_out=web/$(dirname $file)/$(basename $file .md)-p.html - if build_required $input $pres_out ; then - { - sed "s/TITLE_HERE/$title/" assets/presentation-top.html - tr -d \\r <$input - cat assets/presentation-bottom.html - } >$pres_out - fi - - # Prepare handout file - hand_out=web/$(dirname $file)/$(basename $file .md).html - if build_required $input $hand_out ; then - { - sed "s/TITLE_HERE/$title/" assets/index-top.html - { - echo "# Programming II: $title" - cat $input - } | - pandoc -f markdown_github -t html - cat assets/index-bottom.html - } >$hand_out - fi - ;; - - *.ipynb) # Python notebook - # Prepare the leaf presentation file - pres_out=web/$(dirname $file)/$(basename $file .ipynb)-p.html - if build_required $input $pres_out ; then - jupyter nbconvert $input --to slides --stdout \ - --reveal-prefix=../reveal.js >$pres_out - fi - - # Prepare handout file - hand_out=web/$(dirname $file)/$(basename $file .ipynb).html - if build_required $input $hand_out ; then - jupyter nbconvert $input --to html --stdout >$hand_out - fi - esac - done - - # Deploy media files - rsync -a --delete courses/$course/media web/$course/ - rsync -a --delete courses/common/media web/common/ - - # Prepare the course index files - for hp in '' -p ; do - { - sed "s/TITLE_HERE/Programming II: Table of contents/" assets/index-top.html - pandoc -f markdown_github -t html courses/${course}.md | - sed '/href/{;s/\.md"/'$hp'.html"/;s/\.ipynb"/'$hp'.html"/;}' - cat assets/index-bottom.html - } >web/${course}${hp}.html - done - -done - -sed 's/\.\.\///' web/admin/materials.html > web/index.html diff --git a/courses/tools/media/AUEB_logo.jpg b/tools/media/AUEB_logo.jpg similarity index 100% rename from courses/tools/media/AUEB_logo.jpg rename to tools/media/AUEB_logo.jpg diff --git a/courses/tools/media/BA_Lab.png b/tools/media/BA_Lab.png similarity index 100% rename from courses/tools/media/BA_Lab.png rename to tools/media/BA_Lab.png diff --git a/courses/tools/media/getting_started.png b/tools/media/getting_started.png similarity index 100% rename from courses/tools/media/getting_started.png rename to tools/media/getting_started.png diff --git a/courses/tools/media/git_branch.svg b/tools/media/git_branch.svg similarity index 100% rename from courses/tools/media/git_branch.svg rename to tools/media/git_branch.svg diff --git a/courses/tools/media/git_branches.png b/tools/media/git_branches.png similarity index 100% rename from courses/tools/media/git_branches.png rename to tools/media/git_branches.png diff --git a/courses/tools/media/its_compilcated.png b/tools/media/its_compilcated.png similarity index 100% rename from courses/tools/media/its_compilcated.png rename to tools/media/its_compilcated.png diff --git a/courses/tools/media/travis_ci_logo.png b/tools/media/travis_ci_logo.png similarity index 100% rename from courses/tools/media/travis_ci_logo.png rename to tools/media/travis_ci_logo.png diff --git a/tools/travis-deploy.sh b/tools/travis-deploy.sh deleted file mode 100755 index 0dfb889..0000000 --- a/tools/travis-deploy.sh +++ /dev/null @@ -1,81 +0,0 @@ -#!/bin/bash -# -# CI script to deploy the material on the web site -# - -set -e # Exit with nonzero exit code if anything fails - -if [ -n "$DEBUG" ] ; then - set -x -fi - -SOURCE_BRANCH="master" -TARGET_BRANCH="gh-pages" - -function doCompile { - sh tools/build.sh -} - -# Pull requests and commits to other branches shouldn't try to deploy, just build to verify -if [ "$TRAVIS_PULL_REQUEST" != "false" -o "$TRAVIS_BRANCH" != "$SOURCE_BRANCH" ]; then - echo "Skipping deploy; just doing a build." - doCompile - exit 0 -fi - -# Save some useful information -REPO=`git config remote.origin.url` -SSH_REPO=${REPO/https:\/\/github.com\//git@github.com:} -SHA=`git rev-parse --verify HEAD` - -# Clone the existing gh-pages for this repo into a second working repository -# in the web/ directory. -# Create a new empty branch if gh-pages doesn't exist yet -# (should only happen on first deploy) -git clone $REPO web -cd web -git checkout $TARGET_BRANCH || git checkout --orphan $TARGET_BRANCH -cd .. - -# Clean web existing contents -rm -rf web/**/* || exit 0 - -# Run our compile script -doCompile - -# Now let's go have some fun with the cloned repo -cd web -git config user.name "Travis CI" -git config user.email "$COMMIT_AUTHOR_EMAIL" - -# If there are no changes to the compiled web (e.g. this is a README update) then just bail. -if git diff --quiet ; then - echo "No changes to the output on this push; exiting." - exit 0 -fi - -# Commit the "changes", i.e. the new version. -# The delta will show diffs between new and old versions. -git add --all . -git commit -m "Deploy to GitHub Pages: ${SHA}" - -# Don't display credentials -set +x - -# Get the deploy key by using Travis's stored variables to decrypt deploy_key.enc -ENCRYPTED_KEY_VAR="encrypted_${ENCRYPTION_LABEL}_key" -ENCRYPTED_IV_VAR="encrypted_${ENCRYPTION_LABEL}_iv" -ENCRYPTED_KEY=${!ENCRYPTED_KEY_VAR} -ENCRYPTED_IV=${!ENCRYPTED_IV_VAR} -openssl aes-256-cbc -K $ENCRYPTED_KEY -iv $ENCRYPTED_IV -in ../deploy_key.enc -out deploy_key -d - -if [ -n "$DEBUG" ] ; then - set -x -fi - -chmod 600 deploy_key -eval `ssh-agent -s` -ssh-add deploy_key - -# Now that we're all set up, we can push. -git push $SSH_REPO $TARGET_BRANCH diff --git a/tools/travis_ci-p.html b/tools/travis_ci-p.html new file mode 100644 index 0000000..d30ea88 --- /dev/null +++ b/tools/travis_ci-p.html @@ -0,0 +1,158 @@ + + + + + + + Travis CI + + + + + + + + + + + +
+
+
+ +
+
+

License

+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
+
+
+ + + + + + + diff --git a/tools/travis_ci.html b/tools/travis_ci.html new file mode 100644 index 0000000..cba4bd3 --- /dev/null +++ b/tools/travis_ci.html @@ -0,0 +1,103 @@ + + + + + + + + Travis CI + + + + + + + + + + + + + + + + + + + + +

Programming II: Travis CI

+

+

Tools and practices: Continuous Integration

+ +

Travis CI

+

+

Agenda

+
    +
  • Importance of Continuous Integration
  • +
  • About Travis CI
  • +
  • Getting started
  • +
  • .travis.yml
  • +
  • Github repository GUI with Travis
  • +
  • Managing settings
  • +
  • Automate Travis push on GitHub pages
  • +
+

Importance of CI (1)

+
    +
  • Continuous Integration is a software development practice where members of a team integrate their work frequently.
  • +
  • Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible.
  • +
  • Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.
  • +
+

Importance of CI (2)

+

+

Importance of CI (3)

+

+

Merging without CI?

+ +

+ + + +

About Travis CI

+
    +
  • Is a distributed continuous integration service purposing on building and testing software projects hosted at GitHub.
  • +
  • Is using Amazon cloud infrastructure to host, build, and test various projects.
  • +
  • Testing service fpr private repository is fee basis while free of charge for public.
  • +
  • TravisPro offers custom deployments on customer's own hardware.
  • +
+

Getting started

+

+

.travis.yml

+
    +
  • Define all dependencies, programming lanauges, packages, etc.
  • +
  • Define specific versions.
  • +
  • Define scripts to execute.
  • +
+

.travis.yml example

+
language: python
+python:
+- '3.5'
+sudo: required
+dist: trusty
+install:
+- pip install "notebook==4.1" requests jupyter_cms jupyter_dashboards
+addons:
+  apt_packages:
+  - pandoc
+script: bash tools/travis-deploy.sh
+env:
+  global:
+  - ENCRYPTION_LABEL: b88dab5c5665
+  - COMMIT_AUTHOR_EMAIL: stefanos1316@gmail.com
+

+ +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/tutorials-p.html b/tutorials-p.html new file mode 100644 index 0000000..5f9c037 --- /dev/null +++ b/tutorials-p.html @@ -0,0 +1,80 @@ + + + + + + + + Programming II: Table of contents + + + + + + + + + + + + + + + + + + + + +

Φροντιστήρια Προγραμματισμού ΙΙ

+

Φροντιστήριο 1

+ +

Φροντιστήριο 2

+ +

Φροντιστήριο 3

+ +

Φροντιστήριο 4

+ +

Φροντιστήριο 5

+ +

Φροντιστήριο 6

+ +

Φροντιστήριο 7

+ +

Φροντιστήριο 8

+ +

Φροντιστήριο 9

+ + +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/tutorials.html b/tutorials.html new file mode 100644 index 0000000..3b14632 --- /dev/null +++ b/tutorials.html @@ -0,0 +1,80 @@ + + + + + + + + Programming II: Table of contents + + + + + + + + + + + + + + + + + + + + +

Φροντιστήρια Προγραμματισμού ΙΙ

+

Φροντιστήριο 1

+ +

Φροντιστήριο 2

+ +

Φροντιστήριο 3

+ +

Φροντιστήριο 4

+ +

Φροντιστήριο 5

+ +

Φροντιστήριο 6

+ +

Φροντιστήριο 7

+ +

Φροντιστήριο 8

+ +

Φροντιστήριο 9

+ + +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/courses/tutorials/media/AUEB_logo.jpg b/tutorials/media/AUEB_logo.jpg similarity index 100% rename from courses/tutorials/media/AUEB_logo.jpg rename to tutorials/media/AUEB_logo.jpg diff --git a/courses/tutorials/media/Add_Commit_Push.png b/tutorials/media/Add_Commit_Push.png similarity index 100% rename from courses/tutorials/media/Add_Commit_Push.png rename to tutorials/media/Add_Commit_Push.png diff --git a/courses/tutorials/media/BA_Lab.png b/tutorials/media/BA_Lab.png similarity index 100% rename from courses/tutorials/media/BA_Lab.png rename to tutorials/media/BA_Lab.png diff --git a/courses/tutorials/media/BetterCodeHub_1.png b/tutorials/media/BetterCodeHub_1.png similarity index 100% rename from courses/tutorials/media/BetterCodeHub_1.png rename to tutorials/media/BetterCodeHub_1.png diff --git a/courses/tutorials/media/BetterCodeHub_2.png b/tutorials/media/BetterCodeHub_2.png similarity index 100% rename from courses/tutorials/media/BetterCodeHub_2.png rename to tutorials/media/BetterCodeHub_2.png diff --git a/courses/tutorials/media/BetterCodeHub_3.png b/tutorials/media/BetterCodeHub_3.png similarity index 100% rename from courses/tutorials/media/BetterCodeHub_3.png rename to tutorials/media/BetterCodeHub_3.png diff --git a/courses/tutorials/media/BetterCodeHub_4.png b/tutorials/media/BetterCodeHub_4.png similarity index 100% rename from courses/tutorials/media/BetterCodeHub_4.png rename to tutorials/media/BetterCodeHub_4.png diff --git a/courses/tutorials/media/BetterCode_Hub_4_resize.png b/tutorials/media/BetterCode_Hub_4_resize.png similarity index 100% rename from courses/tutorials/media/BetterCode_Hub_4_resize.png rename to tutorials/media/BetterCode_Hub_4_resize.png diff --git a/courses/tutorials/media/Clone_Bash.png b/tutorials/media/Clone_Bash.png similarity index 100% rename from courses/tutorials/media/Clone_Bash.png rename to tutorials/media/Clone_Bash.png diff --git a/courses/tutorials/media/Clone_Repo.png b/tutorials/media/Clone_Repo.png similarity index 100% rename from courses/tutorials/media/Clone_Repo.png rename to tutorials/media/Clone_Repo.png diff --git a/courses/tutorials/media/Collaboration.png b/tutorials/media/Collaboration.png similarity index 100% rename from courses/tutorials/media/Collaboration.png rename to tutorials/media/Collaboration.png diff --git a/courses/tutorials/media/Concurrency_Bank_Accounts_Example.png b/tutorials/media/Concurrency_Bank_Accounts_Example.png similarity index 100% rename from courses/tutorials/media/Concurrency_Bank_Accounts_Example.png rename to tutorials/media/Concurrency_Bank_Accounts_Example.png diff --git a/courses/tutorials/media/Correct_Sumbission.png b/tutorials/media/Correct_Sumbission.png similarity index 100% rename from courses/tutorials/media/Correct_Sumbission.png rename to tutorials/media/Correct_Sumbission.png diff --git a/courses/tutorials/media/Correctly_Submitted_Exercises.jpg b/tutorials/media/Correctly_Submitted_Exercises.jpg similarity index 100% rename from courses/tutorials/media/Correctly_Submitted_Exercises.jpg rename to tutorials/media/Correctly_Submitted_Exercises.jpg diff --git a/courses/tutorials/media/Correctly_Submitted_Exercises.png b/tutorials/media/Correctly_Submitted_Exercises.png similarity index 100% rename from courses/tutorials/media/Correctly_Submitted_Exercises.png rename to tutorials/media/Correctly_Submitted_Exercises.png diff --git a/courses/tutorials/media/Create_New_Repo.png b/tutorials/media/Create_New_Repo.png similarity index 100% rename from courses/tutorials/media/Create_New_Repo.png rename to tutorials/media/Create_New_Repo.png diff --git a/courses/tutorials/media/Create_Private_Repo.png b/tutorials/media/Create_Private_Repo.png similarity index 100% rename from courses/tutorials/media/Create_Private_Repo.png rename to tutorials/media/Create_Private_Repo.png diff --git a/courses/tutorials/media/Debugging_5.png b/tutorials/media/Debugging_5.png similarity index 100% rename from courses/tutorials/media/Debugging_5.png rename to tutorials/media/Debugging_5.png diff --git a/courses/tutorials/media/Exercises.png b/tutorials/media/Exercises.png similarity index 100% rename from courses/tutorials/media/Exercises.png rename to tutorials/media/Exercises.png diff --git a/courses/tutorials/media/Exercises_2.png b/tutorials/media/Exercises_2.png similarity index 100% rename from courses/tutorials/media/Exercises_2.png rename to tutorials/media/Exercises_2.png diff --git a/courses/tutorials/media/Exercises_Elapse_Time.png b/tutorials/media/Exercises_Elapse_Time.png similarity index 100% rename from courses/tutorials/media/Exercises_Elapse_Time.png rename to tutorials/media/Exercises_Elapse_Time.png diff --git a/courses/tutorials/media/Exercises_Grades.png b/tutorials/media/Exercises_Grades.png similarity index 100% rename from courses/tutorials/media/Exercises_Grades.png rename to tutorials/media/Exercises_Grades.png diff --git a/courses/tutorials/media/Exercises_Location.png b/tutorials/media/Exercises_Location.png similarity index 100% rename from courses/tutorials/media/Exercises_Location.png rename to tutorials/media/Exercises_Location.png diff --git a/courses/tutorials/media/GitHub.jpg b/tutorials/media/GitHub.jpg similarity index 100% rename from courses/tutorials/media/GitHub.jpg rename to tutorials/media/GitHub.jpg diff --git a/courses/tutorials/media/GitHubDesktopCloneRepo.png b/tutorials/media/GitHubDesktopCloneRepo.png similarity index 100% rename from courses/tutorials/media/GitHubDesktopCloneRepo.png rename to tutorials/media/GitHubDesktopCloneRepo.png diff --git a/courses/tutorials/media/Git_Workflow.png b/tutorials/media/Git_Workflow.png similarity index 100% rename from courses/tutorials/media/Git_Workflow.png rename to tutorials/media/Git_Workflow.png diff --git a/courses/tutorials/media/IDE.png b/tutorials/media/IDE.png similarity index 100% rename from courses/tutorials/media/IDE.png rename to tutorials/media/IDE.png diff --git a/courses/tutorials/media/JAVA_API.png b/tutorials/media/JAVA_API.png similarity index 100% rename from courses/tutorials/media/JAVA_API.png rename to tutorials/media/JAVA_API.png diff --git a/courses/tutorials/media/Jarpeb_Exercises.jpg b/tutorials/media/Jarpeb_Exercises.jpg similarity index 100% rename from courses/tutorials/media/Jarpeb_Exercises.jpg rename to tutorials/media/Jarpeb_Exercises.jpg diff --git a/courses/tutorials/media/Jarpeb_Exercises.png b/tutorials/media/Jarpeb_Exercises.png similarity index 100% rename from courses/tutorials/media/Jarpeb_Exercises.png rename to tutorials/media/Jarpeb_Exercises.png diff --git a/courses/tutorials/media/Jarpeb_GUI.png b/tutorials/media/Jarpeb_GUI.png similarity index 100% rename from courses/tutorials/media/Jarpeb_GUI.png rename to tutorials/media/Jarpeb_GUI.png diff --git a/courses/tutorials/media/Linkedlist.png b/tutorials/media/Linkedlist.png similarity index 100% rename from courses/tutorials/media/Linkedlist.png rename to tutorials/media/Linkedlist.png diff --git a/courses/tutorials/media/Main_Page.png b/tutorials/media/Main_Page.png similarity index 100% rename from courses/tutorials/media/Main_Page.png rename to tutorials/media/Main_Page.png diff --git a/courses/tutorials/media/Participation.png b/tutorials/media/Participation.png similarity index 100% rename from courses/tutorials/media/Participation.png rename to tutorials/media/Participation.png diff --git a/courses/tutorials/media/Processes_SnapShot.png b/tutorials/media/Processes_SnapShot.png similarity index 100% rename from courses/tutorials/media/Processes_SnapShot.png rename to tutorials/media/Processes_SnapShot.png diff --git a/courses/tutorials/media/Programming_II_Grading_System.png b/tutorials/media/Programming_II_Grading_System.png similarity index 100% rename from courses/tutorials/media/Programming_II_Grading_System.png rename to tutorials/media/Programming_II_Grading_System.png diff --git a/courses/tutorials/media/Push_Changes.png b/tutorials/media/Push_Changes.png similarity index 100% rename from courses/tutorials/media/Push_Changes.png rename to tutorials/media/Push_Changes.png diff --git a/courses/tutorials/media/Repo_view.png b/tutorials/media/Repo_view.png similarity index 100% rename from courses/tutorials/media/Repo_view.png rename to tutorials/media/Repo_view.png diff --git a/courses/tutorials/media/Stack.svg b/tutorials/media/Stack.svg similarity index 100% rename from courses/tutorials/media/Stack.svg rename to tutorials/media/Stack.svg diff --git a/courses/tutorials/media/Threads_Snapshot.png b/tutorials/media/Threads_Snapshot.png similarity index 100% rename from courses/tutorials/media/Threads_Snapshot.png rename to tutorials/media/Threads_Snapshot.png diff --git a/courses/tutorials/media/checkStyleIcon.png b/tutorials/media/checkStyleIcon.png similarity index 100% rename from courses/tutorials/media/checkStyleIcon.png rename to tutorials/media/checkStyleIcon.png diff --git a/courses/tutorials/media/collections.png b/tutorials/media/collections.png similarity index 100% rename from courses/tutorials/media/collections.png rename to tutorials/media/collections.png diff --git a/courses/tutorials/media/collectionsTable.jpeg b/tutorials/media/collectionsTable.jpeg similarity index 100% rename from courses/tutorials/media/collectionsTable.jpeg rename to tutorials/media/collectionsTable.jpeg diff --git a/courses/tutorials/media/collectionsTable.png b/tutorials/media/collectionsTable.png similarity index 100% rename from courses/tutorials/media/collectionsTable.png rename to tutorials/media/collectionsTable.png diff --git a/courses/tutorials/media/compileAndRun.png b/tutorials/media/compileAndRun.png similarity index 100% rename from courses/tutorials/media/compileAndRun.png rename to tutorials/media/compileAndRun.png diff --git a/courses/tutorials/media/createNewClass.png b/tutorials/media/createNewClass.png similarity index 100% rename from courses/tutorials/media/createNewClass.png rename to tutorials/media/createNewClass.png diff --git a/courses/tutorials/media/createNewClass.xcf b/tutorials/media/createNewClass.xcf similarity index 100% rename from courses/tutorials/media/createNewClass.xcf rename to tutorials/media/createNewClass.xcf diff --git a/courses/tutorials/media/createNewProject.png b/tutorials/media/createNewProject.png similarity index 100% rename from courses/tutorials/media/createNewProject.png rename to tutorials/media/createNewProject.png diff --git a/courses/tutorials/media/createNewProject.xcf b/tutorials/media/createNewProject.xcf similarity index 100% rename from courses/tutorials/media/createNewProject.xcf rename to tutorials/media/createNewProject.xcf diff --git a/courses/tutorials/media/debugging_1.png b/tutorials/media/debugging_1.png similarity index 100% rename from courses/tutorials/media/debugging_1.png rename to tutorials/media/debugging_1.png diff --git a/courses/tutorials/media/debugging_2.png b/tutorials/media/debugging_2.png similarity index 100% rename from courses/tutorials/media/debugging_2.png rename to tutorials/media/debugging_2.png diff --git a/courses/tutorials/media/debugging_3.png b/tutorials/media/debugging_3.png similarity index 100% rename from courses/tutorials/media/debugging_3.png rename to tutorials/media/debugging_3.png diff --git a/courses/tutorials/media/debugging_4.png b/tutorials/media/debugging_4.png similarity index 100% rename from courses/tutorials/media/debugging_4.png rename to tutorials/media/debugging_4.png diff --git a/courses/tutorials/media/debugging_5.png b/tutorials/media/debugging_5.png similarity index 100% rename from courses/tutorials/media/debugging_5.png rename to tutorials/media/debugging_5.png diff --git a/courses/tutorials/media/eclipseIcon.png b/tutorials/media/eclipseIcon.png similarity index 100% rename from courses/tutorials/media/eclipseIcon.png rename to tutorials/media/eclipseIcon.png diff --git a/courses/tutorials/media/exampleCheckStyle-min.png b/tutorials/media/exampleCheckStyle-min.png similarity index 100% rename from courses/tutorials/media/exampleCheckStyle-min.png rename to tutorials/media/exampleCheckStyle-min.png diff --git a/courses/tutorials/media/exampleCheckStyle.png b/tutorials/media/exampleCheckStyle.png similarity index 100% rename from courses/tutorials/media/exampleCheckStyle.png rename to tutorials/media/exampleCheckStyle.png diff --git a/courses/tutorials/media/exampleCheckStyle_resize.png b/tutorials/media/exampleCheckStyle_resize.png similarity index 100% rename from courses/tutorials/media/exampleCheckStyle_resize.png rename to tutorials/media/exampleCheckStyle_resize.png diff --git a/courses/tutorials/media/exceptions.png b/tutorials/media/exceptions.png similarity index 100% rename from courses/tutorials/media/exceptions.png rename to tutorials/media/exceptions.png diff --git a/courses/tutorials/media/files_1.png b/tutorials/media/files_1.png similarity index 100% rename from courses/tutorials/media/files_1.png rename to tutorials/media/files_1.png diff --git a/courses/tutorials/media/files_2.png b/tutorials/media/files_2.png similarity index 100% rename from courses/tutorials/media/files_2.png rename to tutorials/media/files_2.png diff --git a/courses/tutorials/media/files_3.png b/tutorials/media/files_3.png similarity index 100% rename from courses/tutorials/media/files_3.png rename to tutorials/media/files_3.png diff --git a/courses/tutorials/media/findBugsIcon.png b/tutorials/media/findBugsIcon.png similarity index 100% rename from courses/tutorials/media/findBugsIcon.png rename to tutorials/media/findBugsIcon.png diff --git a/courses/tutorials/media/installCheckStyles.png b/tutorials/media/installCheckStyles.png similarity index 100% rename from courses/tutorials/media/installCheckStyles.png rename to tutorials/media/installCheckStyles.png diff --git a/courses/tutorials/media/installFindBugs.png b/tutorials/media/installFindBugs.png similarity index 100% rename from courses/tutorials/media/installFindBugs.png rename to tutorials/media/installFindBugs.png diff --git a/courses/tutorials/media/javaCollectionFramework.svg b/tutorials/media/javaCollectionFramework.svg similarity index 100% rename from courses/tutorials/media/javaCollectionFramework.svg rename to tutorials/media/javaCollectionFramework.svg diff --git a/courses/tutorials/media/junit1.png b/tutorials/media/junit1.png similarity index 100% rename from courses/tutorials/media/junit1.png rename to tutorials/media/junit1.png diff --git a/courses/tutorials/media/junit2.png b/tutorials/media/junit2.png similarity index 100% rename from courses/tutorials/media/junit2.png rename to tutorials/media/junit2.png diff --git a/courses/tutorials/media/junit3.png b/tutorials/media/junit3.png similarity index 100% rename from courses/tutorials/media/junit3.png rename to tutorials/media/junit3.png diff --git a/courses/tutorials/media/nameNewProject.png b/tutorials/media/nameNewProject.png similarity index 100% rename from courses/tutorials/media/nameNewProject.png rename to tutorials/media/nameNewProject.png diff --git a/courses/tutorials/media/resultsOfCheckStyle.png b/tutorials/media/resultsOfCheckStyle.png similarity index 100% rename from courses/tutorials/media/resultsOfCheckStyle.png rename to tutorials/media/resultsOfCheckStyle.png diff --git a/courses/tutorials/media/runButton.png b/tutorials/media/runButton.png similarity index 100% rename from courses/tutorials/media/runButton.png rename to tutorials/media/runButton.png diff --git a/courses/tutorials/media/selectWorkstation.png b/tutorials/media/selectWorkstation.png similarity index 100% rename from courses/tutorials/media/selectWorkstation.png rename to tutorials/media/selectWorkstation.png diff --git a/courses/tutorials/media/sg30.sdv b/tutorials/media/sg30.sdv similarity index 100% rename from courses/tutorials/media/sg30.sdv rename to tutorials/media/sg30.sdv diff --git a/courses/tutorials/media/sg30.thm b/tutorials/media/sg30.thm similarity index 100% rename from courses/tutorials/media/sg30.thm rename to tutorials/media/sg30.thm diff --git a/courses/tutorials/media/widening-type-conversion.jpg b/tutorials/media/widening-type-conversion.jpg similarity index 100% rename from courses/tutorials/media/widening-type-conversion.jpg rename to tutorials/media/widening-type-conversion.jpg diff --git a/courses/tutorials/tutorial_1_A.md b/tutorials/tutorial_1_A-p.html similarity index 62% rename from courses/tutorials/tutorial_1_A.md rename to tutorials/tutorial_1_A-p.html index 01543f6..76cda63 100644 --- a/courses/tutorials/tutorial_1_A.md +++ b/tutorials/tutorial_1_A-p.html @@ -1,3 +1,36 @@ + + + + + + + Εισαγωγή στο Jarpeb + + + + + + + + + + + +
+
+
+ +
+
+

License

+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
+
+
+ + + + + + + diff --git a/tutorials/tutorial_1_A.html b/tutorials/tutorial_1_A.html new file mode 100644 index 0000000..373703b --- /dev/null +++ b/tutorials/tutorial_1_A.html @@ -0,0 +1,128 @@ + + + + + + + + Εισαγωγή στο Jarpeb + + + + + + + + + + + + + + + + + + + + +

Programming II: Εισαγωγή στο Jarpeb

+

+

Προγραμματισμός ΙΙ

+

Φροντιστήριο 1 (A' μέρος)

+ +

Στοιχεία Μαθήματος

+
    +
  • Μάθημα: Προγραμματισμός ΙΙ
  • +
  • Καθηγητής: Διομήδης Σπινέλλης
  • +
  • Βοηθοί: Στέφανος Γεωργίου και Θεόδωρος Στασσινόπουλος
  • +
  • Θεωρία και ατομικές ασκήσεις: κάθε Δευτέρα. 3-5μμ, Δ23
  • +
  • Πρακτικές και ομαδικές ασκήσεις: κάθε Τετάρτη 3-5μμ, Α23
  • +
  • Φροντιστήριο: κάθε Τρίτη, 3-5μμ, Α23
  • +
  • Εργαστήριο: 4 ώρες/εβδομάδα (Τετάρτη και Πέμπτη, 5-7μμ, ELOI2)
  • +
+

Σημειώσεις μαθήματος

+


https://edu.dmst.aueb.gr/course/view.php?id=20

+

Σημειώσεις Θεωρίας και Σύνδεσμοι Ατομικώ Ασκήσεων

+


https://www2.dmst.aueb.gr/dds/isdi/index.htm

+

Ατομικές Ασκήσεις

+


https://www2.dmst.aueb.gr/dds/isdi/exercise/index.htm

+

Αξιολόγηση Συμμετοχής

+


https://www2.dmst.aueb.gr/dds/isdi/intro/token.htm

+

Φροντιστηριακές Παραδόσεις

+
    +
  • Εκμάθηση και υποστήριξη του Jarpeb (Java Randomised and Psersonalized Exercise Builder)
  • +
  • Επεξήγηση ασκήσεων ατομικών
  • +
  • Επίλυση αποριών και ασκήσεων
  • +
+

Απαιτήσεις για το Σύστημα Ασκήσεων

+ +

Κριτήρια Βαθμολογίας Ατομικών Ασκήσεων

+
    +
  • Υλοποίηση του προγράμματος κάθε άσκησης
  • +
  • Μορφοποίηση του προγράμματος κάθε άσκησης
  • +
  • Απαντήσεις στις ερωτήσεις πολλαπλής επιλογής
  • +
+

Προγραμματισμός σε Java

+
    +
  • Διορθωτής (editor) + Μεταγλωττιστής (compiler)
    ή
  • +
  • Ολοκληρωμένο Περιβάλλον Ανάπτυξης Εφαρμογών (Integrated Development Environment - IDE)
  • +
+

Editors

+
    +
  • TextPad
  • +
  • Notepad++
  • +
  • Notepad
  • +
  • Vim
  • +
  • Emacs
  • +
  • Sublime
  • +
  • TextEdit
  • +
+

Integrated Development Environments - IDEs

+
    +
  • Eclipse
  • +
  • NetBeans
  • +
  • IntelliJ
  • +
+

Παράδειγμα 1

+

+

Μεταγλώττιση και Εκτέλεση από τη Γραμμή Εντολών

+
    +
  • Μεταγλωττίζουμε το πρόγραμμα με την εντολή javac <όνομα αρχείου.java>
  • +
  • Αν δεν έχουμε κάνει λάθη τότε θα δημιουργηθεί ένα αρχείο με κατάληξη .class
  • +
  • Εκτελούμε το πρόγραμμα με την εντολή java <όνομα αρχείου> (χωρίς την κατάληξη .class)
  • +
+

Παράδειγμα 2

+

+

+

Έλεγχος Υλοποιήσης

+

+

Ποιότητα Μπρφοποίησης

+
    +
  • Κενό πριν την αγκύλη {
  • +
  • Όχι κενό μετά την παρένθεση (
  • +
  • Κενό πριν και μετά τους τελεστές (==, <, >, &&, ||…)
  • +
  • Κενό πριν και μετά τα σύμβολα των πράξεων (+, -, \, %)
  • +
  • 1 κενή γραμμή πριν κάθε νέα μέθοδο
  • +
+
    if {
+        ...
+    } else {
+        ...
+    }
+

Έλεγχος Καταχώρησης

+

+ +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/courses/tutorials/tutorial_1_B.md b/tutorials/tutorial_1_B-p.html similarity index 67% rename from courses/tutorials/tutorial_1_B.md rename to tutorials/tutorial_1_B-p.html index ae9a93b..a4ad47b 100644 --- a/courses/tutorials/tutorial_1_B.md +++ b/tutorials/tutorial_1_B-p.html @@ -1,3 +1,36 @@ + + + + + + + Τελεστές, τύποι, και εμβέλεια μεταβλητών + + + + + + + + + + + +
+
+
+ +
+
+

License

+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
+
+
+ + + + + + + diff --git a/tutorials/tutorial_1_B.html b/tutorials/tutorial_1_B.html new file mode 100644 index 0000000..312e962 --- /dev/null +++ b/tutorials/tutorial_1_B.html @@ -0,0 +1,329 @@ + + + + + + + + Τελεστές, τύποι, και εμβέλεια μεταβλητών + + + + + + + + + + + + + + + + + + + + +

Programming II: Τελεστές, τύποι, και εμβέλεια μεταβλητών

+

+

Προγραμματισμός ΙΙ

+

Φροντιστήριο 1 (Β' μέρος)

+ +

Περιεχόμενα

+
    +
  • Δήλωση μεταβλητών
  • +
  • Type Casting
  • +
  • Τελεστές
  • +
  • Τεκμηρίωση
  • +
+

Δήλωση Μεταβλητών

+
    +
  • Όλες οι μεταβλητές πρέπει να δηλώνονται πριν χρησιμοποιηθούν μέσα στο πρόγραμμά μας
  • +
  • Η δήλωση μιας μεταβλητής γίνεται με τον ορισμό του τύπου της και του ονόματός της
  • +
  • Παράδειγμα: int number = 1; Με αυτό τον τρόπο λέμε στο πρόγραμμά μας πως υπάρχει ένα πεδίο με το όνομα number που κρατάει αριθμητικά δεδομένα και έχει αρχική τιμή 1.
  • +
  • Οι τύποι των μεταβλητών είναι προκαθορισμένοι από την Java και τα ονόματά τους είναι δεσμευμένες λέξεις
  • +
+

Primitive Data Types(1)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ΤύποςΕρμηνείαΑρχικοποίηση (by default)
byte8-bit ακέραιος0
doubleδιπλής ακρίβειας κινητή υποδιαστολή0.0d
floatμονής ακρίβειας κινητή υποδιαστολή0.0f
intακέραιος0
longμεγάλος ακέραιος0L
shortμικρός ακέραιος0
+

Primitive Data Types(2)

+ + + + + + + + + + + + + + + + + + + + +
ΤύποςΕρμηνείαΑρχικοποίηση (by default)
booleantrue/falseFALSE
char16-bit χαρακτήρας (unicode)'\u000'
+

Ακέραιοι

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ΤύποςbitsΕύρος
byte8-128 έως 127
short16-32,768 έως 32,767
int32-231 έως 231 -1
long64-263 έως 263 -1
+

Τύποι Κινητής Υποδιαστολής

+ + + + + + + + + + + + + + + + + + + + +
ΤύποςbitsΑκρίβεια
float32Μονή
double64Διπλη
+

Type Casting

+

+
    +
  • Επιτρέπεται η μετατροπή ενός τύπου δεδομένων σε άλλο αντιστοιχεί στον ίδιο ή μεγαλύτερο αριθμό bits, π.χ. από short σε int, long και από int σε long
  • +
  • Εάν μετατρέψουμε έναν τύπο δεδομένων από double ή float σε int (λιγότερα bits) μπορεί να χάσουμε πληροφορία
  • +
  • Παραδείγματα:

    +
      +
    • double avg = (double) 12/5
    • +
    • int rnd = (int) (29.4/10.0)
    • +
  • +
+

Εμβέλεια Μεταβλητών(1)

+
    public class Scope {
+    
+        public static void main(String[] args) {
+            int x = 10;
+            if (x == 10) {
+                int y = 20;
+                System.out.println("x and y: " + x + y);
+                x = y * 2;
+            }
+            y = 100;
+            System.out.println("x is: " + x);
+        }
+
+    }
+

Εμβέλεια Μεταβλητών(2)

+
    public class Scope {
+    
+        public static void main(String[] args) {
+            int x = 10;
+            if (x == 10) {
+                int y = 20;
+                System.out.println("x and y: " + x + y);
+                x = y * 2;
+            }
+            y = 100; //ERROR
+            System.out.println("x is: " + x);
+        }
+
+    }
+

Αριθμητικοί Τελεστές

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ΤελεστήςΠράξη
+a + b
-a - b
*a * b
/a / b (πηλίκο)
%a % b (υπόλοιπο)
++a++ => a = a + 1
--a-- => a = a - 1
+

Προσαύξηση(1)

+
    +
  • Παράδειγμα 1:

    +
      +
    • x = 10;
    • +
    • y = ++x;
    • +
  • +
  • Παράδειγμα 2:

    +
      +
    • x = 10;
    • +
    • y = x++;
    • +
  • +
+

Προσαύξηση(2)

+
    +
  • Παράδειγμα 1:

    +
      +
    • x = 10;
    • +
    • y = ++x; (αυξάνει το x κατά 1 και μετά επιστρέφει την τιμή του x)
    • +
    • y = 11, x = 11
    • +
  • +
  • Παράδειγμα 2:

    +
      +
    • x = 10;
    • +
    • y = x++; (επιστρέφει την τιμή του x και μετά αυξάνει κατά 1 )
    • +
    • y = 10, x = 10
    • +
  • +
+

Σχεσιακοί Τελεστές

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ΤελεστήςΣημασία
!=Όχι ίσο με
<Μικρότερο από
>Μεγαλύτερο από
<=Μικρότερο ή ίσο από
>=Μεγαλύτερο ή ίσο από
=='Ισο με
+

Τελεστής Εκχώρησης

+
    +
  • Παράδειγμα:

    +
      +
    • int x, y, z;
    • +
    • x = y = z = 100;
    • +
  • +
+

Java API

+


https://docs.oracle.com/javase/8/docs/api/

+ +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/tutorials/tutorial_2_A-p.html b/tutorials/tutorial_2_A-p.html new file mode 100644 index 0000000..b193085 --- /dev/null +++ b/tutorials/tutorial_2_A-p.html @@ -0,0 +1,169 @@ + + + + + + + Εισαγωγή στο GitHub + + + + + + + + + + + +
+
+
+ +
+
+

License

+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
+
+
+ + + + + + + diff --git a/tutorials/tutorial_2_A.html b/tutorials/tutorial_2_A.html new file mode 100644 index 0000000..d63cfa0 --- /dev/null +++ b/tutorials/tutorial_2_A.html @@ -0,0 +1,109 @@ + + + + + + + + Εισαγωγή στο GitHub + + + + + + + + + + + + + + + + + + + + +

Programming II: Εισαγωγή στο GitHub

+

+

Προγραμματισμός ΙΙ

+

Χειρισμός GitHub

+ +

GitHub

+

+

Λογαρισμος και Εγκατάτσαση

+ +

Δημιουργία αποθετήρα

+

+

Iδιωτικός αποθετήρας

+

+

Όψη Αποθετήρα

+

+

Κλωνοποιήση(1)

+

+

Κλωνοποιήση(2)

+

+

Πρόσθεση και Ώθηση

+

+

Git Εντολές

+
+ +

Εντολές για προώθηση κώδικα:

+
    +
  • git add .
  • +
  • git commit -m "Version 1.1"
  • +
  • git push
  • +
+
+Εντολές για ανανέωση κώδικα στην τελευταία έκδοση: +
+ +
    +
  • git pull
  • +
+
+Εντολές για έλεγχο κατάτστασης: +
+ +
    +
  • git status
  • +
  • git log
  • +
+

Ένωση Κώδικα

+ +

via GIPHY

+ + + +

Επιστροφή σε παλία έκδοση

+
    +
  • git log
  • +
  • git checkout
  • +
  • git reset (unpublished commits)
  • +
  • git revert (makes a copy, safer solution)
  • +
+

Ροή Εργασίας Git

+

+

Git Workflow

+

Git GUI

+

+ +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/courses/tutorials/tutorial_2_B.md b/tutorials/tutorial_2_B-p.html similarity index 84% rename from courses/tutorials/tutorial_2_B.md rename to tutorials/tutorial_2_B-p.html index 62fe9d5..2eb2910 100644 --- a/courses/tutorials/tutorial_2_B.md +++ b/tutorials/tutorial_2_B-p.html @@ -1,3 +1,36 @@ + + + + + + + Κανόνες μορφοποίησης + + + + + + + + + + + +
+
+
+ +
+
+

License

+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
+
+
+ + + + + + + diff --git a/tutorials/tutorial_2_B.html b/tutorials/tutorial_2_B.html new file mode 100644 index 0000000..2d0e5ec --- /dev/null +++ b/tutorials/tutorial_2_B.html @@ -0,0 +1,353 @@ + + + + + + + + Κανόνες μορφοποίησης + + + + + + + + + + + + + + + + + + + + +

Programming II: Κανόνες μορφοποίησης

+

+

Προγραμματισμός ΙΙ

+

Κανόνες μορφοποιήσης

+ +

Καλογραμμένος Κώδικας

+
    +
  • Λιγότερα λάθη
  • +
  • Ευκολότερος εντοπιζμός σφαλμάτων
  • +
  • Ευκολότερη συντήρηση του λογισμικού
  • +
  • Ευκολότερη επέκταση του λογισμικού
  • +
  • Ευκολότερη κατανόηση του κώδικά μας από τρίτους
  • +
+

Παράδειγμα(1)

+
public class Queller{
+public static int getDispetal(int cobber,int whinnock){
+int result=0;
+if(cobber==whinnock)
+result=cobber-whinnock;
+result++;
+else result = cobber*whinnock;
+return result;}
+public static int getGoverness(int mesodesma,int natrium,int stewardry){
+int res = 0;
+int haulabout=natrium+(1-mesodesma);
+if ((haulabout*haulabout)==stewardry)
+res=haulabout;
+else res=4*haulabout;
+return res;}}
+

Καλές Πρακτικές

+
    +
  • Γράφουμε σύντομες μεθόδους (<<200 γραμμές)
  • +
  • Αν μια μέθοδος ή κλάση είναι υπεύθυνη για παραπάνω
    από μία λογική λειτουργεία, προσπαθούμε να τη σπάσουμε
    σε επιμέρους κομμάτια. (Single Responsibility Principle)
  • +
  • Χρησιμοποιούμε απλή λογική και ροές ελέγχου
  • +
  • KISS (Keep It Simple Stupid)
  • +
+

Συμβάσεις Ονομάτων (1)

+
    +
  • Χρησιμοποιούμε ονόματα (για μεταβλητές, μεθόδους, και κλάσεις) που υπονοούν το σκοπό χρήσης τους.
  • +
  • Αποφεύγουμε συντομογραφίες (π.χ. επιλέγουμε calculatePerYear, όχι cpy).
  • +
  • Επιλέγουμε σύντομα ονόματα για δείκτες μέσα σε βρόγχους (π.χ. i) και πιο αναλυτικά ονόματα για μεταβλητές που αφορούν κάποιο σκοπό.
  • +
  • Αποφεύγουμε γενικά ονόματα (π.χ. foo) και επιλέγουμε όρους σχετικούς με το αντικείμενο της εφαρμογής μας.
  • +
  • Ονομάζουμε σταθερές με βάση το νόημά τους και όχι την τιμή τους (π.χ. MIN_PER_HOUR, όχι SIXTY).
  • +
  • Οι boolean μεταβλητές και μέθοδοι θα πρέπει να είναι ξεκάθαρες στο νόημά τους (π.χ. isEmpty(), contains())
  • +
+

Συμβάσεις Ονομάτων (2)

+ + + + + + + + + + + + + + + + + + + + +
ΣύμβολοΚανόναςΠαράδειγμα
Μεταβλητέςσύντομα ονόματα, μικρό αρχικό γράμμα, camelCasewageByYear foundName isEmpty
Σταθερέςκεφαλαία γράμματα, underscore στο διαχωρισμό των λέξεωνMIN_PER_HOUR
+

Συμβάσεις Ονομάτων (3)

+ + + + + + + + + + + + + + + + + + + + +
ΣύμβολοΚανόναςΠαράδειγμα
Μέθοδοιχρήση ρήματος που δηλώνει τι κάνει η μέθοδος, μικρό αρχικό γράμμα, camelCasedraw() calculateSum()
Κλάσειςχρήση ουσιαστικού που δηλώνει τι αντιπροσωπεύει η κλάση, κεφαλαίο αρχικό γράμμα, CamelCaseOffice, PhoneBook
+

Παράδειγμα

+
+Να γραφτεί πρόγραμμα που να δέχεται σαν όρισμα ένα πίνακα πραγματικών αριθμών που έχει θερμοκρασίες +σε Farenheit για κάθε μήνα του έτους, να υπολογίζει το μέσω όρο όλου του χρόνου και +αν η θερμοκρασία σε Celsius ειναι κάτω απο 0 να επιστρέφει "cold", αλλίως να +επιστρέφει "warm". (Δε χρειάζεται έλεγχος για την εγκυρότητα του ορίσματος) +
+ + + +
    public static String foo(double[] a) {
+        double t = 0;
+        for (int i = 0; i < 12; i++) {
+        t = t + a[i];}
+        t=t/12;
+        t = ((t-32)*5)/9;
+        if (t < 0) {return "cold"};
+        else {
+        return "warm";
+        }
+    }
+
    private static final double TEMPERATURE_THRESHOLD = 0.0;
+    private static final int NUMBER_OF_MONTHS = 12;
+    private static final String COLD = "cold";
+    private static final String WARM = "warm";
+
+    public static String findAnnualWeatherCondition(double[] monthlyTemperaturesInFarenheit) {
+        double meanTemperature = getMeanTemperatures(monthlyTemperaturesInFarenheit);
+        double meanInCelsius = convertFarenheitToCelsius(meanTemperature);
+        return weatherLabelRelativeToTemperature(meanInCelsius);
+    }
+
+    private static double getMeanTemperatures(double[] monthlyTemperaturesInFarenheit) {
+        double sumTemperatures = 0;
+        for (int i = 0; i < 12; i++) {
+            sumTemperatures = sumTemperatures + monthlyTemperaturesInFarenheit[i];
+        }
+        return sumTemperatures/NUMBER_OF_MONTHS;
+    }
+
+    private static double convertFarenheitToCelsius(double farenheitTemperature) {
+        return ((farenheitTemperature - 32)*5)/9;
+    }
+
+    private static String weatherLabelRelativeToTemperature(double temperature) {
+        if (temperature < TEMPERATURE_THRESHOLD) {
+            return COLD;
+        } else {
+            return WARM;
+        }
+    }
+

Σχόλια (1)

+
    +
  • Προσπαθούμε όσο μπορούμε να κάνουμε το πρόγραμμα μας με επεξηγηματικό τρόπο χρησιμοποιώντας τις παραπάνω καλές παρακτικές
    ώστε να μη χρειάζεται η χρήση σχολίων. (“Good code documents itself!”). Αν παρ' ολα αυτα χρειάζεται καποια
    επεξήγηση και τα σχόλια ειναι απραίτητα τοτε:
  • +
+

Σχόλια (2)

+
    +
  • Με τη χρήση σχολίων, το πρόγραμμα εξηγεί στον προγραμματιστή γιατί έχει υλοποιηθεί με έναν συγκεκριμένο τρόπο
  • +
  • Τα σχόλια θα πρέπει να συμφωνούν με τον κώδικα και να ανανεώνονται αναλόγως. Βάζουμε σχόλια όπου χρειάζεται, όχι απαραίτητα σε κάθε γραμμή του προγράμματός μας
  • +
  • Στην αρχή του προγράμματός μας βάζουμε σε σχόλια: 1) τα στοιχεία μας, 2) την ημερομηνία, 3) τον τρόπο εκτέλεσης, 4) την έκδοση του προγράμματός μας
  • +
  • Τα σχόλια στην Java δεν εμφωλεύονται
  • +
+

Σχόλια (3)

+ + + + + + + + + + + + + + + + + + + + + + + +
ΕίδηΚανόναςΣυνήθης ΧρήσηΠαράδειγμα
Σχόλια γραμμήςξεκινούν με //σε μεταβλητές, σύντομες μέθοδοι (get/set)//why use this variable
Σχόλια σε blockξεκινούν με /* και τελειώνουν με */ ενώ στις ενδιάμεσες γραμμές βάζουμε μόνο *σε ροές ελέγχου, μεθόδους/* Here is an * example of * how to use this. */ |
+

Σχόλια (4)

+ + + + + + + + + + + + + + + + + +
ΕίδηΚανόναςΣυνήθης ΧρήσηΠαράδειγμα
Σχόλια Javadocξεκινούν με /** και τελειώνουν σε */ ενώ στις ενδιάμεσες γραμμές βάζουμε μόνο *στην τεκμηρίωση κλάσεων, μεθόδων, και διεπαφώνhttp://www.oracle.com/ technetwork/articles/java /index-137868.html
+

Doc Comments

+
/**
+ * Returns an Image object that can then be painted on the screen.
+ * The url argument must specify an absolute {@link URL}. The name
+ * argument is a specifier that is relative to the url argument.
+ *
+ * @param  url  an absolute URL giving the base location of the image
+ * @param  name the location of the image, relative to the url argument
+ * @return      the image at the specified URL
+ * @see         Image
+ */
+
+ public Image getImage(URL url, String name) {
+        try {
+            return getImage(new URL(url, name));
+        } catch (MalformedURLException e) {
+            return null;
+        }
+ }
+

http://www.oracle.com/technetwork/articles/java/index-137868.html

+

Κατανόηση Κώδικα (1)

+
    public class Nesting {
+        //main method
+        public static void main(String[] args) {
+            boolean nesting = true;
+            int x = 10;
+            if (x == 10) {
+                int y = 20;
+                System.out.println("x and y: " + x +y);
+                x = y * 2;
+            }
+            int y = 100;
+            System.out.println("x is: " + x);
+            /*/ nesting = false; //*/
+            System.out.println(nesting); //?
+        }
+    }
+

Κενά (1)

+
    +
  • Ξεκινήστε μια κλάση από την αρχή της γραμμής
  • +
  • Βάζουμε κενές γραμμές για να χωρίσουμε το πρόγραμμά μας σε λογικά μέρη, όχι παντού
  • +
  • Βάζουμε ένα κενό πριν και μετά από τελεστές (<, >, <=, ==)
  • +
  • Βάλτε κενό πριν και μετά τα σύμβολα των πράξεων (+, -, \, *, %)
  • +
  • Βάζουμε ένα κενό μετά τα while, for, if και την παρένθεση, δηλ. if (…)
  • +
  • Δε βάζουμε κενό πριν την παρένθεση μιας μεθόδου
  • +
  • Αφήστε 1 κενή γραμμή πριν ξεκινήσετε μια νέα μέθοδο
  • +
+

Κενά (2)

+
    +
  • Βαζουμε ένα κενό μετά από κάθε δήλωση στο for loop
  • +
  • δηλ. for(int i=0;i<10;i++) -> for (int i = 0; i < 10; i++)
  • +
  • Βάλτε τις αγκύλες στην ίδια σειρά με τη δήλωση των κλάσεων και των
    μεθόδων
  • +
  • Βάζουμε ένα κενό πριν την αγκύλη {
  • +
  • Χρησιμοποιούμε 1 δήλωση ανά γραμμή, όχι count++; int x = 5; στην ίδια γραμμή
  • +
+

Εσοχές (Indentation)

+
    +
  • Αποφεύγουμε γραμμές με περισσότερους από 80 χαρακτήρες
  • +
  • Χρησιμοποιούμε 4 spaces ή 1 tab σε κάθε νέο επίπεδο εμφώλευσης (nesting) του προγράμματός μας
  • +
  • Χρησιμοποιούμε το στυλ K&R (Kernighan and Ritchie’s indentation style)
  • +
+

Κατανόηση Κώδικα (2)

+
    public class Queller {
+
+        public static int getDispetal(int cobber, int whinnock) {
+            int result = 0;
+            if (cobber == whinnock) {
+                result = cobber - whinnock;
+                result++;
+            } else {
+                result = cobber * whinnock;
+            }
+            return result;
+        }
+
+        public static int getGoverness(int mesodesma, int natrium, int stewardry) {
+            int res = 0;
+            int haulabout = natrium + (1 - mesodesma);
+            if ((haulabout * haulabout) == stewardry) {
+                res = haulabout;
+            } else {
+                res = 4 * haulabout;
+            }
+            return res;
+            }
+    }
+

Προσομοίωση ρίψης ζαριών

+
+Γράψτε ένα πρόγραμμα που προσομοιώνει τη ρίψη ενός ζεύγους ζαριών. Εκτελέστε το πείραμα μέχρι και τα 2 ζάρια να φέρουν 1 +και στο τέλος να επιστρέφει πόσες ρηψεις χρειάστηκαν. +
+Γράψτε πρόγραμμα που να καλεί και να τρέχει το προηγούμενο πρόγραμμα n φορές και να επιστρέφει το μέσο όρο των φορών +που χρειάστηκε να γίνουν οι ρίψεις των ζαριών ώστε να έχουν και τα δύο 1. +
+ + + +

Εκτύπωση πίνακα διαγώνια

+
+Υλοποιείστε ένα πίνακα που να έχει 10 θέσεις και να λαμβάνει 10 αριθμούς από του 1 μέχρι και το 10. Στην συνέχεια υλοποιείστε μια συνάρτηση η οποία θα μπορεί αν μεταφέρει όλα τα στοιχεία από αριστερά προς τα δεξιά, δλδ το πρώτο στοιεχέια να το μεταφέρι στην θέση του δεύτερου, το δεύτερο στην θέση του τρίτου κ.τ.λ. Επίσης το παρόν τελευταίο στοιχείο του πίνακα να μεταφέρετε πάντα στην πρώτη θέση του πινακά. Κάθε φορά που θα μετακινήτε τον πίνακα προς τα αριστερά να εκτυπώνετε τα στοιχεία του σε μία γραμμή. +Στο τέλος πρέπει να έχετε το ακόλουθο αποτέλεσμα: +
+ + +
+[10,1,2,3,4,5,6,7,8,9]
+[9,10,1,2,3,4,5,6,7,8]
+ . . . . . . .
+[2,3,4,5,6,7,8,9,10,1]
+[1,2,3,4,5,6,7,8,9,10]
+
+ + + +

Βιβλιογραφία

+ + +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/courses/tutorials/tutorial_3_A.md b/tutorials/tutorial_3_A-p.html similarity index 87% rename from courses/tutorials/tutorial_3_A.md rename to tutorials/tutorial_3_A-p.html index 623942b..9f540de 100644 --- a/courses/tutorials/tutorial_3_A.md +++ b/tutorials/tutorial_3_A-p.html @@ -1,3 +1,36 @@ + + + + + + + Έλεγχος Ροής και Επαναλήψεις + + + + + + + + + + + +
+
+
+ +
+
+

License

+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
+
+
+ + + + + + + diff --git a/tutorials/tutorial_3_A.html b/tutorials/tutorial_3_A.html new file mode 100644 index 0000000..d42a67e --- /dev/null +++ b/tutorials/tutorial_3_A.html @@ -0,0 +1,372 @@ + + + + + + + + Έλεγχος Ροής και Επαναλήψεις + + + + + + + + + + + + + + + + + + + + +

Programming II: Έλεγχος Ροής και Επαναλήψεις

+

+

Προγραμματισμός ΙΙ

+

Έλεγχος ροής προγράμματος

+ +

Συνθήκες

+
    +
  • Μια συνθήκη είναι μια λογική καλώς συντεταγμένη έκφραση η οποία μπορεί να εκτιμηθεί
    μονοσήμαντα είτε ως αληθής είτε ως ψευδής.
  • +
  • Με τη βοήθεια συνθηκών μπορούμε να ελένξουμε τη ροή ενός προγράμματος καθώς και
    να επαναλάβουμε ρουτίνες.
  • +
  • Φυσικά κάθε boolean μεταβλητή, από μόνη της, είναι μια συνθήκη.
  • +
  • Μπορούμε να δημιουργήσουμε συνθήκες απο μη boolean μεταβλητές με τη βοήθεια
    συγκριτικών τελεστών (παρακάτω).
  • +
  • Μπορούμε να παράγουμε σύνθετες συνθήκες από πιο απλές με τη βοήθεια των λογικών
    τελεστών (παρακάτω).
  • +
+

Συγκρισιακοί τελεστές.

+
    +
  • Οι "φυσικοί" συγκρισιακοί τελεστές στην Java είναι οι εξής:
  • +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
>μεγαλύτερο
>=μεγαλύτερο ή ίσο
<μικρότερο
<=μικρότερο ή ίσο
==ίσο
!=διάφορο
+
    +
  • Επίσης, μπορούν να φτιαχτούν από το χρήστη δικοί του συγκρισιακοί τελεστές
    ανάλογα με τις ανάγκες του.
  • +
+

Λογικοί τελεστές.

+
    +
  • Οι βασικοί λογικοί τελεστές && ("και"), || ("ή") και ! ("όχι/δεν") είναι χρήσιμοι
    για να κατασκευάσουμε σύνθετες συνθήκες από άλλες απλούστερες.
  • +
+

| boolean x | boolean y | x && y | x || y | | boolean x | !x |
|-----------|-----------|--------|--------| |-----------|-------|
| true | true | true | true | | true | false |
| true | false | false | true | | true | true |
| false | true | false | true |
| false | false | false | false |

+
    +
  • Παράδειγμα:
  • +
+
boolean x = true;
+int y = 4, z = 5;
+System.out.println(!x || ((y == z) || x));
+

if

+
    +
  • Με τη βοήθεια των "if" μπορούμε να εκτελέσουμε ένα κομμάτι κώδικα μόνο όταν
    ικανοποιείται μια συγκεκριμένη συνθήκη. Η δομή της "if" είναι η ακόλουθη:
  • +
+
if (συνθήκη) {
+    // σώμα κώδικα
+}
+

Παράδειγμα

+
int mark = 7;
+if (mark >= 5) {
+    System.out.println("Student didn't fail the exams");
+}
+

if/else

+
    +
  • Με το "if/else" μπορούμε να εκτελέσουμε ένα κομμάτι κώδικα μόνο όταν
    ικανοποιείται μια συγκεκριμένη συνθήκη αλλιώς θα εκτελεστει ενα διαφορετικό
    κομμάτι κώδικα. Η δομή της "if/else" είναι η ακόλουθη:

    +
    if (συνθήκη) {
    +    // σώμα κώδικα
    +} else {
    +    // άλλο σώμα κώδικα
    +}
  • +
+

Παράδειγμα

+
int mark = 7;
+if (mark >= 5) {
+    System.out.println("Student didn't fail the exams");
+} else {
+    System.out.println("Student failed the exams");
+}
+

if/elseif/else

+
    +
  • Με το "if/elseif/else" μπορούμε να αντιστοιχίσουμε συγκεκριμένες συνθήκες
    με συγκεκριμένα κομμάτια. Το κομμάτι κώδικα που θα εκτελεστεί θα είναι εκείνο του
    οποίου η αντίστοιχη συνθήκη θα ικανοποιηθεί πρώτα. Η δομή είναι η ακόλουθη:
  • +
+
if (συνθήκη) {
+    // σώμα κώδικα
+} else if (αλληΣυνθηκη) {
+    // άλλο σώμα κώδικα
+} else if (καιΑλληΣυνθηκη) {
+    // κι αλλο σώμα κώδικα
+} else {
+    // αν δεν ικανοποιηθεί καμια απο τις παραπανω συνθηκες σώμα κώδικα
+}
+

Παράδειγμα

+
int mark = 7;
+if (mark < 5) {
+    System.out.println("Student failed the exams");
+} else if (mark >= 5 && mark < 8) {
+    System.out.println("Student is good");
+} else { // equivalent with "else if (mark >= 8) {"
+    System.out.println("Student is excellent");
+}
+

Παρατηρήσεις

+
    +
  • Σε μια "if/elseif/else" μπορεί να ικανοποιούνται πολλές συνθήκες αλλα μονο ο
    κώδικας της πρώτης στη σειρά ικανοποιημένης συνθήκης θα εκτελεσθεί. Στο παράδειγμα
    μόνο το δεύτερο σώμα κώδικα θα εκτελεσθεί παρ'όλο που ικανοποιείται και η τρίτη
    συνθήκη.
  • +
+
int mark = 7;
+if (mark < 5) {
+    System.out.println("Student failed the exams");
+} else if (mark < 8) {
+    System.out.println("Student is good");
+} else if (mark <= 10) {
+    System.out.println("Student is excellent");
+}
+

switch

+
    +
  • Σε περιπτώσεις που οι συνθήκη που θα εξετασθεί είναι απλή και οι περιπτώσεις
    είναι πολλές αντί να χρησιμοποιηθεί "if/elseif/else", μπορεί να χρησιμοποιηθεί
    η "switch". Η δομή της "switch" είναι η ακόλουθη:
  • +
+
switch (variable) {
+    case value1:
+        // σωμα1
+        break;
+    case value2:
+        // σώμα 2
+        break;
+    default:
+        // σώμα 3
+}
+

όπου εξετάζεται σε κάθε case αν "variable == value'i'".

+

παράδειγμα

+
int numOfAngles = 3;
+
+switch (numOfAngles) {
+case 3:
+    System.out.println("triangle");
+    break;
+case 4:
+    System.out.println("rectangle");
+    break;
+case 5:
+    System.out.println("pentagon");
+    break;
+default:
+    System.out.println("Higher polygon");
+}
+

Παρατηρήσεις

+
    +
  • Αν παραληφθεί το "break" σε μια ικανοποιημένη "case" τότε θα τρέξει και τον κώδικα
    των επόμενων "case" μέχρι να βρει "break" ή να τελειώσει το switch. Στο προηγούμενο
    παράδειγμα αν αφαιρεθεί το "break" στην "case 3" τότε θα τρέξει και τον κώδικα της
    "case 4".
  • +
+

?:

+
    +
  • Σε περίπτωση που έχουμε μια σύντομη συνθήκη σε "if/else" με μικρό σώμα εντολών
    μπορούμε να χρησιμοποιήσουμε "?:" με την ακόλουθη δομή:
  • +
+
συνθήκη ? εντολή1 : εντολη2;
+

που σημαίνει ότι αν ικανοποιείται η συνθήκη το πρόγραμμα θα τρέξει την "εντολή1"
αλλιώς θα τρέξει την "εντολή2"

+

for

+
    +
  • Συχνά στον προγραμματισμό υπάρχει η ανάγκη να γίνει μια επναλαμβανόμενη
    διαδικασία πάνω σε ένα σύνολο στοιχείων που ικανοποιούν κάποια συνθήκη.
  • +
  • Η "for" επανάληψη είναι ένας από τους τρόπους, όπου η Java, δίνει τη δυνατότητα σε
    κάποιο χρήστη να χειρίζεται τέτοιες επαναλαμβανόμενες διαδικασίες. Η δομή της
    "for" επανάληψης είναι η ακόλουθη:
  • +
+
for (αρχικοποίηση; συνθήκη; μεταβολή) {
+    // κώδικας
+}
+

for(2)

+
    +
  • Η 'αρχικοποίηση' είναι μια δέσμη εντολών η οποία τρέχει μια φορά αμέσως πριν
    αρχίσει η επανάληψη. Συνήθως στην 'αρχικοποίηση' υπάρχει μόνο μια αρχικοποίηση
    κάποιου δείκτη.
  • +
  • Η 'συνθήκη' εξετάζεται αν ικανοποιείται πριν από κάθε κύκλο (iteration) στην
    επανάληψη σε μια 'for'. Όσο ικανοποιείται η 'συνθήκη' τότε ο κώδικας στο σώμα της
    'for' θα εκτελείται. Αν κάποια στιγμή η 'συνθήκη' δεν ικανοποιηθεί τότε το σώμα
    δε θα εκτελεσθεί και το πρόγραμμα θα συνεχίσει στην πρώτη εντολή μετά την 'for'.
  • +
+

Παράδειγμα

+
// Άρθροισμα στοιχείων ενός πίνακα για κάθε δεύτερο δείκτη του.
+public static int calculateSumOfEvenIndexes(int[] array) {
+    int sum = 0;
+    for (int i = 1; i < array.length; i += 2) {
+        sum += array[i]; // sum = sum + array[i];
+    }
+    return sum;
+}
+

while

+
    +
  • Ένας άλλος τρόπος για να χειριστεί κάποιος επαναλαμβανόμενες καταστάσεις στη
    java είναι με τη χρήση της 'while' επανάληψης. Η δομή της 'while' είναι η εξής:
  • +
+
while (συνθήκη) {
+    // κώδικας
+}
+
    +
  • Όπως και στη 'for' έτσι και στη 'while' η συνθήκη ελέγχεται πριν από κάθε
    κύκλο στην επανάληψη και όσο ικανοποιείται εκτελείται ο κώδικας στο σώμα της.
    Όταν σταματήσει να ικανοποιείται η συνθήκη για πρώτη φορά τότε το πρόγραμμα δεν
    εκτελει το σώμα της επανάληψης και μεταβαίνει στη πρώτη εντολή μετά από αυτήν.
  • +
+

Παράδειγμα

+
// Άρθροισμα στοιχείων ενός πίνακα για κάθε δεύτερο δείκτη του.
+public static int calculateSumOfEvenIndexes(int[] array) {
+    int sum = 0;
+    int index = 1;
+    while (index < array.length) {
+        sum += array[i];
+        index += 2;
+    }
+    return sum;
+}
+

Άσκηση

+
    +
  • Να εξηγήσετε γιατί η επανάληψη 'for' και η επανάληψη 'while' είναι ισοδύναμες,
    δηλαδή κάθε εργασία που μπορεί να γίνει με 'for' μπορεί να γίνει με 'while' και
    ανάποδα.
  • +
+

do...while

+
    +
  • Ένας ακόμη τρόπος για την υλοποίηση επαναλαμβανόμενων διαδικασιών ειναι μέσω
    της 'do...while'. Η δομή της 'do...while' είναι η εξής:
  • +
+
do {
+    // κώδικας
+} while (συνθήκη);
+
    +
  • Σε αντίθεση με την 'while', στη 'do...while' η συνθήκη εξετάζεται αφού
    εκτελεστεί ο κώδικας στο σώμα της. Αν ικανοποιήθει η συνθήκη τότε η επανάληψη
    συνεχίζει, αλλιώς σταματάει και συνεχίζει το πρόγραμμα απο την πρώτη εντολή μετά
    απο αυτή.
  • +
+

Άσκηση

+
    +
  • Να εξηγήσετε τις διαφορες 'while' με τη 'do...while'. Είναι ισοδύναμες;
  • +
+

Η ενισχυμένη for

+
    +
  • Συχνά θέλουμε να προσπελάσουμε όλα τα στοιχεία μιάς συλλογής όπως κάποιος
    πίνακας, ή κάποιο αντικείμενο της ArrayList κλάσης. Τότε η java προσφέρει ένα
    κομψό τρόπο χωρίς τον ρητό ορισμό δεκτών ή συνθηκών στο μήκος της συλλογής.
    Η δομή της ενισχυμένης 'for' είναι η εξής:
  • +
+
for (Τύπος μεταβλητή : συλλογή) {
+    // Κώδικας
+}
+

Παρατηρήσεις

+
    +
  • Η 'συλλογή' αναφέρεται σε σύλλογη αντικειμένων που θα προσπελαστεί όπως ένας πίνακας ή ένα object της ArrayList
  • +
  • Ο 'Τύπος' αναφέρεται στον τύπο των στοιχείων που βρίσκονται μέσα στη συλλογή.
  • +
  • Η 'μεταβλητή' αναφέρεται στο στοιχείο που προσπερνά εκείνη τη στιγμή η επανάληψη. Η προσπέλαση θα γίνει σε όλα τα στοιχεία με την σειρα που βρίσκονται στη συλλογη εκτος κι αν υπάρξει εντολή εξόδου (return, break) ή κάποιο σφάλμα.
  • +
  • Η ενισχυμένη 'for' είναι γνωστή και ως 'for-each' επανάληψη.
  • +
  • Μπορεί ο χρήστης να φτιάξει δικές του δομές δεδομένων που να μπορεί να τις προσπελάσει με την ενισχυμένη 'for' αρκεί να υλοποιήσει τη διεπαφή (interface) iterable.
    (Πληροφορίες https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html)
  • +
+

Η εντολή 'break'

+
+Σε κάποιες περιπτώσεις μπορεί να είναι απαραίτητο να διακοπεί η επανάληψη +πρόωρα. Η εντολή 'break' με το που διαβαστεί στο σώμα κάποιας έπανάληψης, +τερματίζει άμεσα αύτη την επανάληψη και συνεχίζει το πρόγραμμα απο την αμέσως +επόμενη εντολή. Αν η επανάληψη με την εντολή 'break 'ειναι εμφολευμένη σε άλλη +εξωτερική επανάληψη, τοτέ η δεύτερη επανάληψη δεν επιρρεάζεται από το 'break' +της πρώτης. +
+ + + +

Παράδειγμα

+
    public static findSpecificNumber(int[] array, int number) {
+        for (int i = 0; i < array.lenght; ++i) {
+            if (array[i] == number) {
+                System.out.println("Number found at position " + i);
+                break;
+            }
+        }
+    }
+

Η εντολή 'continue'

+
+Είναι πιθανό κάποιος από τους κύκλους της επανάληψης να είναι αδιάφορος είτε +να μη πρέπει να επεξεργαστεί. Σε αυτή τη περίπτωση μπορεί να χρησιμοποιήθει η +εντολή 'continue'. Με το που διαβαστεί αυτή η εντολή το πρόγραμμα δε διαβάζει το +υπόλοιπο σώμα της επανάληψης και ξεκινάει κατευθείαν τον επόμενο κύκλο. Όπως και +στην περίπτωση της 'break' η 'continue' επηρεάζει μόνο την άμεση επανάληψη στο +σώμα της οποίας βρίσκεται η εντολή. +
+ + + +

Παράδειγμα

+
// Εξετάζει αν ο πίνακας έχει θετικό άρτιο αριθμό.
+public static boolean arrayHasEvenPositiveNumber(int[] array) {
+    boolean outcome = false;
+    for (int number : array) {
+        if (number < 0 || number % 2 != 0) {
+            continue;
+        }
+        outcome = true;
+        break;
+    }
+    return outcome;
+}
+

Αναδρομή

+
    +
  • Αναδρομή, στον προγραμματισμό συγκεκριμένα, είναι η διαδικασία με την οποία
    μια συνάρτηση καλεί τον εαυτό της στο σώμα της. Η διαδικασία αυτή είναι συχνά
    χρήσιμη για την πραγματοποίηση επαναληπτικών ρουτινών. Για την αποφυγή ατέρμονων
    κλήσεων, ο χρήστης, όταν καταφεύγει στην αναδρομη, θα πρέπει να διασφαλίσει δύο
    πράγματα.

    +
      +
    • Kάθε επόμενη κλήση της συνάρτησης θα πρέπει να αντιμετωπίζει μικρότερο κομμάτι του προβλήματος από ότι η προηγούμενη κλήση.
    • +
    • Θα πρέπει να υπάρχει μια βασική διαχείριση απο τη συνάρτηση όταν το πρόβλημα γινει αρκετά μίκρό (τερματική συνθήκη).
    • +
  • +
+

Παράδειγμα

+
public static int binarySearch(int[] array, int key, int start, int end) {
+    if (start > end) {
+        return -1;
+    }
+    int middle = (end + start) / 2;
+    if (array[middle] == key) {
+        return middle;
+    } else if (array[middle] < key) {
+        return binarySearch(array, key, middle + 1, end);
+    } else {
+        return binarySearch(array, key, start, middle - 1);
+    }
+}
+

Παρατηρήσεις - Τα θετικά της αναδρομής

+
    +
  • Συχνά ο κώδικας με χρήση αναδρομής είναι πιο "συμπαγής" και κομψός από ότι με
    άλλους τρόπους επανάληψης.
  • +
  • Υπάρχουν κομψοί μη τετριμμένοι αλγοριθμοι όπου η αναδρομική προσέγγιση
    ενδείκνυται για τη μελέτη τους. Ένα παράδειγμα είναι οι αλγόριθμοι που
    ακολουθουν το αλγοριθμικό πρότυπο του "διαιρεί και βασίλευε".
  • +
+

Παρατηρήσεις - Τα αρνητικά της αναδρομής

+
    +
  • Στη java, σε αντίθεση με άλλες συναρτησιακές γλώσσες, η αναδρομή απο άποψη
    απόδοσης, δεν είναι βελτιστωποιημένη σε σχέση με άλλους τρόπους επανάληψης.
  • +
  • Η αναδρομή συχνά δυσκολεύει τους χρήστες στην κατανόηση της.
  • +
  • Η αναδρομή συχνά δυσκολεύει τους χρήστες στην εύρεση σφαλμάτων.
  • +
+

Άσκηση

+
    +
  • Προσπαθείστε να εξηγήσετε γιατί οποιαδήποτε επανάληψη με 'while' μπορεί να
    γραφεί μέσω αναδρομικής συνάρτησης και το ανάποδο.
  • +
+

Άσκηση

+
    +
  • Να γράψετε πρόγραμμα που να υπολογίζει τη σειρά Σ(1/n!) για 100 πρώτους όρους και ύστερα για 1000. Ποια τιμή προσεγγίζει
    η σειρά;
  • +
+

Άσκηση

+
    +
  • Να γράψετε boolean συνάτηση που να δέχεται τρεις αριθμούς και να επιστρέφει true
    αν και οι τρεις είναι ίσοι αλλιώς να επιστρέφει false.
  • +
+

Άσκηση

+
    +
  • Να γράψετε συνάρτηση που να δέχεται ακέραιο και να επιστρέφει πόσα ψηφία περιέχει
    που είναι είτε 3 είτε 7. Παράδειγμα ο 372 περιέχει 2 ψηφία 3 ή 7 ενώ ο αριθμός
    52 κανένα. Μπορείτε να τη γράψετε με αναδρομή;
  • +
+ +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/courses/tutorials/tutorial_3_B.md b/tutorials/tutorial_3_B-p.html similarity index 78% rename from courses/tutorials/tutorial_3_B.md rename to tutorials/tutorial_3_B-p.html index 6f6a1a7..0b26273 100644 --- a/courses/tutorials/tutorial_3_B.md +++ b/tutorials/tutorial_3_B-p.html @@ -1,3 +1,36 @@ + + + + + + + Εισαγωγή στα Αντικείμενα + + + + + + + + + + + +
+
+
+ +
+
+

License

+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
+
+
+ + + + + + + diff --git a/tutorials/tutorial_3_B.html b/tutorials/tutorial_3_B.html new file mode 100644 index 0000000..fca5919 --- /dev/null +++ b/tutorials/tutorial_3_B.html @@ -0,0 +1,166 @@ + + + + + + + + Εισαγωγή στα Αντικείμενα + + + + + + + + + + + + + + + + + + + + +

Programming II: Εισαγωγή στα Αντικείμενα

+

+

Προγραμματισμός ΙΙ

+

Κανόνες μορφοποιήσης

+ +

Αντικειμενοστραφής Προγραμματισμός

+
    +
  • Είναι τύπος προγραμματισμού βασισμένος σε αντικείμενα (objects) που μοντελοποιούν
    τα δεδομένα με βάση την εσωτερική τους κατάσταση (state) και με βάση τη συμπεριφορά
    τους (behaviour).
  • +
+
public class LightBulb {
+
+    private static int numOfObjects = 0;
+    private boolean light;
+
+    public LightBulb(boolean light) {
+        this.light = light;
+        numOfObjects+=1;
+    }
+
+    public boolean isLit() {
+        return light;
+    }
+
+    public void switchLight() {
+        light = !light;
+    }
+
+    public static int getNumOfObjects() {
+        return numOfObjects;
+    }
+}
+

Αντικειμενοστραφής Προγραμματισμός (2)

+
    +
  • Ένα αντικείμενο αποτελείται από κανένα ή περισσότερα πεδία/ιδιότητες που καθορίζουν την
    κατάστασή του και απο καμία ή περισσότερες μεθόδους που καθορίζουν τη συμπεριφορά
    του.
  • +
  • Κάθε αντικείμενο είναι στιγμιότυπο μιας κλάσης που καθορίζει και τον τύπο του.
  • +
  • Κάθε κλάση είναι ένα προσχέδιο (blueprint) ή πρότυπο (prototype) για τη
    δημιουργία αντικειμένων.
  • +
  • Ένα αντικειμενοστραφές πρόγραμμα αποτελεί μια συλλογή από αντικείμενα που
    αλληλεπιδρούν μεταξύ τους.
  • +
+

Κατασκευαστής

+
    +
  • Ο κατασκευαστής (constructor) είναι μια ειδική μέθοδος η οποία:
  • +
  • Έχει πάντα το ίδιο όνομα με την κλάση που βρίσκεται
  • +
  • Στη σύνταξή του δε δηλώνεται κάποιος τύπος επιστροφής ούτε void.
  • +
  • Μπορεί να δεχθεί ορίσματα.
  • +
  • Καλείται μέσω του τελεστή new είναι υπεύθυνος για τη δημιουργία κάποιου
    αντικειμένου προσδίδοντάς του ενδεχομένως και κάποιες τιμές στα πεδία του.
  • +
  • Ο κατασκευαστής είτε θα ορίστει από τον προγραμματιστή είτε θα χρησιμοποίηθει
    ένας εγγενής κατασκευαστής που δεν αρχικοποιεί κανένα πεδίο. Σε κάθε περίπτωση
    κάθε κλάση έχει (τουλάχιστον ένα) κατασκευαστή.
  • +
+

Διεύθυνση Αντικειμένων στη Μνήμη

+
    +
  • Η 'new' πέρα από το ότι καλεί τον κατασκευαστή μιας κλάσης φροντίζει επίσης τη
    δέσμευση αναγκαίας μνήμης για το αντικείμενο που θα δημιουργηθεί.
  • +
+

Παράδειγμα:

+
LightBulb lightBulb = new LightBulb(false);
+
    +
  • Η μεταβλητη του object (η lightBulb στο παράδειγμα) δεν περιέχει την πληροφορία της κατάστασής του
    αλλά έναν αριθμό (σε δεκαεξαδικό σύστημα) που είναι η διεύθυνση στη μνήμη που βρίσκεται το object. (Δοκιμάστε να κάνετε
    print ένα object).
  • +
+

Στατικά και μη στατικά πεδία και μέθοδοι.

+
    +
  • Ένα στατικό πεδίο σε μια κλάση είναι ένα κοινό πεδίο με συγκεκριμένη κατάσταση
    για όλα τα αντικείμενα που έχουν τύπο αυτή την κλάση. Με άλλα λόγια τα
    αντικείμενα μιας κλάσης μοιράζονται ένα αντίγραφο αυτού του πεδίου.
  • +
  • Μια στατική μέθοδος μπορεί να κληθεί χωρίς να δημιουργηθεί κάποιο
    αντικείμενο απαραιτητα. Μια τέτοια μέθοδος έχει πρόσβαση μόνο σε στατικά πεδία
  • +
  • Ένα μη στατικό πεδίο είναι ένα πεδίο όπου κάθε ξεχωριστό αντικείμενο εχει το
    δικό του αντίγραφο. Συνεπώς μια μεταβολή της κατάστασης του από ένα αντικείμενο
    δε θα επιρρεάσει το αντίστοιχο πεδίο σε κάποιο άλλο αντικείμενο (της ίδιας κλάσης).
  • +
  • Οι μη στατικές μέθοδοι μπορούν να κληθούν μόνο από στιγμιότυπα μιας κλάσης
    και έχουν πρόσβαση και σε στατικά και σε μη στατικά πεδία.
  • +
+

Προσδιοριστές Πρόσβασης

+
    +
  • Οι προσδιοριστές πρόσβασης χρησιμοποιούνται προθεματικά για να καθορίσουν την πρόσβαση σε
    μια μεταβλητή, μια μέθοδο ή μια κλάση απο κάποια άλλη πηγή. Οι προσδιοριστές στη java είναι οι εξής:

    +
      +
    • public: Κλάσεις, μέθοδοι ή πεδία είναι προσβάσιμα χωρίς κανένα περιορισμό.
    • +
    • protected: Κλάσεις, μέθοδοι ή πεδία είναι προσβάσιμα απο παραγώμενες κλάσεις
      (σε επόμενο μάθημα) και από κλάσεις του ίδιου πακέτου.
    • +
    • (default): Κλάσεις, μέθοδοι ή πεδία είναι προσβάσιμα μόνο από κλάσεις του ίδιου
      πακέτου.
    • +
    • private: Κλάσεις, μέθοδοι ή πεδία είναι προσβάσιμα μόνο από το εσωτερικό της ίδιας
      της κλάσεις που υπάρχουν.
    • +
  • +
+

O προσδιοριστής 'final'

+
    +
  • Μεταβλητές που χρησιμοποιούν προθεματικά το 'final' στον ορισμό τους, αν πάρουν κάποια τιμή
    τότε αυτή δεν μπορεί να αλλάξει (γίνεται σταθερά).
  • +
  • Μέθοδοι που χρησιμοποιούν προθεματικά το 'final' στον ορισμό τους δεν μπορούν
    να γίνουν override απο παραγώμενες κλάσεις (σε επόμενο μάθημα).
  • +
  • Κλάσεις που χρησιμοποιούν προθεματικά το 'final' στον ορισμό τους δεν μπορούν
    να επεκταθούν απο άλλες κλάσεις.
  • +
+

Παράδειγμα(1)

+
public class Test {
+
+    public static void main(String[] args) {
+        LightBulb objLightBulb1 = new LightBulb(true);
+        LightBulb objLightBulb2 = new LightBulb(true);
+
+        objLightBulb1.setState();
+
+        System.out.println(objLightBulb1);
+        System.out.println(objLightBulb2);
+    }
+}
+

Παράδειγμα(2)

+
public class Test {
+
+    public static void main(String[] args) {
+        LightBulb objLightBulb1 = new LightBulb(true);
+        Foo objLightBulb2 = objLightBulb1;
+
+        objLightBulb1.switchlight();
+
+        System.out.println(objLightBulb1);
+        System.out.println(objLightBulb2);
+    }
+}
+

Παράδειγμα(3)

+
public class Test {
+
+    public static void main(String[] args) {
+        LightBulb objLightBulb1 = new LightBulb(true);
+        LightBulb objLightBulb2 = new LightBulb(false);
+        System.out.println(LightBulb.getNumOfObjects());
+        System.out.println(objLightBulb1.getNumOfObjects());
+        System.out.println(objLightBulb1.isLit());
+
+        // System.out.println(LightBulb.isLit());
+        // System.out.println(lightBulb.light);
+    }
+}
+

Άσκηση

+
    +
  • Τι θα εκτυπωθεί στα δύο προηγούμενα κομμάτια κώδικα; Μπορείτε να αιτιολογησετε
    το αποτέλεσμα; Μπορούμε να χρησιμοποιήσουμε τον κώδικα που βρίσκεται στα σχόλια;
  • +
+

Καταστροφή Αντικειμένων

+
    +
  • Συχνά κατά τη διάρκεια εκτέλεσης ενός προγράμματος, δημιουργούνται αντικείμενα
    που χρησιμοποιούνται για να εκπληρώσουν ένα σκοπό και μόλις αυτό γίνει χάνουν
    τη χρησιμότητά τους και δεν ξαναχρησιμοποιούνται. Προκειμένου να απελευθερωθούν
    πόροι από τη μνήμη, στη java. υπάρχει μηχανισμός συλλογής σκουπιδιών (garbage
    collection) ο οποίος εντοπίζει αντικείμενα που δε θα χρησιμοποιηθούν στο μέλλον
    και τα σβήνει. Ο μηχανισμός αυτός είναι ο μοναδικός τρόπος για να γίνει κάτι
    τέτοιο. Με άλλα λόγια ένας χρήστης στη java δεν μπορεί ο ίδιος να σβήσει
    κάποιο αντικείμενο.
  • +
+ +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/courses/tutorials/tutorial_4_A.md b/tutorials/tutorial_4_A-p.html similarity index 74% rename from courses/tutorials/tutorial_4_A.md rename to tutorials/tutorial_4_A-p.html index 938cb72..4d0a6f4 100644 --- a/courses/tutorials/tutorial_4_A.md +++ b/tutorials/tutorial_4_A-p.html @@ -1,3 +1,36 @@ + + + + + + + Τύποι Πεδίων και Μεθόδων + + + + + + + + + + + +
+
+
+ +
+
+

License

+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
+
+
+ + + + + + + diff --git a/tutorials/tutorial_4_A.html b/tutorials/tutorial_4_A.html new file mode 100644 index 0000000..ab90ab2 --- /dev/null +++ b/tutorials/tutorial_4_A.html @@ -0,0 +1,243 @@ + + + + + + + + Τύποι Πεδίων και Μεθόδων + + + + + + + + + + + + + + + + + + + + +

Programming II: Τύποι Πεδίων και Μεθόδων

+

+

Προγραμματισμός ΙΙ

+

Τύποι Πεδίων και Μεθόδων

+ +
public class Car {
+    // κατάσταση αυτοκινήτου
+    public Color color; // χρώμα
+    private String licenseNumber; // αριθμός κυκλοφορίας
+    public int cc; // κυβισμός κινητήρα
+    private double speed; // ταχύτητα
+    public static int numberOfCars = 0; // αριθμός αυτοκινήτων
+
+    // κατασκευαστής χωρίς ορίσματα
+    public Car() {
+        numberOfCars++;
+    }
+
+    // κατασκευαστής με ορίσματα
+    public Car(Color color, String licenseNumber, int cc) {
+        this();
+        this.color = color;
+        this.licenseNumber = licenseNumber;
+        this.cc = cc;
+    }
+
+    // συμπεριφορά αυτοκινήτου
+    public void startEngine() {...} // εκκίνηση του κινητήρα
+    public void stopEngine() {...} // σβήσιμο του κινητήρα
+    public void turnLeft(int degrees) {...} // στροφή αριστερά
+    public void turnRight(int degrees) {...} // στροφή δεξιά
+    public void break() {...} // φρενάρισμα
+    public double getSpeed() {return speed;} // μέτρηση ταχύτητας
+    // στατική μέθοδος
+    public static int getNumberOfCars() {return numberOfCars;}
+}
+

Τύπου Πεδίων και Μεθόδων (1)

+
    +
  • Στιγμιοτύπου:

    +
      +
    • Κάθε στιγμιότυπο έχει το δικό του 'αντίγραφο' μεταβλητών.
    • +
    • Οι μέθοδοι μπορούν να εκτελεστούν ΜΟΝΟ σε ένα στιγμιότυπο μιας κλάσης (ένα αντικείμενο).
    • +
    • Για να προσπελαστούν οι μεταβλητές στιγμιοτύπου και να κληθούν οι μέθοδοι του στιγμιοτύπου πρέπει να έχει φτιαχτεί πρώτα ένα αντικείμενο!
    • +
  • +
+

Τύπου Πεδίων και Μεθόδων (2)

+
    +
  • static:

    +
      +
    • Οι μεταβλητές είναι μοιρασμένες ανάμεσα σε ΟΛΑ τα στιγμιότυπα μιας κλάσης, δηλαδή υπάρχει μόνο ένα 'αντίγραφό' τους.
    • +
    • Οι μέθοδοι μπορούν να χρησιμοποιηθούν χωρις να δημιουργηθεί ένα στιγμιότυπο της κλάσης και έχουν πρόσβαση ΜΟΝΟ σε στατικές μεταβλητές της κλάσης.
    • +
  • +
+

this

+
    +
  • Με τη λέξη-κλειδί this ένα αντικείμενο (το στιγμιότυπο μιας κλάσης) μπορεί να αναφερθεί στον ίδιο του τον εαυτό

    +
      +
    • Δηλαδή το this όταν χρησιμοποιείται σε μια μέθοδο υπόστασης είναι μια αναφορά (ένας δείκτης) στο ίδιο το αντικείμενο
    • +
    • Το this μπορεί να χρησιμοποιηθεί και κατά την κατασκευή ενός αντικειμένου (μέσα στις μεθόδους – constructors)
    • +
    • Χρησιμοποιείται για την αντιμετώπιση της ασάφειας όταν μια μέθοδος έχει παραμέτρους που έχουν ίδιο όνομα με κάποια μεταβλητή υπόστασης του αντικειμένου
    • +
  • +
  • Οι στατικές (static) μέθοδοι δε μπορούν να χρησιμοποιήσουν το this, αφού δεν αναφέρονται σε ένα συγκεκριμένο αντικείμενο

  • +
+

Παράδειγμα 1

+
public class Time {
+
+    private static final int HOURS_PER_DAY = 24;
+    private static final int MINUTES_PER_HOUR = 60;
+    private static final int SECONDS_PER_MINUTE = 60;
+
+    private int hour;
+    private int minute;
+    private int second;
+
+    public Time() {
+    }
+
+    public Time(int hour, int minute, int second) {
+        this.hour = hour;
+        this.minute = minute;
+        this.second = second;
+    }
+
+    public int getHour() {
+        return hour;
+    }
+
+    public void setHour(int h) {
+        hour = ((h >= 0 && h < HOURS_PER_DAY) ? h : 0);
+    }
+

Παράδειγμα 1 (Συνέχεια)

+
    public int getMinute() {
+        return minute;
+    }
+
+    public void setMinute(int m) {
+        minute = ((m >= 0 && m < MINUTES_PER_HOUR) ? m : 0);
+    }
+
+    public int getSecond() {
+        return second;
+    }
+
+    public void setSecond(int s) {
+        second = ((s >= 0 && s < SECONDS_PER_MINUTEd) ? s : 0);
+    }
+
+    public void setTime(int h, int m, int s) {
+        setHour(h);
+        setMinute(m);
+        setSecond(s);
+    }
+}
+

Παράδειγμα 1 (Συνέχεια)

+
public class TimeTest {
+    public static void main(String args[]) {
+        Time t1 = new Time();
+        Time t2 = new Time(12, 25, 42);
+        t2.setTime(3, 4, 8);
+        t1.setTime(0, 3, 15);
+        System.out.println(t2.getHour() + " " + t2.getMinute() + " " + t2.getSecond());
+        System.out.println(t1.getHour() + " " + t1.getMinute() + " " + t1.getSecond());
+    }
+}
+

Παράδειγμα 2

+
import java.util.Date;
+
+public class Employee {
+    private String firstName;
+    private String lastName;
+    private Date birthDate;
+    private Date hireDate;
+
+    public Employee(String fN, String lN, Date dateOfBirth, Date dateOfHire) {
+        firstName = fN;
+        lastName = lN;
+        birthDate = dateOfBirth;
+        hireDate = dateOfHire;
+    }
+
+    public String toString() {
+        return "Name of employee: " + firstName + ", "
+        + "Surname of employee: " + lastName + ", " + "Date of birth: "
+        + birthDate + ", " + "Date of hire: " + hireDate + ". ";
+
+    }
+}
+

Παράδειγμα 2 (Συνέχεια)

+
import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class EmployeeTest {
+    public static void main(String args[]) {
+        try {
+            Date birth = new SimpleDateFormat("MM/dd/yy").parse("05/12/95");
+            Date hire = new SimpleDateFormat("MM/dd/yy").parse("10/9/05");
+            Employee employee = new Employee("Tim", "Yellow", birth, hire);
+            System.out.println(employee.toString());
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+    }
+}
+

Παράδειγμα 2 (Συνέχεια)

+
import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class EmployeeTest {
+    public static void main(String args[]) {
+        try {
+            Date birth = new SimpleDateFormat("MM/dd/yy").parse("05/12/95");
+            Date hire = new SimpleDateFormat("MM/dd/yy").parse("10/9/05");
+            Employee employee = new Employee("Tim", "Yellow", birth, hire);
+            System.out.println(employee.toString());
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+    }
+}
+

Singleton

+
    +
  • Ένα singleton είναι μια κλάση η οποία αρχικοποιείται μια μόνο φορά.
  • +
  • Το σχεδιαστικό πρότυπο (design pattern) singleton επιτρέπει τον ελεγχόμενο ορισμό ενός μοναδικού αντικειμένου μιας κλάσης.
  • +
  • Τα singletons μπορεί να αναφέρονται σε κάποιο τμήμα ενός συστήματος που είναι μοναδικό, π.χ. ένα σύστημα αρχείων.
  • +
+

Παράδειγμα 3

+
public class FileSystem {
+    private static final FileSystem INSTANCE = new FileSystem();
+
+    private FileSystem() {
+    // empty
+    }
+
+    public static FileSystem getInstance() {
+        return INSTANCE;
+    }
+}
+

Βιβλιογραφία

+
    +
  • Harvey M. Deitel και Paul J. Deitel. Java Προγραμματισμός, 6η έκδοση. Εκδόσεις Μ. Γκιούρδας, Αθήνα 2005. Κεφάλαια 5,8.
  • +
  • Joshua Bloch. Effective Java, pages 10–12. Addison-Wesley, Reading, MA, 2001.
  • +
+ +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/courses/tutorials/tutorial_4_B.md b/tutorials/tutorial_4_B-p.html similarity index 79% rename from courses/tutorials/tutorial_4_B.md rename to tutorials/tutorial_4_B-p.html index 580d6a9..2931f78 100644 --- a/courses/tutorials/tutorial_4_B.md +++ b/tutorials/tutorial_4_B-p.html @@ -1,3 +1,36 @@ + + + + + + + Κληρονομικότητα, Αφηρημένες Κλάσεις και Διεπαφές + + + + + + + + + + + +
+
+
+ +
+
+

License

+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
+
+
+ + + + + + + diff --git a/tutorials/tutorial_4_B.html b/tutorials/tutorial_4_B.html new file mode 100644 index 0000000..c3933d6 --- /dev/null +++ b/tutorials/tutorial_4_B.html @@ -0,0 +1,265 @@ + + + + + + + + Κληρονομικότητα, Αφηρημένες Κλάσεις και Διεπαφές + + + + + + + + + + + + + + + + + + + + +

Programming II: Κληρονομικότητα, Αφηρημένες Κλάσεις και Διεπαφές

+

+

Προγραμματισμός ΙΙ

+

Κληρονομικότητα, Αφηρημένες κλάσεις, Διεπαφές

+ +

Κληρονομικότητα

+
    +
  • Κληρονομικότητα στον αντικειμενοστραφή προγραμματισμό είναι η δυνατότητα να
    παραχθούν ειδικότερες κλάσεις από γενικότερες.
  • +
  • Οι ειδικότερες κλάσεις ονομάζονται και υποκλάσεις των γενικότερων και
    αντίστροφα οι γενικότερες κλάσεις ονομάζονται υπερκλάσεις των ειδικότερων.
  • +
  • Ένα αντικείμενο μιας υποκλάσης είναι και αντικείμενο της (κάθε) υπερκλάσης.
  • +
  • Στη java κάθε κλάση μπορεί να κληρομήσει άμεσα μόνο μία υπερκλάση
    χρησιμοποιώντας τη δεσμευμένη λέξη extends.
  • +
+
class SubClass extends SuperClass {...}
+
    +
  • Όλες οι κλάσεις στη java κληρονομούν την κλάση Object ακόμα και όταν αυτό δε
    γίνεται ρητά μέσω της εντολής extends.
  • +
+

Παράδειγμα

+
class Triangle {
+
+    public String whoIAm() { return "I am a triangle"; }
+}
+
+class EquilateralTriangle extends Triangle {
+
+    public String whoIReallyAm() { return "I am equilateral"; }
+}
+
public class Test {
+    EquilateralTriangle equilateral = new EquilateralTriangle();
+    System.out.println(equilateral.whoIAm())
+    System.out.println(equilateral.whoIReallyAm());
+}
+

Override

+
    +
  • Μια κλάση μπορεί να αλλάξει τη συμπεριφορά μιας μεθόδου που αλλιώς θα
    κληρονομούσε απο υπερκλάση της, ορίζοντάς την με το ίδιο όνομα, τα ίδια ορίσματα,
    τον ίδιο τύπο και το σώμα που επιθυμεί ο χρήστης. (Αρκεί να μην έχει χαρακτηριστεί
    ως final).
  • +
  • Όταν μια μέθοδος γίνεται Override ο χρήστης μπορεί να προσθέσει πάνω από τον
    ορισμό της μεθόδου το annotation . Αυτό γίνεται για να:

    +
      +
    • κανει ξεκάθαρο στους χρήστες ότι η μέθοδος γίνεται override.
    • +
    • ο μεταγλωτιστής θα αναγνωρίσει κάποιο σφάλμα οπώς για παράδειγμα να μην
      υπάρχει αυτή η μέθοδος στην υπερκλάση.
    • +
  • +
+

Παράδειγμα

+
class Triangle {
+
+    public String whoIAm() { return "I am a triangle"; }
+}
+
+class EquilateralTriangle extends Triangle {
+
+    @Overrride
+    public String whοΙAm() { return "I am an equilateral triangle"; }
+}
+

super

+
    +
  • Σε μια κλάση η δεσμευμένη λέξη super είναι αντίστοιχη της δεσμευμένης λέξης
    this με τη διαφορά ότι το αντικείμενο αναφέρεται στον εαυτό του ως αντικείμενο
    της άμεσης υπερκλάσης.
  • +
  • Το super χρησιμοποιείται για να κληθεί κάποια μέθοδος της υπερκλάσης που έχει
    γίνει override από την υποκλάση, ή κάποιο πεδίο που δεν είναι private.
  • +
  • Το super(ορίσμα) χρησιμοποιείται για να καλέσει τον κατασκευαστή της άμεσης
    υπερκλάσης.
  • +
  • Σε κάθε κατασκευαστή πρέπει να καλείται ο κατασκευαστής της άμεσης υπερκλάσης
    στην πρώτη γραμμή του σώματός του. Αν δεν γραφτεί κάτι ρητά τοτε και πάλι καλείται
    ο κατασκευαστής της υπερκλάσης στη πρώτη γραμμή ουσιαστικά χωρίς κάποιο όρισμα.
  • +
+

Παράδειγμα

+
class Triangle {
+
+    public String whoIAm() { return "I am a triangle"; }
+}
+
+class EquilateralTriangle extends Triangle {
+
+    @Override
+    public String whοΙAm() {
+        return super.whoIAm() + " and an equilateral one too";
+    }
+}
+

Παράδειγμα(2)

+
class Triangle {
+
+    private int base;
+    private int height;
+
+    public Triangle(int base, int height) {
+        // super();   <-- Εννοείται
+        this.base = base;
+        this.height = height;
+    }
+}
+
+class EquilateralTriangle extends Triangle {
+
+    public EquilateralTriangle(int base, int height) {
+        super(base, height);  // Εδω η κλήση της super είναι απαραίτητη
+    }
+}
+

Αφηρημένες κλάσεις

+
    +
  • Όταν μια συλλογή από κλάσεις έχουν κάποια κοινά πεδία ή/και κάποια κοινή
    συμπεριφορά τότε αυτά τα κοινά στοιχεία μπορούν να εγκολαποτούν σε μια υπερκλάση.
    Αν αυτή η υπερκλάση είναι υπερβολικά γενική ή τα αντικείμενά της από το
    προγραμμά δεν είναι χρήσιμα, τότε είναι καλή πράκτική να την κάνουμε αφηρημένη.
  • +
  • Μια αφηρημένη κλάση έχει τη δεσμευμένη λέξη abstract στον ορισμό της.
  • +
  • Παρ' όλο που δεν μπορεί να αρχικοποιηθεί, διαθέτει κατασκευαστή.
  • +
  • Στις αφηρημένες κλάσεις μπορούν να ορισθούν αφηρημένες μέθοδοι.
  • +
  • Οι αφηρημένες κλάσεις έχουν όμοιες συμβάσεις για τη γραφή του ονόματός τους με
    τις συνήθεις κλάσεις.
  • +
+

Αφηρημένες μέθοδοι

+
    +
  • Σε αφηρημένες κλάσεις δίνεται η δυνατότητα να οριστούν αφηρημένες μέθοδοι.
  • +
  • Μια αφηρημένη μέθοδος είναι μια μέθοδος που τη δεσμευμένη λέξη 'abstract' στον
    όρισμό της.
  • +
  • Είναι χρήσιμες στο να επιβάλει μια αφηρημένη κλάση μια γενική συμπεριφορά στις
    υποκλάσεις της, δίνοντας όμως στις τελευταιες τη δυνατότητα να ορίσουν τις
    λεπτομέριές της (το σώμα της).
  • +
  • Αν σε μια αφηρημένη κλάση ορισθεί μια αφηρημένη μέθοδος, τότε κάθε υποκλάση της
    είναι υποχρεωμένη να την ορίσει λεπτομερώς.
  • +
+

Παράδειγμα

+
abstract class Shape {
+
+    private int numberOfVertices;
+
+    public Shape(int numberOfVertices) {
+        this.numberOfVertices = numberOfVertices;
+    }
+
+    public int getNumberOfVertices() {
+        return numberOfVertices;
+    }
+
+    public abstract double area();
+}
+

Παράδειγμα(συνέχεια)

+
class triangle extends Shape {
+
+    private int base;
+    private int height;
+
+    public Triangle(int base, int height) {
+        super(3)
+        this.base = base;
+        this.height = height;
+    }
+
+    @Override
+    public double area() {
+        return (base*height) / 2.0;
+    }
+}
+

Παράδειγμα(συνέχεια)

+
class square extends Shape {
+
+    private int edge;
+
+    public Square(int edge) {
+        super(4);
+        this.edge = edge;
+    }
+
+    @Override
+    public double area() {
+        return edge*edge;
+    }
+}
+

Διεπαφές

+
    +
  • Ομοιότητες με αφηρημένες κλάσεις

    +
      +
    • Καθορίζουν μέρος της συμπεριφοράς των κλάσεων που τις υλοποιούν.
    • +
    • Μπορούν να ορισθούν αφηρημένες μεθόδοι χωρίς όμως την ανάγκη της
      δεσμευμένης λέξης 'abstract'. Αντίθετα μέθοδοι με σώμα μπορούν να ορισθούν
      (από το jdk1.8 και μετά) με τη δεσμευμένη λέξη 'default' στον ορισμό.
    • +
    • Κάθε αντικείμενο που υλοποιεί μια διεπαφή αποκτά και τον τύπο που ορίζει
      το όνομά της.
    • +
  • +
+

Διεπαφές(2)

+
    +
  • Διαφορές με αφηρημένες κλάσεις:

    +
      +
    • Οι διεπαφές υλοποιούνται με τη δεσμευμένη λέξη 'implements' από τις
      κλάσεις.
    • +
    • Μια κλάση μπορεί να υλοποιήσει παραπάνω από μια διεπαφές.
    • +
    • Μια διεπαφή μπορεί να έχει μονο final static πεδιά (σταθερές). Συνεπώς μια
      διεπαφή δεν επηρεάζει τη κατάσταση του αντικειμένου που την υλοποιεί αλλά
      μόνο τη συμπεριφορά.
    • +
    • Δεν έχουν κατασκευαστές.
    • +
    • Στα ονόματα των διεπαφών η σύμβαση έιναι να χρησιμοποιείται συνήθως επίθετο
      αντί για ουσιαστικό σε μορφή CamelCase.
    • +
  • +
+

Παράδειγμα

+
abstract class Shape {
+
+    private int numberOfVertices;
+
+    public Shape(int numberOfVertices) {
+        this.numberOfVertices = numberOfVertices;
+    }
+
+    public int getNumberOfVertices() {
+        return numberOfVertices;
+    }
+}
+

Παράδειγμα(συνέχεια)

+
interface CalculableArea() {
+
+    double area();
+}
+

Παράδειγμα(συνέχεια)

+
class Triangle extends Shape implements CalculableArea {
+
+    private int base;
+    private int height;
+
+    public Triangle(int base, int height) {
+        super(3)
+        this.base = base;
+        this.height = height;
+    }
+
+    @Override
+    public double area() {
+        return (base*height) / 2.0;
+    }
+}
+

Παράδειγμα(συνέχεια)

+
class House implements CalculableArea {
+
+    private int area;
+
+    public House(int area) {
+        this.area = area;
+    }
+
+    @Override
+    public double area() {
+        return area;
+    }
+}
+ +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/courses/tutorials/tutorial_5_A.md b/tutorials/tutorial_5_A-p.html similarity index 69% rename from courses/tutorials/tutorial_5_A.md rename to tutorials/tutorial_5_A-p.html index d3d8ce7..1a20029 100644 --- a/courses/tutorials/tutorial_5_A.md +++ b/tutorials/tutorial_5_A-p.html @@ -1,3 +1,36 @@ + + + + + + + Πολυμορφισμός + + + + + + + + + + + +
+
+
+ +
+
+

License

+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
+
+
+ + + + + + + diff --git a/tutorials/tutorial_5_A.html b/tutorials/tutorial_5_A.html new file mode 100644 index 0000000..77ed3e9 --- /dev/null +++ b/tutorials/tutorial_5_A.html @@ -0,0 +1,168 @@ + + + + + + + + Πολυμορφισμός + + + + + + + + + + + + + + + + + + + + +

Programming II: Πολυμορφισμός

+

+

Προγραμματισμός ΙΙ

+

Πολυμορφισμός

+ +

Πολυμορφισμός

+
    +
  • Είναι η ικανότητα να χρησιμοποιήσουμε μια λειτουργία με
    διαφορετικό τύπο, ορίσματα ή παραμέτρους. Υπάρχουν τρία ήδη πολυμορφισμού στη
    java.

    +
      +
    • Ο στατικός, γνωστός και ως υπερφόρτωση (overloading).
    • +
    • Ο δυναμικός.
    • +
    • Ο παραμετρικός γνωστός και μέσω της χρήσης γενικευμένων τύπων (generic
      types)
      .
    • +
  • +
+

Στατικός πολυμορφισμός και Υπερφόρτωση

+
    +
  • Η υπερφόρτωση είναι η δυνατότητα χρήσης μιας μεθόδου με το όνομά της αλλά με
    διαφορετικούς τύπους ορισμάτων.
  • +
  • Θα προκύψει σφάλμα αν δυο υλοποιήσεις έχουν τον ίδιο αριθμό ορισμάτων
    με τον ίδιο τύπο ανεξάρτητα:

    +
      +
    • από τον τύπο που επιστρέφει
    • +
    • το όνομα των ορισμάτων
    • +
  • +
  • Μπορεί να προκύψει σφάλμα ακόμα και όταν υπάρχουν ίδια ορίσματα με διαφορετική
    σειρά.

  • +
+

Παράδειγμα

+
public class Example {
+
+    public int add(int number1, int number2) {...}
+    public double add(double number1, int number) {...}
+    public int add(int number1, int number2, int number3) {...}
+    // public double add(int number1, double number2) {...}
+    // public double add(int number1, int number2) {...}
+    // public int add(int x, int y) {...}
+}
+

Δυναμικός πολυμορφισμός

+
    +
  • Κάθε αντικείμενο μιας κλάσης που την υλοποιεί έχει τον τύπο της, οπως επίσης
    και τον τύπο κάθε υπερκλάσης της και κάθε διεπαφής που υλοποιεί.
  • +
  • Αυτό είναι χρήσιμο ώστε να μπορούμε να φτιάξουμε ποιο αφηρημένα ορίσματα για μεθόδους
    ή γενικότερες συλλογές/δομές απο στοιχεία.
  • +
  • Μπορούμε επίσης να ορίσουμε ένα αντικείμενο τύπου υποκλάσης και αναφορά σε
    υπερκλάση ή διεπαφή. Το αντικείμενο θα έχει τη συμπεριφορά της υπερκλάσης/διεπαφής
    αφου έχουν γίνει τα overrides που ορίζει η υποκλάση.

    +
    Parent child = new Child();
  • +
+

Παράδειγμα

+
interface CalculableArea {
+    public double area(double base, double height);
+}
+
+public class Triange implements CalculableArea {
+    @ Override
+    public double area(double base, double height) {return base*height/2;}
+}
+
+public class Square implements CalculableArea {
+    @ Override
+    public double area(double base, double height) {return base*height;}
+}
+

Παράδειγμα(συνέχεια)

+
public class Test {
+    public static double findArea(CalculableArea shape, double base, double height) {
+        return shape.area(base, height);
+    }
+
+    public static void main(String[] args) {
+        Triangle triangle = new Triangle();
+        Square square = new Square();
+        double base = 2.0;
+        double height = 2.0;
+
+        System.out.println(findArea(triangle, base, height));
+        System.out.println(findArea(square, base, height));
+    }
+}
+

Παράδειγμα2

+
class Parent {
+    public void whoAmI() {
+        System.out.println("I am parent");
+    }
+}
+
+class Child extends Parent{
+    @Override
+    public void whoAmI() {
+        System.out.println("I am child ");
+    }
+
+    public void also() {
+        System.out.println("and only a child");
+    }
+}
+

Παράδειγμα2(συνέχεια)

+
public class Test {
+    public static void main(String[] args) {
+        Parent parent = new Parent();
+        Child child = new Child();
+        Parent child2 = new Child();
+
+        System.out.println(parent.whoAmI());
+        System.out.println(child.whoAmI() + child.also());
+        System.out.println(child2.whoAmI());
+        // System.out.println(child2.also());
+    }
+}
+

Παραμετρικός Πολυμορφισμός και Γενικευμένοι Τύποι

+
    +
  • Ένας γενικευμένος τύπος (generic type) είναι μια γενικευμένη κλάση ή διεπαφή
    η οποία μπορεί να παραμετροποιηθεί μέσω τύπων.
  • +
  • Ένας γενικευμένος τύπος επιτρέπει την επαναχρησιμοποιήσει κώδικα με
    διαφορετικά αντικείμενα ως παράμετρο.
  • +
  • Δεν χρειάζεται type casting.
  • +
+

Ορισμός γενικευμένων τύπων

+
class ΟνομαΚλασης<Τυπος1,... ,ΤυποςΝ> {...}
+
interface ΟνομαΔιεπαφης<Τυπος1,... ,ΤυποςΝ> {...}
+

Παράδειγμα

+
class Summarizer<T> {
+    public T add(T num1, T num 2) {return num1 + num2;}
+}
+

Αρχικοποίηση γενικευμένων τύπων

+
ΟνομαΚλάσης<Τυπος1,... , ΤυποςΝ> αντικείμενο = new ΟνομαΚλασης<>();
+
    +
  • Παρατήρηση: Πριν τη java7 έπρεπε να επαναλάβουμε τους τύπους και στα δεύτερα
    '<>'.
  • +
+

Παράδειγμα

+
public class Test {
+    public static void main(String[] args) {
+        Summarizer<Integer> sum1 = new Summarizer<>();
+        Summarizer<String> sum2 = new Summarizer<>();
+
+        System.out.println(sum1.add(3, 5));
+        System.out.println(sum2.add("foo", "bar"))
+    }
+}
+ +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/courses/tutorials/tutorial_5_B.md b/tutorials/tutorial_5_B-p.html similarity index 76% rename from courses/tutorials/tutorial_5_B.md rename to tutorials/tutorial_5_B-p.html index 1a2f28a..1ca2846 100644 --- a/courses/tutorials/tutorial_5_B.md +++ b/tutorials/tutorial_5_B-p.html @@ -1,3 +1,36 @@ + + + + + + + Εξαιρέσεις και Ισχυρισμοί + + + + + + + + + + + +
+
+
+ +
+
+

License

+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
+
+
+ + + + + + + diff --git a/tutorials/tutorial_5_B.html b/tutorials/tutorial_5_B.html new file mode 100644 index 0000000..5047f1b --- /dev/null +++ b/tutorials/tutorial_5_B.html @@ -0,0 +1,252 @@ + + + + + + + + Εξαιρέσεις και Ισχυρισμοί + + + + + + + + + + + + + + + + + + + + +

Programming II: Εξαιρέσεις και Ισχυρισμοί

+

+

Προγραμματισμός ΙΙ

+

Εξαιρέσεις και Ισχυρισμοί

+ +

Εξαιρέσεις

+
    +
  • Μία εξάιρεση είναι ένα γεγονός που παρακάμπτει την κανονική εκτέλεση ενός προγράμματος.
  • +
  • Δίνει την δυνατότητα να χειριστούμε γεγονότα όταν γίνει κάτι το ασυνήθιστο.
  • +
  • Αποφεύγουμε την δημιουργεία περίπλοκου κώδικα στον χειρισμό πιθανού σφάλματος.
  • +
  • Δίνει δυναντότητα μετάδοσεις σφάλματος στο ίχνος στοίβας (stack trace).
  • +
+

Παράδειγμα ψευδοκώδικα

+
    +
  • Λάθη?
  • +
+
readFile {
+    open the file;
+    determine its size;
+    allocate that much memory;
+    read the file into memory;
+    close the file;
+}
+

Χειρισμός ψευδοκώδικα

+
errorCodeType readFile {
+    initialize errorCode = 0;
+    
+    open the file;
+    if (theFileIsOpen) {
+        determine the length of the file;
+        if (gotTheFileLength) {
+            allocate that much memory;
+            if (gotEnoughMemory) {
+                read the file into memory;
+                if (readFailed) {
+                    errorCode = -1;
+                }
+            } else {
+                errorCode = -2;
+            }
+        } else {
+            errorCode = -3;
+        }
+        close the file;
+        if (theFileDidntClose && errorCode == 0) {
+            errorCode = -4;
+        } else {
+            errorCode = errorCode and -4;
+        }
+    } else {
+        errorCode = -5;
+    }
+    return errorCode;
+}
+

Σωστός χειρισμός ψευδοκώδικα

+
readFile {
+    try {
+        open the file;
+        determine its size;
+        allocate that much memory;
+        read the file into memory;
+        close the file;
+    } catch (fileOpenFailed) {
+       doSomething;
+    } catch (sizeDeterminationFailed) {
+        doSomething;
+    } catch (memoryAllocationFailed) {
+        doSomething;
+    } catch (readFailed) {
+        doSomething;
+    } catch (fileCloseFailed) {
+        doSomething;
+    }
+

Χηρισμός εξαιρέσεων

+
    +
  • Μπορέι να γίνει χρησιμοποιώντας το try-catch.
  • +
+
try {
+    some code here
+} catch and finally blocks …
+

throws

+
    +
  • Μπορούμε να ορίσουμε την πιθανότητα να προκήψη μία εξαίρεση στην υπογραφή μίας μεθόδου.
  • +
+
public void writeList() throws IOException, IndexOutOfBoundsException {...}
+

throw new

+
    +
  • Μπορούμε να ορίσουμε την πιθανότητα δημιουργίας μίας εξαίρεσης μέσο της throw new λέξης.
  • +
  • Επίσης, θα πρέπει αν ορίσουμε στην υπογραφή της μεθόδου την λέξη throws με το όνομα της εξαίρεσης.
  • +
+

+public void checkAmout(int amount) throws NegativeAmoutException {
+    if (amount < 0) {
+        throw new NegativeAmountException();
+    }
+}
+

Τύποι εξαιρέσεων

+

+

Παραδείγμα Checked Exception

+
import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+
+public  class testClass {
+
+    public static void main(String args[])  {       
+          File file = new File("E://file.txt");
+          try {
+            FileReader fr = new FileReader(file);
+        } catch (FileNotFoundException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        } 
+       }
+}
+

Παράδειγμα Unchecked Exception

+
    import java.io.*;
+    
+    public class ExcepTest {
+        public static void main(String[] args) {
+            int a[] = new int[2];
+            try {
+                System.out.println("Access elements three:" + a[3]);
+            } catch(ArrayIndexOutOfBoundsException e) {
+                System.out.println("Exception thrown :" +e);
+            }
+            System.out.println("Out of the block");
+        }
+    }
+

Χρήση της finally

+
public class ExcepTest {
+
+   public static void main(String args[]) {
+      int a[] = new int[2];
+      try {
+         System.out.println("Access element three :" + a[3]);
+      } catch(ArrayIndexOutOfBoundsException e) {
+         System.out.println("Exception thrown  :" + e);
+      } finally {
+         a[0] = 6;
+         System.out.println("First element value: " + a[0]);
+         System.out.println("The finally statement is executed");
+      }
+   }
+}
+

Ίχνη Στοίβας

+
    +
  • Τα ίχνη στοίβας περιέχουν αποτελέσματα σφαλμάτων μίας εφαρμογής
    όπου προσφέρουν στοιχεία για τα αίτια του σφάλματος.
  • +
  • Η χρήση της μεθόδου printStackTrace() δίνει το δέντρο της
    στοίβας αν κάποια μέθοδος έχει αποτύχη.
  • +
+

Παράδειγμα για Ίχνη Στοίβας

+
Exception in thread "main" java.lang.NullPointerException: Fictitious NullPointerException
+at StackTraceExample.method111(StackTraceExample.java:15)
+at StackTraceExample.method11(StackTraceExample.java:11)
+at StackTraceExample.method1(StackTraceExample.java:7)
+at StackTraceExample.main(StackTraceExample.java:3)
+

Δημιουργεία εξαιρέσεων

+
    +
  • Μπορούμε να δημιουργήσουμε τις δικές μας εξαιρέσεις επεκτείνοντας τις κλάσεις π.χ. Exception, RuntimeException
  • +
+

Ισχυρισμοί (1)

+
    +
  • Χρησιμοποιείτε για έβρεση λαθών μέσα στον κώδικα.
  • +
  • Χρησιμοποιεί μια έκφραση boolean, αν αυτή επιστρέψει λάθος τότε προσδιορίζει την ένδειξη σφάλματος στο κώδικα
    με την εκτύπωση κάποιου μηνύματος.
  • +
  • Για χρήση του assertion πρέπει να εκτελέσετε ώς έχει: java -ea|-enableassertion executable
  • +
  • Επιτρέπει την τεκμηρίωση του κώδικα και τον τρόπο λειτουργίας του.
  • +
+

Ισχυρισμοί (2)

+
    +
  • Επιτρέπει την κατανοώηση του προγράμματος μας για άλλα άτομα.
  • +
  • Βοηθούν στην εύκολη αποσφαλμάτωση του κώδικα.
  • +
  • Οι ισχυρισμοί δεν έιναι για τους χρήστες ενός προγράμματος αλλά για του μηχανικούς λογισμικού.
  • +
  • Οταν εντοπιστεί σφάλμα ισχυρισμού συνήθως πρέπει να σταματά η λειτουργία ενός προγράμματος.
  • +
+

Διαφορές Ισχυρισμών με Εξαιρέσεις

+
    +
  • Με τους ισχυρισμούς ελέγχουμε περιπτώσεις που δεν πρέπει ποτέ να συμβούν ενώ με τις εξαιρέσεις
    κάτι που μπορεί να συμβεί.
  • +
  • Ο ισχυρισμός σταματάει την εκτέλεση του προγράμματος ενώ η εξαίρεση επιτρέπει την συνέχεια αν μπορεί
    να διορθωθεί το συγκεκριμένο σφάλμα.
  • +
+

Παράδειγμα (1)

+
BankAccount acct = null;
+
+// ...
+// Get a BankAccount object
+// ...
+
+// Check to ensure we have one
+              assert acct != null : "Object Null";
+

Παράδειγμα (2)

+
import java.io.*;
+
+public class AssertionTest3 {
+
+   public static void main(String argv[]) throws IOException {
+      System.out.print("Enter your marital status: ");
+      int c = System.in.read();
+      switch ((char) c) {
+         case 's':
+         case 'S': System.out.println("Single"); break;
+         case 'm':
+         case 'M': System.out.println("Married"); break;
+         case 'd':
+         case 'D': System.out.println("Divorced"); break;
+         default: assert !true : "Invalid Option"; break;
+      }
+
+   }
+}
+

Παράδειγμα (3)

+
    [sgeorgiou@aiolos]$ java -ea AssertionTest3 
+    Enter your marital status: n
+    Exception in thread "main" java.lang.AssertionError: Invalid Option
+        at AssertionTest3.main(AssertionTest3.java:15)
+ +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/tutorials/tutorial_6_A-p.html b/tutorials/tutorial_6_A-p.html new file mode 100644 index 0000000..b6b2019 --- /dev/null +++ b/tutorials/tutorial_6_A-p.html @@ -0,0 +1,141 @@ + + + + + + + Πλατφόρμα Eclipse + + + + + + + + + + + +
+
+
+ +
+
+

License

+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
+
+
+ + + + + + + diff --git a/tutorials/tutorial_6_A.html b/tutorials/tutorial_6_A.html new file mode 100644 index 0000000..3cf5630 --- /dev/null +++ b/tutorials/tutorial_6_A.html @@ -0,0 +1,76 @@ + + + + + + + + Πλατφόρμα Eclipse + + + + + + + + + + + + + + + + + + + + +

Programming II: Πλατφόρμα Eclipse

+

+

Προγραμματισμός ΙΙ

+

Πλατφόρμα Eclipse

+ +

Eclipse, checkstyle and Find Bugs

+



+

Επιλογή του Workspace

+

+ +

Δημιουργία νέου έργου

+

+

Ονομασία νέου έργου

+

+

Δημιουργία νέας κλάσης

+

+

Μεταγλώττιση και εκτέλεση

+

+

Εγκατάσταση plug-ins για Eclipse

+
    +
  • Help - >Install New Software*
  • +
  • Στην καρτέλα Install πατάμε Αdd
  • +
  • Στην επόμενη καρτέλα προσθέτουμε το όνομα του plug-in και το URL που βρίσκεται (π.χ. FindBugs, http://findbugs.cs.umd.edu/eclipse)
  • +
  • Επιλέγουμε το project που θέλουμε να εγκαταστήσουμε
  • +
  • Πατάμε Next αποδεχόμαστε τους όρους χρήσης επιλέγοντας Accept και τέλος επιλέγουμε Finish
  • +
  • Επιλέγουμε restart για να ξεκινήσει ξανά το Eclipse (παρόμοια διαδικασία ισχύει όταν θέλετε να εγκαταστήσετε λογισμικό από το Εclipse MarketPlace π.χ. για το checkstyle)
  • +
+

Εγκατάσταση FindBugs

+


http://findbugs.cs.umd.edu/eclipse/

+

Εγκατάσταση CheckStyle

+

+

Παράδειγμα CheckStyle

+

+

Αποτελέσμα CheckStyle

+

+ +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/courses/tutorials/tutorial_7_A.md b/tutorials/tutorial_7_A-p.html similarity index 62% rename from courses/tutorials/tutorial_7_A.md rename to tutorials/tutorial_7_A-p.html index e9b4404..3e92c57 100644 --- a/courses/tutorials/tutorial_7_A.md +++ b/tutorials/tutorial_7_A-p.html @@ -1,3 +1,36 @@ + + + + + + + Debugging and BetterCodeHub + + + + + + + + + + + +
+
+
+ +
+
+

License

+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
+
+
+ + + + + + + diff --git a/tutorials/tutorial_7_A.html b/tutorials/tutorial_7_A.html new file mode 100644 index 0000000..26de007 --- /dev/null +++ b/tutorials/tutorial_7_A.html @@ -0,0 +1,105 @@ + + + + + + + + Debugging and BetterCodeHub + + + + + + + + + + + + + + + + + + + + +

Programming II: Debugging and BetterCodeHub

+

+

Προγραμματισμός ΙΙ

+

JUnit

+ +

Αποσφαλμάτωση

+
    +
  • Ο εντοπισμός σφαλμάτων (debugging) μας επιτρέπει να τρέχουμε ένα
    πρόγραμμα και να παρατηρούμε τις τιμές που παίρνουν οι μεταβλητές
    του προγράμματός μας καθώς εκτελείται ο κώδικας.

  • +
  • Χρησιμοποιούμε breakpoints μέσα στο πρόγραμμά μας, όπου θέλουμε
    να σταματήσει η εκτέλεση του κώδικα για να τσεκάρουμε τις τιμές
    των αντίστοιχων μεταβλητών.

  • +
+

Αποσφαλμάτωση στο Eclipse (1)

+
    +
  • Προσθέτουμε τα breakpoints στο πρόγραμμα μας και στην συνέχεια
    επιλέγουμε την κλάση που θέλουμε να ελέξουμε από το menu των Projects.
  • +
+


+

Αποσαλμάτωση στο Eclipse (2)

+
    +
  • Πατάμε δεξί κλικ στην κλαση μας και επιλέγουμε Debug as -> Java Application
  • +
+

+

Αποσφαλμάτωση στο Eclipse (2)

+

+

BetterCodeHub

+
    +
  • Βοηθά στην δημιουργεία συντηρίσημου κώδικα.
  • +
  • Συνδέεται με τον GitHub αποθετήριο.
  • +
  • Δίνει μετρήσεις για την κατάσταση του κώδικα.
  • +
+

Σύνδεσμος

+

Σύνδεση μέσω GitHub

+

+

Διεπαφή BetteCodeHub

+

+

Ρυθμίσεις

+

+

Βαθμολογία Κώδικα

+

+

JUnit

+
    +
  • JUnit είναι ένα framework για να πραγματοποιήσουμε, να τεστάρουμε
    μεθόδους ή λειτουργίες στην java.
  • +
  • Προσπαθούμε να τεστάρουμε όσες περισσότερες μεθόδους μπορούμε. Το αν μία
    μέθοδος είναι εύκολο να τεσταριστεί είναι χαρακτηριστικό ποιοτικού κώδικα.
  • +
  • Τεστάρουμε συνολικά τις κύριες λογικές λειτουργίες του προγραμματός μας σε
    όσες περισοότερες διαφορετικές περιπτώσεις μπορούμε.
  • +
  • Βασικός λόγος που είναι σημαντικό να γίνουν τα παραπάνω είναι ότι σε κάθε
    μεταβολή του κωδικά μας να εχουμε αντίληψη για το ποιά άλλα κομμάτια του κώδικα
    έχουν επηρεαστεί.
  • +
+

JUnit και Eclipse(1)

+

+
    +
    1. +
    2. Επιλέγουμε την κλάση που θέλουμε να τεστάρουμε. Με δεξί κλικ επιλέγουμε New
      από το menu και στη συνέχεια JUnit Test Case.
    3. +
  • +
    1. +
    2. Στο νέο παράθυρο που εμφανίζεται αφήνουμε το όνομα του νέου αρχείου
      ως έχει π.χ. PrinterTest (Εδώ μπορούμε να επιλέξουμε και σε ποιό package θέλουμε
      να βαλουμε τα tests). Eπιλέγουμε Next και ΟΚ.
    3. +
  • +
+

JUnit και Eclipse(2)

+

+
    +
    1. +
    2. Σβήνουμε την fail μέσα στην test μέθοδο και προσθέσουμε τους ελέγχους
      μας στην κλάση PrinterTest. Στη συνέχεια, πατάμε δεξί κλικ στην κλάση PrinterTest
      στον κατάλογο με τα προγράμματα (Projects) και επιλέγουμε
      Run As -> JUnit Test.
    3. +
  • +
    1. +
    2. Αν θέλουμε να τρέξουμε μόνο ένα test, μπορούμε να κάνουμε δεξί κλικ πάνω
      στο όνομα του και να επιλέξουμε πάλι
      Run As -> JUnit Test.
    3. +
  • +
+

JUnit και Eclipse(3)

+

+ +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/courses/tutorials/tutorial_8_A.md b/tutorials/tutorial_8_A-p.html similarity index 75% rename from courses/tutorials/tutorial_8_A.md rename to tutorials/tutorial_8_A-p.html index e2a962f..3e3d1f8 100644 --- a/courses/tutorials/tutorial_8_A.md +++ b/tutorials/tutorial_8_A-p.html @@ -1,3 +1,36 @@ + + + + + + + Νήματα + + + + + + + + + + + +
+
+
+ +
+
+

License

+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
+
+
+ + + + + + + diff --git a/tutorials/tutorial_8_A.html b/tutorials/tutorial_8_A.html new file mode 100644 index 0000000..aac51c4 --- /dev/null +++ b/tutorials/tutorial_8_A.html @@ -0,0 +1,254 @@ + + + + + + + + Νήματα + + + + + + + + + + + + + + + + + + + + +

Programming II: Νήματα

+

+

Προγραμματισμός ΙΙ

+

Νήματα

+ +

Νήματα (Threads)

+
    +
  • Νήματα είναι κομμάτια κώδικα που "ζουν" μεα σε μιά διεργασία.
  • +
  • Διεργασία είναι ένα πρόγραμμα που εκτελείτε.
  • +
  • Όταν δημιουργείτε μια διεργασία δεσμεύετε κάποιος χώρος μνήμης.
  • +
  • Μια δεριγασία αποτελείται από τουλάχιστον ένα νήμα.
  • +
  • Χρησιμοποιούνται για συγχονισμό και παραλληλοποιήση.
  • +
+

Διεργασίες Παράδειγμα

+

+

Νήματα Παράδειγμα

+

+

Πρόβλημα Συγχρονισμού (1)

+
    +
  • Ένα ζευγάρι έχει κοινό λογαρισμό
  • +
  • Ταυτόχρονα προσθέτουν χρήματα από δύο διαφορετικά ATM
  • +
+

+

Πρόβλημα Συγχονισμού (2)

+
    +
  • Σενάριο με Κανονική Ροή

    +
    get balance (balance = $50)
    +add $100
    +write back result (balance = $150)
    +get balance (balance = $150)
    +add $50 
    +write back result (balance = $200)  
  • +
  • Σενάριο με πρόβλημα συγχρονισμού

    +
    get balance (balance = $50)
    +get balance (balance = $50)
    +add $100
    +add $50
    +write back result (balance = $150)
    +write back result (balance = $100)
  • +
+

Πρόβλημα Παραλληλισμού (1)

+
    +
  • Σενάριο με παραλληλισμό

    +
    get balance(balance=$50)    get balance(balance=$50)
    +add $100            add $50
    +write result(balance=$150)  write results(balace=$50)
  • +
+

Τρόποι για εκτέλεση νημάτων (1)

+
    +
  • Η Java υποστηρίζει δύο διαφορετικούς τρόπους για εκτέλεση νημάτων
  • +
  • Δήλωση κλάσης που να επεκτήνει την Thread
  • +
  • Υπερσκελίζει (Override) την run της κλάσης Thread
  • +
+

Τρόποι για εκτελεση νημάτων (2)

+
class FindCountOfEvenNumbers extneds Thread { 
+      private int maxNumber;
+      private int count;
+      FindCountOfEvenNumbers(int maxNumber) {
+          this.maxNumber = maxNumber;
+          this.count = 0;        
+      }
+      @Override 
+      public void run() {
+          for (int i=0; i<this.maxNumber; ++i)
+          {
+              if (i % 2 == 0)
+                  ++count;        
+          }    
+      }
+  }
+

Εκτέλεση Νημάτων

+
FindCountOfEvenNumbers newThread = new FindCountOfEvenNumbers(1200);
+new Thread(findNumber).start();
+
+FindCountOfEvenNumbers findNumber = new FindCountOfEvenNumbers(1200);
+Thread t = new Thread(findNumber);
+t.start();
+

Τρόποι εκτέλεσης νημάτων

+
    +
  • Δήλωση κλάσης που να υλοποιεί την διεπαφή Runnable
  • +
  • Αυτή η κλάση υλοποιεί την μέθοδο run της Runnable.
  • +
+
class FindCountOfEvenNumbers implements Runnable {
+      private int maxNumber;
+      private int count;
+      FindCountOfEvenNumbers(int maxNumber) {
+          this.maxNumber = maxNumber;
+          this.count = 0;        
+      }
+
+      public void run() {
+          for (int i=0; i<this.maxNumber; ++i)
+          {
+              if (i % 2 == 0)
+                  ++count;        
+          }    
+      }
+  }
+

Διαφορές μεταξύ Thread και Runnable

+
    +
  • Αφού επεκτείνουμε την κλάση Thread δεν μπορούμε στο μέλλον να επεκτείνουμε άλλη κλάση.
  • +
  • Αν υλοποιήσουμε την Runnable μπορούμε στην συνέχεια να επεκτείλουμε και άλλες κλάσεις.
  • +
  • Επεκτείνοντας την κλάση Thread δημιουργεί διαφορετικά αντικείμενα, ενώ στην Runnable πολλά νήματα χρησιμοποιούν το ίδιο στιγμιότυπο αντικειμένου.
  • +
+

Παράδειγμα Thread Vs Runnable (1)

+
//Implementing Runnable Interface
+    class ImplementsRunnable implements Runnable {
+        private int counter = 0;
+        public void run() {
+            counter++;
+            System.out.println("ImplementsRunnable : Counter : "+ counter);
+        }
+    }
+
+    //Extending Thread class
+    class ExtendsThread extends Thread {
+        private int counter = 0;
+    @Override
+        public void run () {
+            counter++;
+            System.out.println("ExtendsThread : Counter : "+ counter);
+        }
+    }
+

Παράδειγμα Thread Vs Runnable (2)

+
public class ThreadVsRunnable {
+        public static void main(String args[]) throws Exception {
+                // Multiple threads share the same object.
+                ImplementsRunnable rc = new ImplementsRunnable();
+                Thread t1 = new Thread(rc);
+                t1.start();
+                Thread.sleep(1000); 
+                Thread t2 = new Thread(rc);
+                t2.start();
+                Thread.sleep(1000); 
+                Thread t3 = new Thread(rc);
+                t3.start();
+
+                ExtendsThread tc1 = new ExtendsThread();
+                tc1.start();
+                Thread.sleep(1000);
+                ExtendsThread tc2 = new ExtendsThread();
+                tc2.start();
+                Thread.sleep(1000); 
+                ExtendsThread tc3 = new ExtendsThread();
+                tc3.start();
+         }
+    }
+

Αποτέλεσμα εκλεσης

+
    ImplementsRunnable : Counter : 1
+    ImplementsRunnable : Counter : 2
+    ImplementsRunnable : Counter : 3
+
+    ExtendsThread : Counter : 1
+    ExtendsThread : Counter : 1
+    ExtendsThread : Counter : 1
+

Thread join(1)

+
    +
  • Μέθοδος που επιτρέπει σε ένα νήμα να περιμένει μέχρι να ολοκληρωθεί η εκτέλεση ένας άλλου.
  • +
+
  Thread t = new Thread(findNumber);
+  t.start();
+  System.out.println("Now thread " + t.getName() + " is running");
+  t.join();
+

Παράδειγμα με Νήματα

+
public class SimpleThreads {
+            static void threadMessage(String message) {
+                String threadName = Thread.currentThread().getName();
+                System.out.format("%s: %s%n",threadName, message);
+        }
+
+            private static class MessageLoop implements Runnable {
+            public void run() {
+                String importantInfo[] = {"Mares eat oats","Does eat oats","Little lambs eat ivy","A kid will eat ivy too"};
+                try {
+                for (int i = 0; i < importantInfo.length; i++) {
+                    Thread.sleep(4000);
+                    threadMessage(importantInfo[i]);
+                }
+                } catch (InterruptedException e) {threadMessage("I wasn't done!");
+                }
+            }
+        }
+
+public static void main(String args[])throws InterruptedException {
+        long patience = 1000 * 60 * 60;
+        // If command line argument
+        // present, gives patience
+        // in seconds.
+        if (args.length > 0) {
+            try {
+                patience = Long.parseLong(args[0]) * 1000;
+            } catch (NumberFormatException e) {
+                System.err.println("Argument must be an integer.");
+                System.exit(1);
+            }
+        }
+
+        threadMessage("Starting MessageLoop thread");
+        long startTime = System.currentTimeMillis();
+        Thread t = new Thread(new MessageLoop());
+        t.start();
+
+        threadMessage("Waiting for MessageLoop thread to finish");
+        while (t.isAlive()) {
+            threadMessage("Still waiting...");
+            t.join(1000);
+            if (((System.currentTimeMillis() - startTime) > patience)&& t.isAlive()) {
+                threadMessage("Tired of waiting!");
+                t.interrupt();
+                t.join();
+            }
+        }
+        threadMessage("Finally!");
+    }
+}
+ +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/courses/tutorials/tutorial_8_B.md b/tutorials/tutorial_8_B-p.html similarity index 79% rename from courses/tutorials/tutorial_8_B.md rename to tutorials/tutorial_8_B-p.html index cb41302..8e3d482 100644 --- a/courses/tutorials/tutorial_8_B.md +++ b/tutorials/tutorial_8_B-p.html @@ -1,3 +1,36 @@ + + + + + + + Συμβολοσειρές και Συλλογές + + + + + + + + + + + +
+
+
+ +
+
+

License

+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
+
+
+ + + + + + + diff --git a/tutorials/tutorial_8_B.html b/tutorials/tutorial_8_B.html new file mode 100644 index 0000000..7be0d08 --- /dev/null +++ b/tutorials/tutorial_8_B.html @@ -0,0 +1,277 @@ + + + + + + + + Συμβολοσειρές και Συλλογές + + + + + + + + + + + + + + + + + + + + +

Programming II: Συμβολοσειρές και Συλλογές

+

+

Προγραμματισμός ΙΙ

+

Συμβολοσειρές και Συλλογές

+ +

Συμβολοσειρές

+
    +
  • Μία συμβολοσειρα (String) είναι μια σειρά από χαρακτήρες. Στην java τα string είναι
    αντικείμενα της κλάσης String.

  • +
  • Οι συμβολοσειρές είναι σταθερές - δηλαδή, οι τιμές τους δεν αλλάζουν μετά την
    δημιουργεία τους
    . Σε αντίθεση, οι Stringbuffer έχουν μεταβλητό μήκος και τιμές
    χαρακτήρων.

  • +
  • Όπως και για την δημιουργία άλλων αντικειμένων, έτσι και για να δημιουργήσουμε
    αντικείμενα τύπου String χρειάζεται να χρησιμοποιήσουμε τη λέξη new και να
    επικαλεστούμε τον κατασκευαστή.

  • +
+

Παράδειγμα

+
char[] helloArray = {'h', 'e', 'l', 'l', 'o', '!'};
+String helloStr = new String(helloArray);
+System.out.println(helloStr);
+

Χειρισμός Συμβολοσειρών

+
    +
  • Το μέγεθος μία συμβολοσειράς επιστρέφεται με το κάλεσμα της συνάρτησεις length()

    +
    String h = "hello world!";
    +int l = h.lenght();
  • +
  • Μία αλληλουχία (concatenation) από συμβολοσειρές μπορεί να καλεστεί ως εξής:

    +
    String h = "hello world";
    +System.out.println("This is an example: " + h);
  • +
  • Για την μετατροπή ενός αριθμού σε συμοβολοσειρά καλούμε την εξής συνάρτηση:

    +
    int i = 600;
    +String s = Integer.toString(i); 
  • +
+

Σύκριση Συμβολοσειρών

+
    +
  • Οι θέσεις μίας συμβολοσειράς αριθμούνται από το 0. Η μη ύπαρξη θέσης συμβολίζεται με το -1.

    +
    h e l l o
    +0 1 2 3 4
  • +
  • Για να ελέξουμε εάν μία συμβολοσειρά είναι τμήμα μίας άλλης, μπορούμε να χρησιμοποιήσουμε την
    indexOf(String str2)

  • +
  • Η σύγκριση 2 συμβολοσειρών γίνεται είτε με την equals(Object Obj) είτε λεξικογραφικά με την
    compareTo(String str2)

    +
    if (str1.equals(str2))
    +    System.out.println(str1 + " " + str2);
  • +
+

Μέθοδος substring

+
    +
  • Για να επιστρέψουμε ένα τμήμα μία συμβολοσειράς χρησιμοποιούμε την substring(int beginIndex, int endIndex)
    η οποία επισρέφει το τμήμα που αρχίζει στη θέση beginIndex και τελειώνει στη θέση endIndex - 1.
  • +
+
// Return sustring "world"
+// H e l l o   w o r l d
+// 0 1 2 3 4 5 6 7 8 9 10
+
+String h = new String("Hello world");
+h.substring(6,11);
+

Μέθοδος split(1)

+
    +
  • Για να σπάσουμε μία συμβολοσειρά σε ένα πίνακα από χαρακτήρες χρησιμοποιούμε την String.split(String reg)
  • +
+
// Split using the underscore
+String word = new String("Hello_Programming_II");
+String[] splitThisString = word.split("_");
+
+// Split using the whitespace
+String word2 = new String(Hello Programming               II);
+String[] splitThisOneToo = word2.split("\\s+");
+// "\\s+" μπορεί να χρησιμοποιηθεί για κενά όπως \n, \t, κτλ.
+

Μέθοδος split(2)

+
    +
  • Για να σπάσουμε μία συμβολοσειρά n-φορές χρησιμοποιούμε την split(String reg, int limit).
  • +
+
String word2 = new String(“Hello Programming       II”);
+String[] splitThisNow = word2.split(“\\s+”, 1);
+System.out.println(splitThisNow.length);
+

Μεταβλητές Συμβολοσειρές

+
    +
  • Η κλάση StringBuffer υλοποιεί μεταβλητές συμβολοσειρές και υποστηρίζει τις περισσότερες μεθόδους
    της συμβολοσειράς και μερικές επιπρόσθετες.
  • +
+
StringBuffer str1 = new StringBuffer("Programming");
+String str = " II"; 
+str1.append(String str);
+
StringBuffer sb = new StringBuffer("abcdefghijk");
+sb.insert(3,"1234");
+
StringBuffer delete(int start, int end)
+
StringBuffer sb = new StringBuffer("abcdefghijk");
+sb.replace(3, 8, "DONE");
+

Συλλογές

+
    +
  • Μία συλλογή (collection) είναι ένα σύνολο από αντικείμενα.

  • +
  • Ένα πλαίσιο συλλογών (collection framework) υποστηρίζει την αρχιτεκτονικά
    ομογένη παράσταση και χειρισμό των συλλογών, ανεξάρτητα από την υλοποιήση τους.

  • +
+

Κατηγορίες Συλλογών

+

+

Υλοποιήσεις Συλλογών

+
    +
  • Οι ακολουθίες υλοποιούνται με τους παρακάτω τρόπους:

    +
      +
    • Πίνακας
    • +
    • Συνδεδεμένη λίστα (Linked List)
    • +
  • +
  • Τα σύνολα και οι απεικονίσεις υλοποιούνται με τους παρακάτω τρόπους:

    +
      +
    • Πίνακας κατακερματισμού (Hash Table)
    • +
    • Ισοζυγισμένο δέντρο (Balanced Tree)
    • +
    • Συνδυασμός συνδεδεμένης λίστα και πίνακα κατακερματισμού
    • +
  • +
+

Διαπαφές και Υλοποιήσεις

+

+

ArrayList -- Πίνακας Λίστα

+
    +
  • ArrayList είναι μία κλάση που υλοποιεί την διεπαφή List.
  • +
  • ArrayList μπορεί να αλλάξει μέγεθος δυναμικά.
  • +
+
// class declaration according to Oracle
+public class ArrayList<E> extends AbstractList<E> implements List<E>, .... {
+    // ...
+}
+

Παράδειγμα ArrayList

+
import java.util.ArrayList;
+
+public class ArrayListDemo {
+
+    public static void main(String[] args) {
+        // Δήλωση ArrayList 
+        ArrayList<Integer> myList = new ArrayList<>();
+        
+        // πρόσθεσε στοιχεία στο τέλος της λίστας
+        myList.add(1);
+        myList.add(2);
+        myList.add(4);
+        System.out.println(myList);
+        
+        // πρόσθεσε στοιχείο στην συγκεκριμένη θέση
+        myList.add(2, 3);
+        System.out.println(myList);
+        
+        // έλεγχος αν υπάρχει το συγκεκριμένο στοιχείο
+        System.out.println("List contains 2? " + myList.contains(2) + "\n"
+                            + "List contains 0? " + myList.contains(0));
+        
+        // διαγραφή όλων όλων των στοιχείων από την ArrayList
+        myList.clear();
+        System.out.println(myList);
+    }
+
+}
+

with output

+
    [1, 2, 4]
+    [1, 2, 3, 4]
+    List contains 2? true
+    List contains 0? false
+    []
+

LinkedList -- Συνεδεμένη Λίστα

+
    +
  • Κάθε στοιχεία (κομβος) της λίστας έχει δύο χαρακτηριστήκα, τα δεδομένα και τον δείκτη
    για τον επόμενο κόμβο.
  • +
  • Ο τελευταίος κόμβος πρέπει να αναφέρεται στο null.
  • +
  • Το πρώτο στοιχείο της λίστας ονομάζεται το κεφάλι (head).
  • +
+
// class declaration according to Oracle
+public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Queue<E>, .... {
+    // ...
+}
+

Παράδειγμα LinkedList (1)

+

+

Παράδειγμα LinkedList (2)

+

CircleList, a linked list example

+
class Circle {
+    /* Linked-list nodes should have a reference of their own
+    type showing the next element in the list */
+    private Circle next;
+
+    Circle(){ this.next = null; }
+    public void setNext (Circle c) { this.next = c; }
+    public Circle getNext () { return this.next; }
+
+    /*
+    * Here follows the code of the original Circle class 
+    * as presented in the Creating Classes session
+    */
+}
+
+public class CircleList {
+    private Circle first_element;
+    
+    CircleList() { this.first_element = null; }
+    
+    public void addElement(Circle c) {
+        if(this.first_element == null) {
+            this.first_element = c; 
+        } else {
+            Circle current_circle = this.first_element;
+            while (current_circle.getNext() != null) {
+                current_circle = current_circle.getNext();
+            }
+            current_circle.setNext(c);
+        }
+    }
+
+}
+

Stack -- Στοίβα

+
    +
  • Stack προσφέρει 2 βασικές λειτουργίες (μεθόδους)

    +
      +
    • push (προσθέτει στοιχεία)
    • +
    • pop (αφαιρεί στοιχείο)
    • +
  • +
  • Εκπροσωπεί το μοντέλο "ο τελευταίος ερχόμενος εξυπηρετείται πρώτος" (lifo).
  • +
  • Κάθε φορά μπορεί να αφαιρείτε το παρόν τελευταίο στοιχείο.

  • +
+
// The Stack class, as defined by Oracle
+public class Stack<E> extends Vector<E> implements List<E>, ... { 
+    // ... 
+}
+

Παράδειγμα Stack (1)

+

+

Παράδειγμα Stack (2)

+
import java.util.Stack;
+
+public class StackDemo {
+
+    public static void main(String[] args) {
+        // Αρχικοποιήσει στοίβας
+        Stack<Integer> stack = new Stack<>();
+        
+        // προσθέτουμε στοιχεία στην οροφή της στοίβας
+        stack.push(1);
+        stack.push(2);
+        stack.push(3);
+        stack.push(4);
+        System.out.println(stack);
+        
+        // δες την τελευταία εισχώρηση
+        int top = stack.peek();
+        System.out.println("top element: " + top);
+        
+        // αφαίρεση το τελευαίο στοιχεία και αποθήκευση
+        int first = stack.pop();
+        System.out.println("popped element: " + first + "\n" + stack);
+        
+        // δες τελευταίο στοιχείο
+        top = stack.peek();
+        System.out.println("top element: " + top);
+    }
+
+}
+ +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/courses/tutorials/tutorial_9_A.md b/tutorials/tutorial_9_A-p.html similarity index 65% rename from courses/tutorials/tutorial_9_A.md rename to tutorials/tutorial_9_A-p.html index 3ad6c1c..ab21086 100644 --- a/courses/tutorials/tutorial_9_A.md +++ b/tutorials/tutorial_9_A-p.html @@ -1,3 +1,36 @@ + + + + + + + Διαχείρηση αρχείων + + + + + + + + + + + +
+
+
+ +
+
+

License

+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
+
+
+ + + + + + + diff --git a/tutorials/tutorial_9_A.html b/tutorials/tutorial_9_A.html new file mode 100644 index 0000000..72763e5 --- /dev/null +++ b/tutorials/tutorial_9_A.html @@ -0,0 +1,114 @@ + + + + + + + + Διαχείρηση αρχείων + + + + + + + + + + + + + + + + + + + + +

Programming II: Διαχείρηση αρχείων

+

+

Προγραμματισμός ΙΙ

+

Διαχείρηση Αρχείων

+ +

Αρχεία

+
    +
  • Τρόπος μόνιμης αποθήκευσης δεδομένων.
  • +
  • Για να γράψουμε ή να διαβάσουμε μέσα από αρχεία, χρησιμοποιούμε τη ροή εισόδου
    και εξόδου (I/O streams)
  • +
+

Ροή Εισόδου και Εξόδου (I/O Streams)

+

Μία ροή (stream) αναφέρεται σε μια σειρά από ταξινομημένα δεδομένα που διαβάζονται από ή γράφονται σε ένα αρχείο.

+


+

Τρόποι διαχείρισης αρχείων (1)

+
+**Byte Streams**: εισαγωή και εξαγωγή 8-bit ή 1 byte. Χρησιμοποιούνται για χαμηλού επιπέδου διαχείριση δεδομένων εισόδου και εξόδου. Η είσοδος και η έξοδος από ένα αρχείο βασίζεται σε bytes. +
+ + +
FileInputStream in = new FileInputStream("infile.txt");
+FileOutputStream in = new FileOutputStream("outfile.txt");
+

Τρόποι διαχείρισης αρχείων (2)

+
+**Character Streams**: αποτελούν “wrappers” των byte streams. Χρησιμοποιούν byte streams για χειρισμό δεδομένων εισόδου και εξόδου σε χαμηλό επίπεδο (low-level I/O), καθώς τα character streams χειρίζονται τη μετάφραση των χαρακτήρων σε bytes. Η είσοδος και η έξοδος σε και από ένα αρχείο βασίζεται σε χαρακτήρες. +
+ + +
FileReader in = new FileReader("infile.txt"); 
+FileWriter in = new FileWriter("outfile.txt"); 
+

Τρόποι διαχείρισης αρχείων (3)

+
+**Buffer Streams**: χρήσιμοποιούν _buffers_ στο διάβασμα (**read**) ή στο γράψιμο (**write**) αρχείων. Βοηθούν στην αποδοτικότητα των προγραμμάτων καθώς τα αιτήματα read/write δεν χειρίζονται κατευθείαν από το λειτουργικό σύστημα. +
+ + +
BufferedReader in = new BufferedReader(new FileReader("infile.txt"));
+BufferedWriter out = new BufferedWriter(new FileWriter("outfile.txt"));
+

Τρόποι διαχείρισης αρχείων (4)

+
+**Data Streams**: υποστηρίζουν δυαδική είσοδο και έξοδο (**binary Ι/Ο**) από πρωταρχικούς τύπους δεδομένων (**primitive data types**: boolean, char, byte, short, int, long, float, και double) καθώς και **String**. +
+ + +
DataOutputStream out = new DataOutputStream(new BufferedOutputStream(
+              new FileOutputStream(dataFile)));
+DataInputStream in = new DataInputStream(new BufferedInputStream(
+              new FileInputStream(dataFile)));
+

+

Ανάγνωση αρχείου

+
+Mε FileInputStream: διαβάζει ροές από bytes (π.χ. image data) αφού ανοίξει μια σύνδεση με το αρχείο. +
+ + +
    +
  • Μπορεί να διαβάσει μέχρι ένα συγκεκριμένο αριθμό δεδομένων με την χρήση της read(byte[] b).

    +
      +
    • Εάν δε βρεθεί το αρχείο, πετάει την εξαίρεση: FileNotFoundException.
    • +
    • Με DataInputStream: διαβάζει πρωταρχικούς τύπους δεδομένων (boolean, char, double, float, etc.) και String.
    • +
    • Γράφει ένα String σε ένα αρχείο με τη χρήση της writeUTF(String str).
    • +
    • Mπορεί να πετάξει IOException (προβλήματα εισόδου/εξόδου), γι’ αυτό πρέπει να χρησιμοποιούνται οι μέθοδοι .flush() για τις ροές (πετάει τα δεδομένα του buffer στο αρχείο).
    • +
  • +
+

Εγγραφή σε αρχείο

+
+Με FileOutputStream: ανοίγει μια ροή για να γράψει δεδομένα σε ένα αρχείο. +
+ +
    +
  • Μπορεί να γράψει μέχρι ένα συγκεκριμένο αριθμό δεδομένων με την χρήση της write(byte[] b).

    +
      +
    • Εάν δε βρεθεί το αρχείο, πετάει την εξαίρεση: FileNotFoundException.
    • +
    • Με DataOutputStream: γράφει πρωταρχικούς τύπους δεδομένων (boolean, char, double, float, etc.) και String.
    • +
  • +
+ +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/courses/tutorials/tutorial_9_B.md b/tutorials/tutorial_9_B-p.html similarity index 76% rename from courses/tutorials/tutorial_9_B.md rename to tutorials/tutorial_9_B-p.html index 44ac7e8..a01bf9d 100644 --- a/courses/tutorials/tutorial_9_B.md +++ b/tutorials/tutorial_9_B-p.html @@ -1,3 +1,36 @@ + + + + + + + Κανονικές εκφράσεις + + + + + + + + + + + +
+
+
+ +
+
+

License

+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
+
+
+ + + + + + + diff --git a/tutorials/tutorial_9_B.html b/tutorials/tutorial_9_B.html new file mode 100644 index 0000000..8aa498a --- /dev/null +++ b/tutorials/tutorial_9_B.html @@ -0,0 +1,328 @@ + + + + + + + + Κανονικές εκφράσεις + + + + + + + + + + + + + + + + + + + + +

Programming II: Κανονικές εκφράσεις

+

+

Προγραμματισμός ΙΙ

+

Καννονικές Εκφράσεις

+ +

Κανονικές Εκφράσεις

+
    +
  • Είναι σειρές από χαρακτήρες, αριθμούς και ειδικά σύμβολα που εκφράζουν καθορισμένα πρότυπα βάσει συγκεκριμένης σύνταξης.
  • +
  • Χρησιμοποιούνται για ταυτοποίηση συγκεκριμένων μοτίβων (pattern matching) κανονικών εκφράσεων (regular expressions) σε λέξεις, προτάσεις, αριθμούς, και αρχεία.
  • +
  • Βοηθούν στην αναζήτηση, στην επεξεργασία και στο χειρισμό κειμένου και δεδομένων.
  • +
+

Ειδικά Σύμβολα (1)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ΜοτίβοΕπεξήγησηΠαράδειγμα
[ab]ταιριάζει κάθε χαρακτήρα μέσα στις αγκύλεςri[cs]e -> rice ή rise
abc|adcταιριάζει είτε τη μία είτε την άλλη λέξηman|men -> man ή men
^ταιριάζει το μοτίβο στην αρχή της γραμμής^What-> What time...
$ταιριάζει το μοτίβο στο τέλος της γραμμήςo'clock.$ -> 8 o'clock.
?0 ή 1 εμφάνιση του προηγούμενου μοτίβουcolou?r -> Light blue is my colour
+

Ειδικά Σύμβολα (2)

+ + + + + + + + + + + + + + + + + + + + +
ΜοτίβοΕπεξήγησηΠαράδειγμα
+1 ή περισσότερες εμφανίσεις του προηγούμενου μοτίβου[123]+-> 2
*0 ή περισσότερες εμφανίσεις του προηγούμενου μοτίβου[123]*->456 |
| {n} | ταιριάζει ένα συγκεκριμένο αριθμό ψηφίων | 5{3}-> 555 |
| {min,max} | ταιριάζει από/μέχρι ένα συγκεκριμένο αριθμό ψηφίων | m{1,5}->mmmm |
| [0-9] | ταιριάζει αριθμούς από 0 έως 9 | [0-9] -> 7 |
+

Ειδικά Σύμβολα (3)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ΜοτίβοΕπεξήγησηΠαράδειγμα
[a-zA-Z]ταιριάζει γράμματα από το a έως το z κεφαλαία και μικρά[a-zA-Z] -> r
[^a-z]δεν ταιριάζει ό,τι υπάρχει μέσα στα άγκυστρα[^a-z] -> R
\n, \tταιριάζει χαρακτήρες με backslashnew line\n -> \n
\wταιριάζει γράμματα χαρακτήρες [0-9Α-Ζa-z_][\w]\t -> o\t
\Wδεν ταιριάζει γράμματα χαρακτήρες [^0-9Α-Ζa-z_][\W] -> \n
+

Ειδικά Σύμβολα (4)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ΜοτίβοΕπεξήγησηΠαράδειγμα
\dταιριάζει ψηφία όπως το [0-9][\d] -> 7
\Dδεν ταιριάζει ψηφία όπως το [^0-9][\D] -> a
\sταιριάζει whitespace χαρακτήρες όπως [\t\n\r]a\s -> a (space)
\Sδεν ταιριάζει whitespace χαρακτήρες όπως [^\t\n\r]a[^\t\n\r] -> cat
.ταιριάζει οτιδήποτε.+ -> jdf235!\n
+

Κανονικές εκφράσεις στη Java

+
    +
  • Για τη χρήση κανονικών εκφράσεων στη Java χρησιμοποιείται το java.util.regex API το οποίο διαθέτει 3 βασικές κλάσεις: Pattern, Matcher, και PatternSyntaxException.
  • +
  • Η κλάση String διαθέτει μεθόδους που χρησιμοποιούν κανονικές εκφράσεις
    (Summary of regular-expression constructs:
    https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html).
  • +
+

Μεθόδοι της κλάσης String για κανονικές εκφράσεις

+ + + + + + + + + + + + + + + + + + + + + + + + + +
ΤύποςΌνομα μεθόδουΠεριγραφή
booleanmatches(String regex)επιστρέφει true αν υπάρχει η έκφραση
StringreplaceAll(String regex, String relpacement)αλλάζει μία έκφραση με μία συγκεκριμένη συμβολοσειρά
String[]split(String regex)Σπάει μια συμβολοσειρά σε ένα πίνακα από συμβολοσειρές
+

Μοτίβα

+ + + + + + + + + + + + + + + + + + + + + + + + + +
ΤύποςΌνομα μεθόδουΠεριγραφή
static Patterncompile(String regex)μεταγλωττίζει την κανονική έκφραση σε μοτίβο
static Patterncompile(String regex, int flag)μεταγλωττίζει την κανονική έκφραση σε μοτίβο με "σημαίες"
static Patternmatches(String regex, CharSequence input)Προσπαθεί να ταιριάξει το μοτίβο με δεδομένα εισόδου
+

Ταιριαστής

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ΤύποςΌνομα μεθόδουΠεριγραφή
booleanmatches()προσπαθεί να βρει την εμφάνιση ενός μοτίβου
intstart()επιστρέφει την θέση που αρχίζει η έκφραση
intend()επιστρέφει την θέση που τελειώνει η έκφραση +1
booleanfind()ψάχνει εμφανίσεις της κανονικής έκφρασης σε ένα κείμενο
+

Παράδειγμα (1)

+
import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
+
+public class RegexMatchFind {
+    public static void main(String[] args) throws PatternSyntaxException {
+        Pattern p = Pattern.compile("[\\d]{3}");
+        Matcher m = p.matcher("a123b");
+        System.out.println(m.find());
+        System.out.println(m.matches());
+        boolean b = Pattern.matches("[\\d]{3}", "a123b");
+        System.out.println(b);
+
+        p = Pattern.compile("^[a-z0-9]+$");
+        m = p.matcher("123");
+        System.out.println(m.find());
+        System.out.println(m.matches());
+        boolean c = Pattern.matches("^[a-z0-9]+$", "123");
+        System.out.println(c);
+    }
+}
+

Παράδειγμα (2)

+
import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class SimpleRegex {
+    
+    public static void main(String args[]) {
+        // String for the pattern-matching.
+        String line = "New order 567TW.";
+        // Given pattern
+        String pattern = "[0-9]+(Q|TW){1,2}.";
+
+        // Pattern object
+        Pattern r = Pattern.compile(pattern);
+        // Matcher object.
+        Matcher m = r.matcher(line);
+        
+        // Check
+        if (m.find()) {
+            System.out.println(m.group());
+        } else {
+            System.out.println("NO MATCH");
+        }
+
+        // Replace m with the given string
+        line = m.replaceAll("##");
+        System.out.println(line);
+        
+        String line2 = "mesquite in your cellar";
+        System.out.println(line2.replace('e', 'o'));
+    }
+}
+ +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + From 05aea9ecdf5e3a95203404e29f773b8236e01b15 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Wed, 28 Feb 2018 13:35:34 +0000 Subject: [PATCH 02/79] Deploy to GitHub Pages: 025153416c1aded6a3ae7f0e7416b9c0f1b6de41 --- admin/materials-p.html | 17 ++--------------- admin/materials.html | 19 ++----------------- index.html | 19 ++----------------- 3 files changed, 6 insertions(+), 49 deletions(-) diff --git a/admin/materials-p.html b/admin/materials-p.html index 02318cb..b550e00 100644 --- a/admin/materials-p.html +++ b/admin/materials-p.html @@ -31,24 +31,11 @@ ## Course materials -## Preparatory course -* [Presentations](../prep-p.html) -* [Handouts](../prep.html) - - ## Java specialization -* [Presentations](../java-p.html) -* [Handouts](../java.html) - - -## C# specialization -* [Presentations](../cs-p.html) -* [Handouts](../cs.html) +* [Presentations](../tutorial-p.html) +* [Handouts](../tutorial.html) -## Trainer and administrator resources -* [Presentations](../admin-p.html) -* [Handouts](../admin.html)
diff --git a/admin/materials.html b/admin/materials.html index 6cc379a..3820645 100644 --- a/admin/materials.html +++ b/admin/materials.html @@ -30,25 +30,10 @@

Programming II: Course materials

-

Preparatory course

-

Java specialization

-

C# specialization

- -

Trainer and administrator resources

-
diff --git a/index.html b/index.html index ca97ecf..bf9bfa2 100644 --- a/index.html +++ b/index.html @@ -30,25 +30,10 @@

Programming II: Course materials

-

Preparatory course

-

Java specialization

-

C# specialization

- -

Trainer and administrator resources

-
From bd19f2c6a3fd0a65199293b803c78bd9a9a160a9 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Wed, 28 Feb 2018 14:21:20 +0000 Subject: [PATCH 03/79] Deploy to GitHub Pages: 21e3e6835f685216464b8c0ce0e410b71567b118 --- admin/materials-p.html | 13 ++++++++++--- admin/materials.html | 16 +++++++++++++--- index.html | 16 +++++++++++++--- 3 files changed, 36 insertions(+), 9 deletions(-) diff --git a/admin/materials-p.html b/admin/materials-p.html index b550e00..f659e2b 100644 --- a/admin/materials-p.html +++ b/admin/materials-p.html @@ -31,11 +31,18 @@ ## Course materials -## Java specialization -* [Presentations](../tutorial-p.html) -* [Handouts](../tutorial.html) +## Διαλέξεις Προγραμματισμού ΙΙ +* [Παρουσιάσεις](../tutorial-p.html) +* [Σημειώσεις](../tutorial.html) +## Φροντιστήρια Προγραμματισμού ΙΙ +* [Παρουσιάσεις](../tutorial-p.html) +* [Σημειώσεις](../tutorial.html) + +## Παρουσιάσεις εργαλείων +* [Παρουσιάσεις](../tools-p.html) +* [Σημειώσεις](../tools.html) diff --git a/admin/materials.html b/admin/materials.html index 3820645..9853185 100644 --- a/admin/materials.html +++ b/admin/materials.html @@ -30,10 +30,20 @@

Programming II: Course materials

-

Java specialization

+

Διαλέξεις Προγραμματισμού ΙΙ

+

Φροντιστήρια Προγραμματισμού ΙΙ

+ +

Παρουσιάσεις εργαλείων

+
diff --git a/index.html b/index.html index bf9bfa2..a7ab5dd 100644 --- a/index.html +++ b/index.html @@ -30,10 +30,20 @@

Programming II: Course materials

-

Java specialization

+

Διαλέξεις Προγραμματισμού ΙΙ

+

Φροντιστήρια Προγραμματισμού ΙΙ

+ +

Παρουσιάσεις εργαλείων

+
From f9a005a20cc82fd4a6b12f4e372e8465b2e34a39 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Wed, 28 Feb 2018 14:29:01 +0000 Subject: [PATCH 04/79] Deploy to GitHub Pages: 6306c96793ac6f53796c4eed6adb4f63ee6eb925 --- admin/materials-p.html | 8 ++++---- admin/materials.html | 8 ++++---- index.html | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/admin/materials-p.html b/admin/materials-p.html index f659e2b..91dc3fc 100644 --- a/admin/materials-p.html +++ b/admin/materials-p.html @@ -37,12 +37,12 @@ ## Φροντιστήρια Προγραμματισμού ΙΙ -* [Παρουσιάσεις](../tutorial-p.html) -* [Σημειώσεις](../tutorial.html) +* [Παρουσιάσεις](tutorials-p.html) +* [Σημειώσεις](tutorials.html) ## Παρουσιάσεις εργαλείων -* [Παρουσιάσεις](../tools-p.html) -* [Σημειώσεις](../tools.html) +* [Παρουσιάσεις](tools-p.html) +* [Σημειώσεις](tools.html) diff --git a/admin/materials.html b/admin/materials.html index 9853185..17a6782 100644 --- a/admin/materials.html +++ b/admin/materials.html @@ -37,13 +37,13 @@

Διαλέξεις Προγραμματισμού ΙΙ

Φροντιστήρια Προγραμματισμού ΙΙ

Παρουσιάσεις εργαλείων


diff --git a/index.html b/index.html index a7ab5dd..f159d36 100644 --- a/index.html +++ b/index.html @@ -37,8 +37,8 @@

Διαλέξεις Προγραμματισμού ΙΙ

Φροντιστήρια Προγραμματισμού ΙΙ

Παρουσιάσεις εργαλείων

    From 6403fc6762acda560b23581612906424429546fd Mon Sep 17 00:00:00 2001 From: Travis CI Date: Wed, 28 Feb 2018 15:46:34 +0000 Subject: [PATCH 05/79] Deploy to GitHub Pages: 1aa3b8146cdda08a5a3644522d5ed42361e9ef96 --- admin-p.html | 2 +- admin.html | 2 +- admin/authoring-p.html | 2 +- admin/authoring.html | 2 +- admin/customization-p.html | 2 +- admin/customization.html | 2 +- admin/materials-p.html | 6 +++--- admin/materials.html | 4 ++-- index.html | 4 ++-- tools-p.html | 2 +- tools.html | 2 +- tools/media/getting_started.png | Bin 78433 -> 115829 bytes tools/media/github_travis_check.png | Bin 0 -> 109599 bytes tools/media/github_travis_pass.png | Bin 0 -> 114402 bytes tools/media/travis_deploy.png | Bin 0 -> 209728 bytes tools/travis_ci-p.html | 22 ++++++++++++++++++---- tools/travis_ci.html | 12 ++++++++---- tutorials/tutorial_1_A-p.html | 2 +- tutorials/tutorial_1_A.html | 2 +- tutorials/tutorial_1_B-p.html | 2 +- tutorials/tutorial_1_B.html | 2 +- tutorials/tutorial_2_A-p.html | 2 +- tutorials/tutorial_2_A.html | 2 +- tutorials/tutorial_2_B-p.html | 2 +- tutorials/tutorial_2_B.html | 2 +- tutorials/tutorial_3_A-p.html | 2 +- tutorials/tutorial_3_A.html | 2 +- tutorials/tutorial_3_B-p.html | 2 +- tutorials/tutorial_3_B.html | 2 +- tutorials/tutorial_4_A-p.html | 2 +- tutorials/tutorial_4_A.html | 2 +- tutorials/tutorial_4_B-p.html | 2 +- tutorials/tutorial_4_B.html | 2 +- tutorials/tutorial_5_A-p.html | 2 +- tutorials/tutorial_5_A.html | 2 +- tutorials/tutorial_5_B-p.html | 2 +- tutorials/tutorial_5_B.html | 2 +- tutorials/tutorial_6_A-p.html | 2 +- tutorials/tutorial_6_A.html | 2 +- tutorials/tutorial_7_A-p.html | 2 +- tutorials/tutorial_7_A.html | 2 +- tutorials/tutorial_8_A-p.html | 2 +- tutorials/tutorial_8_A.html | 2 +- tutorials/tutorial_8_B-p.html | 2 +- tutorials/tutorial_8_B.html | 2 +- tutorials/tutorial_9_A-p.html | 2 +- tutorials/tutorial_9_A.html | 2 +- tutorials/tutorial_9_B-p.html | 2 +- tutorials/tutorial_9_B.html | 2 +- 49 files changed, 73 insertions(+), 55 deletions(-) create mode 100644 tools/media/github_travis_check.png create mode 100644 tools/media/github_travis_pass.png create mode 100644 tools/media/travis_deploy.png diff --git a/admin-p.html b/admin-p.html index 713501e..9ebddad 100644 --- a/admin-p.html +++ b/admin-p.html @@ -31,7 +31,7 @@

    Coding Bootcamp: Trainer and administrator resources

    diff --git a/admin.html b/admin.html index a11aa40..d209ff3 100644 --- a/admin.html +++ b/admin.html @@ -31,7 +31,7 @@

    Coding Bootcamp: Trainer and administrator resources

    diff --git a/admin/authoring-p.html b/admin/authoring-p.html index b252055..739053a 100644 --- a/admin/authoring-p.html +++ b/admin/authoring-p.html @@ -26,7 +26,7 @@
    diff --git a/tools/travis_ci.html b/tools/travis_ci.html index cba4bd3..5cde61f 100644 --- a/tools/travis_ci.html +++ b/tools/travis_ci.html @@ -29,7 +29,7 @@ -

    Programming II: Travis CI

    +

    Προγραμματισμός ΙΙ: Travis CI

    Tools and practices: Continuous Integration

      @@ -43,8 +43,7 @@

      Agenda

    • About Travis CI
    • Getting started
    • .travis.yml
    • -
    • Github repository GUI with Travis
    • -
    • Managing settings
    • +
    • Github Travis webhook
    • Automate Travis push on GitHub pages

    Importance of CI (1)

    @@ -95,7 +94,12 @@

    .travis.yml example

    global: - ENCRYPTION_LABEL: b88dab5c5665 - COMMIT_AUTHOR_EMAIL: stefanos1316@gmail.com -

    +

    Travis Github webhook (1)

    +

    +

    Travis Github webhook (2)

    +

    +

    Travis Github webhook (3)

    +


    Creative Commons Licence
    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. diff --git a/tutorials/tutorial_1_A-p.html b/tutorials/tutorial_1_A-p.html index 76cda63..c145295 100644 --- a/tutorials/tutorial_1_A-p.html +++ b/tutorials/tutorial_1_A-p.html @@ -26,7 +26,7 @@
    diff --git a/tools/travis_ci.html b/tools/travis_ci.html index 5cde61f..0171d98 100644 --- a/tools/travis_ci.html +++ b/tools/travis_ci.html @@ -43,8 +43,8 @@

    Agenda

  • About Travis CI
  • Getting started
  • .travis.yml
  • -
  • Github Travis webhook
  • -
  • Automate Travis push on GitHub pages
  • +
  • GitHub Travis webhook
  • +
  • Auto-deploying gh-pages with Travis

Importance of CI (1)

-

Travis with JaCoCo (1)

+

Travis, JaCoCo, Coveralls (1)

<plugin>
     <groupId>org.jacoco</groupId>
     <artifactId>jacoco-maven-plugin</artifactId>
@@ -147,33 +203,23 @@ 

Travis with JaCoCo (1)

</excludes> </configuration> </plugin>
-

Travis with JaCoCo (2)

-
    -
  • .travis.yml

    -
    language: java
    -script: mvn test
    -after_success:
    -- mvn clean test jacoco:report      
    -jdk:
    -- oraclejdk8            
  • -
-

Travis with Coveralls (1)

+

Travis, JaCoCo, Coveralls (2)

    +
  • Remember to webhook your repository from coveralls.io site

    +
    <plugin>
    +    <groupId>org.eluder.coveralls</groupId>
    +    <artifactId>coveralls-maven-plugin</artifactId>
    +    <version>3.1.0</version>
    +</plugin>
  • .travis.yml

    language: java          
     script: mvn test
     after_success:
    -- mvn clean test coveralls:report   
    +- mvn clean test jacoco:report coveralls:report 
     jdk:
     - oraclejdk8
  • -
  • Remember to webhook your repository from coveralls.io site

-
<plugin>
-    <groupId>org.eluder.coveralls</groupId>
-    <artifactId>coveralls-maven-plugin</artifactId>
-    <version>3.1.0</version>
-</plugin>
-

Travis with Coveralls (2)

+

Travis, JaCoCo, Coveralls (3)

Travis with CheckStyles

    From 044f6014f452db3d60cbab591d44be9ae209acd4 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 13 Mar 2018 20:24:08 +0000 Subject: [PATCH 15/79] Deploy to GitHub Pages: 805555947b9c7210ca8da87ef7c4d58ce5fdebc3 --- tools/travis_ci-p.html | 10 +++++----- tools/travis_ci.html | 12 ++++++------ 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/tools/travis_ci-p.html b/tools/travis_ci-p.html index 91ece4c..85cf93f 100644 --- a/tools/travis_ci-p.html +++ b/tools/travis_ci-p.html @@ -193,6 +193,7 @@ # Travis, JaCoCo, Coveralls (2) * Remember to webhook your repository from coveralls.io site +* [coveralls-maven-plugin](https://github.com/trautonen/coveralls-maven-plugin): JaCoCo, Cobertura, Saga ```java org.eluder.coveralls @@ -260,10 +261,7 @@ # Set GitHub Pages option on a repository -* Fork our repository found in this [link](https://github.com/stefanos1316/courses) -* Create gh-pages branch -* In repo's settings set GitHub Pages' source to gh-pages branch (be patient it takes some time) -* In case you would like index page to change from default (README) add and index.html. +* Clone our repository found in this [link](https://github.com/stefanos1316/courses) # Enable Travis webhook on the above repository @@ -351,8 +349,10 @@ # Push to GitHub and experience the magic +* In repo's settings set GitHub Pages' source to gh-pages branch (be patient it takes some time) +* In case you would like index page to change from default (README) add and index.html. * Access your webpage using the following pattern https://_UserName_.github.io/_Repository'sName_/index.html -* This might take some time until travis is done with the build process +* This might take some time until travis is done with the build process. # Thank you for your attention!!! diff --git a/tools/travis_ci.html b/tools/travis_ci.html index 15399ba..9e660b5 100644 --- a/tools/travis_ci.html +++ b/tools/travis_ci.html @@ -205,7 +205,8 @@

    Travis, JaCoCo, Coveralls (1)

    </plugin>

    Travis, JaCoCo, Coveralls (2)

      -
    • Remember to webhook your repository from coveralls.io site

      +
    • Remember to webhook your repository from coveralls.io site
    • +
    • coveralls-maven-plugin: JaCoCo, Cobertura, Saga

      <plugin>
           <groupId>org.eluder.coveralls</groupId>
           <artifactId>coveralls-maven-plugin</artifactId>
      @@ -254,10 +255,7 @@ 

      Auto-deploying gh-pag

    Set GitHub Pages option on a repository

      -
    • Fork our repository found in this link
    • -
    • Create gh-pages branch
    • -
    • In repo's settings set GitHub Pages' source to gh-pages branch (be patient it takes some time)
    • -
    • In case you would like index page to change from default (README) add and index.html.
    • +
    • Clone our repository found in this link

    Enable Travis webhook on the above repository

    @@ -318,8 +316,10 @@

    Scripts

Push to GitHub and experience the magic

    +
  • In repo's settings set GitHub Pages' source to gh-pages branch (be patient it takes some time)
  • +
  • In case you would like index page to change from default (README) add and index.html.
  • Access your webpage using the following pattern https://_UserName_.github.io/_Repository'sName_/index.html
  • -
  • This might take some time until travis is done with the build process
  • +
  • This might take some time until travis is done with the build process.

Thank you for your attention!!!

From bec44fd563988c66f35e0f5f4a5235e3c21b319b Mon Sep 17 00:00:00 2001 From: Travis CI Date: Wed, 21 Mar 2018 21:32:13 +0000 Subject: [PATCH 16/79] Deploy to GitHub Pages: f00176656ab842953189b67a2619c6009757bbc6 --- tools-p.html | 3 +- tools.html | 3 +- ..._energy_consumption_direct_approach-p.html | 134 ++++++++++++++++++ ...ng_energy_consumption_direct_approach.html | 86 +++++++++++ tools/media/test_bed.png | Bin 0 -> 34183 bytes tools/media/watts_up_pro.jpg | Bin 0 -> 35094 bytes 6 files changed, 224 insertions(+), 2 deletions(-) create mode 100644 tools/measuring_energy_consumption_direct_approach-p.html create mode 100644 tools/measuring_energy_consumption_direct_approach.html create mode 100644 tools/media/test_bed.png create mode 100644 tools/media/watts_up_pro.jpg diff --git a/tools-p.html b/tools-p.html index 632f14d..60e0d43 100644 --- a/tools-p.html +++ b/tools-p.html @@ -31,7 +31,8 @@

Εργαλεία


diff --git a/tools.html b/tools.html index cfd2572..618e8bd 100644 --- a/tools.html +++ b/tools.html @@ -31,7 +31,8 @@

Εργαλεία


diff --git a/tools/measuring_energy_consumption_direct_approach-p.html b/tools/measuring_energy_consumption_direct_approach-p.html new file mode 100644 index 0000000..938ac4f --- /dev/null +++ b/tools/measuring_energy_consumption_direct_approach-p.html @@ -0,0 +1,134 @@ + + + + + + + Hardware Energy Monitoring Tools + + + + + + + + + + + +
+
+
+ +
+
+

License

+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
+
+
+ + + + + + + diff --git a/tools/measuring_energy_consumption_direct_approach.html b/tools/measuring_energy_consumption_direct_approach.html new file mode 100644 index 0000000..96db246 --- /dev/null +++ b/tools/measuring_energy_consumption_direct_approach.html @@ -0,0 +1,86 @@ + + + + + + + + Hardware Energy Monitoring Tools + + + + + + + + + + + + + + + + + + + + +

Προγραμματισμός ΙΙ: Hardware Energy Monitoring Tools

+

+

Tools and practices: Measuring Energy Consumption

+ +

Measuring Applications Energy Consumption

+
    +
  • Two ways of measuring energy consumption of computer applications.

    +
      +
    • Direct: Using Board sensors or hard power analysers
    • +
    • Indirect: Energy estimation models using computer resource usage information
    • +
  • +
  • Each of the above has its own pitfalls (low reporting rate, overheat, and so on)
  • +
  • Accuracy is a main concern
  • +
  • Preparing the test-bed is crucail (interferances)

  • +
+

HEMTs: Examples

+ +

Watts Up? Pro

+

+

Watts Up? Pro Info

+
    +
  • display of volts, amps, power factor.
  • +
  • display of average monthly cost and KWH
  • +
  • display of minimun and maximum values
  • +
  • increased 15 amp continuous rating
  • +
  • accuracy of +/- 1.5% watts
  • +
  • super samping
  • +
+

Test-bed Requirements

+
    +
  • A computer node (laptop or server)
  • +
  • An energy monitoring node (e.g., Raspberry Pi)
  • +
  • Watts Up Pro (with a micro USB)
  • +
  • Network connection among the nodes
  • +
  • Install utility on energy monitoring node
  • +
  • Set passwordless SSH among the nodes
  • +
+

Test-bed overview

+

+

Source Code to Measure

+

UNDER CONSTRUCTION

+

Available on GitHub

+

UNDER CONSTRUCTION

+ +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/tools/media/test_bed.png b/tools/media/test_bed.png new file mode 100644 index 0000000000000000000000000000000000000000..49b06f9956997e255c4e384390cb376d9e86c6b5 GIT binary patch literal 34183 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 J4gG8G{{fKko#p@l literal 0 HcmV?d00001 From 931562e59a08c57f3a654fc331e911a12d88ae43 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Sat, 24 Mar 2018 14:39:33 +0000 Subject: [PATCH 17/79] Deploy to GitHub Pages: 0c08302dd608288374af50357cc7bae532f5f78d --- tools-p.html | 3 +- tools.html | 3 +- ...ci-p.html => travis_ci_cv_template-p.html} | 119 +----------- ...vis_ci.html => travis_ci_cv_template.html} | 100 +--------- tools/travis_ci_maven-p.html | 183 ++++++++++++++++++ tools/travis_ci_maven.html | 129 ++++++++++++ 6 files changed, 331 insertions(+), 206 deletions(-) rename tools/{travis_ci-p.html => travis_ci_cv_template-p.html} (72%) rename tools/{travis_ci.html => travis_ci_cv_template.html} (70%) create mode 100644 tools/travis_ci_maven-p.html create mode 100644 tools/travis_ci_maven.html diff --git a/tools-p.html b/tools-p.html index 60e0d43..c1284c3 100644 --- a/tools-p.html +++ b/tools-p.html @@ -31,7 +31,8 @@

Εργαλεία

diff --git a/tools.html b/tools.html index 618e8bd..0fc13ff 100644 --- a/tools.html +++ b/tools.html @@ -31,7 +31,8 @@

Εργαλεία

diff --git a/tools/travis_ci-p.html b/tools/travis_ci_cv_template-p.html similarity index 72% rename from tools/travis_ci-p.html rename to tools/travis_ci_cv_template-p.html index 85cf93f..51b8944 100644 --- a/tools/travis_ci-p.html +++ b/tools/travis_ci_cv_template-p.html @@ -4,7 +4,7 @@ - Travis CI + Travis CI with CV template tutorial @@ -28,7 +28,7 @@ + + +
+
+
+ +
+
+

License

+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
+
+
+ + + + + + + diff --git a/tools/travis_ci_maven.html b/tools/travis_ci_maven.html new file mode 100644 index 0000000..c249ca3 --- /dev/null +++ b/tools/travis_ci_maven.html @@ -0,0 +1,129 @@ + + + + + + + + Travis CI and Maven + + + + + + + + + + + + + + + + + + + + +

Προγραμματισμός ΙΙ: Travis CI and Maven

+

+

Tools and practices: Continuous Integration

+ +

Utilizing Travis for GitHub Java Projects

+ +

Travis, JaCoCo, Coveralls (1)

+
<plugin>
+    <groupId>org.jacoco</groupId>
+    <artifactId>jacoco-maven-plugin</artifactId>
+    <version>0.7.4.201502262128 </version>
+    <executions>
+        <execution>
+            <id>pre-unit-test</id>
+            <goals>
+                <goal>prepare-agent</goal>
+            </goals>
+            <configuration>
+                <propertyName>surefireArgLine</propertyName>
+            </configuration>
+        </execution>
+        <execution>
+            <id>post-unit-test</id>
+            <phase>test</phase>
+            <goals>
+                <goal>report</goal>
+            </goals>
+        </execution>
+    </executions>
+    <configuration>
+        <excludes>
+            <exclude>**/ui/**</exclude>
+            <exclude>**/StartSolverUi**</exclude>
+        </excludes>
+    </configuration>
+</plugin>
+

Travis, JaCoCo, Coveralls (2)

+
    +
  • Remember to webhook your repository from coveralls.io site
  • +
  • coveralls-maven-plugin: JaCoCo, Cobertura, Saga

    +
    <plugin>
    +    <groupId>org.eluder.coveralls</groupId>
    +    <artifactId>coveralls-maven-plugin</artifactId>
    +    <version>3.1.0</version>
    +</plugin>
  • +
  • .travis.yml

    +
    language: java          
    +script: mvn test
    +after_success:
    +- mvn clean test jacoco:report coveralls:report 
    +jdk:
    +- oraclejdk8
  • +
+

Travis, JaCoCo, Coveralls (3)

+

+

Travis with CheckStyles

+
    +
  • .travis.yml

    +
        language: java
    +    jdk:
    +    - oraclejdk8
    +script:
    +    - mvn test checkstyle:check
  • +
  • Output: [ERROR] ... You have 323 Checkstyle violations. -> [Help 1]

  • +
+

Travis with jDepend, FindBugs, JavaDoc

+
    +
  • .travis.yml

    +
    language: java
    +jdk:
    +- oraclejdk8            
    +script:
    +- mvn site              
  • +
+

FindBugs and JDepend

+


+

Thank you for your attention!!!

+ +
+Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + From aebaae21b0c0306d7aff12b619a78a76cdeeb38e Mon Sep 17 00:00:00 2001 From: Travis CI Date: Mon, 23 Apr 2018 09:56:36 +0000 Subject: [PATCH 18/79] Deploy to GitHub Pages: 4446ac6c28d1e482c560175d8cf7777d96b77d46 --- tools/media/workflow.jpg | Bin 0 -> 32296 bytes tools/travis_ci_cv_template-p.html | 19 ++++++++++++------- tools/travis_ci_cv_template.html | 17 ++++++++++------- 3 files changed, 22 insertions(+), 14 deletions(-) create mode 100644 tools/media/workflow.jpg diff --git a/tools/media/workflow.jpg b/tools/media/workflow.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7b7064c185d47baf5dc90fd2124959f4aaff5b6a GIT binary patch literal 32296 zcmce8by!r z3%$JO+;hM8{rh_rJeyVUyzEK79O??2VKL z9{ID66g*A=vDq~5H1!JF$0@0qg+4h4=j7&9Rw1ZZc=-jjboJc>;}VmqN0AeUtbEe4 zE)aOl&#~uhFJxTZ;+J&Htb)FEtlU$hyXWJi_xxes zbNm;(827A@K7NY*28T>a<6~?)`7@`0Q6A0g%B4dJ%1_Q!%)IY%a9IM6{-6K^_ah#V zVv+(R0jQK`PacMSe)bFy7WUx3S&iuMX_Wd=gN3Y@-01cTp%3S6CoWPKFpCZ9>K|Spb-%U7TM6^n zeD-6xp9jF?S`qMVM$QzqMh<6|({aQ}Q3S|hDrS=b{{*rCf*K|&Gm+Mw6(s6oMYR*~5Meop(-bnvn{m`_F zP^7jxS!l1}VckLgxspEe73&$xxs7`&Gbm*}l)o)#oWzTwe^SQi^$tU;JIv1V55S%= zEQ5ELLhxsFdDie}SFuncCU%Zvq!HMO=?Ah$x{GKYxx>IoL+DpI=13~eD+$xlyfFI( zf9>f)Fk7~7PuT*zZ=Kb#~)-+ftH2L2-Q;xjA9 z)Vlsy`=~^ZkfFN4ZXviQ9dSkHW^{>>DVL6~@_KCN4O$Ji4#N15@D{92;w{*GGH2sfVWMG+XV;ur!Siq} zvXh0IKr-h|Q(K~Fsk4ap&zQ+{adK2#&S>Y!Ze;9Fy8X=Z!r1!F6&mwFw$z?nf~i&5X|Y<@@iy+^aD0Xw^ai$k9Y z%rIHcK<9ZSDJON^yjAk1DJS>j+rcZerIeMV$1~>P*mnl zIj=uGB?fG1`!Q|i z<{VGs9SRvwA<=|T^n)Crwrh!6Q@xbn$;_*+TrbiIRx;wt>iMWXWRt4xfbPP6@P&#Y zBww7cLBxx;Rv!{Y@G<2Qx1L9Q#K zH4VzH83T^KDNtJdRC==sGm`pg2bKCgZnn-io#BwFCA3ncwN~J_T#B?Vml>Ch#(|l0 zN=AHq{F$GV%|se$`QobL2xaq(H<4VUv6H3>u;nqi>9d+nAdH)dF{jV{^#k!yrK!wW z_6^Ww;23Zzf6psppaAC9AR3YzuRM%B7#sR1R^e)x-7JlM!J>QzdVF&_iqmi2R|M>&=1VeSS);=14~fK(!fZW zbQAiFn7})UiM)X_(Pj^RHe6+|lR~t;O*zny8fiz?m?^UiH<2MzMSba3PEvJiUvb9y zMI(Dx^m1CpRdb&eZrz+^>gboFQq`xrj6sc>T|jv)vZ}tU*z8?z^;jEhZHmM3e>1Qz zX2Y7-;k%SW+gw8pf(YN5%c^-C- zg5lby4kmK^d1+=WaC0k8Y7Q{H^!^;bEaSz&#Nas9i%bfgAf=xJU}E#5P?@c_yb5D@ zxGWYrw@)bk0EmwCI$DC0hg`YXI;f_4&I@$qkaR8YKT4`Mo9I&V*d|fN?91acGUC#- zUxi7E6rQGrqYZ}mUMQ>Sn)-`*(P^`HE59rR@3-v{%^9qKD-@AciF2gh#(I1S;_Vj+i>JjdAX521l|+PkG1CT#2+wAS^PGj49UlT&!cQ-

*n19iY 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 AIRF3v literal 0 HcmV?d00001 diff --git a/tools/travis_ci_cv_template-p.html b/tools/travis_ci_cv_template-p.html index 51b8944..1b00485 100644 --- a/tools/travis_ci_cv_template-p.html +++ b/tools/travis_ci_cv_template-p.html @@ -80,6 +80,7 @@ * The testing service for private repositories is fee basis while free of charge for public. * TravisPro offers custom deployments on customer's own hardware. * Sends email reports regrading the building status (fail, error, passed) after a pull request or merge operation. +* Auto-testing on multiple environments (language versions, jdks, and so on). # Getting started @@ -100,6 +101,8 @@ language: python python: - '3.5' +language: java +- oraclejdk8 sudo: required dist: trusty install: @@ -107,11 +110,9 @@ addons: apt_packages: - pandoc -script: bash tools/travis-deploy.sh -env: - global: - - ENCRYPTION_LABEL: b88dab5c5665 - - COMMIT_AUTHOR_EMAIL: stefanos1316@gmail.com +script: +- python test1.py +- mvn clean install ``` @@ -127,7 +128,6 @@ |Cores|~2, bursted|2|~2, bursted|2| - # Pushing a PR on GitHub (1) ![](media/github_travis_check.png) @@ -143,6 +143,11 @@ ![](media/github_travis_pass.png) +# Auto-deploying workflow + +![](media/workflow.jpg) + + # Auto-deploying gh-pages with Travis (Linux distros) * Set GitHub Pages option on a repository @@ -159,7 +164,7 @@ * Fork our repository found under this [link](https://github.com/stefanos1316/my_curriculum_vitae) -# Enable Travis webhook on the above repository +# Enable Travis webhook ![](media/getting_started.png) diff --git a/tools/travis_ci_cv_template.html b/tools/travis_ci_cv_template.html index a131d78..fd3e5f0 100644 --- a/tools/travis_ci_cv_template.html +++ b/tools/travis_ci_cv_template.html @@ -68,7 +68,8 @@

About Travis CI

  • Is using cloud infrastructure to host, build, and test various projects.
  • The testing service for private repositories is fee basis while free of charge for public.
  • TravisPro offers custom deployments on customer's own hardware.
  • -
  • Sends email reports regrading the building status (fail, error, passed) after a pull request or merge operation.
  • +
  • Sends email reports regrading the building status (fail, error, passed) after a pull request or merge operation.
  • +
  • Auto-testing on multiple environments (language versions, jdks, and so on).
  • Getting started

    @@ -82,6 +83,8 @@

    .travis.yml example

    language: python
     python:
     - '3.5'
    +language: java
    +- oraclejdk8
     sudo: required
     dist: trusty
     install:
    @@ -89,11 +92,9 @@ 

    .travis.yml example

    addons: apt_packages: - pandoc -script: bash tools/travis-deploy.sh -env: - global: - - ENCRYPTION_LABEL: b88dab5c5665 - - COMMIT_AUTHOR_EMAIL: stefanos1316@gmail.com
    +script: +- python test1.py +- mvn clean install

    Building Environments

    @@ -156,6 +157,8 @@

    Building/Testing on Travis (2)

    Passed from Travis (3)

    +

    Auto-deploying workflow

    +

    Auto-deploying gh-pages with Travis (Linux distros)

    Εσοχές (Indentation)

      @@ -316,17 +318,17 @@

      Κατανόηση Κώδικα (2)

      Προσομοίωση ρίψης ζαριών

      Γράψτε ένα πρόγραμμα που προσομοιώνει τη ρίψη ενός ζεύγους ζαριών. Εκτελέστε το πείραμα μέχρι και τα 2 ζάρια να φέρουν 1 -και στο τέλος να επιστρέφει πόσες ρηψεις χρειάστηκαν. +και στο τέλος να επιστρέφει πόσες ρίψεις χρειάστηκαν.
      -Γράψτε πρόγραμμα που να καλεί και να τρέχει το προηγούμενο πρόγραμμα n φορές και να επιστρέφει το μέσο όρο των φορών -που χρειάστηκε να γίνουν οι ρίψεις των ζαριών ώστε να έχουν και τα δύο 1. +Γράψτε ένα πρόγραμμα που να καλεί και να τρέχει το προηγούμενο πρόγραμμα n<\b> φορές και να επιστρέφει το μέσο όρο των φορών +που χρειάστηκε να γίνουν οι ρίψεις των ζαριών ώστε να έχουν και τα δύο ζάρια 1.

      Εκτύπωση πίνακα διαγώνια

      -Υλοποιείστε ένα πίνακα που να έχει 10 θέσεις και να λαμβάνει 10 αριθμούς από του 1 μέχρι και το 10. Στην συνέχεια υλοποιείστε μια συνάρτηση η οποία θα μπορεί αν μεταφέρει όλα τα στοιχεία από αριστερά προς τα δεξιά, δλδ το πρώτο στοιεχέια να το μεταφέρι στην θέση του δεύτερου, το δεύτερο στην θέση του τρίτου κ.τ.λ. Επίσης το παρόν τελευταίο στοιχείο του πίνακα να μεταφέρετε πάντα στην πρώτη θέση του πινακά. Κάθε φορά που θα μετακινήτε τον πίνακα προς τα αριστερά να εκτυπώνετε τα στοιχεία του σε μία γραμμή. +Υλοποιείστε ένα πίνακα που να έχει 10 θέσεις και να λαμβάνει 10 αριθμούς από το 1 μέχρι και το 10. Στην συνέχεια υλοποιείστε μια συνάρτηση η οποία θα μπορεί να μεταφέρει όλα τα στοιχεία από αριστερά προς τα δεξιά, δλδ το πρώτο στοιχείο να το μεταφέρει στην θέση του δεύτερου, το δεύτερο στην θέση του τρίτου κ.τ.λ. Στο τέλος πρέπει να έχετε το ακόλουθο αποτέλεσμα:
      From 4c7ec1831641c54a02adaa0df4b5b6761c1d86fa Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 16 Oct 2018 15:28:24 +0000 Subject: [PATCH 27/79] Deploy to GitHub Pages: a388da72dd766ff080c44aaef535dfbd669040e5 --- tutorials/tutorial_1_B-p.html | 2 +- tutorials/tutorial_1_B.html | 2 +- tutorials/tutorial_2_A-p.html | 2 +- tutorials/tutorial_2_A.html | 2 +- tutorials/tutorial_2_B-p.html | 2 +- tutorials/tutorial_2_B.html | 2 +- tutorials/tutorial_3_A-p.html | 77 ++++++++++++++++++----------------- tutorials/tutorial_3_A.html | 63 ++++++++++++++-------------- tutorials/tutorial_3_B-p.html | 2 +- tutorials/tutorial_3_B.html | 2 +- tutorials/tutorial_4_A-p.html | 2 +- tutorials/tutorial_4_A.html | 2 +- tutorials/tutorial_4_B-p.html | 2 +- tutorials/tutorial_4_B.html | 2 +- tutorials/tutorial_5_A-p.html | 2 +- tutorials/tutorial_5_A.html | 2 +- tutorials/tutorial_5_B-p.html | 2 +- tutorials/tutorial_5_B.html | 2 +- tutorials/tutorial_6_A-p.html | 2 +- tutorials/tutorial_6_A.html | 2 +- tutorials/tutorial_7_A-p.html | 2 +- tutorials/tutorial_7_A.html | 2 +- tutorials/tutorial_8_A-p.html | 2 +- tutorials/tutorial_8_A.html | 2 +- tutorials/tutorial_8_B-p.html | 2 +- tutorials/tutorial_8_B.html | 2 +- tutorials/tutorial_9_A-p.html | 2 +- tutorials/tutorial_9_A.html | 2 +- tutorials/tutorial_9_B-p.html | 2 +- tutorials/tutorial_9_B.html | 2 +- 30 files changed, 99 insertions(+), 97 deletions(-) diff --git a/tutorials/tutorial_1_B-p.html b/tutorials/tutorial_1_B-p.html index 3ac518e..f987eca 100644 --- a/tutorials/tutorial_1_B-p.html +++ b/tutorials/tutorial_1_B-p.html @@ -36,7 +36,7 @@ ## Φροντιστήριο 1 (Β' μέρος) * [Στέφανος Γεωργίου](https://www.balab.aueb.gr/stefanos-georgiou.html) -* [Κωνσταντίος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) +* [Κωνσταντίνος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) ## Περιεχόμενα diff --git a/tutorials/tutorial_1_B.html b/tutorials/tutorial_1_B.html index f9dc9c3..f475007 100644 --- a/tutorials/tutorial_1_B.html +++ b/tutorials/tutorial_1_B.html @@ -35,7 +35,7 @@

      Προγραμματισμός ΙΙ

      Φροντιστήριο 1 (Β' μέρος)

      Περιεχόμενα

        diff --git a/tutorials/tutorial_2_A-p.html b/tutorials/tutorial_2_A-p.html index 66bc90b..101d240 100644 --- a/tutorials/tutorial_2_A-p.html +++ b/tutorials/tutorial_2_A-p.html @@ -36,7 +36,7 @@ ## Χειρισμός GitHub * [Στέφανος Γεωργίου](https://www.balab.aueb.gr/stefanos-georgiou.html) -* [Κωνσταντίος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) +* [Κωνσταντίνος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) # GitHub diff --git a/tutorials/tutorial_2_A.html b/tutorials/tutorial_2_A.html index c161c52..ff39482 100644 --- a/tutorials/tutorial_2_A.html +++ b/tutorials/tutorial_2_A.html @@ -35,7 +35,7 @@

        Προγραμματισμός ΙΙ

        Χειρισμός GitHub

        GitHub

        diff --git a/tutorials/tutorial_2_B-p.html b/tutorials/tutorial_2_B-p.html index 72793d3..eae1a10 100644 --- a/tutorials/tutorial_2_B-p.html +++ b/tutorials/tutorial_2_B-p.html @@ -36,7 +36,7 @@ ## Κανόνες μορφοποιήσης * [Στέφανος Γεωργίου](https://www.balab.aueb.gr/stefanos-georgiou.html) -* [Κωνσταντίος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) +* [Κωνσταντίνος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) ## Καλογραμμένος Κώδικας diff --git a/tutorials/tutorial_2_B.html b/tutorials/tutorial_2_B.html index f2783b4..324c100 100644 --- a/tutorials/tutorial_2_B.html +++ b/tutorials/tutorial_2_B.html @@ -35,7 +35,7 @@

        Προγραμματισμός ΙΙ

        Κανόνες μορφοποιήσης

        Καλογραμμένος Κώδικας

          diff --git a/tutorials/tutorial_3_A-p.html b/tutorials/tutorial_3_A-p.html index af430d0..c02fe5a 100644 --- a/tutorials/tutorial_3_A-p.html +++ b/tutorials/tutorial_3_A-p.html @@ -36,14 +36,14 @@ ## Έλεγχος ροής προγράμματος * [Στέφανος Γεωργίου](https://www.balab.aueb.gr/stefanos-georgiou.html) -* [Κωνσταντίος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) +* [Κωνσταντίνος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) ## Συνθήκες * Μια συνθήκη είναι μια λογική καλώς συντεταγμένη έκφραση η οποία μπορεί να εκτιμηθεί μονοσήμαντα είτε ως αληθής είτε ως ψευδής. -* Με τη βοήθεια συνθηκών μπορούμε να ελένξουμε τη ροή ενός προγράμματος καθώς και +* Με τη βοήθεια συνθηκών μπορούμε να ελέγξουμε τη ροή ενός προγράμματος καθώς και να επαναλάβουμε ρουτίνες. * Φυσικά κάθε boolean μεταβλητή, από μόνη της, είναι μια συνθήκη. * Μπορούμε να δημιουργήσουμε συνθήκες απο μη boolean μεταβλητές με τη βοήθεια @@ -65,7 +65,7 @@ | == | ίσο | | != | διάφορο | -* Επίσης, μπορούν να φτιαχτούν από το χρήστη δικοί του συγκρισιακοί τελεστές +* Επίσης, μπορούν να φτιαχτούν από τον χρήστη δικοί του συγκρισιακοί τελεστές ανάλογα με τις ανάγκες του. @@ -118,7 +118,7 @@ ## if/else * Με το "if/else" μπορούμε να εκτελέσουμε ένα κομμάτι κώδικα μόνο όταν -ικανοποιείται μια συγκεκριμένη συνθήκη αλλιώς θα εκτελεστει ενα διαφορετικό +ικανοποιείται μια συγκεκριμένη συνθήκη αλλιώς θα εκτελεστεί ενα διαφορετικό κομμάτι κώδικα. Η δομή της "if/else" είναι η ακόλουθη: ```java if (συνθήκη) { @@ -143,7 +143,7 @@ ## if/elseif/else -* Με το "if/elseif/else" μπορούμε να αντιστοιχίσουμε συγκεκριμένες συνθήκες +* Με το "if/else if/else" μπορούμε να αντιστοιχίσουμε συγκεκριμένες συνθήκες με συγκεκριμένα κομμάτια. Το κομμάτι κώδικα που θα εκτελεστεί θα είναι εκείνο του οποίου η αντίστοιχη συνθήκη θα ικανοποιηθεί πρώτα. Η δομή είναι η ακόλουθη: @@ -155,7 +155,7 @@ } else if (καιΑλληΣυνθηκη) { // κι αλλο σώμα κώδικα } else { - // αν δεν ικανοποιηθεί καμια απο τις παραπανω συνθηκες σώμα κώδικα + // αν δεν ικανοποιηθεί καμία από τις παραπάνω συνθήκες σώμα κώδικα } ``` @@ -176,9 +176,9 @@ ## Παρατηρήσεις -* Σε μια "if/elseif/else" μπορεί να ικανοποιούνται πολλές συνθήκες αλλα μονο ο -κώδικας της πρώτης στη σειρά ικανοποιημένης συνθήκης θα εκτελεσθεί. Στο παράδειγμα -μόνο το δεύτερο σώμα κώδικα θα εκτελεσθεί παρ'όλο που ικανοποιείται και η τρίτη +* Σε μια "if/else if/else" μπορεί να ικανοποιούνται πολλές συνθήκες αλλά μόνο ο +κώδικας της πρώτης στη σειρά ικανοποιημένης συνθήκης θα εκτελεστεί. Στο παράδειγμα +μόνο το δεύτερο σώμα κώδικα θα εκτελεσθεί παρ' όλο που ικανοποιείται και η τρίτη συνθήκη. ```java @@ -195,14 +195,14 @@ ## switch -* Σε περιπτώσεις που οι συνθήκη που θα εξετασθεί είναι απλή και οι περιπτώσεις -είναι πολλές αντί να χρησιμοποιηθεί "if/elseif/else", μπορεί να χρησιμοποιηθεί +* Σε περιπτώσεις που η συνθήκη που θα εξεταστεί είναι απλή και οι περιπτώσεις +είναι πολλές αντί να χρησιμοποιηθεί "if/else if/else", μπορεί να χρησιμοποιηθεί η "switch". Η δομή της "switch" είναι η ακόλουθη: ```java switch (variable) { case value1: - // σωμα1 + // σώμα 1 break; case value2: // σώμα 2 @@ -249,16 +249,16 @@ μπορούμε να χρησιμοποιήσουμε "?:" με την ακόλουθη δομή: ```java -συνθήκη ? εντολή1 : εντολη2; +συνθήκη ? εντολή 1 : εντολή 2; ``` -που σημαίνει ότι αν ικανοποιείται η συνθήκη το πρόγραμμα θα τρέξει την "εντολή1" -αλλιώς θα τρέξει την "εντολή2" +που σημαίνει ότι αν ικανοποιείται η συνθήκη το πρόγραμμα θα τρέξει την "εντολή 1" +αλλιώς θα τρέξει την "εντολή 2" ## for -* Συχνά στον προγραμματισμό υπάρχει η ανάγκη να γίνει μια επναλαμβανόμενη +* Συχνά στον προγραμματισμό υπάρχει η ανάγκη να γίνει μια επαναλαμβανόμενη διαδικασία πάνω σε ένα σύνολο στοιχείων που ικανοποιούν κάποια συνθήκη. * Η "for" επανάληψη είναι ένας από τους τρόπους, όπου η Java, δίνει τη δυνατότητα σε κάποιο χρήστη να χειρίζεται τέτοιες επαναλαμβανόμενες διαδικασίες. Η δομή της @@ -279,13 +279,13 @@ * Η 'συνθήκη' εξετάζεται αν ικανοποιείται πριν από κάθε κύκλο (iteration) στην επανάληψη σε μια 'for'. Όσο ικανοποιείται η 'συνθήκη' τότε ο κώδικας στο σώμα της 'for' θα εκτελείται. Αν κάποια στιγμή η 'συνθήκη' δεν ικανοποιηθεί τότε το σώμα -δε θα εκτελεσθεί και το πρόγραμμα θα συνεχίσει στην πρώτη εντολή μετά την 'for'. +δε θα εκτελεστεί και το πρόγραμμα θα συνεχίσει στην πρώτη εντολή μετά την 'for'. ## Παράδειγμα ```java -// Άρθροισμα στοιχείων ενός πίνακα για κάθε δεύτερο δείκτη του. +// Άθροισμα στοιχείων ενός πίνακα για κάθε δεύτερο δείκτη του. public static int calculateSumOfEvenIndexes(int[] array) { int sum = 0; for (int i = 1; i < array.length; i += 2) { @@ -310,13 +310,13 @@ * Όπως και στη 'for' έτσι και στη 'while' η συνθήκη ελέγχεται πριν από κάθε κύκλο στην επανάληψη και όσο ικανοποιείται εκτελείται ο κώδικας στο σώμα της. Όταν σταματήσει να ικανοποιείται η συνθήκη για πρώτη φορά τότε το πρόγραμμα δεν -εκτελει το σώμα της επανάληψης και μεταβαίνει στη πρώτη εντολή μετά από αυτήν. +εκτελεί το σώμα της επανάληψης και μεταβαίνει στη πρώτη εντολή μετά από αυτήν. ## Παράδειγμα ```java -// Άρθροισμα στοιχείων ενός πίνακα για κάθε δεύτερο δείκτη του. +// Άθροισμα στοιχείων ενός πίνακα για κάθε δεύτερο δείκτη του. public static int calculateSumOfEvenIndexes(int[] array) { int sum = 0; int index = 1; @@ -349,20 +349,20 @@ * Σε αντίθεση με την 'while', στη 'do...while' η συνθήκη εξετάζεται αφού εκτελεστεί ο κώδικας στο σώμα της. Αν ικανοποιήθει η συνθήκη τότε η επανάληψη -συνεχίζει, αλλιώς σταματάει και συνεχίζει το πρόγραμμα απο την πρώτη εντολή μετά -απο αυτή. +συνεχίζει, αλλιώς σταματάει και συνεχίζει το πρόγραμμα από την πρώτη εντολή μετά +από αυτή. ## Άσκηση -* Να εξηγήσετε τις διαφορες 'while' με τη 'do...while'. Είναι ισοδύναμες; +* Να εξηγήσετε τις διαφορές 'while' με τη 'do...while'. Είναι ισοδύναμες; ## Η ενισχυμένη for -* Συχνά θέλουμε να προσπελάσουμε όλα τα στοιχεία μιάς συλλογής όπως κάποιος +* Συχνά θέλουμε να προσπελάσουμε όλα τα στοιχεία μιας συλλογής όπως κάποιος πίνακας, ή κάποιο αντικείμενο της ArrayList κλάσης. Τότε η java προσφέρει ένα -κομψό τρόπο χωρίς τον ρητό ορισμό δεκτών ή συνθηκών στο μήκος της συλλογής. +κομψό τρόπο χωρίς τον ρητό ορισμό δεικτών ή συνθηκών στο μήκος της συλλογής. Η δομή της ενισχυμένης 'for' είναι η εξής: ```java @@ -374,9 +374,9 @@ ## Παρατηρήσεις -* Η 'συλλογή' αναφέρεται σε σύλλογη αντικειμένων που θα προσπελαστεί όπως ένας πίνακας ή ένα object της ArrayList +* Η 'συλλογή' αναφέρεται σε σύλλογη αντικειμένων που θα προσπελαστεί όπως ένας πίνακας ή ένα object της ArrayList. * Ο 'Τύπος' αναφέρεται στον τύπο των στοιχείων που βρίσκονται μέσα στη συλλογή. -* Η 'μεταβλητή' αναφέρεται στο στοιχείο που προσπερνά εκείνη τη στιγμή η επανάληψη. Η προσπέλαση θα γίνει σε όλα τα στοιχεία με την σειρα που βρίσκονται στη συλλογη εκτος κι αν υπάρξει εντολή εξόδου (return, break) ή κάποιο σφάλμα. +* Η 'μεταβλητή' αναφέρεται στο στοιχείο που προσπελαύνει εκείνη τη στιγμή η επανάληψη. Η προσπέλαση θα γίνει σε όλα τα στοιχεία με την σειρα που βρίσκονται στη συλλογή εκτός κι αν υπάρξει εντολή εξόδου (return, break) ή κάποιο σφάλμα. * Η ενισχυμένη 'for' είναι γνωστή και ως 'for-each' επανάληψη. * Μπορεί ο χρήστης να φτιάξει δικές του δομές δεδομένων που να μπορεί να τις προσπελάσει με την ενισχυμένη 'for' αρκεί να υλοποιήσει τη διεπαφή (interface) iterable. (Πληροφορίες https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html) @@ -386,10 +386,10 @@
          Σε κάποιες περιπτώσεις μπορεί να είναι απαραίτητο να διακοπεί η επανάληψη -πρόωρα. Η εντολή 'break' με το που διαβαστεί στο σώμα κάποιας έπανάληψης, -τερματίζει άμεσα αύτη την επανάληψη και συνεχίζει το πρόγραμμα απο την αμέσως -επόμενη εντολή. Αν η επανάληψη με την εντολή 'break 'ειναι εμφολευμένη σε άλλη -εξωτερική επανάληψη, τοτέ η δεύτερη επανάληψη δεν επιρρεάζεται από το 'break' +πρόωρα. Η εντολή 'break' με το που διαβαστεί στο σώμα κάποιας επανάληψης, +τερματίζει άμεσα αυτή την επανάληψη και συνεχίζει το πρόγραμμα απο την αμέσως +επόμενη εντολή. Αν η επανάληψη με την εντολή 'break' είναι εμφολευμένη σε άλλη +εξωτερική επανάληψη, τοτέ η δεύτερη επανάληψη δεν επηρρεάζεται από το 'break' της πρώτης.
          @@ -415,7 +415,7 @@ να μη πρέπει να επεξεργαστεί. Σε αυτή τη περίπτωση μπορεί να χρησιμοποιήθει η εντολή 'continue'. Με το που διαβαστεί αυτή η εντολή το πρόγραμμα δε διαβάζει το υπόλοιπο σώμα της επανάληψης και ξεκινάει κατευθείαν τον επόμενο κύκλο. Όπως και -στην περίπτωση της 'break' η 'continue' επηρεάζει μόνο την άμεση επανάληψη στο +στην περίπτωση της 'break' η 'continue' επηρρεάζει μόνο την άμεση επανάληψη στο σώμα της οποίας βρίσκεται η εντολή. @@ -443,16 +443,17 @@ * Αναδρομή, στον προγραμματισμό συγκεκριμένα, είναι η διαδικασία με την οποία μια συνάρτηση καλεί τον εαυτό της στο σώμα της. Η διαδικασία αυτή είναι συχνά χρήσιμη για την πραγματοποίηση επαναληπτικών ρουτινών. Για την αποφυγή ατέρμονων -κλήσεων, ο χρήστης, όταν καταφεύγει στην αναδρομη, θα πρέπει να διασφαλίσει δύο +κλήσεων, ο χρήστης, όταν καταφεύγει στην αναδρομή, θα πρέπει να διασφαλίσει δύο πράγματα. * Kάθε επόμενη κλήση της συνάρτησης θα πρέπει να αντιμετωπίζει μικρότερο κομμάτι του προβλήματος από ότι η προηγούμενη κλήση. - * Θα πρέπει να υπάρχει μια βασική διαχείριση απο τη συνάρτηση όταν το πρόβλημα γινει αρκετά μίκρό (τερματική συνθήκη). + * Θα πρέπει να υπάρχει μια βασική διαχείριση από τη συνάρτηση όταν το πρόβλημα γινει αρκετά μικρό (τερματική συνθήκη). ## Παράδειγμα ```java -public static int binarySearch(int[] array, int key, int start, int end) { +public static int binarySearch(int[] array, int key, int start, + int end) { if (start > end) { return -1; } @@ -472,9 +473,9 @@ * Συχνά ο κώδικας με χρήση αναδρομής είναι πιο "συμπαγής" και κομψός από ότι με άλλους τρόπους επανάληψης. -* Υπάρχουν κομψοί μη τετριμμένοι αλγοριθμοι όπου η αναδρομική προσέγγιση +* Υπάρχουν κομψοί μη τετριμμένοι αλγόριθμοι όπου η αναδρομική προσέγγιση ενδείκνυται για τη μελέτη τους. Ένα παράδειγμα είναι οι αλγόριθμοι που -ακολουθουν το αλγοριθμικό πρότυπο του "διαιρεί και βασίλευε". +ακολουθούν το αλγοριθμικό πρότυπο του "διαίρει και βασίλευε". ## Παρατηρήσεις - Τα αρνητικά της αναδρομής @@ -499,7 +500,7 @@ ## Άσκηση -* Να γράψετε boolean συνάτηση που να δέχεται τρεις αριθμούς και να επιστρέφει true +* Να γράψετε boolean συνάρτηση που να δέχεται τρεις αριθμούς και να επιστρέφει true αν και οι τρεις είναι ίσοι αλλιώς να επιστρέφει false. diff --git a/tutorials/tutorial_3_A.html b/tutorials/tutorial_3_A.html index 0f40a2c..31fb37f 100644 --- a/tutorials/tutorial_3_A.html +++ b/tutorials/tutorial_3_A.html @@ -35,12 +35,12 @@

          Προγραμματισμός ΙΙ

          Έλεγχος ροής προγράμματος

          Συνθήκες

          • Μια συνθήκη είναι μια λογική καλώς συντεταγμένη έκφραση η οποία μπορεί να εκτιμηθεί
            μονοσήμαντα είτε ως αληθής είτε ως ψευδής.
          • -
          • Με τη βοήθεια συνθηκών μπορούμε να ελένξουμε τη ροή ενός προγράμματος καθώς και
            να επαναλάβουμε ρουτίνες.
          • +
          • Με τη βοήθεια συνθηκών μπορούμε να ελέγξουμε τη ροή ενός προγράμματος καθώς και
            να επαναλάβουμε ρουτίνες.
          • Φυσικά κάθε boolean μεταβλητή, από μόνη της, είναι μια συνθήκη.
          • Μπορούμε να δημιουργήσουμε συνθήκες απο μη boolean μεταβλητές με τη βοήθεια
            συγκριτικών τελεστών (παρακάτω).
          • Μπορούμε να παράγουμε σύνθετες συνθήκες από πιο απλές με τη βοήθεια των λογικών
            τελεστών (παρακάτω).
          • @@ -78,7 +78,7 @@

            Συγκρισιακοί τελεστές.

      -
    • Επίσης, μπορούν να φτιαχτούν από το χρήστη δικοί του συγκρισιακοί τελεστές
      ανάλογα με τις ανάγκες του.
    • +
    • Επίσης, μπορούν να φτιαχτούν από τον χρήστη δικοί του συγκρισιακοί τελεστές
      ανάλογα με τις ανάγκες του.

    Λογικοί τελεστές.

      @@ -105,7 +105,7 @@

      Παράδειγμα

      }

      if/else

        -
      • Με το "if/else" μπορούμε να εκτελέσουμε ένα κομμάτι κώδικα μόνο όταν
        ικανοποιείται μια συγκεκριμένη συνθήκη αλλιώς θα εκτελεστει ενα διαφορετικό
        κομμάτι κώδικα. Η δομή της "if/else" είναι η ακόλουθη:

        +
      • Με το "if/else" μπορούμε να εκτελέσουμε ένα κομμάτι κώδικα μόνο όταν
        ικανοποιείται μια συγκεκριμένη συνθήκη αλλιώς θα εκτελεστεί ενα διαφορετικό
        κομμάτι κώδικα. Η δομή της "if/else" είναι η ακόλουθη:

        if (συνθήκη) {
             // σώμα κώδικα
         } else {
        @@ -121,7 +121,7 @@ 

        Παράδειγμα

        }

        if/elseif/else

          -
        • Με το "if/elseif/else" μπορούμε να αντιστοιχίσουμε συγκεκριμένες συνθήκες
          με συγκεκριμένα κομμάτια. Το κομμάτι κώδικα που θα εκτελεστεί θα είναι εκείνο του
          οποίου η αντίστοιχη συνθήκη θα ικανοποιηθεί πρώτα. Η δομή είναι η ακόλουθη:
        • +
        • Με το "if/else if/else" μπορούμε να αντιστοιχίσουμε συγκεκριμένες συνθήκες
          με συγκεκριμένα κομμάτια. Το κομμάτι κώδικα που θα εκτελεστεί θα είναι εκείνο του
          οποίου η αντίστοιχη συνθήκη θα ικανοποιηθεί πρώτα. Η δομή είναι η ακόλουθη:
        if (συνθήκη) {
             // σώμα κώδικα
        @@ -130,7 +130,7 @@ 

        if/elseif/else

        } else if (καιΑλληΣυνθηκη) { // κι αλλο σώμα κώδικα } else { - // αν δεν ικανοποιηθεί καμια απο τις παραπανω συνθηκες σώμα κώδικα + // αν δεν ικανοποιηθεί καμία από τις παραπάνω συνθήκες σώμα κώδικα }

        Παράδειγμα

        int mark = 7;
        @@ -143,7 +143,7 @@ 

        Παράδειγμα

        }

        Παρατηρήσεις

          -
        • Σε μια "if/elseif/else" μπορεί να ικανοποιούνται πολλές συνθήκες αλλα μονο ο
          κώδικας της πρώτης στη σειρά ικανοποιημένης συνθήκης θα εκτελεσθεί. Στο παράδειγμα
          μόνο το δεύτερο σώμα κώδικα θα εκτελεσθεί παρ'όλο που ικανοποιείται και η τρίτη
          συνθήκη.
        • +
        • Σε μια "if/else if/else" μπορεί να ικανοποιούνται πολλές συνθήκες αλλά μόνο ο
          κώδικας της πρώτης στη σειρά ικανοποιημένης συνθήκης θα εκτελεστεί. Στο παράδειγμα
          μόνο το δεύτερο σώμα κώδικα θα εκτελεσθεί παρ' όλο που ικανοποιείται και η τρίτη
          συνθήκη.
        int mark = 7;
         if (mark < 5) {
        @@ -155,11 +155,11 @@ 

        Παρατηρήσεις

        }

        switch

          -
        • Σε περιπτώσεις που οι συνθήκη που θα εξετασθεί είναι απλή και οι περιπτώσεις
          είναι πολλές αντί να χρησιμοποιηθεί "if/elseif/else", μπορεί να χρησιμοποιηθεί
          η "switch". Η δομή της "switch" είναι η ακόλουθη:
        • +
        • Σε περιπτώσεις που η συνθήκη που θα εξεταστεί είναι απλή και οι περιπτώσεις
          είναι πολλές αντί να χρησιμοποιηθεί "if/else if/else", μπορεί να χρησιμοποιηθεί
          η "switch". Η δομή της "switch" είναι η ακόλουθη:
        switch (variable) {
             case value1:
        -        // σωμα1
        +        // σώμα 1
                 break;
             case value2:
                 // σώμα 2
        @@ -192,11 +192,11 @@ 

        ?:

        • Σε περίπτωση που έχουμε μια σύντομη συνθήκη σε "if/else" με μικρό σώμα εντολών
          μπορούμε να χρησιμοποιήσουμε "?:" με την ακόλουθη δομή:
        -
        συνθήκη ? εντολή1 : εντολη2;
        -

        που σημαίνει ότι αν ικανοποιείται η συνθήκη το πρόγραμμα θα τρέξει την "εντολή1"
        αλλιώς θα τρέξει την "εντολή2"

        +
        συνθήκη ? εντολή 1 : εντολή 2;
        +

        που σημαίνει ότι αν ικανοποιείται η συνθήκη το πρόγραμμα θα τρέξει την "εντολή 1"
        αλλιώς θα τρέξει την "εντολή 2"

        for

          -
        • Συχνά στον προγραμματισμό υπάρχει η ανάγκη να γίνει μια επναλαμβανόμενη
          διαδικασία πάνω σε ένα σύνολο στοιχείων που ικανοποιούν κάποια συνθήκη.
        • +
        • Συχνά στον προγραμματισμό υπάρχει η ανάγκη να γίνει μια επαναλαμβανόμενη
          διαδικασία πάνω σε ένα σύνολο στοιχείων που ικανοποιούν κάποια συνθήκη.
        • Η "for" επανάληψη είναι ένας από τους τρόπους, όπου η Java, δίνει τη δυνατότητα σε
          κάποιο χρήστη να χειρίζεται τέτοιες επαναλαμβανόμενες διαδικασίες. Η δομή της
          "for" επανάληψης είναι η ακόλουθη:
        for (αρχικοποίηση; συνθήκη; μεταβολή) {
        @@ -205,10 +205,10 @@ 

        for

        for(2)

        • Η 'αρχικοποίηση' είναι μια δέσμη εντολών η οποία τρέχει μια φορά αμέσως πριν
          αρχίσει η επανάληψη. Συνήθως στην 'αρχικοποίηση' υπάρχει μόνο μια αρχικοποίηση
          κάποιου δείκτη.
        • -
        • Η 'συνθήκη' εξετάζεται αν ικανοποιείται πριν από κάθε κύκλο (iteration) στην
          επανάληψη σε μια 'for'. Όσο ικανοποιείται η 'συνθήκη' τότε ο κώδικας στο σώμα της
          'for' θα εκτελείται. Αν κάποια στιγμή η 'συνθήκη' δεν ικανοποιηθεί τότε το σώμα
          δε θα εκτελεσθεί και το πρόγραμμα θα συνεχίσει στην πρώτη εντολή μετά την 'for'.
        • +
        • Η 'συνθήκη' εξετάζεται αν ικανοποιείται πριν από κάθε κύκλο (iteration) στην
          επανάληψη σε μια 'for'. Όσο ικανοποιείται η 'συνθήκη' τότε ο κώδικας στο σώμα της
          'for' θα εκτελείται. Αν κάποια στιγμή η 'συνθήκη' δεν ικανοποιηθεί τότε το σώμα
          δε θα εκτελεστεί και το πρόγραμμα θα συνεχίσει στην πρώτη εντολή μετά την 'for'.

        Παράδειγμα

        -
        // Άρθροισμα στοιχείων ενός πίνακα για κάθε δεύτερο δείκτη του.
        +
        // Άθροισμα στοιχείων ενός πίνακα για κάθε δεύτερο δείκτη του.
         public static int calculateSumOfEvenIndexes(int[] array) {
             int sum = 0;
             for (int i = 1; i < array.length; i += 2) {
        @@ -224,10 +224,10 @@ 

        while

        // κώδικας }
          -
        • Όπως και στη 'for' έτσι και στη 'while' η συνθήκη ελέγχεται πριν από κάθε
          κύκλο στην επανάληψη και όσο ικανοποιείται εκτελείται ο κώδικας στο σώμα της.
          Όταν σταματήσει να ικανοποιείται η συνθήκη για πρώτη φορά τότε το πρόγραμμα δεν
          εκτελει το σώμα της επανάληψης και μεταβαίνει στη πρώτη εντολή μετά από αυτήν.
        • +
        • Όπως και στη 'for' έτσι και στη 'while' η συνθήκη ελέγχεται πριν από κάθε
          κύκλο στην επανάληψη και όσο ικανοποιείται εκτελείται ο κώδικας στο σώμα της.
          Όταν σταματήσει να ικανοποιείται η συνθήκη για πρώτη φορά τότε το πρόγραμμα δεν
          εκτελεί το σώμα της επανάληψης και μεταβαίνει στη πρώτη εντολή μετά από αυτήν.

        Παράδειγμα

        -
        // Άρθροισμα στοιχείων ενός πίνακα για κάθε δεύτερο δείκτη του.
        +
        // Άθροισμα στοιχείων ενός πίνακα για κάθε δεύτερο δείκτη του.
         public static int calculateSumOfEvenIndexes(int[] array) {
             int sum = 0;
             int index = 1;
        @@ -249,34 +249,34 @@ 

        do...while

        // κώδικας } while (συνθήκη);
          -
        • Σε αντίθεση με την 'while', στη 'do...while' η συνθήκη εξετάζεται αφού
          εκτελεστεί ο κώδικας στο σώμα της. Αν ικανοποιήθει η συνθήκη τότε η επανάληψη
          συνεχίζει, αλλιώς σταματάει και συνεχίζει το πρόγραμμα απο την πρώτη εντολή μετά
          απο αυτή.
        • +
        • Σε αντίθεση με την 'while', στη 'do...while' η συνθήκη εξετάζεται αφού
          εκτελεστεί ο κώδικας στο σώμα της. Αν ικανοποιήθει η συνθήκη τότε η επανάληψη
          συνεχίζει, αλλιώς σταματάει και συνεχίζει το πρόγραμμα από την πρώτη εντολή μετά
          από αυτή.

        Άσκηση

          -
        • Να εξηγήσετε τις διαφορες 'while' με τη 'do...while'. Είναι ισοδύναμες;
        • +
        • Να εξηγήσετε τις διαφορές 'while' με τη 'do...while'. Είναι ισοδύναμες;

        Η ενισχυμένη for

          -
        • Συχνά θέλουμε να προσπελάσουμε όλα τα στοιχεία μιάς συλλογής όπως κάποιος
          πίνακας, ή κάποιο αντικείμενο της ArrayList κλάσης. Τότε η java προσφέρει ένα
          κομψό τρόπο χωρίς τον ρητό ορισμό δεκτών ή συνθηκών στο μήκος της συλλογής.
          Η δομή της ενισχυμένης 'for' είναι η εξής:
        • +
        • Συχνά θέλουμε να προσπελάσουμε όλα τα στοιχεία μιας συλλογής όπως κάποιος
          πίνακας, ή κάποιο αντικείμενο της ArrayList κλάσης. Τότε η java προσφέρει ένα
          κομψό τρόπο χωρίς τον ρητό ορισμό δεικτών ή συνθηκών στο μήκος της συλλογής.
          Η δομή της ενισχυμένης 'for' είναι η εξής:
        for (Τύπος μεταβλητή : συλλογή) {
             // Κώδικας
         }

        Παρατηρήσεις

          -
        • Η 'συλλογή' αναφέρεται σε σύλλογη αντικειμένων που θα προσπελαστεί όπως ένας πίνακας ή ένα object της ArrayList
        • +
        • Η 'συλλογή' αναφέρεται σε σύλλογη αντικειμένων που θα προσπελαστεί όπως ένας πίνακας ή ένα object της ArrayList.
        • Ο 'Τύπος' αναφέρεται στον τύπο των στοιχείων που βρίσκονται μέσα στη συλλογή.
        • -
        • Η 'μεταβλητή' αναφέρεται στο στοιχείο που προσπερνά εκείνη τη στιγμή η επανάληψη. Η προσπέλαση θα γίνει σε όλα τα στοιχεία με την σειρα που βρίσκονται στη συλλογη εκτος κι αν υπάρξει εντολή εξόδου (return, break) ή κάποιο σφάλμα.
        • +
        • Η 'μεταβλητή' αναφέρεται στο στοιχείο που προσπελαύνει εκείνη τη στιγμή η επανάληψη. Η προσπέλαση θα γίνει σε όλα τα στοιχεία με την σειρα που βρίσκονται στη συλλογή εκτός κι αν υπάρξει εντολή εξόδου (return, break) ή κάποιο σφάλμα.
        • Η ενισχυμένη 'for' είναι γνωστή και ως 'for-each' επανάληψη.
        • Μπορεί ο χρήστης να φτιάξει δικές του δομές δεδομένων που να μπορεί να τις προσπελάσει με την ενισχυμένη 'for' αρκεί να υλοποιήσει τη διεπαφή (interface) iterable.
          (Πληροφορίες https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html)

        Η εντολή 'break'

        Σε κάποιες περιπτώσεις μπορεί να είναι απαραίτητο να διακοπεί η επανάληψη -πρόωρα. Η εντολή 'break' με το που διαβαστεί στο σώμα κάποιας έπανάληψης, -τερματίζει άμεσα αύτη την επανάληψη και συνεχίζει το πρόγραμμα απο την αμέσως -επόμενη εντολή. Αν η επανάληψη με την εντολή 'break 'ειναι εμφολευμένη σε άλλη -εξωτερική επανάληψη, τοτέ η δεύτερη επανάληψη δεν επιρρεάζεται από το 'break' +πρόωρα. Η εντολή 'break' με το που διαβαστεί στο σώμα κάποιας επανάληψης, +τερματίζει άμεσα αυτή την επανάληψη και συνεχίζει το πρόγραμμα απο την αμέσως +επόμενη εντολή. Αν η επανάληψη με την εντολή 'break' είναι εμφολευμένη σε άλλη +εξωτερική επανάληψη, τοτέ η δεύτερη επανάληψη δεν επηρρεάζεται από το 'break' της πρώτης.
        @@ -297,7 +297,7 @@

        Η εντολή 'continue'

        να μη πρέπει να επεξεργαστεί. Σε αυτή τη περίπτωση μπορεί να χρησιμοποιήθει η εντολή 'continue'. Με το που διαβαστεί αυτή η εντολή το πρόγραμμα δε διαβάζει το υπόλοιπο σώμα της επανάληψης και ξεκινάει κατευθείαν τον επόμενο κύκλο. Όπως και -στην περίπτωση της 'break' η 'continue' επηρεάζει μόνο την άμεση επανάληψη στο +στην περίπτωση της 'break' η 'continue' επηρρεάζει μόνο την άμεση επανάληψη στο σώμα της οποίας βρίσκεται η εντολή.
    @@ -318,14 +318,15 @@

    Παράδειγμα

    }

    Αναδρομή

      -
    • Αναδρομή, στον προγραμματισμό συγκεκριμένα, είναι η διαδικασία με την οποία
      μια συνάρτηση καλεί τον εαυτό της στο σώμα της. Η διαδικασία αυτή είναι συχνά
      χρήσιμη για την πραγματοποίηση επαναληπτικών ρουτινών. Για την αποφυγή ατέρμονων
      κλήσεων, ο χρήστης, όταν καταφεύγει στην αναδρομη, θα πρέπει να διασφαλίσει δύο
      πράγματα.

      +
    • Αναδρομή, στον προγραμματισμό συγκεκριμένα, είναι η διαδικασία με την οποία
      μια συνάρτηση καλεί τον εαυτό της στο σώμα της. Η διαδικασία αυτή είναι συχνά
      χρήσιμη για την πραγματοποίηση επαναληπτικών ρουτινών. Για την αποφυγή ατέρμονων
      κλήσεων, ο χρήστης, όταν καταφεύγει στην αναδρομή, θα πρέπει να διασφαλίσει δύο
      πράγματα.

      • Kάθε επόμενη κλήση της συνάρτησης θα πρέπει να αντιμετωπίζει μικρότερο κομμάτι του προβλήματος από ότι η προηγούμενη κλήση.
      • -
      • Θα πρέπει να υπάρχει μια βασική διαχείριση απο τη συνάρτηση όταν το πρόβλημα γινει αρκετά μίκρό (τερματική συνθήκη).
      • +
      • Θα πρέπει να υπάρχει μια βασική διαχείριση από τη συνάρτηση όταν το πρόβλημα γινει αρκετά μικρό (τερματική συνθήκη).

    Παράδειγμα

    -
    public static int binarySearch(int[] array, int key, int start, int end) {
    +
    public static int binarySearch(int[] array, int key, int start,
    +    int end) {
         if (start > end) {
             return -1;
         }
    @@ -341,7 +342,7 @@ 

    Παράδειγμα

    Παρατηρήσεις - Τα θετικά της αναδρομής

    • Συχνά ο κώδικας με χρήση αναδρομής είναι πιο "συμπαγής" και κομψός από ότι με
      άλλους τρόπους επανάληψης.
    • -
    • Υπάρχουν κομψοί μη τετριμμένοι αλγοριθμοι όπου η αναδρομική προσέγγιση
      ενδείκνυται για τη μελέτη τους. Ένα παράδειγμα είναι οι αλγόριθμοι που
      ακολουθουν το αλγοριθμικό πρότυπο του "διαιρεί και βασίλευε".
    • +
    • Υπάρχουν κομψοί μη τετριμμένοι αλγόριθμοι όπου η αναδρομική προσέγγιση
      ενδείκνυται για τη μελέτη τους. Ένα παράδειγμα είναι οι αλγόριθμοι που
      ακολουθούν το αλγοριθμικό πρότυπο του "διαίρει και βασίλευε".

    Παρατηρήσεις - Τα αρνητικά της αναδρομής

      @@ -359,7 +360,7 @@

      Άσκηση

    Άσκηση

      -
    • Να γράψετε boolean συνάτηση που να δέχεται τρεις αριθμούς και να επιστρέφει true
      αν και οι τρεις είναι ίσοι αλλιώς να επιστρέφει false.
    • +
    • Να γράψετε boolean συνάρτηση που να δέχεται τρεις αριθμούς και να επιστρέφει true
      αν και οι τρεις είναι ίσοι αλλιώς να επιστρέφει false.

    Άσκηση

      diff --git a/tutorials/tutorial_3_B-p.html b/tutorials/tutorial_3_B-p.html index bb9618a..f4dbdf9 100644 --- a/tutorials/tutorial_3_B-p.html +++ b/tutorials/tutorial_3_B-p.html @@ -36,7 +36,7 @@ ## Κανόνες μορφοποιήσης * [Στέφανος Γεωργίου](https://www.balab.aueb.gr/stefanos-georgiou.html) -* [Κωνσταντίος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) +* [Κωνσταντίνος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) ## Αντικειμενοστραφής Προγραμματισμός diff --git a/tutorials/tutorial_3_B.html b/tutorials/tutorial_3_B.html index 1ca6f57..9f86539 100644 --- a/tutorials/tutorial_3_B.html +++ b/tutorials/tutorial_3_B.html @@ -35,7 +35,7 @@

      Προγραμματισμός ΙΙ

      Κανόνες μορφοποιήσης

      Αντικειμενοστραφής Προγραμματισμός

        diff --git a/tutorials/tutorial_4_A-p.html b/tutorials/tutorial_4_A-p.html index 24d6b3e..dd2960b 100644 --- a/tutorials/tutorial_4_A-p.html +++ b/tutorials/tutorial_4_A-p.html @@ -36,7 +36,7 @@ ## Τύποι Πεδίων και Μεθόδων * [Στέφανος Γεωργίου](https://www.balab.aueb.gr/stefanos-georgiou.html) -* [Κωνσταντίος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) +* [Κωνσταντίνος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) diff --git a/tutorials/tutorial_4_A.html b/tutorials/tutorial_4_A.html index 2a0b32a..527af62 100644 --- a/tutorials/tutorial_4_A.html +++ b/tutorials/tutorial_4_A.html @@ -35,7 +35,7 @@

        Προγραμματισμός ΙΙ

        Τύποι Πεδίων και Μεθόδων

        public class Car {
             // κατάσταση αυτοκινήτου
        diff --git a/tutorials/tutorial_4_B-p.html b/tutorials/tutorial_4_B-p.html
        index 039a6b6..4a4a727 100644
        --- a/tutorials/tutorial_4_B-p.html
        +++ b/tutorials/tutorial_4_B-p.html
        @@ -36,7 +36,7 @@
         ## Κληρονομικότητα, Αφηρημένες κλάσεις, Διεπαφές
         
         * [Στέφανος Γεωργίου](https://www.balab.aueb.gr/stefanos-georgiou.html)
        -* [Κωνσταντίος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html)
        +* [Κωνσταντίνος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html)
         
         
         ## Κληρονομικότητα
        diff --git a/tutorials/tutorial_4_B.html b/tutorials/tutorial_4_B.html
        index f695c1b..0ada876 100644
        --- a/tutorials/tutorial_4_B.html
        +++ b/tutorials/tutorial_4_B.html
        @@ -35,7 +35,7 @@ 

        Προγραμματισμός ΙΙ

        Κληρονομικότητα, Αφηρημένες κλάσεις, Διεπαφές

        Κληρονομικότητα

          diff --git a/tutorials/tutorial_5_A-p.html b/tutorials/tutorial_5_A-p.html index 612e821..0209ac5 100644 --- a/tutorials/tutorial_5_A-p.html +++ b/tutorials/tutorial_5_A-p.html @@ -36,7 +36,7 @@ ## Πολυμορφισμός * [Στέφανος Γεωργίου](https://www.balab.aueb.gr/stefanos-georgiou.html) -* [Κωνσταντίος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) +* [Κωνσταντίνος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) ## Πολυμορφισμός diff --git a/tutorials/tutorial_5_A.html b/tutorials/tutorial_5_A.html index 8441403..8182bd4 100644 --- a/tutorials/tutorial_5_A.html +++ b/tutorials/tutorial_5_A.html @@ -35,7 +35,7 @@

          Προγραμματισμός ΙΙ

          Πολυμορφισμός

          Πολυμορφισμός

            diff --git a/tutorials/tutorial_5_B-p.html b/tutorials/tutorial_5_B-p.html index a2711e5..6d8c48f 100644 --- a/tutorials/tutorial_5_B-p.html +++ b/tutorials/tutorial_5_B-p.html @@ -36,7 +36,7 @@ ## Εξαιρέσεις και Ισχυρισμοί * [Στέφανος Γεωργίου](https://www.balab.aueb.gr/stefanos-georgiou.html) -* [Κωνσταντίος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) +* [Κωνσταντίνος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) ## Εξαιρέσεις diff --git a/tutorials/tutorial_5_B.html b/tutorials/tutorial_5_B.html index 49c5444..e4bd9e1 100644 --- a/tutorials/tutorial_5_B.html +++ b/tutorials/tutorial_5_B.html @@ -35,7 +35,7 @@

            Προγραμματισμός ΙΙ

            Εξαιρέσεις και Ισχυρισμοί

            Εξαιρέσεις

              diff --git a/tutorials/tutorial_6_A-p.html b/tutorials/tutorial_6_A-p.html index 23bc694..f93f618 100644 --- a/tutorials/tutorial_6_A-p.html +++ b/tutorials/tutorial_6_A-p.html @@ -36,7 +36,7 @@ # Πλατφόρμα Eclipse * [Στέφανος Γεωργίου](https://www.balab.aueb.gr/stefanos-georgiou.html) -* [Κωνσταντίος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) +* [Κωνσταντίνος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) ## Eclipse, checkstyle and Find Bugs diff --git a/tutorials/tutorial_6_A.html b/tutorials/tutorial_6_A.html index 1ebb78b..c606fc9 100644 --- a/tutorials/tutorial_6_A.html +++ b/tutorials/tutorial_6_A.html @@ -35,7 +35,7 @@

              Προγραμματισμός ΙΙ

              Πλατφόρμα Eclipse

              Eclipse, checkstyle and Find Bugs



              diff --git a/tutorials/tutorial_7_A-p.html b/tutorials/tutorial_7_A-p.html index ce57841..b6afc7a 100644 --- a/tutorials/tutorial_7_A-p.html +++ b/tutorials/tutorial_7_A-p.html @@ -36,7 +36,7 @@ # JUnit * [Στέφανος Γεωργίου](https://www.balab.aueb.gr/stefanos-georgiou.html) -* [Κωνσταντίος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) +* [Κωνσταντίνος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) ## Αποσφαλμάτωση diff --git a/tutorials/tutorial_7_A.html b/tutorials/tutorial_7_A.html index e36311c..8e37834 100644 --- a/tutorials/tutorial_7_A.html +++ b/tutorials/tutorial_7_A.html @@ -35,7 +35,7 @@

              Προγραμματισμός ΙΙ

              JUnit

              Αποσφαλμάτωση

                diff --git a/tutorials/tutorial_8_A-p.html b/tutorials/tutorial_8_A-p.html index cd18f68..3bc68fb 100644 --- a/tutorials/tutorial_8_A-p.html +++ b/tutorials/tutorial_8_A-p.html @@ -36,7 +36,7 @@ # Νήματα * [Στέφανος Γεωργίου](https://www.balab.aueb.gr/stefanos-georgiou.html) -* [Κωνσταντίος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) +* [Κωνσταντίνος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) # Νήματα (Threads) diff --git a/tutorials/tutorial_8_A.html b/tutorials/tutorial_8_A.html index f15faf8..410d2f2 100644 --- a/tutorials/tutorial_8_A.html +++ b/tutorials/tutorial_8_A.html @@ -35,7 +35,7 @@

                Προγραμματισμός ΙΙ

                Νήματα

                Νήματα (Threads)

                  diff --git a/tutorials/tutorial_8_B-p.html b/tutorials/tutorial_8_B-p.html index a12a56c..ac2c1a1 100644 --- a/tutorials/tutorial_8_B-p.html +++ b/tutorials/tutorial_8_B-p.html @@ -36,7 +36,7 @@ # Συμβολοσειρές και Συλλογές * [Στέφανος Γεωργίου](https://www.balab.aueb.gr/stefanos-georgiou.html) -* [Κωνσταντίος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) +* [Κωνσταντίνος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) ## Συμβολοσειρές diff --git a/tutorials/tutorial_8_B.html b/tutorials/tutorial_8_B.html index 01ccbca..905b48a 100644 --- a/tutorials/tutorial_8_B.html +++ b/tutorials/tutorial_8_B.html @@ -35,7 +35,7 @@

                  Προγραμματισμός ΙΙ

                  Συμβολοσειρές και Συλλογές

                  Συμβολοσειρές

                    diff --git a/tutorials/tutorial_9_A-p.html b/tutorials/tutorial_9_A-p.html index 2dd30d3..ded1a3e 100644 --- a/tutorials/tutorial_9_A-p.html +++ b/tutorials/tutorial_9_A-p.html @@ -36,7 +36,7 @@ # Διαχείρηση Αρχείων * [Στέφανος Γεωργίου](https://www.balab.aueb.gr/stefanos-georgiou.html) -* [Κωνσταντίος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) +* [Κωνσταντίνος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) ## Αρχεία diff --git a/tutorials/tutorial_9_A.html b/tutorials/tutorial_9_A.html index 137fe22..6f97110 100644 --- a/tutorials/tutorial_9_A.html +++ b/tutorials/tutorial_9_A.html @@ -35,7 +35,7 @@

                    Προγραμματισμός ΙΙ

                    Διαχείρηση Αρχείων

                    Αρχεία

                      diff --git a/tutorials/tutorial_9_B-p.html b/tutorials/tutorial_9_B-p.html index 9875572..0d357ca 100644 --- a/tutorials/tutorial_9_B-p.html +++ b/tutorials/tutorial_9_B-p.html @@ -36,7 +36,7 @@ # Καννονικές Εκφράσεις * [Στέφανος Γεωργίου](https://www.balab.aueb.gr/stefanos-georgiou.html) -* [Κωνσταντίος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) +* [Κωνσταντίνος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) ## Κανονικές Εκφράσεις diff --git a/tutorials/tutorial_9_B.html b/tutorials/tutorial_9_B.html index ddfaf05..e7437dd 100644 --- a/tutorials/tutorial_9_B.html +++ b/tutorials/tutorial_9_B.html @@ -35,7 +35,7 @@

                      Προγραμματισμός ΙΙ

                      Καννονικές Εκφράσεις

                      Κανονικές Εκφράσεις

                        From d36d1094d2d8d1a2afe7a934b626fc6bced443da Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 16 Oct 2018 15:44:10 +0000 Subject: [PATCH 28/79] Deploy to GitHub Pages: 6183c6083c682beb0d84bade9c91f3bf240f76dd --- tutorials/tutorial_2_B-p.html | 2 +- tutorials/tutorial_2_B.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/tutorial_2_B-p.html b/tutorials/tutorial_2_B-p.html index eae1a10..5d8a0fc 100644 --- a/tutorials/tutorial_2_B-p.html +++ b/tutorials/tutorial_2_B-p.html @@ -308,7 +308,7 @@ Γράψτε ένα πρόγραμμα που προσομοιώνει τη ρίψη ενός ζεύγους ζαριών. Εκτελέστε το πείραμα μέχρι και τα 2 ζάρια να φέρουν 1 και στο τέλος να επιστρέφει πόσες ρίψεις χρειάστηκαν.
                        -Γράψτε ένα πρόγραμμα που να καλεί και να τρέχει το προηγούμενο πρόγραμμα n<\b> φορές και να επιστρέφει το μέσο όρο των φορών +Γράψτε ένα πρόγραμμα που να καλεί και να τρέχει το προηγούμενο πρόγραμμα n φορές και να επιστρέφει το μέσο όρο των φορών που χρειάστηκε να γίνουν οι ρίψεις των ζαριών ώστε να έχουν και τα δύο ζάρια 1.
    diff --git a/tutorials/tutorial_2_B.html b/tutorials/tutorial_2_B.html index 324c100..1295f81 100644 --- a/tutorials/tutorial_2_B.html +++ b/tutorials/tutorial_2_B.html @@ -320,7 +320,7 @@

    Προσομοίωση ρίψης ζαριών

    Γράψτε ένα πρόγραμμα που προσομοιώνει τη ρίψη ενός ζεύγους ζαριών. Εκτελέστε το πείραμα μέχρι και τα 2 ζάρια να φέρουν 1 και στο τέλος να επιστρέφει πόσες ρίψεις χρειάστηκαν.
    -Γράψτε ένα πρόγραμμα που να καλεί και να τρέχει το προηγούμενο πρόγραμμα n<\b> φορές και να επιστρέφει το μέσο όρο των φορών +Γράψτε ένα πρόγραμμα που να καλεί και να τρέχει το προηγούμενο πρόγραμμα n φορές και να επιστρέφει το μέσο όρο των φορών που χρειάστηκε να γίνουν οι ρίψεις των ζαριών ώστε να έχουν και τα δύο ζάρια 1.
    From f506685b068dc49651b74153edd52fc330a3a887 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Wed, 17 Oct 2018 09:07:08 +0000 Subject: [PATCH 29/79] Deploy to GitHub Pages: 77278505721755e61368289c3ebef223c9621452 --- tutorials/tutorial_3_B-p.html | 41 +++++++++++++++++------------------ tutorials/tutorial_3_B.html | 28 ++++++++++++------------ 2 files changed, 34 insertions(+), 35 deletions(-) diff --git a/tutorials/tutorial_3_B-p.html b/tutorials/tutorial_3_B-p.html index f4dbdf9..55b925a 100644 --- a/tutorials/tutorial_3_B-p.html +++ b/tutorials/tutorial_3_B-p.html @@ -33,7 +33,7 @@ # Προγραμματισμός ΙΙ -## Κανόνες μορφοποιήσης +## Αντικειμενοστραφής Προγραμματισμός * [Στέφανος Γεωργίου](https://www.balab.aueb.gr/stefanos-georgiou.html) * [Κωνσταντίνος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) @@ -42,8 +42,8 @@ ## Αντικειμενοστραφής Προγραμματισμός * Είναι τύπος προγραμματισμού βασισμένος σε αντικείμενα (objects) που μοντελοποιούν -τα δεδομένα με βάση την εσωτερική τους κατάσταση (state) και με βάση τη συμπεριφορά -τους (behaviour). +τα δεδομένα με βάση την εσωτερική τους κατάσταση (state, μεταβλητές, υπόσταση) και με βάση τη συμπεριφορά +τους (behavior, μέθοδοι). ```java public class LightBulb { @@ -74,29 +74,29 @@ ## Αντικειμενοστραφής Προγραμματισμός (2) * Ένα αντικείμενο αποτελείται από κανένα ή περισσότερα πεδία/ιδιότητες που καθορίζουν την -κατάστασή του και απο καμία ή περισσότερες μεθόδους που καθορίζουν τη συμπεριφορά +κατάστασή του και από καμία ή περισσότερες μεθόδους που καθορίζουν τη συμπεριφορά του. -* Κάθε αντικείμενο είναι στιγμιότυπο μιας κλάσης που καθορίζει και τον τύπο του. +* Κάθε αντικείμενο είναι ένα στιγμιότυπο μιας κλάσης που καθορίζει και τον τύπο του. * Κάθε κλάση είναι ένα προσχέδιο (blueprint) ή πρότυπο (prototype) για τη δημιουργία αντικειμένων. -* Ένα αντικειμενοστραφές πρόγραμμα αποτελεί μια συλλογή από αντικείμενα που +* Ένα αντικειμενοστραφής πρόγραμμα αποτελεί μια συλλογή από αντικείμενα που αλληλεπιδρούν μεταξύ τους. ## Κατασκευαστής -* Ο κατασκευαστής (constructor) είναι μια ειδική μέθοδος η οποία: +Ο κατασκευαστής (constructor) είναι μια ειδική μέθοδος η οποία: * Έχει πάντα το ίδιο όνομα με την κλάση που βρίσκεται * Στη σύνταξή του δε δηλώνεται κάποιος τύπος επιστροφής ούτε void. * Μπορεί να δεχθεί ορίσματα. -* Καλείται μέσω του τελεστή new είναι υπεύθυνος για τη δημιουργία κάποιου -αντικειμένου προσδίδοντάς του ενδεχομένως και κάποιες τιμές στα πεδία του. +* Καλείται μέσω του τελεστή new, που είναι υπεύθυνος για τη δημιουργία κάποιου +αντικειμένου και, επίσης, μπορεί να προσδιορίσει κάποια πεδία του (αντικειμένου). * Ο κατασκευαστής είτε θα ορίστει από τον προγραμματιστή είτε θα χρησιμοποίηθει -ένας εγγενής κατασκευαστής που δεν αρχικοποιεί κανένα πεδίο. Σε κάθε περίπτωση -κάθε κλάση έχει (τουλάχιστον ένα) κατασκευαστή. +ένας εγγενής κατασκευαστής (default constructor) που δεν αρχικοποιεί κανένα πεδίο. +Σε κάθε περίπτωση η κάθε κλάση έχει (τουλάχιστον ένα) κατασκευαστή. -## Διεύθυνση Αντικειμένων στη Μνήμη +## Δέσμευση Μνήμης για Αντικειμένα * Η 'new' πέρα από το ότι καλεί τον κατασκευαστή μιας κλάσης φροντίζει επίσης τη δέσμευση αναγκαίας μνήμης για το αντικείμενο που θα δημιουργηθεί. @@ -106,9 +106,9 @@ LightBulb lightBulb = new LightBulb(false); ``` -* Η μεταβλητη του object (η lightBulb στο παράδειγμα) δεν περιέχει την πληροφορία της κατάστασής του -αλλά έναν αριθμό (σε δεκαεξαδικό σύστημα) που είναι η διεύθυνση στη μνήμη που βρίσκεται το object. (Δοκιμάστε να κάνετε -print ένα object). +* Η μεταβλητή του object (η lightBulb στο παράδειγμα μας) δεν περιέχει την πληροφορία της κατάστασης του +αλλά έναν αριθμό (σε δεκαεξαδικό σύστημα) που είναι η διεύθυνση στη μνήμη που βρίσκεται το object. +(Δοκιμάστε να κάνετε print ένα object). ## Στατικά και μη στατικά πεδία και μέθοδοι. @@ -120,12 +120,11 @@ αντικείμενο απαραιτητα. Μια τέτοια μέθοδος έχει πρόσβαση μόνο σε στατικά πεδία * Ένα μη στατικό πεδίο είναι ένα πεδίο όπου κάθε ξεχωριστό αντικείμενο εχει το δικό του αντίγραφο. Συνεπώς μια μεταβολή της κατάστασης του από ένα αντικείμενο -δε θα επιρρεάσει το αντίστοιχο πεδίο σε κάποιο άλλο αντικείμενο (της ίδιας κλάσης). +δε θα επηρρεάσει το αντίστοιχο πεδίο σε κάποιο άλλο αντικείμενο (της ίδιας κλάσης). * Οι μη στατικές μέθοδοι μπορούν να κληθούν μόνο από στιγμιότυπα μιας κλάσης και έχουν πρόσβαση και σε στατικά και σε μη στατικά πεδία. - ## Προσδιοριστές Πρόσβασης * Οι προσδιοριστές πρόσβασης χρησιμοποιούνται προθεματικά για να καθορίσουν την πρόσβαση σε @@ -135,7 +134,7 @@ (σε επόμενο μάθημα) και από κλάσεις του ίδιου πακέτου. * (default): Κλάσεις, μέθοδοι ή πεδία είναι προσβάσιμα μόνο από κλάσεις του ίδιου πακέτου. - * private: Κλάσεις, μέθοδοι ή πεδία είναι προσβάσιμα μόνο από το εσωτερικό της ίδιας + * private: Κλάσεις, μέθοδοι ή πεδία που είναι προσβάσιμα μόνο από το εσωτερικό της ίδιας της κλάσεις που υπάρχουν. @@ -213,10 +212,10 @@ ## Καταστροφή Αντικειμένων * Συχνά κατά τη διάρκεια εκτέλεσης ενός προγράμματος, δημιουργούνται αντικείμενα -που χρησιμοποιούνται για να εκπληρώσουν ένα σκοπό και μόλις αυτό γίνει χάνουν +που χρησιμοποιούνται για να εκπληρώσουν ένα σκοπό και μόλις αυτος εκπληρωθεί χάνουν τη χρησιμότητά τους και δεν ξαναχρησιμοποιούνται. Προκειμένου να απελευθερωθούν -πόροι από τη μνήμη, στη java. υπάρχει μηχανισμός συλλογής σκουπιδιών (garbage -collection) ο οποίος εντοπίζει αντικείμενα που δε θα χρησιμοποιηθούν στο μέλλον +πόροι από τη μνήμη, στη java, υπάρχει ο μηχανισμός συλλογής σκουπιδιών (garbage +collection) ο οποίος εντοπίζει τα αντικείμενα που δε θα χρησιμοποιηθούν στο μέλλον και τα σβήνει. Ο μηχανισμός αυτός είναι ο μοναδικός τρόπος για να γίνει κάτι τέτοιο. Με άλλα λόγια ένας χρήστης στη java δεν μπορεί ο ίδιος να σβήσει κάποιο αντικείμενο. diff --git a/tutorials/tutorial_3_B.html b/tutorials/tutorial_3_B.html index 9f86539..2a4ab58 100644 --- a/tutorials/tutorial_3_B.html +++ b/tutorials/tutorial_3_B.html @@ -32,14 +32,14 @@

    Προγραμματισμός ΙΙ: Εισαγωγή στα Αντικείμενα

    Προγραμματισμός ΙΙ

    -

    Κανόνες μορφοποιήσης

    +

    Αντικειμενοστραφής Προγραμματισμός

    -

    Αντικειμενοστραφής Προγραμματισμός

    +

    Αντικειμενοστραφής Προγραμματισμός

      -
    • Είναι τύπος προγραμματισμού βασισμένος σε αντικείμενα (objects) που μοντελοποιούν
      τα δεδομένα με βάση την εσωτερική τους κατάσταση (state) και με βάση τη συμπεριφορά
      τους (behaviour).
    • +
    • Είναι τύπος προγραμματισμού βασισμένος σε αντικείμενα (objects) που μοντελοποιούν
      τα δεδομένα με βάση την εσωτερική τους κατάσταση (state, μεταβλητές, υπόσταση) και με βάση τη συμπεριφορά
      τους (behavior, μέθοδοι).
    public class LightBulb {
     
    @@ -65,34 +65,34 @@ 

    Αντικειμενοστραφής Προγραμματισμός

    Αντικειμενοστραφής Προγραμματισμός (2)

      -
    • Ένα αντικείμενο αποτελείται από κανένα ή περισσότερα πεδία/ιδιότητες που καθορίζουν την
      κατάστασή του και απο καμία ή περισσότερες μεθόδους που καθορίζουν τη συμπεριφορά
      του.
    • -
    • Κάθε αντικείμενο είναι στιγμιότυπο μιας κλάσης που καθορίζει και τον τύπο του.
    • +
    • Ένα αντικείμενο αποτελείται από κανένα ή περισσότερα πεδία/ιδιότητες που καθορίζουν την
      κατάστασή του και από καμία ή περισσότερες μεθόδους που καθορίζουν τη συμπεριφορά
      του.
    • +
    • Κάθε αντικείμενο είναι ένα στιγμιότυπο μιας κλάσης που καθορίζει και τον τύπο του.
    • Κάθε κλάση είναι ένα προσχέδιο (blueprint) ή πρότυπο (prototype) για τη
      δημιουργία αντικειμένων.
    • -
    • Ένα αντικειμενοστραφές πρόγραμμα αποτελεί μια συλλογή από αντικείμενα που
      αλληλεπιδρούν μεταξύ τους.
    • +
    • Ένα αντικειμενοστραφής πρόγραμμα αποτελεί μια συλλογή από αντικείμενα που
      αλληλεπιδρούν μεταξύ τους.

    Κατασκευαστής

    +

    Ο κατασκευαστής (constructor) είναι μια ειδική μέθοδος η οποία:

      -
    • Ο κατασκευαστής (constructor) είναι μια ειδική μέθοδος η οποία:
    • Έχει πάντα το ίδιο όνομα με την κλάση που βρίσκεται
    • Στη σύνταξή του δε δηλώνεται κάποιος τύπος επιστροφής ούτε void.
    • Μπορεί να δεχθεί ορίσματα.
    • -
    • Καλείται μέσω του τελεστή new είναι υπεύθυνος για τη δημιουργία κάποιου
      αντικειμένου προσδίδοντάς του ενδεχομένως και κάποιες τιμές στα πεδία του.
    • -
    • Ο κατασκευαστής είτε θα ορίστει από τον προγραμματιστή είτε θα χρησιμοποίηθει
      ένας εγγενής κατασκευαστής που δεν αρχικοποιεί κανένα πεδίο. Σε κάθε περίπτωση
      κάθε κλάση έχει (τουλάχιστον ένα) κατασκευαστή.
    • +
    • Καλείται μέσω του τελεστή new, που είναι υπεύθυνος για τη δημιουργία κάποιου
      αντικειμένου και, επίσης, μπορεί να προσδιορίσει κάποια πεδία του (αντικειμένου).
    • +
    • Ο κατασκευαστής είτε θα ορίστει από τον προγραμματιστή είτε θα χρησιμοποίηθει
      ένας εγγενής κατασκευαστής (default constructor) που δεν αρχικοποιεί κανένα πεδίο.
      Σε κάθε περίπτωση η κάθε κλάση έχει (τουλάχιστον ένα) κατασκευαστή.
    -

    Διεύθυνση Αντικειμένων στη Μνήμη

    +

    Δέσμευση Μνήμης για Αντικειμένα

    • Η 'new' πέρα από το ότι καλεί τον κατασκευαστή μιας κλάσης φροντίζει επίσης τη
      δέσμευση αναγκαίας μνήμης για το αντικείμενο που θα δημιουργηθεί.

    Παράδειγμα:

    LightBulb lightBulb = new LightBulb(false);
      -
    • Η μεταβλητη του object (η lightBulb στο παράδειγμα) δεν περιέχει την πληροφορία της κατάστασής του
      αλλά έναν αριθμό (σε δεκαεξαδικό σύστημα) που είναι η διεύθυνση στη μνήμη που βρίσκεται το object. (Δοκιμάστε να κάνετε
      print ένα object).
    • +
    • Η μεταβλητή του object (η lightBulb στο παράδειγμα μας) δεν περιέχει την πληροφορία της κατάστασης του
      αλλά έναν αριθμό (σε δεκαεξαδικό σύστημα) που είναι η διεύθυνση στη μνήμη που βρίσκεται το object.
      (Δοκιμάστε να κάνετε print ένα object).

    Στατικά και μη στατικά πεδία και μέθοδοι.

    • Ένα στατικό πεδίο σε μια κλάση είναι ένα κοινό πεδίο με συγκεκριμένη κατάσταση
      για όλα τα αντικείμενα που έχουν τύπο αυτή την κλάση. Με άλλα λόγια τα
      αντικείμενα μιας κλάσης μοιράζονται ένα αντίγραφο αυτού του πεδίου.
    • Μια στατική μέθοδος μπορεί να κληθεί χωρίς να δημιουργηθεί κάποιο
      αντικείμενο απαραιτητα. Μια τέτοια μέθοδος έχει πρόσβαση μόνο σε στατικά πεδία
    • -
    • Ένα μη στατικό πεδίο είναι ένα πεδίο όπου κάθε ξεχωριστό αντικείμενο εχει το
      δικό του αντίγραφο. Συνεπώς μια μεταβολή της κατάστασης του από ένα αντικείμενο
      δε θα επιρρεάσει το αντίστοιχο πεδίο σε κάποιο άλλο αντικείμενο (της ίδιας κλάσης).
    • +
    • Ένα μη στατικό πεδίο είναι ένα πεδίο όπου κάθε ξεχωριστό αντικείμενο εχει το
      δικό του αντίγραφο. Συνεπώς μια μεταβολή της κατάστασης του από ένα αντικείμενο
      δε θα επηρρεάσει το αντίστοιχο πεδίο σε κάποιο άλλο αντικείμενο (της ίδιας κλάσης).
    • Οι μη στατικές μέθοδοι μπορούν να κληθούν μόνο από στιγμιότυπα μιας κλάσης
      και έχουν πρόσβαση και σε στατικά και σε μη στατικά πεδία.

    Προσδιοριστές Πρόσβασης

    @@ -102,7 +102,7 @@

    Προσδιοριστές Πρόσβασης

  • public: Κλάσεις, μέθοδοι ή πεδία είναι προσβάσιμα χωρίς κανένα περιορισμό.
  • protected: Κλάσεις, μέθοδοι ή πεδία είναι προσβάσιμα απο παραγώμενες κλάσεις
    (σε επόμενο μάθημα) και από κλάσεις του ίδιου πακέτου.
  • (default): Κλάσεις, μέθοδοι ή πεδία είναι προσβάσιμα μόνο από κλάσεις του ίδιου
    πακέτου.
  • -
  • private: Κλάσεις, μέθοδοι ή πεδία είναι προσβάσιμα μόνο από το εσωτερικό της ίδιας
    της κλάσεις που υπάρχουν.
  • +
  • private: Κλάσεις, μέθοδοι ή πεδία που είναι προσβάσιμα μόνο από το εσωτερικό της ίδιας
    της κλάσεις που υπάρχουν.
  • O προσδιοριστής 'final'

    @@ -157,7 +157,7 @@

    Άσκηση

    Καταστροφή Αντικειμένων

      -
    • Συχνά κατά τη διάρκεια εκτέλεσης ενός προγράμματος, δημιουργούνται αντικείμενα
      που χρησιμοποιούνται για να εκπληρώσουν ένα σκοπό και μόλις αυτό γίνει χάνουν
      τη χρησιμότητά τους και δεν ξαναχρησιμοποιούνται. Προκειμένου να απελευθερωθούν
      πόροι από τη μνήμη, στη java. υπάρχει μηχανισμός συλλογής σκουπιδιών (garbage
      collection) ο οποίος εντοπίζει αντικείμενα που δε θα χρησιμοποιηθούν στο μέλλον
      και τα σβήνει. Ο μηχανισμός αυτός είναι ο μοναδικός τρόπος για να γίνει κάτι
      τέτοιο. Με άλλα λόγια ένας χρήστης στη java δεν μπορεί ο ίδιος να σβήσει
      κάποιο αντικείμενο.
    • +
    • Συχνά κατά τη διάρκεια εκτέλεσης ενός προγράμματος, δημιουργούνται αντικείμενα
      που χρησιμοποιούνται για να εκπληρώσουν ένα σκοπό και μόλις αυτος εκπληρωθεί χάνουν
      τη χρησιμότητά τους και δεν ξαναχρησιμοποιούνται. Προκειμένου να απελευθερωθούν
      πόροι από τη μνήμη, στη java, υπάρχει ο μηχανισμός συλλογής σκουπιδιών (garbage
      collection) ο οποίος εντοπίζει τα αντικείμενα που δε θα χρησιμοποιηθούν στο μέλλον
      και τα σβήνει. Ο μηχανισμός αυτός είναι ο μοναδικός τρόπος για να γίνει κάτι
      τέτοιο. Με άλλα λόγια ένας χρήστης στη java δεν μπορεί ο ίδιος να σβήσει
      κάποιο αντικείμενο.

    From 3adfdeb166f0e9e66aa7d1ae1fb4723dec902152 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 23 Oct 2018 08:35:55 +0000 Subject: [PATCH 30/79] Deploy to GitHub Pages: 6ad6bf3ec774c2f5d1cc209ef16c4e9d519a399e --- tutorials/tutorial_3_A-p.html | 23 +++++++++++++++++++++++ tutorials/tutorial_3_A.html | 16 ++++++++++++++++ tutorials/tutorial_3_B-p.html | 20 ++++++++++---------- tutorials/tutorial_3_B.html | 18 +++++++++--------- 4 files changed, 58 insertions(+), 19 deletions(-) diff --git a/tutorials/tutorial_3_A-p.html b/tutorials/tutorial_3_A-p.html index c02fe5a..e27c9a4 100644 --- a/tutorials/tutorial_3_A-p.html +++ b/tutorials/tutorial_3_A-p.html @@ -469,6 +469,29 @@ ``` +## Παράδειγμα (2) + +Επανάληψη +```java +private static long factorialIterative (int theNumber) { + int theFactorial = 1; + for (int i = 0; i < theNumber; i++) { + theFactorial = theFactorial * i; + } + return theFactorial; +} +``` +Αναδρομή +```java +private static long factorialRecursive (int theNumber) { + if (theNumber == 1) + return 1; + else + return theNumber * factorialRecursive(theNumber - 1); +} +``` + + ## Παρατηρήσεις - Τα θετικά της αναδρομής * Συχνά ο κώδικας με χρήση αναδρομής είναι πιο "συμπαγής" και κομψός από ότι με diff --git a/tutorials/tutorial_3_A.html b/tutorials/tutorial_3_A.html index 31fb37f..8ada120 100644 --- a/tutorials/tutorial_3_A.html +++ b/tutorials/tutorial_3_A.html @@ -339,6 +339,22 @@

    Παράδειγμα

    return binarySearch(array, key, start, middle - 1); } }
    +

    Παράδειγμα (2)

    +

    Επανάληψη

    +
    private static long factorialIterative (int theNumber) {
    +  int theFactorial = 1;
    +  for (int i = 0; i < theNumber; i++) {
    +    theFactorial = theFactorial * i;
    +  }
    +  return theFactorial;
    +}
    +

    Αναδρομή

    +
    private static long factorialRecursive (int theNumber) {
    +  if (theNumber == 1)
    +    return 1;
    +  else
    +    return theNumber * factorialRecursive(theNumber - 1);
    +}

    Παρατηρήσεις - Τα θετικά της αναδρομής

    • Συχνά ο κώδικας με χρήση αναδρομής είναι πιο "συμπαγής" και κομψός από ότι με
      άλλους τρόπους επανάληψης.
    • diff --git a/tutorials/tutorial_3_B-p.html b/tutorials/tutorial_3_B-p.html index 55b925a..525b5d7 100644 --- a/tutorials/tutorial_3_B-p.html +++ b/tutorials/tutorial_3_B-p.html @@ -79,7 +79,7 @@ * Κάθε αντικείμενο είναι ένα στιγμιότυπο μιας κλάσης που καθορίζει και τον τύπο του. * Κάθε κλάση είναι ένα προσχέδιο (blueprint) ή πρότυπο (prototype) για τη δημιουργία αντικειμένων. -* Ένα αντικειμενοστραφής πρόγραμμα αποτελεί μια συλλογή από αντικείμενα που +* Ένα αντικειμενοστραφές πρόγραμμα αποτελεί μια συλλογή από αντικείμενα που αλληλεπιδρούν μεταξύ τους. @@ -87,7 +87,7 @@ Ο κατασκευαστής (constructor) είναι μια ειδική μέθοδος η οποία: * Έχει πάντα το ίδιο όνομα με την κλάση που βρίσκεται -* Στη σύνταξή του δε δηλώνεται κάποιος τύπος επιστροφής ούτε void. +* Στη σύνταξή του δε δηλώνεται κάποιος τύπος επιστροφής (ούτε void). * Μπορεί να δεχθεί ορίσματα. * Καλείται μέσω του τελεστή new, που είναι υπεύθυνος για τη δημιουργία κάποιου αντικειμένου και, επίσης, μπορεί να προσδιορίσει κάποια πεδία του (αντικειμένου). @@ -111,14 +111,14 @@ (Δοκιμάστε να κάνετε print ένα object). -## Στατικά και μη στατικά πεδία και μέθοδοι. +## Στατικά και μη στατικά πεδία και μεθόδους. * Ένα στατικό πεδίο σε μια κλάση είναι ένα κοινό πεδίο με συγκεκριμένη κατάσταση για όλα τα αντικείμενα που έχουν τύπο αυτή την κλάση. Με άλλα λόγια τα αντικείμενα μιας κλάσης μοιράζονται ένα αντίγραφο αυτού του πεδίου. * Μια στατική μέθοδος μπορεί να κληθεί χωρίς να δημιουργηθεί κάποιο -αντικείμενο απαραιτητα. Μια τέτοια μέθοδος έχει πρόσβαση μόνο σε στατικά πεδία -* Ένα μη στατικό πεδίο είναι ένα πεδίο όπου κάθε ξεχωριστό αντικείμενο εχει το +αντικείμενο απαραίτητα. Μια τέτοια μέθοδος έχει πρόσβαση μόνο σε στατικά πεδία +* Ένα μη στατικό πεδίο είναι ένα πεδίο όπου κάθε ξεχωριστό αντικείμενο έχει το δικό του αντίγραφο. Συνεπώς μια μεταβολή της κατάστασης του από ένα αντικείμενο δε θα επηρρεάσει το αντίστοιχο πεδίο σε κάποιο άλλο αντικείμενο (της ίδιας κλάσης). * Οι μη στατικές μέθοδοι μπορούν να κληθούν μόνο από στιγμιότυπα μιας κλάσης @@ -140,10 +140,10 @@ ## O προσδιοριστής 'final' -* Μεταβλητές που χρησιμοποιούν προθεματικά το 'final' στον ορισμό τους, αν πάρουν κάποια τιμή -τότε αυτή δεν μπορεί να αλλάξει (γίνεται σταθερά). +* Μεταβλητές που χρησιμοποιούν προθεματικά το 'final' στον ορισμό τους, παίρνουν μία τιμή, +η οποία δεν μπορεί να αλλάξει (γίνεται σταθερά). * Μέθοδοι που χρησιμοποιούν προθεματικά το 'final' στον ορισμό τους δεν μπορούν -να γίνουν override απο παραγώμενες κλάσεις (σε επόμενο μάθημα). +να γίνουν override από παραγόμενες κλάσεις (σε επόμενο μάθημα). * Κλάσεις που χρησιμοποιούν προθεματικά το 'final' στον ορισμό τους δεν μπορούν να επεκταθούν απο άλλες κλάσεις. @@ -205,14 +205,14 @@ ## Άσκηση -* Τι θα εκτυπωθεί στα δύο προηγούμενα κομμάτια κώδικα; Μπορείτε να αιτιολογησετε +* Τι θα εκτυπωθεί στα δύο προηγούμενα κομμάτια κώδικα; Μπορείτε να αιτιολογήσετε το αποτέλεσμα; Μπορούμε να χρησιμοποιήσουμε τον κώδικα που βρίσκεται στα σχόλια; ## Καταστροφή Αντικειμένων * Συχνά κατά τη διάρκεια εκτέλεσης ενός προγράμματος, δημιουργούνται αντικείμενα -που χρησιμοποιούνται για να εκπληρώσουν ένα σκοπό και μόλις αυτος εκπληρωθεί χάνουν +που χρησιμοποιούνται για να εκπληρώσουν ένα σκοπό και μόλις αυτός εκπληρωθεί χάνουν τη χρησιμότητά τους και δεν ξαναχρησιμοποιούνται. Προκειμένου να απελευθερωθούν πόροι από τη μνήμη, στη java, υπάρχει ο μηχανισμός συλλογής σκουπιδιών (garbage collection) ο οποίος εντοπίζει τα αντικείμενα που δε θα χρησιμοποιηθούν στο μέλλον diff --git a/tutorials/tutorial_3_B.html b/tutorials/tutorial_3_B.html index 2a4ab58..f22026a 100644 --- a/tutorials/tutorial_3_B.html +++ b/tutorials/tutorial_3_B.html @@ -68,13 +68,13 @@

      Αντικειμενοστραφής Προγραμματισμός
    • Ένα αντικείμενο αποτελείται από κανένα ή περισσότερα πεδία/ιδιότητες που καθορίζουν την
      κατάστασή του και από καμία ή περισσότερες μεθόδους που καθορίζουν τη συμπεριφορά
      του.
    • Κάθε αντικείμενο είναι ένα στιγμιότυπο μιας κλάσης που καθορίζει και τον τύπο του.
    • Κάθε κλάση είναι ένα προσχέδιο (blueprint) ή πρότυπο (prototype) για τη
      δημιουργία αντικειμένων.
    • -
    • Ένα αντικειμενοστραφής πρόγραμμα αποτελεί μια συλλογή από αντικείμενα που
      αλληλεπιδρούν μεταξύ τους.
    • +
    • Ένα αντικειμενοστραφές πρόγραμμα αποτελεί μια συλλογή από αντικείμενα που
      αλληλεπιδρούν μεταξύ τους.

    Κατασκευαστής

    Ο κατασκευαστής (constructor) είναι μια ειδική μέθοδος η οποία:

    • Έχει πάντα το ίδιο όνομα με την κλάση που βρίσκεται
    • -
    • Στη σύνταξή του δε δηλώνεται κάποιος τύπος επιστροφής ούτε void.
    • +
    • Στη σύνταξή του δε δηλώνεται κάποιος τύπος επιστροφής (ούτε void).
    • Μπορεί να δεχθεί ορίσματα.
    • Καλείται μέσω του τελεστή new, που είναι υπεύθυνος για τη δημιουργία κάποιου
      αντικειμένου και, επίσης, μπορεί να προσδιορίσει κάποια πεδία του (αντικειμένου).
    • Ο κατασκευαστής είτε θα ορίστει από τον προγραμματιστή είτε θα χρησιμοποίηθει
      ένας εγγενής κατασκευαστής (default constructor) που δεν αρχικοποιεί κανένα πεδίο.
      Σε κάθε περίπτωση η κάθε κλάση έχει (τουλάχιστον ένα) κατασκευαστή.
    • @@ -88,11 +88,11 @@

      Δέσμευση Μνήμης για Αντικειμένα

      • Η μεταβλητή του object (η lightBulb στο παράδειγμα μας) δεν περιέχει την πληροφορία της κατάστασης του
        αλλά έναν αριθμό (σε δεκαεξαδικό σύστημα) που είναι η διεύθυνση στη μνήμη που βρίσκεται το object.
        (Δοκιμάστε να κάνετε print ένα object).
      -

      Στατικά και μη στατικά πεδία και μέθοδοι.

      +

      Στατικά και μη στατικά πεδία και μεθόδους.

      • Ένα στατικό πεδίο σε μια κλάση είναι ένα κοινό πεδίο με συγκεκριμένη κατάσταση
        για όλα τα αντικείμενα που έχουν τύπο αυτή την κλάση. Με άλλα λόγια τα
        αντικείμενα μιας κλάσης μοιράζονται ένα αντίγραφο αυτού του πεδίου.
      • -
      • Μια στατική μέθοδος μπορεί να κληθεί χωρίς να δημιουργηθεί κάποιο
        αντικείμενο απαραιτητα. Μια τέτοια μέθοδος έχει πρόσβαση μόνο σε στατικά πεδία
      • -
      • Ένα μη στατικό πεδίο είναι ένα πεδίο όπου κάθε ξεχωριστό αντικείμενο εχει το
        δικό του αντίγραφο. Συνεπώς μια μεταβολή της κατάστασης του από ένα αντικείμενο
        δε θα επηρρεάσει το αντίστοιχο πεδίο σε κάποιο άλλο αντικείμενο (της ίδιας κλάσης).
      • +
      • Μια στατική μέθοδος μπορεί να κληθεί χωρίς να δημιουργηθεί κάποιο
        αντικείμενο απαραίτητα. Μια τέτοια μέθοδος έχει πρόσβαση μόνο σε στατικά πεδία
      • +
      • Ένα μη στατικό πεδίο είναι ένα πεδίο όπου κάθε ξεχωριστό αντικείμενο έχει το
        δικό του αντίγραφο. Συνεπώς μια μεταβολή της κατάστασης του από ένα αντικείμενο
        δε θα επηρρεάσει το αντίστοιχο πεδίο σε κάποιο άλλο αντικείμενο (της ίδιας κλάσης).
      • Οι μη στατικές μέθοδοι μπορούν να κληθούν μόνο από στιγμιότυπα μιας κλάσης
        και έχουν πρόσβαση και σε στατικά και σε μη στατικά πεδία.

      Προσδιοριστές Πρόσβασης

      @@ -107,8 +107,8 @@

      Προσδιοριστές Πρόσβασης

    O προσδιοριστής 'final'

      -
    • Μεταβλητές που χρησιμοποιούν προθεματικά το 'final' στον ορισμό τους, αν πάρουν κάποια τιμή
      τότε αυτή δεν μπορεί να αλλάξει (γίνεται σταθερά).
    • -
    • Μέθοδοι που χρησιμοποιούν προθεματικά το 'final' στον ορισμό τους δεν μπορούν
      να γίνουν override απο παραγώμενες κλάσεις (σε επόμενο μάθημα).
    • +
    • Μεταβλητές που χρησιμοποιούν προθεματικά το 'final' στον ορισμό τους, παίρνουν μία τιμή,
      η οποία δεν μπορεί να αλλάξει (γίνεται σταθερά).
    • +
    • Μέθοδοι που χρησιμοποιούν προθεματικά το 'final' στον ορισμό τους δεν μπορούν
      να γίνουν override από παραγόμενες κλάσεις (σε επόμενο μάθημα).
    • Κλάσεις που χρησιμοποιούν προθεματικά το 'final' στον ορισμό τους δεν μπορούν
      να επεκταθούν απο άλλες κλάσεις.

    Παράδειγμα(1)

    @@ -153,11 +153,11 @@

    Παράδειγμα(3)

    }

    Άσκηση

      -
    • Τι θα εκτυπωθεί στα δύο προηγούμενα κομμάτια κώδικα; Μπορείτε να αιτιολογησετε
      το αποτέλεσμα; Μπορούμε να χρησιμοποιήσουμε τον κώδικα που βρίσκεται στα σχόλια;
    • +
    • Τι θα εκτυπωθεί στα δύο προηγούμενα κομμάτια κώδικα; Μπορείτε να αιτιολογήσετε
      το αποτέλεσμα; Μπορούμε να χρησιμοποιήσουμε τον κώδικα που βρίσκεται στα σχόλια;

    Καταστροφή Αντικειμένων

      -
    • Συχνά κατά τη διάρκεια εκτέλεσης ενός προγράμματος, δημιουργούνται αντικείμενα
      που χρησιμοποιούνται για να εκπληρώσουν ένα σκοπό και μόλις αυτος εκπληρωθεί χάνουν
      τη χρησιμότητά τους και δεν ξαναχρησιμοποιούνται. Προκειμένου να απελευθερωθούν
      πόροι από τη μνήμη, στη java, υπάρχει ο μηχανισμός συλλογής σκουπιδιών (garbage
      collection) ο οποίος εντοπίζει τα αντικείμενα που δε θα χρησιμοποιηθούν στο μέλλον
      και τα σβήνει. Ο μηχανισμός αυτός είναι ο μοναδικός τρόπος για να γίνει κάτι
      τέτοιο. Με άλλα λόγια ένας χρήστης στη java δεν μπορεί ο ίδιος να σβήσει
      κάποιο αντικείμενο.
    • +
    • Συχνά κατά τη διάρκεια εκτέλεσης ενός προγράμματος, δημιουργούνται αντικείμενα
      που χρησιμοποιούνται για να εκπληρώσουν ένα σκοπό και μόλις αυτός εκπληρωθεί χάνουν
      τη χρησιμότητά τους και δεν ξαναχρησιμοποιούνται. Προκειμένου να απελευθερωθούν
      πόροι από τη μνήμη, στη java, υπάρχει ο μηχανισμός συλλογής σκουπιδιών (garbage
      collection) ο οποίος εντοπίζει τα αντικείμενα που δε θα χρησιμοποιηθούν στο μέλλον
      και τα σβήνει. Ο μηχανισμός αυτός είναι ο μοναδικός τρόπος για να γίνει κάτι
      τέτοιο. Με άλλα λόγια ένας χρήστης στη java δεν μπορεί ο ίδιος να σβήσει
      κάποιο αντικείμενο.

    From 372abf66c7448658a0d307d86c88524c4433e035 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 23 Oct 2018 10:08:12 +0000 Subject: [PATCH 31/79] Deploy to GitHub Pages: 7a3ba491d886b2b304682db4af4c7c494c267abe --- tutorials/tutorial_3_B-p.html | 4 ++-- tutorials/tutorial_3_B.html | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tutorials/tutorial_3_B-p.html b/tutorials/tutorial_3_B-p.html index 525b5d7..8572177 100644 --- a/tutorials/tutorial_3_B-p.html +++ b/tutorials/tutorial_3_B-p.html @@ -173,9 +173,9 @@ public static void main(String[] args) { LightBulb objLightBulb1 = new LightBulb(true); - Foo objLightBulb2 = objLightBulb1; + LightBulb objLightBulb2 = objLightBulb1; - objLightBulb1.switchlight(); + objLightBulb1.switchLight(); System.out.println(objLightBulb1); System.out.println(objLightBulb2); diff --git a/tutorials/tutorial_3_B.html b/tutorials/tutorial_3_B.html index f22026a..3dac33e 100644 --- a/tutorials/tutorial_3_B.html +++ b/tutorials/tutorial_3_B.html @@ -129,9 +129,9 @@

    Παράδειγμα(2)

    public static void main(String[] args) { LightBulb objLightBulb1 = new LightBulb(true); - Foo objLightBulb2 = objLightBulb1; + LightBulb objLightBulb2 = objLightBulb1; - objLightBulb1.switchlight(); + objLightBulb1.switchLight(); System.out.println(objLightBulb1); System.out.println(objLightBulb2); From 1e3fb575897c7bb922e7fe8a88130c512618c61e Mon Sep 17 00:00:00 2001 From: Travis CI Date: Mon, 29 Oct 2018 09:36:21 +0000 Subject: [PATCH 32/79] Deploy to GitHub Pages: 71a75f7ec2465b626ad9a51c8ee1f0eb5cc25702 --- tutorials/tutorial_4_A-p.html | 59 +++++++---------------------------- tutorials/tutorial_4_A.html | 43 +++++-------------------- tutorials/tutorial_4_B-p.html | 48 +++++++--------------------- tutorials/tutorial_4_B.html | 38 +++++++--------------- 4 files changed, 43 insertions(+), 145 deletions(-) diff --git a/tutorials/tutorial_4_A-p.html b/tutorials/tutorial_4_A-p.html index dd2960b..93ec7ce 100644 --- a/tutorials/tutorial_4_A-p.html +++ b/tutorials/tutorial_4_A-p.html @@ -148,7 +148,7 @@ } public void setSecond(int s) { - second = ((s >= 0 && s < SECONDS_PER_MINUTEd) ? s : 0); + second = ((s >= 0 && s < SECONDS_PER_MINUTE) ? s : 0); } public void setTime(int h, int m, int s) { @@ -176,6 +176,17 @@ ``` +## Ερώτηση + +```java + private static final double PI = 3.14; + + or + + private final float PI = 3.14F; +``` + + ## Παράδειγμα 2 ```java @@ -226,52 +237,6 @@ ``` -## Παράδειγμα 2 (Συνέχεια) - -```java -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; - -public class EmployeeTest { - public static void main(String args[]) { - try { - Date birth = new SimpleDateFormat("MM/dd/yy").parse("05/12/95"); - Date hire = new SimpleDateFormat("MM/dd/yy").parse("10/9/05"); - Employee employee = new Employee("Tim", "Yellow", birth, hire); - System.out.println(employee.toString()); - } catch (ParseException e) { - e.printStackTrace(); - } - } -} -``` - - -## Singleton - -* Ένα singleton είναι μια κλάση η οποία αρχικοποιείται μια μόνο φορά. -* Το σχεδιαστικό πρότυπο (design pattern) singleton επιτρέπει τον ελεγχόμενο ορισμό ενός μοναδικού αντικειμένου μιας κλάσης. -* Τα singletons μπορεί να αναφέρονται σε κάποιο τμήμα ενός συστήματος που είναι μοναδικό, π.χ. ένα σύστημα αρχείων. - - -## Παράδειγμα 3 - -```java -public class FileSystem { - private static final FileSystem INSTANCE = new FileSystem(); - - private FileSystem() { - // empty - } - - public static FileSystem getInstance() { - return INSTANCE; - } -} -``` - - ## Βιβλιογραφία * Harvey M. Deitel και Paul J. Deitel. Java Προγραμματισμός, 6η έκδοση. Εκδόσεις Μ. Γκιούρδας, Αθήνα 2005. Κεφάλαια 5,8. diff --git a/tutorials/tutorial_4_A.html b/tutorials/tutorial_4_A.html index 527af62..c86a263 100644 --- a/tutorials/tutorial_4_A.html +++ b/tutorials/tutorial_4_A.html @@ -136,7 +136,7 @@

    Παράδειγμα 1 (Συνέχεια)

    } public void setSecond(int s) { - second = ((s >= 0 && s < SECONDS_PER_MINUTEd) ? s : 0); + second = ((s >= 0 && s < SECONDS_PER_MINUTE) ? s : 0); } public void setTime(int h, int m, int s) { @@ -156,6 +156,12 @@

    Παράδειγμα 1 (Συνέχεια)

    System.out.println(t1.getHour() + " " + t1.getMinute() + " " + t1.getSecond()); } } +

    Ερώτηση

    +
        private static final double PI = 3.14;
    +    
    +    or
    +
    +    private final float PI = 3.14F; 

    Παράδειγμα 2

    import java.util.Date;
     
    @@ -196,41 +202,6 @@ 

    Παράδειγμα 2 (Συνέχεια)

    } } }
    -

    Παράδειγμα 2 (Συνέχεια)

    -
    import java.text.ParseException;
    -import java.text.SimpleDateFormat;
    -import java.util.Date;
    -
    -public class EmployeeTest {
    -    public static void main(String args[]) {
    -        try {
    -            Date birth = new SimpleDateFormat("MM/dd/yy").parse("05/12/95");
    -            Date hire = new SimpleDateFormat("MM/dd/yy").parse("10/9/05");
    -            Employee employee = new Employee("Tim", "Yellow", birth, hire);
    -            System.out.println(employee.toString());
    -        } catch (ParseException e) {
    -            e.printStackTrace();
    -        }
    -    }
    -}
    -

    Singleton

    -
      -
    • Ένα singleton είναι μια κλάση η οποία αρχικοποιείται μια μόνο φορά.
    • -
    • Το σχεδιαστικό πρότυπο (design pattern) singleton επιτρέπει τον ελεγχόμενο ορισμό ενός μοναδικού αντικειμένου μιας κλάσης.
    • -
    • Τα singletons μπορεί να αναφέρονται σε κάποιο τμήμα ενός συστήματος που είναι μοναδικό, π.χ. ένα σύστημα αρχείων.
    • -
    -

    Παράδειγμα 3

    -
    public class FileSystem {
    -    private static final FileSystem INSTANCE = new FileSystem();
    -
    -    private FileSystem() {
    -    // empty
    -    }
    -
    -    public static FileSystem getInstance() {
    -        return INSTANCE;
    -    }
    -}

    Βιβλιογραφία

    • Harvey M. Deitel και Paul J. Deitel. Java Προγραμματισμός, 6η έκδοση. Εκδόσεις Μ. Γκιούρδας, Αθήνα 2005. Κεφάλαια 5,8.
    • diff --git a/tutorials/tutorial_4_B-p.html b/tutorials/tutorial_4_B-p.html index 4a4a727..9deef26 100644 --- a/tutorials/tutorial_4_B-p.html +++ b/tutorials/tutorial_4_B-p.html @@ -119,7 +119,7 @@ υπερκλάσης. * Σε κάθε κατασκευαστή πρέπει να καλείται ο κατασκευαστής της άμεσης υπερκλάσης στην πρώτη γραμμή του σώματός του. Αν δεν γραφτεί κάτι ρητά τοτε και πάλι καλείται -ο κατασκευαστής της υπερκλάσης στη πρώτη γραμμή ουσιαστικά χωρίς κάποιο όρισμα. +ο κατασκευαστής της υπερκλάσης στη πρώτη γραμμή χωρίς κάποιο όρισμα. ## Παράδειγμα @@ -169,7 +169,7 @@ ## Αφηρημένες κλάσεις * Όταν μια συλλογή από κλάσεις έχουν κάποια κοινά πεδία ή/και κάποια κοινή -συμπεριφορά τότε αυτά τα κοινά στοιχεία μπορούν να εγκολαποτούν σε μια υπερκλάση. +συμπεριφορά τότε αυτά τα κοινά στοιχεία μπορούν να εγκολαπτούν σε μια υπερκλάση. Αν αυτή η υπερκλάση είναι υπερβολικά γενική ή τα αντικείμενά της από το προγραμμά δεν είναι χρήσιμα, τότε είναι καλή πράκτική να την κάνουμε αφηρημένη. * Μια αφηρημένη κλάση έχει τη δεσμευμένη λέξη **abstract** στον ορισμό της. @@ -185,10 +185,9 @@ * Μια αφηρημένη μέθοδος είναι μια μέθοδος που τη δεσμευμένη λέξη 'abstract' στον όρισμό της. * Είναι χρήσιμες στο να επιβάλει μια αφηρημένη κλάση μια γενική συμπεριφορά στις -υποκλάσεις της, δίνοντας όμως στις τελευταιες τη δυνατότητα να ορίσουν τις -λεπτομέριές της (το σώμα της). +υποκλάσεις της. * Αν σε μια αφηρημένη κλάση ορισθεί μια αφηρημένη μέθοδος, τότε κάθε υποκλάση της -είναι υποχρεωμένη να την ορίσει λεπτομερώς. +είναι υποχρεωμένη να την υλοποιήσει. ## Παράδειγμα @@ -203,7 +202,7 @@ } public int getNumberOfVertices() { - return numberOfVertices; + return this.numberOfVertices; } public abstract double area(); @@ -211,7 +210,6 @@ ``` - ## Παράδειγμα(συνέχεια) ```java @@ -228,13 +226,12 @@ @Override public double area() { - return (base*height) / 2.0; + return (base * height) / 2.0; } } ``` - ## Παράδειγμα(συνέχεια) ```java @@ -249,13 +246,12 @@ @Override public double area() { - return edge*edge; + return edge * edge; } } ``` - ## Διεπαφές * Ομοιότητες με αφηρημένες κλάσεις @@ -270,14 +266,13 @@ ## Διεπαφές(2) * Διαφορές με αφηρημένες κλάσεις: - * Οι διεπαφές υλοποιούνται με τη δεσμευμένη λέξη 'implements' από τις - κλάσεις. - * Μια κλάση μπορεί να υλοποιήσει παραπάνω από μια διεπαφές. + * Οι διεπαφές υλοποιούνται με τη δεσμευμένη λέξη 'implements'. + * Μια κλάση μπορεί να υλοποιήσει παραπάνω από μια διεπαφή. * Μια διεπαφή μπορεί να έχει μονο final static πεδιά (σταθερές). Συνεπώς μια διεπαφή δεν επηρεάζει τη κατάσταση του αντικειμένου που την υλοποιεί αλλά μόνο τη συμπεριφορά. * Δεν έχουν κατασκευαστές. - * Στα ονόματα των διεπαφών η σύμβαση έιναι να χρησιμοποιείται συνήθως επίθετο + * Στα ονόματα των διεπαφών η σύμβαση είναι να χρησιμοποιείται συνήθως επίθετο αντί για ουσιαστικό σε μορφή CamelCase. @@ -313,7 +308,7 @@ ## Παράδειγμα(συνέχεια) ```java -class Triangle extends Shape implements CalculableArea { +public class Triangle extends Shape implements CalculableArea { private int base; private int height; @@ -326,29 +321,10 @@ @Override public double area() { - return (base*height) / 2.0; + return (base * height) / 2.0; } } ``` - - -## Παράδειγμα(συνέχεια) - -```java -class House implements CalculableArea { - - private int area; - - public House(int area) { - this.area = area; - } - - @Override - public double area() { - return area; - } -} -``` diff --git a/tutorials/tutorial_4_B.html b/tutorials/tutorial_4_B.html index 0ada876..722f383 100644 --- a/tutorials/tutorial_4_B.html +++ b/tutorials/tutorial_4_B.html @@ -93,7 +93,7 @@

      super

    • Σε μια κλάση η δεσμευμένη λέξη super είναι αντίστοιχη της δεσμευμένης λέξης
      this με τη διαφορά ότι το αντικείμενο αναφέρεται στον εαυτό του ως αντικείμενο
      της άμεσης υπερκλάσης.
    • Το super χρησιμοποιείται για να κληθεί κάποια μέθοδος της υπερκλάσης που έχει
      γίνει override από την υποκλάση, ή κάποιο πεδίο που δεν είναι private.
    • Το super(ορίσμα) χρησιμοποιείται για να καλέσει τον κατασκευαστή της άμεσης
      υπερκλάσης.
    • -
    • Σε κάθε κατασκευαστή πρέπει να καλείται ο κατασκευαστής της άμεσης υπερκλάσης
      στην πρώτη γραμμή του σώματός του. Αν δεν γραφτεί κάτι ρητά τοτε και πάλι καλείται
      ο κατασκευαστής της υπερκλάσης στη πρώτη γραμμή ουσιαστικά χωρίς κάποιο όρισμα.
    • +
    • Σε κάθε κατασκευαστή πρέπει να καλείται ο κατασκευαστής της άμεσης υπερκλάσης
      στην πρώτη γραμμή του σώματός του. Αν δεν γραφτεί κάτι ρητά τοτε και πάλι καλείται
      ο κατασκευαστής της υπερκλάσης στη πρώτη γραμμή χωρίς κάποιο όρισμα.

    Παράδειγμα

    class Triangle {
    @@ -129,7 +129,7 @@ 

    Παράδειγμα(2)

    }

    Αφηρημένες κλάσεις

      -
    • Όταν μια συλλογή από κλάσεις έχουν κάποια κοινά πεδία ή/και κάποια κοινή
      συμπεριφορά τότε αυτά τα κοινά στοιχεία μπορούν να εγκολαποτούν σε μια υπερκλάση.
      Αν αυτή η υπερκλάση είναι υπερβολικά γενική ή τα αντικείμενά της από το
      προγραμμά δεν είναι χρήσιμα, τότε είναι καλή πράκτική να την κάνουμε αφηρημένη.
    • +
    • Όταν μια συλλογή από κλάσεις έχουν κάποια κοινά πεδία ή/και κάποια κοινή
      συμπεριφορά τότε αυτά τα κοινά στοιχεία μπορούν να εγκολαπτούν σε μια υπερκλάση.
      Αν αυτή η υπερκλάση είναι υπερβολικά γενική ή τα αντικείμενά της από το
      προγραμμά δεν είναι χρήσιμα, τότε είναι καλή πράκτική να την κάνουμε αφηρημένη.
    • Μια αφηρημένη κλάση έχει τη δεσμευμένη λέξη abstract στον ορισμό της.
    • Παρ' όλο που δεν μπορεί να αρχικοποιηθεί, διαθέτει κατασκευαστή.
    • Στις αφηρημένες κλάσεις μπορούν να ορισθούν αφηρημένες μέθοδοι.
    • @@ -139,8 +139,8 @@

      Αφηρημένες μέθοδοι

      • Σε αφηρημένες κλάσεις δίνεται η δυνατότητα να οριστούν αφηρημένες μέθοδοι.
      • Μια αφηρημένη μέθοδος είναι μια μέθοδος που τη δεσμευμένη λέξη 'abstract' στον
        όρισμό της.
      • -
      • Είναι χρήσιμες στο να επιβάλει μια αφηρημένη κλάση μια γενική συμπεριφορά στις
        υποκλάσεις της, δίνοντας όμως στις τελευταιες τη δυνατότητα να ορίσουν τις
        λεπτομέριές της (το σώμα της).
      • -
      • Αν σε μια αφηρημένη κλάση ορισθεί μια αφηρημένη μέθοδος, τότε κάθε υποκλάση της
        είναι υποχρεωμένη να την ορίσει λεπτομερώς.
      • +
      • Είναι χρήσιμες στο να επιβάλει μια αφηρημένη κλάση μια γενική συμπεριφορά στις
        υποκλάσεις της.
      • +
      • Αν σε μια αφηρημένη κλάση ορισθεί μια αφηρημένη μέθοδος, τότε κάθε υποκλάση της
        είναι υποχρεωμένη να την υλοποιήσει.

      Παράδειγμα

      abstract class Shape {
      @@ -152,7 +152,7 @@ 

      Παράδειγμα

      } public int getNumberOfVertices() { - return numberOfVertices; + return this.numberOfVertices; } public abstract double area(); @@ -171,7 +171,7 @@

      Παράδειγμα(συνέχεια)

      @Override public double area() { - return (base*height) / 2.0; + return (base * height) / 2.0; } }

      Παράδειγμα(συνέχεια)

      @@ -186,7 +186,7 @@

      Παράδειγμα(συνέχεια)

      @Override public double area() { - return edge*edge; + return edge * edge; } }

      Διεπαφές

      @@ -202,11 +202,11 @@

      Διεπαφές(2)

      • Διαφορές με αφηρημένες κλάσεις:

          -
        • Οι διεπαφές υλοποιούνται με τη δεσμευμένη λέξη 'implements' από τις
          κλάσεις.
        • -
        • Μια κλάση μπορεί να υλοποιήσει παραπάνω από μια διεπαφές.
        • +
        • Οι διεπαφές υλοποιούνται με τη δεσμευμένη λέξη 'implements'.
        • +
        • Μια κλάση μπορεί να υλοποιήσει παραπάνω από μια διεπαφή.
        • Μια διεπαφή μπορεί να έχει μονο final static πεδιά (σταθερές). Συνεπώς μια
          διεπαφή δεν επηρεάζει τη κατάσταση του αντικειμένου που την υλοποιεί αλλά
          μόνο τη συμπεριφορά.
        • Δεν έχουν κατασκευαστές.
        • -
        • Στα ονόματα των διεπαφών η σύμβαση έιναι να χρησιμοποιείται συνήθως επίθετο
          αντί για ουσιαστικό σε μορφή CamelCase.
        • +
        • Στα ονόματα των διεπαφών η σύμβαση είναι να χρησιμοποιείται συνήθως επίθετο
          αντί για ουσιαστικό σε μορφή CamelCase.

      Παράδειγμα

      @@ -228,7 +228,7 @@

      Παράδειγμα(συνέχεια)

      double area(); }

      Παράδειγμα(συνέχεια)

      -
      class Triangle extends Shape implements CalculableArea {
      +
      public class Triangle extends Shape implements CalculableArea {
       
           private int base;
           private int height;
      @@ -241,21 +241,7 @@ 

      Παράδειγμα(συνέχεια)

      @Override public double area() { - return (base*height) / 2.0; - } -}
      -

      Παράδειγμα(συνέχεια)

      -
      class House implements CalculableArea {
      -
      -    private int area;
      -
      -    public House(int area) {
      -        this.area = area;
      -    }
      -
      -    @Override
      -    public double area() {
      -        return area;
      +        return (base * height) / 2.0;
           }
       }
      From 01d7a936064171fa562b3faa9d43a5dbdba40432 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 30 Oct 2018 10:19:38 +0000 Subject: [PATCH 33/79] Deploy to GitHub Pages: 6db45f5a32fa53b44626b36763efdd5c266cf630 --- tutorials/tutorial_4_B-p.html | 2 +- tutorials/tutorial_4_B.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/tutorial_4_B-p.html b/tutorials/tutorial_4_B-p.html index 9deef26..b984219 100644 --- a/tutorials/tutorial_4_B-p.html +++ b/tutorials/tutorial_4_B-p.html @@ -314,7 +314,7 @@ private int height; public Triangle(int base, int height) { - super(3) + super(3); this.base = base; this.height = height; } diff --git a/tutorials/tutorial_4_B.html b/tutorials/tutorial_4_B.html index 722f383..d0ab3f1 100644 --- a/tutorials/tutorial_4_B.html +++ b/tutorials/tutorial_4_B.html @@ -234,7 +234,7 @@

      Παράδειγμα(συνέχεια)

      private int height; public Triangle(int base, int height) { - super(3) + super(3); this.base = base; this.height = height; } From 782485f0ac9cff9479ed207628ba0990611cf60f Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 30 Oct 2018 12:35:11 +0000 Subject: [PATCH 34/79] Deploy to GitHub Pages: 3226a642d318aa0fd3f2dd31e67f5b253189164a --- tutorials-p.html | 3 +- tutorials.html | 3 +- tutorials/media/maven-central.png | Bin 0 -> 140566 bytes tutorials/media/pom-example.png | Bin 0 -> 143430 bytes tutorials/tutorial_4_C-p.html | 105 ++++++++++++++++++++++++++++++ tutorials/tutorial_4_C.html | 63 ++++++++++++++++++ 6 files changed, 172 insertions(+), 2 deletions(-) create mode 100644 tutorials/media/maven-central.png create mode 100644 tutorials/media/pom-example.png create mode 100644 tutorials/tutorial_4_C-p.html create mode 100644 tutorials/tutorial_4_C.html diff --git a/tutorials-p.html b/tutorials-p.html index c357ed5..48859eb 100644 --- a/tutorials-p.html +++ b/tutorials-p.html @@ -48,7 +48,8 @@

      Φροντιστήριο 3

      Φροντιστήριο 4

      Φροντιστήριο 5

        diff --git a/tutorials.html b/tutorials.html index c951f26..fb8a0fc 100644 --- a/tutorials.html +++ b/tutorials.html @@ -48,7 +48,8 @@

        Φροντιστήριο 3

        Φροντιστήριο 4

        Φροντιστήριο 5

          diff --git a/tutorials/media/maven-central.png b/tutorials/media/maven-central.png new file mode 100644 index 0000000000000000000000000000000000000000..e8bd66aec489fcf2149334a3f372024948df939d GIT binary patch literal 140566 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 R{%(jLg55m&@h{{QUgfVR;2t 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 a_@CWg=f$%vqV4evK;Y@>=d#Wzp$P!o7e=7~ literal 0 HcmV?d00001 diff --git a/tutorials/media/pom-example.png b/tutorials/media/pom-example.png new file mode 100644 index 0000000000000000000000000000000000000000..425c6dac3ccedc197a5b5a5305b6371db8a1f34c GIT binary patch literal 143430 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%0A=LhLH~XE^>~b%|(5n_pGd? zuM?wHh4u&+iH3@g^Xip1_{Cyp@Qen3OgO ztVlvYFZNaJ>p_?mCO7ztQ7K`3d@vC$U8_-N-j7^&UM&19&tUVRl&5uo=^|oaP=bjD zWr3;-x@_m_G(;nx+H%z!VcRt#Ne760 zB>yz;yD*^i=GU9Dv@y+oHUk&i^`wqZ^uDaTbPCRmFm)nF4EfQ?*68~Mn@9eq4XZ1% zK*+w^vO5;{`C{18m*de?8%q996_fc}(qeO9@RcmW9%CkaL z=}nh7e<-#eN7HbmHM9H3+vS)2CQvE^e9+T2VmQExZg)ZPe)siUHQ&WTF>$LXA`Qn{ zqZDtJiOZ{Gg|_bEfTe)$qv_rdUuOD>19#dYFQU&70V4{vtuL{OqMx(BAbSqF4Q$*# zX!>ySId4J$G9(jT1&!L`H5Zvbh0OVy6c!7-ut*4lN~P|ANx+-W6vHe^l@O8e@IUac zN~u_|{YhEN%bNVbb`f_-H6fwaItTVyQx1Das*xYVA;F)0(?+ z&%7QvR>z*bW@~E;3Cl9?x#GpgTPGku*kR*P$YJZ=>4&y{P!*x`jm^A#>(-nODq@~d zqMSW)y-lc|f*;wr%JA(>{zr1{;+V_^)iyk3F4{@?;9PYTTnZ`7UnE#@LUFiVMfn`s zf{F`2nlyhSxXGwT2&?ib1iOM<;2M_J;X6wKjwa(sqLAdn9qNuBKdxTNqU;E+NxFLQ z`cM}uNgHp_5!sA%h!{gqOr^pi_^7N1z$2RXDkEcV5y6Dt7$5^K0uDGNJ1*K%dN$#& zm^y=f0cbF)+ECRek3@Wx8w-HL&+!T1jW@3#){D&&lHt(QII1cXnBHD#Lt4EGuaMxAV|A1~ zH93g_G%vWAa2w63ZH5P_TtTlu{TFg7_e*E{2=rd%N}g3!c_m=suIAK8I1B=bN9_Pd zcwl5ZkcePb8FP$U409?3XsHJ$a8y!p^sl)vZ8icpbn0hBC+qvzxS*b#?woH1-`E)c z5DA#Tg!<%d&^eoELUuU?k5kS3q~U9cG^iC+$z8hDwRvY8lkKx8s8&Q}bj$a7vc}rC zzRRqZaDoTucV{{q|0cF-Z7H+jje11uPyR4aT#xJ+9lQ(w=bcb7~yd0S@K1) z@3Z&=f$a>{LX((Vu{k)_mLG-S>>(k$$|qSL@{qK8#{2rWPu=b^JX80jr|`MpH&8JF5$&lp$Vdjt$l*mzBrP z)zCm<$Sx!*)g}b`Q3@2&_RU|MxjVuJmNj&IlHM15P6}IuZKZ?`75siy~~%jJT&`w?_Kz;C+wRpz3uMd8aJaGHDtTDz@;gBQPHurjfuG%moXFO#Zloi zi|4)BV8F*l@RMm}SkF-#IcN%>;AqZ}Ect-}?CylV3h(I#9vzi}=LyCd0^j13=8k2K ze3|=XNnV59nK0(-%1l@UgBhlg8O$zJ_#-x$z@Dw3=s)ZZ+G}(({xy!ra!$8I{eCXa z<_Wr_s*j6kJpI7t(c+~S zJeLx(#YKEfD>?MBwk%nt=hF2l#ixIoWU5@2XFxO)(=IT4`p7v~iUU|XTZcx{`p%YK z`bpd_w3y)tuVAAwAqR3iUV*5!ru$wm<}>Pnb9w;WOJr`9#TB*+zaC>t;FY6_zd=Jd za9MfoAeWA_(f&If=fNE%WPLqaDu#&ii$)h(S>EfL?7nG~EV(5Z) znekTbJy9DGwhD|&U^k-~hGh}l+St`TD&fG>?KZ3pQj^KpFLLu@lDsPB0|iOmqr^%= z?JG&%dYhIqQ=rsd2oY?FD-^;^TdhmwGY8q6*Lc}MqeDLn+Ad0xt)>#9G>SXP1R>4Q^F6}bTckxrq(53Gi zLx867%<|N$ZTJT2y^?s#tJhoN#|Ef5OulJ7_a}*q^Bwp%FXx#_G?M$V%$wph*ijIb z=_baGTN~SirE=`%H{n2c9DjFkp2d}XHIGR#YPx*2v!O}OYYdqf%H(i%#(0V{F}e9k-sh^2OJ zJD);AjLu)F6t^$hQU=JRHtiEn%0mAVj9qLDYK38vl+3Jy?qwV*z_5_Y;I1jB5xnqP z8+NSqll{ZvO)mx@6zSJ-F3k1G9R(vHoeh+mMGq|D-KSFfs%Nzmb6r<4^X5fPBGkpG zznnKC)hY#5yxkt9_YU#S2C&Ljw#(_+y{2-0spK(g|A4hwIT~23@JGU32Wz&44*6x` z$Bs^2XflzE!yo&chS?no9)Sr&tzs9v7P;NIb-xqDj~MBu)R=mbHL(pP9$7_QEVa3{ z=l<(0Z}Ms^FBdHfee`%rlM_>U%{9n%yCzyp7<9)P4N7$Pjg&{QI{_?NX8iGac+SOSc zNW`4duicpX4R5>~h!c>Em~I*Rn53&Qj_8y6ACfEbUTiflX5KPY6(q8%PR(74bFWx9MpjS4kmN{j4D@`Zn*dCPfa2L^tOKRsj=RmZpaH+^ z5Kg-pOTsl~EzVK6(7z002k?%_uXjZDkn%-O(OUPzbKe9r+r-lk_{+&Qm#J>I+ZdI< zo!`<9L10mCHEl+--R85a$slU#CYIawA)jmF=zDpWgx?H|7%F~RNuB>?J0$)f20eI^Wi_Rkjmw*lgM ztpzNh8G)YC%|RSJ9K`8eS)uyUBog$EPj|>`kTtF23rdq4gIElPPL35*U0wLM$^~`` zyv4q8x1zhuk3^QA)ru$$KOsJB?CrAWOFhDxOKaPZRb~VUBMBsgCB*UW9bG_?QBYA2 zEvxa)eLgb6GEmyfr7d5|k>9IsBw=Gh3G-7NT_R;B0?$iB-&e&~Q%XxX@+NpRt$5gh zuSm*iTa-I~7TGu9={S+DHjZ~>hWq=d$bWWcW7BW0SR@|oXHbfV-N?12_pGb_9 z80NaAy|%2^NSmZOH2uHn)L2`a_buCxDL7qH9c=}V7L*Dztr#@q1SRrSeLJ6p9a#06 zEYmV~Tc6@4w$hOi5(9m|;AaU4{Zx^66}o+u9Jh%T$?M--R2XKmO>|kA@fg*sT!p2z z6|LF<%ato|9u2@>hU`J$?66*vzbfEDK_>T-5MO*u~1T7GBPs3qf%Mh zoki_#X45#{ADR$mHDSm=w-7na=_Q-f&{E(nhSuFjxw%e~exBf!?a>l$h>u}=HuzCc5#=Qg;Na?ft%%0NLANUnY&;IPyg3tvKML*3q*62Mcw3%)kGpc6+Dy6C z`~N|Z&JaPOSkRG>lqywLj=bruJ?&NuD|cKD|5@O_JTjH6z|hQo&L_+L!{_pU5($Ay zO_}UVjE@k)pp-hiNy|6LD&iPokHn z{gjfG6~!y;9T)%w2o>E*W@aV~C?o=!ed_M+E|b+f85K=Eb&a{4Ucu5Hzq>8ZhP&=h zjnoONzs=MB+q~6ny>6n(e|p0PSqtU&(Ws{MUFG_`8x2J%wSIcn!k89GyoiX1VB-ns zRUH6MDFsS35^)d8^EG0{9uACLuI0#~;RY`gucM^#LjK+Chib7yCh`0bPEJmaXN%NY z?XJ|mucu`<%eoE~(I>AfBHuGQPKK8Pe>zD-i;kSs&Fn1?C$6^Wy$G z+Nxm((F&e76Ilxfft@cO4&Zwf_m#?n*Lk@B)38v_Hrt_yNmBL|#hVLzdXh|LXH+;w z$I^$*6)g~xkRWHW%Z5e}jE839b%Y%aen)8xEEZ8x0(rR3gE^i_qiIAN19+%mvyP4@ zgBcrt2N<6qm>RRdiiUfVDsnzw2f(HjqJ1sob>^$nA|{%LJrzr1GX?k~$YuNhj>V-E zxj*`TGsVe~Yh}f;TK)kH3_aUm0h7&V)$(a-AxmP{8>p7fv-E4zyfp?V1!0CSiN3DD zT`?=QqVX;7Yf@NN86v@1>kKMwUL(r(cOCGbt4-J$fwwBr_El*EgWP<-=iP|iOq&|v z5;oz4D!sP(7&IE$^Nq4>+H_t{NC>!_@GOTv7~1B3({L-9XAWd~ZVzpL!#r$`rMcsB z0)&5#;vxr#n@q-9M++2zFB57ehkPhy?r8XQ4*%{jZWj@M7hD_xJ@PW~14&4pKTR;Z zjYt@7PL&$Kr3ZK&;|Od>Ryh^W>Ciqtu7s8UUR_bw-t`0c5OqGN zaL_=bw4;Xi^InJMSLWMoqEc%&hMRx9GI9BLGV^_U0<|x!foHl*#T~wzw#NzYkFqfJR@&RxzcH!PPn^KCbOHN+QnSr{CcoMk*QC8w?J+)BScODh_bZgqdnp*Xa@{F@Jr#9uhGQ0N62+ zuU5@u?CPj~#DZ1D31|Ys1J;4zB>_n{$A9{c=Q9u~Q6^U~_Rt0XxlA%T7@Q94+=ln}no<2msBWf1skTE&^bm7Bz zk%~~Q+*SsdnyQ$J|HTw&!@Cl3G7Gc#rXe*fT#PFw3@Wt+z$~0b1I3G9Lpd=NgBCHn>a~D;q}v1P z@@cj@i?Y$iLXk9M$}w@B{aYv^lDWsmE@;cf9(;$#I-2}mo2wO+&QB8Ku^&cU9yMZG zP(Duz${RR@zBj^H9JcAtWA9Z2RypY4goK1@N2R?kGyISrua6$4x9#a?^W8}l7w zjydOo)OMy{(-kt!mF~OmqnIjBXHj*-UZlUcT_^C(WW)P0WBZRm7OQQJ>yp4=XOG8O?P%%#qN`Rk7}EUpe-GKVkWYa7U=Qj^}3ln!sEi~#L4fUIa^ zG~T7Lf}cJyHa`!?=5UTOLqgDjGcQjOGdPsY(m7qKHs-?wse#nSTRdycTWh-|Rr%g8 zDL|2ffPjyP`{8_|0OPJ5B+dCkMMZ_+@aU*qFe@iJry_beLoQFT)vD-b-Nr+&CGY!i!eYpz&2|bw#2xk#ViB%D zMh`PFU#&+d_6}u<8Y%^q^zntgt#SZy{2Lf+e#)q!sc`k4Ng5ADXXNsV4+jT>eSF}j ztUl;E3u=_TB9VqfhWso@`~d-B2K5avecEY*TSz$V=c(c|YtR=ryCX^=Me#=UU){1vet@fCuN~7RNs4l5hfnD(J@zZQ(x$Zr;44l z;!^bCM1uw_FI#`L;*U zqSvs6t7T^@j@)$6N8=XbIHSSUaZzfm>zG+D`|d??bKlzg0p0BCpQKmqG#XK|i9zU1 zmt$eJ(j15xC{Cw+RMnq|R=VbEUj{lr=A5BYo=R9}vQ1qSZ2~xh$1c(g%JZk|v%?R{ z7i9!$2%FgiABC1Y?#zv5!NiA?-_fWA+`HzAzu|eRlM_tz3KMrimNu5yre`%fpV_SV zV>P4Xs%dD32C`{{X$1n~YDzwxkmF)*Tg($MqZOGhQ})IBg=JjAHovbAd5BigA7qF{ zMMc*-3z;;uCC}QND&>`}j1IzWGc5bkxV0e7=bT>Gac{Y?<(m&0mnsCK;R62ks;@?| z#bQa6%~fEcdt4AX1rBZpy~6Bms8u0Vc@mj))7j1K?ONQ`YOH}4s;bR%Vn64-X{$;s z-CRm)(hnUqwRc#7%2QlhCZ5@ip%s~Kf7=fGXWsUE&z4bUAb6Fbgfct`tft687iaVp zlS=QrH#X?$W{;)@T5oz{~ zd{H?>#qe9v6P^nKnKAS-mm3C_{{z*Ri2-1pf`#R($PAw)=of7KS78?KBpx2wJV?m> zrp_q=!NKVN;}^v+5Q2$~N$Te3s{bC&ctY{-im_Y_=XlP*4K>zOrA%s?nc>m~M$g(6MYyRKs@ci)?(4+vH%cIo! zZwCU6D*4n+a7tAruo=~pC#0gcA$8`IzLLqW&)-b0rT`*r=6W$h&cB|j3=N8-JkEd8fSuV4`g1b}Oi!qIfNA-K?~LXfpJS_O zQ1Mw3K$>9HYEiz{Eepw$&c9plcF*d`(C_(m{7qs)?QVp$W$^ge@13rOv5%uT)<=_y ze*!oJ^lLGMZ-pR+m6LB(*j_1&1&o$B5L<8ZWMTsUPtrrXlt8yr zVP~AyVF{ELO5j>F(0IqjC>e7!$Arnphve0tm-GE$C@Y&YLmd5Swf|i4fd$cWdhqQ* zATsd>s|?A@#|O~rz4JK?75q~KO~ithy8@Z|i%q)=I%Z}xeY{YxaK`?SOk9A>CAK}{ z1|7^i7v4PAi}@vt`6cZ6N4OLYXQY#NUiB{m*Cz`>h;`p^j6$WPQa*Zv;Ze>X?yiJq zN0i8RT zsY$ix-&v%~@T@@pHm!I{-+xL!nMs1a47xg`_IZUj=$j{ryc$Rf&IDxE`V%2q*-z6Y zRN4=-)#R`M4EF|Bh}C_SCOJO8;WTRRc+GyaO~umJevV5pyff@9yxh(a9pX^_GWu}-pfJ;20FY5j421|7zlVsNCa99xL&V5D`7!-i%aD%7+hjW z%5ok=x>G9 zPY(uL^2{E*eiO^-dP!CLKy2okX4UDsmFie=koLiJnkrK0^~h)@zw9GwR!LHutlQ=O zESW1;e=DYb8)oazN7sNgcE>}3;DwLdOD*iGp{=NUg$oO237~fF$Lr_TlJZ6(bR4!n zLTscEv-hNK+J0(=T%dotgWQpafoqT^!?*JN%^GD~B1H5*mvY+NM&pPkVnbr$81PH`m?UM;`6www5c+Jp@8htCNa3Y^0QA%@;}M>XWN7fRR&4RaXO6LYZI7z3ett-* z+-8ata-4moQj||x7DeY5GCoC;CkkWia(V9K>r1aO!^WF&n_t$X#v-jv-PaFpf+-4O z6X**PJT#rrFpO^zhHt{Q(YCZ?+5SETs^$hb$Z#s9-@X})bs(ys%jG^fdbh*5z$~(i zgYdw@@oHz~fkW|VdD~-9J?iV?NQs49adcJ_7Y?Um{C-U@uvUJ|!B}xT!;iHd(MN-hp1&O68QN2- ztsK(IYz_w$KBa1Jy5}epMoY@$NaACF@@ItMJKY zE&edlkT)^Gq!8$~+KG~EjX+@8o*BX7y2h72Cczv|sT^q46Quz%UEx9bx0$F#Fci_+ z9~??(BXWcICh{cx^o?&$H_7f~zt@?cI-^#LulOKv$A5c{1CDJZso(= z_Py1;DI?!fJ`#KPlii|m=zLEoYN?#Sa>SkQJMQ0j1>hPcfCPu@nwKR;>05D)pQigj z&O;Vt3kMUcMsFPAl1?MTVJ8qQ+J>*+=Crzla!At$?FQzWivSn>~V%CN7($Wb*oBJIRIZ2*!VZby?pWEj8b9gSMWr{m9M$`0V|I2;44sRO}eeVa;c{?su2nwcI-q zLZk&=+U|>pERJ2J@xJV5?=7xA#w63}`mcy{q&%nKCUdRt%_ltRNPU45wEEV)et1AS z(z3%BMvSZR9YNWmfMzfnHNwn1!c20kTj>|KMN$b7^u3kpei>C@uDK*wvHd;QWXPeM zhU9Zs);dDG7$7ZTcpBB^=1^%q zOC}j%ZT7BBHP!@lHWt^KM|(M(CbLf9EgtoI)$%D(OUhNvgvMtWF5jFHlhx&0-Azy% zMOdG#39i=8~>eXsY6n2WZ?~nOc{e}0^9rnL_*K7F5W(z3_xycnkh38i|PI`rCe!R-lC`+VzdadwywO6C~qzl3{_Bt3&CP>V3E%$czuXG z^^CFVS0AAlVgWtm#qdyhKehh9@??aez7LHc!gJ|DQ3QJ3@xyZxi5x#KjV0P#``xPi z@fV{y)WV(QolJFF>#HvB-xlh>T=-w#K`I%HMKY<>|CexlfV_AK;NBD(R1eqJXtcwA z9ekC#%^;eumTjn=S%MA6=|49VdW#Ev!Sv7O9@QSI%#F%52;J?RCh{N;Bos_A>GPpad{_~CS>@`j*D!v?FS+bi}j)K-N1{S|HJKYx4H|AUSB6i^29*TGw-%Ne6_ zx}3{wm`oN#UNcWWKHO0beG38nIxo}QFIC9MJ}B`FITfB2&si|RvvL8N$Vx!YCMZ5! z=t0uJ!j4uZajqWEWLGm{eo*-Dar@M^6rXuM%jMCillj${hLR4pxVpAy@`vIxRueF$ zyG6m%wqZj9rv7W&PaHYS6v=^ieYM*B7}%V1%4RR5mZ!6>0r;55G4%RL1?k-@xVGP& zggIyHkwNxtd* zg$(lOBNP^Ordt zlZA;9(YjllCi0CLfq~@Sb<4x3Cv>{wsH&9U$a#&UC2|Cegl9uZ#1!^wk<@H+&-c!u zw6s{D-`FCb7!2*l9|B4Z#>Wq+K0Zhpov+^Xk0n(EdqC6B$_-KG# zlid!1$K&H;0gpe$)=&}?axOhR{imJ~OaxR^Kl_08dh2z3IyzbH*tj^7)A?HSH`Rfn zz-qP%plyPmEA5|smXW17yz9})o6~_zPQN88K6(w?AttLC4M&(gSt+Tv_qTiHuV-^a zqmPqD(BsN`Lb2AFENNPE1z+gs>S~{Fk0Br;dMB_v2iGFDU<3LMrC#IX?cVBP(~YCq#UYV6_QSF~N1Dna zeFx|b2zCd%FLF2*JUw4JtuLImT=NJqAU^hbP z>v>No-W6yp@ImjaG5THV6rUfFHE*p{0Wu%@A>G? zhHgFh%+r&l{z{X({)mfP9=}BE@(DI1G8nEbIxY(~^L-jlVLk46L;F=2&z*>fK+phi z`6^!-;OqamJ8F9c4?q7Z44^k5%9eZ!bp(e$5v&OaxMJb-a_0c#;^geCjkjGCkqxg8dCudn z&vgzGIxq-@%$FN%^JS>=C6oPU>|it}=$rHAp&F(fur3@`!j?U0h0NZ_@WRGNca4>d z$i6SVd;ein^89Df(wnY2nq_#GE66?#oU7+2tA8vlf7J^1^7$H+Zj}@SQ3_WpLVf>p zE!eG4qe+0Aii$Uhi<5t@rdWo8x|B@B!6C6)SJ?X;FvVi-cX=W#i!p051=8tyg(_80 zFtMmZ6$X-N8wWV$iKL{5OOou;U804Bs4t*l0@3XU^rwUgXM4gVqqDM*>^BLx6!rF& zI8~D9i8VAzW0KWKZf<+txUhcSZQLtkypgA%qKam=9FBjy-(u_=q1D`-qEunCD-h|+ z7b(|l$#FeunRyQvOEyj>cpHRDNp$;gQSKQ#ibSZduOA4m0;+qdRvW#~LPJ85L@bhs5Oh+!SQ+L;jE$fRG72SnQFe6Gp}hwE ziYsC^+B);(OQo%CTd=$fe2wSM_@-3Rd0Xhmi-S4mr|L-+wI9V9-0ErTXG4XCXPIm) zNah=Cb3YhGIEMBLTKH^`I4s&Tzrkgy5QhIYuzPUu5{KR8wb|7H<;$pVvx0JO5^T4I z12@jk?W&y)6oW?D@&*Sb>?mO&9u4nzR}-HOxbc{G-cn6<`}+UI~!xG z8($7Q+#W-^-mikRo3N`ElTA|r+6Lv__`|17O?-(W7j6XVSHCV_lh7ZB8>d*6K5zkI zQKQ67dr#<1$I#JEew7tm1dG(*!>Hg8yixFvtEGV#s%~5!&E*lW)S&uUd%^d{l98HL zj*iGQ4%IE-DsY~#Zk)%dUSOe_tn6WhXPbWo#Sewp&=@kC8#enQfqGaZ@uJmaqIGxQ)n@WnHH7BV719nw#-rZ5`%3Mo1J>xn+jjb zT~Ke2a_D8_EC=p|3-drJm&gdEGa8DM&8Sfyeos#?M>KXzJy-410ay*+D8oDvS(U0< zQ0wflkIMn`-cfsdEfBva1HmMO0SRJEg zrtWylhf;?BSsLNcz59pEOc6+vc*c_m=E!M(Q-a=Ph$1^yi_}9L@CZH0RB^AkAM{F6 zi~{HK!_mw9AeAc#;KwHhuv>`*m#wla#WVAh@Tt3qCGDhw;$G4DRY`~D+m0{$Jx_3 zs=jWG^HXbnIPU6urgogwj!*l_TH-+{H4Xd$Z*@NVg>yeDm-rC`za=NF77}@j#cYOP z%*Dku+T!ZCaX`(S9C5burOfGzE6iFeq_woLy7^xBq<#_mQnfMY{mAL&K(~~8^-@qw zOD2DSYEgg5fu1+J`z@p9gtL=m^hr|Q3X{g}*ZG1)p@-B2z#ryAi~f2gH=g3~gHi4X zD|D8%&Lj}!LMy|hsAs$BQLx*>18x9DApGBo!ynl7Bfbp!w8YNMhjE)2fY&9(01_LT zY0<*MT8?5VQf?&SM9xx6G>(Wd&Q!Ft0b34h`e0fr`HL6b**z$vi=J)n4`U@Ni3FkJ zQ*HVKHmGQsnJ`Ecl>H6Zl?3xXFJ^UGq6S?%pj;Q}@i=FVLZc-}@$j7R`AMPyXGjcC zIza%FZQLaa2n)%%cYC#P0WO3|eI$^=Lgr6y%?5l{Q?s{REi>(?; zRQ*+?p3c{|=|;335vpt*tV@EPQ=_nrMs~g6`SZaByjrPNXHoBO(Wsr+>VCJz09{Kbe8_}6>aSK?TrTt+O(Jdi zlsl5R2=DSR)ZfBmGu87TGv(^NQ9Ag*v&s60Vlj%3u)+j_TcfunG<^%fBA1u90KGQP z2^10iT&oZu)oX%+uJqD;?z=;9F@F|Ja9pC~34g*a_1wyRc6ayF9zDFxix#I!6qgIICB+&&$l!lVs?qze{V`}1DLv52 zLK!d3Fyi)p_`qR6fHy|3GS4C1q3iNGfuIjB(^0wA%5S)x_WB^xMz(=_fTDe~beKxq z42j$P;qxoQVq^p)7ZW3;=CJA+WOu{>I4s5D@lk(_f4?liyNF=rvF#@Zk&*R;SJCMw zwqLF6UrNS1Y{+xv%52%v@4`|ZkjR_ zfTY=9f43y=HLW3YS7v5ln9#>0x-W{F4G7UF%ZY;BJ+m*=12ug7jm+}k@Bx~Qn0iP; zf?NU<<(uQ=>evjM7BX_)H|R9Janx!-N5q>O8_EV^O;d2#9}%{(bp8q!yC+eM)OXqP z(fyX!XW9_oKI=)8Y7L$@cydmx^cKOC3y zn7>R7qHWbo#boX>nXAARhylAk`G%(r^!jM28p}zf>VQQ58{9v2k$Y~}EeKMD$b+8~ z(a$CDVP%QFAPJ(WLm={|2N&SuQ&3U73A&b-_YHu!YM{|kp8UB^ekaf4_f1UhLq>4$ z>w7ytl~d|{NG1gdSz1e1usyjar7ETz@c$1$Zf85?Eu=YQi_Tq+TEvR16$E2(z4S%ZUf6& zE>%b7-^&NE#n5=L;Q=mSPeU3r|ZlTjne^wGLYY(P(Kld4)jX_G~yf ztLacIhq62*n?InxzRWKs;!`%3#h3hKiy%Y(u|-C}Q3$fxy%jdd(Gy+vf_T0ifaj3` z=>94C%Uy0PE`hJR78%CUIHv}MVCR{84&Km)z!*0r)C7`^0WIeB73QCY^5O|5LO^2x zS+;5L8m7idu75*6MqFKqwJGOxbM>wyuuZWWIDvk>`9ZqM7{EBs~=8#4FpS+EP=? z3BX-N&c&7XxX%6fIVd=I%9)SPCrPksjb?LyaW7*=t2`qB&qAU2yG*UP`@BF5?3P2} z3q%&4XHft9BoRZ@y%_b~9Z5<2>YB2)Q!}$~lDORA*WKJk=AS1SytQe05)-2ba<$jX zGa7ow-WSE7f;-dNGJqB{O9`|7?OP!xK~+&s-fd;h$4*Q`fz!tl`Lvp`?|uBab4tWL zL+)2o%=jFe`MC}KTvi$WhUV&YcUSCAKjnQZC1eh78CEttg#4qY%W5Wy%jb-jTTRmF zfaF_oi85-NZ~Lvt;zEEn5jpMjLbaM}J1O^4L?+Okbx;Fzw@Vj++{g z$+#@veG8vC2D4%Hr4?AcS(~M$p^<8-XHj0%YgqGwVC9&Y7Gm9pW=?OjyD*RUuMONr z8a`MHM?LiZbIJKiPFSJ+eC%Q-9lR!k0G(n1CB?40YiF8~S0XJH2EruZ_peViWX$Cv z!}@zJW<fDR_7k`S0KTF?pp>y^qzx9g0lC zZ2mWu|9)%;C|KR1l9Cb#oe0$54g!9liU!e{ASNMUrotp_&ijiUcse-ak0T-I|Bu74 zAuvFs$!>R-Vz>joG#awB6@H*N#dod`f>ntsWy@gT%Im08aJ9QA!ximb)%rNi;CTU z{tBDXMh~~fBDFA#!4Pe{#3u65$6b#U_p^;zfWaECbp`J3CK{$`TWo!(bNVqI z+OXKa(A*%A&XpQRrNYNxFt~ChRg*uQ%6=ESSH8&cMyt6#2D9r42=$m(In=Dt@a@j$ zMa_t{VqWDLfyOW)ei;k+ZqUB5bO0WTrT1ZT7|gmk6EDzeBWqmoF%sNc;eA!AqMJW& zDV?LFDVkZ{R+g75zBq82Mn6Ek!&Rv_ol`fsfvQ&`q3fBsY@u*Ep^a(Bk#;-Ur zawr+pXHdL|a2nyZ8T;aVGhU(EL;;*62#%r_zv>@g@~Du`t<=?3;bzC-+OIW3LN+gP zeLa+#%tOz=dD z%)$H?{+J4E&egJ~7P>C>vhx;>n7BA-MmFWRFh5Plf}6f>D{&rc@Bo6aGzFW>Edkf# zTDwe_bw(HN;R<*G#ek!XR~_TvM^hvN!8j?Bw1`#@pP!3MKIaL zyYt1b@Mr>gRLZ}kgzDiu25;GApbUu9$j!|&FsWORD>(QrTR1i8R6Ld~9OrPe>D)8) z3Xf`fn3LsOeOz=DQhu$un&0KPxc=PnYQtQCY=hAKM&FHUJdH}ygz>^DTf^BfL2l=f zM|}1M8j2Gof{250At*R>XjId^W+B4yN21Eyl+qT~%x&LrYOI-HuBo&068P?NXj*`q z6Of6vhtQQ1Q&te_^q4ITU4dcDW^Y-?oemc1q> z2E`mOw=UL$rM?a3x)!u_b*qEsF^Ht3o&InWZ1%f3r!GQJ6BaHmg%f`0jr06%mQ!Wk z_2Q5IwS~RVMBK`U`Hhlo54B>GLVrzo@1FM+9`5VC-Y5u0nNS@%24Zo0sUKH!$}|WI zESJf47ull-?u|&Q#9RP1BuK9|yZ$@V0E43i9WD1j);C<4M`khUvjJKrisjYLxBY{5v{ekz4?`?d{p{)a77uq#hURv&ir?BlFWT>ozV~_k zT7B~sB{xZrko&Cwxrh0@P{d>%pfR0KDQS%X@gib)?&pZKsS97L6z`mNbl!*Ja;g?G zIv%Rmm>mJUTGs;4_91u@Hm1DQEQF5zsId9dyg5){uI16?K!v;oR@x!$zywGwW6qHz zZcDuX)DWD)^B%>Vf*~LJf2<4GSmpg1-esB+el#098B zgEm#5BKJcVmbcW)laQGzLn310S&_?HAQlU=Xs6WZ7D+|$rZ+3|bRI0b#&$S&LHmc z*eNe89+B<)gA0lkKD)SBvio&Mbw=xxe`yZX$Tkq9PRGj+e2#6SQ>gVp`9p>CDYT$Q75DMuKOIyVJ7-$t|2M!%uI z{AZ;52XMH-VxxTjh~qeQ9g0f7#Z-TuL35f%V~BluR@*~qOc<{HQ9RP@8b(%>(siKj z8<^PGvb|4Bb$Y~}H>dQfZA(%NhCOHdny;9JK(h!Tgo%YFQ$?r`hmLL8sFaGMz?doJ z0>D)k9VKy3?0zwu!#;*BA-iKh;ET z0*y17Mwv{lu{TXEj>XNTg~c}MDm}Fx9$)Yv5T(Th%16Vv(I1J~uNv>XJ5n-2MBI5d z5@w_bzB(+OehJqvyQ5z|4y-pOGg?P+?jxLnMI0^a5A`Mri4k% zw_`f@` zA-F3*qf%b6AKCAyTJ)`~R?GM_U8cAoXy86Cf2!KYvc42!PSHsC7y0JNM);amDAW%9 zo;u!3vWUh(!@;3;b(LCTpM#dk<#JFl?f$Ty&^x|@wNN;`SM@Gk?*}R8qA0+=T{bV8 zBQSx~ChYwl4!$8Nr=G;rSCs5g!G}wn$+#{Bs3T^?34tZHDciWOZxj?12B}jo4mAx^ z2kG~hk7UaB>nzOq*L!ZX)(of0+HK0Eflg`fhkxNn&Mj|F0Y>}_Xnc)&c9fsDS6(OK z4+YHKN0`Y)kdG&8{(f0KM0|_fqYsri149l`I0s6)z2aiAImw+LdjAwshwVscp7}h* z>?%K;WWtK7&$jePN8cpO0$QoG8qzbGkQ^W8ug@;#QUqBB2^=P;{mf7Qa-NIb~CriZrLe4xrLG=O>X zl)pRQ{SI23zbLoX)Yg1L<^r|%#Xsohhe*aO)tPCSRVKqf3zshw1l8G_y&v8-tI}T+ zxU^rrSS_b!g!f6l6c`w&orN^{4~qM1=P@a;bG4k}zlR;af2K>}HV2vX zKZnbo8;pdIAM%o9b$Jzj;alv}^6Mh>w2i<8RWV5W|JE_@zAH=RN1K?K+PX@@xl1!Qe_?%b-+gJov9 z@Aesz=yZir1ydcDoc%2Te37kY(css5y%x+iP}y&Fyu#~p-2SRCE31RTICX7L&C=6P zB2AqqUL$Uc_Vv|oPnapeCig`1ICR>TZE zrpvXo3}NWmnf3coZf~~Iji-tf&L6IpCvxL8#b#$`?c?<0w7b3_7A=*k*3gS9Zq?sT z&(~!Dv^0-pxg;Y1*W>`p&-AweT7d3d!I(!u!8ljZE~TU%DV@yHWWYuuL6&iMM4K5* z)1N&#NtMJ@`~?hNFs)5<&I=i4B@I|xXDC#wGXs=j0t#|#>Z*AFR1R}<#{)(#50?{c ze7K-vGC>l2SfAbNrKr4}Gg}p0ARcc<{4>e)b<90!8d>hn#G9R#D+*`w^vH#eJ3zei z#nG~sI}#ES88LBp{o!O`w3w2zaxd7hYM+LRJ+`dj$Gf;x{odY@5v3C#yqd@wir(q? z6PwkFSI|!&)FZa}=4=b3pb-1s6;P;!Jc^OWo;;{_7gI{bv)SY0a<@N{Ekn$Jmr3Ol zi^mltmR}ysgSLiKjqffGC?2~4kr}Pm1We{@sYTuOY9&wiw66{q#q!TaxYNs;4%xu- z2QD#es#6+B=1a|q{%>)_biRmU%GEVa&ugWh$m^Y~$-QHx_wNY_q_dc*lV-}{7F|_z z@0UR!{dJhGO0L9?I3M~v=U!-%N;*CwO_w(TywE0neV9+kc<%m2a1QV$#t6CJ8JJd9 zV$KDj>d&zs$s3u^>6r|~#lD;CzfrTCt?3NFp#W4XiGwiq*9!MV3i_(*>i)H+O1aa; zN^#6~Mq#z)SZZc5We3YzrQ_-z&S}$4j#azzE@IJO|4e@ z;STj3*5^45$3^`O{rFok(zFYt0R>7L8s@c)uA)P;>O!|FgQ0P*pZB&06VlvM-xJ1t zO6ye8$53w`?bLT zOe3e%o^7*!JX5)3v!}jk$R?+wKO?H*V_9;_P7;ku1|qdN)*Zr*x8R``G88=!}&mz(D-xY=Y9CN>1Kay&=?SuzB49_S5x9x;VxtssZxkY zsN>|UTT+%}U1FJDWa%08$Yk|N{_|~2CWq9oW-cj)M?N~v1AM%oP707Ez2^i`x0j)E z-=Mh-mR8!w{2OuD1V&rkEp$cW4ofvPhQ&9s3YE&qC@5^?_Rl_PP%kJo! z*NVY%pqEiZRAg3QZ$;ycM0#SWKAE+$97B1t%NrO@Yi*TpUi97@=@nNksJ%K;Xjy<;x}p2$dGF_M0ilFGjZSn^CHAAe=k>9=!-P4}3ELR(62jx# z{h8|%YmPV3E3wRkoucCLabtj+dDf};M`H3v)mo}R9LcVt0PXTF4;sDn7~hliZ^f9n z+@c~O*t0A|X~(q|i$#|-7dsOHKnNTcVFQNB+7ERu8_jt9Fgm@FIF*PN^;TYkVxrzh zYHQW^z#E(%`g^PBbBN48*vB&(EWLO>#r~bE%E=lA4hyZ5!M4UQR{(fzZEu5Nfq443 zKGZ~d4(txdbY^aEF`wh2i}fG4=EXCCSTGNAhQ2`gY&=~81;kTP<8UMhWea~BkCu)b zZ#q(Knu}ARPysvcE5or1kA64R0N9fAGx2_DoMA5ZARK&wi6GR?^D$w7UiorJ&}wN8 zr_*0%8RjQ4tUF(pJa_f|!`19VpOaHiHNvIFsuZzl53u9Nq%p*GJs^DEp9E|sb=ZAs z_br3>v$8{o4YM}U3i8s7z}tY&n$DZ3X}pvxm`qo&NrsI*9PzonStA30#>H{b7sX9? z31sME$zWK%OXT3TXE~C$D-W zLNzr?r(aot`h`Gdh{E`W(g8{C!r>wp&)l|U-T_XIB;zQppBI?VL@BGD-P)U&Ks{{I zmVPJHARp1uAJ_V++RwmiE!3PgTm?H~o47q&PZ!I%Gwal+f-5L&I12b~&AuyuDGwC) zRmyPs(n>B5O09RQkQ?0+RU%tNfUKXms!C*-I8HD9qw#365$82TnGkXnA=10pF4uI! z2u@Kj_Hml)p|-TI`F8ER#aYN(r^Dj#HeZ^!CGq=nyJDqsl9OH*s}-K5d74aJ~dxaX+4f@9MXOb6#TfNhCNS->-azhizzoT05Q3$K-Awjx_Gp zVZCul$7wn4geu(o8NvfTu1}V5i)J-mlJkG~&4zRYc}X_k4Apy0x(1xkID0lckP%xH$j=Srt0`#t}Hl=v=TeI`)a{-KcTf*1D}Jm=j*Xr+n?3JrJ> z4FqJr`omYMiJ$52R-4a(Ky=n$ynoTv z0aHaC$upTxJCuou-pr$q$`qr4;R0_>jYz)>`;W@9D#D}bppFtMLW4LnWW}$m=5eas1MVPpl1% z7x+Hd$Uq+HUstYtQZCH0B3}Le45I|l!1stlA!0s%U-K_s$PCB{p^_-4zb=Hpwkj0x zJ#|*1tmwb4+(YtAx2Q6Z5BFb95sVLfFUZJ10rRgbe+Q@o6SHjZ^FN#U@BfVup|V0$ zr{!f-#Y(ILk$<_0_eA=$w4YKxnT6o^g}){w0vZXd26@CU{rP7j6*)mWwr z0)Thy@*tLCC=i*6(OL%rc)g5ZDw{sJN^b5UCO*TBpPy6`XVaHPyS_Yt`!xPYg6!{q zUAF%u4gdipMvwPMMMdM24eGS2@;cj^a#>?5?F~=b$WV%kK$?pvLGkI?nZ_*;Q7;)7 zm?$>=v}~^h${~>)wJ3=)F$r1!Cb|PHWdsFjF|!?tUy@1Sa8#BxReVrwot>&$6O>U1 zTHp40lNI~@^DCUE_3iw8LevaaaCFfTePTRU|9m65G*ky3&w-54Y&_?qY88nfb$oCT zxbPawk}5~b(|){2p|2lWt-iu{ZOyD%n7mK!vD(-Vcr7r~`F@qCS?}z2>z&y4h$l@Z zx|T#ORTH3#Fhhfk_ol^MR=joWX%eHN7ah!WvLtuz0BytWY)Ej!>PzI-xZ1dCEbYq; z0LfPCi&NBC;$?mm6hhK)*2f0&ID4?)kiTyiVp%|tW?4iTd8why)FhAit0eObDhbEC z!l}sP?%;J2OL@ZS8B^LtVD?kwMYa%7Y;t}{=96%ESSBFL$ZP>w%cZa=(z;><U+R$2OChygKqYR z*rF^;7?xkO8t4-rAFqg9t`@~yE)>}J(!_OE`X0`PZ83|4bW;8`F`y*Bep82G)5<1^ z*>oY5`dDZ>1HC)X66A6fR-!K=>izj;1KwlzHBfIUDJXbR{DNqx-r8EzKV~8N&#;L3 zFd!@fWRN#udXvn3b9c!qzvKf+da$5U$OVSA?vMFML2=6LaUWYs&$2QSNjSYZk{n+E z+dP(iR$#v;p-G`!04vh+JplvjVh1_*J3s?@g~KMvvSq@*A^yvZ9YQTk3of29tA;&c zPa%plP1m8axEpG9WeIc*l+JqP=WmxyC74X)_!rZZMpp}pFkw8bEiGsjc%VP1P|}qU5R>?j*H83b{qJD5fPEu zhK=blLW^Hkddqcxyu0z9Vfc&uz^m@w=uO`>CYcZ*#z#zs!HAv^NHVISXVh0&S5WGX z!chLry$qP93(}{sovc<2i7Er)(J~G5SsAf)V#i7#s5~Y@@_Rc5Il2qFo;U0cw;IkhQo zRz&ag7d+D>%Tm%LCr#Wub&HSbjWJcpBh8F*H|VXw&}@%sGY0vMlQU2ET!hH^%PF8% zhUxF~jt(;@oN%zucrUpz#F9vdeSWV$rTpa|z4mEo!H0grd4;CoxRK|_ou%KM`QEu6 z*kVZlGS0X!%nP#*8x)_{51U#HgY=}MwlvA56N{BdDa)Onzxpvs9KSJ^Xed;~DW7J1 z-xvQN0e&T(BB1VO{RH^P!hM051YZ?_)ZWou#z)5ZbC7UJC~j#?_>t3j?HM*WdosD@?qp5 zkk*j@T5~=@GKYQ^=^Gw4*n%^LL&KneSi8KtoJZaXV@Dzb*oThQ3;L8nJD?Jnf9P8* z`|TBT;g^J3>M;Xc#ZTC5ex*>0#89zyA4go;k=nfriK`0N>*N1cgU^4WC`Z`4ZaNeB)T~#T7X(*W=h;tND^Zv_md_{$Ps>DmbE3ny1I~r zD72i9D+4iC3kW7(ZZqSS5f&rRf1eNd_t1>Vg(0Yv3$(p(FM4DK;QfXp{=LxJL4_n1 z0)ZrX6F%Z`oNE6bmiVLU&=@`PIyySGW0)@gf&pGU(a1*31NTWOC@4Uj)%e83&b(z? zuEW9H*b8*^(ULvLP2R6~-qKt*zIuM`01YY7{TB8Zwemj{z(a`q!65IQ3Qbqy|HIx} z2UWSY@xNO{5fu;=B$V!yMnXWk8>EqLq#Hy^y1TnU32BxHEV@fjKw{Cb=w@;5wfBDC zce~H;%$f85nPD7fU@@$9KhJYt_xJjKKi4C-wG8RmmYHid!?^q+{?eSLJAEv+Ka!Xj zR9Gl%x22!+yF~*<q~1Fd4y6Yb1$^CrYC5Vn&mM%HrIU)pQ*-Jvc8c=*C;Ry z*iF!*x9{H|S9*{952L;Z-6f6R8%E`=roJo4y>(_RK)x5>J%b33xAvMT9u=C;>(~_9 zT;Y1NjgDqtMeQKhTvU{lia@b|6uVn|b;|kpNCe)FMv@;I3gyoHuOvI^1G0J+)0Mi; zLu+Zmn=Zowr^Pdmh8uEo$uD;57aF3fa)4~o!QKZy2f;8kEl3O=_iY$Pep+CIcu1vP zGe_;-Q$07o1^*-|L&}hL16*K1l1e@RS$J+M|FK9erK%B+mrWlyM|6saG|yo z83AuSUrn<-8Q~x!Z@uRQ>?Mw62DTNgyUV!<)Ytov9K$oM0iPH^BaS$Igs z^kCAV<=bnT!AxCI-6mrdOG`XmN4Z-jCXGqmvdM}xXl} zY;^NWm+6DjE3YIU0Z&sELqlo|;&d4_OdeGN^(O6&)q>)z2W3}ORHj!_ckD=E!Xqc#0(Jp6PJrpm*tm(-hTRmFag`y=({lA&lOS^MoF< z(is6YnjQfJPxb1x;VcEvy4%$08(VG-Ky8RFh+50^WQMH241q?Gz}3FId(-Gp5TlYv zH}BBT1a+2@La*O2AbjaSS-&B>Tej;#6e25cj6N&&R96&WFjnCmfmhxcD84(nmoofvM+!c#L$Sn7FZN(UFS4 zNi}ol2Scq`Sm=zj^mJt#@4`nCc4`eEDqGw1<2A>|q^6e4IcvmVvjG1G%p7UEuE zZHB9xgDSEPOR!wkVz;$ka%+}T2FTp>JL^ipUrgm1PY#DC>4&6U8Rp_2#R;mPTUm10 z07s3@B)#TBQY8$wkCFAO%9cSR@xR)-HIL=r()wn;8Du3^rWQ~t9GY7y1@=21U)WSp zuJvxnCzw{ zUj`Ej1~{Z;blH3f{9zpk#Y+BZ>Pp}~gZ&hJGQ*e=TSkPeHCR9{n87Z(qTS=bIR zV{U*zEsI@kWB6WBFQ6|MSY4;rKr)94wU}$3zr$6^kvumK9qm(K4 zvH17iZ`NQ2i$Dq@uWtK6gQ}t8LDSyXOCUNrZOug#Wdh%-pBOFQ9izz~megOP3gCy< zEwb9C#4MER5-PjWt;~DEVXT!5QTF-=_^$EY4V?VYYwMDF%1>i*W2l6eRPtEBJJt1b zZ1U!h>&#~r&^I+VSnA7Wv^U(SdCdtvna{k2D-Nbkef_T%;%?~FZ%Dk3+w0K%j<@8< zvG1Ue8i)x^O_z;KKxI`DZ>F?eDm1DXeMpBUY#R#{e|*kUj`P#|#scAq$9~s=ac7pH zD!y#krXJT4cM$wR*D*}mkl z@%>kvYEe!2Du%|=o*}y)(H?h=WGAVrQfv{ks!r%8&8R=jP&TM9fU4=MK@t~rd%gmChHOe(=077G$5)HWvuErcP?%WIDLW+eEru=3cz}kQz#b8 z%wHhvqN@iHf~aE{r`JGIf}!2F^%L3yo#d!29*|XNvF?}BZ5CHtXj7VKcBK?cr*vHT zXw|4A>=&2uOtmzM@eb%aM23d`l)1i(6=^C}3FuC!QXc5~zPf`$XdHUVut-5Tf4zi< zCY0>$p24X=OhU>=d0mUm&jz0A8C8cW!NXOm1BYsJLg125k~cXRD+7~TeyvcwTSe}6 zY9F)0f>uwT5ER?8vT|*X(@59J0B5{T5n(Kh42K!`r|N!2`qmYur$4LP-USU#uFgK6 zT(GG`8i%NoO59r#*TSk^3pLaEh(U6l$Qwz-9og92-XBYaUOgd)<-nYF<8CSn!QG>k zc}(@>$&+`!vn8*VvOkb0HY(tj@JMxFeba-LeiXl0*0!_%{;Rq3b4=&~4u#B3g2#DcUP z!`uMWM?nZ2+>*8LI3CVlnsY)o*{-gAKY^0#93p&FJvJvT*lLT2#OU2(U>Ui&D`j?a z)2@M8iS+!Es-pf>*vp~MA?V2f7PZsz&YB|P^qo)k@ylrScTkCc)2iFlF0nL*Z z7HTpB8~)6?*0GP+UE28TYgx}Hsl-hbA3?kc{`+MG1v!nC1UX*5>?37WT2RB)3;^;c7m0zHh_J>DBXV8}T9kd?}3ON{rx?{QJ_=>8XPl$AzyofETXP`o)g?RDllf#OI2X;^F4X7wc8poJsvcHeN_~`{ju^UrUH#y4>z8-p5#a^Lp%@z1Fzu z$*|Al!O~ONIRRhAJ;rhH7|+{1m`fB0F#KpY*QB=dc6+=i%45!N9cR6n^73HdB5mfo zptB`^)SXIJ*Zn1&RlJU$h5}_n-cU{-G(w}}P6R^mO+;4C)xx_4?+Qj|tkoM4l`FeP zh3yF6k@LSY0XdY4m*|Y~1%aQf&x>AKsiQQ9+sdF}749=C{F#Qx;yZgQkg8rzTNL%G zRJlgX@FA1F9yx!%&hQHDf^nF*fP z>4noQ1S`4U!|g^zd>D8Ldh(u@;+DY7x+x%l7;~SGdz#xfF!WcK3fbEg__aU(aM<|P zu$Y8BWBa8-gMxRyX-#MLuU2jGOwjin1?l0Br_3cY_fj|yobHpM!*Y^O`$0>Htsi#T zMl=7T!1%(mJ~94s*cYL)!4ecU5VS7*OlA-9Vz){nAO!>o?LBIl2a$0^qBrVlsu(`{i0QrJ^-t)oLR#7A9Q9oOwjAOwGrN4Cx@z*u+D12A_A|$-`#-=S30uns(aRb0y4QGDoIt2d;GlamvUl(Dtunw+dUr{XUR6rzGsXiHO7h}zBulm zN@S!PWvSzXGa91Z*{wTnc2T1*dJ?OjuJVvDK2I)veduP+Rn2lZv9sT-^P^6LzOi{v zT-;)ZW8IwxEg8z|=$#hgqN2Qf6q3_8kJ%@Dm^5pc+mZXZXi(47R#CJCgM^z*&rnsp zR@)1uXUgmC`g7YZr}H!d8E~a^%DplEI##_C%+E5mJ0SG7Cs&yMY_A-=1{_Q>O& zOuCsoa`*H8!e`QZ+wsH|k-#}%w)>!ExAzW9-V)bV!GV+>*Q18PF{^^ZdNXO9&oo>{ z`e8h`AJIIW*7K~;@HxrtzU*9zVC$R-vWsq|yxMA(?qFVO&F#twT&H&4dwBIn=@D)) z3J%NhuM~QUUci3HYmiR2zDT-OTM`n&y0WDcp^?h-1ur-IMHMy+&e@gwvRTr3H3_XY zOJ9W!dSftD5U*s921?WIC0nX?|1JqbQNYGwa1owj%S)OWGdlEg?b-F%R!=6bTGk@0 zLhlsz`XcJ+RH(gtmp`n>=qC=v7VukbOwyFk7UVc5wGGr%^)22XPA|RIswR>CkTQ>B zSCE#!k8$yx^p5nFXV$45-JG#V zCB&f6^F`BnT*-o!xsR^Achu6L!ow&bVgC2Mx0CUynL?-i z+_DzvI&D^W7(3Zn;o3@f{oPUypSp>M{IC%`rK@M%O_ArX3&A#24>G%G0%J&B#yt*w z;yqZ=#nJ3@NsnWVbVWoC?rN*k{^%+lPTrus4lvVJg&fOq1B3T*2MXl0Ox^b!^#2lA z$%*MIKB&#zhG7*VD`nOpSo6|l-p9(Ql==4c!v1}J#Fe`^k4=B+KQ6(P(?yh2vh-Q; zqf}GMC5G;I7z^bbFjFG#q!~xyHdAVB82dgMPJcAae`i2r;oi&{i}wYx#|b~&KV@6I z=o4>CloCpG?`xjuYz$z$l_21eDV*5eJ0{~YqkxV+f63P+9M+N-s=McD+TM7_FZ~&f zW7%8VN`XqeUTh4M!MHzI>}h;vcu~Nq^7`IafH!U+)4<1WSPEretc!WN;NcM+_i%~- zLsEn0YJ~#IJ}K=y^z2%0v+K)oj2}PgFDapuMrZhZ#@V%D-9tJl8cYI|JMN3MUXM1# zvw`(=HK?M?IWK4e*%BM6zGq-sYEs8-`QU$gs4YrzibKs;f_oGG@Au<~>{crzPN4l` z6EJQ)Ia2iBWyWl(M=!$Z-0Njkf(n@-bX$?t|H>t$l7N<*rBA7d(SOCzzyD*-3l<UmjCHwjC@=BAdCoXc|8)BcUaVWP@M5biK=0A79?O1~B(?)}B4EI*i-UMXu@ z-?f!;{NvF}_rFv_{s@IcQ%^b;&cvt0o<8MzPR~mF?k*7*%ZU^O_ar18c-*xYFNH9^ ziNt}!9mgz6TJC?dYbhEq7=lrC1_lPUQ(`2GUlntSrDaww%Vs0qB(aJUGAR0DeUBdG zL0Oh%x8*O!1a?d=(E1CMQ+f29e?1#SLvljz+xh3^(EFTd;tnP&LC_#YS^}V&fRNMj$$o!$2>@_#_*}UyC2^*ipyPA9JKWNB(bW5TrYM&F-}jb`wh7O% zj4F%|voECE$g>6l{&?UYI(flLGLiV$BA%yTiqtEtBT5sla9Vx5?^Ni`6&r3*TCb0o zU!44KiH}{ff#~~s^F!vzGb z6pP62#wl`^9M_a?q!Th14m&}F&}1q~0g_*ynbK}oz3rT(PJal#M0H#lf)C+G9 zGA2#sQq%YUQ0&5o{%)m0h^WJOo%@ulrDf*WIhtKHlx`3&oe<}ZPIJz8jO&}1^FRJ3 zBPO!(S68?6C&BDQf>#gx^$O{MV1{#Xv1Li+3i_-*DMf`t1 zZQA?B&+9Sa8IqL6s8@e*sQVM?RqgDQE$9XfT8ap@<~Ngr<%0!}d~I@{63eE2v3T5W zgJC&E@%5H``Gx0u zYv@i;IJ>%0_!FEVa6`T#^9bJJ8INWa-wgcI$k7IFME6J7d8;7pcP301*7?WAG)pK+ zdhX-_pJtHD^9|K*Vq-N8^kAy3bJn}eO#Gz-IcB9j}55i+KhYsY^562_8@qn0& ziOlfhvDnI`ajCfxa3C|>{;u>%DUyPS_2T14FKx8QSnA4h&9dZjr}bpWQYTO>+3wFKciXEqL538W52e#sf;h6!`5Y-F=vgaDu-ckH zI-wCI19h!Szg{*QO){%Hvs)bs+2k_VP8P=Qc3?3`jcsH>5Ou1<@*sET#+4r)ar#&6 zjxqS^k8HG>gNjX?uDMdV3a2<&=7B&=8xJsU`W9_Foqg(eXgcWQ35}{BohS*MsL(48f2TJgb@)5|k6I1Z}%c9*xl{GC+Z_q=J^({U>CnTb>Z*eWcfQNm| zxre3Vc(jhsRfwZHU)5GxSfR}Tf=F{RpD4+hm|hDsgpuV1|J6bllS!i9-&Rd;0{W|( zwc^YSnMiDtyyU0RmusRRMK*XkK_ZBPlTf}zj7t{~EH3&+-@*=SDK(WU5RdlM!8TX2mB>mA_o_7XM zYK}9dYWkS4ei#b1T{*B_|A2IrM)5mMQ}y8Bp|deeH#$<@I7Ye7{eraDhQ)ke>C{h? zaj4-!FO(A#cW^*;9};)oT5TPI_c0i`=MPT}W;vp5 ztIgz(;$2#|tKS@J*7XV0(0Pkp>@VD8io)BprK;L2HQ2u#d`0YaT;7rK7eVq9YBQ~R zHfCyycyBh#s@%l41(w^^dLiHsEFmbV8R8A=4!k!7hqu&!{t)z#AlI}J_#c-63t5v+ z)6#XL;IqR9?lxFoO*NI!>>)S5+Wk_hw|TzxkxP}M2lALFiv zaoFmlza3b&Few!O_N(1?g6%OCM5v#QdN>6~AZl&D2YZ@P0Vq@?uje933uQwnX5P#- zIaAtYR^^1TM3$(1DM}AY$0A&r^8WSJe7;+yG`Y@d?RE)S;Mqz-fk?IN=1<4DpTm5^ z6~PJ)kR%{bl@|ErNv!SP{uE*6wzOVS6zkS#5}@^gJZ19-vxgsIR%dBomNJ|JusdlaM@3ew>!W&QDx#O+(Ql&$|M%Sxy8kAYzX;1yebdhH$`8Z_t#n2g% z(Mq@UpLm2~2ESPaR_BCwg!x%O88XXXa!1d|$l&;HvG~n!J`AS=Yhl0TXAfr@SwHI$ zsa~GPN%#@)yE1c5+PvAY7$4KAK}W-!*kc*3Y_1m9Ctj}r#Um5DJPtG}YPnUtQuCg3 z$Fjm-kw(9{q%g8Yr_cu$2dOsWV&&RqG@7Xsc@ptjmc7S348#Ogh)u6B<$X zc~se^wv5qcGU6l1P^LO35R`admd?BhQDJY;(8cW+|IVWpj?d~5?Z_HQNP%o6P-Y1& zrrEW<^`}cR8)sIjQK>$)97txh?9JMCtR<9K2~O$?lQIAP37?Z1E~pLW%_3i zh)XztGMbpQpKzc|k<@IfnM#?q1S1=PrGKk49xe?9&Fo^dt|WbCGX-zVx)lZDZIdd= z7mM39dEY;aa#Xxg8oFdJov=>C$L&vQP7)6prMXlk_O6Y0a7f>L>Yz~c=ueji)lw@R zjFMfa4eoIP#2G4ua4Fx#yeN996S)w?fg-DIy0+_#C`Hwb4)s4;r}Rn6n5pz0@^=WG25){CbgBZ0xmK4)T=`YATp^?Xtr zp|m-?2%c(cb620o;3;)dFKp-?jG?M0DegXAjT^9Y;@b&!YVZ|ftKIf5B~|hcOgr>7 z#mq^UYTM{ls&!SFE+Ef&!f#>LL78cW#kZ&TNfkD!I4iG{on;Rtxbp9|)GMUJl!~nW z+>#Pe?c;G0P3(EJE^H`N@#gb~ND{#z==>|aspc5w#uc2p3Ay{+L=wgeD^^vL^9-;O zr-n#&zl*q{T{+Gn)E^|?-T1vvWqp%)gDlf6dhjVcQtD)i!KzhvxTmuc83oXRGZ*L; zr~KhrtW3thAR}lKYow9{uNvb|%TrV3sRK!%+P57JwaLj3zuX(Es~PH>!Xz#~>0|S9 ztNdah95XF&z0?dZt<`I-R@LhjG!(6bvLsLBMJ%7}9DFEos%S`laB{EZmL?G=y++rJ z^@f(Qag)nV-8nHG$IgDYOzoLlk`KAj<^)RBnfqaA?No*CzVAhx>rc=|l>Rc&&YkY< z@@0&hYbrrwbAMc6x5@WVE`jTv!I!>;I;%t|d~g&RZr=|WOysyUyzV~g74(Pnp-GIE z^$U8%!1>gN-DaI^0kSuxUJlPVXeH8kMw{nNn`CqVHw5oD42bO)^&LYs?i#M7zLdHU zwX{uHfs|f%pSH4vqphS0P%Rt2XaRwDmR(br_T-PyX0Gc@+D8FAz7a0h-(`J|MM z71t%vQvEY;lOC3eYLX(Lh5O_b->`WdqIxpPz{bWiTAqyf&Y75Q4zOQ$-_Z_&II-oq z92J9hebUp<7cy^s6i(_sFP0{n+|~N_7TK0gQ%ieOSK_`?ZZz1(UFIs%sBI+<&1~PD zt8vFtVdzK+Qq!YR7=8{6UuJ|xZZA!qmaUM54EOdf&J?>Lh&?=49;hZW?j&e1SkKKu ztxTucy&dtv2M}kbyXiTv+?^5>&iZY(RQL7Ep*IP0I^8K3CyS;jb{%(@p1$Ienatt1 z7jPT+IfQFJAfjswgy(cZ(a5x@u?4$iUr^)WPNMlnM^_-g5-CCHoU@-p2ktYbq_P7TeSPV5uQ zTibBytlec+b_wR<&L83S9 z9YLn(>J_Vd(VHDC$h&%C93sJfvn+4u0*n9yj~_@0`!bb8jNK~lXHH>GBxaj@(0hXH zwwYf3FS~gjKcvb>u7KZoFz~&rOeA(kPVQYgY3+)fj^vCU?bPqkQWeB`$ug|a3yBWEa&RV#KpfVksZ}prkvRi0#npD#un2zE;m%nDFN!Y=QJ$UQ1OJi73XWBI!TlZT65i~{d=t&RKI`0RiQmm)>0cGN|E>Kf7 zuYK#EQQ1JQ&-5VeMb7(O2#9(#(MBn&)F4?feSHpu7yUnAX2Z-&uB*mnXI7PTFP0#P zrqqkm;T$AZrBqsF&7l?WV`B8>jZ+pH*H#skm8m00vg}rpc-YTzSZYMp(&I$-_f!5n zLU~wWC&V|HzAtwg9(LVeW_c(lJCF~6GDyPSM+{ytdg*a=#5x%plC$S(j)csd4yck| ze}I`5t{|>43pBQ-Qk)h8-JOoiBQzWsDvi2V$J1YmaTo|;Qqh==foJf3gJdDbX8)3WLe- zeD$*goE_=9^>rs_=4k=~PH{xduuHG+$&516spEnK!2q*6!M^DMRm}PUFkbBJy$v3# z`cL}RhhYx>|6tS+pHZh#Kd@>@MP^;g)O#=5oS0aKb?suF)B3*nS?)x{$E8r$b+Usy zn=95;dR106#9ggvzcWf96BgD#lE}g`&Sm$-$}Bym0GOh!SCZm-;|}YHY-#tJXr3BD zS1bWCuwqu_LeA2%&}CY;lB>eB#k$2DOJF7O`0MR1>9!6fnfL`F^&L~SdSngM)8k~* z7w@$*=gLqkm$p3{OrmaSVj^GRY^9NL{K2ldLXim67?6o_W0`M42L&uYy&Q8AV`EG3 z?+v$lUZ2*Ji3Gj)K@{!)GX^F1z%k=$Qy?UYA=!%Fu~nu(v(6H?UL*aB)ig6Orsxq8 z$<6{7XQ#*X34Eby%zB|sS9ci9Q@*@99IjIkypF$wf|AD<@I;{t1@&jmPRS4%xH&j` zt-;4Yw78`u9Rfi+YrcBoo0K=%r~_u`;DhRageRBg;_p<4na^zsN`sqx|zDeR4;r7qLwA=0l z7=D$f!&}bCbpqq7hP~I*rz#K{i5j@_r=NpuEEwSU7Qw3CB-5hlo8VSv02LqBUSJhJ zNV6Y@UGi}`rK6jM$2fG@q@#ZkOpUlL$2~N$Op*bC3TEuKC-Y`#J$AN0L3y*IBf%~nhyp(C@jl6sR;7R3lhT539_z{IwZY+8zq zuYRLWd)XozxZzigj$xB*6@SB%)L{ov>p?9-O)?+c4{;{jvOov|qz^y_N7CKBeT#_= ze2y(@=H@=W2PWr{wH=LXO+R*84u6LGFVZ`pVK}Uj04|f8X<(>HY(Hhs7!kTZT62FK zuc>Kh5w8YR+fFVUG@4qE)dMf?9nRD|)`=0m;CcWGxxBuI<@dMu$52SD18c^r$7Ko6T6}?D2A^wTH?e0pM1}-x0UzDOrF&~H z9uNE_dR#7dVAUTmFps$AF#o*1|H{3lZ8>}rpJM6u2D7~>Xw3Sfn;ujga8p*LY(w$Q zHrb&c<>g)uO%w>;B}7ZLO=l&649*hSBb!^lqTXLx4C`AzXykS@MFIBSKjX;iRbL*n z2rRX7u_D<-av7T*A0O^*cU|U_;}+~MFT34{{|a9Gc#o)Acq*R3SYJdA_39|j^L7Zn zGRPk&H@jdb9+>!!I}Rs|7Rr_My??C9&n`AeoH+&lK8s-EqsST6SVOtNk7!*fThm>Kg} z>}dVRtfPJxOaPGDHYZQSD96mSoZwXeP_|Pyi|3BcelVD)<&A1S<`hMe?TZbGkR?sJ z3$U#G%8d$QyI@jc_dUVSltqyWIb5tawvX@ zMneQU(u4F)`+6Zx6al@}xZt!Leq*oT^ctDY^SgNTP7r;9=F}oyg4hX=K@Fb5Y~0mp zBgCU33uv+!spb_7wfbv@BbNrZM{5nmUU~zeJ=HxrI11L^>N`lx#hCi+N@qys)?~SQ zLAl4_JwO1K0&^y*JeeJfgG23?b+EM64`8?WU(FY`D24d@tCek@43)~I(Z_d$e1AhU z{7tlk;P$*W9JlkhaY7<|u<33}NK8}cAqF~|FzIxAn|^nwHt8I2-f$R-hO?=6+JEb3 zNg7AC1JoHRJp^2L%gOB%NyP*E=|Z;1UPs+@kQln(%?o{Xo*&w&7<~b_E;**P`LY(^ zFjy-2aPqTJD@iuIfkNq}_t`Xre&fpzOQI#eO=^?0I_*!+<6FPrJVxUDt$VLu_FmSS z4mn+ClWq{wr=4bfrr~dnbzc%iJ26ix4VMN9ko(|xXDDsg zTmoZ9#DVUa3+%D+W_KOkPPmiQD|Jei_?*_WpDBE-e`Rmk-hX$7bzn_g@7nnLr?*$S zE_<%$xCrK__%(Vsc3hF$Kh}Q16@O{c>9#?PKK-m{V>u=;BjkljdJkNb>FL)XDvS1A zt=I7>*eV+Cj8(8g3CdW-j~>+9Q-4R$Hl+o=duBFpB=!thxt&pfd<9klu>kobTe?W_ z*mwUlE4uhKmb3$zdLJf1S-YRfeVKdKEnc)yxq0mIr`!vt;=QtQjLtExOm!A^eJc}WTOQ4*w9Idi7-@h@Zqeg2QR{(4abT@AVs71u_* zD(NM$$miC3Y#BN@aKpA51rMKL{WGd6REF~hcux+iN>i?0L|2W4P4hJ3<*_ASss9{s z(r#(s454X4l4IIG;F$bc->7Jyhn)e9Bc@MfCR-TndM%f>c6kyP-N)12``dDDT9zd& zzM8GPn(lAoPg+)D`FRfqB(<72q@I>Vf(&7Cf$duQ<1X*+ok=-`{H@KXX3ge1D%=Y` z*-0fNc1?781lKmRqMtNm>TeN*TgPBaB1Ew246!VC)+?KFB4(IdWqlWji-8aPN4P#~#6mIPpo-DiLF3y^46Rdz9LUnqd=xmutTiAi1Q zUNHD3LCc!l`fyl$4_615;RgbJ+P?sqZk50${W6jw>Xnu>r>DSN3y^=SKO~48V}V>4X$*L?Q2p%s%Wy`9W`$#09(~Fw>d+ z#e!V&iKzE-Cl*puNNYyY=!Al5hXbecImY;Wg0@aqUt2OVdbLx1%(ByF(np+iR0jA6@7v}R}Hg|K{x*xos&OHa*W7dWq$*9j^ z51WGhX9zNPKf5jjl`sDx834yy=oyWn6t zMb&-&XR9(o=@C7*;n8Ha!PJBGTq7-??*%x7V?Spd;!u~#SakrQ=2eXF&A`+@63+uu zU#xIzqX3$jOsmJFcOgsi{eA>*ikR2UHP?&$54WZU#y{T1!dD(_!4}E(q3y<3db%uo zj}U_#>HPQ_{D*0w*ZW`p2$^d=1QJbMa-q1GhzQ7L(=#wUkVB8Y|3AM8atJWH2a4I>KzwteDGb6m#q7}4katYY)%WXL#gIXJQ zKsDh^w$Kv&SL7`qQK*Kau6Gyb?Y`qt($zt5da>VUtioGM+wG^D71svNYK#@ zR?o<81^pfdHwUS|gOZlq*Li{oh&dCXQ$SGWdKTdxR^StCC=Px=XLsIx7$SEhTDY_fmN|BbggWXUoq1 z?hbQ(n01>IbQ{UhQv`E({%@ggr+@PJUsvle)AtoF*|mI*_PL&vDpRLops-&2h7%fA zvrk+=Ssg0?8uQl&G8h7v);L5CTutyc9MGAUS?_up$JD;M>0)!C-HSYo&AHyJX8 zE5`L1Y02g)7e41ExFB1F{qmXNO5;&tttl*QzrjYEid}}v-M+Y`ll5T5)4ZyMEfVuN zz0uHbtbTvy@}|Il$G*Qs3ccaygj~Da8BEiV1wHHG&CXFGyV@M3JVV-VHVXK^jMXhW zKjO!7cV7mL<{7PnNa@55=wPeg4J~4&!nUx$wk|J-9kdBk)XR(mgd@Xch7hx&B~^sN ztCC!BtnN#WCGs;Sd8LyVj>{@)d{^q#S{8{Mz|KfLY@Vu^yK~NBIfZomdWaSXdq=I@{Ld`Av;0^`4TNCPGk6ik?X7p3EP@C%TUgZY794 z(Mi1p80C)%yx^uTJb|o`e7|OJKuS!A08hu^N4hJTI5Yoc*YWM2yfFz3l$X zX#u?y72J1-X}+vfQ6^SeIbp?BFsn~{w{vb;;ho8=#W)>Mb!w ziBb3VQ9BwJUiarW0a0K@u1$n#zh0o8BeQ73Q(a@(i3NkeZx zocFmoJs&e<1zw-UQ12gKOnH6VlnDYWZQcPR*gqdgzvRDK2sA9%O_a^l7=5R}mHSbz zt(Lr?qJTS=%!-GpAGZ3a);u)I)y)-{dvdWU7}LApmR0ezUYqe9pJE()y#PNpc~oOp zN=nwrBlMYTr#9@PC!agGzV#xTY2?4V-^9<{3pu22b~KY%=#9&B%Sz~ADD1EBIpX*- z54Gm9FLjkG@H}0K8ULXsIA!dGPVwZn!fSLYqilTn{=~Z6+FE*;@Z+e7{bgKAXl4NC zyt4*nh+p8p!q2}lge2VxMFm)sR|i6Jt}lO7lf`$wb&hFSC`s-ZeuhpPNm5_)88*j2 z#dfm8KqFO1N=zq#@<5^|bK;!-IbW(2zrxmZQmh+;)Oh;=>M&M(&d**!PvZkflcSuNhDPT#iQc0z%AWg6~5N+i?oCw*k zw*kHeatb;A?sq1X2}yiG3Q}~74?n1%sEgIOR^B#~l+Cvo&oz*Ix%XF@@ZTr<8Ra83 zXna|sfJZ=yVjH_zEDu9g2dP$FX|in#>$kzL_B#}7*O$Sg@pSIi9L5a(%lqAP0%FxP zz0OtfRyVHmQl!11+-~pi=3KNfowx7`PZT$7T6*zVVz=94DY5J4Q$?_`E$H)pA+94C z{XBg2jbzd)bvxV^-jsVpsitue9Q9D#@zBs}0%H5y{Bahan6h0dyw{C*9sLVuu@#Ed zx5dQ^OJsdwZ`t?8zM(Sf3RQPHd&lRo{rOEo`ZxUF;d>7qXOHWci@kEW zCw?2fF)n_s*|mOAk)x=-NA0Q9b?dvgj7(Zj^1e-Xk{+7!G@g|CAeN&Ntlg4}MbL^e zG*xB{!+T$qG3$QgA$q$U-0M!He-feFwtdf2^i1y8X&q1VefxXX-|8|C@LJI{5wKE*%{m`tyqHe~v);bDIy~0kuSEgtM{R z1AFhB|0d4=Qvw8_f^XkPx5-BRUrq4WCB%V^^rZH@7MASpr)3y z9`ARX)EWgdQIe`_kiTitZPSqg^N?Sgm}mhX%)h8iio?iP)H#-*jnMQ$qj;8j7QHoKP_s`sfbpXD53|Exn6%D_KS+1a3+ zUa7K8lgne$E(ZXfO6)$@rGN}*cyCTagA*`(1Oq~|lTmz@zS!X^uHxEIN_=v%@afMu z2?7E&@wEMAM{r6+A>^P9!@(J|*qq?+8*-Vt+!QpCCKkAMiXqfD9!^pDMa`!;2M`%j zl9J1Ni!)#d62QF23->2IC2(Y*9|HmVG~2e9!KTB^*-M5+W_{BwqC&Qn{@TNtDNl&f zDp%6^Ei|e@^e}lBBAE5+x;C7C&Ys9<`Jco#0CA%Ci)Jgtd`4Sze)s?o8yX{?a?L~L}FI+c|otI1_B-=sfu{mec%2lni_*>9KL2pf7p0PFFn z1Q%f2$5AT`QAF&##}c#_5kw@5R<+;^XBNJoXPS)9sdcho1oi;R3N75C-7OiHU7Z59 zd!2hYEQ7;>8lxE8q9d1Z?a8`%+wC_Gm~`+v^h#&}Cf9sYV$*WWcPw8rm5)29)g;F0 zhYcQZ7{48uOtPI{3G=aQQ7T<+cCq=u#w-z8OM6$DrfZ;#$L$@@@h0wWgFVbnZk4K~ zAU?^;X^``6s7%%?%$MXU(19Mw-1vAmUf=m4otlJT*>J8WzdfqVdr^P-dZUE|1pLr# zQWf*Q2mr^4#ZB6~AM`rID06%PSA0(yS$buZ_D6Zqxx1@buf&%)o;$)@l~ffKyK?+6 zHNxCnj>v<+;M*rEZ*vO6Q5)eEkO?XpzDt*N11^4!PDY;@;#GtfzneNbvS_}4{aDRJe>hth^R`5bhBBbh zEO{%jZvGt4QYlI&vy4UZd|re`aTDk<>tE}3Z0eYV`Du_exyP{>IqzB*0=Hf(O)<4j zWh<9#AV%otCQny_V766;4vU#;_4q_}F?gF*!RdTW_5K^-$JCv_^yoWf2M)NwwmY-x!T@tjDCrBzkd^W;0v+kg=9i0Y9vyF_}HzKi1m zr;~Daiq{Kmi_bjpgsrCHOIuZA8HK|u;^UR;HKoimDOGqpYL}!xgwd+$k0WfqRq9M6 z*=8DVopu(-d#jbH}Ha@FTj8y}AYU@Co5Ot~|T-~CQQsm5w8lwRZ?1-Abanv^Z}_#S~#pEIt<(Y?I2 zOslTDqOr3Jl+FwqP!OKO1>Ia~CS9#g!7GaJPu%F}@u>G>KQ2ybJJOPq%bD!_fGiLk z(6C*cVo~&_a~n&3VdEk8{khn6Fs*nEs>%4&jwdl;qF^|2_W;_48YBF%-{OF`Pf3bBuAL+NgDrb6px#Sn?t!Qs= z8tbiHN7uGWbqQtGcL@+6_p0Jj9mV_mVo2rjW77Uus9?7g_x^(P5kCsqXS346@uXHM zoTk;Xo(ERmt+ndP-u<9l>eBbMyWSMxwyQqAjII8;aCQ7;G79`&vc&!Uwnp`&;NJ<> z<{PM%YxCycYHc9`u`0oy+_|ZH6WP4Kz2)~pkM7mtyLP5>q6>cwBm38(JeA>A2Rqns zaVB2&WitK#gh2Ay=)sgBdakLM_KFf(Oo4yBSco(k`R!zB1CR{?!umhH%q@ZUe)4VC zD?~%M%l4kpgw*@kFJ2Xpeme6B`&mwz@&JHvmqJ9zAO z88+P@K!jqPt<;H&wc$73DS*JS0V@@And>j1mxEdQLeKe3M`EeOINllX%sHu`0w;r{ zdYL$%EA?1|J>JD;nM0DED7)F}IN}-x*t+|*-kw%XZl7Z_y{F#3lkE6E?Vl>6ms|hm z{ZsmEj74$g|FC}=t;A3;#b;HGrg9cE(bu}z(Ba}*I4wuurE<`P=H|(97>U1f-bt0} zPsAPFUv|l3lK<^Eo=pdUm0e}0|JWwwD1fPyYuiQ&u*5>l6yh`qq-BzzW6xbh0iDl& z+wVU6lny^DAlMa#GqaNWAR0q$8^}I@q4K5S_gfdgf5y{lcoEd9taS9tf3!4eVzTxo zUn+*f)%KxhKRM`PFxJ{-b!0OzO}1=4Ew&zoM{r9|dQDf#DLOv6EsZaUzNYbNIEzGN zYbqf&!zMrUe(v#>%w+2eaSpI`5^11si^=?FgS4(rNZRVbwhjM%&yh<8C?Gw4^u}hV zlF%k6)^V^wf+2nQDOJ(fEU^LCz@ilJc|at%8rQzyqaP_1OI0XFI@@u~$>}_i*qu8= zim&#!*Tura^CTFGKPjr*6_>l90h{Ch#oAj&Rhfou!v+#6AR;9Q(kVzcDBT^>N_Tf{ zk&+VW-gK9AgGhIGDcwjnyw}zlW1i<-@Au>THLO{V!`^qC$8{d%u=-kQL6lePY(xP( z=z>@O%*Q5N(qr`iYZE5vsTMCqF;V6M^rdCO_ddt-m?^)3FbsEu+0R}t zJ~y|e8(Hj-t)=Und2gu*ayJYd)r^fv4>xgyc6Z5|x|RwX@Ksl+dnKgfX&^kwPCvOMz#3r+}N}iU->@O0d0+@3CUP7n1D3q{*)B zm_|tFXSty72!GASSc;pD83i=)*eo{7&6e%zYO@RB0y=F%fUL(Dn!DB%N)=KGFM8@n zP7=7asbaw5UGLV!Zu*RG3pW%DMMKz7e6+$tgv0k`j|9!rF%7TdS;}xb^A<#~Cl>_? ziLCJK4wV`_x+jPN$X8X&Kj3HCa;;2$Ed_@tvBDWHQpi`=N%dsTk8tAOf8oB__N?NS0ybzj`bI?}lX&8fk1rJwHAkIAZa;Z1BN4T)8P>ED!f^nV0+12gSftoZ}--d>-n2d=!*x zXTsRgrWV5VtysBJZFg)=jkjt?y5WUxfNMwZiqX}>y$Yi+MW-&3c+~&Er@J?I8ZOlC zdI&|YY*h%$6>81~WeLe7H~M^Z(+2Z;U?s7Fuw&Tw?}zr8_gf2Paq;B-&->~nWXT@F zh|rTDTr~s>%fP>5USE>Du6!saCiX51UiMR46t~*n4;DCZ%E2w6{(2Dta^nV^vFK-s60(uvd$FEx!(J#x5Svw}NsaM-&^_;EDKH>_ zs0(r0kE>gpayK~c5;bfXGb<`6oS3Oa!AH?)WdKup(A@RXmHDUY_PtTzXvEwMna4Vk zakmgw|LBvsLd1UKe)Tv7AC3#Ha<|n~stdY&6vJBhSzg}GVnd1AY})WpbtjvMnK=UL zw2V_cVQk>#6uPtqZHLVJk#lWNaXNl~+7rv%C10UB6UXu_c)OM{Q_1b!NG1I!(<_^% z%HIQ6CK2vqPa%&{`3ul{ODboSEd)D~UY>am-J@%kjbk}9NezC?>==;-7b>GUG#{7x-? z!H`DuoL8>lW#KV2l5{e zq}r^0x$^;`R!$Qfkp*_7d7sG>zB_Zfbo~1HW~9TD84!bXkgIj+pQq#yJUW~$uX0@G zY=d!^4cOBcoIArQL6WWX{)x`33V~Qg0~9@=FgpaH{D8;lmaxc}C^2A+(oWq5MFYm0 zpsqv4$*GD1OCyp_%e-_znkzp>le{g0I>71vy&zlzdUJ&03?h<`cF4=Ik8fE1@f`HL zeY>x0!5A$e5B=hCdkJtkH|;i~Uy4UQ8u;w-&2~r<%~%Yy6K2)&a@vy&p6rGI`D;XP zg3V*n!PRMYPVkZoF(%(}KU*L`XFKQ>K;?;+ZVR3=nyH4nk|hwHDxVmCO2Hrll7kIy zHyPn|1Rs##XMZNqDPaagJGYtJsX-b|?kYsL?>8r99!i6b>bF^mSQpsGvpjdL7}nf6XU zEsH`0_F?Et>xI^!gSfd1aN=j@v#+t4y^VmPpu-CqtsbGFCHD$q8RcSWnPgP3JD0v& zF<&UNI?lNRzBJAsU)s95I8>_ozv*Qhz;BH$e5yNA`9#d5uKt=PXkqjxYUZpCvhlJ0fAHMi4$`GJ#2lt&wJ zUGMu>%Oe`n{={oMX_uq$0hb+>iF*R6#Cr8LFUWXIJfJP(k&0#V<2FOF z7=g9E(Hsxx1aoIBM&s;#ZS;(B+g7wrO-&sce|Tk}os{CMd66G8EA?SM;xTh4U&S20 z(KL##q@ajfo{8lslgHTbE-D=S{Xb%TU!arS=u`NJCC#@?tC5pJtI-YQ#cUv6S07t0 zWfB-2EhE{3eC}IaAx3=Skkvzp=|H^5rei3Ajlz z8~KILAS=n2c0JOuhy-r?Y$Kr>^~w6M;Eq92bQa{=lKC1S9NQ~bQc*-rw@16?Yw5tH z9v&5ysWp1KYSClc*!E#!%@eiYNDOubYj{SP*-X~2V+JO^{qa_m^Z>f@r-g%?6ZCjF zqaGz4Ejc82W~%k9+0;=$)>eAwYqSM&hQYM^*cu}Q?v_5OYsZTeE|Kcua&pntTuy^H z_~b6p&99Mc6l6{F{6KyB8}|Y;JC%obv!aHF#nvYn1LqfJ+6Ff?g0%&_OSWv!N=q6x zF$Tp|RU_`=NJ#bSdr}ARZ*6w!fPUSyBlfke+9#wEbRdK>i^pj%&8i^ry)xxTqS;)k zUJP1-x)U|Vx|z-hK_+c4K_~P>7wh}FlIf5imt?rgKw{bBk7pVNLb4ycdPy$<$d_*) zE6YKDI}9;dV{6d+)=#i`Cit1xjqpKE`2Ft2oL}w)%!IO?$TjE)m+XNqUaiiF@0(PM z(tHQHa}k;(^zXdJMYR!~5QeWVl^aY%zuYGk^@5=&dOSi;BL4fN9ZKZqDI^yXy^ynx zH?^cB(F*UUV0((wl(vZysU}*|bT7sw74}npCKol1PxLV&Lm7f0jycA1Bv#E(ZkJa_ zcSbLDM%^Hi)i`FlsFAg5Vh<%mLTpYeA4?Gn1JGPgQ7b zMTAzr7*#kMYpeEIkL|pW`8`*YIv(^FJnFU1NQ7S+A8ac`sml=?GG)1HS{g69Yu5ge zrpL5C4;eQyJqRZ(UosK8GOD-OZfdqRc&oz2+Gy}ZnFe&gi2W`hD30I-Zv4m<-3I@57C5d;I=o|qgPvP6UCmfFULjDFhY8B5bxRr@24EiLb zc+kWHFk3!)Es0VcObYdihSuK0+RSsPynCMOS6^T@nx~Q~7jK}ax9eVkm>CP$a%$7lh$NAF&FF?pzKu{2+H5?eiVP;mEhUeJiA-q-9%bg^@zx=+@ zf1t<5@o(Qqba1-7QvsK=Q8&2gKZ_S*>CewIjOQ@8|MTCyNLqRb+99mRX3dr_wkbhr zX`CTOpFUxzTsShJ_s+SX-BFUEDR4#Y#oPoT5(HG>lBR4 z6Tw!dwpZsDUd{gluUfo!0=Yt16BpL6mz@ux&7KITd)3{8aqzbB0Ir^Rcirr;+}bpg zRG)&|h}lh7)8S?;!28X-_gljXD{h)VcC|@CMZ%N}HV@Z3Aj)}CX1;YAGG5vNd`)K5 zfRcDtw=2X~C%2z5S8nEKyZOo`lxcoX^BFrxz%S5j!+ZmBB(*2nvcQ7%kk;ko`?u~x z&gIE7s)>0tfNS>^k4;<_exlk|I_m;nmf6u}#fsP5jPF_G!#wG{s=2d z3Yg#fz3<_nJEqs3XwxHw!NBet0CvX~JZ>YrTDG$VWoi9|?uXRHsxx(}@|jZUWhP^f zHAo&=g3yQc{~hg`1^D|%n=shasnikYR#uK@ae|QE#||B#q_wn5>*@!u>Rqb_S`V9t z7{94DSnJUT>m*w((6pLCHs;ryCcxSKBH!=+gFJ%_vTEi7Mx7h2f3UjGZ`PKw3gCO* zM(A8iaL6M`1~H^DMy-Jq)oU4u=^AW>gVcr114%E@NZ_0KQJ2EJA*|PH(o(1cRW|l| zUZ8WTCD}Y*u~IWviHxQFAv;rH;MLaL-H|Fp2@%W3Bt=DJBUk;&)*vS2R`FCzG()!4 zQXj!JcHxn%AN|2!Na7Ngb{`LWTbXyH zzbmmN;NHZILBo|^0iZNd#|gXMqm#`!OcRy0U6w$y>CTMCM(6(ig6VRjL5SK@0*k!0 z7o4p`0&@U3jt-*Dq$e|zO5kV_`f6Fnu2F64*9+y&E$EA9=TCGy!YOP_9Jj3V!FT=s z66UDlJ{s4_(JYoXpRNqyCqkv1u&KaB)~c3x!5~x0DYWC3)2+k<=HEgme&N>LuwytR{@!Ix^Z7lO+xURkqO^Ae) zny@0EOYh7vW?Qn?<-3Pl!K0#NPOJA#+^cp#m6vQfd8$c>RAuw*$`&|&<<_U!1G%}7 zd^CxLIk+eW22c`Q*H$u4X2>TVrS}>;nZI4m1ar@QPgR=0mTi{|UTm^b4w#J7BTE z3t}gUIvQtHW!W8!$qo++hqGict1pj4K(6SS8kW)GmQx7xQ5jjItNz8>GJNu+pc@zC zh`{_WWn+>zy5+Ur^p`hqI%g9TikrJxDLigpKv9dOoh@^kK<3;<#>YCPbUYT!mvzqG z@-JUT?3F8wIlut*>uk+2nXxNdPDp(y0C#d=9=1n$HE2NUnq0{DaXAjw+a~@|A8j>y zVvw9EpoZj8=5QM9 zP1X(lP+KN;_5ElH=@Eeiku>EOJ*|*TZI(C%M-8{k-U2`K1kN}h3UM{K&JA$a765sN zYeQ0~39G45KyMV$s&V8AR;ZXy*tJ(4E$xO!MmC?v$GZd^96>)k%!x|e>3-+9w%ZQ;u~=Z`PWTC`jn@Gs>Ijee37%o=MjOZ2AP(E-HuFg6qVSBOC`INP zl$Q$x^+93l@{j3>-W~IynT^Yc0S453Cp6TIZ_k`kRE97;u!6C}u59jjL@;L~c9q3O zpJ_*p33fONcw}DB-l=3%pNVrrBm%T z1JbWHv7>5*@((svefXVGH@4Z(FV3%RDt@ z?b492(flE1mRHl;9fFd!YIW5j0UzuGpXqc*f5X$lS`}@0(^Ncd8(NRb8(-)!aI`}= zG+8RDY_`azD-vmcJX4i3Yi#$4@$os^M2!Po*VFuu8Xg5pz!x^+I2V?)F_<1;58`-@ z!5TnblFiTS2pIivdqBmVY^s#`9>CeWAsc_-?Cy<+nUh=x{ru*3BXsJCNN?D*z0MiG zPR`C%pSWlWL}oIFoF{+pb{xttg5rF8`{Vf4^X~I&~-YCqP63n$J@dRA%+HMcc#{0e}lyGhl(FGmEo zW0_49V)yg%XizL_CRM1R+2%9V*}7{2Cwt-faJ<;t@azEo$*nIhli1NKo!i`Ppl0aMIIm3a6hcxFFzj`2 zhtqf+Y5?G@u~Zx-a!LFJWTv$Ub-)Gtgs)D4LsSmjavkI2< z<>LiSN!xoZ0OO6nzW?h6$>2}Ag3PcaRPhgCN__>X{>yc**bhz?f^)GpSTOLmrs70- z{#u|m!a!l=1->YMxT?%Y$D3k?me?#zmEf9B>o!RYhHVHbv|`)v`U zg?pUDji`5qk@St$77)U?TmRFumBoG2v^I;I@!(JL@yE~a=)HZDG!fN*3VpuNK^0?; zHU#y}yhMB;V_5T}8HI)AckbM=Jy@0P?CCii>9$CyeVar^$9F`Xg^vs8(z9+w_23U# z`Ab;)HN|+`TvB#+#6dHe+qV3!p-V$3`_ysSG}%2mDJ8$W4l^u4@My#ziH5B~Qj z@eqO)pP@ai@FMg<4F+AtCc+??_=@-t93n?M+G9BEsPZ*xB4MSxOG`_(OP3?YRn1)^ zg<8Cz9QX#jD-2-g|!pF#>rK z(-qxZYpe?6leS*~RUE9U4R>Z4K+Ie~Q-4k%4grV4OBe_R%&MHbI|dLme}=|M92M(= zB!R^utFNZi2{7pp6jC1z4g)L4SbDIvEJc+Zxpg|^r^-mGqhrE$FKy^tULh^pg>^2z zX~&rA_0ESHgZ065vFh_}uA@y|nM^61($^j?ag_3Vt81A7hTYM4>2vYycf=a7v}lx^ z-Oh|~6qWqRpg`I%72dcH9OI7WUl+Dv-68tvtY0* zegEuX?Y#1Y+HA%+T`9jC@S=}ktS#883v5yhCyI%jk0yxDy0jh!#w2nYD8o+6l>TVBwp~9ct^k?TO+5^;DMT zqw^8vB|IquTfN&|X=ivG3R0-N>Yv}(YfG@7iRB^?bOQ{NlVZ2=kb<+uAL^X*9xSbE z8>lpq*lk*+K){3$Cm*Xm8qWqdC^wlMRv?Ck8kJ{(w4OCT*c*BE{#7Y&Pne)g4z>fUSLV^lKs*h(W zngWP)#3<>;3a~i`hBJeQlIZu*VHEG-`cm!6>dWvjc|k3AmEPGb>?0|`f$1uGCOt6{ zv#I6!9YdhGQe?H#CfSiM2Iad;V#||dNSo!= z%j!UPrBNMi1dt$$?iUgF`!$&K@t|FZicPmi3YZF8lkFApA~EytKQM}lQf`44i#Zb! ziNzMbb7wo*9SDy?I@V+un&~w0a_@gC(y^hSrA^>J-HQm(W%_PKMCdLT8kXRr1VZD| zGnK2nw>!A&YytCpwmya#;0NS5$~G2Lqun++3O-+Z6F7}P>-Q#7OtWTU-9Zy7Zx(GL zLTEs2p5FnteYX^W>uZ=8h&0N)Whz#bm>w@3PG@Fa zr$@lSVuQ@?k5K@+q1YfxEKxYjB~IPYCr#(^DMsh^xp((nVB#$;-EYr78KQUuWSlsL zO$HOsrUc>UQ{_qUElyUjQujrCjpkw(bMkdf7L_=7Eo$X!Qi!}zr{YHFj^ok&n{;I>xLaGC!w9&DOFzzU*#9~J13vF2_ZgW8O(?Dc_Egl8(n0yDX51T!By z`}#8J>QCNHmRfnOkLXJ31_Cz5uo>~5!LE&S`azK%YD6Y;nDZ{17*cEXonrlzk_Njl zmcPFZg?%fgC?n=Vr}vE@XY~Ho++3ube3;?pxQO#wy7pvAo4$nYXr7_-M!p=zD65No zY4u!%1)Fb+U_Vf1khmm}gm{t!i-=lz!97lJi#MIpmxoE<$K(kYvm=L1VsUgL9(E2!33=LDXVtDmlU)T_oa2!UUBD4I52Ie;TqaR22rR0 zMMIDr2eA%s-QzemtCZ@iCW5Qa9P0DmzYyD=9T<&_&cy;Sx^ z>UA3^?3+X>2Mqyl$I>}IZ$(LFkLVkPEyI+~6oL=mIo5h;+0k z5k+q9QW_)LOIsCIW+#AL6o~~~ZGwL7DNq2Tv=bisu^u2fmKP1$8BSakTHmL`Mudyc z6zQO&x+6K-vpN{xhAag?`TpiJ^if8J{G z>MGP&?T88{LYuh3?R(&)cK(Ggh*qm$@nH3hk3qYdn#D2rRYH*&&^w@6%bFzNvVo&B zHB(t$_#WM?(Ho80p^ssIjjz2fh4ys;9>$WoyHBlNne98L@3`R;m{iN0Y zEbfUu>MeXEkyqMJll}0$=gIy(MFRc&i*_`_D|%%@U%b1&sofvCdM1Qh%hzr$9aCyh%4-DPd#zjmlUpx+~;=sD+&XXy^6d5rvO&&l5HdUo+*n|z@Eb)JK*K7r=w zMYNW@Cim)p>^2XWfIR=55B_ad=39>&qF!kV{YTovccb+Y)H4a4?I#DG`|==5dSWPJ zX&}L2ndv?B!Jn?f{sUOSt+UDKCR06N>&<3st6nZEY8C$hr#x4YlK=bwlEL5|Pgbta z5+|fq{>o^+S$(poDWkNnC;x{E4J_ULgCsK-7fr!A+Pqt0671z9^HtNq0u86s)hR^Q z;UD@M^s^?fW71Fnq4o!Z8oAcsKGG^yLm5m`lC+`WY^QL*R@-&;IRwsB*^rTv>BI1s ztdLLYRSQE_&l!B1vT3os>QlU5m8aOHdUHn&1M{)nAo=;D-0m4 z{)8XRIeuiq8^rdW9>qg$m!n0ew!PXgr&)5vI^GGNkJRMQ%Ib2Js^Vz#`UyUu>K-&SWU*oyk7l zsS#D6!}b7uS3dTuGFA59-f2u#7AbJLRr8H(&2)`oX^bv+cZ`AlZ0jw^b%lgleQp1% z1*?VPve`PuvINfj$yjDmRc-BRu->}!gSJssP>78Tl}p(ge=`DU0wD$VL$n+p090o6lh~`=QRRnT-s|F2z=5#fWpas?Od5 z1)tF_IxO6X68$Bk1depvF>MLI#aH>cGTVI>(tdEizwJ zje(STSkupT@E2X+?3A;V$E-j36z;(?)?4L5`f4$enRIc*;q-tQ`1^>NU?JA7ZZ?8R z_aPnE{C(0tXhy%UH!~hjIBVt~i5x>r!Kf17MH&gYFK$Ff2U<8(a|tsNh>E>rc>&@p zYV#Y1ChxC2N%jKEnoyCwFUwSY;>i@YY6N9nL(}kh_{_)8^K9*5o`zw99 zxwW-iku}n8pl_?IK1vTOi-RS@ahCOaEqDYL9A`_MW|_qw$f6f8v=`~vpMAZJ3zLB{ zXI!j|F$5nZcH5nFCiG03^|%8!53up9ecPdtt! zqrQN=Ypox+RRfP#NJ6n0Y8;}h^lM%9YH8F){f}{Bb}A~a^@#9C8QY0mDxwv0+lJP_ zEOIOzL)k5xZVu&GnubKgs&=@Pd>O7x;N*M^!aZ8fbF>Q{6F~1UudH? z1gk{A1^p1I7r)}b-s&-ZqGZ);b=qF_Xo8$nZ*Q@K#>Io9@M>k!q;Sb;=d06{<7|zh z&}Wd|Jp{Tj12dqy;(C&mVl}_OPC&SL>WMaO5V+6?xs%ZtQhzd0#{5aK!Ko}71LZ}C ze_@<)bo76;?`#icV88{593U4aT@f~1Dl)0nul-Vi1&juprN)Z%dU}f4i)bcekvW|o zp7c!fyc;c~Q^b#^YoJkX9Y5LK_GtouoyzYAXHA!)a1E0O774=TtH_Ii+T?;-mCzF+ z(iXzRV->4N9%@|LflZB#&lBGt8cmi`q$g6>fR)+D8FO-!72;iih=>ST00UKyEF(nQveCJ^3rUbI|uCwK!WU|F;akHkbFTHWdO zl$KcBvVVRB;3bHF>O57FI>vf{wlGF0w*T?pECBPq$W4#p3B2=A5_<0m*O)Libx`Lw z1nTi@%0eHmK+}OTX;_m~RDduMhjA}(iOV`oeXC<|Lnx?o6sXJ1J43nUiG_4`p&3jg z%AtyB8606E@tg)@=2fI>Bch=`pFVZPZU%*FmvPuVhd;0;I!|O%kk;-m^~HA9p)%(m8|y4YiV=QlA5?ZQd4n! zR-mB)xaNKij>)w9%&3a%N*km4q0;=}ASSA0a}-~&t*vdpc7c2Jj&+F!=Y+}V2One` zvbikUJ^~w~x$r9GM7kekTR&)9@bye1IbPds&7vqj3;+C6vsjOuzx+PK&4sap{8f6o zH7ce>;2#wlcCa@i?Xap$BD2Xu)qYccgPgDU940pac?dp&N?mBSFi+G^NugD zc9PH|{(-b$V5@}iHMV>_^0TZkp!jT*s3-jD$?YzKMd0~YjO7b-67a_)WgN2pRzd>g z@)AU*rZ_1RE8A*to6@kKlfL7h1@>{ z{7Qv~jd_TAGw(X?==}Y^HbZ(Er}fP53A^0O8v6;DYiqQaJoc|Y15AA6x4r{4zvM49 z|F+^cXKH0kAp27@oMsCc*l$MS1PTv+E2}joXIm7FN*SZ!4$+@Gs28BzUQSyZe#S-` zUr(290j@2$FCFOqU}prN?aKthKMKw%m7T(CVCn@TJV7yp5Kx%zLC7mJ>3~gN8N+r*$9#*oZke%qR90YKVLg>YE(qjK1UvA|F|A;*zE>M+ z35WoN^(dbFk25kR6<>Y*;$2kwhTnw4wep>&`$SC6tkyMnV*;9&l*vSi$!v01)v31` zJN#jmdA)AHMISGneCxN5glL^=6*|I1F%ok8Ox9`M$f7}`d6ag*aSvXwas1IqM{>i2C2V8~nf*1JlGO{ISjvwe|yMxTe|gpW7TV zZ=4Ns&1~6J8r$=&kk-0EImy3d|K@JZ==&YydYu&L#PchOxvM_7M5~v_`JGw)cY>an zBzxb}8K=e&MCHNGKNHcAJO?g4QJa<4Ppr>E&1-u2fC5k6ZEab!yxQ(sd1Rvs2!Iunjpoy1*h7e7xRP#ak`|p@55p_9j*^#+fcH zg<6XJy_81O1FwjdTw+4IC|X5XkRt%(Zj~IdxiK+6b!Vn{p`)#4+${klZ#;lG?%*}@ zll5jQ_;=wTFM!3eGqC=r>R%D>@#^!@=8{w_dIn9$Ah}ugItD%C0ugaKBq>N z{`vcF{L=lWgCulq2_RD!fL!KE;^eTiKitDkRnATQNBMv5i9qex8)5E~p{Aq$TT=pi z@ZUeMyjn*^^M04y`a|)C*+b~41Y1sWA1V;;@D}%X#|+@T!;}P)e$`*3S*Eg>Ee5d| z*Yiy2DaBVw)0}|JJ5R)G4ceZFveJ|vV8AEy|4WK-==^N z;x|sA??L?^d#IK`hgpshWTbL3@oX?Z_Em*AJ)54^$WN9oz1FpuuCt6r^^v&CapZtO zV#EM(FdK5`Pg|T=iGgs5!Kd3hhhhpoSobNFo!S00A0aA&Hy~G@L@@pvs*dIuMp0wb zFzmamv)C^e+GPW~$asq3pZ zBr*Fw_d7Be3Y;&jdeY+5;Mne@?sMTPJ@sQ#& z4d#IhGyCa*b9a37MB)3Nh3`q(Fo%G^M0d9YkiOrIoo&RQn`$O4t4yPrtE)lwO?G0* zNGl|HRr!x4?h~){9!ZPSZ%f=8Q_xOrz32BzwUk20yWWpJ6PLfhy7th)Y+;S-!3nvi(Va+$@$~`Ki1QB@!HXpXAlpRWnB@+f6CUxI zEN@xB>@NHK*An7T{Bs3$x_jF@COWv$JkjrRLkAWX)8o}^(zh6Yb2Ko|8!Fs=<(HzO ze!lCiH5i+_xE2}M|82iw2klqcJ6u2D%k&X zyq4M+5CM9J&Zc#*dmcS80|8Qd*(PHWs^xj_L0$^3 znbjX06MztsKPGJ59~0K-G05sJe`6v35Cmd#xx{vN%7DDL$n8qvP^El-9aM$rqUCu% zAbDrdv-LyU-S1Nbx-7JVt8*nig;nIX4`uydyy-V1{8K>8j*?qiLB=Jyq<>nKjn23l zrf9{CezMy+9=wK8_Oc={IsV}{k4?pv`SL=HtzpmU>H=G}q9A0n_7ux>xw>q{(5Q?n?;o~5W-QEiUy?954NxEjge`7urxCcS7d(GPbB3dYOL zOq3W}z6<<$WWV8&A@SJ=gK0?xF6$gNNjt$Lb^bj`rGHG)O(cIg{OF;~EvijvAD9H@ z=hRI9H8l&26F8RcTZl{Mr$M=!D0pUd9jh)5$M`qY^*XDto#qMm(zGP)_Q}*19sV!# z)Bmsex%9pMZtQbHe@&NX(Cun!Ih4GGLF4e5UUv5^IOQwy#LicT2k`WMy?VPND zKw{!R_<55^@g6cxsHC3y;mHC@YAV^K9*r9pn(_R-F%yfk5#LR%YmQi@!VjrfniLsn zY4?rics$W%E6KlBE@1}TUDz0-Q}>2jN7n+%XkWteA69X9$6;Gqwm&o6m{4z#1qDcu zf`cuDhWw715*U+n&7_TAyzkks&vL7Kk2o3A8MO}$>Fp?DXQDYcYk^9&#YOa@QbXCm zyKd+@JtNqIdQKaKW9J-aLv#-&7z!Mxby1bn<0lXoh7KudM;&`{01uCc8&`B@_B$z! zFX40KGl8K@-|EPIR5-rK8%Gi&mPWc-ayzs2R%Pa9WT%eQp=9buVouaoXD%D$$CqnZ z?@dGKCQi9}wD_)A%!;WjV!ZZ~|Gq`U3BO)OLBt9B5%+6>Zf$*}s|IZZk&0>jL9uk6 z%klHGi+vW7n6v*}tMmuow~UP_A3b)2nv9Y#eMf9WZ?MwY_=@}? znxewP;bf6hUI){;l>hyA!B+JdaNViPwds?st?;Z?FFv&uQa&%e{hwKPlklx1ts}~x z=MC7;NhmNwAxeLLi)d1ge|w1foRjpd#S-OVP3g(W0)u;BWQOMK#->NfIvmgGBD(vV zgSnBd#YJ5(n_O~OkzzIgs~0_18aQUFTDNgtvW#8v z6oO>1>sfF&lg`<=0!v@-f`%*S$Mo6)W`fMlE~h(EJbQC$Sy-;pUT1gzVM9Es9~$1e z#x2+w?k}WAoOaY<$<&j!Iq!~B{%W_Hua;kGl{#X=O@#+{_wHSg-3!rI!d(OO>U|>` zwF+}Z=h2GLhVz*nL(r&D>T+!EZgfP*x(hgWpf8bzs~sz@-iDks5g1-yU7G87ueX#M zIoYlxuqWq0<1|m8mQ5Z%RhS<70)S-KFO6=D?gR>E1=XCQ6_Vhy!+V)nn(tFt%wDG= zRAUaE-tpf<(hF8dvN;%o3}r|jOwCllGZ#m6a7#Ja5+@00!&Z`^w!Oz?h-Or5D6D>pfUntXF z*(1FF$Z zw&NMTrC9|~QZs()2YCVu_D|=~iJHe81hXL0*bjc$27@F%pXOGCAhcR;!~I`!eS(0b zU&aYyzbTToyFhHz1W%p7xnk}HwvU-BP-?lY#TjYHh0ZPC*_hQvg#EP>E6#kis2AWM zw9A8zi%TNd`ZZH(;1_9;jog&x_x`@~JF0eX3F;tnhf;=6Bs!J>A6bEz)7Oc%$zPGoxI$orc zw-0~!-aUEVk8_Y~HxMy+y?Ka`$5Y@Q{=9f_P>y-~WOpGV&t|1J+ZbfE-G&_2>uxNZ zbM(fu%X_ERU7c-|x}Dos1NM*me6ys!8r#mp5`!=Ri*A{@Y%g|uk@<-*XfBN)RFk?j zAbEDZ8w^qCZu#nXFd#f~3b`DEh(<8*ksQbdE)WZU_&Bres+4}!9mCjpBaYbw)6c+U ztU%);7+oz*34AdubQ&=|vcbt}dR ze0BCMlg^NW6o42Ig83`}>KFsKG|njyH35sj90NX1YmGL1F1GkZt=3c4n#>II z8;UG>E0)Xzla zshp(7Xg~I9F9_c8|LQ7za*aRu+d+y9OG@UK$@lJt1x=Y|-S$Oj$w6L%8Aw+Z{%auJ zMCGmYWm!Ac>kBmz6|?qwkifO}oHkAB=(%5GiZB+4fpEMIV(jiK%cm9Rb3F(JT;2J{ zFW^+*MpHL?NFk)aHYJrQ&3WEck5ZSGu9*F?5hwz#te`D#)a+q=otU_|oQtL|Z$GSX zp4EYqjFc1{9J$Gh354Vfl~EHyeX3t(5ZJwWct#Gi_$@tU?WorDpFiMp8&5~}(@g`RXdoMpMt?Tl%=4xWZmOQ*#c2tM1Zl$AN2s|GKR`T1f!iKyT!NBYr=O z-A3CHRYL7b`8&x~)W*LWs8&BLiOqzf@4=T33+OWEuIr=K!`K|rvdtYf4arW&=0TQ= z)Ah%M`itWDA&IDLH)UtuiRO9(>6lQ;owvZ#B~i%m0qlx%Nzmp)tV!D5Gpskugm!Be z(@~LUiX~hhgf%&ei##6yRu1R=9ywC212&gYqw(~gX&_Q04|=W{W<7#B1P-q#cNIiK z>R5{re4277sHp?cwRCagu7O*<-3B-1KGFnkOR@`L1gBzE-oJ(2zqg3?smxXeEbVr*LsmruGS=N%N+ZGy2b+3x0w9~pus5Rx> z@EP8MX^|aO7yPgDww^q#p<%~g<_h}Y@?SFZsUd*gooI*Ho7`#zMN!tYQ(mSlZJNnC zZB$GXVY)0@O6Ptcy>K)`+F>q{$y&F(+}7x&9sOho@shE0UzY5|3aAaU?CA2uxp^)}jk33^%AC)oZm15oT&o}0J1 z)8!tn*U1RAQIp3%3p$n+w1LP0l2jjC5=c(_@}p$ic=w#lqZI2l%W#+sKXNqe)Ss7v z6oo7ssq}oShd21)4VvXIPu+xCxi7sS5+(Kg(KRtus6%X?Piztka@>NRAzzG~hvo;< z38PF6fz*^ND}DBKau+cLX7Vrn=2c6WcEQ~Ak6jiV`zG89G?=w)a;cSZ-XbGv4zU=U zvfm}{%`prF%i8LvD%32a2jX^%%}i-n~+KYQF}mO4o4T|#wva_WR{png82 zaU{`U(+nT{SQtuoq=0kD9v*z{f|IwddmXk}XdSU*qM^sVsN(?dn`S(~4W-Bzr* zDLE83x_Z)tim^^0Kd!b_;RbtiO#g%}CwDyI!N~&(%$$4OcN|_O`M?$Q!aralz=1y! z`kG%M#y;Is@Q~dVD5gcRXTm9aWjHM^)ps1W)}ikv%A|U09F8^UD7*Cv6*T-e=O6J>D0s(HM$&<=A}QTH0M9Xol}|ks-nxXKA5SMsL(VAA7~<%Y{zp?soG&@yQp)ny0a#CQGRN$AR*=$wLJArQ+$Vd zPFGg&4pPY4Mh#JT19{H==YLalnc!h0`u)zE9|j7wDmyL7U4qBaKGQ9jb>X(+8mz$r z-JB0|;?OX@mU_-FZV|3=>1k-iRn-k`#Yrl+qzI)&O&O)&(V^Y<7JelNZ}-XgXK^khn-iokJrz7QvS zUCHW5Y%9ZFda&zx_do10xVd6sw&Zj9|37TWH*;$F+H6j*&hI*(EmPC9 zivU=T+#QRMBP#i^2P+OQcdL0CHy%%eT68kd z^NzpUmEy*nt(Z`;(xE8w3F@F#&3wEv6T$nh3NESY0We{!D-E`B(Q4+U^~AZknEvD6 zXxo9`yAUy*)J>neD#w5+e`g(u8`})a3ip1Qk0bU}W^+kbz^Q4({q2LTM!JI~y9srJ zE#pB5@E+F|%#ECCDA*|#_&oV7K)lS)h5a_^ueo=C>v+4bh8hz854ZlphVbiYl#NY{ z270`2PsTvxGo@HI`Y}Y6^S*1EH=aZRKmrD;9AaP@F&G$CE+2nbH?FTY6OiH+Mk21I z59R6xkb4GcklSe~{NZGDW&5$;`4d08@XmUP7!YD8fKC6h?G%+_Z>+;Bm{8}|dj=}b z%HX?HSy@&%s<&)-c6mzX`UhD!RBLZ6?0y&b1YmNnR?b>}Q;9t2HTt)s& zweAzAiIoARW9h*G7l_7S*lHu# z62mnaQ!=)w(;JXVEH?obqmgR6E}+AsJ?tMIFS?^@Yg^8uBUE%W>!M`Vh7xczcWpKT zT5m^yxkoM_s7GnVIw4HnU^stasL9u)EC^T6O{-ilb!lee|KaVc zqoUl}w-r$YMWv)0q(Klt8cAX3ZWI_g1f)wu8l*wGy9DVp=#g#^P`Z1DhHsC0j(XnT z-``p+7i$5|Gtca2@9VzrD@qiW?BwM?8co*66^mLsO*bfQ6qcG-ur<9iV^WJQTpb>M zleR1M5sMn5g2!HZpEYzYnn8RbPw{HPKBbkk(8a!dE2DlJa8-&y_SelVHO#{V)Jg!C z#9}B0XByI?Ghdsc{kAw4sR*RosnO#{-}i&hhmm5kxEdr^o8a;*_65|t ztcG$SS>9LnDu#x1tj3Oo&=33vU+pDyr-@sSSIl%^ogiXSgUvY1Z4=+y z=tg!^^mwyZvp+jtkfnFqJu6lqs2~K{vt&bK@9$NI;I6vIVi+8Tk#F&Y!TnIW^M&no zSJ4vXmG0^63E+-v*)_q&B9NWn4?ajEK9U;X8;bqBINn^)1YgVilJ_SOG`4y>g{^5t zPD_oOm}Dffih5cu%jtHNmRs>Aj4SVZ&GU=CJYN5rHwqid-!bACuAj=_e%0x?C__5s zoLM`*5D8T-f4#n1Xc)Q!T9hHcr{`_=JtAICiL#9W+8{A9kHC4++X5{*Zv78>`9JFj z8J0l53_nmxXMQ#ajP<7Svsx-!`t?(oGo$8H*p@&8u3^5f5?9e?bd();+PCagG*qS zMpu{g9B9d9KD1yAJP=eo*ibRpynb}_|*T*!<-zV?v!iLv1 zZJpgA(j>IIRt)G0l%2-*dj7jpsR~Ak0({;`7rFw~7!`$Y6gxV=W?ldkc({Wi9EBT+ghP2hkA zNe&vezkxQ6X|k~~g~iE!v&R586P}H^^HRzU`&yQSGr;@aoewDt zOI;n$H{y4zS(On4n#Dbs3Kk=2Cn$0#d{D1*yV70%D5>`+iWX|^EsVwO4r(Y;4}KvfjB!BYO)~b>wmG{;G{OqLiczUAW#cu%tbXC@(=;FT z4cnFUjQ%n0{)=xfW!Jv)sK-QPu0O2ZlQX%55!~9o$lf^HItLWgAp8~W@qPBurY{ae z_M}$Pb+bWCkCxj8+u$~yd&GDeBG#x~QKx|9GJS(P97+u*=C)31Bkzl04x>2 zH22v~Qckm<+B1&n#5sC&)76rr?@gs54_@f$lOMB@Fl6y1`ihvM?+(g6_MAl>Ng%K& zJs+(@chrn3s5&_J`H0gCXc0cgaC;V<8){2R3;tAz&Zv(tD7MN1m8Po}BW3xmL1R1~ z5~76|?Q?9k|15E9bZfM)fHFqN>zqFjO|n52Q#OJ*k$DHl`pUJNPi<0}id^2YOFugK z{`tn3@@V{lfD7x6eJOEQk{z2DL$7EAi_+3b_WbK6uzzZyds|HgY&O-$T))Bom|_<^ zDRp^K&x!3LxF1qrUFQ_KthwrP?oJv?w17b}aN3wA{$nM0hlAP+gAfnn)k`)M_~+Ck zMqfAN`|Z1lTIUcW5c|fgY3C}hRE%V)_oR_#U9uV|>z>Hc< z9PghcfB8Te0e89o>U+-ezc2Hx(hP85-qE#8`zmykf8vV%mN6u(RL7tMV}&WZZ_(!Gt5 zJut#&RSP-D+(}XYI$)_AXWhlD-<0He_#F*9bFrIyCJPj&!D=8-fMapy98tacxf}?W z(=ds-`hWyq4mliT)%0l0{PIOBb_O^)Mik8i1sFbhL4S-;RdM9nOEj?mg2i41X_igBj zeRDQt-ztdNFU2ZCvvW;WKl$6w^TWQ{N}>y#J70AR2#U7cTZ|zr z2Qgi=Zo$&P=Fd`Pi6p4MH0f)%z7aW?@dT=`ASP{=5N?soCpTzS)zt^VJP(YS$U$y8 znzFTZNdcmZsr0o{GLh1Zw#hVUk&dPm&b_y0yGHN3%x@)2i-rzcJaSm=zBc;DeMvz7 zmf47v(ddI_u^gk$T;Wmg3zB&=G~dqxB9g)QrN9jPrBzeFs3N`=C_NFUSC9iJ3Gg-i zVh|v}3glX=%f9$Zd0?*xbm7OqkMyzEnT2GG*Kvg|q3K|5``}`C@{m&FTY{)A9O|{R z1FH%X`GVuOtGTHo3Kj1)V^X7ylpLCla{N5ug&asnA-j5D^uA1>?lj*|qE z{V_v4;I1-zrpi!o4!oO>w?&D;xz1qOB3`&Vs)Hj6d^5zVr|!zr$*b*XKp5Ej#SW$u zg_}>ID8xY}W-i;`9wXCNYeH}5S5!nJds-8i2s%DKZI%^cLH9>zXIoym!-eYhlg&m= zlRm1dN9jWcxepF*-6Ai6RvF+raao6v+gO*&WtX+BKK#o2Q20+Pb1fd=;{2)TL-kD6 zK-%LY5R@B;p|ssboV;>+#OZo|gp1%5XQH0FI88<6GA)S7!oFlM$;C9~<@Ksg(4$U{ zP}IOVu>E^GIVq>H471g^f#T@#_P{{KSoo9deC0XQwh-sf5Grphn&BZ+{Lo}n#C%Oi zJbenKx-OpR6|}ld9*a9{&GvnCsYCC$86z5%cR&$K1^j$&QWI0}(y84F227{waCz<9ddl$!miv99}#BEKYS**6;u&XZLOrCe%lkDw~Q%xzkBaJ-l6K&o+ zunzt{M#39&jW~03d!=IJ=}Vm7JB#TJz=QJD44&<-eg5$=h=T@UN$i##Vo?q2b#y@a zji}a|7Bb2OH*-gc4~=cdj!4C z+h~>)(mfUiIg$p_Z`|w8sUW8`p(HCD6%ubk7HA!Ag+bjw^)*#5$)E|h;7Rz2YeSnM zar9gTt7CVH6vXecXo&&qsQ92or{z9MJ&wZ~H`V4PFpyGo2@^mN(9+QK30>?7DI?8j zbm#pB9{`i%-s zlbQCg(Xyr1cx0WA89^VG{i-SC5kqp+T$;Lm<@2Z4Z;%RT72dp}N#=aAVQcx+;b6H0 zV5%?AP&~lUmh7O~a$KYw_np_pc?GZ%rY;51@-%w+K=fPCx2kBF-eo7mu#`fiEQFgZ zMgA{JUD}mi@qm#PmSosC7fKz%o`) zQzMd1z?B5BY5de^a66R@GSSA1`n7DA*Jx-pHzgP~N1@t!G>h~_nVBy5Fo0~SNTEN@wbnR4asr;bP= z_KqBxd>j75RnMt9#_1cz&ulbM+?ML>Tk2JAd6AVGJ#s@ZpMm-Hynrg5>UKb}cJ%tU7W{bW)B zbCY;?x9k^}wWM63%D&F7{G!(Cpi zV63* za)QE6>?rM5krS|^dr?w}?1tAKRJul6n0p+weRbfnPz&U8wDfj!Y~0IPRw1$|()*k} z=z8h-l^=+R;uN*Y8ngLkIDlj9m!k-j?MtZf?08vNSS%$nUN>0xo^hi&qerlw#JC>3 zSqylY&X&)}HhSnL<3K_tpylFAL=8LIb7&~)X(1oC(lg0@%^BAyhdrHynb8)I)ASIJ zoV-+|h&$(U;QDCzarqF)t3W{vIH+9~A{xxq%Pr%LIhGx^fUKyH6aQM5Si(;yxsL8i zp9i#{*aPClFyy01VeKm-c!`oERT&GsL1cDF4g9DNF8{%dCx7&ndezpn`)B= z1R?*B_F;wRXo+G&(K{w2Y;5QsJ0~twUMbCYwPHx-ioLq}2RO{aGMylPkrjGv_oXoE zo$zlIt}nx{-$A4Llde{A$9qvXYFI=hL-Y66@e?)$aH1&cH&i_7R8dvMQyZUfyLjds z_D|OpbO(NX5y?=jvUwc^7eq%#4}I(E)=Y0am`P&pzxz*t_(O#LQW%EwfulLrB!uke zpZ)vq1jS|4G*chx)^L9GC#HKK@VXDFgZ)0KOOERas)m(45a#47`G!QwY04qaq}8}# z;Lt*SH~5p6J}0#*=O2zi-)Uc}*KhAiZpFP6R#Uqxu-idB-^f;4R21TQx+6K!04&jg zg9rw|4`;%G6$^s5oRu-H6yVp>_&XWV&kaxIicwP2AxxKO!JXuyEB5yr- zV6oE8T@3atUH;?tf9M^^`zgGJv~PaB(rZ3!I>~io%GH8>W7DTD)`Rp;r^rqNMdUW0h>-7@!>3X@(kq6fw|!(1-Gw`Nkw zT$d@4Tq+j52H+A2?ZS=qz=8=TLAN@}w$e`26-k@`@68@ z<@zo2mD(kpXS+x=c?HcJi6((5q}+>59a4d#tU-nPjVfnpFs3fj%pR(?5d|1{MJ>!$KT z)!|!>)naZ(3+8aQZ{AA9qW&bs4PS@jyBGTq>t&|k*Z@8RJjmAaM7pTl;|ClZ8dWc1 zyH)kJLK>gUQW+kl4BD94FMfG;)eg35=5B=wD6R5SQhF15Wb}+1ww7P$ zB*Ri?F3t~_Plf@Fsod+rb68$6!Xn8vg+#o~ZL4wgEY=Z(EvrgyzJHwSN%G-U`}AYO z-e(HQE1}(Q6^la2_4D+J+S^uDh)jd@5=C>{D1H&~`i{{przVcuUt+x!CP4r20M8hr z6+5I`^DS+@?HSyLO>HNw%(b($XXqUd^&+MpBa@ zggYu~i>ou1T>X9N?9%6~x*0Wkq^c?bEF$ine$e{<&&1gWv;bXpD)9?+x>#GYmhC{r zrlYRAyW$GIAD7`ulx35f-5D5ERo87TCpR94!L>sLgT6+#h*p6c1b?qp%#R=>smNf> z>&e=Tpmv<7ENoJj-X$tj&Y#3>42n}yQhrfD^nv`(jo+>jdPPFx`j_Oy4%jzrXTo@2 zJ(pGy02$?Q=n~8j>!^Byal#A?_f`k#65`skfsP)8-(-R@Ld;INd#(M7hN~;C$C-nb zz|r79lEvjP^3u#i8%JYuKI5e`DMd0Es@LJi%2O7m!Z!yD;)R}rgURq*+2Ex{sX+Kd zZ>McvVX4+Ke3Yd@r8G82E;P5&LK#Fe&po-xELA?U42tj)b#?2k?CkuLa?7p7U=%Vw zN12V(pxq$K5;n}CFjpU;(`_HmF38>YLu7?OQ$D9hPq(wP14k$aeg%LwF$V#4sea() zX&{^|bri$IWV){LKyt_4*Kl;wtVk}~Q+c1Utu71Th=(tQe&fhXD5$+Es4^%&Fy#Ch zkM0=76QBbj0rGdLt;VIB!jvaTG~dK@k^%+T*}D|-^KH>t{YF9c2oi21F)&CNU$*#R z4mVsd2Ep0~a%6|QAfUVWu!|s(qjhh=^WvNcPfUbgsplL1PQebPsKKM>V$4AFA)D%{ zmD!+4)n4Z?%;*L1<3!!?r<8J3MC^;D0EhhO2rL@{C8Z|_(qw*@NT_yeIbPl+EMzwq z?zX?2&JO{}4N51O&PQahgIiKh0~Mm2Lj@1NU0H~jsInqP+pHPR(`r{_ZwXel$BG3l z%m%&96%(NoLJ!2a$!el94-XH24=)jiQ2<6lndg}+*-7qd3W3MkNU^f2&x#DcFrU*g z(BoeT9nK%J`teLrUBUkI(8uYEBd8h`fJAV3>fSn|*A6LCTN2Df&cyQaELpg?v?0=6 z{Wa#iMqMKrneT_E=^37uId?r(+2z#)6kS;Cheok9&VRfB ztiq4GK>`c?M{i1vCU1%98rwOICQC5i(HnRqoyy2d3Md!LJiEg^aQ&?qh3Cht z(^GfD@faQb)uHK=+ilv2`(;>JvENo8%MEK!obAS!qLWC(r|R8!NrCi6IfZ5G1lwAd z>WD=z=}EaIn7J;yx|L>;qvx`?6(h0iouv{}_i2v9`nxt^>!Q+fa>nCzqfCzHr!JLj zUFv#`pYUy-jJ*h)r~5w8nn^=B)EIa9xNtK31e;11VGG}!()M+_t)?EUB%OEUG`;c# zLN3twa?>HPK-sL2!PTljZmRv&FN1tF>6hvb+miU&`P+AhQ9sFFa?ANt>Jv^A4uvu> zcn{NlA3($0)y=WdU(zG=N|p++A7@%%1BQXEv2~->Hu}vj zA34U>vO(?y)99G{(OBsLn%9-e;mX4GXKT`#616C9hm12S$ap{?7*n`MuaBfQdpCUZF-E z9B&p%GJy$k=2U$$`B!*Hz{}t#u`DRt0LuSvYl38EpkK=mSFFV_Hj3_Jsm86fc22gM zu}%l&yq**F97iNH_@+oW%I|jy-mD1qOHn@k@w!#@bVNlB zD50@vC`hcV9D&3PNvA1Q5f_(RnO~wAT7g=J5R+UFe0J#jjpWM4- z7*x53m{bEf#i=>6OqA%Xpw3AiPmGl46-xayonDJtj0PTQ# ze3MTqE5#DIR14kuL*NC424gj=9eNdYm znU;~%l<$pO0E#8}VFoL<)3ZI;>%igzs+k2^vt$8W20a?hyUy@o*4rZwM{C{%c~gK1 z@yBa#y7Tx9CHO&>y|Y=`paxFwo0OIg=f!wwP~k^=Qy%yXlk*IyHoG0rFMKy+9e1xR zhPnP6QIBs+tQ^2I34lF?Y99d6G3i<=G!QZzxTOPUqAceN(-4D;g}6%oMP4pW-4wpC zPe?w&?=SD`l;2#}!tQu~qHII9-c(q;u5an_s1_ESmh)vm_5_Kk*%PP4DeDaB@kvo8A4xmc7?IPi-sS+LU7 zbO4446|3As$HxP_jRHJeKR$#LDfzIB(q`khs8m46!3Fcq!C*Eurk_p$40P>}OPkEo zNA;`U?WjYPbK3?dDj9%pgsl;m)4?E>^&5oETH!NxgJBrdqc@6tz){jSEwoBP|IAo+6;!9gxH^9BL>4wl;aRu z@4GEyTGc(3VNWI^pf1=y+yZ>`TVPfgl}(K6@Z4IXJ@b({rJHi&>XqiIw0O9WqT}Qd z;}>teiM7Zv0j zYWAwY;IQ2_N|^Xe1+jL#Od%(ul})cOj%H6i0H7mgoIKD1_nOebE-Kx;C_zI!b%C7amjtaCc0-OBc+S} z?m40;`4}Fo2s?MLq@(PywzlRJbEQpg zg!)Ue5#8!;O`C!3vIu`#I!Qv<;l5o=3{efFAD>0`TQfr1j zq3ab|z^emK%t5!lD$8#gHI`Axs7>W+J{Gc4nb5$M-XhJPVxxyarLBdl%)K~ zLc5u*|HwU5KlZc{ks$5@GvXot`$MY0Lph&WpX|Dx_~@3V=iM*i<_7qTL&qPy&qMQa zs>pkefm%|(+4P)D6_^xX9b`$W6Q23=9PNfsykp9CIT5k&yk4X~(=RW#*4*e~pF1LS zJ>;M6)X&P;{my-ztE#H1g5|b1{yGPdKmLFZ#+<;L!RG19=hvFIuU`9QyY%xxOcVj9@(_nUxlW zhs0`(*q#KEVSl+738z`zxgUE}S@qrM=h=OP=XTiwKg`EL7|zi|#lpX2q4E>q9=_{#moM787POjau}7vqoY&oo@=OE0o zRWLhev0v9IMnNydBKh0@d7ys*1^llAUFBi`0SINq9dFiaxo+~9)Equ_KngF( zFEqsM7isz|N*$E+9q_KV)8jdb1zO&&w=20;%z5~S`* zOjhR(T%6l*yYBbX1T`Ice4n%q&V7xF0}3E%kCVm0-37cC`+0+X1MP39|H6qCswh~` zWE#(^Vn8XBYc?qT1O?KtBVoepB^a9GCFm<4g+KF^&0M%aX|64P1)$)Y$tvm=z{Q}7 zIneWX@R3#}<9O!u%Ai9R#huSG{11iBm($n{4a{J7gX>2A=g_Acssr;*$-O1Ia&DG4 z)^(jSz(Xapb}_PB|Agwq>)fQ0Xv+_iG-k);3~t;iyqlr%`RBlJM8BV~YfOwh(%hVL zb(l%ZmXLpJJhp<#V{sw7zs`Z-#bQWu?On#(@dVaC_#FRo6Z&G&hrB-D`fLj2`SaM9 zWJhTj{L#jMb-}uL-HZb9rDCt?c~ruJ9l9Tuq<2D^vLdn3h}THBdpb}tHCwmN;F;WBgn32Yc5jV4d@U0mm>D#vaRA@!e+0}(J%GL&O^=7 z8%}#fN*fH)+sT-g&LoXJZRNkw8lgu=&g#6cvV$Uxmlo+gSxch>SR_<#hRwI2*J}~c z9~kNPZhx1%B6(mfn|QbPBmwJKu>OP*mJCBJ%3ksT+X}Ymk8nV+JJcd zB$Http!$BwM$YHLVhTcrouUHI=k4s3I2EI7|=@jvlP|Lk%sxavAzDE%=h<7vjDb+dKcENWJlZrL2`&x$>7 zJT$1>&9IzMkp(9{6&3Qthx8hl0VoSngRz-GYA|462}rO&_GsR|T8G(P`w)<;u;$7+ z@7S+XUi(mUOC{v@fv@r{1d}+)FsiJpI@>5dg@%}KabBybAFpc+B$_j-+1lO%=^zq> zQV;Q~GmC$sfJg7dQQYp<@9CAPbae#yQ>w~~)?EH`kGzX67Q()8s~QlJ@t)4kcXC#G zN$s{M)F37_5;$51nX*AW!x0ZC0kOviy}3{r<6*1Nhz8;wO7AYR>Rw>oJvDW8p>bJ&f2Na2nD9q zyfBM2Ukjw;eV+EFWPkg!)K?QRIa*q}|F}>SHscmTdy(tC1j~>E5;E z`o}a@M}=#JuD$<-(5k;be0-ur0b<3r4N#+@g>#EVeFpKwf zx_4H@{ZmeoHQ{$|qf*5Qi>=3F_~lxtkK+u*NQBy5b=g*xM95+i;W|G_<`uts`n>q{ zacrYflhV7orq$(x1W~R=7B5M3O)|^V^VMraiOe5mq|m<%>(|%Z{^Mi3gklvVT<9zs zOKZf^7$PH5e4Au>GQhmBtG(v06%49)`7~8fKa=Y%KO8OHB5-{c{jUSkPjqg2fEp6| z5MY4~vTK+AoP+(C;pCy-G-PDxBur-+3Znm`sqhnaY{Vn0c9ZJ_e1Gl6;4e9&K@IMQ zE&BIq3tsUl;5OaI{Le)Sr(pqN0&q$$`0oV(w(XZc;NY)IMn$#+UivZq34VTjZ-`<4 zH_!nuM1)jSQm3W=8!_~A{&op)&pwg-u26oyinjz(I&s}J?{7;S@SlUrM*IJJ*?^2z zP*6amNUHijuj_#g+?=wqvJg_2GXE1uatXWz@I#5AKPhFu?prmgfflR-1bv&=9j|H- z@o`m2QJI*G_P-%jbN%Km23#@;t&sC2!HWh7-7peDh|?6F&Adx$!%0b~B^O|voyP5y z_*ndfpe}h=iKh)a=bWF-6fS?btR1yt0v!f}t7v7_n8kiI&3GTr)3P^QHdTGZHW~uE z4Q#-OHqUPQ!1hn*22PAV&+8RLh6S}M9Ih{zNqL82cpY|0j;EaH`jFiOcEg0lBXd@s z{#$>qG+`s0?FxD-F||U~Osh%e7i-0>6>ilq$o{Z;Wy4VEOC=>cV7O`km}3Ok@?cg- z%%ws+TBxo*aC!u7a}f8Hpq9Kl@ETp5)5#hndAPdfguD`zdqetuuq6=5X@ShOPU^OI()q|^?`I&c5X zg*6@f+kH^9I^Lc`lF~ptbcu(IuMfPGl3HwXmNg^?w2Wvq9qA)b;V-%$vhwV^8NUw%=ZoU5(+YO0geobZmC*cm z?MZ#`@3dP%<8`v8a&xS+k8Y%K-IHa~b<`AO%VnZM_t(?gYL@m-hsKZY854QP#Cw%dM-9Kqn}kS4xJ7J*pE6TFU>z%u3ah^@?;+Gjfpoy zj$P>K=t2)Pt>iD)2KP82*D1`|}EQfuB&+ zO^^eOtfQ&Sv#8<;gm!JGU~Fs(di0u(bQ0k6?ziN3$e|QXf^6O*Em-hS$!5GSzBS!% zUYm>>4}5M|&1JB~X2ZOS3b>oVSecPpuJ?}o*p{cd9B82^>Xj80Spz?Kiom-XI_n_M zG&2w2uhkhLt*cq#v@d77MSdI0d8-Idq8ft6zfQ; zobJ^-|2a?69%2V*RhULZ))y3j^kxVT1^P?xzmYFEEQ)=FhaP&>N^~Xw4v3bKU($b1 zsymJ-8jJXjc*2+dv!F+wfYa(qrQ^Pd)MEuv5C{Y%%!thgPAP( zD01{HC2374EJzPu3AjwXW@KU#u-mVjmJAbl%$jALHgBP`xp3B*6W0$NEM3T(*>f0z zUF{l#p+?EFEv?aSpbh4iy8byPptwVbdS|Wvvg;TiAc8cfo$3wNjrNVKUXawKBrfh7 z$;HJLdrvN@gPfyDM;CVE2+WvsLr81;fe;Bu0x$q85m*L{f~L65f{l%CP8S&k`iZK9%}@GVyKlzsUbr`Z4v6!pk}wY(98pVJfp z4s{;zK`J;09s(xM!-9g8JkSR6C3F93UIIRL3HM?E?ro94gIS=V9s;q-AbxR@0VHbK z+1m?za0l7EU4vBD0-bXNFHY@`ks^GcC8?C;@xqS+tXQ@)q4Ps(kDXThE>j#s*@6B{ zNmXqFotp&rg$Ye_KQ%m-Mfs`^eTo0fDP28f#b6=-x)jMVnmO=*R7xKFH2R?}3U?@!hfVG7j=+0rl zW!h`L%&Jjw&$sZORnNxFSAhG|)yLz!ou(B_2itC0?vHBPm*=N*jpQx=Qk0V;(Tq2s z7+cX9T*bT>MFT^nHSz=*hgU}M!@`&~2LX$SF%*#9nk|Re`)XQXG}FmX%K_t?iESE$ zc*X4OA2eU+vV>U{T*i{&B76>(Sj=Sv2x=yVP&wTB_@W@rA~2I+77B$*>l=vOBIFP| zOPD0EMj!A0BcMc#2y9(N5${cUBMF#xBU$zGfDa|(l}{(x+IoUh2iSoet(SPb&Ku+# zyDm;)k=4RS=>!&3Vb0H*F3y39m03U_xh<49S8q(*SZdP_49*x-45eesRu<51k>oWz zwPR@upxK!~m7Xoez9KC@yJBvR!O7Ygwcr$q(s?h1eupuTtObV_Lf#rorodTO?qS)OgKEY#fjK*<(?PBPk^#Y5>`1I7*1t^?KHlN17!-3%t7@lhJLjHcsN zrb>Tl6s9KwKB6_LCl5Fq+8x0LQcy-J=&rHBG;n}eo*^3yMH`L?6T&u1&rhM>GWH3D zkZV(nx4Z>@+7vraq_97$Z9W`+i*YYe@a_&pkS*gh1N+Ms~4)@qp z)JGB7{+sq4>dk*`c;BQz2FqUfnec2xB)*mA;=w|kK4b6Dw~s!Z!--IqSFxbmAgkoP-h1XcFNIO~43)CSsFD{?i*Yx9^Q(mQlCMRpetS zf+*=E!Wu3GTh5B(5VoYr`0fM;92Fpk`zcl89D0lWd*&)tkEpNje-Dw%v*ekLsZ30$#zQ>@=DAG9#xFj7ar>YGr#wz*jw!-UJF zE@4R-;08HKN3L&xSgC6FYrYCs8_qkp8;y9<3DS-UTJK=Cd@V$8)dHz+Y_1qN%8fb@ zk}wjUjM(HZe*D@OTrBK77Vf~qEhSCCHYCq^~D=*rW0WZCfM|` ztVqV9cX5Z&1b(EJh^l9&PVZhwl-w1dm6}}%zds#m-E?FO8pL6yz=m#BD}+RVD5dT@ zToMJl77We)E_Km5E9aFbmwa9Y^%Jpc}`3R z&n~2$zNwi(>zC5J^+@UkA9~HV#t?bESz46j`IVD2BF5SZN_ zSPpD?jUY(QWB9YcFR)?Ch0=hV3}jg238JDDebZp7JuJ=1N``lIRr>rU?au4v85s-} zA%&ER^sSE=DkZeLr=gH7rby@@bl>5ocy80`ce39g>?N3s1q9t>r}&fo`4e@rg0fjF zu8D%>kKYDA5q=FyREF_5>>k|B^Upkvf3@+Ewczn}f;N?R9tYSN2O_~r^Xe3 z_|D{rYht3(LbJ5$+Q`kuN5NzRBsUscw_{rNumuszgumt@TGU{lE>^Ul>^j}3uEfQO z`aBcY_1z|5VMp?L@N$&Ax%)^@S3#yE8AEPC0mMee;|Pk`9k0BqT!OHBKuzrfOj}}& z$*lqZb`6d-VgcI-{L(@HY&N6U8J+B>3#m|SfjWPUe5cdBJk^|-kKPn zW7fd-_p%pz-QxS3_3%dAOv(0vbWvS!R6vAik-d3f@o4qR!SGr{e7uxR)6qSFofe$X ze6n{v%l(;}rT!YF$tbZFmd3`$EHG>6cogxZSj%wm{8DzK5EB-+CdHi}AB=E4-Sd^1 zB<;&~f0fZOLBXUIPahLv5`@c3N!0>(9ZIAlzl7ayVy>is+hTu)I8;S*Wp`WVSAo5t zURsiMv@r=3y(F*GCt+$Ypq7J2?(Sr zDeoeQ+aUW2v&Ja9u-F5S*50BBxBPe< z%XQj$KIK&TVj<>g#S62mK&b;n^zgE)bBtCeQ5!&ct>U)SyT{ueyt2Q->mYybbTMwi zq&fu(`3UBXUGN@*HMeePY+cdVlKNssvvyXaxS!&-`7BwWn>SH(s?NbM8E%lg@o?8^ zYr314xSMzF1MgbroYu4X+SDSQS|s`RL(1pQRRn;ZARm;yUJk2yjFgcXcI}^t|7)=9Rm8Bta_ zw72`s2l_Y_Z-x9H5AX?EZy^h>#SNl_Ha6u|f)b(coBC~M$S|spuat@n+eugi1mv~r zDr8P}Bd$RQQ*wL+vhz{Yof zSjg$K&%2eXg^VF36iVxVXOBO)M1FQ~rP1F{&)E*Ew$UkSra(&HIL3VoffoG1zi%RHc9qMJyi>Uw_#zI079eIaXtW&JAlXx z6YO%`>UO>GgL}rpo8sY~BIPQ;DUW%LIl+O;#{ogMW{I}8ZWz-p5u-6!^xmcDeW`|t z{<|JEouU<9cRQ^tO-5?cl`Xy@3 zXk_%mfXn|q&NlGgcQcu@cCP?fQByx4`o1p`GVF@8^gd=~bJDW#HX3cOfkG;cxt5mW zRtYfF8R*$Ynv9|vfN3R044q%haHR=r)7+E|!xhu*Zy#65 z+#+sL2R173a|^L|mD5QRYO*!%M*>60Q48*`&wV0tQ`cvjQ{l3fG;T!7RH-Rqek+5y zg|Mf+uk<9}{BVglN=312M&4!K+nh76y4CgDRO|)VJ|5q-_BM)hmugDEtMy_?i4*P( z>Uas71AWp!zigfz;{lp(P+ zLbxU1cGum&zo+!r+h^JpR^Z8jxOxMd7WU*<_sw-{fL6LJHajeG?5z@PtgE zY+;O^eYL9-MAc}Tz+)U2zYva$hYIfPUwcEsBU10Uk&&C?D%}hv8Mn{sS;$LG1h$Hd zsmy0lP~Tquy_-nr2-M9I!^0)nSrVe2az>pQDZs`GOm=8jImX_njq=#F^ptCBA^^F6 z&Y2+v-wS!GMdC}_C|FZCNB6L$XS|ILVqqtBloz*-4Dr`p(D#d+VgEL#P1#U&?h3mR zmWA2&0Os~d2)5~x+>OTFAYbQB{4F|mFy}@GK20d_6`bx9PbI04XfPzq_mJI1X>xZ# zdlQLYti|uy@WzMl5wVctm!6Z{j7LE!d%O&tSqSrGU5KVW!^6sRNNqIa2fL^QuIjs& zlq>^=lx~&$m{$Yk7LySh@B4?<+YdP>8enz$Cy^`)Gp zYUvh)t8;DqK@bPW>`E(s;jpuK`&2z&Xh#wWTH|qnub$VGh-BDExgu^aWy??Mw;mBK zd}Yud-joQphBh{5A|xPoa~akY~?a#?8CnOK0I>P=rfrh@|@ud6+CccZQYxd zU-Dkmes{!pad|d5Va)}7qKdICZB-=@oN*%eT zAn1aNTtTChA*93*M@PFI4sk^IBbAHv=fi7gysUajStu?Yhva}@WeEsYtyrimmi#pD z@Qe5)vmmN|an?_y5)Fz1zEh>7gCMte)7@V>olIS92#tGFx_S9Jd9_=4nVxQ$P_9|} zD6Ru2X4$Z{zY@cNam0fqABmds$Z0bPgZbl0M!*5oC3;anxhpsu#xxTjsZT#sjbmb}a> z3QM}wU9dY|HFsum1ruLAoIhT>Q3-|VJZ3^752Q;*uH=^CND+2s$I77NG@EkXMBK|u z*c~E>ODk@|S#Q?y>sE3^WDydzxc~?&!}lHGz|5jgnPU7DUOXCONHGq#EAPF>!z0;g zcX8H(1ZNIcI&-Q8UYIsH9xWV!)J834)-xBQ8r|nKLM)7oL2$A{TTY?M(tzesqv&uC zX;>`FgOWyhwNkxqUdT80h@Z4|s-^O!F7-$Oh0p%C)ipsIYhIWhGR))8t?rgJZvdF> z4ee~IS4+Q{dQMcB4XUJJsD@u`S7(QK!p|4zFEb#UgrS*tR>do4P8YfP$?1qko8g3x~kEXW~am{q~PgtAzhTTD3NY@ zzS2G&5n>-`+J;J3Mv>8`5b=Re#tMG*7f-LSv5f{`(%e!fwPL=qS3>=)rqwN*jdrgG zzc>1|E~2cptv;{UVuz}8I(UAbKGoyNGE}qR2ZwDA(P-3X^11u@1C5!FMz?81?w5G4 zN(Z=dJsoxmk7a>is0^9tfhO^qfVM9Key@sXlyiX5Mf7?tc333Mn~wIGQ=*dCTU{xI zZTEI~11-;v;TD!Sm?d-&4gcG0PsjQ82A;$n4A-YW7h?N}e9%_~QWhI-jX2#O_vys$ zS)zSw*#Ueo0)$Z}tFWd#oKP{YMF5p1a!ks*kIF#&SU6Us36bE-@nEB2z9ey?eI&p* zp)rX0gb&z-gc3b07@xFWxkj7j-%u1rgf}^$n|=n7p-@VVgM?h3@)kZp=DwY+kWgEz z0Y=?$(W8D18mw>uqqAf2!6uJn>b7uf!Cmi}5z{9;(6CpOcv4XfgwVjDrEEg~fSg}7 zQ`$H>MS}i&YH^=w2?-&Z?qb{@L263V-=Mel`^T43F*WnZLvK zGRfb>x3pm_P?Nq97pW@9vA~2iAP=tWgcv1VsXg`g*@2x167uC(f10TGPI87Ag~g zbSG`e&d<_Rw7;L{6!SfQ0)K6Q;89jvE-oO&?srfxw9K@?<7bq(uh`n;3sM(P0spMJ zg;;I=mg8L*n@dygPR(c%e)q5^5Q4(=<|(xxYn%!vR%e=+qxOs#w_2tQQNI1dmuIB} zZC`uzBh;$<$AdQ5;&_lPf;TN>pOQx(|Riu!c^(srpVM;X*$d>dKoED-{*OeP- z*$U?8@EWOmmGX0X+zvZ1^G$~}5DoSE=X?3jqcv;k5o3=U6#Bu0f1nt+p#+4S?!e8T zt0P7)fK=Zfo}a(lEEM&%Ft3xQQVTKvR!I<^>D_D5T)8nrdw8aIyel8uw_I&wPm=+1 zjqL3<{g}+gRt9l$HjX#d*=lp&Ybg-<`T9CacMTsMY{G3QgGV(!+bl$hMr)tU;N?{+ z=2dE!Ox2W3IhRcFJ!xMXEBD)D_uY&5;=I~qvw!eB!R?b4jrq(MpQH5s^~&jzIOQK2 z8_hLj;5u&DNkAZBW>8=>CCxL<>e#SIV2&KZ8@3D3XVg)Qi<2B?i8?H$7fq zk=&PO#Q7?5?s+|3t@Q(^nzM5P@cWIn-`2~wKXJ_8KiLUaGc&6IHivN!B8zu_&y=~5 z9$=zu{}E)r3ly`zrrVhNcz z+ob+X!^Wlz0-IUF`OQ=sSi*Kc`Qb&Hgi=;(3Cy4UZ#IQnthkfXsmi|D#MC3N1XID?W2)`7R-^YabMEKOMZ4j6W{A(|{AVD9qOcM%w014RoSyAa zs24Tp-$9J5OMxzr3!u}9W+4ZK=W5Aw5s_@Y)sAR*A!spe6T&ry?| z^gPPcilkTlMGm=V4Vw;q?oYGzoYR$Bv`%Dsd6{p=_UacDLVmY8w`Hq|68+n7htgKw zYTy)vz3SuGFx_Eus*jKo-*jwn_;$GQgjgteQu{cW$B)$e{@HA+%UR~@iO4yb%;e7K z2xldsXqo))s(S}F)Gu8xSw{H5$+NEuv%}?GXW9(#`ep;ppw{2fIIKadK9?Za-iQ?EgE#-V`UVmj&tZ z2pdEu*l&4>jMk50mrCl{4}lzVCMNG+S6|gG@%qFYv^Hh!r0v~47-`lw^vTNyxZWjI zPL<>&`nxoF3I|$r8epLj5u`3?L^8^eZ!0Oh&lmi1;}$%cna7ZFD^7fYlQnYD-!SPq z4Ts%|!jKfKIiAzz-JX3aoG04>DARS|n7n%f^49p)A@&qoQ2vC~<3YGd`L=6f(@wqQ zyccaPkYZ4U8Eye>4Pt-F?KpVX6~8^sINOkI;1Jspxm&~ChOx)>p8nbttn!^<`6G=} zE7O(Il`gd3E>G)zuUFCPU;*R0Wj2eHeVPswKsAMnLlGFM30%7j0G-yupbG*lXRrvB zDepGXKT2!++yjvbR5AyQR~bKCrw01f_}yhJsal83ko&4YS}ZSjb)Lfc(0aHdsd0ag zeU5sw6UdlE5q?XSHHES*P_>xS^V!zbr*PGy5oYeT4yPxE6co`h()yBHCJ;{7q1i7-nX4Hp5`OG+5djaIL;|@un^XUn`fB~=Dd1y_lY-FgR95D z9M*Z?KgHkQ(Rr)cgiR@08%(Ka|23u3>RPRjVFPgdDdsf^Xd)lXv3qTSQ+J+o=Yww^ z2XH=4VC_(BIHO`?Q{>-!TB7W`w_o1Md*ByNr;O=Ru_Ch7-yytpPFd6{aXP0V(^rsY z+@G=Ks+~5y|MVScZR5U>6Yl8e){`$C8#J88W$BOu=^_ED5Tr8n0ozN04-U4$!k% zbX!|O;)$5+fCswr)JxZU#$dh-K~erQUS1PzxL$6dS>C%3_;P!&tg5G20rxRdwW3Vx zNZ%ftCMrwQ$P9t4X-?61u-cRW>;&AJlkNNZ^dMil*}MfIb6ztq%I%reDUynwaqW$J z+|;RCgrJwv`c8RV+ap`X_dI%v@n##yhAb_) zA6M$7Qf(ywp3uWWJ^2GO`UDNXUIJ>bJ_j&oRh(MgYf&tGxK!n6g}FXyDzEGQ?P_Fl zy@e)@XnSdq7S;&aSUg!@I_+lwL#9bhoqw@ecnUzpVmHwram=h_h2mIAh>(}kDe00a zrQ#{ntfHczy^3dpPn~zE&s&?iUu)4Ym#y)92fU_j!BJu6xOaE(KkdMtzz_C#rupX& z8K?QUyLVvm?UDS+UpES2*$ME&s5O&3gPI)+IL6eWwSJ_i1b028bQ>L zs%6Isd%5$T$&fnI4#ghG=!u}E6CJh0p>La_($dLVnQ}ireZJM7DYN6+_-r!r3N9wH z?m}nub2sV|iI?u{glN_AOYoFV-qBbrdT_~$IQv83CPjzXZQ$#o!Y;;=6AE~N9Q%kO z90j1>>|%IMDf^kH039Vlfvw_%&Wni>^(E?v?KEb4XXo&9j`2%YIxrU5+|h{WZ|kc7 zP7r{O2G_Tld8u>F`^KI3>=D*%X>gVb&ZiSx!-2^oD${I0lC3NAu1!UHK?}koAE}8u znKW;=u{ZCYp+7BRZ5;;RzZNiAA0P4b-o>nm{oXXGCj5cv8#I+YqBQ-E5G0(v=+>)5 zj@^2t-8ZS>VQ|4`7QTyO`fS? z*<{DRUISC(ZvuB+6goOGX*i%Uiw)kHGZ{qIqnR@;RHbI^@9tQy$>uc+eoUge?Eu8% zGp`ncNu=NC1-&NT{={PvmUu2@Bx_222T2+!_$W`1pX5~=!sk*it5`NI2( zQMbOHaryu}5|84(SX!FJWKB6l2=dcz75BOjEtC>U7(xb39AtlcUkG8A@4+s0rT1j4 z%$d3B6~;*2D1JSI#%ZcH_#Zte-&D~8upk!z@=wYaCy|_%76+O$n3HG@=aEKHOE>;& z&J93duOIH?4m|>L?fP++TYtO&{x9kF;0n3-$Nz>|(Vqio_Y=xP&3_b^GwuVI>lUO6F?&-?U$6@bm3t?tg$s#qg?2Hjj-Cp`!K9^Sx8`?BU94D@oUH zw^RQE7QQUg&{*qy_>ZBG#hiAPtSA`3K24Lgry?wcdQ(_(@&^1*mir~d_~^5N=OCT& z*$K-jl;~O;mG1ou^C89cLKV4}z`kJ(&ZjQkw}}u~6?7Y6QvLJ(dl*r^am!nn@BxJt z!VF}*Qhnsde_R_CeSix?`^OkQ-h{bYaz#ag<}XnSQwUwviUJWrS7opSZ zL>De8O$h1o@6TKfOD2CO3~V;tbX&gkA#6&f&w0HQ<*zG z(_EaVC*1q?)?uE8zMPsGh7Tr%NS-9{pW$^jH!;E1*RN(Ax9e_nl_ubyf{I$GmKK+E zJb;1(S+x7;*&{%#`lC)dU7<#O3+tc9dyMKToa5(yb))k-Ed#?l1}HnQNGX^&0Sddf zEdixPx8njdN6f;4zOjo?P&h@WF?P`_Jp`GDYMetf3()+{?<=`o4_v~9Q}ouy6w_x4 zgb!6}o_v5pCuUh$;sCpT!>Toq`>7l4r&rg3Y9#mz`?AQ<5#8CmUlK5)*&5bV%}Yy8 zE-^Hy3A-*$4{iN0NUblgfwfu3sz#&Yh9^St4-cda3#mv_vnDv@vA9OB$F(-wZ9P== z;1uJ%6&8DK8>%D}+s49rc4#vz5H~%;yiMVApS)VwxrXZHmk5UN97e7&;m_|xXhl+M z#&~sy3otbBL@XOMfh7P}SVtnYMku8Sp~MFwQ#lLU#coc;x_*yq2~kw3@~^SvP-Nn* zd)mYG!(vyV%&N{Tel6_@30l&G9Al$>2D-P^@y4oIeKKS!1%pvvG09#&v3eR%1fsWX z_>Xs)ff~^&?`>KTd0ddri~!B13Jomki=z00aFxK8KzL?WmLvfSd1N?C;3qQG^BecN z)0dVc!`m!pgl{vbV&=*;4HXINI{}CHNQ-KUMCU!0-21fkZ^-R}-r~TH=6X^@nx9zd z*b=ECwK;6ovjc%*f|g^lfBuV6TCDF4Fbk=I;u0oxTv4z@OKE)=sOZCH>vYN95K%K; zk-SjL%^xJr@TQ@n@@_QCEE`EscRtM+sj8Y0&yx=%Ht4>ww2G+$P3dj+lU^Age$ZoW zb5<9M!-!?KJfq!;(-B6kb{1A6yY1I3sgpJ{OLo#dtuiWG3d{6jNQ1I0RuS?Br=1D+g%~buH%9{jKdpe^l!%RPp z0>XJm#*F?^5PR&4eLUwl->;Hi`$Jy%58X2+=t@{N&S5?4sm0Dgofm7)(Y3}xd`18}F_xv)y`(6mVJxzPrJI8Wh$v+lhY@7{ozva0tvt zdOXff7KMHNpJeZkmijGy^e_SJaOAO?@@t@ag(kRkrxv}(tT2?pF`tSPo_3!G{2rEw zP6J(&n)5SKF8j`Bmi6IcbV^_P!K0o=$3rFk)D@dmu1-2}pIV1S;_)coaUO)m0X+Y` z4Y0O66^h_C279s5Ov&PqE(2hn?3-l>f1p-VrqH$={J`+?+5KIbgk|FD+nqE1v#Jmf zGm`9y6cB!wZhfRT*rH)n5W`JjEi4Qr9o>nJ%&_}uc#7>bjGdNYaKP}(dur!RUT%

          lYCnP8I9H!#^#O=&mINf{Kgm+H+PKk8)ygXu0c;Ogwv;27LHO z^*TW;LK7}4t9m6S8imQOkzWjB*qV^{^BgPFValG3NyXi!oAyA@DMJ&(GL6RJ7}h1b zolJD;a8H6^{@5w6hFM_O=17n*!A0;GtFlA`Q3#$s4mmpDI95#4o11G>5_;5Y$mKF* zPC-j=+k1AZxI$Lo$!egIT{W`40_2VKbdTgfh7BK`vT9g_l5mQ!IEF-M*nmQybYcvF zh^lHqhjsoARcxoreqLxxVC6vY_$02H{jyXoPu36zGVN3=^PuHJw-+^ z#3cM)`h^8d?yLc_nmuso#snTKf~AJzBlTU+Z`~qJtV$z?SKo!?@j)}B%dPX|{k7I@ z>W)lGtqZXzKn5u-jsrz|TVJ{rkOdPb27d=(>UQ_I-6op0v+a!Jl78tXZ?@Ls~g-AwOSvA`~QQ~Inwwi>o&d(p#o~RolDVilK^IlWe1|+Ki@ROZX1zQ(ZsL*eP=0O_Q$v>05V<&G zaKeT-!6Rl_C?1h{%FEBB;iOQ_b>iuAQ{-Wh-f>Iip5D~E^V?LYzz(@L=krK0?z|2_ zc|!pXd^ookSj>z&eO?C`+V)*NSIfSOyUEzvaBdd zY5xK;QIb);llp@(qrn_U=kH!D6`uOJl5daqtJ$h$FBhMAtDlCXJaU&$K-XJQLnfx> z-peoB+uFV}#nCk6EB`=Ut)xG1nKH3z4OPh`=IxAoH!)06lqQ_&hZjFkS;(2Bzj)%5 zS)ygP3{|$m0M$qJ47=v&D?@e{MFSllpXW)}L&^Q4&OpB3&vTE#EweGY!pm48txa_iW(^l|yXc7aX)zH&fsj;KF%x4!<* z`V)hwKT;1?%T=91w`qfkkHb>5wF`Y{X692k=jbR zhuw(>YkQsenK@VzBYsQ~!Tuo6&o?fC5yE&X`s~@&P4lZDb~lo|SQ2PS^!4lYV zc0VxK;VF%l0L)MWc4g*RnE<}=3iH|edyDn0#V3=FmT&^|qc&e0x~OxNn5R}LTInB} z78q%1p(S>kQ}NYQ%m*$}E)~ptVQUEI+5!jGVLgiBPhPhVry}uZGo@mmgKSlf0_A)) zk)1_2N5Pvm%6QLp?y$8MQrDSHr+o|U;uQZ;)u{O9EQ?&YOO~M~`$!zT_A2`C>Gq{K z2@AbLfYh6h6iC2#w7+(9Ok5*oW`@*gh@LLs0e-p~9uwoETFun;@lX&6Z<2ohbOujp z5SP$YC$jM_un!sp#GKq z>BPcX6VE47?#FW}cE|ZrQ?>{nOd6)%BrYm0nLkt{g#a@Ym#A_3bZUe|3)or=)*J-_ zF3ICqDf0H#cW8toQYCStRf|8@O5tH4tRP=~%B9BF=V&feW;c1o5x@v+jg?3l4k+vg zzcSg47tRQFAbJ}T(Z@EOr&4S@VQUA|?))~V!PO1T8aq*|{hfpD8rq7pAd)>fOh6M? zu0fBt9yyd@ph2jO(G=Mw!4Ch!gY1{~;dyoT1Gxjm`Fxwn2_S;chHsM(-Ri>50o@H5 z9I%}4)cb!HmadFI`HT2|YPT6~Zn{?jOgR+Tkn0=oEaDl1rX-y+p7>UKhi1%ROg8N2 zOE0<6dY6iQKW*&$!`3D4jd}@HS@Vl7Xbl6p16dltZ=F5>=TV~dQJIkzUit9`-N2Mn zrXUQLfwpgEhNV0N(_wMB|MnBr!hMxZA7OSsivC(i{Ng<4;ECx_7{0m9A}+1!t}obk z9s{T{=V)lah(NuetU$B042KS~m%O5)INt{(;HCht@GvOVH{qCy$^{X14htoYTRMR3 zNj!$gKCG*iW^+8f&t`&M*c))5eEaUf_oviTE)I?6N7$?eojn#c%ao^mi}#HzluU$Y z^*0WfcN_)`0TaEG_d|7L7N=)hcY7#7qd^yeE^kF%Hf#y!8ZfO>D$vN*HbKOvvA_I; zJj)ei*7s-xTy)|UCwAm-q4=z*QJM)3;X_J^2S+@sCA|x-Q!s%UB;+wtj{w5)lz||8 zWHq#_@WhhOGJ#({e2#jpV*2mwpMg^7jy40KDu9B(>I&$s972m9D%vZ47TbDs(XMDp zw)=TPXiW6B#m%`8m|i|UYo3C}n*AQIr4XNORbTPXhu6&PlT)w_l389X0bDh9PTDAE ziJht6S=(p=-I;QZj9Wt$d5c)6+~s9JLR`Bu1(C`l1RD*V4r7fJA8rw39G0lf(c1(B zdQR@;-+ufATC?q`)?@R~!$4wQ$V1pJ27`8k2IDENyG=(O6r|HfAG+;j=jG{butvEQ zo7|?XRf$e}Kc1pB#{*)At8e^p8sG-;NNto|P5VTUeOY*E!wG1543yi}W_D@q%)prf zOSBu+v*F$3Bl&Zm+9UH!SA4Qq9eMQ>3(+7dvk;n3nkZYi$?$7_+LFVK;T>;bG-FQ} z_8A^+Je!xbu=_+y_W7C6JIAoxqaPBGoLqX_%?*2}Sgt|HZM-8|nxi<7Bmu&UhnFJV z0x>Ws=g+8?^XqY%!mtlc@bRT<_LL4}eY`Q!TgS({6V3W+)hkhA_$DERjatcJoZko1 z{nYzAJ8gRbw-AK9tl6%q1RQzN7QAto!k0>UAzpp7lB>8DNKFeUtWYaCkZ>f+XqWRj z{UK)QT%j0GKZqJwFBBgX&%;)C^fcJo;i&AS(_b0L?t~?C6`qnst%3CAoZ2t$lg_u+ zfJ#g8By6LFnpp>PJS}ppSO>Z(!=8PwVpF!Hw1HsPNm}gHG-1VK7Vg`nei0M_r0!3Q z{4TDc5x9mogySxX_gjjqg^kVL^Jm4&k10vCA5%~+fArAfa$@mfpy@4hw!>ea(#)QT zYVj|o_7cRDsXMjz^0n%-@_8gU#n7x}mXqWAIeLz3#KmQ|cvy?D&5BKqmT}pSDJQ&K z47+@H7q#9Gx*~nC5ow2zN8I$$+-6LDE@G93i&2YOQr@gzx0+)*j6%Rp4{4*1cn{|< zRN7Jur95==*iXpaKTHj5$e^z!%w?Qr@1jQ8Wul82CO?tebbm63rwW^~qNG zuvYF&^iaOKC}u0g5V@Q^IimzqlinuqZ61S$IMs<6(c>|}c;s;hnBKj8o{lj<7>Ux<%nd6OpU_fwor;}NjXdR8aEjcb{@s5_ zUSXEEh?MwZ=H<{CvEjHngPzb1ad-gtxTXl$CaQT1nhLEiKU@@@$i=R~q^ z!qqLqSLKaUMHh`_cooewToPXi)Y};R-t^E6NG`pS^PxC8PN4JEM34v>%)K-=mD3GXD7b!FtWAH3)Go8((dC zdT9IYcK2MSh_JAcoSYniy2%r1mL_ISV#YrA-KE~nh3qk*0Ml;IR+q}H1~HgHS4{fY z9JQ5b6Qrn`^D44UqiRpSITSz zZ|YD8rHkTqC~g6n<=QVT^5{ya_D_U*GCJfN^QZmY7SMQQgT!PQ)2ZB+414d zVzg;lNQX`MNp&$LYa31Owfn;a%9Oqf)?KPaCn)0<6+k z2%N!RzPT{fwE5%c>r|lS z1OFzP(~y^pJkKVV;jbLeE6AS$ujpia+Dy=GB|#5+{RLPSn`glJRlTbd?J78a5w&(}s&)pS(Q%2_z|^KMtdD;)h7! z=G{AEI6Qf2{?C|Ir2&?4cGcHY9o)fDqH`-q#1?E~Y zS}qJ86&C9P{3qYi5N&w^Zx^7BGDCWg8qaf+8PsW)(<9rL4jKcgV!P6)-S$<(p$))$ zHU)MZqFM|g4Xw@A3X_R@Mcpj5=?aD>(CE|gK*7ez2RZ@rDpGu~7|5B3_ZY#u-~;-s z=a{ACPBxgZbC{v?cAE-I>|`of-sSLi#wdO{?o3XXkXRmJhSyA)e!Ile{S*(T;8*TQ zpKQ+`x@(A^9?ka*WP7C*GaI*l_+VxQNd_9b7ZPF7AXk9aO9(r+4;nBVtI3Bbbr5>@0_Y@_hk%G(1w?KdQ z<{(~F=OvJ+weX_z|Gho0AY+5|sU!NQ5CN?Oze`;s9hQObkE3A{$lI__f_UrG+Ua~V zs84m@g_AqI#V!`sH{hb-(xG$Pw7G7v1r2Jk8{1WIoqBu5qIIX<8 zfwZ0=pr&@G_WS4v3@!~kwlgym8Ra6QR;pamHIEPI-Ih z!Tn~X2UNT}lDG0zLrJ7^Y=14}h{i&6%VR*yVL=Ecp()f#=ExNvKj8|cTng!-_QtOU z&!4D>~(xaN3}?KJAISB9F$)bA1`iL?Bjb0B;Hx!mB?>hzADN-5W5rCr%~d zS}-;cZp|7a+$8unJpL;B5A+{L>UEizh9u~BkufnP*HZ94Gur%G=}ASQOXVs@_HImu z1MleIwJ}_g)gi?!M{@BN5>yFiXD`8>>2pmGbSH|oJ`pWU$U)hgc&5-TTI(SdRwAGI zV9itcd37}-ro_n6-bV3rD!%H|eIr1ZHreZ@k<;5vyQkZ#rt*O{Tt#r|k=-|eaAtZC ze5c!@0@u#xMQ%T>8CP34KM`lNlHt!4#-_o!Toys+2a8U%ZC|H|6(wkAc4$k{#?w*H%#Z zQt0N&84+R9@@c_=`7zCkk0A@uMjB!CfJaoPLpGNQXh)p?1#u_V81$n zR`|+=9DyM?I}IHGPDQt0GE+sr-?zfoC?-unL;|LrW@kcFX?$76nl+h&)>sYz7Sa2k zU1G>bowg7a;}rdlnWdg&X~6U=re}5IrKY}o`dmf%XA20Uxmv^K&UVofc=CP^G2o$- zn91#oTR7R)nEcX5&MdjLg)xxcF;7PovR$XlRGLif)Uo`nsK93NL0*ptZ6*IE`zcS* z8U+P`X5CU+1FWlvYq{tbOyTj0yvP`9OMCB=)#3;%%9C3NBd>W;3HH&L<4|4}{{7)EPfL<- z-dDnC_+@1;g)CkCkz|zn?Fvp#PFW3IV;}aK8dV<_p@&LzYDq*yXf;wCd?^2W5+vm# zP^J+T2lm2stQgScl{DX%eZT>&yA&?QSJq&_$9cZatYi|G`jwI}gC0Jq9S)c(qHJ ziE$@=y4>p{a--DM9F`TiP6TY?talUmU|a~x1gV-&ZJ|`lm5rwiic0JsG(%ApO-sP8 zz-juh+$46f1pJcVBJfMPgfL1kU^L(oNH32@;cW#jA{yyqn~Z?zd&atc3NPQZX!|^y zb~|QhOyc}d06gOxJG@LHpMfy+46r-vYk(cQE@Z(~60epsf)sEeur*NJ9yBq*i3HZR zKN{$qrrVT-6Dof2XkwtNAYb$~BA`7OBpoTHMk%|C1WcaI$MiC}H>i`$$0s8G-4Rwm zol8nJA>Vcu<9ACF=X;Mg#{;r?%>cqknXN5VkpFmSyAjvFL`8Lhv4Qx~_xl_9q?wzK z*+iwJ0+@$EmV290DbdQ`k1~2jw`B;Xe%nmOPN_*RS^}h68(m z=UpI;p3{!Vtj^`_ab}}oOD(L~mu0Hb>%g2j=gnl~f?I|suMFu68$S6PSAI{QW$Fls zb3MPgMS$e7$D5nEhaL9+Vt;AeX9oXk6Jg^{16pCpKpxE0u>AAmMuM@D^bjrQY=5`& zW5+X0OX%%iZNx{=MnH#r%*R8%&RL++2Pt>>VBPHt=g4k&)g+!N!>teqgyms<6)=~O zqmr{`yg@B8AI~;EeP6}4r>066bcCEh_)h~e6cUsv4<|R>GO-gk8;-l9$D{D2 zc!#N5qZW5&Ldirw^z5&X8y{}Z=Wq>7OzB>W&&GHxX-9U*Kd~*c&R@HVcX3RthkjHuXJ{2QRRi8HTonWN5Z&?K zT3gNc?Gq4$YQG+1T2h{tMsI$0Lb|>K&wY~FFO(3D%g&@Zuu)qm>#`V+x~E!}B?iRs z0}zPDbJ1*|9917YpJ$qXULObi7n1BY6Y{HhCShZHx0k6_2N*%%pb?#N1i@e+pIVw! zR8VGkWbKn&Hu>WppHWk#h7OyVPzUT_`h_{x#^aUa<=ST@0;QuY<%E`}M-K!MgQ~rE8X9 zi;E}Nz&TDkO)09uHYIcuvpZl3!e7BX=_&x^M{0Cn38$W`7jzpLIKil7jAefC*YtR; zjpXFSSh4#L6so5IHfrYCz%uFr0kzNs2&g#H=^klBR;MHtV9x-41+#NGR|4-UfXf&n z^#it}Nj^3w3$ex7K1*FKJkTqu{eDAc#1N)msUitt1=7YEzcOu?+!fS`uHG9`4>wJy z`V3H?UZ8>Lw(y#DWXcFyuNlFFe?g6U86I*ZYqP3LXydw8+zOh-f)qS0M~{Y+ZHWf$ zW(B$LR*@%zg>E9}CyV^cz@KM#tMws>RjuOfW{$Y?gl~W~Rp!-h)|&&(VOquM<38d< zns~I|Nr~%`uNPy*jwi|NZy=Gp^7+-VeY@PTz0_~|v|+^#5`9{%paz3BD++WB8cVt4 z%jleM-}m+Ts^I(RIPm;w+LAbS9$@V54JZ60OHCf~88n$;+D&*$SI@~ll%|uoyXt?( z;dLmrT;68S@4hV|_#QIFBEhN$bFMN1jw7Zy-x9)wSfOSB(0@zu_Tr9`3 zXe&7(`Ym$hy+vP~^g7Gio7`if6S4;)TpZ1;cGd9EyzvQmSf0m)qiaw1t&d%B^JjPP zI0^;!p=5_Q7XP!sJ#iauqm~i{86#0CL zJsBRkJYd3^+ICWFuV}*3Sam2~eYn75-k0V&xL?^Ao@-~z(I{KuHvz1W3-(uX^&yOG z$-@W);{Ha$Z9K*SAbQPLlS$<3I<+a2UGIy|hY~c(L#oG|q%;eQ``ph?4%@u~!uWv2{N&DjRgDyOVX=DK^=g z%2v1OSGNhN-la+2@Uyk>HOzSgF4<%pJghSi2`N9}%EXD)Bd_FysaFy3j=l&|*K;MBU=@ZZLd)uW=o=5KXyy1!aN%5k@4wz0&n3%$g|4!`(c&EB-hmHbiIkI%(ZfO44cI543su{j~2+d=k?o; zmT5Ebb7R_DnUdoCa%bdseKj#T6Y?|Jffhu`-}_k73b1$6*MRmf>;B`-mLvazjm^`} zuct(8w8OQdi#*^E&-ryZP@K{eXdaSOUGW$a1}g*88p5D-G|b07EPIc6B~K!iXU<=! zci#2hYkCOR?l?W(Ik>0Yr)sD#?iwB~AE*7Ct3e`E{K(2D(kC!5iBXf0pGUqg;b29- z0Lx|mqPYb^-!$uE)4QXmUHCa0z^h`-`srKy^|5Bgx1mCIman+!bl21l@60bOSl7ie z4X>=2)HrUDmM%{w9TKu=LH+LGhjbiod_CT`+sb7Smf(~3NT32DgVH7dHm5Dl`W zu6|*?0jz-Y_+hIrOlnO{IdLO$axuSh3hKV=JR86fR-&XH9CC{RSKeS3`bvw0>AYdUu@# zy%*4*v+T|)T`O7^}!@D{Q_W?&U11&!2t#M&jil6?|TWe5W6^ix^2&nH&mKrBoedFHGCl|?~ zE#D7?&4 z+d4mDp*oJUzhzUltXL$c$O-pj-sLwGKzXG@Ar(W%b6+5-1ez)pyJp);biK@6T~ngR z7e^li?|4y4mu0Qv;#7l}R-Kh8Uhj~QlJLIJ_;slHBAgo};&r4ROji;bMf_Q7#h)TG z;iww^{K4bv*O6i|S+YE8D6y9j)N0(13asx@Q>Swj^+7^Xu@&s3>P<^PN9NC;^uRE{ zmCK>qxa@kUCKnEN)xl7u2LJHEZ_Feip)KCLC*5!s5rS89j{7^Z`} zW2U#t>`ZTh3;`^o&p&os7 zSD)Y$(6_F?9LghI8D;fGVBor~JgYS>-+!%EF9yE1HxX~oDzUgj4Ve$n)Qn$_$nlw%g0y3p+W?h8wb#D&vV9A8C3oiq@+S7_Q5whpPz1|PU z2Fq<@`1#*0beDsq5}dv|Cz0J&e#(;cujYdx`;BMig88LxuoURj^S}zgiQVcOSc1wW z(}-+lXX-3ZpE0O)c_Cv|o+d!hagI@av`1^f18I1wMSP`Op*rvA_Kq zg0Uu!DY_&=FBcsx4UztkB;u#DYhuT90hBU!5X`ea3-UuOz~;aLEYNHH9pOZ~EKEFRD_bhdXs(BuY5yFMikx)RJ&RZ9_c>HTWpQWf?*pyU-Uf2AUXvL~Mhkfx2l3u;q{ zYkzF6@uq%s?dJ1hoK|r-kGvpY0WNj%h$4g7Pa}yBgC;2@B{dL;S)LF1zBtq0br`t% z0Ppm>Scm!KM6M}on=e!qlcxs(@^v$A1!?+I22Fz2_GCX`p(Xv$^~Ha+TKU-Yn#8|% z|A>Qu~uud0m`7gj@$*pMrNX6n&=gyf*A?>t5THsK0A589`LJF#r-4-PXdNU#JnI*PpsY zVe4Vp$QuJP=hW(LAlUf4%Wud(kJQ&fC?bL!#1Q?{z2q;#q1FXEu%ZWloP{?O8hNj+E*5vjBqUeKP$3|{~s$d=sMU9SM#5i`2wD| zzCNwI{&wh{cM=g_AXp54IokTsTdP9Pn(qBULOhBn{vl`&q?g@CxqwRs-F{G%S5b@A z+S}FbNH{c0#0?4Hw0VYXsFeE3YWMx()+lm_my$8t;!t#Q43cO4w6 zO{kino#|Fof-XEohAQXov{ORkml>O; z|9g!B_WJ86|0Zil34#_c^u?V-aiAbf8@K4Vmx!jD`Om9Ge|-g-dh^Pgl^W!`4-1mx zx#^6j8|G>PvM%qYuXsEr1En@<^2dwu{C}w4s+p^QEA7uR;1(&2Ktup_W~(;3WH~1n zY|UhH6%zk9=9?Kb&!T6Yi5QEC~$Jm-w6fOgGGtMw5C{F+vq^PIy-}g3ZTTT z89HW5UNFCxB0;Vp0$VcE=n#KAnx?tW>FP+_+^nC?2GSxGaujcoAA?3c+X<{RNHgU( z11|F%1*$-!K|8Tgm3T_bqauX>2LPOwry$&ur>aE2$lG)wSaxq zP_jZIt6>~O4pTq1OhG;ogDhpK{$Oplo$eO)LrYR|qetl%EO8v_*qUy*L+@gua(@il zEwlKNoSMRhoD2r_wRbG(w5wa66U|uG02cMaFFHD3-RIpzs%UM#1vprk|0ReA0$QAc z&E%^$qD{Hpj!Tz=N_w8(5{NcQKt_N2YMtT9w=6p?+D&V1IHd$pYL)jXxpAQg)Dy*Gt1ro3& zQU_dW2(BP~fA(<)u;TXpG@buY#(|Rz9Y-U8oRY0(>GOIJ+IQA zhn0}FFmZ7$%4`YK_k*JC0FCQZ%N!rIC}5&XsUw`A#AH23f%KiTKDp~nYN zv#mrA_;FrVU2SQJ5u1tGC54^hxR;1GZcLJa@NCl)G&x*4;~!Km1{r<~2J`Ktc55nV zJ|&a|-WRKk<&bm*XnXeALu+iL{Y8t zWavK$^+u9EzB9#In&3pTFe^{~M(|IaW5oDjNqdF(@A>pwgX58ed`Ca0u8zm3b-}`H zc`w$*J?g(G6iG0Q3wY^9dBm6&f{5P6@zx3a7kWUn`j2`^K>b&dw7V8`DfRiHNUC`P zp#6sI@DtL=+^g4^FCdiv%)d#K=ztCJTAdT-{Aki%-R;_Q9h84&?AHP=k6sTfMLJR4 z`&%A69{6nhQ$;}^;sfv>w+#dR^yjhcqst$-QH{ncAc@3uN@0N6jT`f{cSfH7uPW-x zra^lKu&T?D;m?P{e0?>5IWaR>cngV(kJ`d{y+HcN78X7AtIC7*SfS!#RYck{KK@ zQn@5#pf{^u1~3z-ubYiMp+hL7+B?_~0;vUrKx)^R3cy@Q6qGR_s}btFQ4Mw8=@K4f zgp4HcD)KmlIE!!KX)A<|=D{Ta_dsNKHjoh*sSAT(quzd*$Ph4NC~Hf}#)Hwch-EHV zKCG}mleb;vk51|juiDdiw~fkzLYC6fe@#9^WqBamdO<~)nVGU?laG-1$LoL__gZup zt81TLR^=JxBLB#b*qms6sN6TxOrao~RIKwd9WjY^ai~+LL`+KOK@q_Bkb3Ir)Fz@Z ze)*>`ilqF17DgbSs`YeVSgc(FfQNBc4046Es^Tfwq5$cay-+j@*G*_z`dIIgLwKqos1V|AuAAv-nZKEC%hf_d@!2U>*lKQWRP>sSv zZACCQta#K5^P)WVl6l^^>z{UZ+GU5GohnMS+bbGg=IW#&;6y1?L4fKrwfwJu7vujF z@CHLu^zIh3h>J_@E!Agd%Y}u{*U%4hx|g)ofx+1L#8HB%deS@~RC6In=eL%M9cZcY zY5o~VLA5ELSf?WbqWDK?l_ICPo=^-Zs0Ds0mD2?z#UFew z6uwSjT;lH^T^9Ie3Ro}ir94jHnokO+>!9WsPS+{f)x!l^Q$R~)wWPlE8+vfOamzmC?K|T{Ih6#C}vbB>adPx1a+&lWIY&*9S#4@sq z&L}&6!w7VfiDZjN=tZ2`Vzha89V_uHMtG#EayTbF*Jx`D$T8Y$}^{*0j=$ zBcl`Vy!+UuLO?t6V+dvdqn0gnx?$mUL@a>2^Ik<~N#LDx6{%zh_ikqnTo08P`=Ud+ zr3q*mZi|+AYso{R|B3n&xQ#wi=3}(biK}v7!c*Xw1XM}%gJM8Zq*(zZ#gU(#Hbh*) zL9Qn_R;-d@C~n-&`?jqzhlEUa^)5Fp?>&)TX)gIyAqnYRipqNdqIJQs`1RF1Sm2u_ z+}w(ziv(ai7_a0^Zxlpf{!=5zxUQZXgj6)pef@WS1OH5yB+38d>np>mOuM$Fq(qRG z2I*F$ySuxjySq~w5s3{VT>{cbcdCSRhjdFwH}8cy^XMGk@%>{)HaqTnUu&&%ow2mv z-eDPjaByJyg7)l)p~=^Na}epTrvSg#3`_RSeHld+1IU7j)@N3GbgGUn)J+pL;Qo3h zfs7_J|71O{y0}UBzw2Bp7KJ}7rmVl$Z>C~HlF~1xqAau391XckedB`LP!=wPtjQL2 z^v_lj{H#L*)bFfNn@ff`*GF-2Y}REXuL&Wt%-Odza%s-P81nH79(8LiFqZ$Lj{K~^ zCAa__l=TO>?D$QGa`1RhvwrMlAyM}4FDf3*xurrk7t&5@RQ?9bf3m#5lRaku5At~Ps)zdS0UZSNc21F$I z6QGKMw7@$);^_-JBfjckHEa zD?ZL00A%+kj6B00YH0Lvl&2ys{!d_+D{9sL&k5!Z2S5dUgGLfUFlwUms>tXzn2y9! zAt$l(nEDGCHfdHfI{dt>vwy?$8fWR|OR z-(>eEZoBypZcArTZps-)p zEB*XfuP6MvhHYv@N1O(_6iZ(uR;EhFiSFwHtAN;&I!gQIH#EvwQ`1---rI$?0LXiRLn&;* zCg)9b!Qfz9_LiK=36+(&)&0%}ZVei%WFVyRp=`=qdAnv!18SM24|zDH0q9OaXa<#sA51?Ngh8nX-IdA~hP=~85u=jRcI&MkNHVq$ulO{u-6iGaCl z+NiVQKAA*E^?3K9?a~1gtN539+`?xp${aU6hJ8TL_>bKE=MMq(0KV2WB#Rho^mqz# zv7ddG$Q=wq{H?m!k#k`zagWUxq*vNq!E~9YaJk$WI$BK}+e%f=%HNPA{PenNpGOri ze}2k0^8!Yac#-&r~Lbxa1aI z3sA{Y7lV274_oYO-WIjzPNS#!x|5b%jj@U6SOrnf4A38N@@bQ_ zOXfX3r;;kH9i$C(;#?g6MHIXf9oLB!y)&Dt;NWu3$Kbtjr+3+XB`&!B7szxEVKmfV za+!?K$hOpawIy0`}%CJFZyYWex$qzND6!l6*mpJ)Zc}UniKp#bS^4KQ)**#v zRv(2qs&@%L-Wc0wJa|ZVp7EdZP)P_Ka-QAT*eIH7yLn7uiu|9NbPsk*8tf(wjpiPI z+u|-OxCEt3wu!j!KOwz?&4_@Rc=?Ue^*{e`4_a0l=r&|~KZ=?H_)V&bS_4~NHY&?& z*P>p=|00CEs=o1_J1Abq(E3e8e?Vp6`+=YiN>|lOZatmvS?Rux0Oxa^F3+yebann$ zQ9NeV{mukM=I@eg6As48YUdj0FI<4@_st^@1{mmJWr!~qhN4Di?KN+U5OOWVSn$a9 z{m}}L3=$zMBsOOM3qh=QWNiDxboy1_?%EV<8Zb@%{@f27f)3k;J9J6$-v=KU#T z(|6KdIU}jxjJV%dN}vH~pur;g6X3)F%3VZ()r7THMNT}x=W=46%q6^!qay4H-ir}8 zgurbLX5wjmeD7QE9Z=+Pd!nq5f7L2xSB4TVV3G^@{Af;CdrT@`K!oBQ!GII`-cXnIfDjG z^=CIlGI;+E7+g#~`SBStTB`R@HdRXkZ<~hO)j8*IU3p_Q5hLHr?IUSwZ9?2!Xu)o_2nKDc9BEka7p)$o83Vfj6}pC( zJ{NBRTatszg;umnd~*rqu7ae13PME3BGPi>^6Hy00Y#eSnhYJ4FLefhX4IZaq4MZI zVF?ukCdD00vkaz%>d!s2V?hKG?1uu<*DgI^cR&Z}lAzb|^w=suuh9CqaWaFf0_mfh z*lS$wN27M~7%*ExzV`f2xsWxB_-iL|Nuobo`$f(1SGDMJ#oFD5hnWWy0;=?|Tyf$k z0~}5qIx$mW14Op|23dOLSREmC=f;^89eRZ<=i}W};Vf85A;f?0#Q;}1U}Ut^(ph~d zYv@HX=nc!rKO=D19hfAH_U8FAI^Ect;f9)92fIeaHZ^AW&(B3c&%%GRVT`Pyi_;!b z6#n$@?^_yT>*)uS**R^ysI}3R8%XA-2){X(7}|z!+okGd4e4U(zVG_5rFgKTRwI7= z`Ouwo0EyWw5S3~tPFgGVTo$gp{QCwbvG;&|fFa`HalRU5z4UFdxw-SzUnn&=o$hJ} z@HzsLWu?%|3kD?O$p5(X>9B!4TK)GJ+&|CRpFbPii69NU4`(jMSG(GFJ8#lbMfTI- zp>zEb6R~@dL&5)~4nQo@Ye~D0N+gpl9{q3@k---c2;W2X-d#g1rDbJvy>{z9+qHaB zdC}+|15}^wdr{gVLqkJRNgvvbR_9Z_SLU^?n9g{IruWcR?trF%YS|2wEA`20DB+8> zC;K3_SJBw`{eW3p;F3SG?KkT@z=VOC8CswOIa*f%H|u^k@Emvo8MU=JSDY_AR^0#Aly3oUZj+6B1E+)F5M^>&)M z9Iv*P%!)vYy1meoh+Vo4##t&b62J1vXqrDAZ){1rT9Q709x5s|f4aZevDvWKoc)lH zYeQB2$Q>A1?96IPUY=0s4Y}agz%>=HC(Dfv zY54f02?03)*#Aj;hxPq$`S*`)#Z~hM+Oc&|A3)jyDFv08a*gd&rM&?dv&#JjbD!C0 zkpfToOugZsq?+cLdQdn5w)l-D7%3=CV~)P|8qGIL=gJeaG-Qk3;et8jaa?=jUk@dS z`FArMmS-#Got61Oc))1r@SShPm!>=281I-^LyAtVeSk?zvWdLuR6{vEvgXON?12#_<Oaa_}=0rj0kW6dSV+?o>#4g@e zW>tn$2_5R=3d=EC-|_YBM9i(Em`kRTmj^oChb!0gJ>;1ul(Q?%h+dLsPn^2n-9)s^ z!+Ew~(e-HDN0v?5@W>V7xJ?_ZTlj??p``(lJ5Ptx?IbG(hkMz(mLeSGiIS;1BM}rl zOvxwWVl-@k1)5dFKT}OH1pI-3($MuLYp2jBg>yM$wO3lT1qGjL5IC!UDRHA@y}7xJ z+?ad{e`jz}tnp}|oCtFC{UcHCLMI};-=kA%i7an0<|-J;r#VyCG>Q|2uexv#{xb}p zF}=_ca%~Wssi7)h^40TJEM9{U1FTn5@##>Jrf5;o%HVKru9RFhO!_Rak=1c~W#SiU zqL;a((g=B|$dSOL*MC`}V5{qQbC~WiZ);RqYarP~&2RvB1!(k&ND-%3ZT%)`iF&?C zcR{qCAT$foJ89>8h;I~D>lscr^(2}nYmE;O2R>>VRl?(gu)TDe-tIDkj>-Bm`EK(M zSmq~yXirC>_?p{o*OgV}yV-tR*B z&ui|p)QL!(s~mp}oOAJog?L%A?sfCxz#W0F_lkY(ZR!R_&~!5O4f;rx$D!%5PPik} zX=?-Qr7p=e7=ai4c^6@ze{=d5#RVEv&X{^HEFuZYZy@Wpr!6y8 zRwdozfHqeN%+@M_UVb=5ZeWLr&dCC7(5B&uRd69qo+ef;XQBZP3{=@-tCnCbVZoRv zUzL!!Zj3Q1YV-BovuuOiS)noYQd|yZaqYSam6lN=pGt{jW>R_G)6KZz>&upPe4CbQ zn{W_ZR`;pO_nEau3FV<@;(=qLX_cuZvF}CntpNTwH?I-x1qf!A`B+GXcMl|wZybB+1hNx)Ezdg+V49h^@tK5~=j znLiTsqOk5q#R-~&Sm}>XUlnupt<6Vm&)=NX^sRX=Yso=J0mJY5Pihp+dR4ZQxkGo3 z8#&Q0O#9wumaB^D9whp8tu|loj%Wy~5X%K+lm|=G(a;Qq!tzuYemLHn*Q@$S5xjSr zy_LdXe|6%uWD3DCp~z22nno!5}Y1x?Q^bwySY@p_sA`ON5t!a@|z74p$N z=%&M0kKv|e+3Rk7wptv(mZZ z{wj^~PSwqeZQhD`u*HAqY+mAH8+4;L1wxYp& z#;IeKI)=3_e1l5^>%i!vqQB72(0szzbNp7*&px7M*E zMW4oHwi)04qf(G8;voiPZbugkH))z<2*cpFQS#%nN3XniLoRoQF$Z4B5Lnw4$yq5!25CpQ0{i}ksCHT zKlmTKXmXq+WK93&{V}j5-s-B0KBDFOyLjkqql+6ay$Q0W7lsLziSd{<$bj%7e*T7o zQc=r!FKbc*0}IPz_Nwu+$9w61eqtO|D#4z?`=FqDt4*JyY-+_NhtpC&k5AG%p)Z~R zhd2{vR@P{&5*^oM$HBrq|YN70B{g>IetyU>3dZhk$&JB75g@8TC{mEB9^2l z>P4q+sq3TD>f5V<+Z=UZ_nRjLyN=V&98kQ0EsAaxruaL zL(}DM!}k(S(XPU7=VOShUST!;g-ga|Rt@}8NlovNWz~4N1v)!#_~vlr=||OhGcjWP z4P0xxyQq1`P0ZlSrqgfAyS|SU=-z>p~*f@;0lYs_{OqZ*(FJzgTRK&hX5?sk`s7?X9J8iS9Gi0~mi$Xwf zRUawQRi!jN@foaENEvSC5&aFvz1 zi6(lmprQ99T$IUt?ozt*6f_}4!AlKa5lM8Djoic+hL8KlHW@cRkBp3{&c?W9YXp-2 z2x%2s)!)L+|()mBo)yaRbes=^S-#S`{;G5j~6TGU@ zQm}-D)Ea`=*P|{RJ!-mCYPbs2J#=%sZ$4M4p|QH3B-*3dzqt!{-G;e{GJ%V}ni~8(x}NkXGGBvdN>m;t&gs0Y z;XR-1V0L4&)Gmbj!cZ5(DuXZa!Gn_qfhD3E+hQw7ti#=bbOIz8chdpd8mu$Fa3{U) z`CE$ACIanuEj9G$Qp%c}uk$!PE5+j8=7fbs(xw5IG#;BZnfbGvq3pxTyfoUAv~~`D z?^>-cKpl+t{`9JQgz?1@tSPW~u3~dGe{BiUinN#ACd@IYJPqHI6ZIN)tLy+(y*ZWq zIIfelcN|}-ulIf%S#~NG3&@G39}|CF5q;-=;x)B%vmE@Y&AVOjhW?V3CvDUW$iV0? zMYAJ2pWY>Ee5yJ{q|LJ_#;m0a_ zQ1vMuohZ`s=Y-}dwJ=ge@h#|cI#M1f8Gn97P0?j;f%%zt_T*R+r@2-8|8wm z>dca! z7T2D%LQlNy`ZBRak1Czp?C!UI{5mfV5xZnXi}BZ|Q4iMB=@v%h zWzjH<=8Px#N}KyFm{hhSgtSpDulC?oU4Hnp5qvTqFu&uMPbqzA$4a%k0w?n_G2I8V=gYr5}#s{3+;r&;q9*4~fa`$fX?;Zp55+Nok7 z|IHc9`jRdOh`O0``z{=bLXk|z#uxUYcYAO==Od}smnWhfbx!4E-&uBwMc1vyMMf);8TC+M@1x)a4fJkWUg~^p4^x?`u?q#d z@d@G5X4WZ%iaNvPcg^iF%BpCS>sJG+zS&civzqONg4$wUX#-YGJ6$wp7qD z4VxM~KuhfPavjfpd`8-sRwfZ589fu@jWXQWs?5HJrr79~Iy?O@$Z@mvBIaQ`@>CWZ(o75Y>kC-;-Hn;}o zN+$|!j~6fg0F0)d#;b$gFV{rnob)z$jpjpSE4Hg3n>bw%1S*j7^Xt*vcA)ZScsD7& z-d;+3Q5qT_j~NynEk2bU+>k7nhv5-NB_EQP?u)ld%y@v!sDt2`Hk=U}2Sy)~3BfO{ z1a;NoB?Hu~Al?HG7(R(6_Tk3V0H4E@3G^7h{RP2jBVu-20))+*z^av^|T6^&snBmz3W$cpR01kh^VizM1DGZ`|;$IYZ6dUkB479J|7;+ z76TDeFTs?us-&4DTJK&ibn%&ADkmf3frH#cQW8Y!T8f9)t6E4(`pIqc0~)4*gv2yk zY?t;9mRy(Zh%U~#xHu|c`~9Fw*xG4Ps0nZ#C^yq@=@S9zKtknIjIA#H=GrOe{1ACX z+JS(bQ6BhWi)ZoW%Wj$V#Cyk_w!z=uj1fOlDpb=%r%eFhndoqx6PDEV$_j&$ghZG# zNL@l?{{~T@iLvKJv4|NCM#d4TlTBtLJw=VVWL>#=>KHA$8y(5xY!kO1tR*EYt2*6T zC9HINa}C*UxmsmXsP$ z6S*%DQn-%S59@9)9`j_Y5Cd^MU?;js=W~SfDJ0$btb&3VS~!!7U=@DXnx*@GQh?S#b(YTcbf z8AfqyhkZu}^-y4_)@9BUvRk*_9HQH>D~KE#ln{xgV>FB>_G*xWo>s4#UPdEQF7;XF zaTfY+GdG&=d6$lCNi7F!30znScFJO!7xWNeA@p8hP=n4`M5TX|-Mm0NR5q`Qq;5TI z7&nwVNhDg8Njgt=wTbj&EmP=yzsqdQy4cvF+vJiltyKrAWFNhgbrTcxdV+WQGu6~* zhv_f7%r0GLJPS5QghfaqCiJ3%vc-EBuTN3Tqq>7%G(iW`k7CmzeDMq_qa5PYd|s)= zU~FO{2n;gsK~N1`I9;~l%kVNC184mn83u)fw6_2oi%1v2JLvI#Gqrf+64BYV-YxBc zA`}dgtA9^WnQ2T{;OsZo-C0C@c3VsnVBL|g!3#`EV5sC$(0p#dFAGIZQ)S7F@!uhA z24CKgZdlfdYBYX{5IU3s=8=*Figf|YpQFLoA3w+?!d6KD0SP+*DVciN;=2k01Ror*zR)l-g5#m7=WL^y-8w&oZi=R~I($52h`?s1 z8fAiZj*2f|f$RA?3cmW`&5*d5MtRnk9Xlu&F|`7K9x}UHmkH0OHAgxwCLD1K8o8d{ zod|}l{v?m_iIaY|5E+j!?7g{dIs+@rUF1ogblj`4)y&YYxwkRJqCoINcZ?LsI$*h7 z<1?*P(PmxLNieasNS;@Eay0x{7RC(j$_(&q+$Y!e^rU!2P*C7h_eJ#0Y{td$$ENQO za22i#bB6L2o+4pdw_I04OAt+oqB95wJ|J9miV}N*`J{(rqJ@y#6(NzW@&)Os&!=gnA!iZ4;GXGf@W^YS8%1O)@!p>S}{;29XQ2dc(iOecrbGt|GA;+25V}W6$rF z8xspl(Ab!K?t|(~% zKWXtL>Z^R~nv(J2yuB=)Op0r{!M9E4#rCJ%q)y9EezjxIUqFw|-@`90qSqt@)~F4{ zV6#C!*)s3Xw0mE`?YXz$L~9DC)>~d}WXurv!!@N!T9M^Q_pl9K8X6qh6xh*hR?(7J ztzzg%(RTT{V5MgFq3?>-XYQ=tw@nxZJFvx3);S_@OYG}4^L_2pB41;8d@eK~g)C-$ zhF@_tbNbUu?|BByR??soxs%{-bRk9|Ka{NA{UWY~{}I5S246|x!q7E+X}`CQyd!m9 z#*jjy;Wu{3IOdHvPsPlYjH3*%5?{*dA+9T>t$~_b=*-*lxwNvp3lObo$xVq94MmSK z_&!;_M4*e)bwT5tiZOBGXUw^hogyxkl|s!$SjiaK zE6v!A5`Qc^s@Fm`F(oWBMFNp*HEyjQK#@x)r7bsG8MWOebA*MC3B8n5p;<0k+Xpoy z&y<4I3JfJ=Ml)3VhG?+c!U?K|gNfXbk+#zVU=G2mZvovee3 z(x1+ron;cVo{m~mO4i?W&Zt(nvJ%p;XQ+IYnn7BBS-gMj){ZFD-1Te5xFI27y1#r6 z?FRXtpwoig&4H7EcqN&n*pr(!K-w<{G+PSnRJYxtI7-=`&;E#qy{-$ z4pty{4|m@vm&0!C0|Y@t5T}+8p-%jX8zgAx>dhtjqkJLE#_M&k)rr`&UK1dsj5s^B?#r|hJ{1kfQ8=zyXBUP`+q)QKCj1u|=mZws+Y&`}q6gaU2 z#mxI@G7!X!;+bdbXNy+CWo_1UZx}N6P~hI!LmJN+t2^frmsWpv06}!)-sy;=oS^P2 zu1nOlC5Q@$c622^`qJNje@Zm81fR>{_GWd@wz=CfKE?owlO(920wr}l%KE5f8W#?& z<85JZRdI zS<&8nM2K;>534Y=`8E7(b~FY!w5y)9TD`aYTr4_9c3Sx;U2nvbq$W*+s+67-$uRcSJHaV5E}Cu3ANu@g8`x?ef# zoMXLAT70jAtk(BhZXZ^)RJKy%vn;%@;St z<_ICP@V`n32Vj%hz3snTZ1~x=mm(-EAVug;Vk-Oe$R%@(gnX?nO+2~0#QVR|KkD_phI7_>8iRm$*ifr2_!i0% zew4fOEmzl^r?c$89{ta6n@7N6nnav%{4iU(x$d1$cN*|vxkDuW1quS*O9&{wf0woY z&-4ECNPtST>VdKM0LNo@!V3EFV@R2Wa=~QZ#I}@+3fd_wI{xRi_4SEbQLWI^!vX$C zSsN>z$8=}IZeus*FhR7J(`pRE3lldf6ZeVf-F{BdKXH!d($GaRti2XCFJ9Jr*P$mc zF$E4Ql~ZWFe9-?2zvINC5K-L_oMw1hV$-hY7WA2VoZ z02a*DEpFRO-a9i%{=l81)#r4Tv-e4V0eCh3d*%6A`0T!MJ zAphq0LrJNR`p!yU5>k9y7=ELe%GZPKD*m;xQkb>=Ume&Tj$taEvG`3cnXrD1og`Z^ zkk{)0GYIq{;Lz{nwdu*Un|*EhyMTP)LYTr_ua9JvC!O=W&^V z$D0%#1PY4R2?g3Uv<6$F(3N#S^yI*V?;_~sxf2p=N$RwKq>;i;3 z5Pw5JTP*y@r^nB{W0pa?8o(>Dlf7oUvvq@o>P)rvi-9_wI}X^pl=DqqZsv3KtUUXz zFw}ZpBsKhYO0t(FTz0CL8Xw=ohMZTlFhQY(1}ERqaG#MQV4<t zbfGWdv%5ZJ==qog-m@CX*C`M=C-!A-dlHQqI3?2)Uqz(qyFto(b<+ShJe*~(8w;ma zOdIkB4XdOy0@FqhbP4kO4543>pC|?(qpiX}KnODFZP#DwM5}eo#r*ssbWj1SFF7wb zlz2QVYvYQ};rzga-VZK;UXyJ4WDQlb%KYURu=m3}^5mu0s{E2{Io4CVH8a*Y#cqFM z4Ocz(oci9*xNY1nlkOQgtL-!jHZ2zX(jtL{3 zLi$L_-Tl3aim@V|luTdDbj?64eYLg}SV0AY3_z|snOV27k}Y>i3Wp-&MR)H<#KdH6 znq3e=0|}<>OV=a0h@m_Ep2Q%Vp2nmn#bUZ5J@S64geJRjmW+_c{EcaUUt;C7jKxAL z!RC>LxL`y?L=JG%wgAQ~=p|-K(}&Inz(+fbDAaU+i8sybC<8gkH`9Gqx?c-m(3*dq6qUx%4Q@3nLx+<|{sXX+UrW_!%@6ZM##2BF z#$b6ip6AJfAlo@;0o~PbjWPk`JCFN?3t|@UBSp^oY0W`iIl6l}dD?S7kdWy8nLaHE zGn%oO2I-S?iL1AOkw?IUg_h=?dJ)3QwwEvUNAr2Y!oCQ(@$r_hI2ILRR&$er!2=PI zOQBTN*&#p z<&o#GA8u`@aJ4QV|8XOn3ACP2ZV5lpsj@(qkbBt0DyId85R%y|aKE-6i{ib~$`d_h zXAlwl(5aOSK8&Hcet*(-x*#td>mt?Vi0GP&W!ZO_f!mNGTmKRX5pnLJoHF}7IjCAb zIy?zPZpR#*qC&D&(_>3p|swkMUZ7L4}2((TF!T3DG%fK3hUAzmYVaz4>T0!T2a63mlncz}D=N zKJ*YUKUO$oDh<*XOPU+*-u;%@*LQalfj(x7{-rJcPD<>XZ+(SKPFwc^nf@(IP?QT# zz(9aNti8M?`}!V@3^Gm#@GyO9f9^=26&7f4eSyy5Ihy~<$As4m!5?~Y03<5ZPXUXHs9hM2O;MK45-X|<+F~exJSDK?(M5^VPKhPt} zqE@2BGz6Rm!{`FQaxqNOwg(;myqq1cFI)g@s@{oLSX4y+ z2yP$Hfta1vWI`QFw!B7a@;tcxzP)l(1sZzjGb_1*+lzPV@=mnTslSolpS3!l1-c@e zq*T-Lj8*!X7uQ8{OA~!1fDgpGH`io8=BSxTI5=o3i3WR5cy=zJ4~IRfGrW$Kf{?<& z8iyT=pXA2II_83vVcLCIqnbnI&mr-rWf&C&Knt{HWMYOA|_8|>V-MgkDE4UGBamzP7c|;TmwX`#&jtB zzS49r|120K8v8zX_q{+QC1~Tcj*bo&e5f+AC?#03%f31|IJmse8LK3{YjUi(^i+G5 z!<@BBN6U@wiNQMW4y#wa_Kx~Ncn?DIAetycBV>ig?lrre8nkA$xvYwjlrg0J9(pZy zF@8P%_^WWHWfHf~d_InYN)vcbG_d?pq&EHkw|%tq^nIlVPIrC&L^r@aes7w7y$%5k z@(dtVQ*gyj`eUo~3twJf2R+(33a^_Eq;-H_9azBT?)P)QPQFo^Jd#b8>bl>oy8ZlQ z`#rsvky-D-&rj_4>zco77*8MA-v+kM->5-LN_y0?$3F5s%WMzmS?z_Cd3!vHPl#X` zA~?A6__0$%`IcXAPc7&ZZG(0uXWXB!qm>T41drfw!Vn)K^k{QfXsJkmGmp_5_AeltYf zmd1PkEi)63CM=ByQUx68Y{ddAI5^U8-n>EX2w4?$ ztT1X&Sy&SN_$4yzOTDfbsyv@&PNnQl<8}2{ll@>Esf8hNWQaFc61O_)_BaFqS=qYi zA(!)Dn^`&}@)=W$4$|pt9E_F?wk=6AN+dQGbT`nHV+r*`=px&UV>>yc+R`GarhFDp zmLe&HcIEkKLVKh_7x&@*yio*T&=+LA@X=h2cD6=oFuqS3_&0f>dUWrra@DB}XjI;u(0RWaU}1{6vZkd!_Q4RWbQbaQBouFZuvok= zEI6&d5rjub`BU@j3y{!jn?}7j+bWDPWWc1clIM98;u9=jUnVt*f~?%uuvaZq!;isp zAVK=}Yfg^lVg9|k8wf-)|4g*QZCnHVZc{~a zq9iF8n$t!rY$H+!5eBB%2X?7unfNx$pU)?7p&gEeULylO>b||Mdd|k-ml(&hfm?d? z^-+D5_?=ryp6*@bns5x^g&v4f3Kefq$OrvzJPbTnW!Mm|8!kGGe^x0!ZxZu+&{rp8 z_uk-J;Sl>62Vv1gknroFOZ8<67aMdUpyb3Z!LXCC~g+o0+VI=F7k?Du%D7!Lhv_POl=Bv&kM8zmhKzMk3an zl9(FZq+Q%?fLTn`>oYG7TH>i*5;eOw+6 z9M9v5Z^X>4?*)1e_J2cczrLjzyNHubY!g1qvxdu*0tq>P_frIzG_icVP3U5;M^%)c zQ%BSDf=#Y9lEOcI(7>-gNLWzNWmTg8^yF+r9;-cTtfi%RXIjhjQ#7grS97j(WYEm~ z{Ot>9JwIKj;9zV6#6vYP_0_G2WU=f(B3|gO*{;s~E}a-JQmQ|?9p-=#($*f84tv}9 zCUO8EcI7hE_Xf9tEoklXYinFyF4S+Hg%2VkikMb^`~c^y*XIq-1O26?BDLH|92;b} zFNCjOeD5A6r<%&5(3|Lr!F=ur4_xUeXG&YR>i1&`Q(xFA&wgL6OeE!+UgM&k&pXyg zW>l<3S zAYdud)rRKe#4cx)dbl-Ml8X1`8Sr>~oWgB}&FEM88Zd za+d9pcCVGv=wq{`k93obyLXS?TT(<&MRZDbe^{Er{<>baAp4*r#3BfvU@p()1(p2t zxTj)sg9!F>$Mx(mpOr0f#-K{ZUOo!S`-@zR{yQ_hK~+)4adF&JKC21uv?3H?QE=mh zBgfmS^AW^5jy6ea(+caAsCzra|GGf+RNw;5vDj2FxbEQH8{j8?-J?vPAaGym_6M<+ z`(iKxiF!>f2cbe|15-0IjnQoR6DbWp5Q@@vtl(ijhlFO8zXELxsi=_|!h3RQrOjEt zm;V6h6(8OI_$BaiZvdx@dYDKz?m%dBHStL%^fCUH+un=pvL1zfWKKne`xS3Mt}%*q z0%q12L#@_)$x8TZwMc~>%uS|e&ydZDizMR+=AgLU9=5WY8IYlgZI5#eh0fOeJSo3_ zT*Or@i_&nz#_!cLNaFmxHTg-Y7#xIEL8sh$&drUlm#~ai@0ZJe*J%Kazk^Uh!jUtJ zh)8}w5u57B*JMchPQT`hu?iO-*@~Fq(OhY^H(8|c4R0<L~B?r6E@{-S>xiRe_;{=AIZziP+N;MzdD-pP*V<~!CJ?_;AOGzW_P2Lm;`4{ z)kzuWT5KGxC7ZOvmFu;TaJUu`2v@4NuXI-rZdC9zQwyzdtxNl8-d7j*vv;CEp8ty% zlK(hhi!$Wh*!r+cs~s%$D=txd@8zgx&ZlwqALno@OAemw)F3Xt{-YHbY)7bNW36OH z}56$X#XsPM#UMZ9D0s#{nyIq>82{x6> zrTw}tFf%8obKAE+g%bwMo@0DJe*Ab*W1we$aRgnv*UWRN?cM)B6buX-a8T7U9#G+t z%mMY3%r?`{&z7V4^;`X+>_LWP<%961k4; z6%|s6M*^C?5D=IYQu8e$@OL{v5K1H@tjcVchE3$F5!n;Hvpo*LE>T83d5NdeGBTKI zjF;6q4v^jyUhM$usC=I41iSDjG>Km!4IKjKzX@GG3n?FZS<~G4B$~PzG%LmaubnLd zg917&1F8Lnf)(ylp=?;8H@x#Ql!y#sQ2T?zTDg&pJjew6wt*=4WJ6q7WV?QcQHUoy zEYv;mN|POuIw^R-*thiz<)KAy!n3ewRDo@^_}Ikw96`7uC2IT}ax5I_B^GykwC}SP z{!#c(0GvNPt844Tz%zz0Zf$SmRHR0IcM>7)VZR`wcrP0#} zEQ9iRz{0{ID zTuvor1}5G)%Q;%=ves~n)g|E)XMn{B7-XvQS&C;Xf{lKFq4m?JmKi4!=O212O?t6G ztTk32une~t$55wr-%WW8@`eyVxhWZqlYiUrFAeHv`(`hH2a+@stUn9jqI#1;5P?m@ z@O|D6%@(A6V6_21iMK4`k&KR7ubgrGt@5%0FdKFMMBIq z%OhMD10PSw7htKkmN8=uPE&F!YMRk-)kjEfxn}-c-uj4E(Ha+L0aX`5$p}($0)Ryx zsnJ$Qq~2j7MKRlp024umE7XF+VFwQ3aCvg6fhD>P?L82>LdY}R2OCRoLv+@%y|Tx+ z#DjSpqF$-Ay<_d#z{_u=_I<5J^I?9t4g==TgLOaTp7#63%ubW7sC!M5Bkytmzia`l zL@R~hIxdbWHi*nb5_z)`I35uc1>Rf(Si|s{rl znCrn2$>S(&8VXUSg0aU+3JM{Z*ahP?zs*Q^@zo@3U@)^zNlYv^ zg#nngNN&xrYp=L`&yTZbqOdsH(4k0|`wf3M*P8kLXh-gfRZA{7dI~^@FP~bm?!c0z z=3iKe1dG{PB+tt>%4{F)lXakh>a17TQC3vU#FV}RHzXw`dw4J70$|{!i~v2pW%Wd7 zP0C0@rq4mMn$yXR)4cx|aH(i#%(AytbW*9!t1N=<-k&Zn zi>N4iMqtq55DWo5_sOc=x1!D{JJrGJVkcob&G);tPco*bsV>=OQ{z^{$0bEY@(Ygz zZG$T13XMMBdnK|lt2?MWgOVy<@&*J%Wnh)E))P+`xvQ?~@2ZCX!rn8I&?i5_+b`O% z5E7t9B7%L=3l`PeS9S2j2yYs+jB_qO15cF(_f5Hrt>G@8<~Z7iHPi%`b8g&;nW}WG z_x0>PqwpA z|7z)><`MU`A$t$%;QlDwKaU$N5-8CmS_X#W?ftsjgs=0ZsKjo6m1OV-1%I^^mWoZg zAM9@#lKtj*C1=t9C_LaGHphhq6BhHF1Ji#y66Sz4L4O#9=g}T3ij~aJ5X{mhDWw9H z47G`?TXAzI*o)CDODx2**ni)SJ~Tt5z}NXkEo@?<;&eps%VNZ}fr(2^r1iN=GHn9` z(#E4<=|MpFnteitDbhas9Zu%PjHNSsr}{#XKTW zFXjHD^_VQn#PmGv4*)=d;?$c?PF?;(neySqUZ%u$-qRI-wPZMuN7j)g8myr6JwLwh zH(}I;?pKGg@Nu9=6d#A_oxx<;9bS(9dBvEQ=iE4ExcP-$KzzJVSoA>1hB+b6nLgBp zGxi;~w59^I8;A-m>E22YZ!s%J-S%nUQ8PT({RLVSE zp7NaPJhh(2q}i&CwfSdNl=LLVS1MSyMt z3LX_tvCg`9c6*F&aAz`KUwN(MLA?C0q5WsGtpE>eZRh4Ph|AsvYbmsl9sR1zQ1sEt zy0rN*Vt{a{R!7()yifszJbCqdaB8*x*Vb1sM74!$3rIIo0s^9RinNq8C@E6X-7%DO zi-3T@AWDODHw+-%ND6~=NJt|c0(Xsi&hdWtn;$T%*iC{ZFjt_&jng0wgGYDmFImb5gokUW`~w~n0PqWEP`nmX1W94 zzb_(kNA&8{^vBmVnh0i;Ul=akmi z=xyx|0?05JX`O37GH~UJ52XeyX~n&UJV_wUkS@d_A_`n6X+X{>8>VA>{9KmH*Bk6Y z(r03q>PRaqM2EW$&uq8YW!Kj=vWwDN0u>U*+23vqyeFhP4||P~{-jp^AEYtw`vPfw zJ$`(KV3uz|dKH*D)1Mb=aM{4wva9%Yhf*H4qtlR&kc^net5NJZw#|s#ShD^1f0y1# zU}#p*`PB6rr6njh(8;PQ^J{)wcUG+P{APQojo}~_dwq}9UG7*3pTZX7n7wc0^-1tY zc5}K|zzvR#8Y+_jg<_MCjCbF@V`mXtpQ4DRL{xE= z*^KBza-6sC-o4svU6qu3Js>hdSz-ex{%DgfqqSVX`-WdPvY6h{y({Q9*ZuqN)p8qY z8kyJv<{gbW_7F+!Jt+rH$RDgh&dWj$FXeoEB4Cpq+|fbH^)bfs;+UJ3l~6m5soJiv ztK}98p=*@xWsh_;T*M=(t^GL{BnwUNSfSkE)+=VtfXxXzFMiiuYK$N>)K+-0+1|J& z1EE|XaoCu85^Fl^B!CwWkTZ~Cn<9ffJv%Fbd zo$ut)OaiCeWZ%$`JH^YkI}-QcYm^nrzqW+EkQ=W|NijbL z^yc~sLcnIyd?^|Fj;YtOL#!5b8HcDzNikTfA{p-HJ4NZ`y+&!7)aNqoB ze}5dS)z99rdI6!h0mHK19hI*;KsHFpBGI@|S664sR#Q`x@&&3pWa!Ftp(SAS{R5LN z2bf3#Y%o=imYzWf0?`Zq3bRh7JW;AU6@IsG?-O0q{Z+ zMD{s7KPbB*_R{7WeEbl_p`J4F1dh}RF4#s;TLQY_5ryds@S`z#>EpgTCNb>pT+1d$K&A(4@%1P~9T%IW4blbo1y6-++5Kj>#%!42O zmCtSr%v?r5i5CmF9?86d+$V{{OBMg#BXMVXz%DtbXj3Q1A`{!E@am9{9`4awH45w{w$zc76ylaI9rfJma{e;o*T1@ZhPg=e?=}4P(mD~UK=aGWxSAEZE^BSCe0@&q z{?_NgT~NUWsN;D=y>7@~=;8Of3>#zaCFYYpIudqtz%(^gZv(>P3>80dU{G}faNQX5(?kjAhHYJJI)9rT{2LIv@{0%VnSQ8D(oO2b!TK>{cCWF5N zQWY>13Lxx)LM3Ecl(49hcihtQ)N)z_y^2i3Sz+GSCh+XwXuwKNnDoE33zZ10U8qVz z_%L%2Liy!~5!mA8wRuNc8Vh0NaA>1u1CCzX5~QUT&1B zJC)zW#DsBymYe&G(^DE0j?S4AFKFqr2~JA;5ZI$0iPT@o!X~L;@DF$iVfYPRI+`>g zl@}+JM#r}7IJYwcKzhC8WnH1)k4){JJA^T=FMNMN8OuaOSi=m$4^rFod*455aLhR# z@YM9iVK1!bMi_yfqzA_#*x2#q*QX|^hdU`KteT`jz4ybM>ub_9)u_Yn4CrZTy?c*B zF@&(#m;>B1x5eh#XS#>^FKQjm!YJb&&&nzE!1CIFVv@46fN@eTOY{wzrQ+(efeQyi z{UJo7&3**lKcsP3G)B@ZIJAjqsXgWJ*M^erva@5si^2#t6PFYA1Cg;2q%r)X{|*1$ zriZO1dc_Mz6aD`BpPBWVY)S1sK}!`w-$=yOE8H4_BO@c0&kiBsT1pCl_1W)%SSW$|n+BBSUj(PiVgHF5osHu`(u0vHHZ zjED)J*(xIuiCKInsm{71bRj#MNM?Gd@kON=Z9NOhx>)&jk+fw`Ey2 zKg+!_qQ5)$csM^!hl%8n8?j1KixkC)Q}&1gb5h;uL^I0*0F_$Jq7u4sQ~(fR@jtS$ z+P#V$mFR0}^w2SyrNbtJq3rzTXztRr&NBo(_A^ehH-64v zzhFbwC!o1lE)p%?7IJF4Ib9>&>T`k`p{$cQKxAexKM8wePZ8;Ek|gkeyjV}8#H7nI zSh)XP2&NgBxsE(ySAo2yj_RV%D_`rXQK1WJ&u;+n?s@od<=**bjN_rDVB>YuV=Wr_ z#~&|H(8kjGv*~W6{W^X9+4iFVzp!PvXVp$bn^6D1g&<<-@cZ)0rNLl+L^z!p=N;{5 z2%bm3i@AWBSpib^YQfM3SEx_*lqW9&nlR1w)buF!7PFGYkcPNw47u(O86sde$55Wo8%~mYhRR(t^%WjRql-URy-_Kj?dkXoHed<(^xvlx4YpD zwUKc?*MozzP6uwbJY*2-X$@S{ANzcuZ-oImr227R<;Q0UvL_;M_t_YYM?T7?zce>C z9$ON;8xoIjg8s9XQzZJIIB4Or-#(ex!bIpv(h3m@fku@Vnz54>wEA-^Q~-46Ol#awq4PPLuxygJ_5{q-qUwK1!#q4u-dn*4)G7*|mTFzIHfu8n_AHT4ugRE$FE2m@ zxHq_6Ns+x1!ym0m-6}@D21?w8!qGCF$6l|La41Xx-?oV6X7XEIok^%~F&#a}tr zLFn=BZHBb?{R}0&Hz3`DkSU#GGOBBV3A$Px+|YStom;uXit%k=Dm0Y1;MU5aSMAYaHAp&M(j0G-|64a1795aS zFmGYTq@+Z07CHIGg(8TlS&^5flXvOq=_Dd4ziRk}HF;F3X+20@f!QQTI6S-G+)aaz zTEP;-ZBcr&u5ie8T1QR@BPy--rS+Yai3jDl2~LM5pjERx0{(_iP8a@ z(U2CLgw&nB@}YT$y4C4#r}UWrjq3>qTtlakRcXUbc-|^6ZNtd$mG zbpZ!EdvUXVqvZ$0Pii$l^}i`GhG8fM$YyJ4y*F4{y?Vjt*DUHi^S7J=t~U=A*uM)= zc}m*AFZGS_ZA=VOu5#KdKD()ww|6Benp+06+Q86gw4RG}zw0ZI9ceHZR-^u76{_Mv z4mT^v#!c?-zey2$!!F9ESyo;0csrj{xdPUgJG_#_7atz^M&w9!;w*vF;1yybvsoo{ z0+e~Y=QhLIns1&r6Et{;IL0SWpfvG4<2>?-AJFzuQ{lIp3U=PPlo{fwyS|*i4#B*| z@LCWCjKV|TvT;SW_=k>Rj~mc*MRwh!f4XhR^J$)4{VX}hC3XLd*s(2X5$10K%bgsv zTL`KKj4QH)5(xLMvRv=4D3q_;TjhT(D0$os4B3JLPD{c4qGDi}F$OMf2pFpY9Hl}1 zkS6o3*#@$;BRzwp{DkwSzSSa8=JNgoPBMT)F)mk=9F}}-w8f_>Vq;fr5=B4V*lFM# znlMj>yB{?^VxMW@7XcqOpEf^^Cetzd>r_CI3>@OPQOS=?kq3fWK&bn>%tX%PlaX_T z{Rw z%nMsvHkaMGJNpL*Ho6l{ZGUJw{*0)y=7BYPjMHxo8!}Xb#)xf-2jOz!EnHu29ed~h z+n(ei-KRP8fyPran@ZAYLj{SOY+5O$TN@C@Dfhn+6FtXbtqD#<+ zU`;U>nkekSJ-GQrz`b2sl-d6HY&lcLgOHF=p!8&^QD1Xow72+0t)qVKQe)RbV@bLdjpw1aiv-a_=}QiQPKOGJR|7KIg$WXhqJg)FSvPZ|vxP1LGw0 zm2Prfp@FV0+wyHbTk=7ViuU)*t22>`9Jk2HF&N_Hn_N6yj`gZI>;9EAi!-igMK;w- zANXmC^zN)Td}nTMYAW}T>i$WD!8+*iVH>w9Dq8-!P%O3W+#R2F15 zf#{THV&I@*;!(dL<@7P|Svf^M8^D|s13WA_3qC~ghI@rq?7%Z$t@jE&l`d9HZ{u5R z-PDog!>9U0e`9HoTEs`tyueBy7$?lFX3OON7)0(vDnR?Jn0GlfgGIzWX8P`E8nSoH zp*W52K~QaQT|W8CM2AiR$jxG8Kjm;==_5&=&WWTioK+-wOU_LJ% z0kbxkVcsq{8{vG;I=CK(hn2xNDbkyRvAEQs=cBgMlj5{Knk}$q;W%g)-Y}EgP~K~H z1q$LZSIW!ERGPA>W_`$3BmnxP^}5H6li&dJf#<83T$R*cq{eQ6;B4yt=4L~^rE1>v zE_3f-*e@c*7$Y6OLGCn`F714!=knq8EAKtg|F6@2>VBPPJWnu=)m$U872v*pXje#a zhJ;!uNCQ&NV#wC&{LnkQ4Uwd;vVw1pszneJ#WI75S2@ew-J4m=&x+1qu=vbvTuKEf zD7(SVI^M2?+6c)%{Y-emMjAT3WZW4p0qQMNz%(?NDYxKiL!4f2p$lsg=HY8WLXI^`<9B1zcbS-Fk+oXj$s znVa_wgna{EUg^0;j{`^1+K8c8`X`P`?M_M&QXhcGu+*re3E0vHC~K~XbzPP&ne%{H zWIh8k2s~2gN}NIS!9|_SlU`YD;z1*?6`=v2MM4Nxc2xyZiEHsb^91oP< z2BQ_wSO5i2!|LC6ylK%7ctwk@E zY|Gw>k)@6)Y~7h{00*Cey`u?(b`TnbUbsl?1R$C*9YvL2M~_%`2&M!$TUSEgdZmE8 zfgNk#m!oL0tJhm^1WGTLZOOR|{UJ&mzR;~r5Q^5%t2)r867v-vv^tWf?;l=h4RTVF z#pIWO>97pMO>`Pu^UZYI<_0cL?QlK3LV7-YuxyWrmSLe(hIP_mOLAVefdr#FB_#O8cf+ z)%OiEe}vz|`Z-}q$VhtsTT;ExRdqRC8xQ#rD!CV?YhQowMH!Q<02 z&d^wH^mABvL}iW74`X^3ba;-{HVQNDafv7N)*Zde?4%v{4Pt+rhRhISmt{GamZo%H z_s005y%{GPbf#}r-fd%gTAdP1x@RX>X}bYr2yu59R(e9CViMgVI1)YnXvJC&x2_fs zAfUTJ8_F=IK3r*Sr&A~R*u=%f-mS^blkeySh?vc%zdBzNhQpi4_jP_L{*)l65pD&IceOVZ+T$U93mV)GQ@ntQTQ7@F;%!f+wE zgw&=nFN$^23OC`=hR4;{_Uh4Jt4SohXiCN3$!f#z6uaA-jn{x;K zD!0~xhJIPA2EzPjuRHm3jecmo_qRYkj0O2Frjm@X0AM{FrX#@FoJeQ^^&Z}L@jJ+l z5$7|UiO%=Iov(>A$Hus$ab>0R4Zo}4f{LgQ7{cYigsA(;IwA+*N#y6mMXp!Ao(8ph zmUhyj5&swxfeik!byL=#p6@dK`rjuQGr@295Rwq z<&q{*`=y>;EgYnV|5}So`sS68+BT+ISgU9>w*Q(SEdy)F0Xr(4(%2owxU($v@U&v z`EkZnCYKA5qmGn=-!~xKe=D-b=H1JI*q>~t-@fmzDN{dWZ+<{gY{Sm=8o6XQ-IeS1 zKUoZ3Vf7l#Qd_IpdSh5(FelmQ_mP@vs(+%)^)6fUVzP-s<279ypKr%$RZ81^u>dg) zOn$if)W^82EL}u^`p!--88fq|eDUDhz(DS-va+Y;`VnxIp5EWEt=U^JvDUud&hP0H z*7%0f>MgV&I~)ZQH%5@iiRYrK55@`&?t8@p#IAKv6kE<}B+{9VPoxuk-`m5zr=1qF zFY!*5_+m2JLh_(`UwS9znrjN=5~SZ38lyBytRhL#np=JZ31sdE9|%3~l_ld#o@kH~ zjeop?y~ZoqtE`~VCg`I8s}XCJ^A*UoPX0oh{DrGrBLdFd+ZzX9>VF^BJJ<8mUX_UgyLQ<37v(2Fk4)1b{fw2-i%&jRmyuvB$y%BToP_>HA^`X6SygLeyf}f^1O$Y zYx!bW22VFX2)W_-?>X-3X)!HKf?V_WQF@iSO@U1i0aq~6%jDJMRV06iq=MA0GKCbr zl4DI-VtR5vDfef=<=EjA<>YL&{Ep+Yy{ysalx)AtO#|a?LTx2W9}*TLyiTUi0>x%+ z{`dm9H9d}aA-cLM_a9X}bzL8ou7eA*x*e=48W|xzK%N`}WsOHNSeCILTDh#`=3wd! z&+#6bIEOrX9&M_c<*K%vDG#qrbi7OU6%kVD10fYry%!F8BAd_6oZPkt4)oLJpZ|X3 znks+5ms3mU#}f}b%`T<<>D~<{uH+8FUN8(FVwQ2cdf{n*u$k=B{c_DxTSQ1D;;CNu zRW;9EGwj$s({c6?dA|4szh>vDFA4!IYPjxAa0s-=z;$gx8;K_e=44uFbD-0RlWCfr qi2_osnifbi?CDM<42Jjiu8~$>`oJ;r%;au>m%Ox+REdOP;Qs)t{zfYR literal 0 HcmV?d00001 diff --git a/tutorials/tutorial_4_C-p.html b/tutorials/tutorial_4_C-p.html new file mode 100644 index 0000000..49b96b8 --- /dev/null +++ b/tutorials/tutorial_4_C-p.html @@ -0,0 +1,105 @@ + + + + + + + Apache Maven + + + + + + + + + + + +

          +
          +
          + +
          +
          +

          License

          +
          Creative Commons Licence
          This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
          +
          +
          + + + + + + + diff --git a/tutorials/tutorial_4_C.html b/tutorials/tutorial_4_C.html new file mode 100644 index 0000000..832baba --- /dev/null +++ b/tutorials/tutorial_4_C.html @@ -0,0 +1,63 @@ + + + + + + + + Apache Maven + + + + + + + + + + + + + + + + + + + + +

          Προγραμματισμός ΙΙ: Apache Maven

          +

          +

          Προγραμματισμός ΙΙ

          +

          Apache Maven

          + +

          Maven

          +
            +
          • Το Apache Maven είναι ένα εργαλείο αυτοματοποίησης του χτισίματος (build automation tool)
          • +
          • Το χτίσιμο μιας εφαρμογής λογισμικού συνήθως συνίσταται από διάφορες εργασίες όπως η συλλογή εξαρτήσεων, η μεταγλώττιση του πηγαίου κώδικα σε δυαδικό, η εκτέλεση tests, κλπ.
          • +
          • Το Maven αυτοματοποιεί αυτές τις διαδικασίες, ελαχιστοποιώντας το ρίσκο ανθρώπινου λάθους και διαχωρίζοντας τις διεργασίες της μεταγλώττισης και της ομαδοποίησης κώδικα από την διεργασία της συγγραφής του.
          • +
          • Τα παραπάνω συμβαίνουν μέσω ενός XML αρχείου (pom.xml) στο οποίο περιγράφεται το έργο το οποίο υλοποιείται, τις εξαρτήσεις του, την σειρά χτισίματος, κλπ.
          • +
          +

          Γιατί να το χρησιμοποιήσω

          +
            +
          • Εύκολη οργάνωση ενός έργου, η οποία ακολουθεί καλές πρακτικές
          • +
          • Διαχείρηση εξαρτήσεων
          • +
          • Κεντρικό σύστημα αποθετηρίων
          • +
          • Διευκολύνει την συνεργασία μεταξύ των μελών των ομάδων ανάπτυξης
          • +
          • Είναι ενσωματωμένο στα περισσότερα δημοφιλή IDEs
          • +
          +

          Παράδειγμα pom.xml

          +

          +

          Maven Central Repository

          +

          + +
          +Creative Commons Licence
          This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + From 54646fd4f5646e1c8327fe49e15051c895b9cab7 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 30 Oct 2018 14:03:37 +0000 Subject: [PATCH 35/79] Deploy to GitHub Pages: a61862f74f71a36313042995650486d5e7e228d4 --- tutorials/tutorial_4_B-p.html | 2 +- tutorials/tutorial_4_B.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/tutorial_4_B-p.html b/tutorials/tutorial_4_B-p.html index b984219..bb6063c 100644 --- a/tutorials/tutorial_4_B-p.html +++ b/tutorials/tutorial_4_B-p.html @@ -169,7 +169,7 @@ ## Αφηρημένες κλάσεις * Όταν μια συλλογή από κλάσεις έχουν κάποια κοινά πεδία ή/και κάποια κοινή -συμπεριφορά τότε αυτά τα κοινά στοιχεία μπορούν να εγκολαπτούν σε μια υπερκλάση. +συμπεριφορά τότε αυτά τα κοινά στοιχεία μπορούν να αντιγραφούν σε μια υπερκλάση. Αν αυτή η υπερκλάση είναι υπερβολικά γενική ή τα αντικείμενά της από το προγραμμά δεν είναι χρήσιμα, τότε είναι καλή πράκτική να την κάνουμε αφηρημένη. * Μια αφηρημένη κλάση έχει τη δεσμευμένη λέξη **abstract** στον ορισμό της. diff --git a/tutorials/tutorial_4_B.html b/tutorials/tutorial_4_B.html index d0ab3f1..003ff8f 100644 --- a/tutorials/tutorial_4_B.html +++ b/tutorials/tutorial_4_B.html @@ -129,7 +129,7 @@

          Παράδειγμα(2)

          }

      Αφηρημένες κλάσεις

        -
      • Όταν μια συλλογή από κλάσεις έχουν κάποια κοινά πεδία ή/και κάποια κοινή
        συμπεριφορά τότε αυτά τα κοινά στοιχεία μπορούν να εγκολαπτούν σε μια υπερκλάση.
        Αν αυτή η υπερκλάση είναι υπερβολικά γενική ή τα αντικείμενά της από το
        προγραμμά δεν είναι χρήσιμα, τότε είναι καλή πράκτική να την κάνουμε αφηρημένη.
      • +
      • Όταν μια συλλογή από κλάσεις έχουν κάποια κοινά πεδία ή/και κάποια κοινή
        συμπεριφορά τότε αυτά τα κοινά στοιχεία μπορούν να αντιγραφούν σε μια υπερκλάση.
        Αν αυτή η υπερκλάση είναι υπερβολικά γενική ή τα αντικείμενά της από το
        προγραμμά δεν είναι χρήσιμα, τότε είναι καλή πράκτική να την κάνουμε αφηρημένη.
      • Μια αφηρημένη κλάση έχει τη δεσμευμένη λέξη abstract στον ορισμό της.
      • Παρ' όλο που δεν μπορεί να αρχικοποιηθεί, διαθέτει κατασκευαστή.
      • Στις αφηρημένες κλάσεις μπορούν να ορισθούν αφηρημένες μέθοδοι.
      • From 97e2434213144f2b8d3ed7ddc4daa2a76adf7d87 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 30 Oct 2018 14:06:07 +0000 Subject: [PATCH 36/79] Deploy to GitHub Pages: d95e6c9e72d7378a8ae6a6fc9ea07719dab794f3 --- tutorials/tutorial_4_B-p.html | 2 +- tutorials/tutorial_4_B.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/tutorial_4_B-p.html b/tutorials/tutorial_4_B-p.html index bb6063c..5e4eb25 100644 --- a/tutorials/tutorial_4_B-p.html +++ b/tutorials/tutorial_4_B-p.html @@ -169,7 +169,7 @@ ## Αφηρημένες κλάσεις * Όταν μια συλλογή από κλάσεις έχουν κάποια κοινά πεδία ή/και κάποια κοινή -συμπεριφορά τότε αυτά τα κοινά στοιχεία μπορούν να αντιγραφούν σε μια υπερκλάση. +συμπεριφορά τότε αυτά τα κοινά στοιχεία μπορούν να περιληφθούν σε μια υπερκλάση. Αν αυτή η υπερκλάση είναι υπερβολικά γενική ή τα αντικείμενά της από το προγραμμά δεν είναι χρήσιμα, τότε είναι καλή πράκτική να την κάνουμε αφηρημένη. * Μια αφηρημένη κλάση έχει τη δεσμευμένη λέξη **abstract** στον ορισμό της. diff --git a/tutorials/tutorial_4_B.html b/tutorials/tutorial_4_B.html index 003ff8f..6bc95b4 100644 --- a/tutorials/tutorial_4_B.html +++ b/tutorials/tutorial_4_B.html @@ -129,7 +129,7 @@

        Παράδειγμα(2)

        }

        Αφηρημένες κλάσεις

          -
        • Όταν μια συλλογή από κλάσεις έχουν κάποια κοινά πεδία ή/και κάποια κοινή
          συμπεριφορά τότε αυτά τα κοινά στοιχεία μπορούν να αντιγραφούν σε μια υπερκλάση.
          Αν αυτή η υπερκλάση είναι υπερβολικά γενική ή τα αντικείμενά της από το
          προγραμμά δεν είναι χρήσιμα, τότε είναι καλή πράκτική να την κάνουμε αφηρημένη.
        • +
        • Όταν μια συλλογή από κλάσεις έχουν κάποια κοινά πεδία ή/και κάποια κοινή
          συμπεριφορά τότε αυτά τα κοινά στοιχεία μπορούν να περιληφθούν σε μια υπερκλάση.
          Αν αυτή η υπερκλάση είναι υπερβολικά γενική ή τα αντικείμενά της από το
          προγραμμά δεν είναι χρήσιμα, τότε είναι καλή πράκτική να την κάνουμε αφηρημένη.
        • Μια αφηρημένη κλάση έχει τη δεσμευμένη λέξη abstract στον ορισμό της.
        • Παρ' όλο που δεν μπορεί να αρχικοποιηθεί, διαθέτει κατασκευαστή.
        • Στις αφηρημένες κλάσεις μπορούν να ορισθούν αφηρημένες μέθοδοι.
        • From cb56b700f1ff46ad18f57f71fdc9fdfc05273834 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Mon, 5 Nov 2018 22:48:09 +0000 Subject: [PATCH 37/79] Deploy to GitHub Pages: 3aa1230a9487eca92f1cd9474eb498fe5be5dd5c --- tutorials/tutorial_5_A-p.html | 22 +++++++++++----------- tutorials/tutorial_5_A.html | 22 +++++++++++----------- tutorials/tutorial_5_B-p.html | 26 +++++++++++++------------- tutorials/tutorial_5_B.html | 26 +++++++++++++------------- 4 files changed, 48 insertions(+), 48 deletions(-) diff --git a/tutorials/tutorial_5_A-p.html b/tutorials/tutorial_5_A-p.html index 0209ac5..24de531 100644 --- a/tutorials/tutorial_5_A-p.html +++ b/tutorials/tutorial_5_A-p.html @@ -46,7 +46,7 @@ java. * *Ο στατικός*, γνωστός και ως *υπερφόρτωση (overloading)*. * *Ο δυναμικός*. - * *Ο παραμετρικός* γνωστός και μέσω της χρήσης *γενικευμένων τύπων (generic + * *Ο παραμετρικός*, γνωστός και μέσω της χρήσης *γενικευμένων τύπων (generic types)*. @@ -54,7 +54,7 @@ * Η υπερφόρτωση είναι η δυνατότητα χρήσης μιας μεθόδου με το όνομά της αλλά με διαφορετικούς τύπους ορισμάτων. -* Θα προκύψει σφάλμα αν δυο υλοποιήσεις έχουν τον ίδιο αριθμό ορισμάτων +* Θα προκύψει σφάλμα αν δύο υλοποιήσεις έχουν τον ίδιο αριθμό ορισμάτων με τον ίδιο τύπο ανεξάρτητα: * από τον τύπο που επιστρέφει * το όνομα των ορισμάτων @@ -79,9 +79,9 @@ ## Δυναμικός πολυμορφισμός -* Κάθε αντικείμενο μιας κλάσης που την υλοποιεί έχει τον τύπο της, οπως επίσης +* Κάθε αντικείμενο μιας κλάσης που την υλοποιεί έχει τον τύπο της, όπως επίσης και τον τύπο κάθε υπερκλάσης της και κάθε διεπαφής που υλοποιεί. -* Αυτό είναι χρήσιμο ώστε να μπορούμε να φτιάξουμε ποιο αφηρημένα ορίσματα για μεθόδους +* Αυτό είναι χρήσιμο ώστε να μπορούμε να φτιάξουμε πιο αφηρημένα ορίσματα για μεθόδους ή γενικότερες συλλογές/δομές απο στοιχεία. * Μπορούμε επίσης να ορίσουμε ένα αντικείμενο τύπου υποκλάσης και αναφορά σε υπερκλάση ή διεπαφή. Το αντικείμενο θα έχει τη συμπεριφορά της υπερκλάσης/διεπαφής @@ -135,19 +135,19 @@ ```java class Parent { - public void whoAmI() { - System.out.println("I am parent"); + public String whoAmI() { + return "I am parent"; } } class Child extends Parent{ @Override - public void whoAmI() { - System.out.println("I am child "); + public String whoAmI() { + return "I am child "; } - public void also() { - System.out.println("and only a child"); + public String also() { + return "and only a child"; } } ``` @@ -175,7 +175,7 @@ * Ένας γενικευμένος τύπος (generic type) είναι μια γενικευμένη κλάση ή διεπαφή η οποία μπορεί να παραμετροποιηθεί μέσω τύπων. -* Ένας γενικευμένος τύπος επιτρέπει την επαναχρησιμοποιήσει κώδικα με +* Ένας γενικευμένος τύπος επιτρέπει την επαναχρησιμοποιήση κώδικα με διαφορετικά αντικείμενα ως παράμετρο. * Δεν χρειάζεται *type casting*. diff --git a/tutorials/tutorial_5_A.html b/tutorials/tutorial_5_A.html index 8182bd4..643cbb9 100644 --- a/tutorials/tutorial_5_A.html +++ b/tutorials/tutorial_5_A.html @@ -43,13 +43,13 @@

          Πολυμορφισμός

          • Ο στατικός, γνωστός και ως υπερφόρτωση (overloading).
          • Ο δυναμικός.
          • -
          • Ο παραμετρικός γνωστός και μέσω της χρήσης γενικευμένων τύπων (generic
            types)
            .
          • +
          • Ο παραμετρικός, γνωστός και μέσω της χρήσης γενικευμένων τύπων (generic
            types)
            .

        Στατικός πολυμορφισμός και Υπερφόρτωση

        • Η υπερφόρτωση είναι η δυνατότητα χρήσης μιας μεθόδου με το όνομά της αλλά με
          διαφορετικούς τύπους ορισμάτων.
        • -
        • Θα προκύψει σφάλμα αν δυο υλοποιήσεις έχουν τον ίδιο αριθμό ορισμάτων
          με τον ίδιο τύπο ανεξάρτητα:

          +
        • Θα προκύψει σφάλμα αν δύο υλοποιήσεις έχουν τον ίδιο αριθμό ορισμάτων
          με τον ίδιο τύπο ανεξάρτητα:

          • από τον τύπο που επιστρέφει
          • το όνομα των ορισμάτων
          • @@ -68,8 +68,8 @@

            Παράδειγμα

            }

            Δυναμικός πολυμορφισμός

              -
            • Κάθε αντικείμενο μιας κλάσης που την υλοποιεί έχει τον τύπο της, οπως επίσης
              και τον τύπο κάθε υπερκλάσης της και κάθε διεπαφής που υλοποιεί.
            • -
            • Αυτό είναι χρήσιμο ώστε να μπορούμε να φτιάξουμε ποιο αφηρημένα ορίσματα για μεθόδους
              ή γενικότερες συλλογές/δομές απο στοιχεία.
            • +
            • Κάθε αντικείμενο μιας κλάσης που την υλοποιεί έχει τον τύπο της, όπως επίσης
              και τον τύπο κάθε υπερκλάσης της και κάθε διεπαφής που υλοποιεί.
            • +
            • Αυτό είναι χρήσιμο ώστε να μπορούμε να φτιάξουμε πιο αφηρημένα ορίσματα για μεθόδους
              ή γενικότερες συλλογές/δομές απο στοιχεία.
            • Μπορούμε επίσης να ορίσουμε ένα αντικείμενο τύπου υποκλάσης και αναφορά σε
              υπερκλάση ή διεπαφή. Το αντικείμενο θα έχει τη συμπεριφορά της υπερκλάσης/διεπαφής
              αφου έχουν γίνει τα overrides που ορίζει η υποκλάση.

              Parent child = new Child();
            @@ -105,19 +105,19 @@

            Παράδειγμα(συνέχεια)

            }

            Παράδειγμα2

            class Parent {
            -    public void whoAmI() {
            -        System.out.println("I am parent");
            +    public String whoAmI() {
            +        return "I am parent";
                 }
             }
             
             class Child extends Parent{
                 @Override
            -    public void whoAmI() {
            -        System.out.println("I am child ");
            +    public String whoAmI() {
            +        return "I am child ";
                 }
             
            -    public void also() {
            -        System.out.println("and only a child");
            +    public String also() {
            +        return "and only a child";
                 }
             }

            Παράδειγμα2(συνέχεια)

            @@ -136,7 +136,7 @@

            Παράδειγμα2(συνέχεια)

            Παραμετρικός Πολυμορφισμός και Γενικευμένοι Τύποι

            • Ένας γενικευμένος τύπος (generic type) είναι μια γενικευμένη κλάση ή διεπαφή
              η οποία μπορεί να παραμετροποιηθεί μέσω τύπων.
            • -
            • Ένας γενικευμένος τύπος επιτρέπει την επαναχρησιμοποιήσει κώδικα με
              διαφορετικά αντικείμενα ως παράμετρο.
            • +
            • Ένας γενικευμένος τύπος επιτρέπει την επαναχρησιμοποιήση κώδικα με
              διαφορετικά αντικείμενα ως παράμετρο.
            • Δεν χρειάζεται type casting.

            Ορισμός γενικευμένων τύπων

            diff --git a/tutorials/tutorial_5_B-p.html b/tutorials/tutorial_5_B-p.html index 6d8c48f..cf2d91f 100644 --- a/tutorials/tutorial_5_B-p.html +++ b/tutorials/tutorial_5_B-p.html @@ -41,10 +41,10 @@ ## Εξαιρέσεις -* Μία εξάιρεση είναι ένα γεγονός που παρακάμπτει την κανονική εκτέλεση ενός προγράμματος. +* Μία εξαίρεση είναι ένα γεγονός που παρακάμπτει την κανονική εκτέλεση ενός προγράμματος. * Δίνει την δυνατότητα να χειριστούμε γεγονότα όταν γίνει κάτι το ασυνήθιστο. -* Αποφεύγουμε την δημιουργεία περίπλοκου κώδικα στον χειρισμό πιθανού σφάλματος. -* Δίνει δυναντότητα μετάδοσεις σφάλματος στο ίχνος στοίβας (stack trace). +* Αποφεύγουμε την δημιουργία περίπλοκου κώδικα στον χειρισμό πιθανού σφάλματος. +* Δίνει δυναντότητα μετάδοσης σφάλματος στο ίχνος στοίβας (stack trace). ## Παράδειγμα ψευδοκώδικα @@ -122,9 +122,9 @@ ``` -## Χηρισμός εξαιρέσεων +## Χειρισμός εξαιρέσεων -* Μπορέι να γίνει χρησιμοποιώντας το **try-catch**. +* Μπορεί να γίνει χρησιμοποιώντας το **try-catch**. ```java try { @@ -135,7 +135,7 @@ ## throws -* Μπορούμε να ορίσουμε την πιθανότητα να προκήψη μία εξαίρεση στην υπογραφή μίας μεθόδου. +* Μπορούμε να ορίσουμε την πιθανότητα να προκύψει μία εξαίρεση στην υπογραφή μίας μεθόδου. ```java public void writeList() throws IOException, IndexOutOfBoundsException {...} @@ -145,7 +145,7 @@ ## throw new * Μπορούμε να ορίσουμε την πιθανότητα δημιουργίας μίας εξαίρεσης μέσο της **throw new** λέξης. -* Επίσης, θα πρέπει αν ορίσουμε στην υπογραφή της μεθόδου την λέξη **throws** με το όνομα της εξαίρεσης. +* Επίσης, θα πρέπει να ορίσουμε στην υπογραφή της μεθόδου την λέξη **throws** με το όνομα της εξαίρεσης. ```java @@ -162,7 +162,7 @@ ![](media/exceptions.png) -## Παραδείγμα Checked Exception +## Παράδειγμα Checked Exception ```java import java.io.File; @@ -229,7 +229,7 @@ * Τα ίχνη στοίβας περιέχουν αποτελέσματα σφαλμάτων μίας εφαρμογής όπου προσφέρουν στοιχεία για τα αίτια του σφάλματος. * Η χρήση της μεθόδου **printStackTrace()** δίνει το δέντρο της -στοίβας αν κάποια μέθοδος έχει αποτύχη. +στοίβας αν κάποια μέθοδος έχει αποτύχει. ## Παράδειγμα για Ίχνη Στοίβας @@ -243,14 +243,14 @@ ``` -## Δημιουργεία εξαιρέσεων +## Δημιουργία εξαιρέσεων * Μπορούμε να δημιουργήσουμε τις δικές μας εξαιρέσεις επεκτείνοντας τις κλάσεις π.χ. **Exception**, **RuntimeException** ## Ισχυρισμοί (1) -* Χρησιμοποιείτε για έβρεση λαθών μέσα στον κώδικα. +* Χρησιμοποιείται για εύρεση λαθών μέσα στον κώδικα. * Χρησιμοποιεί μια έκφραση boolean, αν αυτή επιστρέψει λάθος τότε προσδιορίζει την ένδειξη σφάλματος στο κώδικα με την εκτύπωση κάποιου μηνύματος. * Για χρήση του assertion πρέπει να εκτελέσετε ώς έχει: java -ea|-enableassertion executable @@ -259,9 +259,9 @@ ## Ισχυρισμοί (2) -* Επιτρέπει την κατανοώηση του προγράμματος μας για άλλα άτομα. +* Επιτρέπει την κατανόηση του προγράμματος μας από άλλα άτομα. * Βοηθούν στην εύκολη αποσφαλμάτωση του κώδικα. -* Οι ισχυρισμοί δεν έιναι για τους χρήστες ενός προγράμματος αλλά για του μηχανικούς λογισμικού. +* Οι ισχυρισμοί δεν είναι για τους χρήστες ενός προγράμματος αλλά για του μηχανικούς λογισμικού. * Οταν εντοπιστεί σφάλμα ισχυρισμού συνήθως πρέπει να σταματά η λειτουργία ενός προγράμματος. diff --git a/tutorials/tutorial_5_B.html b/tutorials/tutorial_5_B.html index e4bd9e1..f243b62 100644 --- a/tutorials/tutorial_5_B.html +++ b/tutorials/tutorial_5_B.html @@ -39,10 +39,10 @@

            Εξαιρέσεις και Ισχυρισμοί

          Εξαιρέσεις

            -
          • Μία εξάιρεση είναι ένα γεγονός που παρακάμπτει την κανονική εκτέλεση ενός προγράμματος.
          • +
          • Μία εξαίρεση είναι ένα γεγονός που παρακάμπτει την κανονική εκτέλεση ενός προγράμματος.
          • Δίνει την δυνατότητα να χειριστούμε γεγονότα όταν γίνει κάτι το ασυνήθιστο.
          • -
          • Αποφεύγουμε την δημιουργεία περίπλοκου κώδικα στον χειρισμό πιθανού σφάλματος.
          • -
          • Δίνει δυναντότητα μετάδοσεις σφάλματος στο ίχνος στοίβας (stack trace).
          • +
          • Αποφεύγουμε την δημιουργία περίπλοκου κώδικα στον χειρισμό πιθανού σφάλματος.
          • +
          • Δίνει δυναντότητα μετάδοσης σφάλματος στο ίχνος στοίβας (stack trace).

          Παράδειγμα ψευδοκώδικα

            @@ -105,22 +105,22 @@

            Σωστός χειρισμός ψευδοκώδικα

            } catch (fileCloseFailed) { doSomething; } -

            Χηρισμός εξαιρέσεων

            +

            Χειρισμός εξαιρέσεων

              -
            • Μπορέι να γίνει χρησιμοποιώντας το try-catch.
            • +
            • Μπορεί να γίνει χρησιμοποιώντας το try-catch.
            try {
                 some code here
             } catch and finally blocks …

            throws

              -
            • Μπορούμε να ορίσουμε την πιθανότητα να προκήψη μία εξαίρεση στην υπογραφή μίας μεθόδου.
            • +
            • Μπορούμε να ορίσουμε την πιθανότητα να προκύψει μία εξαίρεση στην υπογραφή μίας μεθόδου.
            public void writeList() throws IOException, IndexOutOfBoundsException {...}

            throw new

            • Μπορούμε να ορίσουμε την πιθανότητα δημιουργίας μίας εξαίρεσης μέσο της throw new λέξης.
            • -
            • Επίσης, θα πρέπει αν ορίσουμε στην υπογραφή της μεθόδου την λέξη throws με το όνομα της εξαίρεσης.
            • +
            • Επίσης, θα πρέπει να ορίσουμε στην υπογραφή της μεθόδου την λέξη throws με το όνομα της εξαίρεσης.
            
             public void checkAmout(int amount) throws NegativeAmoutException {
            @@ -130,7 +130,7 @@ 

            throw new

            }

            Τύποι εξαιρέσεων

            -

            Παραδείγμα Checked Exception

            +

            Παράδειγμα Checked Exception

            import java.io.File;
             import java.io.FileNotFoundException;
             import java.io.FileReader;
            @@ -180,7 +180,7 @@ 

            Χρήση της finally

            Ίχνη Στοίβας

            • Τα ίχνη στοίβας περιέχουν αποτελέσματα σφαλμάτων μίας εφαρμογής
              όπου προσφέρουν στοιχεία για τα αίτια του σφάλματος.
            • -
            • Η χρήση της μεθόδου printStackTrace() δίνει το δέντρο της
              στοίβας αν κάποια μέθοδος έχει αποτύχη.
            • +
            • Η χρήση της μεθόδου printStackTrace() δίνει το δέντρο της
              στοίβας αν κάποια μέθοδος έχει αποτύχει.

            Παράδειγμα για Ίχνη Στοίβας

            Exception in thread "main" java.lang.NullPointerException: Fictitious NullPointerException
            @@ -188,22 +188,22 @@ 

            Παράδειγμα για Ίχνη Στοίβας

            at StackTraceExample.method11(StackTraceExample.java:11) at StackTraceExample.method1(StackTraceExample.java:7) at StackTraceExample.main(StackTraceExample.java:3)
            -

            Δημιουργεία εξαιρέσεων

            +

            Δημιουργία εξαιρέσεων

            • Μπορούμε να δημιουργήσουμε τις δικές μας εξαιρέσεις επεκτείνοντας τις κλάσεις π.χ. Exception, RuntimeException

            Ισχυρισμοί (1)

              -
            • Χρησιμοποιείτε για έβρεση λαθών μέσα στον κώδικα.
            • +
            • Χρησιμοποιείται για εύρεση λαθών μέσα στον κώδικα.
            • Χρησιμοποιεί μια έκφραση boolean, αν αυτή επιστρέψει λάθος τότε προσδιορίζει την ένδειξη σφάλματος στο κώδικα
              με την εκτύπωση κάποιου μηνύματος.
            • Για χρήση του assertion πρέπει να εκτελέσετε ώς έχει: java -ea|-enableassertion executable
            • Επιτρέπει την τεκμηρίωση του κώδικα και τον τρόπο λειτουργίας του.

            Ισχυρισμοί (2)

              -
            • Επιτρέπει την κατανοώηση του προγράμματος μας για άλλα άτομα.
            • +
            • Επιτρέπει την κατανόηση του προγράμματος μας από άλλα άτομα.
            • Βοηθούν στην εύκολη αποσφαλμάτωση του κώδικα.
            • -
            • Οι ισχυρισμοί δεν έιναι για τους χρήστες ενός προγράμματος αλλά για του μηχανικούς λογισμικού.
            • +
            • Οι ισχυρισμοί δεν είναι για τους χρήστες ενός προγράμματος αλλά για του μηχανικούς λογισμικού.
            • Οταν εντοπιστεί σφάλμα ισχυρισμού συνήθως πρέπει να σταματά η λειτουργία ενός προγράμματος.

            Διαφορές Ισχυρισμών με Εξαιρέσεις

            From 02483120600df26a89bc3c189c96e5b744cc2fed Mon Sep 17 00:00:00 2001 From: Travis CI Date: Mon, 5 Nov 2018 22:59:37 +0000 Subject: [PATCH 38/79] Deploy to GitHub Pages: 3634ce45a2c5e98bf9a4ce99648ad648e7c5addd --- tutorials/tutorial_8_A-p.html | 27 ++++++++++++++------------- tutorials/tutorial_8_A.html | 26 +++++++++++++------------- 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/tutorials/tutorial_8_A-p.html b/tutorials/tutorial_8_A-p.html index 3bc68fb..1139f9c 100644 --- a/tutorials/tutorial_8_A-p.html +++ b/tutorials/tutorial_8_A-p.html @@ -41,8 +41,8 @@ # Νήματα (Threads) -* Νήματα είναι κομμάτια κώδικα που "ζουν" μεα σε μιά διεργασία. -* Διεργασία είναι ένα πρόγραμμα που εκτελείτε. +* Νήματα είναι κομμάτια κώδικα που "ζούνε" μέσα σε μιά διεργασία. +* Διεργασία είναι ένα πρόγραμμα που εκτελείτε είτε θα εκτελεστεί. * Όταν δημιουργείτε μια διεργασία δεσμεύετε κάποιος χώρος μνήμης. * Μια δεριγασία αποτελείται από τουλάχιστον ένα νήμα. * Χρησιμοποιούνται για συγχονισμό και παραλληλοποιήση. @@ -60,15 +60,15 @@ # Πρόβλημα Συγχρονισμού (1) -* Ένα ζευγάρι έχει κοινό λογαρισμό -* Ταυτόχρονα προσθέτουν χρήματα από δύο διαφορετικά ATM +* Ένα ζευγάρι έχει ένα κοινό λογαρισμό +* Ταυτόχρονα προσθέτουν χρήματα από διαφορετικά ATMς ![](media/Concurrency_Bank_Accounts_Example.png) # Πρόβλημα Συγχονισμού (2) -* Σενάριο με Κανονική Ροή +* Σενάριο με κανονική ροή ```java get balance (balance = $50) add $100 @@ -99,14 +99,14 @@ ``` -# Τρόποι για εκτέλεση νημάτων (1) +# Εκτέλεση νημάτων (1) * Η Java υποστηρίζει δύο διαφορετικούς τρόπους για εκτέλεση νημάτων * Δήλωση κλάσης που να επεκτήνει την Thread * Υπερσκελίζει (Override) την run της κλάσης Thread -# Τρόποι για εκτελεση νημάτων (2) +# Εκτελεση νημάτων (2) ```java class FindCountOfEvenNumbers extneds Thread { @@ -128,7 +128,7 @@ ``` -# Εκτέλεση Νημάτων +# Εκτέλεση νημάτων ```java FindCountOfEvenNumbers newThread = new FindCountOfEvenNumbers(1200); @@ -140,7 +140,7 @@ ``` -# Τρόποι εκτέλεσης νημάτων +# Εκτέλεση νημάτων * Δήλωση κλάσης που να υλοποιεί την διεπαφή Runnable * Αυτή η κλάση υλοποιεί την μέθοδο run της Runnable. @@ -168,8 +168,9 @@ # Διαφορές μεταξύ Thread και Runnable * Αφού επεκτείνουμε την κλάση Thread δεν μπορούμε στο μέλλον να επεκτείνουμε άλλη κλάση. -* Αν υλοποιήσουμε την Runnable μπορούμε στην συνέχεια να επεκτείλουμε και άλλες κλάσεις. -* Επεκτείνοντας την κλάση Thread δημιουργεί διαφορετικά αντικείμενα, ενώ στην Runnable πολλά νήματα χρησιμοποιούν το ίδιο στιγμιότυπο αντικειμένου. +* Αν υλοποιήσουμε την Runnable μπορούμε στην συνέχεια να επεκτείνουμε και άλλες κλάσεις. +* Επεκτείνοντας την κλάση Thread δημιουργεί διαφορετικά αντικείμενα, +ενώ στην Runnable πολλά νήματα χρησιμοποιούν το ίδιο στιγμιότυπο αντικειμένου. # Παράδειγμα Thread Vs Runnable (1) @@ -240,7 +241,7 @@ # Thread join(1) -* Μέθοδος που επιτρέπει σε ένα νήμα να περιμένει μέχρι να ολοκληρωθεί η εκτέλεση ένας άλλου. +* Μέθοδος που επιτρέπει σε ένα νήμα να περιμένει μέχρι να ολοκληρωθεί η εκτέλεση ένος άλλου. ```java Thread t = new Thread(findNumber); @@ -250,7 +251,7 @@ ``` -# Παράδειγμα με Νήματα +# Παράδειγμα με νήματα ```java public class SimpleThreads { diff --git a/tutorials/tutorial_8_A.html b/tutorials/tutorial_8_A.html index 410d2f2..e81bb05 100644 --- a/tutorials/tutorial_8_A.html +++ b/tutorials/tutorial_8_A.html @@ -39,8 +39,8 @@

            Νήματα

          Νήματα (Threads)

            -
          • Νήματα είναι κομμάτια κώδικα που "ζουν" μεα σε μιά διεργασία.
          • -
          • Διεργασία είναι ένα πρόγραμμα που εκτελείτε.
          • +
          • Νήματα είναι κομμάτια κώδικα που "ζούνε" μέσα σε μιά διεργασία.
          • +
          • Διεργασία είναι ένα πρόγραμμα που εκτελείτε είτε θα εκτελεστεί.
          • Όταν δημιουργείτε μια διεργασία δεσμεύετε κάποιος χώρος μνήμης.
          • Μια δεριγασία αποτελείται από τουλάχιστον ένα νήμα.
          • Χρησιμοποιούνται για συγχονισμό και παραλληλοποιήση.
          • @@ -51,13 +51,13 @@

            Νήματα Παράδειγμα

            Πρόβλημα Συγχρονισμού (1)

              -
            • Ένα ζευγάρι έχει κοινό λογαρισμό
            • -
            • Ταυτόχρονα προσθέτουν χρήματα από δύο διαφορετικά ATM
            • +
            • Ένα ζευγάρι έχει ένα κοινό λογαρισμό
            • +
            • Ταυτόχρονα προσθέτουν χρήματα από διαφορετικά ATMς

            Πρόβλημα Συγχονισμού (2)

              -
            • Σενάριο με Κανονική Ροή

              +
            • Σενάριο με κανονική ροή

              get balance (balance = $50)
               add $100
               write back result (balance = $150)
              @@ -79,13 +79,13 @@ 

              Πρόβλημα Παραλληλισμού (1)

              add $100 add $50 write result(balance=$150) write results(balace=$50)
            -

            Τρόποι για εκτέλεση νημάτων (1)

            +

            Εκτέλεση νημάτων (1)

            • Η Java υποστηρίζει δύο διαφορετικούς τρόπους για εκτέλεση νημάτων
            • Δήλωση κλάσης που να επεκτήνει την Thread
            • Υπερσκελίζει (Override) την run της κλάσης Thread
            -

            Τρόποι για εκτελεση νημάτων (2)

            +

            Εκτελεση νημάτων (2)

            class FindCountOfEvenNumbers extneds Thread { 
                   private int maxNumber;
                   private int count;
            @@ -102,14 +102,14 @@ 

            Τρόποι για εκτελεση νημάτων (2)

            } } }
            -

            Εκτέλεση Νημάτων

            +

            Εκτέλεση νημάτων

            FindCountOfEvenNumbers newThread = new FindCountOfEvenNumbers(1200);
             new Thread(findNumber).start();
             
             FindCountOfEvenNumbers findNumber = new FindCountOfEvenNumbers(1200);
             Thread t = new Thread(findNumber);
             t.start();
            -

            Τρόποι εκτέλεσης νημάτων

            +

            Εκτέλεση νημάτων

            • Δήλωση κλάσης που να υλοποιεί την διεπαφή Runnable
            • Αυτή η κλάση υλοποιεί την μέθοδο run της Runnable.
            • @@ -133,8 +133,8 @@

              Τρόποι εκτέλεσης νημάτων

              Διαφορές μεταξύ Thread και Runnable

              • Αφού επεκτείνουμε την κλάση Thread δεν μπορούμε στο μέλλον να επεκτείνουμε άλλη κλάση.
              • -
              • Αν υλοποιήσουμε την Runnable μπορούμε στην συνέχεια να επεκτείλουμε και άλλες κλάσεις.
              • -
              • Επεκτείνοντας την κλάση Thread δημιουργεί διαφορετικά αντικείμενα, ενώ στην Runnable πολλά νήματα χρησιμοποιούν το ίδιο στιγμιότυπο αντικειμένου.
              • +
              • Αν υλοποιήσουμε την Runnable μπορούμε στην συνέχεια να επεκτείνουμε και άλλες κλάσεις.
              • +
              • Επεκτείνοντας την κλάση Thread δημιουργεί διαφορετικά αντικείμενα,
                ενώ στην Runnable πολλά νήματα χρησιμοποιούν το ίδιο στιγμιότυπο αντικειμένου.

              Παράδειγμα Thread Vs Runnable (1)

              //Implementing Runnable Interface
              @@ -189,13 +189,13 @@ 

              Αποτέλεσμα εκλεσης

              ExtendsThread : Counter : 1

              Thread join(1)

                -
              • Μέθοδος που επιτρέπει σε ένα νήμα να περιμένει μέχρι να ολοκληρωθεί η εκτέλεση ένας άλλου.
              • +
              • Μέθοδος που επιτρέπει σε ένα νήμα να περιμένει μέχρι να ολοκληρωθεί η εκτέλεση ένος άλλου.
                Thread t = new Thread(findNumber);
                 t.start();
                 System.out.println("Now thread " + t.getName() + " is running");
                 t.join();
              -

              Παράδειγμα με Νήματα

              +

              Παράδειγμα με νήματα

              public class SimpleThreads {
                           static void threadMessage(String message) {
                               String threadName = Thread.currentThread().getName();
              
              From 17783964a077071f64c2ff5a73c93787d78fe337 Mon Sep 17 00:00:00 2001
              From: Travis CI 
              Date: Tue, 6 Nov 2018 11:01:57 +0000
              Subject: [PATCH 39/79] Deploy to GitHub Pages:
               a0fc006a3ff551057c1117cfe1ec681cc53dd204
              
              ---
               tutorials/tutorial_4_B-p.html | 4 ----
               tutorials/tutorial_8_A-p.html | 9 ++++-----
               tutorials/tutorial_8_A.html   | 9 ++++-----
               3 files changed, 8 insertions(+), 14 deletions(-)
              
              diff --git a/tutorials/tutorial_4_B-p.html b/tutorials/tutorial_4_B-p.html
              index 5e4eb25..b2152a7 100644
              --- a/tutorials/tutorial_4_B-p.html
              +++ b/tutorials/tutorial_4_B-p.html
              @@ -55,7 +55,6 @@
               * Όλες οι κλάσεις στη java κληρονομούν την κλάση Object ακόμα και όταν αυτό δε
               γίνεται ρητά μέσω της εντολής extends.
               
              -
               ## Παράδειγμα
               
               ```java
              @@ -140,7 +139,6 @@
               ```
               
               
              -
               ## Παράδειγμα(2)
               
               ```java
              @@ -165,7 +163,6 @@
               ```
               
               
              -
               ## Αφηρημένες κλάσεις
               
               * Όταν μια συλλογή από κλάσεις έχουν κάποια κοινά πεδία ή/και κάποια κοινή
              @@ -294,7 +291,6 @@
               ```
               
               
              -
               ## Παράδειγμα(συνέχεια)
               
               ```java
              diff --git a/tutorials/tutorial_8_A-p.html b/tutorials/tutorial_8_A-p.html
              index 1139f9c..85b4a9c 100644
              --- a/tutorials/tutorial_8_A-p.html
              +++ b/tutorials/tutorial_8_A-p.html
              @@ -95,7 +95,7 @@
               ```java
               get balance(balance=$50)	get balance(balance=$50)
               add $100			add $50
              -write result(balance=$150) 	write results(balace=$50)
              +write result(balance=$150) 	write results(balace=$100)
               ```
               
               
              @@ -109,7 +109,7 @@
               # Εκτελεση νημάτων (2)
               
               ```java
              -class FindCountOfEvenNumbers extneds Thread { 
              +class FindCountOfEvenNumbers extends Thread { 
                     private int maxNumber;
                     private int count;
                     FindCountOfEvenNumbers(int maxNumber) {
              @@ -169,8 +169,7 @@
               
               * Αφού επεκτείνουμε την κλάση Thread δεν μπορούμε στο μέλλον να επεκτείνουμε άλλη κλάση.
               * Αν υλοποιήσουμε την Runnable μπορούμε στην συνέχεια να επεκτείνουμε και άλλες κλάσεις.
              -* Επεκτείνοντας την κλάση Thread δημιουργεί διαφορετικά αντικείμενα,
              -ενώ στην Runnable πολλά νήματα χρησιμοποιούν το ίδιο στιγμιότυπο αντικειμένου.
              +
               
               
               # Παράδειγμα Thread Vs Runnable (1)
              @@ -188,7 +187,7 @@
                   //Extending Thread class
                   class ExtendsThread extends Thread {
                       private int counter = 0;
              -	@Override
              +		@Override
                       public void run () {
                           counter++;
                           System.out.println("ExtendsThread : Counter : "+ counter);
              diff --git a/tutorials/tutorial_8_A.html b/tutorials/tutorial_8_A.html
              index e81bb05..eb7ab5f 100644
              --- a/tutorials/tutorial_8_A.html
              +++ b/tutorials/tutorial_8_A.html
              @@ -77,7 +77,7 @@ 

              Πρόβλημα Παραλληλισμού (1)

            • Σενάριο με παραλληλισμό

              get balance(balance=$50)    get balance(balance=$50)
               add $100            add $50
              -write result(balance=$150)  write results(balace=$50)
            • +write result(balance=$150) write results(balace=$100)

            Εκτέλεση νημάτων (1)

              @@ -86,7 +86,7 @@

              Εκτέλεση νημάτων (1)

            • Υπερσκελίζει (Override) την run της κλάσης Thread

            Εκτελεση νημάτων (2)

            -
            class FindCountOfEvenNumbers extneds Thread { 
            +
            class FindCountOfEvenNumbers extends Thread { 
                   private int maxNumber;
                   private int count;
                   FindCountOfEvenNumbers(int maxNumber) {
            @@ -133,8 +133,7 @@ 

            Εκτέλεση νημάτων

            Διαφορές μεταξύ Thread και Runnable

            • Αφού επεκτείνουμε την κλάση Thread δεν μπορούμε στο μέλλον να επεκτείνουμε άλλη κλάση.
            • -
            • Αν υλοποιήσουμε την Runnable μπορούμε στην συνέχεια να επεκτείνουμε και άλλες κλάσεις.
            • -
            • Επεκτείνοντας την κλάση Thread δημιουργεί διαφορετικά αντικείμενα,
              ενώ στην Runnable πολλά νήματα χρησιμοποιούν το ίδιο στιγμιότυπο αντικειμένου.
            • +
            • Αν υλοποιήσουμε την Runnable μπορούμε στην συνέχεια να επεκτείνουμε και άλλες κλάσεις.

            Παράδειγμα Thread Vs Runnable (1)

            //Implementing Runnable Interface
            @@ -149,7 +148,7 @@ 

            Παράδειγμα Thread Vs Runnable (1)

            //Extending Thread class class ExtendsThread extends Thread { private int counter = 0; - @Override + @Override public void run () { counter++; System.out.println("ExtendsThread : Counter : "+ counter); From 69ac7fdef1d0c257d9f14efd1a453eb94869c94b Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 6 Nov 2018 11:38:17 +0000 Subject: [PATCH 40/79] Deploy to GitHub Pages: 425d39336733093a9c0216ab808c2245998e6c8f --- tutorials/media/if_something_can_go_wrong.jpg | Bin 0 -> 17585 bytes tutorials/tutorial_8_A-p.html | 39 ++++++++++++++++++ tutorials/tutorial_8_A.html | 27 ++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 tutorials/media/if_something_can_go_wrong.jpg diff --git a/tutorials/media/if_something_can_go_wrong.jpg b/tutorials/media/if_something_can_go_wrong.jpg new file mode 100644 index 0000000000000000000000000000000000000000..41aa42f2ca28827cf1bce4f8c879842cf4304cf1 GIT binary patch literal 17585 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 RNc#Aswlzr2sW-hJ|JfM#ta$(c literal 0 HcmV?d00001 diff --git a/tutorials/tutorial_8_A-p.html b/tutorials/tutorial_8_A-p.html index 85b4a9c..b5e6c59 100644 --- a/tutorials/tutorial_8_A-p.html +++ b/tutorials/tutorial_8_A-p.html @@ -89,6 +89,45 @@ ``` +# Παράδειγμα σε κώδικα (1) +```java +public class SynchronousProblem { + private static int balance = 50; + + public int getBalance() { + return this.balance; + } + + public void setBalance(int balance) { + this.balance = balance; + } +} +``` + + +# Παράδειγμα σε κώδικα (2) +```java +public class TestSynch { + + public static void main(String[] args) { + SynchronousProblem commonAccount = new SynchronousProblem(); + int wifesBalance = commonAccount.getBalance(); + int husbandsBalance = commonAccount.getBalance(); + commonAccount.setBalance(wifesBalance += 100); + commonAccount.setBalance(husbandsBalance += 50); + System.out.println("The current balance is $" + + commonAccount.getBalance()); + } +} + +``` + + +# Προσοχή! +![](media/if_something_can_go_wrong.jpg) + + + # Πρόβλημα Παραλληλισμού (1) * Σενάριο με παραλληλισμό diff --git a/tutorials/tutorial_8_A.html b/tutorials/tutorial_8_A.html index eb7ab5f..94d5a0b 100644 --- a/tutorials/tutorial_8_A.html +++ b/tutorials/tutorial_8_A.html @@ -72,6 +72,33 @@

            Πρόβλημα Συγχονισμού (2)

            write back result (balance = $150) write back result (balance = $100)
          +

          Παράδειγμα σε κώδικα (1)

          +
          public class SynchronousProblem {
          +    private static int balance = 50;
          +    
          +    public int getBalance() {
          +        return this.balance;
          +    }   
          +
          +    public void setBalance(int balance) {
          +        this.balance = balance;
          +    }
          +}
          +

          Παράδειγμα σε κώδικα (2)

          +
          public class TestSynch {
          +
          +    public static void main(String[] args) {
          +        SynchronousProblem commonAccount = new SynchronousProblem();
          +        int wifesBalance = commonAccount.getBalance();
          +        int husbandsBalance = commonAccount.getBalance(); 
          +        commonAccount.setBalance(wifesBalance += 100);
          +        commonAccount.setBalance(husbandsBalance += 50);
          +        System.out.println("The current balance is $" 
          +        + commonAccount.getBalance());
          +    }
          +}
          +

          Προσοχή!

          +

          Πρόβλημα Παραλληλισμού (1)

          • Σενάριο με παραλληλισμό

            From 6db3047adf2ea249a798c684bb62047ef2bc786f Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 6 Nov 2018 11:52:18 +0000 Subject: [PATCH 41/79] Deploy to GitHub Pages: 17a33cf3e7a62a078373311f9a6e91dc11dc79bf --- tutorials/tutorial_8_A-p.html | 21 +++++++++++++++------ tutorials/tutorial_8_A.html | 21 +++++++++++++++------ 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/tutorials/tutorial_8_A-p.html b/tutorials/tutorial_8_A-p.html index b5e6c59..65055a0 100644 --- a/tutorials/tutorial_8_A-p.html +++ b/tutorials/tutorial_8_A-p.html @@ -170,12 +170,21 @@ # Εκτέλεση νημάτων ```java -FindCountOfEvenNumbers newThread = new FindCountOfEvenNumbers(1200); -new Thread(findNumber).start(); +public class TestThreads { -FindCountOfEvenNumbers findNumber = new FindCountOfEvenNumbers(1200); -Thread t = new Thread(findNumber); -t.start(); + public static void main(String[] args) { + + // Ένας τρόπος + FindCountOfEvenNumbers findNumber = new FindCountOfEvenNumbers(1200); + findNumber.start(); + + // Άλλος τρόπος + Thread t = new Thread(findNumber); + t.start(); + + System.out.println(findNumber.count); + } +} ``` @@ -207,7 +216,7 @@ # Διαφορές μεταξύ Thread και Runnable * Αφού επεκτείνουμε την κλάση Thread δεν μπορούμε στο μέλλον να επεκτείνουμε άλλη κλάση. -* Αν υλοποιήσουμε την Runnable μπορούμε στην συνέχεια να επεκτείνουμε και άλλες κλάσεις. +* Αν υλοποιήσουμε την Runnable μπορούμε στην συνέχεια να επεκτείνουμε κάποια άλλη κλάση. diff --git a/tutorials/tutorial_8_A.html b/tutorials/tutorial_8_A.html index 94d5a0b..a1e28c3 100644 --- a/tutorials/tutorial_8_A.html +++ b/tutorials/tutorial_8_A.html @@ -130,12 +130,21 @@

            Εκτελεση νημάτων (2)

            } }

            Εκτέλεση νημάτων

            -
            FindCountOfEvenNumbers newThread = new FindCountOfEvenNumbers(1200);
            -new Thread(findNumber).start();
            +
            public class TestThreads {
             
            -FindCountOfEvenNumbers findNumber = new FindCountOfEvenNumbers(1200);
            -Thread t = new Thread(findNumber);
            -t.start();
            + public static void main(String[] args) { + + // Ένας τρόπος + FindCountOfEvenNumbers findNumber = new FindCountOfEvenNumbers(1200); + findNumber.start(); + + // Άλλος τρόπος + Thread t = new Thread(findNumber); + t.start(); + + System.out.println(findNumber.count); + } +}

            Εκτέλεση νημάτων

            • Δήλωση κλάσης που να υλοποιεί την διεπαφή Runnable
            • @@ -160,7 +169,7 @@

              Εκτέλεση νημάτων

              Διαφορές μεταξύ Thread και Runnable

              • Αφού επεκτείνουμε την κλάση Thread δεν μπορούμε στο μέλλον να επεκτείνουμε άλλη κλάση.
              • -
              • Αν υλοποιήσουμε την Runnable μπορούμε στην συνέχεια να επεκτείνουμε και άλλες κλάσεις.
              • +
              • Αν υλοποιήσουμε την Runnable μπορούμε στην συνέχεια να επεκτείνουμε κάποια άλλη κλάση.

              Παράδειγμα Thread Vs Runnable (1)

              //Implementing Runnable Interface
              
              From f8737a8b2907f1dde80bed49ffac846ff0facfb2 Mon Sep 17 00:00:00 2001
              From: Travis CI 
              Date: Thu, 8 Nov 2018 09:41:56 +0000
              Subject: [PATCH 42/79] Deploy to GitHub Pages:
               4a952c9fe00a7a2fbfbee87715bfefd3f40f5bff
              
              ---
               tutorials/tutorial_6_A-p.html | 2 +-
               tutorials/tutorial_6_A.html   | 2 +-
               2 files changed, 2 insertions(+), 2 deletions(-)
              
              diff --git a/tutorials/tutorial_6_A-p.html b/tutorials/tutorial_6_A-p.html
              index f93f618..d0b67b4 100644
              --- a/tutorials/tutorial_6_A-p.html
              +++ b/tutorials/tutorial_6_A-p.html
              @@ -75,7 +75,7 @@
               
               ## Εγκατάσταση plug-ins για Eclipse
               
              -* Help - >Install New Software*
              +* Help -> Install New Software
               * Στην καρτέλα Install πατάμε Αdd
               * Στην επόμενη καρτέλα προσθέτουμε το όνομα του plug-in και το URL που βρίσκεται (π.χ. FindBugs, http://findbugs.cs.umd.edu/eclipse)
               * Επιλέγουμε το project που θέλουμε να εγκαταστήσουμε
              diff --git a/tutorials/tutorial_6_A.html b/tutorials/tutorial_6_A.html
              index c606fc9..9a6d1ad 100644
              --- a/tutorials/tutorial_6_A.html
              +++ b/tutorials/tutorial_6_A.html
              @@ -54,7 +54,7 @@ 

              Μεταγλώττιση και εκτέλεση

              Εγκατάσταση plug-ins για Eclipse

                -
              • Help - >Install New Software*
              • +
              • Help -> Install New Software
              • Στην καρτέλα Install πατάμε Αdd
              • Στην επόμενη καρτέλα προσθέτουμε το όνομα του plug-in και το URL που βρίσκεται (π.χ. FindBugs, http://findbugs.cs.umd.edu/eclipse)
              • Επιλέγουμε το project που θέλουμε να εγκαταστήσουμε
              • From 116ef0473d1041170ef111def0d17a28cfd63763 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Mon, 12 Nov 2018 10:59:45 +0000 Subject: [PATCH 43/79] Deploy to GitHub Pages: ccb58a6e225b5032bfdd668a0d8a140c9c5c29fd --- tutorials-p.html | 17 +- tutorials.html | 17 +- tutorials/tutorial_5_B-p.html | 445 ++++++++------- tutorials/tutorial_5_B.html | 409 +++++++------- tutorials/tutorial_6_A-p.html | 290 ++++++++-- tutorials/tutorial_6_A.html | 238 +++++++-- ...utorial_8_B-p.html => tutorial_6_B-p.html} | 0 .../{tutorial_8_B.html => tutorial_6_B.html} | 0 tutorials/tutorial_6_C-p.html | 141 +++++ tutorials/tutorial_6_C.html | 76 +++ tutorials/tutorial_7_A-p.html | 2 +- tutorials/tutorial_7_A.html | 4 +- ...utorial_9_A-p.html => tutorial_7_B-p.html} | 0 .../{tutorial_9_A.html => tutorial_7_B.html} | 0 tutorials/tutorial_8_A-p.html | 390 ++++---------- tutorials/tutorial_8_A.html | 505 ++++++++++-------- tutorials/tutorial_9_B-p.html | 230 -------- tutorials/tutorial_9_B.html | 328 ------------ 18 files changed, 1543 insertions(+), 1549 deletions(-) rename tutorials/{tutorial_8_B-p.html => tutorial_6_B-p.html} (100%) rename tutorials/{tutorial_8_B.html => tutorial_6_B.html} (100%) create mode 100644 tutorials/tutorial_6_C-p.html create mode 100644 tutorials/tutorial_6_C.html rename tutorials/{tutorial_9_A-p.html => tutorial_7_B-p.html} (100%) rename tutorials/{tutorial_9_A.html => tutorial_7_B.html} (100%) delete mode 100644 tutorials/tutorial_9_B-p.html delete mode 100644 tutorials/tutorial_9_B.html diff --git a/tutorials-p.html b/tutorials-p.html index 48859eb..aa48edd 100644 --- a/tutorials-p.html +++ b/tutorials-p.html @@ -54,25 +54,22 @@

                Φροντιστήριο 4

                Φροντιστήριο 5

                Φροντιστήριο 6

                Φροντιστήριο 7

                Φροντιστήριο 8

                -

                Φροντιστήριο 9

                -
                diff --git a/tutorials.html b/tutorials.html index fb8a0fc..a49c4ae 100644 --- a/tutorials.html +++ b/tutorials.html @@ -54,25 +54,22 @@

                Φροντιστήριο 4

                Φροντιστήριο 5

                Φροντιστήριο 6

                Φροντιστήριο 7

                Φροντιστήριο 8

                -

                Φροντιστήριο 9

                -
                diff --git a/tutorials/tutorial_5_B-p.html b/tutorials/tutorial_5_B-p.html index cf2d91f..65055a0 100644 --- a/tutorials/tutorial_5_B-p.html +++ b/tutorials/tutorial_5_B-p.html @@ -4,7 +4,7 @@ - Εξαιρέσεις και Ισχυρισμοί + Νήματα @@ -28,300 +28,331 @@ diff --git a/tutorials/tutorial_5_B.html b/tutorials/tutorial_5_B.html index f243b62..a1e28c3 100644 --- a/tutorials/tutorial_5_B.html +++ b/tutorials/tutorial_5_B.html @@ -5,7 +5,7 @@ - Εξαιρέσεις και Ισχυρισμοί + Νήματα @@ -29,222 +29,259 @@ -

                Προγραμματισμός ΙΙ: Εξαιρέσεις και Ισχυρισμοί

                +

                Προγραμματισμός ΙΙ: Νήματα

                Προγραμματισμός ΙΙ

                -

                Εξαιρέσεις και Ισχυρισμοί

                +

                Νήματα

                -

                Εξαιρέσεις

                +

                Νήματα (Threads)

                  -
                • Μία εξαίρεση είναι ένα γεγονός που παρακάμπτει την κανονική εκτέλεση ενός προγράμματος.
                • -
                • Δίνει την δυνατότητα να χειριστούμε γεγονότα όταν γίνει κάτι το ασυνήθιστο.
                • -
                • Αποφεύγουμε την δημιουργία περίπλοκου κώδικα στον χειρισμό πιθανού σφάλματος.
                • -
                • Δίνει δυναντότητα μετάδοσης σφάλματος στο ίχνος στοίβας (stack trace).
                • +
                • Νήματα είναι κομμάτια κώδικα που "ζούνε" μέσα σε μιά διεργασία.
                • +
                • Διεργασία είναι ένα πρόγραμμα που εκτελείτε είτε θα εκτελεστεί.
                • +
                • Όταν δημιουργείτε μια διεργασία δεσμεύετε κάποιος χώρος μνήμης.
                • +
                • Μια δεριγασία αποτελείται από τουλάχιστον ένα νήμα.
                • +
                • Χρησιμοποιούνται για συγχονισμό και παραλληλοποιήση.
                -

                Παράδειγμα ψευδοκώδικα

                +

                Διεργασίες Παράδειγμα

                +

                +

                Νήματα Παράδειγμα

                +

                +

                Πρόβλημα Συγχρονισμού (1)

                  -
                • Λάθη?
                • +
                • Ένα ζευγάρι έχει ένα κοινό λογαρισμό
                • +
                • Ταυτόχρονα προσθέτουν χρήματα από διαφορετικά ATMς
                -
                readFile {
                -    open the file;
                -    determine its size;
                -    allocate that much memory;
                -    read the file into memory;
                -    close the file;
                -}
                -

                Χειρισμός ψευδοκώδικα

                -
                errorCodeType readFile {
                -    initialize errorCode = 0;
                -    
                -    open the file;
                -    if (theFileIsOpen) {
                -        determine the length of the file;
                -        if (gotTheFileLength) {
                -            allocate that much memory;
                -            if (gotEnoughMemory) {
                -                read the file into memory;
                -                if (readFailed) {
                -                    errorCode = -1;
                -                }
                -            } else {
                -                errorCode = -2;
                -            }
                -        } else {
                -            errorCode = -3;
                -        }
                -        close the file;
                -        if (theFileDidntClose && errorCode == 0) {
                -            errorCode = -4;
                -        } else {
                -            errorCode = errorCode and -4;
                -        }
                -    } else {
                -        errorCode = -5;
                -    }
                -    return errorCode;
                -}
                -

                Σωστός χειρισμός ψευδοκώδικα

                -
                readFile {
                -    try {
                -        open the file;
                -        determine its size;
                -        allocate that much memory;
                -        read the file into memory;
                -        close the file;
                -    } catch (fileOpenFailed) {
                -       doSomething;
                -    } catch (sizeDeterminationFailed) {
                -        doSomething;
                -    } catch (memoryAllocationFailed) {
                -        doSomething;
                -    } catch (readFailed) {
                -        doSomething;
                -    } catch (fileCloseFailed) {
                -        doSomething;
                -    }
                -

                Χειρισμός εξαιρέσεων

                -
                  -
                • Μπορεί να γίνει χρησιμοποιώντας το try-catch.
                • -
                -
                try {
                -    some code here
                -} catch and finally blocks …
                -

                throws

                +

                +

                Πρόβλημα Συγχονισμού (2)

                  -
                • Μπορούμε να ορίσουμε την πιθανότητα να προκύψει μία εξαίρεση στην υπογραφή μίας μεθόδου.
                • +
                • Σενάριο με κανονική ροή

                  +
                  get balance (balance = $50)
                  +add $100
                  +write back result (balance = $150)
                  +get balance (balance = $150)
                  +add $50 
                  +write back result (balance = $200)  
                • +
                • Σενάριο με πρόβλημα συγχρονισμού

                  +
                  get balance (balance = $50)
                  +get balance (balance = $50)
                  +add $100
                  +add $50
                  +write back result (balance = $150)
                  +write back result (balance = $100)
                -
                public void writeList() throws IOException, IndexOutOfBoundsException {...}
                -

                throw new

                -
                  -
                • Μπορούμε να ορίσουμε την πιθανότητα δημιουργίας μίας εξαίρεσης μέσο της throw new λέξης.
                • -
                • Επίσης, θα πρέπει να ορίσουμε στην υπογραφή της μεθόδου την λέξη throws με το όνομα της εξαίρεσης.
                • -
                -
                
                -public void checkAmout(int amount) throws NegativeAmoutException {
                -    if (amount < 0) {
                -        throw new NegativeAmountException();
                -    }
                -}
                -

                Τύποι εξαιρέσεων

                -

                -

                Παράδειγμα Checked Exception

                -
                import java.io.File;
                -import java.io.FileNotFoundException;
                -import java.io.FileReader;
                -
                -public  class testClass {
                +

                Παράδειγμα σε κώδικα (1)

                +
                public class SynchronousProblem {
                +    private static int balance = 50;
                +    
                +    public int getBalance() {
                +        return this.balance;
                +    }   
                 
                -    public static void main(String args[])  {       
                -          File file = new File("E://file.txt");
                -          try {
                -            FileReader fr = new FileReader(file);
                -        } catch (FileNotFoundException e) {
                -            // TODO Auto-generated catch block
                -            e.printStackTrace();
                -        } 
                -       }
                +    public void setBalance(int balance) {
                +        this.balance = balance;
                +    }
                 }
                -

                Παράδειγμα Unchecked Exception

                -
                    import java.io.*;
                -    
                -    public class ExcepTest {
                -        public static void main(String[] args) {
                -            int a[] = new int[2];
                -            try {
                -                System.out.println("Access elements three:" + a[3]);
                -            } catch(ArrayIndexOutOfBoundsException e) {
                -                System.out.println("Exception thrown :" +e);
                -            }
                -            System.out.println("Out of the block");
                -        }
                -    }
                -

                Χρήση της finally

                -
                public class ExcepTest {
                +

                Παράδειγμα σε κώδικα (2)

                +
                public class TestSynch {
                 
                -   public static void main(String args[]) {
                -      int a[] = new int[2];
                -      try {
                -         System.out.println("Access element three :" + a[3]);
                -      } catch(ArrayIndexOutOfBoundsException e) {
                -         System.out.println("Exception thrown  :" + e);
                -      } finally {
                -         a[0] = 6;
                -         System.out.println("First element value: " + a[0]);
                -         System.out.println("The finally statement is executed");
                -      }
                -   }
                +    public static void main(String[] args) {
                +        SynchronousProblem commonAccount = new SynchronousProblem();
                +        int wifesBalance = commonAccount.getBalance();
                +        int husbandsBalance = commonAccount.getBalance(); 
                +        commonAccount.setBalance(wifesBalance += 100);
                +        commonAccount.setBalance(husbandsBalance += 50);
                +        System.out.println("The current balance is $" 
                +        + commonAccount.getBalance());
                +    }
                 }
                -

                Ίχνη Στοίβας

                +

                Προσοχή!

                +

                +

                Πρόβλημα Παραλληλισμού (1)

                  -
                • Τα ίχνη στοίβας περιέχουν αποτελέσματα σφαλμάτων μίας εφαρμογής
                  όπου προσφέρουν στοιχεία για τα αίτια του σφάλματος.
                • -
                • Η χρήση της μεθόδου printStackTrace() δίνει το δέντρο της
                  στοίβας αν κάποια μέθοδος έχει αποτύχει.
                • +
                • Σενάριο με παραλληλισμό

                  +
                  get balance(balance=$50)    get balance(balance=$50)
                  +add $100            add $50
                  +write result(balance=$150)  write results(balace=$100)
                -

                Παράδειγμα για Ίχνη Στοίβας

                -
                Exception in thread "main" java.lang.NullPointerException: Fictitious NullPointerException
                -at StackTraceExample.method111(StackTraceExample.java:15)
                -at StackTraceExample.method11(StackTraceExample.java:11)
                -at StackTraceExample.method1(StackTraceExample.java:7)
                -at StackTraceExample.main(StackTraceExample.java:3)
                -

                Δημιουργία εξαιρέσεων

                +

                Εκτέλεση νημάτων (1)

                  -
                • Μπορούμε να δημιουργήσουμε τις δικές μας εξαιρέσεις επεκτείνοντας τις κλάσεις π.χ. Exception, RuntimeException
                • +
                • Η Java υποστηρίζει δύο διαφορετικούς τρόπους για εκτέλεση νημάτων
                • +
                • Δήλωση κλάσης που να επεκτήνει την Thread
                • +
                • Υπερσκελίζει (Override) την run της κλάσης Thread
                -

                Ισχυρισμοί (1)

                +

                Εκτελεση νημάτων (2)

                +
                class FindCountOfEvenNumbers extends Thread { 
                +      private int maxNumber;
                +      private int count;
                +      FindCountOfEvenNumbers(int maxNumber) {
                +          this.maxNumber = maxNumber;
                +          this.count = 0;        
                +      }
                +      @Override 
                +      public void run() {
                +          for (int i=0; i<this.maxNumber; ++i)
                +          {
                +              if (i % 2 == 0)
                +                  ++count;        
                +          }    
                +      }
                +  }
                +

                Εκτέλεση νημάτων

                +
                public class TestThreads {
                +
                +    public static void main(String[] args) {
                +
                +        // Ένας τρόπος
                +        FindCountOfEvenNumbers findNumber = new FindCountOfEvenNumbers(1200);
                +        findNumber.start();
                +        
                +        // Άλλος τρόπος
                +        Thread t = new Thread(findNumber);
                +        t.start();
                +        
                +        System.out.println(findNumber.count);
                +    }
                +}
                +

                Εκτέλεση νημάτων

                  -
                • Χρησιμοποιείται για εύρεση λαθών μέσα στον κώδικα.
                • -
                • Χρησιμοποιεί μια έκφραση boolean, αν αυτή επιστρέψει λάθος τότε προσδιορίζει την ένδειξη σφάλματος στο κώδικα
                  με την εκτύπωση κάποιου μηνύματος.
                • -
                • Για χρήση του assertion πρέπει να εκτελέσετε ώς έχει: java -ea|-enableassertion executable
                • -
                • Επιτρέπει την τεκμηρίωση του κώδικα και τον τρόπο λειτουργίας του.
                • +
                • Δήλωση κλάσης που να υλοποιεί την διεπαφή Runnable
                • +
                • Αυτή η κλάση υλοποιεί την μέθοδο run της Runnable.
                -

                Ισχυρισμοί (2)

                +
                class FindCountOfEvenNumbers implements Runnable {
                +      private int maxNumber;
                +      private int count;
                +      FindCountOfEvenNumbers(int maxNumber) {
                +          this.maxNumber = maxNumber;
                +          this.count = 0;        
                +      }
                +
                +      public void run() {
                +          for (int i=0; i<this.maxNumber; ++i)
                +          {
                +              if (i % 2 == 0)
                +                  ++count;        
                +          }    
                +      }
                +  }
                +

                Διαφορές μεταξύ Thread και Runnable

                  -
                • Επιτρέπει την κατανόηση του προγράμματος μας από άλλα άτομα.
                • -
                • Βοηθούν στην εύκολη αποσφαλμάτωση του κώδικα.
                • -
                • Οι ισχυρισμοί δεν είναι για τους χρήστες ενός προγράμματος αλλά για του μηχανικούς λογισμικού.
                • -
                • Οταν εντοπιστεί σφάλμα ισχυρισμού συνήθως πρέπει να σταματά η λειτουργία ενός προγράμματος.
                • +
                • Αφού επεκτείνουμε την κλάση Thread δεν μπορούμε στο μέλλον να επεκτείνουμε άλλη κλάση.
                • +
                • Αν υλοποιήσουμε την Runnable μπορούμε στην συνέχεια να επεκτείνουμε κάποια άλλη κλάση.
                -

                Διαφορές Ισχυρισμών με Εξαιρέσεις

                +

                Παράδειγμα Thread Vs Runnable (1)

                +
                //Implementing Runnable Interface
                +    class ImplementsRunnable implements Runnable {
                +        private int counter = 0;
                +        public void run() {
                +            counter++;
                +            System.out.println("ImplementsRunnable : Counter : "+ counter);
                +        }
                +    }
                +
                +    //Extending Thread class
                +    class ExtendsThread extends Thread {
                +        private int counter = 0;
                +        @Override
                +        public void run () {
                +            counter++;
                +            System.out.println("ExtendsThread : Counter : "+ counter);
                +        }
                +    }
                +

                Παράδειγμα Thread Vs Runnable (2)

                +
                public class ThreadVsRunnable {
                +        public static void main(String args[]) throws Exception {
                +                // Multiple threads share the same object.
                +                ImplementsRunnable rc = new ImplementsRunnable();
                +                Thread t1 = new Thread(rc);
                +                t1.start();
                +                Thread.sleep(1000); 
                +                Thread t2 = new Thread(rc);
                +                t2.start();
                +                Thread.sleep(1000); 
                +                Thread t3 = new Thread(rc);
                +                t3.start();
                +
                +                ExtendsThread tc1 = new ExtendsThread();
                +                tc1.start();
                +                Thread.sleep(1000);
                +                ExtendsThread tc2 = new ExtendsThread();
                +                tc2.start();
                +                Thread.sleep(1000); 
                +                ExtendsThread tc3 = new ExtendsThread();
                +                tc3.start();
                +         }
                +    }
                +

                Αποτέλεσμα εκλεσης

                +
                    ImplementsRunnable : Counter : 1
                +    ImplementsRunnable : Counter : 2
                +    ImplementsRunnable : Counter : 3
                +
                +    ExtendsThread : Counter : 1
                +    ExtendsThread : Counter : 1
                +    ExtendsThread : Counter : 1
                +

                Thread join(1)

                  -
                • Με τους ισχυρισμούς ελέγχουμε περιπτώσεις που δεν πρέπει ποτέ να συμβούν ενώ με τις εξαιρέσεις
                  κάτι που μπορεί να συμβεί.
                • -
                • Ο ισχυρισμός σταματάει την εκτέλεση του προγράμματος ενώ η εξαίρεση επιτρέπει την συνέχεια αν μπορεί
                  να διορθωθεί το συγκεκριμένο σφάλμα.
                • +
                • Μέθοδος που επιτρέπει σε ένα νήμα να περιμένει μέχρι να ολοκληρωθεί η εκτέλεση ένος άλλου.
                -

                Παράδειγμα (1)

                -
                BankAccount acct = null;
                -
                -// ...
                -// Get a BankAccount object
                -// ...
                +
                  Thread t = new Thread(findNumber);
                +  t.start();
                +  System.out.println("Now thread " + t.getName() + " is running");
                +  t.join();
                +

                Παράδειγμα με νήματα

                +
                public class SimpleThreads {
                +            static void threadMessage(String message) {
                +                String threadName = Thread.currentThread().getName();
                +                System.out.format("%s: %s%n",threadName, message);
                +        }
                 
                -// Check to ensure we have one
                -              assert acct != null : "Object Null";
                -

                Παράδειγμα (2)

                -
                import java.io.*;
                +            private static class MessageLoop implements Runnable {
                +            public void run() {
                +                String importantInfo[] = {"Mares eat oats","Does eat oats","Little lambs eat ivy","A kid will eat ivy too"};
                +                try {
                +                for (int i = 0; i < importantInfo.length; i++) {
                +                    Thread.sleep(4000);
                +                    threadMessage(importantInfo[i]);
                +                }
                +                } catch (InterruptedException e) {threadMessage("I wasn't done!");
                +                }
                +            }
                +        }
                 
                -public class AssertionTest3 {
                +public static void main(String args[])throws InterruptedException {
                +        long patience = 1000 * 60 * 60;
                +        // If command line argument
                +        // present, gives patience
                +        // in seconds.
                +        if (args.length > 0) {
                +            try {
                +                patience = Long.parseLong(args[0]) * 1000;
                +            } catch (NumberFormatException e) {
                +                System.err.println("Argument must be an integer.");
                +                System.exit(1);
                +            }
                +        }
                 
                -   public static void main(String argv[]) throws IOException {
                -      System.out.print("Enter your marital status: ");
                -      int c = System.in.read();
                -      switch ((char) c) {
                -         case 's':
                -         case 'S': System.out.println("Single"); break;
                -         case 'm':
                -         case 'M': System.out.println("Married"); break;
                -         case 'd':
                -         case 'D': System.out.println("Divorced"); break;
                -         default: assert !true : "Invalid Option"; break;
                -      }
                +        threadMessage("Starting MessageLoop thread");
                +        long startTime = System.currentTimeMillis();
                +        Thread t = new Thread(new MessageLoop());
                +        t.start();
                 
                -   }
                +        threadMessage("Waiting for MessageLoop thread to finish");
                +        while (t.isAlive()) {
                +            threadMessage("Still waiting...");
                +            t.join(1000);
                +            if (((System.currentTimeMillis() - startTime) > patience)&& t.isAlive()) {
                +                threadMessage("Tired of waiting!");
                +                t.interrupt();
                +                t.join();
                +            }
                +        }
                +        threadMessage("Finally!");
                +    }
                 }
                -

                Παράδειγμα (3)

                -
                    [sgeorgiou@aiolos]$ java -ea AssertionTest3 
                -    Enter your marital status: n
                -    Exception in thread "main" java.lang.AssertionError: Invalid Option
                -        at AssertionTest3.main(AssertionTest3.java:15)

                Creative Commons Licence
                This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. diff --git a/tutorials/tutorial_6_A-p.html b/tutorials/tutorial_6_A-p.html index d0b67b4..cf2d91f 100644 --- a/tutorials/tutorial_6_A-p.html +++ b/tutorials/tutorial_6_A-p.html @@ -4,7 +4,7 @@ - Πλατφόρμα Eclipse + Εξαιρέσεις και Ισχυρισμοί @@ -28,78 +28,300 @@ diff --git a/tutorials/tutorial_6_A.html b/tutorials/tutorial_6_A.html index 9a6d1ad..f243b62 100644 --- a/tutorials/tutorial_6_A.html +++ b/tutorials/tutorial_6_A.html @@ -5,7 +5,7 @@ - Πλατφόρμα Eclipse + Εξαιρέσεις και Ισχυρισμοί @@ -29,46 +29,222 @@ -

                Προγραμματισμός ΙΙ: Πλατφόρμα Eclipse

                +

                Προγραμματισμός ΙΙ: Εξαιρέσεις και Ισχυρισμοί

                Προγραμματισμός ΙΙ

                -

                Πλατφόρμα Eclipse

                +

                Εξαιρέσεις και Ισχυρισμοί

                -

                Eclipse, checkstyle and Find Bugs

                -



                -

                Επιλογή του Workspace

                -

                +

                Εξαιρέσεις

                  -
                • Download
                • +
                • Μία εξαίρεση είναι ένα γεγονός που παρακάμπτει την κανονική εκτέλεση ενός προγράμματος.
                • +
                • Δίνει την δυνατότητα να χειριστούμε γεγονότα όταν γίνει κάτι το ασυνήθιστο.
                • +
                • Αποφεύγουμε την δημιουργία περίπλοκου κώδικα στον χειρισμό πιθανού σφάλματος.
                • +
                • Δίνει δυναντότητα μετάδοσης σφάλματος στο ίχνος στοίβας (stack trace).
                -

                Δημιουργία νέου έργου

                -

                -

                Ονομασία νέου έργου

                -

                -

                Δημιουργία νέας κλάσης

                -

                -

                Μεταγλώττιση και εκτέλεση

                -

                -

                Εγκατάσταση plug-ins για Eclipse

                +

                Παράδειγμα ψευδοκώδικα

                  -
                • Help -> Install New Software
                • -
                • Στην καρτέλα Install πατάμε Αdd
                • -
                • Στην επόμενη καρτέλα προσθέτουμε το όνομα του plug-in και το URL που βρίσκεται (π.χ. FindBugs, http://findbugs.cs.umd.edu/eclipse)
                • -
                • Επιλέγουμε το project που θέλουμε να εγκαταστήσουμε
                • -
                • Πατάμε Next αποδεχόμαστε τους όρους χρήσης επιλέγοντας Accept και τέλος επιλέγουμε Finish
                • -
                • Επιλέγουμε restart για να ξεκινήσει ξανά το Eclipse (παρόμοια διαδικασία ισχύει όταν θέλετε να εγκαταστήσετε λογισμικό από το Εclipse MarketPlace π.χ. για το checkstyle)
                • +
                • Λάθη?
                -

                Εγκατάσταση FindBugs

                -


                http://findbugs.cs.umd.edu/eclipse/

                -

                Εγκατάσταση CheckStyle

                -

                -

                Παράδειγμα CheckStyle

                -

                -

                Αποτελέσμα CheckStyle

                -

                +
                readFile {
                +    open the file;
                +    determine its size;
                +    allocate that much memory;
                +    read the file into memory;
                +    close the file;
                +}
                +

                Χειρισμός ψευδοκώδικα

                +
                errorCodeType readFile {
                +    initialize errorCode = 0;
                +    
                +    open the file;
                +    if (theFileIsOpen) {
                +        determine the length of the file;
                +        if (gotTheFileLength) {
                +            allocate that much memory;
                +            if (gotEnoughMemory) {
                +                read the file into memory;
                +                if (readFailed) {
                +                    errorCode = -1;
                +                }
                +            } else {
                +                errorCode = -2;
                +            }
                +        } else {
                +            errorCode = -3;
                +        }
                +        close the file;
                +        if (theFileDidntClose && errorCode == 0) {
                +            errorCode = -4;
                +        } else {
                +            errorCode = errorCode and -4;
                +        }
                +    } else {
                +        errorCode = -5;
                +    }
                +    return errorCode;
                +}
                +

                Σωστός χειρισμός ψευδοκώδικα

                +
                readFile {
                +    try {
                +        open the file;
                +        determine its size;
                +        allocate that much memory;
                +        read the file into memory;
                +        close the file;
                +    } catch (fileOpenFailed) {
                +       doSomething;
                +    } catch (sizeDeterminationFailed) {
                +        doSomething;
                +    } catch (memoryAllocationFailed) {
                +        doSomething;
                +    } catch (readFailed) {
                +        doSomething;
                +    } catch (fileCloseFailed) {
                +        doSomething;
                +    }
                +

                Χειρισμός εξαιρέσεων

                +
                  +
                • Μπορεί να γίνει χρησιμοποιώντας το try-catch.
                • +
                +
                try {
                +    some code here
                +} catch and finally blocks …
                +

                throws

                +
                  +
                • Μπορούμε να ορίσουμε την πιθανότητα να προκύψει μία εξαίρεση στην υπογραφή μίας μεθόδου.
                • +
                +
                public void writeList() throws IOException, IndexOutOfBoundsException {...}
                +

                throw new

                +
                  +
                • Μπορούμε να ορίσουμε την πιθανότητα δημιουργίας μίας εξαίρεσης μέσο της throw new λέξης.
                • +
                • Επίσης, θα πρέπει να ορίσουμε στην υπογραφή της μεθόδου την λέξη throws με το όνομα της εξαίρεσης.
                • +
                +
                
                +public void checkAmout(int amount) throws NegativeAmoutException {
                +    if (amount < 0) {
                +        throw new NegativeAmountException();
                +    }
                +}
                +

                Τύποι εξαιρέσεων

                +

                +

                Παράδειγμα Checked Exception

                +
                import java.io.File;
                +import java.io.FileNotFoundException;
                +import java.io.FileReader;
                +
                +public  class testClass {
                +
                +    public static void main(String args[])  {       
                +          File file = new File("E://file.txt");
                +          try {
                +            FileReader fr = new FileReader(file);
                +        } catch (FileNotFoundException e) {
                +            // TODO Auto-generated catch block
                +            e.printStackTrace();
                +        } 
                +       }
                +}
                +

                Παράδειγμα Unchecked Exception

                +
                    import java.io.*;
                +    
                +    public class ExcepTest {
                +        public static void main(String[] args) {
                +            int a[] = new int[2];
                +            try {
                +                System.out.println("Access elements three:" + a[3]);
                +            } catch(ArrayIndexOutOfBoundsException e) {
                +                System.out.println("Exception thrown :" +e);
                +            }
                +            System.out.println("Out of the block");
                +        }
                +    }
                +

                Χρήση της finally

                +
                public class ExcepTest {
                +
                +   public static void main(String args[]) {
                +      int a[] = new int[2];
                +      try {
                +         System.out.println("Access element three :" + a[3]);
                +      } catch(ArrayIndexOutOfBoundsException e) {
                +         System.out.println("Exception thrown  :" + e);
                +      } finally {
                +         a[0] = 6;
                +         System.out.println("First element value: " + a[0]);
                +         System.out.println("The finally statement is executed");
                +      }
                +   }
                +}
                +

                Ίχνη Στοίβας

                +
                  +
                • Τα ίχνη στοίβας περιέχουν αποτελέσματα σφαλμάτων μίας εφαρμογής
                  όπου προσφέρουν στοιχεία για τα αίτια του σφάλματος.
                • +
                • Η χρήση της μεθόδου printStackTrace() δίνει το δέντρο της
                  στοίβας αν κάποια μέθοδος έχει αποτύχει.
                • +
                +

                Παράδειγμα για Ίχνη Στοίβας

                +
                Exception in thread "main" java.lang.NullPointerException: Fictitious NullPointerException
                +at StackTraceExample.method111(StackTraceExample.java:15)
                +at StackTraceExample.method11(StackTraceExample.java:11)
                +at StackTraceExample.method1(StackTraceExample.java:7)
                +at StackTraceExample.main(StackTraceExample.java:3)
                +

                Δημιουργία εξαιρέσεων

                +
                  +
                • Μπορούμε να δημιουργήσουμε τις δικές μας εξαιρέσεις επεκτείνοντας τις κλάσεις π.χ. Exception, RuntimeException
                • +
                +

                Ισχυρισμοί (1)

                +
                  +
                • Χρησιμοποιείται για εύρεση λαθών μέσα στον κώδικα.
                • +
                • Χρησιμοποιεί μια έκφραση boolean, αν αυτή επιστρέψει λάθος τότε προσδιορίζει την ένδειξη σφάλματος στο κώδικα
                  με την εκτύπωση κάποιου μηνύματος.
                • +
                • Για χρήση του assertion πρέπει να εκτελέσετε ώς έχει: java -ea|-enableassertion executable
                • +
                • Επιτρέπει την τεκμηρίωση του κώδικα και τον τρόπο λειτουργίας του.
                • +
                +

                Ισχυρισμοί (2)

                +
                  +
                • Επιτρέπει την κατανόηση του προγράμματος μας από άλλα άτομα.
                • +
                • Βοηθούν στην εύκολη αποσφαλμάτωση του κώδικα.
                • +
                • Οι ισχυρισμοί δεν είναι για τους χρήστες ενός προγράμματος αλλά για του μηχανικούς λογισμικού.
                • +
                • Οταν εντοπιστεί σφάλμα ισχυρισμού συνήθως πρέπει να σταματά η λειτουργία ενός προγράμματος.
                • +
                +

                Διαφορές Ισχυρισμών με Εξαιρέσεις

                +
                  +
                • Με τους ισχυρισμούς ελέγχουμε περιπτώσεις που δεν πρέπει ποτέ να συμβούν ενώ με τις εξαιρέσεις
                  κάτι που μπορεί να συμβεί.
                • +
                • Ο ισχυρισμός σταματάει την εκτέλεση του προγράμματος ενώ η εξαίρεση επιτρέπει την συνέχεια αν μπορεί
                  να διορθωθεί το συγκεκριμένο σφάλμα.
                • +
                +

                Παράδειγμα (1)

                +
                BankAccount acct = null;
                +
                +// ...
                +// Get a BankAccount object
                +// ...
                +
                +// Check to ensure we have one
                +              assert acct != null : "Object Null";
                +

                Παράδειγμα (2)

                +
                import java.io.*;
                +
                +public class AssertionTest3 {
                +
                +   public static void main(String argv[]) throws IOException {
                +      System.out.print("Enter your marital status: ");
                +      int c = System.in.read();
                +      switch ((char) c) {
                +         case 's':
                +         case 'S': System.out.println("Single"); break;
                +         case 'm':
                +         case 'M': System.out.println("Married"); break;
                +         case 'd':
                +         case 'D': System.out.println("Divorced"); break;
                +         default: assert !true : "Invalid Option"; break;
                +      }
                +
                +   }
                +}
                +

                Παράδειγμα (3)

                +
                    [sgeorgiou@aiolos]$ java -ea AssertionTest3 
                +    Enter your marital status: n
                +    Exception in thread "main" java.lang.AssertionError: Invalid Option
                +        at AssertionTest3.main(AssertionTest3.java:15)

                Creative Commons Licence
                This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. diff --git a/tutorials/tutorial_8_B-p.html b/tutorials/tutorial_6_B-p.html similarity index 100% rename from tutorials/tutorial_8_B-p.html rename to tutorials/tutorial_6_B-p.html diff --git a/tutorials/tutorial_8_B.html b/tutorials/tutorial_6_B.html similarity index 100% rename from tutorials/tutorial_8_B.html rename to tutorials/tutorial_6_B.html diff --git a/tutorials/tutorial_6_C-p.html b/tutorials/tutorial_6_C-p.html new file mode 100644 index 0000000..d0b67b4 --- /dev/null +++ b/tutorials/tutorial_6_C-p.html @@ -0,0 +1,141 @@ + + + + + + + Πλατφόρμα Eclipse + + + + + + + + + + + +
                +
                +
                + +
                +
                +

                License

                +Creative Commons Licence
                This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
                +
                +
                + + + + + + + diff --git a/tutorials/tutorial_6_C.html b/tutorials/tutorial_6_C.html new file mode 100644 index 0000000..9a6d1ad --- /dev/null +++ b/tutorials/tutorial_6_C.html @@ -0,0 +1,76 @@ + + + + + + + + Πλατφόρμα Eclipse + + + + + + + + + + + + + + + + + + + + +

                Προγραμματισμός ΙΙ: Πλατφόρμα Eclipse

                +

                +

                Προγραμματισμός ΙΙ

                +

                Πλατφόρμα Eclipse

                + +

                Eclipse, checkstyle and Find Bugs

                +



                +

                Επιλογή του Workspace

                +

                + +

                Δημιουργία νέου έργου

                +

                +

                Ονομασία νέου έργου

                +

                +

                Δημιουργία νέας κλάσης

                +

                +

                Μεταγλώττιση και εκτέλεση

                +

                +

                Εγκατάσταση plug-ins για Eclipse

                +
                  +
                • Help -> Install New Software
                • +
                • Στην καρτέλα Install πατάμε Αdd
                • +
                • Στην επόμενη καρτέλα προσθέτουμε το όνομα του plug-in και το URL που βρίσκεται (π.χ. FindBugs, http://findbugs.cs.umd.edu/eclipse)
                • +
                • Επιλέγουμε το project που θέλουμε να εγκαταστήσουμε
                • +
                • Πατάμε Next αποδεχόμαστε τους όρους χρήσης επιλέγοντας Accept και τέλος επιλέγουμε Finish
                • +
                • Επιλέγουμε restart για να ξεκινήσει ξανά το Eclipse (παρόμοια διαδικασία ισχύει όταν θέλετε να εγκαταστήσετε λογισμικό από το Εclipse MarketPlace π.χ. για το checkstyle)
                • +
                +

                Εγκατάσταση FindBugs

                +


                http://findbugs.cs.umd.edu/eclipse/

                +

                Εγκατάσταση CheckStyle

                +

                +

                Παράδειγμα CheckStyle

                +

                +

                Αποτελέσμα CheckStyle

                +

                + +
                +Creative Commons Licence
                This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/tutorials/tutorial_7_A-p.html b/tutorials/tutorial_7_A-p.html index b6afc7a..98a339a 100644 --- a/tutorials/tutorial_7_A-p.html +++ b/tutorials/tutorial_7_A-p.html @@ -33,7 +33,7 @@ # Προγραμματισμός ΙΙ -# JUnit +# Debugging, BetterCodeHub, and JUnits * [Στέφανος Γεωργίου](https://www.balab.aueb.gr/stefanos-georgiou.html) * [Κωνσταντίνος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) diff --git a/tutorials/tutorial_7_A.html b/tutorials/tutorial_7_A.html index 8e37834..3468a06 100644 --- a/tutorials/tutorial_7_A.html +++ b/tutorials/tutorial_7_A.html @@ -32,7 +32,7 @@

                Προγραμματισμός ΙΙ: Debugging and BetterCodeHub

                Προγραμματισμός ΙΙ

                -

                JUnit

                +

                Debugging, BetterCodeHub, and JUnits

                • Στέφανος Γεωργίου
                • Κωνσταντίνος Κραββαρίτης
                • @@ -69,7 +69,7 @@

                  Ρυθμίσεις

                  Βαθμολογία Κώδικα

                  -

                  JUnit

                  +

                  JUnit

                  • JUnit είναι ένα framework για να πραγματοποιήσουμε, να τεστάρουμε
                    μεθόδους ή λειτουργίες στην java.
                  • Προσπαθούμε να τεστάρουμε όσες περισσότερες μεθόδους μπορούμε. Το αν μία
                    μέθοδος είναι εύκολο να τεσταριστεί είναι χαρακτηριστικό ποιοτικού κώδικα.
                  • diff --git a/tutorials/tutorial_9_A-p.html b/tutorials/tutorial_7_B-p.html similarity index 100% rename from tutorials/tutorial_9_A-p.html rename to tutorials/tutorial_7_B-p.html diff --git a/tutorials/tutorial_9_A.html b/tutorials/tutorial_7_B.html similarity index 100% rename from tutorials/tutorial_9_A.html rename to tutorials/tutorial_7_B.html diff --git a/tutorials/tutorial_8_A-p.html b/tutorials/tutorial_8_A-p.html index 65055a0..0d357ca 100644 --- a/tutorials/tutorial_8_A-p.html +++ b/tutorials/tutorial_8_A-p.html @@ -4,7 +4,7 @@ - Νήματα + Κανονικές εκφράσεις @@ -28,329 +28,165 @@ - - -
                    -
                    -
                    - -
                    -
                    -

                    License

                    -Creative Commons Licence
                    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. -
                    -
                    -
                    - - - - - - - diff --git a/tutorials/tutorial_9_B.html b/tutorials/tutorial_9_B.html deleted file mode 100644 index e7437dd..0000000 --- a/tutorials/tutorial_9_B.html +++ /dev/null @@ -1,328 +0,0 @@ - - - - - - - - Κανονικές εκφράσεις - - - - - - - - - - - - - - - - - - - - -

                    Προγραμματισμός ΙΙ: Κανονικές εκφράσεις

                    -

                    -

                    Προγραμματισμός ΙΙ

                    -

                    Καννονικές Εκφράσεις

                    - -

                    Κανονικές Εκφράσεις

                    -
                      -
                    • Είναι σειρές από χαρακτήρες, αριθμούς και ειδικά σύμβολα που εκφράζουν καθορισμένα πρότυπα βάσει συγκεκριμένης σύνταξης.
                    • -
                    • Χρησιμοποιούνται για ταυτοποίηση συγκεκριμένων μοτίβων (pattern matching) κανονικών εκφράσεων (regular expressions) σε λέξεις, προτάσεις, αριθμούς, και αρχεία.
                    • -
                    • Βοηθούν στην αναζήτηση, στην επεξεργασία και στο χειρισμό κειμένου και δεδομένων.
                    • -
                    -

                    Ειδικά Σύμβολα (1)

                    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    ΜοτίβοΕπεξήγησηΠαράδειγμα
                    [ab]ταιριάζει κάθε χαρακτήρα μέσα στις αγκύλεςri[cs]e -> rice ή rise
                    abc|adcταιριάζει είτε τη μία είτε την άλλη λέξηman|men -> man ή men
                    ^ταιριάζει το μοτίβο στην αρχή της γραμμής^What-> What time...
                    $ταιριάζει το μοτίβο στο τέλος της γραμμήςo'clock.$ -> 8 o'clock.
                    ?0 ή 1 εμφάνιση του προηγούμενου μοτίβουcolou?r -> Light blue is my colour
                    -

                    Ειδικά Σύμβολα (2)

                    - - - - - - - - - - - - - - - - - - - - -
                    ΜοτίβοΕπεξήγησηΠαράδειγμα
                    +1 ή περισσότερες εμφανίσεις του προηγούμενου μοτίβου[123]+-> 2
                    *0 ή περισσότερες εμφανίσεις του προηγούμενου μοτίβου[123]*->456 |
                    | {n} | ταιριάζει ένα συγκεκριμένο αριθμό ψηφίων | 5{3}-> 555 |
                    | {min,max} | ταιριάζει από/μέχρι ένα συγκεκριμένο αριθμό ψηφίων | m{1,5}->mmmm |
                    | [0-9] | ταιριάζει αριθμούς από 0 έως 9 | [0-9] -> 7 |
                    -

                    Ειδικά Σύμβολα (3)

                    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    ΜοτίβοΕπεξήγησηΠαράδειγμα
                    [a-zA-Z]ταιριάζει γράμματα από το a έως το z κεφαλαία και μικρά[a-zA-Z] -> r
                    [^a-z]δεν ταιριάζει ό,τι υπάρχει μέσα στα άγκυστρα[^a-z] -> R
                    \n, \tταιριάζει χαρακτήρες με backslashnew line\n -> \n
                    \wταιριάζει γράμματα χαρακτήρες [0-9Α-Ζa-z_][\w]\t -> o\t
                    \Wδεν ταιριάζει γράμματα χαρακτήρες [^0-9Α-Ζa-z_][\W] -> \n
                    -

                    Ειδικά Σύμβολα (4)

                    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    ΜοτίβοΕπεξήγησηΠαράδειγμα
                    \dταιριάζει ψηφία όπως το [0-9][\d] -> 7
                    \Dδεν ταιριάζει ψηφία όπως το [^0-9][\D] -> a
                    \sταιριάζει whitespace χαρακτήρες όπως [\t\n\r]a\s -> a (space)
                    \Sδεν ταιριάζει whitespace χαρακτήρες όπως [^\t\n\r]a[^\t\n\r] -> cat
                    .ταιριάζει οτιδήποτε.+ -> jdf235!\n
                    -

                    Κανονικές εκφράσεις στη Java

                    -
                      -
                    • Για τη χρήση κανονικών εκφράσεων στη Java χρησιμοποιείται το java.util.regex API το οποίο διαθέτει 3 βασικές κλάσεις: Pattern, Matcher, και PatternSyntaxException.
                    • -
                    • Η κλάση String διαθέτει μεθόδους που χρησιμοποιούν κανονικές εκφράσεις
                      (Summary of regular-expression constructs:
                      https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html).
                    • -
                    -

                    Μεθόδοι της κλάσης String για κανονικές εκφράσεις

                    - - - - - - - - - - - - - - - - - - - - - - - - - -
                    ΤύποςΌνομα μεθόδουΠεριγραφή
                    booleanmatches(String regex)επιστρέφει true αν υπάρχει η έκφραση
                    StringreplaceAll(String regex, String relpacement)αλλάζει μία έκφραση με μία συγκεκριμένη συμβολοσειρά
                    String[]split(String regex)Σπάει μια συμβολοσειρά σε ένα πίνακα από συμβολοσειρές
                    -

                    Μοτίβα

                    - - - - - - - - - - - - - - - - - - - - - - - - - -
                    ΤύποςΌνομα μεθόδουΠεριγραφή
                    static Patterncompile(String regex)μεταγλωττίζει την κανονική έκφραση σε μοτίβο
                    static Patterncompile(String regex, int flag)μεταγλωττίζει την κανονική έκφραση σε μοτίβο με "σημαίες"
                    static Patternmatches(String regex, CharSequence input)Προσπαθεί να ταιριάξει το μοτίβο με δεδομένα εισόδου
                    -

                    Ταιριαστής

                    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    ΤύποςΌνομα μεθόδουΠεριγραφή
                    booleanmatches()προσπαθεί να βρει την εμφάνιση ενός μοτίβου
                    intstart()επιστρέφει την θέση που αρχίζει η έκφραση
                    intend()επιστρέφει την θέση που τελειώνει η έκφραση +1
                    booleanfind()ψάχνει εμφανίσεις της κανονικής έκφρασης σε ένα κείμενο
                    -

                    Παράδειγμα (1)

                    -
                    import java.util.regex.Matcher;
                    -import java.util.regex.Pattern;
                    -import java.util.regex.PatternSyntaxException;
                    -
                    -public class RegexMatchFind {
                    -    public static void main(String[] args) throws PatternSyntaxException {
                    -        Pattern p = Pattern.compile("[\\d]{3}");
                    -        Matcher m = p.matcher("a123b");
                    -        System.out.println(m.find());
                    -        System.out.println(m.matches());
                    -        boolean b = Pattern.matches("[\\d]{3}", "a123b");
                    -        System.out.println(b);
                    -
                    -        p = Pattern.compile("^[a-z0-9]+$");
                    -        m = p.matcher("123");
                    -        System.out.println(m.find());
                    -        System.out.println(m.matches());
                    -        boolean c = Pattern.matches("^[a-z0-9]+$", "123");
                    -        System.out.println(c);
                    -    }
                    -}
                    -

                    Παράδειγμα (2)

                    -
                    import java.util.regex.Matcher;
                    -import java.util.regex.Pattern;
                    -
                    -public class SimpleRegex {
                    -    
                    -    public static void main(String args[]) {
                    -        // String for the pattern-matching.
                    -        String line = "New order 567TW.";
                    -        // Given pattern
                    -        String pattern = "[0-9]+(Q|TW){1,2}.";
                    -
                    -        // Pattern object
                    -        Pattern r = Pattern.compile(pattern);
                    -        // Matcher object.
                    -        Matcher m = r.matcher(line);
                    -        
                    -        // Check
                    -        if (m.find()) {
                    -            System.out.println(m.group());
                    -        } else {
                    -            System.out.println("NO MATCH");
                    -        }
                    -
                    -        // Replace m with the given string
                    -        line = m.replaceAll("##");
                    -        System.out.println(line);
                    -        
                    -        String line2 = "mesquite in your cellar";
                    -        System.out.println(line2.replace('e', 'o'));
                    -    }
                    -}
                    - -
                    -Creative Commons Licence
                    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. - - From f4df84832aaa66172db1bb0fc336f616fbf1fbe2 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Mon, 12 Nov 2018 17:31:52 +0000 Subject: [PATCH 44/79] Deploy to GitHub Pages: 4b8610686be5803c5fa1b4faa5f5dc2e993dfc2c --- tutorials/tutorial_6_A-p.html | 13 +++++++------ tutorials/tutorial_6_A.html | 13 +++++++------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/tutorials/tutorial_6_A-p.html b/tutorials/tutorial_6_A-p.html index cf2d91f..b75ff50 100644 --- a/tutorials/tutorial_6_A-p.html +++ b/tutorials/tutorial_6_A-p.html @@ -128,8 +128,12 @@ ```java try { - some code here -} catch and finally blocks … + some code here +} catch () { + ; +} finally { + ; +} … ``` @@ -148,7 +152,6 @@ * Επίσης, θα πρέπει να ορίσουμε στην υπογραφή της μεθόδου την λέξη **throws** με το όνομα της εξαίρεσης. ```java - public void checkAmout(int amount) throws NegativeAmoutException { if (amount < 0) { throw new NegativeAmountException(); @@ -176,7 +179,6 @@ try { FileReader fr = new FileReader(file); } catch (FileNotFoundException e) { - // TODO Auto-generated catch block e.printStackTrace(); } } @@ -259,7 +261,6 @@ ## Ισχυρισμοί (2) -* Επιτρέπει την κατανόηση του προγράμματος μας από άλλα άτομα. * Βοηθούν στην εύκολη αποσφαλμάτωση του κώδικα. * Οι ισχυρισμοί δεν είναι για τους χρήστες ενός προγράμματος αλλά για του μηχανικούς λογισμικού. * Οταν εντοπιστεί σφάλμα ισχυρισμού συνήθως πρέπει να σταματά η λειτουργία ενός προγράμματος. @@ -290,7 +291,7 @@ ## Παράδειγμα (2) ```java -import java.io.*; +import java.io.IOException; public class AssertionTest3 { diff --git a/tutorials/tutorial_6_A.html b/tutorials/tutorial_6_A.html index f243b62..b0ae88a 100644 --- a/tutorials/tutorial_6_A.html +++ b/tutorials/tutorial_6_A.html @@ -111,7 +111,11 @@

                    Χειρισμός εξαιρέσεων

                  try {
                       some code here
                  -} catch and finally blocks …
                  +} catch () { + ; +} finally { + ; +} …

                throws

                • Μπορούμε να ορίσουμε την πιθανότητα να προκύψει μία εξαίρεση στην υπογραφή μίας μεθόδου.
                • @@ -122,8 +126,7 @@

                  throw new

                • Μπορούμε να ορίσουμε την πιθανότητα δημιουργίας μίας εξαίρεσης μέσο της throw new λέξης.
                • Επίσης, θα πρέπει να ορίσουμε στην υπογραφή της μεθόδου την λέξη throws με το όνομα της εξαίρεσης.
                -
                
                -public void checkAmout(int amount) throws NegativeAmoutException {
                +
                public void checkAmout(int amount) throws NegativeAmoutException {
                     if (amount < 0) {
                         throw new NegativeAmountException();
                     }
                @@ -142,7 +145,6 @@ 

                Παράδειγμα Checked Exception

                try { FileReader fr = new FileReader(file); } catch (FileNotFoundException e) { - // TODO Auto-generated catch block e.printStackTrace(); } } @@ -201,7 +203,6 @@

                Ισχυρισμοί (1)

              Ισχυρισμοί (2)

                -
              • Επιτρέπει την κατανόηση του προγράμματος μας από άλλα άτομα.
              • Βοηθούν στην εύκολη αποσφαλμάτωση του κώδικα.
              • Οι ισχυρισμοί δεν είναι για τους χρήστες ενός προγράμματος αλλά για του μηχανικούς λογισμικού.
              • Οταν εντοπιστεί σφάλμα ισχυρισμού συνήθως πρέπει να σταματά η λειτουργία ενός προγράμματος.
              • @@ -221,7 +222,7 @@

                Παράδειγμα (1)

                // Check to ensure we have one assert acct != null : "Object Null";

              Παράδειγμα (2)

              -
              import java.io.*;
              +
              import java.io.IOException;
               
               public class AssertionTest3 {
               
              
              From ab28f1fa7749be6b2e84737f0df976a13fa6ffdd Mon Sep 17 00:00:00 2001
              From: Travis CI 
              Date: Mon, 12 Nov 2018 18:23:12 +0000
              Subject: [PATCH 45/79] Deploy to GitHub Pages:
               47b5ff76a822b85803b7ae0018b91d7b4d6aff34
              
              ---
               tutorials/tutorial_6_B-p.html | 30 +++++++++++++++---------------
               tutorials/tutorial_6_B.html   | 30 +++++++++++++++---------------
               2 files changed, 30 insertions(+), 30 deletions(-)
              
              diff --git a/tutorials/tutorial_6_B-p.html b/tutorials/tutorial_6_B-p.html
              index ac2c1a1..cf3124f 100644
              --- a/tutorials/tutorial_6_B-p.html
              +++ b/tutorials/tutorial_6_B-p.html
              @@ -41,11 +41,11 @@
               
               ## Συμβολοσειρές
               
              -* Μία συμβολοσειρα (String) είναι μια σειρά από χαρακτήρες. Στην java τα string είναι 
              +* Μία συμβολοσείρα (String) είναι μια σειρά από χαρακτήρες. Στην java τα strings είναι 
               αντικείμενα της κλάσης String.
               
               * Οι συμβολοσειρές είναι σταθερές - δηλαδή, οι τιμές τους **δεν αλλάζουν μετά την 
              -δημιουργεία τους**. Σε αντίθεση, οι Stringbuffer έχουν μεταβλητό μήκος και τιμές 
              +δημιουργία τους**. Αντίθετα, ο Stringbuffer έχει μεταβλητό μήκος και τιμές 
               χαρακτήρων.
               
               * Όπως και για την δημιουργία άλλων αντικειμένων, έτσι και για να δημιουργήσουμε 
              @@ -70,7 +70,7 @@
               int l = h.lenght();
               ```
               
              -* Μία αλληλουχία (**concatenation**) από συμβολοσειρές μπορεί να καλεστεί ως εξής:
              +* Μία αλληλουχία (**concatenation**) από συμβολοσειρές μπορεί να κληθεί ως εξής:
               ```java
               String h = "hello world";
               System.out.println("This is an example: " + h);
              @@ -103,7 +103,7 @@
               ## Μέθοδος substring
               
               * Για να επιστρέψουμε ένα τμήμα μία συμβολοσειράς χρησιμοποιούμε την **substring(int beginIndex, int endIndex)** 
              -η οποία επισρέφει το τμήμα που αρχίζει στη θέση beginIndex και τελειώνει στη θέση endIndex - 1.
              +η οποία επιστρέφει το τμήμα που αρχίζει στη θέση beginIndex και τελειώνει στη θέση endIndex - 1.
               
               ```java
               // Return sustring "world"
              @@ -235,7 +235,7 @@
                       System.out.println("List contains 2? " + myList.contains(2) + "\n"
                                           + "List contains 0? " + myList.contains(0));
                       
              -        // διαγραφή όλων όλων των στοιχείων από την ArrayList
              +        // διαγραφή όλων των στοιχείων από την ArrayList
                       myList.clear();
                       System.out.println(myList);
                   }
              @@ -254,10 +254,10 @@
               
               ## LinkedList -- Συνεδεμένη Λίστα
               
              -* Κάθε στοιχεία (**κομβος**) της λίστας έχει δύο χαρακτηριστήκα, τα δεδομένα και τον δείκτη 
              +* Κάθε στοιχείο (**κόμβος**) της λίστας έχει δύο χαρακτηριστικά, τα δεδομένα και τον δείκτη 
               για τον επόμενο κόμβο.
               * Ο τελευταίος κόμβος πρέπει να αναφέρεται στο **null**.
              -* Το πρώτο στοιχείο της λίστας ονομάζεται το κεφάλι (**head**).
              +* Το πρώτο στοιχείο της λίστας ονομάζεται κεφάλι (**head**).
               
               ```java
               // class declaration according to Oracle
              @@ -312,11 +312,11 @@
               
               
               ##  Stack -- Στοίβα
              -* **Stack** προσφέρει 2 βασικές λειτουργίες (μεθόδους)
              -	* push (προσθέτει στοιχεία)
              +* **Stack**: προσφέρει 2 βασικές λειτουργίες (μεθόδους)
              +	* push (προσθέτει στοιχείο)
               	* pop (αφαιρεί στοιχείο)
              -* Εκπροσωπεί το μοντέλο "ο τελευταίος ερχόμενος εξυπηρετείται πρώτος" (lifo).
              -* Κάθε φορά μπορεί να αφαιρείτε το παρόν τελευταίο στοιχείο.
              +* Εκπροσωπεί το μοντέλο "αυτός που ήρθε τελευταίος εξυπηρετείται πρώτος" (lifo).
              +* Κάθε φορά μπορεί να αφαιρείται το τελευταίο στοιχείο.
               
               ```java
               // The Stack class, as defined by Oracle
              @@ -338,7 +338,7 @@
               public class StackDemo {
               
                   public static void main(String[] args) {
              -        // Αρχικοποιήσει στοίβας
              +        // Αρχικοποιήση στοίβας
                       Stack stack = new Stack<>();
                       
                       // προσθέτουμε στοιχεία στην οροφή της στοίβας
              @@ -348,15 +348,15 @@
                       stack.push(4);
                       System.out.println(stack);
                       
              -        // δες την τελευταία εισχώρηση
              +        // δες την τελευταία προσθήκη
                       int top = stack.peek();
                       System.out.println("top element: " + top);
                       
              -        // αφαίρεση το τελευαίο στοιχεία και αποθήκευση
              +        // αφαίρεση του τελευταίου στοιχείου και αποθήκευση
                       int first = stack.pop();
                       System.out.println("popped element: " + first + "\n" + stack);
                       
              -        // δες τελευταίο στοιχείο
              +        // δες το τελευταίο στοιχείο
                       top = stack.peek();
                       System.out.println("top element: " + top);
                   }
              diff --git a/tutorials/tutorial_6_B.html b/tutorials/tutorial_6_B.html
              index 905b48a..b41782f 100644
              --- a/tutorials/tutorial_6_B.html
              +++ b/tutorials/tutorial_6_B.html
              @@ -39,8 +39,8 @@ 

              Συμβολοσειρές και Συλλογές

            Συμβολοσειρές

              -
            • Μία συμβολοσειρα (String) είναι μια σειρά από χαρακτήρες. Στην java τα string είναι
              αντικείμενα της κλάσης String.

            • -
            • Οι συμβολοσειρές είναι σταθερές - δηλαδή, οι τιμές τους δεν αλλάζουν μετά την
              δημιουργεία τους
              . Σε αντίθεση, οι Stringbuffer έχουν μεταβλητό μήκος και τιμές
              χαρακτήρων.

            • +
            • Μία συμβολοσείρα (String) είναι μια σειρά από χαρακτήρες. Στην java τα strings είναι
              αντικείμενα της κλάσης String.

            • +
            • Οι συμβολοσειρές είναι σταθερές - δηλαδή, οι τιμές τους δεν αλλάζουν μετά την
              δημιουργία τους
              . Αντίθετα, ο Stringbuffer έχει μεταβλητό μήκος και τιμές
              χαρακτήρων.

            • Όπως και για την δημιουργία άλλων αντικειμένων, έτσι και για να δημιουργήσουμε
              αντικείμενα τύπου String χρειάζεται να χρησιμοποιήσουμε τη λέξη new και να
              επικαλεστούμε τον κατασκευαστή.

            Παράδειγμα

            @@ -52,7 +52,7 @@

            Χειρισμός Συμβολοσειρών

          • Το μέγεθος μία συμβολοσειράς επιστρέφεται με το κάλεσμα της συνάρτησεις length()

            String h = "hello world!";
             int l = h.lenght();
          • -
          • Μία αλληλουχία (concatenation) από συμβολοσειρές μπορεί να καλεστεί ως εξής:

            +
          • Μία αλληλουχία (concatenation) από συμβολοσειρές μπορεί να κληθεί ως εξής:

            String h = "hello world";
             System.out.println("This is an example: " + h);
          • Για την μετατροπή ενός αριθμού σε συμοβολοσειρά καλούμε την εξής συνάρτηση:

            @@ -71,7 +71,7 @@

            Σύκριση Συμβολοσειρών

          Μέθοδος substring

            -
          • Για να επιστρέψουμε ένα τμήμα μία συμβολοσειράς χρησιμοποιούμε την substring(int beginIndex, int endIndex)
            η οποία επισρέφει το τμήμα που αρχίζει στη θέση beginIndex και τελειώνει στη θέση endIndex - 1.
          • +
          • Για να επιστρέψουμε ένα τμήμα μία συμβολοσειράς χρησιμοποιούμε την substring(int beginIndex, int endIndex)
            η οποία επιστρέφει το τμήμα που αρχίζει στη θέση beginIndex και τελειώνει στη θέση endIndex - 1.
          // Return sustring "world"
           // H e l l o   w o r l d
          @@ -165,7 +165,7 @@ 

          Παράδειγμα ArrayList

          System.out.println("List contains 2? " + myList.contains(2) + "\n" + "List contains 0? " + myList.contains(0)); - // διαγραφή όλων όλων των στοιχείων από την ArrayList + // διαγραφή όλων των στοιχείων από την ArrayList myList.clear(); System.out.println(myList); } @@ -179,9 +179,9 @@

          Παράδειγμα ArrayList

          []

          LinkedList -- Συνεδεμένη Λίστα

            -
          • Κάθε στοιχεία (κομβος) της λίστας έχει δύο χαρακτηριστήκα, τα δεδομένα και τον δείκτη
            για τον επόμενο κόμβο.
          • +
          • Κάθε στοιχείο (κόμβος) της λίστας έχει δύο χαρακτηριστικά, τα δεδομένα και τον δείκτη
            για τον επόμενο κόμβο.
          • Ο τελευταίος κόμβος πρέπει να αναφέρεται στο null.
          • -
          • Το πρώτο στοιχείο της λίστας ονομάζεται το κεφάλι (head).
          • +
          • Το πρώτο στοιχείο της λίστας ονομάζεται κεφάλι (head).
          // class declaration according to Oracle
           public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Queue<E>, .... {
          @@ -226,13 +226,13 @@ 

          CircleList, a linked list example

          }

          Stack -- Στοίβα

            -
          • Stack προσφέρει 2 βασικές λειτουργίες (μεθόδους)

            +
          • Stack: προσφέρει 2 βασικές λειτουργίες (μεθόδους)

              -
            • push (προσθέτει στοιχεία)
            • +
            • push (προσθέτει στοιχείο)
            • pop (αφαιρεί στοιχείο)
          • -
          • Εκπροσωπεί το μοντέλο "ο τελευταίος ερχόμενος εξυπηρετείται πρώτος" (lifo).
          • -
          • Κάθε φορά μπορεί να αφαιρείτε το παρόν τελευταίο στοιχείο.

          • +
          • Εκπροσωπεί το μοντέλο "αυτός που ήρθε τελευταίος εξυπηρετείται πρώτος" (lifo).
          • +
          • Κάθε φορά μπορεί να αφαιρείται το τελευταίο στοιχείο.

          // The Stack class, as defined by Oracle
           public class Stack<E> extends Vector<E> implements List<E>, ... { 
          @@ -246,7 +246,7 @@ 

          Παράδειγμα Stack (2)

          public class StackDemo { public static void main(String[] args) { - // Αρχικοποιήσει στοίβας + // Αρχικοποιήση στοίβας Stack<Integer> stack = new Stack<>(); // προσθέτουμε στοιχεία στην οροφή της στοίβας @@ -256,15 +256,15 @@

          Παράδειγμα Stack (2)

          stack.push(4); System.out.println(stack); - // δες την τελευταία εισχώρηση + // δες την τελευταία προσθήκη int top = stack.peek(); System.out.println("top element: " + top); - // αφαίρεση το τελευαίο στοιχεία και αποθήκευση + // αφαίρεση του τελευταίου στοιχείου και αποθήκευση int first = stack.pop(); System.out.println("popped element: " + first + "\n" + stack); - // δες τελευταίο στοιχείο + // δες το τελευταίο στοιχείο top = stack.peek(); System.out.println("top element: " + top); } From 8b0fb833dbdf658ed7df8d045c0eb1c25d654897 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 13 Nov 2018 10:06:28 +0000 Subject: [PATCH 46/79] Deploy to GitHub Pages: bfc9975837fa45e48da6cd5107f39f07ae69aead --- tutorials/tutorial_6_A-p.html | 28 +++++++++++++++++++++++----- tutorials/tutorial_6_A.html | 24 +++++++++++++++++++----- 2 files changed, 42 insertions(+), 10 deletions(-) diff --git a/tutorials/tutorial_6_A-p.html b/tutorials/tutorial_6_A-p.html index b75ff50..26cdc04 100644 --- a/tutorials/tutorial_6_A-p.html +++ b/tutorials/tutorial_6_A-p.html @@ -235,13 +235,31 @@ ## Παράδειγμα για Ίχνη Στοίβας +```java +public class ExceptionTesting { + public static void main(String[] args) { + method1(); + } + public static void method1() { method11(); } + public static void method11() { method111(); } + public static void method111() throws NullPointerException { + int[] ar = new int[2]; + System.out.println(ar[3]); + } + +} +``` + + +## Εκτύπωση στόιβας ```java -Exception in thread "main" java.lang.NullPointerException: Fictitious NullPointerException -at StackTraceExample.method111(StackTraceExample.java:15) -at StackTraceExample.method11(StackTraceExample.java:11) -at StackTraceExample.method1(StackTraceExample.java:7) -at StackTraceExample.main(StackTraceExample.java:3) +Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3 + at ExceptionTesting.method111(ExceptionTesting.java:11) + at ExceptionTesting.method11(ExceptionTesting.java:8) + at ExceptionTesting.method1(ExceptionTesting.java:7) + at ExceptionTesting.main(ExceptionTesting.java:4) + ``` diff --git a/tutorials/tutorial_6_A.html b/tutorials/tutorial_6_A.html index b0ae88a..56fb803 100644 --- a/tutorials/tutorial_6_A.html +++ b/tutorials/tutorial_6_A.html @@ -185,11 +185,25 @@

          Ίχνη Στοίβας

        • Η χρήση της μεθόδου printStackTrace() δίνει το δέντρο της
          στοίβας αν κάποια μέθοδος έχει αποτύχει.

        Παράδειγμα για Ίχνη Στοίβας

        -
        Exception in thread "main" java.lang.NullPointerException: Fictitious NullPointerException
        -at StackTraceExample.method111(StackTraceExample.java:15)
        -at StackTraceExample.method11(StackTraceExample.java:11)
        -at StackTraceExample.method1(StackTraceExample.java:7)
        -at StackTraceExample.main(StackTraceExample.java:3)
        +
        public class ExceptionTesting {
        +
        +        public static void main(String[] args) {
        +                method1();
        +        }
        +        public static void method1() { method11(); }
        +        public static void method11() { method111(); }
        +        public static void method111() throws NullPointerException {
        +                int[] ar = new int[2];
        +                System.out.println(ar[3]);
        +        }
        +
        +}
        +

        Εκτύπωση στόιβας

        +
        Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
        +    at ExceptionTesting.method111(ExceptionTesting.java:11)
        +    at ExceptionTesting.method11(ExceptionTesting.java:8)
        +    at ExceptionTesting.method1(ExceptionTesting.java:7)
        +    at ExceptionTesting.main(ExceptionTesting.java:4)

        Δημιουργία εξαιρέσεων

        • Μπορούμε να δημιουργήσουμε τις δικές μας εξαιρέσεις επεκτείνοντας τις κλάσεις π.χ. Exception, RuntimeException
        • From 37b1933ea3fe42e5fa90449a02f3b1a66f70e89d Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 13 Nov 2018 10:25:46 +0000 Subject: [PATCH 47/79] Deploy to GitHub Pages: db6f523514c098aecf8ef877b1af97d76f1cc670 --- tutorials/tutorial_6_A-p.html | 2 +- tutorials/tutorial_6_A.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/tutorial_6_A-p.html b/tutorials/tutorial_6_A-p.html index 26cdc04..55c991a 100644 --- a/tutorials/tutorial_6_A-p.html +++ b/tutorials/tutorial_6_A-p.html @@ -243,7 +243,7 @@ } public static void method1() { method11(); } public static void method11() { method111(); } - public static void method111() throws NullPointerException { + public static void method111() { int[] ar = new int[2]; System.out.println(ar[3]); } diff --git a/tutorials/tutorial_6_A.html b/tutorials/tutorial_6_A.html index 56fb803..22db7d1 100644 --- a/tutorials/tutorial_6_A.html +++ b/tutorials/tutorial_6_A.html @@ -192,7 +192,7 @@

          Παράδειγμα για Ίχνη Στοίβας

          } public static void method1() { method11(); } public static void method11() { method111(); } - public static void method111() throws NullPointerException { + public static void method111() { int[] ar = new int[2]; System.out.println(ar[3]); } From 4a9ab1d0d9054af7d96230aedd14876909b953dd Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 13 Nov 2018 11:09:07 +0000 Subject: [PATCH 48/79] Deploy to GitHub Pages: 8a10bafee9594e66cb28b986936e99d5b9528de8 --- tutorials/tutorial_6_A-p.html | 6 +++++- tutorials/tutorial_6_A.html | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/tutorials/tutorial_6_A-p.html b/tutorials/tutorial_6_A-p.html index 55c991a..72fa873 100644 --- a/tutorials/tutorial_6_A-p.html +++ b/tutorials/tutorial_6_A-p.html @@ -239,7 +239,11 @@ public class ExceptionTesting { public static void main(String[] args) { - method1(); + try { + method1(); + } catch (NullPointerException e) { + e.printStackTrace(); + } } public static void method1() { method11(); } public static void method11() { method111(); } diff --git a/tutorials/tutorial_6_A.html b/tutorials/tutorial_6_A.html index 22db7d1..21d0745 100644 --- a/tutorials/tutorial_6_A.html +++ b/tutorials/tutorial_6_A.html @@ -188,7 +188,11 @@

          Παράδειγμα για Ίχνη Στοίβας

          public class ExceptionTesting {
           
                   public static void main(String[] args) {
          -                method1();
          +          try {
          +                        method1();
          +                } catch (NullPointerException e) {
          +                        e.printStackTrace();
          +                }
                   }
                   public static void method1() { method11(); }
                   public static void method11() { method111(); }
          
          From 409cbe64f224d2a4088c8e7e2b1cb74fd7cb8336 Mon Sep 17 00:00:00 2001
          From: Travis CI 
          Date: Tue, 13 Nov 2018 12:05:37 +0000
          Subject: [PATCH 49/79] Deploy to GitHub Pages:
           ae0980f5a6bc38cd56b354d361771df008b262d2
          
          ---
           tutorials/tutorial_6_A-p.html |  2 +-
           tutorials/tutorial_6_A.html   |  2 +-
           tutorials/tutorial_6_B-p.html | 22 ++++++++++++++--------
           tutorials/tutorial_6_B.html   | 18 +++++++++---------
           4 files changed, 25 insertions(+), 19 deletions(-)
          
          diff --git a/tutorials/tutorial_6_A-p.html b/tutorials/tutorial_6_A-p.html
          index 72fa873..7e62acc 100644
          --- a/tutorials/tutorial_6_A-p.html
          +++ b/tutorials/tutorial_6_A-p.html
          @@ -256,7 +256,7 @@
           ```
           
           
          -## Εκτύπωση στόιβας
          +## Εκτύπωση στοίβας
           ```java
           Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
           	at ExceptionTesting.method111(ExceptionTesting.java:11)
          diff --git a/tutorials/tutorial_6_A.html b/tutorials/tutorial_6_A.html
          index 21d0745..12ccec7 100644
          --- a/tutorials/tutorial_6_A.html
          +++ b/tutorials/tutorial_6_A.html
          @@ -202,7 +202,7 @@ 

          Παράδειγμα για Ίχνη Στοίβας

          } }
          -

          Εκτύπωση στόιβας

          +

          Εκτύπωση στοίβας

          Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
               at ExceptionTesting.method111(ExceptionTesting.java:11)
               at ExceptionTesting.method11(ExceptionTesting.java:8)
          diff --git a/tutorials/tutorial_6_B-p.html b/tutorials/tutorial_6_B-p.html
          index cf3124f..9d16020 100644
          --- a/tutorials/tutorial_6_B-p.html
          +++ b/tutorials/tutorial_6_B-p.html
          @@ -252,12 +252,13 @@
           ```
           
           
          -## LinkedList -- Συνεδεμένη Λίστα
          +## LinkedList -- Συνδεδεμένη Λίστα
           
           * Κάθε στοιχείο (**κόμβος**) της λίστας έχει δύο χαρακτηριστικά, τα δεδομένα και τον δείκτη 
           για τον επόμενο κόμβο.
           * Ο τελευταίος κόμβος πρέπει να αναφέρεται στο **null**.
           * Το πρώτο στοιχείο της λίστας ονομάζεται κεφάλι (**head**).
          +* Στην Java η LinkedList είναι υλοποιημένη ως διπλά συνδεδεμένη λίστα.
           
           ```java
           // class declaration according to Oracle
          @@ -276,18 +277,11 @@
           ## CircleList, a linked list example
           ```java
           class Circle {
          -    /* Linked-list nodes should have a reference of their own
          -    type showing the next element in the list */
               private Circle next;
           
               Circle(){ this.next = null; }
               public void setNext (Circle c) { this.next = c; }
               public Circle getNext () { return this.next; }
          -
          -    /*
          -    * Here follows the code of the original Circle class 
          -    * as presented in the Creating Classes session
          -    */
           }
           
           public class CircleList {
          @@ -311,6 +305,18 @@
           ```
           
           
          +## Σύγκριση ArrayList και LinkedList
          +
          +* Αναζήτηση
          +        * Η ArrayList παρέχει αναζήτηση στοιχείου σε σταθερό χρόνο (ανεξαρτήτως του πλήθους των στοιχείων της λίστας) ενώ η αναζήτηση στην LinkedList εξαρτάται από τον αριθμό των στοιχείων της λίστας.
          +
          +* Λειτουργίες
          +        * Η Linkedlist έχει πιο γρήγορες λειτουργίες εισαγωγής, προσθήκης και αφαίρεσης στοιχείων από την ArrayList.
          +
          +* Χρήση μνήμης
          +        * Η Linkedlist καταναλώνει περισσότερη μνήμη από την ArrayList.
          +
          +
           ##  Stack -- Στοίβα
           * **Stack**: προσφέρει 2 βασικές λειτουργίες (μεθόδους)
           	* push (προσθέτει στοιχείο)
          diff --git a/tutorials/tutorial_6_B.html b/tutorials/tutorial_6_B.html
          index b41782f..d740135 100644
          --- a/tutorials/tutorial_6_B.html
          +++ b/tutorials/tutorial_6_B.html
          @@ -177,11 +177,12 @@ 

          Παράδειγμα ArrayList

          List contains 2? true List contains 0? false []
          -

          LinkedList -- Συνεδεμένη Λίστα

          +

          LinkedList -- Συνδεδεμένη Λίστα

          • Κάθε στοιχείο (κόμβος) της λίστας έχει δύο χαρακτηριστικά, τα δεδομένα και τον δείκτη
            για τον επόμενο κόμβο.
          • Ο τελευταίος κόμβος πρέπει να αναφέρεται στο null.
          • -
          • Το πρώτο στοιχείο της λίστας ονομάζεται κεφάλι (head).
          • +
          • Το πρώτο στοιχείο της λίστας ονομάζεται κεφάλι (head).
          • +
          • Στην Java η LinkedList είναι υλοποιημένη ως διπλά συνδεδεμένη λίστα.
          // class declaration according to Oracle
           public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Queue<E>, .... {
          @@ -192,18 +193,11 @@ 

          Παράδειγμα LinkedList (1)

          Παράδειγμα LinkedList (2)

          CircleList, a linked list example

          class Circle {
          -    /* Linked-list nodes should have a reference of their own
          -    type showing the next element in the list */
               private Circle next;
           
               Circle(){ this.next = null; }
               public void setNext (Circle c) { this.next = c; }
               public Circle getNext () { return this.next; }
          -
          -    /*
          -    * Here follows the code of the original Circle class 
          -    * as presented in the Creating Classes session
          -    */
           }
           
           public class CircleList {
          @@ -224,6 +218,12 @@ 

          CircleList, a linked list example

          } }
          +

          Σύγκριση ArrayList και LinkedList

          +
            +
          • Αναζήτηση
            * Η ArrayList παρέχει αναζήτηση στοιχείου σε σταθερό χρόνο (ανεξαρτήτως του πλήθους των στοιχείων της λίστας) ενώ η αναζήτηση στην LinkedList εξαρτάται από τον αριθμό των στοιχείων της λίστας.

          • +
          • Λειτουργίες
            * Η Linkedlist έχει πιο γρήγορες λειτουργίες εισαγωγής, προσθήκης και αφαίρεσης στοιχείων από την ArrayList.

          • +
          • Χρήση μνήμης
            * Η Linkedlist καταναλώνει περισσότερη μνήμη από την ArrayList.

          • +

          Stack -- Στοίβα

          • Stack: προσφέρει 2 βασικές λειτουργίες (μεθόδους)

            From 6347505d64d256437b0bb857e89772225a7f8eeb Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 13 Nov 2018 12:15:56 +0000 Subject: [PATCH 50/79] Deploy to GitHub Pages: a0ca7b0439263cc3ed8dd0e83662c8d8b6afd4f1 --- tutorials/tutorial_6_B-p.html | 8 ++++---- tutorials/tutorial_6_B.html | 17 +++++++++++++---- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/tutorials/tutorial_6_B-p.html b/tutorials/tutorial_6_B-p.html index 9d16020..f92c163 100644 --- a/tutorials/tutorial_6_B-p.html +++ b/tutorials/tutorial_6_B-p.html @@ -199,7 +199,7 @@ ![](media/collectionsTable.png) -## ArrayList -- Πίνακας Λίστα +## ArrayList -- Λίστα Πίνακα * **ArrayList** είναι μία κλάση που υλοποιεί την διεπαφή **List**. * **ArrayList** μπορεί να αλλάξει μέγεθος δυναμικά. @@ -308,13 +308,13 @@ ## Σύγκριση ArrayList και LinkedList * Αναζήτηση - * Η ArrayList παρέχει αναζήτηση στοιχείου σε σταθερό χρόνο (ανεξαρτήτως του πλήθους των στοιχείων της λίστας) ενώ η αναζήτηση στην LinkedList εξαρτάται από τον αριθμό των στοιχείων της λίστας. + * Η ArrayList παρέχει αναζήτηση στοιχείου σε σταθερό χρόνο (ανεξαρτήτως του πλήθους των στοιχείων της λίστας) ενώ η αναζήτηση στην LinkedList εξαρτάται από τον αριθμό των στοιχείων της λίστας. * Λειτουργίες - * Η Linkedlist έχει πιο γρήγορες λειτουργίες εισαγωγής, προσθήκης και αφαίρεσης στοιχείων από την ArrayList. + * Η Linkedlist έχει πιο γρήγορες λειτουργίες εισαγωγής, προσθήκης και αφαίρεσης στοιχείων από την ArrayList. * Χρήση μνήμης - * Η Linkedlist καταναλώνει περισσότερη μνήμη από την ArrayList. + * Η Linkedlist καταναλώνει περισσότερη μνήμη από την ArrayList. ## Stack -- Στοίβα diff --git a/tutorials/tutorial_6_B.html b/tutorials/tutorial_6_B.html index d740135..a80cfa0 100644 --- a/tutorials/tutorial_6_B.html +++ b/tutorials/tutorial_6_B.html @@ -133,7 +133,7 @@

            Υλοποιήσεις Συλλογών

          Διαπαφές και Υλοποιήσεις

          -

          ArrayList -- Πίνακας Λίστα

          +

          ArrayList -- Λίστα Πίνακα

          • ArrayList είναι μία κλάση που υλοποιεί την διεπαφή List.
          • ArrayList μπορεί να αλλάξει μέγεθος δυναμικά.
          • @@ -220,9 +220,18 @@

            CircleList, a linked list example

            }

          Σύγκριση ArrayList και LinkedList

            -
          • Αναζήτηση
            * Η ArrayList παρέχει αναζήτηση στοιχείου σε σταθερό χρόνο (ανεξαρτήτως του πλήθους των στοιχείων της λίστας) ενώ η αναζήτηση στην LinkedList εξαρτάται από τον αριθμό των στοιχείων της λίστας.

          • -
          • Λειτουργίες
            * Η Linkedlist έχει πιο γρήγορες λειτουργίες εισαγωγής, προσθήκης και αφαίρεσης στοιχείων από την ArrayList.

          • -
          • Χρήση μνήμης
            * Η Linkedlist καταναλώνει περισσότερη μνήμη από την ArrayList.

          • +
          • Αναζήτηση

            +
              +
            • Η ArrayList παρέχει αναζήτηση στοιχείου σε σταθερό χρόνο (ανεξαρτήτως του πλήθους των στοιχείων της λίστας) ενώ η αναζήτηση στην LinkedList εξαρτάται από τον αριθμό των στοιχείων της λίστας.
            • +
          • +
          • Λειτουργίες

            +
              +
            • Η Linkedlist έχει πιο γρήγορες λειτουργίες εισαγωγής, προσθήκης και αφαίρεσης στοιχείων από την ArrayList.
            • +
          • +
          • Χρήση μνήμης

            +
              +
            • Η Linkedlist καταναλώνει περισσότερη μνήμη από την ArrayList.
            • +

          Stack -- Στοίβα

            From aaee54ebdc32ffee043e855085e6124c9fa56304 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 13 Nov 2018 12:22:15 +0000 Subject: [PATCH 51/79] Deploy to GitHub Pages: 6c0150e1c103132d06cba12c85f96bba0f1b1d49 --- tutorials/tutorial_6_B-p.html | 2 -- tutorials/tutorial_6_B.html | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/tutorials/tutorial_6_B-p.html b/tutorials/tutorial_6_B-p.html index f92c163..63e7d57 100644 --- a/tutorials/tutorial_6_B-p.html +++ b/tutorials/tutorial_6_B-p.html @@ -309,10 +309,8 @@ * Αναζήτηση * Η ArrayList παρέχει αναζήτηση στοιχείου σε σταθερό χρόνο (ανεξαρτήτως του πλήθους των στοιχείων της λίστας) ενώ η αναζήτηση στην LinkedList εξαρτάται από τον αριθμό των στοιχείων της λίστας. - * Λειτουργίες * Η Linkedlist έχει πιο γρήγορες λειτουργίες εισαγωγής, προσθήκης και αφαίρεσης στοιχείων από την ArrayList. - * Χρήση μνήμης * Η Linkedlist καταναλώνει περισσότερη μνήμη από την ArrayList. diff --git a/tutorials/tutorial_6_B.html b/tutorials/tutorial_6_B.html index a80cfa0..ac2eea4 100644 --- a/tutorials/tutorial_6_B.html +++ b/tutorials/tutorial_6_B.html @@ -222,11 +222,11 @@

            Σύγκριση ArrayList και LinkedList

          • Αναζήτηση

              -
            • Η ArrayList παρέχει αναζήτηση στοιχείου σε σταθερό χρόνο (ανεξαρτήτως του πλήθους των στοιχείων της λίστας) ενώ η αναζήτηση στην LinkedList εξαρτάται από τον αριθμό των στοιχείων της λίστας.
            • +
            • Η ArrayList παρέχει αναζήτηση στοιχείου σε σταθερό χρόνο (ανεξαρτήτως του πλήθους των στοιχείων της λίστας) ενώ η αναζήτηση στην LinkedList εξαρτάται από τον αριθμό των στοιχείων της λίστας.
          • Λειτουργίες

              -
            • Η Linkedlist έχει πιο γρήγορες λειτουργίες εισαγωγής, προσθήκης και αφαίρεσης στοιχείων από την ArrayList.
            • +
            • Η Linkedlist έχει πιο γρήγορες λειτουργίες εισαγωγής, προσθήκης και αφαίρεσης στοιχείων από την ArrayList.
          • Χρήση μνήμης

              From 417b273c6d512ab4c47f68a81117633ddff53279 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 20 Nov 2018 10:58:38 +0000 Subject: [PATCH 52/79] Deploy to GitHub Pages: a4d18324f81e13cf28cee78bac3479a144fd67e9 --- tutorials/tutorial_7_A-p.html | 52 +++++++++++++++++++---------------- tutorials/tutorial_7_A.html | 44 +++++++++++++---------------- tutorials/tutorial_7_B-p.html | 4 +-- tutorials/tutorial_7_B.html | 8 +++--- 4 files changed, 53 insertions(+), 55 deletions(-) diff --git a/tutorials/tutorial_7_A-p.html b/tutorials/tutorial_7_A-p.html index 98a339a..fa762b2 100644 --- a/tutorials/tutorial_7_A-p.html +++ b/tutorials/tutorial_7_A-p.html @@ -33,7 +33,7 @@ # Προγραμματισμός ΙΙ -# Debugging, BetterCodeHub, and JUnits +# Debugging, BetterCodeHub, and JUnit * [Στέφανος Γεωργίου](https://www.balab.aueb.gr/stefanos-georgiou.html) * [Κωνσταντίνος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) @@ -42,26 +42,26 @@ ## Αποσφαλμάτωση * Ο εντοπισμός σφαλμάτων (debugging) μας επιτρέπει να τρέχουμε ένα -πρόγραμμα και να παρατηρούμε τις τιμές που παίρνουν οι μεταβλητές +πρόγραμμα και να παρατηρούμε την ροή του προγράμματος, τις τιμές που παίρνουν οι μεταβλητές του προγράμματός μας καθώς εκτελείται ο κώδικας. * Χρησιμοποιούμε breakpoints μέσα στο πρόγραμμά μας, όπου θέλουμε -να σταματήσει η εκτέλεση του κώδικα για να τσεκάρουμε τις τιμές +να σταματήσει η εκτέλεση του κώδικα για να ελέγξουμε τις τιμές των αντίστοιχων μεταβλητών. ## Αποσφαλμάτωση στο Eclipse (1) -* Προσθέτουμε τα breakpoints στο πρόγραμμα μας και στην συνέχεια -επιλέγουμε την κλάση που θέλουμε να ελέξουμε από το menu των Projects. +* Προσθέτουμε τα breakpoints στο πρόγραμμά μας και στην συνέχεια +επιλέγουμε την κλάση που θέλουμε να ελέγξουμε από το menu των Projects. ![](media/debugging_2.png) ![](media/debugging_3.png) -## Αποσαλμάτωση στο Eclipse (2) +## Αποσφαλμάτωση στο Eclipse (2) -* Πατάμε δεξί κλικ στην κλαση μας και επιλέγουμε **Debug as -> Java Application** +* Πατάμε δεξί κλικ στην κλάση μας και επιλέγουμε **Debug as -> Java Application** ![](media/debugging_1.png) @@ -73,8 +73,8 @@ ## BetterCodeHub -* Βοηθά στην δημιουργεία συντηρίσημου κώδικα. -* Συνδέεται με τον GitHub αποθετήριο. +* Βοηθά στην δημιουργία συντηρήσιμου κώδικα. +* Συνδέεται με το GitHub repository. * Δίνει μετρήσεις για την κατάσταση του κώδικα. [Σύνδεσμος](https://bettercodehub.com/) @@ -85,7 +85,7 @@ ![](media/BetterCodeHub_1.png) -## Διεπαφή BetteCodeHub +## Διεπαφή BetterCodeHub ![](media/BetterCodeHub_2.png) @@ -102,15 +102,15 @@ ## JUnit -* JUnit είναι ένα framework για να πραγματοποιήσουμε, να τεστάρουμε -μεθόδους ή λειτουργίες στην java. +* Το JUnit είναι ένα framework που μας πραγματοποιούμε tests για τις +μεθόδους και τις λειτουργίες του κώδικά μας. * Προσπαθούμε να τεστάρουμε όσες περισσότερες μεθόδους μπορούμε. Το αν μία μέθοδος είναι εύκολο να τεσταριστεί είναι χαρακτηριστικό ποιοτικού κώδικα. * Τεστάρουμε συνολικά τις κύριες λογικές λειτουργίες του προγραμματός μας σε -όσες περισοότερες διαφορετικές περιπτώσεις μπορούμε. +όσες περισσότερες διαφορετικές περιπτώσεις μπορούμε. * Βασικός λόγος που είναι σημαντικό να γίνουν τα παραπάνω είναι ότι σε κάθε -μεταβολή του κωδικά μας να εχουμε αντίληψη για το ποιά άλλα κομμάτια του κώδικα -έχουν επηρεαστεί. +μεταβολή του κώδικά μας, μπορούμε να εχουμε καλύτερη αντίληψη για το ποιά άλλα κομμάτια του κώδικα +μας έχουν επηρεαστεί. # JUnit και Eclipse(1) @@ -118,28 +118,32 @@ ![](media/junit1.png) -* 1. Επιλέγουμε την κλάση που θέλουμε να τεστάρουμε. Με δεξί κλικ επιλέγουμε New +# JUnit και Eclipse(2) + +* Επιλέγουμε την κλάση που θέλουμε να τεστάρουμε. Με δεξί κλικ επιλέγουμε New από το menu και στη συνέχεια JUnit Test Case. -* 2. Στο νέο παράθυρο που εμφανίζεται αφήνουμε το όνομα του νέου αρχείου -ως έχει π.χ. PrinterTest (Εδώ μπορούμε να επιλέξουμε και σε ποιό package θέλουμε -να βαλουμε τα tests). Eπιλέγουμε Next και ΟΚ. +* Στο νέο παράθυρο που εμφανίζεται θέτουμε ως όνομα του νέου αρχείου +το όνομα της κλάσης που θέλουμε να ελέγξουμε προσθέτοντας την κατάληξη Test, π.χ. PrinterTest (Εδώ μπορούμε να επιλέξουμε και σε ποιό package θέλουμε +να βάλουμε τα tests). Eπιλέγουμε Next και ΟΚ. -# JUnit και Eclipse(2) +# JUnit και Eclipse(3) ![](media/junit2.png) -* 3. Σβήνουμε την fail μέσα στην test μέθοδο και προσθέσουμε τους ελέγχους -μας στην κλάση PrinterTest. Στη συνέχεια, πατάμε δεξί κλικ στην κλάση PrinterTest +# JUnit και Eclipse(4) + +* Σβήνουμε την fail μέσα στην test μέθοδο και προσθέτουμε τους ελέγχους +μας στην Test κλάση. Στη συνέχεια, πατάμε δεξί κλικ στην Test κλάση στον κατάλογο με τα προγράμματα (Projects) και επιλέγουμε Run As -> JUnit Test. -* 4. Αν θέλουμε να τρέξουμε μόνο ένα test, μπορούμε να κάνουμε δεξί κλικ πάνω +* Αν θέλουμε να τρέξουμε μόνο ένα test, μπορούμε να κάνουμε δεξί κλικ πάνω στο όνομα του και να επιλέξουμε πάλι Run As -> JUnit Test. -# JUnit και Eclipse(3) +# JUnit και Eclipse(5) ![](media/junit3.png) diff --git a/tutorials/tutorial_7_A.html b/tutorials/tutorial_7_A.html index 3468a06..f899aef 100644 --- a/tutorials/tutorial_7_A.html +++ b/tutorials/tutorial_7_A.html @@ -32,38 +32,38 @@

              Προγραμματισμός ΙΙ: Debugging and BetterCodeHub

              Προγραμματισμός ΙΙ

              -

              Debugging, BetterCodeHub, and JUnits

              +

              Debugging, BetterCodeHub, and JUnit

              Αποσφαλμάτωση

                -
              • Ο εντοπισμός σφαλμάτων (debugging) μας επιτρέπει να τρέχουμε ένα
                πρόγραμμα και να παρατηρούμε τις τιμές που παίρνουν οι μεταβλητές
                του προγράμματός μας καθώς εκτελείται ο κώδικας.

              • -
              • Χρησιμοποιούμε breakpoints μέσα στο πρόγραμμά μας, όπου θέλουμε
                να σταματήσει η εκτέλεση του κώδικα για να τσεκάρουμε τις τιμές
                των αντίστοιχων μεταβλητών.

              • +
              • Ο εντοπισμός σφαλμάτων (debugging) μας επιτρέπει να τρέχουμε ένα
                πρόγραμμα και να παρατηρούμε την ροή του προγράμματος, τις τιμές που παίρνουν οι μεταβλητές
                του προγράμματός μας καθώς εκτελείται ο κώδικας.

              • +
              • Χρησιμοποιούμε breakpoints μέσα στο πρόγραμμά μας, όπου θέλουμε
                να σταματήσει η εκτέλεση του κώδικα για να ελέγξουμε τις τιμές
                των αντίστοιχων μεταβλητών.

              Αποσφαλμάτωση στο Eclipse (1)

                -
              • Προσθέτουμε τα breakpoints στο πρόγραμμα μας και στην συνέχεια
                επιλέγουμε την κλάση που θέλουμε να ελέξουμε από το menu των Projects.
              • +
              • Προσθέτουμε τα breakpoints στο πρόγραμμά μας και στην συνέχεια
                επιλέγουμε την κλάση που θέλουμε να ελέγξουμε από το menu των Projects.


              -

              Αποσαλμάτωση στο Eclipse (2)

              +

              Αποσφαλμάτωση στο Eclipse (2)

                -
              • Πατάμε δεξί κλικ στην κλαση μας και επιλέγουμε Debug as -> Java Application
              • +
              • Πατάμε δεξί κλικ στην κλάση μας και επιλέγουμε Debug as -> Java Application

              -

              Αποσφαλμάτωση στο Eclipse (2)

              +

              Αποσφαλμάτωση στο Eclipse (2)

              BetterCodeHub

                -
              • Βοηθά στην δημιουργεία συντηρίσημου κώδικα.
              • -
              • Συνδέεται με τον GitHub αποθετήριο.
              • +
              • Βοηθά στην δημιουργία συντηρήσιμου κώδικα.
              • +
              • Συνδέεται με το GitHub repository.
              • Δίνει μετρήσεις για την κατάσταση του κώδικα.

              Σύνδεσμος

              Σύνδεση μέσω GitHub

              -

              Διεπαφή BetteCodeHub

              +

              Διεπαφή BetterCodeHub

              Ρυθμίσεις

              @@ -71,32 +71,26 @@

              Βαθμολογία Κώδικα

              JUnit

                -
              • JUnit είναι ένα framework για να πραγματοποιήσουμε, να τεστάρουμε
                μεθόδους ή λειτουργίες στην java.
              • +
              • Το JUnit είναι ένα framework που μας πραγματοποιούμε tests για τις
                μεθόδους και τις λειτουργίες του κώδικά μας.
              • Προσπαθούμε να τεστάρουμε όσες περισσότερες μεθόδους μπορούμε. Το αν μία
                μέθοδος είναι εύκολο να τεσταριστεί είναι χαρακτηριστικό ποιοτικού κώδικα.
              • -
              • Τεστάρουμε συνολικά τις κύριες λογικές λειτουργίες του προγραμματός μας σε
                όσες περισοότερες διαφορετικές περιπτώσεις μπορούμε.
              • -
              • Βασικός λόγος που είναι σημαντικό να γίνουν τα παραπάνω είναι ότι σε κάθε
                μεταβολή του κωδικά μας να εχουμε αντίληψη για το ποιά άλλα κομμάτια του κώδικα
                έχουν επηρεαστεί.
              • +
              • Τεστάρουμε συνολικά τις κύριες λογικές λειτουργίες του προγραμματός μας σε
                όσες περισσότερες διαφορετικές περιπτώσεις μπορούμε.
              • +
              • Βασικός λόγος που είναι σημαντικό να γίνουν τα παραπάνω είναι ότι σε κάθε
                μεταβολή του κώδικά μας, μπορούμε να εχουμε καλύτερη αντίληψη για το ποιά άλλα κομμάτια του κώδικα
                μας έχουν επηρεαστεί.

              JUnit και Eclipse(1)

              +

              JUnit και Eclipse(2)

                -
                1. Επιλέγουμε την κλάση που θέλουμε να τεστάρουμε. Με δεξί κλικ επιλέγουμε New
                  από το menu και στη συνέχεια JUnit Test Case.
                2. -
              • -
                1. -
                2. Στο νέο παράθυρο που εμφανίζεται αφήνουμε το όνομα του νέου αρχείου
                  ως έχει π.χ. PrinterTest (Εδώ μπορούμε να επιλέξουμε και σε ποιό package θέλουμε
                  να βαλουμε τα tests). Eπιλέγουμε Next και ΟΚ.
                3. -
              • +
              • Στο νέο παράθυρο που εμφανίζεται θέτουμε ως όνομα του νέου αρχείου
                το όνομα της κλάσης που θέλουμε να ελέγξουμε προσθέτοντας την κατάληξη Test, π.χ. PrinterTest (Εδώ μπορούμε να επιλέξουμε και σε ποιό package θέλουμε
                να βάλουμε τα tests). Eπιλέγουμε Next και ΟΚ.
              -

              JUnit και Eclipse(2)

              +

              JUnit και Eclipse(3)

              +

              JUnit και Eclipse(4)

                -
                1. -
                2. Σβήνουμε την fail μέσα στην test μέθοδο και προσθέσουμε τους ελέγχους
                  μας στην κλάση PrinterTest. Στη συνέχεια, πατάμε δεξί κλικ στην κλάση PrinterTest
                  στον κατάλογο με τα προγράμματα (Projects) και επιλέγουμε
                  Run As -> JUnit Test.
                3. -
              • -
                1. +
                2. Σβήνουμε την fail μέσα στην test μέθοδο και προσθέτουμε τους ελέγχους
                  μας στην Test κλάση. Στη συνέχεια, πατάμε δεξί κλικ στην Test κλάση
                  στον κατάλογο με τα προγράμματα (Projects) και επιλέγουμε
                  Run As -> JUnit Test.
                3. Αν θέλουμε να τρέξουμε μόνο ένα test, μπορούμε να κάνουμε δεξί κλικ πάνω
                  στο όνομα του και να επιλέξουμε πάλι
                  Run As -> JUnit Test.
                4. -
              -

              JUnit και Eclipse(3)

              +

              JUnit και Eclipse(5)


              diff --git a/tutorials/tutorial_7_B-p.html b/tutorials/tutorial_7_B-p.html index ded1a3e..e874d75 100644 --- a/tutorials/tutorial_7_B-p.html +++ b/tutorials/tutorial_7_B-p.html @@ -57,7 +57,7 @@ ## Τρόποι διαχείρισης αρχείων (1)
              -**Byte Streams**: εισαγωή και εξαγωγή 8-bit ή 1 byte. Χρησιμοποιούνται για χαμηλού επιπέδου διαχείριση δεδομένων εισόδου και εξόδου. Η είσοδος και η έξοδος από ένα αρχείο βασίζεται σε bytes. +**Byte Streams**: εισαγωγή και εξαγωγή 8-bit ή 1 byte. Χρησιμοποιούνται για χαμηλού επιπέδου διαχείριση δεδομένων εισόδου και εξόδου. Η είσοδος και η έξοδος από ένα αρχείο βασίζεται σε bytes.
              ```java @@ -114,7 +114,6 @@ * Εάν δε βρεθεί το αρχείο, πετάει την εξαίρεση: **FileNotFoundException**. * Με **DataInputStream**: διαβάζει πρωταρχικούς τύπους δεδομένων (boolean, char, double, float, etc.) και String. * Γράφει ένα String σε ένα αρχείο με τη χρήση της writeUTF(String str). - * Mπορεί να πετάξει IOException (προβλήματα εισόδου/εξόδου), γι’ αυτό πρέπει να χρησιμοποιούνται οι μέθοδοι .flush() για τις ροές (πετάει τα δεδομένα του buffer στο αρχείο). ## Εγγραφή σε αρχείο @@ -125,6 +124,7 @@ * Μπορεί να γράψει μέχρι ένα συγκεκριμένο αριθμό δεδομένων με την χρήση της write(byte[] b). * Εάν δε βρεθεί το αρχείο, πετάει την εξαίρεση: **FileNotFoundException**. * Με **DataOutputStream**: γράφει πρωταρχικούς τύπους δεδομένων (boolean, char, double, float, etc.) και String. + * Mπορεί να πετάξει IOException (προβλήματα εισόδου/εξόδου), γι’ αυτό πρέπει να χρησιμοποιούνται οι μέθοδοι .flush() για τις ροές (πετάει τα δεδομένα του buffer στο αρχείο). diff --git a/tutorials/tutorial_7_B.html b/tutorials/tutorial_7_B.html index 6f97110..7fd005b 100644 --- a/tutorials/tutorial_7_B.html +++ b/tutorials/tutorial_7_B.html @@ -47,7 +47,7 @@

              Ροή Εισόδου και Εξόδου (I/O Streams)<


              Τρόποι διαχείρισης αρχείων (1)

              -**Byte Streams**: εισαγωή και εξαγωγή 8-bit ή 1 byte. Χρησιμοποιούνται για χαμηλού επιπέδου διαχείριση δεδομένων εισόδου και εξόδου. Η είσοδος και η έξοδος από ένα αρχείο βασίζεται σε bytes. +**Byte Streams**: εισαγωγή και εξαγωγή 8-bit ή 1 byte. Χρησιμοποιούνται για χαμηλού επιπέδου διαχείριση δεδομένων εισόδου και εξόδου. Η είσοδος και η έξοδος από ένα αρχείο βασίζεται σε bytes.
              @@ -91,8 +91,7 @@

              Ανάγνωση αρχείου

              • Εάν δε βρεθεί το αρχείο, πετάει την εξαίρεση: FileNotFoundException.
              • Με DataInputStream: διαβάζει πρωταρχικούς τύπους δεδομένων (boolean, char, double, float, etc.) και String.
              • -
              • Γράφει ένα String σε ένα αρχείο με τη χρήση της writeUTF(String str).
              • -
              • Mπορεί να πετάξει IOException (προβλήματα εισόδου/εξόδου), γι’ αυτό πρέπει να χρησιμοποιούνται οι μέθοδοι .flush() για τις ροές (πετάει τα δεδομένα του buffer στο αρχείο).
              • +
              • Γράφει ένα String σε ένα αρχείο με τη χρήση της writeUTF(String str).

            Εγγραφή σε αρχείο

            @@ -104,7 +103,8 @@

            Εγγραφή σε αρχείο

          • Μπορεί να γράψει μέχρι ένα συγκεκριμένο αριθμό δεδομένων με την χρήση της write(byte[] b).

            • Εάν δε βρεθεί το αρχείο, πετάει την εξαίρεση: FileNotFoundException.
            • -
            • Με DataOutputStream: γράφει πρωταρχικούς τύπους δεδομένων (boolean, char, double, float, etc.) και String.
            • +
            • Με DataOutputStream: γράφει πρωταρχικούς τύπους δεδομένων (boolean, char, double, float, etc.) και String.
            • +
            • Mπορεί να πετάξει IOException (προβλήματα εισόδου/εξόδου), γι’ αυτό πρέπει να χρησιμοποιούνται οι μέθοδοι .flush() για τις ροές (πετάει τα δεδομένα του buffer στο αρχείο).
          From 8db1d17037e5b951a5f89b51205ed24ff4582aca Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 27 Nov 2018 10:27:28 +0000 Subject: [PATCH 53/79] Deploy to GitHub Pages: 07f732bd6686c01107376177dc8943b5011e9f64 --- tutorials-p.html | 7 +- tutorials.html | 7 +- tutorials/media/coordinates.png | Bin 0 -> 4354 bytes tutorials/tutorial_8_A-p.html | 165 +++------------- tutorials/tutorial_8_A.html | 302 ++--------------------------- tutorials/tutorial_9_A-p.html | 230 ++++++++++++++++++++++ tutorials/tutorial_9_A.html | 328 ++++++++++++++++++++++++++++++++ 7 files changed, 616 insertions(+), 423 deletions(-) create mode 100644 tutorials/media/coordinates.png create mode 100644 tutorials/tutorial_9_A-p.html create mode 100644 tutorials/tutorial_9_A.html diff --git a/tutorials-p.html b/tutorials-p.html index aa48edd..63f8cf1 100644 --- a/tutorials-p.html +++ b/tutorials-p.html @@ -69,7 +69,12 @@

          Φροντιστήριο 7

        Φροντιστήριο 8

        +

        Φροντιστήριο 9

        +
        diff --git a/tutorials.html b/tutorials.html index a49c4ae..ddece49 100644 --- a/tutorials.html +++ b/tutorials.html @@ -69,7 +69,12 @@

        Φροντιστήριο 7

      Φροντιστήριο 8

      +

      Φροντιστήριο 9

      +
      diff --git a/tutorials/media/coordinates.png b/tutorials/media/coordinates.png new file mode 100644 index 0000000000000000000000000000000000000000..5103e14249c66fe2e05bbb6a98d20b8aa4f4f30a GIT binary patch literal 4354 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 literal 0 HcmV?d00001 diff --git a/tutorials/tutorial_8_A-p.html b/tutorials/tutorial_8_A-p.html index 0d357ca..43130e8 100644 --- a/tutorials/tutorial_8_A-p.html +++ b/tutorials/tutorial_8_A-p.html @@ -4,7 +4,7 @@ - Κανονικές εκφράσεις + Γραφικές Εφαρμογές @@ -28,167 +28,56 @@ diff --git a/tutorials/tutorial_8_A.html b/tutorials/tutorial_8_A.html index e7437dd..afdda57 100644 --- a/tutorials/tutorial_8_A.html +++ b/tutorials/tutorial_8_A.html @@ -5,7 +5,7 @@ - Κανονικές εκφράσεις + Γραφικές Εφαρμογές @@ -29,298 +29,34 @@ -

      Προγραμματισμός ΙΙ: Κανονικές εκφράσεις

      +

      Προγραμματισμός ΙΙ: Γραφικές Εφαρμογές

      Προγραμματισμός ΙΙ

      -

      Καννονικές Εκφράσεις

      +

      Γραφικές Εφαρμογές

      -

      Κανονικές Εκφράσεις

      +

      Γραφικά

        -
      • Είναι σειρές από χαρακτήρες, αριθμούς και ειδικά σύμβολα που εκφράζουν καθορισμένα πρότυπα βάσει συγκεκριμένης σύνταξης.
      • -
      • Χρησιμοποιούνται για ταυτοποίηση συγκεκριμένων μοτίβων (pattern matching) κανονικών εκφράσεων (regular expressions) σε λέξεις, προτάσεις, αριθμούς, και αρχεία.
      • -
      • Βοηθούν στην αναζήτηση, στην επεξεργασία και στο χειρισμό κειμένου και δεδομένων.
      • +
      • Στην Java μπορούμε να χρησιμοποιήσουμε βιβλιοθήκες όπως την swing και awt ώστε να δημιουργήσουμε
        γραφικές διεπαφές.
      • +
      • Η awt είναι η πρώτη βιβλιοθήκη γραφικών που φτίαχτηκε για την Java ενώ η swing
        η πιο πρόσφατη.
      • +
      • Υπάρχουν εργαλεία όπως το NetBeans που ευκολύνουν την χρήση γραφικών (drag & drop).
      -

      Ειδικά Σύμβολα (1)

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      ΜοτίβοΕπεξήγησηΠαράδειγμα
      [ab]ταιριάζει κάθε χαρακτήρα μέσα στις αγκύλεςri[cs]e -> rice ή rise
      abc|adcταιριάζει είτε τη μία είτε την άλλη λέξηman|men -> man ή men
      ^ταιριάζει το μοτίβο στην αρχή της γραμμής^What-> What time...
      $ταιριάζει το μοτίβο στο τέλος της γραμμήςo'clock.$ -> 8 o'clock.
      ?0 ή 1 εμφάνιση του προηγούμενου μοτίβουcolou?r -> Light blue is my colour
      -

      Ειδικά Σύμβολα (2)

      - - - - - - - - - - - - - - - - - - - - -
      ΜοτίβοΕπεξήγησηΠαράδειγμα
      +1 ή περισσότερες εμφανίσεις του προηγούμενου μοτίβου[123]+-> 2
      *0 ή περισσότερες εμφανίσεις του προηγούμενου μοτίβου[123]*->456 |
      | {n} | ταιριάζει ένα συγκεκριμένο αριθμό ψηφίων | 5{3}-> 555 |
      | {min,max} | ταιριάζει από/μέχρι ένα συγκεκριμένο αριθμό ψηφίων | m{1,5}->mmmm |
      | [0-9] | ταιριάζει αριθμούς από 0 έως 9 | [0-9] -> 7 |
      -

      Ειδικά Σύμβολα (3)

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      ΜοτίβοΕπεξήγησηΠαράδειγμα
      [a-zA-Z]ταιριάζει γράμματα από το a έως το z κεφαλαία και μικρά[a-zA-Z] -> r
      [^a-z]δεν ταιριάζει ό,τι υπάρχει μέσα στα άγκυστρα[^a-z] -> R
      \n, \tταιριάζει χαρακτήρες με backslashnew line\n -> \n
      \wταιριάζει γράμματα χαρακτήρες [0-9Α-Ζa-z_][\w]\t -> o\t
      \Wδεν ταιριάζει γράμματα χαρακτήρες [^0-9Α-Ζa-z_][\W] -> \n
      -

      Ειδικά Σύμβολα (4)

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      ΜοτίβοΕπεξήγησηΠαράδειγμα
      \dταιριάζει ψηφία όπως το [0-9][\d] -> 7
      \Dδεν ταιριάζει ψηφία όπως το [^0-9][\D] -> a
      \sταιριάζει whitespace χαρακτήρες όπως [\t\n\r]a\s -> a (space)
      \Sδεν ταιριάζει whitespace χαρακτήρες όπως [^\t\n\r]a[^\t\n\r] -> cat
      .ταιριάζει οτιδήποτε.+ -> jdf235!\n
      -

      Κανονικές εκφράσεις στη Java

      +

      Χρήσιμες μεθόδοι AWT

        -
      • Για τη χρήση κανονικών εκφράσεων στη Java χρησιμοποιείται το java.util.regex API το οποίο διαθέτει 3 βασικές κλάσεις: Pattern, Matcher, και PatternSyntaxException.
      • -
      • Η κλάση String διαθέτει μεθόδους που χρησιμοποιούν κανονικές εκφράσεις
        (Summary of regular-expression constructs:
        https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html).
      • +
      • Σχεδίαση ευθείας γραμμής: drawLine(int x1, int y1, int x2, int y2)
      • +
      • Σχεδίαση παραλληλογράμμου: drawRect(int x, int y, int width, int height)
      • +
      • Σχεδίαση παραλληλογράμμου με χρώμα: fillRect(int x, int y, int width, int height)
      -

      Μεθόδοι της κλάσης String για κανονικές εκφράσεις

      - - - - - - - - - - - - - - - - - - - - - - - - - -
      ΤύποςΌνομα μεθόδουΠεριγραφή
      booleanmatches(String regex)επιστρέφει true αν υπάρχει η έκφραση
      StringreplaceAll(String regex, String relpacement)αλλάζει μία έκφραση με μία συγκεκριμένη συμβολοσειρά
      String[]split(String regex)Σπάει μια συμβολοσειρά σε ένα πίνακα από συμβολοσειρές
      -

      Μοτίβα

      - - - - - - - - - - - - - - - - - - - - - - - - - -
      ΤύποςΌνομα μεθόδουΠεριγραφή
      static Patterncompile(String regex)μεταγλωττίζει την κανονική έκφραση σε μοτίβο
      static Patterncompile(String regex, int flag)μεταγλωττίζει την κανονική έκφραση σε μοτίβο με "σημαίες"
      static Patternmatches(String regex, CharSequence input)Προσπαθεί να ταιριάξει το μοτίβο με δεδομένα εισόδου
      -

      Ταιριαστής

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      ΤύποςΌνομα μεθόδουΠεριγραφή
      booleanmatches()προσπαθεί να βρει την εμφάνιση ενός μοτίβου
      intstart()επιστρέφει την θέση που αρχίζει η έκφραση
      intend()επιστρέφει την θέση που τελειώνει η έκφραση +1
      booleanfind()ψάχνει εμφανίσεις της κανονικής έκφρασης σε ένα κείμενο
      -

      Παράδειγμα (1)

      -
      import java.util.regex.Matcher;
      -import java.util.regex.Pattern;
      -import java.util.regex.PatternSyntaxException;
      -
      -public class RegexMatchFind {
      -    public static void main(String[] args) throws PatternSyntaxException {
      -        Pattern p = Pattern.compile("[\\d]{3}");
      -        Matcher m = p.matcher("a123b");
      -        System.out.println(m.find());
      -        System.out.println(m.matches());
      -        boolean b = Pattern.matches("[\\d]{3}", "a123b");
      -        System.out.println(b);
      -
      -        p = Pattern.compile("^[a-z0-9]+$");
      -        m = p.matcher("123");
      -        System.out.println(m.find());
      -        System.out.println(m.matches());
      -        boolean c = Pattern.matches("^[a-z0-9]+$", "123");
      -        System.out.println(c);
      -    }
      -}
      -

      Παράδειγμα (2)

      -
      import java.util.regex.Matcher;
      -import java.util.regex.Pattern;
      -
      -public class SimpleRegex {
      -    
      -    public static void main(String args[]) {
      -        // String for the pattern-matching.
      -        String line = "New order 567TW.";
      -        // Given pattern
      -        String pattern = "[0-9]+(Q|TW){1,2}.";
      -
      -        // Pattern object
      -        Pattern r = Pattern.compile(pattern);
      -        // Matcher object.
      -        Matcher m = r.matcher(line);
      -        
      -        // Check
      -        if (m.find()) {
      -            System.out.println(m.group());
      -        } else {
      -            System.out.println("NO MATCH");
      -        }
      -
      -        // Replace m with the given string
      -        line = m.replaceAll("##");
      -        System.out.println(line);
      -        
      -        String line2 = "mesquite in your cellar";
      -        System.out.println(line2.replace('e', 'o'));
      -    }
      -}
      +

      Παράδειγμα drawRect

      +

      +

      Παράδειγμα

      +

      Το κέντρο του τετραγώνου είνα (99,89) και πλευρά μήκους 38.

      +

      drawRect(int x, int y, int width, int height);

      +

      x = ?
      y = ?
      width = ?
      height = ?

      +

      Παράδειγμα

      +

      x = 80
      y = 70
      width = 38
      height = 38


      Creative Commons Licence
      This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. diff --git a/tutorials/tutorial_9_A-p.html b/tutorials/tutorial_9_A-p.html new file mode 100644 index 0000000..2db5077 --- /dev/null +++ b/tutorials/tutorial_9_A-p.html @@ -0,0 +1,230 @@ + + + + + + + Κανονικές εκφράσεις + + + + + + + + + + + +
      +
      +
      + +
      +
      +

      License

      +Creative Commons Licence
      This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
      +
      +
      + + + + + + + diff --git a/tutorials/tutorial_9_A.html b/tutorials/tutorial_9_A.html new file mode 100644 index 0000000..790c28e --- /dev/null +++ b/tutorials/tutorial_9_A.html @@ -0,0 +1,328 @@ + + + + + + + + Κανονικές εκφράσεις + + + + + + + + + + + + + + + + + + + + +

      Προγραμματισμός ΙΙ: Κανονικές εκφράσεις

      +

      +

      Προγραμματισμός ΙΙ

      +

      Κανονικές Εκφράσεις

      + +

      Κανονικές Εκφράσεις

      +
        +
      • Είναι σειρές από χαρακτήρες, αριθμούς και ειδικά σύμβολα που εκφράζουν καθορισμένα πρότυπα βάσει συγκεκριμένης σύνταξης.
      • +
      • Χρησιμοποιούνται για ταυτοποίηση συγκεκριμένων μοτίβων (pattern matching) κανονικών εκφράσεων (regular expressions) σε λέξεις, προτάσεις, αριθμούς, και αρχεία.
      • +
      • Βοηθούν στην αναζήτηση, στην επεξεργασία και στο χειρισμό κειμένου και δεδομένων.
      • +
      +

      Ειδικά Σύμβολα (1)

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ΜοτίβοΕπεξήγησηΠαράδειγμα
      [ab]ταιριάζει κάθε χαρακτήρα μέσα στις αγκύλεςri[cs]e -> rice ή rise
      abc|adcταιριάζει είτε τη μία είτε την άλλη λέξηman|men -> man ή men
      ^ταιριάζει το μοτίβο στην αρχή της γραμμής^What-> What time...
      $ταιριάζει το μοτίβο στο τέλος της γραμμήςo'clock.$ -> 8 o'clock.
      ?0 ή 1 εμφάνιση του προηγούμενου μοτίβουcolou?r -> Light blue is my colour
      +

      Ειδικά Σύμβολα (2)

      + + + + + + + + + + + + + + + + + + + + +
      ΜοτίβοΕπεξήγησηΠαράδειγμα
      +1 ή περισσότερες εμφανίσεις του προηγούμενου μοτίβου[123]+-> 2
      *0 ή περισσότερες εμφανίσεις του προηγούμενου μοτίβου[123]*->456 |
      | {n} | ταιριάζει ένα συγκεκριμένο αριθμό ψηφίων | 5{3}-> 555 |
      | {min,max} | ταιριάζει από/μέχρι ένα συγκεκριμένο αριθμό ψηφίων | m{1,5}->mmmm |
      | [0-9] | ταιριάζει αριθμούς από 0 έως 9 | [0-9] -> 7 |
      +

      Ειδικά Σύμβολα (3)

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ΜοτίβοΕπεξήγησηΠαράδειγμα
      [a-zA-Z]ταιριάζει γράμματα από το a έως το z κεφαλαία και μικρά[a-zA-Z] -> r
      [^a-z]δεν ταιριάζει ό,τι υπάρχει μέσα στα άγκυστρα[^a-z] -> R
      \n, \tταιριάζει χαρακτήρες με backslashnew line\n -> \n
      \wταιριάζει γράμματα χαρακτήρες [0-9Α-Ζa-z_][\w]\t -> o\t
      \Wδεν ταιριάζει γράμματα χαρακτήρες [^0-9Α-Ζa-z_][\W] -> \n
      +

      Ειδικά Σύμβολα (4)

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ΜοτίβοΕπεξήγησηΠαράδειγμα
      \dταιριάζει ψηφία όπως το [0-9][\d] -> 7
      \Dδεν ταιριάζει ψηφία όπως το [^0-9][\D] -> a
      \sταιριάζει whitespace χαρακτήρες όπως [\t\n\r]a\s -> a (space)
      \Sδεν ταιριάζει whitespace χαρακτήρες όπως [^\t\n\r]a[^\t\n\r] -> cat
      .ταιριάζει οτιδήποτε.+ -> jdf235!\n
      +

      Κανονικές εκφράσεις στη Java

      +
        +
      • Για τη χρήση κανονικών εκφράσεων στη Java χρησιμοποιείται το java.util.regex API το οποίο διαθέτει 3 βασικές κλάσεις: Pattern, Matcher, και PatternSyntaxException.
      • +
      • Η κλάση String διαθέτει μεθόδους που χρησιμοποιούν κανονικές εκφράσεις
        (Summary of regular-expression constructs:
        https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html).
      • +
      +

      Μεθόδοι της κλάσης String για κανονικές εκφράσεις

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      ΤύποςΌνομα μεθόδουΠεριγραφή
      booleanmatches(String regex)επιστρέφει true αν υπάρχει η έκφραση
      StringreplaceAll(String regex, String relpacement)αλλάζει μία έκφραση με μία συγκεκριμένη συμβολοσειρά
      String[]split(String regex)Σπάει μια συμβολοσειρά σε ένα πίνακα από συμβολοσειρές
      +

      Μοτίβα

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      ΤύποςΌνομα μεθόδουΠεριγραφή
      static Patterncompile(String regex)μεταγλωττίζει την κανονική έκφραση σε μοτίβο
      static Patterncompile(String regex, int flag)μεταγλωττίζει την κανονική έκφραση σε μοτίβο με "σημαίες"
      static Patternmatches(String regex, CharSequence input)Προσπαθεί να ταιριάξει το μοτίβο με δεδομένα εισόδου
      +

      Ταιριαστής

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ΤύποςΌνομα μεθόδουΠεριγραφή
      booleanmatches()προσπαθεί να βρει την εμφάνιση ενός μοτίβου
      intstart()επιστρέφει την θέση που αρχίζει η έκφραση
      intend()επιστρέφει την θέση που τελειώνει η έκφραση +1
      booleanfind()ψάχνει εμφανίσεις της κανονικής έκφρασης σε ένα κείμενο
      +

      Παράδειγμα (1)

      +
      import java.util.regex.Matcher;
      +import java.util.regex.Pattern;
      +import java.util.regex.PatternSyntaxException;
      +
      +public class RegexMatchFind {
      +    public static void main(String[] args) throws PatternSyntaxException {
      +        Pattern p = Pattern.compile("[\\d]{3}");
      +        Matcher m = p.matcher("a123b");
      +        System.out.println(m.find());
      +        System.out.println(m.matches());
      +        boolean b = Pattern.matches("[\\d]{3}", "a123b");
      +        System.out.println(b);
      +
      +        p = Pattern.compile("^[a-z0-9]+$");
      +        m = p.matcher("123");
      +        System.out.println(m.find());
      +        System.out.println(m.matches());
      +        boolean c = Pattern.matches("^[a-z0-9]+$", "123");
      +        System.out.println(c);
      +    }
      +}
      +

      Παράδειγμα (2)

      +
      import java.util.regex.Matcher;
      +import java.util.regex.Pattern;
      +
      +public class SimpleRegex {
      +    
      +    public static void main(String args[]) {
      +        // String for the pattern-matching.
      +        String line = "New order 567TW.";
      +        // Given pattern
      +        String pattern = "[0-9]+(Q|TW){1,2}.";
      +
      +        // Pattern object
      +        Pattern r = Pattern.compile(pattern);
      +        // Matcher object.
      +        Matcher m = r.matcher(line);
      +        
      +        // Check
      +        if (m.find()) {
      +            System.out.println(m.group());
      +        } else {
      +            System.out.println("NO MATCH");
      +        }
      +
      +        // Replace m with the given string
      +        line = m.replaceAll("##");
      +        System.out.println(line);
      +        
      +        String line2 = "mesquite in your cellar";
      +        System.out.println(line2.replace('e', 'o'));
      +    }
      +}
      + +
      +Creative Commons Licence
      This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + From 869ffac61619e4501b0bcae201ca86549f092996 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 27 Nov 2018 10:31:12 +0000 Subject: [PATCH 54/79] Deploy to GitHub Pages: 17e0ed6ba6dceb96597543b5cc210003af9791cb --- tutorials/tutorial_8_A-p.html | 2 +- tutorials/tutorial_8_A.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/tutorial_8_A-p.html b/tutorials/tutorial_8_A-p.html index 43130e8..91c9721 100644 --- a/tutorials/tutorial_8_A-p.html +++ b/tutorials/tutorial_8_A-p.html @@ -44,7 +44,7 @@ * Στην Java μπορούμε να χρησιμοποιήσουμε βιβλιοθήκες όπως την __swing__ και __awt__ ώστε να δημιουργήσουμε γραφικές διεπαφές. * Η __awt__ είναι η πρώτη βιβλιοθήκη γραφικών που φτίαχτηκε για την Java ενώ η __swing__ -η πιο πρόσφατη. +είναι η πιο πρόσφατη. * Υπάρχουν εργαλεία όπως το NetBeans που ευκολύνουν την χρήση γραφικών (drag & drop). diff --git a/tutorials/tutorial_8_A.html b/tutorials/tutorial_8_A.html index afdda57..985ebd5 100644 --- a/tutorials/tutorial_8_A.html +++ b/tutorials/tutorial_8_A.html @@ -40,7 +40,7 @@

      Γραφικές Εφαρμογές

      Γραφικά

      • Στην Java μπορούμε να χρησιμοποιήσουμε βιβλιοθήκες όπως την swing και awt ώστε να δημιουργήσουμε
        γραφικές διεπαφές.
      • -
      • Η awt είναι η πρώτη βιβλιοθήκη γραφικών που φτίαχτηκε για την Java ενώ η swing
        η πιο πρόσφατη.
      • +
      • Η awt είναι η πρώτη βιβλιοθήκη γραφικών που φτίαχτηκε για την Java ενώ η swing
        είναι η πιο πρόσφατη.
      • Υπάρχουν εργαλεία όπως το NetBeans που ευκολύνουν την χρήση γραφικών (drag & drop).

      Χρήσιμες μεθόδοι AWT

      From 7628e3ceff1389caf80f36aeb5f934f9fdd994ec Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 27 Nov 2018 11:55:49 +0000 Subject: [PATCH 55/79] Deploy to GitHub Pages: 3eb14b40f1fb511f16d8ebfc4d24e07c42f981f8 --- tutorials/tutorial_8_A-p.html | 6 +++--- tutorials/tutorial_8_A.html | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tutorials/tutorial_8_A-p.html b/tutorials/tutorial_8_A-p.html index 91c9721..d784c21 100644 --- a/tutorials/tutorial_8_A-p.html +++ b/tutorials/tutorial_8_A-p.html @@ -43,9 +43,9 @@ * Στην Java μπορούμε να χρησιμοποιήσουμε βιβλιοθήκες όπως την __swing__ και __awt__ ώστε να δημιουργήσουμε γραφικές διεπαφές. -* Η __awt__ είναι η πρώτη βιβλιοθήκη γραφικών που φτίαχτηκε για την Java ενώ η __swing__ +* Η __awt__ είναι η πρώτη βιβλιοθήκη γραφικών που φτιάχτηκε για την Java ενώ η __swing__ είναι η πιο πρόσφατη. -* Υπάρχουν εργαλεία όπως το NetBeans που ευκολύνουν την χρήση γραφικών (drag & drop). +* Υπάρχουν εργαλεία όπως το NetBeans που διευκολύνουν την χρήση γραφικών (drag & drop). ## Χρήσιμες μεθόδοι AWT @@ -62,7 +62,7 @@ ## Παράδειγμα -Το κέντρο του τετραγώνου είνα (99,89) και πλευρά μήκους 38. +Το κέντρο του τετραγώνου είναι (99,89) και έχει πλευρά μήκους 38. drawRect(int x, int y, int width, int height); diff --git a/tutorials/tutorial_8_A.html b/tutorials/tutorial_8_A.html index 985ebd5..3418dd2 100644 --- a/tutorials/tutorial_8_A.html +++ b/tutorials/tutorial_8_A.html @@ -40,8 +40,8 @@

      Γραφικές Εφαρμογές

      Γραφικά

      • Στην Java μπορούμε να χρησιμοποιήσουμε βιβλιοθήκες όπως την swing και awt ώστε να δημιουργήσουμε
        γραφικές διεπαφές.
      • -
      • Η awt είναι η πρώτη βιβλιοθήκη γραφικών που φτίαχτηκε για την Java ενώ η swing
        είναι η πιο πρόσφατη.
      • -
      • Υπάρχουν εργαλεία όπως το NetBeans που ευκολύνουν την χρήση γραφικών (drag & drop).
      • +
      • Η awt είναι η πρώτη βιβλιοθήκη γραφικών που φτιάχτηκε για την Java ενώ η swing
        είναι η πιο πρόσφατη.
      • +
      • Υπάρχουν εργαλεία όπως το NetBeans που διευκολύνουν την χρήση γραφικών (drag & drop).

      Χρήσιμες μεθόδοι AWT

        @@ -52,7 +52,7 @@

        Χρήσιμες μεθόδοι AWT

        Παράδειγμα drawRect

        Παράδειγμα

        -

        Το κέντρο του τετραγώνου είνα (99,89) και πλευρά μήκους 38.

        +

        Το κέντρο του τετραγώνου είναι (99,89) και έχει πλευρά μήκους 38.

        drawRect(int x, int y, int width, int height);

        x = ?
        y = ?
        width = ?
        height = ?

        Παράδειγμα

        From 9f3a96bad51f27544129b5f6eadaeb6e226a7109 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 4 Dec 2018 10:10:08 +0000 Subject: [PATCH 56/79] Deploy to GitHub Pages: f4f5cb5ad024399938e0233989cc92c752d16bb7 --- tutorials/tutorial_9_A-p.html | 2 -- tutorials/tutorial_9_A.html | 10 ---------- 2 files changed, 12 deletions(-) diff --git a/tutorials/tutorial_9_A-p.html b/tutorials/tutorial_9_A-p.html index 2db5077..220927b 100644 --- a/tutorials/tutorial_9_A-p.html +++ b/tutorials/tutorial_9_A-p.html @@ -83,8 +83,6 @@ | Μοτίβο | Επεξήγηση | Παράδειγμα | |:------:|:---------------------------------------------------:|:-----------------:| -| \d | ταιριάζει ψηφία όπως το [0-9] | [\d] -> 7 | -| \D | δεν ταιριάζει ψηφία όπως το [^0-9] | [\D] -> a | | \s | ταιριάζει whitespace χαρακτήρες όπως [\t\n\r] | a\s -> a (space) | | \S | δεν ταιριάζει whitespace χαρακτήρες όπως [^\t\n\r] | a[^\t\n\r] -> cat | | . | ταιριάζει οτιδήποτε | .+ -> jdf235!\n | diff --git a/tutorials/tutorial_9_A.html b/tutorials/tutorial_9_A.html index 790c28e..c350843 100644 --- a/tutorials/tutorial_9_A.html +++ b/tutorials/tutorial_9_A.html @@ -150,16 +150,6 @@

        Ειδικά Σύμβολα (4)

        -\d -ταιριάζει ψηφία όπως το [0-9] -[\d] -> 7 - - -\D -δεν ταιριάζει ψηφία όπως το [^0-9] -[\D] -> a - - \s ταιριάζει whitespace χαρακτήρες όπως [\t\n\r] a\s -> a (space) From 1181fc862e2a1efa0f1c4f21ea8e3b3e997ac951 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 4 Dec 2018 11:15:39 +0000 Subject: [PATCH 57/79] Deploy to GitHub Pages: 6e4e7de1e71b2a87634d8880a04179c91bf8170c --- tutorials/tutorial_9_A-p.html | 2 ++ tutorials/tutorial_9_A.html | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/tutorials/tutorial_9_A-p.html b/tutorials/tutorial_9_A-p.html index 220927b..68e7a1e 100644 --- a/tutorials/tutorial_9_A-p.html +++ b/tutorials/tutorial_9_A-p.html @@ -83,6 +83,8 @@ | Μοτίβο | Επεξήγηση | Παράδειγμα | |:------:|:---------------------------------------------------:|:-----------------:| +| \d | ταιριάζει ψηφία όπως το [0-9] | [\d] -> 7 | +| \D | δεν ταιριάζει ψηφία όπως το [^0-9] | [\D] -> a | | \s | ταιριάζει whitespace χαρακτήρες όπως [\t\n\r] | a\s -> a (space) | | \S | δεν ταιριάζει whitespace χαρακτήρες όπως [^\t\n\r] | a[^\t\n\r] -> cat | | . | ταιριάζει οτιδήποτε | .+ -> jdf235!\n | diff --git a/tutorials/tutorial_9_A.html b/tutorials/tutorial_9_A.html index c350843..790c28e 100644 --- a/tutorials/tutorial_9_A.html +++ b/tutorials/tutorial_9_A.html @@ -150,6 +150,16 @@

        Ειδικά Σύμβολα (4)

        +\d +ταιριάζει ψηφία όπως το [0-9] +[\d] -> 7 + + +\D +δεν ταιριάζει ψηφία όπως το [^0-9] +[\D] -> a + + \s ταιριάζει whitespace χαρακτήρες όπως [\t\n\r] a\s -> a (space) From 376b26036fddcbbc9b73f185538e9f1ea8597898 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 4 Dec 2018 11:47:20 +0000 Subject: [PATCH 58/79] Deploy to GitHub Pages: ac95cef8959fca366f600fba5931688ca5396e12 --- tutorials-p.html | 3 +- tutorials.html | 3 +- tutorials/tutorial_9_B-p.html | 224 ++++++++++++++++++++++++++++++++++ tutorials/tutorial_9_B.html | 166 +++++++++++++++++++++++++ 4 files changed, 394 insertions(+), 2 deletions(-) create mode 100644 tutorials/tutorial_9_B-p.html create mode 100644 tutorials/tutorial_9_B.html diff --git a/tutorials-p.html b/tutorials-p.html index 63f8cf1..d0b920f 100644 --- a/tutorials-p.html +++ b/tutorials-p.html @@ -74,7 +74,8 @@

        Φροντιστήριο 8

      Φροντιστήριο 9


      diff --git a/tutorials.html b/tutorials.html index ddece49..eafbc03 100644 --- a/tutorials.html +++ b/tutorials.html @@ -74,7 +74,8 @@

      Φροντιστήριο 8

    Φροντιστήριο 9


    diff --git a/tutorials/tutorial_9_B-p.html b/tutorials/tutorial_9_B-p.html new file mode 100644 index 0000000..ff30a8b --- /dev/null +++ b/tutorials/tutorial_9_B-p.html @@ -0,0 +1,224 @@ + + + + + + + XML και XSD + + + + + + + + + + + +
    +
    +
    + +
    +
    +

    License

    +Creative Commons Licence
    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
    +
    +
    + + + + + + + diff --git a/tutorials/tutorial_9_B.html b/tutorials/tutorial_9_B.html new file mode 100644 index 0000000..945662f --- /dev/null +++ b/tutorials/tutorial_9_B.html @@ -0,0 +1,166 @@ + + + + + + + + XML και XSD + + + + + + + + + + + + + + + + + + + + +

    Προγραμματισμός ΙΙ: XML και XSD

    +

    +

    Προγραμματισμός ΙΙ

    +

    XML και XSD

    + +

    XML

    +
      +
    • Η XML είναι μία γλώσσα επισημείωσης, όπως είναι και η HTML.
    • +
    • Είναι σχεδιασμένη ώστε να είναι αυτοπεριγραφική.
    • +
    • Η διαφορά από την HTML είναι πως φέρει δεδομένα ενώ η HTML παρουσιάζει δεδομένα.
    • +
    • Δεν χρησιμοποιεί προκαθορισμένες ετικέτες (tags) αλλά τις καθορίζει ο χρήστης.
    • +
    • Είναι επεκτάσιμη και μπορούν να προστεθούν, να διαφοροποιηθούν ή να τροποποιθούν στοιχεία στο αρχικό σχήμα ενός XML αρχείου.
    • +
    +

    Δομή XML

    +
      +
    • Τα αρχεία XML δομούνται ως δέντρα στοιχεία (element trees).
    • +
    • Ξεκινούν από την ρίζα (root element) και συνεχίζουν στα παιδιά (child elements).
    • +
    +
    <root>
    +  <child>
    +    <subchild>.....</subchild>
    +  </child>
    +</root>
    +
      +
    • Τα στοιχεία (elements) της XML μπορούν να περιέχουν κείμενο, προσδιορισμούς (attributes), άλλα στοιχεία ή συνδυασμό όλων των παραπάνω.
    • +
    • Οι προσδιορισμοί είναι σχεδιασμένοι για να περιέχουν δεδομένα που σχετίζονται με ένα στοιχείο.
    • +
    +

    XSD

    +
      +
    • Η XSD είναι η γλώσσα περιγραφής του σχήματος XML
    • +
    • Ο σκοπός της XSD είναι ο καθορισμός:

      +
        +
      • των στοιχείων και των προσδιορισμών ενός αρχείου
      • +
      • του αριθμού και της σειράς των στοιχείων-παιδιών
      • +
      • του τύπου δεδομένων των στοιχείων και των προσδιορισμών
      • +
      • των πιθανών τιμών των στοιχείων και των προσδιορισμών
      • +
    • +
    +

    Παράδειγμα

    +
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    +
    +<xsd:element name="shipOrder" type="order"/>
    +
    +<xsd:complexType name="order">
    +  <xsd:sequence>
    +    <xsd:element name="shipTo" type="shipAddress"/>
    +    <xsd:element name="items" type="cdItems"/>
    +  </xsd:sequence>
    +</xsd:complexType>
    +
    +<xsd:complexType name="shipAddress">
    +  <xsd:sequence>
    +    <xsd:element name="name" type="xsd:string"/>
    +    <xsd:element name="street" type="xsd:string"/>
    +    <xsd:element name="address" type="xsd:string"/>
    +    <xsd:element name="country" type="xsd:string"/>
    +  </xsd:sequence>
    +</xsd:complexType>
    +
    +<xsd:complexType name="cdItems">
    +  <xsd:sequence>
    +    <xsd:element name="item" type="cdItem"
    +                maxOccurs="unbounded"/>
    +  </xsd:sequence>
    +</xsd:complexType>
    +
    +<xsd:complexType name="cdItem">
    +  <xsd:sequence>
    +    <xsd:element name="title" type="xsd:string"/>
    +    <xsd:element name="quantity" type="xsd:integer"/>
    +    <xsd:element name="price" type="xsd:decimal"/>
    +  </xsd:sequence>
    +</xsd:complexType>
    +
    +</xsd:schema>
    +

    Παράδειγμα (2)

    +
    <shipOrder xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance">
    +  <shipTo>
    +    <name>Joe Doe</name>
    +    <street>There 2</street>
    +    <address>4000 RigthHere</address>
    +    <country>Wonderland</country>
    +  </shipTo>
    +  <items>
    +    <item>
    +      <title>Java Intro</title>
    +      <quantity>1</quantity>
    +      <price>10.90</price>
    +    </item>
    +    <item>
    +      <title>Advanced Java</title>
    +      <quantity>1</quantity>
    +      <price>19.90</price>
    +    </item>
    +  </items>
    +
    +</shipOrder>
    +

    Παράδειγμα 3

    +
    <?xml version="1.0" encoding="utf-8" ?>
    +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    +  xmlns="http://www.w3.org/2001/XMLSchema">
    +  <xsd:element name="oblivial">
    +    <xsd:complexType>
    +      <xsd:sequence>
    +        <xsd:element name="chalcone" type="xsd:string"/>
    +        <xsd:element name="casearia" minOccurs="2" maxOccurs="5">
    +            <xsd:complexType>
    +              <xsd:simpleContent>
    +                <xsd:extension base="xsd:string">
    +                  <xsd:attribute name="deplored" type="xsd:string"
    +use="required"/>
    +                  <xsd:attribute name="riccia" type="xsd:string"/>
    +                </xsd:extension>
    +              </xsd:simpleContent>
    +            </xsd:complexType>
    +        </xsd:element>
    +      </xsd:sequence>
    +    </xsd:complexType>
    +  </xsd:element>
    +</xsd:schema>
    +

    Παράδειγμα (4)

    +
    <?xml version="1.0" encoding="utf-8" ?>
    +<oblivial>
    +    <chalcone>exeter</chalcone>
    +    <casearia deplored="ferfer" riccia="fwfwfe">emfer</casearia>
    +    <casearia deplored="grbr" riccia="oemvokemv">fergr</casearia>
    +</oblivial>
    + +
    +Creative Commons Licence
    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + From 68cfc9961fc5bbc7f63665f95984b759ce65b3ed Mon Sep 17 00:00:00 2001 From: Travis CI Date: Mon, 10 Dec 2018 16:09:08 +0000 Subject: [PATCH 59/79] Deploy to GitHub Pages: 3e806dd6c4cf181c614b5fcee11876bad8643aa7 --- tutorials-p.html | 4 ++ tutorials.html | 4 ++ tutorials/tutorial_10_A-p.html | 80 ++++++++++++++++++++++++++++++++++ tutorials/tutorial_10_A.html | 44 +++++++++++++++++++ tutorials/tutorial_9_A-p.html | 1 + 5 files changed, 133 insertions(+) create mode 100644 tutorials/tutorial_10_A-p.html create mode 100644 tutorials/tutorial_10_A.html diff --git a/tutorials-p.html b/tutorials-p.html index d0b920f..0795a43 100644 --- a/tutorials-p.html +++ b/tutorials-p.html @@ -77,6 +77,10 @@

    Φροντιστήριο 9

  • Κανονικές εκφράσεις
  • XML και XSD
  • +

    Φροντιστήριο 10

    +
    Creative Commons Licence
    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. diff --git a/tutorials.html b/tutorials.html index eafbc03..90ce588 100644 --- a/tutorials.html +++ b/tutorials.html @@ -77,6 +77,10 @@

    Φροντιστήριο 9

  • Κανονικές εκφράσεις
  • XML και XSD
  • +

    Φροντιστήριο 10

    +
    Creative Commons Licence
    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. diff --git a/tutorials/tutorial_10_A-p.html b/tutorials/tutorial_10_A-p.html new file mode 100644 index 0000000..871c756 --- /dev/null +++ b/tutorials/tutorial_10_A-p.html @@ -0,0 +1,80 @@ + + + + + + + Εκφράσεις Lamda και Ροές + + + + + + + + + + + +
    +
    +
    + +
    +
    +

    License

    +Creative Commons Licence
    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
    +
    +
    + + + + + + + diff --git a/tutorials/tutorial_10_A.html b/tutorials/tutorial_10_A.html new file mode 100644 index 0000000..e3ab74e --- /dev/null +++ b/tutorials/tutorial_10_A.html @@ -0,0 +1,44 @@ + + + + + + + + Εκφράσεις Lamda και Ροές + + + + + + + + + + + + + + + + + + + + +

    Προγραμματισμός ΙΙ: Εκφράσεις Lamda και Ροές

    +

    +

    Προγραμματισμός ΙΙ

    +

    Εκφράσεις Lamda και Ροές

    + + +
    +Creative Commons Licence
    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/tutorials/tutorial_9_A-p.html b/tutorials/tutorial_9_A-p.html index 68e7a1e..a9f4d3e 100644 --- a/tutorials/tutorial_9_A-p.html +++ b/tutorials/tutorial_9_A-p.html @@ -189,6 +189,7 @@ } } ``` + From 4c739551e3fc1d7b5854d7f85784c8ad58e2905f Mon Sep 17 00:00:00 2001 From: Travis CI Date: Mon, 10 Dec 2018 16:18:45 +0000 Subject: [PATCH 60/79] Deploy to GitHub Pages: 70ab9265e2e7e44a52ba86066cb0277ca9e34e77 --- tutorials-p.html | 3 +- tutorials.html | 3 +- tutorials/tutorial_10_A-p.html | 6 +-- tutorials/tutorial_10_A.html | 6 +-- tutorials/tutorial_10_B-p.html | 80 ++++++++++++++++++++++++++++++++++ tutorials/tutorial_10_B.html | 44 +++++++++++++++++++ 6 files changed, 134 insertions(+), 8 deletions(-) create mode 100644 tutorials/tutorial_10_B-p.html create mode 100644 tutorials/tutorial_10_B.html diff --git a/tutorials-p.html b/tutorials-p.html index 0795a43..70aec30 100644 --- a/tutorials-p.html +++ b/tutorials-p.html @@ -79,7 +79,8 @@

    Φροντιστήριο 9

    Φροντιστήριο 10


    diff --git a/tutorials.html b/tutorials.html index 90ce588..979d584 100644 --- a/tutorials.html +++ b/tutorials.html @@ -79,7 +79,8 @@

    Φροντιστήριο 9

    Φροντιστήριο 10


    diff --git a/tutorials/tutorial_10_A-p.html b/tutorials/tutorial_10_A-p.html index 871c756..44b69da 100644 --- a/tutorials/tutorial_10_A-p.html +++ b/tutorials/tutorial_10_A-p.html @@ -4,7 +4,7 @@ - Εκφράσεις Lamda και Ροές + Εκφράσεις Lamda @@ -28,12 +28,12 @@ + + +
    +
    +
    + +
    +
    +

    License

    +Creative Commons Licence
    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
    +
    +
    + + + + + + + diff --git a/tutorials/tutorial_10_B.html b/tutorials/tutorial_10_B.html new file mode 100644 index 0000000..d8c3481 --- /dev/null +++ b/tutorials/tutorial_10_B.html @@ -0,0 +1,44 @@ + + + + + + + + Ροές δεδομένων + + + + + + + + + + + + + + + + + + + + +

    Προγραμματισμός ΙΙ: Ροές δεδομένων

    +

    +

    Προγραμματισμός ΙΙ

    +

    Ροές Δεδομένων

    + + +
    +Creative Commons Licence
    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + From 6c5b50b2147ec0abc5a73b9b884294c0f8020970 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Mon, 10 Dec 2018 17:54:25 +0000 Subject: [PATCH 61/79] Deploy to GitHub Pages: 4030b21661e7989e8779130ae33f23f6c1f9db33 --- tutorials-p.html | 2 +- tutorials.html | 2 +- tutorials/tutorial_10_A-p.html | 101 ++++++++++++++++++++++++++++++++- tutorials/tutorial_10_A.html | 79 +++++++++++++++++++++++++- 4 files changed, 178 insertions(+), 6 deletions(-) diff --git a/tutorials-p.html b/tutorials-p.html index 70aec30..8838111 100644 --- a/tutorials-p.html +++ b/tutorials-p.html @@ -79,7 +79,7 @@

    Φροντιστήριο 9

    Φροντιστήριο 10

    diff --git a/tutorials.html b/tutorials.html index 979d584..8f1117d 100644 --- a/tutorials.html +++ b/tutorials.html @@ -79,7 +79,7 @@

    Φροντιστήριο 9

    Φροντιστήριο 10

    diff --git a/tutorials/tutorial_10_A-p.html b/tutorials/tutorial_10_A-p.html index 44b69da..87c0159 100644 --- a/tutorials/tutorial_10_A-p.html +++ b/tutorials/tutorial_10_A-p.html @@ -4,7 +4,7 @@ - Εκφράσεις Lamda + Εκφράσεις Lambda @@ -28,7 +28,7 @@ diff --git a/tutorials/tutorial_10_A.html b/tutorials/tutorial_10_A.html index f0f166a..bd62ac2 100644 --- a/tutorials/tutorial_10_A.html +++ b/tutorials/tutorial_10_A.html @@ -5,7 +5,7 @@ - Εκφράσεις Lamda + Εκφράσεις Lambda @@ -29,7 +29,7 @@ -

    Προγραμματισμός ΙΙ: Εκφράσεις Lamda

    +

    Προγραμματισμός ΙΙ: Εκφράσεις Lambda

    Προγραμματισμός ΙΙ

    Εκφράσεις Lamda

    @@ -37,6 +37,81 @@

    Εκφράσεις Lamda

  • Στέφανος Γεωργίου
  • Κωνσταντίνος Κραββαρίτης
  • +

    Εκφράσεις Lambda

    +
      +
    • Τις χρησιμοποιούμε για συναρτησιακό προγραμματισμός.
    • +
    • Δεν είναι απαραίτητο να δημιουργήσουμε αντικείμενα για την κλήση τους.
    • +
    • Μπορούμε να τις περάσουμε ως ορίσματα σε μεθόδους.
    • +
    • Υποστηρίζονται από την Java 8 και μετά.
    • +
    • Ορίζονται ανώνυμα.
    • +
    +

    Παράδειγμα (1)

    +
        (Short a) -> return (short)(a / 35);
    +    (a) -> return a * a + a / a - a;
    +    (param) -> {
    +        System.out.println("param: " + param);
    +        return "return value";
    +    }
    +

    Συναρτήση accept

    +
      +
    • void accept(T t) κατανάλωση της τιμής t
    • +
    +
    import java.util.function.Consumer;
    +
    +public class Main {
    +  public static void main(String[] args) {
    +    Consumer<String> c = (x) -> System.out.println(x.toLowerCase());
    +    c.accept("Java2s.com");
    +  }
    +}
    +

    Παράδειγμα

    +
    import java.util.function.Function;
    +
    +public class Decess {
    +
    +    public static Function<Integer,
    +        Integer> multiplyThreeElements(int b, int c) {
    +        return (a) -> a * b * c;
    +    }
    +
    +    public static void main(String[] args) {
    +         System.out.println(multiplyThreeElements(3,3).apply(2));
    + }
    +}
    +

    Συνάρτηση compose

    +
      +
    • Function compose(Function g) εφαρμώζει μια συνάρτηση f (αυτή που καλεί την compose) σε μια συνάρτηση g
    • +
    +
    import java.util.function.Function;
    +
    +public class Main {
    +
    +  public static void main(String[] args) {
    +    Function<Integer,String> converter = (i)-> Integer.toString(i);
    +    
    +    Function<String, Integer> reverse = (s)-> Integer.parseInt(s);
    +   
    +    System.out.println(converter.apply(3).length());
    +    System.out.println(converter.compose(reverse).apply("30").length());
    +  }
    +}
    +

    Παράδειγμα (3)

    +
    import java.util.function.Function;
    +
    +public class Decess {
    +
    +    public static Function<Integer,
    +    Integer> multiplyThreeElements(int b, int c) {
    +        return (a) -> a * b * c;
    +    }
    +
    +    public static void main(String[] args) {
    +        Function<Integer, Integer> multiplyAgain =
    +                multiplyThreeElements(3, 3)
    +                .compose(multiplyThreeElements(2, 2));
    +        System.out.println(multiplyAgain.apply(2));
    +    }
    +}

    Creative Commons Licence
    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. From 2ef1bda1fbc02b48284fffa63e6256cd1fbe9eb3 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 11 Dec 2018 08:34:01 +0000 Subject: [PATCH 62/79] Deploy to GitHub Pages: 606cb3f33315644d859c676e5221fb9f20b0c02e --- tutorials/tutorial_10_A-p.html | 25 +++++++++++++++++++++++-- tutorials/tutorial_10_A.html | 20 ++++++++++++++++++-- 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/tutorials/tutorial_10_A-p.html b/tutorials/tutorial_10_A-p.html index 87c0159..8b9f007 100644 --- a/tutorials/tutorial_10_A-p.html +++ b/tutorials/tutorial_10_A-p.html @@ -76,13 +76,12 @@ ``` -## Παράδειγμα +## Παράδειγμα (1) ```java import java.util.function.Function; public class Decess { - public static Function multiplyThreeElements(int b, int c) { return (a) -> a * b * c; @@ -95,6 +94,28 @@ ``` +## Παράδειγμα (2) + +```java +import java.util.function.Function; + +public class Lambda { + public static Function divideThem(Function divideWith) { + return (Long a) -> (long)(divideWith.apply(a / 15)); + } + + public static void main(String[] args) { + + Function divideWith = + (Long a) -> (long) (100 / a); + System.out.println(divideThem(divideWith) + .apply(new Long(30))); + } +} +``` + + ## Συνάρτηση compose * __Function compose(Function g)__ εφαρμώζει μια συνάρτηση __f__ (αυτή που καλεί την compose) σε μια συνάρτηση __g__ diff --git a/tutorials/tutorial_10_A.html b/tutorials/tutorial_10_A.html index bd62ac2..86086bb 100644 --- a/tutorials/tutorial_10_A.html +++ b/tutorials/tutorial_10_A.html @@ -64,11 +64,10 @@

    Συναρτήση accept

    c.accept("Java2s.com"); } }
    -

    Παράδειγμα

    +

    Παράδειγμα (1)

    import java.util.function.Function;
     
     public class Decess {
    -
         public static Function<Integer,
             Integer> multiplyThreeElements(int b, int c) {
             return (a) -> a * b * c;
    @@ -78,6 +77,23 @@ 

    Παράδειγμα

    System.out.println(multiplyThreeElements(3,3).apply(2)); } }
    +

    Παράδειγμα (2)

    +
    import java.util.function.Function;
    +
    +public class Lambda {
    +        public static Function<Long, Long> divideThem(Function<Long,
    +                Long> divideWith) {
    +                return (Long a) -> (long)(divideWith.apply(a / 15));
    +        }
    +
    +        public static void main(String[] args) {
    +
    +                Function<Long, Long> divideWith =
    +                    (Long a) -> (long) (100 / a);
    +                System.out.println(divideThem(divideWith)
    +                    .apply(new Long(30)));
    +        }
    +}

    Συνάρτηση compose

    • Function compose(Function g) εφαρμώζει μια συνάρτηση f (αυτή που καλεί την compose) σε μια συνάρτηση g
    • From 21783787c2fa0a9ed387858dd2f4112985162856 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 11 Dec 2018 08:44:14 +0000 Subject: [PATCH 63/79] Deploy to GitHub Pages: b167bfcbc8bbaca5c4a5c2a0caf6130dd28e0044 --- tutorials/tutorial_10_A-p.html | 2 +- tutorials/tutorial_10_A.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/tutorial_10_A-p.html b/tutorials/tutorial_10_A-p.html index 8b9f007..b9af347 100644 --- a/tutorials/tutorial_10_A-p.html +++ b/tutorials/tutorial_10_A-p.html @@ -52,7 +52,7 @@ ```java (Short a) -> return (short)(a / 35); - (a) -> return a * a + a / a - a; + (a) -> return a * a / a + a - a; (param) -> { System.out.println("param: " + param); return "return value"; diff --git a/tutorials/tutorial_10_A.html b/tutorials/tutorial_10_A.html index 86086bb..6f9f208 100644 --- a/tutorials/tutorial_10_A.html +++ b/tutorials/tutorial_10_A.html @@ -47,7 +47,7 @@

      Εκφράσεις Lambda

    Παράδειγμα (1)

        (Short a) -> return (short)(a / 35);
    -    (a) -> return a * a + a / a - a;
    +    (a) -> return a * a / a + a - a;
         (param) -> {
             System.out.println("param: " + param);
             return "return value";
    
    From 0c8d1b63de0ac09eadb3c235c3bae3a1de28abb5 Mon Sep 17 00:00:00 2001
    From: Travis CI 
    Date: Tue, 11 Dec 2018 11:01:10 +0000
    Subject: [PATCH 64/79] Deploy to GitHub Pages:
     fe00fd268886bbbc681df02356d8e3adb660e362
    
    ---
     tutorials/tutorial_10_A-p.html | 6 ++++--
     tutorials/tutorial_10_A.html   | 7 +++++--
     2 files changed, 9 insertions(+), 4 deletions(-)
    
    diff --git a/tutorials/tutorial_10_A-p.html b/tutorials/tutorial_10_A-p.html
    index b9af347..49c7bd6 100644
    --- a/tutorials/tutorial_10_A-p.html
    +++ b/tutorials/tutorial_10_A-p.html
    @@ -62,7 +62,7 @@
     
     ## Συναρτήση accept
     
    -* __void accept(T t)__ κατανάλωση της τιμής t
    +* __void accept(T t)__ κατανάλωση της τιμής __t__
     
     ```java
     import java.util.function.Consumer;
    @@ -76,7 +76,9 @@
     ```
     
     
    -## Παράδειγμα (1)
    +## Συνάρτηση apply
    +
    +* __R apply(T t)__ δίνει στην συνάρτηση που την καλή την τιμή __t__
     
     ```java
     import java.util.function.Function;
    diff --git a/tutorials/tutorial_10_A.html b/tutorials/tutorial_10_A.html
    index 6f9f208..480e257 100644
    --- a/tutorials/tutorial_10_A.html
    +++ b/tutorials/tutorial_10_A.html
    @@ -54,7 +54,7 @@ 

    Παράδειγμα (1)

    }

    Συναρτήση accept

      -
    • void accept(T t) κατανάλωση της τιμής t
    • +
    • void accept(T t) κατανάλωση της τιμής t
    import java.util.function.Consumer;
     
    @@ -64,7 +64,10 @@ 

    Συναρτήση accept

    c.accept("Java2s.com"); } }
    -

    Παράδειγμα (1)

    +

    Συνάρτηση apply

    +
      +
    • R apply(T t) δίνει στην συνάρτηση που την καλή την τιμή t
    • +
    import java.util.function.Function;
     
     public class Decess {
    
    From 141ff9ef9561e605b4a36a4ac879ba7c558849ec Mon Sep 17 00:00:00 2001
    From: Travis CI 
    Date: Tue, 11 Dec 2018 11:57:20 +0000
    Subject: [PATCH 65/79] Deploy to GitHub Pages:
     7dbc9a71eda8bfed74cb25fd30f69646f800bfaa
    
    ---
     tutorials/tutorial_10_A-p.html |   2 +-
     tutorials/tutorial_10_A.html   |   2 +-
     tutorials/tutorial_10_B-p.html | 119 +++++++++++++++++++++++++++++++++
     tutorials/tutorial_10_B.html   |  86 ++++++++++++++++++++++++
     4 files changed, 207 insertions(+), 2 deletions(-)
    
    diff --git a/tutorials/tutorial_10_A-p.html b/tutorials/tutorial_10_A-p.html
    index 49c7bd6..96844c9 100644
    --- a/tutorials/tutorial_10_A-p.html
    +++ b/tutorials/tutorial_10_A-p.html
    @@ -41,7 +41,7 @@
     
     ## Εκφράσεις Lambda
     
    -* Τις χρησιμοποιούμε για συναρτησιακό προγραμματισμός.
    +* Τις χρησιμοποιούμε για συναρτησιακό προγραμματισμό.
     * Δεν είναι απαραίτητο να δημιουργήσουμε αντικείμενα για την κλήση τους.
     * Μπορούμε να τις περάσουμε ως ορίσματα σε μεθόδους.
     * Υποστηρίζονται από την Java 8 και μετά.
    diff --git a/tutorials/tutorial_10_A.html b/tutorials/tutorial_10_A.html
    index 480e257..9f952e6 100644
    --- a/tutorials/tutorial_10_A.html
    +++ b/tutorials/tutorial_10_A.html
    @@ -39,7 +39,7 @@ 

    Εκφράσεις Lamda

    Εκφράσεις Lambda

      -
    • Τις χρησιμοποιούμε για συναρτησιακό προγραμματισμός.
    • +
    • Τις χρησιμοποιούμε για συναρτησιακό προγραμματισμό.
    • Δεν είναι απαραίτητο να δημιουργήσουμε αντικείμενα για την κλήση τους.
    • Μπορούμε να τις περάσουμε ως ορίσματα σε μεθόδους.
    • Υποστηρίζονται από την Java 8 και μετά.
    • diff --git a/tutorials/tutorial_10_B-p.html b/tutorials/tutorial_10_B-p.html index 515852e..fb2edf2 100644 --- a/tutorials/tutorial_10_B-p.html +++ b/tutorials/tutorial_10_B-p.html @@ -39,6 +39,125 @@ * [Κωνσταντίνος Κραββαρίτης](https://www.balab.aueb.gr/konstantinos-kravvaritis.html) +## Ροές + +* Οι ροές αναπαριστούν μία ακολουθία στοιχείων και υποστηρίζουν διάφορους τύπους λειτουργιών για την επεξεργασία των στοιχείων. +* Δεν έχουν σχέση και δεν πρέπει να συγχέονται με τα I/O Streams (InputStream, OutputStream, etc). +* Οι ροές δεν αποθηκεύουν δεδομένα, οπότε δεν είναι μία δομή δεδομένων. Επίσης, δεν τροποποιούν την υποκείμενη πηγή δεδομένων. +* Υποστηρίζονται από την Java 8 και μετά. + + +## Δημιουργία Ροών + +```java +private static CoolGuys[] array = { + new CoolGuy(1, "Diomidis Spinellis", "dds"), + new CoolGuy(2, "Stefanos Georgiou", "stefanos1316"), + new CoolGuy(3, "Konstantinos Kravvaritis", "kravvaritisk") +}; + +Stream.of(array); + +private static List list = Arrays.asList(array); +list.stream(); +``` + + +## Ενδιάμεσες Λειτουργίες Ροών + +* __filter__ + +```java +List myList = + Arrays.asList("a1", "a2", "b1", "c2", "c1"); + +myList + .stream() + .filter(s -> s.startsWith("c")) + .forEach(System.out::println); + +myList + .stream() + .filter(s -> startsWithC().test(s)) + .forEach(System.out::println); + +public static Predicate startsWithC() { + return s -> s.startsWith("c"); + } +``` + + +## Ενδιάμεσες Λειτουργίες Ροών (2) + +* __map__ + +```java +Arrays.stream(new int[] {1, 2, 3}) + .map(n -> 2 * n + 1) + .forEach(System.out::println); +``` + + +## Ενδιάμεσες Λειτουργίες Ροών (3) + +* __peek__ + +```java +Stream.of("Department", "of", "Science", "and", "Technology") + .peek(s -> System.out.println(s)) + .map(s -> s.toUpperCase()) + .forEach(System.out::println); +``` + + +## Τερματικές Λειτουργίες Ροών + +* __findAny__ + +```java +Optional val = Stream.of("one", "two").findAny(); + +if (val.isPresent() == true) + System.out.println("There is some values"); +``` + + +## Τερματικές Λειτουργίες Ροών (2) + +* __collect__ + +```java +Set stringSet = Stream.of("some", "one", "some", "one") + .collect(Collectors.toSet()); +``` + + +## Τερματικές Λειτουργίες Ροών (3) + +* __collect__ + +```java +IntBinaryOperator binaryOpt = (s1,s2)-> (s1+s2); + +int sum = IntStream.of(1, 2, 3, 4).reduce(0, binaryOpt); +System.out.println(sum); +``` + + +## Επαναχρησιμοποίηση Ροών + +* Οι ροές δεν είναι επαναχρησιμοποιήσιμες. +* Αν καλέσουμε σε μία ροή κάποια τερματική λειτουργία, η ροή θα κλείσει και δεν μπορούμε να την χρησιμοποιήσουμε πάλι. + +```java +Stream stream = + Stream.of("d2", "a2", "b1", "b3", "c") + .filter(s -> s.startsWith("a")); + +stream.findFirst(); // ok +stream.findAny(); // exception +``` + diff --git a/tutorials/tutorial_10_B.html b/tutorials/tutorial_10_B.html index d8c3481..a21e9d8 100644 --- a/tutorials/tutorial_10_B.html +++ b/tutorials/tutorial_10_B.html @@ -37,6 +37,92 @@

      Ροές Δεδομένων

    • Στέφανος Γεωργίου
    • Κωνσταντίνος Κραββαρίτης
    +

    Ροές

    +
      +
    • Οι ροές αναπαριστούν μία ακολουθία στοιχείων και υποστηρίζουν διάφορους τύπους λειτουργιών για την επεξεργασία των στοιχείων.
    • +
    • Δεν έχουν σχέση και δεν πρέπει να συγχέονται με τα I/O Streams (InputStream, OutputStream, etc).
    • +
    • Οι ροές δεν αποθηκεύουν δεδομένα, οπότε δεν είναι μία δομή δεδομένων. Επίσης, δεν τροποποιούν την υποκείμενη πηγή δεδομένων.
    • +
    • Υποστηρίζονται από την Java 8 και μετά.
    • +
    +

    Δημιουργία Ροών

    +
    private static CoolGuys[] array = {
    +    new CoolGuy(1, "Diomidis Spinellis", "dds"), 
    +    new CoolGuy(2, "Stefanos Georgiou", "stefanos1316"), 
    +    new CoolGuy(3, "Konstantinos Kravvaritis", "kravvaritisk")
    +};
    +
    +Stream.of(array);
    +
    +private static List<CoolGuy> list = Arrays.asList(array);
    +list.stream();
    +

    Ενδιάμεσες Λειτουργίες Ροών

    +
      +
    • filter
    • +
    +
    List<String> myList =
    +    Arrays.asList("a1", "a2", "b1", "c2", "c1");
    +
    +myList
    +    .stream()
    +    .filter(s -> s.startsWith("c"))
    +    .forEach(System.out::println);
    +
    +myList
    +    .stream()
    +    .filter(s -> startsWithC().test(s))
    +    .forEach(System.out::println);
    +
    +public static Predicate<String> startsWithC() {
    +        return s -> s.startsWith("c");
    +    }
    +

    Ενδιάμεσες Λειτουργίες Ροών (2)

    +
      +
    • map
    • +
    +
    Arrays.stream(new int[] {1, 2, 3})
    +    .map(n -> 2 * n + 1)
    +    .forEach(System.out::println);
    +

    Ενδιάμεσες Λειτουργίες Ροών (3)

    +
      +
    • peek
    • +
    +
    Stream.of("Department", "of", "Science", "and", "Technology")
    +            .peek(s -> System.out.println(s))
    +            .map(s -> s.toUpperCase())
    +            .forEach(System.out::println);
    +

    Τερματικές Λειτουργίες Ροών

    +
      +
    • findAny
    • +
    +
    Optional<String> val = Stream.of("one", "two").findAny();
    +
    +if (val.isPresent() == true)
    +            System.out.println("There is some values");
    +

    Τερματικές Λειτουργίες Ροών (2)

    +
      +
    • collect
    • +
    +
    Set<String> stringSet = Stream.of("some", "one", "some", "one")
    +            .collect(Collectors.toSet());
    +

    Τερματικές Λειτουργίες Ροών (3)

    +
      +
    • collect
    • +
    +
    IntBinaryOperator binaryOpt = (s1,s2)-> (s1+s2); 
    +        
    +int sum = IntStream.of(1, 2, 3, 4).reduce(0, binaryOpt);
    +System.out.println(sum);
    +

    Επαναχρησιμοποίηση Ροών

    +
      +
    • Οι ροές δεν είναι επαναχρησιμοποιήσιμες.
    • +
    • Αν καλέσουμε σε μία ροή κάποια τερματική λειτουργία, η ροή θα κλείσει και δεν μπορούμε να την χρησιμοποιήσουμε πάλι.
    • +
    +
    Stream<String> stream =
    +    Stream.of("d2", "a2", "b1", "b3", "c")
    +        .filter(s -> s.startsWith("a"));
    +
    +stream.findFirst();    // ok
    +stream.findAny();   // exception

    Creative Commons Licence
    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. From 8b49786b2bcad9d43e84027ef5f5d18d20e014ad Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 11 Dec 2018 12:26:57 +0000 Subject: [PATCH 66/79] Deploy to GitHub Pages: 01ef56b09a1a449a7e6d2c68a34a7f32ebc037fc --- tutorials/tutorial_10_B-p.html | 5 ++++- tutorials/tutorial_10_B.html | 7 +++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/tutorials/tutorial_10_B-p.html b/tutorials/tutorial_10_B-p.html index fb2edf2..bf1ee08 100644 --- a/tutorials/tutorial_10_B-p.html +++ b/tutorials/tutorial_10_B-p.html @@ -134,13 +134,16 @@ ## Τερματικές Λειτουργίες Ροών (3) -* __collect__ +* __reduce__ ```java IntBinaryOperator binaryOpt = (s1,s2)-> (s1+s2); int sum = IntStream.of(1, 2, 3, 4).reduce(0, binaryOpt); System.out.println(sum); + +OptionalInt v = IntStream.of(1, 2, 3, 4).reduce(binaryOpt); +System.out.println(v.getAsInt()); ``` diff --git a/tutorials/tutorial_10_B.html b/tutorials/tutorial_10_B.html index a21e9d8..3b30b3f 100644 --- a/tutorials/tutorial_10_B.html +++ b/tutorials/tutorial_10_B.html @@ -106,12 +106,15 @@

    Τερματικές Λειτουργίες Ροών (2)

    .collect(Collectors.toSet());

    Τερματικές Λειτουργίες Ροών (3)

      -
    • collect
    • +
    • reduce
    IntBinaryOperator binaryOpt = (s1,s2)-> (s1+s2); 
             
     int sum = IntStream.of(1, 2, 3, 4).reduce(0, binaryOpt);
    -System.out.println(sum);
    +System.out.println(sum); + +OptionalInt v = IntStream.of(1, 2, 3, 4).reduce(binaryOpt); +System.out.println(v.getAsInt());

    Επαναχρησιμοποίηση Ροών

    • Οι ροές δεν είναι επαναχρησιμοποιήσιμες.
    • From 7724dd60cbe65b043b9f6286ce118eb66ca48072 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 11 Dec 2018 22:19:57 +0000 Subject: [PATCH 67/79] Deploy to GitHub Pages: 905b20f764310ff2a1b4e95f7ec788b15d8b5549 --- tutorials/tutorial_10_A-p.html | 6 +++--- tutorials/tutorial_10_A.html | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tutorials/tutorial_10_A-p.html b/tutorials/tutorial_10_A-p.html index 96844c9..32c13d0 100644 --- a/tutorials/tutorial_10_A-p.html +++ b/tutorials/tutorial_10_A-p.html @@ -60,7 +60,7 @@ ``` -## Συναρτήση accept +## Μέθοδος accept * __void accept(T t)__ κατανάλωση της τιμής __t__ @@ -76,7 +76,7 @@ ``` -## Συνάρτηση apply +## Μέθοδος apply * __R apply(T t)__ δίνει στην συνάρτηση που την καλή την τιμή __t__ @@ -118,7 +118,7 @@ ``` -## Συνάρτηση compose +## Μέθοδος compose * __Function compose(Function g)__ εφαρμώζει μια συνάρτηση __f__ (αυτή που καλεί την compose) σε μια συνάρτηση __g__ diff --git a/tutorials/tutorial_10_A.html b/tutorials/tutorial_10_A.html index 9f952e6..c4d20ad 100644 --- a/tutorials/tutorial_10_A.html +++ b/tutorials/tutorial_10_A.html @@ -52,7 +52,7 @@

      Παράδειγμα (1)

      System.out.println("param: " + param); return "return value"; } -

      Συναρτήση accept

      +

      Μέθοδος accept

      • void accept(T t) κατανάλωση της τιμής t
      @@ -64,7 +64,7 @@

      Συναρτήση accept

      c.accept("Java2s.com"); } } -

      Συνάρτηση apply

      +

      Μέθοδος apply

      • R apply(T t) δίνει στην συνάρτηση που την καλή την τιμή t
      @@ -97,7 +97,7 @@

      Παράδειγμα (2)

      .apply(new Long(30))); } } -

      Συνάρτηση compose

      +

      Μέθοδος compose

      • Function compose(Function g) εφαρμώζει μια συνάρτηση f (αυτή που καλεί την compose) σε μια συνάρτηση g
      From af0018d59ee9172eb5f0ff759800e91f190e36ee Mon Sep 17 00:00:00 2001 From: Travis CI Date: Wed, 19 Dec 2018 11:01:20 +0000 Subject: [PATCH 68/79] Deploy to GitHub Pages: ea93cd67e5bd95e9163161a9b7c8a2f085e11150 --- tools-p.html | 3 +- tools.html | 3 +- tools/installing_jarpeb-p.html | 156 +++++++++++++++++++++++++++++++++ tools/installing_jarpeb.html | 93 ++++++++++++++++++++ tutorials/tutorial_7_B-p.html | 109 +++++++++++++++++++++++ tutorials/tutorial_7_B.html | 92 +++++++++++++++++++ 6 files changed, 454 insertions(+), 2 deletions(-) create mode 100644 tools/installing_jarpeb-p.html create mode 100644 tools/installing_jarpeb.html diff --git a/tools-p.html b/tools-p.html index 7d0c545..f0550b7 100644 --- a/tools-p.html +++ b/tools-p.html @@ -34,7 +34,8 @@

      Εργαλεία

    • Travis CI with CV template tutorial
    • Travis CI and Maven
    • Hardware Energy Monitoring Tools
    • -
    • Validate your links
    • +
    • Validate your links
    • +
    • Installing Jarpeb

    diff --git a/tools.html b/tools.html index b804a97..d2954d8 100644 --- a/tools.html +++ b/tools.html @@ -34,7 +34,8 @@

    Εργαλεία

  • Travis CI with CV template tutorial
  • Travis CI and Maven
  • Hardware Energy Monitoring Tools
  • -
  • Validate your links
  • +
  • Validate your links
  • +
  • Installing Jarpeb

  • diff --git a/tools/installing_jarpeb-p.html b/tools/installing_jarpeb-p.html new file mode 100644 index 0000000..8c9ddb0 --- /dev/null +++ b/tools/installing_jarpeb-p.html @@ -0,0 +1,156 @@ + + + + + + + Installing Jarpeb + + + + + + + + + + + +
    +
    +
    + +
    +
    +

    License

    +Creative Commons Licence
    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
    +
    +
    + + + + + + + diff --git a/tools/installing_jarpeb.html b/tools/installing_jarpeb.html new file mode 100644 index 0000000..e3c81a0 --- /dev/null +++ b/tools/installing_jarpeb.html @@ -0,0 +1,93 @@ + + + + + + + + Installing Jarpeb + + + + + + + + + + + + + + + + + + + + +

    Προγραμματισμός ΙΙ: Installing Jarpeb

    +

    +

    Προγραμματισμός ΙΙ

    +

    Οδηγός εγκατάστασεις του Jarpeb

    + +

    Εισαγωγή στο Jarpeb

    +

    Για τις ασκήσεις του μαθήματος Προγραμματισμός ΙΙ θα χρειαστεί να +χρησιμοποιήσετε το αρχείο __Exercise.jar__ +Το __Exercise.jar__ περιέχει τις ασκήσεις σας καθώς και τη γραφική διεπαφή που θα +χρησιμοποιήσετε για την υποβολή των απαντήσεων και των αποτελεσμάτων σας. +Για να χρησιμοποιήσετε το σύστημα θα πρέπει ο υπολογιστής σας να έχει εγκατεστημένo +το Java SDK (τουλάχιστον την έκδοση SE 8).

    + + +

    + +

    Παρακάτω, ακολουθούν οδηγίες σχετικά με την εκτέλεση του Exercise.jar και τη
    χρήση του jarpeb, για τον έλεγχο και την υποβολή των εργασιών σας. Για όλες τις
    ασκήσεις του μαθήματος θα χρησιμοποιήσετε το αρχείο Exercise.jar καθ’ όλη τη
    διάρκεια του εξαμήνου.

    +

    Εκτέλεση του Exercise.jar από το εργαστήριο

    +
      +
    • Κατεβάστε από τον δύνδεσμο του μαθήματος το Exercise.jar
    • +
    • Για να εκτελέσετε το Jarpeb, ανοίξτε ένα τερματικό (start-> cmd) και εκτελέστη την εντολή:

      +
        +
      • java -jar μονοπάτι όπου βρισκεται το Exercise.jar/Exercise.jar
      • +
    • +
    +

    Εκτέλεση του Exercise.jar από το σπιτι (1)

    +

    Εαν δουλεύετε από το σπίτι, σε Windows (7, 8, ή 10), θα πρέπει να εγκαταστήσετε +πρώτα το JDK (οι οδηγίες βρίσκονται πιο κάτω):

    + +
      +
    • Κατεβάστε και εγκαταστήστε το JDK (Java Development Kit) για το λειτουργικό σύστημα που έχετε και την κατάλληλη αρχιτεκτονική (π.χ. Windows x86 ή x64) από τον ακόλουθω σύνδεσμο
    • +
    +

    Εκτέλεση του Exercise.jar από το σπιτι (2)

    +
      +
    • Στη συνέχεια πρέπει να δηλώσετε τη μεταβλητή συστήματος (environment variables) ακολουθώντας τα παρακάτω βήματα:

      +
        +
      • δεξί-κλικ στον προσωπικό σας υπολογιστή (MyComputer) και επιλέξτε
        ιδιότητες (properties) → Ρυθμίσεις συστήματος για προχωρημένους
        (Advanced system settings) → Μεταβλητές περιβάλλοντος (Environment
        Variables) → Πατήστε Δημιουργία (New) που βρίσκεται κάτω απο τις
        Μεταβλητές συστήματος (System Variables) και συμπληρώστε με βάση το
        βήμα ii.
      • +
      • Όνομα μεταβλητής (Variable name): JAVA_HOME
        Τιμή μεταβλητής (Variable value): εδώ πρέπει να βάλετε το απόλυτο
        μονοπάτι που έχει εγκατασταθει το jdk (συνήθως είναι στο Program Files \
        JAVA\jdk****) ακολούθως κάντε αντιγραφή/επικόλληση (copy/paste) το
        σχετικό μονοπάτι.
      • +
    • +
    +

    Εκτέλεση του Exercise.jar από το σπιτι (2)

    +

    Στη συνέχεια, κάντε μια επαλήθευση ότι οι περιβαλλοντικές μεταβλητές λειτουργούν σωστά
    εκτελώντας την πιο κάτω εντολή μέσα στο τερματικό (cmd):

    +
    $ java -version
    +

    Αυτό θα πρέπει να σας εκτυπώσει κάποιο μήνυμα όπως

    +
    $ openjdk version "1.8.0_181"
    +$ OpenJDK Runtime Environment (build 1.8.0_181-b15)
    +$ OpenJDK 64-Bit Server VM (build 25.181-b15, mixed mode)
    +

    Παράδειγμα 2

    +

    +

    +

    Έλεγχος Υλοποιήσης

    +

    +

    Έλεγχος Καταχώρησης

    +

    + +
    +Creative Commons Licence
    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/tutorials/tutorial_7_B-p.html b/tutorials/tutorial_7_B-p.html index e874d75..6393349 100644 --- a/tutorials/tutorial_7_B-p.html +++ b/tutorials/tutorial_7_B-p.html @@ -125,6 +125,115 @@ * Εάν δε βρεθεί το αρχείο, πετάει την εξαίρεση: **FileNotFoundException**. * Με **DataOutputStream**: γράφει πρωταρχικούς τύπους δεδομένων (boolean, char, double, float, etc.) και String. * Mπορεί να πετάξει IOException (προβλήματα εισόδου/εξόδου), γι’ αυτό πρέπει να χρησιμοποιούνται οι μέθοδοι .flush() για τις ροές (πετάει τα δεδομένα του buffer στο αρχείο). + + + +## Παράδειγμα ανάγνωσης από αρχείο + +```java +import java.io.*; + +public class Test { + public static void main(String [] args) { + String fileName = "temp.txt"; + String line = null; + + try { + // FileReader reads text files in the default encoding. + FileReader fileReader = + new FileReader(fileName); + + BufferedReader bufferedReader = + new BufferedReader(fileReader); + + while((line = bufferedReader.readLine()) != null) { + System.out.println(line); + } + bufferedReader.close(); + } + catch(FileNotFoundException ex) { + System.out.println( + "Unable to open file '" + + fileName + "'"); + } + catch(IOException ex) { + System.out.println( + "Error reading file '" + + fileName + "'"); + } + } +} +``` + + +## Παράδειγμα εγγραφής σε αρχείο + +```java +import java.io.*; + +public class Test { + public static void main(String [] args) { + String fileName = "temp.txt"; + try { + // Assume default encoding. + FileWriter fileWriter = + new FileWriter(fileName); + + BufferedWriter bufferedWriter = + new BufferedWriter(fileWriter); + bufferedWriter.write("Hello there,"); + bufferedWriter.write(" here is some text."); + bufferedWriter.newLine(); + bufferedWriter.write("We are writing"); + bufferedWriter.write(" the text to the file."); + bufferedWriter.close(); + } + catch(IOException ex) { + System.out.println( + "Error writing to file '" + + fileName + "'"); + } + } +} +``` + + +## Παράδειγμα επισύναψεις σε αρχείo + +```java +import java.io.*; + +public class Test { + public static void main(String [] args) { + String fileName = "temp.txt"; + try { + // Assume default encoding. + FileWriter fileWriter = + new FileWriter(fileName); + + BufferedWriter bufferedWriter = + new BufferedWriter(fileWriter); + bufferedWriter.write("Hello there,"); + bufferedWriter.write(" here is some text."); + bufferedWriter.newLine(); + bufferedWriter.write("We are writing"); + bufferedWriter.write(" the text to the file."); + bufferedWriter.close(); + + BufferedWriter br = + new BufferedWriter(new FileWriter("output.txt", true)); + br.write(""); + br.close(); + } + catch(IOException ex) { + System.out.println( + "Error writing to file '" + + fileName + "'"); + } + } +} +``` + diff --git a/tutorials/tutorial_7_B.html b/tutorials/tutorial_7_B.html index 7fd005b..cfc9635 100644 --- a/tutorials/tutorial_7_B.html +++ b/tutorials/tutorial_7_B.html @@ -107,6 +107,98 @@

    Εγγραφή σε αρχείο

  • Mπορεί να πετάξει IOException (προβλήματα εισόδου/εξόδου), γι’ αυτό πρέπει να χρησιμοποιούνται οι μέθοδοι .flush() για τις ροές (πετάει τα δεδομένα του buffer στο αρχείο).
  • +

    Παράδειγμα ανάγνωσης από αρχείο

    +
    import java.io.*;
    +
    +public class Test {
    +    public static void main(String [] args) {
    +        String fileName = "temp.txt";
    +        String line = null;
    +
    +        try {
    +            // FileReader reads text files in the default encoding.
    +            FileReader fileReader = 
    +                new FileReader(fileName);
    +
    +            BufferedReader bufferedReader = 
    +                new BufferedReader(fileReader);
    +
    +            while((line = bufferedReader.readLine()) != null) {
    +                System.out.println(line);
    +            }   
    +            bufferedReader.close();         
    +        }
    +        catch(FileNotFoundException ex) {
    +            System.out.println(
    +                "Unable to open file '" + 
    +                fileName + "'");                
    +        }
    +        catch(IOException ex) {
    +            System.out.println(
    +                "Error reading file '" 
    +                + fileName + "'");                  
    +        }
    +    }
    +}
    +

    Παράδειγμα εγγραφής σε αρχείο

    +
    import java.io.*;
    +
    +public class Test {
    +    public static void main(String [] args) {
    +        String fileName = "temp.txt";
    +        try {
    +            // Assume default encoding.
    +            FileWriter fileWriter =
    +                new FileWriter(fileName);
    +
    +            BufferedWriter bufferedWriter =
    +                new BufferedWriter(fileWriter);
    +            bufferedWriter.write("Hello there,");
    +            bufferedWriter.write(" here is some text.");
    +            bufferedWriter.newLine();
    +            bufferedWriter.write("We are writing");
    +            bufferedWriter.write(" the text to the file.");
    +            bufferedWriter.close();
    +        }
    +        catch(IOException ex) {
    +            System.out.println(
    +                "Error writing to file '"
    +                + fileName + "'");
    +        }
    +    }
    +}
    +

    Παράδειγμα επισύναψεις σε αρχείo

    +
    import java.io.*;
    +
    +public class Test {
    +    public static void main(String [] args) {
    +        String fileName = "temp.txt";
    +        try {
    +            // Assume default encoding.
    +            FileWriter fileWriter =
    +                new FileWriter(fileName);
    +
    +            BufferedWriter bufferedWriter =
    +                new BufferedWriter(fileWriter);
    +            bufferedWriter.write("Hello there,");
    +            bufferedWriter.write(" here is some text.");
    +            bufferedWriter.newLine();
    +            bufferedWriter.write("We are writing");
    +            bufferedWriter.write(" the text to the file.");
    +            bufferedWriter.close();
    +        
    +        BufferedWriter br =
    +        new BufferedWriter(new FileWriter("output.txt", true));
    +        br.write("");
    +        br.close();
    +        }
    +        catch(IOException ex) {
    +            System.out.println(
    +                "Error writing to file '"
    +                + fileName + "'");
    +        }
    +    }
    +}

    Creative Commons Licence
    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. From 33b10530ccc5c14cc7e1abb10d7bab6f8445b5d8 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Wed, 19 Dec 2018 11:27:38 +0000 Subject: [PATCH 69/79] Deploy to GitHub Pages: 4cfe0435fc898e9971dfd539082201b0962f0d84 --- tutorials/tutorial_7_B-p.html | 4 ++-- tutorials/tutorial_7_B.html | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tutorials/tutorial_7_B-p.html b/tutorials/tutorial_7_B-p.html index 6393349..ee37cee 100644 --- a/tutorials/tutorial_7_B-p.html +++ b/tutorials/tutorial_7_B-p.html @@ -62,7 +62,7 @@ ```java FileInputStream in = new FileInputStream("infile.txt"); -FileOutputStream in = new FileOutputStream("outfile.txt"); +FileOutputStream out = new FileOutputStream("outfile.txt"); ``` @@ -73,7 +73,7 @@ ```java FileReader in = new FileReader("infile.txt"); -FileWriter in = new FileWriter("outfile.txt"); +FileWriter out = new FileWriter("outfile.txt"); ``` diff --git a/tutorials/tutorial_7_B.html b/tutorials/tutorial_7_B.html index cfc9635..2e36939 100644 --- a/tutorials/tutorial_7_B.html +++ b/tutorials/tutorial_7_B.html @@ -52,7 +52,7 @@

    Τρόποι διαχείρισης αρχείων (1)

    FileInputStream in = new FileInputStream("infile.txt");
    -FileOutputStream in = new FileOutputStream("outfile.txt");
    +FileOutputStream out = new FileOutputStream("outfile.txt");

    Τρόποι διαχείρισης αρχείων (2)

    **Character Streams**: αποτελούν “wrappers” των byte streams. Χρησιμοποιούν byte streams για χειρισμό δεδομένων εισόδου και εξόδου σε χαμηλό επίπεδο (low-level I/O), καθώς τα character streams χειρίζονται τη μετάφραση των χαρακτήρων σε bytes. Η είσοδος και η έξοδος σε και από ένα αρχείο βασίζεται σε χαρακτήρες. @@ -60,7 +60,7 @@

    Τρόποι διαχείρισης αρχείων (2)

    FileReader in = new FileReader("infile.txt"); 
    -FileWriter in = new FileWriter("outfile.txt"); 
    +FileWriter out = new FileWriter("outfile.txt");

    Τρόποι διαχείρισης αρχείων (3)

    **Buffer Streams**: χρήσιμοποιούν _buffers_ στο διάβασμα (**read**) ή στο γράψιμο (**write**) αρχείων. Βοηθούν στην αποδοτικότητα των προγραμμάτων καθώς τα αιτήματα read/write δεν χειρίζονται κατευθείαν από το λειτουργικό σύστημα. From 649b9834372211ac6c5d50630c5959bf07f9b36d Mon Sep 17 00:00:00 2001 From: Travis CI Date: Sun, 16 Jun 2019 21:59:25 +0000 Subject: [PATCH 70/79] Deploy to GitHub Pages: 46cbb5a6edd0441bd6296247807c3cc6e490408b --- reveal.js/css/theme/white.css | 2 +- tools-p.html | 1 + tools.html | 1 + tools/ci_cd_with_gitlab-p.html | 241 +++++++++++++++++++++++++++++ tools/ci_cd_with_gitlab.html | 178 +++++++++++++++++++++ tools/media/acc_ci_cd.svg | 2 + tools/media/acc_platform.png | Bin 0 -> 122507 bytes tools/media/acc_software_stack.svg | 2 + tools/media/doggy_work.jpg | Bin 0 -> 69754 bytes 9 files changed, 426 insertions(+), 1 deletion(-) create mode 100644 tools/ci_cd_with_gitlab-p.html create mode 100644 tools/ci_cd_with_gitlab.html create mode 100644 tools/media/acc_ci_cd.svg create mode 100644 tools/media/acc_platform.png create mode 100644 tools/media/acc_software_stack.svg create mode 100644 tools/media/doggy_work.jpg diff --git a/reveal.js/css/theme/white.css b/reveal.js/css/theme/white.css index b982b17..1f22d75 100644 --- a/reveal.js/css/theme/white.css +++ b/reveal.js/css/theme/white.css @@ -156,7 +156,7 @@ body { display: block; padding: 5px; overflow: auto; - max-height: 400px; + max-height: 600px; word-wrap: normal; } .reveal table { diff --git a/tools-p.html b/tools-p.html index f0550b7..82005fd 100644 --- a/tools-p.html +++ b/tools-p.html @@ -33,6 +33,7 @@

    Εργαλεία

    • Travis CI with CV template tutorial
    • Travis CI and Maven
    • +
    • CD and CI on GitLab
    • Hardware Energy Monitoring Tools
    • Validate your links
    • Installing Jarpeb
    • diff --git a/tools.html b/tools.html index d2954d8..2795068 100644 --- a/tools.html +++ b/tools.html @@ -33,6 +33,7 @@

      Εργαλεία

      • Travis CI with CV template tutorial
      • Travis CI and Maven
      • +
      • CD and CI on GitLab
      • Hardware Energy Monitoring Tools
      • Validate your links
      • Installing Jarpeb
      • diff --git a/tools/ci_cd_with_gitlab-p.html b/tools/ci_cd_with_gitlab-p.html new file mode 100644 index 0000000..a139218 --- /dev/null +++ b/tools/ci_cd_with_gitlab-p.html @@ -0,0 +1,241 @@ + + + + + + + CD and CI on GitLab + + + + + + + + + + + +
        +
        +
        + +
        +
        +

        License

        +Creative Commons Licence
        This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
        +
        +
        + + + + + + + diff --git a/tools/ci_cd_with_gitlab.html b/tools/ci_cd_with_gitlab.html new file mode 100644 index 0000000..35149af --- /dev/null +++ b/tools/ci_cd_with_gitlab.html @@ -0,0 +1,178 @@ + + + + + + + + CD and CI on GitLab + + + + + + + + + + + + + + + + + + + + +

        Προγραμματισμός ΙΙ: CD and CI on GitLab

        +

        +

        Tools and practices: Continuous Integration and Deployment

        + +

        Agenda

        +
          +
        • What is CI/CD?
        • +
        • AllCanCode Case
        • +
        • Without CI/CD
        • +
        • Recap
        • +
        • Stages
        • +
        • Optimizations
        • +
        • First CI pipeline
        • +
        • Point out drawbacks
        • +
        • Second Attemp
        • +
        • Outcome
        • +
        +

        What is CI/CD

        +
          +
        • CI = Continious Integration
        • +
        • CD = Continious Deployment
        • +
        • Reducing manual labor for deployment and lessens testing time of newly integrated code.
        • +
        +

        AllCanCode Platform

        +

        +

        ACC Process

        +

        +

        Without CI/CD

        +
          +
        • Running back-end tests (using mocha-chai)
        • +
        • Manually perform front-end test on the platfor
        • +
        • Depoy to Google's App Engine the platform

          +
            +
          • Alpha
          • +
          • WWW
          • +
          • Next
          • +
        • +
        • Running cordova and singing and deploying

          +
            +
          • APKs to Play Store
          • +
          • IPAs to App Store
          • +
        • +
        • Approximate time: 40 minutes

        • +
        +

        +

        First CI pipeline

        +
        cache:
        +  untracked: true
        +  paths:
        +    - node_modules/
        +
        +stages:
        +  - build
        +  - test
        +  - deploy
        +
        +build:
        +  stage: build [...]
        +
        +test_back_end:
        +  stage: test [...]
        +
        +test_front_end:
        +  stage: test [...]
        +
        +deploy:
        +  stage: deploy [...]
        +

        First CI, build

        +
        build:
        +  stage: build
        +  image: node:latest
        +  before_script:
        +    - apt-get update
        +  script:
        +    - npm i
        +    - export ACC_VERSION=$(node -pe "require('./package.json')['version']")
        +    - export DEPLOY_URL=$(echo "https://files.allcancode.com/builds/app-files/platform/${ACC_VERSION}/")
        +    - echo ${ACC_VERSION}
        +    - cd acc-front
        +    - rm -rf node_modules/*
        +    - npm i
        +    - node_modules/@angular/cli/bin/ng build --prod --build-optimizer --preserve-symlinks --base-href / --deploy-url ${DEPLOY_URL}
        +    - cd ..
        +

        First CI, test

        +
        test_back_end:
        +  stage: test
        +  image: node:latest
        +  before_script:
        +    - export ACC_VERSION=$(node -pe "require('./package.json')['version']")
        +    - echo ${ACC_VERSION} >> ACC_VERSION
        +    - apt-get update
        +    - apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common  
        +    - curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
        +    - apt-key fingerprint 0EBFCD88
        +    - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
        +    - apt-get update
        +    - apt-get install -y docker-ce
        +    - service docker status || service docker start
        +    - service docker status
        +  script:
        +    - docker run --name redis_instance -p 6379:6379 -d redis redis-server
        +    - docker run --name mongo_instance --restart=always -d -p 27017:27017 mongo mongod
        +    - sh test.sh
        +  artifacts:
        +    paths:
        +    - ACC_VERSION
        +

        First CI, test

        +
        test_front_end:
        +  stage: test
        +  image: node:latest
        +  before_script:
        +    - apt-get update
        +    - apt-get install -y xvfb libgtk2.0-0 libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2
        +    - npm i --save-dev cypress
        +  script:
        +    - echo 'Testing DeliverBack front-end'
        +    - node_modules/cypress/bin/cypress run --spec cypress/integration/deliver_back/input_validation.spec.js 
        +

        First CI, deploy

        +
        deploy:
        +  stage: deploy
        +  image: google/cloud-sdk:latest
        +  before_script:
        +    - export ACC_VERSION=$(cat ACC_VERSION)
        +    - export ACC_VERSION=$(echo ${ACC_VERSION} | awk '{print $2}')
        +    - echo ${ACC_VERSION}
        +    - echo $SERVICE_ACCOUNT > /tmp/$CI_PIPELINE_ID.json
        +    - gcloud auth activate-service-account --key-file /tmp/$CI_PIPELINE_ID.json
        +    - gcloud config set project allcancode-platform
        +  after_script:
        +    - rm /tmp/$CI_PIPELINE_ID.json
        +    - rm ACC_VERSION
        +  script:
        +    - export STORAGE_PATH=$( echo "gs://allcancode-files/builds/app-files/platform/${ACC_VERSION}")
        +    - gsutil -m cp -r -z html,css,js acc-front/dist ${STORAGE_PATH}
        +    - gsutil -m setmeta -h "Cache-Control:public, max-age=31536000" ${STORAGE_PATH}/**/*
        +    - gsutil -m acl ch -r -u AllUsers:R ${STORAGE_PATH}/*
        +    - gcloud app deploy app-alpha.yaml --version=v${ACC_VERSION//\./\-} --quiet
        +

        First CI outcome

        +

        Outcome of CI/CD pipeline

        +

        + +
        +Creative Commons Licence
        This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + + diff --git a/tools/media/acc_ci_cd.svg b/tools/media/acc_ci_cd.svg new file mode 100644 index 0000000..dafd983 --- /dev/null +++ b/tools/media/acc_ci_cd.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/tools/media/acc_platform.png b/tools/media/acc_platform.png new file mode 100644 index 0000000000000000000000000000000000000000..b82b8e54c58133151fcf4e98fa13bfef0c80f0c6 GIT binary patch literal 122507 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ɟI3DsJYDU;VL3zVMb@raY&+}D(F{&Nby z5gr=zNfqeVK60SFagX5)b&t{EalIg&4&z(8PwA+!EhNVv`10?64@)6?@9QeBeM~tXAZIBe2^6NVAi z48I{V&saofCZGHCxiE%?WZSf#^A?bqrh!Mx4f&Fl5^ru#eJDRLK0Z58r}GbAU>|3* zcrzwqbgT}|mj!CgD@6yNoX0`(f)&e<62Rr#=IbNyrk3aFu8#HqJSG|VM&_?0QBmn- zGRpD99>Yydgu3YP>iL$tK7w!dTy}*d7Rs?Pc9GK+Baxk}kmQH8h;&8d8*+Usrr*jQ z+#Jq$iu{o$=Ak`W(BP_j#BUbG#@?7X;Hgr1DMcnDCMaIU1?U|VF9K>&dgW#h)Fb;(vG zLu8tU;(U!6CQ)wr>)j#K_>P7p@*<&Kv;FT~;HIFoNXlnw?q;{fA^-6?b1xD`zvtPF z?su?>kj$iq7`;|N5YMp~_S-12-nfTf(qG)dgefxq{8Z`ETvy8tJ#LF78H@`3g8{SL zk?RMmkbkyz)Glx4!0(&-KQWuxu=*C9kQ~>{hcj-YfjV~VOxoAt9Gu;R)G(1RPbni9 z!%n|1-Hm*P=IUBHmz=I3d<)9c%e(`{tv`ou{z%_co=O=eQAE4M~!d%xY-c76*oJnoK&!(sq-Mt}V(R z9!uXiy4e9Bmfvfo!7%N;)<1amE1X;(56Ux@;~HsY4b^y*ZE0AGxO&3-(k_83ayAJ) z9V0H&OK+|Fs+S9g|6xwrfM&0RK|y{}qTecLTEXQ<=f~L`0UPm&?ltAfPqh9P&ElCK z9WE9gQh7rzYjZ&}-1zTJnOcGo%2g>C?BRqhya)3?3vi0SlNd~j;+#5P>U^?CB8w{u zU8zzSo;W4nv9g~EE{2*hsmL$I2`*t{IeA3Dw9G-utaRX}I&) z*l-x`!PJ2{*9CQ4N2zn3Qt}Y@ck$m?c$Ad?>#8n*FL+yVv<4Xd9yNmxLjd_Umj2#O zM<)(uH;IX{Eg-zFBk-nt+_l624Z)QGRQBwU2`nSdqPY9(^WcbyTUs)3Yo`>0w%yoa zpr}LY0Cy;Etw!`WmJvhkm^7k~@~LTsKT= z>oECBwH9Z?{P}x7fp?aD4|+CCB^&~&+U;4!+}e*BK+N35Mu@JV-z>|3Rb}G})DHzg zc@h(M^}^gtKv6h{Dh0Z1?BcruS;sWi^{=X!2B>wOrAfzj^~!5_m}QNcf*LAR2G5N1 hSDf0*BECDlb6~VXi!}Yie(cw-)KozC@`2dW{{fRVWuE{5 literal 0 HcmV?d00001 diff --git a/tools/media/acc_software_stack.svg b/tools/media/acc_software_stack.svg new file mode 100644 index 0000000..a177321 --- /dev/null +++ b/tools/media/acc_software_stack.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/tools/media/doggy_work.jpg b/tools/media/doggy_work.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6ab41f2966f729f43ad00b4f1700f6171d611a5c GIT binary patch literal 69754 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 GKmXYwy}bkg literal 0 HcmV?d00001 From 1466bd7507973f88ff4312f08d94e05a4d23f922 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Mon, 17 Jun 2019 09:12:15 +0000 Subject: [PATCH 71/79] Deploy to GitHub Pages: da41c5a6f8f4607ab43fcd254d2296c50d43020f --- tools/ci_cd_with_gitlab-p.html | 32 ++++++++++++++++++++++---- tools/ci_cd_with_gitlab.html | 26 +++++++++++++++++---- tools/media/but_why.jpg | Bin 0 -> 78921 bytes tools/media/chuck_norris_approves.jpg | Bin 0 -> 107443 bytes tools/media/downloading_cache.png | Bin 0 -> 24871 bytes tools/media/first_ci_cd_outcome.png | Bin 0 -> 48004 bytes tools/media/multible_env.png | Bin 0 -> 47599 bytes tools/media/uploading_cache.png | Bin 0 -> 23285 bytes 8 files changed, 50 insertions(+), 8 deletions(-) create mode 100644 tools/media/but_why.jpg create mode 100644 tools/media/chuck_norris_approves.jpg create mode 100644 tools/media/downloading_cache.png create mode 100644 tools/media/first_ci_cd_outcome.png create mode 100644 tools/media/multible_env.png create mode 100644 tools/media/uploading_cache.png diff --git a/tools/ci_cd_with_gitlab-p.html b/tools/ci_cd_with_gitlab-p.html index a139218..9a29020 100644 --- a/tools/ci_cd_with_gitlab-p.html +++ b/tools/ci_cd_with_gitlab-p.html @@ -41,8 +41,8 @@ * What is CI/CD? * AllCanCode Case * Without CI/CD -* Recap -* Stages +* Build stages +* Caching data * Optimizations * First CI pipeline * Point out drawbacks @@ -51,8 +51,8 @@ # What is CI/CD -* CI = Continious Integration -* CD = Continious Deployment +* CI = Continuous Integration +* CD = Continuous Deployment * Reducing manual labor for deployment and lessens testing time of newly integrated code. @@ -80,6 +80,25 @@ +# Build stages +* To group jobs and run them sequencially or in parallel (e.g., testing different environments) +* Works as a pipeline among build stages +* Can cache and pass data and modules among build stages +* Suggested stages: build, test, deploy, and release + + +# Multiple Evnironments +![](media/multible_env.png) + + +# Caching data +* To store directories among builds, usually dependencies that take longer to compile or download (npm, pip, Maven) +* Uploads the cached data after the script phase but before after success or failure +* Large files that are quick to install but slow to download do not benefit from caching +![](media/uploading_cache.png) +![](media/downloading_cache.png) + + # First CI pipeline ``` cache: @@ -193,13 +212,18 @@ # First CI outcome +![](media/first_ci_cd_outcome.png) + # Outcome of CI/CD pipeline ![](media/acc_ci_cd.svg) + + +![](media/chuck_norris_approves.jpg) diff --git a/tools/ci_cd_with_gitlab.html b/tools/ci_cd_with_gitlab.html index 35149af..0d718e9 100644 --- a/tools/ci_cd_with_gitlab.html +++ b/tools/ci_cd_with_gitlab.html @@ -40,8 +40,8 @@

        Agenda

      • What is CI/CD?
      • AllCanCode Case
      • Without CI/CD
      • -
      • Recap
      • -
      • Stages
      • +
      • Build stages
      • +
      • Caching data
      • Optimizations
      • First CI pipeline
      • Point out drawbacks
      • @@ -50,8 +50,8 @@

        Agenda

      What is CI/CD

        -
      • CI = Continious Integration
      • -
      • CD = Continious Deployment
      • +
      • CI = Continuous Integration
      • +
      • CD = Continuous Deployment
      • Reducing manual labor for deployment and lessens testing time of newly integrated code.

      AllCanCode Platform

      @@ -76,6 +76,21 @@

      Without CI/CD

    • Approximate time: 40 minutes

    +

    Build stages

    +
      +
    • To group jobs and run them sequencially or in parallel (e.g., testing different environments)
    • +
    • Works as a pipeline among build stages
    • +
    • Can cache and pass data and modules among build stages
    • +
    • Suggested stages: build, test, deploy, and release
    • +
    +

    Multiple Evnironments

    +

    +

    Caching data

    +
      +
    • To store directories among builds, usually dependencies that take longer to compile or download (npm, pip, Maven)
    • +
    • Uploads the cached data after the script phase but before after success or failure
    • +
    • Large files that are quick to install but slow to download do not benefit from caching

    • +

    First CI pipeline

    cache:
       untracked: true
    @@ -169,8 +184,11 @@ 

    First CI, deploy

    - gsutil -m acl ch -r -u AllUsers:R ${STORAGE_PATH}/* - gcloud app deploy app-alpha.yaml --version=v${ACC_VERSION//\./\-} --quiet

    First CI outcome

    +

    +

    Outcome of CI/CD pipeline

    +


    Creative Commons Licence
    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. diff --git a/tools/media/but_why.jpg b/tools/media/but_why.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9df548df470752cd296097f70014e54c5b7c2eba GIT binary patch literal 78921 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 GAOG2FO~K;; literal 0 HcmV?d00001 diff --git a/tools/media/chuck_norris_approves.jpg b/tools/media/chuck_norris_approves.jpg new file mode 100644 index 0000000000000000000000000000000000000000..416e19560dc4967c502372f4f79a28bc92025250 GIT binary patch literal 107443 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Ă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 literal 0 HcmV?d00001 diff --git a/tools/media/downloading_cache.png b/tools/media/downloading_cache.png new file mode 100644 index 0000000000000000000000000000000000000000..097ab7f5b5a61cfcea45ff599c1aabf232176c30 GIT binary patch literal 24871 zcmagG1yoyIw>69viWGM!Qd$VE#fm!=3oY)F;_eQ`-GUZ(cXtYu65NYJan~ThKKk@| z@3{Z}-8;UK!;p_Byt7Z4; zY^Z!bdFe1bQUzC&b}I?2C*7fNFM27nCbyY{M3nzorJ{tu2z`PkPW3m|OXfbBK*m7F zursb7X!!_yxL;(cP{ca1t7+x%u-CH!vK0ESKjz_03e({A2~$ zQ((08?oj2PGlWm#tLrP(&jRr|>78LEYC_8PT0jp`6}+2Rn>fIA6I1>&~y{kjwP5Pxyq_(H`D$U(y&b&=AvnwN>??S=}NME zhYX=iuuhyw)||J;fkcW0ZmjT2`GwfEpj-tK6t!jl9tPgPGQ&1n%_ z;5q9BC$`89Ek9SFlc=`R_pw;1xp%le{5p8kGG8<3JxiGZE)i_ywv1y)HPf;n#d|B~ zN4TYX+Wymua~jZU#%8c7J?DXv7*C4wc0OHgg)muFfJe5ew|Y{2Mw=jpA(c0)yw*Y; zq-SRQJC8uk+x#l1#;pb;kJpM`t>;Rs%uLHbfWQ23(xdEh2J)nhm$&ut8OA zD}EZ={c8UkM61lCkY=+zjqI!AizIucoUKy&!#e9=A3_x?Sj#VMd@se&rds`yCJ04X zjKd+6r*Nv`_kvGmVjy{0Zf76F;WGVWco7-SPJo@a(Jj{52hUFd0h0^6s;fRF z*7{O0=dj0Z!*5fNs`6?F-0I=fezl`;uA%C8n(kzIPb?_q)26yfmgW{&=jh&)q~algrGK(c=1{`%63rPexw?GuMMR@quR{qO0qh zQA%PzQONY?-%=QQ$ak3YvRTPdj`)85#zv%juDr;}RZVdL%$Spua&#+fG9Gr^B|Bt% zH=PVLdpU{t%ZsC}-xca%uP}Pyv}HUTIY<(+?UnF4BRE`Rg#=%W`RmrZ1f@S#M+dX2 z47zi@2!SW24ZAjpPlGeSwY=UCn)fH7q7H~${OY|7d*WVevF4uV`Nl>Y)iSkV{=p4< zEc*j<5;(O^HXQz9)@pK~Y3dg~y*eec!br;XD6L~U{1;qDN|~O!9a{d@H*a4tBAS(1 zW?wYwSKC<#AR9z}Jer?dHa*RZp|Nl0>vp-CqHA>HK#v%NS>S!-ska*)_kR8LEYE3@ zTzcLa@R>z#LFgRY)svq-4~`~N_ESd6vCGnOX?yCS;>H$w2lJ8$3h`13Jjf3S&80RipM&Bqj^_q4z}FZM(g+ zX%C8%Cn`$z_w|EIlb)5;e1qNv;o)?jV6j1>`@iK%XLkbYSws0cVoOWk)c(M@(C7>g z-7fROcKfwu@zzupb8j(8rO6S`^JK8d=p*uRG~vRB`?r{lFKH6*!x1KpUJV0lP7k?t zbbYiK39IY5b;MX-k`8`b!d? zb8K?cbA7WTB={A-0PPP?v@Y9n&3zA{~tF5D1iMzI;8M&2oUWYw3v1?v_i-@A#bkWTA z1JP%~=nhEuTr#kEL9%iA<6>t+`O*sCjnILM!(d4-YEUTs}7doAbjL zioBg>SwJgY^-`5~zTO-zq;)4@G&U0O-{^>T6KqN^C`^|1;V@_wlzOeS272lQ6B^aZ zv+sFsnHE)I%&#~2?ERek7cV)#{PwC2UHb65`fizgxi0Bl*Btb|Jnc6Tp2oQwNgL68 z&q3jQ!`I0Gp=v&w=nl3HvEH-w7O zg2d0hQk%C_I$8Br##49wn_YUcqa`j{N)5d~;iI~Rhz~hWHrB2zI5IT@EL*Yk7u5)b zIud1+KHeqGfN7cX3_c1Lt}67Ns8{c~fmK~7^K)pD+s~rP-FW)aQ&T?9qm%SSv9U=n z-1d;MY`ZpndiW-3#Sc`t^?!5Dz%VGZ(Z4t$wYavbj4>sEvEp5(x&M>SSApO*@9<`< z(Xsvtl!lyGHrxwW$Qg0pKek4U>N5tss$^B;AeQ<~$z;5UQ1n<8x;&NR+{;9074y!} zfuhTeBl=gI&u9ieWFWxB1&a;ZgXhpv2kZ2RMrEJbzH0=y(( z`>jv=j^c((TL97WOu5chwn5L(p`OKeb&3V8QcYLUxlgMtl8XVWE#DNSb`z{ABJItY zyl5lxfopv8KWD$sOuyJh*XLvv)`#Tw-+n%3`hI+EcR4b%KaX*(yJ@+-rRvP&+4>bC z-QlL>Zr1fPo}1WPocwHV0Z8krWF$R+!}BA*O8v;ik;~o~<1oM{=X_+H^tDCdW6O3L zqiz&ss;3n$*WGLNT;>g>Rl%9A&4!swm*hr!` zR~+rsruwe9Dl*@SSFlofOk)XM!AZus zFlfTcn#+cKzv6P0w9AGgdeh25og6-Cg)4nyf1*9qYOLNW_FVq?sZNN>hllj1B5b7f z(yhhU4zz!EKR>^#MiF!U{rHtiry*37=D!XM@eE~?pzF96Fj8~;^Gi|ez@h#vPP1c# z=pb@eEc-|HZi==3q1oIj$~TDro?QFKDKS?Jyr(}6jFaRB%ix{et{l&;HpCbp?f^@y z4E?9luT&VX#h*TKVIfBNv-&srqjvLVzxWl77S`%YtmQz_Y~9@Flt}fTN;^Rq6(K*6 zO%R3Fl0_)k@Z9Ji^)EzdAUB#ycFaGQ0ViVgkPSy-5bp~B9Wmre?x(x>PQ&Y8g-2^RuAV_8mXu3~qJ(kFy|(i8%^%^9?<3@IK5+oWwoO1g;tm^cMO2 zK@y*%8MxY|@zlkgzXCTGGQDN(oyD9lvLDT7)_+D86%N0zUt@Sp%sJ z%wCb=HKX#vlh5sVb?*Ttw-NaGmnjTL1*5Q(k$*~M>}((robdP=WtU~OcVQh)LDNbu zYI4ArXRw83owP0se#pfonjIm?@1FBi*ZcS_MCRoyXe-WE&jLKJe^G91kHp$sHwwVm z0>uDpuuho7D_ZMQo%GWaEyJa4^5c`FL3pPR0?6y3R-IyQ@0@4%@~H&$Ww(BJjAd<= zMKt)|PPPlfu>PqT`FMYhYr+1yz-uQ*tmp?q$>pW;G@`Er{g~_ic_-4-O~mD z3mJfDL=L%0dD)I45OL1m?t*H~LTg42H$3aS;>Y21l^q$g*ZK&5TaI+!%1qzw8%7l% zqU4RTJL~)^(b1QKx9R{V@4`1E+n!Tx=>a(oR5WmnEIUx{rDPUx`!56}{U z-0rn@>`RdLNn`zW=XR{Xd#-t~=a4RTe(C@QEmrP4^Ui;-tXK2M&EBk_Pbq)*ccuo~ z3W$?A%m$&^dSDXNPGj6-6Zk-rI(PCPy)X&{d?Obi?pTmAU^tp}>!&Q?S8s#pFZe$L zR7K8SM=YeQIf9Augdc;^;#%<p?1(QRSp2QujD zx(ORa1L4l=jFXpO>4FbmF%YDr3|@btdV7pG{RRFcCo-DIx%DLb`+RGt06%8-_Z1s4 z_gKZNR-vdhkF0`@%H@~$6f;kCdwcUW@RrIO#{7cf%m1PcbzshF<82I}A7=O&FuA%* zlH?3WkjC`_O85vTXU-~3zrZOz${Lm1P6j*>Mqp0$Q^{4z73+lMp=-dGi_uR*yRU<@ zABy~aC63g%^|S7<8`gxn2LSILguv9;rz?R8J?`L|nwKDK@7yV8$ym{j&K)=i@$)@f zUr_>)N9u~BPzv+fO~387_|TH;=SJ4-6$=sk+rC4??~_29ME^qeP()O=sR4ooN>xX< zZE#KdGN1|~-$`PK)JnM3<5l9hkQh8 z#g-^K`0}lh8>Rr6(IShFLZgODRpTi-A~P;T4bYHcofNLk+iwZyfJMEJ4=Y*_WKP1r zmQ0NU134-HEFDp7H{)2`Nip~1O)V{)?va(Z2Vot>s*LtETYdhJ!Uoy5;tzXdHmNW8 z<{*{fy7e%Wl;dawokVx>s=x&m`d@mYqs?|a@8U1ynEN?j_tFK_y=U^aBXsFmY+zxl?(_4RkwDh!Jf22on4QA~j2zT}Sg84$$y@ z6Q>->bwsW5>~#(bHWCR@OO0D48?3w~LSG70N`ubu}c2+p+yC&R>)&nZ2`q0lT zcXZ6QKX2AZ=tTsfa}#9`q0={=L$ zy{xCXmEt)M5zh6F)FGZN^%?SqqeXS)>J|dZ?v&5xNkp;lC%UIvlV?-prMlinNPg(R zIY@(wk?`?+OW6j_j_8PuxW7p@&j+4*2$d9u(GbqIr$$%Zk-xIssX12aJmnz9m8X4r z`|4@s9ar$Cd1RKtS<;=X{f*h`69ePi^!Un)?O|MxZpL?mNF~$tPc2JN;wUa%-|}oL^VXnWyc*xu`l^e}T8HsU z!Ok*yyUY6DO{ZTGo_4Q z_9%>G$xEzgO%A9lyArAps@7VCBRYO&Vsed}eQ~53p>Zko0VgXc zkeop-gR5iRbdre<6K{cs)hN}KS`~|Lmz*SKV^fb*DnBlDGY57X1a8!kI;r@_H%i80 zL^7}&X#PW6eTT@tbR0{uDzkbfnQSfvY!w-6Ep#Q-zI-(_q}AjrXi%GZQv^af7gV++ z7>jIzV|>ivC~M?e496OoOETHAancOBCZ^s=S9?qne`b`@Kwm+BxJ}E53MV{tc}DA? zA%~7w^L{do=)o6iGydXggYulPEB@N@_>O+HFBrh2l9&%@OzNP_t@>9Y$iUZ_j3BAB zMEoiJClhVZ`*&)yDcyX%a@s)4*9&?kplD7e@)9*sP=zXo^x%BDrqN8*SS>lf_q{ks z?VI{%L#&fKIq!}?Xjy|)kh1n6UprZ}Cse~%F)Te*kVUC4T5puGP^2wImfncMqN!JhiRw`FalMG>G1BA4(@3m=%sZ z$ru0h1Oub6yWg0Y*fU?KZ>!28TSv~#WQEDd-t*bGQD8vM$waHafu+o@)coCORrND( zdihh>N2M^4)Fv}t9FuP|_IXp8W^6V$-j_z~#^-92jruD7M7GD%4CVc6q0`2iqlz!X zi&HW$Z({GI`829l8eJP3*E^{Fn~U#1QfOWAtiSN0Y?zomqB=wFmZ4>ySL(eY<@a85 zH$`!NE#B}uFN*_(F#rIuURf5=7S6=oIh6mM=2Cr7m$|cia+tjh#uA9K`Y=Ao?D~$= zsti5SM8)=Ea;@}}gK&LA(NY_HTR=0aeM&Ia*x45?&lw_V{<;(UPZwVtLw9;UUVPIw z=iTcMi5W$7=E{npTmKb)>DIU_f6;9T#$9l(M$@-*w` zY4rw`=*=yR5=D0J8qe2+hV|s659LPjy^5H)4%{E8< zbJXU3W{69MjsbYP5=~+`K!z)Q@?oQ&ha(C7V^Z6L8zOq^gU>z9;jcW%V$3z;YEai6 zM>l39TiENp0zqYyWR$V_99#)u5T+V(K#x4lolvo7q5q0M&kE~TkjI!uPh>yRn-?p( zxZZ<;PUY#pAf?ID2^VJUszVCx%roUaIqBPVJ=(aYW3(mCjEtUud}LWpqFOsehOoH> zctl5Va++x6Du>huwz2f?^+50`TVd_;V(^f zz5i{Q14_%2=Pkq6_HClH5}lc*;1qe^us9}}r1R&OBq{K(7r*@8UB^71+}9exC1Qif z9+$pnO8+#_uCDsPrjp{>CEJ@8AQUJ7Up|JGQ?4;n=H(|X#PS+OAvpx<|;ftO=0fr}6uI(bMu~f$to~YwqI}BmW(F~|j z*I*y!4IIsE-!x6%&e_@-dG=-84A)hi&f6tk12AI9t9D&KW3HN=j&yYP&HLr<(98$- zJ&u>s;4!glyW( z&k@jx$>~V<6Dy7Z5(8THYk&Mdl)G`WOZ9of__z_BwHp5!a*FE+EwiEBNn+miA;~Bo zu1tHQbWpGoGB;hFDedHLXhVj@Ko_8MtE;!aSvHB}&U~HuB%i5u|YUT;E~J z_Z2NQ5Ae%UOno|zVy?-5RH8#R@Dk3D&2gYimV@O>$deJ_t97v!H>X{XfFMNg58b+w ze+W%>pSqhp$)uu0)05;!@2lnr4P+J$MJ-y#IxPlfdUpL6iAoRx-}g42TXklc!ub0< zCV@?mtelj^^aohO%=>ZoMOF>o_j-edIt*;7=8hRpE7h#ySy}{ zdx=Um1=4c&EmGdDB*xH_uLHPPevV%8j86{kR8y;M6b>Fv!N1RGjyGkwi?^&|dM z=Qr3<|B|oEKP+W4Yh0Y1PXYSew}U}NyV$E|Dz}m${LN!$aB}dggJQ?c8h2A>0%5*^ z3B1Q$A0Chq3usZdnZcn2WP;{y+iYjeN^R-|7UQppsPGLp^#L(AR5G9)ljLK(3EMqp znk>nKDX;3)MH^GlR@no)3jFeoE$LnMuGg3se_i_E-d3rr0Mo?}ORoF}*KX7xtM;)? z1(~n~+*)$EV`sA234t>bZrk#;trzxgOVlcqB+?6CaZ6q1K6Q1Z$YxpRJGH5GS%(d0 zdZSCPE;z?E1>((sDeYplfwKLKAf~onac$cD3ti&prnf7OQRmu@A(IYnPp9|bxHQ`#6%OPrYW2wTc!+vsir-R{RP7>UHuqK zYfM?1Fab~n%bf2PO&kfTh!Bpu>dXT@}^WdEp^&SJz*aso|(UMQ1< z_~9<^?;k1N!6Wk{6Ma$k1}8&yuMKg9X)y=|(qu(Q{__8z@!1J=5VQbqM)C z8^jO6OX7~Iaj{|x5(GXbE9s(IOF*q??_Qs>H?){f6Ap5&n2*;Qm0ZypSntWWuiJzq zUiR{sk^dz{0v)2RhKqeGTejuqcFr9vSwKT|GU4!DO&J|s`h%_Bxu>YBLgbEe#jST# zb(xhEnaf9iy0#h*p&YdpI1i8ZuW1aF4}B?6Yy{7iXB*%WE&&ON!WZW zr!MxN!a1Agq+H+pd%Kk%V;kY?ciZo1kbfbzyJ>3QK{sjFUcN#9r@@fc$$I{hfWYtz zJ*rzdo(qQWsN{%Ax<)Yl-Amul^T$>ASH+#BC=TM43P>v=B#{GtZ7kw3nt=>~rPLh8wty0fQJaePB+i30MnzaD}8)gB%KK&?SlWxyBD-jPu7e)62H&_P~ z-WTx;T!deYpSK9Po!}`d+apKQ7IU`t)5AK5Mf>kfG+PjBVMV=y1}~%B^{uvI8=QZ^tS9Qm8a6fwq z%sSbvXXam41p5;zG%s0qyL_c6MG@QI5p$QY>h5UOQ`&#Bbbd{>Tk?xg(mluF0UIPA z?7#}Sb0EGk|9Q(|fLV=yBP^0CBrNKCjB-3@y{mwsTnfT9Gc{X5h795Fj`4`WE<7?C zCG}Y+Z-ZtJBz3C_y4!$_zBM*GIJ#9kFQenmS}~>T$yY?6_Pjr&U-U?@NZ`X-pa9CzbWeL zKDaYL(6FrXyuRQ0aXX5YSkQ+GQF>Qy13@`O7p)^v()gI8e?( zpBR9p=v@U9fM1GIA$*m4t?Y$zW4ipq8o=5s_r^1{)v03$`gF4AR3)i-?6ju1_Tp=1 zl*nCDPGqPztW#N>?K2BK>_P^A>xIdAVG?UM?pNe>BQWp^7)t*8vf+KV@a_e)+X`$7 z@QccZzj`AWmGM}e13R(K*haDtP?(s@5{oKn=>FJUq$A)1GeYWN7eM^=YAKQf_I3`1nM5toia;&_MvQ%Zkcn{!8hsiUf0SGG)8@kZfnN zfG3j!Rb~hFwU%O3NcAP?V^<}gU*hyZc>aihelFz;mah~EVZ{ynZKxikBJLzcenodB zF<1p_KKjW-#Y&|%(wUvMtP}RE5Vv312lmM}JBR=p7VL2+=6ncUT3YsZ_3CL z03LJA&M1}YqMXRy6#=+mu^^8Qag%nKPgc?iFBQs6)d&D|_sKvAVjwXDm0DJc>OO(G z(?L!Fv)2?NK`jNl9vRZ~_v^c2&>8pX6y7L~Q=d?dO{-#ir`M;ph_TGAmGD(Fm|*n- ze((f^A~L+O0P=el;a4RGYTiDrNv_?^VV6wlFH6+fMQLRInH}reka1Ej`2P1gfEfMN zYhUOS%}a)~xtx{Z5Ql(Ho4g{9xy23KybFcdtq{&qu{|mJsK;0s(!yy|>_rhUSne&t zwO6_D2PfS;SNHtx3ExV{UI{5(Us}LI?Ro$Y$`2F9f(Ql!CnoN3c2!ko?yE2Jb1OhX>YO zUPSgBqcVy%5{Xj|##Vo;Ql>b``!Ojq>3mb_OA=lJkp3U5{guiqfJ7_cM}$f`-R?#p ziy{6x!GKN1Y={cBI60}Y-9$ZsX*{%MW9X>q!3cfUuh^>g)VLD|)Cv6}_B8qY_ z0n!~O1xP1w`?jT0i7GujmTMwunaKZq74b2YlrciAvMINn-Wa&96Jze4h?O4;{}b-( zk9mn{{t^#+onO)4Y^NSQ-&sfojm>)&_-Ds`(7x_R0npGa)nUJy zQa&hj$>vslxh3_vcy*w4Nx5Y~dE=oCNgVkfVh_7>8{?sIHlKhm!@?*$ z%Es?D6JW?fyzRaK^zPdN#Hp*Tp_Ix}dMpse$!|)^5nHDF-1WHg*{C5{4TKv_fEY;w z;0Gkv{o09(CgsOqmC`P0y9A_{q^8&{Ozti8gR1H>c{BX`nr2*6awMZw6PRN4Of1UN?_8&(BDC}ky*s>!# z9iz8Gt{Odo69BV^5V2ZX_FkZ^g;PbW|3E%`VL`I;aO{IdF8&bvg%@M3y7QWNKSbnj zzavp&h}(|KOVj_9_Cq#!wc0t7^JZG~JZSwu9Q2-teC)1m2FRd(2Q{BQ#0*+R!wQ zZhzpnj!m>zP6TO;KTN3T0{!Pkp&myYCa9ibV!%~-W9_AK>4|Rn zqB~KKa#sh;!{9I~s ze6m@4-;FNd&+!G}E#jSWa4#a#oMpQ|n(_XaxXCU*3jPVo!qN2z-e!8C5EanxMZYFZzp>#D1%Q0MCh0dN^+o~?aKhT0Q}w`c=HgIm1H7=0i9Jfr zuU)ap1D;g%wf#6cR}r~$Fp@=x3(#khcYqIfN&uQ2FMJTfQYb0S2W8`v62R17qw|u8 zcp<{d**>fpA)w#I}Or1P11Ag%|a9} zTX?!zz((I9I53+qMXtEL`?4`&p7W~GzXeWXV2-S@xbc;7Yp|@>0AnaW7-)f*Iahm) z&^7DOrl;?zK)FMbhFzP=znbiarEI+2)Q$f+>zXb=CUQJ$4$)WK-KW(_@A|+&Pa-Pu zB=^VQwV$iMuQZ9EDKJ>KJ|{8z$4@yhkoTR$G2)>3zYfIcxGmZ#%PHP8X&eopzvG$= zW&>6?_zidQ*!Cz;Av_XmS=6h8F3lqcgdRL0LXKROAr<TrDvOC~Yp#}FL zWlGtHD|13~9J=A>$Sb%NP;mrpvEiUs@)}>>!+cIHXuaz zFNE**JTpSxST{tUiGR@{5n1_;A9Th5wJ(JH(F_+#Pdac2U@sW*_d+gpK5?QH5U<3j zSgoSBxR6-{_=~trdjf*&`FkV}je!wI!qP#0P-&_Yt7&Z?C%r6b>VPT!6BOld`1KQ0 z#2#=3eR@R)?@;ge$%YkZKXRW1$J1GWE*C>yf)1(8S^#MTq;_;;Dcz)mu)3SX|Y1}freTK zexqz0p?!z|#QLD@b)48`p=o4%PTzW)SSw)L`19^)M)7<2B49+*oyt$1T>Rx1Fpow>JgVx5`8w*I6|@#p zL5mF8?mNfl^zd@=i63$VdfeW9WM;6exzsmH}w zMjL1=*6s6&LSwzh*6>$3?vjAs85ci#$7C9Y#O*th62PFu7J{?pVE6|8p(}PU`{5k) zK^vdr<-ks>&=gQFZ=?HZVvc*)=UYydZ#1c8j-gvsjt`Pk+@o((QjcZpLkqxocSUc@ zr~J-~%7N&wVfp`<_9EL_VDL{BFdYr}47OzBK`I>Z&dI(}VP`dpgKLwym5ta$;4eI3 zken}WKiJdlA9-*xr0+`QqW9zeYqZyEsgV_Y(?x@VUl4{+BB(tlw*Q5+uh@_ooc~e{ zeH};nqu=@0L7;k>jQYQt`hREy=-u1@l=U)hZbu&Zvc_hBVVH@$Pqe}l(n5y}-2k)d z&CX&nyXN_1Ukn;TeA!EFqwU?dobc>S{6LCuI{eEx(@6`-;W(4W#>JEa`2X5g(%^w? zcZ^>VD%{rygX*oRVj7hw6jBcs55hT-K~axl`Zk>(nH zUEWH0A7K^S<--~Kt6w(sc5AV44_LwO*{8Mb{T#loOH^I9`qquwDo{diqZJo(r=GPe zW)p!!B*jg){*CQ8lSwE}dj2l$Vq*=0uJDV%ACidG+3G8+;_e-oQ=j0KjuVe-0C!fL z5E^5|FH@YG!^rr7^~T;+tt?a5!bL*@2%A#C?GBL+n_i{6-QLF^qEv@At({ewnbf8c z;-eiE7d3mm1qWtRThe%)rid264TR}mLWJkOTmmRwp&X}weX2le(?2?=0>>hk>`uA(UdrKjz1^POv<7b=<1YdE2f*-MY6Fy5zjKDbTH=C38#wNLN84<% z@K#t!o&WjT^mXYN9^eHmwA1t+ZnK)W;NB-t#iz}m*Lwstefns=V)3%MlbaAQ!Qr&m zsCby@S}GKyXev%Z@`T|<1ft5oh?9J)Cr)CMjS-rNBtGikPrjV&>1Qqiq;!`@Y22?J zlLD|B9O_~n(wLB_nptKl{B(Zn8 zxnm>%L_1p1JP<#G^AcCIpv4vINQ!=jCkMPm44(9PEqA*T&LQNodw(TSeB!f)56PR& znF?v#aAXd+(Bdv>EgyGg?C-7wY&qhU+O8sJN|MMPh(j=*Z*><|u>ZIqI~H3fBKRs} zAfp=#xUsD=AH)H603y%K>dn=mdZe~Gt=3zRFpH9aC|~7z{pIecnf?To;OmpXmVv61 zyDr!h4y;*`654UxC92<)gTDaRA;`kcziOiEQ%^0l4CtSyRLK${dn9ytB$Ef5JSgsmC@+Nw3C>9lH}?$%k!=q-Tc$BghSE$N z12Ip6vI8|xZWNP`hj2>)otO*xRM_uHB8dBHn|rMb?n!aX9?2qd3C^o~?e1^5w$AY7 zIkD@M1AdR#kn*8gaq}23c_dEn<&RzN30y&@v;acwKf6tmPK!aUFTLfGt<;QT^mPHT`Q^Zy2oE5C4y$^4M{M;Hcb zhc@)|lX`bl)il91H14d3UIzW;AbI?9o?fRt3!^ZFzM|LWp~^1!owMaaqH4c<)C@+=r_@>#%F+8{ zVSsm!en~q9r#P32%#+R-(7r%2lyx_B5XQ)K?a6YN@A&!Pi^r81jG<=+5ord?UqDEd zWIRuKgJI$I=3hG$Xt+ZX9OSB4mCPk_7bPh2z}DN9;uO1Z3rS(S>j=1`37tNd>~-Z)MKMU3qZoAPU9# zyDPLcDoby{cbp@;3BPa$J#yj~I-t{SXtHF(>VeF0hYc)H?@#*ju&swy5{~DXvgLhN zsdxyl(=Imjy(*Y_jJltFn3-3*cM`>vy(ypMiH*n^XGd#ZwI*VANbi&<;OgPqFBskR z_!kRB+8yeIwD!B^lL28<-JwJq5b<|!f8ss-BW9Wp$B@q>wCm zhCAi;h?Z!8Ew;OJLmhNabJ)X+#(Mc-iBl${ulaop1Tm!eenvzO=~ZOT_4o~$rl2ut z-MQM7!C1bVDyHn}=ZMugspUrGg{=W@R@AX|QVXqM4fbYkOca}?ESj;jL-V z$H=40-hF<5%$jEIwu;h-zb%{)wUM#PW(o7Y_wxQgAAy$g8fA^@V6RBlIhoV;2L^># zPEepeK|H7E%ow{P&aJDv+k02!>k*Ie4w^cRMiDae_5G=czUNh77Rx=+)E=UsrM2$+ z@_?%$4qoIi=CE}AcN>maCyP&p?C-sNC|9DtG*-?_ILvr`c{0N*!$K@fNH@)-K8WU( z@A~#-j$f^FA<|nBHL>Z$XqMAikYedZn$eBV5YLej*R4e$wQ<=8*H-B*%dGfv+B-0} zeEe zKW<83C~=}Fk|ODfVAkqA6BA$XrUW3ZsUM5^C}WEg?nfm19$Ikj`m|-*dlc`k2=J|J zRISMpC3f9yj__EIS+nT$ub(rT zX?sQMu8%l3ex0sUz~>V>J|+You5`m8?mG`C%Vw5n>GL(4jyeAelNdXzRYx#J6qa29K$ zgU05@WlhLkH-YE!v`vxc_D&Zn?=d5}(DcUWX1MJ8zNhg_ojGUa86FADKF}u(6G2jZ z>%#arlE559^L}kE^yrTT1V46Efc&V}hQju!n8P?n)A&^;Q~K>aXOC8xB^&amo@T2Z zX_BlwC|Qi(5|*Gr^8Afy?yNl5nmacnb+SjrhAU@6EQ&wh7<+MQs|Q9_nBOva-uuK$ z`9E3Fp+J(VJ-SeAM)HhW_IG~a1X;B$qdXGIQR<5>Yr-oAp5lK#>cVR_z57kPH{kgju8J^O*-@ooQhwBM-quGdyjOZLQ_5>9-fS>q zpzu?1leH2-ET^iVxV7hOje|I122P?uKtA6Pz>6!fxzdGnJS`d)miOQC3WPBeTYOR7+k4v5#LPmg1tE(qwgfD_*Z=4QVzuDh_tb zIGFa2YKw(H90JkQN(R80BH>+fk5^?E7Uuv?+dQ?D!bYw>Bvamfq2 zz?Q84TlqObc7(H?%@oeF8H;cHn^$|}tMo^4Jv51NcvwP@Zw%WtiZn@rZ+x)t2`(uj z|L0^Z{p@@8gw*?97t-0rvZtroL}y>rd~1`b$~+Tcet#sgdKdpOBH}q@`YDwfo{GFd zbmF`)&gaFG^}ml0R;+VpvgE$=u0zNJG? zb^5L9vaBJY_L-gq=O1}%#jTpE_p_#T_sLpT?fA!^#o{3^f)i`=A*H%m#_#$KNKiG^ zYKA}rirmb!+nR~m=gdXST*AF_zB#iDsTq{*nDu&tjJ?=NH7!RV|hU$Z+cPPYlziAuIs1a(E zM0Yocs~w$l4ZR#$jRPefGB*y`=pl78iUr~{!EVncBf77g{+3Wx^T>j`j zwap3Sqna?PBkfDnV6RJ+{w&=ODMhQennudE*8X>!^+9*uxKw0E?eLJ<j<9 z{BioDvu||rl8jP#R!cwPERYe;_An&5_OP+CS5UuQwaJb$umGdKb zm^@X@zQUvM`QHsRR3kp+?$8TgJZU`gaY~3vY6l;}{3b|5Mj_2Q|^?YdCbIDkwc5AYFQI z0jWxpjv_^*gdzb9EkNi+x(L#H2dPq}qkJH}DqTViMG^!dKqxn!&u{KI=g$2rlgaGt zZj$}&?7Q#t?5+zdl|05a>5Z+)%7Z{49m+ZeBA z6H}uX_VGJdzu$6*{qy_7lX;N(a@USd>r}ZySCO({QhEpy<&*m zOgDElaTRWy()n$}C~qDb>XtlZ0oPQwI1~5{oW6X2+QcE?5}>T){?tD49#uJL>(>jM zyn?xqAj9;WyeZX1y)6@4MrUpk6$%ZKXiNL8<>-DWg&VhM9Q zxBXE4p_5(i0)q zbNc=HM>EFG5FWk?<{zLbl`A)S_!%lD)6Y5o6z^ zI;8L2q#x||T))R1j}>TdmR#RIoP;?Fc;%IdoN4mQeK-zSKWa7L($(tDJLP1C!Gd@| zJwBC5ZJ&EjT30Gc$My+)2y}UL*ZTj$=T0sydj&zi->r5_i;9$HKDgkeL;~>rM*Zmw zeDkuV=$kcwnMkGio*G)v*P6@t(;$iH4faDWzm?_Q=Jj1*bZt@2m{8b;zu^Jv!UNqX z>JHbJ{_h!&P9$hF0L!dPWgV^ZkJqn9;<4Gx7<%pmmm7D0KRi9puh?Nvz;Dq?Mn z^?Zw_B6+T=S7U+}`!P1e<)*(X{tXXe-$f^g6PmGR;_Jw6-qLVlEEAT(Rs=Q14Oatx zjXFQLDKnJ;Pt3}cR#gC<;)PA#i0;cmKwG8)ILO>=ThHzicDEPRD>H#egr7YkgK{jIS zU|j-QE#_pW!gWyB}&X&-o`jRk&omF+ajRBoK$ zyQw$u<$y=BmCvmcEW>#YwkSL7JSXb&=p~@h;K+|4SIDI7gvw1#u{?<5*CRDXwSHOo z8$78afs&{CBXnt*6v~=0bXp$b=epZ#zQ-}*qW%?E^zwP zOtNHgkwiaF&0+jwL~~1JnB1Eron2QeCW|3~4cSIXI}}?S>JE&mts}iyF<18oDy>3Z z{vviX%Ev2KknS_p)lneBYL7&x?--#8JDMIT(oG+`>QYe6nO7YB^I(N?EMxHA%5$*F zOJ;cxJ_OK)YwlY=3{<+h<^3aRC{a@M5_v!WhA04Mib%eGuk+R|j;Ke( zc1Hn1qN9<8Pz3tM1^A9-ht*F?E&W&9pE8io6LydtFE;D~Oh1`!RodSxd@wZ}s(dgZBSk;()KJuySeUO3>_a|W|NX;?jLZ%^ZJ8;EOKzq}`7e?I2>Gd_;1 zu6cZx(i8i&pj(0Qmadak2lAYOB&-jq6eTSp?V0!4ACx-D9h}%k`Tn8Bn^Eyi7{5g2 zztAX6#<1#H_8+;kNV)L7`QI1DLqih`h#Chg%ch8qJmk@#DvsUPkfN)#+p8z#ip-+E z`@}jCxu#zEU%WvuP((wvE)RpaF>=S+_khsO-UlI~3xWBGn>;4kwTYsV=MJ|N7V}Gq zzK%nx%v7Ms-43qYk91mH!qTZV#z_EIZ@{b_R!ZK}1uDFs z?)X)}fez$(cnS)2D) zp|pQR0$efZ)(#T;cpb}s3jeH(JB?O8F7|NJEvf3$3R*0Q*BqYp9NKo<2bJhdwHw5W3PMre-t4_pudP&@2s`Id$x};tKsX}t z0Ug!`KDXkuTgrUUR+Mo_K%XVve|kSvF&EHf7=Ds?G6)ZGux1Le3G87y(u8O%XI*j zyr0>gxg{j>7MU#Hm1N>#{AJNyyn|TxB@OLbM`PZ0IBL?j6F20;c4J_!_rD8|t$tSB zi$Xr^79{Y;SV^&JbD!byL<3zLHQEssIDBJaO;*?nOUM#}{I=B-M}(e-K8L<{nzA-`sR8fc)z*Cm2lp6J+bCt){gYQH0oo{nZT(}9xEQg0S!%26wq}tUdxsYFx~`@`PB!F7o;%uw0`TOXcSpephcOd9EIcs zPthB)B}PF7zmE8Ct+gbtA_)NU36s4)Q4?A}WjUaaejhP0-Ymbk?M!B;bp8$w7A``BqEoX&o<*@Q!cIvN8X z+&(S$-vaG&e95nc2C7)`_N)DTCCXtCxbo{r@us(hx8w)EZ=F@BqRY!5X{KT!-n*Uc zDeBY}E!zoEL*-;uqhdMz>Q;X5ufdWbWm+X$DL&v=cR+TeNe`BQ7_zFnnbgIbTBVtM)b_AWtRAshT?PIJCmSEKPq!$M4Y z_Q~Fw3M}YwBd@CA_qIR))rW7UYk@74Y}}7ld=P;xdhpo^z2z>`Eu}22w+5O;!iMk} zCU&<=8ZUH2;34jhMj-yYU`~gHo?`mJw$-hzyFo3~>z_L82S6XtFXOI$WnFFct#4ig zXq~B-+49^=66t+3-}M7A_~_0|kQUv&l>StQrSNF8(f4L&=iWL2#JA@2@q&m05- z3o>*V<>Dib3%|ehol;QO*zKI$dzm zlkwyK0)*IyYVrTkNKuU$1drZxGS6Ii0Qn<%3hWmDEqUrKcJ-q4{C+}Crx!l}z+Jc& zuiSD{auue;W=3aaXm0r)7c+Y3O_j;|xAu?jL>QagNxH-DLy>)yn&kT4VH5p~M8R?Y z#?DCRFrJ1&hPct{WvR`Q!LX*bk@!|;!ypSdIHPZg#PHziV|2nQm4U2(Bs77L21{nW z2MWUkutcw8NgpzLkTXJa(i!fJ4Ixq+MkU~c&)2du6QFU1RPg2C@fD~%6c?$PRhIjT zm6(+hS3t$;*ye_M8|dkszDuX^S;dnB#N|CW|j=dx3<&`$d) zk`q_N3RIY{Kz;guGfF|}4^Bq88F0Kz5>3D}I!NvfAHmGC{C@x_R&vPtA(&NW6|l_y#-b#Iwny;nsL@g`SR2`(e69<#;Q_2Z#%JHlaE9-LIyJ zIU4QVYvb|ypO>E8T!hEt+JSVR#vXu{$`oV*5yq1|9y>aEyT|Y&brRH3^wLEUNGnE! z=OhBWh>z;TSiyB{y^`}1hG0w56#WzwQBnQ5TD>UvMjmwfoAKwjV5yySEw)h{XOjv( ze2P9N^6ri*k~cGIvyQsM;!*;)qXD9u*0FUF-nL|oxv#sH)}QeOm8FB5XOhuMT07(P z2K!F7)3GIef=?s&c$`U+JB6!@&&7i^q|9_2Hr=F*<+A^HK|oW0njeIW;s|Jok%y zk1l=3bNctG&Zg8>sWme=p+BN`)OZk;%Ad7?az^3GHJ*L7;@Uz z+{F>J%JbIAgMI&h#Z$!Iw`Bp@<)s(Ow_tbP+2#FQ+jlGyoS{)L82j)-UVF==&cDKP zf8&FV)2TEx*k{E#RqhaXBTD@WhvGNvvsA+~N+(cKnzYjW+fGf3G!HxFZw$2h4tZbc zw+-}Bx0ix_ahW4>BI=4_UJnqby&?nC*x z4PNClE@yhtV!x4w<_-#{$E?Ozl{@wi=wEMxh4p^C*vpH_uzsqYJ3bsDnOJxJ_*@k2 zY_Dm;9HCuV4qwm&?;CFI0M!GmfhFq;0a9oa`2*LdNBpC589O5!K|jT1Gzz^No?0&* zjou_Ka(m5rW$r&dA*2~;9(Aw>qR@ZF(EwigG}&T`si)#kE#5iX5RUoGQsB)ZAc)$L zJovGwH98Z(?|ntFa^_%_(~^?eu!=KA`g(V39b2BIxDNJUBhnJq_aCfJ&yKu*U-|S* zhq0aQc&fQ9qsW@*q!TmQVRNGvWTL#9YQf^I^xY_^1aFYLB!ZD7sVnDG{NEweM(n`_o+m2c-L8MCK|K$>9>nf@sBWWX zio7Swk%+7@s)pBU{wx!Ac4kN?I9B!wob+}w>-|@S0A~RKZJH-1#$3n4`@WB*^sm;q z7usJ}U0CpUaW_N8@*V$jFa+%v@2fq_TXiSk%0y>%MZd5((MyLP^MqO}*@3I?ceOYbQm?cqLz;Xb4wgTD^Y~umh55 zDZr~(ekk2vQh$(fA9pteX~+4D+{~zqZS-5ros?_tJo{(6qWgggJXCcxzFB_#pS}(B z$nwOtmU_XfZXFu7*Z{{i$LnB4)aZFC1;}*-IvY1&I7S}q%S+c|as&9A?GPx(g3iyi zfh)*Q02ezWbz*gG%bCSXiQA(u{<``iH#i%~zPzcEfXDjNR1a2dBJuTR!Yz&?e-!?xJ_H2?fFT*St- z5D-5Yk-FEk6zh$`o{y6_W4^>_($)s7P&88$iwQ+Jv3y}4&}UuUT3yY=3M)KLCc8h| z-@)3RLOH%#_u<>DxjnRKZWZke8u=aYI&JD*;I`-4D+;s__|sqair+{XbjpjnjolSQ z@e1Ce|4R1B{l%KhqT0?L2{z#U&g*0S1{3212fV#(D^4-*zv?ugnz4XBDtx7rIIbmfyk1U@w?cZCp}r zM&}YbDrwdR`lrcAYQV`3{^!kqs?+|%&-3q2HQWbDUjR(Ow#tG@m;EchaYM%zFcAl0Mei| znS8UUzTo!x_f6_;ZI7e)*7DlQc5he!J~jWd$3l$HrtOrQcPwha_{FMSIHns3&#d%w{BW?~hoS z4Kb4C`qi90FW_i%_`d9Aw=VLmxn|e~zEpz!XlyNCIDG2#5Ki$tL#Rc4c)OH$I6&y$ zGMi_ca;}TYp*RWedX$$U0bJH3FYmQj5A~kQV#uP(R0MMxU}gG@^_#ugF74l)H=8dw zD0K8u%1<#82D}RacaEV(+Yp-2$Z^t?LdNnzLCziZS+DR^~+CBYzyjtD;^w&)#R zw@=zVE}hO8cnS>+U>{Cc<5h5bX-|LX#5CnYt18m07Tr*wK-P|vg*;PIDZ7@=0VxZ( zvmBdVDrh|dqUt^_w|&PESufWN$byPrm4zquvgV|b+uzK`A{(##-=~gxB7o5Fo1tomaa_zW}~`=R|;-_3}4BURo{>tf(>)S@sw%D=oIpwQeV7 z5XR4adviE(IIrrStwY3}AJ^=@F4nkWTBz{IXIFvaIQsAQlgK@a%TfRuU+F>TGAPu~ zMUgYcb9QfhogIlEb3w_=b*RQRi@%er9HF#7gRv?@!yZ`&QQ0HHA%^;qhxi+XDq+o0 z8$MhzI3@tC&L}Bm%xl#6VNaVFuksk_lw$VcZnh@OQsv`~J5+R}v%{0feL_WW4q-gw z>zC<7al?BC@M9_Gi#dJUyBaI>bMC9jc#Sp^L*&!53~gDtHqk9R-r+;dwH}O!s;gg7 z*|DXM|NJ5k#2Z;N_w?PGl+-(kR$h}Knb=;9lfwIcX)zx#=qPtKQE#Gg8}AQKftdzD zcHar*2X~hwMwcJUi3e+?94^Ehip8nJl358H2sRCxeZo_pTf2a-jI5>gb0hWfuLpj4 zT-_YXa#x&;$WrGdVAc;76RMeg^#o|oj9tHxvetcPQVenu>JtcL%NNQS(H^Ap?2QDdv0i0U5qzstJ16~`dlocr4FEb#of$D#c zEYmO0LVC&SrLeoRG@X>1%<>$3>wFeO7d|t-?Ip-k_6sR-c?S3E%E6%yEAi%^p=z@{ z2%t=b5}Rs-F=&CZZT-OXJH~#qM zbp3R8UnA$5O=SV9mPUWxF16af`TSh%Z%%`O=3f+X`bwmsgRQ>S%jcswjw|M+kk$>V zP1=;gb5X6;F6ui}#9E92=14f3v*4F9Uansfzd0R{))|ZTgfGsPc*t>}IwSWwSOunm zY%xT_08I{DG@7{iG0MwzRs=%LzcxH!Q?6zwySz0@z^i`dV9aab{iP{bl(bGj>tj@M zFCnfQn#}8_6|Hw9AF8p0mqNd)XE__kJ9K~gl|_sg4K5wKdYih5G3b9tfk1JEbqy^A zA37K3duL`9?0v63S|qq2aDMh9m3K2t&n)h6Y9l``Hjy-vD==E@ZjkQ8ThPzv$bSFD zL_p3L^@zPr5@U;B-S$7#XVGj z%TxV{r=5+by`1eUd)x~^Ohi;xP((^lRN7cXTuwqpPEu4*L{d&fghTzM>whfZ>SpKU z0Q>(JFk+aQ#4W)1dkscz4xTcJJ( literal 0 HcmV?d00001 diff --git a/tools/media/first_ci_cd_outcome.png b/tools/media/first_ci_cd_outcome.png new file mode 100644 index 0000000000000000000000000000000000000000..f166df65b91ed5a6741859b80c08f31395b77e91 GIT binary patch literal 48004 zcmce8g;N|`&@V2*f<7F-fY&;W}E*WfG~Bsc_JU_*cqEXd*xi@Q54?(V)H z_ug0a{($$@>#eOb+jZtt&*`3??qBz8(%>_x%9BgMLeYfXP>EEwHpPeKUQXrDDyv#?h`GX~YzoAP+ z&nf1@u#K>)$C};x0)FKO)}deeZ*`(A^1glknCPTc|2@9gl{6tf&(AtJil0Pf$4oos zt)P+p_|`Azv8SL(W+Y7s6zBfYMKEkGOgRgF4r)B?7J(FBZ$EkmNN%6sHE~ORdVzz3 zL--%Ln0_kziX#6X{S`!SW&D@c&PX1LM{>jBf)3gmDK&D6fU!gYoKe2N@lS9XGD`I%};_>6$ z6Sl>Zg3KLgaZd;hf54qeJ#dGA?Ij zNrc4eLBaIu7>UFRarE#oq*J6*s-m%kk^1SrZu_yXDcJ+yDR3pajR+8-1bf+lh`!2# z*B;q~UbfEn&>t6AMn{Rr?CS`bHvK@4dmNmfAt!ELwZ^hnhrJ4LYVYlw7NA}!786;AnjzZ_+_aHJAWq-$o-9);Xv>2wm4{{mv~q- z5j2C5tlUB6_0X|;$xPkbHCcxm!m9B*wUzJ;5Mgx27bT_EmSNsD{!2`b zEt+`{vrVC6+-A_&h`-d5TS1LN019?IfwCdE#5cEAUE=G z*)W85ME3BgesXVRrKzXpr-5YTwXJn09)^yUaJuP8DKU0y&P`a&&7ny{UO zU>o7}8}pP-^J4h7rzMnfr#Q2*)hT{h-o8&6T$VN7wbpUfrV*2;XYzJy1VFv0uqxTG=0w-vdbI`8> z`z`YWV-wjoHGY9Tv|nO%+i7()7qGbYomarj_?ds-0cV25$?gc~G3^d~OO~%V6ltF4 z9t;O&%Xl@)3_H0r)w0H#ICy*A2^QST5xo4^Ls@R|Se3F#=clNUO)ex<`0i;}^j+k@ zdH}q{ylX3qy8pc6co>u7<=BtPS9WwFuAw86_tBWNUP!qWW@Bdgv?0;zO(e+*&7vZC zmKHAk=T=AlUPzv|*>su7DXr>r_ecEGtky{|L$w;k@riTdWdwV8rpXqcNHsAGau9f3 zv1IQPfO>i#+i?l1I^qpHs`Zii=bC&WoFC;eWH5}2OOV3BHjjrxo=i5XpPB47rg-x&<_QjAR(#NRutd3!V8WQ*_v zV3&s>g};~v7d+S06XdjEu@#No2?EDBuGc^8)A+v(NROX zppR(@qwH>JB&LjAfMgINc0J0(cNLr#lmqhY9)6`GC%(o{Wwl+6q zev<~i`Ban$uETSs$s88x+fDMYZ7C;-GYoMlhGP{8lXDH0i>8XfE6VgATS!~O*#Ope zU*?HN?kh0+mHH78hV?L0x!?R;9)z$B5$7j(mUh1%XlmV%Iy*!6(zAuXRL*-@DG zt*)I@lOZCiFb>1T@Yv;|eu%jBWK7M!5_Q?)^s;~R!S-l)CmleE07_i7)JE4az2lI~ zQXh^XjE0D2YE%aW=TZyQY!?;+C_PPRu3B1u2%CE!WRpB*w((uuE3Eo{SNcREmdW`{E+tQ#;iH6rbSWEp^;o}-J*Ucn`Hs!aaNpNV z%kbVjd{z{QvGT<_a+;``*?RXE41v%Rx%7BQ|5^(}=pw1?y`nX70M-{kO3Xq{MP3~D z3cbM8ci2*}2@`QSrsK zdj1&B4TM>p=g;gf%+`Q7+Z9&yUKHvBtI&Whm~;rF!C9rdH`zZr51B24`&va>jyx(g zk%hd>F;1@9YcXaCEX`V*#{Z3h-mYb?)T$)EA;~-DzC+4<%N$_BCjbe^I?z>c+gnfG zuzm_J3fs?|2%5mW(#}^&#+mutEJA?m8?Ax3KqGL^uRy`_ig? zVhHtk#n+pDP`297`MNPRN7JLAko-L${`Xh6UQq)QFP&1@p(o}kK`y4TI#{bG;av^t z73*;qM;(()wfN7lZyFLz*!*(C++w#=)GF620V}Ipk(=4RHreN>ViOG90@(X8IqpqE zR0O#~>V}wF#jnFl;4G`4`{u<@GpKPH>NWw54-R-%gwBu)ebO%KQU>qFr;A|m^P6*l8VyvE(X zid1Vw`LP|NQ^PTrYX$PN!|7xkxV*f*PT~w5yT$HbE8_IS5AwIzrL(zW>qlaNoe_l5 zX;)+}-nD?A)-TC%Np+^Eq!0ls$XNgzC#_Bfk-?Z7Z*?Jk1utz7s|AmA7nCYF6b7 z(fnWR+g%33$^zW{_S1M8LJIY*Md1_Qkj=Mvc29xPeY|SE64{A4)e@$>+VEO4N2v&8 z^`N^az3BK#matiW9U`-&-a*V<-@XPNDli-#T{^tv-r7TXAo}9_w86v6Upw%{2coD= z>vB*xRp&OwXn->XYuoIVa`pj`esgK{!q=7;+p!&&hBmBkNfuR#-UfAmxJ0jYd3c2F zO(xerCbrfwY;*NlPcOo-86#8jgo*^^Q}No|Az^H*I7*yha38!j>W$+O30by>24>N; zowSUNlj_+CeZVp6FWmzc4)Qa%SlJLhEmuY`wWem%aOnCnKi=hA6-!!5@Gt$WjCc6) zZv1hg>cjRsi$f^h1?Rne!|fBtcThM25YZS|GE(VMroV4Ly1u2(HNlQ=xt-v4MlxCQ zNkw~0{9ta5`py*Dye9RgK^YyTlgNADS-9UJ!=SKdB{x)vp!pYTmh5FZm>A+ede|V`mV3VM*~*y`Bn-62Tt+!E z=&sbwcLdGFJi<}C-GOdFsF;smAfl0RTORG>-pl||@}bOQxvlNTh&vW+JJ4(7qZK8i z;WQVHUVGsP7UD)>JG~(z3Vvr)Deg#9wPOl3tL@R5E`fHWyzX+wu^`K~kWey~v7N04 z%_DCDLR{<0VTFg1)utxY4%Vi@(ciyGemas$$vXO|Kq5b9^fjn|> zPv=Vk=ET=fN@C!fJKcXWnkR%P+s)<4$D>!DInSZS28mu2C^bF^ZoI9j9ZU$L@)pV_llXFS)JwTeKc6wUf zL~pf9lKUX772oy2SD>j${A92ggH2V9qaE77b}1TT<*s@TrG5o{ zDPLUst!rFj*1B@md65{xv+vfha{wm^)<5P~UWdHla&f~hzVC~yPpS{Ite+Hb_M5Y? zZe0Jglw^B5b<%W;%qlf^*EGL|deGciZCu5fbwele^~kI(LL=TSP&2i8c#r#m!v9$6 zjewLIO?PFb2kuBr#n}qjlsP)O!)}rKPUx~-9s|71#o9vuBged9C5pxuKQoegVg}%{ z;YXwPRlM-C7oDda|gs=NW6@0V}eT$Puv zIWzWxsTi=sqZcF1rF+Vfl1Mv}^BG&m!0e_I;&EB< zAOan~ixV{0Z>%6!-o?iapFUaqF{EdJUex+u*y6T5S!?9E^p&J$ckjWuAy6Bv^WK@6 zm_U^{w)KwMTN$3%iXhi0jr(2RHutuoTzy6h4gh;HhHDp`ueeK!gnOJH{*`kUMXa$G zPKEv!I${AWAiMT5iP@lzajf;BxN2-5d2eiP$5#t2&&l7q&xv`QI|wCZmB&EhHbqb) zlbufcmbJYEvDd5?1O*QU8RMw&{cb56C7js)NO~<&M{JII`ekh`E(b07X0;2`>N(n} zTnSO#TmkV(Hk?+@1wUOO2vcbNP+&`%7t_953F5!f3tjFwI0Ldcq)?>etZg?h3)0Ov%>#1~2{o`(x{-%Pj+tWCrF@wwJe0 zyzaD!Tm9{ap#xl7f0QrA3+<8GEoe36D|Uh?R)et?H6__YZp6l$Q`pcsXDm+7Z-l@& z>np%SgoFj-&u>E01i29guii~sPyZq{jD(k`U#E)qxE&ju9-cBwaK1~j2kS$p!YV#- z`%FrKNz4ZtZL}w39>yaFjd_A1i?x4(FpnHjrl-s)&K+OiL$+?jYM^E|Bp=51mG71! zx<)Y1i1h?51*5jrnD^{3C$DmYu-jz%XZGjHeFR6;jp9m812Dervkd;@+!63B?eqQJ z-Ngi$uf(vo!i^{@I-OFFu5b~+-=UdZC81u{KOH@hv+s*|#x%lGFjn?Tle{{=e zAMY+3^H8hD*y;ZmkYo&1%>(+q#Mr444# zzNkY$`Xx`mw_8isaj;{Vh#h9ZDO~auE-E8Z3e;eK8cN_POk{`q<7?7FLy$bQ1QimrnmQ#U zFOI*or$J;M=JD)>ZYNB8-J+=}e13P#-mSh`(@fuW37D-PigUs;KZusu7>+cB6@6C2 z69agxy+>K1v47(26H)qPCC-u3DYord%kw%9Q;rS{%PV=tJjBEP97m^t-K`GX;)r+f z<5g7_UkM`2Sb6-=Cc^RP-%qvtYb3|dh*wiNbZ0DAadqOFeYSG%7f!?1Bb+QB?P8r$ zyJmv7g<7#P-K@sn`&Wao6Zl*5TK*z5Nt;CnE;_$7OgB$Q{)?t0^luo?r&ilet?6xt zzqWs+mV5|)J$Mr{feFgBZN~U`>L6_j{`>LKn#p#$#JhCjxY8Z>KOFE)+)XrIc}$<$SgX;@F;M@?6NGLucOdn z8?DtBO7N%f+_K?W@I59j-QJ+D6Bv93SBzD|)#{Ol#T0A%?m6MDy9U)zeU=H}PZq_@v@ zki1i==)3&r`zp89H^jF#w(IzDd9m>;=RZG}S__Q!{fkIk;Nl7^vB!UxG0wF09;9E& z$gn&eyh_b3AI{zrlAn}{<{yy1}J5sk1op90?i#I$_4ovChgteMGljKr; zb^0DxPWFzldPJuGmy&F@f#zv;eiNbhQ48ij)9D8$qO5wOEl+1bp>R^!QKQuhs^+vC zIhJV$O~$RRAo(f+hK(boFz)XxOmGqQ)%+8j8KVm!XUnnWdF_aF@%WQQS*&`FOb~HO zk_C6gleUiF2$hC~7nTgeA$EW}%0K`oZwRb^OGGZBNi6iI4nrsbh1_Iq4G~9q!b^!T z&^1|UfISJeV84ZtL}n1cOsT&}k5+UdLFQl_8~0!=JH9atTEEdLcgjh-6nD}XjP(MW z&2^)=(<)^U7PTF8m`Y&`GQ%CvrqR{G(8}E*mkdq2;4mD5F#3z2%H0uKa`{&}_>!34 zg%OXxiHP^T=QXt)ukTsoX0|a#V}MN~EGKk}%2-ER9?{m$IXtU-;^?er;-q-?5?cJO zb_?nn>sM_~=*8>UN5n@Hp03f{G~W~Z`T19DZ$lrW^o%JlaSQvDXAe`;L%L?JbrLw2 zjUFs9_QR{$UcZirml>$gIRoir3~u7ulgf`SO$^gU!Ohd1ot_oRApcfr?M2xO@=ArV zvQIB%n#q&Sbce_Z30<&LNgsyc)nNe+5LGsKN)zcFr%f|_yL8lgcVi*(nQJ(S`1Gbb zqW%LCvN|f(pWU`Q2V7`4KGPf0-rA%DQ&>WB5La!YkZ*t3VH&ET6S?VB`N4Hgd9`Mhd0H4V#Eoyd*6+oKM;1)=s)EhQ^r<(pL<((%e)n=!?Q>S()ROE; zsntQFxxTm+Bk#L*OO*@fe=M$RH6*~l9MqDwnw$F;1hX?5p8Te)7dB}6W#aoLLxEO= z&o4Uj6nh5tfe20Q0P80aU8TvL?TGKH?H|PA+wSm7OiF=+y=&ls%5!?)2{pzo%V~Gi z2l7@*2@+U*yb@VK$_EU;VDEBGPn6~|Ey{bSUMj%qGj2T%YlZ!x0U7QE)9oei;P-pG z&{XUR7&c{N{aHw2YyGoxc}h+1i{{O}ak@i(fuorOfhclm3uFk?IBQGLy_zXgG&-g_ zar&~#A8+E7!GsV~nq0K8u%Z^8;J#6@EXnSEIP~E8#<%tjS#PlnXnD)ddE~#03M=mJ z-qMH8xnf1DWAged(RUX&D-#kX6mKMkz;7F;omcW=G)0GgYc~V;K9%7~H}6&Ne&kMj zW^J|gF%812w+xOK;316!O9dqsn`g--4?9d-?gFqvX0z$eb!P&LjiOTf#kxS_u_Wk%^Wd`!C_?Q0e5p#!a@Fi@sbH4p-1(%HT zv-6dc4)+7no_mgB1R=hI6>LWEWVb8x)0ljjffC{lh!71MN|(N~GOL+uTTD;YEw$)7 zOBSD*#=1gVBRY(CVgdPL)EVv|_Eb{jOD)DFScQ{2ujIvq*Yu&H=;6Haga~8Ri^c(p zvGE8dkucK8{BLadYj7i(#6r{%MlRApIVA(pgswghHLh@?W)}`SIJJuNsgaEp%Be3k z@TmRbS&&w-9{sTKnk47=v-7qk*)k9fPhR)S%Ue=3uiw%>xCgS*)y3M~Pn_(Ag7Nd^ zQX_cyEI(VmtzhZyuFE@=P#I-ZByig*$`w^r-9gSbDve$Cuk{&M20!mHawrEDgM zTzI9@fN=CEx1E7IUS>0M+y*rs-MsuX-*?7bpp4Qti@J1{sFP_T;Jj_Tc%#=w26^G|G zp>ckLv!$9ZDJH;eF-a7SJw6_DnMRy%49XCgBcnnL*%!fUk!-i7*LD|+&Iy-K$EacU zKDdaqo;o&15wWK~2SwB0dB(QhZfk!v^kKbvU^YIa(U9L>?W9K89|xhKqmMZq@Q1nE zX(}oCGAb%2d|X=|%%+A_$q-f%U^6f`(U~tt^ynB2WeI%m5mkKoR1Rh3v6MlRk&(gG zCxKNd!mw>fWp4s)hNZEbuN1R};xXr+eR=2=0q*t`*YvnuMoWhD{ZIN1YnErYMa@D< z>eo0mvzn9Ud-&^;+1^TIM=Q1bNi0#@+B^g-gkt{MaS#auuq=S=nuBz3uT`-XQvdFC zkU|@^3fM4EyO8;?(b>PIlqy0DBgMB-ECl9Xm?zw}L$~vJnL_DYns}oiG4Vy+Es^L? zsgN*S`dKt!_e|rTmTDwtA=4rcL5bmGH)K={O;qZdL|5EDbZXB2ZA+I(lIOJ@b;*a} zGW@RVtA+L7kw;}1z!&1Mk6R2TOB%oUSaFs~63QqkVIBI$G1!h#%)`aNp=*4Zv;)PO z@5UvWL$8)F_mN%%w=lo`~W<=x9@xp<97_F-( zv$;;e58;3V=4P?>IW@^V2|~>wD`>S>ksBQ2t-;8e>AU-7bKwtC^9)kiHlCQg8*)^! zBWy(Dw!-^|ELX?*4DySci`Tq%D)u8O(vv$%9df}~HgxUrBH#++y!lzvrNLqtqYWL= z#~URVsC?|3%yUt1Ainf7Kt9UdG^xI6^OpKY+|+Lo#BP7q8FjTzZ;n$L&tE;QhGPu*1&aanHk+$bdBk8#^@a@}V znRb+@F>CavrCw1GQBpe%Y*!rj$Z>-_bL(Pv0?Gc?3$-y3#K^`LKCq?4u-7G|B#Pcb zn3T3S=jUNy^^krHLBC^#jFljj!P!;awI9u z@qvSuGWX*$%Uk5r-`-yj)JS~iMP(dLIrV1wOWev<;V0{Io$${Z;LH2TZdv(_xM|(|19W2d%UsK z9voX%u{-SC#FxsmLB37@akuc?YpwRP&mwQs$T2AFtv4M&oFRn?sbJ09u?I8H_jjK_XUp_P2f2IsPu`9COY>(5)gTOv{5AXzwD_{?)Cbo6Bl&QEyw_*9X@;JALTR zXf6$mX66DVxzXkrW5}oiHv2cDm?qnCc3FY0{O~7rIY7<$a9Z8`PbiOXI#35c$jcac% zud^&SlV?VyJM5_v#{8WULNPgwWW+acZNV2?Y&w>H^o!}}!h#-vb5taUJ_J%KiJQ?FjsD0@va`NVgrbS3D>ID3AU!rMyo*%8RAbm9(&wY9!vjA;>;EEjj-{Z`dicHbJD=7%A&^4 z_UK<7Xm%P%7Y?e!uEh zZzgl0Vti!IYPxy=@Xsmb2?GCbq--YyB!H-0G~!TL zD4U*UQj{F!sNGpSx3UaUh^bjG=yFfw?sTl)*x*zM`0`5lP;x6~D0zLAq{2s@ofEgl z9XK>fYjI`b*cOlAb$mq(=h_rqRRTVh+b~blbS73C>H~^#Vq=KYuOb0~)d2#K)v|&$ zfHU&IuY!qY197k?q?uJXksM&rK^BoV++WR+PHPH;)iH2tv?!f8zX__V0(QSO?n~^W zakhUWYK+(TQb#IjcJ>$lR>4a|79OI!+>KW0#}6=gU}m9ZOWu)I1pV8FZlMaPkdTHj z^@Gs9Fq;O1wX7(}cB&}JQmTCn9+wE#l?EltQWxO#a=rffvpn9!gT+K1DcN2XG9+ZsO3Da%6Pwl%fc*4?ge^BkT1pY(zZvl2LIBS;j zosn|+3Vbwz%SB=$Oj36;c|)A^mTO>9c2ZGr@Nx)POC;t*A2$@iGSfo`1=H-Oq^6sE z)EIbptW@Cj8#FVUz~yhP#cUS89}yID^2Y&lh!*-k}0UF-E~M4Qg{-ZH;_ zA|<>vY{FcJ4#=w_^HOP&1i-mYXS(t2;I8*6dg3n>I4 z_T3ZF7+x?0LR;dCRG-oRbBsM2tms%-eo^~z+(st%0hYI|vppS9^)sOl>35Ib3YlgD z;fm+D=BCy?T`5+5i{R$~x(S0%OoDKvg6oqbV-AMemTuVBV$@5o25-#ifLjSMYSYlX z9>Q%8^09W)#UqSGp7^owR;wF`3)&fAj>n%K8>6?{+Dsi9)cEa4Vjh@xG5jNCnH##Y zi&QRPe)BjHfv^Rf7Ic*Ry_5^4LBV*tv5D!=W90xGZ0llnm{aSQ%OO>X-5g^n@#jNI zG+|jABeghyCMsi`a?}FduJdOmg(x;9pF;%T^0O<* zXbq@OPd9Zv=1VPMc=s6--?$^xJ&-W|x`{c3C(b~v2q+9a3VdBSJra;Gsq@vKgksy4 z({w2Cd(5%iKlQ(ITBOLF%B>8PMKORKYfkOr40jzCKcjo{AoBn*(;}`LVbFCMOUtazI#m50+qum# z``!VG1MoySjObrdAGGPuEQQ41$G2=`%nCLnDeh--)YD&N@+gw`*?6GT+9uI zK)Mpg!~*dk7DU43@&*b9k%#1lPs)jq_B;J^WgC$c<#uu#)IF=;1MxYb0&Yh=fhVM$ zM>~TN?WSmTsF(K>R-0~l2dI0jFQI(NZ9PJKe_{Y_S6MtMllS4!t#dZ)X1cZr7FSO5 zDB2Z0pKv09H{VDw^`cp$9fj!{e*B3PTo#Q`)+9p@mu$u|mZU2t{gV{K1t51T7DO}j zYv&78=FW&1;@X^&bVR<$XiSs=y|Y{>kXka7=S7fn$frfXt0;SnCejz#D2QL4Oe$%u zg^?K5AK04^hHzQ%jlG-TdSnGK7E(cVovhzO%W>{wb?jhC#6BX1(l>Dy_In<*3q-04 zt;p{6Jsscc^hz}GI}%&64tL2!J?r##aGoK^<61W0)!%Q8V6pCf-1qtM!4G~{`E+Yr zV88l$4;ow&=bcXM^2zO#SejG741*9`c&;LWo0kdWsTA92&#Ck6<{G0Vi{#%O1Y2c= zSm3W|nyb3a5@l5L{fZL5X7ZL;5;B4V#Ys($h+7vV2Q6)9AamWelEShR>w3*=GY_#7 zb{=9uFC_Mbnt1n)@bVso@m$H-7oq?&6>C4kP{Pk}C6ytiyLX1lYE{9WFWB{^oAGg9 z2_&{HHl7A--a%6NL!^M0zl97Uz;J z?)E4{mw;>_AE~eaijj;M9iK(Fqdo2Z2QHk~Z&q@|Yh95g9D9McKe4tD7R+9gDrAe# zGA;$lb1E^ibiELs{XBg~wZ(}=Su71G`q)5_avHjTAxCa#_LwWLN5vb#o0NChAZcwy3kk{=49bM0_z zRoG$mgf2eYAL*|XtkfEX4fP|h^eV&!i+WZoDHD~8QvF77U+ub`iIT)VGzypB{db|| z(ALepw4VWMdia6xl^EoEfjj{-V?!rO4QD^)mmAz9-7$yv>VV~=_*LhX8<>j9t9Xda zU@w-L%3J5zun?^yWLH4%AfM@#AW(ILafZ4#-3M?DRA_09$tj?wD5gZF+7Exn<8bd` z*6KEz?>07n2GEo8X5_dMIXM)~sxXS09{oceGVcUj+ddsUTFRbV;p{uIvdx@$n2~wF zH02SfEMVjSr#$Q$R6B@Ar zCgom(@@4^jZP{R)dVIAdB)&d1OjT!J78i_A~keC!{P&6=NidJ9h4}@a-1@VyuArd{?o#8w}ppeDuIN3VMi*r zty{~RTME^|s9j?j;y(evuA+Z^`00-jFj6C>71 zg6<|?L8y?7^g51RQ8f9FrWYHgc--6S`*>Z*$$&pA=ggJ%9b|q6>cP{`tjm`_XVud?va6h4}!RzTn$~MJf+Xz>h1h0wkVq zr=KsdtQ~IC9lT6E?t|S>s$Wz(Wb~$0V`TfCi^vY8*4U@te{C0fx4ro3Rpip53z41S z72DIkUQIxCu<0}WdQ>=&Ho4lARoTO5H|tl)xLt0q!_zWFZBM(fdH@Uk^=eynK`4`e z>uoYiba~i^PEc~_ZX+|NsW~@p_K0@1?We^eo&2IkDxvA3Z-u|f@thn3Z@cF=s3qHS z+&OFz$^|vGLbu_uN%fCxYC%KwyJP{5C#5nnm6)H-xhvu`Yp;>xxGiJ`hQzPjaVhDB zt>1O3VBDrc^^nu%qb)c4fo9Y8tWS+-)2&n^cLe5?jegk8d&YH2{m;4cXPd6;Y(mbR z3F`ZlLbcC^i)yp7W!@YW_R*$~Gm*?78o7>bUVA0uj*MTx2b3c+pCJR;>m``Cz48k~ zV-vOK-XiS3I?FY0jqzQVR2CA~f2sa>GEC{);yXK(wM2j_{3T)5r9I1kFh{r!G(unl zlmLmEo$qGMD}9zF^(R_=s!-!=!>_grt zI6LRYcdmUo+A9*pZj)7CiRo>fSt96 zNMW&*14sxG!JfIcvh%sEHkPy|J0N4~fq9ou5NR(=Aqedws-mqpwg-}!va(Lwj$c;N z_SfO9Aw+dzI>ClD@UaX~C-4!V^O~S7cE}M^2(Xor{N7m|uY9s9A;W<2J=foMj6ZNB zRgD*gEXGTThHF;SJ!`1b{0G(kr==zrx(m^BpYO~$a=U^x|0WME5}nTonO_N-mh495 zTd@{SyZMTzOhG3qe0j~c@`yw&@lhW*PCumAcBQ8*v7B`!$ZEaOdzDPSY!s%=USd*} zdGi@3hcJXf%#+fM5qLg7i$lk7aG!4B>n3`Q-Cg@7UZ^L%0^(QxFcJ9G(>4;6TW<}X zY&66=0mLVMKJ)J#cD4ON^8O>lKRfvI0SkVxz|;##&^xAaLo6I_QxQddejnHK5}%EY8}CPd8_{pAl8skz1Ix*oW&m7k}waJ%b|-=z~?efWT3*pc@^I zgoH-(GzmM()8EE}dUc7Vc8V`|@F`s?n2ipQRb#fQY%E!S!m%1=Fvrc)5E?4C3vXh& z=%NUz8`qU@Xxd~tJo{#mRddhjei}bH&C%ui>kl8N3hY|j2X1CRU3?*qXsw-@b6(7D zJKN=k9+2apT5*~lvT;yOVp02=&1HLdzmt`h|68i+<9MsL?t43PRbSO|O4fus{Kd?% zIEQ>NHOu#Vp;QaZ&_N-!fwm_hF1@0RR&%CMp+O*{_TbWsc^1X-J^Y;c_~0>6c)gS& zt_S-1xwGC`^@FWurQ7lS0p|tK9Tlhh;CSvfJm_x938_{*mii&^T@T)%BM9>nr^H_J zPOQ4DEGE?u$4BUo;>gl@nyFuO_|TLR;`jw?!F@%ZHr=a7C@KxesC&`Gu!6pg;8_g) zyVj(WI6HqYmDJNGp1XVupqeIQ7xGrb5t=UQM93rdvM@OGxu`Jbi;A3`&dg#BY=Ec6 ztpDAxT9Um6nRcp0u$XE{F-qdJ-Rr$jwt2ZlIhZ-j;-naz#)Uj9RV$av)A5QbvL6MZ zV~Qror6RXZD?V$1cb=3>F)kK_WX_6Rh<~#Cu1rut$#^hLm$)3&%AD2iH-69U8Yimc zDig)R9QkuohosdjDy>pI0+F@?KvH;Uc5`IErYS6pnfi!KR5A0~xL?$02c%1a4e8<8 zGUY(di~pwtyR^H8n)!Wuv*JTuCQ5Ex(4^%^)-J-~%L9E91UFyR5Kv)Aly>DTRWs=p zf0jhL$mM=S?PUePj>6!R8lH<=Fs&L57+fEg9N4xa3GDL6nMN1{1wI$lO>rCGvJd@S z;xj@qZ5e`z9t-V@>BiS-IR@4pdu41^*Jc=3s?JC2l0S!+hLILOYS1D*2eh{)KmSUR zjcAP<4TTa?6-u$1mhPH>0Mgge4e))KxoSa0(^XRFa=h|EB558;8aC>e$@F3MUlAEC z6a!GBlUs?PKbEJ$JLrMO5~w>bB@%3s9=#l$DN-_-b($V9YQlB-3e4FT&W|<9$an`K z;&>33N9?~g=Drv9X5u}Su72eJu7NFLsvBwtTPvbQdsKFG1#5$0&(|r1=DP8|hyn3w zT>F|eq|S&w`-Vy#rstCH-nwQh%S1$xMDQ@8DyiIFkZPx6AZy5Z>@<3WFFiUwQ@*1` zI^+H}MFNUk>Cx0qWyAAW$m8d#9f{})>sxa(1+K0~#Vue6az^FLC=ydvd}un&LRGAT zHcNwjkGqAfB%#x36r&vxUnh#~l{{a*{~_dX=iVc3{|}#XzFU4vH_Ch64zL8b*Y?TI z`o0-M$(u%p-+ckU95eXVv|iy``iP96M=LNPtAo$F3Jh(gnEvDfXV0-N_y=mCxr zrx1kN))9{%zC%w2fkITkZCOJx+2Ck_D6yC$4tuc`^r3|X?MHR#_~fo^neQ*9*{W}m zkK=YSj~VtAzz&uEy~yY}>+Uk_E-35=O1v5h}U=xvQ0DcML$-bxPz^CK%yzD5DA!s%fPIDGXai4l{0<`sc`I$ zf>7o9cHtt_n=grAxost7>B~pb6Wq;BooiDy@Vk?So}K!AtQgy=rsBjSrebEj?Z=#$7)FV?h7O!!olJ(x$d5XW{^phlgB1uhR%PH4Z` zGE|;TjvSNvAp<4*@ulTCpUD0$fWztF!@E25MWLoeDeK)KF!-_UPFpK7qt^B8B~uWL zjK>=ITC$*o`M`5!qJccg7@{_d7s#7NST>XsK!wwNfo4rxd(?F?17Vu{_*@#d9tcKV zSzxWY*z*7Vo;LbobNibd1+?L!eQubX#|uA6wo;$>FWsYp!l@xFMQ^z3&821A;I6wT zyrVPdk)o0ZSygpA1cxb5B)YFmN)c>smv-ZfMi3jz2-pzm_Ndb{isx?r&Ap+FfP0zi zF%uGKTFA+GvXW;JAct)86m~fc9#P4L)0#&J+!8w{ko~Qxqo}bERr2-}CR|+&B}aUv z(dG|6ORf+X4@dXM?bJ9_ls`5t5nc>awvPRTekSlss=Yw)WO1GQysN_1%7Xwnda&z0 zywsKkB9s@G1k1zO(gBdx=k-MQvu}p0jFyEEZIzP?~J5y(An~Yaatb~ z?dO0WGH*Z+h|GfxyE(TPqn6iEVf#JTu)*VkP_tVME%A_D0aIiq1EjRwvpOiE?D1#v zV5V#^Bx88AhD<4nt=;yw8-cY*EzMx(hXTwA6DrlX?t12u7_%;Xs+Mb9%l0UVKT7-l z+C4eqbMv=v&;NLXEB^5?Gt#r6ENaKZ(Qz=9j%@qE+DqVp-Nfz(gO~b!t(KOLpmfnV z%RAV!t^R&_Z-kL@?<-v98D46!X-L82i7Y2}Z+35s{(;2YZ>!LAYaX{}&U1GbN%QeFVaD`DuJI+6i1QiNGgg^}?Z++n=7K;<946Ou z%$6fJJJ+uFS^nMmv8#US6_cy-3uL+JO4pN5U+~#y)VlkF#OrucWr}tAcDP-?l&ann z-a1hGVU`X|ma(?$i_~R23yk2!K&ANCRo_*njpnp zg9i_8Aq0{DH$6T7crxA_?~XU_|G#%{#)f2Mt-aS=bIrBZ+}Yp!X0Yt>u{a1X&bYsy z-q*WqvGHQR8KoY8-g=cGS+qe;fF|Bd5;5ucYRr@q=gQxI8q|(Ab({w7$_khIldCym zkMz<;sY;J1V#dxFWn)QYsoRem1U~U>>VmX?6%W#O>?S-rljr@RZ+#Q`yl?D-s?>DI zBjUNGxHRQ~kN2(W=n1mwkO*{qi5u~_5!}v0U22>Rn+?m=IIjuva2AJVsKMAqz<%J5 zgNCdvRmtKQQB_ydnGfZ}b5Pb5eLkDOmi>FB7AeikpXqKnf#|-FF|osAf;(cuzkDH` zEDCftUAA{QeE+fC! zE#}f9Rx#Z3s&Hb)bb#se7cZ_E8j4m{?M2W?MS=0FObO#_hQDLL9`hE@RK=^GbLj8J zGc>h*+A@OUXZNPn@|5ofy)H{w?T(JKt~%;3vwCoO0M;qhqVUj&!N7E)#E<#U=ao;7 zvgrXqHz1APp+OZ?04OwBRg#!+S(9Fgx@ob%Ny~#H;`tz8i(^I^ETg5H%&jWvSgq_$ z4NS4MuvOor2MsrmCio(gjuT6*ABd-&M5FM0aUbc)Ypb0c(p+*hJ4hyu%U);8i+Oh3 z7c1x@AohRVBm}NVf#F8q53_=Gdpn;U5ITV+;BI;b2RjMKjU;4HbTeT<325-(w)gq@ zND7x1zx!Dj!WBgI8Djhs5Af z3@V)*|51nt4q8>Vf6D%=0w4Y}V=flW zSlvJv{%$B$u`nMTp2FS)8832p9r{LKQlEFbasH&P^Q ze)x*na{W2;23rE4ZuD#K9BDY1{|Ck^A1-q(dA@&6?%WBY@F-#Po}&=d^u+{{_!bo5 zRf>}TqeYWnxs!NF`e~t3*3Qlfzn8L&GCz}Zlnb;(ChIJCFPB`pw1(YEQGX0Y&O}iH zT`RBZJ>b_MAuFLiQ^DYwp5k!zEKC4(-B5}xo~tllq?WO*lI`->ex+q&>0KEk>T+-B zpHPsmcM0$v?>hb^bi%#L^ou@dpai+X5C^mXRm$TcbbIyX?WQch$*-<%WF$AtcXl8C z8C!j?UShM9)CU%C>JMi4JSr;~xUgUlx8=*B2f`wU3lW}Fmk!tW!b!^=D0){WvJS{? z$j$J;H{w;`62Aba+k`k|&e+4#zi)(8bF75gb8Gbc(mc}rSD^5w=H;S0%6NoDdr)Lo zUf;Cv=kC0&cl~^qT`%NU0yeHrZn6(M#0dI=LB8DE}=+Rm#IY1}v@+-f(G zJR3F{?)OwCfm$5@wD75lNpa~e^Q8;@rwzrJ%3uWk38ezb&-#f_`5>u?rFBhx(do(c zN*99{_!J_z>hv!*RT$#qqY7up;5PvQgUQq13mf589|3^bCI{L1gp=ht9_umF-430q zV!8+vsD65QlfQ0D1H%qyHvMA;$NDaq z>*+b2+{JXrPoB#GE8Doh?Ol$zE!xO>wm+?c?aIj7f~a#b$L`D;?ut-s3oCqt;?S0$cD zQA}YRfA0yGeLMrrb6Yf#M*!6|pNqf7*ZS`-A z2P>`CqShu11dp#ZC7h9kn}e->>5%VspJe?Tywwn4Gu-816O{IO%(BNzugt9deIBw! zr(l$b@-p!8#T! zmLn0?+`EAIb-S0w5u)}ImbP!gqPQQ6aa+x=0yk%WGVDqEP^j^3{8prASKE~n>@!Bj-;Gs4~q*w_Fxvtu`<+CQATKc801yBS8^1eU* za;EM?5zV&0h4nM7DNQ~k+fm4A^BA@CJ-Sh5-B({jjn!D%qw$tF>X=ha5y_+l71NB} zaAQSnOzSJ2fIlZK-v5~4D(JcBXI6}1%ns)DcT7my*J6cEB-m=)TOFraPN;-B7FVN2 zUu=(Q4$N4%+g%SG+RHbw7%EREmh!>5 zJ2K`LnjB!fgXuE%I!UFMCCn36)h%G%V?>LvZ#X__G`72XBfG1{xqM9y#Hqq~PSw;1 zZp|`V)Q3VH2V;~^K1TO&6G37TOm#83JfGeQVaKLRH>G@C@mH5r zr0gUFKEdFYT#p_-D?AQ1R}dtCms)3KNbrGxepE2?As>{fN7;JSSjgYH!^n)ynJTT&=N1rmb-Tgu?RJlJa>!QHE#}}$$l_X3M?TOTYu4qF za%8Mj#?U(#{mJ55!PSizCYfJT2c`Gy-+e&TR;?-uVR@r+tew9vQ)59hak@u=e-+G# zsMHm6p@RlAHnO9u>OIf2u#0c6C5{`FLv9>2eIq=4s;D6->%EQh0~v1BPYPiQ&mhE9-doM~@oVIa_8tH%RaLyG9d3GWmXP zHe|Jm$woah&41|IBKv5S>PSn2i9T@Aa+x$GsV*jnt9S$a={&~v7T?Yb+)#s;Ouk`a z#u|mTA8QuF-mG^HvZBFBO{#8CZv%dphGJ$^0=V}0v5K%~?2{K_12sV?wxEA;J?(z%njy^P45lJX?+w4GW<1vn_%;21rVz`?hv)YP5Nk0~sx zb`%RMMb>oT+)bt5mS6UCXhZ+9B9MbQon?L-bw9z5=*5$eB7*QNWE$Ztc5Ajb)Xoz% zAq;FyYsyjdR#PASUdn^JN>`ydxL6?Gpqf|#ip@0s0+yfd_Nm0=Jru?ZxiDVRv;g`g znu1O>v$9}pyAsG_vhpDdbF)x16}|OTym)4`?5`EJp}iYw*vtZAq-|_)>FVq#di_@w z4j`EtS^h*MdT;)V`;M|}(eAkCBPKpN#ok7yU^?+ITizbFy3MAnLTc#`W2rSWVuD4c zOg7M}Z<;`5den)|6!h$tX@`;2_~W<$_Gp#7wDSCspF2Cc z8}#)+;w4T%dw$c7+0n8c7S)+=eG(F}35qB60550w>`XN-q11pO_rQE5Ns51Q=7SB} z$1f!ZN$EV`j*Ut;6MacaF|`HJ5T6X&%2n0#!FPM)dz&ad_i=Nn-UABr@y5(1#5(U? zL#Zqpc==Ov67{!xrp6x>kw4CVgB;WDm1@=MxeHBF4u#ELyWydbeZV+qUV$Nsz(W!8XpmLb&M$Fj%P7oU?n>ABwI z^*47-!Q#H9omP0ySufTRDB8?lvXR14oGyfE6lxwaUg-CGrjkf_go9tIe!3SB|IOh+ ztn5P9IzGb6#Vg)VnJEa-X>Q);)`qP?tToR;L46!x_ z8e?8GJG;k22J1ePFz&tX#(KOl4OeV(7IrPYeE&K)NYO+*6Yi7go3yh({LLD2^e&KP z5i_`2HSJ41Ha#SK73nlI^1fukmYQitAIarjUkuQ0 z3tCz|O@p|ojz`Ey<9dIhwER<@&FNbodC(b~5uh{Q)9j2s%mTZ`9M30Ci1>K@!;=D1 zryCAM0Gy?W@1tM02C(#2F2w|p#TQ`u5?I=2cvB)R|pRt9NG`GDt9@A_- zEd0<@=!#mbq`K`}VvS#`vC?YuERQ%&YIKqoT2+&So>96E1E0VyLURa@Mi7#&(#5;W z&1XZT%`#k%JCcO_-&#Mr&_ZFprKhW`va|KAEJqF`A2J%&MQ@Z+92{!-68B0~_2j-2 zwCoac$Ov}PUfgK0Cch1EDhs*J2BzxCnFqQr{CPUIXC9#x$C$q?rp!`I=%H8 zaEZx2qe&BRLMH`D&dfx>nBjA4!b~JXpm2Y(^Mn+g?%|!Y6Ss$CpAwF$g?8wmKfNv5 z+v^O4i|(IB@*Qqg)QqgYUNk$sqj8phw4pMZlQ;_-e{oF8!{gEs$oHb+e5 zL{n`wn{3QZB8btI50q&0MNeRLFH3;EvR2Ttea=c0{P}f1-jN0M0O*wi6Z^U!%b{F zbgfZWIkAakfTY;4l2UFHo9wv(=vh-o)SY~u81I9qw0F83IN+wTUds^k zG#9rI*4TNW>}fOAk*!MKZSFUE^SNv9Exhkez5H?;HuHA@ePbCB z|H@SlbEX|A=GOc|+9CMHZl(SE|om3fABjx|@ zr8%-Aj2(D8`uuAoZhXmw*jg|(y=L6Sf?skxk)kOqx(L0#_cucYAy@$N)&dV~K7TFv zYTNAPc`@A(N~Pn-aX0wU;TEG(TJCUcb@vMdwyP2~2Th24=Iw8>#V;xBv(fuWq3&pK zj%p^la!A2aWfoz-6ylqu!t8ttOlDdRiyGxBf zwcveU!q?xEM&e_O+RjgUOk;JO`yM^|hW$9^n?v2J*F!Dg>k6fEfZ3pLHqp&Ptxe6> zz}y|<)2BVPS#oo|eFL4isE0<_^Y`ZF?5c$?(zD}_6XTR-HC=J9J7ks?c!dbQrw0+&j^hk*W}GiHz-~S;$ZpqEer@FfqqZ=f)GWum_{eUx~2Dvrs@6KVLagFAw(5X-Y`}ro&ivbG4Z6 zWNMbmL_Z+&^~tqAd-`anuCnroJYs)kci+OlK&CiTnFW303|{ZXgb#?a@uIR7qfjXq zm5WxgjwbF4{N->WY~e4Y#g(%>ok|3OgU&Vrx0XG=xR1|*zuZS<}^+BU8??d2G?U750y;+IyQOU zl2Ea!(`;)?S4lK|WamQPl$e?2Mm_CWi_luL&4_gd`Fgw*N>4OTI1jP?;nT#;uU75j zfz%WbWgBSAuHa-#`l{debioYmOOdJWZc>mMOWbjP2;pW@#B?E3ir}`4ame~bgVFZT6Otj-hGL=zsD&=oajISU(_GLL(+q7yw!I(a zNtzdwUvk3tFfZ=7aCjmmH+X4=O<=y%z%P%Y_LdUtnchbDWxig(za3U+uC*g6pKpvu z9&qxQc0E?h`SH2!{m;)do<}LmB=TZCPy_xIn_p}GKBgiO-;75cnotJX+U~oE-fUkO z@U%aObly2QHR;Wz>LN819QTaR*%JAI+v9Gl`<>aO`7hz?z5%qP_b+dVK5dAm;!0T0 zh-R0(2YG%x{Y-iR?Od?&N)c&u)?oXVckj*oXwnBYd4Vbfi_`s@Wl)k|=7UJ{3R>i2v?3wQ2InJ#{R(XBn>Ijz1jfwL2uAoGHEsmGPX z_Owkg(!tiV(?a+o3l-_N1Rv0hpd>24`ofo$`~vHPzeMvgIA}SDJ%ZrOtVV&Ikkru< zAIje7pkGrhuMTDNnS2b9pK1m?km502Z95nCCM%(ZTl+}E05LZ|=NaoFJHN7ULM(Zi zGevzDt(rX2KYe%-8u*yN`;p_phu8<5!GlX-Y_WbNe2+w4`5jfc`XAxXqu654=-lG2 zZeE1-c^$H3$qq921Enz(-4^E$=m&DNyTvoFEGU<)f0^5bb+7z`!7Ww9Z*O7Wuk^CH;bv4u=W~V7jac;L@0<2*o70oH-omkB~Qu zIy${p@{g!=>Z7%!oQ1v9LecX zHi$F}1j)wXpeOC+)f+_eU@R~G{i*DMMR%0zwCI86qRGXL@C`JNlYy0qqclG+o+K1{4X3TP@+ctWdP5lsb+5RN+O4Y=L#dPr52Sa4RX- z;%W=U!O>z^oqui1?Nx^1!_!KEYQEz3pNUK$IFr?IIa`q&eIe_?HIWj3znn?C$lts9fZjF=vg&kb(oY7VHMC+B%^Zxw0{q~o zK8%>kL~l%+7L(vrT*y|lbxX17JBg=iA!T(GONurN3Mn_d@0Q2!tXaDg6E~zkbwA#q zjCW`My|;5Bk(F_HZQ4a&A5Rh}Q9}boS;XlP>I3mqcv9(O)xEC6#ni{hV=2CensCJ` z10HQC7ZI_t|)&luATI!`SUb8I8BV-w#53-Pe-1+`n!Ma zDEI65TQ^>ZPw#TmO>mD2DiR*U`)~rQZ6TQ*eg!{cszp})vFoKdj9dao2Ap)}pwuHK zt9MTLhaCZCD|-=5w+|l6CIiqs$ub`t*n_qMlT5)Yi?O5uA~r~4p|6W?*@R?LB0V>b zA1$Bk>FB(QgLEnoD9_yUDRzeG{MXT?Yl}4dP9%DRLuHem{?;=Ow8(7UU4ZDM$mkBs z9C^iNELd~&#hO>mE%zI(1j&q)B2wDYjuyRkD72m(_@NtrN}?;Hk4j64p8f?yGV0|d zq_5s!0yalSYgH=ACU!v0ue$3L77F!o^X5mhHPXu?nzaml9WnaM?;PGhK;BVD+fsqk zSOonT8N+HCLm+j{@(6@h2fMJX;o>ChDaIP-FCI7H?E09&^{2Ur_5G26MJL>{%^Ld7vt0V8vTX* z_r`U8tLl>Z5f@~u*+a=-l?l}hK=DS zAje1bpkMPh-E$ZRSkd7ja@|Q!*&=CIlbV8~r&!-DKvd@m&tD9sXUhXs82wtK*K)ND z&I&ydJ|)zhuU>_bcyl@$s#b$5=<-}C1wn@Ngu zx(#U*>6x#Mt&xgVx(wjaHZxMNfd#{ImQOllPDsf5d zO;Hekh=S-~Cz72>b-EX?!R|v!O(%cYzS|G(K3K0jfpl`+^z?J?%5L^=e{YU*k%k@K zM*hX=(@G%FQx`cq$ps6bZk^qf?NhM~!@ir0T zP6tt=*gNLgvik_Gx5iV|zu+PHNr zi4Uz{#%3TH(LXm3<~w#f zua@1QQt0ie9H22o`Sv1LpI^67v*5mnStxDiE512_2^aY3dZq6Nen?`xtU}Z|<*a|dEzNIFBE&?1Li?z+&mlrF;Gv;qu(|n1s9)sKD?xuB zv@~g zfkiLOjSYs({&umXLb zGU>9zc@&s%Qz$DM*AQL3`l&5is_AU?Aaf&qbAPy%hR*_mVP9o3{JJnmcQwM1jP|ns zP($XssF}2x5jxEj=EivY;1>Hpk5yN{kpCL-;q5#5)|M=RVN`{4k)s-Hg4Q!t($&=@ zmp>Nl#;rJ%Y{x{Slaf2q?q=Fd-X;cIWAO6|%JC%1@<sMhIoef_j1*$a7@w#+0m%fpTaKQViaGX~JEg!Z+q zSAOMgqC+XYFhR)Do)|6>Xwt`xL^_<8Q~9qP5;`xGJU`2`bvly$$#we0srz>uiLKKI zw(SwBc>^@B;dLHI4I=5^HWqX5S?dZ6GNyH-8if2kPqGIFM3%;z>G%d{J(i`w{ZhYw zETY5?1>NjUhbJHRq@^F8uoU3Jn@-Upo^=>AzzmTEK+u?Q2SIchI0N#?e z5{eGxy;{QaV=$Ti!DE+`AM3;&cIT}Xj+K_D9eP?Yjdi*EcNZz>MhxWEwu|N>IrfeF z0rprL&~SS#Kn9proROQUD49B@?xomLEkzvqGjY%E(}6@ z%sO5uC^MKUuMxic+L%DP+iOz&A5^tHhW|4lAqW76 zx3cHmHR^GH&>f1ojenhq=)(4m@|FI;7;?1!XJFs`?*;-M6p_G4$ryjR)S2%9pZvjN zTp{PnH~L8LQ9n=M)U}(dH%=?XnUi@XG#+CAzXLA^LmW%Mxmj zr%H{Ju)u{zZ~OUrfjR_8%6YCf*JYs*F3I#qcfUd|p0&9iEVi64e_@(#@;$hTN>*hD z;C8DVGsynHK33Yx9IBA-2%vCjB&sc#bf(Id%(6R57h>@TEYh%j8NY-H^4^)!)&3Ws zcs{dd-gu=Oe4JPc#7V-N97h8hhPP5gad@%g6(E;p_f#78i z^P7>FIae5ucjJN!@>eK1?fJimm9nB@Bb2cj%q*_=Q?FIyl>Z+pYG&U3qN)E#TZgCE zl=&}7X7~RBB>MkgM4qx&cX7S4W!|ZOMpuq=@@89kA=Vo%srE;O%n8banSWqi|34wu z{=Y=;?87Cmd7vqtJoy$E*TDqFzW{+QtxG!=7BUEV#~x^CXw1*gm!Wz8VEIfQ--Pj& zegFQRV3o@Riu@U;u8xk?%Bi@dr0zoPd~u&$Y7xgN9il(B2j;p1GBqLOip$K*Gyz|r z^{W}l$fAXIdU|_*$Vbw`1K@vj$En(Okf3}XQsJv1=E8(?yFH(&%mSbnf763S01Z7a3cYzB+^_3EO6ek z!)0@w#pstb@FgQ#&`cOH;_p|VM=IWS2q6v-FbJDUqKPp7pT(`v35;8UAMJn*{7XcI zx=GV-%cmvYyQ9Hi-I)q3nX$FKx?NzJPZ@)`$$v7nvQca1)r7d)vzl%CjOqq#24+<` z`qsuq&NNjoI1ghyjU9Ipy-ZcWeb1tu96#T^#4FfzGORz>)nMLlNqF|djG8MJ+5&r6 z`!wz(E1E32@5Yd5;1Iwqme|b3%t1RG>+zM{?AIK(}Mt5&f!)Ly64eq-P(wnB2STcI? z(CjEOwQxuONRft?2PJ0*O1Fx(@I!Ac_rP?hzN%}~;JNMs5hd<2Uk;Xw`92NAVBN!} zB}zqX$~W)*X23b6QGCHU8k-;bSwggS-+P3)Rq=GO1HV+D?$^;z78K1W6Tp5Z9dPm# z3Wb&!)!cdiBAA5GwE;p>O0rfJz80Or3y*NzH7c<{-l>YWuNeK;9-*)OGh8vnS=*4G zF-)Md4?iut#~QsIjp|$mr+-@h-eowg7rOWS#ZNE4touWog@wP;{LL8Dh~=Qnrx3S2 zEb17+xn=>0`L+Y$-#atJ9=TMa2ElhZt1mk^P_5%VX#2p;OZ)@M{02|p{T{&9QvrQ% z?1C>jkIPApeR0>lW6uh2#{M-S&Rwcg>E)+@vS_!W}{E+g%nUlLU}NdlH#=_!dRDZNq$ z%^lzVe#PmX_NQ0+EgP5%45HhmZoJmncoB#(1>g@~&DJ`H6ZS zBjQXDIW!mHfK~BcsAWD^^JM_K$Pzy^e&A!A64!*Sy}Q#F_PK=BS)C9dZ-C<4(Dc8_IwP>pD!X*6#2N~X_+^v%*z z+Mpg(n$Kkb5IeX}>@()6{!0Bp6PZ=jfx(MWEbtbl;^$dM@Gc;JaEc6r%2jY?c6oNb zZz9DdcKL-VdaVN2BqNvW|CrIF>g5(!8eQFuiT3&{*=AaB{7DHpzMdt70@g4-3$qD1 z?j~%U&CPvx<59=QZocKyLUD^Nfu8+5b#4pZa8s{L4oFa}gy)9c$saGQp@@@UIQY~# z`|-S=_T%gu!;sSaw=qM1a+IJ_KE6G&abLe;D)cXH3l zj+l_NNq&!*I;9~kKi}%PH;bC_*<<%rKvcTnhv3L!=qe%OWArmGjgNG}#ueExnxe_K z^WSCt-g@6@vB~Hvj!KCMzCHx(E+19RDUUqzJaubrk$fcMV!bKLl?XkapDub9Ua9Se zu43A%+!vPTBj0OJL%nqCln;awasZ2aZ$E*XgMqp92}Y_|v$=mw z>+wHHjKgKEtgPNN`Rpk#v}Vc#QcHS01b1L?GU%YayJj~k4iXVI#L^OH*pY>faw`seL zPu$$QIsonP+i-~p6R&?YTDGheqoGB>WD~ZC--(RR&(D);9{BqDmNo5564GJtNgduq z64~XpY!?_19EYuiCQQwc;6J{$yTBEEv87wVkns$0HRSJ+{Ehst+Y`SyE#eL0M{d<$ zGa>ts`0@2r?oMM(^q$Y25&T`94{l^?VbVF*6b^BQpX$$*8E*$0JTMI%G5tpQ==Ri2 z~Z>`^^0tpETtz&SLGc!te`TzNn zUo}RNbqo{o=4nn;)C2z(v+IApe@ODl{C5SSh|e>b*M5KatZ;Vo_d7M?GS%;Q3%@@# z-Y-7_{jX5LFb;T~+Pux;&4=gD3CE8&iZP0E>~Ttz;jcy0)Ch+j*VWwbj;iwJDY8CR zI#sd=@@p~km(F}!Cy=75tfCS(zNLD)^;`YV+aH4Nx9|CIJ-qd+xnNIm_W@EqxxE)4sTD#v}#IQ4S(|q(Zm#Sdy zLcu`>4H6jL^xiBG`$Fc7Nr6J;#(nxgd9sTOAxYXmGlp3BPD{ZOml8p4vvM&BCJI7J zM6A=BBw$It(S*BU2|R^+Cp)va?E8`iK)pb4lM*~|czeDjcZq1_2M^G6)O!JUbZ!a9?B$`a7 z0LK)h7!9a-CE^@RZ#jKPJCTCG8@c*@25CM2XA>65oa>ImUHZECN4s6@q!Ru5tsd1Y(U>=fftD6( zExDGF`kUksTo$yxOs5TTk)Jt(;8t?D+!MkMBW9}CGWoWyTCUU+un)F4WUoq7`NUP9 zKB2|Z54B{;OKzHy_P0 z59;a^8L<52N`IIz*3L6y4dycCEeti-BQj8-k!fKd1oT1{j7!dA;o3Yr_pURNzO$MH%0*W*)4I9GpH|%Y;lo$N9e{7S{ zzad~$C6#MdhLZ}{UJ2<2Ef_7h1IxC}1J#hMHDXP<^ISRsGi-fa+@pQ6Fzw>94Bok$ z-82E>lMISPM3ON|axZi$_w{rS{7q+6lD6*PMv%Q$h~FJ#4<3z7M-%jmYc%H1IPYw{ zJVnnQ_Q1W2p*eYNi%aoBrM9Ls_}7i69$QJUa)MFP1+3QV-+}%(C~Z_l?D&55JT4Od z9M`LNImrbM+D0DvF$jl{)%(i+s@w?MUS^Ud`Sb_}1s0s&@cT_m$oj#m@c4CRS}{aKviJ z@8zTQ27lwB6w2&EV=vAKP~;mpNwJHvd=rZb0B&uS+xz=K;Q3};NCPTiS|5ZZ`KFy- zQ)PV849CLf30$a=bsRTU^D}Ox51CgFvRuj5w!}88uG}Jrn%#925aM~Jh`C%K9FZNU zKdd+VmFb9X*0Z&^Qfh-sTWgNG{GXMBz42%Cd1R=*bE)$Jxmt!qfxfzm2PJ`9U)j{Z zM*A50Lu|HeBCLmNm0gJ=4UQQYWw21 zD3k*azGYr{69_e0URCjEJ&z6QuHK=-#n(Uwy)q&p2q_PnIquUo_L23I<{u}Ri2o9$^4*cM^ z4Hq)MUB>i9m+KrE4?F5>*KS;$lK>CqxZ-(~>aGm<>^?(JdxmQ;2`!R=y+I4LM~>Kh zkr_+C2AlhQUFljJc6Zyh2AykLZEyR=zTtJ_zBb0L(^_WXyHNQk17v3mHGE+t8+2lL zv&v?>FBh{pl!mRAv`yNcwRg4e)^0j6<5zio_v)oD?_eD3pxK2z&;zG;fmJ|^q5#Fm z0G%vdaKp<^DzDsH1MWK{!2+4+=ak{r69>QDh4-QDPeM^%FjwhDMK}oUJqTX&l{_0s z=!KefY;A9A>FdJ_5Rk;gyz1&l3XgtoIIW)&zYD;=Ql$-wZkP2FHek^-XPtkq_32Qm z&9HPzvu-{wH@DY8&0yH~w|W#)>wN>|-_726*cy_v9Yl=uPEx$_X3#yRApHBU&326jPsbNO7k9`*|6knARX7q2&4U0N8kyc7}wI3bR=BzCpDGskdG`P^)@B}LYVNoDeO{n>5;6AOrp|cqptDlseaspa z&q#AI(tdH$Q)dLlFsUnCj;y)K*;f+{LPi>+Lps+v&2gWiNaKLHL@Q;;OEcllQf*Sv zofsHYL4$q+be~AEY^@qE-$1zo1z#0W8nPh{AS0%bxst|~ChxVj*G8i49rMl6Kz*3W zH23-j8~QO(w!uj!M~!0a+SCxNNh!K{WyBkUSG@ADtQ@}A`e{56j4AZ#euZt%CapQ2 zlO3%jWRCV1p1MvH%WB<)mn=)pW-iY8W((W~xy7ptGL?93sXOijLe zs(?mS{<*iqFnPdIn$#qBosaD4`^;%=4tRTw5v*BpA6~m1bN@<#5VcsdZFx7IL#a%n z(RzU=H7R2^{MtA1&Q#Rfq#T<`=mP&s)8h}?<@7NZEd5>!_h8#*0m|m*`_LDkUpLeo zm_xspU#)x}DpIWCt13RP$p~13eyOhdX`qrc6tgxJqrbSjU|W@w6=uz;?t%~_dj6QT zZrgRPkTh`@zl7XUrg0Y1*npbWPa9JB zW>MI3oaHhQyAOBK1Z~EHE`7=DP|Gs2zCKZ@i#{re{*CM9Vw>Zy2aWh~5)AhJNhaad zmqPa?&&(Ajq}L@&TYOtKj&jM9b$0C+JW0-)f;!-Ak;Pu7!+~KgU>(E-p1$zhLBXlE>pWYF*TE)$me~)73F|B!i9*aMqpV;ppMNe27doRFBb&m{AaV{C#FJo=Y z^KbGhc|4Py&SP3>KWVoNu%dzf9Zc=G5!L@x$Csg3v zBi?Yn$?gNAycI8{$X-AoQ7<9m5AeL-B;N<6TaQv zuG{e%V>NL57qzSn)poto4L-sJ`+Jh-`({PCOd#d_MUYxK!{C^st4eB(PCu{8DaUmp z#m{S>5!G6y*cB3TD=Z7vbFr+7TIU2w-Yw*6eL@%E(Xnop8 zx&Fs3lNZ}d-n|wF7?mGCFpMn-GAw|?aVwTt2EF0Fclp8G`^P@-u;(W5I#HZfSj2h4 zns0IEI12uawb;~03945o$@*+fPeDHdm#Ud_J$$WLs!R+RyA~HMZ*HM_hnFW-CAO*T zMOifWSQZ`SR^#=$)XI$l1BL4I(Syx=*C$)rWU_^}zIatI`fV>}Lq+mT9g^|s>DSh^ z7443w{A#qCl2GE-#?C(~-oU#xNi{MxW`NboGZNO4e`MKH?LzHp!x&-@B7-Hzrhv^X zU!wbY3O75d*1zdAdliOpj};;yvC+K4MEr$pn3;T>wT%0L3^tS%Bjs9DrZyJw+9)6- zr);0j2sL_@9SFe09;Zg{_*Jp0+{0zm=+v2D;-i=ri^}JbQ!88d1J1$ou?FVXsCl|$ z(MI5Pm4NNYQtTK*x5z<<*50VLL*}`DDyqsjr_R?A83mN|K3#1DRH+9JDSA+NgAHre zo{j&#wd(@BFsmb^A4xO9EnAsCdS4&9h(NfGqON3RQwhh~Vcr{kx-D{3HopzW$ ze!m~!8AX4<2!95N$Nbba`o@bkUVS^ugIzm@Y${H=09W~TPVmBYQCH9xeP%ftpb}f6 zN$dXV>dk!Y)?BO&_gE!Y?8Pz>Q7l^n5A27{B!f)ZszUUCYwo*)n%bg%@!AF90xF1r zg$~kGM5!VuReI=6X#xUDm98S7(j=4!2uO#7BHd7eihvLiDG8S@(o2HW0HM4U@4WZT z_h!C--n{wVn>m6yb8=4hUVE+eEBhSG_l&~peWiWU(mTbcax~lPZdv>PJk`+_&!L@; zq%NCRRtgfi*zS}1xCvWf2bcGD`A8UiPx(Ki3^o$P>szaN0^Zh>a+90$UK962IgLxZ z!%KrSJd2vm_KFv0Jf+#-m7EScUek}9$ilAwR4U;uklk#vJs}N-2gPbqMx9>EUYV-c z_qyGmyy$*a^Oh!Y4l_!PyLxfXiO5wgwrRt5ke;pZ-DbkvNDXGDg}N$kZISadQt3nG zf{4ysYK{00hLE(F`bnb^DNN;o-%jn)br>MDpZ$oFUm*1f$ZQr0LyU=y^uctT4 zI}bxgcdtrkG*@wNOsHdXL438MuJy`}JyXrPYrQfP>Cye2y`5ZgolL*+5jwR~=^+59 zZ2f)nxi_bDs;HEX?ub2&ns0a3kM5&GzNGPRQEj6|1BzGhyJNXqgQX!Uv;b@CBGI}& z;J6AadYS)pR*!D}&j#@SXZp(#zL=W6;0a{sw1EV>q2LMqYn(=K(D|Ewy%44}@{|2CN zJY>>5u5mV;G^xC_zeRYBgQrsTWK4LHG0L(!Tk`)^WYyU~_}T3}SyDVc6iIA&`$5nU$55U+@;`)Im-b<9ocqXn_X|Q(Gx9>*3lC3ETW-fwFI9TG zyD!AIU72X?oSJgzC;2pa$7NYuU=~ER+?Ic)@{W6-#K^B|;tdJ*gx2w~mKPrY?x0Ic zQ9ZMUR#qdo?!3QuDLDa!63Fi<3=co#*D$hgaAI<@ZG1_Poq?aK-+FwKW$8BdiozW8 zmoxB%9=|llyK8FF$6KFs%Nl;Syt2|Nhq(_?!gRrJ8mU8 zh=vz6j~3U5`ul|FD;L8?qG8>Gk67=?1GF7oBuYYb9RZNiN2!T|)H&@lR zyZ!nGNDIr4<=XN1$oWSpsi}$S=_BreuSXY+U0mj$bDdGas?_U>2{6G0=wX6XPWMSR z{voI*vfQGW8g~ukgYRL;=?ynK#Rjh}u#O_%UXZVQkWEgvENs=0%a5?$bNbf0L>eq< zAnRF~^jNw2W#XudpY{*z{`w*7(fGmg@EbV^F&SA|Ru9kijt+#Xs%m53f=}J&vG+GK zb;}jQBa_-EFO5B`Li>-|S@;Akgb5P_mb#G$3fxu1OQYB*O+WUr;MgT)`M=KTwRnFk z?VPSFkm^}~TS)A2H*)Iv+}Jhn>(!f)c>B&DEt?^^$)|f(f6pr#Z1!TjR=!<}Wo@@E z@fH~mIKm+Q_YuJp$C~B#wJeRduKkJ>N8@m^@J69i=&Y=pD^ne3JjSSk@ohP9e0etF4Eu59vK^c5tCp+3c<2S~b;?Y|_g^Qp}wnXPc>hJhRq) zh*lOS3-jR6PwzMxRlf}?2LHOAXvfwZXuIIzsu$+qphXxLsBYOaxY>R1ucwjDkFEu7 zJY0;{L(a|5SNW|t$Zt->1DU|Fv_s1a5_I`J*Ux7#7>F^8!zDr?gWiNeh-;~e<~?z& z?LmyFj(c&Cx|HkU{XWrA4nkS^!s&s^-z&AYqfG;5R3!0~IMvqK!uV$9T^w5Xgg>bNqD+Ms1~m z9bBDECmQZyuX8H|nhaLE_H3=qS2=WWAPfy>mhs|?JHxv>RD`v4DTtl=ObQ!6-&4y6 zNf5_7=@(Kv91e!Emg)qwC*kvK(F49WRGoQi8clLFMWm!v_2(sBM}zc(BQ2Nfa09I9A-4%c6ig+o4#GyUX$$P(*_8n<%yp4Ggdn|-uSCQ zt1Atqi8^%}rqv8w&PAs;r`U@S-c8OsDRh#xfk|9jTG}=|?>)*1YFxzjj%}{4)roi=2!1PZ z+(wpL!y55C#j&FQP!xSRuxt@cZM%YEW-wvf`iPP;&Do$j`97CLO_Eu;Pug;TbN&`v zh905L7wvJoit$R4(=h4mfx!V+b3@BoZTpaNvrX>iAEf^LyuMhWJzQf~?acFxMI$FX zzS*qiA3p1~y_t!(-e$(zpVkSo)a;Nd-+OjaN&eVE6Z}fzC2yul zk7c!fe-(~QIR=CLZ^*z!E@RSLahKs=Gy6;82XOOmUiBrQt!G{3-*L6luf7~aQE(%x zsg9Mo4r#=WMlGDBK(1-fGxAcre%suEJ?oS=&?@kDfA9%ljA)WnJgv~g_ezEbN^DkUlD6lt_EqQ_c)hmbe+Q8mNMzMGdx!B*8|knSy#u zw??rTxiP40I6wSd&QHm-%8N!$qo*=w?Nd_wS3h+sWoYBx+fV!yDcmLSTUHmn?__&` zO1h}4lQt1Qb&>3wUV`UZP9yCGpnK(Mxh-)%?k>LRz4xn}Z9g-)d>vEoZ;0d_CK+!f z9-Ey{{3nMl)mWeVz89~7)kfeQMF~><@wp^{D7|ZWWmAr|W{qWm4|N4Y1U*UbP zzCqrIDXaH75x0hi`QmiL!p>G6QrMcwR(6wiACXg^leQ8xa;Pu`Z8bVNx(zp^mlkjl zsV7GD=p)YMgwzG@;OaIeJH?WUa%&$MC00L>74ECV3Y$w9Z_bKY4!z1oHU-~3>Mb<- z%OF1IW`r`%m#JV*Exwl(J)A$3Ld{1Gq~t7=?^_fVop&M~#d16%sX-ze=hZ&jg+v7c-aFN*eGo0!b?GxAZMSc5OX4T?3>64=7JX50d3%U2%1dekAXAj?os*+^K zHv40f6{%qI6&E;wpcSxzhZ~1!e;P`ed~M~tc2&NOzdCe(wN0{N+Te)g z3U!|3-)~to$u_t>7;ApV!zm`mAfKz&8?h%rTA}nF?+;t9B52N0-CObp2KZ01v1#~u zB4qHnpG^}7s4FD2Wt~}*6djv+AbL%GGh2;Zs87kcht*1Yc&!NJa8UV2&beJmo_Kf- z4w^o2DOt?fXwVP|l=8#LyZ^}8AGt#&6Gw5!4vCiDK~u23^6_f8_DiXT!*fX~6^2*4 zo5WW&a{UiHS&DX1mrm`F)H!LbP^=!sNQBJJK6b@ zSwmosyXPx&LOy4TIj{P`c1ng}P==%eZv3#J{O5u7W2x#e#F_rL~C~U(C99# zZY3VvZi9z{j#=pGb-5#>I#Q*Xu;PuQ;?#q~w&HI|S3p0Xot{_>ASx=lpP#5!34N4NM2>=eL5@}o4+2f1UPM<}tra7`lL;}(JM_7odrD3f`I=MCjx4GzTCDJ@}5gKyohT1K_KJ;%JKH`5e9haRwE)SYYspH zVPup9z+u6M`usRf-?@*cDJf!X?u0r{ky~%AE+}|fws7u;eTt{jYq9P7IA`BA@lvuf z!lP4kKFB1=I=ys#7~$M0cBWqS@S%UJd)4sIdk%P!HZlExcLtE`_NOnbH=Je+uzi3r z2zYn7`V_xQ*;Ed~g<73%Zv3Nkd)ZsKS_7$UA9<|Ge&tlZrH{}IDvu3wG2nTS70$wb zk^CcRx)x>py4>(u{>HCbt@Hfg86h(xJBn*Y&`>fcV!pb1dYNJLY#K-i|Kgz`i(=D? z+o{s-#1ttP{}AanpVAp3Ze}vq*#j6Bk(amRj?Je;z6bnz?r&Xf?HJ_wTzu{;slH`f z`3e$~u+@7rO^1_ck7#qmVD-#>|4tMu-rlUdT({k{q`XJA(%zhMNhLVLT-c<seM5HF8DqqLe+|v9|+!-MW%y^i_q4zharXYkvw8YBv%74%Q81i>qJCHLq({y6sw# z9u4o-oYn!NwGd}uiou!koK!|aSZ6nW=$X;>95W;68Q>hEEcXVv6+<7%@on+Ttfyb3x4Di=leCbRHsJz#SO0?JP zD>28V{bpi(>ASn_H#t4cBrBGW!C-u`q4cm!bTT%-Io_6omqP>61;|QLGi z?y=pg86Xn*Lv-eIn(uWb2pO=99QR*N)XZ=WG04sCV5@&1WZ3`e(n{00lN=s$Sr)bxAJxy9RZ1*4>QF_($0K+Phb$ z&teN~gXaHnAc2uZks4p>>}=+fr6|q&6w+xx0QJ4JKx#)`b0nLHw6rlS@dllEdU|>U z#Nup^D)$RQcXt*%d3&Eu_~5`mLUOX7o@Mr1?R=n$wu2jigxC%a`Rra2Uut2N=s9cA z(XjkX(eqeh;%_TgQ{lIlzhW&?F5`yXkoPYn;g^1Nb)7Hm69ISzQ+>BpgyX5+d>my& zrg*jASkOhz$EZ$K;NrfSLfrhzXFB)M^J zojK$08mhei_7_k8tq#k9jkr2Pq(MTx4%5-Zq$Hwj<~Ox{9%G-wntTE{G#nlCzd5Wt zImHQyuA*NK?WPAg?ozUr2VnHDo6fGTckZ*@Z|D2vl$C@pn}NGKj!RBX4quoGJUKSf6Q+lYiYwfij&UAWC3g>d8u3zBl%E0DGrPUH(*E@;JH`HJ)^H}|*{eT& zfgqtNqx2S_O}jH8wV00hD#>i}_Agp(k!GEKDbbP!eApm~Tf)Jy=zE6ZsO)7I>#>I>)8Et1pvKp@_P3iWsWwRq)dol?&l#$7N3d@z7&O>ko}BJ})+FM|Ji6VP`NsnJpZIN`m@a z`t|ZavzHp>kpSn*?Lr*X_H_|a_4W0Vv0X2NGrh4Eq1C^lC@SpJof*cwEO8wUn)fM= zFdweK#+ax$`e=Lg-{I@!c_E$M$3uq{5gRj}E71j7hh6z8jm>g)a-uD|gt$0KbdZ;i z&m7pdje*;GXSw<8(>pUWvzE2UlGgEA($(Y{qBZSvVV>hwUDrCke@{O#9vE>GD5gjv zPk(=ZHe+5PZF+GZ!bWW*3f9-x-#Co!Z^^2vLcmyHu~=uiEel^HEx}x`Ix_fpvjF)x|KM5(E;M+{;9 z2UyiFLC0Ho_d(B0vmjI}pE}FM21+`OFDgCFZYaUti}joa0|l!GykgK^ zUFxv|e;rNRzHpMi|DDAJ1RutNF```Z+8lEZ+OUWgls9YTtpx|dF4q3M79Vl$G$gJ- zg^VG$8mKiaxbN1+#whql&KDhjDR$s|mCEsxHd*nOlM@rG>;HWGNh6!}%U~WkkSxL3 zz=8pt1Z?gk@Ji6@fe{3btEsK^AFiMCR@^)u(F7RR4AtS~_C_QdJlCwiBYwHmCe|4{KR zi)>|fnv>!LSbGM-C_H_x$MrkjupaVX8qx+xNOI%Ty|Uk4jB1hznsm0%!O*Gkt;+tf z`u<-qK814d$>QPlH8esKp|Nh+wlobPmcz6L#fO!O~&;Y65tww;#1I{2@m5qbQuW&iw zvB7*j*1G;!4uT~`A;`a6@esSk>OP%O#qPt!^+9_UFo^eIFDE27y=$D>kELhs_j_IA zY};kuNB5DPHmUAapJLQWOH|^h$jFsV7_Z>YY**ElH=pEp*05q;knmS^1?!b z3I@D)w?C!u-9W-nwb@+~`uoV&MM~?M3HYeFV{_j%63H$$AifCDrftCB$(SEBijuaVhG!#(r z__p5C)QaYNaZO_{Tud_wV2mG^{MVy3!|;}lrE_{^7Ah5r7aG%8>c(hGOG~6xYfWC2 z_8G>#8vr`m%k2wzsro>##PI@+sCQ>j)|tr*&0D9IdMen8@A@qWhB)4}wY5j40>Bc? z4`Drp1qEj){xB`d%AvHbqNH_&y5sEP63=@l`BK;t4lKP##@N)(|J!gUwApcZ5C^-+ zeXw%D6Stk-8nXA6Td~ahi_M_)xzYb6La?j$8a7xW+^LDyW`*s@e-v36N^)~=Y3E;d ztB?qgGE+LirO3;;Kl#ZCWL(^NkeSqYvq0{7 zluC!6Ua{<5_|Ww;fU1LjuDO?{$E($a^61(CpImOmrMKw{RU-Xo$A6nqoZW4c z$@R8rna|wUz6(q7jeP)J1hl?Kmcg_N1A5xW4QrtIW^zoj$0*c*(9)h+-i^QLY;Htt z9@N*mq5^*Ws;VlX%a=X1K3({uPp*~}%OF#TwIe_49_?C6HVEL;Gox4bG?3~{dyAch z3dOwDVn6;vGzf7cv(?PcWRwt*an4nj6|frgt%3C_7CkCI`uhu^pLtU)AH4m+Dsbr* zp|4L92`|o~HPQg;Vm3wq(Md^3t<4|5TQhi)G2-O0u$D^3QowHzI=szQ2hYGDv57X` zcvWUr3<+({)o*TQMi&&G0`sTh)db(Bu|*8bJjL33X&ANG=v+*bB0!^3`yRnYUz*c3 z&AZC{$D(+Tdpcm__t?l!5${;mk$S%h?tq0dB}Z>Eut-8DjvY7o^%Z2+>6PfY?VaF8 zGjsERQ1{!n!^_Ld?W&e7*y-qaelarT6huWafE4NNQ`+$pbnRb^+Nylfs@=uA=H>?R>Q z#cOO!j7o(QHIXUk%7#3{FjsMmf*ooCrC6br@uAQpCbPup2+ja8uvBaAq2@tN2x*cL z758BXVNgFt#B3RhV~l+ICsCKC+s_Mixpq9gVe^IiAiQLY2;@m+@QyzXo1Z*+vUYnJ z9}rR#vKI{VJ>Mpf(HqL7aBTqx;uxfn#)orWGO7&U*+594q1&`+aP$g^h(xv(!_J9o zpT%E)rkPD2Uh5?g2zA>U=H{t@tANIMa5WX`z7~Ja>+_%zHP>r9fes1NjZpW|(;9St zyhcT84Xk!`QgB8{gPe=z;m!kd;Y^L2xo8VpR5#U!xukCdHBe)Tr>#ogW2OhUB zlWhw95hS$nY(}xcT`%k72>+>rDDuMf&hXLtqR#<+PTo52z4sjItlWf&%SxqAM~VsP zE!#qcN2+%_9}Ua=K8ujK?ou_y7{E}t+i0Cc4fi%b^*ET!FcJgZI~+{s&h#cXop=7Fw_eanvEAFWsBP_bO3^gFen*Cgc-OoMFS>be z5;@I}BY5Qet_$AT8fmPlth~RsyR*MqT~l-ZcztW^*|Y19X-Xsd0Bl8q9QZY44;p=1 z#vddl{o7>`oJq!cM#j0}UfTNuqj9AbV{T?|wdWBb-vD znEZ;=4OoA};j_6KffL^v^7w|jG9>xz__FC%_!ODMrOw_er@tY3ar-9+chG9r`5NHF z(s|d;Fv-37^tlvBjBA|S%kqGkzzhxt01d_nTdjE8eg8IkTHrRn1!!L~dQv`Qcl%9@ zcfpd14*lY8dWOr^!O{EYxCL2ycB$4TPuq=(h{*FCl9nqXRc^Q(q8Vb3a*9+%Iel0* z{ZQNO>{NXxcE4OR99n-fbjK}6Dw5yE=Ztg5TqIYiYy#{C<)gCfqr34cyOho5Ax~A* z8YqG}%F|TeyJ8tWiC0AzxO?ixely)Wh6B&S3%{X<)+J2pcifql@b4Bw|K+LY4GXjV z`{i*NsCi|5>bdD3KLk%Y#Ew3CC8|J(;ny>#pZMJu8^V4z?339&@e{5)@t!ozN6zNr??Fv?0H`W~vsRX=uer%Sr+ zyp;Gam5hvIy6>$v7jLCWBl-!7C#s1U9HP6wVc=0gNcY;B>26!P7`Bz?NT*Qz_?j?* zLb|m(V#W2|BD>pUtKH)99c4j_gwl9fopt&$oUe=OgVn@kL{k4d6xD5}#At2yOY4}) zXZK3Y6&mmCI$2y$Fe81GIMtCFG1O->M!CoD1-}0HGvG`QjnqDJA`-c9q3W;&~L-_co8@q@s%n z9!Z#mRYuo-2b3jpbUNu+l8a^MJL}f^o7funuJz>H+NC_KEjztMLHo%L^g!(`aoJiF z%d+_^1Xh?B_FSw!@BCG~X_og2#ksXYz+MM+0(phTR7M9r-?qn3ZV^to>QNle2V@=- z)7gG*3^mbe@povNd&8O$mtt_e@Ad3gua1dYe9+bRb$RIKRzfT?%?9q!1s-?M(0C?l zbn)yD7~x}*;m`|y`EufA$>zD}jRR*tei?`U9eV4uG_Ia?5uXrKqEa^zq!P=TKv{L;1p|^h+N*N&8A>!v*j$eoa%%dqi%cGRbocHJw#lOF($0Qu zZ}R6fYJqY9b@EPzLeM`XXwv;rmur8}wBzK?K>oaOpf9umx9ku%T>46q=ap~bhS+Ml1OBH*Yl}#^tLz6aeZLcI!hS*fPr=`<~)vR;dP15jqg$$Zi zd$Ka!DWa%o%^&ad#g*x-LeUPDLJ9x*`SZ7GOhByai7(R9Acc?E!KazrD|8#@Fo~WzA6JpO6 zd6CJH4ql0){(}Kygvc0uld^^YeahO z5o$D%(BdM%%u_j=opIKK!5zx0LV!*Dcdzumme`@(y6Gad^~noQp@cwb=8J7*ttn}R zjv3JW{v=I6_JHZzb^$DXJfKwLXoI}};DMo%l9JZ2LAJBmeC6103Ibe0e~d#|L)bHq z>}`0f2QDS~cymki9s0fSQ={rdnVCu`3y-!Bo%K-hy~#t@0j)4>ZG{cL1DqHRenS42 zk!c&~Qh7%-EQWmLXeqQ4Ccanxve#xM3pi3{r;_d4aB?*CL1XPG68^wi(>!!zGm5EF ztd@}fB5%Q`#KD-rAW7b4dDQhUETjz?_TV*{PXKN?epFot3mx?Guxq;wX9x5DG|GMN z3Y}2Lq(@<4p-_MRzEIlkRs3W(Fg5@)Z#QIo|E^7o9aB@&(3n|QXJ;f{Y6M_0(GR#jKG-z#I-41i=e z_IL18_4YrOwU$Z+5s6cuY~EXcjUI8yQo6^J=l zeP8JrfHWgg2$D}gxz5peaA%=9r=bQL!BZ;cX%~G2dxU=I022-56F8@UM2C5Ypoasv z={J4u2Xn|t!yqVvcS%=}H=|Pkxblkri}^k3Gq6``JmxpOjc(Ts7TAn*EX==2BSUyU zyA(i7szmc2+GSngJ_OE-!~b(z`Aj1OC`{*n=RWiQhOO-XFE3%h%kq+!%KOLh`$E9% z|9E5jp5pM|HI6)0alhfC_`GhJc-h_cvX`;-u!moCmn0;wi%MJ-mAq;wc~wU0x{TCS zQ3)v-35n?`zS;kDf~&iolY`%XeL_-Q8Uju@O}m1DyMveST@QOYM>ls@dr?ogn7y0l XeRr?L{f!E=Z=`-pTczZt&9najP}tMc literal 0 HcmV?d00001 diff --git a/tools/media/multible_env.png b/tools/media/multible_env.png new file mode 100644 index 0000000000000000000000000000000000000000..93134da8c5d65c8b6d5ab78813bb45d5ca9b5003 GIT binary patch literal 47599 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 hTP((G^lJ;QMNc|B8){{{3ci>?3w literal 0 HcmV?d00001 diff --git a/tools/media/uploading_cache.png b/tools/media/uploading_cache.png new file mode 100644 index 0000000000000000000000000000000000000000..bc3a573a3b83c7323e4c6c21dba4052ab45ee9fa GIT binary patch literal 23285 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 z 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 Date: Fri, 21 Jun 2019 14:08:20 +0000 Subject: [PATCH 72/79] Deploy to GitHub Pages: cbe77af2b1ba17bc3d4c087968682024f2dbe1e0 --- tools/ci_cd_with_gitlab-p.html | 98 ++++++++++++++++++++++++++------- tools/ci_cd_with_gitlab.html | 86 ++++++++++++++++++++++------- tools/media/deploy.png | Bin 0 -> 12463 bytes tools/media/test.png | Bin 0 -> 11648 bytes 4 files changed, 145 insertions(+), 39 deletions(-) create mode 100644 tools/media/deploy.png create mode 100644 tools/media/test.png diff --git a/tools/ci_cd_with_gitlab-p.html b/tools/ci_cd_with_gitlab-p.html index 9a29020..4dc5b9e 100644 --- a/tools/ci_cd_with_gitlab-p.html +++ b/tools/ci_cd_with_gitlab-p.html @@ -66,12 +66,12 @@ # Without CI/CD * Running back-end tests (using mocha-chai) -* Manually perform front-end test on the platfor +* Manually perform front-end test on the platform * Depoy to Google's App Engine the platform * Alpha * WWW * Next -* Running cordova and singing and deploying +* Running cordova to build native code, singing, and deploying * APKs to Play Store * IPAs to App Store * Approximate time: 40 minutes @@ -80,6 +80,29 @@ +# Enabling CI/CD on GitLab +* Just create a .gitlab-ci.yml in your project's root directory + * Declare Stages + * Cache data or modules + * Install dependencies on container or VM +* On push the CI/CD pipeline will be executed +* Upon success or failure you are being notified by an email + + +# Simple YAML +``` +image: node:latest +job: + before_script: + - apt update + - apt install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common + script: + - cd js_apps + - npm i + - npm test +``` + + # Build stages * To group jobs and run them sequencially or in parallel (e.g., testing different environments) * Works as a pipeline among build stages @@ -91,10 +114,13 @@ ![](media/multible_env.png) -# Caching data +# Caching data (1) * To store directories among builds, usually dependencies that take longer to compile or download (npm, pip, Maven) * Uploads the cached data after the script phase but before after success or failure * Large files that are quick to install but slow to download do not benefit from caching + + +# Caching data (2) ![](media/uploading_cache.png) ![](media/downloading_cache.png) @@ -151,24 +177,18 @@ stage: test image: node:latest before_script: - - export ACC_VERSION=$(node -pe "require('./package.json')['version']") - - echo ${ACC_VERSION} >> ACC_VERSION - - apt-get update - - apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common - - curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - - - apt-key fingerprint 0EBFCD88 - - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" - apt-get update - - apt-get install -y docker-ce - - service docker status || service docker start - - service docker status + - apt install -y xvfb libgtk2.0-0 libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 + - apt install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common redis-server + - service redis-server start script: - - docker run --name redis_instance -p 6379:6379 -d redis redis-server - - docker run --name mongo_instance --restart=always -d -p 27017:27017 mongo mongod - - sh test.sh - artifacts: - paths: - - ACC_VERSION + - bash cli.sh remote & + - cd acc-front + - bash devrun.sh & + - cd ../ + - bash checkRunning.sh + - node_modules/cypress/bin/cypress run --spec cypress/integration/acc-front/login.spec.js + - node_modules/cypress/bin/cypress run --spec cypress/integration/acc-front/projectPage.spec.js ``` @@ -218,6 +238,46 @@ +# Pointing out drawbacks +* Necessary to cache all data between stages? +* Do we need all these stages? +* Should every branch execute all stages? + + +# Optimizations on caching +``` +build_acc_front: + stage: build + image: node:11.15.0 + cache: + untracked: true + paths: + - acc-front/dist/* + - [...] +``` + + +# Optimizations on stages +``` +deploy_to_gcloud: + stage: deploy + image: google/cloud-sdk:latest + only: + - master [...] + +test_front: + stage: test + image: node:11.15.0 + except: + - master [...] +``` + + +# Merging stages +![](media/deploy.png) +![](media/test.png) + + # Outcome of CI/CD pipeline ![](media/acc_ci_cd.svg) diff --git a/tools/ci_cd_with_gitlab.html b/tools/ci_cd_with_gitlab.html index 0d718e9..ef7c9f1 100644 --- a/tools/ci_cd_with_gitlab.html +++ b/tools/ci_cd_with_gitlab.html @@ -61,14 +61,14 @@

    ACC Process

    Without CI/CD

    • Running back-end tests (using mocha-chai)
    • -
    • Manually perform front-end test on the platfor
    • +
    • Manually perform front-end test on the platform
    • Depoy to Google's App Engine the platform

      • Alpha
      • WWW
      • Next
    • -
    • Running cordova and singing and deploying

      +
    • Running cordova to build native code, singing, and deploying

      • APKs to Play Store
      • IPAs to App Store
      • @@ -76,6 +76,27 @@

        Without CI/CD

      • Approximate time: 40 minutes

      +

      Enabling CI/CD on GitLab

      +
        +
      • Just create a .gitlab-ci.yml in your project's root directory

        +
          +
        • Declare Stages
        • +
        • Cache data or modules
        • +
        • Install dependencies on container or VM
        • +
      • +
      • On push the CI/CD pipeline will be executed
      • +
      • Upon success or failure you are being notified by an email

      • +
      +

      Simple YAML

      +
      image: node:latest
      +job:
      +  before_script:
      +    - apt update
      +    - apt install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
      +  script:
      +    - cd js_apps
      +    - npm i
      +    - npm test

      Build stages

      • To group jobs and run them sequencially or in parallel (e.g., testing different environments)
      • @@ -85,12 +106,14 @@

        Build stages

      Multiple Evnironments

      -

      Caching data

      +

      Caching data (1)

      • To store directories among builds, usually dependencies that take longer to compile or download (npm, pip, Maven)
      • Uploads the cached data after the script phase but before after success or failure
      • -
      • Large files that are quick to install but slow to download do not benefit from caching

      • +
      • Large files that are quick to install but slow to download do not benefit from caching
      +

      Caching data (2)

      +


      First CI pipeline

      cache:
         untracked: true
      @@ -134,24 +157,18 @@ 

      First CI, test

      stage: test image: node:latest before_script: - - export ACC_VERSION=$(node -pe "require('./package.json')['version']") - - echo ${ACC_VERSION} >> ACC_VERSION - apt-get update - - apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common - - curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - - - apt-key fingerprint 0EBFCD88 - - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" - - apt-get update - - apt-get install -y docker-ce - - service docker status || service docker start - - service docker status + - apt install -y xvfb libgtk2.0-0 libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 + - apt install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common redis-server + - service redis-server start script: - - docker run --name redis_instance -p 6379:6379 -d redis redis-server - - docker run --name mongo_instance --restart=always -d -p 27017:27017 mongo mongod - - sh test.sh - artifacts: - paths: - - ACC_VERSION
      + - bash cli.sh remote & + - cd acc-front + - bash devrun.sh & + - cd ../ + - bash checkRunning.sh + - node_modules/cypress/bin/cypress run --spec cypress/integration/acc-front/login.spec.js + - node_modules/cypress/bin/cypress run --spec cypress/integration/acc-front/projectPage.spec.js

      First CI, test

      test_front_end:
         stage: test
      @@ -186,6 +203,35 @@ 

      First CI, deploy

      First CI outcome

      +

      Pointing out drawbacks

      +
        +
      • Necessary to cache all data between stages?
      • +
      • Do we need all these stages?
      • +
      • Should every branch execute all stages?
      • +
      +

      Optimizations on caching

      +
      build_acc_front:
      +  stage: build
      +  image: node:11.15.0
      +  cache:
      +    untracked: true
      +    paths:
      +      - acc-front/dist/*
      +      - [...]
      +

      Optimizations on stages

      +
      deploy_to_gcloud:
      +  stage: deploy
      +  image: google/cloud-sdk:latest
      +  only:
      +    - master [...]
      +
      +test_front:
      +  stage: test
      +  image: node:11.15.0
      +  except:
      +    - master [...]
      +

      Merging stages

      +


      Outcome of CI/CD pipeline

      diff --git a/tools/media/deploy.png b/tools/media/deploy.png new file mode 100644 index 0000000000000000000000000000000000000000..40b785ede69a22a773b401b229d0ee6baa79be16 GIT binary patch literal 12463 zcmbWdRZtvG@Ggo&a9arOy10cva0u?OxCajo!3i2*aSa;W-DPoicUj!s9nSB6?yd85 zA5PtQ=&!qarmCl_XCA)pa1|wK3{+xN7#J7~Ss6(+7#IZLe|icE{D1NpA))L)K(G{3 z6oY}Oi9vfcLHy5#by1TRhpC((J%WLOhfz_`kox%efP;g-{trI(AOA-_I5;?7UR)BF zYJPlNe0;nNI+-;@v&+uPk8c=`C{;!@|pQ(0NDwzAsV(hwURE9B6SotaTonD3U{o1B~k zZa$igmTTS}j+ra}I4ygAeqOxXmXBQw3=E6_N2qIpKAy%Qj~||%o|4V3V;L??y?rX} zeq|>gS5NmnJ)K}rx0|bLzv6|*X2+na4HBCcaXxlvP4M*i#K_2S!`#u#^M{$~kBYUo zgYl~Ir;l6%9_c?LL6f<;eQV|=$2rq4xn7=@{n3jrA69%yD~H$gwoOLTJRgs3DQh3J z0Nkw{orQ(jp7Rf5UG0e3lCFbEECP8fblj9b?sP$m?}wc)Yo+cv6AlrrKOhgjzmh+0 z=04U_o;R26-GB4QhDZ5W?A{(5_Jnb8h_!hM#;NksSLkVbLFO*r1-yETbK=~`U-$_= zk7jx;HT@l{hyhzEj!*n_`_4DDdE8b%R2AZ?&S&b|cgyibI;rP6H1vs zBEKJu?!#eYAF*?9QSD~Pl-8ekLj`p_5BFxcb+QVfJ%KL4&$D?pd>lF|5(fX)A4XGU z$}R)#b$PWDUk3klB!}758$+tnJ|508>gPBZsJ+3Nu|?g-ZIPG5!)Zq!rLh5SUadDv zZS0bMY{_EO3gLHc-DgUeeJXRAxSC3q?Y?VI=Ng4AsTMteQ~ zMo*Ro+^A~{Qx}T-6W!h4J4PBlDLITot^IDvS>27rr*d)h}LWq`Dof1Pymj)h1Om&sX(K&l%4x zc3m8vy)8ME#Yy?-7Y_N?Vw$qSz)-@-N{VTCtemEOQo++99;Bc`_Qa0f!-a#zh5L-y zfIFo1hTL@JHtHjbBq{T9r}*EixX^-OkepzCEc#sPrNiD<^1GIk`nG08LG{) z5Ix&dm|FE@O{?Fb>BqaVy(_MD1duh{t z2kVegJ*)l>OT-ZSG8F?Kv9^59%!=?NND%;kq>1xw>~TQ8B|bxl1Mlr~&0J?F=+!)q zs5bp;kb@9;9*!g>BRnVhmVYYuRJSw_2b5NzwFtQN zTHN}OA`+TkTXs2xW$xf+ⅇ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 X;oDegrsyfx|M+F4lq4&~jRXG|8wgm_ literal 0 HcmV?d00001 diff --git a/tools/media/test.png b/tools/media/test.png new file mode 100644 index 0000000000000000000000000000000000000000..7a661784b80fda719c9c25298e6fb66ff7382951 GIT binary patch literal 11648 zcmbVSRZtwjwuA%?fyGIHumlMXL4z&?cXxMpmt6?%!QFzpLvVL@f;$9vSYUyDxu5Uv z-Pa#8XR2nZy1MH0sp^_=MR^I#cf{`y5D+k>Bt?}G5RgFs>Yr$D|E=fmx&8lbNEYAa zz9S&i#$Y@fA^$rgx+qHsBUDY29w8vSMNpJg6@&i=S8zD=?VGpPaQN}bv4g$+<;5j& znc4#!?&{*YzrQCXAr6H?;c(dG*aR~Z6CBo?oRm2GQ$|fq_2d=4^9uJ5^l$axsXY64 zWuLR&YWfi_#LbbNnK78+_RYRNHYSG5rUee)Z;N$z9!Xw$fyd657Z(-yczeO&r^;Mr zk&%(;=$Pv@LA0LZ@TVo0&q39j@TaNCZ1=Ub^~Bzb*TrOe z$2Lodu+Wh5vQi<>F0X>Qt+lPR5YMBIXwhcZoK5)B;T8OL+c~VoJ2*FJ_?3f; z!^e|GlLSJ^Sva`E#T8TMnHZwqJ+Mch5T= zLxGcdENsHGl^Xi>FwJlDtWy35ISL}$Zft7tsTv%m@xi9`M#;4!J%6V@;gh_~M(e)E zikdAAlNJCd7j+I9mi=(cl|vD8Ovn6Wv zzf>F6RO>G8NZ;Gm)baLh`wCWuT=?ke*>#=!!MiRR(GdT2wV=%DlLSsX<=ffC`BT5!beAYLOhkuV?*|x+d~f%{0p2QM zIUGMaq{JcYt7K;2j1vJqV0I|b+0XkdO|N$}PwdcoMz#cG1}jj!HzAwSho`LvT)oW9 z@DyT_1%8@PnL8l0Nv&3BQSGv6a)rcNp?ShmmBOCSPG6La4j9~xq3di_`L)CGNzz8# zaUsLg(5vK5(&p5D@fJt)1$x1WGRq{u_WYQ?zT>t}B3P2jZqLLuk@AzGKscx4hiLOD zE#qWkfPv(UlqUPvxj~{i?m-cGbgVI&9y2gTtqXJiU|-j?*YZUQz{g0tT%(18Mf|kL znGv8Y>m_VDLXi%6Wc*oeF4ZVsQe{dQoIZ*d#d-zoht%xW+Gvdge>{9$8jqDUzYO9x zku{MM(&T$nra_6{&L76%}KhG|w`w?MjL0npIdt zNG}d5;i~eBGLKTme7paXmtYVxGH*-JC{Y)YcF42vSaY0`+3*KSwup7q6U|aKs&brz zmemA0!W{0;$&#{iZ1>$p;~_Ihbz0iivbDnsDaSb6V(-y+rOm5z`d=NNiJN1ymJ_zn zUyx_m(uBwfuTLwPfFLlRIOsR2RXACI^6qca5rSY9U!X%vtIfH!tE;N+?Y0sIU0>Sc z(;!9`B>Jx^(S{_aDbDvWD$v`uxZ4soMr`I>GyFIl)lj?eq(k=TAEr&RP7Ap*Epj`X+!xw zrI$-oxy`u0sbV;mRKgM^A9`I}zsDhHe6P=e8$QegDV#k9NuJENo{Pl&)iX__B=Gus z=lb%?%ZQj$9grqoc`&S67VwdO#rt}D>@VNy(f+RgE)Zj_1(NU7NRbW$2`9L%CN~^G z-jfH*5XS+=5q4qWt@y*7qY^e(c`1>6*U^by9Y!>v)cD20B2nTV_Pd+R^EjZil( z7JalhC4ynve;gvQVQf}~$*gPv>u4%fA56gItOH|7-JIjTdcz0pUV{c2dv++fhe9B* zqIo(tQFCP^i!6Jhme+T429^-skY{;m)%2*EP!>}X;!1UakuZv}Pvx|Ep&HDTCLbRq zZ!az7N3d0m9!nT?%{d>xrYQ%)x(CLv`C%74d8YxNl1MUFs@u^pvHCCRag#w{anjK5 zpyA%LFXr3oWTM)IZq(Xll9oJXQ8Ou{UmlIA)rdeL8+#i`*V{bn{OPZFv|^|O7&pf| zQb9$kvrki=7=vt^kmoJd)I332&H~5aUTe*-7PxZCh&O^t@fV;={VrxbhxH_)RePTr z`62xhitF6u{YhD=kr5nhsFD_WgFKugNUNDM;h%En{avCLmlMm2f=4;U0Z$R?J8>I% zpI&`v=g^DNa%5GSUEi6g-(B~BxwsP9nAY+X@(YwJHEh7)jF%|h)cv8MHf^&I+w2Xl zY^>MaCI^WtgbJYh+x|)y`KFiS#EMyB70cT=ok9*{Kz}l&6nuehBU14G!-Cdz-1$c% zlI^rtLEz3bkpnsKZ&8g+NW32;^F7Jc_Y-5Y)!WTw^YW=3yKax#P3~H2NtOhaRe)UN zt}cw&Aa;(0yI3-%C3|l_nO^U~n)AqOkE6JN>VWXJ#~4?mbXTVsYy={)IRQ0Wx<}}^ z=JfpR5ECg0cPg%_mz16fFX)1y{IYsd3ucane;~{+t@5G&`L}Uu?>l_A=|ZAbGzxyb zGP&(Hb`&@^`PSPk|I?#rN!3qZ}(H*?E!k!SWs+WxpzMp(v*9)ChH#>VqkKi#%1FnHJ>Of^zs## zHkLNFtthHfCd#l%x)8htR(1)a@tWQ90ax7gVe{`aVk59lFT?SKVfK)SBASg=6~XEo z{tiAR5a}!L!5}aqPUIE;TKKlSN1g)avokQY(Aj-m+u@#XHTC?CO%%`z%Y+R^4mt^U z(=(aXYLrF`N>l?|qt>EC)r`N}RzwUB{V=F>aR_=g0O5|X9>i@N4|YGf!d8La)ssu4}t6Xn$O}-j1D8rT#N$_UE2m z8cBLRCNgbGjpb%4?}wU-EKI(N$viPwjnd+eq*GQsJvQ=RK;thBe8anvviMRnx{qUc zZag#pCPjw4%0eirNBBOs;l|@-Lr1r(AXc~A(f0MWmFL^7N7;MRz1?xQ#knx83K5!= zXXhIX`mKYGykeY4$5dZmXw2c`fL0f{ZE?m3+OZ4oggu>8e)b8RnQ+r(4qX|-m3i^It9br^_TtM2<{vx|XTAq2#U z=f@p6XXv=5=lH49CLJ}A{iWSvt|evlnONvcw#qn<_CJ~J+ou#ZN}X{nFkCbc)E*NH z?0kuP?Flc+$+>l2>OiaQTnS^xcLULG9k_8pc6SE<(nR9GFe8Y(+wd1`q%dwTH{8^s zzdUm5t;P%w{e{_7Gf&WTV0&*uO)k0klKbLRqQG02S@XCAUGkNUiQwiI^tClnitqM$ zLdEWFZr>j+rB)PT^3VS9GCVOs-gUb$Fq{wcQu>U{A?V!-UW(U}{nI9;lMntSV$*^c zbH1_ZJsbHl^AgF@f!*o^-5E3Hy*r1jR{pjyKl1Pn+>qG(?AzvusO&e5-ZC%wNpd|t z-2f-ET1*sVUovV5VF}XniLqoMz$KCB|1`sQ8kU2F(fh|St-}oCIl*GkH>1Gv8 z$^PvP9nFK+crXje=~Lg| zpB7CN1Kg#AHS#zqHN5NBb-}kO08N6e3|!J335q+1mTH7z!p2Lxr1X+{JgyCW3|oFUSlyf4#DE@e?)8p+pd1Msp^IbFM1hXl~Qb0<- zjf09NC=V0<)BJMc;ai#HA9xi+285AWbvpnf$6!f{``u3KPIDMRi^t@4^`rS}p9p@@Q>0Go4r9y%O{1W<8)fJq$tqkpn-3oSI`_0lr z>TUP9Q|I>*miA2< z>t0k%>OAeZd0Ndz>#VPa!{80lZ1E9=%wt51rvI=j|0hNhWi|QnS`UD^-PwpeaFzX= zaNM>7aIGCD+;h_pa?^`em&sQFz-Y1@z=79ie#JNIxZVHqZXmu)#U3+d3_?!UDW|S) z+enT!@N!uE~SD4!i&q3zDQ)8LPeVUkB9cmL}5TOZyK{l+s>>d*jzD z$CWIuP5;89qYu*IZ+#hcZY;XVrM*u<*EjRfPS2O)=l5q|c4^R0<#q2*$PW2iQVN)D z*SzY*d#aRQNak}hE3uHbDBOB$DH>4@fV8((g)+NsM6QqDhN~6JH1TyMXE#pELKE&d zU_GACy{>#eW=u#T>IfoPU$l}(1nCIJicKEFv}m%c@EPzMf*Na_a|%GW>i&{cv&pZ8 zxg{%k6^iHr(mF1(Ze?{9TxC9wVU_wJ2eLXpBw@DK+jgqYL^JvoiWA|!u(4dr^}w(% zkEZ>yaUNO3B%7iPgHR#R`NYrH?cvZN9u}D<7&|1@76G>;p3ZEp*4y+3Lz&Y!I7t12 zmPxPzE*{va?5A0Dd0r=bhMRM_+99)Y$Ria6-@4{P2bjBSN8y0(dPYE?-Wz2rk>?w6 z89T}4cNr~42Y1ryU5wdXlx%QwUuFAyx<{dy01j5xN> znT<6D(>H@r!E9i0ZJDa@whol@XIHltg$WK__ z(b4gZz0=o}^7WJ;#o?LR#v;>*%m52w;Bg{A;^I}bJ#hkb?Cq4%<(7_pRHXT(^Uk%31cP_aL{?P~Pryej zt*VfD-hDe+uVAjih9@_N0=r>+VobN#rWPIG(jKlK=66TASSTfbLqq{&0oM^BbZL@n z4B=}S=q?BC2dZmY7sJfkYJVi`9DfNetUopORg$}tw}}`P@bPY)@s<62ZFIQDl{r?* zKhybk6R6yhyM15EArXoEW0~8IK`hA78d7&@{i2RvXYmZ=rI(;0)6e#;a8D2c6)om8 z-KEDHS1+<$x@k9xhd;56N5PGp`4wS99)dYR`Yq`4Ce!1>pQ@3%p zP=2#&z;gq{3w?6`t_dRbOoyZb(`tyn0 znN|zqwy*W|$S^i(ecnMAv1^OUDpnM=itk%1&S3904?e$&Y!qT9ic}fnBn}qZt*?v^ zPG3C!;%#AJZ*OFm8!X?`oHY3N-;|k5KrxZ1RkqtlV0q!=y)RbIiIc=yi_R#w6NxuCDgvg5L@BA`OpUD=Yozm!j8SW)Ox2t z{+03TdwncnYzo)RKwaO!v^uH)Bq~#n-sUTOinhv4SS=HDdnxYHGa;ZT!9?Z?+xCP5 zx<40M881+W3%2>Kt!`g|N2K~tl_^6zcx?o}B-d;$`mIW?U+M)?e}*~h)0UD zh%v_QZd=lw)>2&8{l#o~oC^-(**E!}0j8?5#TwWcN-d%K_K0?KbQ6lf>G@6)AxD=c zqH7>DC45JtxG0%KL&^pNBVU;*K0!TZYoI1f$Ey_FB?I!@YZAHNLLLjLbh`n4AT=cS z@eFXVFtp(x{|xk<+~9k)97jyq8V~`=yOe6f4BMcreN!gqT3Kp|KrA02gr^DEC1HDi z>oDr^JAK-7UQDuUr3Od#pHA@~jm4`z?0-c?At@i|Swr{U|5T`fEUuk<#mGOw%2}Lf zM(yYZ3}KNxRt45Mh)irM6e{_Uq)ewVG6t_oJ}z;Ba!NTOsS{gR+cTmy-vE6G;7P9+#`w1(0^EIvSE8UzlxP zk}T+wk5z%vDkptgp{&;EDh)1ul+11seBsczloo~>8PJEm$pd`$ELr7ZVfL&&j(?Q> zX@;Wb>L_ql(>JX-W&;RU^4o)mG|DSw?=&P%>4RvZN63lLBLC_XGJV3v%ORM za8XJv?zWsNnzU~)`?kjc!u&U#lfL-%{V%a~gpp#?xDER}AXkTWfFZ(wh#Bu{p}~)y zF~ahoflkyhVkWkQ6$&R=2NdG<8|MkK<|BFOj(yW@UaDA)YsTL{75%jSN##QX=tO` zoKYkaZA10yyCQoJZrFA?-|-O7^DE%Dyd&N1=8*fuMm1xJXHKX;A>$+tECO$|O3q27MrBcuIhH zFJhDE7n7)y?HMfBtz4+4{VwgT(kPoaP_C<)nwZPVn}@=0O7#ALT9mrS@dN5-DKpyc zWZ;icHUpO-2QwQS*o=AwI=VT-q7-m;3V zVV!tTzp)9VW=NqYJaV0}3x#hgqc&=2 zt$~uZiyf=3O(9R$z+&lpR5C;}`7s=Ny+9J-*M~o3W~m@$oPz7Nqd;H$J)xagFZ^Kp z;WC_7?7c%=dW=^QOM+`arE}OjyJA;2T))`Ez=e6$7Pf{@lhyl%SyY5HPRP0)ptV8P z$Zi7e(QXW02XJ;R3d{7YTX=W zB&wetuJt!U4EMTHhuS)O+eaeXhl|%Za#YV%OpjiFwU}91mnKrmsg(05CzWx8%Va14 z@xWe)dpZ)fA3xRa&j+}Lu&t4$m>SNj(Yo#oP~uOy;J$;n5hY&>$0o@GznM<1?1|-L zWR5F_g^S-l8Rh{<8#OUA4^7U0YsS&K!*y#!s|z9?ht;Dh2CmkJK>T=VpJ!tUdIq1S z?Pm=}cBhoX4sPx`#)D#}x}PiH=xdvFVFJ>8L~fw8?BpWl0l9;81)wi~HXb@?x+Y6- z9X_Fu!wY2$2TAV4OW*oCEu4)VQxH!dQd+AJR(|ANpkmmJuZ<rbVuf_kHVc zlDCxRvv(~3s?9Um3fE8N|2P1PNK=;ZYa)V~gg zInP1Vy@G-*m^W#|Kn3X8*;ykW-QQKjtkmtB&!J9f@SViB{n|S9-}bxVq94L1w7puS zW|3cyC+a!i(-XzfhSabioBatg`)poTC6&yGAo|8_f)O$C{|XW=9;yU_2#d)A)`aq!nO{aQbP82ras zK0epyM?&3u+b4IV?y(aakkfN3i^0|WyqrwU%AIX z)JwJUMdQ4Iljam6ar$|!Rw>gFqN9#&#&QP;Zzo1Wa3ZMcVYc3l;M%|~&uYI~_w7sI z_D?9zL=xqrZk&SOaUjG~VtDA`^ONsO94eM3o(8i+g(dlswj^?K8Y78^1nx)!^}x{P z_lt8Eg%_86_Vim>`YitpD7`bA)H)R{I}a&cnw!_GR|z}MXP)o5iVKT`3~Up)zF(`O zKYmjbr3wqo=u6 z#r{1O8HKfV-zWOuyz`CI=Ef*-iz?QI?zUAvdmf5K6FVEdp+_6Y;?Oki0YN0goU@8T3_kO80K|y50N>XR}xykLIkhV%yhD?P^qY^=MDI$ItGwSc;q(Ix4Ri z%JVu6q)C1OpJC8nu2fzRuhljRi`|9t`bbo5oU>Kw7y-wQnbav>qrHkEEI zyb6CB)rwF;)T&{Yc1-lwxDZS@*A3yvGEkCiQk`Y8)6^v*8IF97(!4KQd;qYkT^rj} zS5-GPDaa%YQdyAF%KJRBv9VptpT2DCHcQJ6`R>L6STbD34~KlYnF*_6&|2<;iYR&5 z;jOM61lL_Jv5={_qMYnYGVK(x8Ip1VdqL4dS;wtLMy`(5;m4!!Mh=)qk4@%slWE;H7DvK~qsKq8$ny(tPzW>Vk*EAgI;;#};kjIo93FU_w%RK0@?OYA$ z^z`6)LoHKDGo1_kQ)M}8c=!c+X17hxx;;Ha|HbNvduS;z+~q1571bPD6!-wf_4$wo zaCHq|qh z^!wlJu%gemS=PjJX&-?`P6G79Z5aMkPrq1Ri#u)*t&fLyAHGNkZ_0QU#1I9NhDR&X zgvU|r0^bYZzIy#27G}bR&&z*sR>j0^QRzeHlnk~!dxTfO**+D!Y(x=IE|jv5=4KPb z%(xV-oRF$tw3q(P{4>i_ycYGR?cUvB!zUJ-fbI$i`(*lA?Y1Ne0pT6)fBpi%R;fW7 zu*=oW^H+E9d!wx#N8Bz;o};|}M?>6V|qJ`qyhu!EHyWnHlf?a4syr~`&j%aZTN zve?)(D3U?eb2Df_bIi&{A#h0)RjD7fg@|iayB@B=#{3?1Gg(R;M+o$e8AIrK>&RcE zSV0hkQVG+9kjbqn_wP_n>3P4*VmWRPJ52diQjuEjaD5EBSo1ue)f7tXUD;MxQ?}V^ zMn-1sUaSK`erKUo@nTLE{F6kV@cne|x-C{`X5gdj0J3QYfOjU$R8h z^e$=jVrujODdrw(B`2|(cSrCow_15#0vGLKaeUM8g8b3bU5063a&p+oftDUoQg;m( zrSfj&axgf}i$6@EGwN3g&4!CJeY@J!x?~)clkp&$o@vjV=DmtPSw3XvH#cx&Hsskq zd`sR(Cp4AFUPu0P`zPoyw*jT&Z_>w!9bCHvQeO`8r0CmJK}A!-`U+BYYoRd|5G(4JKU>3X6! zsvuGjMdRqRsW1}5w5$1E05CAKMTv|@?ww`v+pG6yuG>ks2&FmvNZ@Ce`yd)rpplRM zQpw>ZpU*o2i`fsH8RP<^)N07c4f@mzd><`b7b{jF$}PI~l`oNg;eSkY&EkVwxql+B zeim=T;sSjD_EP#ftfK+}i_;Y$%Ro8{TEj?X-51542wKmpElJ zp@3;phnb^RmvPSZ6i$wQR66R){Y{C1$Jl9Pt`Mgxg_o37ySXQD-SopLG1qcvpgs0? zFlojxTkqHW0dF)crU+=69{mHZ2B^zWI#@V&_y;vY@qre=3^8_E3C8fJ7)evP(p^sd z-NTm6>ekpCdaj!Akle$|xYy!O6w_9e&MNM&p*G{%;dp-m$E%1W6U38<*q&o+Lg9l_ zGM&_gvxRD0&gonJZ^?jkrIm=z?r&F&%HN-tK>%v4c3Bo-AC>F=#Q^bgzbEgvtlk&r z{&~}dPid35o5=3R_~3b(C4eF|TBu!L^@Zk6R49KT!CN7cS(;&SH+mg8t6&jQcB+TmL=1(bp)=eOX!!?apO?-EBeQh)&=b!(DZE ziH=M9v`tyz;AA{hSya~)a+3r9wo$Xm(#K6#J&9;k>H3^#NjX0Y6;BRXvp4Gj|u;6TXRp)3h?3xo{MJyRf9$cLv-2RHSsu4vH zdi!280?!3q8cC4)Sx<^dA0%NK;1@BSFtsB>HQ$LXQrPX=qK=>)I9o@Df7kQM`hAWQ z8xL$^iYz0dxhWO8O;S#(FS+;40plvBG+#h3_Ru-M1VvYha0u_bCGPTy_y@mbLH}-1 zq!J42L%4KCA(dj0Df9jJkIKu<;gTVBQI)^UbsGW`R~R?=%N&3-4DYuk>Pw|%=3INE zBgI%6MVZvN95*`36&-9#lgebb9~>Da05%#gu$PTcOFI6g^pJc2|E z1%(LoL2uF83F1Dre~5*C{)u`H^8%ih1d&9Og9`xHAlgKJEq>-0P8r^~fegF{3c>5| zvJEB;8vy}HlXu6-$H((;VvZ|VY%kx?>z+NjnSDHM1q{*Hl2dJOB^Nm;4mVWhdS0{$ z({Gdi%QYGGeQVLS_m+MW(6&p}y!Hq16fXbKxU(PM7bzC5WKdW<(WY&9cLS0hV>9k@ z_({hU7`@O^L2xbH`y?;8<}~K#3F`bN(GB~m;k7z8vG3mk9g^@nOuPXRGC^4EfBcK5 z|JXa9+$bKZE&_S&y8k?+&7o-boL}fI>-eZ0Q{5$B1{dcw5ZXZW9T(`nIh{1O)V{7f z1)m00g4(dDkY$1ZGx~0hJMLe;wGiK8mo%{148b>4uko6|XSvpHFRtVb#6M!tryFF9 z)M)V?5FfA%cR!d8$ghRmW0EddYYf>xmy?E1)15$;fO`-G;nZf#9ZEU^xwUr>*cvOt z>JB#V-A0SLexJ|Ct{Dqp4P<3;jEoNN%X*kK%}Gh~ji8m!Q810{zxW0)pz5GiQZNFr z7AX+;3w#DvpinshTq3*Mt+)Rga{$jugh$oiTjczYBVWMX~Z!S~`OP^}eoj$rG zcCyl;e6Jw7iKS_}MLcJk`BFyug2Low%DpkBG|0(s*cG$*Kt$CkXwPRD@Rhkmg8oiY z?p^{~&kD-6qh2^OQ3&ku4#@{{zIPU!j~d#Ib056u*FeI+uqjzNQemBj8h$92FzLPR z?(OwXy^1Ul7h#hvZqYR!(s+x3agy6$drQsG-}`@pcix?!J>6BQ8A9FNe Date: Fri, 21 Jun 2019 14:25:29 +0000 Subject: [PATCH 73/79] Deploy to GitHub Pages: e45e2197335eaefc3d0bf1d870a65db89811e0e9 --- tools/ci_cd_with_gitlab-p.html | 17 ++++++++--------- tools/ci_cd_with_gitlab.html | 17 ++++++++--------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/tools/ci_cd_with_gitlab-p.html b/tools/ci_cd_with_gitlab-p.html index 4dc5b9e..603b656 100644 --- a/tools/ci_cd_with_gitlab-p.html +++ b/tools/ci_cd_with_gitlab-p.html @@ -182,13 +182,7 @@ - apt install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common redis-server - service redis-server start script: - - bash cli.sh remote & - - cd acc-front - - bash devrun.sh & - - cd ../ - - bash checkRunning.sh - - node_modules/cypress/bin/cypress run --spec cypress/integration/acc-front/login.spec.js - - node_modules/cypress/bin/cypress run --spec cypress/integration/acc-front/projectPage.spec.js + - sh test.sh ``` @@ -202,8 +196,13 @@ - apt-get install -y xvfb libgtk2.0-0 libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 - npm i --save-dev cypress script: - - echo 'Testing DeliverBack front-end' - - node_modules/cypress/bin/cypress run --spec cypress/integration/deliver_back/input_validation.spec.js + - bash cli.sh remote & + - cd acc-front + - bash devrun.sh & + - cd ../ + - bash checkRunning.sh + - node_modules/cypress/bin/cypress run --spec cypress/integration/acc-front/login.spec.js + - node_modules/cypress/bin/cypress run --spec cypress/integration/acc-front/projectPage.spec.js ``` diff --git a/tools/ci_cd_with_gitlab.html b/tools/ci_cd_with_gitlab.html index ef7c9f1..962d4a8 100644 --- a/tools/ci_cd_with_gitlab.html +++ b/tools/ci_cd_with_gitlab.html @@ -162,13 +162,7 @@

      First CI, test

      - apt install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common redis-server - service redis-server start script: - - bash cli.sh remote & - - cd acc-front - - bash devrun.sh & - - cd ../ - - bash checkRunning.sh - - node_modules/cypress/bin/cypress run --spec cypress/integration/acc-front/login.spec.js - - node_modules/cypress/bin/cypress run --spec cypress/integration/acc-front/projectPage.spec.js
      + - sh test.sh

      First CI, test

      test_front_end:
         stage: test
      @@ -178,8 +172,13 @@ 

      First CI, test

      - apt-get install -y xvfb libgtk2.0-0 libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 - npm i --save-dev cypress script: - - echo 'Testing DeliverBack front-end' - - node_modules/cypress/bin/cypress run --spec cypress/integration/deliver_back/input_validation.spec.js
      + - bash cli.sh remote & + - cd acc-front + - bash devrun.sh & + - cd ../ + - bash checkRunning.sh + - node_modules/cypress/bin/cypress run --spec cypress/integration/acc-front/login.spec.js + - node_modules/cypress/bin/cypress run --spec cypress/integration/acc-front/projectPage.spec.js

      First CI, deploy

      deploy:
         stage: deploy
      
      From 6148e7de641e36a7fd481fdbe4616098338f7057 Mon Sep 17 00:00:00 2001
      From: Travis CI 
      Date: Fri, 21 Jun 2019 15:26:59 +0000
      Subject: [PATCH 74/79] Deploy to GitHub Pages:
       86558104af830be33c1cac02322e0a196117c2f0
      
      ---
       tools/ci_cd_with_gitlab-p.html                |  28 ++++++++++++++++++
       tools/ci_cd_with_gitlab.html                  |  26 ++++++++++++++--
       .../acc_front_end_testing_with_cypress.mp4    | Bin 0 -> 1906884 bytes
       tools/media/first_ci_cd_outcome.png           | Bin 48004 -> 11783 bytes
       4 files changed, 52 insertions(+), 2 deletions(-)
       create mode 100644 tools/media/acc_front_end_testing_with_cypress.mp4
      
      diff --git a/tools/ci_cd_with_gitlab-p.html b/tools/ci_cd_with_gitlab-p.html
      index 603b656..8030b14 100644
      --- a/tools/ci_cd_with_gitlab-p.html
      +++ b/tools/ci_cd_with_gitlab-p.html
      @@ -80,6 +80,21 @@
       
       
       
      +# Challenges
      +* Automate front-end testing
      +* Automate CI/CD
      +* Automate mobile apps build and deployment
      +
      +
      +# Automate front-end testing
      +
      +
      +# Cypress example
      +
      +
      +
       # Enabling CI/CD on GitLab
       * Just create a .gitlab-ci.yml in your project's root directory
       	* Declare Stages
      @@ -108,6 +123,13 @@
       * Works as a pipeline among build stages
       * Can cache and pass data and modules among build stages
       * Suggested stages: build, test, deploy, and release
      +```
      +stages:
      +  - build
      +  - test
      +  - deploy
      +  - release
      +```
       
       
       # Multiple Evnironments
      @@ -118,6 +140,12 @@
       * To store directories among builds, usually dependencies that take longer to compile or download (npm, pip, Maven)
       * Uploads the cached data after the script phase but before after success or failure
       * Large files that are quick to install but slow to download do not benefit from caching
      +```
      +cache:
      +  untracked: true
      +  paths:
      +    - node_modules/
      +```
       
       
       # Caching data (2)
      diff --git a/tools/ci_cd_with_gitlab.html b/tools/ci_cd_with_gitlab.html
      index 962d4a8..3c3ab0c 100644
      --- a/tools/ci_cd_with_gitlab.html
      +++ b/tools/ci_cd_with_gitlab.html
      @@ -76,6 +76,20 @@ 

      Without CI/CD

    • Approximate time: 40 minutes

    +

    Challenges

    +
      +
    • Automate front-end testing
    • +
    • Automate CI/CD
    • +
    • Automate mobile apps build and deployment
    • +
    +

    Automate front-end testing

    +

    Cypress example

    + + + +

    Enabling CI/CD on GitLab

    • Just create a .gitlab-ci.yml in your project's root directory

      @@ -102,7 +116,11 @@

      Build stages

    • To group jobs and run them sequencially or in parallel (e.g., testing different environments)
    • Works as a pipeline among build stages
    • Can cache and pass data and modules among build stages
    • -
    • Suggested stages: build, test, deploy, and release
    • +
    • Suggested stages: build, test, deploy, and release
      ```
      stages:
    • +
    • build
    • +
    • test
    • +
    • deploy
    • +
    • release
      ```

    Multiple Evnironments

    @@ -110,7 +128,11 @@

    Caching data (1)

    • To store directories among builds, usually dependencies that take longer to compile or download (npm, pip, Maven)
    • Uploads the cached data after the script phase but before after success or failure
    • -
    • Large files that are quick to install but slow to download do not benefit from caching
    • +
    • Large files that are quick to install but slow to download do not benefit from caching

      +
      cache:
      +  untracked: true
      +  paths:
      +- node_modules/

    Caching data (2)


    diff --git a/tools/media/acc_front_end_testing_with_cypress.mp4 b/tools/media/acc_front_end_testing_with_cypress.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..3cd20a92b2517cf28f926b8706b773ce2304acbd GIT binary patch literal 1906884 zcmeFa2S60p{{H=)-K8yE$^s&+iejURiV6x=?AS}9bOfb?6dR}@YSh>j3u4z;us2k| zUQq1V0ec5D3W~Dtb5P8QH~Hs!Z*p^g?}g;!oO$NV=`-JDncatoHoY)B>pg(aJNe0(^raK9@n!fxdoKX|^4J{ZKcr5Z@p_ zmZ#g^;J^@nB=n<$D+}eDZQ=Xrn5l1sAIrmj*l~?f5kc}#>29%+QQkpFuaAt1teOy( zXAzq;Y}pTAW~HFSy6uJ}gZ=zNj!!c8uaQE5J+>6u3%;u6ib66Oj_s!FF78Shf)0_G z*gs-<$s}V>fs_KyiJZ3L44p8q$S`bK4Gg2msLFvxlI=@&vW12pTeP1|0Q*q|EUzi( zjHD}A404h86e>AFWUv{Tm|G#~{s@wNz9aXIdwoJZdT~&`?_4u*%@?W`raI>pw z*Vp%@D!qFB{=Mt>_vYnm{eOL){;K%>zdo-2R{y#C%O92Vt?T*g`TnEw|J~!?+P*)k z@9XyeU%B7@v+bfuiE*~#?gN^-~SKd$?uKNuXObD z>-|4#{(g1e_=a)+x;=li|4r)?{r$80_eb^q)yMy6Tz)nFT)%&H-Z#w4U)`U7t9-5> zU-$c0{pH5t->UDQz0Yy&`nT%)H?GsF_5SrZ{84+V&ii^itMorQzxw!J`#RuT=kxEL zkLq>vX+8Yi^YC}q|Ev4SpLl=#yZiN5*I#x0{HL$`Z>{g^{J)y-KP&#CoPT$`|E}@; zcia6}pa1pz{Xh4)>-Xz?Rpa|d?fupI;L7_w{g2A~caK-K`&ae<3G40a@~Z0jqxM$j zYk=pNd=Nj_55|c7efS@?&}!UAzR@hxryuqlltC?|HGt+X7_LED`|Ot|-q9*nkm4S_@J4K%{>HU5M;jVY?Ya?TD>Dj^$!|6?6dJ z*sqIi6QBn$h5{RFoL4!XEWaAkEr9`GeO?Z%0qcVahymt+jXz^PU}fUm%6+tvSefh? zI|ps794D4$!~^-~bUkc00T;mXvod}JtnI80mVYN;&+k>0HxFrJz>YEPGH3(v&>fp6 zQ%`Jz0UI}ri$NB~;vmv<0p>%}8rz3}m4W#a*<-s5u(~m~!X9ifPL=D=68o&blK~qu zjEOJ<+o7N;e?z2M*{nT4sE_SJfU+vv@CMuP&uO$*U=Kki1C}3c6x6XD23Y%9{cPQ_ z^4R&Tyf|$40@fdvzZbT#psM_vNcZ`4tWrxw`a8hNXL(qE`f>ZGkY@AEjxktUnte{A zeTKJ?z6Q`9p*f~>2YD;k3(gZgKpJEFrOgwN zX6usm!3@{OJZzf))W_vo*{5$mT`%Nz-EIK0y(fcQtmczCazgrYf%mIrcHnB9>=4(EGg4*1>UL z1Xvr{@j-xMFs5^?&H`>a2NMLtf9*BAA@~d zPm5T-N4RC|#(CvPUxkkAv@hBsia;6&m=8VF-}*h$S*X7~bhcJBIoNt**G-l7jr;53 zah<%y`E2g`gIGMmi#b(sK)MKP?E$urF+Ec;^aqe;^TFyuJG6taW%aQ(F{p`fAEy}4}ADDlE=`BC+v%KtDz`CniAG8Z;b`Cqn))QOnY(0K1k2WA}1lTc@R~Z*D zkCppO%LT0fJDS^-vu`RD!zeBNhcbQxeCE8~|g%n&qh+Pqd@*zJ)R>udUYDXXUZuY#YcOcSE`j_*@@tLE8HBKH5tu zz=7Lm;yJ|rGfDx)XDbQdYOaUXETfuo6|z9=`5^swuU^hkLyUB zjV;R;0+3H&bF~;a0*s#^!S))k1#C>80M-|lw!?9jHw&=#vhjZiqCiv71l$3e0qb9L zpik+_^4=r89n=SMEH5W)*8nyy?QlKd+7La(c}oH2UHJ<13V`c? ztpSN9w#k5%i!swcpNZvRYrzZG@ll+IdX?5;{~&M$Xq#3dwm)Jy&Ib=LPH1cBON@^O z>hr-dcbuDn?G1o?1?z7E+#f{ekY0c?F?P~aq)%eI4d)L>9kZ}s0MPEru{lYCGwUxO&O_amV`PZ!D{vg>gT^>M7+aKCdHrBaE9YqJ=i?^WuZ=Y7t6WcP-0}hX zS~&*V7{<#;hhqvc9{NhSy`U`7NQA6TIClWrYk+$V>JVBYAM4{X+4}x=!1Z99xp;Y!%*j0Y|%dv^0RAG z3-z$qsv7-K7OMwiQhCk0pbXZ2Hm2$MFMDm-`#a=^CY0b3x=1wk9mWCY)==0nsG z#|@Bw2J#NZ_95sD+)zLIB1^~8JP^M}Rv{4l=C$3<-3FUW3 z9?UU|rRv9l9_C0H``Tn4OymFvgXyS6F}B0oD(;ewP7UUzKUrPEUX~ zRK`giY!3n}p!Hc}*8&?$HpZ-Ow$AMVD^CNU&6Tl;r5PbW{yEL|CjfSS)$wqoWq_>- zR(}#;_cm4^+OInc+xEB}WBlk4z__sTBp%rM1I#HqUzzQv0oEt9SLBB68XyNaE;Pl~ z8?bd_LiCii{RVIcEY0RG_w&9Dwv3Cw3$XdY+|pst8#DnOfdX^@a?lTTh_PksxGrF0 z%F1VT%0W%=3QPs;I4kcKumh|-OPr5Q<#omSj z)*EX-YX=(>md6CJdai;bz~-Ng?J1D(In6Y7?ezS-&*p~hvpHqw0)bt(vwzuVuP51j zSKcczZ`!@ERQh5cbFWf?_97|N#y@dr^95|*0ahO7(Ew|a-PgzmJjb55+i~1@GBj5I zd2kl(*^4r!B8@pyVj3G8Pr%k6o4fhI4CrG22W)+THn7D$>r)gk{e*z^R5=c8o#33x z*WEuM&Bh($T=|-@H_~j3Ss9yw3t(#*d5oGP&rpQe;h596xFoPHrEhS{3PJU|k$#DM z+c2h6(03iAO8}d9jGdT`*CK#%m!YnaD)=?90Owr7_~ZOZPq7@0aEY!&9i>41^Lebz zM*zDPajsGtj+rCP*2iqrlY{yMXc%ku8b#S3>G4R<1nm*p9^h7jH7P-#Me7j8A0j`- zOp5YUFs_~L(J$1c@jcF!qw7n-t;i@JHedLW?7)XdG5@C|pccRwoa%+CN0|laM}aly z3{YOdXfPM71z7;sL&48@35LEFVlE0XhlTw?0GJ4HpDf%8PJ#R2BMEZ^5>hhp5~~YX z0A7-?#18ZYp&%I?1UEntUJ|L0khX(_70SRGOu?@T+ep|FNJ4rz30udIuwxYoJ4Ga% z904YQMF4qDo(A{9I}%RS0F6OgFa$(`=^zbcfXm%+cO<$x0;GfU;01~DP)1%3ctoOWIRDx-unSxQ&q#EAI>-Pw!D|xTSP9O6d!T|u zH>1E(unnM`TLZy3un3$Y(d`M~1bBd39X@V)Ck>#V`D(xdAYD)sv;_UYOA;080c+5m zM0e|hFo1U4JwPHw1F!;QkQlGi#Rm6DY_yrg#+^VWiOrNj8Hvqhpe>1Ok0WuN`oIMY zBC$nHFbOOH=SW7h14fXzQ3{D0JA%F-gv3o2li11`^ap_? zwniT7M zlBjk7L0~diOcJRj2nNYuBT2Nnfk|Kq*h3QIP>=$4f{P@nsRIUra4?f3bvpr1Fc!?i zuU3mdCddOnlce4Vuns`02d%yjm{R9l_Ux24EzDw9WDh|!F!TK7?C8hEkJuCZ-BQX8Px{lgL0BY>yaeJ zk0i0k7uy_kCrKRIA9of!C&_3DctVmf7^5*Ld(0Y=j749^&Hx#t6zES%BTDgddL6h7 z-jPyJF)0Q21*5?dQVLlQj(`GE3e^HPNhz!~7zz?dDLflIB&7%?U=B)1DN+U;KsQo~ zQUi^F8}I-hNNH3f&;fV>d^r0CkYmX&m9ZgcUXhq8Pv9%lmHj{F{>7?9$ z1b9x$F#)7Jx&|qa!FKFyQl7Mjl#|wx^5p)coa{`>(}$DtjCrIyvnH5KD)n!XN`qXy zMfn4%belseJ)%gZrzWYaI7ce0yMxoDveuAP_GOaFn`5L>I-6A0Z-6pV)zAfvfHN2f zBESzI73>9p?cD?&?me``y5GQq5=u4w34S%cOcnA7N9Q zRIj`z)vGT__2nc|Q|bmrf<&;C)C}}NOVAqxf^lFG*a}X9TcDKG47EXR&>9Q?As_*y zklKmsq;}Pt)bjS=*B#`$Hl5V+pOV^3C;a*uMp9XAa0t94sqtEpn$!Tpz%G*3JWNtk zH!un;B5AGtBsDVzt^j$=g5%?<8p*BhVTQ0udywi{o{NfU#gM zNi7Tkj#~@`qe)uN2J{6Zz%-K9HvoQMB3MpROXRUc8!T^u3X(RM0ycrO-~~w=jt6T1 z+TAdpq>WH#qYQ8j6p^%X5I{MN4}eP~ZE}O8R_y@FwVF-Re#c2V;5tdaN8g8Py6Q8Waka0Gt<$ISIk|hoB!J&_WNAG)w|40md|Z0zf+=l zBbR|fl152EQ-CoUh4~%T6<`jd(U0hUU?$i{(im)GE`awWjjac6k~9wE5jPS{CFy9C zIXV%n2WZbc%*%YVbpi4$C?M%Ul%0wGWSt`Esre*5dyJ&Hb^zmfsWW&=(#z=cWsLdN zh9H-ud71!YdCi@q*R27{yuOO0Hx`lfrV7BZo8w4&yDoS_(mOcs&QOx(cLAqJTA&J$ zr_ci2Ch1)nz?!+|N7DOd;5#slqz_J#^da&+M86+mjXd5?(kEE&PnH54tIz@20Q0MG zAa%{@q^>iT)N5GaSNRd7Zqkj^YxV+bN!_#ssmtBLZBnmY6AUAD>yD&uQy&Zl$4R~A zEK+ZEjMQCXN!`^IOaX^U-MtTZMC#tykBTF8+{@LUr;~co2~vO69H8D0eM$XeOK=oa zkVbtI(rEBAX*66w8jUWHMzb-b(YzOFxGIxImpIbsWk4G40_Xz9kw)*{q&YKzG-uh7 z=4?IS3Vca(t`^t;?g0g9&ihE3^K-!y(p(@X&4o#%xu_i&3g(mMVso$pWP?Yfxl|ua z06&3Sq`B+_X{K6(AdpO&nO@)yX%^d)mZUvtxxXi^zTu?hbA+_~%tbevU5C&Q3*4knP!#lfU=`6cP(*^ssZ|tF7DU5TAe{SI6=CR5u_U%OuBLE zq&o(AlG8|c%3;!-T90(6JtEyXJ4tsg%3gGmbW>bO_bJXV8b!J#K~$qhSE_Nk7uC4& zh-y5qAU%~vq-WTd^o&wT53e`%Oa_sj*+J4X-vB<49@ds#U1%1gzEl;J{WxRN zk8e!+2?7`Z5=npJ2GXDOJ(vu3kp6R*bA_L<%Jg%?^D9FHUBpI~KA%jkh$e^=37)u6jE6Bjx9NZ@ZpJcF>419kCw?R1> z_|*i5Kp7eM8v!ej0*-?_;Ab)zeh|DRg8&^+2cV8XRe*8>+W_PpApxeq0UQPQ0LmY! z2WEgB;0%Bs6b8_aAk-Ull?;M=0BFH;z-BTCaRg|4$O4c-1_`}E8X08jf-7W@h5ls? zAcLdXWN-}aJ>~%>lEIlrWRNo#pst+fWRTkmJR^hiGJy1jNKi-y7e$~B{siVqh6gRd zB(M~mCc{H(Ksgy^HV5HknAHpH1~|yWb!2$l z4Dp>A2o)v?Z;29a7vjTkp z+L`MP;=wjhK!)e%gBxUcK^b%f*U9iA>bTerOd-Q7Xy+B=yQ&AiBg3a?|BDS|_%e+Q zizbk)Ml#9tALA{IGbA%rA(?qO$?Cd;8zi%+4?2^qz62};hrm6OS!R%|L2ZCz4FXBl zup_t%ekNHX18|>Yjl;lfuz_SvW`IW|vr+|hNM@}JR)V9TfMm8!!FlkUWOiC$I=Bfc zNM?_ET*s2E#}$(GTu!n9C~wd%k`2B^vLRk1^J+sf@Alw2$$XlTEcPJDMkj-}BpdUR zWQkcMOKOQfd2T1!v}Gjw0eODdLb8+~0T|-NSf2c}lXPc#uu9H^}!E>9-F^ zR*Jrtp%3q(!D6t7WaT}|fs+|AC7n1queEveR5np{F z*${k#oY&`qe(AP|*c+ULrm~;rev!VBEFn%vNT`Q5lqJ~8T=4!Nx{G%JN!3aTic$@o z0S`zSDFH*Ri?2Sb`bsfTQ)H@JIXsmEBw;lHu>xE1pQNKs4F9jnuiCGy=U+Jfr?&4~ z`-#^oRqg*v#_RXm^Dm53RXcxgoc|-^_;-!h|J8B)ZyT@w_Hk_gjo0IU`a1g7_Wh^F z`_F3MU)65>>8t8KR{4T}#U~HMliI)Nf60CLKfO+VZ~Xo&{qMT3{9hf%ziYgHZ@&NA z$ML^yy#CwAvHdsRzy8zn|E=x&PmlMX)xN)~-R-_{et)kW->U!7I{CZW^?UuOZqNVw z_wC;ppQ_hGf9vmc|3bU|qwQ}0JJ+A+AN44Kmwu1_gZ7zw{_@dC5gre#dhJ`e zMIZ2X&nHcZJEqL(YMd_RbPZ0|?!R7g40KGI(tjCs(kj?W7WC}=ky3pAI0g>oF2>R zahyJu)5mdo0;f;l^huna$mz+PK84eN;PmO7K9kdbWdr>AlH3Qk|m>1#NB9jCA7^o^XpiPO_LeJiJL=ky(%zMIqcaQZ$@-_Pj>IsFi) zXLI^tPCv@&$2k2Yr=Q~VGn}5o>A9SKp3^UJ`ejbP%ISHWeuLBT2=15le4EqnaC#x9 z-{tfNoc@s0A9MN>PJhnnFF3u3(~CL%HK+f~>7|@r#_8`ly`0l4I9>6JUip_B;nOkp z_lBx*5V$xcD04a&rvxre2^ycuU~66A;*_An>0F!=^f}#tE1!!~f)S^4aZ2Fglwih{ z!^J6~4ySW*N~q82mR$K76;9i&H{3PUqs3z{M$ni&Fv@rz$@dP_<6_bL9-;>K)AKT%2Mb z2l%qCxHu(va=H)FRpoPWO7Q3O;aq+$PO*CoE1!!~LM*4p zapiDvN*KrK30(dOoIZ)uxi}>xb2=BNDnFi4H4f9ca=17p{K)BCoD#S=CCul_=i-!* z!s#qdi9hWNOR#0vKk62iecD#0Q#pMFr?2F6E@lZ_%o13fs_M%IF8?M@-^}UhoW7OQ zS)8gWXD6p~F{|?9a8>PRajGhR2ABU3r)P3{Hm4uvbQY(o$~n&IT+9+qae5Ay|177U z=kyDl&c!U@GN-dRRaNgbPUm8laFf&TaQX8&{Vu29<8&@&2@g5_377vVr$6WP7o1+q z=_Q>0GpE1dbS`EIWt?8l<^RCx6`Zd4MHhXZXEsJ6wtheFSAHeI=W$~n1OK9{{Zfud z%ITV%uEps(oUY61`kZdS=|-Gx%;_~b-IUYKIbF`_bvfOF)9Z7(C8syy^v0ZS#p%|Z zZpZ2NoZgJnn{&D&r?=#ECr)?f^tPPt!s+cfy#uFr=5#ks@5AHd}w%;`fo{d-R5VwT90)4jO-KAi5$>BBiafYVu=s#>2xoF2mIT+9-&I8~KD zlFL7e)1x^(j?+hTI*U_P<&5X_1Wup8>4}`4#OcYLK84eN;PmO7&f-*6y|Xx-i&-Kr zW{DPX`4@8eQ#gGwr*m;il*;KVxcn+xc-{tb(<8&@g;nBQb?&n;bVqf|2Iv1zJT$~bX za{0M9CD!3|U9KE1PKgaTor_aqV@~Jdl$eWCVsoy1IhVgKr(1A37pKIQoX*85F&C%A zR$Mt;oD$n{Iv1zJ%{aX|S3Vb~#4S0Ui&J7QPKn!c<+yP9+jDvcPVda=Zk*1=DKQtP z#9W*bb8$-Cn=6NlQ{w)dK7cEKFsBdUbS_Sbxi}^E0F!=b8$+{#VIitr^KVU@}s$O;y8UYr*m;i%*82j0+)XRmp_ryxi}?G=JY9CelAXl zr*k?Nr^K^3or_aqE>4LTaOHDxN}R&!i@9>RI3?!dlz0V~pNmuC)tt`7De-zv=i-!j z6Q^%R`tyB9%*843R!-;Ql$eWC;@w<1T$~c`=X5SkiMco>&g9C^=JFrrbS_Sbxi}?0 z$>rzblsJde&vNCQ=kyDl&c!J)7pKHroDy?!N_>MWhl^9;*`Xg)44b$;o_9UoGV|> z<*&=>7M#w-DTyVgb8$+-#VLsuR}L4aBzBz6#VJWMPH)bY&&4T8OHSwFl!S{@lD1qq zE?oZhoZf-cJ9D}lr*m;i!o?{G7pEj#oRakB%HiUaq(7$*;L0D&=|ec3i&GLVPDwnu z{9assA5Qn>^x>Qy!0B9^k_2%&7pEj#oRV;HO2Wk{$tbS;Xs(<%P9M$bT%3}O=kx?F z{{&7?8z3YVXYQc+lR}L4aBwIP1#VN_BbL5G?{z_q0cKyo$yGK=1JqFcl z;D2uoRA2x9dvjiWombC!)f%Y2{;StQ)mo_D{_m}Y>g)f1Z_cZ)^XfUTS_9SBfAw0Z zS_{?N|Gl+Pef|IM&3W~8UOnekYoPl2uU-pPYoU7kzqb~uumAtOIj_FXtLMCG4g80% z|F11yPU6|EQ+S@~6rLM8g=cc|@tjrxo{cJ~16l(-7gK;|Q3~*!M?o6c339<>*tpvj0B?Y2PYP#)pTI$YXVnTzNSIv?yBFBEEOrL7z+Kq7)B~LXEL@hrzGVrl zT9%vxPXO|#t%J=Ao<3et2aJW?%Ni24_`vSP4|XrGh}p3WyoIgHFc1Ug0OUD&2wVfN zVdVn5m{aDUCFlu;g9NY`qyyO2ohk%xVD+K{8p7`78f;$7K_u8hqN%V$S(pv07i?2* z!0rWk&V<751(ql0g1}_hy?DXur9GGd%3<*Wi);)%UgiPx^UgK!REyd zbOEqMu|^*2o8S%XUi4u1G9ETBsM`+b*r84K13@;p4T@m#f@2O_!AStEIm&E-`dXlU zE&9Rk1^sG?cDF>kT6)0Z1?^}BYnE29ZfSKMRxhIg>TCTLRxeuM0&HFy1LSi?TiRHG ziC{6<4vQC9-n2~siva2!fbGDs0NX*ANgR!Sjk6{3giwI??2*FmWhm@ket^{rvwX>d z-ODxDyyycv&;u4Pj=&R)2J>L?QWJQAF#y&kTChsdiUIQhELn_U&teR#6XPx5I7#r; zzLJ`~0W4E$PK3ovD=-9vfhn+fnGW`WGvF~SUVH(pW9q@qr5?2ULji15U>hN+e+(8c zgFqr!2Qp#z@(^|}H(~bz&1*aCUeKn%cd&V>1KdC$>|PeY=EW7D-Vn4qtO8aq=fO+Z zy=cJVr6pJh&Vi?}c|o5?T>?e0d(nj5%V5~NAYW`F0J|D|{klzbSqcsUSgeGKz!liM z*nr*uHY?#7;0AzIOoTCb0Gk(e&;WD+Mtwvy8O z!?1h7@ed7Q_YwxX7ZupOSi|l`fYnP+04tY%39xz@1`1&J;tjhOWl|pVJ?vh7fZfYR z*u5-)-AfnPy|jSc%Xg$aV+yQZv_S&wUe3erh zuzS&g-OCQxz3d~E(j-{Dz=lPg*|;bHGtdHb1O6Z$ECQRr2~YrD!_q|)Gytxk9|!?c z!Ah_Tb}ufldT9sF!s^8uY=_;;IoQ3Z!tO;3yO*C~_i`6@FEOxqX$$;7ESN=V2CASA z=m>@akUVLHmVgU96*mf8%hRurx=mR#u?qxS@USREE8VIJt?qv&XUSL&X)(jwzc^rVn zhxr58y(q!r#R|Yur8e@`M&3FotBwum4xrbCO-bFJ0Ja--XTah`3UJ(FAP9lQ3oJhB z!6pRPuC(5GSiGnK4-gIJ!r}#aEMX&Kc^8mtAd?PyR4ix*g@G)w_#cf(7t zctM?w(m@V*0*e<l}_`T=$?`(gJ2{d=4K9I057dffl+Al)>r+HY;J>Ng56- zlW?>n!UQ;zG;%h8WlLlQtX?qIQ5cg^H9;GIImERqjdla!U^8r9rU29%^Ac7s#^4HU zUN9bU81uMEBpr=1M`KJ!!y;ug+B0t$>|W5;1!&WP%dmUF+Q~$JvW~#+Wh(4m_QC3< z9*Ba~OKWfkRxjxDWsLdNS^)X-(Dyv_`&tLsyfgqP^ZG*Ay-bJAivV!!Cfau!HZHgC z!RiI)-RTXhm-gTw_(0ME-Agp=UW{P(0y`Izwy=8X0v5yWr7^5tI)FS_y=Vhi zxLD)3jS1)h_QURF8th*7k-AF|sk=4<6Txm+y>tSFuzP`(OjI!JUSRd|d;{!WVEgi_ z5tt0Sm(H+xu>yNR8SGxPVE6JEb}!Rl_i_eyFQKq|X%D*>I3jilhTV%Acmt~!Xzt;# zd+7+fm(ip-s~&7#R6sK@3>GgUungpZcd&aYA|Xp}_p%3eFUGKY zae&=R3hZ9)!0rXMFL7?9mGcBvFPp(l*uB`n?nMW7FTG*+vH*53%VGC23U)7hVD|!x zmouKQdx;|L3nO6nq651Zd)U3;JKi&3=W;L#b}v0(_wpEaFBY(S=>of#nXr3VMmn!6 zVE3{db}yIlO21d&dWW(;o zA9gQZKmofKW!SyUgWbz+*u5CT?xhfRFR*u+i?SEN0w$#y={{WwyO%)HE%ArlOB>j| zw1?eGA?#jW!S2Njb}yY__p%6fFFRoO(j9g$+hFyw3KYZc1vV~q`@rfY5F7X_kI=ZUSPkXrVP6m0d_ADuzQJx z)eEdo45pERaWJf2rh|8|dx7mq%PiQvn8E6$D}aTH+k9BPz~00g)-66`z+%|EOa&J} z5o}(x!CnA+6n_n131)!(;39YltCwxyDQsR~=@I}-mjKie@Bub2#=ssRZ(tehT?|13 zfbvGbPG$tkhYhO1$O!;8E+aER9xPsb0qk3Xwu95Kc?gdsZImuuhD1g-qtY>obVfCU8tYP(n zvAO`em)cKQhc}54M6_SiQi4CHn$wUaWy9 zfaS`O1F(64)yh$OFb8%oD`4{i8<*p-k~uyGRxhwvIdKZ0%#*0|lsY(8vWU`cbX6F@t2JAgO032&Dlw=Ltg3|!DF^$v!>`EHLLZxvM zSVgiX6TnUIfn-*u;62H#7XVnDSl@unizPS;9>U^91QI|lK)v<`uzP`ZOb_h$oC~`b zSf~tw<;&o!uzTqbyBB*{y|e(ZOz~+5yO(XSdO>}oVY@QsF6>@*k}L^!GE>*W?gf4L z!3Mx;CS^YCUOZv<5(2xIL9ly4fA%4riM+5~lVzb_S&6WFLEnzl1w+6>*uA`h%?rvo zwgX^{@?ptRIFe*{VSRHCiuzNwiw@AOu2k3j*DcHP>0Q0~`*u1m@7}N3- zuzL~1=EW9l1s4IvNP#*P=&K?Rb}s_#USRuz?;J1^?E^Pp@d8aU2t*uB8UMZG8NUha~yNf|6(-oWZ53A}{e z%Wzn|sDlx(dx5rU5$s+PVfO-?mfCr+dpQfcmlD{$q`>ZFDePW$!0x3E>|Vyg>ZKdl z4Z9a@*u7-H?&TruUSeSPq6NDbq~E=U)yq(j1G|?tuzP{ci{yK70Cq2%VfV5Fb}xmn zdzlBjm&veuv4q{rblAPrhTV$?>|VlP_i_z(FA}O{#6Fi}5;;7~7jH^YL}<{L&r&Ja zrvyzSy@!WkTXh7PDnEV0GJB8mjq<{FNU&e!mSw9Q;2Xp~X;t|H1D6P|urOBQmmjOZ zpvWlf)!Psi%08Y|%h#*&WL6+`_lov!=4fqiYi(zX_r^%oKf(|8G=8eV$VDXDqO7D) z{B*11lY^TC1kpIiiJhI?-zzf8BP?=cU>M8ssete>k5GUANWUm#j|zyu36akB_VS?6(2-sN z*z>3oo5>@C0)5byD#2DB5>Z))PhhZD6l+IdNR(ehkQXvR_YN8r;T7lM6B-=m#R~Vq z5W!0*Fa$*)V}uvW;~(J_>=)_WRPOB&7Ke18FGj-K!^_tzjP=6X!#mK6^$SbKud-h; zeu2XSqP!u6hWUkf3=a)M@{`C?BmLq~wzGY+s-y=Tey}T#^zjSv^BEQ8>|o298R5l- zG{P@304GKGczo%uvmM)a_KEP92YX{&S+}s`Z0BfgD-UO#akjN?j${}sxN_?i>x=~! z9u^tp7v}6B4-CU3VL@OHQI}V^vt27To0I^f@Zo+_5~+E*qHJ^nQX3i9@=yI~^=!-j z>i?@ppn3$VN1%EHsz;!D1gb}%dIbK)5hzs%#p{O@$7gA6>Cni=vvuIEjPDf(8m_*7 z&f}@|qwbAw$hDn}e+Zn=WU1HMO-1FeI&BM6eS7oh{QU9{B^TN%9wsRgKQxk4&T5}_ zvVqAfx-^MBr$XIsx9By_bMV=AZ}NtY`WOB`(T-?wkDYUZS1S|=>M6&Xhjmhv#NS#P znuNE#<7^gf>vh{_%X;kynf8SDTZeUfl$g9*MYp_3lIA;C-~BFwRW9~u{IN&3qI1Xc zg^-5L*4=SfQ|p{j{27(Lm#59n-4mKO+kNnqc~OT8I=#7lDYL>?e6Qy)ui@HJ8~XQ+ zj}KRfsHWPM>os2IIu26a>7!M&A)!f&L%s%M)>K&cv>7yjqV8?bDSY!%+sKL)r7-knWDkI2moU8Q#(Zcu#4e0^LuW>WU`Cl|an=ItJrKlHh$Qu~qjr`)Zd zSLV3a*=vw+Y3Azo$$5KSr-o-X2t72dr16W{{%ss@%yO~qy(Ip^*eL^>wK{S9hGK|W zM`_l$aRu=)t)0^n>EOOgCqBL-%LTWZj8kMKS)H$VW*(oOp8ry-U}KWc=!_O02OC~k zR`1Z^V+udne7AxIxt%IX=4mV(((>Jr?@s%_Th<~vG&=v$x@^H^b>6sfibHOjyM(N? z+S65W|7EDOKvc8Qow>>b#T)Am{%KzFgjXdyWQ8RO6;q#NHjP*{-QxJXv3F}uZxbFr z=}L(0hSt=-ZqKGpej2XYX8Us$A12oNIClKI+xwR%1(+@KJk&kXZT`FT;s{c~sF`0p zaeszZ`QfhLKPt3ZQFeIc3D3mj+?;X>Xz-@y`Wr!Z8tfc?U{S6 z^SpMR>iXry){lkGQ;wW%Qfk&DEw-P>)4K&bl04UrN-><&HfHUsbaDRAMt&^@4(bNX*e%dBXZz0>lffkBRTYJKO+4clL~Ze1}$`JQ)nIH?)f$6p?1qwW3v zMgQ-Y4l@?Uyg5`_`l!U|m@{=BeD&U&+C~+Ric<$(`)S~YvWGtU+R9I_9$tNG_}=uL zhvrSoZ+TB8>h_}qADweGhb?l6njUdtfBg2E)ApBqRLsxb=qh$HE4(qr!S%+$Iz!Y;nVq^Z!(4I8)HJh$tf&dzlzX1~{La}r zu1hA#FIX$5Z~7SQ+4ug%wB4;tLY!asSgRU4??h<-hGU*6irOC?zt%W;ftQ(jlk+CN z9geJ0OqygLb!~IH;)AxH%c=X;v8yg8=NSwsXgk8<=8gfbIJRTbMCPA$ybWQ zZZApeGjxP7-{aYj@dsSGnXFgodiKhlGLdKL)DiKm;?mC_+PVB~@Br(fk-9b~N|$VP z9pcl;C9d{?H`XfC4-I+MKE6PF_vWIVF{O`${WBWHv?!_{bbEP+vmxRcraNAxotUz@ z`_}buhPAT_+cD{qv%O2~tkkCq)kDNW^p+d16ZDPZtolAnEiW}!ysartpLJ)*mglA_ z{SJQD+hei2t98oi!)v?OS)IF0N1T+}VUqTNXkW*8iEGau6Dkg;mi=UdX?drQF?`QgF^g4Us z#LMW*B^s}+-rcRg;{AsQ6`nCy^79kZ9&HG+9{9Gw&r|mKmdDI;IxtS3Jom3sNg8>i zO+^peHY~H*xHfvBdrMjy-n7zP)#BN+9yh`jKka?+W7%!r^BP5p znepdTiq8Esagn6)grdp)QqP8e z{P|gb9rKrE86dQXZ< zZ7*H*dsgew<;k^nx@|Un`?%-x^8?+zmyU|>KfZ0zjPEu*&99Ihiq&?o=+k_7dLM1$ z1JjyrOE59HToFIE^xUMonJ%@T-Ey9FufO=@Mw7>96(x^OyN}drXy1}zZC7PGth-T> zfA++3wTM~vxTL%nRxGoNGa2Xey<4!u0N?fR&_AwGv+u|uJd4=WCvgLYr$M%|9(&jHu zzJB+iBEIeN+(*@k>OrVp3Ds9Y^;J-P6;xjZ)mK6FRZx8uR9^+vS3&hvP<<8rOIN{i zh5O+ZA)5P1bN9&FmIk-9HaG3Qc29}h#&g{jy<=K=4Qp`T<>HhjM)ca^e$(y!Jo1+- z_Zc77=}xHH=DrngULSt9ysX#Z6`sP9`_r4-g_cba`6nlV`MuYR(V&7VIn zhr<%6{@h@TC4p@f1wy2Q)qv7OT}AB42`=P<4@U^JTwE+{Hg-!=TXsYUqsCp^OmCw( z!nbYTK4r@?uWc3brVZ|sS5(@rU(303Zg!ls>G}}EB@K%XmE{Z~RjN2<7ny}}dN!b% zQ&p18wtJF}Fz8zEO=avo02RCk;9`EbHrW*nI1{y3%X1cKtly%Uqo;8{_rr&}&90?s z_}#xeDD+N7X8GdMm(O}OUqp{;+2l= zc6*k*ZhKkdRf7SdQ{xY4mtHRqu#l^-eH`JoOEHeLUo{!;cCEC`$t^Q*d|YNm#hyLW zSx4jXMubp-=PCOo2Q8>?lQ3~gOB$Crb-Ht6?(4;4b@WO8K4wet^NG71N=J-%p_o4F zOBaq3C7A1!e7Dz*n#FXe9cI|pcp8bQ0-vi9mwA%jF&$hengr@r~6;*KPOX>aj!|9%7?b? zgfj=zhHaII&M$QG{QgAgyT^U|FMY%{ertm9u?x=@^q;Al*qtQzV@WT5R`K|ztYaTo zYm2+5(H+g2X)fg6^{@r0ZEe@{aboKUDHUr2Q&pujByQlKcMp}#dzQy56z50w&@^r| zxV_?OFX^B2PD#q!RgvL$h_P(B`WLPqv^Nt!PO=L z&0L&jRF92KX%_A6@1&CzDzfM~1tX?@eNJpnG3hA1$(Tx_K;ih$PbTSLcd%urx~g?t zXt67lvYf4CQ$u{}`&p!(U>jEw66R`1N_So28qZA-ma5AhOmVa^o=d_l>FIgvb(K($ z&HVxzeu@$rgq4&!k%UT$?zPB5VdvjFZKbCEW36_2CQcN7RPDLQ>RuX^t*{fBx~|VI zS&~LJc}`*Pnvmw*8se12WTK|oLSxfi7cBA>;XBkn_yCw=*0nUUG=;5O-?w>XZhQbsX587$$9tniwX|0+OvQeiZvKU7D6XV# zV%FMi)buz$ikmtpP;c6vB(`ER@Zrr4*%p>lHT(h#NUq|#=akRzl12E;%7g@qG{=sP z`#ROlBDwft54}#sWIUn3w&8RqF9R2PqGxJ)ajZYCQBkP{iRDx`yR69~bp7g?5mGt% z*Y9v-N@23|_@?-n=H7;NG(Bvw9Z8|FP= zWrH7_;`(IKhtW?SpxdTn9&FM-Bk9+-;$y;6s|RDv=k_p~*~Yxn_@$!_lR~^HzM@9L zpyoHzUl-~3uC?x7E&HMAxv!73{8Qe}dzhPiSUmphn%9~mT2E7`scOyK{m?w#y=P4B zz|DKo75PiM_LwsFs#1e7D`eA8BnWRNsE$(Ctm95C!Xr}qIi2#Xx}F~@iGt0|Y82x# zO8=0&Df>*L6~;XdG|haMc~$*h3px1>oYFpF)<`E(FWkDw?nh5{UB1e~&8(uS6YhVS zbse>f2y1apeaEz_GIN^smYw*R)nLG`L5mMvIP|j9wYNUkv&!3FYSBcp{7UPGg&SsM zdn>11UHh*5(V=+Tl(QO_lgk!4H%bnl>3A@0PyU{pYqFlv-kw=zAM(mm$}3L2jGz93 zggI+^XWMOeCwr32bXj1A+m)z{)%jZOmMC4*W7;I;pEiXmK1|!~;k0m;#<}g=K2COi zlB~!zGMlMYQ8?c+WlP(QDJ_?E7+u!&K@K&`*ndy)sK0jePFIIq@YwXdFx=C5$+pZ^ zp7XEQD*Dii9EMmtDSGYp)98o8widNXm@~)l)g8CFr5`us4PGIO-IcZE^}ER%SvOxT zJUjMM<_DQ&tyXm2E%`}mYwF~Vx($Zn$>-Yt`1bZ1m;S$fVBK%M?@d~+i#IvA z1e2EP1LYRswtOY0I~w3={@;8L{mE~Zg?HVb@dxlmywr7Zab@xU@J_tC>vFB%tzfwo zU(T0CsR_$%_yd&{EOGeV3i|wh1>t--dtxJ%UVM#C*y-~aSes;x+zG|RMJ-L>qMkDelVQk?|xTXRL?#K{E(_2o~N zXT~dzoKWd@zqdtQOZH>2Jt87vjJD#MrwT24)LmioF48(adGZ2{&i7~JE9|pX2Q}$K zehnAB+I>L0ww3OcfeB@nHI~n>xT{EV3pZYu;3!I2pS!`wBVSSMs#i~TsJ!U+{?EU= zYhvN|y^nPIPOI*!=5EnFKmY7~Jcx8ny3eq8xNe>$WXboek<|IgB)H$K(dHlO=u9gR zIVU!>oB6VIW?{|eq9t`53*HZVyCXMVQC1M^7X-@usb?q6>0LO{j+2Tgy+;n zrP-O+I^7ZyERDA)=OH(h?j&hPe)7hz$pTg8gVTYC}?R~!({diSv8d8y~c zgX`QUYxvyUZ+CRu6|bgykNcc`)S|qoTt|=_JkNE!YFpZ!CYYzbZogq*>yJg{+KMBE zWm=?O+WqOc%0H2AJ%Xtc{g~;#rC2roNMX=0H~*?2Z}h{Qf=0vKCw0F*Q?lar7{wDKcbza%0)_VzmRdiP9=M@OIvZa<@2j(W`o8ky zG=*C6psbPx8i)G_%bX8pk$s=7Lv=2y?R%f}Y|EPT_>wZYnx{4m6?@*0PD*K0URog} zv`d_nyrHn(QoC)U;WK&~C=xt%Tn0Q(oG@lwY5us<0>v4fqz*mw+*Bq7b+g#!nRdyc z%}mSqrR^!HN3DHL%xjDt8>(=X@2sK5aVeLwaf0tDkgeAKB;YK<|BT)aLjq9w(%b<0@IQ#!isI0?4B87P?1{pq0O0b=^v}g z`&26b@2Z80#A%}7SaZb|vq+QL^KQ2O;9BRke`)-Qb3cAq^09PPWZiM4cV;{;Qk1z3 z4j@$}zYYrqH&v(&x_0|mr|8?I`QyKygJKC@Ug$fKs!_qzq}_Q|ZR3lx>YTG&o@6Yz zbWd7)Wb>|0e#vJP1#VW7iF`|bCtaxc=$W{*tL<3Z*&PPe?I?CqoBkr=#*e@G6wA@t zin7=ShTe&0r1?C=;P)@{PF^Ue|f%%d|O z9Nm4^-mqWYWbnogD}VcWxS7)qRzzF+JZ=6DwarXwTSfx{?qBk~YQBEh*M}9^s(t
    (+g)q_EI-)xoKgmrZTA>#HZ#PPE5MLh`hIlt1oKYFuf4+#@`VrmftfW!9VL zd-dyl95wEg>QujLGs$f7I(5?7!C}Rjzc~I3-ED z?0NRAeFL{jJS|dGJ|?IurSvxq8Sy?xDW%p4hk~r3`4i~MEkPsiu}MF}n{Kk0aO0w| zvX_JOGWLp=6cyV&7@s5QyKPPYzJ4X~Q4Qmq!!awgwQr4YSk^}5tXuZXvaX_H#gu}^ zZGX->ldJ4P1|$fiy&_0NiEqOX$^7)k9ooC8cKCr0W~p6Iek_Qk4spxhXVrD8RU@y< ze675!K~1hNTk8M1q-fn?;iGn;qbaH5HQ+pZFiqL zvNlN@i^nY~b;Xe1nzqd1Mee5>tMuG=aqzYV1HPJ?gZDd^g{9RYCu$nhcE*%2MK(&m21nHNng{ljVtb#~m^n^8I|PO^7Pk24=1`>RRL|NMBN*%O+u zce?kk6(3&+wd<_P_$YL0oQtn0>EP>2R}8ufLW|nA>JzfNENnV6O}HCx?RvM9Z$Q93 z#d)XMm|Golhk@R0)|Fk5i;o`NV4%}h5r0{v+hxIs=(4h)D&w^7G0Q4O&c{* ziMKVJt~S)D`I6H&DPY2@n63@?=j}bUB>Py5d6=b zd;CClAi3?cwSsn`O)*7Ty7tNsORw?$Pnq6}18n1y6VD`wHJ`_b`X&bZK0WFA(N**7 z=W0T|+DXWvUu)^lJL334? zo&~GAG+N>98Y4cMu(Z8Py))l=8f#yhPFczWq8^7TxAW|@XQ@N-z)X+w$tu!?;x5U~ zS$@k_gv;g?i4Wf`bxwb@rU6)cc%gQBrlNn+cxrOZC@a2kWDBkNDc7Vy zWd$0!&ucVy^_joAUY8E94sK6SXq9cZ`G8Ndi{s03-wc%Pb?u#7SZCEr$GWZuq8?Am zF`k-ryv2`7Qvw!zjDNbnu+Lq=uj8P$xk3STF!JhicbMgP&keS@x8xVh2b3387!?j9 zcf*e3b2fUqZl};t#~N0xmOPIoRXy^g;yQ~&Su{m{_(4y{^5U@xq9aOua_;pTUb_7K zO@)eFr_V#>Cglx_<=1pFYo5E+?X~jOSV3pjp#c?IvtCN)>h0LmWmoZ=0=tC@Pnx{a zdFjJlIbjQ16?xkl3mKhOZl98`O#(UK%1u-6o>|g!YdW>utM<_3|6}jlrP3aCcMECIMjypzqqEAysY^!7hDHS^F<%;V;NU&hm@y*1LzaJ`Mw z`?$1U@uB|(^QH0wy^IatRJeZmt?!EF`zisN4N86`j zNEd91LDr-2b>f5G{zGu@>CcBGde{!@l98*sD)xUM)JrahM%0g}Gx`SDKRtdmr(7mPb)H-wP$?n`c@#CZXt?{li4vr)$M~q%e5YOTT zC2#z4)_c?bKB2<+rFSDa3#-JoK@se+p0i&+5Ky~CXO`}n+&Az|Az97L*HCvx*)wcl zLKsBuH*D<~ScB{D&%M>~%l@n#67>@Rjyl*Qw?WFtqPqURil2=r{VBlV71V_hl~Z}c zyg7QZg>PT*<7T8%sY#Qc8}tSED8u6;-{U;zk!DQ9Yn5*jM6cQ{OIdnZZL)&9TS@k4 z?#?UxPcDAUyd_CrDm6N|ZGvI_mQwLdQjNooTdPKsgRzHI8)hVw4H)jeJTib=;hFPr zS1t z-rjpWcVDM`)%?=Vx}KeD-9A%ZoV(;Hl}>zO)>rpF7%4>1mfqyP)C+@xQdB&TUVLW1 z*iXBm>Q2LshgcGEj^F%JvlN_`czsmPY*H_V4tXxQ=dQJp9BlBo**m6hs|(&|0QHz0hgy5gj`?NLy;m1%pk-_t{<4Y%Llh{Q%Nts3hkvbUuHEz%U& z$L{(Sli3m;ozT>Cv~8rG;$Qy$k6RKSvksd9L0;4E17nmI8E&VZk=@m!_D4LQ^{Z_P z*TgvVtPBan6^l2^WN{|6k=Wh^hBVr`ku7_^D!d|fFYh08YdHRf zpi`WzePHc_FMSuzp(MD zqvt~3M>mGgj?%w4QaZlf2`mS0SDwQ8$#ycEqtDgR)iR1E0DtT19c`^k@M$~DmZYzV%6yejRXQPfwU1Dx*Dnhx zAHQ|W9Z))KD)+8-Srmf;lc?0vt}V%jvnUg?aZBw}}s>w$SC$_Zt0Pg z?``ER8%y6#NQXI@=?hHe<9L8!ksym|D4DHaUyrr(>+G@oMQ-}0Ga44Aa4EX09*&5d zf1mm;Ya#66F5Gh_VrueMy$6<)G=FO(Tl?Zh zze5_|6N|mRXzx@08;=%rafWV$HU-5kSxB^@CHz=o*gX5c@yLJo-x>^)&DOemZ}cC8 zXmpIdG)%z8#?N4X|MWBi?fbT%t&jD;>CP`#QFwN}mzxMSoIXt)=v^>5$+>HFsYC8{ zXzQEH(yo1kkz^Mv8ggS-zsrNS*nxZQ1u!H^TB%%KoM&}(9?Eomno{495TC&pcvYZ| z=9JL2wq-HDd#sulRa%ZkeKJ2QpG(7VtG3z3uG}(tXw2me+U+7|Rd+7#P4Vv7$47cq zY9${RG$zzE687l3JRDPhU5|TO-zw zY-@pcx^25(qa)biO~%=&$Ev0JH#pDe+5+qf(^8ofvwu0(zE(2AbEKj;r&}uA0G(wl zMwryvf|Xi}v$*IlZ*1Q4L8v@6^=)ZSOwvQDQ*f}#vH>d&v-iGC$MW|RH6ecahec_wve^406>lnRxkaS#kt1t{bEgDdGH|>nF1Rv4v!LV{-hh6H1x!YN zJ}Pq$Kg?5}tzVvX*Fp74L&KCLom6>y;j=^eItR23fJzBs&i}CEwOZ0-y+cen5Kp{RRV*s~bJDLAJ-KA~w)NbBYefAcdmMg0 zJ~Hkn9Wk@o4iB%hd)0)80n-X->rhYDApt#XgT=wD8y@;GoI%}GtfYQq#G7vS;!;&5 zJjih0Hp@dVw3Q{{wu47#U&q=o2S0u1dX{$e>-k5P{@l57r1Z|va@FOo51Fu1vGW&@ z{PNbM&QGSxvv>4opkN8UbOJwd7LnzN0s5$HRHeKtUHHkk>Q=sW>1Cv%qPaqFQKa48 z;#9J)efQ*uw;1?xwJr8tO}161w1Cr_44cv{72n^fGA#9dE7ap3(elQZT>YpeX^NO3 zP2Jv0eV{QQBeY8mCu_>=^P0Y*L}51m!CF4;=rfPQ1C4JR!+HmX66`Ua&XM_iK{-~y zdw|_G4cI@U=jpPs7ESHW?Y*{jW<~cp1Lk>w756#S3QUU0;@T90qRSp)5D>$Lr zvoU(f?eVV_1IOKT|D3={O=unKdZd$R2E+R6#Gj8_zuV)Ycu~FQqbq%_SnU@*9t~9G zVZR=(2O)Z!_io%j>k1oddnkN%SiW4>UU9+C0<-9TiP)%Ys<+IbTXUFj%AVOFJA88w z^&x(BO*C=+K*{JW`kOkH`K2=-`sps(iuhfeI*>zKB;@Xp2hKa#qH%fr3-MCNpM7ZQ zYk&GaZg@dK5BV*=X}m+tMrmQ-YysOg3_5=}nTE#lon)McJJ-pH|f- z)>Ucxo*wOLf32zI*Jfxxf)?wiNd`3U$2=@8LyWD;>w~UT{JL|9(*BZW zD{0byhtco7zS&SQA~$tXDAQO|=4p1`H)MAt}#pB;QHS@xzg0w_etD5=Mx2D1r(ssNXTKd><)xa>=5sh73 z`sy7#$m-?wxH^-RcSH9J=JLb8$&T1fIdqV3eRfv2ELpUNx8R-Y=LU!Vp4K69oa39k z)Z!uWEXN90PwM3G;VGULmplsiF-?aU;VH}=XVrI|ZkQ75kYuS-LvBmTH6{lio_b+y zx|baa+G`|VAKY%Qz}6AmA|tZh2e)0Mmb(UT{>&-4-530^5?M1@H@|8e@piJe>WyJP zdwB0KUMqG_Z0%!yQ@i=*0ZSa`;+~*FMh#TvcjyML%+B?2`+Il} zm0WHF;OVaHicUcV#YLN6iKtQ#3W>f%wysxmM$5>E|9V5&Ta)b5@c|B%`{NonM(H#; z=YEZuq7Q8*r^(YI0W3FTd5$EP=4^K7z|X&h+I`rGf0r8h?!)4$^pie)`4<)L*8V7P z1gVbCs`-O+6OVd)*^>W0;5aKtcYpe2%Z|r2lQkvwbmwvwaHf89|-=ml+m61+vVm@iC7{r>;k- zDP7s4?aoRW?d%5LKpm)|&pH!)5uLASBlqgg(Df;K(XX)1e5?K)j%O=q7YoO4g{;A4 zE<3Q%?dtac!B0UBC?RPGneN?#6I|N@!Pp4;Qtk2cXV~eYMHRoQ2%#4Sw?>gK#7IRm z`UaFg)ZgEPVH`6xG@sl0p!n<^i%_sA3emAzw>$8S<}0O@lK2t%9g-wr{(&0l&4_Jp zw##OTvf{Zb?8O~Blywg;_LZz)@8jy?z3vD8F{%&(IEwEk`LAy7%HDwE)c74y9vBm- z-zk+XL?17_Jn=oFyAzu%F?uYx``ek%_HEm_@W|edouY#uN3oH!qa?q_`#pT_c!Tr0 z4OIdjLz&|u-ZM`9J@^cGD_O&)y-qHQNhY9Cv+z>GjGce1XkEtko(m}IZ|>((JW59S z<}RybCDacCc*{RdXX7d+1vx=_7KmdC_o3UJb($aNVSS7Q$)!79hfZy`ylu4Fx}s;i zv-R^hH+=Sxj?-$=-Vxb?bhUS5v91?+os)=Zy)|z>wr=Y1T0x5qJ~%KRH}a<9ovuQE zSH+_>hh1O&oHE(wk*_>+e^8`$1Kzb0!z2qXu3oTk&zt9qJ16BZab8fpvux+;VcDa) z;ONye0ymVG%Rt=h!FE-XcH&5tEY1f8o7@BE515j>mNxbT{VEIu^Zx-a@b*5zAR zj;m2a#C475`>;i5quPb%B(pDPzh0S~P};d>(~-)#9;e;QNQL%d+`VKg!Xe8}k-IjI z)OP)eHXwRQ0wiKLd06^A z{!`%lFOA}VJ}H+ON?a*We12bFP-S2C=KgUHDA32=xYHFTESb!2=+QZFTri=XLN7mC z+;i;D^Pv^nySsSS@hhrfI%-sLk&$CmL~fLW*{FBOO}oU9W(NXp1JQPTbkVutNivXV zNRX~A5_P6qDHi=`TwY*} zPr60c?-j^m=R1LzUC1m-q7nwk0sdaWu95rQ2r2dX^#wHn6L7y7t%b0u>qxC`1+!5B zcs8Ct5D*i=0t*>=kEB(Ca3Cir)>~g(RBs;E39c(tY9H0ydOXO{gpHLeOWZPcte(-i z|II_<`68vq^M!K@UcpV^;#+uL`X)2!@^a&hSJ*{DY?Pl~(Ef8DFARv)tNWYkI){hw zikR3|*L87Z|Br)tg1oAqHHvceb1oyvxo3EPXeeVLD3Gl6%U4u8AIe%OCI}-c9`n33 zBL7I2@1h7Qg+V%ZS@ox`dX)bi++kWZoLY<-{|~YG->s{WVtQ9qm&CM1&A_i`VBb;p zt;s3;yR7G+<=zHUkIFZ4*=J?u!zWoLrKu_3KA*uV=#2^P)f3SsFM*1P{^qCD(f%>~LW7>7$^4nAxaXJ7ZB^5azHN1lrJ31&{d}){ zG)w!f{w1F`6=P!;+^{YdT5?}JRrhdcl@=*O-{rdNwXvzrUtl}Y$$mUznZ5wa)VT^` z7e`w}zo1TGIqFGRib+P#?m+nITp3g zj&&|=-FCSQ1}0}5S2?|Hf!Do1dpo~K=tR$K`|Riw zGGxltBB$DK(8>ug)h0T$|M=WFP)11f+pvGc+WL7O52xku{0<>U`^ zVk03SLv2BrMrQ7ckL6g|z0Q#wqklCkEF|}SS(c^qFX-~GANl9E%4G}X@=-p}V|+XF zrF6u_a*&OAaAud0a`)C3XiSw0Gp+AW3`Y7~-+ot`#<(y2V`an_b1W=4<7`4)1^Gk~ zt$xSBfeHz1a^pN&DGGJkpwB_urGgsoTTdRu^n+R7x*Z-n?0mKIqW-DnM5Rg0?@9kT zbD#c8?i#}%OE%2E?ww@uz}AA{v- z8d)Wn)%jg+pLFOgGkTO}7yU^>kjzW%oj0ZT!+yXDnAy(aQhBPr>RE@bM%67Z{Sg!xy#zp3nV-TQ=|_~N-Uv@`EVp=B zGnqL{<>QgJ!QuPX){iO#%qG&;jr62!v!5Wvy73P2rK_!ehVIEHB?oBqieJ3$Y!#_D z^s?Hc>>u)9Ft;O#P8ITW1*6+d#JsOV@dXy0@NjtiAslJ^Vb%lhed8Yzon{>Gh>EhS z$ccgaJyqX`e{c1(Cegn_*uL*)T>cl-@Sx$4um{)H^ZE8~%9qZsHqDBL{Uu)?J{akd zpI9zj{qU#a|KgYY9XjFHQG@c)C#_9&g1DkZPBU7ErB(9y7_@Vgh8+GMwc~&DQd=XLpmoe{q<*aPhnh@|M{_m{^|5@;lF%(Q0UdUhmMeX1GxxZ&5|Nra%KLh`7&%k>I{p=Yj06DYvxq?v& zZ$m!+-TjpOYr9YSDo7O5byE5(>xw%^jJJl9*9R2l^j*Azx;%(#n(|n2IMNpDP&#=z zw(QG^=#v*sI=U3q^FRVqY|}Qw>~Nk3eh0^0GR$6wbEx(x-T;FrsloTs&`B!o|;cq;TEd7)4RPQJ+#M_ z_pMJz!3sVke5m*y|BRr03hl0$!-?>Z7h?*`Kiqzrx2`LAlih?p35UgASrbXqdazzW z5}~@@uD5;PFq;sKpICZ#xXrJ~c}_~oAHj2vI93+M&WBgTm{pxQoG|5-qLHeRFncuq z<>$Kmvr5%sa{P{!gs1en-zLb^W~KT#siOC1FKz4Wl$jomdd>#lViu9`7!Ii{#Lp)y z{-I=6sOoIccim%^Vv@o0RO!xGL~!x>b&lP(@cE`R4Nm3eQ3m~aQ)=}S!H4T)qKAVb zSI_*lk{vIXq)Ko%AQ_HcH&K+56NM!^i>ejIogbWUSfNnoZTTH9ckGHp6AUxXj?%Q& zXm9)^_e?e**}ZaqK=)tC<9Uhs+OWRb6?xlFiu;rn$Fr48D8tM-K$R%&WgXPz6Gta+?~zTb&h%z5v=`W`-UfE*Ab#AIC?vX1DfbL0%WY8`6Wqi05R?6WDED2pajtCgOc z3Z?GCZ|NJ{C+K%mC+rQS)sM3#Xf!PsB{Ny(GQ(ek-kUCRQR%}=BHXPIHjb>EPD=Q| z#IBQ789WBh(@a2I+f+ldAGJ%#;cHJg*mQort|t$p8FPp6N&d81OIM{B?2c)`@S+I^ zg5CBbWEzzxS82+b6b!Bhvb#DHtm?5w zPa@i##0|NkN>;1WKQYc8wS#8+#Pr~Jn$u+xSvDDI+2H;umu(n|p**iHw^66~Q7+f+ zjAM1I=ww2XRDyV?s&+(1%u5--elF+O5XjBER9+E zuRV5#ab&sUV9JWWjk{{kgwraET$*u-{)wB_!q{(1%8u>zlYSv1hRJ2vQv+|_O(lw* zmziHG@d3GrrnpjH=`hKb6*F&YJri?8ywU`5?%Ng~!3!(XnI1eJCeNB#yn_DyhYfp~ zAi=LX<&r;HjVB;*nrT{H!f9*N@slzIY1pGd?Ts|*LK107lGQx!`0p`fVuv@mizD1n z!pOr^UikSsR(m26j>D?QMTRst=hZJ|cIHJAd+|gwc9*8Haz+~SWNmcW`IkPFn9Ty2 zo#kz|h^CdJ?O=C;j3zLeFQ@(1 zqI#|7ii-*JrS>cp}3 z{=$VNX~17YUBO-xCd%9OG6sO_(w*Z6Xl128S zJp@s|+nn*`ObxfR>*s0#wUI;z%G;;}@6=*?+w>^8kEq5Qy_5CGIO^m}a#(=#CRJ+O zIgWNAvg;_v0v|_~DCNHvwjy1j9jaz7uT=rn+#ASIV3y=)QCaQ&>h&fqiC*0B`przB z#ldR=MR>=Vv9TL_H!+^{O_yV!IO+IW&_ zSguX(yoKN6C8>_qL8fj=yMBE-o7wX)5d@y@V#Yi&S3c$c_MV{Pv*XRzXLB1yT3F_H z@f{Rz+N%KhvWg!DRMTUDp4ei4-M4~U{uRStjUGfF2>bJEzI&2saZ&|)h4BpwL#+>) zw$X3Pc7}ar6&NUr2hRpQNIHRWK_}Q zYlw=sH!y1xZ6u0T*8R9YvCX-9=g}~3T0pd9K|1mB8Zwzmn7vmxC8|vR5f(4<0I8~v z>6Lh?8hZ)A#@s|b@~}toD9+Icks`9=<6qO*Q>zm1(N#|8x`zrsCIb)g!;3_On}mJ7 zjKXF=mKJl{73Lcp2UjqRIy3@md8V1Z$_>p%_Dg?h)a_7z3GU}7(o2BLMNs*+B`STl ze&P^bQX*=t#JZh@R%BHwP%J-k^zVHr5pPxdq@Cp#7?>1`c9B#2@n0DR&R2&$ulvbB zaT*>vdL1G{oP+nX{TPcGliNa_B*fFefdg2mHp_ig&##NpZKnUo_I$7^EE&B9C>$RkL&eUMZ%6Uia8@_} zvWxAgraLfIvC?DM8OKZsF*!LYF{XV%9T)gE!#6?5JSB$Wu-p1!m8V-0Vtqxq1~K#L zz`P&c%AmZ7Am*gppV5GEO;J;JQzl}~GlpLi6eqd=@*&9VHH@3A0s`iWyL(n_x; zC#c`JaXkWnY70K$a1tObSV_2(AWDum&l+9--6DxS5rg@L~>IS12n(@f6}k8b$2d&to@od{j3rXk%)6;2BgqJqDdIYkz(^8{?ycx>Vg+ z$Dagn5UZpdJ0_EIVVx)PM=^#ZgkF+Sp&Y3*uta zL#<`F`st^d5^a`dP{g>SUyxctLn3h$_;HJGk_oDm_6Z4l%4^P|b7ygD z60hC2TT`*mJPn_9jqHvrw0Vn_VgE0c)IBz>!@mI0yr7l*Y=lV*fAGZZ&09i16gDyR zgRyaGVPx6J&)a%uHobgq>2AF9;aPg`G1tkBzuK-WHPZQtl^u#cYGe{tJTX;qDd$>l z)|FfNNNLCOp5L}#dFNiBY1hJc-jd*ff{qVqiocjZ=a$q0_o94%a27UU>Yc1&qvXl= z_O(Iy`tfmwPmB_tD%NXekl!hJPegPNLZ*TR4uE0d&2U76YMFV!tX zF*sT2(6eQTf#N3eH5zkPB$qu!C)UW?;*S)0EXH*wIkpi+v&W@V=b};ZhF`UF3W!Jk zK$R)R5}uP(cS_faJdQ_X!-ju8x6y=`r^pPO!9xGWC43`guNe|-H$n92p02+E*p*{y zB2kLM$#af-<{0)R4r<%RYI4?PpD}?5rg-@Y{_cI1tu!m?L(W8&pNoIX{?s4FOtQX? z@Mj3|gjxCgpb|}>T#vG0>%)f3dARCT$F{xEkfpJFHoT?-;z`t-1Bw7Q&g)zk_Q^Ru zEqrJ{KudtTsi;tp=QIQAo82F~ zjk*p1mVvWepTjp6Of>|gj?29*f4VkOsem9B1CF=QKA%s<`Z#>cs-I7;!#hNu^61)N z!);obAs+0`7vfbmBQhFDLn* z?>8Y`E?TA2e}brwLOe4=wV9gEQBK1u1Y;X@Xx}Qty4zgVRh_7ir$ojiLrFR>FP*E? zUPqsLE*d<5;O5BEubC&v~ z(}yMADL7M|$KF0ZI6Hku7_ue(4v7V1ZNIWKwwa|mi3KB7b}eYvh9Kv&5{CSE7?3he zySTWzW>xW0Ba`xku2l?HA?XeiY(PmY;10!O%>d7F$1cZ`MO{4^61pZ8B`{PC#C5kXv zD39Z996m9DVB;PJ)XXvUof#4^!lN_50gjdX@fQ~-#kKAQIO#_Fr8~Al;_y?#hTVz~ z(Batck5i5zyw%>;5VM~V9VI+w;h5yGKhyP5j?6#unHm|NhQFV5C$vC#dm?+ z0eFh31W|3n+SX+*JUbt^4;KOq0KA%uj{+amio>ewulZ(-e2kmz{Kv#Q&1r^pRVc+L z5>{3rn0$rm!s{*5qvo^vX%sSH%`~pzC^c7fotO)O)dAIi7*Z~{?qY%Fm_I$f(lDHS zL=7#(nXjSg(H-qeU*oZ^ghW~7A)f*QAl=`_GwA|&-_e;|?`65m^9AY@?b@oEXdGW~E)Si7!J3GsLg}a**>YRo@T1$Ry z)D@_q#fP_cfe)cv{Bj8rB!=O?*f@W4cP2UhCjaA@kqp;>Iyit(?mS|400e8JAhohF zlxYc6rzY0Fg0gis|&4v_H&Lv+CHj0xLR8~tzYx!WCoK6MwqrBBJ)c1+^pM5>G z1xyXUXpfy4eBkvCUjU|D;(hTe%P_x1IZby}Fe z5gnzq;FBIgpxPf@gu;Yjzr=uy;*wDo!#L;`y=``F0j@HIy=tt0j8d0O8})aUS)7 zwgKWgJt=ED;SMpIIa_JeV~pZm%j^8n52DITnM=50S1g3x=$<@p+xf;c@M^EzRK`cv zHENQRdQ2SH6HMsNu_4ZY7=rr^m?L=6m*@00Pi~3L3X)kF%krE*SH@v}{zi^?x+RfV zxvEom%uMsbazdmX!4cR7rPCUjtn87U*ST`A%iM=!{|LoB4^do>1O*<9sl-u^89RAF z7-~hW9FU+)mL}E4ZZcCWZpViZVL)MOLPGHu_P#WpJwxR;OIeA+%=2Ei2F7K?jXzG~ zryesAuVNqkWKpJwsBpJ2zJS{2Aw*yD55T z7_@);*0FPYMP1y{Ze*k3`=(X!&T7RE;5&-sZ4V2!Lb$hArLcFZCm!vz zc!$W|UYir-{^!^4wU2*$bLLY_spF2jzg11FG&Y^9wWGqO|OkaUmGcpr^g(G zfVQLdXm>TYBh5dKykQ+7a*41ODV>SG8(UewZpI+YNpZEG!Ko}RxN7ZaLBP4X%}H%> zUcs!bS(wEH)%(#EwQ}H@LnS+|e7+U#52jNUr1vxxQG!qn0-MNIU`NN!sf06=&Q~u8 zHc(~}j6fDgmP81D&oTV`SB3#y{h#iBZ!#0^ut;9CfgL{c1WYxJtd=qCL{a3~O}Dyn}vb6(~R3iqPXOt1xT`K;u1 z1#HC_mk7i~>;A02GgG)HFZX7!RvkIReYWXKwGHZY#2u;)EB_Wi&39N_*;+vgN48W+nGVs z`w6FkPW0yY#rpa&k%F(B;FIuu({H>;~I|;3ep6PasBE1o2xw@lN1C!hKI2Ni~j4w$twT@OUq5_hM*c5it zzUBrKM9(iZv>|@WPafap05l`PAebgyX`8Pu#y+ua2sakmlQWq=~ASq=|Toi<6k2h1}!g#Y28DNwl;4u_y`V z9ZWMAn_*J<3z8VQFS+mB!b*U6#UQY?+IN(SmwK%@dnKX9xZeQx?f$m&T>#`h0DKNu zxE;5VjGop%GlZQ|rIySpQ&zOnR1Fl#WSm%xYo91gp6xFjb6W71b!!oc-L!RY+*~M` zR!2%y_p`tZPob?)mTm1DF`ZE*Dw<6`Sx^Tz)E0}$u(8ZXc#)wvf8LH^6-{@AltrlB zbmR)ei||t2ia#K+>ZY8?8(IY?S`7)w>=R1WD&RDryscXk7d>`Z(ug=!w#AAljM%t8+lvK|JS^<={>H zB+8)n-qqovxE}}sXv-q;(tQE9Cu7NpQdK1%m=QyIDI`wGqI9<4-H&dQ#qK-#)vsR(1_oCgTSM^9 zI{0tOk+%-07@p9qdJL>{G-F;#r9TL4#!~Ym7f#^L$_=q5tu_?<=9Ic!iUsvhEYR|qSBZR1rJlA_B3~}9g$$8c$@?|oQ7_S!@DTN#W(cBN@Vh}nLU&l~1vCkT(eDB9s z*7x1N?j%71xsYWlT9GKKYUWMD3@sx~Wih%N&>YlrX^_PDyhX857VEWg4rH`{(LgA% zbha}E6PexC0gFzInvsNEL8wgRsET!vvHEo-bYjPo)mEGp92{L~CYivXT&a+gv8Se5 zfhl1qgg*(D0u*yd8Y&M|g;T9bt7-S|8p)6W3CtpVC03l{ZA&3`7~3gKkqW7b7ECvM z4%2ac3$3R%rQ31uQl9m4$&)!H=r%IW2Uyvq6<=Gwg#i>o5J-R!eB!ywhPRolg{Rk5 z6Q^dS4ugR78Zx| z0u%?$ebX=9K50kBzR{>>j=V5XPX<3~Qj;&I zS-YlIiIB~DI0xns+LMq}rP{-JvwQ35OvN@gB?ed(*rX-9%5uyQ{^y+6)1O**;w?nxvV9+}`7V#gHXf?Z)sjl5s& zw2P%fVrk-qQr%KGbksq^FxRvRU-=y98fZd$Q3-3YJuYPI{g}#DZ_7g0W`;V7)EdKa zq9%e-cB7tFuyTnz@apg&XUaidqb5b=!ThRWRi>-dpW9>wAC-_{D4$-YJy+*o--wCQ zrI5BmmC%(&V3NK``eDi;_Wjg0->5-^_vfJ{c6!WWNk84#f^?Sy=5ip)%;gx9iFq^G z6AaF^gNsCv;cmz@NCd<*JVk{WqpF(`Za;90$icBR3#HGK2)n1r`eIF)1MBqz9e42t zU`k1+QRoa+`bz^2xGq`cG?9t)l$iOupeJURy1EeUB%epuAn4FI25tx{M1%_ ze0=8XT0qo8;6G*rM}m6_JA|gG8yn7o`zK_@C3a>oO)d+7dj8(I)x`5})~`B7LJ8s! zD2qcUln5pas5h0biN(Mz{$y+{Qcd{M4?}Uct@5?$RI4i>Qzk-mW2T@Gyj&U`pYnF? zCM#h60g?h_6OiI;10ee{>^F67@Mt6AeP0W=<0ZHOj<+eX{aiyEk+A!wn#D`f6s2DH}V0inJ97$a`}C@YFt>^eE+!^ z%79Fq8@eza%{gqS0EAC{f@@Gy-M{PZKT_t~dJM8CX#Xx~ z0Ju?q-eH}^RAcz*Vh?B-h0|NT;it!7hE;aEwX&9j7&zC`<7kw&ai-v!Dz*7wxD?(U z%>uW*f$uX%3u0osUJObUeHwWhDr6!@zoKjsAo@D87*N=R>q;{NS?qX}MK#QaF@ouc zmFU-;(0G*ixSTX6T7$WkhG=qV?zCD4>%Heqh@TA{JE&h~s%TP8UWV4y zr6GTz>(bO|8BgrZs)O1*uI^;hs!9bExFxyLD7b1u{qqn*Oo{JvRCfi<3aJ*oUW$Ju z0?q@|E{TAWa?k4-9M&0N!<>W45+RQ6MzHS_1+-a9be+X%z@+lHqZG)JN*}@n%=1lO z)CEQ8Y3GANj;2Xu#4m*TU`gR!c#*RQAq{v*tdxmgi=ZNeQ$W>9tX-E&&itiMZ|^5Z zK<8uT!dSR4oYw13LhhJxO%7qFx~T+e?cg(c*}FKs?zBYLp=lP(!W&ezkG0(ovvp9 zT#lN%pyI=rxrxV~q7vUWhj)8>Kq3Q05OSh|Zy%HgIys*jH~8H3{X#GVq-XcI2>NdKAEiNj$Poc|J3wMV<)bIukNvcl$W^`N${c@_dn3;JnSqkdi?m2}20M;ZR9A z!N)sxg-ur&ZLzy>K|b7MFl{^Z4@e8l()AebLW?|DSaCmoY4Kf8895K-!^PSm+IURO z+HMjQT07`E!q@@QfFZ|6}n5a@55F zrX#;=gUxv>rUzV@$&yhH-$c+46FoEUF<|y3vwHHrk6^MBiUjk>fPY z^n}Rr_}o*gU_B@~UrhO>08=_|LM}1(grd*T(JN50dSa!!?PG~5P_*y{-=WU#jD8j& z0pU>5#@C)RJrsHlMozd1#%x`zh$ynLEzQPb-~DUPeQKkU5Q?fq2GMrSR4rs;1ft9P zgx~JuxkehE@?h$8d18C~YNUwF#np%fl}Uw1Lv5Tb$Iv|4>;KYl5O~ zb*G+gA--L=epMQ0p3t2JRWzd--RWp$rTUCGT_gx^gzES_=Lu7#+h@6t zGN`S31QFoVRQ|)D9K`<)N_Uijs~k)PzbBuQTWO6YxH$(yRY`#%RI1f-RB+Sr2)j-dAnnK9?Vsa z`nfxvZTs{KrQ>N>+JQkF%X{4hGXEGvWAZO@VoTA%&>H~c<%3}kh(@_W>**D|i!#(2 zmgo+m&v=kUf5|q4@LIU;Tp)MlKAK@_`b;HOh@+1ERXkw1s;yI6zw!(fKBB9DZ$jMD zi=oQ_Y&zHr5Ot!SSuoElE?)L~7#C$BGgev!ilhPNJ`SAo5^41p>R_l+HXK4@BO$%JBy#z7nuD_-dD9QAxwlICkL=WeYS z)j9D~n2{_W#gj!Z9J^I1we@N2mvo{F+G}2Axuj`^zO!2j}P8u81=^g)2z6 zAqWL?3=>e?E3ns8GrwN&>o47qL2U$ArGY%2C-Zn)JsjHmEwx1!LgBMr!ciW&{k@$2 zlh3z(vJSzfp5Ph7t?7pZV$QCc>GTnAZ>5*7F0#Kx0qVjnbLqoRJrtjP-bGJnp;~?@ zT39&QV23|pUQ7NZM~SD}=F$5ag+o&@hJyoz%DrCLu9yc!#vAg7V;&a5CXKrjlicYh zjTLL(^giu&+_>@g-B%^J{!Cbcw#?LqrNn@Pf>CFVrEPtPwusDPTG9v=-E!CaO#2oz>X_6X=@vmw@-2ojrlC5UsmhkN7zuj6I{nX{XlUP1$ z>@lU~+C7=!fi}Oe^xp4=m%bWK>}KFqb0zGd7UU#6vNnKxYo0!PN`Ab_=JAqu7tWCj zdiGTe=Xkxc!mvte?&pEAkI0^vwd@J&^rO`YqOtCSp*h}2N4HzyRQ_bB!CbR6^y*R_y(2XcrmFfb^H=2|+6PM4?G1>CUR_Se3 zgas5Gh{yh-S%OGNk*UO*6kTtQx(p%5pPCkJ*J6-oFWZE4FFZTvx_>2#Fw6k#YT46= zOr?{r`d3!17IAR7uz3eoxNlBNWj*t+R7fD>a-V2~djm43&!mt*APE5i zOC2eS7!V5xie`c|E1;qQQ6nN^kFG0N7A66tsT9lFjbcGXjey7sE(xGwS;dBkr~y$> z=^~1h+%ve}d++P_yMOF!Uz>lHndf=VbI#}UK4(g**(r!#HOGT>!IIM}SA&=KD+2>b z^1lp>rOR zcrR(|QEiv3a^p&OIR%Vl`N(0xRyzdOINL9Dl4eO*Dm1R0OGh6xHrSfk zlyyzM9W)p0hRFiPmPESob~!0A(rqLlF``j~fM@F$BU~pe&Me6O`!Y!E6O@qG(GO9< z8BPzZLr3I2nA^+M4Tnr4^gf%38BXZ82N5|o^q6}#>I`dWyq)~D1TJH3ChjEfnD`_M zY6L73A6Cpe;AR^gZfJ4WVmX*W8Km|?qXqUP45H|QFn2kQEKulTNC_dqoLUlkRbI1` z7ao!Pj}>|q7f-g^>QBTgQ-HC0s~?=HbQr#I|Hr{MEHT8ZGk`opnvk_<9TFS*-nfQ? z=mapm$>N7$=+3F-3Z~&TXMo|OFv+rZxbmqc4H1wuel4Fu3M=(Dp`A+>uTwZuVl4r} zXA+}XSs2 zUNZv?Oe5`F>iE|Qof4lJwqX8&Ld)3{ipK;nlJrWTC* zw$XV!#PO4aS{+Nd2Pvv?lvG&9vYq*U9cHefrqivfr9oK~--isXdbv-U`zz!oLF2Rh zrCZg=o};gj_<_^3h@R(1BE2T7Q15^<)tukKK+rbiLz?l=BA#C9-t~0Qq@bw5IJAu* zQx(GV z<(sSdy2BC?r`?)$?ZeWwiI5g5srSfo08*=0Cn`D>xRX&tp1v>Dr3oiZ`uNYvDU!@^ z+a36AFGIEF)~Wi0L~E&)%Gx-%J9~9zCKCKq0^AvLP9*@0#-vTC7e6M2Wj(?8#d1iU ztJx0_I)X_<57!Q!;u&uoU6?|x528@2?% zy?M>meN!RYu$!>O1S+YIe3G_w*zuB-+;>+h6^OsgN1-94KH7Is8nIKJG(=k;HbYEe zNFAi4*g;PFqbe=FAEmheN$SXyFF3q^(-TCsz^|pEw_GiqV{dl4d&Cy96p$v|ZAQOA zVvz3V{$reXg-Hgzm2KvUcrbuPaI#zrcf=!=HITiz#51)d$1bCeo@9IH$vkBzGCzpL zMRdjo%~WenV{zr>37d7Q8GCl~z2SxG*&9yj0;R8MaSF?A@14V31F1g7t0qaADcj-t z9aMB#RM*+l6^J*biVUOOXwM=Nkh1Gw5%oiy?uGBiDG5Lcr6z=_QO#p+~=bs&jd(mnqne9wJpE zx+$k$btheap2V#s9%W$E05*@w-*gY~T!b~{KT7780w1|VO}U@BR)ir1XBA`-lrQD8 z3`qnb-$(kIN!K9W!$b+!$jQ}4OHVq|Rg^-nhj0=MA=Ms&C)g`YR{9}OA12o!woIiZ zx6@DiV;wx-*aMX*Z(q0{iVee2A9#4kHnrW1pFv#~UWMmwV#t~j`CJUSNJz5Akr%nZ zWMxjYw~BJ5lT?sPRD1?ex^UHbZK6+#+I^mmqcT5#SS-?d{89m57mxEVH-rdEp;>Pi z)g!W1`^g2&z&*&jPR`6a7FW%6{II+b$i`2I8OfzH*{Qn6TWnfwnLd;7IutItSzI%? z?2J7B3!w`vaLgZ}kd+J|QN=bbmZm{JTN9#}z8h@*|}+xl{7bnL(7OyOP1 zgUG@$R9-J30Xyps#0zqHM{p2ckVY2-I+u*Uix$8M{GUf-8s3fkU0bV54txM( zl;JxcGc40eINB84DPzo$NCCnOSwx4)P)^s?Eyw0c7}wayEl!u(gzPpKpE*8VM}1 zuc{x!HdC(|l(TTJ`>rG3hNqH6d9rZB&9XGl7*tib*`NB%mQ-4x{9c1vV%M@umAEEww>wwIcLC*wJX1eLXE;a`4g@=&4)2^ z=3C?SqUAVbF5rsMXd4F^(30__r4A+UfElE{pu$5ob6z9Y%zbYh83d+diG-1WP`)5y z%yg^&`BqzjiB9(~u9z&ogx%<{R5X^dPW;=F$l& zTuChYQ3xQOMw*%j2v-+D>gZf+y$R0eTWdYUvkibcM;zoHWReM)=UksfT%Uu}CRUL( z3*3K*X3rZl!1F~TYNrxn9w_W#W|o;A#DTZ6q5a@1DC?d;I+nQ!l~Vwmjf>>;>QYl` zomUq{!1>zYN`-$l5|Y?GRgahdnAcs;khcz2KLc0c9l4k{$;Eti@}x2)GkoMnS(?{E zuAQvhi(un%6oHAZm;QooTXhiZLWvYVoskf|LWQo9KvfCKfG!%j5^R&dq@8!R<~BzU zi<-c)jCZ5e`=n%M1lAd1p_hMO{Q$HP0e=UomWy=jQ>lZaX(J8JPpng_ksoFM3H}5xAZk*|^AZjQ)su+RXZcH)2<%bRU=8*)t z2#!(!dUc^}g{o`ZomJ;Mc;+Lm7?(kQ4`N^la}h;l%_@Pq##Z3R%oe4MWwFlvUwXS# zxzy8nC7Vadq$r^-BG}bZ<_N=}95K+Cq_PfANTED@B#aiM#ARJ(BBlx*@KOkComAZu zvY~1UJ@GTdMpFgKq=PqUX;^Xqi$B}6SXPzt2rhM3mD-x}Sfr*CdycELxHRP0q|H=7 zD}U9;qoAA~(lxTYxV|c%i}+{jCCHI3bj&4q6S&8oq)YBq02~clULRUQAX& zZXJ`n;(yt(;I~fz)}0~m-F>9mt&SvZY)6o;WVJ^47SK~qBaihC2}rUW zz>bk*wSY8^I(VW9>OI5dQDF1ocE8e1OOtf*y9CS`p>o)3XlhAni9(BaSuXF_ygj7) z-|NGq_d_h?0_sD{Yx(ia4o)M<5ty~pHE`rkoK)^ZHx-&GDYlhrl^0=f&w*N~OTY7~ zbKLBJ9BYtd&GHc;z}#FxPG_AN2y&zkLaC+FC=c(q#+5_D%?vWw4>~0{u@4Xif^S*q zy`7;9~0mdrBwbiCn`qa>^u7T@g+0t;xV} ze8fYze2Isx$RZvz=0`q@_;x$)R5Nz@=#X|0$wOpN2bEbC&bw+^h~9;024G>sZb5+; z^ubuOl!Mb&9}}Z7;^DhZ!(#Yss2bpaU8$F_Lp|JwLB`9m(1!tUIm_%dPsg#q5fT+h z#3UYggI(qC;NqfN6b1)j!Zgj?HWG>+3O%iQt+z@CL1sZ7P0=|W=}a9wMPupi|Ao7% zEfI{^Q?H0WZ(AQaVzPl!DMm6`j+Q7Y*>iGVJ>1@a9?A-5K|2gG1SlHb_u0Y&#<4*9|A9l5XZ0}nQo15P_;uZS(zw}>(g@f7ZfI)lG2&}v<}jctXiJ5bN+5h zmLz9P#v#Z5-zNY_wCSynZwV9lJ%4EKU0}XS&z4T&yhX`@$ z59h^c><0vcVHKuM#ld;Jnq7=rT+baJ-}f-Lw+?<9ci|3WvFFUnbk-EnWpF-EA`s(& zD=eH1feg#MymxgLxV#ypRs+|{$#90YoN~-DLx(TRBW6Lq0OZ95u+w;~jNqu+6axuL z+PqxD8*e#1-DBjGuIC%e#l}DlMIeU&7km$m7!3NW5AG@uZ{H$2;05;3q5ODtOxue{ zm+jdgw`LjGt8a8gk6YGiImI=rlOUG>kgNbqbUpDMrK?>2K=gX)Hzp z5i5#67s-A~v)z&)CM6tugtDKCYw{t5OXLb%0%{Ues6PRb11d-X-w$B#NbfBM3jS`y zRvmqj9R@`Pu=`Dm6J+ZXqBA{InoLg_h>|0>LPbKOzui>C(O<(9HADeuAevB8EqsC! zH(%kshqm2@c%76Z-J*uP9PmIja?{G1)Znd)kXR65gP`4Nn9kQqm1`9PhiXBQ* zR^1*uf^`nmXS4~~*2v{tcnkT8-2+2ar3DYdmX#_&M(<;6v2-kSldDjLw+fXoJyOkt z%h6Rfr{_$7&(3*J55fl=a81F4zxyQywifoB;e?fpRv3|bOhuk(cEG|BMc!&?mIY~^ zkorAtg>&lRROp^fHABkF4`3d(z^He|D?D7TfEQ1~B&Vs#RQafm78@-jtbD`bwYfOD ztVv@~p`zR%lmhzubKPZWOMRtX7M@Pe!hzc=BbN?jQ%ZYESX?Zqg0e4g+JX zXMn6y?4B_5fgafnNg4J9@rIRCJxRasbT$G!18X8GAwqwv0iNN$reT%iS_^E!O<0%zly@*?Se7{PU3M_SksLE zgk}`PW@!4ei~p(8_BAcCwhJ-%#TRBmqJbZOqtgDc_e&pLB$LpWkezSzx6mDP=oLt# zDz;w1Uq>Y*?}SW+g#8w20OpXjq$%wsSSP8Wkc0mp-Ulf;l&6S(N$POrmTa`@SSCbV zx{BF}rlJBGoh*7etTDh$0IF4s!1c2mB?QKoL+fESo>)BlmuQngcS`7#Rq7r{9Cp4K zNrq?c9K!s87NoZ!;IP}B2C0K>uyuRf8!jJ&Jd*lJ<+@za44=mR08=JXQfae?_0*wO znYN1|Z`pc%j?@}i*4KtaB9vRPdKC2^voEbp%Q&FYxV(WSXc#8%C??OXM99q?XV_el zn|rXQ*;JUJuoQ2gWm3bc*`ScOyZ;+)j_nG<$5M&uiKavYqCD#ud-3qH@dVW@Pcfr5 z6Wx7K=2W4Mj5t7Ix%FOd$L*WpRIr?aNKJJ;F19jUnA<7T4nR3EeS?5U&|)3K*i34r z?r|Rct-7{r3hR7eeLaU8YJfWrve8o1+sFDmoBuq>`Lc>$MZZpHV2QO~4nt(^KA={| zIKmA?prnE&qR~3kL!@y(88kb}X9Xk(CV$YB0efBz^Mt3t#UzOY0%EKAXSO2CBA;AL zKi!|d8v1~9@ml>m?bbvfO9@^qf^kJ7fZk%U zOcYRqFbL>-(&;qAB#sX|IS^J;)}1P(pnH+*U)Sof;cFESKD%{dZYOT1wpX-bo6zxY z)ImoN$GtY5kp#u-AhsRX0Ac{KBzBM3Js-jgf4#(yE}t}*Fo-}eTMdY(8u}8|ulO&g zZP*PCY~KcoddrxQJH@VKqLfVNOiA!q;Me32`2~L@EmwaLhHUkb?6kzX8RfynlT_x$ zkpkWS*ke@;*W>r}`t^sDh%I1suMp%kLY}}SoLc_}n?|h3`}hN{2B=R!Ha?BU+WUZ& zsO0gZ=N}CcI{}+^Jtz+9+*gCyaMtXd%{|NPV_gf4MVf2T9*&tl{-h-5Wnwzgc8^pf zMnp~f7&H!T&bxJh6mULBrAsPyJrSe;97CQ$DEQ$NQYxc+o!zQbzYs}CWbOU(?#I@>PZ6{nY%f6BBw^<4ZPzE#PrPl}M`h~PIho7>4? zGFY4wZl@&3egr=GstDpv3>bL@vSWeZil}g$1Su^oEx+SnBzWlH6sHSA{_SKpH zl_RJnXe8coLa*=PAt)4j|d3 z29=`;PbC~O%N}`sPW}muraD%Hc{9r-GSw2}zlpdH91&OCy?m zS*h;8{T8FcU>+6Zx5uv$sWN3)1h7>H^jJy&v-=A4W7Q3`A<7|dwH$826liQ=C<0nx zS@v`N9{aUBfQpZYLSRu_eD8s^(v+y`0t_Tnj^08>xjjC&gWR3!EmM~5A>-(eBEmJ3 zx^#$AZOs}uzWT>}aG*^6uUEgMs3?OP#wieR2xp$%LfE@ZdS%~ZDwn9r9L~?s=ZdZ@ z$|Q@m_>-J+Tbc&kSNY@F=tHQ1d$s)lM;87NXi6g}{p!bWS0^CflSLr4HU*IG^) zwG}E8vD36UKG1$qFcYa3hw&12gO3sa?g>xW?v>Ukin%`L4Cw-p`3&y&4)OqEsojf7 zybO}YhLjgfC}K&#sx!Lz^_Qnp?}+K!T#m8A}sL zChPB~jGs$=i;04Xh0lOo1b-bCF-7+<^jhdMa#rOZaSi2y_y$)!3Gn8V;+yN+jOQT7 z0R|hT(#Sk737O_NZD_$gP5qK5B2Q8{aXt;w=7>eT2IA;PAtipVi z-DfY7Q?4M+`8#Q}NkZFVOnli7mmmdL;GW8`%&R z>p7|y9V$tZAFYo2A)OO98Sn_k!J4=0b}p+tJ#XeAZN_KY5QpD?YQ;L2);Od($Hl9^ zuDnsYbJ=bC3rjk_Tz0y6mXkK5T2pj7^lZoDUd9W@gW1MoKM4;BM!mYQal+KTQOEy^ z5bnKpalI2|e&5fkl=M;CMmA`)TlaICuX+DrX5@fGyc&Dz)^X8k-`FFozATqG?xPMS z)9X8hwVv5AO5tk@+l6P#gz>NNXS4p;Cp;cL_~)JYjmqTq-~hkcqT@^T=cW3;aka`T z9c=Tk`&LNA`|W1DeBo~Bnif~8i3-b>4Sm||ygwjpeCE4T$Sp)4e@`L9^k5BKLzc5E zqC0B{O+wWrY6A~j5(4K|;MWTiBn-g#)a69LtQaV;c!%Lu6iSx`z( zP?Ve&QU?<^gc{FI?Z?6&y{?U~=zB8SiK_ixopx3nU*3$rSamNVuo>^P={ZW!azzEu+&e9S$i zD}m7G(5T)hBezH=Mq3gK85GEaGo@zIf?d}zf@9XI6iKqk6r=!J|9{XwSpFxt~+ljtx zm;*kt3p6P}T>=0^tW#H3_+X>gd8sukzu+3&lawnx-~y4P`vU0vCnq3K+Gl1OSZ)^U zLGsRWWe3H699Lw|dGE7Y0L(4ZL-Z3Zmz5`ZUMLF2kW*nQh622j%Y;#aI`X!2azo($ zD-7Gc`(KYnkOIP^6A1%(*`ea^OfFmruMEV5()$Xh5QNS~+o(qH%kR!{g#IU*-`EQ3~JAfzdi zR;|(5qeCiynP{;UArN%kaudfwd^X4=TTG+@vo-PHoUSyzL{5zu8-`39?u62%|8@W@ zgb|Szxo?JBrBOSXnns%olUcxLmYyCF^cvN;{h%kPud12A*t&w}QMs|{T&4&*EWDh# zmL8dY?*_>NbWaPU?ka%z!Ng@_b4lJMK_2_2aAX#^ zEHO(#<3kIHJz}=^xvmF*hm)X|GctTWs2tKr3(}vGZ1iyJAUhI`&J50~hXk6xyYW^A z>!179EDve04^ua*kUHq@rI>B8iFEepDhh+PZUA&ms{A&=@^aEW7&}JW>@yT^<6T=@|LOdN;63=#xyAK=jz*Vl&F*^FYK^>}c#PB1rkZfiT=uCI z{aSx&^7(%hM{AypJ3p2-_QaR3L$3(4zwR@J^l+2mgp<%J z9X_hi?35%RPYLBY$_T`MnV?nk5{%0XJS7ecHrLV8)38F^HGs-~o#C)+3@yN&t?s*U zfl3!%sRJsJnMC(!dmsawebl{@Y@hS$e|9|;&7|~9*^5)DspzKD zk^0`{zLCgPHcG?Ld$IvS;MlP0;=jK`2KcC+bcTbASu~_z!c7}xMpigCWvu;LQN*a3 zq!eoi?ejd{-wvKE^i4X9)tM>9`NTxhh=&fF$-fhz-X&e4W3dwpEsY_lft(7Cq=E>) z969k3z8rBSvI*#}n$)4PX(>%>gh@*4lVlh&i=sklsO~37x-h47zv|mb_d6*dWr=2y zKH0)m$*ua9rsRsPEv4;-vh|{_L_9X+_+Y%$-o&6gbDVEtS|tii-~>ajlKKVUd7jMH0E$jv}!dnbxI8=4dVDV`5prsbmZOn&#mRucO!%J|_STBZsH^scV^Flba96=Jp zx@AYb)qnUyI%IbyR%f%0m=sayByP8}#q9k3NTiI7vbkf?awdP#^1|_GBv9wb3RefY zDipxs{O?GUZO)!(FP|247}27qkoJ5)=%r`T7#QwcmI?upK1u>FIrOqcv~niw%qui_ z#;7%npSU&a?kt1KoQipbyVr!Ekqr5$ft^)0t)uo|v8O*+do%*GCr}nN$T4Ued#Y?c ziI9+kBtKt|+N!8aS{x*qOF}R7M>F-VN$Qx&mocHk0QRle?CkUa zyGlyut=Go zQbLX+<54^njaqfS4Z(uV;s5RmEgKc6!b9d3Ieg2@%Kwe9h#Xc_CKgguxL+%5K98}{ zL3EN(s-#Gye((CgFGNaqJ%yNyL3bvFsrv@x65=AOB6`L9MWEk-bE~#>iv%C?0YC*E z4S9U?4t(c9gtnhzZ?e_tWTBl}`c^-zQ?($Jj{n$(Ou}Ojjf+tq7IBPr%bIoHavVzO zv;?Ij*smH?P~!+h3|!VaiaG)^-J%cm;?O64&^!c{I4z72dkFkEwXri6jCM$YE$2tp z9_^}lg)%?P{gs656UNCt;j;6Dc94j5y8dBelb1c*x@aD2(FPt+t7f(j_YOHE zk_|nyd3QnhAp1$&xfG^pk)hh!SK7IvApdK@h=v%)U*08K z-tI^8=IQjhporsW2K@tD%C)PknzlvkG=81gsRlzyu7@Sl^oJEZNcsIa`5gMN7+@HM zsIdaOzx$VG#Za@RECQJ%=Q`2}#KoQ6EVjU>63l>xs8fZcYJ7J1uipTFJ&WZp!XXsc zsn06-sG7O=6LpYlXxAxch&;e(uASg`A zC~d+ZjVSRt_ljxf2(5wi2e=rcha3iEFO~i(bWVN-O#Zk6{tzO9F-5pbYX%4EPQAol z5L^Z1^@OTq%e@G)!&17*HFw-n`~*lNc2$-XYI#8Kv*}sLMOb$Pj5fJF#1j|-v*|LE z-hxt8IuArsC~DG#X7ZzQKqXh8WPyp1IQH-q#L&DmP>H_RXcE*Jcr|7?<@^~4l>si@ z6>E}Ykb44p05$d-P}k&t46}>-A$+#~3ezrjQ=yz1KqHS4 zjW+7MdPuHbD0WX2e4NZ)3Yk_naRxKJ;s;0((iy_q39Z&4HOMw=gl3mJ860(g<)FQQ zUIFIhcpu#r>K)WW~M8uLv(r-#pa zO*ce$g8;W5o`@L;CkN?V@*!$zfD8T!NaIRtoe|5^ z(&-`?BGAW(V6diieyru7kt#l*`GQ(H^enAB-*)vojpgD|!vr_^E`gdq=cOn^v+lOh zlCn*q-EJ&S;gTN%@&NaVfM!pA*Csr6Z#A08Y(b#@KW@qBk2pPPMd#FfvbmhG>kQZ@ z%%ek`9um8G5DwUl1cA*54P6^gCISh^G6a?Z1v2>{v?Mct3Ih>LWHAPuR!TdmW6(@g zt^p1UR|(gV(fR`xkd+3F>xR^Z2epE_GoUOFyz{uQehhZ-3%$4zdiHiJTwdm z)gXijB~J~Temr5Z7gtw;RKuwe_$Bmm*?gbiLR3?y_>+`lxZLBlWTGdP7D(%=XoVo- zKPBve2(W_Hv$orAv5Ab`4SR3_kNKKR>>xDET`wb_21)}JNz~!wESSv( zg^YydGb|J)A8b@_&bm{CFHo>?5aE5;b_-*K(Z2EqBh76NGns58XLFZnVrcT#kB(*_ zuK~>`mBq5T9{iXq>r)6Z0XZrS6dAf49%lW6Vva5J_eJ7*9#nAAf|x|t2;ME>x~vg? zS3wPP!xM?MGKdXZp;dz`nB`YzZLpmQLzfWj8alyMSj~_9@hN`M_i5MWxaStG(W+zC zJ00Dq)u+VvvP^zowCrWp%pdQfIL;kPp;jR<%YN+`e^-Q^DU$U!Ih^lG9{7WL_-bDB zcWqFJ!{YSsbf=q~A8~op^6z~t?C-CBe)zuD=kuO}*-roNdfeMj@!8k6{?+$EjI&;T zrkVGh?cq7^kb&*y##Hmzfyhj{%p4R)c@kI=g+5orVc1M-Ou$3(`fe8 zl|+*KvHf3_hqeFw-F%Od&@oWHe(8{N|KCIXk8cgE@|o7G?R+$vAxJ;*{rQ~dUA5Zp zJ3FPP=C*EFf1%OndeG+w?h{shS(*GvpYx7yQ$qdrkyT|-+Q*Fa9g($ahu*^OQy-UU z+iaDbxdfVOs-1v*^Et$MTcuafxLm7UB7b4)o%LI>$X}B`)QC*6U zd3<=^(wxiXsjuBZ&#Jh*=w!0Ru8<&`)+y7!xYW#OYr#380_wm#^n_;V4XU6<>N1x> zG-WTwwC|%50?RIVV=oK(B^S%{Mrob31M7k@{Zfy=%rm+cYaUx<gA7aZO1oP*WOnZ z_eOr7hs4*tp5EUmdX#%+n)Z$ET*cX|AKMHU;( zF&d9sK{Wj{lhF|*o-ED|8v2}L2OmFcJ}`9TzVFE2H`O!>dl^5K_&A3i&bLP7Q?xLG z@4O>N+G9Lt$JS|MQbzkOZ5+s*cXmf@uR$FEXUysrDh7Y}aI`+l> z^i5x;WL!vYwC3c85ph3QI(bFwY^v2WzCd%MpiDMotFG&e`=Ok_l=F_~Z2kC7^pEm; z8$P@k%4+L$5`{P9N7&}cf6SxD2i2>?0+R+mI9tax^ndNcv(H>fccvHbv!1i|@7kgK zws8gD55MwB-CMVov2Psc*5nAL%7-(d4R5w?u?kf*IbY{{yYkMW@A!|&G3`R7kGrLYHtWKR17q^=|!=Y68{w-~nU;at;{%_y^oM&G&`sppVTiPz; zcYFlF3Lr*r=(8dP7TT->SY->S-;^fc!zLz=J-xeIE za%T!hkxcYQ9)i9aj?)y4uoBaD+I+^kuE2zy`a|qOE9v6xU!TUm^4;}p7H{LwY`wrv z;r1oX=h1h3_miqWkDh2X@QrWC*t7O@R*jU36j7(0_POAkI{5v|&#$V--5;_nN*Bh^ zC#~;z_4Bh{$%VVG)H5$844E!8&npRao;Fmj9-5QK(Y|HVTW3TYev{g*wm+YzE zukQLSs@X|r<(rpLdB$tf#M+_3Z0F2?tH%akuTFBlzf8e1&|dFaf}Io2IkV2YJZg2> zx{ftFZNEhHEQ{}6wD9EI{JvwymTX|H4(Z<5F@zPA#m1L6(mF~u#VxqZn}hYY_%*K@ z3W^;Qc|@lD?nM1FlQYopAuxaCy^L8wsP`4Yo zZ}=##&}>`MhUjG(w`Wm%@}@eKwX7O9)P3(`adps+mXbdrXV*18XtC+!UYqqsq2OeNsTuiA+oS!a=0tgZ6vjXOdca28UvGAOBejF2?ed*n; zWxJzWh0Qw*X4aICnI!z)he6j=MslwH*3m5+&z#z7N)Za8Fa9(Z4xVNIzoyH_1uHu} zPFU5(iZ!&E$%Yrl(;nKgJm7n~kZZiBBb!$(qZ3wlF{i!wGY0(*5y7yVPc)czT0QdF zYR`~29n3X*jd?J;rmCh>i?Jf=RhKHgsv&YGrJ>bP5!-5-yj7 z7bSfDYWw-&T>T&_hyI>0;4)uT`pAa%-Cu-iLhVa?Su_QTnFmpkPQS{YPUwxn9JcvA z=kjp`3{8Z~X5P~h!ly)MNNeuuW5gMlJ3SAf!T9veBzzi#ha{_^J%Hr7LCJh6wK^^O zBWiwc#eNu78hd-@{O!vdHk0x@Oao%kUw~kNv+`f#l>(^B=7K&&5>D6nBhkrJ<4Aj2 zK5eq4tegYJ6NhCSx8EE{D!1cA9B^C1j45=gd4hc3I2(F9eM>bNenI>FOXY z?GdKkn&y)v@+i%8oQpG6?aC-B7)*EFTFhsn&P)I>`` zr`ta0p9QLEx(Fm2rKNMkwG#bUfs$IG0<#`6{s~X|Fq!CYDx}*Ql=S4GhV!ubRF$S_ zh*k%X&xDLqxpMK5QH-DPcT(42;|MkUqYnxWxnK$MkW)AKP`*Lx3GC*15vU*~pn^n{ zf9|0^LD0+CT7}>1F()9*+lYKBJQc2gPYu^YRT%57c@y^u`oekYjS80Vo!6gj!V;WeZ4}eM zgV^)rQ7SMMuw5G>@j3^x3@4Y6nC%CvmGW}e6Tl`=CTPF}F+$j5(}J1q2$&y$r6D?` z5Ql@Z078}{=28wMZ}%i}LQDwm8sJ1$+nb$Lu`UbGt_ZRpw20%bGj^u^kI82}-8W!ltCFM~CRng+cmFna`$ zZkguNREOWgyBdb)-_WdZSFuZzBj96(*H)f8%(4T9f{9Sr8Z*p4{9&_J$!8_LNHF%Y zB`Z}8UZ!f_YzK1<(k=CaH9i1qjybI7ryO=E? zGH^{HB$8VZjYf>O0*(r#updVlKIJ^88Sc&a6%au*1>inz zDdVTswzzAWUOokeOhEjQsr-ibW2R|d`$iQ9Mxi(lj~K8w-7+)o6h|S>Uz2 zdck9aMq%2LyuCGVOu_uwP1JBYoIh79q|0c0iH$M^3*`Z|3sv|vGhi!FHyGptlQZxc z&V|FH3CSSu#XVki7;p(o)8CVVly%Q7xUp-4_)OY*Edc4}48zjG*K&AF5(BZuMqL3C zCI$LioX*0Qqb|#}Z_uFeNSM9J0`N6GV|c6s8FQk=rm$vI6_NmB`^3BQ-uEV`HwQ&< zK#C+alk*CzN|3+nmE-&Y=I!yIvAKec0X9{5Z0MWIAhiivNuAHH0Br$U32rc;m1GfT ze-DH2n2_VASGWpfnzK<`&T9_|1T%c`Shr(rA5dWpk;HbGDfQIWyK3*QYA>@=ZX#s> ztO>vN`q>TJ_KgUnw45u;&7Kua)Bn(M5^!!>8N%acr;f4x~_cHpt76uX~_6hWZ(KWka<`NUvS%{HR zaXS6!F|!1qc}Q4^TgqT^JkkYIN-+}!4U`ucRm7zq+AEBPfs(D&&p?!*h!HQa66lBR zPF`1+Ka|}d*NpUwq~0<9=+Nt|4Gh-8Gn1k*Q!pKX&tk}pZo+pw)`2l*oKE8RHHa&8 zlC{97LBBAIO|Szq%~bHsXN%_dBc&dhf!q-w-yya$ZYjcrNiXmvkKk)2+# zO0m6q-<~&kvy4PsplhXMsxUf$p)@;T2z)79B}XZh__WjZrn+5V$Q}htXGFA< z96%PPJ#7OlTD2}~;#Bu64G~DApp~?TWIIpzSe<%+cfbgQTVU=f5iHoIMvLNMbC}$W zxc8c!Wc>6lhK`+K&XHb&6e>Vp1&~jNa@9umWi#apd@=}0+OA7>V7)zAKtm4FUImyJ zhVsa^P7u20{1UnXSOp+RLX!(cqiFzym7!}@A%^?MfuN{hbUk^%@cc^#r$F;2VY9QS znKCrxeJ>%4iiS=Jr(fzS#i&F!bS&kHJ)5-O4^9io}piDZ!(t zbql`2D8V*dQ@X?8=WvYNO_4}{vHmdB)b#wn<0Wn{+9>~24Tp1kXpDoi1*00FB_2*4 zrTsIiQ6X5nM&P6ya(I|i=rvI4^qj6%Em%O;Oe-(v3?l6#8a;e76>H?o(~g~{`zL47 z5VxoJ6kM5844uy~6c`uy!$@2-lE<1bRk)r^KsZO-0AL8MQ!(V^f|bL-8by2|W%_R; zX2V9XQkh|yM;p;W=u6^Gy>w`f|RkzgBbP?nE^=cEOBKgWmuq=CK`@R>Vl@1|{0hgX>1#L|yADux%j?VEI`YAc_kv3_j!{uD0 zwmVze@jT1!S=b1hw=ot6^fq7a>L4<|qNSvb*Gvg8Sl!l8xC>PtR0=7QomPD ztg>l5s;QN&x$)fQUEd^pRn*F&P17|R?RQmt3O*qozD`uUuF%qDLUzgXY5nX6&7BYX zcYYgaHaoiKbNjuJ8AEYH5BpdDwj$&EJ=NA5J-1HWI_x?0&pKgx!3>9a58k}%{#pB5 zU#3OVi4dDf?e{N^JLh!r@u5+IU9_1V*Q2c7Oy4jg?^$1COReEg)w-wEBiv@{c+$+* zn*45m_e<|}(Q$5b%!wC&Z=?>H|Jl!8;IQxRe685%Om_19A0A0%i;`U*_cHrNt^N1Mil3F=j!-v+dD6lHrWz*MPdW4(VQ>wI@ zxocC`w-v3w{YGD0!Q%&rM z{n8CqsoR}-uSDM3o`cnKmqcB2EA~vOi+p!0FD-9I;00}acl5lM2fl0 zbf(Sy-J=aN)RVO~+h-+AVobJO`k^ZeRMg;x@?~GA6ny#JD{I%ZGbiUBADi?~mcLKR zq_VYhCWe*;*bV(#J%?)*I=^%E$C#l%{%X&Ti*LNMgzd2JNL`}f*tIW-gKsw_92CW^ zU7B|FEOCFcc}`JpGq-J*ICQtLH=CZfp3|)@+<9KQJ!AoWw&4^@fOJ80_JgA4qB#v`1* ziG{-VIkN86(MD?>(ypFczQO8S!o9ppPSd~ls}1&)tflHAsKk zL6FNb8MdX_!QVE}8v_5i&ph>g`Q1{v&8g8v-{-sP22@+wuHC^Z4RuNReejn5va|C` zUhAZ{){cI!eH(bVc;5qs=;E@fj0f{BEUb+CJL0d9q4o%QgPv<%9n`GBK^jL5<^_H-`c-mFFX|!;cDc!`1`?!0@^_WjrKncDEg4{d6ZY<+Nhka zNC|bS-q_4V%bshFY`GKXaGJmW+juj!*neRE%&XNu{w$j0;69Qb z+SglX&{J2Db0fZ=yL6V@+O0je4d+FkJ{VKrFhj#b3TpJ*(uL)9^cDPd@tBS@*NYU)+j#OU9^fT=?gq zFYgPVzwXWLT|!hnkN?3bSRC8(qb$ufc#PZ6z7hM+8fK)g#Rq=enyfFnRHh9&GzBf1 zGBWgf_2Jf=Cb;=G?{m2KPR!)SKr zJa8(?oZtI%#1*BcfR=sW;p6zB%bciy(=`tmhW)*JOoSG5-c{CW9-LWn>&S_J(h~~4 zK78!pt?S=$m)>?YAo^N-@T84TPrlf3ePh;-XV+aqo(XSx%$VghutPE1X~u(!Z~OW8 zByrzHmibN}61xVhjfx#m{G$~9DOGpM=4t+QLgkN4nTTv+;gT?V}&R63Dzx-@)Igu{l{dU`+#C~8>hc=qJQ=vuqCYMEg*QGZpOF4{;8d?f)_T zGi_VY;Q!~_*Ter=no@Y^ujQJcNV&(>cf0m~D7xb6@dKH?uc+N4!IhSUkOOG}{<5{)Oa;jpSrAu>BExy?yMLbx^*8n)p!LyA`JHV>MdNi0y&S%~=q z#DGKR?b3W`XZl>fQ-~o;5PdH+k`VB-bp6{H_Ilvw>jE1tr;LoE4l=TAlZ)`(9?0^h zH}iPd3`2adbCY31Lkq!3&aOg&x+pE|RW9#S<>~goc6p-Ptg*S8K~%k<`=~_Vwnjb+ zL%tzu$;FR0Mb;h`bRE$I#I<`P3^bk{e8OfLbo-vr50mYE3v&uIhRaR+B<<`ax8)Z! zuSJwqnLcZM8UG+o}nARw~i zlZ(8Jr3#qjn`wz>jiSQT^(sBr_0FzHrk;lmg=u8ZXrZQ7=$*cY(DHG}xn^GE^kAm= zDeD;$N^;T?qSP8Ym~e=Rz4yqV8L6lo0X$;XxC!qy$u1iC3SaZ*+s2V%Tu!nFb8eA%Om5G5gt$c5D*-`f(BE9N zxuKCWCK_sDLt?4Z%fBFWUBd#GX-sN5MH=y7Pf+JVjRsHDY0uk>f+ZRdaLx8q=k&j%9*3R;)g&LB1Ve?WFI3@z*_AoH^5E2OSVU=| zMC0LGJ%z8ATBIMGt?{80d(gPDiGP%<(5sLWfR@3S$P8pcu7g|@5_P^UcM}y)=LdSB zKg3IR!V~SudbpEoZD*lQ7hLxlDN@O*%xfI2nl`sH=zatLi@o;%Yiim0hj$uDXbHVT z=tz+!iqb+4h|&cVA%J4R60m^+3B3y_3aAtj6$NQFl#H42mutq0zpJV%l@|a z+lN^NXWMQ*qBaN5_ zK#`Uf8v83vZMj)cNq#!u14_ISZd8irY_cfI)*qieRV^coNdTuOuj= zun2KjB8dz|fykw;;ZVMiUN95j(#(L0!n#k%O(T*D%ghC62%L%)WH6bu%1;hPkW)0F z@poPy21%Md%9h{pobg5vl0jkRZOCIq7K$TJsZji{p;p4Vf1G#}qU6ArS3_z&-Z z(U?U)ELajLhvTk6qK6C(;f_SyH@wvo5yw-AmIMY4FEZEEf|Y@)UagxD^9>2~sWqr%=w~oeZTjq!cdousn!d zXqs9Es>mu9!mPs^Cbd3A+`^!shmQuc1$Z&s3WT+2CC$v~FO6_AFQ6L$ZGtm}bqBI_CfD8k|abARMV2)D5{I+swv!+V_eCAvkhgP+VF zRUP}c(O(^C2+s(8pq894#)2%YJ+4pQ(`*Yw8q%O3Mp%@Gmf3z}5-nd%yr@~^A_O-< z;BrG#@FE6I0j+O}kR3l7RYx+S;jPA5&}e}k06d_^ghe3}udYyM&^)HMgZ#+f?!m4C z5R^4C@h()HZKf(Wg!KgpOUP${mIQ_6AZ}Jr>pq270T>8T#UC;iS!wnHveMEJz|&xH zalJZ%Rv5vk?)77Reil#{TqHpnq@-FhNHo`j3@mYgi5v93f$t;#Rkt=seS8Skvwuuj z)}a%2bu6-QJzjBtS9>>YP9jVEZU-dPAhZ*%vLEuNHHntjm@I4MnPa#a*nogs?3dc^ z$*MRZP&7yRxw*g-xl3UsN%XmuyoF?me)&d$b zjmuYRV={M&V1yWONJIU@6{7PAVhux3zu)#oRx}V0HcrE%Vp;@i%q$ys!{d#|83#p0 ztjJ0UiGn@H(9!Ej))-Y9m#FP4pqOA&l9xVcxsrr({dhRTYooyrh~?WgKO*$lcsVv@ zROu*_{cpCI81Y|4VqX%B66bW3xiqT}CJGUl<`}8*m>OW*!kL2GAJBMO2T{a8Nil>| zP*K!je&Lg=uM(2VVATK$5A{VRq)eOF?DEI9H>n@ns#Z#55uTi*nAxK{&t8khgBr?L;v&P?{qHt@4{P)RVJsDcNxBy&eL3#9Ntb*|w;#?ay z5N0lu#Pc`V88Tz6MREJFx`0yvC!$q(Mr7fZ%@$Xomw@tnpvf571x?19!p53Qc*Go% z1Od}UnWA-~{w|N=+=-A4=W~I~70eGY=`MSzr`o^+V0prvfFvPZh-22#MY|CqUt42n z@A#n|_WBKM-Eoxz*ZMRK@s%lT)+s=m)OaqcKNcGW2x|h)Vo--VT^rmFg@$^!_3E}m znm|C&4^RbXnhvQ*5CV1x-DT*6#O6TYY90UtNUst|qh3dxvpTd$V1>j1#^#dkSiGlQ zrJ0rIq+%D5h7+&?@Saibg`dJ}&#G_}AmIS5iSR_LdT3I>38|VxEb8` zzWpPhWHi^EmQdMkm0Ss#cYdsi4n0dBBzmd`GTRe3-++AJX=7WerTO1{7$)YZ(P3#X z#WU|Ux6Jbs?O?T@=tJan-gbQsS%APne}E?z;N5lzwl6MO{@9YV8%7{FfWTjlj{ZjD z|KW&&zzQnNe;+4g3J1?Hqr}w!f7B8*L+iyXsGm=%tE<(qG-iYxS@rkHO-pCU4EssV5yWRyC)S31nRS+CaWF$lt#hshE?3R4+3TR;OF$k z<3(;&x6|p>Pfpo<*up5ZTV|a zGq7(l(T3_rD01~=dSCplZ1BS-v-YvxJr9VNBNa^+$F@el7}8&BXg<<1U|DKLx2>I{ zr|)4JtjGy}Y!mhU1m5fb)!eSF^znpLnhhNE-hoVU3HB5$GqIl|n+>dMjNYp!T|0gF zo4?Y|#b=Kh$vSc(H{miw*2(OS4e4}>R_i9=o1dO(y{s<-*X+c=*~m4O4F#67gQORO za*dDr-##o@Syte?EzWu2Y(GkUe8RU4{dp3Ic;RGrM*7q`aha8Tl8NMv@x}FCz8I|; zL07eB)N1P8_4qHvatl6Y1u4p(>@Mz$c)Fo;`r{Vx$tEya#_kGMfV0+>XJL(4)r_pe z@G|vw9Y=8b2}eT^jiqTZ^yY|@^Glqml1G7`Mz;jpHptcW;=o z?Cj61SnCwrvB{*5{Im}Dip+9%HolmC=R4mHyTFSD;Jlyl>F#U0Rw+Ckj)p=97{ZPr zkRDK4Xv;YS$eB6)PF(0)p=z)-SL6vkjpL%Tlb)yT$}Z0@KHp<7v~tjrGuyu0et6aw zT-lH$X5aR}YbgH3fwQ|A3|RNJ^~ zN8QuD@i=JJtaNPnDsmM>48DXc<=WAsB;5E-IY~R>H;*m$*-?reT+dS)aMeBoQ^#`qAcErtShw-`HN;*|6T%TvjuImw*lG(axXmMb1EmS%)(f*8kbdKrB zmV<)Iq+^TowdfkVkiDOmC2B!xy&N}WA@jP|U8&oVbE$hxk{CQoFnfNUV=7y>b!G;ooQS?(7)M;U%Nf%CJUe?fUg=Cj z-g?;_>!FgjqYdD~rRzF7TwX7RD|sj)&btif%~NOJefdy>`|fh?_6~4yW^R^D1#bXy zUtSPF>R!1nm&JjZ@LLqQF9$|uZfcKA^IJM}r79I<-sV(+dWCgn)W?Y3@;zYQNtA3| zk;B)nv%Hr}a3c>@h`6}BnbW+(Z0a_lJ0h%lBas@tF9#@O z?Rfxsne9>Xn8IzmMgYwsmmLqtz5VXA`$LoC{PG)M&zmI#NA8>Si}&-kYb$+A^}S&I z&On>+PiCg~m0WNuxb8Aimg|~aUL(EwL6vgMg4D&MCpa7ptaY6fxNz~dooyZX@|(%T z69c2QwW-4|cF)dq@CI)lYminIx`*7$r~WqDcJWB1pnr(`vpQV=E4jHfiiWOop=Bq^ zPnDwl0SK`UrBTbKFuZXDK_FSdfd;RyN(E#!M;YS1>szn*S4mLhF`o?r&8Y}K28mO3EHAXUc$~^KeueY zMIMhNr%D3=y4?Jd66`=o9BV);qz*)46r~9+o|z@z%66!JFP6?mzm&cn*=#;AHvodG zU3$47sNZCxI;osNPCqXsV4E*)q-012x*0%x>oZn1ut=afGEQkGYW7yq!GfudvI1}Ee!1Hxf zt&kh(7@=b>NPxZT;9AcmjIz`=e@DyOA$gF$1m9<~ z1vD$4Y~Mj!e$ei{J#_OB?~QdQyAH>B+Gln64Rhl%!bVvz&E7Vfj**x~;hiC)G*K&3 zVj_=jCad$V;gAvi?lEvY)tj~Lk!XPt|0>ypA(CNWDGGrMkh|h_Q-Sd}ady`b(&xIv zniV?%aoIk!^pU=FM~aoE3SP5oM7n1^_k@ez)_BCBXopTMj64IGp)SYh*<1|tny3kN z^GDMP1S^LDEo+Hf>=Q#^^SK1o=^D~_r&Ah9{a>TRdlQba8Cpd#XUKnZ@^)GD(v8F*l$wD+XV<_nfO4x{^@ zRV5b|aVI}z!UMyw?HmiAK_VbPj@CG_pA76CKA`u3{BkF=cZ{G!KK>|=LD)VPes1%y zeE}n+swyBeOEGd4C^hV^-mQ&6y&l|mbDD9VG$D@!Q&3md=}$B6#yR3y&pv4S;a5$3 z1Vwj*khnvH5_Zv@XThcHwP0F5P^F+RAMafH30ObKt7{RqLqRxy13?;=dPa0h=D^#Q}O z86v?uJI4erf^hi*_TgumxUYkphm!#!d&!AX%Z+P%0!ijfgq7RWbWe(!X0<+Cw_7fh z1%pTXI`9DMA*H~eU<1V@z{6zosM+Lt$iKc@ioqjLq>$W{at7K@D&rj(I`5JKHEG zyh!&_uiKFKbb)uGiklnKs1GtGkvoNQN%`L0%wiuGAIAm^^Icfqp z3kd9XtOE;`#X`>9KG9H5fC!_O^%ojep#M{oV_JBfmTF&%(W44cC;-qX^9GYs*Rf^HMSgp zJ!6j9UsON~kvtopxK-h2k*s*^OA3CI&h8mG>-Q2t2)nV+KyU1vzJ<%zSKN_&kD~Yy z(Iro!a%>y9kn>HO#|(wKKQJB53ZjfTk;wTa_J95f>m>g+Z~tTV22PvjTM$c1qjXO% zd`j@$E*x#$X#WK|AE@xD|96Mz1ctmu)K%7zn!PMFQxw;a|IlArV(Vu^g+}8ktvcA* zW<1N>B^){$|MT0&$Y0g}{mUQlQ%x*k`F_?&rvS-lak!v2a^;&iBY%yeO1IEaZ9s`% z_%Oe;$_>j$E`EwKS!Oy$#*!T)YlKG2f4@-kd*c8AAi?qjtVM#;2hdPUy#4P`ki!y8 zCtj8sSGXB%p z=9l(wAl^eZkn>d}rG@scR$i1F!(S=lMi69Bts0uZCri3tkeaRDhQKSY&(~!qI&(9DQPtC6(_(XTY&~E z+o7QeAOT}101t5dqHLP|0=-gNbsb!RotH6jpPO0Ip!ERiWN*X|dwqv23gVC$O&0DFPn36v+cuAmx=OwojofE)AYa^K zkBMXa+83Qjpqy0s_RKIqv8FtUF6?t>gkmwo5{tBg1~`{XY;^JF;$;i zUM=s>nsAKsezkiQ8KiagY3Q(6~XX6mZ5Vz#XCDq#;PmZC@6gk;3QGuvZ?DM0_%jEZa?;s^KxHxVYrOdolf{)0hf&R&!8I|m zqF&tNRdB33&dclKQhIVdpA(Nnhle~yhKK%MFDfb51=OyG{Qj=->QZZru~$$!#o}b; zPEk0?Nsc5=e@7F{iiOMpcJImp>~|c#gJ5LEtt0x!+crRPwC!KPvt-X|$<29k!wU4z zW*(QeX9Mg_`<+A-rByhzPy}pDl6NOhf$3LqtamMZ1l})BX!0_Id@5xcH+>zfd2~d$EAvkMW00M+UU5=! z=5Jrmv~h#P5yf8~ylQ6F*jKOC7*9> zGcVwWq@MXYD-E#$_`!uwwDjL6yU>H)y5dMB^X(cH@n%?_)^9aI%|4RJ=y#I8&xui3 z2GPFe0)uNO<9D$r4lB^IMrOlaNwNmw>kP)qkuTpYFt~jGp5ym?_OJqNC?7mzfkD## z2hqppMcDp2n9CzoCti-FH@R&%ccNT;)hvM3KBm6r{*P?laupQ3_(AR672YmPgckYF zjpC6ozr10Cd5>dKjuUzM_?&sn^}a@`&M-euT=5SM34BmVSo8 zHpt`WiTROv7$e$Mx5<+hFEF^ie|m9DaW#q%w)CnSOv1%D+WG$YXReyS%;`=5xzX2a zzYagQ99KZJ2?Dgtrvk_uCU|64G4IaL04u9_Up_HPBO~VcgKil4!s|p2+xG;OP^Xgh zN0%NgWdy$*jK>&NE)dBv8hj=ykGCW+iHR=4#q#)+krVK*>XIcc0&^8>0M_%WfSnM> zpIbVVZZ2g=-727-(!~8{hN6#Bb=At9sLHz!0#1Cy$wtTUW=he{VLN1b;6ta{(Qn5e3#CrL(THu^O~uTBbNd z)`NdL9(|$ah>aB@#nHC1(kC-VH9x3?CC%Eq#~5Fts*z;h3EOvJ;J{dW0*>p|Ry6Y( z-<+0UuGNhleKGt5%Hxi_z3;1h-}yHv;%;8%CVx7zQ|aD0@QaS)0rE3+$^`s&sk=Me zE%W={_m;3{q=TSv0@A|ppAY+=pQm3)gMX9ZY+5=F*$TjY1;$8Bq0?P+V&L|JCungN zV^Q0^&AAVV5nR~vyfAU%A#p~uu~_=bUF;=0qs~(pXzKOM4^8?ZbHboCnpr{jkHz2b zCu_3azn}kCCu?$@AlpS4ISg}Z55dn(#m4R^IUgBRD6B%}#muZ)X-cl=*haNl2#CZm zc#G6%JdcO@0C+~rItrlWH6d^U2u<@s1?WV|P3gDWC!u=9=R0pHLZO%PN*O7H% ziq$dG7k$8sFl~NfoC8V6xTGexbe1O{7LH^-)?5>Nw+9)g{V<2+)sP{rK9?Vs2(ynV z+f~;usyXSHJz^msA`G z1IJZ41=nfcotpQibG8hr!vC-lwj<5N2665hU>{#neSKk+|GZ?I7d5=s4Sw6XX1D)yrloEz{R7X{X zOw$vuWVNc5O$NNR0Bnwi^P%!}1Gs3_ov-fiaPnBUq`omiGyVpere8#!J;Y!pS6&tX z54E7qg-S=w!io8Gy@eY#^Q6(eJXD$2zecyWAw12Cm5kKs<622ffR z{zRpHu{A77osoIty|K5?pkcP|^SUy&Cm2T-+AkszPcKFoBllTd)1M+Lxiq6d9RlY3 z4oan9`OeDTxJD*S(XHLDG+r9BPEjzhqV#DQ@>E2u4$&C9mFvPKbPAEo7wAnuKJd5- z_|yj$kXZrM2*(YTsZm=MJN1$I?h3X6o(|9}1aLYK~4;h9X43)+@@`{GhsLP`{ zB$UL2H$`ejXE0M}_aqXTrrPZ}Ce_Wwm76m!Zsa67E1F3>4u@%c1no4f#_ zgvTtVLf7NF1%~*q(VyT~t6fAlcz($k0q68(*+x&=X03z-Um&83WAAp(5%mV&fg?)D z6inME0{5!~RL1eF$#_$f=V~3I5(g!*K05>H-ljs#U`d0!Punq>y+=XWWJ8vQe&hOo zJiY(#A6kiaa7@Q8TQS;H@rrHY5Gg%zpgNJAF7QJVVu*3hG+<%}EDfhFa`rj6m@Mi({zrC&d!`L6?;{X0ONKf!rBmXfnf5EoD zdh$Pxf-m&P9^8RZ3aP%qth`2SuF)fGF4@TULL_eBnCBxO-TPdP=^YXq306|^W&~k`Tn0BRy#ocb zzr$+8Fx%h3X#uPZE8hy}_!UOfT>=WlS7}bXkwi7FKWB%>M%O~EsNZ(${>B^qZ!WtY zJp3O|A>M4WyJetK{A2-NJHsK^MvVU0JN?E2`@y0rpWk~A(tNRD1;N(HQFzESq&LG| zm`!r|xO?lZ6YC`x)?fdJwz8bhXT6Snlf*%EW@4rv?|lq5)gb!uPH6AeWcK%ReH{Kl z;TIf#!F2NG=7}<=JY~M6G%b9J+1tz$6W65ixANcp*snDvj~P6zKmFdPM#o#PW|Oy4 z{psn`)5q5HdT^Hypnu$2wD9Tr52d5zdSUNR16(O_V&&OE*Bgt*tUnC|#hhp=9jMq{ z;ZvjkgV45rr(*rRLBN5UKaXEv8CG!28YaW)YlUah5=9B~=hZeGFj{PkxwEo38)ePf zuHwjN@wZ*;zZp^geyshTQm(ba>ep~UL8#M@APF7e)=6nOn+~!}pb-X5I{wYhJfH9UW#MwIk)eYd*YxoFvrM!J19I zd2rn~wop2pH|w9;)?X-K|9A=5DE((nAY{!ipWI-t67BEjDP%!`UUr=_eV<5YV5@}M zWrho=ODVE)>@%0+o_LnPn2+RlYckvrbMo@|qDak?uDhi6?aP-)3`&I;>h_w!-UaG> z%cUJ;+|c@V+aMI z)uyfFQUXA<(iGE;Eol-;*J6?cx9cA?n@zl5TiJHM|=(gh~d6N=_eTxNmc zqv!svQt4$aih0qoA}&6qo5s|y?=agmwmk5Ul}wClKywqciJ}|-VF&cDQ`V~FPn)El zv#<{ShxzVDQsb>ZEM@*RZzNy(pEhAXmCqdh>B1iuCacnN|9*jkR{dkvKa~=5?ccRI z=I*~qK_~pOv{l((vWLn36TROm8HxKvWf`=8VaY1yUuqtO`Kdgn<)0@~mcpMn!BY5R zwU{=4$Q&j8dr_-c^gkNKIQREzumykXj!5KhoPhiN=soy>Rp>3y#E-W?3|ZuFPYWbD z9bp9*en`&!6+^ShS=y>mGOX~m=Z_w4oE#pyeC){K=X7J+nzZLNX)Q+{Iw4d@gfb6E z5-{`SMUv+{EB+~xC0DHd>wp(de|`*wJn^0$uq@txrQ724vj9L0YMSRx}0V2g+BRNgp(Y+$GERYCgo zcnnyvl99$Lp#fv;C#Smt&DNrOyUvHpRb8^UaFnvd`DF8CRU30{`ydUuP?FF~pD85sJp2%6{tVFZoZRew zru_lrAouvGXIpc{toF)z+AIC*fEG&lTSud<)G!{V(jtYfgXF!#(w1$4o@jS zghzKa2(HB%!gIcLZA57-l1g&uFTsNQ->d2)Q973e`=57@j?%x*dhaWKQOO+_VQj9J zedax9<_ONSD+}-u{!p2i?-Cpj|}5u2D1Yh?LtJ?~N+SKa{{gO@G@#+p;vnxy(k+r<^S z41M8f#Uem)Z(ZL0%Hkqyc1@OhNNd(J>Fu7KyipWhqt5;qnq2R-{)vU?6_jd_#%Sw> zYMJCiAUMQrAUV7YR?PP?X@vrhPj#`TqIQxVs-Ac_x`L@6b0H#lo_JL|7$qaZ(t>Z< zmwuE#VLWM|u`bc4i=Y*dXXDY(jOWEZbGB3Xu!EVFFXycji?M}g>7kEOaRGJc*? zxq1<;mq94(pSzFnlih1e5B)EWzmbUDr%g5x@C2g}dh!h)W}m4Y;q~PE_LLC50DGSw zCUQe#F?;!vY9ov&mk@N=^vc>ol-sjJ0uEK`(ut#ch@guiAa8M8U6Z{>hbZ4m)JC;w;v-Jlxh{J>9f=&~IV?Q-Iu8 z89`30sWkbp!oSt-m6h}Al=@18;sWiJ+_cX(4n3^1FwE|X5kdGX=6X$j0sXCy+@n>8 ziw`0kwogyYw1TLpw<2`GpjWKGBUzg`?<4MfD|S19@EqTh>d2M-46(bl;#Hd=A6G8l3lTsZtyP)8|7`=Qja@#A_?x5Nf89 zH}CPhetszYI~2u!vSE#bglAvB{OvLIHPWyj#=gE?^P2G8(Um(J&u@M4WM59oi=8zb zgzRtu`KASH?gj)GOsr^aDMtg zE3leAaO+CjqYtGc&xD4YMf^bHTyy^t%fnS8<+F*mO>SKNa%s2UO&y-KNr?-RhmE#F z9zuMw!Vmi`=(9@J>nW&W^dw{{wmNUlQ*Ge9Gr) zk{mn0ru5%WGFs9zTb!i9G}nUUhBlvaIi*%S|NNtZ#d7!4@07NY&ND*0s9+LIoyg8d zWQ4!|(zo=%+^ddu=mg!QZ5uwrp;@P+B722;8A)Y`Z_-}1*1F`o{>UqQbp*@yQ2otz zdM_Y!%@bYJfBRAamB}4d{<5Ir*`)o5^_m?=bEwRFRT%=f$embek|}gks%?7ez{97o zC;EZuasI6f2&#)?nOO`Ab@fDe9@$?oY+3| z0R(fV_#BJ%TXzo{^52Tw>d7{p(sI?fqoX+&6xgoe_1OxbT=){J?9uS(Dg2B_+vo~Y zlvJ(oM25prJ1&wbdW!SKV}Dr>p0%s@D(QB4%c;ld^?s@k&JbfSrFa93rT4JvSJfjc z%M(U!13fzHs0n+ zoPOCZV`aHI|4K%^?OxPigFo-3(^mzQN;iUQT?qmX{1zf$y*O&9^WiNYA@nhmTR3)( zea!t#53_I25=6Bw;J%iGh@8wu9~p4SY}ftvFqt|mEp#W@rs~+9H$Vw#hjo`(+UD5~ z7|1U1-1x12Z=JK%W>;3ayy&(Q-$th*EDipZNq0Xbp97Q~`&O~e|h zD1qMC{`@lEO*$Ad@6_BsrYW}?jieg4%$CyWLI~UwuK+36HK#WghxIhRERP-w zOxNoUhtbmQl1(KCqA`yHrG{oWJt{9}jFl~7j?BE-#jMI{y_MIDIF(sD!aEDrbE+9n z+-*ONCcj1T~tu?E~v~xh}CTtJchI z;eK4IC?hg@(}%KW@_xkEZz0VOF}yQDn;L*F5G+KJSF7H!`FYWJ}h|C`PLO!e@son(yCY+`(t!`bsk=xdFz$l${F@Bx=XF;Fk z@4@r)MpXUnmS$o-UT^s>`UsweW-#OV~7Dj%nxT>0&)pbHF zyYRz(zS8#At(^=Quvd|b@sRN>$a1h)mecTOJtKfMzg)W+b`LPL`6+?Nyx_I9fZ^_c znngoOPb{o}O?3a~rQh!PEn)eW3EbwF!41U2zqp0RJYU9IK<#G&`NqF22MfzL{bd5T z`6b0a5rAp~6>V-U^2eh8P|9|!jLC7>#Qhm>^taz3$rQJ^9=5i7@@+t6=wY*1&6pJ!2S4 zaFq*jf#(K38;r(o2)DRmc5ag&$R_C^Xr4D6CT78e=yAw?T5K@VtjUilEvV}%r+IQo zerfY&LkkUX75$Nf*$Q@)TkQI3^`uEaZgtZh_Lf3YUIIAA?BRz=jpV)#w!o)@EMC+F z*)|ds06;aBdv7OwGa2y7)FU3;qXiIbJ}b%_g}v!yY!Vck7-i*duEHZzXLsQWxEAGu z-?wMWdWZeDhx=?W8lJ2xXyL-YGMj!LT&r-3hSM>&AbYCkrRNhd%r=lIVbKLP1-h0OrB zM7)3sAc{pb9_Y)G_TIdO`4x%u3dHS2yVF`V^mQIw^qi<=ItiaGu|00>W?_0Yhu7f+ zTO+}i5zyf;oa?WspeL!mc^Sr=x<5I!=>}W0Bg~~#{mc>?W9yt~eTG(s71$1#9k~m~ zoPwW~0XNR82C0>|+=k;K}TCp_1(?S3Un}O5Yu>^DxmySJQ(I1t-z#tx3cojc}zi{0MtGOY@ z4A)p{zbm%>++`J5a4Hma3LeuYqXxfQC90NW{}7Y~6w;4)LfE!=#Y4obB3&!OmyOLX zmzJB?1O%rh)IVK+;QSnWWMgWaY@AMg@HewrRsZ6#T|5+2BWl<%g9Qb(;u5h{8wWfe zWMmjv!^hT-W@$?Ds1r16*;+Y@>s}C6CRx@uowB~JTvZ^7H%Um8>kBt^P8wRj6D3N} z%7qv?wTPC~RCl1e^d!8cGf@P$jRh;r+@u$lrEe8$WqI~$qaMLrt>B6l2k@3u&@tRC z^>$@dj!iI>?Bp$x8%os>VQOPO3cMk`EmgMf*=mNkO5gJ$bRNzBWEvg1ZsneEMT;Cso6~B1I{Z8t&){=RfVk#K5K}~JDqzFP#akQ|| z&R;(@f$rN9-3>o)+=V>5#nW7oa^z*{s}P$Iu#x;~fB6o_LjbH~9pCAeuA*q8TO!dI zpepC-O^XuD)rSm3UyowUq_FE%iO9$lw5BKm>vb|*`gR_Epy#t8&f5(c4A2zG&Bc#ys$k9ZunEM z9y2rs6Rg0&$VVjaeD7PQrSIj5^0t*-ARjnh=op&K5Fj6LBc-b;o;-V|)BI4P{>O*K z$8wOuYdUw09M_gUig0vFyvAoOD-+riLPpsNQ{lYBm$u3MO}10zR6)L02FDB>tErJ| z2Uj z$r=)KJ+>LHS9(vpQRLd=)^u5!|7caNQY-XG>|uV$fKMiNc2sqLWJ`)~Q{@eQV+DaD zN=WGI%AHya;(+^}tV9F*uktsEhAQq_8|J#kl^BPi#>(4*W#m{5Az>xRYbOvl{uv4M zTFA6$_SigJso~4LNJjEsmPj_8i^i8ZKq{%G;@vqw#=5EDT`;lj_v3MS{KDt;;Uxof z7C^G%4$Wh>O=!R3?bMGR`w)l>yUe*k+^=FYb~>9UG0p5{)WWdTtzfZkn$+uPRkL*&wxw#cRi@c@Wq*#6F3 z8ZXlQ&dPEO12_v?M@$>;?nGWYQb-aW(y^Ug0S@Z6_>YKq`x@{H%2=Rg!h(DapNlJA zv1;;~^IhSxu}RAmcsRp0V<2faCVSP9?ozK(W8PcFnY>0A%u?Upkb3vF5#SRRyl@ZG zIU5dd^UuB~y{zMYnjx7Z;dKkSPw+VbI=kV*Da-zT&~QUX+^zeqkW*Ks1YBm1eXK(o^I~v14WBw} zVQr?H$FQTpVgjBR8cL7HiUe-)jT6{0GfwM_bp_I!gc|Ng-4@{`?sHyxIOv(7tbe7) z>;s9b$3xV%Z6noZd|`) z|9LyOjFC^LWA0v^&%0%jlUtyz!7)iF6r}9B^~#9e@JR>Xa{a8I=3@cx8=0p26#F0@l@r=pclIHed{gu~;o5`!l$cckTIa=edP2~7t zG>ZTsc9~BCBsj1szKNUV#K6w|ZFePgZ;l29$w@SUoE4}N@i3$`A71f-@*P_ctjyVk zg>XW?_4RG%50cY~^|RD?IhvW6yuZsx?qd&5IBf6d+GZ%GU!1dY(YFJ0@j)Ek=b>Aw zrS>-HegZj4ZROy&_p?_~AMb{oFumEoT;TdK!tvI^e?GOGuzhpyRiE$5+w@U}I2sfr zlD>Tn^bI;QM&(F*!inN-=z5b%RAP8A1i=pt;AIDr|^zo++gmt99c%NHlP}$3O1{+tIMJqN_R?7XsXO7`Ti5^qS>wKQ)gVwocM_a4U+U9d$l2 z;QR|M6&Tx`sQ>+IafHRf|E$9DKCUElBSJ)sJBjSC z%|JGcthotm(-9|W^tfRr*6Qo$VZckc%t9DNx^dY|2N-^x`}Cc>9m^AI-}uNH$ePQy zI3SsjzERg&^k`1hoh6WrijudtK&=1>0_tg@ESyVm(Oe^aBM!bpF<~n$JrT$%3~}K< zI5m<3|15zC6{vv#OJ24#9W$PR+=z8a?@o*`F+TR8Ziojt2pY^3n*WIQSqx(=cMG=` z67fAO99X{tW=E>MfrQDEq+TG6R+<}`qHv3ht0vg72va<0$=;3z;6#AHy$pHQi=JF4 zQT>S<6{~8}9(NnIM5av9O9Fq*nxFYTVs&&}S`AARMPBEP<%0_qqDn8i9e` z1hVERu*vsQk4DCK7A%%1{#1VX7GZGJ5);pTIyUI%q#ykSIpe(GKmGOu?;lzi+`|M2 zy5g_yrv^yAs!9Vn5N4D~R>kNv-W(-CyqdwDNrtBwuQdL~ zDK)Jqgg^4zS0(G&2AbV;uVh#U=eAoIgpqhDA!n{L(oy>*YmQddd z$HzYLNedLDOCC!b^#ycazmn9VcH<$5P1Xu5R166m1r4QrjrLq95(hKEP?fSKxRI({!)XA#@rDM1Yr! zzCp&fHJ_|6J7&vZRc|Tme`ERy1O~WSf{AS(6^%yEJ#9?do%^z{TDG|(FE7s*TJRAe zD4w3jd%do^}}T*)CKAuc%}c99N4y5uMrR}Whrtyo2rX|zOfdkDSIfhp*cjv21A^LiZ!f>R1n ziH?Fe(MC0P7Ek80D$73#=tyZ(;aykP9TfW22>S$L<1@l<2_3n5=?|h{RW^)?9aLKH zU4^wlCJmN#2}c`ewFkmc=ElN|9m35FH~|*;xvM!$hy%{90)G0EbUxndtuGlon`QDo za2i+na@38+clW>oW!90zPLVZg9FG1!?7eAJQ`^=pI@d}<3W|hKhzKEsfQYCFs3-^v zj2IBNK|w)L1EOFJSfL`U1ds$!69hL{Y$Ku~R>2ZWLZJpr+*YWl0nv?$5G*L9$em%I z@3r%tckaEXy&t!|ANP+95`oM)<`|>*KE|5kxYGapc`!HQO@?-ZqVY_-io6*g|5dcS z{io{Y%s*pAap<Z!PcLL5GesZHOYCOYI zzLX%ug)J%G>#r*o6>jK~Stf`D{`>cz=~Jl`e6S)^wa_!CyT{3%7I5B8_b8homEX-| zrT0FrIw*aV*x@ho{==SN8c10qGech~UlzSNVECqwLUX54556fxr>f?49{{M) zuzpK_SqC|@s!!@57~yoHu4eCu-|%vFaN9%k?cbtU!`P;N>eRGSrtxnlh8Z^H3^2~~ z9$4BadkpA}EJNjD(=SDV*J9A%LfkTLwW@KqjAa?O$xiOuTkok&c5R=uEiWQ{JJGC1 zJmuZ9MH@ykozLc-y)md6J0sD&W~DH)Vz%j~aeIBQE%|YZaIN)*8fIKFx`#p)@A-_U%hlO&JdT9pCIvdO5l0pE>(TN6Jm>F8Td*_oAMG zTa7m5!Q13gD`Jp>6Ofk9@7=4s5I8Bi}mSM1< zm8N(DBE>SN=0$Hm!3W4`x^9h0VQ`3T%gWfB*C(O#>;t+h%}H+>yY}}O&hqc}Z9@b% z?p&W5?LpL0IlG3L4;C7Dl*c=)u3z2GaCmX!>qQWmWwyy`we3^!9Vb=Q9+8aK0ZQ5) z&L2H`*X-l1$mXpb^mU4Uk|BG=tOBFwho&fs4pt}HwJq63?wsq|pF39LS~b~Dv*@hM zep^qz+1tTi$y(-4X&%~6+V-v%RJZxK&ZC)b3Q&-;&3ZrG{Z*;;_aHe`h?cM3+JhjQ zVy<~>nCPFQq0c6Gldu!E`osvaWz|H`_eXDE$3)MBlmHl}I-6f##G9ALZH!B>M+X%} z)yHjXrB(YZsjI(!pGgon9X^cMH8L~RTlOz>%xHV4nV(GZAkQH+B=OrEPtSvHrrkTQ z%qpC3=usY7|A$Ijv84T5>Z1w(?D28KOIsSc^G$DT+pRgIYZ~td_($3695UXx+?+|t z!VkU_E9OPrJ*Df@3BLXdg!tcn+x=quP>9{${p+8?=GA^Ld)m}}K1Z{}r~f$u|4)A1 z;@pvA_uGmwf-3TEfGl%T7@cTJ2@d&T_@XC*xg#jn^}>uQAs?%=Os`mSJ%X#z0*(bq z5gj5N`TaAByGTk;-+9ywWaYM(2SHNun5>W)#-qt#scE*|o2|Dd8jYA%S+#T&7Fskq z&Zcggh9pYb5yZ*cc=I|)Hrx?F9mRQAnLvrnT`_6V#A9Tz!7@oEb&H@_>6G-eQxF ziMX2n1)#%&s~Gt`E4EGjb+zC4@r*Rlkx|nQQ~WW9$@D(0wY&M@yFZxYMtNT{G$a48 zjO3#umUO}UYy=imzTfaOiU_r!&Y!rWBCJtGr6pdC5;(EL9P*YNPZdPdMp4>lQ^!T( znH}exQ&P-dD(*fE4lqAD$~J^VPbZ1ma<@lHi>KF46VfTQ>uEw@4({JZhU_ z1Equ=u!W>p`wp$0F^Z3s>?~{VoHhr~-!&sB14rC$Xo7z93#m37p9`fdu`7E6(_;+p z9n8r1@C9K<$HAK~09N8Wd}`O%c9oI|*o&tfT9jyM;KS-6i$+b`YxTr`?iYOP@LNre z1}Cz9ON)RDRgB{EuX{EtFjx(97M@$ACYIO}Xm#6CJ3(-$yNVhq-dUgQV|Y7mRLCD} zQeASB(Z!l{RTS6gmSWu}w61}(?RGS*(W|`MAFt`u*w1uyvjHZ+Ejio+Xzl+T&o$d% zH(q0t+kanY@a|@fYFgH^+d`)`fPc4bjzzjr;HUQ;gP$=CS}VN8Ej-h)e+ki1d1MI& zs5@Lqq#%_cBnhAuwOM$K3n*DL@O(23K^2TKCc93d984gW-#7g;9>~0yf6RICaC4@3 zPB}`O^};Uro@rt_xclnaU@w3Q+}_9yjR-A6dlcT?2Ldw3T+y^U_ZDdV0|ZvFNzZPF z?be|cfJqAIcsSK_Sf2)2YEMv{t5Q2I)%}%%2hSK~gNqk`7A>`(c9>YQaKHCwA|xxf zrsR~*Ng!rYf}`^3RZS-IOEPu_+TNw)*604^)!m?SbU0lgE>!y0=O+f4AM8rKuIfdu zE?ud~3Fh{!S+cz;GcWq82I+bzdJXI1uf0L=9vyt3-upEwoV z;wrkQ{ahf*pTZZ<405<@2*tKrCHRlIKevV$lep)WGxx6g_3TIL!j5zmzum^&(r3h( zWEOE3JgF~yZm#x$Qxq*I#0(;q;yS9ypeWXP2Y4#r%x7W3cHs3THPSLn9XY8!(u4nU1 z_RRZ(jX(G`05B?Lj%+uJ;FN{EciX+fY({u)Iy;`!cj{aA(=|3bk}?+@=o=6=mI%!! zpY+K6qCjie0rD2z_bpU*#CK@&gxz04(y|1qPjuK~>WLW0i8$Kcit5_U4MM0<11U`nF zk3>2H8ywzv6Uj67Khrj)S*ck)@(@FHC{tulv*q@V{^&f++14RsW2xi6#l-)s7khek zcUw2c`wiUc_c7Foh5kTW!Dyyx_j4ZUW)AE3qoZyBV0-!oy8E<0qC0zJJUY>ZZ!YES zQoPuN42m=3Vq_)0X9d$8EUNSPg`c|z^JM{6J-fBPysq8do^xH-GtJ2Fq31MRd)mJf zf&PgI{+q1QZlcvGZ{-iS7M0*rOx8z4%~`R3Yfj7`R=PnmOOoH5abpZT)l2%_3jSm^ zEnR96aLMe^ZeO3C@9!U_fB#Dzr_0jy`*4E;y}$Nsm_p7S@9!LT_UmiEryl?ONuuC@ z;AmGr?KkJe|AC~?)I2S`bAHUG*7>?yJ19J0X*fA*q>tFYrg-FLfB;6J*4|*ALHoDR zi`&^_@1L0{I$QZTO~pErnNsz1a#VVddwXxR5rc#yaAr-prT^nvl{R2cBeu6g{_O|F z?fSIpv)fE3EbU$_gExf^>z9=T$t!y*pMod?tt!UZMP_z!(!opc3ZsPZ!hCK=VE1#Q zO#8cYWo9`O2ZZW?e2qmAb?(T)0koD@Vja1|F?P~`D&nr7&e`I0*|n7KZ0-Vb;5m`3 zWUhG&vEZ%_@w6}+P0B49FPc?gbpsJHc-AWe%vEBQ1^n7}`Mwxqs_zBL@DNJ+oC|D+ z86CY<8fyB9RROS3VvX>C>8SA({=h=rHW}3vv_Zu^~>8pvVsa@3CXk0W!8Wo8JN=+g#E#gyKOdrV~`b!QzuR} z#eMoRFwLzg!iV_LB;x=aJ-0(8vcXTdJ$1gd&re`AN*bxmKlSd>so}JksrLQ>W74!r z;5^61ygp0%u9SshbD4W+LGu?W5PKRe6D<8VS!AZ>m_&|^6t7TprMMV zW1^kX`o?t%gaZCNgWM7~&Yb)bhe(|w8J#9R96#RhY;UO*XAa}&`HL1Cx2R$*n+^|T zn|WIu5v%xEc%jAl=sW5N3Xys{N{)jNADcoh5k1T|$X?ZNZe^b-G{HBF7YlDjbkGM@ z(-Hfsu#2ON;cpy{%!$d2b5eY60ZyYZm;0m^KRbo-a7x0)yGFu*WA6@r1c<3HLVkTYJBDnEy-0WYSaIsd0SlJUX^!}MD@3+4@+|g{1qB_RW zn|&JXqJszQx$@1A6k_TPdF*3Dd)=wZFBO5~22v0e#YHeVp}TReAu`quM406>j_!+1 z#u#%2X1PTN$v|ZZtilR?0L9x|xp=VhOM3OByhBCo&%0IRJ?C?0r}aMQ9GzLyIKdmI zM>9@!zAWnKSj{mlDtdM8P;c5^2b~IiaPZB`gGF~=pw!zPGo&}Z(!YP9HXP}CUr1(b&Z7lMXPY56tPwD%LdNL0f(g{UHJ)tVHexONKI9q$q( zD9<_1NC*fzO$Ee}$$yNjMI=2(32BBTaql>8-ii)2+E(*jYHyni0E5|&AaQZ?t_dU0 zpZC5xepn?7punv>*DKx3Ue~L^pLbq1S@8j&Pt$AM=R9k^_s9=ufio?g!94fz(M=#1 zJ2!>44By_tJ3A=EtC-O_p0!7wFYdQQW2|tl%oo?rk*Tr>VeH|$g%I%s zFiZ`s=JqKypJp8MbWgc8SugM-^Hn79H8V^pk96J8*h zb0BeZZ!ysII|`WjQQENYE(5 z_olf0zS+f3;J#y=I*1xmzR?2>_ za#_-)Cue(HcY38|Trv{n{J6`X!9Amt1h|FoxmB74KKw!6cVoPF39>1PaWrnp2i%mv zJy&o2JYn~j>r=#2{+XP8foiM%3fa&96S4Kb|KF?K)i+soM2w&=8O5(MH2>1~jfA5~ z6`&=HSM7ZE6fsw1xclQ{=TQdTLU+a~%zWYARkX_2{yw$WeH?p|;cb?qP1kP5*_3GM zRg2(B{!dw`;DhnK6QVD;d2EuoyN~k6BIh&{Ovq{SRm3L7y?eCdA!`W z|1UJ6_T!}2uU9QS$O>ySW~l5i%!0AsNenG<^E(4 z@8l$;lT`lgzKhr_;HpV)EI;UGXn0;RvA43Lgi<;9N4NaiNSH zv9s}O;QCYoWRx$)SDI8Wc}~m}P(Q>Ty2ziQd}b6;M2=&^i|=wWr` zjBTsa%XOtOfg6YYv3wQ${QG4)bW5+M!G{SlywaEgF3&m1a17NSJvaYmv#NnH>ts&I zL!rwfl_-E1FjpO5)vSBhPFeNe;o|$lv+q%(2alHq{wMH=C*SyDyFSKrFm(1}#*1P9 zHsaikNak#C_*l>~|HRyXO+NpO&HnNA=1#3F$V9t2`dFoU(07Ku_?T6x%P2P4{Mq!s zeb|3E#D7>u`xgfp`nIBV;kW9Dw9`+s-f|F1i6mW`)elSi-ti+V5=_@XwZ zV;XK;l6}52hT5h~S`cEQ%rBPN{iO}e9MI_!Y`GsU-am+KF6nAK+1L4Q!tR&)t_}F_ zy$e6yci)XYmQ*zAP)}OBj#~Tu-u9Nu|C@$|?LBD&LW>=k!M4W2`M3>) zYRoEIi6+ZAPH|sF#B}3jaE{_$prLpM^T@iUSUk^I!C0cPaA>08Wkhd?VbQE zw+V;$Tv&VP=QsOau}b%`E31DGKAD>ae`h-wb^M7)m$%?yV1Jrjx5hVa+e5oyowQ7| zaC*=7E8GH2>Mu9zv%GT0i{Iyrskv24Soh#ljcWYXm)IIBBvSPoi&n<@=|_t}Hd4z$ z{NvaHMNz|7kcXTNA;e!u32sf{^tm#8qS4{p(02X=mZ5}QFV0PBb%8C ztUU(zW8f1f7O%#x}Oxx15Q5Ndakakuj$gQ7b5Wy9Q8OhQ%W3vjyz5c@keY%4p|AvU#|?JL1c{8l5)oO%ON36@|- zqce!R@+D8x9<>B<1EzKL;EQphC3l)2g`JFZH_U`4kD23ckoC2bh~q{+a+F-nVpHem z93bl+RZmOsA2x;lg0Mq@vjnm$GWwB#TH@#9yu-TQR(d4xj9O6`L0Vi&{tjHuP=)xS zBp0~Ca(9Dt*wsucQ_)e?=rrP6lT)1>(Vz~AQJK}pWH9CY#c;wOcoquUI%IHGmPNp7 zq~E2EjovdOBWl88y~VdUfGy*XMGI+Tg!E?BLPz2$Lnh~bOLMR2uG@-P=M2GSKBB=% zZU$7-Mfo~7TsL>5f1l8bYoIWuGfk_sSrSr#kpwQGc_Dt7$#WO#DnYW$8ut{+0en|s zn8L&S29xQ~-f-?XolC@x*}U6|9;_TJnrFvO)4iiJJrnBtC-WTv5tDKVZ5eE8_o_+5Zd7y_^nQ{ zWZhrITuBi9HBn>-dsyUFRa&utRA5EdiFrE-@E}xUVThbIHLchUO<_J-3 zu=sIb3MHwUY$qrt=F>Ca`6(-Y4p**9b`gDvf8vH4g_kLo_2ULE^w&vTB24 zQ`g}7LDoJ#;3}LG&ATso^cos`q`B2$VyJn!P{Sv*s@i?jXSf!E*I2w@%V>6FmXL*c zl}X4?TajqVk8s}HhXmE|vZ%HubNLH%dB3yPN)V(_e4wJ)L-0+ zZ8gR=Ojj}&9*iHz zvH(u7U&jxB4mYwdn(f&zl_Tb6E4HiIm}_Z1U58_Gh3DKZ6L*0@h2dkhKD@fc)3hg$mRxK8iUSd} zd5RG*MovP6cqsFfUo_(z4~rD^Po^*lV7!=Tr9a~^3GnT74j(FLrrcUJOxScLL10kG z$J-PsZd<_~MF9rMAWIs&d-rqy7Bz#MFSm-KA0blEa5&~zhx5n09rdfa4iL9+upTTK z4?bB>*A*roz^q;NKe0l>;Yebz6&K>+krs~{X3L|<;!?Yb#vT-K_NIzluCe$*5+kY7 zrvn+h@k-(adQ(8%XnPM6RT6k{1bO)wl;J)%WXJ}Td{ZruP)&2~D2^a96o)yVU+?L+E|*KftXO;zp$WSD znd5=bi+U|oK76&!s;DJ0WpOBSlW)3InBpu)M(@Vbj*%n5)Sc%DII9e45|Y*_3iMtd z_Z1(C|1p@$WffVA)8KG#%hhyx|q?ks@!5C*J~*YEaf66WoAMF>dG zo9FXeO*#V4JWsLd2iUR@Jc-&b8cG1I;DNx;99;Uir#lXv{-YXle+$=d^!!GTvk!^9MAe~91p9MbHjYN~7vZ8Vy0{N{}W*@)m(bts>q|I6xZz#X+G}$&wt*%2JM~Qk;D-=9D=O zp*lY~S5BqBZbr5OQ-lM?D2^cOYM62vw73MKyy*YR0N0~5euHUyHPGPJFa)sp zF5p#$gemZ4u-MG9oN#x)j-G!UX(~8-60>^`hSr$22SPk)RoaN=4GyvrX z3k!oHv1+*dOR(L1BSfOwYmztSK&qW-tmv3^{SW}O1hv72R_vL)DQUj|baVdaRGSP` zj9XRN+t^XIf^$tC(CR;^?Q`~gtFWiaM{GWCcc@9|Q?lw5z2hZLt}7wDh7-TnlxV&D zWDy3}>kbn#bz*}*!xwVze0i(tbox?KKd_!M>CM~jNV`K?tTJz=>yAU8jkza39_(I> zf#%s~M1z~3W9!Cz`E|HY_l@$r?>V`*KPFr5^w_xfS6HU!-rYNI5nP_Gv-bYkTN>P? zDIU^=weimn+n)c`(UY9|TuuC4;F;IwI{!^9?)Ar-adtB)BOVQ$jj8l2 z*}3e})!jKgN12jiHfc-xT(aRa_?^PFH}*4^%s!ZV*^m_Bv+VxSXtv#F6}kWKIFTj~ zgFr61rs)zkXwJ^h_L&7iBA4(PdP{_v+f0SEXJo#WlctSg51t8Z8%_92pN?1#5#kek z8yxWt+Zo) z3BA4VXKNBCg5QzD{w=4HA!cUivEqF_R%{B23g0wz9HzqKfE&c;;a3T@lJbUBi{d)u z$j*3IWCkB;!O21+OKw1DANGxhU-+x3fz7u9ra3@F+kY9U4no!BJ|Tl^ z0G9uqEn)J@Ibq7y9ja%Im$8n2#eHNh;AKXJFvY$Z{9bxR4-%A-p)nqVRVBD=9?$FqYAQe->IMio7PhB z1JZvtL!z_f_VKonFgg66oVy_|t$ zUko#>_DDl^KTxv3)(UbKJ}jIFvx9tipU^de*qm<8&gSfOwV{IT zRE;BY!M269R#l9S=pu8TU5z}2{TT|f4nY0^1{$YEv3l& zbyT>}^~eav9TgZ-lrXv(kQf9)?Kx^VT}R21bEv#zBJSLJN`EY9 ztI;Y{lDjgs8m3u7OA7{PuX5EE>`qI&it81leeH5yh zQ^;$!5-yrwCA0`v6f{?b^Xx7$cLqd>4hKvgNw?It)n@p%3vCb9dW)(A@|y-erVi6t zBb9BGJn+02d09V<NdM8>h#p z$ioGsP>$1d2yJ{J_>JmcX=Q&3So-kY#o1hc2M#j0FZ16O32xL%Zt}e8!ld{E#5t6a z%F8G*JC)qg^x|fBCujA$$|~-uuYh05}J@!^z%tv*PB_Y{yGUh z2Mr|-IV9*mNV@I%@X{G;aL@b&4TNv2=QaV_NqAfg-5uiE90qEs@^;TEoO~7vcBEtj zisi)V$6@Yu63+c>u#?7#r7GJ{jdfWN_7$RZM}envWd80D&DSalAzan2@sZui`98}C zjJFtu*!gQ{P`>HpnBAJIz0n)RPq<>e3Mw%!0y;ru`5Rir;l^csrQpS$KOT$8RyL;1 z85(^^buV53fhC>GTl}cTzBv_)$3ly>zAa2P)q(*v2a>x%{(zDqgNKLXj|?52&~0#~ z{gN|urn`G=`c{pYXFy|esBue%^dJQh9(5d!b5G+$xH-0AQJ|e9Jmg+OE)uw=0 z&BapKt`JMz!u$q%${p-?zm}O}Kzx@8U&s9?ZHDZ!FarvShv5gJ!x4vUP=*ULR-OCa zW!kb(RI9!>QSAfD{-H32h1BkX8H*iK9j1w|Cqf>viHNVPux<1SQ58%e@XY73S%(`) zGK0@@XImvH-=i+-1&Wa@rhutNV6M=T!sJ+g?=t&VL3ge?wmu{a|A0Z_+5)OLvVz%g zsS8K?t({52P)Cj*p@}FVWuYme^u$q*-i6Aq$Av1aSjZ-1= zK)0(N7srZS_2AhRpEBS`c+hIXulg`i?TSnfM%wfcfWhTI@{4BsNSmimh){u00c35Y zi-=IpVLs`?{W)03@vl2DnH7>D9hOe`%8$TZuSyH;bd~Tgh^Nc)2XtH`p_LCGvSm4x z5L9XX3~pVG-)aI{faJP5OZ~NCBJsu|xGpKlV%VX}OuZ*VECiQ(t*qW}aQrP8;)PQ^ ztiYmVvILA(Sg}JM8_#Z-Az#Z5nYr3ir6v5rlOqgVDyAy==Q)rxK|AiX*NegIkQyZm zxf4eClF*r}DzKrypCM;B)hM}y#W?g?x#-ogLMEEM3#Y>@0JcV1}H+g zm9Ht-@u*JarxSJtVk@Hhz4X?VasC#J9Y2qQ)YwmMQC*w6qf}g>+`+7OWN>rH)r2bJ z%Q|_FUq>P*#^+;$AsF|}f20*y0>wbH3DViGRn4)nvE*ZcU|YSR3`|%m4mC7;Ngt$| zxe<>N0y3zKJ$gaV2RXYMGDOp;faSzK^ZUEt{#P zfy;LRHWLXXXuRyNeupABp|;4zqf5;`1=!zsBCV8x&JTx_$cA6cms^z-(S7@b;pcxh*~-Dh8$$ClewRyI@q>;y?)gSd;;rk8Q(7(2?7irIcg} z-I87a-!k}pA1r{a*U;&}CZCjEEFG>&Q%b}^4!d8Aoq!oL#EwE|P^UN&bS*Fp^EW`# z9RTLZQb>zs)8alNI_*@4jIj0HnjwG9W3yB2ThZ{j=U@u&HI4GI3=8vrR6~glro`kq zD}7t&*vQ4D(3jP+)Gf2l!#Mj?FL+#MRy|(MOSWs{IKqhj+F41MQaZUAOvT)=12K2g z`k?6RsJJyuZg?z0U)5P(jQrd!kHU&XV>R)Qi6sG~s%lgXR-W1`dW~cfmJyzdu@R;b z^g}}-D2DscFP^(6YSlEAc?2vzq4@+@8f2wDF?7sBr|*6*OO|{Fe~NPm0^d41!_Z~8 zo}8*Lv&^T{V;Ahw$2R5|#dao>va%ln7V6&)Nl^g*=vY2Ig8?P{aJ{24$2X*&U}xiG zI}Y4~W>6U(3`;qX!+JLFTW$%$7lXe;aPoQXIzQUv;AUdoiG8uIw5#XUY5sJMD2;Cu+gF93NZaBqe^GW zL6$*PTazNCjqx**%mzk7j*5ak9~Ei+#l&3vF-$>XOkco32u+4ivcIrcqtjKYvzt~7 zH;yDF3e|gYBTULnZ$hh#`*eq@biIYi`v`m2N4bIdWp{}wY%u>c@f4jDo;SwNP#sb3 z$}cU*g$fT^18Ap_==%8=2m{XYiO6Q?tdzo_y-s?!yisWKuot4(LS`e}2;M1?j~9_F zgLcyxsWzR0E$0+8{l<{VxJ1vS6DMxxD2J@eG!JPQsE~~V6fRG40SdAT%T^eM>3sE_uznAUC7@`F z*}e=*s8U@O_zlKl($HmoYc0(IO~jL8eKH@$>uXooY5ny!A)?~_%YD!?4U2_zU=dUH zb36zG8C!yzdFmAp&h6Hx*eob#QiZMOnXZI^Op0meBu}W(ar8QE2J%z5IT4ged)e{z zrVI$mnc!K1cZErw)x|kvSgSJGAb>cNpJBdqin-3swXrDEatwJ5)^JHawLKmlMW|Mddn=wtH5>1K=o0E5ZYDIQNuTaE^YIq2U>FW2uL~gF zj(KRXbGIa;0V1ghJ+_UcCno&KXBc2^3sfnPS$Kp!FXV9_rT+}!E+Oc^Q#vr;0AV&- zNFWpCwxYrNOup10wNYkR52|Z}qU_w+7&okxtZQTO;H<2kSgZnYP@ZO};2O3Q(+%Kw zs37Xe-}Yql#C%@{1XMqV4IOvru{23{inNBl4 zzEr?A0$BP*%MkJOBGW^cj9~C7hDhPzR+dxprT{)6qLsX~ruGrqs#u{uKN=hHoZd4X z0th`~IznExPspdaj2;URilNN0MbPxnhjh$3JW5lNKk z?LF>k6ih^EoY9%$L!&viw^Sk(5)cp!tEyOVSu5N&wN1$GofmV!)cJZT55j(t2gk!N znp3OZum&U};TjejoCVe5QI>ErcoqrkW}MMdGtyrK^GHYZ@u`|~ zBo%TN+nm5knmoK09^UB+8%yY;uug7e_mvn_lz1#aMINGZ5JHG+CBc5H*>Z;K9Vm10 z>A2?@dqYK!0M^P{L*R#lD4t=?`|Zxx>c==SLLNxJ!lZ;;hYJFo%p;Adjc&CVbWlT&HBvBSHJISRVu)Yd>%c6EH+!)4PS+$)UIq=QHYUGtig?IRJ0RSt_+7c9#6W= zV0vm!H1?TP0)y0Mpj8-@RieMD*k#A&cBukZ6R(PnOg|WjYMaTp*8unhv6aZ%%i1%U z=Ni(wNdlF!8=x(jE{k4y>WP;Ok(4Te8nlQ6-%Aq98E3!u=(B5d_3gkF$1KrZGC~zF zQR%Bi@4GU5r0&6gH62i`tS5+TgIawVe0*UsG_0%KRPa6rr9zs+af396QFNuAth>uL z4;$tQ$t#xvs@1X}ay3~&-I~(?%c4W!*S>68g)(*?%&)S2`usYgt79T$uj4uOHXmP- z@cBQ92XNBoQYS5czdh_WV29-Hw2s9|i&eB-Fcww?Yggu{O87;%qqDU+3# zCK9$s=xysZ4y!M=sFkD1i3}L990`{Xa~1I)U&3;y3rNNh9;m8v%@?K(s!Yti*RJ9L z69Jh8rU)#lJc)APFap~HIEO9`M=_y+rK70S*L*6}z(R&jWg|A%u{~am$DxQDU%5TK z7QI`*wu84fa$^(XzE)F(2!j@erPX4v*(F)O5B$380~P)f1DSLJxtcB)qx z&|_;UPu~eV%9w0u52(jYACk43)h{U}ZH5)T+`M~k zgMX>Px7$H&c61x0D=40|?UaG-wuFh-h+ySsE^_e|3%t7Igtm)>Xy&gP=cLb1w!Ka^ z+n+`fE!=e8Anhff&Gaku)fJ1HL(XnI`$gxOzUAbNh1@=6pm*iqtK9={u)Lr>X5G59 z2zhYW`gH>@jIWh@GLLT7-Tk+H#@+QZ)j82$!c;X z{P>i*9VAn7^K6@W(7PRKDZjzetHtdpH&t)rQArtedwE=Z&tbs1I4m>O3DyOF< zfs323PPg5{Hd$fuF}-=9HGR>l(;dq?2GrSF=h_SM#we>85lzI2@MS=usO$`vuDfq& zX8-ttsfM%_PfkWsHG9d@oo07a&AnWwOU++Q)r-Y+3K;QR^pP5}1xjm7ho(uY`om;q zVvJBT8LTY*JKd9I@a34!N;DbEJFKn3O1ZkdY5C@AGxM^8ypm-nf=ildyR6slht7+fH)G|32QcEIo zAr|1n=BZ@dsSRqHGQ#7O^G6f6P|N{Uk4T{uQt$%m4C9*}1p_m=z_bOX3?v2=gl~jG z85U856u(`S2}ZwFk)isdC5eecT-xWF#Ee-UeQcWQWCdA5Xe1EDWji6w`ElQ(2zyMF zMs!Zf5@Ib#St~hi8cg_e56YvRtq~|)D1plC4;X&;Zwh;6X)N*TI zKcfr-krC6?4kZ&Ou7xTHk?Lu%E46{hgiku1%izMuUyE!ET?JLasW2^EC}Q#8ZIU7k zD0na{AkE0Qg%*soJ1sWDrW;rAk?fP;o?K%Aiy^_2co5qM#2Vy0aCZaU|7auG`kgt| zub<7eXu1ronmF1u#D<_IqjZM}Yn>SVol~N{`sP7q&!VZ`WDZ{$nmoXJYCKTwC z{`89EP}Ab~T8+;PArSlXPJ+Gz7%mTmVm?LWwd=tk%$BI3>JN+u)0^wqZSamWLrY3!|hfdNItbl^s%N1*>7dCzNj)zVt+^n_j;a5LTW> z*NB=QOW|@kmQKRrV(0ZjO0K@ZK?kcI<86>6h&I98fIW+;eYZ=^#8zH~E=}hOUll&F z7orE9$s!FZ#Ui-ofs0ccQqB-sgx_f^WZEIa!v+zyx%$iO27Zb}KK@V^ff%eXVhj?abKCQO1vm>T|qjg&1)jJ{j1SpPHUN<>3;4)5FG zpFwoctM+6)9XpYr%NdWxP7Yp?hm*_H;D-R5jRXbu;M6?5EP}?9Q#`A2(tI`eIRy0N z5a@NO_`7#Jht-bedD!S0rH#FA{ZQ7ISdzkN2ClBb=LD_`%U`0^!`2~hYV(DELi!3q z>j|~`7-k!4x=S=z&4C+H6Cwdg_++S;plrNly4?k&i8qZ4B?@B3*mP?a*WO<*xZkZ_ z_P5j%#B?bCRs94K=TLJyiVeo}h5JC&W49K(7B!9LL4XRylC48%obzSHFWesr!n?T; z(*=Xy&q5(WsnTwtwow){-h$rc=xe z_(_~Rd^Pb;YQb(ZFK>Yl0aESfn$8EBnK8R>Qd@_k%Wd%%q%xQs=TK+m_BsO}Z(&aL zW`R)xGKVzO_1YU{BKY(B0yZ)oB*D}urrJZ&xrNLBBh|{%>jQA(A9kqs&1FzlHr^-b zK0y5|Dz2#(8;7B6?hM%YQf0iqNCriotddyrbw87MCYp~Fo7;2kD6l&!e7e3n>N`ZE zF@ZZyc;^tADzwm?N3MpN!p}3=cDkB?+IvgaNkQ4kdafn{*$ANwH$J>lAnN7{>Olo<^t*=9Vn^5k7=4>=s?Ighdu)(*0 zNgE*l6#B^1d3qt<`4p6Zi~>-#t2r;U&!3AwnY(}mJ_t=_f&?O&Cs|Za?_$uoeCqFq zvh4ME&W&&EUo{QZB5vzj9>0yLuH%fJdaG3A1K8#EW60H12GtH8WwbUpJICVIeUVhS zOF-iYQrKG&?~^U?N3x`z-jjP`{UwwTXNesJpSGw&1IzcFKKS>{Nyh|e*;#x~2JGe# zjV8}^4}|sm8GTt&nen*wQ4rO^628!40bKHZD52xYJ0Dm$Tf?*)7E;xPz^Gg-@J@#H zCw*Tto#UqOYJ<%S^|p=1-0|D+E;Sd#j8&{xDGiP(%Ect6&D<`#yYuPX=#pgK8w)&eU{bsttt+bp)mZvh@8V3+!kplPCDPH~hK=rw>Xu2sj5HD=)^^Wa(u zg#=RRtUF(cY6)!EYT^V86B;e|;fvDsy?B3jw8CtgKRxa<)~T+lV{xaEs~urE0>)W} zT=xCYWg-Vq&IRzHaE3W<+@MJ7??iVFpYgRSE(%2F!Klo}n3b?%^N|fTuoK6Y!hUUd z)=2YkQflU|Z`+d=j=Zmk$4%+bZ`lFhg)mW_ zypwn3G=b;qK>Qn1d^rj+g=Nr=eNUq3z*YdG6V1(loXuGi*EC~P6gktpZ*GX*qn&A* zWPPBvcei(e2o}l(_KQ<(j+q1+EhCvH*v%tLh9n$r}!X_s%MxC(63YIA_A0GmI2%+q69RZy%V!a+dWJ#}kyZIoME6H*8&G)IR zysX(n1x12t)t@3gY$hCu4^aINw%$FE={^1*f9+n;A(pA&gc94{P8*eold80uh;AO zdOjbw*TN>gV>&YQ!dKyw$D|G?01nnMC3@(Ixk5dG2H+1_>s7H&uZP3pkj1fRxD$s; z9-ya@KqWC`t|1*E!dMjr7Mo)~WKSpAVDqp{2RN(1lhy$W^q;C=4ci9EOVpN&cv#f# z9RM2uGt4&p?R(~1V*($ip~2Ns^x{M6(RxFn@hhanUsRX@T<;&}PfpIG20LkIQl(+# zPq@f&D;nXGi?j^M#p?*r8e55|D|EF1pvIy#xXE@6FHDFlhzT$*VAf#WTh(%7`mYSV zH&~Pf`5=J(X!}XEL}@YKh+-(1apo%<-ywRu4BAw~-bS)AlCUUlp%F)2rb+sE=kylz zha65}SAn~LIx4jmz=7+T!c*B7ZLP9d?QE@^uaU~1iu^xeKjZ;gO>6@xPd6~Q*wpqU znqc$We%~c5l5k{eFw6!o34xP)E1mjOz>a2#%fd4Z_gkCQlCgHb9Pu!j$Zw0?S9|6| zM&5;+^?O&}Jv(7yXv2#KiN72ZDvdRs?GQjMBeG|7>UEL1Q#R_BBqQUL44rbe zx_M64ACrHTH4*!fO1InLorukT3>*oWtu@NfWhs2a01Kv!Ew9kgpM=)oT$XAOl2Q85 zF~a!3@%YvqB*GbS7pphyA2k5+2;u2}fJ&Vqg*6p~g#Uwowi8oRuwH@hJVSs+ zi;Ll~OtqZ4b91g*EM zD+XcZ8^Kb#{@EOkxWGUM@j!NqQ;aR<&z%hn%oDd61UXzfN~LkGkuzT4{jOJ^%%y8x z<^KUip( z)9ZPJXG(Gcnl(g{IfeGY^{Z_5$6$#>j*&iGH4>Pr*Wf( z1)&-{UWXk6cB*y+eX}Ju4G?pxKD4P-c0vVIbSsS{)W%y5V3Q}ud`EA`Wn<)#tgjhw z#=FC<11Msx2~0B@4e4HqhFv=p`Tv*bn#H}HC4AgeFLE`$2EWS>j!C_Qw7q$Ux3OAK z{Q$9+Hd?)5k4mXMqk>~=9-#{ixSuaDo_FC!whB^@%rLhGkkzyGVLyFw(XM?m|JK84A{ae7lHH zr;iuLG~;U|y3T3FTxYm;0m7dt*GxlM%ysv_Ktd!#Xq_3#+D>JV4%w+|ZW?P$e=s{7 zd1P9_)Ki0BRSY*#jpXnZCtvj}1h|`K@{I#hau!Qf?;j#bn9T1;>=r`4oxKnr5=xr1&rL)*wcI|haCNV$pwhCUOJa>HqSz)N}R$8LF!W*>{SorALD-k+{Ekr zy9~=@TVkr2B@ILZ2E+&L2~T@DXSLQNR7>SwWZUP zH#^4NO_tc|o{*xIcN^&fG|CXlshYab(~CjJ6tRCLkVY9s=IPj5$D!Brq!H0PZ{*TB z#Wf~veO-{~Es>CN9^3aYNVedcAK-x2N*R-Jd0L2Lc);zgeROG7iha+$Ma`MGb^gU0 zGBQx$Mqly}rqLFYChE84k1!p055{_;n~36IbdfI1#A_7eSPApObU7wR)F8IKDL;=X z9?52mb`Iatk6lG}vNDO@5S_SH6((n?=-C(9?*Be}WJ}r0ri=iKn0}{5VcPNR z7Jy5a?jl@P5qB;*Q zHbOLvDJLU-yVd$L-x#x*)Z8s{-e?$z1D~22GW079>AyObOQvWC#M}^&&6E_d{!^DYGoa4!wa-q1fd2;y839nV~o5_;Tv~eRx z&-3BN8i&x`2vRSF^!niSL5eEe+2p|trA+1KB@1tz$~DHQy; zukyJG0k&@)Ond`27T_XH&8z8HIHoMU2*tz<(WWC=B;qxK(V0rMN1bD7pJ*KUwun z5cjqBs0c$Vzagm-RVa;Uq}N5mY zb`dEydvL8$`mOx5m$jf}YlJ^|6&b}R80}^G@=LFnJjHMaNNyNj&M@MfZ~CNq%dii; z4`MhzvcTT}mfY#_-irOn`MNSC zpNns#JLATdibvv{ckbR1L8BpJWMGj!+m!!Tmm+qE?f$k*CPP9RLytlyj#qt!HXOS= zmew|5hFr5qFEQLL{x3RdW#)S)?Y1sL)oxxSpiBtB$s{0iFqzc$>%Zhd5$L(8&C*yC z#9@pk6B1bcI3C)f@^jCqjfVo)WC)@ZBhJVOZ>VJ*k>7~ z9`_p6znD%s9v?>`ZfWg=J!wQse>@X&n36lnwfYgRswQrh>Ly)vOmdModi}cyW-W&2 zFT@n$8e-Qk`Y#Ntn4=b3YF9L)9y2s*5-w6aw$uT*NMh*uGHCX3OV!Zi=x`mTc7+9W z1~sC5#a$Y0qM1dRy&XSJ6+SneGdG#^I*;F&&Kpg}$>Tf6iEDE#XDGSID~FGNt3V~b zqmxNv&cS*)@CrUeL9>C|gIGKqpF$_;AAZuS&lKDndR-*j-i#UpBqi~2aW%xIgyIa< z(1DdTnH;ap*|HUgi~pBQBul7At`LSJ$)u*2k6L*=#KbqN7jA1?Gu&28?VNzk8A?pR zCF9zO5IPO>cI4!nH`6EfN_>}^a0Sj8 z^ZJ_Z)691mwe9voc4$Jp)?;)&I~=Z_pYrdhdu-ZeLoEqTAKlW!=`mIi5=eu#ruqWY zlkKANgs`i#3p211L^LxBCKDNymO&^NiMNM7Shk{mzX0ZB_9_VGY$OdjJ@L#fo zqmnddsSzDfbTeu&|S_dTkPma7!nlU+Qbej-T6f zJRfZN#soOd1ECw7rYEZCijXg9D(Oe1m`Tj~gIAp6PtH>ejCkPS0r@|h}9Og5D$VBU&M z9mBqRT32-EuB58kg*N<{ym>pPJY&W9=i(Fx3A93b{ISxxn0Ou6q%i_6NYCSwO7}t%#7nt z#a&lmaAQ`$jae08ktV|)`vRvi z8HgT%nGrFq0VU0hN?MuM(4x1vJTiCxq`%7{=&;Lo$2~-P2(8}e-Rsq@-ietTQ4QlE zgD$S7qgkQ|V%&+DdvyZ(B?fmeXFPozyFbH>Y1mQzgssG79(aL^XcVF;S&f!L2cd9L zbBy5#T$vk}Jw1K>jvTj6IxYux@1Nez?uS*$znf%Le=8D4W zVeiY2A5zYh3lG>o*SZ~Ft69Wqnz5dOz0f1z6+B@Q_!4uVBduxp0IpHUQm3%V?;E<1 z@};fc<7F`wXQxe$x;`Ac!uSnAYHQnbVtt*!I{3NVRv6cCKyGE7lDm;ozzP z>;A5Xx>*;l?rFGSJ<4OUik|c`SOEX{>1Ob*DNoW>cjXhd^s?UMl6@uzInlj3 zN9){1%Og8_eoF^VeR!{PV&CEqH0th+tLr@~t*^h_J}ZW|@#rDq$Dci!`UZ7xJa1r^ zuHuG5Gk#yfuQR4!T}GtEJz{POmZ)OhBI|>z$b&(?%ZBK^HWqWgeC!*nvvf=9>^~Q( z%WUX4G#vZ>{KvuFF|negp>4u1nY=m2*3s7dR7&Rh#{SJ;{pxYRyjWXuTl2|kkNZpQ z#`!~nXH)Ifg~5s8Ei@qYu#^jA36s)%Aj9b~h4kj-BQ}k*1DwLTo-X({;Tl zK+%zj0h%(svr_Y@YX+%AQqzjfL?PN(As?f_G`hYinVMVJ4mZ0h zWik!q@wR$I%A7r#MoVb(HAO2SN>px7#?xhbji$-pPG5uht_-?JvhZG+iW3la4=A)wR5Ro@BUTthI`VX8kDh4Q+dJg|L|yudB||L+>DIjld*s~oZzL>SXuf51urGBv*U;&09k)h z^9@=Yf<47_ zNpbIfrAZk^A_Bt@ddo;C;0n4b31}94_sa)cxC{xhxML!=W59qHKa3*N_Jbf)t{&ke zYV|P1z)lUl?KfabfnE52zf2`P8>3FMvD>N)N=!VIV*wrV=>Iz8-0E1at_k}UyL;S; zR!TCW(7y6_3jZyw9=}w zDGD4I&ol!agLdCyw(2V>t{|A8e}^}U34a+;cCc~8hBc2QhHNrVNS`)i;+I2AbiY=NJF-9#8S1x>@ zZJptM{wra4%9_xSvAvr6$(|~%8e3@$jUQH$h@eT*b7;3C6*!L_E+G%!rTt&|mwRd@ zHw#ngGY9VX2jso(2T6^C_lsuMnWDdH<>~*DwWW-7+bRN+`xo0OkiqrvWfd{CF9k%u zt35A_EHr=Va|aYV1mX&r4Xu6>`bUjG9p~?Ci#J1%)RibcaC2+`=u{j)Bcm6rJA2>( zIPcUPVKlfS7~1DR70fW=;g@Pz*D)-?w@l&BOVxX)!Jnwh)wqq?k4MJ#iCYPYX3I7O zAu=Bv5DE%AlLo8(!}-&;A~Q6@nwy|jT5se2O&;W%dE(vHdT0oJGizXcL3uGs2a6pV zow=^80xL1_JVj9X#LJ@_E~L)0%?QwbI3vS})y*C=|9!F`_7_QfD(8!9;xdXZx9xYZ zQ_pk4qnUl4n^e1Nras)ays+{nS2xglY)Co&akPxys{=HW_v+KE(MN=DmalH=-ow3m zwRdg%$OMkzg835%2D}bgdhcDmMO^$UIcWaYRm+Qbc~J8HaN?H~ITVBG2cSv)b#MF= z2VDl9OZ<61275~%%qFk5rP&$OD}X3wOafs!VV97+p6zf@&jm8!P=Sqz3)C+tbIHk6 zC)v=1p^Fs3o_jJ#Fj#~|vDGM}Fq67rP~c#lmUH$R7bp2;EWhlQJ1+yspPdW%s^1(+ z<`~oA3ibkwC=%|UNp4a^V!X~eI21%~Egc94bz)I!CXt@th*mC9+e3g7W^#kqI&HD2 z!|_G&bqr0;)%<6RfnaeV)c;@t7!;F)EXklxC%AL#QrHfu3RIJw^P6!6kU3MS23D-%<2#j?5OrWti7 zE`UWK64x##A$FX=l2xW}p_K#PEnEZU;6UC8l8H=U(~v_JI}@10WdbefJrH5dk?x%i zpLd>y8Lqv^&eXo`h1} z^`G@`%L0KY&Eoe1#eOYfJ5Z>Z_!`I6M?x4V= z{?Hhgbba`HX((tJN!e*Fk;ax0xgv*|abP#yh*LyD{?wW!l2o}0cnAU2cvwa{$=|3G z8lZ_Dh{OWB)r7-P%G-|27>n)%Eeo+JjpkUdeM-b^)2n_>=cGpnZCdJ`%XEX8?H^gVmO+3x4K%^6g zOx|SZea8n^ecqfApyS5(1hJXi7y@UYB>p&5g-`T=ARbg8g)7sLufyaNrNj=9GdWWu z)e0SBTw=05P$l3jUC4mUEQd_}Jx)4CJY-FUcXSy-^HSi9`pwQTOm_4sjD^~0DlZc+ zRmbif^51_9gjPc-?Tdm#Vp=_v)_N3PCeC-Sofxh33jl|7roH%jC2|054s5r|@cDm8 z6tV$3lnj>{X(%y?oRI>@d(+ z2?CDB<2-z|7)lN*qnU{rD#N>yh`}^R!o5+b%Md7Xp~oc*vITqF0W4KHKO8XTqhh{qRhc(D)XnR znnP?fS+*e)8?_1!Ei5g6;?i|a!ECHn@hh&w&;R|5<&X2D_`%8{`3LiK#DV zJmnEatzd4$NNX{P*V^F4y>kA63CD34mnB?n1ibFvD)>=X)3ko?I- zJ@j-%?Fm&3lwuubu&!JM-L(zU=NCA0=_N!q^U@rsbwqDW@yb{UqJ5=OyN4*_J1#WJ zmtmOSI3tr_F2V1)xIr6jJl8n+Jd;=ZHz2j(1~1dqwi7JO(1f1MP$vOFb7f#>o2_fY zct|yf9ruqBf9yFzg}9DTd87)~kPmVY$b|G2CX~^86Fk|DE1uUNYpGsA6Pd6nhxUgnOE_Lh?<|PNQ8hkUp^kZLs0jxkOKeeh|N986 zVX}6xIt7zx)%8uiS^C0WKD8GKb>x$$rBIF)(8*80 zpp9a@9du!5>Kny0Tj{t{-nJ)5`$5J&XDVRn6m1Ti=(j;~JeC>8+HQt%{m=4MgHrqd z9R~Nu6#hTdzL|9`=pBvO*=QVIU;}DN2KAYrjan_q^Y)o^8n8USXMD$8+$u#5)w>Z6 zKGVXjtc3%&kve!F8e|RuO*#3p%s<3_Au(kt&QE>Q{^xE=O1?*XPgq&-DG=YR_FgW5 zrXovs#*7mRP-lR*Nr=-})I!NztsIlqNc3LasO$n^oxt+UH%gqqIYhIrCLpY{{$p(t z_SeFxRB_6)1n&9+)o}3bx&?M>FXDK2;ONy(+U+Mm@j43WoUl9(I~6jD-K0R?6OYVs z+CqPc=T(C_fkD~a(h5w!SsvQ_<;Yt^kL5dB;{r}e7eH18b56btEbYQP+=ZDna3uXO zk7lK983;GZ;4njKgZz-8t_kk}Iqn=mCRXUpk+PO2ftur@(1fk=4TC)A9QHMslx=)v zu@!uU)}Q1s?;7Va<;sPOi{(QTAa?PsbM&H3E^>9$0U6Wrri#jhDNdnAhJrd)`E_G1 zpx3hPbD)Ky(0107RdOR?*3T`ruJ;{G^_@8lg!gzN-VNaR!73e}j3~Ef_iqmvU5MMf zc6BV}a^U2qGL@=dZqO&2yz9}5*cB%QTU=(n6tCNtWqIqxGcqSTs*z4^FH%EeM|jmla~1Ltm}8?>qi{P-n=w$-vZa~Xy)r% zRU^s+?%K;~YdheB_sW=JI;-8MaRVH-f}ja3ti_YCFBd{p5-} zsAj)4>k;Z7y4`aB?pJKeN6*l${&D?%RbmCnq4$8zX2arl`=kw#S?h;3v0^=!p9<+y zeUDp&z1-@$;?gVQ=|<7>z9!#m_fG59`swtE_KGR0LD<$sp2W`2(iP$<~iQww24&pyAgck9F z`kLezA2dqrH*fNwpVtt!W%Y8;?VMzByIXkRH>0N;SQRZ%Vd>A0tzJI;MdjfAgo#tn z&Og7Wk+8SKi>3TU8QsKoO0qRn@pO|)@f!-<_*Y6)mDy1aIxmyDJTsbh4E>%ZI^Y~S zP%wPyEbejfOZFhdIC)N9z`fLPC3x+*0B+XC+vks^xOBX`P_=27+u*rkx@T<3{T`K! zz+5?={__a6vRgi)l3%Y-(Fg07EID^{Sanx$YH8)UEd1?`Qs+KZ|EN_<%e?l~wv}aN zEZ|y~<-cyar9XMitbqK|lQ@3tc5>HAR_hn6zPEI)_KwHn5<@m_8`ag6a47ia64#ND z5)S7qXK8ul%tsdp!!f=$at$nTv29w5pPDr-^|a_|4A6W0GBh?{zAa)ay?@tC6>j8N zprz&3!jB`lfnfoXOO+Czk>Tn=_!n*`HvHG zSK8YD?*1!mxN}DIK+&Yfe)n@wm({^l_oKFcI=p;FPjH}N>dEES^Im^%?ypSY9`fHY zpsJnV=No%R#ecS0aC!XC^W>q!o7P<#{`Gd(B=N)~oe`z2X^{!n@2L0iE@xFp@2cU* zw>$mi*)mE_^OG~w3vETyo0cxnANVZ(=9J|%9JAC;pyd$rHuyF(waBBKQPhzqy1war|+AYLr!CZsjY(;z&V(_2i2YuRgoZr)-Pb z*ERiUu&43f1eMBVdi<&~s~f6awGxSc@walUg)7~hN{&BuyU~#)!KIDQA`jVrn%2_y z{e@z0+eh(GXCx%DG`toRpNrksb#JRd;P{UXLti64vtm~sqAa_yadVr>N;GLyS4D5r zb*&4(4pt1VGF|5RxOSDwZslPy{uo#K_Ws`=GVjI6L$^NE(WP0^?`Eegl|b0eU=DdO zhVvzrGSP5Yv7m9%sWE34_w<@gSSpXb_HO@bnN#yl%eMa5I|W{g%smR*M^NU$sQC)X zp1?M5@%$x4g%#Y@DrW5Pyt7s7%Ka1B>s5ad=DqDRnI5|1VaBA%l?#tmAJLk;y7Ki& z!%JRmYoz%DC7GU~+u7yG+?(__YZT9Nyvc)4t#z~Hjsa#NJ+hf|5)#*CP%o3>PkmWO zzcykt#pk?J!(+*-mY-X{sFc3J$&(JQ{1JCa-n;W=gzdQXV-MbzkE~NQF27Ys?=LOL zyjzaLdbRd>xpDIvzNkbo|JaSFS~#_7Rd?5i@4GS**cjb;P$xIrb`Ue~eUVwPvV{hdii|50#kKdPE{Rwr+q_#JZ4UQtJV znAr3D?vKh>1e54t;hWA03EuB7)2MkzwzkY2UA=E@@AuaO_d@2-#{aCl`&^;iol}>+ zZ-jhdPuP%Y!SX?R|7@>f-_4`yc=-J^w*AdfHnwNC$Em7q|Jgvel!jmMa z96o1aa$8hyluv&>wXMK4_;cUDO*^N3Wmf4;xOcT>_o&!sb+f}9WjBDCDc)lJH#_w?({XlwcUtY42-+R9R1XtF6z z`rJ_IReUsb?_aXEI+sIVdOji6iI2<8x^DRS^f`HU&rSEK)vgG5km~gDr|Xve6|pnJ zZ=~39+7miumXSsiRx;@$0ViJlA7OHrqVx^V_L?Ob9l?&Hnh3QdifEYL9!PK<>Rfz?%QqgD#<@RJ>%`t;rWtCy(UHR*PN>C7Sw;BA z?0%aQL4Z8RMZ>rQBp+^|y$z|L%I8WAtq|8zJ(6+YW_jyh6wOa=Zn8|^?M@iOzXpop&1AN}!d zX8duq4JQa=QP_-^znh^`VkhgHY8`m1jJsrAP1-)KA&q@do}e@tUbH?mZ@g!rb8nXO#(?6cJKB`C6C z#wq304<|{ylN_hl%GHw|2F!vX$xojTun+{)LC8vCT>v-^>Y)#WDP29^EEajen-I~~ zHRl7;!p0r9!kq&os%ageb(6CKzaOGw&_-V`4pHK_VQ?Ko_##9afKO2e8W1uFq-3Ug zp@m`#)>YKao`FIGk`rZnt>I%81;et&a#~p&NzPQqA&MLs5G7Sg>@qqifD~~P24~5h zh8AaB7}9rfGa^5W!%-_Lp?j{rJJq!OB99_K22^#D8GtjBnG!(0Zo3!6$T(u@=hQn*r%9T3!<5So0tP2fgSa{hrDBmNA3as|*N!MI}f+ytTF+x3qwQvj0Ksm_NWa{=xMG>8Iah9>o@E^QiwpQ}e7 zSarzuWL|U{;&3yW4J}z@5g}Q42G?hexdv?l?l#*YSs!5BDsY6YC8{SM3Eo2h^0-V3 zc34asoeKfyMnYd~Kn5=!3~BPNA(D+w8YCOSeD^;*S0IMr`#XYHLW5L@tz zAeU*YoF@X@M1_1jN@M2`_|P>Wb-HTz?mfvF@C{8vUXb3PMiNKHfw6Dbp8o*iK=A~% zp!rbx=rwXosr4DK3TJCw>*wG?_a$p&>2o?hs-)%?!cER1e0nI^MU7JksEnK^y`j!V z&Qrng9L?`1xKs&@s+1=>@g6Sfe}86QO}q3yb~TSYpHucTdbrP?@OdSJ4jX&Uz;tot=PU!yD?@u%??v>e zkXEO+ogz|51+L2#TRY;zZ=Ro_8)%gyxzwq^Kfb<~(4@j555`Vw-kugYbkW~v_<7OA1spyd-zdm%r+PC^r!{36bu0-^QmzjD25?=OJh z+SqWqF$C8cQH?fCQ(FSD(S~Z2f*Sk>rBJ_Iqsi9MUn6gVA(xv#>D;Xk=4I<~x00>t zoFk1&QyBpuL}V9`#Y}&NUswPl9m2v;x>$jScWVMNsUF{m`W$LTOf#Vddx|@;;lDr! z4_8okYK-;<({h{S-Dp1v5b_Ry9a4@!%}P88p?X_v1>grW7J7s0jnNW&eJV@!56v(X z9N7Ri1{(eG@@j(5u*<>pb*3)@5x!Ci&JrCzehB2&sl#<*%Oj8T`#${2Mm@{ldR!SR@?tb`}ObNh2nST6YzbAw#Hc~S}eRzKSF;8mmQ z@Ab%kC6`cn3nQ#+7qY%~nsfYqCiO?le{VmTvnuAAHQ_@BeT^ONc=A-O*K2S>FF}wWwe$!t}Sm7Y7IiC_^>hdUvm~+BhAl)l45OenP)@ycLNiX$op9EAGq-yvXPMr1oeS%;5lJn^*rIyabB$U zC=>kL|AcpV%m0BXpFO~taFZo+%P{!`(8a@NPm2rf6(6IPhoVCIpS<|9irQr_1l}{9hH@(|pF-p7_V%BnScCd&%$x1^I=6 zQ5Q@!^9fIaif#_ga{`MtA!RefNDfCM)qXV50()a-6*T`-|0-xLR@^1H@1GiP6b5cj z+$DL}+x9K^?basSQL?jRcUze=`ut2ZuUsDGPIo;L%*8#(L5?I$o5T02nxGE`4A3q^ zhUz5H=@I@>-&+fdXryF)xS_BDt6~UCpvq7jF>$LeXg!dt{|7jGc0ZV$#o#&7M1dtA zs#5zYI41#(Tw^n3TzX486^D$Y3;-_%d(_SU(v*@?raMA1rLmzvi?W6T%%043>qti} zJVe46pILQewlRA1Jyib(Tb&XGcADRVRGMky?4fW#a#l&ro)R_|i$91W9T!httUL`5 z(zJ;}!OFYtv^vtR5)$XtF5ziaw!YIlqV(}$u4L-+J>3(NZe-)8PW-_E#>Lo|7tC?J#m%a zSV$D}%Bs}nKTQm91YN)U=oB_E)W%lf8jsu(>F(`h?i%2^BGE@a0I0K(T~V_B5;_=J zGvl8xUcmsge>UXV5zYpWhj=~_t|O4TwaeB^ho7i)n*JwIJQB?4!EEsI9^S^yTsR;F zC5Kxw6(Xhh@Xi`^#5HEzVEbZtqQVV!h)}3m!C?THr{KL)-M~dOA8D_F6iN;ezw0xc z+WQ9V&G!jUreNeA^aGKeg<6UdH7`iLZ{?TF2{}r{{QM#bjR7RTr%aiPrglq6OMEU6 z+|wcL8TdO>Y?mKIWjQQ}TXsN8;&G5d{YS4BUQ)OXAC}|oIN|gfq&up+tQyX|a_yaLIOf&tQ=BDz5vMJ^?DwwzckG1%T+Wg`L-A!TO4Wfnzlk^Z z&OYVm_pZG-V^q(Phvc?yXO)d*meZv#f-N{hZp(uRJ!9p0#R`*eW=AqDRIT2NZs$EX z{KPT9_f)D&rEm-{>s)$zdZymLv-7MiuYEOHc*XESH@3USoBW-(eDz>rTmGpzs__0B zQ|2cJ{@6G2BrqeI=S5NF&8dtX+xL3@$6K>s+ioc{lkA*$=_|+PTxIOHA-(g53?BYe zZ5Lnco*sByRdFJ)!v3e*?)!tEUi=vERN`zIFhu{|g1QWklZSS&o!C*Lc!zS`8=j?c z_H@J7+Ts_dpQjL<>gHGOoyQuedL217n4GfyA>q=$(@rdz$74Q={eZi6>tkJd&(I## zS|Dj%=ghXGANsZ3@Z7Vv_2WDCSGM>pT|W5|aelEXy3W>XUc>FjS9r># zwj9S+|En?A>?dF3#}*qFKG$k`Wj^)gcy{Uj*db}YugRuWU#?g7jf5tL7x7lN+1QJGQPjLmYF3U6*Ta@oA4vy3x@(kI0pTBc_FRhDn#+pOraL z6I30)M#WAMWEbkqsT{taLLGK;>K`PnCHFrJjTzYcdDdXz>Mc7Z#phM3%;8n6Hg@DU z_w)B(++6DR_s09vNv#`|6AMksK{qwF9*7snsd6WO7Kas_01mpJ~y$BKX`KO z(X8*A^!=?0p4JUs@@krpJEeQyFULo0mq$)*2j~+4HVd-}7R3;2-tGH!SZj;kPQmSS z`%FyVPwu+2=3#Pl;i!tQXOD8HCca)>$SaNC`BHCALhk$6k@M4QOC8xRmBXpOFWZfI zNxJ#amHs7VT&?`&x&s%@N?lcFD4xt0>8qVh?i{B5^!Hh^_w;O^v|YAuYLY(X7&)_k zDwZ`LbZNakZ~b($zIPnUA5*V~l`Xh%_1>i~zpGE445t>G1oFJ9FJ=b!Os z{Vdsgjdf9G^)UGSUn}1HjyJOocdV85UXBjbiMicM9=;v!6w4SLartlei>-$C;GG6R`Q1PZCiz~@~7pv;vcld9iMSro{#BUW`*exam^pYBV3bXqobB-^aG*K=Y+>!^Qs5Af^9 z9ya;Oq-Er^bZbLM3lnEfz3`R!W#^~71tXuv4o{#~Ui^E)kgmS{`<|!|?YCB*)4IKE zzTdUq>ue4krwm6;S$c16J5TG}!kY)1f8YHW{@~vt8z=V}f2V&)TR3Xbn-{Tz4lB!w zj_3C+bNEJZ9=)vgIzGI}YIDQvxO0b9=V!3Hetbyp`@D!#MhkoVYvzyfX89MbJ;u0* zr+SZmBah$7c%1swkL4uVaDIE8WkW;Hso4jXtP0$3U)no6f3R!2)}DndT+pFk@k1l# zlVabhXvNEY%I=N$6OT;rv=diyRliD@o@Jk*P&WR`*q1SPRojlF(ILW}ww1qxq%DV7 z)jth43KI5DX!G`-zoD&0XKNQmzIA9LdC)NK6`!Ju-)OOlZ`^xLX76Zk(z}4)yrMaJ z{+qhozI{Ty4Mv}m?*3jlw(Z@O0o6&XNqK_u16BiQ+=Z*k!4;R!rEPlp@?`qd9jL{( z@&~mdW{pa3e@fQXyn)}5HaP(ePs->+t8eHyZ%R4K{;JjdH7{(%@`txpIY}0U?;Z5Z zE}7Xdylr3OxFF~LjJKivu~a9b<>7ou%hg#8PRk4lPWAMid1~;_V*^hgRoR z4!<~2UuU@Nx9D`taG_WJdn0mtz=-NXUtZntzR_dEWxtPqPGF|D9iR=a%5C{Ly#IyD zH$Ul6EN-N1cD7W>syyqq`d|LL=TLW4nmCp=zzv*_m^nS`I*ZB64iCV=^22@<5U(0d_M_Ml3JKAh>;nv+= zD^nju(yj6L=qx9`(`)CEoz3IjWbB=;trU^?;7;=QPl%IhR+|>>u-oC-l~+Ln;&GFU zuGiNd7Ju&0ZU4#dc~71`;#t^JvHMM5)9}-4J_E6_{da9nuDEN}1=QVj5h~H`H2WSM{i0{m2 z2#LrzaDs>+LDyYG+X(#q?1^$FHKd+2g;Qso9>;M8UU1>+daTp$>1&kZ?L%~Bj3W*b{^ML4&WCM%( z79s#hQZx1Au$FPecjgmRU&#^^-xP+oT!)u;6bC}BEc@XE(thGi;}gNp=mu7%6b7e@ zJFe>Q?$CpZ_sx4i3`H`_^&8Pt;oW)3onCZjgV|?!k?3YEx}0e zW}F#1=^&7>WagauJ$Bux1mwU!S}zoHOvEDx4~Ki|zYF6T6DP4DKVAq4px?k5e)+1A z05Lldgix>aQ?OLl>?4=`Df^KYbJP+6ZUdc>6Q8Tc-cW5Fumo}Hjxw}eNF^2)y^ImX zwkeZNH$ytbuK!WQ=N>%)FU095?~(>p0Avkaw*4H@Upj%LwCR|C63l}uYvRjMyI@K< zBr{MzyrGeb!aEgnoJ6Zz8P;dr%h>SQpmDX+BBXHW%~6~?8`#@0J${DVjx6CW@gl44 zQG}BFvik?tU}o%5c~l11HQebj!$Nc(bXDY}M{Fx9!>btExAT2#KxzGEXIK+w9%9oO zhX!jM(SeT)mL;4v&2cG=D{JSbu8 z0yC?CaC5H7Q*CmTX~lm1qvcb4zzI7i!GYjAm&geyTtz{vkue5h9MmpJ19^H2#0WUt1uYZ0FEvf=4BiMod%D1U49pyoBZpJ7|$>%j4vlACjf@G%T2wl)c=k? z>BsXOPoy)apq+fwi5QW|45zJ-Gx!kne*`~VDjzSw#R(w2eM34oU^DXxWB`b8L?>_*PrgC<4f6CIDRaz4BsrCEsa*j>t`)9FSDrj$U!lJE$!ZF@~n zY`kH}-!Fsg!X0o0ghWDCh^yK#UJOg2In>%5n?I)`TKqJDnt*(jI6*kP{$g?e5e`C< zdyTv6?FcoLE*AmQN*a6eeQT8E-%UV?aPC=DttCl}1mw>Br03b23n&>#eYDApzq$e0 z=jV~ud|<;?J2(}u42WAQ{myTv69WODPPbZ%3lBJIomzMI$4Gn4&wKTBP5PFIsfE-GVM1ZA_yPNsYc3-v6|o(hErl3taZjd0AG_N^ z3q?jvD|Yeqr1FQAmnm2~(lYXvU|DAD+vI73=|wKC8VYTkV5iBaMUqlN+#p}Hx%uzw}rfvP_tLAmxH8W-V<25 z_BMKQ(vG(>tdN{wG@flQ4&$oJ)wXJ^;5lMGMsXC-em60!g0~$Bb~Z$mC=`cZ=SLpE zQ?nBTcqy)RS$H@rHt{#fj2UhTVb0T#@W=n#K1qF$7Y+&=o7*UojlZcj?l8L5kIl%B zH_iw}5(r_Qja~zmO%lA;vUZ-fz>N22n~})jsGDPFkL}rFMt4RgY!Vwe2MHuGRU_@% zcN*2?m-ZL_7=XQn_$qDAwDe{{6vyrrmnz56G{;#WSAh<(Fg=1u#YDLM1{rK|u$@z* zy^S~^s+LW-QnG&7Dv4&xY7#vyM+##tiABue8<5<)35Gmhhsvl^095)zV1CB~r$6_t{dL8&B0 zl+!T3(R;u5-tW)#+57j~`?s&_dws8K|1r(E!K@7=l>XtLIea$zt`QZb<+?u;K zA!FJSCX2D;LpEncBr7N?s_Rc zn_8;R7q!h4(C3<0g<&0=U2rfgM;`Z+I*|_If*l>ALIuU!S4&299Uy_+J{fPtAV^}h zsHjdT(|OkP(Rd0H~t7(DGJu{IDHX@pVy&% zH{vmB=Cz@IQ>o+I?6)QuJQOGw6|lgb>oALA?9JmZ_pc)^3pgd(R8%2gQ=TM?Hp_g|D1_6TW5F+b+Xqmkz(pZK_SWq{xn}*QgSGAX zEhJYuu(=Ht0;A+dA(xB(QtzpRP1XdzOr$9Yf>xN33m03#h6k-g&7ryk=t@U9c@J|9RDPCW8BAn}!PT83y^%3RSFjmR8WC51-X`-!lX#yLH^v);U4Vep92Rs)gj)7yT4jcmLxHo zpUBxGF?x8K{AS0ADbTk|E0Fxb(q}((w`bde)`ooQKPc}vT3q;c1=R3zcY99zl^J9W z=JOp6yJ=->oRariDQnEl8d2R3(Y`~S+ZTk9J}jQy=bibJFjuv7JTJ#(W!=N1=3?i@ zDC_N|NW-P|U3ZUvKSiJG;CHiX$q0SDZgFGF-rnm*FR$3gvNv`@_CFAOJob8>y1Is* zThE$*KDApQYnxiSs{^@-Qh7utV|Oj{P8d#Rl{-$X2Zs^t+$iT>Y1b^PWR6Y8Kkri; z;#{ltyUJW7&wY|ndb5>vvRcvn*va)Tpm$k4%e5h%-?pv`PR>mpKLcTZ5(--SKK7u@ z(RgEgeKx1!+(!ev=tIRs^sEA6&G#qzTqVD!D`L4y;a*uXXQBdj>~_!P$sr;~1TGVO z&$eaa#{5+1r(VXQZ7AIOMwQIxO89800qWV0Fvs!AKUt5Lr z`2ZDZvs6yM!)~}=A?AkdnJr)}l9{sFy5T0Lx zU<>3b=dxoQFZ!C4XI>-TdF{CoQ(E#c%J)l3RTXk4J7IrXK8vR&-q!&64cR|nh z`cBRb?_f2EKijS@)pjs2t-gJ;*;qB43jPx!-z;9t+;GB%C#N>RszN?y#=AxU>v@@k>`m!;b|H{D$8Jyx1*#EF&_LCbr(IUm5eQXR@h zt*m4>IZuwIz}&F(qyR+W8cF(N7Ju|}bldc8$Z4C-m#5y$J|g|_fANzoU|lUfH}_?{ z_2?JrHBP3ShPZxi#-bi(m+q^4c5Tj;Lyux-XKQL8>-t%+16vCnez3vEd$N-`XP?iU zVUNa~xdQ&a6CBeGvf+9ztPLjKOGp2h6gz>#1R7@yjW6}Wl*W(Cyr&{63LmSMtoAAe z-pLtzTEiZ@X*U+T$GI~4^+Nur$AoY91Bs@j^PiTcj?64>_iI^=H;VOf0UTQd?bo|{ z^==08%~*S+zP3ygf9_Ke^&#w4)tyHnz`LQ?eSfrTG{JnymvnkR|h#5gs(= zw34@c%2)R0NG&M$LiStoXR915y|vZ4!CB+q9;dy%$xHTcQ%M~PU0zdh&YP9tsd^iB zLZI!)KHf-{%#+@P39h>oM4Z@CHet@c5T?mW3dZ5?##uib?4h9Q!iFmSveYN)0oVT=6XyzYjmG|>GIBeZu(5r{p!1-=I?A} zWYVv;D|q<1ob^85U%}hSiLSW9DjA$FWRyksYWGSh~hlc>Ybu`$j1i>(uWw z(l@rI-|qZW+%Zy%e*bC*H~3xhl3K%78B^=JuFSbhfaabL?VPu7l}@f-Gdk?FCUx6? z=^fX?Tfe^Y`Q9G(k+%59-llIf&sDbvxE)ly_02?#)4mbzpr|Neu^#c!Wmjh3jU~|9 zdVBB=%KC(D4Do9wZNRZ6-Du_pLnin+b?s>K^2EVwvz%_7k0f$>*=Uw@9YxB2DU_|& zKDqBRI!1UaYu9J;8rkZ>#$1co1FkQrAUHpMrB-kI5%M(on$^Aag|RQP$8IkqKV0|9 z+mCF0y|I?(pkgN@wnQ8X@u^a4tN$dow2}1nUT?+qnP=-b$JE*-BO~7hvkHNwrGs|@ z4}V(1U&_5LKHhPHO|)>has;NewAvu(m78JxTSx@s>jFL`S9>&EFTVL8x*6{dySo9+pWL233tgXCVGa8d=-KfeL z^5CqqYE~fVg(rCQLZG@#>{In2IAZv+x)tMxZxxa+Eod%GRp!>|6|2?8n=&3uu{Rj+ zWKK+#bn0*mK+>K@8U(n9!rf%F?hVp;>^eL4L7I<7gXz4#AilNIOIK!GYPbl*lG@&hu4$t zrh$NWokS(_pN*zGKXsCqJxON)CQM3)IlTVGlScU-)s#*@vNtC#lJQ?ylOczr$hdt~GSxFz&%0p|4p zVH-antt%w(O7C`56o1h6noPizUXb|GqhMEVsvwZJDw!BTq#etGGxrZPA8EPoO{}#&VA8Q++&Yi&)gBc#^K$XMx3s8 z8h`|R`imAP+O#;eNKZ#1cc+Q6N1aJ&H^+SoMfYC>E2KoLb(8tcXpiNccP>YfOsXmY z8ew~U)8IvS)snPg918xZikAVu{@% zhmOP!#%nl}DliXK-1XDNQ?Zi{?t%5U5tT?rg7|pw9euDBhOuMI7F$0Wtv^o1h9*Na zDWG@?4@9$BARDZtl>SNF>Gvm)$GG4wai1sd&lRB+1TSI1xqHhEPoN|Ke^USi41~&J zv*4xE@}NPP87qw7p;#B^-)$XOF$P(Z}z^CWK*xDhVmp3=d0a2w|KxC+8#U$`x2NGptWrMeYes0F}D z#EE4jRW&Y0q)0naayPLLkL(RE)qjZbk3|CkHV5ICA9R#3zoTprLsj^&2h zO&$>NL5%i(WbK){5>9-Vf=pO+dR;DImC``*bOjDdEGmP)JkoVaI)uhQc?nrA-^V#m zKnZ^aHF>QP$6^O){o?IIHU8I_irF~)H3eTxnF=L|m_a%Lsw=A|cbMA?6?78B%;R>l zfQT&{Oi+{+qotPn7Ve#A@$H5?Lve7uTT95JwmvJHR^0Jye zzT!)lU`Y=ufPp_6_29)mjO84t3QZ5zko|DL6tR?and}zOxnSn_A!-;bA!^MW%o;Zc zEU6&UNn%X!b(}opVgeX>H}Cx8j9ts%K0r*{ z7oU}29eRj)>LBXsbZ8GYA6#hts_a}esa;Y@B?@(N(LFLQ|hsiQwN({{hGI)If`!D@WLP8e9yQWRzP?6F(dUVK5D7gy1aQII|Q zz;n-xl3-v1ea}_SuV?0^<>Q@Vk>EHA2v>$HRhE?H^D?lc%Qutfx3UyqIQ9EDL3RV%i&lsmsD>MrkaF_}3&1!h(Ee{N9cJ(U}5f#>FPY zDy3$j1NDdS%a{X*zSs3056=Af`o{@8vDMxf1YQ=F0Y@(}O1WncaTx|;Des0Meq92) z)Bndiw}Fa1%|VZs{X{74N5Jt+yV%X#@l5+5?m_tXT$`6Mz$)Q?Wc33Tdz(W`a+$WV z>+|X~zK#YX{js*#^|hrr?g>?PbWflnr_)1%^*ZUn@AtTWF(|mqM01{WH$;pKE;YlA zI)CmZwVppJ==TR(c8+geWQY2Ur|;w&uj6()e^g%}*SIi1o7g1OOsDc#vcmRDnz;NF z5U83^By%P_UAIlaN+$&=5ln*KpB(&HnN#Do5-MKxcWt7*TF^b&swAF(xap#u#&*a;b2>~j z*{*C>E7?e0Suj)*c499$d~#1gNr#4-+I=SYJ<3_`F+T3d>Y|#J;3YoH!VDmmC10#A zB>a}?ff9&x+9JPtdyX-oTGTa~A!$0BWt{L1dw55D^c^;XGX237AHq`1rbC60FJ^wo zZa@iE5j@s;SCrSr75cXRit#D2E64i`Ihr^#E|4SFRT3E5CvGhpV(0;K$a?1)NOqM9# zLohMx+c#ZNAx_C>{SqS%A|##<730%k>?v#f5S~@~!Sme9bd8Y?`q}fGk)Xh;OzZ|K zm=|c0)_X`IVo)@n*CLkv_~zKxGPDU>88i=>+m;7eiyqDYTciHF_WkFic8p>46gxL| zPn!~8CGfW{L28S%G&&W4x5{_zt>cNrAWh_DL5fKluKN9Ei7Cgdy%YrWZeu2dq;Fx< z&2o6*hW2MlbBsydHE3r+tF1W#D#hF*@>^=55}HLJVHTa19pyj0;B1h%sFCGuSeYtG zQn$VGatgOM>pIQ0q%Ev)51SXK{hIR_KAD%UrMaY^mCT?38OpqMD;D5i!KgjdTvP!qQ;jDK#54rzxef} zu|~M?hs(V?Q=GRxDBN98Uv+57eM2e0QZLhXPxUdHlzojn^10oChVSW!4$Q$vi%_2^ zsPLtJVk(w1g-SwaSghg|LeTb4WK{DR>c`R*X&mx?Q#sE$Ox~gmRDm+K_ske^jBd*4QI4e z@GhTvkWhM-T!c7;O3pI3iuA1)l(TJ=JN8rRg*IBQ9HJWsHa-+3ASYp)s2J2beC%-^ z>A}{ZFZ85q@f5u=Ca+C8gvWgBD2&X8#XD;t#zx(Dj&W9?=6b0~2ad2QEoklGgjor3K5w9O zK@?YLjd0LNN0M1^837X$e~#Y}1f9@>74o7tG~d33?8@7{{^L%7`0(YaF==lGKvaP1 z9wj~fbeqbUc^FXq!*$gM`0eo1sU-jvrqq3soz;fGXJ?DYk-pvroCtKoyJxDttg{wh(&Fmz- ziix<*5kwhm;G-GAHb^VRaiO3vyZ0*qb_Ss{j&|cNE(P2q$eL) zAZ3w`k623{gghkx=m3~Y9>0zK<>|X&rU|`H<_EzQ4~-Z+IzOj{w5@+K>$l&Wvpy2i;vLr&DW*A>_jV4{sBIi674!8$JcCdclWM1Q2X{4Q!tCjn9o)K2Dk-!l7zI@i*w8(Z#>_H zAAHwh;^D1P)=LaH1nadY|GrOR`$H0*F_@?KET2 zcB40P1G}`)_s&N2pKdm8aAykS`9M@utUR0UqHs{kO4`-7H*x2UkV`j9?r~uXkT9L> z=IcL3@BosDB@h8I;SY?h{`8@}+txXE){Jz5Z@Ca&C z;ICjhuj)p5io@-DFDh#36-ELK97t_BY$na?Dfu4 zG3*%hBY>1H)d+oY(oEyTft6JydWlN@2pvN4RBrH***O{<$WLA&W#^(M8tr10>-yT8wC6Lmim3^mKGPe5U(sXR=l?>#&TY!%d?A&Wm|F;=U>M30)Hg_PR(EL zy!)>y(m%BBa?Bs8e=&co%)g_*H$RsAudDsv%Q*gTl6d96mHcN+{x2v0sU-j3B(6Z9 z@}H-~ASdJEBy+5a{k}bySOM>$cQz-&uO#?Gz42yJGQB^ywW>I~7N)gp+bT5Wa5iVU zN2ArU=RLWJk~j^c6t>+&tm5MO3X4)0wWnC`1iATKmuEd6Vgtl7ez=4T$^Yv#dTy*M z8T2w&H*Akqvhc6dnB9B4_HxX#>GoeQ>MZ9lCFlay z%3tr)^PkXLI4442+IJQCIUW_CLq4_Z84rYYq?gQH72-AG>uO6FLu7-F-mB+hU1Tn5 zb%ewZJVUjjO%0Tm4gV9j0IiBYlNhK36<;w2@&9}xDxUf@JHnjrmJ9qp}yScGeE*sXmwsua% z>?YAU66>taFMqS5{IZAepsB|H@D_jaA65&%98`SO93;*Xi}TC8qw{yXiT~aqx#Lg8 z`5#4HDfwkg=~)K4m;X!z4ISgc8f|NZqlem~?qJ(CwDKQyGIV#eY^%V1DOM&Z%K;Pz zx9kCdBA6u}ylsnQ4^G}|`(YZaxMVp`jp~DGoW-81hZPpj_w~8dlb2<&)P~F;6ZhjB za(6-8I3tu-8SrY}1yq-Y|LN$Ay>^=SgsM~UqJH8PS&sOfgC`zW| z1(7BldxP=dDk10Vr1>qRMn9B@fZ3~8a#{wM=6k2sj<7Y=zO$bjR%_>xfS1u$#?n&A~Jdn+cB4 z$oAr;mh`)04wLYiV`3C;fam=KlpmAjYa0k){Jd3PFF=}_=DZ=~7UNr=0ln+oB$Q5%^Vr@}AmQ(h8#0(R@)I>TL7 zv+x7=U}h9h>OeOB-oD%_ha87poLV2`Cky+6M@tR-Ps2-xdmp}?V;nU@scWR?%WxjR zn*9#(3v|hhz#}yi+=eQSep)B@zrNRkJkkQFCM!(SdVSTP3EfFLGUCM#=Dv!@N9aVL zibHB8F$`^8_`_hYkyE2Q{0_p*S2_|#OI$)++NY!XRq()5ze}wy?27UXkZ~ zGx`}Vb07(cHIaUBP+sM>bdYAKU{P6Uy3zW8)(ZWH2R@<&5cJ!Aa{s>TMSMX>{`@mq zw~}MCK+dRI7iRVr5>weKRruWV@F2L-!&;=0IrHNDgIB&dKzkYLJNUK8f+#K!ntDt{ zqnO3=GsBA2RNq{`1u9j2X*_c4(SzvrgdUzMik7%hGbq+ovmp5!@Wj-6m()PX1`!Zo zLGg`Wbpx^iV#QD)kvnNM?NGWm_nS) z;jw|o5c~Rv#S0+PE@7o=&;9OW3jptNeDK(RA_Wa_Z<5fmAn9d%ecyE!KIY%Py@fo$*-6C;v#2%(ljFCU;jMww2i#Zjb-+h!|#^9 zcY!lQ0(fDH5yAzLB@0lWZ8w;c%_uW(XN{~f$18`QYt(gZ_ljwk13;jgvaf4zU$3-FeJ-NZd6@54dfzW`j7UF0R;_Km%Bu*uS;=m ziKa>}8nhQokw0xvg=4>+PLZiwbzkq$0u`y~He!3uZLp?%cu6Z(@EhyhORmsJY5YXby_apTNthkXw_kz>AHO4iM%f&1Y0P^2Gh5AD$o4$c+BzyQQwnV>gl!y119T0A_#fnpW zGzP>Krp8+Qh@x2EqWC*HH#<8C-O){{{bS!c2}dh|>4yg&Rm`n*(rdss?}yBWJZFG> z+OZRo!Y*6BiYL@yJzCc4Deg8AuMk=e2KxE;rj zHuy$~;*sTR=UjV!ljlrsB$(k0(buCdwH4ukK!(L}u}|#YW>je?V+WwzPxaO7_Y9#V z_=H32e9ha^72+nQy$Z6db3D9x?WDViaaXftCzfE1$WOhMrblA<&G^O-SXBu(X z;$ZBD>qk4(M>tgz@Nn7e*JC9MFspkv7iWRpJ&Nsa;rue&zK|5bns^ht?akN`PM(%= z)jmUSRnFmNwWIt6QM)2*SzvKZU!sbBqDz53-d{NWl-g{ z|F_Gx+>3^hpR4Lp1&8XFIP88C9uPoGWCAoz`lD^t184A;SpkX~&YyW?q3`FcfJ?g8 z9|OI11!ra#NT?*NKV$aOiWn7FZz4lDqdTFM+f@;9$dI4N^!7wEjDFxy%Y2r6>wf%` z3Pqo&7-+=2p4F83Su;=~N<{=(Af_ya7tZMUU?gdHEU>Z*1c+ z*Bgc-Wl3yYey+cJ+tNTbNLEiujNQiKJq~7{g&vi8;PVED=r0S651(6!yZ!3zwN_@r z?pu1SW6&abn>rsw!jlKtQ{Y_ zzcjfJtWkZw3?rr2%2@MZrik=5x391o-!y z3rkN`9jJV#L9f-5e!BG~*LgriwLULq^^qBvH%~Le9Py5HmR3`CpaT3`D^o4mKK%KW z>|573OG%{wMoCU;ca$cdtV;8TqOSUl4X?D+cKYptLo#|bu2pXK#P!M8t*VO~pna3BZ zQYUWE$ZfafiC|b&+1I_&Yj@WOd*XOZ+^-xBi5-#`+;-ur`pTywM$N>wVcAgTQEA}| zXA-vu=Z7$MYJ2u48R*>2z#^-b%Au(!TqgnSjojH;6bGM+^HfbeK!MNg&SU;G}ZW5>qjYkl=S* z`lL!QwN}hYGLmL0J1-zMEOHEUzgKr&VG@$R4tt z&2#&WBu(Z((~LaZrtW9)1@~ramx=0BHEf2nWRa}(-6b~I-gEoYhqVbGdt=2ZPs_G@ zOFkcbv&D=kDT|OT5L}!KNXKUN3iqoVt>=!yJEq@X$u3A)U*mKUyWWjDhB&v(%88$^ z)94$R;;?bC3WqQl^=}1!I6aLQOW!siTN&(vV}v8SAG11hQ!#P}h?chIKcMPWBT;8% zCpr^fn7q3Rd$fbN>~Jz%&INJXGzBwsoXFqyhOZRTg1Wt(fwqd^oe(~TvIpbHpW{6B(4p?6$!7!cX^9-Y(>f z@5^!9LuOqKyk5!uHrK;s`$Y5Q0Eg5k9kLZqZIpaENbVC}gOiehWlk2=WlokED%V(rVFy7Bt;NM7D2N&Umes!Xs6nF4AoyT97G|HZ^}K~Yo9mHjLlLtzIl3lt%D z#pB#kX>m~DIX1a-a&N@S>5NBhXj=w=NAwlnYwETTS?K0&5B2=?inD;hAY9O>7#aRA zt`Yyu)+u*rla|7%oDC&^?CxJ2`a9D8yVm4C8_N4PWcCU36Jc(IbdjdZnc+9Z+R{yX zhY7r1?@YTOKxLo0PiH4^!o)Q3K-ia1mIf2Bf$^FX8VCXufU@-tCHXOPoC)ADpp@ON zEQlJ=d5RSCsX0oV=|x>`rwH>o3t;MFI*33|F8HDV7=Jm@@O=6yu$!^Nn4ecN4&dl?ydSv(Fc@0s%`?P z&s5cyq_7uukcPc7bwE7%HUHJU-f+Wwjt(`J}UjMo+u-q7J;K0|>H}+K=gZr$%av<~lWlsmp*NYeWK8sSCU#^{CWLzO`X!8@g-|? zU`TdYHI8()WD@|#q&D1^aExOO=uloX4{wx z1{!vc@L-0&&Uor|sYX?(7QO+(_b$w_)Bu2jD6(Eo%KfxWE^kqH5p6;2NmEJno@Z?n zhgR(}4_fNC!tkF_IMa{C$U$beyK1kk4}i8|Q@v=(`?kPVA2C$Y#oxbNndSn+(e14; z<|`4+&q;i;ks``E=cM6)WMaqDc_DvyKoF(sF%qc$ zQf&$qe7t9Px1R1nB|(b!Y39PUzRID6ICrp;gQY;6$LHr{>In%gg2PXnm@(M7;5GX} zfytaZ6+ce*GW|u=s~`q!FR+hafNkEiiM#utg+6U*g#uXdNcMVCOpBTrrfMnT@e&VO zVO@&O#H;R4287@{j?;NzSy0{+8fQ8!yj(6cY_*{XiixBn+N&0TQDu!t`Sklaz*d6q zVf@~0oKTsOBEd^{DSFfnCB3+e4Pcv(MZE5DrDY3^iOiT20IA^qXN-P|cSsU@DIZaDf&c*9VH3_A{iu!i%)^b%g6HmYIHBG#5~(iL(bqQu zF$KwvCvM8OtsxeKUH20YebU?#f5>gyRl?Pc+X8XkJO{0nS{N5i292NBx~6)Af0OTi1yS(TAeknM94mT23J=??1zYHhmplcifUif8WK zg8Sdrna;?5>kfla#Rjv}VxS?>_do9t;NrW))84IhuB0JPaZtsl!XJJ~pO!j$V0+rw z9KuUkwPs4lHF#`gyyb75@4w~W^VjT8jW~i5j8O0vurInge%cQGXJz6Zmg(dXm2%wsP z?83HnrYH#9?h8kDk1dEYCUy*COvXu=>x8PPJUp)-JQd_T3Q%%VkPrctilrXkg+~Bb z>WdB3!U9o+p?+x@h0(u26E4)8nk_Y+eVKzqS)OvygjS-;w>hei*UsDUoAN@bCwVbI-$DRC-@mpw_|&2wS$guDBojG z=oG52;SA+ULA(nOK5e{8?`hArm+k}F#xO(>NExt5PMxa5FhlxI5J9Gb3rT)ll@Mqi zkZor)Eso^FdTbkbm-*wC5W)nTGNA6xIkoE&d!#fKKJuOv2_D3dvvoo?|~hfTHx{F)37Z~@SN29yLda2hOU7pfZez~5>LLw zta5SY5MtL}eoZT>f_rKdD*1;<%q`2(6P{l<_o{iA0pQ?9P%9s&^?ejI3<9Bb6Zt&x;l^If-g$1Is#jBQc-q+pBv^GZQQ=`fTV3 z4FG{506@`)U?l-5EhrHrm*6*k47ayX)6Hh^ocJ@g5`YSgdl%GFw6+MPH4r}3w0-0d zgb^K}dBcbvTyrJTzUnHODP`Al5#s4w^9WR@OZ>XmI7Bkb7Kh>P2>mM1B}S%ANXa4B z%XvEVvU1m4^;;E#Kgt`(z zlR+F~8wXcSSJGaH%L@y_>prggSru7uBchSg=d?JP9W5g1NilHz_Wc>GD6U5w(=S&e z8+Lw*ywb_jK1)F=omL287$h>k;oxB6Y1w6D;B`Gia_fCfN_xSwU&;^F5BB@A!a4VS zQifLYPu&~-bpmX~pDbA4SSmQ?`g&j&)YgfrdM)Xdu+kNwHFm^Z7`0Mao4As=gfXeN zVr#xBVe@hU3Dg6x$ed{uIUocH>g(Ki{!Rd2871G$ zC;BDo5-}N}k&@5ZPz7{*7z4=mz=r##x%i`A!S^^U7%W>$I6Af1XV1QPtAZN=RnWR%}*udKIetgBpcI%K2>|0+~6ZkWwr`{d(Mi)sYEG@nmxVH5>Wur7=G&1 z9Y|kxJg8u)6PiA`?TMV>IFlE8{7i4A4Xnb13*h1mGA9zmoH~gG`4CgXJ#$@v5WIo{ z>}8K%=oMpsYd}Ex5XI-E<pTASU<``q`tSDt9dnsR<1=e%Y zG0)(}$63LUzM3SbH!5pPkh~$SC-fu4UK$6+E0?{kdFb9!m z-x1De%WQ|L$FjKl3{pYByEHTxMHGS+#emHt_nQO68DPQ)Y{2 zIIo+ZURuRoPN@D2o91Egsb2|6hKIiqcbg1_YTTwL$K!Z*y|4>4Ay zSlDb9eZV2|IbSA)8Ln*e;s|Ad+2plf_Zaf>wflgtxPMvr`%<22O0Tl@?KVm_1|onp zIWa3Pp3?QqYw+Q)n=#%gfNmpNtxVmOF;0O5Jkd+Ocf1*P126Eb0waG3Sd}!Hc=v@qDCzR?LYn+b z08Sz5C@K@qYrT|l(#w*m8Jl1->$I)Mdr;4NVV5-lt(0b&wxzWj;`A}uJnNIZO4@lw zVn0X;wHZ|b{J;z%Ux0eos3ESv9$qr!7T0!YXyb=txapeUSORI#_#EG?;QOShIn!! z(gTpRiuc6VD+b>O55}7b+z6Cy@7}i0LbTv1EJiqncI0%?4|C~5b}Xn6mM{D@ds#4@ zQFMrOFMFym_Q!m>yJdfkbpK`Ak~g4MfCHP`1NNZ=ATmYpr3r75{Hp+Yiv8<~^ z`1*rl9`gg4_}0JAZ{_G+8!W6fRLNm~_XX+i6^DlSZm|K}=oGR`>(WY`?9$=RX4M{( z;{kciN%tHy@o=SvvfZcSgz%}5=U-^>F97*KtiFN;snC#lxtw;iC*&lX0C{YXV20se zNwG5(Xt6N>9C^>@RL!9k{1im`-WgE@#IGFCAKx-ZB5Qsa!O?<7K?7L1y`(5CZUc%c zJ{iE+%iX_WQq(%pqGFH8ksQ0B7-@^wsttFo1RFKwMfH}*%vpybWPood*IdOBR8lnm zHg#-NvSEpFpZ}=5%H+AWQxpWYHXY|nE+)dSB|8uBUaw!n3i{7~!1SMY_OO%DI>vuE zEOvPd|I{gGk;4bxtm(s^0Sp;^(4XO~g_{BfhP>ntTr^X*fJaSqDt&3c`GCMThu5fa!a z?l9L107xi%IFx?i=FEiL?=#r{u$Jadd$_jGe>imhk5&7>)2n}PdiCF2|Kdu*zZ@&} zU&;JGE@STrL=AzJ$^Z1!|KqYfZd})fgat&kT!oc0p$2?F+4qqoaHxSKAE>>N!6ZqF zsY%^308KXz`Jp*o>R~%}J8HZxK_kU{8k8N{)%wJ-8QNyv->`xPgFhX-5lX{)T38c8 zsOs}adi~~!&XQRQ4!k?4Q>X$?&iafLBq+ffI5gOv+d%cO=MkI(^Nj%Tmk7Cjz(6JS zI(Kc*O;SWwELL(0o!GD2S3$G$K@9}*-7DNZksW{jwd75#RXgL_Uhf6LF1g2|_Id=X za7>qS<-gQgX`~6?(zm)Ws#? zbV+njh7C7kD7Q@Ky_6G~AKK+;H=Y8B-)2>CdOFNc8r)}inr`d);iv3fx%fj4*a&4x zcr3Rzxxv5Z{CU1x$y>xE1v0=TRKw{wzxDP$k|g;0W=SjrY_Bx-n9$Ocxs?pFN)%Q} zrBsqXzVud>inkJc1^2Uvhqu9sYFgJI}DaDR!kQ`6KCNCdz%g7}+@RRvFSzaU~)ViEqKT<%cW^U!BDkWbX z`zMtpKa`e~LbXUjNAL^-VAxn*E(R4>LDZt5lzuU5m@6Lg2=Mjo83$9mMBNceC=pRT z0-)OLEGB|1ZOAZpYNe@patc z8xekL)Ij&Zu{FO$*&R+;Oq#zqg2d!^BRWLtWQ~7O<8f0nSF*X{r^*$xln)2J5hNnk z%ykj~ez7x|%jC@p0oTG%>HE3jA#9>{Ucg3ZQxJ6bU%An@StRiFO>W+JOaX}r(;T?+ z_3X!~pt^7R{l@8y9cKW#14SXEJ=+r~KvNZRO2zx3=Sy>J*SKN;b5rhC^7^VRT}-*$X9wU{yFdpXJMlZM+aJ>(+Lsd- zxrJk$AQiN6ncO)N`a2uJ*B{FA(C$gn0ZB*M{URXSwfF+ciC{JFU&MsGjpv@t4w}#q zhhBP_$r`lu-TVvs+$eV_$fnIB>22ZYMB{zlWNQb=#$MV+t&R~Zo}IK{l?u6 zzt|}E(46QL%bX%f{xz!@H|y`^66W?bN+F}%R{R$6JFU1aYqL$BV9`}ola>DRQJ&j< zvOL_^mv1&OGu6cQQ4G}Ce9#N@`&YS5RW3W8vj0kYIDJIe3aumr!=zP1a^rsW6HJlg z=uIJbe1|LY4x93-VU_0W4Ex1pkw9< z4I{8wtx%pjf2r5-$6svx4o#Jf;tKsU_EFD!h%m$j*)1ToAyWG{hGH{t9G_POATy93 zKY?=F|6fM0OQ`SQ5stdt*mB0JWmo%6Fob_Lq=;B^} z#|qf}!;uTZ{?AbqKsBiNu{kI~-9uTJX>e>j0223Hl?kY1Uie5fNY$xoG~!JD4bS3# ziPUIC$#tGA962g+NV|Cxzv8Kd1Q+^(8^tphhuDn#**gC#q=ziDT++3{y=aw;k=`qD zCs77o=Nilk_|qGs?UJAV?FIt{QMP^s)w?*#lTHVn4g zmak%6tz4rjy62-VPh>8))SkG}E_u^H_vvoZdvp}iB%BKouou&+EII5A=IKaaakTEQ z6eF8r^&-p;j85

    fI*`zNp~n(CVKfgGE#?2(Pl-Jhv(tl8612SE`S`Ui%Rd$nW4L<( zRou9H^y4b`$6;Ik#s9}5J(RUq<}ZjVqbo$F?tB|2}rs z%v012y+TfIL9|Hu+$xQ3pVO#6ASkDmvRH)DEi<-jB8boAoV3;WDva(#1i1EmB) zJg%IR%6dI`6TFjST#Ng)-=GGq-= zBw84flww47GtYG2_xJvN@B8!lJ+J5a!|OFOm+QQ)^VrV!bzaBuKKw+;`tfqzU2(^B zR%3QwRXTV%q-izAfc310`vH1JNlM*qz^1?J{eimAkhJ*TSqnsUxTcvxxS0+39VGo%}bI}=c!i;YCm@Lsu417*pMW!?l)6X5EX zi9yzp5e$Bg$$Rxr8v+0T4Z1mN1^8s8gD)mNmjHdn{nNTYJ;Xc~$RF`@FGf1TJ_Omx zS+)LBFf5_N+SdXU1_P_F-e9m>&l%jt>(vj(P*W!X8D&fFJ+TxBqaB`egp)`R>$tF2 z_fX=af{5=h{y7!hl`btF3p53-d%k(%0g+_-Fnjh9T=|9D1Zu#vKVf-aLUKxC~!*L_(?QpTDwoG=Sy>{9}ft1PDJrhVcf1?Ky0~$Wd5ot>nO)l znR1aMu#3N}cNko`W!9G5|7DXm!jiUdKu6?L9p!^dyI0lhU0q4ub6)@dGrj&{fvHiX zCbMZp!H0}J=H_t-Bvfs$FIYa%c9WCyV;%t|q0%M%#b)+ITqe_gWZt9;2Dw!4Yp z`Kg4D1@i+%^;5d<5tC4fsz(bfo~y#~WKNF7UCde1t>%lY6r^k%T)uFVw}HVfPovPE zMxhsWu8Ppkle>B4S*n*ZS&(AFKUE97CKjNqM0eU_#sy$=whH1V_NvjqRnydSwIFdD zU5YG^M`EaOstv0Zh3`3iXLSNjTQf3pI2xZNk50G|Y?9W&t3FuI1~$`TkHGRc>~Lt8 zKVz9wCDuzHWb-2xLYTux+9*{b5KUWt6mPngw%nnh|JMlmH(L-l^tGF#$L8)|y2iMA zp0|rHIIWjoSs4Yrz3mG$mfZwwVL`j_yUO!icFDZdIEf#v8i8Rv(*Tpd$^*G(O#l^W zS%G3NGc`Q^_prYM@&5^||N2I?chLkg_ff4_kQe`!)p1aP4tG2+sx1oK=S7f_<_SE` zml?MW1$!Clo|16_nH1Mr5I9xuu|Xr7%q?{npnE2 zy~$W>m?l%}p+D*ILw9~~Kyr1!Ys5b_1HuyX4Y=e+&{X@zhpOYOda`&YLIes3P@Yv| zPYHTh49s&0-=?m#N&ZmkRUF|7)tVdO-#_%6pPrp-b}l^?lzw1^lSn*FI&i4-mD!dV zLYW?CUYq@KJWl*L75%N)yr0d9KA?syD-C%P-E_YIG}VVkoE?%w_LqGw^yuf7WZ|RH z7iO4@)Y4U=>!r;-p<+0)w7&K3u-@#-JC z@n1e~UBHp-+cM~A$xHfbBU!wR%;lC>Et^(S*eIE>i0wg%JMBlf?+U@7Tttyzm{;)G z!h-QhLe-GRwTaE*Pkq5EtX!Q)CP$V9S(@T0(uXXE3Wrg*4qK;)=A|$$?4e+4?P2o& z6c?aMEI9PL&{o2uNdOCe&s6mo*%lqUDkbKH2CnKuo|eUODVpoR>6AauG*fLpAOuB>L%@6 z8N5%t1X4S*t1Bg5=1YW2F=%)xp4f#>@NndVlULV475S|ml&;x z1=&`jT)l|Lz7kg)ve$xKie#8(9*hB}wBGBJq`3K;Tu77KW!6$Q-p&_I1+gup2yX5` z>3OcoD824LdC|?krO#CwS1XTyYlQ_aZ~FW9zg3C`71VN7$^w6W!0qYD5Q+Kc&46IU z{D$8?6;R60g+mF8&?_11ebKVrD-E zU-l}<$pbiq{-@9Z0Z_rl?|NtOqBaoa`mcle#C+y&ja+_1+CNE^w*bDKiw4Rl<;Jg! z80g~fgIC$)*AdgjcsbCXH;lT&+mb7;OmFItyB@Olm(d4K;#%eRAa` za6qjMg`Xioi}qF`132M7)S}wbCP2|7nVrX;6dH+;mrlCx8t35!fvvYF-?uqiMKG0M z4pmpJV$LdH&YyXZgQ}bdl+y5KbolG$R-L#*)X23IF_8bou*CKG03mKg<>Klku;ai-B&MaY0vHVv%sJp6Q!yxgg~n zz)bV+Q_pjWQh!Uvub`bg1|3sHgIln)5fN+sa_5Dd0(F1rFZ+S0i|-5+%y*$P)44sC zLKiUIkjo$MEHjTxLKdR5wZXCep3yi((99ddD3528<{$|v)S0%pO5;H$b9moz8JHVH zUxi2J)Bn|XrMdKif7nL>$axiHH_i9QEMZRktp5nVsNbxCfKLvfH27b{z&+~yAF-6{ z%^80Z_(20AuEvmbRUGr{BT4(G5RiL?d}j5$9@G}w2es}Cs_EkLX#7JlP@p+nw=CFI zNQehf1xCE;0b1>6VF^CSZMRp&{(^QQ>ge-4gt9h=@SJa#t7#-SHREM0*sONKQ2Kb_ zIPd*aNbo(l1tM~P3j+N*1A(sga%fz~{+58?w?g=jf9ntXo4$dodEOAlqdKIxCUDge z_N^GA%Uu-WLjPV&{?-{6NZ+;sa@>K3mE4}-|5ZwN{+k>MhOv96IG_?l$5nLzuvt~w3>We-{Yw=+uo0fV`EKEZfW_qV10H-F|r%HPY+ z-#7lpY`D1azt1N8PY}nQ4Gb@nK*;WlZXp-7Mmv0SB2k7>t=Dey_fm3YcQLHq$4sUl ztGUjiJZ^*k8TIQMd1ELBh{$ASF!dHS7{R&h=~H#8$X?8Bpb9uiZ6sU}&=t{pHWCUY zlbQD4rI$W^0KNVhbB3w1Gy39xnWD^Zfb=_vi8CCufjyG6Uk;$$I*^lv3CNc4w*~Y4 z21Wmv;NOSj{{Tcjt@8<9M2*A>*veOS6N=X!$;HbWTx$>hkC;&QCr09~wy06cSzX2Z z$yTAxk{o8_&wB;nvk@E(5flXc4QFR@FH6ru zH(2JIx|sYXN>Je#)xcV=N8m3l+Yh`Vy31_>y-8jJpF_^Po(X2?nB<^c&-!`B)Jqoq zs-e)TF(w8lOW`6%mjQP_@4+XofMd%0R3NMH=NGDpC5C~B?Nu%ZqDKB@-X?!R7EI1T zsxiSE=I@*aaUDe_{IMw$^S1%MYaKGxc6UW zm;4t}@u$=3tc%$uK4nHzSN9HtU*YH7v?mxJ6Rko!g1Y^H!clonI1aZPk`5N85_Jh&M4eB^I1EILaPBDk@iOT@W1_)dsDU>e3QS0(6Kr5?RS-3RB_e-0 z{UO53u62j%##C@HS2W5N_5mbj`AB@C?+KO7ztURuJd7VXfiB+x^=#2G;d z{N8@F1!u{qBr^(!tUSTMX`Ka9b=un*_C>~c$7?pe1B@~S!21GVJmQ(N@A-bi^?JS? zN-8JcymMc09IFVlwu%MXT5Ks;C z$A4o)u04qUg)z8c33*8}mfIcczn}~5%(&>{e}~<_qtbtc7JnZd_!D6Kj=xnhiGYT; zsx^L3OQr7xBM0Di3**X<_Yl`kP|}Cplq;ic%H@RL(YHxMl)5iV2PG&N3PZ+lNhbsp z#jbd})f58=g!;ZCy8-i$-m}5gy=@+QRSm~V#sGasIb-|{v3!ik6y;D<5BwObP_T`) z&xZT@cazue&m<5=`d_=_8@zp-7o5{_p%}sc*_Zy!&dS|6XIlJo7n`N;bj{Mi<YKGzsoL*b;-PrWyeir>KR|$BUI`sog@OVNK6+1hH3Q37nUNYxJUJ zX6{h~unOkq_wfo&L*JDHC9$|2BJn&@fe6<%g#strWim(S)$=oQ61sqMk6p*SqwH(u zeam`o?~Hni!RKn%P_rmd+kr$1>cWm&flcwV{BeiIy&-((547MM$J3HL$+`uPhqdeG zKQ@r=KTj@Eu}tra2}db$Q?^e5ZN$piqpq*4(&`UmLJq?D06?ZWo>+(g72@Lg4+8u^ zWcuFdM>cx9Ge8hUgZA4hxdA|PaE#PF*yBxUBq=MlgK>U?5~^Ag)+zH-)>zyJUl)w?aIu|y7< zwRmOz#PHNPn0xaC3DnB%1aS?R=E3cbPa#0_iDwR_CpUqFv8KF%3iYKsL{9)K7}my)l-ZZNg@cn2C)NK!^v0n9?^ zAe1j9)S1AKSQL!Uz7L-c#<9=Hv$^%vm+w7aXxM}v9Kp`(?gJ04U5~hE!tML0>JJ)w z%^xq=wAgvZ8pBu&TP9HKa2Tm^COGXKnCfYHv)NSxQ{w}{rD<$@=Ct$hXwPjuYX;=n z3gvl~s0j(*Hh3%&l6KXdiChIwjsOVYavw4A`LyM35XD)i|GT;B>=7kRnpQK+ew*^- zZ9dK^bc%%gQIx(xKqYXP(CaNfl$8ATO(COwY=uk*zzWK>=qGN+A@&yc&?_2MnPX8c zQ4H`2gq~{tQ@}H@&D!H_NchA=Pz+V3wc@929BhS2ETieFJ869m|1Lm!@zsM^GRGkm0HH&Vy16v;*6G;l^$cz>BaKaA(*WEn%g^Y0yct{Xcvxj2;YrT)<^- z2OI3;N4(PHQQGO5h;lXY*2BNO9}_F$X!X`yO*Hi0T6!wOU|pK3hE!J~N*&m4L%|gX zX@P|760&wHWU==8ba`a+=Jp!9>#d&;h}giN zcCeoD_npd9b_{185!=60%xtbqXlGSkyx$sJQ7L^)b?wLLC!4q3$n^Y=9-GvYF>U6l zX;G>`>hg~}8^N?j-NUYC?_X9VJ~_SLGWs1lq{y2U2$bD_G61>QSnm0qR! z&}DpjRgM$&tR`Ss$v7m%QV@o{RCw;+7Gfd zW~^@s`UE!Mii%9EKECMbseFI*fa&u`@A6rZ`7`>E^R;ltp~z?P?`Gjhd%=L8vYXKZ z6Q*=dA<19k4&Z{EzCL+WXk`<+FCfm!YuCKjF22>xmZg!lWRxAJKd-Qo@6hS1=Fg*J zjXUkkO7R2f_to?{f>2Q=Ozm~Ry(a8wd>6sY=@TPs+!kygxrg186In{0tD_-VZd|se z69+hJ2qC@gpl8`~wtcw66VqmN&hv6)4j}0LBH>h7yz{tvYRoN2*}2)90#!Maer!+z zu21HxXUywQKy~^~M>BjF&f2k94z(hyDREF+&xzakRq35u{?T(B##bpRSBT=NN|V-Z z86VdJvJXpA;;v?zbu{>EJfE$4+6;x=_!+z`CgvOBTXdZjs`~QHBHO+g2Q(_TzR!v^ z`&G*p6yo`opiGQ17S9W>lG|V85dwZCvA3Kq88m3tajP8`s^!bOGi@o7?5cIjAffN# zw6b;UzMHVta-VVc{>>;_X?rx{>NM)WNrq?eoFAK7hby}dD&8@O-usJ1)zedqYLWvP z-$1wKvxy%Yj-J-%h)&WP2y_}v>kFr%{}-?UE4Hv$b}YU4mN~?_NfxNG6?MdNR`~&8 zi5c`^^Dwu1jSyU$i(+xiaFxL!j-2g!%T(I#@4+v0sNFB@KZ(fDX`||P{)sX&z2GG^ zwwMv6WTt%c*LJPSCrpsnal&P4%+@20*mS~70QhU%A^x~kIhX^IIQE74GsWaMv7&<) zo<)C(E``kc^@_=h3TIuoNM&9w*1@UoOV`rBTfezSe(>avz9p&Hcgn5Z9)wlf1M0er z1fQeudS#K`gkc{O)mpqBl2}Lb^kaFaT?mXI_<6?U22GYKo!T8Ol7tPiJdiC@3z$ z+0ft|B1|v+dtB>OdDq>!S2=@O&EsopYz6*OB>LTP5Mr`S@i+<0_wazvEib7R605vc z^UNFA&ye;DcY<(Be3;-p+24o1!A#Ah!S40F6LY zy!%7dHlf0_KXJT~Af{wtMPwhA*6eLzoQ$8&6O!_zy!B}*+pLjQpuVS~_NN^}1Tp>wR@Y-i+Pm5qZGjaul z1@z7-XzCf6+)4}T-)84x6q&KSOBDWa8yJB^2!9Ns7S-dyM za6M4&V-tl&?&TE*3+A3Vci8el+@1u?J-07g;(!TVB3nJ#Mqfe42~oueAiAhhI_eX) zk1yT#pHz(GykT#%>>b}YKI-dTec>VybFE?hb9PU{={^o;`!%WC63gV3sD}o6edOlz z+fIg$+xu(tj;@8USHFsM`t6k9+%6LH@u3L?HBmB9841eUlfwCg^z;=JM<{d*NHuSD zW0R2k@msUm8=aT*xDK2kho}LzB#jWv!eeQ(uZ&#rlRpj|_SUmbvS0uY04rq)94|6g z+hTrNY_H#RuDTbla?*H*v!&4z@%ear?}e}JP2LTuYukM=UCZz1-?;t9I0lwC`8GT^V$8t~e{gI{4ZAs76vlk+w4aX0d4mR8yk9KTbJs>2Y zR^Tz)OCy*V@udLmKE9_I?HB1eZ%fGx-J`vukAoqUtXME_p!}0tem21AvChd|iJ!(bnhZ7GPuq3{VS3aRUie}?wy z${(1@`@W_Tpj4($xp%hped6pBQrEi&$ zVzx{@r@uq#*s-N7rIGw)#HrTqUSWg1%(D`^Ns)@B>lARg_NeH$U-CP!8@lE5U)W?i ze@m`~#Wz79?4h^%jZ2h~UVZI0ANxyD+J^w%q0oJIu8lz}j%hnMI0Rfw8Ma2Gw?sDM z1V0C*KlG1QTN;QAh4)^?d9SWeIiuD5b^__4s|{|4K|$dys&8hlWrnX+%_4G~9J1y) zv9@qr!cF2q&M&B=bg)r#6IHGXHe}#E5INQtX#fH#j?dl}@wY!xEwZvv@#?f{?$7JN z5_sAO6j4I1X2?FQGr#s<)*X*|2>*D2|2rtiXo?1_hxYn94cW?1YHddu0TL?viRXrOCUkMMasi4S4t(7a-y z%sQE6X?y`p&nVWvNMNZN>n~rBn+=w)VCgSC@_suHO^nl49^Fo!D}I&7cUxj(Ex)YJ zES{*UB}r3PKC-nn@GxC6WeHrr`I@)H$H&g*+meFv*(#dK$};2yPx;wM5AtO`CDIGO zJG*DQlsu=LCpA9$cGDFMyiAYhmYuCzO}zredumAL#moe;N8~^+Zi7GDdw39lu-0!& zNfr&&rT#5U5ev;eFt_ud_#R#jZSTSJkE$S%d|X>5F$5GFWGes zdfYQGmXkhgNnU4n_*e>+7emd+d%xaUl$rF#rqUd^MV<;{xgf-I-Y{2d-ZPEnNnG;B4tY zw_WyjdMLCkb_xBgsV;uQW1h>@$B*U!S7J+jeMnfr0v%GZzV)slomb?7w+9yi{Ki(? zOTobKGWADSB3HMYsKhFo^$AYL^rO<(d2`{t_b~Y{tz~(WBLFnf74VT(%zai<@u?TTFR!Rj@R;%xe<8SJ z!Vw`-`5hiAKYK*lGIh~AI5V+1%`u=Zt1taA2)m`fX^xv9x=LSp3=T(r84+$~g-a5tY6N7u#n#nG%a&?kC{-XVDsxKYart2WpB5plMD z`7?$X&pYJ@X20m2HyI~9_;vB8r2I{^b>)+BgjS@%D)Hox+EzY~{kzdeH%>2F+6c;y z4BW>DhMkr3O&1iLV6-?&PE<)FHz0j3+}#_mETnF${F6K1e=hvkb6vxKrwLE(mPN5? zmqk<2MBWsm726inqxe!|js^NP9bJ5`hZjT@6*xh1n48LeycQl~DvwUjD1XoCjl-f_ zMWYCfvD}u^;uxjN2uiK%JZ1#KMf9(*^xpsvC1T9#|2_Agte=PSfMTBu6R$D@EFBER-iW*{*pyQyxLYUYweTl& z_4X!!$qk{mq$;?NhWtcWC@dX%QTSM{Az^RA!P&b3JnX8fhpG|2d&Yq$zC1J^-vCE2 z2>7(B)7;k8Dv1lZ9k=XOJNP_C6_Bslbx%?M=`Aj0HDuTq_reV;c5mYsJ#8U!KaXuy zD800m;4~h^ePU8L`}m|mV|+y-#Ob)KIYyXtA z*;OqAlSAn=Id%ltA%iXn`}%FAE6JnudO!QwQ+}44zMdW!LnCuS<&^pDJ`U&&BP^|a zfMFINo8_AOJRmGx|VqKQ-Xx6fS%Nj)d*fL3axVA^ z1UiOypB$?!Qvjuzo&Pp@h0esT36gJ9n24k^*Zilx_dNQsX)V zH-Vqq9rm6+-Be1FfLhG#aFpvioC4-VygA8YbIdcy47p}rUT7Op)}*n_%sDn=0WYZy$Fa3 zoAyeFEvWp8W_k2&gMziCpV`V*FN31MnR&W{R&ef6-l3&}`PEvI&cON{pXceWo^{T0 zj+h^og_4thwEb&T@RYyAc23JVuo+Ep6iMc=)t&}yw#|30^GQQh?{4q@Fr04N+naXB ztXH_RL`?KseX&N!ltp50Bp=7>ip^U_hg#r_N$zT(=f9kJP z_dS+K!_H_4W}ZRPxA>K@tI=PKPWl3GTXy8}O>RvK?>DG5+@02&;4aT5R1cxbN;d3m zzxAfRXy-(c&bK5AT#CSweeG2_>%783w&~jDA~gY=jW4-0Me-Ij^~eSg`^9f?VVzgj zHDStGXAJ}W}Q*-m&IEwf@A1JF0dp8|_;O=05(C`!OYJ{foGP1ae^( z;n<>Lb0*X^XX#Ps?)KOt@B7B{h+m?%<}E%w8(h0ZgYw+&W1y9qWvi2`Q&dLlx-heb zCvn?N%wi@8z<%X-dv?4ga~NXsXs5!IrT)#!U}S1%jM8Q;C3a8UN^rRb-pm0EM!F@Ao3$nZ=*tI| z2Fa_CLQN%w#gCA+Tyka6#d!*-r|Q)w36Fbh5o>^OWOVf78i%4OuBeMO;WKoT@wE<{ zC&ywKV8ve^zc`z~qqFa}omn|Z=fn@lBPQB1f{Rr+3pW+lwE99`DWGl8G-Bz|lTC?e zTIfHQlQwN`o6^u0fH+HM-RVHD=|GqlsJV1d>@Bvi>|q&zH)cNjmwWHWZ=g@DmH-Jr zTy3nL|1KSJV3sAX_z-=aGu^P*iOF1{v^_zJu4a>=_Ocgs#mSrpE?ZvXZrLRr!{ujH z2E}GD7!EICef)|@b;$WapRlu1&k2&uABQD+L9vFZ}kmT;)Zjhq+@kJpl>9b-k zF8%Uz!C<~v<%Y1M8#3D?uv_iP6XRjqS4Ic(kA9u#{DADC6u+<7em|o3W$xz#aTMp) zmz*zawJCP#7AZu=u|p(4S0-K%nlLa0@+7go3J69ApG--Z4`1d3sbM~NSM43h(C9P6 z6QP6`X07(rWIL(ks3yPbg`Sr|jbSD^l`ipy{#(@aF44OI$H%8izZ+cezc6m!=1bWv zR0u$`?;4AMDt^M%!Gw|lC86w$jyYnnpnU|j#qZak5pTUbsuBg8fhiwAI46n9-4-xTiW2NJ*IC;P)wZ%jQA%8#t5;$P`=+;T{|5N3 zhm27G&JJb6h!SuKKBI+nyd1>$p2XCa;dU@XESiw60DIe^_)u|mq=R9$G=U_RF{O#0(FyjK1n zzaGs6Sb}UhRoN#Fr|kfSi5YM5Ik)-$Q}U6JxKlL^^AA3`KUrOkV3%2t#ee7Q1pJkS zgn28V<1V4Y?R$F`mko>#1xH=j-|bCt>iv4X(^YI7WF^FK&1k$!YLMYu6%nr#AZl|v zMCn64}G40)vd{knvsx}P9fENGz!pPrQO(4l&P<`;fUY9!l z&T9e*TuKxZt*aDm6z8vaPT)`aD14FKe7p|t4le$qH}3=J?cV?0r1y^-Xes~oeBb|E zv+#dz1K9g_LZE2FpP5lSV78{1S2Q@fkT3EmB;-1;3^Xw&G4Ie(0rm#e??$voPS-U< z3B0S5Rlw_W7V)y*0g%Hxk84iz09NL*C4XsnmFeZ{w;3zYYKkhsxO-u2`$U>rF5i@3 znQW2K_z$p&U}fvO{XuLp2V^#6t*!*{Lkkw$at^LVwbk5`e_2LBUA-)0zh+ET6v_gv zY~Bts3N)#)8?Kg4#>V!Bu0O1b0o;^z0$ zMT@@Dx}J+K16x~4nq7=eh1%N^NsMv{z+Y}%inLT<77^n3@3##FKD5n@5-r9>v{?j)Ssh5asKRM%7ptK>8I z?jZV3U5{m7p7?0#R9R?gZsYbOF8&a|^uahLllW6weOD7w)Is~vGHZPg{OtU<@-T|v z)u3~YE2i9YZj#`ouQSi6smI=xcyjL@X8-LYy$vEpR|ogn0FQ-n@YxP_ zmL5mSfDO8DSw??=X9g78Vkg@kEikVts@(W}^;HQ~4rA&SZ6lxi%^|v+GO+>Ip#6}_PT-vdu7+3Q7_80_k@T3pyByuJ$xzkMBU0r)FHHG_71Y)l zp>#>`mYp)4PTm_Mbc{v~78F(xmS1JD76|PE=sgh17+|C;G5k2mJNr#liz3YH=0x>v ztSMX9^-kTX9<1psAf&)UD(T*ahKI*}W}$A=Yk^4p^l-o(a28a^E!EaOk_O)OSPz_J z-=2KU3<%Q~+KuAnk=N?QV_H>|bQ*dMIxH8rq=PfOZV?k5B z8~q^hJrC&F5J<$sLp;h2zM2{v8jl0J8U^TYFDHYGjN^ z`f7l>pNeAAy%!B^Xp%Jn=-da$OSXXrufMwtj z?qL(0XqWG=)H)O#b&v{is$SG29#tM?#D_|jJ->iuL!x*1O>^#V0%TD#k|$KsWx<7| z%439$<+0)kQGvAS4>4Mb?et%sB>|Q}Zyo0^`_zlgY`|0sGbl)#&n5OXjm1T0iES z_pKVaXP*nogGGE#pSu<8e2BWZuDk0rTRkk=`@+Tjx})>h#@U?9zPKXLs&+TUYV)`*n^0da%Zb7sFDv>xjJ9@O0 z>|08po}!|j!s*&xeZB2-H846G$5W+7+mqLsQ;_p{@+R&IKay1pNvwH5Fu5diO~&XL z(MYp*n6*MiOzn8HeJv8kEK zs5)?Wrm_zwjMmGUoK&{zElGc6!Bs?;lCN!|ZjjN=iMxU);R*U{o@zgqa~aV0rD)tW zyxjhdzLn;++b{n7Z&CTluI`5$Yv~!%iaxr=bLa(qvtA%`s71j}>QY%Go&58zl7azV zqcsny0Lrd9)GZ0RLlM+WjJ84=et}+*d_3Mw^VOXo}CZnB#hEdc07(^n^51@_g`gM83}PK=+~#d>d0PS{k$JZ}rq8LP16OHBp|;1ISj7eW zaGQxk^R1#Pi_#R^JmKpB1vQBZ8K}~xM_`}2aL+2+j?*vb z#)E4QHDwK_Afc1h$2CMhyrn&A+8G*Plgq*T4s!+kaa6z&S)?5RKZKj(uhqUPsgL zg;)73cEsHBfx^}V5ol)vB@Rwr+fYePTjq0bGjmmh>MBCZ>TBOTF9MHgn$OB(OGKlu z86|wH(ri(14Sl#}hk+ImypZ;{MEa8QZV!)rkYib7ob*Mi?6R^yz`~A)p$^&VCf%z| z>}{GO9TJ94SP9ukAejgCbX(r0{Sv;7W-y7k&*aCgnmv=|=7kJN8vYE@3Lwg#88e%T zoXwUE1x4O4eW(}V12>kW5>7(%1k#Wb24bK#-P3pg)mt89^`N!-QNh&3 z@QF7bwxSKE6*h0qhx*?!Rhy5zmemE7!?Ff)KDi7>FeY71pOSlBdkz;!RLqvTykPl?g1@^eD5QW(5FgWF zaVE`i8jrvpwSoKctK+RU z85`DJiHoR2eW9f}ErFIVsx7cGtdsFA#kqQKMMXY3%mTi}F4FAGX}F~S^YHr%Y*A0? z`k?WR(?4nrrG&+kzNJ?NEbhMAY1+z7TEU&v1L7cqv-&QqLFvFJFjd~VQ<&i>8N_Gl zQeJMoTYbHtD%Qb#**>}Ep!1%AP>j$c#&OHhM-+LNs;j(C#J&f)e0y`{Y+KZ0p5Zfa zskgfLjVbM4=x?T#8{@a4jpn7_M3L<+ElKGg3TN@!ov-AXON7X@;MKJVEN}zPI0y%R z2_oh9Sg422KY(_bREM1mdCwo_5ParYc9Q0aE{Ac0-B2aMgushKVjOBSW^soR72lGq z0zAq%6{F!b#y(inWK(cwLGyK1;dIG|_jobg=k!S>k#>cl&04@RH!$WCmo?5cA=U{C z|KUqLayWAC&iItwRX$Psa5deS7cxK1dz2Gz?)vsLL1a@v@n~DQ{5(6T2b=rz$Hnm> zUOVR-=|z#+pUo9POYiw_r<>m@9dy1ZB7`Sag>Q;w^6V-Izv7-YN7?P*=JBLpe*UcQ z_KP9R$P9huO%D9s6Ausoo)To7hd~CBxJeeUU}@J&?VOZ^T6bFJ`ONNLWa(HE^7hWn z2a9J^YbA%!toOF!`1%949F_>XgLgpRx}__We^+T=``t7I7KRbaGS3f5u`z)I#$6wfWK7pdRFIlRO!K8#n3(pSNKISQq5R8dAa~5K+8)ZAdgE_@v zJJ!nGBVVe%9JAf-)cvHS`m2U-f6KmWz}Nb!>bn?EnXgaK zH-bt;T8QUL=S_i!c&Uu`nvx6!1<%f3gTe~@_lCxqlfw9Zj$jWn7rGZ@EL}Ljt-z4% zPEl5Q-@N4&M^^T7_%-NoG@NMj^F=TyNKxFX>1hS9lqvY}VTyKZu$n8MI3MmhNv%f*3#Q6QA+b4(Vz7uU!u}g70V!WEwO;m;J)_zU_f6la z()_HT%(+9{V^@ewwm49nk*2$>x8Z$d$62UX!Aiv&%dmqX(+FGwZO^_NE3@}Q5DSGx z6xdm!bt0wbCx(YF3`PO(c7AuZRosn9|+{b1KpZx<7O6_L!i zE3o?;Jljh0>erXb6z?MUF;voyyw@Y4$nu^@bKxEDxA$2-`P4BR!Re<5N8qNF)`LUo z@h^54AA1Yw;zgFpUXC3F`FOVPv|H$oRtTow6cn+OL{P$}u^HdM->J7-;XaU24p6z3`R44Iho7DJUj<5bA4Nn0l@?X z_fdrX(hhJYag|JwKrE+2M2?A65iu!vPYD+ zbMqhh?6z;-3I6{6{OotP-S&Z@erAkPa10@Mf2DG8=lCjQ>q~7I1q3kg0?-uHM)qb* zotG;9Mdqbb9&4w0Bm^Kd`wjoKN5hHR^vRq;x3LT9g95&TL59QH>J`eyZ{&|1-4P(3 z+nut&7cT;LJJ(nHWSrd`^vAnI?yC>1fu|K(?a?XCOL-1a7r5ze-@~P4U*wb9bkOy; zUMX`&%$jO^AaC*g(W{w^KVL$Aw^up7vw#&C%7)=`3jkOYLh=8g+}ymQg0^cG|~E#}HM zZSuyi6az^Q_@;4Mn-%b(?(iLY{tYpeVygPtUy>lcjq5@(!_}^V%cOeSwy)#?=e3f8 z#n3k3o>D+2R@Bg5Uaw+6?Lg2RjdDYjHwU%*)=(&5)-`EeKmQf?NG?(HsG!vXLg=(V z=Zm+G6?RW8XJf5Z>h{*AHxO|V!xA()bvp<%zwr@i)U|$tF{pC2!uHzxCYAR$Wm9&~ zRzAQ5nxrd|r+K=$*;LsuYgEb=$(lX2%^a0PbjKB}+?`*6c&i&2ABqYCo-BHJU%y8O zpRe69jEmVS;!tmjAZM-SCxr7(ED>aF;QvlIf-@w?=lf1y#wBvRr5pZpPb0@L#?{K} z1LPFW-=cz~WNVv{lx#LHZ0a8}RuJ+emws7r)I@fd@;!aC;Wg<59ggtY*DsuS>`d>; z`}LglFDZT|WSxg+j)@oA0f9 z^?B9n_4)nYzxVIoug3%TeV=om?Yho&U)Occd0t8Gj_&agXOlYy^v-G8x=kqpH`E>- z(BhEYa!X8AdLldd$lQVCj9ld@PtcTjM*GU-?z-b$rq)O^m#3Tgc<|MGjML5vO?59H zMT-ZJ$npF~a8q~joWsWNSuec|5tisHitcQY~NYab#yTa-w zyCgIbBK2uH83!^*X&WgbuDGYK}7$ z$|qn5dsHpFovwDXF$s^ur4jdyt%{|Cmw8jfd}`RMYtK@=95Jwj=n!FFX`jHM<(tQc zXPrIPYbgWOwZj`yr($@0{A(#g&HlCP9p9EyOo!*n1MGG-@QLcqs&CdP3E|IuI{(?g z_V7;A8jYs~{C4c3hIck+Le7%I!WgS)zCC)+=K(_cnLVkl(54wC+_&?x6`9!%Vn(G z6E1-g7(scuNL$c(DL4K=S2lAtkGM^bT$@%<8QF@wYh*rfhPkWot6u^}liq}Mw@H1} zZ??-R6iW>cEnI;(tFWZ#zn9%aB&X)eZYs>A$279_XmuI(C${)JB?|D!D0lKPh9-&h z1q%}-W`Y=#xtl#?zkSoH*wyTlaFeq+AdqCaJ~Y&stc*2?-dwTZuA8Y9_U>|5`Uu#p z>^kK9+{+eKBpa;%kXj(in`-08nY(f;ful5VMdC#D&`1yiZ$R*UGw$VLxO#BlL@`}w zMO!`ta z{q}LMZ4e%(3f6#8HCV$Y%KKL7`9SsbpSL*c0Munk%?eIAX5L}Jg7hbb>w3x+r8)*%^ zsii`M{s-H_<~vwVl(V)Wak=XZ65*&_fm|f=+!*y^e(pESDqJ6|t)G3YA!qOzZNSsL zYRD5#E@MA))ELrmvVUsC^P#MDAe3oBC9Fj&X!Vpwxy;f%5X;O5V4oR=0wzvZUG}QU z@7XJ_q^Jn!pphg#wZEn|T=mD1Z;sE{!J8`yv<;Js3}%Xs<|t-x-=pl8;;^~eEu8&1 zr<^`Z?JG~%imn9GU1oanTDJ1JkagFsb(+SdNRtlTh#rNph?D1JXshf=5eiSx!eq?u zF4BwJ{%fau;|vatP4?-~#tC*?LGb=q10;lNb$V}E*FFkF0L11A+lMv?{1wlT)G8g! z#Dtc*Z-N)W+!MSDXIH;&me#D$pO_#`jFE;`x~D|c9METd(LKb=l5v^B^HA*Ml(e#X zs6-mxOcW6V3*)grR+9#W#mrGG}MRtV&LlqnB}S4V%J*_S8$X{pLnZ;#Xa{K zA`<31_yk;`O$S7Z=y+b;Xf>nj;gn5NZ2C+O*EKEfFz{B>Y)VE^y2_)?%h=i%?_XBr z;)>?vGxdN~WhRz)MXe1LJnr|OK3nf2to)p$h@ZJDfv76nGUGLpvM&wvF3L9}sPa}W zdV+uV?Q{5gh9sjbhpWB{>)z6pyxR~pXiai9naXdC{TTEv5@}BVd}tUpklsq$qK%+% zS5IHaiXuac)^J;&x1OOna+j5hA<8C#$8q)L*H*3yKc#SS@dIFm+SpTLS0dN9WW>C|T=vqUarxoP75r`7`j6P|00sug2z40U9hv ztT6|#(@F1g1de619d+}!YvRP-KUiV2cw8QNt5;x?w=m9L3W|5Af>*L+D6x|FJzS`7 zRT*%vr{-#iT8EEwVeS(F1|aVV5(+&p&!mq^x0nU-Zp03aTVgVVw(aUr~=e zSHvv`zF8-i^Y)ma=v!n~EF3Rb7q#6yaA>buvjalW?;Ai3C_<+Kg=dYX<}(cXxQhQUPZ#_jIIyE9A-2P z0PodHiiGh{dq_{;MB|-U6@LI9x17qX==vtc%T{#1q9~u%@`hyK)O$+PSt10T_=jMn z{Df;TvRD-0n8d3)jM?~RA4as{D619=uV$%lP@%6OlDNip=z4#nnVD4J`yyhUdxXqRY(Fw9*L)uPK zYlrlhk&W)ANJaaWrt=C340Bp1i?er^g{`l!slL+jgD1vjsEA$Yv|k(YgD(^B%%g<^ zY1+|#ysM1Q?1sZm*pRyhOQgbNGU5k=GLd?accmvaXK0_wuQ}9>cy3F3YCwSKjuF|9 z!q6Sp$P&Cf6+oilA3f&&j>i>6rN7A6>J$>aQqN-!(Ng?Nt^$19@DuPpsP`f+*3E7^G|6B3O>A2}L3ITZX74 zqPuOvxat=6@6f%aW-B-JDHYM%!<=ZgIlA(RGv};GSkodb!HBl7?;H+a`Z9NmE&RsF zuntDYMNHZU2;SI^%Sue+jAUmPh}=g(GzT1$Wkmk9fk6#?-(ehIcm_^A(B>-;J|-jb}0OeV)To{q@e{ z1M?c*!MDokumBRZek#?nOAD1=eaQOpPJZ696;ARk^+*exdYqvSKU(by&uAYB1feqe zjNM=JWTxzk0@sD6J&8v=)m$mi{d+XRu1-BKV(3$(8C~zD?6Bd8?Xu;X*D9|mJEHl9 z!fF0hb)pXy&PC1bMm)S>r~r^B^^ENH`rzUg_ro=!==}i@#w`;hK^f9 z*%X};p&f=0v-0#HWS5cq6?~5@pHQ~hdxUr`#!dL^wNrZz_&N|uQAw~Rx8m8?^9Ro< z%M!$$PLyl0H?6XNsDr=eV5h^qZozdS4!!6tE)294%X`VPszdcB`nPt(UNflmF35S1 zoGU2068b6LSY0fMG~$GNr!4q1Ee3^s>7;_ct*(9tLU7NTJ`sb0$ox6&Qh#E99HvUu zn9JD%1f91dv^7{{$OFZUpx25_CW&oNj-Ay_-L-{~BF&Md4MUv?zMiI#cLjHr>X`({RvVwu^=sEbf4#NGEblr#jdJ7U)CKy^%by-x~hO@5e z*}C@`kju|Ie*C0ACMxPku>mU!$gc>7TZ=8=*N~gxSLfi6{?Hpgp$ihpCk|Gb>kB$`ff_;a$VQt$%WWg-Rs?D`7)J^IsVlJvX zBZ_^qU?G$-4Bo^ubl(@_$ipa7dp6KwxEs`As>+;rnap*gpn{<);sc~ z*IJi1xZQm)Sq+x>l6GoySfbG49gMW6$K0AsnI)@k{Q!^t`b^3{LL)djq~oz%H4=dP{cK?fj4QS$vUJj^wNB! z19$L?bT3!-#q(p{7W`jF?AOW{XL7%?C3E^kqe?_)ofx39xZ#|KA3IN~D8mBU&J5VC z)C@cVh6Oqnh@9eo5Z(SK^ol7~O2Lj%He{S=9`!)6syGxP2RYO9NtmW(Q4G1%ns0N1 zhiTd27!7CcDvU?Br*YIm4#?;w-N9=(sUslO>8Uv{lMFjXIH&Y=XNu!lg1>$0odE8- z{hftCkd}Y25FoaV$O3N=CZ=z$lg$GdEf}VjGdlx*Y2jp;cJ}X0hFtoA)WR7>qiwOr z6wiGj)YIa`KfaYl4e!`ys+*}zVnrCAiQ^@M-S$qbPF&9O*9lOY9z+j}WnVwQlq%A2 zQ>7-5rVtj*!+tteyTA1^U3N-!og?;<@cgvh)|vY!r0!Nij<0u8`O0~ZX66Twlis}_Qls{>QcE8itQJ& z3Y8dzOQhytO1)(1$`Hkwn2fbbJ? z#&oWOV+Jol!BaAJB_a+hEtm!%Yr{@yN4=wM3g}JTe}UtzSZ~UfSR7igNhVj7&=2OK zFAz-BGKS>$5OY^F?GVViS$py0xSTWknGaH@g~)4d%=D_{Z7wrsefL(v4|?UZSDr13 zi`jV^I{oGnZLAn$wu=lskN(A3(%T3&-^JGA2q;sNXX{qJALU@QpFa^D2sKkQ2?70O4ck8bA1{dfF6wh#~C$ z0^$(mbRB^&aZ)WnT36~zy+ZX05jTf{y8y?YZUoXvS_x9_XGpbiUAv3&I_StTCz26v zyWBk-3VU(;0$SXf)6o3#1heuRx5?nTP|hbWUZ&CQen6~q$bM)Z>kM1GI@2$ChsE4Q zqH1PMKaf2;bknd^1%N`)J}p#~tgN2*+vl{UC9L4vq-t~K56uTZWU4wbU7yI>@|*~_ zzCst)u#c3H{OPu55L7D?;q@KA@2Evcw#bvupNcgdI3BBmM|LopBWS+#Hc|ltK0P{# z`)ICp^HuHCeFD3A`-tB_2+#9H_UZ>5s@vsn!)H;(kV75Jr!az_eJTkXoN}Cp7*0I7 zs{J|)9dU^gGnQA=!#XUa74C+r@+K5u8KG%}Xt|9dp zzQRUeHFJv*FZ(~rQm$2hh;J)S?t}WpHbF0q_RWoAmAZ7z{mS7tqF1I$eh~%$fD=EV zeVnM`T0twwWuke9Al)p4S}A|D;(Cgr;nsU@ZPldh2ctI^GR?VqJ^kL_rL!;KZd0^-7W8HV z9*knxh7`i(95Y`H5fBXw8gp=HUq{_m5>@2iUj;bA6t0*}T?O8Vh6Ww?+WfX3=+91XPUjj?E>}CZEJ@GyIyMv| zO48weWa&dqXN0UQS56g42`CPq=HCZL(#!T%zsK%9R_(8}`)F_teGJ(=(K{Kpi?$)@ zHv+PSS_K#4wEqW4+R_jea`;cx4FrkGKLiO|C&Mm~|6l+x=^mKm_s=AV=nupqI*zqC zExJaCb|Sw2P(3taofIEcf|zY`a`k^h+p2({<5F5QakDim;$CFPL zY-l#wPLt9=rp=GR1R3DQ&mGr%I@8Ls8yeCaj@qyYVj2+Bcp{YkZp(E@qpe521+{- z-h=sr(%@7F5hwpK)d6tNHn=kz1bcq=^TPplXZGiYYTkwhJciDGE}>sS(KszBN5KKx zq(W~qwbJ67l)d~I z^UuL@|7#WE_#;DUU?cWJ>mV=t%f0h>6w|=@J;6kSB51e)L3nc1e;ldCW_j({GiSez zmHGI~`QNKr|p{Zs;2Pd@jPSMO-hz4IQ_K3t} z&_9JXNWP+oC$>!n20x3N09yX_l@&j zvRz%SVGJNKGn0BI6d^Jte-I+%rw@uxXYrU#wh`a~n|dQ%*9EzQEX1CIvad~W(W5tOY3mI2}`Ed`(jLh0_|1_m({(SMRX!_QBzSTGu|tWI1qh1 zI3wswqzy}s_1v0ZXimZK<=_2?-m>0gW`tafer>b10Dl5O=*;05?&JPw(hq!6_JUe~ z)8a=GIFUhCy7b%R{woDS|HBz1G{(^2kU$J~m_agfu>ou)WuIjYfuPbc?}I1T_;4rH z^$l09oZyqMSL85w?#t-I!#r#eyhmFDA%bDZ9jOgoA!+;S7GF?0(OSEp)1anvefiWL zUG2qJ%l8Ov{DrTC*4_JNOCC;O**7pjvXoLAu1X!Mrz=qhzIZSi{v0{bMDO$A11%PL zGO53d;>6W9dN06Ki0%BtFN}PYL59-tcwFr4vHAD{N5^&7yzC4IVx}mAqjU^S`ljOr z6Xru-a5<%hz6af(a2*vLG*&EMt6@CFA_{73g%9!cDQdC;+7Tk9JB+0aKI<0j4`7(# zv6Ni=I*%FRRqd1J^ZN=&-Tq?~ZT|vgcc?MkjT3()TsA!NHSqoSWyGLa(eTu>dJ5|+ z>5jG&lV*yU!1#&2#%iuM`dE?%eJ7Pm-1OA0ZP|>3dKN#w#S*tar-(+({*1Ra1vqE_ zsEK*oO#un>Eyl4F|D+{Iu>Z|P!STaIAvDIz5Tpg=5EV;aara<8YF)-#}+P%nv4#ys&gT)Ct}&zjK}$1vQ2G^_Zzh9EfFRc zJZFlHNtfbFdxP+@IcE)D?;cvlqGz=Sk0HaWwWq2#LKky9Lp>m$50yHt^w_r$GpA7) z(~B;bJ0&N-##`It(MA?k;=zwBFR9;8`Ps%0y^Z@Yj#`hkA#v)nXFX8Yy@pLUE zrD7t`)csk+mwcB=7UwN)~QpWYz% z$lLBkoQAz)9Za}3+x!|zYoLOC|7R0$PPV4<3*xf(1$u#VqUvP~^lKfQifeS$)2$^9 zk8F!|{wQQo3Sg@D2f0DQ{@rl^lKMM{D+IS|18|T1Ju~FW57z+u7z=Ud-opBXogM6i z(+6MS*%A;bYOF3|8~CaAzA7~$>^)DRzV;asGg5)5) zy&MMgxbvY3yE$LxvpkUGo?4+(T3+}-WFp9w(Qok0#ba$kQFLVcpTQB#AK2)b8_0Z9 z9X%X*=k2%)6wRijAS*q?mnU7bM_)eZJ!Q0S=ffow zzbAIrWx1#w%~eGY;esjZ7y<7%xiY4mGFy2heg)SXbI`EyWxQ76l{W*AOBCQTzL0$) z&7z;+rsqF4njo@>PNk0HuiEzo7<}2fo>Ad2MFFdZ^n(h z%G{d?T99f?DNgoN zuD@c?_gDW%j{#c`s&xndRq}7AXdQw?VIk$zKiJOrho^u}NP|O7NsM&W6EbPSd?8`Ooz7xeL^ZJodLy~vvd`<=?ct{_ zxkhH#aUebvv?#$~r8S$t@3qTY}LBP~mGAw7NqH*;)p`;uB1adc&F%5T>5RM!rga;^s6 zv`J!zhr^8>k%y9*A}{aIbren7_D2)-XDCNpXpvc<}0-Yd#IQtQ5>h+<|8%sh>ALpX9Tvqe>so zhTcH`Vr5YG2T_9mRrhxRS%LZwRsi~bH~{E`q&a{?o(eSEvuD5!ry;}#z0M*TK4ggh zK}oN<=AApUJ~@Wh2ICSbkZW=l-zc#bxEzaEOtvnrsSc*&(OrDpL80eMb0}0~UnY)a zZ`y$wi|E_BQfKFBX9~D-RpBEfJB5P>EteHKab};OYUjQ|V^Vm?vXxc1oHm?`*4cu0 zCH+2;{L;sHgt~Mc4t}5>FWDta04!vOmkV^&N;1ALoM0*JEKSYX2bRvXUo&rM%SbyE zQ8Y}Inj#SPTay^i22W`}u!cc|iE6)`XW;xe@|Vf(06~L*;F27b+h=48#+~BT&+kL{ zkB120m%o8V7t}`WnvHC`=N0G;vS}*z=-FI}x!$?$vQGMsu#)*D+Ciay*?{uLklQYN)~ zGy8_82Md?neS54CIq!kpA8TC7oic{k&bfr{16l7?MP~Q z{MH+$?)Tq5=HZQF6WE<{^yS05@*W=fdZXg??iZmQDJJ0Rod~}vC+c7>#l|%J(gW(sq?H|PjlXpuH^X=Zc+G{Tf_{eZ&?;}r`Uzf| zISTcjr;Xp2QN7fCkuclFAcs8f$jBT*73%YYrr5vTu#qf$NIr5+TO{vM|2`k6Z(~%O zw9NZ#3#GG%>jAE`KbR3zG(dY&*((^}?)@VP)Jnhr4Zp?{Y)tbHQ}R0>GTP-*1n6Xm zW>%jN6=*@@YXLT);!%lc^fg(G*ZG$!ec6vbN$&KazuiF7+ZIDhR>2J7iqA z29e(DX6yDk1xlD>b@kvfBgHvjtQ3$;2iq`@o=4vjhj;nr~Tk^5&P2c@5O4&7ltG8b>+9@fi@>s?&! z4N#KxspF9SPjm>SdblgeL(@#JK+n$Pub4l7?hHY-ofF{ds%sV?o<#mfYy_VE z9|jB^knRYeMb1BtD|G%k^PCL1$bVDXStVcbuu29E3nOwNbIsnecJ@2I1|vC90TG$Y z)&f$AzSyjldhH&@9mk}19P28q5H8^YsDL?p#?@1j>s-1WWonQXS6$IC-$TMfDc-G7KBhn+f=2J;V=F^mq&$o&pTR-px5gnySR-y&h=dRkdP`Tc zP3^yB#c&9Cpa=!3p%rItipQn}Zd##*X`vC(uk(0sMeFLAp+g>k2M4|Objp_+FhDPwN7`@=|Y8o3GS3ctTsxGQ~^bUiO+R=eUJhuXww z2de-KAm2#a)n>ls`=58@_d0@Jv8G^HMH{?quO-XoWRotI0LK z0hM!L4n~;zNcP98!ur=6NHe27j&xxb(#IIH0W?P*<%MshZ^eS3meiv&PL^l^)FeX? zR%=D#ruo2Wu9c~v^9FJdvXM@SfFeEaEm!C+;}H_T!4-O$0^GbSVyIMs^-;`m%=XVJ3M=Dy1@8=_r~E0%+|I4mN!?`@#h^C zd3-*HA6Xp@_>U*UA3S83%fW}qH2*5p5=B>ofBB;7fX>+f5Tg3O?5QLgrGEdsFk84d z#jJJACNc?LMxobZ9evE0e-Rld7FDa)P ziDk?;s{fbMVKYU@VM9#-%Ls%yHotuUQ)!9Tp)lxWvWN^u7#>K}aIKUUtyB~`&rVS| zu34EpV1sYzuzhTGLZiZ zor$;FEGuWxhE2PBjq>T)M$2WngU1lh-(OU5)s!{r0ye{EVLSHk+$>>Fb8E7BgieSR zXBJvwUL}Zi2$IA;OxF|;H9ISzO2@BKN0_4tOcEdZ$J@i+hh(ff+l05~S&7JwPtVhB zDO95O8XH3|h+?8zHgV}b7r|5NtfkL&MYyR70{O}iG-Z<6)hqKQ=IRwXKXWV3(Ki1D zIXs0~V4-6GRe1rv^x$h?h&;=Cf)*|3<63?7oWd9JJC_3C4{w-=xV$^Nz$T*$tAI6p z>saw_;3bkP?7ZTMQkXp$F`}G)F)Pj;V^#KMTv`BdId_+Jm+oCDI%OJt0VSBra0!t+G1?aN2<`SYYCj@}vgtd7T(nPO(`U1mc>E;D8Eq$ZH(eG>C z+sAFgTRHH=FvV)llK~;Y;5pzR2;izx4BN@EXYC&ID_YkAuIVff0NNVOfea&S5qsgYYWMBB0m4=qW0K>zyqKDd9NSl?WIu9Kpd zTHG|gIc5)BH-gMxKcp~BhFxcE;+pYYIlvXLw#2&io;Lb4YXDcV*Gg;VK8eohQ@BBb zLrBB7Ui0&OZq~`dvs~daXEk|T&H}b{r0f+abgILEtGiMfhm+&+IU_B26-tkrausqi z-T$bz3`=KOO+PXm7V1F@n*CCa4u7&IK+T5k7C}wB=gz>n=CXlyG8xhDNN*#`C1)e2 zuQ9WuL@Fr~%8<+g5s8tugj(91JvpB!3wcJFw-7*rULHM~NMlceG-StOμo(+%4_6!q2Lm_~Q%cm&b+N*mvp-tlki3Rh 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%0Asj_#l4}ny-IoFb4cN_#GL506?TR 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

    Automate front-end testing

    +
    describe('Testing platform components', function () {
    +  beforeEach(() => {
    +    cy.visit('http://localhost:4200/projects/32bf5c50050411e8826c116cafab203f/versions/53/components/c843e1b0284011e8ba31cd640de39f04')
    +    cy.wait(5000); // Necessary to avoid slow starts of the webpage
    +    cy.get('input[placeholder="E-mail"]').type('acc_test@allcancode.com{enter}');
    +    cy.get('input[placeholder="Password"]').type('justatest{enter}');
    +    cy.contains('span', 'LOG IN').click();
    +  })
    +
    +  it('should login and create a project', () => {
    +    cy.contains('span', 'Open Project');
    +    cy.contains('mat-card-title', 'allcancode');
    +    cy.contains('mat-card-subtitle', 'Allcancode Core Components');
    +  });
    +})

    Cypress example

    First CI, test

    -
    test_back_end:
    +
    test_back_nend:
       stage: test
       image: node:latest
       before_script:
         - apt-get update
    -    - apt install -y xvfb libgtk2.0-0 libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2
    -    - apt install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common redis-server
    -    - service redis-server start
    -  script:
    +    - apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common       
    +    - curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
    +    - apt-key fingerprint 0EBFCD88
    +    - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
    +    - apt-get update
    +    - apt-get install -y docker-ce
    +    - service docker status || service docker start
    +    - service docker status
    +  script:      
    +    - docker run --name redis_instance -p 6379:6379 -d redis redis-server
    +    - docker run --name mongo_instance --restart=always -d -p 27017:27017 mongo mongod
         - sh test.sh

    First CI, test

    test_front_end:
    @@ -221,6 +243,44 @@ 

    First CI, deploy

    - gsutil -m setmeta -h "Cache-Control:public, max-age=31536000" ${STORAGE_PATH}/**/* - gsutil -m acl ch -r -u AllUsers:R ${STORAGE_PATH}/* - gcloud app deploy app-alpha.yaml --version=v${ACC_VERSION//\./\-} --quiet
    +

    Deploying to Gcloud

    +
    runtime: custom
    +env: flex
    +
    +automatic_scaling:
    +  min_num_instances: 3
    +  max_num_instances: 16
    +  cool_down_period_sec: 180
    +  cpu_utilization:
    +    target_utilization: 0.6
    +
    +resources:
    +  cpu: 1
    +  memory_gb: 1
    +  disk_size_gb: 10
    +
    +env_variables:
    +  ACC_NODE: "node-P"
    +  NODE_ENV: "production"
    +
    +liveness_check:
    +  [...]
    +
    +readiness_check:
    +  [...]
    +

    App Engine Container File

    +
    FROM gcr.io/allcancode-platform/acc-server-image-3
    +
    +# COPY Application
    +COPY . /app/
    +
    +RUN npm install --unsafe-perm || \
    +    ((if [ -f npm-debug.log ]; then \
    +    cat npm-debug.log; \
    +    fi) && false)
    +
    +# Start the server
    +CMD npm start

    First CI outcome

    @@ -228,7 +288,8 @@

    Pointing out drawbacks

    • Necessary to cache all data between stages?
    • Do we need all these stages?
    • -
    • Should every branch execute all stages?
    • +
    • Should every branch execute all stages?
    • +
    • Do we need to install mongo and redis?

    Optimizations on caching

    build_acc_front:
    
    From 02a79eb8c8403f253c819bdabc0b291de63b8555 Mon Sep 17 00:00:00 2001
    From: Travis CI 
    Date: Wed, 26 Jun 2019 18:04:00 +0000
    Subject: [PATCH 76/79] Deploy to GitHub Pages:
     407ce065666c4cd8f41ec088b3b18ff124a28976
    
    ---
     tools/ci_cd_with_gitlab-p.html |  68 ++++++++++++++++++++++++++++++---
     tools/ci_cd_with_gitlab.html   |  60 ++++++++++++++++++++++++++---
     tools/media/bitrise_gui.png    | Bin 0 -> 44664 bytes
     3 files changed, 117 insertions(+), 11 deletions(-)
     create mode 100644 tools/media/bitrise_gui.png
    
    diff --git a/tools/ci_cd_with_gitlab-p.html b/tools/ci_cd_with_gitlab-p.html
    index b814f6f..38ba1cd 100644
    --- a/tools/ci_cd_with_gitlab-p.html
    +++ b/tools/ci_cd_with_gitlab-p.html
    @@ -336,11 +336,12 @@
     
     
     # Pointing out drawbacks
    -* Necessary to cache all data between stages?
    -* Do we need all these stages?
    +* Is it necessary to cache all data between stages?
     * Should every branch execute all stages?
    +* Do we need all these stages?
     * Do we need to install mongo and redis?
     
    +
     # Optimizations on caching
     ```
     build_acc_front:
    @@ -371,16 +372,71 @@
     
     
     # Merging stages
    -![](media/deploy.png)
     ![](media/test.png)
    +![](media/deploy.png)
     
     
    -# Outcome of CI/CD pipeline
    +![](media/chuck_norris_approves.jpg)
     
    -![](media/acc_ci_cd.svg)
     
    +# CI/CD mobile apps
    +Before we used  Adobe's Phonegap to export cordova projects.
    +* Unreliable software on updates
    +* Failing without giving reason
    +* Cordova project size limit 100MB
     
    -![](media/chuck_norris_approves.jpg)
    +
    +# Bitrise CI/CD for mobile
    +* Customize branches workflows
    +* Sign code
    +* Publish to Play and App store
    +* CLI for local testing
    +* Integrate with chatting platforms
    +
    +
    +# Bitrise YAML
    +```
    +format_version: '7'
    +default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git
    +project_type: cordova
    +trigger_map:
    +- push_branch: "*"
    +  workflow: primary
    +- pull_request_source_branch: "*"
    +  workflow: primary
    +workflows:
    +  primary:
    +    steps:
    +    - activate-ssh-key@4.0.3:
    +        run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}'
    +    - git-clone@4.0.14: {}
    +    - npm@1.0.2:
    +        inputs:
    +        - command: install
    +        - workdir: "$CORDOVA_WORK_DIR"
    +    - cordova-archive@2.0.0:
    +        inputs:
    +        - workdir: "$CORDOVA_WORK_DIR"
    +        - platform: "$CORDOVA_PLATFORM"
    +        - target: device
    +    - sign-apk@1.3.1:
    +        inputs:
    +        - keystore_alias: app
    +        - keystore_url: file://app.jks
    +        - keystore_password: ***
    +    - deploy-to-bitrise-io@1.6.0: {}
    +app:
    +  envs:
    +    [...]
    +```
    +
    +
    +# Bitrise GUI
    +![](media/bitrise_gui.png)
    +
    +
    +# Final CI/CD pipeline
    +![](media/acc_ci_cd.svg)
     
     					
     				
    diff --git a/tools/ci_cd_with_gitlab.html b/tools/ci_cd_with_gitlab.html
    index 4407e49..39ed95e 100644
    --- a/tools/ci_cd_with_gitlab.html
    +++ b/tools/ci_cd_with_gitlab.html
    @@ -286,9 +286,9 @@ 

    First CI outcome

    Pointing out drawbacks

      -
    • Necessary to cache all data between stages?
    • -
    • Do we need all these stages?
    • +
    • Is it necessary to cache all data between stages?
    • Should every branch execute all stages?
    • +
    • Do we need all these stages?
    • Do we need to install mongo and redis?

    Optimizations on caching

    @@ -313,10 +313,60 @@

    Optimizations on stages

    except: - master [...]

    Merging stages

    -


    -

    Outcome of CI/CD pipeline

    -

    +


    +

    CI/CD mobile apps

    +

    Before we used Adobe's Phonegap to export cordova projects.

    +
      +
    • Unreliable software on updates
    • +
    • Failing without giving reason
    • +
    • Cordova project size limit 100MB
    • +
    +

    Bitrise CI/CD for mobile

    +
      +
    • Customize branches workflows
    • +
    • Sign code
    • +
    • Publish to Play and App store
    • +
    • CLI for local testing
    • +
    • Integrate with chatting platforms
    • +
    +

    Bitrise YAML

    +
    format_version: '7'
    +default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git
    +project_type: cordova
    +trigger_map:
    +- push_branch: "*"
    +  workflow: primary
    +- pull_request_source_branch: "*"
    +  workflow: primary
    +workflows:
    +  primary:
    +    steps:
    +    - activate-ssh-key@4.0.3:
    +        run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}'
    +    - git-clone@4.0.14: {}
    +    - npm@1.0.2:
    +        inputs:
    +        - command: install
    +        - workdir: "$CORDOVA_WORK_DIR"
    +    - cordova-archive@2.0.0:
    +        inputs:
    +        - workdir: "$CORDOVA_WORK_DIR"
    +        - platform: "$CORDOVA_PLATFORM"
    +        - target: device
    +    - sign-apk@1.3.1:
    +        inputs:
    +        - keystore_alias: app
    +        - keystore_url: file://app.jks
    +        - keystore_password: ***
    +    - deploy-to-bitrise-io@1.6.0: {}
    +app:
    +  envs:
    +    [...]
    +

    Bitrise GUI

    +

    +

    Final CI/CD pipeline

    +


    Creative Commons Licence
    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. diff --git a/tools/media/bitrise_gui.png b/tools/media/bitrise_gui.png new file mode 100644 index 0000000000000000000000000000000000000000..3edf3f90f10226cfcdd0580efab1b4cf2ea1ded0 GIT binary patch literal 44664 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 literal 0 HcmV?d00001 From 6e9d4c24a8f5b0520230a71c56dfaea068f0ccd1 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Thu, 4 Jul 2019 10:44:16 +0000 Subject: [PATCH 77/79] Deploy to GitHub Pages: fe55fc6233b0b07b8fbe319f8f5842092dc6a4d8 --- tools/ci_cd_with_gitlab-p.html | 10 ++++++++++ tools/ci_cd_with_gitlab.html | 12 ++++++++++++ 2 files changed, 22 insertions(+) diff --git a/tools/ci_cd_with_gitlab-p.html b/tools/ci_cd_with_gitlab-p.html index 38ba1cd..63bfc38 100644 --- a/tools/ci_cd_with_gitlab-p.html +++ b/tools/ci_cd_with_gitlab-p.html @@ -379,6 +379,9 @@ ![](media/chuck_norris_approves.jpg) + + + # CI/CD mobile apps Before we used Adobe's Phonegap to export cordova projects. * Unreliable software on updates @@ -437,6 +440,13 @@ # Final CI/CD pipeline ![](media/acc_ci_cd.svg) + + +# Lessons learned +* Local testing does not works as remote (paths for app engine) +* Misused tooling support can negatively impact your development process +* A lot of testing is required +* Documentation is not straight forword diff --git a/tools/ci_cd_with_gitlab.html b/tools/ci_cd_with_gitlab.html index 39ed95e..643da0e 100644 --- a/tools/ci_cd_with_gitlab.html +++ b/tools/ci_cd_with_gitlab.html @@ -315,6 +315,11 @@

    Optimizations on stages

    Merging stages


    + + + +

    CI/CD mobile apps

    Before we used Adobe's Phonegap to export cordova projects.

      @@ -367,6 +372,13 @@

      Bitrise GUI

      Final CI/CD pipeline

      +

      Lessons learned

      +
        +
      • Local testing does not works as remote (paths for app engine)
      • +
      • Misused tooling support can negatively impact your development process
      • +
      • A lot of testing is required
      • +
      • Documentation is not straight forword
      • +

      Creative Commons Licence
      This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. From f83a2fa6a5b9f5b6955d1aafa2551a11c11d21c6 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Thu, 4 Jul 2019 22:02:40 +0000 Subject: [PATCH 78/79] Deploy to GitHub Pages: a6d587710e9227cf92c3c4d350982e856372f8ed --- tools/ci_cd_with_gitlab-p.html | 55 +++++++++------------------------ tools/ci_cd_with_gitlab.html | 49 +++++++++-------------------- tools/media/bitris.png | Bin 0 -> 30433 bytes tools/media/cypress.png | Bin 0 -> 2805 bytes 4 files changed, 29 insertions(+), 75 deletions(-) create mode 100644 tools/media/bitris.png create mode 100644 tools/media/cypress.png diff --git a/tools/ci_cd_with_gitlab-p.html b/tools/ci_cd_with_gitlab-p.html index 63bfc38..5ae73cb 100644 --- a/tools/ci_cd_with_gitlab-p.html +++ b/tools/ci_cd_with_gitlab-p.html @@ -37,19 +37,6 @@ * [Στέφανος Γεωργίου](https://www.balab.aueb.gr/stefanos-georgiou.html) -# Agenda -* What is CI/CD? -* AllCanCode Case -* Without CI/CD -* Build stages -* Caching data -* Optimizations -* First CI pipeline -* Point out drawbacks -* Second Attemp -* Outcome - - # What is CI/CD * CI = Continuous Integration * CD = Continuous Deployment @@ -86,6 +73,13 @@ * Automate mobile apps build and deployment +![](media/cypress.png) +* CLI testing +* Browser testing +* Video recording +* Mocha-chai like testing + + # Automate front-end testing ``` describe('Testing platform components', function () { @@ -116,7 +110,6 @@ * Just create a .gitlab-ci.yml in your project's root directory * Declare Stages * Cache data or modules - * Install dependencies on container or VM * On push the CI/CD pipeline will be executed * Upon success or failure you are being notified by an email @@ -149,10 +142,6 @@ ``` -# Multiple Evnironments -![](media/multible_env.png) - - # Caching data (1) * To store directories among builds, usually dependencies that take longer to compile or download (npm, pip, Maven) * Uploads the cached data after the script phase but before after success or failure @@ -218,7 +207,7 @@ # First CI, test ``` -test_back_nend: +test_back_end: stage: test image: node:latest before_script: @@ -264,15 +253,11 @@ stage: deploy image: google/cloud-sdk:latest before_script: - - export ACC_VERSION=$(cat ACC_VERSION) - - export ACC_VERSION=$(echo ${ACC_VERSION} | awk '{print $2}') - - echo ${ACC_VERSION} - echo $SERVICE_ACCOUNT > /tmp/$CI_PIPELINE_ID.json - gcloud auth activate-service-account --key-file /tmp/$CI_PIPELINE_ID.json - gcloud config set project allcancode-platform after_script: - rm /tmp/$CI_PIPELINE_ID.json - - rm ACC_VERSION script: - export STORAGE_PATH=$( echo "gs://allcancode-files/builds/app-files/platform/${ACC_VERSION}") - gsutil -m cp -r -z html,css,js acc-front/dist ${STORAGE_PATH} @@ -313,15 +298,9 @@ # App Engine Container File ``` -FROM gcr.io/allcancode-platform/acc-server-image-3 +FROM gcr.io/allcancode-platform/acc-server-image-7 -# COPY Application -COPY . /app/ - -RUN npm install --unsafe-perm || \ - ((if [ -f npm-debug.log ]; then \ - cat npm-debug.log; \ - fi) && false) +RUN npm install # Start the server CMD npm start @@ -339,7 +318,6 @@ * Is it necessary to cache all data between stages? * Should every branch execute all stages? * Do we need all these stages? -* Do we need to install mongo and redis? # Optimizations on caching @@ -376,9 +354,6 @@ ![](media/deploy.png) -![](media/chuck_norris_approves.jpg) - - @@ -389,7 +364,7 @@ * Cordova project size limit 100MB -# Bitrise CI/CD for mobile +![](media/bitris.png) * Customize branches workflows * Sign code * Publish to Play and App store @@ -397,6 +372,10 @@ * Integrate with chatting platforms +# Bitrise GUI +![](media/bitrise_gui.png) + + # Bitrise YAML ``` format_version: '7' @@ -434,10 +413,6 @@ ``` -# Bitrise GUI -![](media/bitrise_gui.png) - - # Final CI/CD pipeline ![](media/acc_ci_cd.svg) diff --git a/tools/ci_cd_with_gitlab.html b/tools/ci_cd_with_gitlab.html index 643da0e..f14d627 100644 --- a/tools/ci_cd_with_gitlab.html +++ b/tools/ci_cd_with_gitlab.html @@ -35,19 +35,6 @@

      Tools and pra -

      Agenda

      -
        -
      • What is CI/CD?
      • -
      • AllCanCode Case
      • -
      • Without CI/CD
      • -
      • Build stages
      • -
      • Caching data
      • -
      • Optimizations
      • -
      • First CI pipeline
      • -
      • Point out drawbacks
      • -
      • Second Attemp
      • -
      • Outcome
      • -

      What is CI/CD

      • CI = Continuous Integration
      • @@ -82,6 +69,13 @@

        Challenges

      • Automate CI/CD
      • Automate mobile apps build and deployment
      +

      +
        +
      • CLI testing
      • +
      • Browser testing
      • +
      • Video recording
      • +
      • Mocha-chai like testing
      • +

      Automate front-end testing

      describe('Testing platform components', function () {
         beforeEach(() => {
      @@ -111,7 +105,6 @@ 

      Enabling CI/CD on GitLab

      • Declare Stages
      • Cache data or modules
      • -
      • Install dependencies on container or VM
    • On push the CI/CD pipeline will be executed
    • Upon success or failure you are being notified by an email

    • @@ -137,8 +130,6 @@

      Build stages

    • deploy
    • release
      ```
    -

    Multiple Evnironments

    -

    Caching data (1)

    • To store directories among builds, usually dependencies that take longer to compile or download (npm, pip, Maven)
    • @@ -190,7 +181,7 @@

      First CI, build

      - node_modules/@angular/cli/bin/ng build --prod --build-optimizer --preserve-symlinks --base-href / --deploy-url ${DEPLOY_URL} - cd ..

    First CI, test

    -
    test_back_nend:
    +
    test_back_end:
       stage: test
       image: node:latest
       before_script:
    @@ -228,15 +219,11 @@ 

    First CI, deploy

    stage: deploy image: google/cloud-sdk:latest before_script: - - export ACC_VERSION=$(cat ACC_VERSION) - - export ACC_VERSION=$(echo ${ACC_VERSION} | awk '{print $2}') - - echo ${ACC_VERSION} - echo $SERVICE_ACCOUNT > /tmp/$CI_PIPELINE_ID.json - gcloud auth activate-service-account --key-file /tmp/$CI_PIPELINE_ID.json - gcloud config set project allcancode-platform after_script: - rm /tmp/$CI_PIPELINE_ID.json - - rm ACC_VERSION script: - export STORAGE_PATH=$( echo "gs://allcancode-files/builds/app-files/platform/${ACC_VERSION}") - gsutil -m cp -r -z html,css,js acc-front/dist ${STORAGE_PATH} @@ -269,15 +256,9 @@

    Deploying to Gcloud

    readiness_check: [...]

    App Engine Container File

    -
    FROM gcr.io/allcancode-platform/acc-server-image-3
    +
    FROM gcr.io/allcancode-platform/acc-server-image-7
     
    -# COPY Application
    -COPY . /app/
    -
    -RUN npm install --unsafe-perm || \
    -    ((if [ -f npm-debug.log ]; then \
    -    cat npm-debug.log; \
    -    fi) && false)
    +RUN npm install
     
     # Start the server
     CMD npm start
    @@ -288,8 +269,7 @@

    Pointing out drawbacks

    • Is it necessary to cache all data between stages?
    • Should every branch execute all stages?
    • -
    • Do we need all these stages?
    • -
    • Do we need to install mongo and redis?
    • +
    • Do we need all these stages?

    Optimizations on caching

    build_acc_front:
    @@ -314,7 +294,6 @@ 

    Optimizations on stages

    - master [...]

    Merging stages


    -

    @@ -327,7 +306,7 @@

    CI/CD mobile apps

  • Failing without giving reason
  • Cordova project size limit 100MB
  • -

    Bitrise CI/CD for mobile

    +

    • Customize branches workflows
    • Sign code
    • @@ -335,6 +314,8 @@

      Bitrise CI/CD for mobile

    • CLI for local testing
    • Integrate with chatting platforms
    +

    Bitrise GUI

    +

    Bitrise YAML

    format_version: '7'
     default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git
    @@ -368,8 +349,6 @@ 

    Bitrise YAML

    app: envs: [...]
    -

    Bitrise GUI

    -

    Final CI/CD pipeline

    Lessons learned

    diff --git a/tools/media/bitris.png b/tools/media/bitris.png new file mode 100644 index 0000000000000000000000000000000000000000..6dbd605562fe368a154be431ceef8327966d31b3 GIT binary patch literal 30433 zcmb@ugT3|<(c+<@p%H3nLX6SS08Oa-6C5m59sK>w z77fiGt_4ws2BQD^h+Ulhbmj8+@bJUoO`fwTrgeLZc-?#V9juvoajEtu_x5J;^n+*5 zq~E|W=DfF5lmsNKBz5(C%DDS|)_e~1Gh9I&$}sFjKkQWy1$lv0J9_g( z!`VyPh=d0B6FS15@(A5bkEoqC!$N%mHne3Z*mW3)dKXo&@Q9t2-pKuy`G9}G-zp&f zY$XSJkcE6^_84$UElj$#;cdo8O6nG13CpIhG?MjAi*EhcPydV4?qJu;_>7jKuAx zr_Ex6P@-|TZWp9j6ygQy6_gLP=jCs#9`nTo6O{-D96xt>(w0zVWTGW?-?PdY~z zU}Ba8S2JxKdmvGwAXzQ0Eoa8#<>sp{?NUa=1R6f6ii`x{vBG%a=tfEu$?*tG@pZpun#l-s3S_Bz;9EE|02Yl0W5r=D?$QUveCB~M-x6a2Ap{Q^=$Ig-z?ZBz52|P& zB$r)gfrLi{rNZY=?}k(V+o=VF`NB%NvbR#NTOi-^HOdl}EP={u$Krad8=yfJzDP3<^a)I>MAgV#{F?n;Jmmkdd?`#KL&$NHhSoDFld4 zz>Jr`ikHAVMi=u?!p+S6ph^L;;Yv_5RHERAs|^Ag6D&!RNHIi88xaElkx~&&AOxmf zO3DIJDks5vU|z%d|~6_F%MH90{OIh{X9?kCg`1?EPO-)m!}z;StEF#EJ)A-vlbZu=heDF7Od zKAhJjW`4OipOoaM(Hx`L(*c=Eq?!ONW?Xi(A}JhZ@IKo%A)a|L02(Q3h&84}!;QgF z3_JzME4AV9DOpCE+2S@pATnjz^qiSkptRRTEOtM0{SJZuaUF}0n3i8Z>9XSWzrKni zPGxJQs7=ufRF*VbG0S>vxWcf6OHD+8E(+Fvz>o5`l|JgiiBJ!kKbbJ`h*cS0_sxc~ zCK<#*SVxmXQv3e0y#fgxbDejzpC=W)bJo@T1^_)pr}kD~u*M5vsptv>1lYh~3n^c~ z6l|m$*=;{TCP|c3sFkT*r5SQI(d7*ICr@blEMKhVe(}vQBhdi$)7Ri!asJgfhII9S?G= z8;W(HtqHyJ`aWg*W4XgjZ-cL|s)y{##kHK4NSwZfvj5j`zEDH4^XKc~FZ|6C72veb z=^%ke=S>Jjzz~KWc=DPB^H(h*O}@}l7E5pJ%-zyzAbH(^KcUU4B$uLAHtjlxx9muu%RfE`DI7t8SUPATzA0>YV%`e3|Jm21~cqlKiBVlzf z88aX!0s@D>91%QPFbHxv2@O!Q5wDymlw}-bD(oct4?Kheys=`Yrkob5gtg4xO~}+& zk>0t#wW1~1;_Z}kNaxsT_E+hE-Y@?kV^Ag3`*uhRAGrJ};joz$h2cfN<7ZW~Fi!f# zHb+}aPDq^cAC^upsHST()*%$JXqS%6kpMi@MQQl=QwbfDAGOo*xc^rFdn!^KiAipV z`i0zZwYW=c;{k^`62&x?(9j8N(J-iyXjmkudmyU9`1=bM$zPWG@4_OH6lZ zT4ATBn&*4-PXV+DQz0zq8Q*^095gUOWOg8cB&rQzWd{5!_RIkLVuII^tcF$Ew9&6Mn=dg%bQ{h)d6 z&=850DLyy6G%|q~&dm)^000m$96THZj2XckU5eAU5BZ3PgOXb~IK{Q>rNz-lSjrRw zIB;%eTgU)>y~Nc}4oFPFbOfyvVr67yL@1C%UNb9@6kjG_aYw;`N-E4s5>X_P?50{v zU~QO)7D($a?{FdW=2-41?Rnjrs`ZNffn0JkTJ(v>0rek21@%X&xy0JxdEvH+~bk=)G1kw;8;cnOh!(pvV&Kfi&7 zQJ6L~x9sQ8LAh&(K7bXyF)d(2MS0 znbz#gOI6&j&gF$jWn0!tg#h2|B7^QYb^wx9fmFh*BLZ zYha;4G0ag;{doXMWn1j4`b#wZHS5562?CEl7Vr7Xt=})TC)<*kk*Zl}VgA*e&`@(P zE-o#OL>tqNZefWvrt+eC`p)@V@e}2xX0GvRFIU&HSh-ToZ@|9rgops#chEh zkZw3KI+``|j|`|`(U{-_Vx)Tlm)Q#wP}EEbwKg5bxIxpKH_K0;uk^Y#d|VoJsCcRO z56gZErZ{)G+9kT_L`3KcS{{BFQq10dhHJNwr3I(DW3YYi<`@1YqB0hnx1Cg}Cr^6L z1?>DLz`jHj0-1+!xO3OJW?9Gpkhu7`%Jd9sYlEzkjD!E=8M=5t6q5f_`CD+pPTz_s zay;5qo?&Th2|z0<_rFgWNrtF|oA3;l6uBTZTo7x?)olz3o3*%P!;>Y@C(1l#rR~wq zj_EDee(O+MoR%3L)_B+-Wbw7pL_xqmwY!$KNC7scLLHwFc!S1N;UDfcP(YKdW8j)z zBACUI#W*k_o7U&GSZ;BWy6yMsyt7cHI;n|LR<|!-?O9Qis}QZ_LJaT`l20XiK;Ycvc7yc#q+F_fI;;#)n#vVF^3-NQu;+w3%DOl` zeQ*3o$}z(2U>o@i(PmEIfEnca!igM3>ZJcjeK=J`T$`Bak&y5U?U%mC?I779oq9A? zb2XOWn-Er1M;*5JxVrM|>Y>Na_*Y)U@$Y&Fnb}Gkry!Aa1riKP&1{jt*UU)gEVrqxkeKwp?XT1j8b+SFY$eR$4{JpSSLunnOoL z$KG;8b4F}JCA}IfS02qUL^&aM2pf6THplT5?>_e4gD!uZ+vkRq8;<61GG3C&eGMucA^PDU`)g#qB=69w#@PrnHUcg>DfYxIOgQH7{x=ZiK#}&yN#glz0sNvm z^EHz5`u8ES-Pf?~b{4y5G;aM@cZ5pM>7e!b1cK~?f9^2;fC zXF{o{>(lq9^2C>{(-SvIkzAN3s+;*XZnfLj^UQ)hhwKG}Qv-KSbC2EoZSP2kjA~F~ z4}~qV8esCH z1-d(6(Kwa8cNUSL!jTMp6(vDUwK*@T+6=cXA7XAlXjSzg@IFYe>mnXJsU&`KUiNH6 zoW!j3Ip|)=kCxnD`?9b8Fqmj~uO{f^N$K;~$^doVP^L@qFca(o7YF%;gkxEJ0c(kO zgwFj&$$#XUUx0Y&iFDE5?B%~TJ<~`;eyy&u&2Z;RHNlTtcyZPq&ja<2bjM6Cmq{X! zV>D%j77ck}A$-$0K)_--0Qqhwv#?W6k>ZDRJq;(Xf}Y%_2g34K-2{vuDwd`Tqno4_ zw2BL8)Hj?0~zq=1|G>N68F~R@vlqe zQcVQ9@5!hY+v#0>X&L$%6HPrAz8YF}4wVp*0*9-!r(7GnCbaVb`9^OkK|z8Hj=2f}fK;*R3f(uM>lo)n zcq}B-QZBK?gI;@+#^m3@H8tkHhlcDJgx@TS;(g67l~ZK8VCI^-lWXxG%xF8_SCk*( zYFo<{ZiV(Umy`NU@_v0w=$1dc*AQU8ad_!C@629Qq8Z=CifIldesR_NMzNN2ac=rotp@rJZ8e zh>Uv+nc&b7*FcV+D^2_)D`sX@e6%4^;7W)U>dIF(T@2fVesZSB>J!})Am->j%6_XB zn)Xu;l;t6!Nki`(W+%s#VjkB-Lao1cKtd)pEE!HXY@r8J1`*Gf4FSpc33HB(V(!!H zPn(RK$XyS>P!xk);SMOhrqwrvNEnj1j-x3=qlRdJLHGxAo_kOpx0cDMttT=cX$@7T1sevsv1)|r%3!=4vePs@QmLnEsH44Dm?al1keOagA_9l3r zZYr?23&39~Bb$vE`@x(IHGOjv1H&Apb(Z4%<)AU@Lcqr_N(u3>Uh+%)76-Mhdt-AR z8WFI53qg(Tl^gzO`93M)8XZ9vn{oGgyX8sVnXAXW524<>=zrzv5-Yut$8CKhR2W3^W1<+Sn z#+eo)AYS4)OQ}D%$P3A}MBRSRpbY$>T;R5LMe@iisIzcG9Vqv>J_tOC`0(tbRtx}T z?&H*5W%Su2I4`K%rSpl*XEss0OR&omkmtxSl%t5|1AmgnoC6sg`|c|`K7oni^M4Uk zLz$iur3as^LE5u1qE`DG>4?7#0BIPYupG>l9{M5o1!3x83kKCW)uS$;Nx;FC!?W$s z;+H))WjJe%v~65n1ZzD9)CGhZWAzwkV?%*d=mE0su0e0 z2peJkoNBJ$6!5QPIV^M6A^#9UvV@KUk4Bnwv>Qu%FJ+?;s!a~DAn4NeYsEIfMy=F$ zG$#g*&sJ;!Y{xZq^1YIU(&X*HKoIxwq-6 zC(U^7K7vSTtCD#NDbx%?zc{N!dM!T6cW=fO>iuJ^(b#rG-@q3pC2H2`qA(Hg#QVsv zAm|3ANcdR`KLAne)G}I+V9@)j8k(+9MVeI)^`)}KHf6w?kJ?Jnj7Rju9L0D};8$>u zaU|P{^8EbHFZNqHTjJw-t((4#Wv=*-U_852@7$@chR@G4ouXR&u}xRhOr@wYlq1m| z4KSM*2}b=*n4xU+I;tZ^?duIBIkYNL@iPt&7XpshMW?9x*E7hPCO0+Ov*g_aeLhLe3t561<6hZ zseFa-gC-BJV$-LDlX?#oI|`<;QjKv0LI}6y)O?~ zV@4SiD{6XNw5%laynC--EUX!9`my#sfPY|v^&^gggu)r@paU18Uop;564z$Qu~|=s zHz)}O4QV*-)c!|A7|nZ%rQ{xCf9ok~*XFjb>(titdF%4POz={``&}*<^!=S3 zD*D4-i@^SnK>%e+A^DOsHnO(A9X6@a7hO9mE`<%RV`6(;cUj zo7D!#LnbRw#k9K57TTJyaNkUt^Wu7~u4+xsaa``o9edC_);BDglVPaMUphfLjS}o1 zj#br)@=VBh$5OD9`8|1;u1F0>O|clCs3XI%`)EvO9G4V*C=w9OJj9IK|AH)f)ceN) z*;2Z-?{xjBqpGE>3a=3j1wJoxF~Tpy(EE(U02Ydw6|m0Qy9|4sXe&RB|$-r*O?pz%Wp(~V2P*lEX(nde9gUiI2N}f zHyX>}-}Lbbv5FU)!Gh3?Pu;BIX*)StY56h5*|j_20w&O8;JXg>olVw((o zQ(=cO<=GFSJU*L(Tdu&U3{bj3JEFEdJtbtbpE z*Yh*x9-G32h?~Gw<|E$7R*L>x*7Qfvmd9_pQ&n{83p;kUFT-KpH!A*ecPjca>gM^A zOtSIbuen;YEkQB9rKx)-sTF3NsU2~t-@Qx0LnmDV^UE$sP1gYgYJ53=qCssUwQ5Wd z3&XsK!)jw!&IxfBq1d1PEt}kUnC*gb>T;mJR@9FlamcugddinZ8-CjCX4(mVp8Org zK3CPWngV?`QKoW=ZtBgSU!NIw#v?ki3jm=hAmy&4UdPaVoa=3ViZKEv#ObEH2?o(2gts|n?8PRQ36uU=>ZT{tJ@ zQ=_)J!s-W&OGvXUGHlepWNQT_%HXRSu9%xj>0miEKW@EUS~oTyi*|}+C*idWbetiJ zE!XlzEOQJBUm!q~Rtt;75~;hvwLW=*u#4GYHtJ;M z$)-ao@J$~=U@AN$ch=`N)wnlZha%y}y*B!ZFCmYWMJBo_`$=uZ!`do%Q@nI#_ZjT; zI!;IESS-HB#@5?;Bm*mz?W%(7?@t<+SBzS*u`qaI(J(jR0c)~Tzj?=rJ36X)hD*5}@UNfDr)HM|oDah=Ss81zO;NgDuGduH zbt&~WH$+~wwu!?Qp2=Mg&e6OPJM(ukm*YQht?S)jRuiNy&zSw9=zi|+C zIy%6fV4dZ*KOyhwjObwr^^cL9ke}ptWk6|L?_-TM)@t2Z@#Mt^uS#aDwV&WWn$>=zIB+HV@t_>i$V5_(&`4Zj-f=B z-iW{z|8W5PDAu=6&I(O38$}mVSnT-a#rB7LcMY|GDq>d3Z=X#~<%UmBG3)!>uWVLh z76q_1_|A;;fWAciBv&r1){zpvniSdq(-DXyXn@A&kX3t~AXmRvD$<|t-(viDF|#uK zz4k+*!@CkF?@`|@$JU>xv_D^hc%2G{uGMU%@ITec5W}&5MuBiTF}P})#PM{9VLNN+ zx6=Gs%OSjcmwyx#?aAgQuJDJNIW5r72AUi1XkU=qR_n`-DZ5@_*Dy2v;C|hCtR)F| zB`fYqWX58t?)xzw;(dclkLRv(fHTc)PnVQcplr^8Ft2%IlCZ~D^Q<-`@(DUSdc~m} zq_XTyCTJB;HW?3e9)0aBAGIDl+oLJ zdU`)J@&xgLBE7^jw3rc&txla`fKk$NO&b#-YEKzBBzM{7oWs8w8pz;$cp@g67+g6e z4|Bcj;u{p3rLK9d>}RP=6*AQCCCNS-GrdsaMKaQBn#D_?yu=PG9iFSk*}1bw30eud zvC(-HjwuO4YWhgh(bEnFlOEZjyt|~xXSVMVjOe$IldT;ZeJWmi+6aPneqZK;e^q?4lcG}Ry|nY3)Z54<*-0w8w)yNc-f`oN2hh>Wm7klm}~Fe;L5|F>Mi= zA#5z?ke{3*r&L#1-oTe$dHyD9is#zmwaHjkAA{|?3$bl3Gv9!HsmP(1p3aL0*v+lC z-?6sW6!S)5=M?3VX$`JexJ^YVzkutTLz)gnKUuv3=58g@7SRlWWYe&LC*#WfGB~IS5Z8co zjGw#tz=pbo%ipV$q?0#%@tFEI6BWK^{9H2y8OF|sRYrG24P5EP4~~&jh@Zm_r&EO^ zX%w<;HPc3Kg1-|6me~C{(-1-9DXwKLv&96)@w$({*}-74J8J>>aW5FV!pSLf1Cd$e zFp$AEV^#C4y2*4`n0aC^9z793)dNpU$?2;kqTZJr{FPUtle%$}ErhBzs1HBJMLEb;>;XUMpYEo)34pzQwK8GP&q1jJVrkRY986k!1)i zjT8by=`|aF0P$o8%>sbZ&#y8yegqaOb{1$0q)pO9lc3VHG>O^(7j#Z7)WW+U&&J_Di?ttpW?$#DAaFk2<%x-2fEqB1zs zzAR%Whg|gz-Qpn^m8pBF&j%?-&eZGL&N|ZD|(1 z%-ZgcZKL)QE?_7*!9A4c1-fu%OWBi+aYV2iLL@8~c2?Rja8cMEuXXbnrB)+!U&ez_ z@!v9?+MnCVbMV6^N)%Ug&MWuG51f3GG}|mf-@)j&xbZh#sObk65D|zhk~~XHym_J* zA>&z8v&Zjm)EH#w@r$T)(x{!{k~H0Eg&8>vJwq%lGjY4iIF_ZQ*ZX?iqknEjgsv(R zh&yIRrTEDrOwbEYLW_pnk#8jTBKLW2K*qR@6yp)qya4WKLY-g1S9`t+I5vuUFR-$! zv8@ewcu8YLaQJY!xnVfP>F0B=kFS15J6OymQ_Hcbxt&Sd23$Xfx^Jei(p`M-Dx&Ux z)^c2dq%xNZMOxm`WP1RP1uw$(f;id|JP*R<*KWoG>36!}rURQV7yn?`G8H^X1g(AX zrTE%liGJ+gVkU&GF!Z4U7d*Tim>+Z8+uYE(9qTSSTJH5()aSR?{Bn@PyNarLW%Iqk zz|jL%w<UK*M4XcyP@B}f5<{gk2U~hwhFgnU?Hk>it(~ilIaSSTN-fx@Io}g`@}xGwy(Ie(?9?$^{lwG(oyLxlpAM@Cx-)-%fMPV;s50(|(C z8$tCKiFlD@wXQO6vzpVs2AzBs?@r#kc|3*E6;McA$8hx{I1(vn3+%XL<)K?=V|u^) z6d7-R5oS446dV=c{jTj4+CMFdLfbF*4}bXJ^ zM|I0-X1wQ`wl=n6gc5_Djbqvzv1(c7hhigoiR=%%V{IBczwX2`!{5-H3~$yx-Z=;$ zd>boSn*!<=PL@V4@9LnG50)-$)29`ZuOm3;Rt1U!0&+quyWz+Vhj$x&SHp8Q;dGD3 zj+qMeKPWVk>|z<8rbIr^uP4tH{T*ESiDBwmxw%FOqcFFS>5gVmM|tJ1D`tzSK}dI#~_xJv)qL$K3|SYd#DU_RN9hq8I9(h>o@ z46h<|J8%D9nuq^vYgY)>i-AFfl3M_1dd91k3Zo693h))cvucC4LTHE3SY3r|-uaDvZZ` z+3VoLzf=FKyw@yYEg>yKC>w+@bU<4M-)}gQODuN|r1DpdWp!j_c;4p=B_2ISO}dqH zI@57eQaOgA9mv89yh+hp^>nThe z&)xK>%VaGNBku7|b#2+MpR=v&)|@}$QEa}r_BFvD?~jc~La2nl z0iu-Bz{=9*C<6@iFfz0vl@9f?K+YwWEcnEC3IpMTVw+i}E@maUS7aGf)ssURDfwmK z0SiTLdS{PQ0mVHI6<*z&Sr2gP$ttfUCyaMsF%?}Nmjo*nXG^1S=PpLG>~&EktqIX3 z2gg@6gPw_mA47Mw%ZGq|b43CZw_YjtBmsp-lK~>GTU;H_ew}r_-SFs&A^8y;W=n^d zbC5f6_3^`~IR?@ta3U?97k@zE7#H*#{@u=oVb=NXdS=e|YP?NdSO0Q?rGx<5OL zau(u4U7CLC@TYLof-?=Y0!GvCLfauB+=J5e!$ASBh;mgu-(ehgvA_zk#6=n=jtQs| zja{{g?S|wxtJNPl^IfSVLdVuPQV)nD^(>0G^IhntPD%GZ-JgB0;~x(=@sDe3EK#cy z2jm;S^|#d$9r<&DtzVMu#Q1_CwjsV({)pP6Zcs?g=$_QHQ$)gP;kh;JPtH$KXcwg~)Ng(w@D$y@%pb||F>hgu zEP*G=qYo-=Q6H)ld?G^myCEq=+f7M=uLhi{KDJo z9pL?}1M;`*3WQe;DMgF{VyI-ah1kt^CFcCL(GW6(20AWQss?21m*(c@KbGI;4=##n z=ZM=Ae}~fX(k|tSMK;#14GnwwzMxk3^%L4bO@h>w(M^Cg85n1X85J8%DUn)Tu{!BL zxx6Db;2N)CC#PpBRrQe4x~NZK6KB@NDt6vWR~4Zvvzr6u#SG??HoW0j2P*B_01DuX zj81$k@_7U;zSA8=#R?{A30(xI(*alub#<1! ztGCtaIv1p+!VtC<{7YWjUBzzXCejmlRl@uVvSr0ghS>o`>1bTjdJm&;?>8du^dV!( zcRNQm3ZBNH0_w3@jwaLOrX(Ul@81g%x6#jN)`hzLI(z+{sPJZG?aTK$rb4vPR0(Hd zd+ACIDjS)l-;r~QeW}l3#+>;h&+R-yIn(Vvjg%I!L_IV-KAz>H3OmjT-DxeWrT`JQ zETi*dN>(098kEmQ5h~F1nSxDmqjDl6U?XJQ_#lfCLy&l)D7hV<=?cvfCN<&ZX;Hc9 zU9iLBqs|D0w%e>khkA#_E>xE8NgN2b{cvq;xOKfbV^;GZ7I_zKO?aNcobOS0O8MQf ziO95qd`IhwM<{uW4SH2vY6CpSRzDI<&V7msH2C*OU1%Z{qDGi2`N1$(U8WHHas2vd zplV%Hd5{Ola5>PzJ5Rhmc z#)y*`Hu;51cwd>{vh(mM7W-SYNywW&d)BSw(`-?1&71wz&yE()<-TWCbFf7p-UQjQ zEYN^rD=NXf8>bey?KTj7N;};?_FK^tkESs*Xv}nwx1}~G*eAwhWd^D+|EMFt(B+_1=*b!#7#oIn14b|l zbIVK*JRuWJ&}kClQOBzdjI}Kd;=(a?!u)it`Qbgt9jP)UduE~uWQ%!Sy?ErIUUs93 z>&bPe$zipdD<>I&{bDp3+>D$jDYyu@ZNA<-zbdL$h41uj{o@a-Xt`Yd`QB_TNk~7f zs6~19_0gNtQvEub7tqSjT#~`q7Swy6OOjgnkLSf3@0s zI;1RhBvT}%l_=~T@6p8#Yb%#o;ntB`E1L!x@vQ~_ME@z#2a{GZZF~CZ>*{h~MD5-2 zD~5-@>beu+TvZKE{Fmw}^c9Wr$r1*&KkfRlo$Eb4gx(vfhRbMGS5*9}GEOqAz++Qu zp;@2+haC%nIw0w?_~ajE%e62q+^0t;tLLO$e%s#fBfJje%&yS2;$pMlO%1GBv09nE zjZ3P~GXh&|R|AsNrty&H{B$SZx4b@!Is6X9qBkPIiZOfb9F=>)h2$>I_-SD)GL4T@ zqaJBioFGh+6*Y*Qi{=MD#`0w|#*&MDU#!R4l+p45vyT)?@fux~C6%Up?3wGKrHD5u zm(*(jUScJ3e6AYQ?BbKQ(aV|A9p?>AwoiO;BK_gma!%~!$W{H5d)1J1L&fbo9g0;A zm%l>gao$ z&EcwE%i-P5mmC>rtz7TI^L)LChph&xC)OekOT$>lD3Vk^OHSDg zhH4nSWsIrVgD{{XLwa@Yri!_%-jBklhi@?Y-t3gfEK(nSNO@KE2Q0C0A4)YdjW-n7 z$>%=2e2nh)rH-89_nTm3eQxjtXkH~6mrkO}B$7q&3UfuRDRnBxc7> z>?gz{t_s8@wwO3D7Ei`$Rz-pY5mKY|JmxHYnBjKhzp-13O%fz+;UbQDCq z6xwS-&VL9XuCJBCNII0)_03|_4Qp}$*e2bX2?bn7R+wp~&J;4_c4#ixzsa`rlW#vI zxCq2`sEm!LiD~3)< z1TXK7yNdEoQg{5;zFfG%T4fa%Uu zPr$Yr2xyjlb4$M($>QB=uNSn_3+^2})^-TyrdkPMt#SPu+50Vf^W;;F0sovZj8T^} zQ>c2G34m?Hw)iurb=7J2Y&^TI*ZZQQZT*B371=348Y1T6M({wY0$H00Bg=J>#7*a+ znlpM1EmQ0B^9^D9-2Bb6E5?`fDw!>8DMxvQeNCNlj#5=-s2oG_zX6+A;R{i15WLEh z6!D>>BQiyjXEjw@)Hby`ag}0J?7#X*_1&)s{ zV+e-W4~CZ~g|*Cz684qwdur605Qu~ z#VzM1cx^rB18daJI9I|5YBrO@-Z7`1V3D|L7>CC(-Ja9c#(x0z)U!T1kE?Vu7yZOR z9RBu@Niwb3lV)5N1bPy1<4N5PMH4AjsY{IJ4iiB+IdmDs@<(hwMp=bkwgvEq-(Gl4 z#&vww{?`6Xrg_`ib)!D#A;qqUCIY%!?ek|9qulE?kN+OHUlXMuwmjd_+kM0|%lX4tWhYQqj zyAuZ1%HvMgDZOwVM+_o}Fyos2J!-wa#qhRN)Xrn_m*JWDH6PGPWq^6tyXs{{L|5!X zQmC6ogAsloySYT!WeKJtgMDe(Od>Jo&9qG~^r(-U*`%DpoCnGj6Q~ze8IWycdlPCE zONVd7TC-}`ko%K8PxXtZJInMEL(6cR3xLzv7xMU>J=a6iOF4vva*6C{t9R z1(le!(l=uk?mUJ1MIfuN+})|Df^~M{V{bE0t9q4uoJgp?1+ccf*a#bL+)Gc}-~#kn z-)n(7sJRX4I)@uqcwqu@5ADIX-Q;{hX3O+P@aQPDdf$s@F!C0t#VRZz+3|oBsvh}$ zJ{uA3N+z7p;s!6Jsc3}&rvkf?HPDX<$-(aeydJ|vCPRW}sKwrDes!Ojef=dN?}A=O zVB(Eb)Q>nL{*d*j$+@3r6Mu=b{h)B&7b{uN!^?Uic-{92JgLoLYo?ms!^`{Vd&QJvLRRZ-8MJ-dm+~6&BnP!xYVu=s2oe=xKM!LkeAtY z3+SYI74F!qj6o#;&L)J>B5Nbt@t0mN%ghe7CeP%(Y&u`aw#MH{?#wKo7uo!cTkDb4 zu0*X4#QlQtl)B{@(yDMbjw@?W(b$ui7r>+%@i(KU^4FbDcGj|YPcEI|3Z142>L_lS zxP;W?`Bj?U&-~FVPVOvNzTsQ?zD#KP)7e`#IERbJV1hNe^{8dJ`5CAn{5U!aw^ofZ z9od|{3?p5ce;QZjYJ)mbaP8ENmx8C`wfbp|@b-hq{;P9rk-Np?(|DI&nQW8+_Pw_I zT`?(zCmIoke~F|qfGNDL`)u(*a+T5fbf9vs7dT88?JV!;Er{dJC^ZyKHLt z&NpbereP)`8D@0MVlCs7B%F@1Uy1I0*`%%A4&V9@o}qnJTe;l>r;zPPL>F#-Fa&cx-z9Uv!wkQ z=Q9&cwr3!=^L9WwRK3Lt=z&o@_X0Mi?)o znRE-NO$;eKl;9zj2?#1=bkroc=2uVY&W9}`^okS<&)!nMOyDo<0<$7CXY#rFq)?HJe$qsg# z;u{I(Aq|IVouroZ>MH*6x6D=`-aSX92W(of{lu{1D>jGOrQVlDq9uNSxI0*)4pzeT zDSh#a9t>-W#Zk`0$r{E=cGxD^lZ};o8Os+yc$$*d>! z0CWh8lOdnQCy$I_CkBH?x7h1Rr@bjrLM7K~v4gZj5hs9$0J8%o9lQIALhS$^Vf4S9 zqcSOLuec1|>ZashE`}7lV>rT7RvgBy7xDDa85eY-QqQl5)s(4IGb{0;yDS^Bv>%H` zq2TA>=I&O)Z=eY)chz{__*FmDU7z%O* zVLUm?*TjQgm@Pnzf^ijphWyyROmi6Xc)wjy+stz__46!_lIX{f#Fo@JOTrtsKLs)Q z6d~?==(nE;n*Eu{L**0j?vdq+&;2e`5^z)}sPdT+1HO!R$3mScK@%5lz=S1B-lEP! zKP5w!9YSL(Mj^1@LA|Imn{6V|xLx$q+7tu1Ade}<{7;KC1#KfyavMPk%D);puNvcb zt|H}#$l)nUuT%K!59F9(d>oC5!l{*Zt>Xe0Q$-!GSg0G z*qOH4F!`pniPa-)j}?J}i&(cjZzLg9pf;UWQmzh>ztI&7ClaX@cPWxSr3^9hB|}aJ zsKq?B&jJn8$Nfd2a-7P3W@&;;g$x@+oR53b%9pnZOyQX4|JkTkYwouU44RIa@hI}S zD`aNlWmA7SJ;e)2O#$S0X!^!&hel&bzW>DxuvLZp5zPLQ@rc?jhu9sxpcWzJR^CQC zrQ5JOO~IEvz4&#Er>HB}rr-~CScMttzW^}ZV@@b}9SQgihnHC+Hk{2w_MGfuUPKLb@BJB?UxUYUmoeLrOZNK^g>x zP5~7uNkM7pddBx>eb@8b^A|j>V%=zGS0kpxr-HC3SIQ7_rBk6tF{|Q+t;xTOHq*< zq7Oa0-t@Awn&5Vfs9zo8@{wzuFGZBHnpIR}h?`UD9SK7kEgjE7Y?S5StibQ$c@s}) zpt&_WuWtU{p?u0fybT9RpnQYNtmYYB&cUM((m@_fss>MN(ODNp0eD4E6Z?ESQh$0D zL76?72uj6k3VhMtMngpcE^bVwYo6#)#RZexR`%clSoI^25=LtIdk-W{?D}gTjNRd_ zAIvi>lMiAKlelxNSoO^hmZNR)9Z0^7VCi}nW$<$rfoM~;g19Zr3C7nAG$JF~B+^1KjfaHk5K`R*_7;aD?zsjl))h0L{&wN8R`9MknSs((+ z`@GkZLxpJP5+**wP0qdQn_BOjZ}LlE&7oGQv}9iYc0U-E1-J$MvV3GE+2~u!cqTU( z_`7meIa^aVLk_jeASY-spmZs5N!c6bM;;`Fi8F{_E*I#=w9KaA#kf zkjuCkM;vst+W{?MReA-#@ z#r;jSY$&;1|7LXL>3w&{8jG;wVk(1_hd6GEi~ip-rnhxb{?wnyjQSQc0F%hqf-R&& z1*|I>>=tqb*gM=9CgZKdo!L69kxc!-gzl=SBNNVH_ zOGudv^`|fzCy+32gaX>V%uOnY7`wiYFvJkq#&c&E|GKRGLL%3;MevopSurlQHX0NQys?6#3<)U z!(q@H+VxfLK9=NuVBz7YOchD!=>gBv?XQ0~-?5(=$b_9mA4RBX4gI~^a9c6f5qQ!O zR2aisqi4silnhj_s25j|E_S<>`MzzOqSAtlV}`Hr6i_=dW4v6)1U^c*!y9rlm_Qr2 zC+*ZXcQF&Aw8xpgm0Hm;31|@ z0?9Y}x@rcD;m}(;qxjR0rT5!PlixP@V=N0X^?-%0G?+99N~|Y^D2%NXGmAj0F%v7o zhBT(j=qJM0qRlB_V@186)>Nzgyz!KDL&lydRCIko>Prve4I_#tTOWn1-aV9CehBPn z+HYnoYImoL^z%Wjk|pg2i(luLIVPz2o{3O6AL6aZS?I9na_H?dP2(I@B;$A^USLD9 z*nlVHlG_`;yy%@$c43fA>lJnXtaW1cqxb#yyY)W?uQ1qythzv?RC zg}tW)Mk>;mM%C^5d`~2W-12{Cd9M0g|0u5iI-O=7T)u4b^TV7*2CTMJS3TFGX-!mP zb)wx4RGahe*O^C8a#=^2p%fq2=km7?X6BcBcRd}ac5+hEmr<4R;B(9t0KuKz^SJ|) z7`)TT)r)tfs}gzM{97MCh+0pLaYS5|1)CLQaaJU2_k$HVVxc;LSj-W@3V=RCeaHwP zv|NMMN+oKovjdHpu5%@fe;e*c7{g$qhnj^HQRvmJT)8)GWR1mB$bft%hOoM?c*Z%E zZQ-03&c*qfZ%zVkpr|D=#nkXZ4Y48G%y+hMeET&ubZ55hmlu88g{{A|k>xzkQOfSk zhRQ4a!FV}pVt*WnBQL&xX;YDtncFGbO6+6$5FR}rYWvc6499$?*nuY;$TuUdJ$*8- z$T8;yr`0?c^_t7sCp#p(CrMKA3>1prpJ|F{fd+kDnPB$VS_Oy6y@@(TYawz$;io+q z^Zm|jjm8yoV`4XEa%ghJVbw1l@^5dA>cX4p6bYj zy&}-1ISbU`D!#hL*TSdEVp$^Uv2e)%^*V-I8QJwPodY`<(5Li%8a$sRiZ;}@Gkl+ zzS9=D%FHBsC>NIYR)#8Ihni2$pM=v5xWn!BdGR>(H>pl_6W?9p?_FYDbSACDA9))2 zqHh{nmw;wn`Lq1c2m)5~1KYdOzu5Y*jXyJm4s6*D{RkUT%WCH1nSK~ltA2vgpB|h9 zizC-Cm1WG;u~%&7@_Yt&;dFG>S*0zn}1hr%ipjkax`9%rycls&naiWJ4QFXJ=U^Y@#NaLl3 z+ZlgOG4h=*+}aenX*mkgJnFYshli*LN;FD}w$-#=j=*EC`j?3X9R8fm&9?bHgm~zt zzim@mdK5$>ii`FY=`-K<1Nv!&tpnINqwu&mntv7+$E1PKapi=@dkNR^`6pvtYEH*O z>D!cUE16E^sBrvvJ1s}J=Pni}-*H`>NDtBc7(mroC}!9q>_TtHHH;5SmI2GG6ssEb zgR=j2M0xd8)iUoCWj2=WaS&+u<-Ivj@wdqjiSFfO*DEz64(sQ>{)dUQM*0z7IphHO z-MV4IQ^Ytd(Wg)4wR~{xE$=LA7K5Ax|MuG__WMd>k&FPB^$JM`<zg^gTG?$&1%r$H}U*(TZ#uqVQX2*FVg9YJXv0h7SO(b% z>g>J#V4C4=PMYENJowt*` zQTu`BOZ+Wi!cqXfBH{XomcAeG$k(xoo#`T6o5RfI0d=iW=abhg6TWyvzRaD48xl!x zZ?oPlvR0js&IXS7Xhj>PUeRnj`3@yGLT2AY&wQZg4G7hBG+q;JdakB@`U zEZ-xa5;;pJ{YQ$>xAf_U^p+hmDf}4lLDSe`NYlr}NUq3!C)i;c|N3VU@buhicr961 zY1KHFiOZ4W>QNV9K(4=QQ{DtvY#K1sSdSzVu^o5|1-KocE4tMBggZ;$D94O|DT zDLEc0PYpA~1y9*_PhImEOurs2O09S=wEEt~=7h@&Umg_x zr{)W5oj_7%TL|p$OLiu%HwMb$jswL0T5Sx!ECOIBKXh2XZr>>9UbMb&-RLvFf3%Uc zrB`O0SPUaj!(+c22W)H%o9+8VAI5k#f_wx<&7Pa*N^H}hbG*W2 zdr@-+VUBtFO-)_zRmi7o|U91W1CI+9S2>mscEcQ>$txj(<=-s zc@D|F*tuF$02=IX7~KQ^^!G0Cz@@XwnSZjnt>i}?O-#K|k@pR+)Cq6Gi{otKhv7O! z0d58tTpEw3e;OLax$ccNw_XMkqtD-BA6{V_T#jW5KN#IRp=7`E+1LbAtgg2_eUoj<))tpGG4ti2Oh~bx~IK<@?8l zx4b)lZUnmh4h?-eqHoNf(``jtK`0C|w_b0%jx=2jtyP<{#b>E|*Awz3BboeKIML^m zl}g;qQsI@^%jiQd?%zK3dWPGy4DUw^)LUL%?>}$goTPOpl-d$rhkw4bMbn)etHP3q z!t@( zw4*>Jf!ZidOL+5nNAFKGCB|fa#Sjml7hP4PZB4b8+V4d?NvQtV>^UW6^FXn#nc@uh zfXGexe82T2eC><0p4`>eFW1Jpvr&RC2h>v$7K_Wz-M8rtwFum6WH6PqXn{u)q76CF zq(eX4Q+wBs0^;sdTyQG@F!dYC<8M>qkx;pjV(4XDaUO>f+JC6~PvM63gaf7PN>e&p zFJKcAsvvU%Cuy4ElvUlh!)V>;y!3dg%ddH({ks{Ls3mUS$I_CU;%0k$tcE7CXCSaEj`P9)v4Di5&Gr>KeE-OBSu=ts==v_IC1D7w1N z(Fq|klKFbVgC~<2SC{9JZ`L)R4*V_+uq1j_1EJuO7q(IuYSfEazT8FiS&h30BZ;sd zfeEbV{k8P%Xf!pdFTJh?>Kn6!4l!1uS9N(x^_mTx z!V05%UsDWvJ-2vl!D8{tJR!UI#l`G}#jgT!VHPWbsO~Tw4AQxHVme2CY3)&pL#j`; z(DSEdO0`GQ{JrpL;#6iY%%=yIfmhxEZ%@kh%ib(JA{!bn?f4cE#kOHIrSpm@arvZm@z;EI}P^9q#Bo9-ln{I}CyCQ!Vz2q^&`V zhj%65i}TeUcVr_Y3C6$^S!dd5rTsVzHg>wWS^UKkn9L(BViv$p!h0p^h(?#px4m?4 zOI+GxoMFP~iUy`>(K6Zk8M4$>zjhEq4J(R0a#!d|9p)^Gi~7av7QqJUCRvQ zx(((ih<3zT&dYxi?IT)cn^19cyx$ch%khMXvlaIp;0+u+rW4GN&gJ$r@f|wB>y1Gu z9@iFvF0sUwlwF;VuY6r^5G=WnCxOw%oufwb9YGj>)K0V}W}$kWKr9HJ=)_mhCLc7W z+EiI4=Mo!8Y^u+z8I^~rui79qi>{Rm%BL$0ejqwSFq37ZDwz?oh{A^_&#!bpYbGA) zRL3)h{;q$d5EFjljuQEzecqE!d$H$CHX0h*{35!ULJA0x(37(x(r1?g7$$n(KcG~+G@hF%PQ5bZmoLW{-U-obfGZ^v} zNqEdXaT(1L$P|G6h8ognHak(RNEI_PvpZ)IV@d03i(rE(Q_MMj9ZqnL@nCynFf||4 zmC@%J+V|X3=881kMfWSNYvGm8(cl!l@a3;I2ptGZ zg$`i6N1gT%F7;pkhU-5qG4K^&t_(#Wx*Ll;pnReM0#1Ey=&WOdW(#B%(b9OkQz73r zQU&_dIAdgb364?bnmmD}tOa;iq0xwGj%kM=`GoT6BZkmkcTaKj&<#aAfh4fE>@zJ9 zqMfk3^5x{8mE^mzmr&Q1m`oXih5M5fq`Bum`1C$F{EC-6TgyTiKT(_n(A(UR1;2P~ zMNe|(BM>@lfwp_C!gz8k$FqYZfxyc4&jKghYhDXdyna?1heUo1m72E7zHw?DH}<*R zyDqrV%vJ>{djy|p7$~slOHeT~<1(-%7F14=@Z_Md&Cp*TVGmqsxwR`FHs72m$%Mu} z)hw27yx^TynvM5pMfBPR=VNt0bo8EHO>g&CETo#A|8zI+jI&`2N1bDmh+*0Qe<#qr zska;VCUYzkuwQ#%f=9(voJS2>BTGlgLVU8*__<4DK56;r(c6E~Ns7wKJlVGL>zQYr z-=Z$m*KTBp!3iK@dCbF1E{2C6yfIxmBbOWz!md+Im_tXliu&2*8q~x1A-Y}eu1`a{ zo~!qXV3F*qUD{Tn=_&Vv*nq>Wu^!(Ai2&0*pG&}v2P91ATNF%+Ty9=|T0_?|da&D*dOk~m9hOc>=JSQbIHa*J z=iS%(%umrOu8*TyFoJ`Gj~=ZFVMSaqm z8(AYE{uDmx!5=6-$;ihar-Vmp-VGlRJenQ2U=R&;@b(XG6_6pD9|=u&bKD;2z;+vy zTP@@efI3Bwx?R~?Z^rf#2UGm*f%yD;`fi}DvSn+2VMu8NR=O$$EE66ehBPBQbl$U6 zo|W?-vETI?HIE?=^YLC_ksIC6i!hmMV5|@$m3X%7zKeEHP^|Ddz>Q z)niMos$sRi5%!^)%;_yBVJL28)@&o+rj4`>EFRYGy^|SluKtdpp%qIoau8{FbArYg?1aBI7Qv`RQlbWPS)aorS7uOOPJ|7i^ zemd$V^AW*n%G%qMRl(7So5=MB5$>|lG=$a(znjr4?Rga@hxrkhuIu+|ErIF8b0e$2 zCT<5;SnbMzXl3Jt?Ic5ju7t4w2C`0v%3`;JMMa7ooG{Hx{+hh`D%ksDR4%Y{d~t^G zMd2^Ynl7o<=Ok|Kwm8za%OY9)Xq5H#T3Om~7$&eS3-Dq-x)bXalcAl&az))*XPwsW z+7CYdYOGB{e}eRG@>yxanQA1O`Nk82rhCA0OG$a-xukBlvRrI=M1zHXhG0IP&ZLpI zm>n4ILGA=#CXpee!F<2t`H$*)GXkdQoR|Y}s@#ONHTRnB+SXP!e0j0#i^RobM?==; zRxt53N-G>_X&U5|Zg!Q9>CZ{GtD^jYd{m$W5au-xh!QLkJ&eJ(o%jva17~vPs3_z6 zGR}%7QASIz;Fh(FMzh}boUeh^zBF`STwZufPo1`8eeYIvEz*(agU00!tgv%2DIh-y z@^PZZV9%Lg4XKzvW?0PjNYXgjA4$e`z{<7tqF^CU>}7x?=?$KXH{F_T4|WkrQ86Ha z#wWjTrSk=Cpag)Is9K_hA*>N2st}OzA``nudM&-U6h;@J8zX#N-~-_kiYKsNo@-HyctcFbJIK+h$Xgq=Pa!6GT-D7V2-(h|D<2tH~I1;?zzARz6{%0jNPQ$ zot}F=rOzt`n!q00I}>oOY4d5oMVIf-o}s?CbxCLS`-(wR(S|&0Ssr`(kpi{eL^aof z#nbU=FUd*wAMb|tp2G5Z)GuT z0k!9UDpYJHthDYuunA$_Gmf1yy8%)j_)?BY{@NUjQ|a$u-|!C&0(oK5sC5VSohjKB z)XiD72}8d5Y?spE_!9zVC>v8tI>3Pf+ znaL8HPWQQd<6I))oXc+3xcMYrQQ%6cRrh_ggEaF2W+%Y@WZVb(NpaR#=M#^U(4t}2 zw#T+h19$94f9&65&ub;av}4bua?Dqn(;XVc$8N?hukzHWtpB*!-hg?*+jR$9z0189 zAs!XUo7a`>*J&(jPLo?rC6Ol{B{Ff*)al_LpR6r(rPNAhYBS^n0hd=Mh9#=#|1kUs zs!Lz^`0=8AhI{n8g+P+<=S*9p1lXV;5-M*JJV>!@^zrEpE5plxBlXx!-5doaC&5{^ zvKMWDi*Z~$q&@g0iWk5^%VI5$ffZ~9;}7JR#(KgIcl? z#>VgQgfJ}ctF;e8HwhzwPnq+dQ!{Ol2h%|;kmex0 z>L3y*C?a_Hl2s;0x#ib7nEI^#%I*sfmeu6Zqy4w@BNHB|T@o+MACG*f(V?WF&FEg5 zHKO7w%vGH=;Ue*g>I~beNZoY0@y0>747&01lyk|HfbHfsi>qF_1|NfD7OEl6Zon~{ zfFE}q7)~~v`3Z*r(1R7o`S(#Y1FNx@xqhlX^Y6kv0=|F)%3PoCKd2MPl`=CWiycZ5 z*Yd>BYXvcsNu6vY`tWDc0@}^ccr)=wn4UH9m>tX#HX|r{e*WcqrMId^_a0>FnxqEA z46wQlOR59nsVK>PszuU;l!H+|)XyYy*&OoNs1wA_&?EF*ysdQ`C;qrqp7E#YZTWDI zZ1M|PeP`ZdP601WFOV>hMg|NCVh3Tu395mCtl>GZdz>%a6Yr)1_WeaQoW?C@lI5;8 z?=#&0D)==9LetW;@$!KIkKiax86J-^aw7%}<9F;I;(fmu8jIb&p=vB?X1Q^BwWU$; zHS@bPKmzEFpiDf@(3e3+uhPLisej$qdcx9Q2}yl>RDF!{w)5ZiljJ5MNAdK;vKjp4j~3%A&}ImN&D- zb2VO}*Vq;k7Wf62bHU;eA1jJPuoxV$1YW|uRm1xlx~!i*Sox&t%eaZ497EX)PxzDp zL&u4hV!$n!%57uE#VTjHm4=Rn=2Id2wd-($L%zT|rR}*0A1XuX=M`xV*gcpn5rmrv z01=cU@YoSVby%N7P(F4zKdEGI33fH`m+#1~{Fg8w1QZ{z(iP?cS zzav=`xnKChUHa?o^G`4LV{XvQEqgd4Fk0SzYNw8~21e))5O&0On#-7hTtuX=0%sDvl#dv;ZUoB*5sO zy@NFBqstn%=&Q(oSdi1vbSUN4FnJ51jY;r#38HVtcq;q=5?9D+fWBDf!7?z^_x#Pn zyL$E~$MsVouktfq_!x2m@wDL8G-%9bk4YTrY=ODXC~#dbT6Y)UL3F!*&S0#>Pvbz$ zXd}4SDEewwR*kLef})HYTiEut`#tCPvNB=kBeJiZR69$$r-%5Hw%={J14l2|oF1~!F3-;U7So-}U=38mbb1Nj0GdB7DUg+;%A$xCkawcPwGGix3)~KN< zMSH7gqoz%ZC4s}s#x7a1?W9;3kJzJk9T*su#axbmxCOm`+IHwWV3SEvr3wdQK(TP5D0j(2_4I);f>2 zK0z%~c1_)uwr=V_7WX<@SfgAG6#mpig^KRvHRSV{sxL%kmY9aVLYia$8j^B;?C%cL z92ie**%&)~5Uet!&RQEjT@CT`67wCAJ{i)GTqA8)9vOEC)pJsuZ(CSDBcxrfRH_L6&yHEF5*o(ccMP zdo}IJ=DKTsFADPI%fGwkrlF%-F;-I=LN-U_JV}P09ZVgD|ESA-)7LF3V)i)5iI?6L z$i38P3ZS>OvK<`tGU~D=e7J6}UCZ@zeCmeIm?0vZpzMr_c2I3G5#7mk*HwiqVL~?y zf47Vo=DBS|j?~1tAB+TeJT$T|I+OQn^m?g{R~Bpr7a-gx#YECD2KWmmFy^v%tBCw| zAB(u|$mO>0D2VRdH)z-)z8{X)jh+Ka1%S5aRZP5Cl~A`yv7ORnn1=*>7$dCU5lzh^ zEnd6ct9bW=DGA$Fcc|G9+xe?2_f&X3Zp^E*SP}Z`Z4D#^`k^H~(i8rB6tW{Tb9|i0 z*(T1Hn1cAtExp~(+#B7o6>otm39jAkD#k6qz`2@QUh(c!dY&7maaa6*QigeVyWK>N zajx_ZbkS|}nm*i^VV$JWwGL&WC7teB4&<(Xty?waUzqg>D=OL-rtG2n!K^G#_0Ug+ejDKsdUN1@v<34EyKQZ?eDf<(^IH~SAbm+#j zT-2{9Adr@JM|LF4#-nnrp-;Y_Sp46-s4IO5qZaTB40WSO`D|vWa3ea~X;RatN#7Yt z<|RS4Q(C# zcLlSNwWe6+u+0XYu{s1vaQWO#V!vH}l<{*(@3`V_a^uR~T)k}XaTw=!&)-s1oBBJt z5zYgfpWwJ>wL-J$0k@U^8y5}Vdbvnou*TCl)4>x-WLKu-s=;*qV1KB{f=ISTC0jro zy@v5y_Q|_uapzjsBc+af7cnJc4`tGcsF@XFI?QpKx7A61g#~WBs?txgoTQQeW^BF~ zS&kLSAtwd}*+Dz8ep$cm>??B4nfQHIJ$QMhAymh|2!FiqOBuQ>Uej*mv-QKxMb6Il zPuEO+r+tR=ni_2g+ zlElvnxdXU?x4m5xSGJo=-dr4WZC~%Z>gdeUu4#%?0?6Yqg^}weLCQ5%%QMuUz8#TX zU%Gy~4$PR17ISziGZQT@Tg}8D1+A|%>hR(==F+mXVRQgUSf3MxwgPDd+6sl-6uIsysSYCXMB7h*`aqCAAf7X$PAk?qPUq3Q+yRS6< zTT)7rlQXW@Jswp*n||yE(uu}+IzfFPMnsZ0)v1EeWDil4Bec=7t|d$Svv}0ULLx=O zBCv<-%Q~L&*g2tCOb8~4Kni(MQ5XlCwgW{@&UnM>idXHt384-qsVpfeO*5rVh!1F8 zn;))-183|VfC>;mEO0ELFbohitRF%OWiDdG?T37ZGA16ED@uKU7mg~0l7woPdX`4Y ztPs3j%vE1KvV9%2snL1qDod*QyaP_d@#4BLji9D24Ljn7qY4=DR<2N$9aLWlBdLd< z@ITfLVTFMO5(#iJsjb2Yz+v#-@k9U^JOGu$fg@q`uaIat;EL4N1BcYsPYejQz^VEg z@Iv;*_l)O(V}75`BdM^-@bn2HEg%IX7)MVAgA)cKiTb}^Kyn#isthi<3@*Ay zH@$y7=6`>cZHyUnW@4g0Q=|}UktX{Jf{6vSfZBeBgKcp7Wh`(6`k{=#2nYy+O<({g z4ln?v#t24W;3Sg@;47H1GHNF(v0%c0AP9n73EhG*l!DPc`S8DMf?))KQZN7m1_0v7 z06>WVpb`Ro2LvU;J#$lvf8H?>OuCG346tHv{6n-?>j_W%cY;oaU0vntRa9abKoZpD z8@Zpgzwgu8>BbB6axI-s~(vP033 zy@SHY>-`zKQ}=y*f<2N+X$)7K^b=@jNdSf1^3{LT=6o)aVXXA4W@>#{l^BHF~3}scGhSwA_Y|BL4l4KuyVL>+Ssh znE8w3Qff3kw)YxxhG4>Y68etr{q-?w;#_N^Sgn-VaqKR(JL~=LCDbOZiR^dq3yhoZ=laF_ z1Ea#St|P09*oReXNbG|AS3Kmiam0JOSDr!H^O*+uga4<5yj*D6#!mj&^fYICy=v=| z^0M#aO8&75668L()1mGM32D9WXa1}UR=oE+4DeoRJ4=_Cc08X^GRf`q0ip#)8-4>A z-0x0(i#^&}gD^b^XtG~Xnp@i50Bf;?F+r2+&RmFmmG%K-mG@%cc3104_ozt?<=MBP z#~-B#{%KW8$|{*omm>&iv%{6@>U`K$^Z8(_j-;pn^H-L0Z#yk5mZQ9lP zyK|XCs6kgGhW40AuE!SRzX^4*8W8tbIPS6x=iL?y;ShrOC5y?}8zmO&fDQ=z_ zmV0LGVf9*&f7E{N3#BZ_S@B3w3HHx_i(`a25B)764*}f*m)vr@8p z<eLp(AUn$X1?Hj=v}KsN8an#Ipcv4ndLrAr+06|1~IU5ysmB03OHYSyL93{^JBncbLdoGRZ4BUj^tVNyrS!V|RsDY6h8 z90WWB7Z(IWqU|>@hE*yfSQ){H0eyz#lR=+Z`vI2dJO*txaF`{Oi6#?qNen zpr{vtM}j#sUZh4+@k~Bcr2&dV(Z`vJddFN*&1~9XTce&Y7HMK)XX_ks_gmy*3tW52 zq`U}J#f2uy0Bj)Pm=G*B7A*+WdH@GZmVjraXAu^iiIrW5I|%Qu#|VR3+p;K!0H3id z4+ZUb|)q0@>>78X6gy{r$IrrKL5Q{Mpphyu7?3H1zK9@bLBP z&ieXBR#vt&8Z9CMxwf{px3@L_28=B7s^UP8O&!7xX4Qc&% zk~Bsyz!symkClrynrqyuX30+mkFnRuh^epF_H+cOwtSBP*4dNB>!!D{{{uN&Hr+P~ zC4_2@sXKSHlz@JGYId5VH^uaK>njx5Ft6!2Urq>Xy(iyht7z~vWj1a{L+-%^pR|R( zZ$WaHsb*?)Q^g)hrD=sxx`3U*i+aAD(xrTGEIU;_8T`>_FA}+v9PNm^a#oqB81F2O zAX+d@1JjsRUCw(}55U+tafAp2_`2J9=NqGg*PP5@YOtRK2Lu+DdpEF-ySvA;du|Hd zV?X(I2w$-14)brTHQgp#DEj9HA8Z5(CEuq+qx~O^_j`TeqTC}8e`zz5)vCJAoIh0v z*<7Al8nsu7oQrP$T>lKjTl_K#XhTaGeKmTe4O#KbNIg$sSeS`XN-{8kXos!74v$!R z>(`;TmdoAS>&yx?es37i*`!>LWt5H0%P!h{+OBMrl`@xM@1wfrMLWVy?Pi5(Lzi{= zhUP_imFuS}xlM_+=s|j~j-_lk#UDD{Y6m0Doc{9eSyGH$r$Z=EcX7xuuDt^@YCnQi z461!Q9`=4fK;T)8=hv+J2noOnv{hlkXm#f?rxY?6`4r4^b(R{|(ba{|xTWOuuZSI& z-Z^237a+0Z#}K2@@yO;Zs7$rmj`Et=IB?9`qP-8|aX>eTLe(t$eRy|j2Z+`dIf`uD z>waZ3>Hf0RBX*|acXrs;3_<^SwcoGlREc(Od`zB;2#W^&{SZNHTpkU0O&13Ie4((3 zz4)j_#NMjlm=5m5+@|;fXW_9RoU11*?X_F~7SAlHg)tkhSrtr?Q1z(=tOV?=HRgHo z?bo_qk{rK%Zkw}YegZ5?j?`!qnyD*lpW{UxE@ z^%^J5ORGxJh8khmvZW=4#E@{&zB>TF^3(Q~6&~3MNFTH6{U-;P5t?CQqa{O_I-Oa5 zs4io?o`;C}p~Smg{{1i{ul&9GadU4 zmA$d>Id=8*+DnLA5DT%(-Rm%eJ9FTtKuSp4J|Huwj5O*1_|a%@y=afPI!h+ubIjd4 zq2mvEbJzfq;<$f4VmV_RS~6ew424XI6%qZ*Wo7C_;C1{$qwh)7;f3y11|Q^f4@m1~ zuv`Ub5{;CiM!rwA7XS1=qBwZ~q#fyz867=fhxNZe;mOFX`EZYCj5qtLulY*L68!tC zVnXhcp+D{xD>h`&da}GBK%!K*RoNO)lj*1xdGmNe*9w-r0LZ+^(q{`>LlR4OT=dsECkZ4S?hSFmV5hrrX38DD|^H+M{PR)n) zfslsNH6D>~d*O3!C5ZWngvwdGG&kkFSa^+A@enf%Gi5@P0DnMZXN)PEC*B0Y5rqu2 zN;3W((?!WNT%lOy@nSUbXF7hxx<*$+ubVLBN+w3^jo=;keq&rp3sb#z(l=2<{F`Gi z2mC)N)uoTSAgo|Y=20F${yX2I;{imU?A!wV4NGbrM!#pHY-CvNtA~7bYHVioBP^T%CWzVoUPGLORGx1n!Ou=f z!VQJ-+3C(&QiWUOP7_{I42B}#YW&ih|Aw9p96EmaJx3iZ)fN(@n{SV;4ml!KdeusD z{*gb~D=yXBf7$2t;f?+AC-xl#OR5w_7%jkdp>&^~v~s0knggvO!)<(cv@1IlLK z^&%3=GS`3&cjX_3Q%3yF4b&4p^9GM6Qf5V$UckZ%^9dj!y2#=PF=JJ+rTy;aqOW_O z?A%D#>NP$ti>VSsh-BJcb&!ShZaqlh3s1txYg)TptxWppm8Vny;uk{~G*XOu({oIR z*%WE&QIv^>4(&pmSjrs6=>{prK~`~g zJtXnG>yyEU8fN6#!S4+&zzn#qC*KD}6EkX7tV8klpJN2q<`XT-I_clH^4{ERT-KP` z!J=70`@@S>E$H~B{pk%SShJSMd82*nOJ)Lu3JsO~b#yU&%oTN0a79mNH#Cn{-A?{9 zRuJqLedA*80lOxm=iEM$pYFB1&Lj zLREd;;um@c)c0b{1a5q}n7ORBa>rTUU^+~H&2}LPjMIOPX3mlNI_ofrQjT*(C7lCd zeD8#+m{;5MT$E9{DD$4Tnn(2h%+B;+7yC;T$jEoV`$_TT2ihs`dUR;vpJ4g+4c5j*L~ z$SZE~(5DB85_}?T+tOWH*0HMWxLBvcFEseNlhggo^IvUr5gt8XXRauHe!SRQ2Sqa)zd8Q-exLG^!%MoH|F@wd~_02 zNZwjH6gi5c-Ko{`7U8p3wwBu3#enD4YUhPc+!(I|kRl&HQky zU%PMq3`eQXVk6s%8On+`jpnzIAqR4psIX!oW4w$GJE!B&A&c^JTbQ4D3@mwoGXmBs zU&aEW!73)P-4(Lk=0h8AkH8z?B$eZn>@tqSrr;(gfPI Date: Fri, 15 May 2020 15:05:05 +0000 Subject: [PATCH 79/79] Deploy to GitHub Pages: c63414ea7969f1e018bbbc4597b309eb70614180 --- tools-p.html | 3 +- tools.html | 3 +- tools/media/rpi_gpio.png | Bin 0 -> 113353 bytes tools/media/rpi_gpio.svg | 84 +++++++++++++++++++++ tools/rpi_thermo_meter-p.html | 138 ++++++++++++++++++++++++++++++++++ tools/rpi_thermo_meter.html | 101 +++++++++++++++++++++++++ 6 files changed, 327 insertions(+), 2 deletions(-) create mode 100644 tools/media/rpi_gpio.png create mode 100644 tools/media/rpi_gpio.svg create mode 100644 tools/rpi_thermo_meter-p.html create mode 100644 tools/rpi_thermo_meter.html diff --git a/tools-p.html b/tools-p.html index 82005fd..9fe4a41 100644 --- a/tools-p.html +++ b/tools-p.html @@ -36,7 +36,8 @@

    Εργαλεία

  • CD and CI on GitLab
  • Hardware Energy Monitoring Tools
  • Validate your links
  • -
  • Installing Jarpeb
  • +
  • Installing Jarpeb
  • +
  • RPi Thermo-Humidity Meter

  • diff --git a/tools.html b/tools.html index 2795068..0be9270 100644 --- a/tools.html +++ b/tools.html @@ -36,7 +36,8 @@

    Εργαλεία

  • CD and CI on GitLab
  • Hardware Energy Monitoring Tools
  • Validate your links
  • -
  • Installing Jarpeb
  • +
  • Installing Jarpeb
  • +
  • RPi Thermo-Humidity Meter

  • diff --git a/tools/media/rpi_gpio.png b/tools/media/rpi_gpio.png new file mode 100644 index 0000000000000000000000000000000000000000..cceb9c9cb0ea9618e7a08a147b8609d5c1bf1e2d GIT binary patch literal 113353 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 + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/tools/rpi_thermo_meter-p.html b/tools/rpi_thermo_meter-p.html new file mode 100644 index 0000000..5963051 --- /dev/null +++ b/tools/rpi_thermo_meter-p.html @@ -0,0 +1,138 @@ + + + + + + + RPi Thermo-Humidity Meter + + + + + + + + + + + +
    +
    +
    + +
    +
    +

    License

    +Creative Commons Licence
    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. +
    +
    +
    + + + + + + + diff --git a/tools/rpi_thermo_meter.html b/tools/rpi_thermo_meter.html new file mode 100644 index 0000000..bfe5253 --- /dev/null +++ b/tools/rpi_thermo_meter.html @@ -0,0 +1,101 @@ + + + + + + + + RPi Thermo-Humidity Meter + + + + + + + + + + + + + + + + + + + + +

    Προγραμματισμός ΙΙ: RPi Thermo-Humidity Meter

    +

    +

    Tools and practices: RPi Thermo and humidity meter

    + +

    Problem

    +
      +
    • Want to measure temperature rooms in a cool way?
    • +
    • Want to automate this process too?
    • +
    • Want to get measurements remotely?
    • +
    +

    Tools and Equipments

    +
      +
    • Raspberry Pi (I am using 3B model)
    • +
    • Waveshare DHT11 temperature-humidity sensor (3.4 eu)
    • +
    +

    Set up a Static IP on RPi

    +
      +
    • Open a terminal and inside /etc/dhcpcd.conf write the following lines:

      +
      interface [wlan0||eth0]
      +static ip_address=192.168.1.2/24
      +static routers=192.168.1.1
      +static domain_name_servers=192.168.1.1
    • +
    • Reboot RPi and check IP ($ ifconfig)

    • +
    +

    RPi GPIO

    +

    +

    Add pins to RPi GPIO

    +
      +
    • DHT-11 VCC pin to RPi (Top left 3.3VPWR number 1 pin)
    • +
    • DHT-11 GND pin to RPi (Top right GND number 6 pin)
    • +
    • DHT-11 DOUT pin to RPI (Top left GPIO 17 number 11 pin)
    • +
    +

    Clone Python utility

    + +

    To get reading remotely

    +
      +
    • Modify example script to avoid infinite loop by removing the while true
    • +
    • Establish password-less ssh using the following tutorial: https://www.tecmint.com/ssh-passwordless-login-using-ssh-keygen-in-5-easy-steps/
    • +
    • Test using the following: $ ssh "python3 DHT11_Python/example.py"
    • +
    +

    Add in Unix System Resource binaries

    +
      +
    • Create a small BASH script with the following code:
    • +
    +
    cat << EOF > getRoomTemperature 
    +#!/bin/bash
    +ssh pi@192.168.1.2 "python3 DHT11_Python/example.py"
    +EOF
    +
      +
    • chmod +x getRoomTemperature
    • +
    • Copy to usr binaries: $ cp getRoomTemperature /usr/bin/
    • +
    • Execute: $ getRoomTemperature
    • +
    +

    Thank you for your attention

    + +
    +Creative Commons Licence
    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + +