From c5d84d1a3ab85b1f314ff62717a7af3c6b75c7af Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 3 Feb 2019 22:45:55 +0000 Subject: metauml (3feb19) git-svn-id: svn://tug.org/texlive/trunk@49923 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/metapost/metauml/README | 16 +- .../doc/metapost/metauml/manual/fig/activity.mp | 52 + .../metauml/manual/fig/activity_diagrams.mp | 59 + .../doc/metapost/metauml/manual/fig/appetizer.mp | 203 + .../metapost/metauml/manual/fig/boxes_vs_util.mp | 92 + .../doc/metapost/metauml/manual/fig/class.mp | 134 + .../metauml/manual/fig/class_association.mp | 72 + .../metauml/manual/fig/class_customization.mp | 94 + .../metauml/manual/fig/class_customization2.mp | 31 + .../metapost/metauml/manual/fig/class_diagrams.mp | 212 + .../metapost/metauml/manual/fig/class_templates.mp | 29 + .../doc/metapost/metauml/manual/fig/component.mp | 61 + .../doc/metapost/metauml/manual/fig/group.mp | 51 + .../metapost/metauml/manual/fig/how-links-work.mp | 38 + .../doc/metapost/metauml/manual/fig/instance.mp | 9 + .../doc/metapost/metauml/manual/fig/mptextmp.mp | 1 + .../doc/metapost/metauml/manual/fig/note.mp | 74 + .../metapost/metauml/manual/fig/object_stack.mp | 46 + .../doc/metapost/metauml/manual/fig/package.mp | 93 + .../doc/metapost/metauml/manual/fig/paths.mp | 132 + .../doc/metapost/metauml/manual/fig/paths_man.mp | 143 + .../metapost/metauml/manual/fig/picture_info.mp | 86 + .../metapost/metauml/manual/fig/picture_stack.mp | 44 + .../doc/metapost/metauml/manual/fig/positioning.mp | 139 + .../doc/metapost/metauml/manual/fig/properties.mp | 58 + .../doc/metapost/metauml/manual/fig/state.mp | 55 + .../metauml/manual/fig/statemachine_diagrams.mp | 78 + .../metapost/metauml/manual/fig/test_activity.mp | 46 + .../doc/metapost/metauml/manual/fig/test_class.mp | 156 + .../metauml/manual/fig/test_class_feature_types.mp | 53 + .../metauml/manual/fig/test_class_qual_assoc.mp | 53 + .../metauml/manual/fig/test_class_templates.mp | 62 + .../metapost/metauml/manual/fig/test_component.mp | 30 + .../doc/metapost/metauml/manual/fig/test_font.mp | 81 + .../doc/metapost/metauml/manual/fig/test_group.mp | 60 + .../metapost/metauml/manual/fig/test_instance.mp | 35 + .../metauml/manual/fig/test_lars_issues.mp | 94 + .../metapost/metauml/manual/fig/test_lowlevel.mp | 66 + .../doc/metapost/metauml/manual/fig/test_note.mp | 39 + .../metapost/metauml/manual/fig/test_package.mp | 54 + .../doc/metapost/metauml/manual/fig/test_paths.mp | 100 + .../metapost/metauml/manual/fig/test_picture.mp | 273 + .../metauml/manual/fig/test_picture_stack.mp | 130 + .../manual/fig/test_picture_tex_rendering.mp | 43 + .../metauml/manual/fig/test_positioning.mp | 195 + .../doc/metapost/metauml/manual/fig/test_skins.mp | 26 + .../manual/fig/test_skins_global_defaults.mp | 29 + .../doc/metapost/metauml/manual/fig/test_state.mp | 73 + .../metapost/metauml/manual/fig/test_usecase.mp | 185 + .../doc/metapost/metauml/manual/fig/usecase.mp | 43 + .../metauml/manual/fig/usecase_diagrams.mp | 48 + .../doc/metapost/metauml/manual/metauml-manual.bib | 64 + .../doc/metapost/metauml/manual/metauml-manual.tex | 2072 +++++++ .../doc/metapost/metauml/manual/test-suite.tex | 82 + ....6-19d34de3da75cbd9f814f0a9ec03b4e0861b1541.pdf | Bin 0 -> 413691 bytes .../metauml/metauml_manual/fig/activity.mp | 52 - .../metauml_manual/fig/activity_diagrams.mp | 59 - .../metauml/metauml_manual/fig/appetizer.mp | 203 - .../metauml/metauml_manual/fig/boxes_vs_util.mp | 92 - .../metapost/metauml/metauml_manual/fig/class.mp | 119 - .../metauml_manual/fig/class_association.mp | 72 - .../metauml_manual/fig/class_customization.mp | 188 - .../metauml_manual/fig/class_customization2.mp | 31 - .../metauml/metauml_manual/fig/class_diagrams.mp | 212 - .../metauml/metauml_manual/fig/class_templates.mp | 45 - .../metauml/metauml_manual/fig/cliparts.mp | 73 - .../metauml/metauml_manual/fig/component.mp | 61 - .../metapost/metauml/metauml_manual/fig/group.mp | 51 - .../metauml/metauml_manual/fig/how-links-work.mp | 38 - .../metauml/metauml_manual/fig/instance.mp | 9 - .../metauml/metauml_manual/fig/mptextmp.mp | 1 - .../metauml/metauml_manual/fig/mptrace.tmp | 37 - .../metapost/metauml/metauml_manual/fig/note.mp | 74 - .../metauml/metauml_manual/fig/object_stack.mp | 46 - .../metapost/metauml/metauml_manual/fig/package.mp | 93 - .../metapost/metauml/metauml_manual/fig/paths.mp | 132 - .../metauml/metauml_manual/fig/paths_man.mp | 143 - .../metauml/metauml_manual/fig/picture_info.mp | 86 - .../metauml/metauml_manual/fig/picture_stack.mp | 44 - .../metauml/metauml_manual/fig/positioning.mp | 139 - .../metauml/metauml_manual/fig/properties.mp | 58 - .../metapost/metauml/metauml_manual/fig/state.mp | 55 - .../metauml_manual/fig/statemachine_diagrams.mp | 78 - .../metauml/metauml_manual/fig/test_activity.mp | 46 - .../metauml/metauml_manual/fig/test_class.mp | 145 - .../metauml_manual/fig/test_class_qual_assoc.mp | 53 - .../metauml_manual/fig/test_class_templates.mp | 62 - .../metauml/metauml_manual/fig/test_component.mp | 45 - .../metauml/metauml_manual/fig/test_font.mp | 91 - .../metauml/metauml_manual/fig/test_group.mp | 60 - .../metauml/metauml_manual/fig/test_instance.mp | 35 - .../metauml/metauml_manual/fig/test_lars_issues.mp | 94 - .../metauml/metauml_manual/fig/test_lowlevel.mp | 66 - .../metauml/metauml_manual/fig/test_note.mp | 39 - .../metauml/metauml_manual/fig/test_package.mp | 54 - .../metauml/metauml_manual/fig/test_paths.mp | 100 - .../metauml/metauml_manual/fig/test_picture.mp | 270 - .../metauml_manual/fig/test_picture_stack.mp | 70 - .../fig/test_picture_tex_rendering.mp | 43 - .../metauml/metauml_manual/fig/test_positioning.mp | 195 - .../metauml/metauml_manual/fig/test_skins.mp | 26 - .../fig/test_skins_global_defaults.mp | 29 - .../metauml/metauml_manual/fig/test_state.mp | 73 - .../metauml/metauml_manual/fig/test_usecase.mp | 197 - .../metapost/metauml/metauml_manual/fig/usecase.mp | 43 - .../metauml/metauml_manual/fig/usecase_diagrams.mp | 48 - .../metapost/metauml/metauml_manual/gnu-fdl.tex | 485 -- .../doc/metapost/metauml/metauml_manual/macro.tex | 11 - .../metauml/metauml_manual/metauml_manual.tex | 2084 ------- .../doc/metapost/metauml/metauml_manual/my-bib.bib | 13 - .../doc/metapost/metauml/metauml_manual/test.mp | 9 - .../metapost/metauml/metauml_manual/test_suite.tex | 86 - .../doc/metapost/metauml/metauml_manual_0.2.5.pdf | 5884 -------------------- 113 files changed, 6285 insertions(+), 12756 deletions(-) create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/activity.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/activity_diagrams.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/appetizer.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/boxes_vs_util.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/class.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/class_association.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/class_customization.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/class_customization2.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/class_diagrams.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/class_templates.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/component.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/group.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/how-links-work.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/instance.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/mptextmp.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/note.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/object_stack.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/package.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/paths.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/paths_man.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/picture_info.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/picture_stack.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/positioning.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/properties.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/state.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/statemachine_diagrams.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/test_activity.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/test_class.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/test_class_feature_types.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/test_class_qual_assoc.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/test_class_templates.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/test_component.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/test_font.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/test_group.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/test_instance.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/test_lars_issues.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/test_lowlevel.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/test_note.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/test_package.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/test_paths.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/test_picture.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/test_picture_stack.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/test_picture_tex_rendering.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/test_positioning.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/test_skins.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/test_skins_global_defaults.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/test_state.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/test_usecase.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/usecase.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/fig/usecase_diagrams.mp create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/metauml-manual.bib create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/metauml-manual.tex create mode 100644 Master/texmf-dist/doc/metapost/metauml/manual/test-suite.tex create mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml-manual-v0.2.6-19d34de3da75cbd9f814f0a9ec03b4e0861b1541.pdf delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/activity.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/activity_diagrams.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/appetizer.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/boxes_vs_util.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/class.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/class_association.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/class_customization.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/class_customization2.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/class_diagrams.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/class_templates.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/cliparts.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/component.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/group.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/how-links-work.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/instance.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/mptextmp.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/mptrace.tmp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/note.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/object_stack.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/package.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/paths.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/paths_man.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/picture_info.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/picture_stack.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/positioning.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/properties.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/state.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/statemachine_diagrams.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_activity.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_class.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_class_qual_assoc.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_class_templates.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_component.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_font.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_group.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_instance.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_lars_issues.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_lowlevel.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_note.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_package.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_paths.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_picture.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_picture_stack.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_picture_tex_rendering.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_positioning.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_skins.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_skins_global_defaults.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_state.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_usecase.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/usecase.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/usecase_diagrams.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/gnu-fdl.tex delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/macro.tex delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/metauml_manual.tex delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/my-bib.bib delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/test.mp delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual/test_suite.tex delete mode 100644 Master/texmf-dist/doc/metapost/metauml/metauml_manual_0.2.5.pdf (limited to 'Master/texmf-dist/doc/metapost') diff --git a/Master/texmf-dist/doc/metapost/metauml/README b/Master/texmf-dist/doc/metapost/metauml/README index 100643b3dd4..f6465043372 100644 --- a/Master/texmf-dist/doc/metapost/metauml/README +++ b/Master/texmf-dist/doc/metapost/metauml/README @@ -1,12 +1,11 @@ -MetaUML, human-friendly UML textual notation for LaTeX/MetaPost -http://metauml.sourceforge.net +MetaUML https://github.com/ogheorghies/MetaUML -Version: 0.2.5 +Version: 0.2.6 Author : Ovidiu Gheorghies -Date : July 30, 2010 +Date : February 02, 2019 -MetaUML is a GNU GPL MetaPost library for typesetting UML diagrams. -It offers (partial) support for: +MetaUML is a MetaPost library for creating UML diagrams using a textual notation. +It offers partial support for: - class diagrams - package diagrams - activity diagrams @@ -16,6 +15,5 @@ It offers (partial) support for: This release contains the following directories: doc : PDF documentation -examples : source code for the documentation (GNU FDL) -inputs : the macros needed to typeset in MetaUML (GNU GPL) - +examples : source code for the documentation +inputs : the macros needed to use MetaUML \ No newline at end of file diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/activity.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/activity.mp new file mode 100644 index 00000000000..676d1996eb1 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/activity.mp @@ -0,0 +1,52 @@ +% Sample MetaUML figures. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +input metauml; + +beginfig(1); + Begin.b; + End.e; + FlowFinal.f; + + leftToRight(20)(b, e, f); + + drawObjects(b, e, f); +endfig; + +beginfig(2); + Activity.A("Learn MetaUML -", + "the MetaPost UML library"); + drawObject(A); +endfig; + +beginfig(3); + Fork.forkA("h", 50); + Fork.forkB("v", 20); + + leftToRight(10)(forkA, forkB); + + drawObjects(forkA, forkB); +endfig; + +beginfig(4); + Branch.testA; + + drawObject(testA); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/activity_diagrams.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/activity_diagrams.mp new file mode 100644 index 00000000000..0807619acd9 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/activity_diagrams.mp @@ -0,0 +1,59 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +% for f in `find . | grep '.*\.[1-9]'`; do echo $f; done + +input metauml; + +beginfig(1); + Begin.b; + Activity.eat("Eat something good", "from the kitchen"); + Branch.enough; + Fork.fork("h", 50); + Activity.read("Read a book"); + Activity.listen("Listen to music", "(and ignore it)"); + Fork.join("h", 50); + End.e; + + eat.n = b.s + (0,-20); + enough.n = eat.s + (0,-20); + fork.n = enough.s + (0, -20); + + read.top = listen.top = fork.bottom - 30; + listen.left - read.right = 10; + b.midx = .5[listen.left, read.right]; + + join.n = (b.midx, listen.bottom - 20); + e.n = join.s + (0, -20); + + drawObjects(b, eat, enough, fork, read, listen, join, e); + + clink(transition)(b, eat); + clink(transition)(eat, enough); + link(transition)(pathStepX(enough.w, eat.w, -80)); + clink(transition)(enough, fork); + clink(transition)(fork, read); + clink(transition)(fork, listen); + clink(transition)(read, join); + clink(transition)(listen, join); + clink(transition)(join, e); + + item(iGuard)("still hungry")(obj.se = enough.w + (-20, 0)); + item(iGuard)("had enough")(obj.nw = enough.s + (0, -4)); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/appetizer.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/appetizer.mp new file mode 100644 index 00000000000..ed90dc77dc1 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/appetizer.mp @@ -0,0 +1,203 @@ +% Sample MetaUML figures. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; + +beginfig(1); + Class.Client("Client")()(); + + Class._Component("Component")()(); + %("+Operation()", "+Add(Component)", "+Remove(Component)", "+GetChild(int)"); + classStereotype._Component("<>"); + + Class.Leaf("Leaf")()("+Operation()"); + + Class.Composite("Composite")()(); + %("+Operation()", "+Add(Component)", "+Remove(Component)", "+GetChild(int)"); + + leftToRight.top(30)(Client, _Component); + leftToRight.top(20)(Leaf, Composite); + .5[Leaf.ne, Composite.nw] = below(_Component.s, 45); + + drawObjects(Client, _Component, Leaf, Composite); + + link(associationUni)(pathHorizontal(Client.e, _Component.left)); + link(inheritance)(pathStepY(Leaf.n, _Component.s, 20)); + link(inheritance)(pathStepY(Composite.n, _Component.s, 20)); + + link(aggregationUni)(pathStepX(_Component.e, Composite.e, 55)); +endfig; + +beginfig(2); + Begin.b; + Activity.eat("Eat something good", "from the kitchen"); + Branch.enough; + Fork.fork("h", 50); + Activity.read("Read a book"); + Activity.listen("Listen to music", "(and ignore it)"); + Fork.join("h", 50); + End.e; + + leftToRight.top(10)(read, listen); + Group.readListen(read, listen); + + leftToRight(30)(b, eat); + topToBottom(20)(eat, enough, fork, readListen, join, e); + + drawObjects(b, eat, enough, fork, readListen, join, e); + + clink(transition)(b, eat); + clink(transition)(eat, enough); + link(transition)(pathStepX(enough.e, eat.e, 80)); + clink(transition)(enough, fork); + clink(transition)(fork, read); + clink(transition)(fork, listen); + clink(transition)(read, join); + clink(transition)(listen, join); + clink(transition)(join, e); + + item(iGuard)("still hungry")(obj.sw = enough.e + (20, 0)); + item(iGuard)("had enough")(obj.nw = enough.s + (0, -4)); +endfig; + +beginfig(3); + Actor.user("User"); + Actor.db("Database"); + + Usecase.dbquery("Query database"); + Usecase.auth("Authenticate user"); + Usecase.authA("Authenticate by", "username, password"); + Usecase.authB("Authenticate by", "smartcard"); + + leftToRight(30)(user.human, auth, dbquery, db.human); + leftToRight.top(30)(authA, authB); + .5[authA.ne, authB.nw] = below(auth.s, 20); + + drawObjects(user, auth, dbquery, db, authA, authB); + + clink(inheritance)(authA, auth); + clink(inheritance)(authB, auth); + clink(association)(auth, dbquery); + clink(association)(user.human, auth); + clink(association)(dbquery, db.human); +endfig; + +beginfig(4); + save b, e, reading, processing, composite, exit, error, result, theEnd; + + Begin.b; + State.reading("Reading commands")(); + State.processing("Processing commands")(); + End.e; + + State.composite("Working")(b, reading, processing, e); + composite.info.left := composite.info.right := 10; + composite.info.drawNameLine := 1; + + topToBottom(20)(b, reading, processing, e); + drawObject(composite); + + clink(transition)(b, reading); + clink(transition)(reading, processing); + clink(transition)(processing, e); + + ExitPoint.exit; + exit.c=(composite.right, reading.midy); + drawObject(exit); + item(iAssoc)("error")(obj.nw = exit.s); + + clink(transition)(reading, exit); + + State.error("Preparing error report")(); + State.result("Writing result")(); + End.theEnd; + + topToBottom(20)(error, result, theEnd); + leftToRight(30)(exit, error); + + drawObjects(error, result, theEnd); + + clink(transition)(exit, error); + clink(transition)(error, result); + clink(transition)(result, theEnd); + + link(transition)(rpathHorizontal(result.w, composite.right)); +endfig; + + +beginfig(5); + save A, B; + + Note.A("An important", "UML note"); + Note.B("Another note"); + + leftToRight(20)(A, B); + drawObjects(A, B); + + clink(dashedLink)(A, B); +endfig; + +beginfig(6); + Class.A("A")()(); + Class.B("B")()(); + + Package.pA("net.foo")(); + Package.pB("net.foo.bar")(A, B); + + leftToRight(20)(A, B); + leftToRight(50)(pA, pB); + + drawObjects(A, B, pA, pB); + + clink(nest)(pB, pA); +endfig; + +beginfig(7); + save A; + + Class.A("MyClass") + ("attr1: int", "attr2: int") + ("method1(): void", + "method2(): void"); + + A.nw = (0, 0); % optional, implied + drawObject(A); +endfig; + +beginfig(8); + save A, B; + Class.A("A")()(); + Class.B("B")()(); + + A.nw = (0,0); + B.w = A.e + (20, 0); + + drawObjects(A, B); +endfig; + +beginfig(9); + save A, B; + + Class.A("A")()(); + Class.B("B")()(); + B.w = A.e + (20, 0); + drawObjects(A, B); + link(inheritance)(B.w -- A.e); +endfig; +end + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/boxes_vs_util.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/boxes_vs_util.mp new file mode 100644 index 00000000000..985c9bb158b --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/boxes_vs_util.mp @@ -0,0 +1,92 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input boxes; +input util_commons; +input util_object; +input util_picture; + +beginfig(1); + boxit.a ("yummy"); + boxit.b ("cool"); + + a.nw = (0,0); + b.sw = a.se + (10,0); + + drawboxed (a, b); + draw a.sw -- b.se dashed evenly withpen pencircle scaled 1.1; + + boxit.c ("yummy"); + boxit.d ("cool"); + + c.nw = (0,-20); + d.sw = c.se + (10,0); + + drawunboxed (c, d); + draw c.sw -- d.se dashed evenly withpen pencircle scaled 1.1; +endfig; + +beginfig(2); + save a, b, c, d; + + Picture.a("yummy"); + Picture.b("cool"); + a.info.boxed := b.info.boxed := 1; + + a.nw = (0,0); + b.sw = a.se + (10,0); + + drawObjects(a, b); + draw a.sw -- b.se dashed evenly withpen pencircle scaled 1.1; + + Picture.c("yummy"); + Picture.d("cool"); + + c.nw = (0,-20); + d.sw = c.se + (10,0); + + drawObjects(c, d); + draw c.sw -- d.se dashed evenly withpen pencircle scaled 1.1; +endfig; + +beginfig(3); + save a, b, c, d; + + iPict.ignoreNegativeBase := 1; + + Picture.a("yummy"); + Picture.b("cool"); + a.info.boxed := b.info.boxed := 1; + + a.nw = (0,0); + b.sw = a.se + (10,0); + + drawObjects(a, b); + draw a.sw -- b.se dashed evenly withpen pencircle scaled 1.1; + + Picture.c("yummy"); + Picture.d("cool"); + + c.nw = (0,-20); + d.sw = c.se + (10,0); + + drawObjects(c, d); + draw c.sw -- d.se dashed evenly withpen pencircle scaled 1.1; +endfig; + + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/class.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/class.mp new file mode 100644 index 00000000000..e5d03d3d43d --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/class.mp @@ -0,0 +1,134 @@ +% Sample MetaUML figures. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +input metauml; + +beginfig(1); + Class.A("Point") + ("#x:int", + "#y:int") + ("+set(x:int, y:int)", + "+getX():int", + "+getY():int", + "-debug():void", + "test():void"); + drawObject(A); +endfig; + +beginfig(2); + save A, T; + + Class.A("User")()(); + Class_stereotypes.A("<>", "<>"); + + drawObject(A); +endfig; + +beginfig(3); + save A, T; + + Class.A("Vector")()(); + ClassTemplate.T("T", "size: int")(A); + + drawObjects(A, T); +endfig; + +beginfig(4); + link(association)( (0,0) -- (50,0) ); +endfig; + +beginfig(5); + link(associationUni)( (0,0) -- (50,0) ); +endfig; + +beginfig(6); + link(inheritance)( (0,0) -- (50,0) ); +endfig; + +beginfig(7); + link(aggregation)( (0,0) -- (50,0) ); +endfig; + +beginfig(8); + link(aggregationUni)( (0,0) -- (50,0) ); +endfig; + +beginfig(9); + link(composition)( (0,0) -- (50,0) ); +endfig; + +beginfig(10); + link(compositionUni)( (0,0) -- (50,0) ); +endfig; + +beginfig(11); + save A; + Interface.A("Observer") + ("+update(src:Object)"); + + drawObject(A); +endfig; + +beginfig(12); + save A; + EClass.A(iAbstractClass)("Observable") + ("observers: Observer[0..*]") + ("+addObserver(o: Observer)", + "+notify()"); + + drawObject(A); +endfig; + +beginfig(13) + save A; + + Class.A("MyModel")()(); + A.info.iName.top := 10; + A.info.iName.bottom := 10; + A.info.iAttributeStack.top := 0; + A.info.iAttributeStack.bottom := 0; + A.info.iMethodStack.top := 0; + A.info.iMethodStack.bottom := 0; + + drawObject(A); +endfig; + +beginfig(14) + save A, B; + + EClass.A(iClassNameOnly)("MyModel")()(); + ClassName.B("AnotherModel"); + classStereotypes.B("<>"); + + topToBottom(20)(A, B); + + drawObjects(A, B); +endfig; + +beginfig(15); + save A; + + Class.A("Point") + ("#x:int", "#y:int") + ("+toString():String"); + Class_noVisibilityMarkers.A; + + drawObject(A); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/class_association.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/class_association.mp new file mode 100644 index 00000000000..2ff5037a8c8 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/class_association.mp @@ -0,0 +1,72 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; + +beginfig(1); + save P,B; + + Class.P("Person")()(); + Class.B("Bank")()(); + + P.nw = (0,0); + B.w = P.e + (50,0); + + drawObjects(P, B); + + drawRelation(association)(P.e -- B.w); + + item.assocName(iAssoc)("works for")(assocName.s = .5[P.e,B.w]); + + draw assocName.n -- (assocName.n + (20,20)); + label.urt("association name" infont "tyxtt", assocName.n + (20,20)); +endfig; + +beginfig(2); + save P,C; + + Class.P("Person")()(); + Class.C("Company")()(); + + C.n = P.s + (0, -70); + drawObjects(P, C); + + link(association)(P.s -- C.n); + + item(iAssoc)("employee")(obj.nw = P.s); + item(iAssoc)("1..*")(obj.ne = P.s); + + item(iAssoc)("employer")(obj.sw = C.n); + item(iAssoc)("0..*")(obj.se = C.n); + + item(iAssoc)("works for")(obj.w = .5[P.s,C.n]); +endfig; + +beginfig(3); + save F, O; + + Class.F("Factory")()(); + Class.O("Object")()(); + + O.n = F.s - (0, 50); + drawObjects(F, O); + + clink(dependency)(F, O); + item(iStereo)("<>")(obj.w = .5[F.s,O.n]) +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/class_customization.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/class_customization.mp new file mode 100644 index 00000000000..980915ea00e --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/class_customization.mp @@ -0,0 +1,94 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; + +beginfig(1); + iClass.foreColor := (.9, .9, 0); + + Class.A("A")()(); + Class.B("B")()(); + Class.C("C")()(); + + B.w = A.e + (20,0); + C.n = .5[A.se, B.sw] + (0, -10); + + drawObjects(A, B, C); +endfig; + +beginfig(2); + save A, B, C; + iClass.foreColor := (.9, .9, 0); + + Class.A("A")()(); + Class.B("B")()(); + Class.C("C")()(); + C.info.foreColor := (.7, .7, .9); + C.info.borderColor := blue; + C.info.iName.iFont.scale := 2; + + B.w = A.e + (20,0); + C.n = .5[A.se, B.sw] + (0, -10); + + drawObjects(A, B, C); +endfig; + +beginfig(3); + ClassInfoCopy.iHome(iClass); + iHome.foreColor := (0, .9, .9); + + ClassInfo.iRemote; + iRemote.foreColor := (.9, .9, 0); + iRemote.borderColor := (0, 0, .9); + + save A, B, C, D; + + EClass.A(iHome)("UserHome")()(); + EClass.B(iRemote)("UserRemote")()(); + EClass.C(iHome)("CartHome")()(); + EClass.D(iRemote)("CartRemote")()(); + + + B.nw = A.ne + (20,0); + D.nw = C.ne + (20,0); + A.bottom - C.top = 10; + A.left = C.left; + + drawObjects(A, B, C, D); +endfig; + +beginfig(4); + iClass.foreColor := .9white; + save A; + + Class.A("Foo") + ("a: int", "b: int") + ("foo()", "bar()", "gar()"); + A.info.iName.iFont.name := metauml_defaultFontBold; + A.info.iName.iFont.scale := 1.2; + + A.info.iAttributeStack.iPict.iFont.scale := 0.8; + A.info.iAttributeStack.top := 10; + A.info.iAttributeStack.spacing := 11; + + A.info.iMethodStack.iPict.iFont.scale := 2; + A.info.iMethodStack.spacing := 17; + A.info.iMethodStack.bottom := 10; + drawObject(A); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/class_customization2.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/class_customization2.mp new file mode 100644 index 00000000000..be45e95240b --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/class_customization2.mp @@ -0,0 +1,31 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; + +beginfig(1); + save Test; + Class.Test("TestClass")("attribute1: int","attribute2: double") + ("oneLongMethod(): void", + "anotherLongMethod(): void"); + + Test.nw = (0,0); + Class_draw.Test; +endfig; + + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/class_diagrams.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/class_diagrams.mp new file mode 100644 index 00000000000..614cdbeca60 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/class_diagrams.mp @@ -0,0 +1,212 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; + +beginfig(1); + Class.Count("Count") + ("#n: int") + ("+increase(): void", + "+get(): int"); + + %Count.nw = (0,0); + drawObject(Count); + %Class_draw.Count; +endfig; + +beginfig(2); + Class.A("Point") + ("+x: int", + "+y: int") (); + + Class.B("Circle") + ("radius: int") + ("+getRadius(): int", + "+setRadius(r: int):void"); + + A.nw = (0,0); + B.n = A.s - (0,45); + Class_draw.A; + Class_draw.B; + + drawRelation(aggregationUni)(A.s -- B.n); +endfig; + +beginfig(3); + Class.Test("Test")("a1","a2","a3")("aLongMethod():void"); + + Test.nw = (0,0); + Class_draw.Test; + + dotlabel.ulft(btex nw etex, Test.nw); + dotlabel.top(btex n etex, Test.n); + dotlabel.urt(btex ne etex, Test.ne); + dotlabel.rt(btex e etex, Test.e); + dotlabel.lrt(btex se etex, Test.se); + dotlabel.bot(btex s etex, Test.s); + dotlabel.llft(btex sw etex, Test.sw); + dotlabel.lft(btex w etex, Test.w); + + dotlabel.lft(btex c etex, Test.c); + + draw Test.nw - (50,0) -- Test.ne + (10,0); + label.urt(btex top etex, Test.nw - (50,0)); + + draw Test.sw - (50,0) -- Test.se + (10,0); + label.lrt(btex bottom etex, Test.sw - (50,0)); + + draw Test.nw + (0,10) -- Test.sw - (0, 50); + label.bot(btex left etex, Test.sw - (0,50)); + + draw Test.ne + (0,10) -- Test.se - (0, 50); + label.bot(btex right etex, Test.se - (0,50)); + + drawarrow Test.nw - (25,0) -- Test.sw - (25,0); + label.lft(btex height etex, .5[Test.nw, Test.sw] - (25,0)); + + drawarrow Test.sw - (0,25) -- Test.se - (0,25); + label.bot(btex width etex, .5[Test.sw, Test.se] - (0,25)); +endfig; + +%newAssociationDescription.association; +%newAssociationUniDescription.associationUni; +%newInheritanceDescription.inheritance; +%newAggregationDescription.aggregation; +%newAggregationUniDescription.aggregationUni; +%newCompositionDescription.composition; +%newCompositionUniDescription.compositionUni; +%newDashedLinkDescription.dashedLink; +%newDependencyDescription.dependency; + +beginfig(4); + save X, Y; + Class.X("X")()(); + Class.Y("Y")()(); + + X.nw = (0,0); + Y.w = X.e + (50,0); + Class_draw.X; + Class_draw.Y; + + drawRelation(association)(X.e -- Y.w); +endfig; + +beginfig(5); + save X, Y; + Class.X("X")()(); + Class.Y("Y")()(); + + X.nw = (0,0); + Y.w = X.e + (50,0); + Class_draw.X; + Class_draw.Y; + + drawRelation(associationUni)(X.e -- Y.w); +endfig; + +beginfig(6); + save X, Y; + Class.X("X")()(); + Class.Y("Y")()(); + + X.nw = (0,0); + Y.w = X.e + (50,0); + Class_draw.X; + Class_draw.Y; + + drawRelation(inheritance)(X.e -- Y.w); +endfig; + +beginfig(7); + save X, Y; + Class.X("X")()(); + Class.Y("Y")()(); + + X.nw = (0,0); + Y.w = X.e + (50,0); + Class_draw.X; + Class_draw.Y; + + drawRelation(aggregation)(X.e -- Y.w); +endfig; + +beginfig(8); + save X, Y; + Class.X("X")()(); + Class.Y("Y")()(); + + X.nw = (0,0); + Y.w = X.e + (50,0); + Class_draw.X; + Class_draw.Y; + + drawRelation(aggregationUni)(X.e -- Y.w); +endfig; + +beginfig(9); + save X, Y; + Class.X("X")()(); + Class.Y("Y")()(); + + X.nw = (0,0); + Y.w = X.e + (50,0); + Class_draw.X; + Class_draw.Y; + + drawRelation(composition)(X.e -- Y.w); +endfig; + +beginfig(10); + save X, Y; + Class.X("X")()(); + Class.Y("Y")()(); + + X.nw = (0,0); + Y.w = X.e + (50,0); + Class_draw.X; + Class_draw.Y; + + drawRelation(compositionUni)(X.e -- Y.w); +endfig; + +beginfig(11); + save X, Y; + Class.X("X")()(); + Class.Y("Y")()(); + + X.nw = (0,0); + Y.w = X.e + (50,0); + Class_draw.X; + Class_draw.Y; + + drawRelation(dependency)(X.e -- Y.w); +endfig; + +beginfig(12); + save X, Y; + Class.X("X")()(); + Class.Y("Y")()(); + + X.nw = (0,0); + Y.w = X.e + (50,0); + Class_draw.X; + Class_draw.Y; + + drawRelation(realization)(X.e -- Y.w); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/class_templates.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/class_templates.mp new file mode 100644 index 00000000000..bf89f9d3cda --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/class_templates.mp @@ -0,0 +1,29 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; + +beginfig(1); + Class.V("Vector")("elements: T(n)")(); + Template.T("T", "n: int"); + Template_attachToClass.T(V); + + drawObjects(V); + drawObjects(T); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/component.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/component.mp new file mode 100644 index 00000000000..da46c9d3465 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/component.mp @@ -0,0 +1,61 @@ +input metauml; + +beginfig(1); + Component.C("Business Logic")(); + drawObject(C); +endfig; + +beginfig(2); + save A, B, C, BigC; + + Class.A("A")()(); + Package.B("B")(); + Component.C("C")(); + + Component.BigC("Big Component")(A, B, C); + + leftToRight(10)(A, B); + topToBottom(10)(A, C); + + drawObject(BigC); +endfig; + +beginfig(3); + save A, B; + Component.A("A")(); + Component.B("B")(); + + leftToRight(80)(A, B); + + drawObjects(A, B); + + link(providedInterface)( A.e -- .5[A.e, B.w] ); +endfig; + +beginfig(4); + save A, B; + Component.A("A")(); + Component.B("B")(); + + leftToRight(80)(A, B); + + drawObjects(A, B); + + link(requiredInterface)( B.w -- .5[A.e, B.w]); +endfig; + +beginfig(5); + save A, B; + Component.A("A")(); + Component.B("B")(); + + leftToRight(80)(A, B); + + drawObjects(A, B); + + link(providedInterface)( A.e -- .5[A.e, B.w] ); + link(requiredInterface)( B.w -- .5[A.e, B.w] ); +endfig; + + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/group.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/group.mp new file mode 100644 index 00000000000..0e25e58ea66 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/group.mp @@ -0,0 +1,51 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input boxes; +input util_commons; +input util_object; +input util_picture; +input util_margins; +input util_group; + +beginfig(1); + iGroup.left:=20; + iGroup.right:=15; + iGroup.boxed:=1; + iPict.boxed:=1; + + Picture.a("yummy"); + Picture.b("cool"); + Picture.c("fool"); + + a.nw = (0,0); + b.nw = (20,20); + c.nw = (15, 40); + + Group.g(a, b, c); + + drawObjects(g); +endfig; + +beginfig(2); +endfig; + +beginfig(3); +endfig; + + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/how-links-work.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/how-links-work.mp new file mode 100644 index 00000000000..c8d8500358d --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/how-links-work.mp @@ -0,0 +1,38 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; + +beginfig(1); + drawRelation(aggregationUni) + ((0,0)--(40,0)); +endfig; + + +beginfig(2); + path myPath; + myPath := (0,0) -- (100,0); + LinkStructure.ls(myPath, + aggregationUni.widthA, + aggregationUni.widthB); + + describeLinkStructure(ls); + drawLinkStructure(ls)(aggregationUni); +endfig; + +end + diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/instance.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/instance.mp new file mode 100644 index 00000000000..9417224306a --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/instance.mp @@ -0,0 +1,9 @@ +input metauml; + +beginfig(1); + Instance.order("o: Order") + ("name='book'", "{placed}", "{payed}"); + drawObject(order); +endfig; + +end \ No newline at end of file diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/mptextmp.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/mptextmp.mp new file mode 100644 index 00000000000..3e16f83e564 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/mptextmp.mp @@ -0,0 +1 @@ +btex But this is insane: $\sum_1^3 f(x) \over x$! etex diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/note.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/note.mp new file mode 100644 index 00000000000..f04a5b5e4fe --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/note.mp @@ -0,0 +1,74 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; +input TEX; + +beginfig(1); + Note.A("This note", "has two lines."); + drawObject(A); +endfig; + +beginfig(2); + save A, C; + Note.A("This is a class"); + Class.C("Object")()(); + + A.sw = C.ne + (20, 20); + + drawObjects(A, C); + + clink(dashedLink)(A, C); +endfig; + +beginfig(3); + save C; + Note.nA("This is the class name"); + Note.nB("This is a key attribute"); + Note.nC("This is a nice method"); + + Class.C("Object")("+id:int") + ("+clone()", "+serialize()"); + + topToBottom.left(10)(nA, nB, nC); + leftToRight(10)(C, nB); + + drawObjects(C, nA, nB, nC); + + clink(dashedLink)(C.namePict, nA); + clink(dashedLink)(C.attributeStack.pict[0], nB); + clink(dashedLink)(C.methodStack.pict[1], nC); +endfig; + +beginfig(4); + save A; + Note.A("This class implements the formula:", + TEX("$\sum_1^n f(x)\cdot dx$")); + drawObjects(A); +endfig; + +beginfig(5); + save A; + Note.A("Can you do it?", + TEX("$\sum_1^n f(x) \cdot dx " & + "\over \sum_1^m g(y) \cdot dy$")); + A.stack.info.spacing := 30; + A.stack.pict[1].info.ignoreNegativeBase := 0; + drawObjects(A); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/object_stack.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/object_stack.mp new file mode 100644 index 00000000000..b9cd4d32b34 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/object_stack.mp @@ -0,0 +1,46 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input boxes; +input util_commons; +input util_object; +input util_picture; + + +beginfig(1); + iPict.ignoreNegativeBase := 1; + iPict.boxed := 1; + Picture.a0("yummy"); + Picture.a1("cool"); + Picture.a2("fool"); + + a0.nw = (0,0); + setObjectJoin(pa.sw = pb.nw); + + joinObjects(scantokens listArray(a)(3)); + drawObjects(scantokens listArray(a)(3)); + +endfig; + +beginfig(2); +endfig; + +beginfig(3); +endfig; + + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/package.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/package.mp new file mode 100644 index 00000000000..88653b5fee0 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/package.mp @@ -0,0 +1,93 @@ +input metauml; +input metauml_package; +input metauml_package_relations; + +beginfig(1); + Package.P("java.lang")(); + drawObject(P); +endfig; + +beginfig(2); + save P; + Package.P("An important", "package")(); + drawObject(P); +endfig; + +beginfig(3); + save P; + Package.P("java.lang")(); + P.info.forceEmptyContent := 1; + drawObject(P); +endfig; + +beginfig(4); + save P, A, B; + Class.A("A")()(); + Class.B("B")()(); + Package.P("net.metauml")(A, B); + + leftToRight(10)(A, B); + + drawObject(P); +endfig; + +beginfig(5); + Package.X("X")(); + Package.Y("Y")(); + + leftToRight(50)(X, Y); + drawObjects(X, Y); + + link(nest)(X.e -- Y.w); +endfig; + +beginfig(8); + Package.emptyPackage("")(); + + Package.nameOnlyPackage("java.sun.com")(); + + Class.oneClass("A class")()(); + Package.oneClassPackage("One class package")(oneClass); + + Instance.oneInstance("An instance")(); + State.oneState("A state")(); + Activity.oneActivity("An activity"); + Package.multiPackage("Multipackage")(oneInstance, oneState, oneActivity); + + Package.allPackage("This package contains them all")(emptyPackage, nameOnlyPackage, + oneClassPackage, multiPackage); + + nameOnlyPackage.nw = emptyPackage.ne + (30, 0); + oneClassPackage.ne = emptyPackage.s - (0, 50); + + multiPackage.top = oneClassPackage.top; + multiPackage.left = oneClassPackage.right + 20; + + centered_align_top(oneState, oneActivity)(10, below(oneInstance.s, 20)); + + drawObjects(allPackage); +endfig; + +beginfig(8); + Package.nameOnlyOnTopPackage("Name on top")(); + nameOnlyOnTopPackage.info.forceEmptyContent := 1; + Package.nameOnlyInMiddlePackage("By default name", "is in the middle")(); + + Class.cl("A class")("Attribute")("Method"); + Package.notEmptyPackage("Contains class")(cl); + + nameOnlyInMiddlePackage.n = nameOnlyOnTopPackage.s - (0, 40); + notEmptyPackage.w = nameOnlyInMiddlePackage.e + (80, 0); + drawObjects(nameOnlyOnTopPackage, nameOnlyInMiddlePackage, notEmptyPackage); + + %link(import)(pathStepX(notEmptyPackage.w, nameOnlyOnTopPackage.e, -30)); + %link(import)(pathVertical(nameOnlyInMiddlePackage.ne - (10, 0), nameOnlyOnTopPackage.bottom)); + %link(import)(notEmptyPackage.sw -- nameOnlyInMiddlePackage.ne); +endfig; + +beginfig(8); + link(nest)((10,10)--(30,30)); +endfig; + + +end \ No newline at end of file diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/paths.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/paths.mp new file mode 100644 index 00000000000..06ca5761209 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/paths.mp @@ -0,0 +1,132 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; + +beginfig(1); + pair za, zb; + za = (10,10); + zb = (10,-5); + path cool; + cool := za .. za+(20,10) .. + zb+(20,-20) .. + zb+(-10,-30) -- zb; + link(aggregationUni)(cool); +endfig; + +beginfig(2); + save A, B; + Class.A("A")()(); + Class.B("B")()(); + + B.sw = A.ne + (10,10); + + drawObjects(A, B); + + link(aggregationUni) + (rpathManhattanX(A.e, B.s)); + link(inheritance) + (pathManhattanY(A.n, B.w)); +endfig; + +beginfig(3); + save A, B; + Class.A("A")()(); + Class.B("B")()(); + + B.sw = A.ne + (10,10); + + drawObjects(A, B); + + stepX:=60; + link(aggregationUni) + (pathStepX(A.e, B.e, stepX)); + + stepY:=20; + link(inheritance) + (pathStepY(B.n, A.n, stepY)); + + pair X,Y; + X := A.se + (0,-30); + Y := X + (stepX, 0); + draw A.se -- X dashed evenly; + draw (xpart Y, ypart A.e) -- Y dashed evenly; + drawdblarrow X + (0,15) -- Y + (0,15); + label.top(btex stepX etex, .5[X,Y]); + + pair X,Y; + X := B.n + (-70,-0); + Y := X + (0, stepY); + + draw B.n -- X dashed evenly; + draw B.n + (0,stepY) -- Y dashed evenly; + drawdblarrow X + (15,0) -- Y + (15,0); + label.lft(btex stepY etex, .5[X,Y]); +endfig; + +% horizontal, vertical +beginfig(4); + save A, B; + Class.A("A")()(); + Class.B("B")("b")(); + Class.C("C")("foo: int")(); + + B.sw = A.se + (30,5); + C.sw = A.nw + (0, 30); + + drawObjects(A, B, C); + + untilX := B.left; + drawRelation(association) + (pathHorizontal(A.e, untilX)); + + draw B.nw -- B.sw + (0,-10) dashed evenly; + label.bot(btex untilX etex, B.sw + (0,-10)); + + untilY:= C.bottom; + drawRelation(association)(pathVertical(A.n, untilY)); + + draw C.sw -- C.sw + (-20,0) dashed evenly; + label.lft(btex untilY etex, C.sw + (-20,-0)); + +endfig; + +beginfig(5); + save A,B; + Activity.A("A"); + Activity.B("B"); + + B.nw = A.ne + (40,30); + drawObjects(A,B); + + z = A.se + (30, -10); + link(transition)(pathCut(A, B) + (A.c -- z -- B.c)); +endfig; + +beginfig(6); + save A,B; + Class.A("A")()(); + Class.B("B")()(); + + B.nw = A.ne + (20,30); + drawObjects(A,B); + + clink(inheritance)(A, B); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/paths_man.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/paths_man.mp new file mode 100644 index 00000000000..a6c502f147b --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/paths_man.mp @@ -0,0 +1,143 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; + +beginfig(1); + save A, B; + Class.A("A")("foo:int")("bar()"); + Class.B("B")()(); + + A.nw = (0,0); + B.s = A.ne + (30,30); + + Class_draw.A; + Class_draw.B; + + drawRelation(aggregationUni) + (A.n ..(30,30)..B.w); + path cool; + cool := A.e .. A.e+(20,10) .. + B.s+(20,-40) .. B.s+(-10,-30) + -- B.s; + drawRelation(inheritance)(cool); +endfig; + +beginfig(2); + save A, B; + Class.A("A")()(); + Class.B("B")()(); + + A.nw = (0,0); + B.sw = A.ne + (10,10); + + Class_draw.A; + Class_draw.B; + + drawRelation(aggregationUni) + (pathManhattanX(A.e, B.s)); + drawRelation(inheritance) + (pathManhattanY(A.n, B.w)); +endfig; + +beginfig(3); + save A, B; + Class.A("A")()(); + Class.B("B")()(); + + A.nw = (0,0); + B.sw = A.ne + (10,10); + + Class_draw.A; + Class_draw.B; + + stepX:=60; + drawRelation(aggregationUni) + (pathStepX(A.e, B.e, stepX)); + + stepY:=20; + drawRelation(inheritance) + (pathStepY(B.n, A.n, stepY)); + + pair X,Y; + X := A.se + (0,-30); + Y := X + (stepX, 0); + draw A.se -- X dashed evenly; + draw (xpart Y, ypart A.e) -- Y dashed evenly; + drawdblarrow X + (0,15) -- Y + (0,15); + label.top(btex stepX etex, .5[X,Y]); + + pair X,Y; + X := B.n + (-70,-0); + Y := X + (0, stepY); + + draw B.n -- X dashed evenly; + draw B.n + (0,stepY) -- Y dashed evenly; + drawdblarrow X + (15,0) -- Y + (15,0); + label.lft(btex stepY etex, .5[X,Y]); +endfig; + +beginfig(4); + save A, B; + Class.A("A")()(); + Class.B("B")("a")(); + + A.nw = (0,0); + B.sw = A.se + (30,5); + + Class_draw.A; + Class_draw.B; + + untilX := B.left; + drawRelation(association) + (pathHorizontal(A.e, untilX)); + + draw B.nw -- B.sw + (0,-10) dashed evenly; + label.bot(btex untilX etex, B.sw + (0,-10)); +endfig; + +beginfig(5); + save A, B; + Class.A("A")()(); + Class.B("B")("a")("foo()"); + + A.nw = (0,0); + B.sw = A.ne + (-20,20); + + Class_draw.A; + Class_draw.B; + + untilY:= B.bottom; + drawRelation(association) + (pathVertical(A.n, untilY)); + + draw B.sw -- B.sw + (-20,0) dashed evenly; + label.lft(btex untilY etex, B.sw + (-20,-0)); +endfig; + +beginfig(6); + save A,B; + Class.A("A")()(); + Class.B("B")()(); + + B.nw = A.ne + (40,30); + drawObjects(A,B); + + link(inheritance)(pathCut(A,B)(A.c -- B.c)); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/picture_info.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/picture_info.mp new file mode 100644 index 00000000000..df3b10145f2 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/picture_info.mp @@ -0,0 +1,86 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input boxes; +input util_commons; +input util_object; +input util_picture; +input util_positioning; + +PictureInfoCopy.iBig(iPict); +iBig.left := iBig.right := 20; +iBig.top := 10; +iBig.bottom := 1; +iBig.boxed := 1; +iBig.ignoreNegativeBase := 1; +iBig.iFont.name := defaultfont; +iBig.iFont.scale := 3; + +PictureInfoCopy.iSmall(iPict); +iSmall.boxed := 1; +iSmall.borderColor := green; + +beginfig(1); + EPicture.a(iBig)("yummy"); + EPicture.b(iSmall)("cool"); +% you can still modify a.info +% and b.info if you wish. + + a.nw = (0,0); + b.nw = a.sw + (0,-10); + + drawObjects(a, b) +endfig; + +beginfig(2); + save a, b, c, myFixed; + PictureInfoCopy.myFixed(iPict); + myFixed.ignoreNegativeBase := 1; + myFixed.fixedWidth := 15; + myFixed.fixedHeight := 20; + myFixed.boxed := 1; + + EPicture.a(myFixed)("a"); + EPicture.b(myFixed)(".-."); + EPicture.c(myFixed)("toolong"); + + leftToRight.bottom(10)(a, b, c); + + drawObjects(a, b, c); +endfig; + +beginfig(3); + save a, b, c, myFixed; + PictureInfoCopy.myFixed(iPict); + myFixed.ignoreNegativeBase := 1; + myFixed.bottom := 4.5; + myFixed.valign := "bottom"; + myFixed.halign := "center"; + myFixed.fixedWidth := 25; + myFixed.fixedHeight := 15; + myFixed.boxed := 1; + + EPicture.a(myFixed)("a"); + EPicture.b(myFixed)("yum"); + EPicture.c(myFixed)("b"); + + leftToRight.bottom(10)(a, b, c); + + drawObjects(a, b, c); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/picture_stack.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/picture_stack.mp new file mode 100644 index 00000000000..ee6e09104b7 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/picture_stack.mp @@ -0,0 +1,44 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input boxes; +input util_commons; +input util_object; +input util_picture; +input util_group; +input util_picture_stack; + +beginfig(1); + iStack.boxed := 1; + iStack.iPict.boxed := 1; + PictureStack.myStack("foo", + "bar: int" infont "tyxtt", + "cool-man-centered" infont defaultfont, + "nice")("vcenter"); + + myStack.nw = (0,0); + drawObject(myStack); +endfig; + +beginfig(2); +endfig; + +beginfig(3); +endfig; + + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/positioning.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/positioning.mp new file mode 100644 index 00000000000..f98de47182f --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/positioning.mp @@ -0,0 +1,139 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; + +beginfig(1); + Class.A("A")()(); + Class.B("B")()(); + Class.C("C")()(); + Class.Base("Base")()(); + + + A.ne = B.nw - (20,0); + B.ne = C.nw - (20,0); + Base.s = B.n + (0,20); + + drawObjects(Base, A, B, C); +endfig; + +beginfig(2); + save A, B, C, Base; + + Class.A("A")()(); + Class.B("B")()(); + Class.C("C")()(); + Class.Base("Base")()(); + + leftToRight(20)(A, B, C); + topToBottom(20)(Base, B); + + drawObjects(Base, A, B, C); +endfig; + +iPict.boxed := 1; +spacing := 5; +string strA, strB, strC; +strA := "a"; +strB := "..."; +strC := "Cyan"; + +beginfig(3); + save A, B, C, X, Y, Z; + + Picture.X(strA); + Picture.Y(strB); + Picture.Z(strC); + + leftToRight.top(spacing)(X, Y, Z); + + drawObjects(X, Y, Z); + + draw (X.left, X.top) -- (Z.right, X.top) dashed evenly withpen pencircle withcolor red; +endfig; + +beginfig(4); + save A, B, C, X, Y, Z; + + Picture.X(strA); + Picture.Y(strB); + Picture.Z(strC); + + leftToRight.midy(spacing)(X, Y, Z); + + drawObjects(X, Y, Z); + + draw (X.left, X.midy) -- (Z.right, X.midy) dashed evenly withpen pencircle withcolor red;; +endfig; + +beginfig(5); + save A, B, C, X, Y, Z; + + Picture.X(strA); + Picture.Y(strB); + Picture.Z(strC); + + leftToRight.bottom(spacing)(X, Y, Z); + + drawObjects(X, Y, Z); + + draw (X.left, X.bottom) -- (Z.right, X.bottom) dashed evenly withpen pencircle withcolor red;; +endfig; + +beginfig(6); + save A, B, C, X, Y, Z; + + Picture.X(strA); + Picture.Y(strB); + Picture.Z(strC); + + topToBottom.left(spacing)(X, Y, Z); + + drawObjects(X, Y, Z); + + draw (X.left, X.top) -- (X.left, Z.bottom) dashed evenly withpen pencircle withcolor red;; +endfig; + +beginfig(7); + save A, B, C, X, Y, Z; + + Picture.X(strA); + Picture.Y(strB); + Picture.Z(strC); + + topToBottom.midx(spacing)(X, Y, Z); + + drawObjects(X, Y, Z); + + draw (X.midx, X.top) -- (X.midx, Z.bottom) dashed evenly withpen pencircle withcolor red;; +endfig; + +beginfig(8); + save A, B, C, X, Y, Z; + + Picture.X(strA); + Picture.Y(strB); + Picture.Z(strC); + + topToBottom.right(spacing)(X, Y, Z); + + drawObjects(X, Y, Z); + + draw (X.right, X.top) -- (X.right, Z.bottom) dashed evenly withpen pencircle withcolor red;; +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/properties.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/properties.mp new file mode 100644 index 00000000000..94f71d772ea --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/properties.mp @@ -0,0 +1,58 @@ +% Sample MetaUML figures. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +input metauml; + +beginfig(1); + Class.Test("Test")("a1","a2","a3")("aLongMethod():void"); + + Test.nw = (0,0); + Class_draw.Test; + + dotlabel.ulft(btex nw etex, Test.nw); + dotlabel.top(btex n etex, Test.n); + dotlabel.urt(btex ne etex, Test.ne); + dotlabel.rt(btex e etex, Test.e); + dotlabel.lrt(btex se etex, Test.se); + dotlabel.bot(btex s etex, Test.s); + dotlabel.llft(btex sw etex, Test.sw); + dotlabel.lft(btex w etex, Test.w); + + dotlabel.lft(btex c etex, Test.c); + + draw Test.nw - (50,0) -- Test.ne + (10,0); + label.urt(btex top etex, Test.nw - (50,0)); + + draw Test.sw - (50,0) -- Test.se + (10,0); + label.lrt(btex bottom etex, Test.sw - (50,0)); + + draw Test.nw + (0,10) -- Test.sw - (0, 50); + label.bot(btex left etex, Test.sw - (0,50)); + + draw Test.ne + (0,10) -- Test.se - (0, 50); + label.bot(btex right etex, Test.se - (0,50)); + + drawarrow Test.nw - (25,0) -- Test.sw - (25,0); + label.lft(btex height etex, .5[Test.nw, Test.sw] - (25,0)); + + drawarrow Test.sw - (0,25) -- Test.se - (0,25); + label.bot(btex width etex, .5[Test.sw, Test.se] - (0,25)); +endfig; + + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/state.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/state.mp new file mode 100644 index 00000000000..77c7691a9a2 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/state.mp @@ -0,0 +1,55 @@ +% Sample MetaUML figures. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +input metauml; + +beginfig(1); + State.s("Take order")(); + drawObject(s); +endfig; + +beginfig(2); + Begin.b; + End.e; + State.c("Component")(); + State.composite("Composite")(b, e, c); + + b.midx = e.midx = c.midx; + c.top = b.bottom - 20; + e.top = c.bottom - 20; + + composite.info.drawNameLine := 1; + drawObject(composite); + + link(transition)(b.s -- c.n); + link(transition)(c.s -- e.n); +endfig; + +beginfig(3); + save s; + State.s("An interesting state", + "which is worth mentioning")(); + stateTransitions.s( + "OnEntry / Open eyes", + "OnExit / Sleep well"); + s.info.drawNameLine := 1; + + drawObject(s); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/statemachine_diagrams.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/statemachine_diagrams.mp new file mode 100644 index 00000000000..ff93a74dd5d --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/statemachine_diagrams.mp @@ -0,0 +1,78 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +% for f in `find . | grep '.*\.[1-9]'`; do echo $f; done + +input metauml; + +beginfig(1); + Begin.b; + State.on("On")(); + State.off("Off")(); + End.e; + + setObjectJoin(pb.w = pa.e + (20,0)); + joinObjects(b, on, off, e); + drawObjects(b, on, off, e); + + clink(transition)(b, on); + clink(transition)(on, off); + clink(transition)(off, e); +endfig; + +beginfig(2); + save b, reading, processing, e, exit; + + Begin.b; + State.reading("Commands read")(); + State.processing("Processing commands")(); + End.e; + setObjectJoin(pb.n = pa.s + (0, -20)); + joinObjects(b, reading, processing, e); + + State.composite("Work")(b, reading, processing, e); + drawObject(composite); + + clink(transition)(b, reading); + clink(transition)(reading, processing); + clink(transition)(processing, e); + + ExitPoint.exit; + exit.c=(composite.right, reading.midy); + drawObject(exit); + item(iAssoc)("error")(obj.nw = exit.s); + + clink(transition)(reading, exit); + + State.error("Prepare error report")(); + State.result("Display result")(); + End.theEnd; + + error.midx = result.midx = theEnd.midx = composite.right + 90; + error.midy = exit.midy; + result.midy = processing.midy; + theEnd.midy = e.midy; + drawObjects(error, result, theEnd); + + clink(transition)(exit, error); + clink(transition)(error, result); + clink(transition)(result, theEnd); + + link(transition)(rpathHorizontal(result.w, composite.right)); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_activity.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_activity.mp new file mode 100644 index 00000000000..841bdb8a312 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_activity.mp @@ -0,0 +1,46 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; + +beginfig(1); + Begin.b; + End.e; + + e.n = (30,30); + drawObject(b); + show "Object b drawn"; + drawObject(e); + + link(associationUni)(pathCut(b,e)(b.c--e.c)); +endfig; + +beginfig(2); + EActivity.act(iActivity)("go to school", "while singing"); + drawObject(act); + + Branch.br; + br.nw = (50,50); + drawObject(br); + + Fork.fork("h",30); + fork.nw = (30,70); + drawObject(fork); +endfig; + +end + diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_class.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_class.mp new file mode 100644 index 00000000000..94e1fdc130a --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_class.mp @@ -0,0 +1,156 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; + +beginfig(0); + show "Copying class info..."; + ClassInfoCopy.foo(iClass); +endfig; + +beginfig(1); + Class.A("A")()(); + Class_setDebugMode.A; + + A.nw=(0,0); + Class_draw.A; +endfig; + +beginfig(2); + save B; + Class.B("B")("+ a:int")(); + Class_setDebugMode.B; + + B.nw=(0,0); + Class_draw.B; +endfig; + +beginfig(3); + save C; + Class.C("C")("+ a-#~+:int", "- b-#~+:int", "- g-#~+:int", "~ c-#~+:int", "# g-#~+:double")(); + Class_setDebugMode.C; + + C.nw=(0,0); + Class_draw.C; +endfig; + +beginfig(4); + save D; + Class.D("D") + ("+ a-#~+:int", "- b-#~+:int", "- g-#~+:int", "~ c-#~+:int", "# g-#~+:double") + ("+ a()-#~+:int", "- b()-#~+:int", "- g()-#~+:int", "~ c()-#~+:int", "# g()-#~+:double"); + Class_setDebugMode.D; + + D.nw=(0,0); + Class_draw.D; +endfig; + +beginfig(5); + save P, Q; + + Class.P("AAA")()(); + Class_stereotypes.P("ooo", "home", "interface"); + Class_setDebugMode.P; + P.nw=(0,0); + Class_draw.P; + + Class.Q("AAA")()(); + Class_stereotypes.Q("ooo", "home", "interface"); + Q.nw=P.ne + (20,0); + Class_draw.Q; +endfig; + +beginfig(6); + save A; + + Class.A("User6")()(); + Class_stereotypes.A("<>","<>"); + A.nw=(0,0); + drawObject(A); +endfig; + +beginfig(7) + save A; + Class.A("User7")()(); + A.info.iMethodStack.left := A.info.iMethodStack.right := 50; + A.info.iMethodStack.top := A.info.iMethodStack.bottom := 20; + + drawObject(A); +endfig; + +beginfig(8) + save inter; + EClass.inter(iInterface)("Observer")()("+update(src: Object)"); + drawObjects(inter); +endfig; + +beginfig(9) + save inter; + EInterface.inter(iInterface)("Observer")("+update(src: Object)"); + drawObjects(inter); +endfig; + +beginfig(10) + save inter; + Interface.inter("Observer")("+update(src: Object)"); + drawObjects(inter); +endfig; + +beginfig(11) + save A; + EClass.A(iAbstractClass)("AbstractClass")("[]{}")("+update(src: Object)"); + drawObjects(A); +endfig; + +beginfig(12) + save A; + AbstractClass.A("AbstractClass")("[]{}")("+update(src: Object)"); + drawObjects(A); +endfig; + +beginfig(13) + save A; + EClass.A(iClassNameOnly)("AClassWithNoCompartments")()(); + drawObjects(A); +endfig; + +beginfig(14) + save A; + ClassName.A("AnotherClass"); + drawObjects(A); +endfig; + +beginfig(15) + save A; + ClassName.A("AnotherClass"); + classStereotypes.A("<>","<>"); + + drawObjects(A); +endfig; + +beginfig(16); + save A, B, C; + + Class.A("Foo") + ("+a: int", "-b: int", "#c: int", "d: int") + ("+x()", "-y()", "#z()", "t()"); + Class_noVisibilityMarkers.A; + + drawObjects(A); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_class_feature_types.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_class_feature_types.mp new file mode 100644 index 00000000000..f35c0b7b685 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_class_feature_types.mp @@ -0,0 +1,53 @@ +% Copyright 2015 Ovidiu Gheorghies +% Licensed under the Apache License, Version 2.0. + +input metauml; + +beginfig(1); + if not metauml_private_isAbstract(abstract "foo"): + 1 = 2; + fi; + + if metauml_private_isAbstract("@abstracp"): + 1 = 2; + fi; +endfig; + +beginfig(2); + if not metauml_private_isStatic(static "bar"): + 1 = 2; + fi; + + if metauml_private_isStatic("@statique"): + 1 = 2; + fi; +endfig; + +beginfig(3); + Class.A("A") + ("+a:int+", static "+b:int") + ("+f+():int", static "+g+():int", abstract "+h():int"); + Class_setDebugMode.A; + drawObjects(A); +endfig; + +beginfig(4); + save A; + Class.A("A") + (static "-instanceCount:int") + (static "+getInstanceCount():int", abstract "+work()"); + drawObjects(A); +endfig; + +beginfig(5); + save A, B; + Class.A("A")()(); + Class.B(abstract "B")()(); + Class.C("C")()(abstract "foo()"); + + leftToRight(5)(A, B, C); + + drawObjects(A, B, C); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_class_qual_assoc.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_class_qual_assoc.mp new file mode 100644 index 00000000000..735bba19e0d --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_class_qual_assoc.mp @@ -0,0 +1,53 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; + +beginfig(1); + save P,qa; + + Class.P("Person")()(); + QualifiedAssociation.qa("accountNumber:int", "foo: id"); + + P.nw = (0,0); + qa.n = P.s; + + + P.info.iName.left := 35; + P.info.iName.right := 35; + drawObjects(P); + + drawObject(qa); +endfig; + +beginfig(2); + save P,qa; + + Class.P("Person")()(); + QualifiedAssociation.qa("accountNumber:int", "foo: id", "foolang"); + + P.nw = (0,0); + qa.w = P.e; + + P.info.shade := 0; + P.info.iMethodStack.top := 20; + drawObjects(P); + + drawObject(qa); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_class_templates.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_class_templates.mp new file mode 100644 index 00000000000..c3fc50209c8 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_class_templates.mp @@ -0,0 +1,62 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; + +beginfig(1); + save P,template; + + Class.P("Person")()(); + Template.template("foo", "bar"); + + drawObjectAt(P)(P.nw=(0,0)); + + Template_attachToClass.template(P); + drawObject(template); +endfig; + +beginfig(2); + save P,template; + + Class.P("Person")()(); + Template.template("foo: int"); + Template_attachToClass.template(P); + + drawObjectAt(P)(P.nw=(0,0)); + drawObject(template); +endfig; + +beginfig(3); + save CA, TA, CB, TB, CC, TC; + Class.CA("VeryVeryLongClassName")()(); + ClassTemplate.TA("int foo")(CA); + + Class.CB("Shortie")("abracadabra: long long int")(); + ClassTemplate.TB("T")(CB); + + Class.CC("Shortie")("abracadabra: long long int")(); + ClassTemplate.TC("TrulyAmazingLongTypename")(CC); + + CA.s = CB.n + (0,14); + CB.s = CC.n + (0,14); + + drawObjects(CA, TA, CB, TB, CC, TC); +endfig; + + + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_component.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_component.mp new file mode 100644 index 00000000000..94d866c7532 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_component.mp @@ -0,0 +1,30 @@ +input metauml; +input metauml_component; +input metauml_component_relations; + +beginfig(1); + Class.classA("Class A")()(); + Class.classB("Class B")()(); + + Component.compA("Component A")(); + Component.compB("Component B")(); + Component.compC("Component C")(compA, compB, classA, classB); + + compB.w = compA.e + (40, 0); + classA.w = compB.e + (20, 0); + classB.w = classA.e + (20, 0); + + drawObjects(compC); + + path open; + open := compA.e .. compA.e + (20, 0); + path close; + + close := compB.w .. compA.e + (20, 0); + + link(requiredInterface)(open); + + link(providedInterface)(close); +endfig; + +end \ No newline at end of file diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_font.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_font.mp new file mode 100644 index 00000000000..21e748a4f74 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_font.mp @@ -0,0 +1,81 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; + +string theFont; + +beginfig(1); + theFont := "pcrr"; + + boxjoin(a.sw=b.nw); + + boxit.ff(("Font name: ( ) " & theFont) infont theFont); + boxit.s0("<> text with guillemets. ><>><<" infont theFont ); + boxit.s1("<>, <>, <>" infont theFont); + boxit.s2("[g uard] text with square brackets []]." infont theFont); + boxit.s3("{c onstraint} text with curly brackets {}}." infont theFont); + + drawboxed(ff, s0, s1, s2, s3); +endfig; + +beginfig(2); + save ff,s,g,c; + theFont := "tyxbtt"; + + boxjoin(a.sw=b.nw); + + boxit.ff(("Font name: ( ) " & theFont) infont theFont); + boxit.s0("<> text with guillemets. ><>><<" infont theFont ); + boxit.s1("<>, <>, <>" infont theFont); + boxit.s2("[g uard] text with square brackets []]." infont theFont); + boxit.s3("{c onstraint} text with curly brackets {}}." infont theFont); + + drawboxed(ff, s0, s1, s2, s3);endfig; + +beginfig(3); + picture pA, pB, pC; + string sA, sB, sC; + sA := "assembleElementLocalMatrix(k: KeyType, mat: LocalMatrixType, a: AssembleAction)"; + sB := "assembleElementLocalMatri(k: KeyType, mat: LocalMatrixType, a: AssembleAction)"; + sC := "assembleElntLocalMatri(k: KeyType, mat: LocalMatrixType, a: AssembleAction)"; + + pA := sA infont "tyxbtt"; + pB := sB infont "tyxbtt"; + pC := sC infont "tyxbtt"; + + draw pA; + draw pB shifted (0,-20); + draw pC shifted (0,-40); +endfig; + +beginfig(4); + save ff,s,g,c; + theFont := "ptmr8r"; + + boxjoin(a.sw=b.nw); + boxit.ff(("Font name: ( ) " & theFont) infont theFont); + + boxit.s0("<> text with guillemets. ><>><<" infont theFont ); + boxit.s1("<>, <>, <>" infont theFont); + boxit.s2("[g uard] text with square brackets []]." infont theFont); + boxit.s3("{c onstraint} text with curly brackets {}}." infont theFont); + + drawboxed(ff, s0, s1, s2, s3); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_group.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_group.mp new file mode 100644 index 00000000000..17265c458b2 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_group.mp @@ -0,0 +1,60 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; + +beginfig(1); + save p,q,r,t,g; + + EPicture.p(iPictBoxed)("p0"); + EPicture.q(iPictBoxed)("p1"); + p.se = q.nw; + + string f; + f= enumToString(p,q)(""); + show "f=" & f; + + EGroup.g(iGroup)(p,q); + g.nw = (0,0); + + drawObject(g); +endfig; + +beginfig(2); + save g,h,p,gg; + + Group.g(); + g.info.boxed := 1; + g.nw = (30,30); + drawObject(g); + + Picture.p("Test picture in group"); + p.info.boxed := 1; + Group.h(p); + h.info.boxed := 1; + h.nw = (0,0); + drawObject(h); + + Picture.v0("s"); v0.info.boxed := 1; + Picture.v1("s"); v1.info.boxed := 1; + v1.nw = v0.se + (10,10); + Group.gg(v0, v1); gg.info.boxed := 1; + gg.nw = (70,70); + drawObject(gg); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_instance.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_instance.mp new file mode 100644 index 00000000000..d01ff8452e2 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_instance.mp @@ -0,0 +1,35 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Radu-George Radulescu +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; + +beginfig(1); + Instance.A(":Foo")("int: val1", "bool: val2"); + Instance.B(":Bar")("very long text for testing purposes"); + Instance.C("s: Student")("line1", "line2", "line3", "line4", "line5"); + Instance.D("Example")("small"); + Instance.E("g: Yummy")("{placed}", "{color=red}"); + + B.w = A.e + (20, 0); + C.n = A.s - (0, 20); + D.w = C.e + (20, 0); + E.w = D.e + (20, 0); + + drawObjects(A, B, C, D, E); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_lars_issues.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_lars_issues.mp new file mode 100644 index 00000000000..428d7b41445 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_lars_issues.mp @@ -0,0 +1,94 @@ +input metauml; + +numeric u; +u = 1.3cm; + +beginfig(1); + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Class.ElLocSysAcc("ElementLocalSystemAcceptor") +() +("+startElementAssebly()", + "+assembleElementLocalMatrix(k: KeyType, mat: LocalMatrixType, a: AssembleAction)", + "+assembleElementLocalRHS(k: KeyType, rhs: LocalRHSType, a: AssembleAction)", + "+endElementAssembly()"); + +classStereotypes.ElLocSysAcc("<>"); +ClassTemplate.TEl("KeyType: typename")(ElLocSysAcc); + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + Class.FaceLocSysAcc("FaceLocalSystemAcceptor") + () + ("+startFaceAssebly()", + "+assembleFaceLocalMatrix(k1: KeyType, k2: KeyType, mat: LocalMatrixType, a: AssembleAction)", + "+assembleFaceLocalRHS(k: KeyType, rhs: LocalRHSType, a: AssembleAction)", + "+endFaceAssembly()"); + + classStereotypes.FaceLocSysAcc("<>"); + ClassTemplate.TFa("KeyType: typename")(FaceLocSysAcc); + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + Class.SolProvider("SolutionProvider") + () + ("+startSortBack()", + "+getLocalSolution(k: KeyType, sol: LocalSolutionType)", + "+endSortBack()"); + + classStereotypes.SolProvider("<>"); + ClassTemplate.TSol("KeyType: typename")(SolProvider); + +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + % now inherit from these for LapackMatrixSorter + Class.LapackMS("LapackMatrixSorter") + ("-indMan: IndexManager", + "-A: LaGenMatDouble&", + "-x: LaVectorDouble&", + "-b: LaVectorDouble&" + ) + ("+startElementAssembly()"); + + ClassTemplate.TLap("KeyType: typename", "IndexManager: class")(LapackMS); + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% where to draw these: +FaceLocSysAcc.nw = ElLocSysAcc.ne + (1.5u, 0); +SolProvider.nw = FaceLocSysAcc.ne + (1.5u, 0); +LapackMS.n = FaceLocSysAcc.s + (0, -3u); + +drawObjects(ElLocSysAcc, TEl, FaceLocSysAcc, TFa, + SolProvider, TSol, LapackMS, TLap); + +% 50: how much should the path raise upwards before making a horizontal turn. +link(inheritance)(pathStepY(LapackMS.n, FaceLocSysAcc.s, 50)); +link(inheritance)(pathStepY(LapackMS.n, SolProvider.s, 50)); +link(inheritance)(pathStepY(LapackMS.n, ElLocSysAcc.s, 50)); + +endfig; + +beginfig(2); + Begin.b; + Activity.A("Activity A", "on line two"); + Activity.B("Activity B"); + End.e; + + % or other positioning code... + setObjectJoin(pa.s = pb.n + (0,20)); + joinObjects(b, A, B, e); + + % important: first draw the activities + drawObjects(b, A, B, e); + + % you can now draw the transitions + clink(transition)(b, A); + clink(transition)(A, B); + link(transition)(pathStepX(B.e, e.e, 30)); + + item(iGuard)("guard")(obj.sw = .5[b.s, A.n]); +endfig; + +end; diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_lowlevel.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_lowlevel.mp new file mode 100644 index 00000000000..952da34f482 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_lowlevel.mp @@ -0,0 +1,66 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; +input util_infrastructure; + +beginfig(1); + show "Lowlevel test"; + %string foo; + %foo := var_instruction(numeric) x, y; + %show foo; + %foo := foo & ";"; + %show foo; + attributes(foo); + _n_ := "foo"; + %scantokens foo; + %string x; + %x := str(numeric); + var(numeric) x; + + label.top("nothing shown (intentionally)", (0,0)); +endfig; + +vardef _foo@#= + attributes(@#); + var(string) @#a[]; + @#a[0] := "fpp"; + @#a[1] := "gqq"; +enddef; + +% _foo.b; % not working + +vardef _bar@#(text s)= + attributes(@#); + var(string) elements; + @#elements := enumToString(s)(""); +enddef; + +beginfig(2); + for f = scantokens "a, b, c": + show f; + endfor; + _bar.xx(a, b, c, d); + show xx.elements; + for f = scantokens xx.elements: + show f; + endfor; + label.top("nothing shown (intentionally)", (0,0)); +endfig; + +end + diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_note.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_note.mp new file mode 100644 index 00000000000..bf8c1aeb2fa --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_note.mp @@ -0,0 +1,39 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml_note; +input metauml_base; +input metauml_paths; +input metauml_links; +input metauml_class_relations; + +beginfig(1); + Note.foo("This is the first line", "and this the second one."); + drawObject(foo); +endfig; + +beginfig(2); + save foo; + Note.foo("Please disregard this note."); + Note.bar("Please take the other note", "very seriously."); + + bar.s = foo.n + (10,20); + drawObjects(foo, bar); + clink(dashedLink)(foo, bar); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_package.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_package.mp new file mode 100644 index 00000000000..6d4f97ea9f8 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_package.mp @@ -0,0 +1,54 @@ +input metauml; +input metauml_package; +input metauml_package_relations; + +beginfig(1); + Package.emptyPackage("")(); + + Package.nameOnlyPackage("java.sun.com")(); + + Class.oneClass("A class")()(); + Package.oneClassPackage("One class package")(oneClass); + + Instance.oneInstance("An instance")(); + State.oneState("A state")(); + Activity.oneActivity("An activity"); + Package.multiPackage("Multipackage")(oneInstance, oneState, oneActivity); + + Package.allPackage("This package contains them all")(emptyPackage, nameOnlyPackage, + oneClassPackage, multiPackage); + + nameOnlyPackage.nw = emptyPackage.ne + (30, 0); + oneClassPackage.ne = emptyPackage.s - (0, 50); + + multiPackage.top = oneClassPackage.top; + multiPackage.left = oneClassPackage.right + 20; + + centered_align_top(oneState, oneActivity)(10, below(oneInstance.s, 20)); + + drawObjects(allPackage); +endfig; + +beginfig(2); + Package.nameOnlyOnTopPackage("Name on top")(); + nameOnlyOnTopPackage.info.forceEmptyContent := 1; + Package.nameOnlyInMiddlePackage("By default, the name", "is in the middle")(); + + Class.cl("A class")("Attribute")("Method"); + Package.notEmptyPackage("Contains class")(cl); + + nameOnlyInMiddlePackage.n = nameOnlyOnTopPackage.s - (0, 40); + notEmptyPackage.w = nameOnlyInMiddlePackage.e + (80, 0); + drawObjects(nameOnlyOnTopPackage, nameOnlyInMiddlePackage, notEmptyPackage); + + %link(import)(pathStepX(notEmptyPackage.w, nameOnlyOnTopPackage.e, -30)); + %link(import)(pathVertical(nameOnlyInMiddlePackage.ne - (10, 0), nameOnlyOnTopPackage.bottom)); + %link(import)(notEmptyPackage.sw -- nameOnlyInMiddlePackage.ne); +endfig; + +beginfig(3); + link(nest)((10,10)--(30,30)); +endfig; + + +end \ No newline at end of file diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_paths.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_paths.mp new file mode 100644 index 00000000000..eedd11a9b08 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_paths.mp @@ -0,0 +1,100 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; + +iPict.boxed := 1; + +beginfig(1); + iClass.shade := 3; + Class.F("Foo")("a: int","b: int")(); + Class.B("Bar")()(); + + B.nw = F.ne + (20,-20); + + drawObjects(B, F); + + link(association)(B.nw -- F.ne); + + draw objectBorder(B) withcolor red; + draw objectBorder(F) withcolor blue; + + link(association)(pathCut(B,F)(B.c--F.c)); +endfig; + +beginfig(2); + save A, B; + + Picture.A("A"); + Picture.B("Blue"); + + B.sw = A.ne + (20,20); + + drawObjects(A, B); + + link(associationUni)(pathManhattanX(A.e, B)); +endfig; + +beginfig(3); + save A, B, C, D, O; + + Picture.A("Alpha"); + Picture.B("Beta"); + Picture.C("Gamma"); + Picture.D("Delta"); + Picture.O("Omega"); + + A.c = O.c + (-50,50); + B.c = O.c + (50,50); + C.c = O.c + (-50,-50); + D.c = O.c + (50,-50); + + drawObjects(O, A, B, C, D); + + link(associationUni)(pathManhattanX(O, A)); + link(associationUni)(pathManhattanX(O, B)); + link(associationUni)(pathManhattanX(O, C)); + link(associationUni)(pathManhattanX(O, D)); +endfig; + +beginfig(3); + show ""; + show ""; + show " FIGURE 3"; + + save A, B, C, D, O; + + Picture.A("Alpha"); + Picture.B("Beta"); + Picture.C("Gamma"); + Picture.D("Delta"); + Picture.O("Omega"); + + A.c = O.c + (-50,50); + B.c = O.c + (50,50); + C.c = O.c + (-50,-50); + D.c = O.c + (50,-50); + + drawObjects(O, A, B, C, D); + + link(associationUni)(pathManhattanX(O, A)); + link(associationUni)(pathManhattanX(O, B)); + link(associationUni)(pathManhattanX(O, C)); + link(associationUni)(pathManhattanX(O, D)); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_picture.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_picture.mp new file mode 100644 index 00000000000..7a56236e825 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_picture.mp @@ -0,0 +1,273 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; + +string theFont; +theFont := "tyxbtt"; + +beginfig(1); + draw "xxx" infont defaultfont scaled defaultscale shifted (0,0); + draw "yyy" infont (iFont.name) scaled (iFont.scale) shifted (25, 0); + + Picture.p("foo, bar, baz"); + p.nw = (0,0); + drawObject(p); + + Picture.q("qux, norf"); + drawObjectAt(q)( q.nw = (30,30) ); + + FontInfo.foo("tyxbtt", 1); + PictureInfo.iNice(3,6,5,10)(foo); + iNice.boxed := 1; + + EPicture.myPic(iNice)("Custom iPicture"); + drawObjectAt(myPic)( myPic.nw = (70,0)); +endfig; + +beginfig(2); + save p, q, r, t; + + Picture.p("foo"); + Picture.q("bar"); + p.nw = (10, 10); + q.nw = (20, 20); + + drawObject(p); + drawObject(q); + + drawObjects(p, q); + + Picture.a0("root" infont defaultfont); + Picture.a1("toof"); + + a[0].nw = (30, 30); + a[1].nw = (50, 50); + + drawObjects(scantokens listArray(a)(2)); +endfig; + +beginfig(3); + save p, q, r, t, u, pp; + + bboxmargin := 0; + + picture pp; + pp = "a" infont theFont; + Picture.p(pp); + Picture.q("foo" infont theFont); + Picture.r("bar" infont theFont); + Picture.t("baz"); + Picture.u("norf" infont theFont); + + p.nw = (0,0); + setObjectJoin(pa.left=pb.left; pa.bottom = pb.top + 1); + joinDrawObjects(p, q, r, t, u); + + defaultdy:=0; + boxjoin(a.sw=b.nw; a.se=b.ne); + boxit.A0("foo1"); + boxit.A1("bar1"); + boxit.A2("baz2"); + boxit.A3("norf2"); + boxit.A4(".."); + A0.nw=(50,0); + drawboxed(A0,A1,A2,A3,A4); + + myy := 10; + + bboxmargin := 0; + + pair p; + p := (30,myy); + dotlabel.lrt(".", p); + picture x; + x := "f: int" infont theFont; + draw bbox(x) shifted p; + draw x shifted p; + + pair q; + q := (70,myy); + dotlabel.lrt(".", q); + picture y; + y := "goofy: int" infont theFont; + draw bbox(y) shifted q; + draw y shifted q; + + pair qq; + qq := (135,myy); + dotlabel.lrt(".", qq); + picture y; + y := "goot" infont theFont; + draw bbox(y) shifted qq; + draw y shifted qq; + + draw (0,myy)--(150, myy) dashed evenly; + + myyb := 30; + Picture.aa(btex goof etex); + aa.sw = (30, myyb); + Picture_draw.aa; + + draw (0,myyb)--(100, myyb) dashed evenly; +endfig; + +beginfig(4); + save a, b; + FontInfo.myFont(theFont, 1); + PictureInfo.myWay(0,0,0,0)(myFont); + myWay.boxed := 1; + + EPicture.a0(myWay)("goof"); + EPicture.a1(myWay)("Aoorian"); + EPicture.a2(myWay)("fpp"); + EPicture.a3(myWay)("f: int"); + EPicture.a4(myWay)("aa()"); + + a0.nw = (0,0); + setObjectJoin(pa.bottom = pb.bottom; pa.right = pb.left - 10); + joinDrawObjects(scantokens listArray(a)(5)); + + draw a0.sw -- a4.se withcolor black dashed evenly; + + myWay.ignoreNegativeBase := 1; + EPicture.b0(myWay)("foo"); + EPicture.b1(myWay)("Bar baz"); + EPicture.b2(myWay)("qux"); + EPicture.b3(myWay)("f: int"); + EPicture.b4(myWay)("aa()"); + + b0.nw = (0,-20); + setObjectJoin(pa.bottom = pb.bottom; pa.right = pb.left - 10); + joinDrawObjects(scantokens listArray(b)(5)); + + draw b0.sw -- b4.se withcolor black dashed evenly; +endfig; + +beginfig(5); + truecorners := 1; + bboxmargin := 0; + save p; + picture basepict; + basepict := "<>" infont "tyxtt"; + + draw basepict; + draw bbox basepict; +endfig; + +beginfig(6); + item.foo(iPictBoxed)("foo bar baz")(foo.nw = (0,0)); + item.bar(iPict)("x: int")(bar.nw = (20,20)); + + aitem(iPictBoxed)("an anounymous item")(obj.nw = (40,10)); +endfig; + +beginfig(7); + save a, b, c, d, e, myFixed; + PictureInfoCopy.myFixed(iPict); + myFixed.ignoreNegativeBase := 1; + myFixed.fixedWidth := 20; + myFixed.boxed := 1; + + EPicture.a(myFixed)("a"); + EPicture.b(myFixed)("bar"); + EPicture.c(myFixed)(".-."); + EPicture.d(myFixed)("baz"); + EPicture.e(myFixed)("qux norf"); + + leftToRight.bottom(20)(a, b, c, d, e); + + drawObjects(a, b, c, d, e); +endfig; + +beginfig(8); + save a, b, c, d, e, myFixed; + PictureInfoCopy.myFixed(iPict); + myFixed.halign := "center"; + myFixed.ignoreNegativeBase := 1; + myFixed.fixedWidth := 20; + myFixed.boxed := 1; + + EPicture.a(myFixed)("a"); + EPicture.b(myFixed)("bar"); + EPicture.c(myFixed)(".-."); + EPicture.d(myFixed)("baz"); + EPicture.e(myFixed)("qux norf"); + + leftToRight.bottom(20)(a, b, c, d, e); + + drawObjects(a, b, c, d, e); +endfig; + +beginfig(9); + save a, b, c, d, e, myFixed; + PictureInfoCopy.myFixed(iPict); + myFixed.halign := "center"; + myFixed.ignoreNegativeBase := 1; + myFixed.fixedWidth := 20; + myFixed.fixedHeight := 30; + myFixed.boxed := 1; + + EPicture.a(myFixed)("a"); + EPicture.b(myFixed)("bar"); + EPicture.c(myFixed)(".-."); + EPicture.d(myFixed)("baz"); + EPicture.e(myFixed)("qux norf"); + + leftToRight.bottom(20)(a, b, c, d, e); + + drawObjects(a, b, c, d, e); +endfig; + +beginfig(10); + save a, b, c, d, e, myFixed; + PictureInfoCopy.myFixed(iPict); + myFixed.halign := "center"; + myFixed.valign := "center"; + myFixed.ignoreNegativeBase := 1; + myFixed.fixedWidth := 20; + myFixed.fixedHeight := 30; + myFixed.boxed := 1; + + EPicture.a(myFixed)("a"); + EPicture.b(myFixed)("bar"); + EPicture.c(myFixed)(".-."); + EPicture.d(myFixed)("baz"); + EPicture.e(myFixed)("qux norf"); + + leftToRight.bottom(20)(a, b, c, d, e); + + drawObjects(a, b, c, d, e); +endfig; + +beginfig(11); + save a, b, c; + Picture.a("goo"); + a.info.textDecoration := "underline"; + + Picture.b("foo()"); + b.info.textDecoration := "underline"; + + Picture.c("x"); + c.info.textDecoration := "underline"; + + topToBottom(5)(a, b, c); + + drawObjects(a, b, c); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_picture_stack.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_picture_stack.mp new file mode 100644 index 00000000000..8ad4776fa44 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_picture_stack.mp @@ -0,0 +1,130 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; + +string theFont; +theFont := "tyxtt"; + +util_log_thresholdlevel := 100; + +beginfig(1); + PictureStackInfoCopy.stackWay(iStack); + + EPictureStack.emptyStack(stackWay)()("vcenter"); + emptyStack.nw=(10,10); + drawObject(emptyStack); +endfig; + +beginfig(2); + PictureStack.myStack("foo")("vcenter"); + myStack.nw = (0,0); + PictureStack_draw.myStack; +endfig; + +beginfig(3); + PictureStack.myStackB("foo", "bar")("vcenter"); + myStackB.nw = (0,0); + PictureStack_draw.myStackB; +endfig; + +beginfig(4); + % 1 + PictureStack.stack("item A", "item B long", "C")("vcenter"); + stack.info.boxed := 1; + stack.info.iPict.boxed := 1; % this does nothing, it's too late + + stack.nw = (0,0); + drawObject(stack); + + % 2 + PictureStack.stackb("item A", "item B long", "C")("vcenter"); + stackb.info.boxed := 1; + stackb.pict[0].info.boxed := 1; + stackb.pict[2].info.boxed := 1; + + stackb.nw = (100,0); + drawObject(stackb); + + % 3 + PictureStackInfoCopy.myInfo(iStack); + myInfo.boxed := 1; + myInfo.iPict.boxed := 1; + EPictureStack.stackc(myInfo)("item A", "item B long", "C")("vcenter"); + + stackc.nw = (200,0); + drawObject(stackc); +endfig; + +beginfig(5); + vardef joinCallback= enddef; + PictureStack.custom("A.A", "B__________B", "C-----C") + ("joinCallback"); + + drawObject(custom); +endfig; + +beginfig(6); + save custom; + + pickup pencircle scaled 4pt; + drawdot origin; + + vardef joinCallbackA= + setObjectJoin(pa.bottom = pb.top + index*10; pa.left = pb.left); + setObjectJoinFirst(pa.nw = (30,0)); + enddef; + + PictureStack.customA("go", "further", "and further", "and further still") + ("joinCallbackA"); + + vardef joinCallbackB= + setObjectJoin(pb.bottom = customA.pict[index].bottom; pb.midx = pa.midx); + setObjectJoinFirst(pa.bottom = customA.pict[index].bottom); + enddef; + + PictureStack.customB(".", "..", "...", "....") + ("joinCallbackB"); + + drawObjects(customA, customB); +endfig; + +beginfig(7); + save stackX; + save stylePA, stylePB; + save stylePictureStack; + + PictureInfoCopy.stylePA(iPict); + stylePA.borderColor := green; + stylePA.boxed := 1; + + PictureInfoCopy.stylePB(iPict); + stylePB.borderColor := red; + stylePB.boxed := 1; + + PictureStackInfoCopy.stylePictureStack(iStack); + + def styleSupplier(expr i)= if i mod 2 = 0: stylePA else: stylePB fi enddef; + + stylePictureStack.childStyleSupplier := "styleSupplier"; + + EPictureStack.stackX(stylePictureStack)("a","b","c","d","e")("vcenter"); + + drawObjects(stackX); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_picture_tex_rendering.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_picture_tex_rendering.mp new file mode 100644 index 00000000000..3c041298699 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_picture_tex_rendering.mp @@ -0,0 +1,43 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; + +input TEX; + +beginfig(1); + PictureInfoCopy.myP(iPict); + myP.boxed := 1; + myP.ignoreNegativeBase := 1; + + EPicture.p(myP)( TEX("Hello, world $x=7$") ); + + PictureStackInfoCopy.myPS(iStack); + myPS.boxed := 1; + myPS.iPict.boxed := 1; + myPS.iPict.ignoreNegativeBase := 1; + + EPictureStack.ps(myPS)("Hello, world!", + TEX("This is cool: $x=y$."), + TEX("But this is insane: $\sum_1^3 f(x) \over x$!") ) ("vleft"); + + leftToRight(20)(p, ps); + + drawObjects(p, ps); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_positioning.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_positioning.mp new file mode 100644 index 00000000000..66034767716 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_positioning.mp @@ -0,0 +1,195 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; + +iPict.boxed := 1; +spacing := 5; +string strA, strB, strC; +strA := "a"; +strB := "..."; +strC := "XYZ"; + +beginfig(1); + save A, B, C, X, Y, Z; + + Picture.A(strA); + Picture.B(strB); + Picture.C(strC); + + align(top, left, right)(spacing)("+")(A, B, C); + + drawObjects(A, B, C); + + draw (A.left, A.top) -- (C.right, A.top); + + %%%% + + Picture.X(strA); + Picture.Y(strB); + Picture.Z(strC); + + leftToRight.top(spacing)(X, Y, Z); + + X.top = A.bottom - 10; + + drawObjects(X, Y, Z); + + draw (X.left, X.top) -- (Z.right, X.top); +endfig; + +beginfig(2); + save A, B, C, X, Y, Z; + + Picture.A(strA); + Picture.B(strB); + Picture.C(strC); + + align(midy, left, right)(spacing)("+")(A, B, C); + + drawObjects(A, B, C); + + draw (A.left, A.midy) -- (C.right, A.midy); + + %%%% + + Picture.X(strA); + Picture.Y(strB); + Picture.Z(strC); + + leftToRight.midy(spacing)(X, Y, Z); + + X.top = A.bottom - 10; + + drawObjects(X, Y, Z); + + draw (X.left, X.midy) -- (Z.right, X.midy); +endfig; + +beginfig(3); + save A, B, C, X, Y, Z; + + Picture.A(strA); + Picture.B(strB); + Picture.C(strC); + + align(bottom, left, right)(spacing)("+")(A, B, C); + + drawObjects(A, B, C); + + draw (A.left, A.bottom) -- (C.right, A.bottom); + + %%%% + + Picture.X(strA); + Picture.Y(strB); + Picture.Z(strC); + + leftToRight.bottom(spacing)(X, Y, Z); + + X.top = A.bottom - 10; + + drawObjects(X, Y, Z); + + draw (X.left, X.bottom) -- (Z.right, X.bottom); +endfig; + +beginfig(4); + save A, B, C, X, Y, Z; + + Picture.A(strA); + Picture.B(strB); + Picture.C(strC); + + align(left, top, bottom)(spacing)("-")(A, B, C); + + drawObjects(A, B, C); + + draw (A.left, A.top) -- (A.left, C.bottom); + + %%%% + + Picture.X(strA); + Picture.Y(strB); + Picture.Z(strC); + + topToBottom.left(spacing)(X, Y, Z); + + X.top = C.bottom - 10; + + drawObjects(X, Y, Z); + + draw (X.left, X.top) -- (X.left, Z.bottom); +endfig; + +beginfig(5); + save A, B, C, X, Y, Z; + + Picture.A(strA); + Picture.B(strB); + Picture.C(strC); + + align(midx, top, bottom)(spacing)("-")(A, B, C); + + drawObjects(A, B, C); + + draw (A.midx, A.top) -- (A.midx, C.bottom); + + %%%% + + Picture.X(strA); + Picture.Y(strB); + Picture.Z(strC); + + topToBottom.midx(spacing)(X, Y, Z); + + X.top = C.bottom - 10; + + drawObjects(X, Y, Z); + + draw (X.midx, X.top) -- (X.midx, Z.bottom); +endfig; + +beginfig(6); + save A, B, C, X, Y, Z; + + Picture.A(strA); + Picture.B(strB); + Picture.C(strC); + + align(right, top, bottom)(spacing)("-")(A, B, C); + + drawObjects(A, B, C); + + draw (A.right, A.top) -- (A.right, C.bottom); + + %%%% + + Picture.X(strA); + Picture.Y(strB); + Picture.Z(strC); + + topToBottom.right(spacing)(X, Y, Z); + + X.top = C.bottom - 10; + + drawObjects(X, Y, Z); + + draw (X.right, X.top) -- (X.right, Z.bottom); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_skins.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_skins.mp new file mode 100644 index 00000000000..750cee4e975 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_skins.mp @@ -0,0 +1,26 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; +input metauml_skin_simple; + +beginfig(1); + Class.HelloSkin("HelloSkin")("nice: int")("done(): void"); + drawObject(HelloSkin); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_skins_global_defaults.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_skins_global_defaults.mp new file mode 100644 index 00000000000..aaeffd043b7 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_skins_global_defaults.mp @@ -0,0 +1,29 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +string metauml_defaultFont, metauml_defaultFontLight; +metauml_defaultFont := "cmr12"; +metauml_defaultFontLight := "cmr10"; + +input metauml; + +beginfig(1); + Class.HelloSkinB("HelloSkinGlobal")("foo: int")("bar(): void"); + drawObject(HelloSkinB); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_state.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_state.mp new file mode 100644 index 00000000000..54207507492 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_state.mp @@ -0,0 +1,73 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; + +beginfig(1); + EntryPoint.entry; + ExitPoint.exit; + + entry.nw = (0,0); + exit.nw = (50,50); + + drawObjects(entry, exit); + clink(transition)(entry, exit); +endfig; + +beginfig(2); + EState.myState(iState)("The light is", "visibly on")(); + drawObject(myState); + + State.anotherState("Another nice state")(); + anotherState.info.drawNameLine := 1; + drawObjectAt(anotherState)(anotherState.nw = (0,50)); +endfig; + +beginfig(3); + State.interesting("Interesting state")(); + State_internalTransitions.interesting("OnEntry / doVeryHappy", "OnExit / doSomewhatSad"); + interesting.info.drawNameLine := 1; + + drawObject(interesting); +endfig; + +beginfig(4); + Begin.b; + End.e; + State.sa("A state")(); + State.sb("Another state")(); + setObjectJoin(pb.w = pa.e + (40, 0)); + joinObjects(b, sa, sb, e); + + State.composite("Composite state")(b, e, sa, sb); + drawObject(composite); + + clink(transition)(b, sa); + clink(transition)(sa, sb); + clink(transition)(sb, e); +endfig; + +beginfig(5); +endfig; + +beginfig(6); +endfig; + +beginfig(7); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_usecase.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_usecase.mp new file mode 100644 index 00000000000..32688814cfd --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/test_usecase.mp @@ -0,0 +1,185 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +input metauml; + +HumanInfoCopy.iDwarf(iHuman); +iDwarf.width := 60; +iDwarf.height := 20; +iDwarf.foreColor := blue; +iDwarf.shadeColor := .8blue; + +beginfig(1); + Human.h; + drawObject(h); + draw objectBox(h); + + Human.h1; + h1.n = (35, 0); + h1.info.foreColor := red; + drawObject(h1); + + Human.h2; + h2.info.height := 90; + h2.nw = (50,0); + drawObject(h2); + draw objectBox(h2); + + EHuman.d(iDwarf); + drawObjectAt(d)(d.s = (10,-50)); + + EHuman.d2(iDwarf); + d2.info.shadeColor := red; + drawObjectAt(d2)(d2.s = (10,-80)); +endfig; + +beginfig(2); + save a,b; + + Actor.a("foo"); + drawObject(a); + + Actor.b("Actor line one", "and line two"); + Actor_setDebugMode.b; + b.n = (70,0); + drawObject(b); +endfig; + +beginfig(3); + Usecase.u("foo"); + drawObject(u); + + draw objectBox(u) withpen pencircle scaled .1; + + draw u.n withpen pencircle scaled 2 withcolor red; + draw u.s withpen pencircle scaled 2 withcolor red; + draw u.e withpen pencircle scaled 2 withcolor red; + draw u.w withpen pencircle scaled 2 withcolor red; + + draw u.ulft withpen pencircle scaled 2 withcolor blue; + draw u.urt withpen pencircle scaled 2 withcolor blue; + draw u.llft withpen pencircle scaled 2 withcolor blue; + draw u.lrt withpen pencircle scaled 2 withcolor blue; + + Usecase.login("Log in for an eagerly", "awaiting user", "which spans well into a very long 3rd line."); + login.s = (0, 5); + drawObject(login); + + Usecase.t("Line 1 goo bar", "Line 2"); + t.s = login.n + (0,10); + drawObject(t); + + Usecase.q("Line 1 abcdefg hij", "abcde", "Line 3 abc def ghe jkl", "Line 4 x"); + q.s = t.n + (0,10); + drawObject(q); + +endfig; + +beginfig(4); + Actor.userA("User A2", "line 2", "line 3 long long long"); + % Any Actor object is made of two sub-objects: nameStack and human. + % Each individual picture in the nameStack can be configured individually. + % + % However, it is not possible to configure all the lines in the nameStack at + % once now, saying something like: + % + % userA.nameStack.info.iPict.iFont.scale := 3; + % + % This happens because the information above is copied into the Picture objects + % in the Actor constructor (and it is useless to modify it afterwards). + % + % If you do want to make such global modifications of the settings, see the + % next two examples. + + userA.nameStack.pict[0].info.iFont.scale := 1.2; + userA.nameStack.pict[1].info.iFont.scale := .7; + userA.nameStack.info.borderColor := blue; + userA.nameStack.info.boxed := 1; + userA.nameStack.group.info.left := 30; + userA.nameStack.group.info.right := 5; + userA.human.info.foreColor := red; + + drawObject(userA); + %draw objectBox(userA.nameStack); + %draw objectBox(userA.human); +endfig; + +beginfig(5); + save userA; + % If you want to have preset a info for specific objects + + ActorInfoCopy.iBig(iActor); + + % ActorInfo contains info-s for two objects + % iNameStack: for the stack representing the actor's name + % iHuman: for the little human + + iBig.iNameStack.iPict.iFont.scale := 3; + iBig.iNameStack.spacing := 25; + iBig.iHuman.height := 25; + + EActor.userA(iBig)("User A", "Specifically configured"); + drawObject(userA); +endfig; + +beginfig(6); + save userA; + + iActor.iNameStack.iPict.iFont.scale := 2; + iActor.iNameStack.spacing := 18; + + Actor.userA("User A", "Globally configured"); + drawObject(userA); +endfig; + +beginfig(7); + save usecaseA; + Usecase.usecaseA("A highly customizable", "usecase. Foo bar!"); + usecaseA.info.iNameStack.iPict.iFont.scale := .5; + drawObject(usecaseA); +endfig; + +beginfig(8); + save usecaseA; + Usecase.usecaseA("A highly customizable", "usecase. Foo bar 2!"); + usecaseA.info.iNameStack.iPict.iFont.scale := 1.1; + usecaseA.info.foreColor := red; + usecaseA.info.borderColor := blue; + usecaseA.info.iShade.background := green; + usecaseA.info.iShade.shift := 4; + drawObject(usecaseA); +endfig; + +beginfig(9); + save usecaseA; + UsecaseInfoCopy.iMyUsecase(iUsecase); + iMyUsecase.iNameStack.iPict.iFont.scale := .6; + iMyUsecase.iNameStack.spacing := 5; + iMyUsecase.foreColor := green; + iMyUsecase.iShade.background := red; + + EUsecase.usecaseA(iMyUsecase)("A highly ", " customizable usecase."); + EUsecase.usecaseB(iMyUsecase)("Another very ", " customizable usecase."); + + usecaseB.info.iShade.background := green; + + leftToRight(20)(usecaseA, usecaseB); + drawObjects(usecaseA, usecaseB); +endfig; + +end + diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/usecase.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/usecase.mp new file mode 100644 index 00000000000..ca8040f57b2 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/usecase.mp @@ -0,0 +1,43 @@ +% Sample MetaUML figures. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +input metauml; + +beginfig(1); + Usecase.U("Authenticate user", + "by name, password"); + drawObject(U); +endfig; + +beginfig(2); + Actor.A("User"); + drawObject(A); +endfig; + +beginfig(3); + save A; + + Actor.A("Administrator"); + drawObject(A); + draw A.nw -- A.ne -- A.se -- A.sw -- cycle; + draw A.human.nw -- A.human.ne -- A.human.se -- A.human.sw -- cycle; + +endfig; + + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/fig/usecase_diagrams.mp b/Master/texmf-dist/doc/metapost/metauml/manual/fig/usecase_diagrams.mp new file mode 100644 index 00000000000..110ca35c072 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/fig/usecase_diagrams.mp @@ -0,0 +1,48 @@ +% Part of the MetaUML manual. +% Copyright (C) 2005 Ovidiu Gheorghies +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 +% of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +% for f in `find . | grep '.*\.[1-9]'`; do echo $f; done + +input metauml; + +beginfig(1); + Actor.user("User"); + Actor.db("Database"); + + Usecase.dbquery("Query database"); + Usecase.auth("Authentification"); + Usecase.authA("Authentification by", "username, password"); + Usecase.authB("Authentification by", "smartcard"); + + auth.w = user.human.e + (30,0); + dbquery.s = auth.n + (0,30); + db.human.w = dbquery.e + (30,0); + + authB.left - authA.right = 30; + authB.midy = authA.midy; + .5[authB.w, authA.e] = (auth.midx, auth.bottom - 50); + + drawObjects(user, auth, dbquery, db, authA, authB); + + clink(inheritance)(authA, auth); + clink(inheritance)(authB, auth); + clink(association)(auth, dbquery); + clink(association)(user.human, auth); + clink(association)(dbquery, db.human); +endfig; + +end diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/metauml-manual.bib b/Master/texmf-dist/doc/metapost/metauml/manual/metauml-manual.bib new file mode 100644 index 00000000000..845db1968fa --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/metauml-manual.bib @@ -0,0 +1,64 @@ +@misc{metaobj, + author = "Denis Roegel", + title = "The {METAOBJ} tutorial and reference manual", + year = "2002", + url = "http://texdoc.net/texmf-dist/doc/metapost/metaobj/momanual.pdf" +} +@book{texbook, + author = "Donald E. Knuth", + title = "The {\TeX{}}book", + year = "1986", + publisher = "Addison-Wesley Publishing Company" +} +@book{latexbook, + author = "Leslie Lamport", + title = "{\LaTeX} a {D}ocument {P}reparation {S}ystem", + year = "1994", + publisher = "Addison-Wesley Publishing Company" +} +@misc{metapost, + author = "John D. Hobby", + title = "{METAPOST} {A} {U}ser's {M}anual", + year = "2018", + url = "http://www.tug.org/tutorials/mp/mpman.pdf" +} +@misc{umlsty, + author = "Ellef Fange Gjelstad", + title = "uml.sty, a package for writing {UML} diagrams in {LATEX}", + year = "2010", + url = "http://mirror.hmc.edu/ctan/graphics/pstricks/contrib/uml/uml.pdf" +} + +@misc{pstumlsty, + author = "Maurice Diamantini", + title = "Interface utilisateur du package pst-uml", + year = "2006", + url = "http://mirrors.nxthost.com/ctan/graphics/pstricks/contrib/pst-uml/pst-uml-doc.pdf" +} + +@misc{umldoc, + author = "Doug Palmer", + title = "The umldoc {UML} {D}ocumentation {P}ackage", + year = "1999", + url = "https://www.charvolant.org/elements/umldoc.pdf" +} + +@misc{tikzuml, + author = "Nicolas Kielbasiewicz", + title = "The {T}ik{Z}-{UML} package", + year = "2016", + url = "http://perso.ensta-paristech.fr/~kielbasi/tikzuml/var/files/doc/tikzumlmanual.pdf" +} + +@misc{svglatex, + author = "Johan B. C. Engelen", + title = "How to include an SVG image in LATEX", + url = "http://tug.ctan.org/info/svg-inkscape/InkscapePDFLaTeX.pdf" +} + +@misc{umlomg, + publisher = "Object Management Group", + title = "{OMG}® {U}nified {M}odeling {L}anguage® ({OMG} {UML}®)", + year = "2017", + url = "https://www.omg.org/spec/UML/2.5.1/" +} diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/metauml-manual.tex b/Master/texmf-dist/doc/metapost/metauml/manual/metauml-manual.tex new file mode 100644 index 00000000000..933130a33d3 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/metauml-manual.tex @@ -0,0 +1,2072 @@ +% MetaUML: Tutorial, Reference and Test Suite +% +% Copyright (c) 2005-2019 Ovidiu Gheorghies +% Permission is granted to copy, distribute and/or modify this document +% under the terms of the GNU Free Documentation License, Version 1.2 +% or any later version published by the Free Software Foundation; +% with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. +% A copy of the license is included in the section entitled "GNU +% Free Documentation License". + +\documentclass{article} + +\usepackage[utf8]{inputenc} +\usepackage[pdftex,colorlinks=true]{hyperref} +\usepackage{multicol} +\usepackage{multido} +\usepackage[style=ieee]{biblatex} +\addbibresource{metauml-manual.bib} + +\ifx\pdftexversion\undefined + \usepackage[dvips]{graphicx} +\else + \usepackage[pdftex]{graphicx} + \DeclareGraphicsRule{*}{mps}{*}{} +\fi + +\newcommand{\code}{\ttfamily} + +\setcounter{page}{1} + +\begin{document} + +MetaUML: A Manual and Test Suite + +\begin{quote} + Copyright \copyright 2005-2019 Ovidiu Gheorghie\c{s}. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.2 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. +\end{quote} + +\pagebreak +This page is intentionally left blank. + +\pagebreak +\title{MetaUML: A Manual and Test Suite} + +\author{Ovidiu Gheorghie\c{s}} + +\maketitle + +\begin{abstract} +MetaUML is a MetaPost \cite {metapost} library for creating UML \cite{umlomg} diagrams by means of a textual notation. +While presenting the inner workings of MetaUML, this manual doubles as a step-by-step tutorial. +More importantly, its source code contains many useful examples of diagrams, ranging from the very basic to the +more advanced and customized. +\end{abstract} + +\section{Introduction} + +Here is a quick MetaUML showcase: + +\begin{multicols}{2} +\paragraph{A} Class Diagram\\ +\includegraphics[scale=.55]{fig/appetizer.1} +\paragraph{B} Activity Diagram\\ +\includegraphics[scale=.55]{fig/appetizer.2} +\paragraph{C} Notes\\ +\includegraphics[scale=.55]{fig/appetizer.5} +\columnbreak +\paragraph{D} Use Case Diagram\\ +\includegraphics[scale=.55]{fig/appetizer.3} +\paragraph{E} State Machine Diagram\\ +\includegraphics[scale=.55]{fig/appetizer.4} +\paragraph{F} Package Diagram\\ +\includegraphics[scale=.55]{fig/appetizer.6} +\end{multicols} + +\pagebreak + +The code that generates these diagrams is quite straightforward, combining a natural object-oriented parlance +with the power of MetaPost equation solving. + +For example, a UML class is drawn as follows: + +\begin{multicols}{2} +\begin{verbatim} +Class.A("MyClass") + ("attr1: int", "attr2: int") + ("method1(): void", + "method2(): void"); + +A.nw = (0, 0); % optional, implied +drawObject(A); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/appetizer.7} +\end{multicols} + +This code creates a visual object, referenced by its name {\code A}, of the MetaUML-defined type {\code Class}. +Object {\code A} has the following content properties: a name +({\code MyClass}), a list of attributes ({\code attr1}, {\code attr2}) +and a list of methods ({\code method1}, {\code method2}). To set the object's location, we assign a value to the +so-called ``north-west'' point of the encompassing rectangle, {\code A.nw} --- a point which in actual fact references +the upper-left corner. + +Every MetaUML visual object has the layout properties shown in figure \ref{fig:properties}. +These properties may be used to set the location of any given object, either by assigning to them absolute values, +or by linking them relatively to other objects via equations. + +\begin{figure} +\centering +\includegraphics{fig/properties.1} +\caption{Layout properties of MetaUML objects. Here, a {\code Class} object is depicted.} +\label{fig:properties} +\end{figure} + +The following example demonstrates, respectively, the use of absolute and relative positioning for two classes, {\code A} and {\code B}. + +\begin{multicols}{2} +\begin{verbatim} +A.nw = (0,0); +B.w = A.e + (20, 0); +\end{verbatim} +\columnbreak +\includegraphics{fig/appetizer.8} +\end{multicols} + +After the objects have been drawn, it becomes possible to attach links to them. In a class diagram, inheritance +or association relations are meaningful links between classes, while in a state machine diagram, transitions between +states can be used. Here is the general pattern used by MetaUML for drawing links: + +\begin{verbatim} +link()(); +\end{verbatim} + +The ``how-to-draw-information'' is an object which defines the style of the line (e.g. solid, dashed) and the appearance +of the heads (e.g. nothing, arrow, diamond). One such object, appropriately called {\code inheritance}, defines a solid +line style and a white triangle head. The other parameter, the ``path-to-draw'', is simply a MetaPost path. + +For example, the following call draws an inheritance relation from class {\code B} to class {\code A}. + +\begin{verbatim} +link(inheritance)(B.e -- A.w); +\end{verbatim} + +The direction of the path is important, as MetaUML uses it to determine the +type of adornment to attach to the link ends (if applicable). In our example, a white triangle, +denoting inheritance, points towards the end of the path, that is towards class {\code A}. + +Let us sum up with a diagram typical for MetaUML use. Firstly, we define the objects that we want to include +in our diagram. Secondly, we position these objects relative to each other. Thirdly, we draw the objects. Finally, we +draw the links, by referencing the layout properties of the previously drawn objects. Note that in our example the +positioning of {\code A} need not be set explicitly because ``floating'' objects are automatically positioned at +{\code (0,0)} by their draw method. + +\begin{multicols}{2} + +\begin{verbatim} +input metauml; + +beginfig(1); + Class.A("A")()(); % 1. Define the objects + Class.B("B")()(); + B.w = A.e + (20, 0); % 2. Position the objects + drawObjects(A, B); % 3. Draw the objects + link(inheritance)(B.w -- A.e); % 4. Draw links between objects +endfig; +end +\end{verbatim} +\columnbreak +\includegraphics{fig/appetizer.9} +\end{multicols} + +As far as a user is concerned, this is all there is to MetaUML. With a reference describing how the +UML elements are created, arbitrarily complex diagrams can be crafted. + +\section{Class Diagrams} + +A class is created as follows: + +\begin{verbatim} +Class.() + () + (); +\end{verbatim} + +The suffix {\code } specifies an identifier for the newly created {\code Class} object +(which, of course, represents a UML class). +The name of the UML class is a string given by {\code }; +the attributes and methods are given as list of strings, {\code } and {\code } +respectively. The list of attributes and the list of methods may be void. + +An attribute or a method string may begin with a visibility marker: ``$+$'' for +public, ``\#'' for protected, ``$-$'' for private, and ``\textasciitilde'' for package private. +The default visibility is package private. + +\begin{multicols}{2} +\begin{verbatim} +Class.A("Point") + ("#x:int", "#y:int") + ("+set(x:int, y:int)", + "+getX():int", + "+getY():int", + "-debug():void", + "test():void"); +drawObject(A); +\end{verbatim} +\columnbreak +\includegraphics{fig/class.1} +\end{multicols} + +To disable showing the visibility markers, use {\code Class\_noVisibilityMarkers}, as shown below: + +\begin{multicols}{2} +\begin{verbatim} + Class.A("Point") + ("#x:int", "#y:int") + ("+toString():String"); + Class_noVisibilityMarkers.A; + + drawObject(A); +\end{verbatim} +\columnbreak +\includegraphics{fig/class.15} +\end{multicols} + +\subsection{Stereotypes} + +After a class is created, but before it is drawn, its stereotypes may be specified by using {\code Class\_stereotypes}: + +\begin{verbatim} +Class_stereotypes.(); +\end{verbatim} + +Here, {\code } is the object name of a previously created class and {\code } +is a comma-separated list of strings. Here is an example: + +\begin{multicols}{2} +\begin{verbatim} +Class.A("User")()(); +Class_stereotypes.A("<>","<>"); + +drawObject(A); +\end{verbatim} +\columnbreak +\hspace{3cm}\includegraphics{fig/class.2} +\end{multicols} + +\subsection{Interfaces and Abstract Classes} + +At times it is preferred to write the name of an interface in an oblique font, rather than using the ``interface'' +stereotype. This can be easily achieved by using the macro {\code Interface}: + +\begin{verbatim} +Interface.name(class-name) + (list-of-methods); +\end{verbatim} + +Here is an example: + +\begin{multicols}{2} +\begin{verbatim} +Interface.A("Observer") + ("+update(src:Object)"); + +drawObject(A); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/class.11} +\end{multicols} + +Since internally {\code Interface} treated as a special kind of {\code Class}, the code above is equivalent to: +\begin{verbatim} +EClass.A(iInterface)("Observer")() + ("+update(src:Object)"); +\end{verbatim} + +Abstract classes can be drawn similarly using the {\code iAbstractClass} style: +\begin{samepage} +\begin{multicols}{2} +\begin{verbatim} +EClass.A(iAbstractClass)("Observable") + ("observers: Observer[0..*]") + ("+addObserver(o: Observer)", + "+notify()"); + +drawObject(A); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/class.12} +\end{multicols} +\end{samepage} + +If you prefer, you can use equivalent construct: + +\begin{verbatim} +AbstractClass.A("Observable") + ("observers: Observer[0..*]") + ("+addObserver(o: Observer)", + "+notify()"); +\end{verbatim} + +\subsection{Displaying Class Name Only} + +If you want the empty methods and attributes compartments in a class not being displayed, one way is to set the spacing +at their top and the bottom to {\code 0}: +\begin{samepage} +\begin{multicols}{2} +\begin{verbatim} +Class.A("MyModel")()(); +A.info.iName.top := 10; +A.info.iName.bottom := 10; +A.info.iAttributeStack.top := 0; +A.info.iAttributeStack.bottom := 0; +A.info.iMethodStack.top := 0; +A.info.iMethodStack.bottom := 0; + +drawObject(A); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/class.13} +\end{multicols} +\end{samepage} + +The same effect can be achieved by using the formatting information object {\code iClassNameOnly} or the {\code ClassName} macro: + +\begin{multicols}{2} +\begin{verbatim} +EClass.A(iClassNameOnly)("MyModel")()(); +ClassName.B("AnotherModel"); +Class_stereotypes.B("<>"); + +topToBottom(20)(A, B); + +drawObjects(A, B); +\end{verbatim} +\columnbreak +\hspace{2cm}\includegraphics{fig/class.14} +\end{multicols} + +To customize the space around the class name globally, you can set the values of {\code iClassNameOnly.iName.top} and {\code iClassNameOnly.iName.bottom}. Individually, for a given object, say {\code B}, the attributes {\code B.info.iName.top} and {\code B.info.iName.bottom} can be used. + +\subsection{Objects (or Class Instances)} + +A UML object (or class instance) is created as follows: + +\begin{verbatim} +Instance.name(object-name) + (list-of-attributes); +\end{verbatim} + +The suffix {\code name} gives a name to the {\code Instance} object. The name of the object (given by {\code object-name}) is typeset underlined. The attributes are given as a comma-separated list of strings, {\code list-of-attributes}. + +\begin{multicols}{2} +\begin{verbatim} +Instance.order("o: Order") + ("name='book'", "{placed}", "{payed}"); +drawObject(order); +\end{verbatim} +\columnbreak +\hspace{2cm}\includegraphics{fig/instance.1} +\end{multicols} + + +\subsection{Parametrized Classes (Templates)} + +The most convenient way of typesetting a class template in MetaUML is to use the macro {\code ClassTemplate}. +This macro creates a visual object which is appropriately positioned near the class object it adorns. + +\begin{verbatim} +ClassTemplate.name(list-of-templates) + (class-object); +\end{verbatim} + +The {\code name} is the name of the template object, {\code list-of-templates} is a comma-separated list of strings and the {\code class-object} is the name of a class object. + +Here is an example: + +\begin{multicols}{2} +\begin{verbatim} +Class.A("Vector")()(); +ClassTemplate.T("T", "size: int")(A); + +drawObjects(A, T); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/class.3} +\end{multicols} + +The macro {\code Template} can also be used to create a template object, but this time the resulting +object can be positioned freely. + +\begin{verbatim} +Template.name(list-of-templates); +\end{verbatim} + +Of course, it is possible to specify both stereotypes and template parameters for a given class. + +\subsection{Types of Links} + +In this section we enumerate the relations that can be drawn between classes by means +of MetaUML macros. Suppose that we have the declared two points, {\code A} (on the left) +and {\code B} (on the right): + +\begin{verbatim} +pair A, B; +A = (0,0); +B = (50,0); +\end{verbatim} + +\begin{tabular}{||l|c||} +\hline +{\code link(association)(X.e -- Y.w)} & \includegraphics{fig/class_diagrams.4} \\ +\hline +{\code link(associationUni)(X.e -- Y.w)} & \includegraphics{fig/class_diagrams.5} \\ +\hline +{\code link(inheritance)(X.e -- Y.w)} & \includegraphics{fig/class_diagrams.6} \\ +\hline +{\code link(realization)(X.e -- Y.w)} & \includegraphics{fig/class_diagrams.12} \\ +\hline +{\code link(aggregation)(X.e -- Y.w)} & \includegraphics{fig/class_diagrams.7} \\ +\hline +{\code link(aggregationUni)(X.e -- Y.w)} & \includegraphics{fig/class_diagrams.8} \\ +\hline +{\code link(composition)(X.e -- Y.w)} & \includegraphics{fig/class_diagrams.9} \\ +\hline +{\code link(compositionUni)(X.e -- Y.w)} & \includegraphics{fig/class_diagrams.10} \\ +\hline +{\code link(dependency)(X.e -- Y.w)} & \includegraphics{fig/class_diagrams.11} \\ +\hline +\end{tabular} + +\subsection{Associations} +In UML an association typically has two of association ends and may have a name specified for it. +In turn, each association end may specify a multiplicity, a role, a visibility, an ordering. +These entities are treated in MetaUML as pictures having specific drawing information +(spacings, font). + +The first method of creating association ``items'' is by giving them explicit names. +Having a name for an association item comes in handy when referring to its properties +is later needed (see the non UML-compliant diagram below). The last parameter of the macro {\code item} is an equation which may use the item's name to perform positioning. + +\begin{multicols}{2} +\begin{verbatim} +Class.P("Person")()(); +Class.C("Company")()(); +% drawing code ommited + +item.aName(iAssoc)("works for") + (aName.s = .5[P.w, C.w]); +draw aName.n -- (aName.n + (20,20)); +label.urt("association name" infont "tyxtt", + aName.n + (20,20)); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics[scale=.8]{fig/class_association.1} +\end{multicols} + +However, giving names to every association item may become an annoying burden +(especially when there are many of them). Because of this, MetaUML also allows for +``anonymous items''. In this case, the positioning is set by an equation +which refers to the anonymous item as {\code obj}. + +\begin{multicols}{2} +\begin{verbatim} +% P and C defined as in the previous example + +item(iAssoc)("employee")(obj.nw = P.s); +item(iAssoc)("1..*")(obj.ne = P.s); + +% other items are drawn similarly +\end{verbatim} +\columnbreak +\hspace{3cm}\includegraphics{fig/class_association.2} +\end{multicols} + +\subsection{Dependencies and Stereotypes} + +Stereotypes are frequently used with dependencies. Below is an example. +\pagebreak + +\begin{multicols}{2} +\begin{verbatim} +Class.F("Factory")()(); +Class.O("Object")()(); + +O.n = F.s - (0, 50); +drawObjects(F, O); + +clink(dependency)(F, O); +item(iStereo)("<>")(obj.w = .5[F.s,O.n]) +\end{verbatim} +\columnbreak +\hspace{3cm}\includegraphics{fig/class_association.3} +\end{multicols} + +\section{Notes} + +A note is created as follows: + +\begin{verbatim} +Note.name(list-of-lines); +\end{verbatim} + +The suffix {\code name} is the name of the {\code Note} object. The contents of the note is given by a comma-separated +list of strings, {\code list-of-lines}, gives the text contents of the note object, each string being drawn on its own +line. + +Here is an example: + +\begin{multicols}{2} +\begin{verbatim} +Note.A("This note", "has two lines."); +drawObject(A); +\end{verbatim} +\columnbreak +\hspace{3cm}\includegraphics{fig/note.1} +\end{multicols} + +\subsection{Attaching notes to diagram elements} + +Notes can be attached to diagram elements by using a link of type {\code dashedLink}. + +\begin{multicols}{2} +\begin{verbatim} +Note.A("This is a class"); +Class.C("Object")()(); + +A.sw = C.ne + (20, 20); + +drawObject(A, C); + +clink(dashedLink)(A, C); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/note.2} +\end{multicols} + +Now let us see a more complex example, which demontrates the ability of accessing sub-elements in a MetaUML diagram. +\pagebreak + +\begin{multicols}{2} +\begin{verbatim} +Note.nA("This is the class name"); +Note.nB("This is a key attribute"); +Note.nC("This is a nice method"); + +Class.C("Object")("+id:int") + ("+clone()", "+serialize()"); + +topToBottom.left(10)(nA, nB, nC); +leftToRight(10)(C, nB); + +drawObjects(C, nA, nB, nC); + +clink(dashedLink)(C.namePict, nA); +clink(dashedLink)(C.attributeStack.pict[0], nB); +clink(dashedLink)(C.methodStack.pict[1], nC); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/note.3} +\end{multicols} + +Macros like {\code leftToRight} and {\code topToBottom} are presented in section \ref{section:positioning}. + +\subsection{Using mathematical formulae} + +MetaUML notes can contain mathematical formulae written in TeX \cite{texbook}. Regretably, LaTeX \cite{latexbook} support for formulae is {\bf not} available. +Limited as it may be, this feature is considered experimental, as it is not always straightforward to use. In the example below, note that the MetaPost package {\code TEX} is imported. + +\begin{multicols}{2} +\begin{verbatim} +input metauml; +input TEX; + +beginfig(1); + Note.A("This class implements the formula:", + TEX("$\sum_1^n f(x) \cdot dx$")); + drawObjects(A); +endfig; + +end +\end{verbatim} +\columnbreak +\hspace{0.5cm}\includegraphics{fig/note.4} +\end{multicols} + +For taller formulae, you must be prepared to do some advanced stunts. Remark: {\code "aaa" \& "bbb"} is MetaPost's way to concatenate the strings into {\code "aaabbb"}; +the string containing the formula was split in two for layout reasons. + +\begin{multicols}{2} +\begin{verbatim} +Note.A("Can you do it?", + TEX("$\sum_1^n f(x) \cdot dx " & + "\over \sum_1^m g(y) \cdot dy$")); +A.stack.info.spacing := 30; +A.stack.pict[1].info.ignoreNegativeBase := 0; + +drawObject(A); +\end{verbatim} +\columnbreak +\hspace{3cm}\includegraphics{fig/note.5} +\end{multicols} + +Alas, this trick does not entirely solve the problem: a third line in the note would be badly aligned. Therefore, +until MetaUML's {\code Note} class is upgraded to better support this scenario, you may want to limit yourself +to two lines per note --- at least when tall formulae are involved. + +\section{Packages} + +MetaUML allows for the creation of packages in various forms. Firstly, we have the option of writing the package +name in the middle of the main box. Secondly, we can write the name on the tiny box above the main box, leaving +the main box empty. Lastly, we can write the package name as in the second case, but the main box can have an arbitrary +contents: classes, other packages, or even other UML items. + +The macro that creates a package has the following synopsis: + +\begin{verbatim} +Package.name(package-name)(subitems-list); +\end{verbatim} + +The parameter {\code package-name} is a string or a list of comma-separated strings representing the package's name. +The {\code subitems-list} parameter is used to specify the subitems (tipically classes or packages) of this package; +its form is as a comma-separated list of objects, which can be void. + +\begin{multicols}{2} +\begin{verbatim} +Package.P("java.lang")(); +drawObject(P); +\end{verbatim} +\columnbreak +\hspace{3cm}\includegraphics{fig/package.1} +\end{multicols} + +Below is another example: + +\begin{multicols}{2} +\begin{verbatim} +Package.P("An important", "package")(); +drawObject(P); +\end{verbatim} +\columnbreak +\hspace{3cm}\includegraphics{fig/package.2} +\end{multicols} + +If you wish to leave the main box empty, you can use the following code: + +\begin{multicols}{2} +\begin{verbatim} +Package.P("java.lang")(); +P.info.forceEmptyContent := 1; +drawObject(P); +\end{verbatim} +\columnbreak +\hspace{3cm}\includegraphics{fig/package.3} +\end{multicols} + +The same effect as above can be achieved globally by doing: + +\begin{verbatim} +iPackage.forceEmptyContent := 1; +\end{verbatim} + +More information on MetaUML's way of managing global and per-object configuration data can be found in +section \ref{section:infrastructure} and section \ref{section:customization}. + +Here is an example involving items contained in a package. + +\begin{multicols}{2} +\begin{verbatim} +Class.A("A")()(); +Class.B("B")()(); +Package.P("net.metauml")(A, B); + +leftToRight(10)(A, B); + +drawObject(P); +\end{verbatim} +\columnbreak +\hspace{3cm}\includegraphics{fig/package.4} +\end{multicols} + +\subsection{Types of Links} + +The nesting relation between packages is created by using the {\code nest} link information. + +\begin{tabular}{||l|c||} +\hline +{\code link(nest)(X.e -- Y.w)} & \includegraphics{fig/package.5} \\ +\hline +\end{tabular} + +\section{Component Diagrams} + +A component is created by the macro {\code Component}: + +\begin{verbatim} +Component.name(component-name) + (subitems-list) +\end{verbatim} + +The parameter {\code component-name} is a string representing the component's name. The {\code subitems-list} parameter +is used to specify the subitems of this component (possibly classes, packages or other components); its form is as a +comma-separated list of objects, which can be void. + +\begin{multicols}{2} +\begin{verbatim} +Component.C("Business Logic")(); +drawObject(C); +\end{verbatim} +\columnbreak +\hspace{3cm}\includegraphics{fig/component.1} +\end{multicols} + +Here is an example involving subitems in a component: + +\begin{multicols}{2} +\begin{verbatim} +Class.A("A")()(); +Package.B("B")(); +Component.C("C")(); + +Component.BigC("Big Component")(A, B, C); + +leftToRight(10)(A, B); +topToBottom(10)(A, C); + +drawObject(BigC); +\end{verbatim} +\columnbreak +\hspace{3cm}\includegraphics{fig/component.2} +\end{multicols} + +\subsection{Types of Links} + +\begin{tabular}{||l|c||} +\hline +{\code link(requiredInterface)( A.e -- .5[A.e, B.w] );} & \includegraphics{fig/component.3} \\ +\hline +{\code link(providedInterface)( .5[A.e, B.w] -- B.w );} & \includegraphics{fig/component.4} \\ +\hline +\end{tabular} + +\vspace{0.5cm} + +The {\code requiredInterface} and {\code providedInterface} visual constructs can be easily combined, as shown in the following example: + +\begin{multicols}{2} +\begin{verbatim} +Component.A("A")(); +Component.B("B")(); + +leftToRight(80)(A, B); + +drawObjects(A, B); + +link(providedInterface)( A.e -- .5[A.e, B.w] ); +link(requiredInterface)( B.w -- .5[A.e, B.w] ); +\end{verbatim} +\columnbreak +\hspace{-1cm}\includegraphics{fig/component.5} +\end{multicols} + + +\section{Use Case Diagrams} + +\subsection{Use Cases} +An use case is created by the macro {\code Usecase}: + +\begin{verbatim} +Usecase.name(list-of-lines); +\end{verbatim} + +The {\code list-of-lines} is a comma-separated list of strings. These strings are placed +on top of each other, centered and surrounded by the appropriate visual UML notation. + +Here is an use case example: + +\begin{multicols}{2} +\begin{verbatim} +Usecase.U("Authenticate user", + "by name, password"); +drawObject(U); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/usecase.1} +\end{multicols} + +\subsection{Actors} + +An actor is created by the macro {\code Actor}: + +\begin{verbatim} +Actor.name(list-of-lines); +\end{verbatim} + +Here, {\code list-of-lines} represents the actor's name. For convenience, the name may be +given as a list of strings which are placed on top of each other, to provide support for +the situations when the role is quite long. Otherwise, giving a single string +as an argument to the Actor constructor is perfectly fine. + +Here is an actor example: + +\begin{multicols}{2} +\begin{verbatim} +Actor.A("User"); +drawObject(A); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/usecase.2} +\end{multicols} + +Sometimes it may be preferable to draw diagram relations positioned relatively to +the visual representation of an actor (the ``human'') rather than relatively to the whole +actor object (which also includes the text). Because of that, MetaUML provides access +to the ``human'' of every actor object {\code actor} by means of the sub-object {\code actor.human}. + +\begin{multicols}{2} +\begin{verbatim} +Actor.A("Administrator"); +drawObject(A); +draw objectBox(A); +draw objectBox(A.human); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/usecase.3} +\end{multicols} + +In MetaUML, {\code objectBox(X)} is equivalent to {\code X.nw -- X.ne -- X.se -- X.sw -- cycle} for every object {\code X}. {\code A.human} is considered a MetaUML object, so you can use expressions like {\code A.human.n} or {\code A.human.midx}. + +\subsection{Types of Links} + +Some of the types of links defined for class diagrams (such as inheritance, association etc.) can be used with similar semantics within use case diagrams. + +\section{Activity Diagrams} + +\subsection{Begin, End and Flow End} + +The begin and the end of an activity diagram can be marked by using the macros {\code Begin} +and {\code End} or {\code FlowFinal}, respectively. The constructors of these visual objects take no parameters: + +\begin{verbatim} +Begin.beginName; +End.endName; +\end{verbatim} + +Below is an example: + +\begin{multicols}{2} +\begin{verbatim} +Begin.b; +End.e; +FlowFinal.f; + +leftToRight(20)(b, e, f); + +drawObjects(b, e, f); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/activity.1} +\end{multicols} + +\subsection{Activity} + +An activity is constructed as follows: +\begin{verbatim} +Activity.name(list-of-strings); +\end{verbatim} + +The parameter {\code list-of-strings} is a comma-separated list of strings. These strings are +centered on top of each other to allow for the accommodation of a longer activity description +within a reasonable space. + +An example is given below: + +\begin{multicols}{2} +\begin{verbatim} +Activity.A("Learn MetaUML -", + "the MetaPost UML library"); +drawObject(A); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/activity.2} +\end{multicols} + +\subsection{Fork and Join} + +A fork or join is created by the macro: + +\begin{verbatim} +Fork.name(type, length); +\end{verbatim} + +The parameter {\code type} is a string and can be either of {\code "h"}, {\code "horiz"}, {\code "horizontal"} +for horizontal bars, and either of {\code "v"}, {\code "vert"}, {\code "vertical"} for vertical bars. +The {\code length} gives the bar's length. + +\begin{multicols}{2} +\begin{verbatim} +Fork.forkA("h", 100); +Fork.forkB("v", 20); + +leftToRight(10)(forkA, forkB); + +drawObject(forkA, forkB); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/activity.3} +\end{multicols} + +\subsection{Branch} + +A branch is created by the macro: + +\begin{verbatim} +Branch.name; +\end{verbatim} + +Here is an example: + +\begin{multicols}{2} +\begin{verbatim} +Branch.testA; + +drawObject(testA); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/activity.4} +\end{multicols} + + +\subsection{Types of Links} + +In activity diagrams, transitions between activities are needed. They are typeset +as in the example below. In section \ref{composite-states} such a transition +is showed. This type of link is also used for state machine diagrams. + +\begin{verbatim} +link(transition)( pointA -- pointB ); +\end{verbatim} + +\section{State Diagrams} + +The constructor of a state allows for aggregated sub-states: + +\begin{verbatim} +State.name(state-name)(substates-list); +\end{verbatim} + +The parameter {\code state-name} is a string or a list of comma-separated strings representing +the state's name or description. The {\code substates-list} parameter is used to specify +the substates of this state as a comma-separated list of objects; this list may be void. + +An example of a simple state: + +\begin{multicols}{2} +\begin{verbatim} +State.s("Take order")(); +drawObject(s); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/state.1} +\end{multicols} + + +\subsection{Composite States} +\label{composite-states} + +A composite state is defined by enumerating at the end of its constructor the inner +states. Interestingly enough, the composite state takes care of drawing the sub-states it +contains. The transitions must be drawn after the composite state, as seen in the +next example: + +\begin{multicols}{2} +\begin{verbatim} +Begin.b; +End.e; +State.c("Component")(); +State.composite("Composite")(b, e, c); + +b.midx = e.midx = c.midx; +c.top = b.bottom - 20; +e.top = c.bottom - 20; + +composite.info.drawNameLine := 1; +drawObject(composite); + +link(transition)(b.s -- c.n); +link(transition)(c.s -- e.n); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/state.2} +\end{multicols} + +\subsection{Internal Transitions} + +Internal transitions can be specified by using the macro: +\begin{verbatim} +stateTransitions.name(list-transitions); +\end{verbatim} + +Identifier {\code name} gives the state object whose internal transitions are being set, +and parameter {\code list-transitions} is a comma-separated string list. + + +An example is given below: + +\begin{multicols}{2} +\begin{verbatim} +State.s("An interesting state", + "which is worth mentioning")(); +stateTransitions.s( + "OnEntry / Open eyes", + "OnExit / Sleep well"); +s.info.drawNameLine := 1; + +drawObject(s); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/state.3} +\end{multicols} + +\subsection{Special States} + +Similarly to the usage of {\code Begin} and {\code End} macros, one can define history states, +exit/entry point states and terminate pseudo-states, by using the following constructors. + +\begin{verbatim} +History.nameA; +ExitPoint.nameB; +EntryPoint.nameC; +Terminate.nameD; +\end{verbatim} + +\section{Drawing Paths} + +The {\code link} macro is powerful enough to draw relations following arbitrary paths: + +\begin{multicols}{2} +\begin{verbatim} +path cool; +cool := A.e .. A.e+(20,10) .. + B.s+(20,-40) .. B.s+(-10,-30) + -- B.s; +link(inheritance)(cool); + +link(aggregationUni) + (A.n ..(30,30)..B.w); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/paths.1} +\end{multicols} + +Amusing as it may be, this feature gets old soon. When typesetting UML diagrams in good style, rectangular paths are usually preferred. +It is for this kind of paths that MetaUML offers extensive support, by means of ``syntactic sugar'' constructs which +are not only self-documenting, but reduce the amount of typing and thinking required. + +\subsection{Manhattan Paths} + +The ``Manhattan'' path macros generate a path between two points consisting of one +horizontal and one vertical segment. The macro {\code pathManhattanX} generates first a +horizontal segment, while the macro {\code pathManhattanY} generates first a +vertical segment. In MetaUML it also matters the direction of a path, so you +can choose to reverse it by using {\code rpathManhattanX} and {\code rpathManhattanY} +(note the prefix ``{\code r}''): + +\begin{verbatim} +pathManhattanX(A, B) +pathManhattanY(A, B) + +rpathManhattanX(A, B) +rpathManhattanY(A, B) +\end{verbatim} + +\pagebreak +Here is an example: + +\begin{multicols}{2} +\begin{verbatim} +Class.A("A")()(); +Class.B("B")()(); + +B.sw = A.ne + (10,10); +drawObjects(A, B); + +link(aggregationUni) + (rpathManhattanX(A.e, B.s)); +link(inheritance) + (pathManhattanY(A.n, B.w)); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/paths.2} +\end{multicols} + +\subsection{Stair Step Paths} + +These path macros generate stair-like paths between two points. +The ``stair'' can ``rise'' first in the direction of $Ox$ axis ({\code pathStepX}) +or in the direction of $Oy$ axis ({\code pathStepY}). How much should a step +rise is given by an additional parameter, {\code delta}. Again, the macros +prefixed with ``{\code r}'' reverse the direction of the path given by their +unprefixed counterparts. + +\begin{verbatim} +pathStepX(A, B, delta) +pathStepY(A, B, delta) + +rpathStepX(A, B, delta) +rpathStepY(A, B, delta) +\end{verbatim} + +Here is an example: + +\begin{multicols}{2} +\begin{verbatim} +stepX:=60; +link(aggregationUni) + (pathStepX(A.e, B.e, stepX)); + +stepY:=20; +link(inheritance) + (pathStepY(B.n, A.n, stepY)); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/paths.3} +\end{multicols} + +\subsection{Horizontal and Vertical Paths} + +There are times when drawing horizontal or vertical links is required, +even when the objects are not properly aligned. To this aim, the following macros +are useful: + +\begin{verbatim} +pathHorizontal(pA, untilX) +pathVertical(pA, untilY) + +rpathHorizontal(pA, untilX) +rpathVertical(pA, untilY) +\end{verbatim} + +A path created by {\code pathHorizonal} starts from the point {\code pA} +and continues horizontally until coordinate {\code untilX} is reached. The macro +{\code pathVertical} constructs the path dually, working vertically. +The prefix ``{\code r}'' reverses the direction of the path. + +Usage example: + +\begin{multicols}{2} +\begin{verbatim} +untilX := B.left; +link(association) + (pathHorizontal(A.e, untilX)); + +untilY:= C.bottom; +link(association) + (pathVertical(A.n, untilY)); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/paths.4} +\end{multicols} + +\subsection{Direct Paths} + +A direct path can be created with {\code directPath}. The call {\code directPath(A, B)} +is equivalent to {\code A -{}- B}. + +\subsection{Paths between Objects} + +Using the constructs presented above, links between diagram objects are drawn easily like this: + +\begin{verbatim} +link(transition)(directPath(objA.nw, objB.se)); +\end{verbatim} + +There are times however when this direct approach may yield unsatisfactory visual results, +especially when the object's corners is round. To tackle these situations, MetaUML provides the macro +{\code pathCut}, whose aim is to limit a given path exactly to the region outside the actual +borders of the objects it connects. The macro's synopsis is: + +\begin{verbatim} +pathCut(thePath)(objectA, objectB) +\end{verbatim} + +Here, {\code thePath} is a given MetaPost path and {\code objectA} and {\code objectB} +are two MetaUML objects. By contract, each MetaUML object of type, say, {\code X} +defines a macro {\code X\_border} which returns the path that surrounds it. Because +of that, {\code pathCut} can make the appropriate modifications to {\code thePath}. + +The following code demonstrates the benefits of the {\code pathCut} macro: + +\begin{multicols}{2} +\begin{verbatim} +z = A.se + (30, -10); +link(transition) + (pathCut(A, B)(A.c--z--B.c)); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/paths.5} +\end{multicols} + +\subsubsection{Direct Paths between Centers} + +At times is quicker to just draw direct paths between the center of two objects, +minding of course the object margins. The macro which does this is {\code clink}: + +\begin{verbatim} +clink(how-to-draw-information)(objA, objB); +\end{verbatim} + +The parameter {\code how-to-draw-information} is the same as for the macro {\code link}; +{\code objA} and {\code objB} are two MetaUML objects. + +Below is an example which involves the inheritance relation: + +\begin{multicols}{2} +\begin{verbatim} +clink(inheritance)(A, B); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/paths.6} +\end{multicols} + +\section{Arranging Diagram Items} +\label{section:positioning} + +Using equations involving cardinal points, such as {\code A.nw = B.ne + (10,0)}, is +good enough for achieving the desired results. However, programs are best to +be written for human audience, rather than for compilers. It does become a bit +tiresome to think all the time of cardinal points and figure out the +direction of positive or negative offsets. Because of that, MetaUML offers +syntactic sugar which allows for an easier understanding of the intent behind +the positioning code. + +Suppose that we have three classes, {\code A}, {\code B}, {\code C} and their base class +{\code Base}. We want the base class to be at the top, and the derived classes to be +on a line below. This code will do: + +\begin{verbatim} +A.ne = B.nw + (20,0); +B.ne = C.nw + (20,0); +Base.s = B.n + (0,-20); +\end{verbatim} + +Unfortunately, writing code such as this makes it hard for fellow programmers to visualize +its intent upon reading it. And ``fellow programmers`` include the author, five minutes later. + +Perhaps the next version of the code will drive home the point. The outcome is +the same as before, but the layout is stated in a more human-friendly way. You might even +infer by yourself that the numeric argument represents the distance between the objects. + +\begin{multicols}{2} +\begin{verbatim} +leftToRight(20)(A, B, C); +topToBottom(20)(Base, B); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/positioning.2} +\end{multicols} + +Below there are examples which show how these macros can be used. Suppose that we have the +following definitions for objects {\code X}, {\code Y}, and {\code Z}; also, let's assume +that {\code spacing} is a numeric variable set to {\code 5}. + +\begin{verbatim} +Picture.X("a"); +Picture.Y("..."); +Picture.Z("Cyan"); +\end{verbatim} + +\begin{tabular}{||l|c||} +\hline +{\code leftToRight.top(spacing)(X, Y, Z);} & \includegraphics{fig/positioning.3} \\ +\hline +{\code leftToRight.midy(spacing)(X, Y, Z);} & \includegraphics{fig/positioning.4} \\ +\hline +{\code leftToRight.bottom(spacing)(X, Y, Z);} & \includegraphics{fig/positioning.5} \\ +\hline +{\code topToBottom.left(spacing)(X, Y, Z);} & \includegraphics{fig/positioning.6} \\ +\hline +{\code topToBottom.midx(spacing)(X, Y, Z);} & \includegraphics{fig/positioning.7} \\ +\hline +{\code topToBottom.right(spacing)(X, Y, Z);} & \includegraphics{fig/positioning.8} \\ +\hline +\end{tabular} \\ + +To make things even easier, the following equivalent contructs are also allowed: + +\begin{verbatim} +leftToRight.midy(spacing)(X, Y, Z); +leftToRight(spacing)(X, Y, Z); +\end{verbatim} + +\begin{verbatim} +topToBottom.midx(spacing)(X, Y, Z); +topToBottom(spacing)(X, Y, Z); +\end{verbatim} + +If you want to specify that some objects have a given property equal, while the distance between them is given elsewhere, you can use the macro {\code same}. +This macro accepts a variable number of parameters, but at least two. The following table gives the interpretation of the macro for a simple example. + +\begin{tabular}{||l|l||} +\hline +{\code same.top(X, Y, Z);} & {\code X.top = Y.top = Z.top;} \\ +\hline +{\code same.midy(X, Y, Z);} & {\code X.midy = Y.midy = Z.midy;} \\ +\hline +{\code same.bottom(X, Y, Z);} & {\code X.bottom = Y.bottom = Z.bottom;} \\ +\hline +{\code same.left(X, Y, Z);} & {\code X.left = Y.left = Z.left;} \\ +\hline +{\code same.midx(X, Y, Z);} & {\code X.midx = Y.midx = Z.midx;} \\ +\hline +{\code same.right(X, Y, Z);} & {\code X.right = Y.right = Z.right;} \\ +\hline +\end{tabular} \\ + +Relative positions of two points can be declared more easily using the macros {\code below}, {\code above}, {\code atright}, {\code atleft}. +Let us assume that {\code A} and {\code B} are two points (objects of type {\code pair} in MetaPost). The following constructs are equivalent: + +\begin{tabular}{||l|l||} +\hline +{\code B = A + (5,0);} & {\code B = atright(A, 5);} \\ +{\code B = A - (5,0);} & {\code B = atleft(A, 5);} \\ +{\code B = A + (0,5);} & {\code B = above(A, 5);} \\ +{\code B = A - (0,5);} & {\code B = below(A, 5);} \\ +\hline +\end{tabular} + + +\section{The MetaUML Infrastructure} +\label{section:infrastructure} + +MetaPost is a macro language based on equation solving. Using it may seem quite +tricky at first for a programmer accustomed to modern object-oriented languages. +However, the great power of MetaPost consists in its versatility. Indeed, it is possible to write +a system which mimics quite well object-oriented behavior. Along this line, METAOBJ +\cite{metaobj} is a library worth mentioning: it provides a high-level objects +infrastructure along with a battery of predefined objects. + +Surprisingly enough, MetaUML does not use METAOBJ. Instead, it uses a custom written, +lightweight object-oriented infrastructure, provisionally called ``{\code util}''. +METAOBJ's facilities, although impressive, were perceived by me as being a bit too much +for what was initially intented as a quick way of getting some UML diagrams layed out. +Inspired by METAOBJ, ``{\code util}'' was designed to fulfill with minimal effort +the specific tasks needed to confortably position, allign or group visual objects +which include text. + +Another library having some object-oriented traits is the {\code boxes} +library, which comes with the standard MetaPost distribution. Early versions of +MetaUML did use {\code boxes} as an infrastructure, but this approach had to be abandoned eventually. +The main reason was that it was difficult to achieve good visual results when stacking texts +(more on that further on). For all it's worth, it did not fit well with the way in which MetaUML's +layout mechanism was shaping up at the time. + +\subsection{Motivation} + +Suppose that we want to typeset two texts with their bottom lines aligned, using {\code boxit}: + +\begin{multicols}{2} +\begin{verbatim} +boxit.a ("yummy"); +boxit.b ("cool"); + +a.nw = (0,0); b.sw = a.se + (10,0); + +drawboxed (a, b); % or drawunboxed(a,b) +draw a.sw -- b.se dashed evenly + withpen pencircle scaled 1.1; +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/boxes_vs_util.1} +\end{multicols} + +Note that, despite supposedly having their bottom lines alligned, +``yummy'' {\it looks} slightly higher than ``cool''. This would be unacceptable +in a UML class diagram, when roles are placed at the ends of a horizontal association. +Regardless of the default spacing being smaller in the {\code util} library, +the very same unfortunate misalignment effect rears its ugly head: + +\begin{multicols}{2} +\begin{verbatim} +Picture.a("yummy"); +Picture.b("cool"); +% comment next line for unboxed +a.info.boxed := b.info.boxed := 1; + +b.sw = a.se + (10,0); + +drawObjects(a, b); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/boxes_vs_util.2} +\end{multicols} + +However, the strong point of {\code util} is that we have a recourse to this problem: + +\begin{multicols}{2} +\begin{verbatim} +iPict.ignoreNegativeBase := 1; + +Picture.a("yummy"); +Picture.b("cool"); +% the rest the same as above +drawObjects(a, b); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/boxes_vs_util.3} +\end{multicols} + +\subsection{The Picture Macro} + +We have seen previously the line {\code iPict.ignoreNegativeBase := 1}. +Who is {\code iPict} and what is it doing in our program? MetaUML +aims at separating the ``business logic'' (what to draw) from the +``interface'' (how to draw). In order to achieve this, it records the ``how to draw'' +information within the so-called {\code Info} structures. The object {\code iPict} +is an instance of {\code PictureInfo} structure, which has the following properties +(or attributes): +\begin{verbatim} +left, right, top, bottom +ignoreNegativeBase +boxed, borderColor +\end{verbatim} + +The first four attributes specify how much space should be left around the +actual item to be drawn. The marvelous effect of {\code ignoreNegativeBase} +has just been shown (off), while the last two attributes control whether the border +should be drawn (when {\code boxed=1}) and if drawn, in which color. + +There's one more thing: the font to typeset the text in. This is specified +in a {\code FontInfo} structure which has two attributes: the font name +and the font scale. This information is kept within the {\code PictureInfo} structure +as a contained attribute {\code iFont}. Both {\code FontInfo} and {\code PictureInfo} +have ``copy constructors'' which can be used to make copies. We have already +the effect of these copy constructors at work, when we used: + +\begin{verbatim} +Picture.a("yummy"); +a.info.boxed := 1; +\end{verbatim} + +A copy of the default info for a picture, {\code iPict}, has been made within +the object {\code a} and can be accessed as {\code a.info}. Having a copy of the +info in each object may seem like an overkill, but it allows for a fine grained +control of the drawing mode of each individual object. This feature comes in very +handy when working with a large number of settings, as it is the case for MetaUML. + +Let us imagine for a moment that we have two types of text to write: one with a small font +and a small margin and one with a big font and a big margin. We could in theory +configure each individual object or set back and forth global parameters, but +this is far for convenient. It is preferable to have two sets of settings and specify +them explicitly when they are needed. The following code could be placed somewhere +in a configuration file and loaded before any {\code beginfig} macro: +\begin{verbatim} +PictureInfoCopy.iBig(iPict); +iBig.left := iBig.right := 20; +iBig.top := 10; +iBig.bottom := 1; +iBig.boxed := 1; +iBig.ignoreNegativeBase := 1; +iBig.iFont.name := defaultfont; +iBig.iFont.scale := 3; + +PictureInfoCopy.iSmall(iPict); +iSmall.boxed := 1; +iSmall.borderColor := green; +\end{verbatim} + +Below is an usage example of these definitions. Note the name of the macro: {\code EPicture}. +The prefix comes form ``explicit'' and it's used to acknowledge that the +``how to draw'' information is given explicitly --- as a parameter, +rather than defaulted to what's recorded in {\code iPict}, as with the {\code Picture} macro. +Having predefined configurations yields short, convenient code. + +\begin{multicols}{2} +\begin{verbatim} +EPicture.a(iBig)("yummy"); +EPicture.b(iSmall)("cool"); +% you can still modify a.info, b.info + +b.sw = a.se + (10,0); + +drawObjects(a, b); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/picture_info.1} +\end{multicols} + +\subsubsection{Fixed Sizes} + +By default, the size of a {\code Picture} object is set by its contents. However, +it is possible to specify fixed dimensions both the width and the height, independently. +This can be done by setting the {\code info}'s attributes {\code fixedWidth} and {\code fixedHeight} to values +greater than 0. If any of these attributes is left to its default value, {\code -1}, then for the corresponding +axis the dimension is set according to the dimension of the content. Nevertheless, the fixed dimensions are enforced, even though the contained object would have needed additional space. + +\begin{multicols}{2} +\begin{verbatim} +PictureInfoCopy.myFixed(iPict); +myFixed.ignoreNegativeBase := 1; +myFixed.fixedWidth := 15; +myFixed.fixedHeight := 20; +myFixed.boxed := 1; + +EPicture.a(myFixed)("a"); +EPicture.b(myFixed)(".-."); +EPicture.c(myFixed)("toolong"); + +leftToRight.bottom(10)(a, b, c); + +drawObjects(a, b, c); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/picture_info.2} +\end{multicols} + +\subsubsection{Content alignment} + +When fixed dimensions are used, one most likely would prefer a centered alignement of the contents in the +{\code Picture} box. This option can be expressed independently for each of the axes, +by setting the {\code info}'s attributes {\code valign} and {\code halign} to descriptive string values. +For horizontal alignement, {\code halign} can be set to {\code "left"} or {\code "center"}, and for +vertical alignement, {\code valign} can be set to {\code "bottom} or {\code "center"}. The default +values for these attributes are {\code "left"} and {\code "bottom"}, respectively. + +The next example uses horizontal centered alignement and a bottom alignement with a {\code 4.5} base offset, for +vertical alignement. This vertical alignement gives a better visual result than the centered one, at +least for the situations in which there are texts to be placed horizontally. + +\begin{multicols}{2} +\begin{verbatim} +PictureInfoCopy.myFixed(iPict); +myFixed.ignoreNegativeBase := 1; +myFixed.bottom := 4.5; +myFixed.valign := "bottom"; +myFixed.halign := "center"; +myFixed.fixedWidth := 25; +myFixed.fixedHeight := 15; +myFixed.boxed := 1; + +EPicture.a(myFixed)("a"); +EPicture.b(myFixed)("yum"); +EPicture.c(myFixed)("b"); + +leftToRight.bottom(10)(a, b, c); + +drawObjects(a, b, c); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/picture_info.3} +\end{multicols} + +\subsection{Stacking Objects} + +It is possible to stack objects, much in the style of {\code setboxjoin} +from {\code boxes} library. + +\begin{multicols}{2} +\begin{verbatim} +Picture.a0("yummy"); +Picture.a1("cool"); +Picture.a2("fool"); + +setObjectJoin(pa.sw = pb.nw); +joinObjects(scantokens listArray(a)(3)); + +drawObjects(scantokens listArray(a)(3)); +% or drawObjects (a0, a1, a2); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/object_stack.1} +\end{multicols} + +The {\code listArray} macro provides here a shortcut for writing +{\code a0, a1, a2}. This macro is particularly useful for generic +code which does not know beforehand the number of elements to be drawn. +Having to write the {\code scantokens} keyword is admittedly a nuisance, but +this is required. + + +\subsection{The Group Macro} + +It is possible to group objects in MetaUML. This feature is the cornerstone +of MetaUML, allowing for the easy development of complex objects, such as +composite stats in state machine diagrams. + +Similarly to the macro {\code Picture}, the structure {\code GroupInfo} +is used for specifying group properties; its default instantiation is +{\code iGroup}. Furthermore, the macro {\code EGroup} explicitely sets the +layout information. + +Here is an example: + +\begin{multicols}{2} +\begin{verbatim} +iGroup.left:=20; +iGroup.right:=15; +iGroup.boxed:=1; +iPicture.boxed:=1; + +Picture.a("yummy"); +Picture.b("cool"); +Picture.c("fool"); + +b.nw = a.nw + (20,20); % A +c.nw = a.nw + (15, 40); % B + +Group.g(a, b, c); +g.nw = (10,10); % C + +drawObject(g); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/group.1} +\end{multicols} + +After some objects are grouped, they can only be drawn +by invoking the {\code drawObject} macro on the group that aggregates them, and not individually. +Conveniently, once the relative positioning of objects within a group is set (line A and B), the whole +group can be ``moved'' do the desired position (line C), and all the contained objects will move along. + +\subsection{The PictureStack Macro} + +The {\code PictureStack} macro is a syntactic sugar for a set of pictures, +stacked according to predefined equations and grouped together. + +\begin{multicols}{2} +\begin{verbatim} +iStack.boxed := 1; +iStack.iPict.boxed := 1; +PictureStack.myStack("foo", + "bar: int" infont "tyxtt", + "nicely-centered" infont defaultfont, + "nice")("vcenter"); + +drawObject(myStack); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/picture_stack.1} +\end{multicols} + +Note the last parameter of the macro {\code PictureStack}, here {\code vcenter}. +It is used to generate appropriate equations based on a descriptive name. +The spacing between individual picture objects is set by the field +{\code iStack.spacing}. Currently, the following alignment names are +defined: {\code vleft}, {\code vright}, {\code vcenter}, +{\code vleftbase}, {\code vrightbase}, {\code vcenterbase}. All these +names refer to vertical alignment (the prefix ``{\code v}''); alignment can +be at left, right or centered. The variants having the suffix ``{\code base}'' align +the pictures so that {\code iStack.spacing} refer to the distance between the +bottom lines of the pictures. The unsuffixed variants use {\code iStack.spacing} as +the distance between one's bottom line and the next's top line. + +The ``{\code base}'' alignment is particularly useful for stacking text, since it +offers better visual appearance when {\code iPict.ignoreNegativeBase} is set to {\code 1}. + +\section{Components Design} + +Each MetaUML component (e.g. {\code Picture}, {\code PictureStack}, {\code Class}) is +designed according to an established pattern. This section gives more insight +on this. + +In order to draw a component, MetaUML categorizes the required information as follows: +\begin{itemize} +\item what to draw, or what are the elements of a component. +\item how to draw, or how are the elements positioned in relation to each other within the component +\item where to draw +\end{itemize} + +For example, in order to draw a picture object we must know, respectively: +\begin{itemize} +\item what is the text or the native picture that needs to be drawn +\item what are the margins that should be left around the contents +\item where is the picture to be drawn +\end{itemize} + +Why do we bother with these questions? Why don't we just simply draw the picture +component as soon as it was created and get it over with? +That is, why doesn't the following code just work? + +\begin{verbatim} +Picture.pict("foo"); +\end{verbatim} + +Well, although we have the answer to question 1 (what to draw), +we still need to have question 3 answered. The code below becomes thus a +necessity (actually, you are not forced to specify the positioning of an object, +because its draw method positions it to {\code (0,0)} by default): + +\begin{verbatim} +% question 1: what to draw +Picture.pict("foo"); + +% question 3: where to draw +pict.nw = (10,10); + +% now we can draw +drawObject(pict); +\end{verbatim} + +How about question 2, how to draw? By default, this problem is addressed behind the +scenes by the component. This means, for the Picture object, that a native picture is created +from the given string, and around that picture certain margins are placed, by means of MetaPost equations. +(The margins also come in handy when stacking Picture objects, so that the result doesn't look too cluttered.) +If these equations were defined within the Picture constructor, then an +usability problem would have appeared, because it wouldn't have been possible to modify the margins, +as in the code below: + +\begin{verbatim} +% question 1: what to draw +Picture.pict("foo"); + +% question 2: how to draw +pict.info.left := 10; +pict.info.boxed := 1; + +% question 3: where to draw +pict.nw = (0,0); + +% now we can draw +drawObject(pict); +\end{verbatim} + +To allow for this type of code, the equations that define the layout of the {\code Picture} object (here, what the margins are) +must be defined somewhere after the constructor. This is done by a macro called {\code Picture\_layout}. +This macro defines all the equations which link the ``what to draw'' information to the ``how to draw'' +information (which in our case is taken from the {\code info} member, a copy of {\code iPict}). +Nevertheless, notice that {\code Picture\_layouts} is not explicitly invoked. To the user's +great relief, this is taken care of automatically within the {\code Picture\_draw} macro. + +There are times however, when explicitly invoking a macro like {\code Picture\_layout} +becomes a necessity. This is because, by contract, it is only after the {\code layout} +macro is invoked that the final dimensions (width, height) of an object are +definitely and permanently known. Imagine that we have a component whose job is to +surround in a red-filled rectangle some other objects. This component +needs to know what the dimensions of the contained objects are, in order to be able to set +its own dimensions. At drawing time, the contained objects must not have been drawn already, +because the red rectangle of the container would overwrite them. +Therefore, the whole pseudo-code would be: +\begin{verbatim} +Create objects o1, o2, ... ok; +Create container c(o1, o2, ..., ok); +Optional: modify info-s for o1, o2, ... ok; +Optional: modify info for c; + +layout c, requiring layout of o1, o2, ... ok; +establish where to draw c; +draw red rectangle defined by c; +draw components o1, o2, ...ok within c +\end{verbatim} + +A natural conclusion is that an object must not be laid out more than once, because otherwise +inconsistent or superfluous equations would arise. To enforce this, by contract, +any object must keep record of whether its layout method has already been invoked, +and if the answer is affirmative, subsequent invocations of the layout macro would +do nothing. It is very important to mention that after the {\code layout} macro is +invoked over an object, modifying the {\code info} member of that object has +no subsequent effect, since the layout equations are declared and interpreted only once. + +\subsection{Notes on the Implementation of Links} + +MetaUML considers edges in diagram graphs as links. A link is composed of a path and the +heads (possible none, one or two). For example, since an association has no heads, it suffices +to draw along the path with a solid pen; however, an unidirectional aggregation has, in addition +to a solid path, two heads: one is an arrow and the other is a diamond. + +The general algorithm for drawing a link is: + +\begin{verbatim} +0. Reserve space for heads +1. Draw the path (except for the heads) +2. Draw head 1 +3. Draw head 2 +\end{verbatim} + +Each of the UML link types define how the drawing should be done, in each of the +cases (1, 2 and 3). Consider the link type of unidirectional composition. +Its ``class'' is declared as: + +\begin{verbatim} +vardef CompositionUniInfo@# = + LinkInfo@#; + + @#widthA = defaultRelationHeadWidth; + @#heightA = defaultRelationHeadHeight; + @#drawMethodA = "drawArrow"; + + @#widthB = defaultRelationHeadWidth; + @#heightB = defaultRelationHeadHeight; + @#drawMethodB = "drawDiamondBlack"; + + @#drawMethod = "drawLine"; +enddef; +\end{verbatim} + +Using this definition, the actual description is created like this: + +\begin{verbatim} +CompositionUniInfo.compositionUni; +\end{verbatim} + +As shown previously, is is the macro {\code link} which +performs the actual drawing, using the link description information +which is given as parameter (generally called {\code iLink}). +For example, we can use: + +\begin{verbatim} +link(aggregationUni)((0,0)--(40,0)); +\end{verbatim} + +%\begin{figure} +%\centering +%\includegraphics{fig/how-links-work.1} +%\caption{An example of a picture stack.} +%\label{fig:hlw} +%\end{figure} + +Let us see now the inner workings of macro {\code link}. Its definition is: + +\begin{verbatim} +vardef link(text iLink)(expr myPath)= + LinkStructure.ls(myPath, + iLink.widthA, iLink.widthB); + drawLinkStructure(ls)(iLink); +enddef; +\end{verbatim} + +\begin{figure} +\centering +\begin{tabular}{l|l} +$AB$ & the path specified by the user \\ +$|AA'|$ & {\code iLink.widthA}\\ +$|BB'|$ & {\code iLink.widthB} +\end{tabular} +\includegraphics{fig/how-links-work.2} +\caption{Details on how a link is drawn by MetaUML.} +\label{fig:hlw2} +\end{figure} + +First, space is reserved for heads, by ``shortening'' the given path {\code myPath} +by {\code iLink.widthA} at the beginning and by {\code iLink.widthB} at the end. +After that, the shortened path is drawn with the ``method'' +given by {\code iLink.drawMethod} and the heads with the ``methods'' +{\code iLink.drawMethodA} and {\code iLink.drawMethodB}, +respectively (figure \ref{fig:hlw2}). + +\subsection{Object Definitions: Easier {\code generic\_declare}} + +In MetaPost, if somebody wants to define something resembling a class in an object-oriented language, +named, say, {\code Person}, he would do something like this: + +\begin{verbatim} +vardef Person@#(expr _name, _age)= + % @# prefix can be seen as `this` pointer + string @#name; + numeric @#age; + + @#name := _name; + @#age := _age; +enddef; +\end{verbatim} + +This allows for the creation of instances (or objects) of class {\code Person} by using +declarations like: + +\begin{verbatim} +Person.personA; +Person.personB; +\end{verbatim} + + However, if one also wants to able able to create indexed arrays of persons, such as +{\code Person.student0}, {\code Person.student1} etc., the definition of class +{\code Person} must read: + +\begin{verbatim} +vardef Person@#(expr _name, _age)= + _n_ := str @#; + generic_declare(string) _n.name; + generic_declare(numeric) _n.age; + + @#name := _name; + @#age := _age; +enddef; +\end{verbatim} + +This construction is rather inelegant. MetaUML offers alternative macros to achieve +the same effect, uncluttering the code by removing the need for the unaesthetic {\code \_n\_} and +{\code \_n}. + +\begin{verbatim} +vardef Person@#(expr _name, _age)= + attributes(@#); + var(string) name; + var(numeric) age; + + @#name := _name; + @#age := _age; +enddef; +\end{verbatim} + +\section{Customization in MetaUML: Examples} +\label{section:customization} + +We have seen that in MetaUML the ``how to draw'' information is memorized into the so-called +``{\code Info}'' structures. For example, the default way in which a {\code Picture} object is +to be drawn is recorded into an instance of {\code PictureInfo}, named {\code iPict}. In this section we +present a case study involving the customization of {\code Class} objects. The customization of +any other MetaUML objects works similarly. Here we cannot possibly present all the customization +options for all kinds of MetaUML objects: this would take too long. Nevertheless, an interested reader can refer +to the top of the appropriate MetaUML library file, where {\code Info} structures are defined. +For example, class diagram related definitions are in {\code metauml\_class.mp}, activity diagram +definitions are in {\code metauml\_activity.mp} etc. + +\subsection{Global settings} + +Let us assume that we do not particularly like the default foreground color of all classes, and wish +to change it so something yellowish. In this scenario, one would most likely want to change +the appropriate field in {\code iClass}: + +\begin{verbatim} +iClass.foreColor := (.9, .9, 0); +\end{verbatim} + +After this, we can obtain the following result: + +\begin{multicols}{2} +\begin{verbatim} +Class.A("A")()(); +Class.B("B")()(); +Class.C("C")()(); + +B.w = A.e + (20,0); +C.n = .5[A.se, B.sw] + (0, -10); + +drawObjects(A, B, C); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/class_customization.1} +\end{multicols} + +\subsection{Individual settings} + +To modify the settings of one particular {\code Class} objects, another strategy is more appropriate. How about having class +{\code C} stand out with a light blue foreground color, a bigger font size for the class name and a blue border? + +\begin{multicols}{2} +\begin{verbatim} +iPict.foreColor := (.9, .9, 0); + +Class.A("A")()(); +Class.B("B")()(); +Class.C("C")()(); +C.info.foreColor := (.9, .7, .7); +C.info.borderColor := green; +C.info.iName.iFont.scale := 2; + +% positioning code ommited +drawObjects(A, B, C); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/class_customization.2} +\end{multicols} + +As an aside, each {\code Class} object has an {\code info} member which is created as +a copy of {\code iClass}; the actual drawing is performed using this copied +information. Because of that, the {\code info} member can be safely modified after the object +has been created, obtaining the expected results and not influencing other objects. + +Another thing worth mentioning is that the {\code ClassInfo} structure contains +the {\code iName} member, which is an instance of {\code PictureInfo}. In our example we +do not want to modify the spacings around the {\code Picture} object, +but the characteristics of the font its contents is typeset into. To do that, +we modify the {\code iName.iFont} member, which by default is a copy of {\code iFont} +(an instance of {\code FontInfo}, defined in {\code util\_picture.mp}). +If, for example, we want to change the font the class name is rendered into, we would set +the attribute {\code iName.iFont.name} to a string representing a font name +on our system (as used with the MetaPost {\code infont} operator). + +\subsection{Predefined settings} + +This usage scenario is perhaps more interesting. Suppose that we have two +types of classes which we want to draw differently. Making the setting adjustments +for each individual class object would soon become a nuisance. MetaUML's solution consists in the +ability of using predefined ``how to draw'' {\code Info} objects. Let us create such objects: + +\begin{verbatim} +ClassInfoCopy.iHome(iClass); +iHome.foreColor := (0, .9, .9); + +ClassInfo.iRemote; +iRemote.foreColor := (.9, .9, 0); +iRemote.borderColor := green; +\end{verbatim} + +Object {\code iHome} is a copy of {\code iClass} (as it might have been set at +the time of the macro call). Object {\code iRemote} is created just as {\code iClass} +is originally created. We can now use these {\code Info} objects to easily set the +``how to draw'' information for classes. The result is depicted below, +please note the ``{\code E}'' prefix in {\code EClass}: + +\begin{multicols}{2} +\begin{verbatim} +EClass.A(iHome)("UserHome")()(); +EClass.B(iRemote)("UserRemote")()(); +EClass.C(iHome)("CartHome")()(); +EClass.D(iRemote)("CartRemote")()(); +\end{verbatim} +\columnbreak +\hspace{1cm}\includegraphics{fig/class_customization.3} +\end{multicols} + +\subsection{Extreme customization} + +When another font (or font size) is used, it may become necessary to change the space between the +baselines of attributes and methods. Figure below is the result of the (unlikely) code: + +\begin{multicols}{2} +\begin{verbatim} +Class.A("Foo") + ("a: int", "b: int") + ("foo()", "bar()", "gar()"); + +A.info.iName.iFont.name := metauml_defaultFontBold; +A.info.iName.iFont.scale := 1.2; + +A.info.iAttributeStack.iPict.iFont.scale := 0.8; +A.info.iAttributeStack.top := 10; +A.info.iAttributeStack.spacing := 11; + +A.info.iMethodStack.iPict.iFont.scale := 2; +A.info.iMethodStack.spacing := 17; +A.info.iMethodStack.bottom := 10; + +drawObject(A); +\end{verbatim} +\columnbreak +\hspace{4cm}\includegraphics{fig/class_customization.4} +\end{multicols} + +\begin{verbatim} +\end{verbatim} + +Both {\code iAttributeStack} and {\code iMethodStack} are instances of +{\code PictureStackInfo}, which is used to control the display of {\code PictureStack} objects. +%We can also customize the size and colors of the ``locks'' by setting {\code A.info.iLock}. + +As font names, you can choose from the globally defined {\code metauml\_defaultFont}, {\code metauml\_defaultFontOblique}, {\code metauml\_defaultFontBold}, {\code metauml\_defaultFontBoldOblique}, or any other name of a font that is available on your system. + +\section{Alternatives to MetaUML} + +No software package is perfect, and for this MetaUML is a prime example. Here is a list of packages that may also be used to create UML diagrams for LaTeX work: + +\begin{itemize} +\item uml.sty \cite{umlsty} +\item pst-uml \cite{pstumlsty} +\item umldoc \cite{umldoc} +\item TiKZ-UML \cite{tikzuml} +\end{itemize} + +Do not ignore the possibility of creating your diagrams using a GUI program, and then exporting them into a LaTex-friendly open format such as SVG \cite{svglatex}. + +\pagebreak +\input{test-suite} + +\pagebreak +\section{References} +\printbibliography[heading=none] + +\end{document} diff --git a/Master/texmf-dist/doc/metapost/metauml/manual/test-suite.tex b/Master/texmf-dist/doc/metapost/metauml/manual/test-suite.tex new file mode 100644 index 00000000000..b0aa9a66856 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/metauml/manual/test-suite.tex @@ -0,0 +1,82 @@ +% Part of the MetaUML manual +% Copyright (c) 2005 Ovidiu Gheorghies +% +% Permission is granted to copy, distribute and/or modify this document +% under the terms of the GNU Free Documentation License, Version 1.2 +% or any later version published by the Free Software Foundation; +% with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. +% A copy of the license is included in the section entitled "GNU +% Free Documentation License". + +\newcommand{\metaumltest}[2]{Test #2 --- \\ \includegraphics{fig/test_#1.#2} \\ } +\newcommand{\metaumltests}[2]{\multido{\iA=1+1}{#2}{\metaumltest{#1}{\iA}}} + +\section{Test Suite} + +\subsection{Low-level} + \metaumltests{lowlevel}{2} + +\subsection{Fonts} + \metaumltests{font}{3} + +\subsection{Util library} + \subsubsection{Picture tests} + \metaumltests{picture}{10} + + \subsubsection{Picture tests - TeX rendering} + \metaumltests{picture_tex_rendering}{1} + + \subsubsection{Group tests} + \metaumltests{group}{2} + + \subsubsection{PictureStack tests} + \metaumltests{picture_stack}{7} + + \subsubsection{Positioning tests} + \metaumltests{positioning}{6} + +\subsection{Class diagram} + \subsubsection{Class tests} + \metaumltests{class}{16} + \subsubsection{Class feature types tests} + \metaumltests{class_feature_types}{5} + \subsubsection{Class template tests} + \metaumltests{class_templates}{3} + + \subsubsection{Qualified Association tests} + \metaumltests{class_qual_assoc}{2} + +\subsection{Package diagram} +\subsubsection{Package tests} + \metaumltests{package}{2} + +\subsection{Component diagram} +\subsubsection{Component tests} + \metaumltests{component}{1} + +\subsection{Paths} + \metaumltests{paths}{3} + +\subsection{Behavioral diagrams} + \subsubsection{Activity tests} + \metaumltests{activity}{2} + + \subsubsection{State Machine tests} + \metaumltests{state}{5} + + \subsubsection{Usecase tests} + \metaumltests{usecase}{9} + +\subsection{Miscelaneous} + \subsubsection{Notes} + \metaumltests{note}{2} + \subsubsection{Objects (Class Instances)} + \metaumltests{instance}{1} + +\subsection{User requests} + Test 1 --- \\ \includegraphics[scale=.2]{fig/test_lars_issues.1} \\ + \metaumltest{lars_issues}{2} + +\subsection{Skins} + \metaumltests{skins}{1} + \metaumltests{skins_global_defaults}{1} diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml-manual-v0.2.6-19d34de3da75cbd9f814f0a9ec03b4e0861b1541.pdf b/Master/texmf-dist/doc/metapost/metauml/metauml-manual-v0.2.6-19d34de3da75cbd9f814f0a9ec03b4e0861b1541.pdf new file mode 100644 index 00000000000..30c8ae4f5f3 Binary files /dev/null and b/Master/texmf-dist/doc/metapost/metauml/metauml-manual-v0.2.6-19d34de3da75cbd9f814f0a9ec03b4e0861b1541.pdf differ diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/activity.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/activity.mp deleted file mode 100644 index 676d1996eb1..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/activity.mp +++ /dev/null @@ -1,52 +0,0 @@ -% Sample MetaUML figures. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -input metauml; - -beginfig(1); - Begin.b; - End.e; - FlowFinal.f; - - leftToRight(20)(b, e, f); - - drawObjects(b, e, f); -endfig; - -beginfig(2); - Activity.A("Learn MetaUML -", - "the MetaPost UML library"); - drawObject(A); -endfig; - -beginfig(3); - Fork.forkA("h", 50); - Fork.forkB("v", 20); - - leftToRight(10)(forkA, forkB); - - drawObjects(forkA, forkB); -endfig; - -beginfig(4); - Branch.testA; - - drawObject(testA); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/activity_diagrams.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/activity_diagrams.mp deleted file mode 100644 index 0807619acd9..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/activity_diagrams.mp +++ /dev/null @@ -1,59 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -% for f in `find . | grep '.*\.[1-9]'`; do echo $f; done - -input metauml; - -beginfig(1); - Begin.b; - Activity.eat("Eat something good", "from the kitchen"); - Branch.enough; - Fork.fork("h", 50); - Activity.read("Read a book"); - Activity.listen("Listen to music", "(and ignore it)"); - Fork.join("h", 50); - End.e; - - eat.n = b.s + (0,-20); - enough.n = eat.s + (0,-20); - fork.n = enough.s + (0, -20); - - read.top = listen.top = fork.bottom - 30; - listen.left - read.right = 10; - b.midx = .5[listen.left, read.right]; - - join.n = (b.midx, listen.bottom - 20); - e.n = join.s + (0, -20); - - drawObjects(b, eat, enough, fork, read, listen, join, e); - - clink(transition)(b, eat); - clink(transition)(eat, enough); - link(transition)(pathStepX(enough.w, eat.w, -80)); - clink(transition)(enough, fork); - clink(transition)(fork, read); - clink(transition)(fork, listen); - clink(transition)(read, join); - clink(transition)(listen, join); - clink(transition)(join, e); - - item(iGuard)("still hungry")(obj.se = enough.w + (-20, 0)); - item(iGuard)("had enough")(obj.nw = enough.s + (0, -4)); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/appetizer.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/appetizer.mp deleted file mode 100644 index 9842b23d9df..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/appetizer.mp +++ /dev/null @@ -1,203 +0,0 @@ -% Sample MetaUML figures. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -beginfig(1); - Class.Client("Client")()(); - - Class._Component("Component")()(); - %("+Operation()", "+Add(Component)", "+Remove(Component)", "+GetChild(int)"); - classStereotype._Component("<>"); - - Class.Leaf("Leaf")()("+Operation()"); - - Class.Composite("Composite")()(); - %("+Operation()", "+Add(Component)", "+Remove(Component)", "+GetChild(int)"); - - leftToRight.top(30)(Client, _Component); - leftToRight.top(20)(Leaf, Composite); - .5[Leaf.ne, Composite.nw] = below(_Component.s, 45); - - drawObjects(Client, _Component, Leaf, Composite); - - link(associationUni)(pathHorizontal(Client.e, _Component.left)); - link(inheritance)(pathStepY(Leaf.n, _Component.s, 20)); - link(inheritance)(pathStepY(Composite.n, _Component.s, 20)); - - link(aggregationUni)(pathStepX(_Component.e, Composite.e, 55)); -endfig; - -beginfig(2); - Begin.b; - Activity.eat("Eat something good", "from the kitchen"); - Branch.enough; - Fork.fork("h", 50); - Activity.read("Read a book"); - Activity.listen("Listen to music", "(and ignore it)"); - Fork.join("h", 50); - End.e; - - leftToRight.top(10)(read, listen); - Group.readListen(read, listen); - - leftToRight(30)(b, eat); - topToBottom(20)(eat, enough, fork, readListen, join, e); - - drawObjects(b, eat, enough, fork, readListen, join, e); - - clink(transition)(b, eat); - clink(transition)(eat, enough); - link(transition)(pathStepX(enough.e, eat.e, 80)); - clink(transition)(enough, fork); - clink(transition)(fork, read); - clink(transition)(fork, listen); - clink(transition)(read, join); - clink(transition)(listen, join); - clink(transition)(join, e); - - item(iGuard)("still hungry")(obj.sw = enough.e + (20, 0)); - item(iGuard)("had enough")(obj.nw = enough.s + (0, -4)); -endfig; - -beginfig(3); - Actor.user("User"); - Actor.db("Database"); - - Usecase.dbquery("Query database"); - Usecase.auth("Authenticate user"); - Usecase.authA("Authenticate by", "username, password"); - Usecase.authB("Authenticate by", "smartcard"); - - leftToRight(30)(user.human, auth, dbquery, db.human); - leftToRight.top(30)(authA, authB); - .5[authA.ne, authB.nw] = below(auth.s, 20); - - drawObjects(user, auth, dbquery, db, authA, authB); - - clink(inheritance)(authA, auth); - clink(inheritance)(authB, auth); - clink(association)(auth, dbquery); - clink(association)(user.human, auth); - clink(association)(dbquery, db.human); -endfig; - -beginfig(4); - save b, e, reading, processing, composite, exit, error, result, theEnd; - - Begin.b; - State.reading("Reading commands")(); - State.processing("Processing commands")(); - End.e; - - State.composite("Working")(b, reading, processing, e); - composite.info.left := composite.info.right := 10; - composite.info.drawNameLine := 1; - - topToBottom(20)(b, reading, processing, e); - drawObject(composite); - - clink(transition)(b, reading); - clink(transition)(reading, processing); - clink(transition)(processing, e); - - ExitPoint.exit; - exit.c=(composite.right, reading.midy); - drawObject(exit); - item(iAssoc)("error")(obj.nw = exit.s); - - clink(transition)(reading, exit); - - State.error("Preparing error report")(); - State.result("Writing result")(); - End.theEnd; - - topToBottom(20)(error, result, theEnd); - leftToRight(30)(exit, error); - - drawObjects(error, result, theEnd); - - clink(transition)(exit, error); - clink(transition)(error, result); - clink(transition)(result, theEnd); - - link(transition)(rpathHorizontal(result.w, composite.right)); -endfig; - - -beginfig(5); - save A, B; - - Note.A("An important", "UML note"); - Note.B("Another note"); - - leftToRight(20)(A, B); - drawObjects(A, B); - - clink(dashedLink)(A, B); -endfig; - -beginfig(6); - Class.A("A")()(); - Class.B("B")()(); - - Package.pA("net.foo")(); - Package.pB("net.foo.bar")(A, B); - - leftToRight(20)(A, B); - leftToRight(50)(pA, pB); - - drawObjects(A, B, pA, pB); - - clink(nest)(pB, pA); -endfig; - -beginfig(7); - save A; - - Class.A("MyClass") - ("attr1: int", "attr2: int") - ("method1(): void", - "method2(): void"); - - A.nw = (0, 0); % optional, implied - drawObject(A); -endfig; - -beginfig(8); - save A, B; - Class.A("A")()(); - Class.B("B")()(); - - A.nw = (0,0); - B.e = A.w + (-20, 0); - - drawObjects(A, B); -endfig; - -beginfig(9); - save A, B; - - Class.A("A")()(); - Class.B("B")()(); - B.e = A.w + (-20, 0); - drawObjects(A, B); - link(inheritance)(B.e -- A.w); -endfig; -end - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/boxes_vs_util.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/boxes_vs_util.mp deleted file mode 100644 index 985c9bb158b..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/boxes_vs_util.mp +++ /dev/null @@ -1,92 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input boxes; -input util_commons; -input util_object; -input util_picture; - -beginfig(1); - boxit.a ("yummy"); - boxit.b ("cool"); - - a.nw = (0,0); - b.sw = a.se + (10,0); - - drawboxed (a, b); - draw a.sw -- b.se dashed evenly withpen pencircle scaled 1.1; - - boxit.c ("yummy"); - boxit.d ("cool"); - - c.nw = (0,-20); - d.sw = c.se + (10,0); - - drawunboxed (c, d); - draw c.sw -- d.se dashed evenly withpen pencircle scaled 1.1; -endfig; - -beginfig(2); - save a, b, c, d; - - Picture.a("yummy"); - Picture.b("cool"); - a.info.boxed := b.info.boxed := 1; - - a.nw = (0,0); - b.sw = a.se + (10,0); - - drawObjects(a, b); - draw a.sw -- b.se dashed evenly withpen pencircle scaled 1.1; - - Picture.c("yummy"); - Picture.d("cool"); - - c.nw = (0,-20); - d.sw = c.se + (10,0); - - drawObjects(c, d); - draw c.sw -- d.se dashed evenly withpen pencircle scaled 1.1; -endfig; - -beginfig(3); - save a, b, c, d; - - iPict.ignoreNegativeBase := 1; - - Picture.a("yummy"); - Picture.b("cool"); - a.info.boxed := b.info.boxed := 1; - - a.nw = (0,0); - b.sw = a.se + (10,0); - - drawObjects(a, b); - draw a.sw -- b.se dashed evenly withpen pencircle scaled 1.1; - - Picture.c("yummy"); - Picture.d("cool"); - - c.nw = (0,-20); - d.sw = c.se + (10,0); - - drawObjects(c, d); - draw c.sw -- d.se dashed evenly withpen pencircle scaled 1.1; -endfig; - - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/class.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/class.mp deleted file mode 100644 index 7b910f31fc8..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/class.mp +++ /dev/null @@ -1,119 +0,0 @@ -% Sample MetaUML figures. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -input metauml; - -beginfig(1); - Class.A("Point") - ("#x:int", "#y:int") - ("+set(x:int, y:int)", - "+getX():int", - "+getY():int", - "-debug():void"); - drawObject(A); -endfig; - -beginfig(2); - save A, T; - - Class.A("User")()(); - classStereotypes.A("<>", "<>"); - - drawObject(A); -endfig; - -beginfig(3); - save A, T; - - Class.A("Vector")()(); - ClassTemplate.T("T", "size: int")(A); - - drawObjects(A, T); -endfig; - -beginfig(4); - link(association)( (0,0) -- (50,0) ); -endfig; - -beginfig(5); - link(associationUni)( (0,0) -- (50,0) ); -endfig; - -beginfig(6); - link(inheritance)( (0,0) -- (50,0) ); -endfig; - -beginfig(7); - link(aggregation)( (0,0) -- (50,0) ); -endfig; - -beginfig(8); - link(aggregationUni)( (0,0) -- (50,0) ); -endfig; - -beginfig(9); - link(composition)( (0,0) -- (50,0) ); -endfig; - -beginfig(10); - link(compositionUni)( (0,0) -- (50,0) ); -endfig; - -beginfig(11); - save A; - Interface.A("Observer") - ("+update(src:Object)"); - - drawObject(A); -endfig; - -beginfig(12); - save A; - EClass.A(iAbstractClass)("Observable") - ("observers: Observer[0..*]") - ("+addObserver(o: Observer)", - "+notify()"); - - drawObject(A); -endfig; - -beginfig(13) - save A; - - Class.A("MyModel")()(); - A.info.iAttributeStack.top := 0; - A.info.iAttributeStack.bottom := 0; - A.info.iMethodStack.top := 0; - A.info.iMethodStack.bottom := 0; - - drawObject(A); -endfig; - -beginfig(14) - save A, B; - - EClass.A(iClassNameOnly)("MyModel")()(); - ClassName.B("AnotherModel"); - classStereotypes.B("<>"); - - topToBottom(20)(A, B); - - drawObjects(A, B); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/class_association.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/class_association.mp deleted file mode 100644 index 2ff5037a8c8..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/class_association.mp +++ /dev/null @@ -1,72 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -beginfig(1); - save P,B; - - Class.P("Person")()(); - Class.B("Bank")()(); - - P.nw = (0,0); - B.w = P.e + (50,0); - - drawObjects(P, B); - - drawRelation(association)(P.e -- B.w); - - item.assocName(iAssoc)("works for")(assocName.s = .5[P.e,B.w]); - - draw assocName.n -- (assocName.n + (20,20)); - label.urt("association name" infont "tyxtt", assocName.n + (20,20)); -endfig; - -beginfig(2); - save P,C; - - Class.P("Person")()(); - Class.C("Company")()(); - - C.n = P.s + (0, -70); - drawObjects(P, C); - - link(association)(P.s -- C.n); - - item(iAssoc)("employee")(obj.nw = P.s); - item(iAssoc)("1..*")(obj.ne = P.s); - - item(iAssoc)("employer")(obj.sw = C.n); - item(iAssoc)("0..*")(obj.se = C.n); - - item(iAssoc)("works for")(obj.w = .5[P.s,C.n]); -endfig; - -beginfig(3); - save F, O; - - Class.F("Factory")()(); - Class.O("Object")()(); - - O.n = F.s - (0, 50); - drawObjects(F, O); - - clink(dependency)(F, O); - item(iStereo)("<>")(obj.w = .5[F.s,O.n]) -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/class_customization.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/class_customization.mp deleted file mode 100644 index c6e849683c2..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/class_customization.mp +++ /dev/null @@ -1,188 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -beginfig(1); - iClass.foreColor := (.9, .9, 0); - - Class.A("A")()(); - Class.B("B")()(); - Class.C("C")()(); - - B.w = A.e + (20,0); - C.n = .5[A.se, B.sw] + (0, -10); - - drawObjects(A, B, C); -endfig; - -beginfig(2); - save A, B, C; - iClass.foreColor := (.9, .9, 0); - - Class.A("A")()(); - Class.B("B")()(); - Class.C("C")()(); - C.info.foreColor := (.7, .7, .9); - C.info.borderColor := blue; - C.info.iName.iFont.scale := 2; - - B.w = A.e + (20,0); - C.n = .5[A.se, B.sw] + (0, -10); - - drawObjects(A, B, C); -endfig; - -beginfig(3); - ClassInfoCopy.iHome(iClass); - iHome.foreColor := (0, .9, .9); - - ClassInfo.iRemote; - iRemote.foreColor := (.9, .9, 0); - iRemote.borderColor := (0, 0, .9); - - save A, B, C, D; - - EClass.A(iHome)("UserHome")()(); - EClass.B(iRemote)("UserRemote")()(); - EClass.C(iHome)("CartHome")()(); - EClass.D(iRemote)("CartRemote")()(); - - - B.nw = A.ne + (20,0); - D.nw = C.ne + (20,0); - A.bottom - C.top = 10; - A.left = C.left; - - drawObjects(A, B, C, D); -endfig; - -beginfig(4); - iClass.foreColor := .9white; - save A; - - Class.A("Foo") - ("a: int", "b: int") - ("foo()", "bar()", "gar()"); - A.info.iName.iFont.name := metauml_defaultFontBold; - A.info.iName.iFont.scale := 1.2; - - A.info.iAttributeStack.iPict.iFont.scale := 0.8; - A.info.iAttributeStack.top := 10; - A.info.iAttributeStack.spacing := 11; - - A.info.iMethodStack.iPict.iFont.scale := 2; - A.info.iMethodStack.spacing := 17; - A.info.iMethodStack.bottom := 10; - drawObject(A); -endfig; - -%beginfig(1); -% save Test; -% Class.Test("Test")("n:int","a2", "a3")("aLongMethod():void"); -% %, "anotherLongMethod():void", "yetAnotherLongMethod()"); - -% Test.sw = (0,0); -% Class_draw.Test; - -% dotlabel.ulft(btex nw etex, Test.nw); -% dotlabel.top(btex n etex, Test.n); -% dotlabel.urt(btex ne etex, Test.ne); -% dotlabel.urt(btex e etex, Test.e); -% dotlabel.lrt(btex se etex, Test.se); -% dotlabel.llft(btex s etex, Test.s); -% dotlabel.llft(btex sw etex, Test.sw); -% dotlabel.lft(btex w etex, Test.w); - -% dotlabel.ulft(btex c etex, Test.c); - -% draw Test.nw - (50,0) -- Test.ne + (30,0) dashed evenly; -% label.urt(btex top etex, Test.nw - (50,0)); - -% draw Test.sw - (50,0) -- Test.se + (30,0) dashed evenly; -% label.lrt(btex bottom etex, Test.sw - (50,0)); - -% draw Test.nw + (0,25) -- Test.sw - (0, 50) dashed evenly; -% label.bot(btex left etex, Test.sw - (0,50)); - -% draw Test.ne + (0,25) -- Test.se - (0, 50) dashed evenly; -% label.bot(btex right etex, Test.se - (0,50)); - -% drawdblarrow Test.nw - (40,0) -- Test.sw - (40,0); -% label.lft(btex height etex, .5[Test.nw, Test.sw] - (40,0)); - -% drawdblarrow Test.sw - (0,40) -- Test.se - (0,40); -% label.bot(btex width etex, .5[Test.sw, Test.se] - (0,40)); - -% draw Test.n -- Test.s + (0, -20) dashed evenly; -% label.bot(btex midx etex, Test.s + (0,-20)); - -% draw Test.w -- Test.e + (20,0) dashed evenly; -% label.rt(btex midy etex, Test.e + (20,0)); - -% draw Test.sw + (classLeftMargin,0) -- Test.nw + (classLeftMargin, 25) dashed evenly; -% draw Test.se + (-classRightMargin,0) -- Test.ne + (-classRightMargin, 25) dashed evenly; - -% drawdblarrow Test.nw + (0,20) -- Test.nw + (classLeftMargin, 20); -% label.top(btex classLeftMargin etex, Test.nw + (classLeftMargin/2, 25)); - -% drawdblarrow Test.ne + (0,20) -- Test.ne + (-classRightMargin, 20); -% label.top(btex classRightMargin etex, Test.ne + (-classLeftMargin/2, 25)); - -% pair A,B; -% A := ((xpart Test.ne) + 30, ypart Test.ne); -% B := ((xpart Test.ne) + 30, ypart Test.namePict.nw); -% draw Test.namePict.nw -- B dashed evenly; -% drawdblarrow A-(10,0) -- B-(10,0); -% label.rt(btex classNameBefore etex, .5[A,B]); - -% A := (xpart A, ypart Test.namePict.se); -% B := (xpart A, Test.nameEndsAtY - classNameAfter); -% draw Test.namePict.se -- A dashed evenly; -% draw (xpart Test.namePict se, ypart B) -- B dashed evenly; -% drawdblarrow A-(10,0) -- B-(10,0); -% label.rt(btex classNameAfter etex, .5[A,B]); - -% A := B; -% B := (xpart A, ypart Test.attributePict[0].ne); -% draw Test.attributePict[0].ne -- B dashed evenly; -% drawdblarrow A-(10,0) -- B-(10,0); -% label.rt(btex classAttributesBefore etex, .5[A,B]); - -% A := (xpart A, ypart Test.attributePict[2].se); -% B := A + (0, -classAttributesAfter); -% draw Test.attributePict[2].se -- A dashed evenly; -% draw (Test.attributePict[2].se + (0, -classAttributesAfter)) -- B dashed evenly; -% drawdblarrow A-(10,0) -- B-(10,0); -% label.rt(btex classAttributesAfter etex, .5[A,B]); - -% A := B; -% B := (xpart A, ypart Test.methodPict[0].ne); -% draw Test.methodPict[0].ne -- B dashed evenly; -% drawdblarrow A-(10,0) -- B-(10,0); -% label.rt(btex classMethodsBefore etex, .5[A,B]); - -% A := (xpart A, ypart Test.methodPict[0].se); -% B := A + (0, -classMethodsAfter); -% draw Test.methodPict[0].se -- A dashed evenly; -% draw (Test.methodPict[0].se + (0, -classMethodsAfter)) -- B dashed evenly; -% drawdblarrow A-(10,0) -- B-(10,0); -% label.rt(btex classMethodsAfter etex, .5[A,B]); -% endfig; - - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/class_customization2.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/class_customization2.mp deleted file mode 100644 index be45e95240b..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/class_customization2.mp +++ /dev/null @@ -1,31 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -beginfig(1); - save Test; - Class.Test("TestClass")("attribute1: int","attribute2: double") - ("oneLongMethod(): void", - "anotherLongMethod(): void"); - - Test.nw = (0,0); - Class_draw.Test; -endfig; - - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/class_diagrams.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/class_diagrams.mp deleted file mode 100644 index 614cdbeca60..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/class_diagrams.mp +++ /dev/null @@ -1,212 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -beginfig(1); - Class.Count("Count") - ("#n: int") - ("+increase(): void", - "+get(): int"); - - %Count.nw = (0,0); - drawObject(Count); - %Class_draw.Count; -endfig; - -beginfig(2); - Class.A("Point") - ("+x: int", - "+y: int") (); - - Class.B("Circle") - ("radius: int") - ("+getRadius(): int", - "+setRadius(r: int):void"); - - A.nw = (0,0); - B.n = A.s - (0,45); - Class_draw.A; - Class_draw.B; - - drawRelation(aggregationUni)(A.s -- B.n); -endfig; - -beginfig(3); - Class.Test("Test")("a1","a2","a3")("aLongMethod():void"); - - Test.nw = (0,0); - Class_draw.Test; - - dotlabel.ulft(btex nw etex, Test.nw); - dotlabel.top(btex n etex, Test.n); - dotlabel.urt(btex ne etex, Test.ne); - dotlabel.rt(btex e etex, Test.e); - dotlabel.lrt(btex se etex, Test.se); - dotlabel.bot(btex s etex, Test.s); - dotlabel.llft(btex sw etex, Test.sw); - dotlabel.lft(btex w etex, Test.w); - - dotlabel.lft(btex c etex, Test.c); - - draw Test.nw - (50,0) -- Test.ne + (10,0); - label.urt(btex top etex, Test.nw - (50,0)); - - draw Test.sw - (50,0) -- Test.se + (10,0); - label.lrt(btex bottom etex, Test.sw - (50,0)); - - draw Test.nw + (0,10) -- Test.sw - (0, 50); - label.bot(btex left etex, Test.sw - (0,50)); - - draw Test.ne + (0,10) -- Test.se - (0, 50); - label.bot(btex right etex, Test.se - (0,50)); - - drawarrow Test.nw - (25,0) -- Test.sw - (25,0); - label.lft(btex height etex, .5[Test.nw, Test.sw] - (25,0)); - - drawarrow Test.sw - (0,25) -- Test.se - (0,25); - label.bot(btex width etex, .5[Test.sw, Test.se] - (0,25)); -endfig; - -%newAssociationDescription.association; -%newAssociationUniDescription.associationUni; -%newInheritanceDescription.inheritance; -%newAggregationDescription.aggregation; -%newAggregationUniDescription.aggregationUni; -%newCompositionDescription.composition; -%newCompositionUniDescription.compositionUni; -%newDashedLinkDescription.dashedLink; -%newDependencyDescription.dependency; - -beginfig(4); - save X, Y; - Class.X("X")()(); - Class.Y("Y")()(); - - X.nw = (0,0); - Y.w = X.e + (50,0); - Class_draw.X; - Class_draw.Y; - - drawRelation(association)(X.e -- Y.w); -endfig; - -beginfig(5); - save X, Y; - Class.X("X")()(); - Class.Y("Y")()(); - - X.nw = (0,0); - Y.w = X.e + (50,0); - Class_draw.X; - Class_draw.Y; - - drawRelation(associationUni)(X.e -- Y.w); -endfig; - -beginfig(6); - save X, Y; - Class.X("X")()(); - Class.Y("Y")()(); - - X.nw = (0,0); - Y.w = X.e + (50,0); - Class_draw.X; - Class_draw.Y; - - drawRelation(inheritance)(X.e -- Y.w); -endfig; - -beginfig(7); - save X, Y; - Class.X("X")()(); - Class.Y("Y")()(); - - X.nw = (0,0); - Y.w = X.e + (50,0); - Class_draw.X; - Class_draw.Y; - - drawRelation(aggregation)(X.e -- Y.w); -endfig; - -beginfig(8); - save X, Y; - Class.X("X")()(); - Class.Y("Y")()(); - - X.nw = (0,0); - Y.w = X.e + (50,0); - Class_draw.X; - Class_draw.Y; - - drawRelation(aggregationUni)(X.e -- Y.w); -endfig; - -beginfig(9); - save X, Y; - Class.X("X")()(); - Class.Y("Y")()(); - - X.nw = (0,0); - Y.w = X.e + (50,0); - Class_draw.X; - Class_draw.Y; - - drawRelation(composition)(X.e -- Y.w); -endfig; - -beginfig(10); - save X, Y; - Class.X("X")()(); - Class.Y("Y")()(); - - X.nw = (0,0); - Y.w = X.e + (50,0); - Class_draw.X; - Class_draw.Y; - - drawRelation(compositionUni)(X.e -- Y.w); -endfig; - -beginfig(11); - save X, Y; - Class.X("X")()(); - Class.Y("Y")()(); - - X.nw = (0,0); - Y.w = X.e + (50,0); - Class_draw.X; - Class_draw.Y; - - drawRelation(dependency)(X.e -- Y.w); -endfig; - -beginfig(12); - save X, Y; - Class.X("X")()(); - Class.Y("Y")()(); - - X.nw = (0,0); - Y.w = X.e + (50,0); - Class_draw.X; - Class_draw.Y; - - drawRelation(realization)(X.e -- Y.w); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/class_templates.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/class_templates.mp deleted file mode 100644 index 8ef9b4be126..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/class_templates.mp +++ /dev/null @@ -1,45 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -beginfig(1); - Class.V("Vector")("elements: T(n)")(); - Template.T("T", "n: int"); - Template_attachToClass.T(V); - - drawObjects(V); - show "-----------------------------"; - drawObjects(T); -endfig; - -beginfig(2); -% save P,C; - -% newClass.P("Person")()(); -% newClass.C("Company")()(); - -% drawClassAt.P ( P.nw = (0,0) ); -% d rawClassAt.C ( C.w = P.e + (150,0) ); - -% drawRelation(association)(P.e -- C.w); - -% assocItem("employee", item.sw = P.e); -% assocItem("works for", item.n = .5[P.e,C.w]); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/cliparts.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/cliparts.mp deleted file mode 100644 index e84cca863f8..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/cliparts.mp +++ /dev/null @@ -1,73 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -%vardef Foo(text southeast)(text width)(text height)= -% e eroare daca e 'se' pentru ca inlocuieste in -% qqq.se - -vardef Foo(expr _se, _width, _height)= - - Picture.ppp("foo"); - drawObjectAt(ppp)(ppp.nw = (0,0)); - - save qqq; - Lock.qqq("base"); - qqq.se = (0,0); - drawObject (qqq); -enddef; - - -beginfig(1); -% drawLockLocked((0,10), (6,0)); -% drawLockUnlocked((50,10), (56,0)); -% drawLockBase((25,10), (31,0)); -% show w; - - numeric a, b; - path x; - a= 10; - b = 20; - x = (a,a)--(b,b); - draw x; - - Lock.lock("opened"); - drawObjectAt(lock)(lock.nw =(0,0)); - - Lock.lockB("closed"); - drawObjectAt(lockB)(lockB.nw=(20,0)); - - Lock.lockC("base"); - drawObjectAt(lockC)(lockC.nw=(40,0)); - - ELock.otherLock(iLock)("closed"); - drawObjectAt(otherLock)(otherLock.nw = (60,0)); - - LockInfo.iLockMy(30, 30, .55, .15, .55, .4white, .6white, .7white, .3white); - save foo; - ELock.foo(iLockMy)("opened"); - foo.se = (100,0); - drawObject(foo); - - pair q; - q := (30,30); - %Foo( q ) (20)( 20); - Foo( (0,0),1,3); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/component.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/component.mp deleted file mode 100644 index 2601d54c263..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/component.mp +++ /dev/null @@ -1,61 +0,0 @@ -input metauml; - -beginfig(1); - Component.C("Business Logic")(); - drawObject(C); -endfig; - -beginfig(2); - save A, B, C, BigC; - - Class.A("A")()(); - Package.B("B")(); - Component.C("C")(); - - Component.BigC("Big Component")(A, B, C); - - leftToRight(10)(A, B); - topToBottom(10)(A, C); - - drawObject(BigC); -endfig; - -beginfig(3); - save A, B; - Component.A("A")(); - Component.B("B")(); - - leftToRight(80)(A, B); - - drawObjects(A, B); - - link(providedInterface)( A.e -- .5[A.e, B.w] ); -endfig; - -beginfig(4); - save A, B; - Component.A("A")(); - Component.B("B")(); - - leftToRight(80)(A, B); - - drawObjects(A, B); - - link(requiredInterface)( B.w -- .5[A.e, B.w]); -endfig; - -beginfig(5); - save A, B; - Component.A("A")(); - Component.B("B")(); - - leftToRight(80)(A, B); - - drawObjects(A, B); - - link(providedInterface)( A.e -- .5[A.e, B.w] ); - link(requiredInterface)( B.w -- .5[A.e, B.w] ); -endfig; - - -end \ No newline at end of file diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/group.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/group.mp deleted file mode 100644 index 0e25e58ea66..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/group.mp +++ /dev/null @@ -1,51 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input boxes; -input util_commons; -input util_object; -input util_picture; -input util_margins; -input util_group; - -beginfig(1); - iGroup.left:=20; - iGroup.right:=15; - iGroup.boxed:=1; - iPict.boxed:=1; - - Picture.a("yummy"); - Picture.b("cool"); - Picture.c("fool"); - - a.nw = (0,0); - b.nw = (20,20); - c.nw = (15, 40); - - Group.g(a, b, c); - - drawObjects(g); -endfig; - -beginfig(2); -endfig; - -beginfig(3); -endfig; - - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/how-links-work.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/how-links-work.mp deleted file mode 100644 index c8d8500358d..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/how-links-work.mp +++ /dev/null @@ -1,38 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -beginfig(1); - drawRelation(aggregationUni) - ((0,0)--(40,0)); -endfig; - - -beginfig(2); - path myPath; - myPath := (0,0) -- (100,0); - LinkStructure.ls(myPath, - aggregationUni.widthA, - aggregationUni.widthB); - - describeLinkStructure(ls); - drawLinkStructure(ls)(aggregationUni); -endfig; - -end - diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/instance.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/instance.mp deleted file mode 100644 index 9417224306a..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/instance.mp +++ /dev/null @@ -1,9 +0,0 @@ -input metauml; - -beginfig(1); - Instance.order("o: Order") - ("name='book'", "{placed}", "{payed}"); - drawObject(order); -endfig; - -end \ No newline at end of file diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/mptextmp.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/mptextmp.mp deleted file mode 100644 index c4752be8c71..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/mptextmp.mp +++ /dev/null @@ -1 +0,0 @@ -btex $\sum_1^n f(x) \cdot dx \over \sum_1^m g(y) \cdot dy$ etex diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/mptrace.tmp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/mptrace.tmp deleted file mode 100644 index 041bb2d0e52..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/mptrace.tmp +++ /dev/null @@ -1,37 +0,0 @@ - -input metauml; - -iPict.boxed := 1; - -beginfig(1); - iClass.shade := 3; - Class.F("Foo")("a: int","b: int")(); - Class.B("Bar")()(); - B.nw = F.ne + (20,-20); - - drawObjects(B, F); - - link(association)(B.nw -- F.ne); - - draw objectBorder(B) withcolor red; - draw objectBorder(F) withcolor blue; - - link(association)(pathCut(B,F)(B.c--F.c)); -endfig; - -beginfig(2); - save A, B; - - Picture.A("A"); - Picture.B("Blue"); - - B.sw = A.ne + (20,20); - - drawObjects(A, B); - - link(associationUni)(pathManhattanX(A.e, B)); -endfig; - -end - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/note.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/note.mp deleted file mode 100644 index f04a5b5e4fe..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/note.mp +++ /dev/null @@ -1,74 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; -input TEX; - -beginfig(1); - Note.A("This note", "has two lines."); - drawObject(A); -endfig; - -beginfig(2); - save A, C; - Note.A("This is a class"); - Class.C("Object")()(); - - A.sw = C.ne + (20, 20); - - drawObjects(A, C); - - clink(dashedLink)(A, C); -endfig; - -beginfig(3); - save C; - Note.nA("This is the class name"); - Note.nB("This is a key attribute"); - Note.nC("This is a nice method"); - - Class.C("Object")("+id:int") - ("+clone()", "+serialize()"); - - topToBottom.left(10)(nA, nB, nC); - leftToRight(10)(C, nB); - - drawObjects(C, nA, nB, nC); - - clink(dashedLink)(C.namePict, nA); - clink(dashedLink)(C.attributeStack.pict[0], nB); - clink(dashedLink)(C.methodStack.pict[1], nC); -endfig; - -beginfig(4); - save A; - Note.A("This class implements the formula:", - TEX("$\sum_1^n f(x)\cdot dx$")); - drawObjects(A); -endfig; - -beginfig(5); - save A; - Note.A("Can you do it?", - TEX("$\sum_1^n f(x) \cdot dx " & - "\over \sum_1^m g(y) \cdot dy$")); - A.stack.info.spacing := 30; - A.stack.pict[1].info.ignoreNegativeBase := 0; - drawObjects(A); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/object_stack.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/object_stack.mp deleted file mode 100644 index b9cd4d32b34..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/object_stack.mp +++ /dev/null @@ -1,46 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input boxes; -input util_commons; -input util_object; -input util_picture; - - -beginfig(1); - iPict.ignoreNegativeBase := 1; - iPict.boxed := 1; - Picture.a0("yummy"); - Picture.a1("cool"); - Picture.a2("fool"); - - a0.nw = (0,0); - setObjectJoin(pa.sw = pb.nw); - - joinObjects(scantokens listArray(a)(3)); - drawObjects(scantokens listArray(a)(3)); - -endfig; - -beginfig(2); -endfig; - -beginfig(3); -endfig; - - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/package.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/package.mp deleted file mode 100644 index 88653b5fee0..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/package.mp +++ /dev/null @@ -1,93 +0,0 @@ -input metauml; -input metauml_package; -input metauml_package_relations; - -beginfig(1); - Package.P("java.lang")(); - drawObject(P); -endfig; - -beginfig(2); - save P; - Package.P("An important", "package")(); - drawObject(P); -endfig; - -beginfig(3); - save P; - Package.P("java.lang")(); - P.info.forceEmptyContent := 1; - drawObject(P); -endfig; - -beginfig(4); - save P, A, B; - Class.A("A")()(); - Class.B("B")()(); - Package.P("net.metauml")(A, B); - - leftToRight(10)(A, B); - - drawObject(P); -endfig; - -beginfig(5); - Package.X("X")(); - Package.Y("Y")(); - - leftToRight(50)(X, Y); - drawObjects(X, Y); - - link(nest)(X.e -- Y.w); -endfig; - -beginfig(8); - Package.emptyPackage("")(); - - Package.nameOnlyPackage("java.sun.com")(); - - Class.oneClass("A class")()(); - Package.oneClassPackage("One class package")(oneClass); - - Instance.oneInstance("An instance")(); - State.oneState("A state")(); - Activity.oneActivity("An activity"); - Package.multiPackage("Multipackage")(oneInstance, oneState, oneActivity); - - Package.allPackage("This package contains them all")(emptyPackage, nameOnlyPackage, - oneClassPackage, multiPackage); - - nameOnlyPackage.nw = emptyPackage.ne + (30, 0); - oneClassPackage.ne = emptyPackage.s - (0, 50); - - multiPackage.top = oneClassPackage.top; - multiPackage.left = oneClassPackage.right + 20; - - centered_align_top(oneState, oneActivity)(10, below(oneInstance.s, 20)); - - drawObjects(allPackage); -endfig; - -beginfig(8); - Package.nameOnlyOnTopPackage("Name on top")(); - nameOnlyOnTopPackage.info.forceEmptyContent := 1; - Package.nameOnlyInMiddlePackage("By default name", "is in the middle")(); - - Class.cl("A class")("Attribute")("Method"); - Package.notEmptyPackage("Contains class")(cl); - - nameOnlyInMiddlePackage.n = nameOnlyOnTopPackage.s - (0, 40); - notEmptyPackage.w = nameOnlyInMiddlePackage.e + (80, 0); - drawObjects(nameOnlyOnTopPackage, nameOnlyInMiddlePackage, notEmptyPackage); - - %link(import)(pathStepX(notEmptyPackage.w, nameOnlyOnTopPackage.e, -30)); - %link(import)(pathVertical(nameOnlyInMiddlePackage.ne - (10, 0), nameOnlyOnTopPackage.bottom)); - %link(import)(notEmptyPackage.sw -- nameOnlyInMiddlePackage.ne); -endfig; - -beginfig(8); - link(nest)((10,10)--(30,30)); -endfig; - - -end \ No newline at end of file diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/paths.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/paths.mp deleted file mode 100644 index 06ca5761209..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/paths.mp +++ /dev/null @@ -1,132 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -beginfig(1); - pair za, zb; - za = (10,10); - zb = (10,-5); - path cool; - cool := za .. za+(20,10) .. - zb+(20,-20) .. - zb+(-10,-30) -- zb; - link(aggregationUni)(cool); -endfig; - -beginfig(2); - save A, B; - Class.A("A")()(); - Class.B("B")()(); - - B.sw = A.ne + (10,10); - - drawObjects(A, B); - - link(aggregationUni) - (rpathManhattanX(A.e, B.s)); - link(inheritance) - (pathManhattanY(A.n, B.w)); -endfig; - -beginfig(3); - save A, B; - Class.A("A")()(); - Class.B("B")()(); - - B.sw = A.ne + (10,10); - - drawObjects(A, B); - - stepX:=60; - link(aggregationUni) - (pathStepX(A.e, B.e, stepX)); - - stepY:=20; - link(inheritance) - (pathStepY(B.n, A.n, stepY)); - - pair X,Y; - X := A.se + (0,-30); - Y := X + (stepX, 0); - draw A.se -- X dashed evenly; - draw (xpart Y, ypart A.e) -- Y dashed evenly; - drawdblarrow X + (0,15) -- Y + (0,15); - label.top(btex stepX etex, .5[X,Y]); - - pair X,Y; - X := B.n + (-70,-0); - Y := X + (0, stepY); - - draw B.n -- X dashed evenly; - draw B.n + (0,stepY) -- Y dashed evenly; - drawdblarrow X + (15,0) -- Y + (15,0); - label.lft(btex stepY etex, .5[X,Y]); -endfig; - -% horizontal, vertical -beginfig(4); - save A, B; - Class.A("A")()(); - Class.B("B")("b")(); - Class.C("C")("foo: int")(); - - B.sw = A.se + (30,5); - C.sw = A.nw + (0, 30); - - drawObjects(A, B, C); - - untilX := B.left; - drawRelation(association) - (pathHorizontal(A.e, untilX)); - - draw B.nw -- B.sw + (0,-10) dashed evenly; - label.bot(btex untilX etex, B.sw + (0,-10)); - - untilY:= C.bottom; - drawRelation(association)(pathVertical(A.n, untilY)); - - draw C.sw -- C.sw + (-20,0) dashed evenly; - label.lft(btex untilY etex, C.sw + (-20,-0)); - -endfig; - -beginfig(5); - save A,B; - Activity.A("A"); - Activity.B("B"); - - B.nw = A.ne + (40,30); - drawObjects(A,B); - - z = A.se + (30, -10); - link(transition)(pathCut(A, B) - (A.c -- z -- B.c)); -endfig; - -beginfig(6); - save A,B; - Class.A("A")()(); - Class.B("B")()(); - - B.nw = A.ne + (20,30); - drawObjects(A,B); - - clink(inheritance)(A, B); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/paths_man.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/paths_man.mp deleted file mode 100644 index a6c502f147b..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/paths_man.mp +++ /dev/null @@ -1,143 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -beginfig(1); - save A, B; - Class.A("A")("foo:int")("bar()"); - Class.B("B")()(); - - A.nw = (0,0); - B.s = A.ne + (30,30); - - Class_draw.A; - Class_draw.B; - - drawRelation(aggregationUni) - (A.n ..(30,30)..B.w); - path cool; - cool := A.e .. A.e+(20,10) .. - B.s+(20,-40) .. B.s+(-10,-30) - -- B.s; - drawRelation(inheritance)(cool); -endfig; - -beginfig(2); - save A, B; - Class.A("A")()(); - Class.B("B")()(); - - A.nw = (0,0); - B.sw = A.ne + (10,10); - - Class_draw.A; - Class_draw.B; - - drawRelation(aggregationUni) - (pathManhattanX(A.e, B.s)); - drawRelation(inheritance) - (pathManhattanY(A.n, B.w)); -endfig; - -beginfig(3); - save A, B; - Class.A("A")()(); - Class.B("B")()(); - - A.nw = (0,0); - B.sw = A.ne + (10,10); - - Class_draw.A; - Class_draw.B; - - stepX:=60; - drawRelation(aggregationUni) - (pathStepX(A.e, B.e, stepX)); - - stepY:=20; - drawRelation(inheritance) - (pathStepY(B.n, A.n, stepY)); - - pair X,Y; - X := A.se + (0,-30); - Y := X + (stepX, 0); - draw A.se -- X dashed evenly; - draw (xpart Y, ypart A.e) -- Y dashed evenly; - drawdblarrow X + (0,15) -- Y + (0,15); - label.top(btex stepX etex, .5[X,Y]); - - pair X,Y; - X := B.n + (-70,-0); - Y := X + (0, stepY); - - draw B.n -- X dashed evenly; - draw B.n + (0,stepY) -- Y dashed evenly; - drawdblarrow X + (15,0) -- Y + (15,0); - label.lft(btex stepY etex, .5[X,Y]); -endfig; - -beginfig(4); - save A, B; - Class.A("A")()(); - Class.B("B")("a")(); - - A.nw = (0,0); - B.sw = A.se + (30,5); - - Class_draw.A; - Class_draw.B; - - untilX := B.left; - drawRelation(association) - (pathHorizontal(A.e, untilX)); - - draw B.nw -- B.sw + (0,-10) dashed evenly; - label.bot(btex untilX etex, B.sw + (0,-10)); -endfig; - -beginfig(5); - save A, B; - Class.A("A")()(); - Class.B("B")("a")("foo()"); - - A.nw = (0,0); - B.sw = A.ne + (-20,20); - - Class_draw.A; - Class_draw.B; - - untilY:= B.bottom; - drawRelation(association) - (pathVertical(A.n, untilY)); - - draw B.sw -- B.sw + (-20,0) dashed evenly; - label.lft(btex untilY etex, B.sw + (-20,-0)); -endfig; - -beginfig(6); - save A,B; - Class.A("A")()(); - Class.B("B")()(); - - B.nw = A.ne + (40,30); - drawObjects(A,B); - - link(inheritance)(pathCut(A,B)(A.c -- B.c)); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/picture_info.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/picture_info.mp deleted file mode 100644 index df3b10145f2..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/picture_info.mp +++ /dev/null @@ -1,86 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input boxes; -input util_commons; -input util_object; -input util_picture; -input util_positioning; - -PictureInfoCopy.iBig(iPict); -iBig.left := iBig.right := 20; -iBig.top := 10; -iBig.bottom := 1; -iBig.boxed := 1; -iBig.ignoreNegativeBase := 1; -iBig.iFont.name := defaultfont; -iBig.iFont.scale := 3; - -PictureInfoCopy.iSmall(iPict); -iSmall.boxed := 1; -iSmall.borderColor := green; - -beginfig(1); - EPicture.a(iBig)("yummy"); - EPicture.b(iSmall)("cool"); -% you can still modify a.info -% and b.info if you wish. - - a.nw = (0,0); - b.nw = a.sw + (0,-10); - - drawObjects(a, b) -endfig; - -beginfig(2); - save a, b, c, myFixed; - PictureInfoCopy.myFixed(iPict); - myFixed.ignoreNegativeBase := 1; - myFixed.fixedWidth := 15; - myFixed.fixedHeight := 20; - myFixed.boxed := 1; - - EPicture.a(myFixed)("a"); - EPicture.b(myFixed)(".-."); - EPicture.c(myFixed)("toolong"); - - leftToRight.bottom(10)(a, b, c); - - drawObjects(a, b, c); -endfig; - -beginfig(3); - save a, b, c, myFixed; - PictureInfoCopy.myFixed(iPict); - myFixed.ignoreNegativeBase := 1; - myFixed.bottom := 4.5; - myFixed.valign := "bottom"; - myFixed.halign := "center"; - myFixed.fixedWidth := 25; - myFixed.fixedHeight := 15; - myFixed.boxed := 1; - - EPicture.a(myFixed)("a"); - EPicture.b(myFixed)("yum"); - EPicture.c(myFixed)("b"); - - leftToRight.bottom(10)(a, b, c); - - drawObjects(a, b, c); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/picture_stack.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/picture_stack.mp deleted file mode 100644 index ee6e09104b7..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/picture_stack.mp +++ /dev/null @@ -1,44 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input boxes; -input util_commons; -input util_object; -input util_picture; -input util_group; -input util_picture_stack; - -beginfig(1); - iStack.boxed := 1; - iStack.iPict.boxed := 1; - PictureStack.myStack("foo", - "bar: int" infont "tyxtt", - "cool-man-centered" infont defaultfont, - "nice")("vcenter"); - - myStack.nw = (0,0); - drawObject(myStack); -endfig; - -beginfig(2); -endfig; - -beginfig(3); -endfig; - - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/positioning.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/positioning.mp deleted file mode 100644 index f98de47182f..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/positioning.mp +++ /dev/null @@ -1,139 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -beginfig(1); - Class.A("A")()(); - Class.B("B")()(); - Class.C("C")()(); - Class.Base("Base")()(); - - - A.ne = B.nw - (20,0); - B.ne = C.nw - (20,0); - Base.s = B.n + (0,20); - - drawObjects(Base, A, B, C); -endfig; - -beginfig(2); - save A, B, C, Base; - - Class.A("A")()(); - Class.B("B")()(); - Class.C("C")()(); - Class.Base("Base")()(); - - leftToRight(20)(A, B, C); - topToBottom(20)(Base, B); - - drawObjects(Base, A, B, C); -endfig; - -iPict.boxed := 1; -spacing := 5; -string strA, strB, strC; -strA := "a"; -strB := "..."; -strC := "Cyan"; - -beginfig(3); - save A, B, C, X, Y, Z; - - Picture.X(strA); - Picture.Y(strB); - Picture.Z(strC); - - leftToRight.top(spacing)(X, Y, Z); - - drawObjects(X, Y, Z); - - draw (X.left, X.top) -- (Z.right, X.top) dashed evenly withpen pencircle withcolor red; -endfig; - -beginfig(4); - save A, B, C, X, Y, Z; - - Picture.X(strA); - Picture.Y(strB); - Picture.Z(strC); - - leftToRight.midy(spacing)(X, Y, Z); - - drawObjects(X, Y, Z); - - draw (X.left, X.midy) -- (Z.right, X.midy) dashed evenly withpen pencircle withcolor red;; -endfig; - -beginfig(5); - save A, B, C, X, Y, Z; - - Picture.X(strA); - Picture.Y(strB); - Picture.Z(strC); - - leftToRight.bottom(spacing)(X, Y, Z); - - drawObjects(X, Y, Z); - - draw (X.left, X.bottom) -- (Z.right, X.bottom) dashed evenly withpen pencircle withcolor red;; -endfig; - -beginfig(6); - save A, B, C, X, Y, Z; - - Picture.X(strA); - Picture.Y(strB); - Picture.Z(strC); - - topToBottom.left(spacing)(X, Y, Z); - - drawObjects(X, Y, Z); - - draw (X.left, X.top) -- (X.left, Z.bottom) dashed evenly withpen pencircle withcolor red;; -endfig; - -beginfig(7); - save A, B, C, X, Y, Z; - - Picture.X(strA); - Picture.Y(strB); - Picture.Z(strC); - - topToBottom.midx(spacing)(X, Y, Z); - - drawObjects(X, Y, Z); - - draw (X.midx, X.top) -- (X.midx, Z.bottom) dashed evenly withpen pencircle withcolor red;; -endfig; - -beginfig(8); - save A, B, C, X, Y, Z; - - Picture.X(strA); - Picture.Y(strB); - Picture.Z(strC); - - topToBottom.right(spacing)(X, Y, Z); - - drawObjects(X, Y, Z); - - draw (X.right, X.top) -- (X.right, Z.bottom) dashed evenly withpen pencircle withcolor red;; -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/properties.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/properties.mp deleted file mode 100644 index 94f71d772ea..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/properties.mp +++ /dev/null @@ -1,58 +0,0 @@ -% Sample MetaUML figures. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -input metauml; - -beginfig(1); - Class.Test("Test")("a1","a2","a3")("aLongMethod():void"); - - Test.nw = (0,0); - Class_draw.Test; - - dotlabel.ulft(btex nw etex, Test.nw); - dotlabel.top(btex n etex, Test.n); - dotlabel.urt(btex ne etex, Test.ne); - dotlabel.rt(btex e etex, Test.e); - dotlabel.lrt(btex se etex, Test.se); - dotlabel.bot(btex s etex, Test.s); - dotlabel.llft(btex sw etex, Test.sw); - dotlabel.lft(btex w etex, Test.w); - - dotlabel.lft(btex c etex, Test.c); - - draw Test.nw - (50,0) -- Test.ne + (10,0); - label.urt(btex top etex, Test.nw - (50,0)); - - draw Test.sw - (50,0) -- Test.se + (10,0); - label.lrt(btex bottom etex, Test.sw - (50,0)); - - draw Test.nw + (0,10) -- Test.sw - (0, 50); - label.bot(btex left etex, Test.sw - (0,50)); - - draw Test.ne + (0,10) -- Test.se - (0, 50); - label.bot(btex right etex, Test.se - (0,50)); - - drawarrow Test.nw - (25,0) -- Test.sw - (25,0); - label.lft(btex height etex, .5[Test.nw, Test.sw] - (25,0)); - - drawarrow Test.sw - (0,25) -- Test.se - (0,25); - label.bot(btex width etex, .5[Test.sw, Test.se] - (0,25)); -endfig; - - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/state.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/state.mp deleted file mode 100644 index 77c7691a9a2..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/state.mp +++ /dev/null @@ -1,55 +0,0 @@ -% Sample MetaUML figures. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -input metauml; - -beginfig(1); - State.s("Take order")(); - drawObject(s); -endfig; - -beginfig(2); - Begin.b; - End.e; - State.c("Component")(); - State.composite("Composite")(b, e, c); - - b.midx = e.midx = c.midx; - c.top = b.bottom - 20; - e.top = c.bottom - 20; - - composite.info.drawNameLine := 1; - drawObject(composite); - - link(transition)(b.s -- c.n); - link(transition)(c.s -- e.n); -endfig; - -beginfig(3); - save s; - State.s("An interesting state", - "which is worth mentioning")(); - stateTransitions.s( - "OnEntry / Open eyes", - "OnExit / Sleep well"); - s.info.drawNameLine := 1; - - drawObject(s); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/statemachine_diagrams.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/statemachine_diagrams.mp deleted file mode 100644 index ff93a74dd5d..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/statemachine_diagrams.mp +++ /dev/null @@ -1,78 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -% for f in `find . | grep '.*\.[1-9]'`; do echo $f; done - -input metauml; - -beginfig(1); - Begin.b; - State.on("On")(); - State.off("Off")(); - End.e; - - setObjectJoin(pb.w = pa.e + (20,0)); - joinObjects(b, on, off, e); - drawObjects(b, on, off, e); - - clink(transition)(b, on); - clink(transition)(on, off); - clink(transition)(off, e); -endfig; - -beginfig(2); - save b, reading, processing, e, exit; - - Begin.b; - State.reading("Commands read")(); - State.processing("Processing commands")(); - End.e; - setObjectJoin(pb.n = pa.s + (0, -20)); - joinObjects(b, reading, processing, e); - - State.composite("Work")(b, reading, processing, e); - drawObject(composite); - - clink(transition)(b, reading); - clink(transition)(reading, processing); - clink(transition)(processing, e); - - ExitPoint.exit; - exit.c=(composite.right, reading.midy); - drawObject(exit); - item(iAssoc)("error")(obj.nw = exit.s); - - clink(transition)(reading, exit); - - State.error("Prepare error report")(); - State.result("Display result")(); - End.theEnd; - - error.midx = result.midx = theEnd.midx = composite.right + 90; - error.midy = exit.midy; - result.midy = processing.midy; - theEnd.midy = e.midy; - drawObjects(error, result, theEnd); - - clink(transition)(exit, error); - clink(transition)(error, result); - clink(transition)(result, theEnd); - - link(transition)(rpathHorizontal(result.w, composite.right)); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_activity.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_activity.mp deleted file mode 100644 index 841bdb8a312..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_activity.mp +++ /dev/null @@ -1,46 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -beginfig(1); - Begin.b; - End.e; - - e.n = (30,30); - drawObject(b); - show "Object b drawn"; - drawObject(e); - - link(associationUni)(pathCut(b,e)(b.c--e.c)); -endfig; - -beginfig(2); - EActivity.act(iActivity)("go to school", "while singing"); - drawObject(act); - - Branch.br; - br.nw = (50,50); - drawObject(br); - - Fork.fork("h",30); - fork.nw = (30,70); - drawObject(fork); -endfig; - -end - diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_class.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_class.mp deleted file mode 100644 index 79dbb37133b..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_class.mp +++ /dev/null @@ -1,145 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -beginfig(0); - show "Copying class info..."; - ClassInfoCopy.foo(iClass); -endfig; - -beginfig(1); - Class.P("AAA")("- noo:int", "+bar:double","c:Integer","f: int")("foo()", "bar()"); - Class_setDebugMode.P; - - P.nw=(0,0); - Class_draw.P; - - Class.Q("AAA")("-noo:int", "+bar:double","c:Integer","f: int")("-noo()", "bar()"); - Q.nw=P.ne + (20,0); - Class_draw.Q; -endfig; - -beginfig(2); - save P, Q; - - Class.P("AAA")("+ foo:int", "+bar:double","c:Integer","f: int")(); - Class_setDebugMode.P; - P.nw=(0,0); - Class_draw.P; - - Class.Q("AAA")("+ foo:int", "+bar:double","c:Integer","f: int")(); - Q.nw=P.ne + (20,0); - Class_draw.Q; -endfig; - -beginfig(3); - save P, Q; - - Class.P("AAA")()(); - Class_setDebugMode.P; - P.nw=(0,0); - Class_draw.P; - - Class.Q("AAA")()(); - Q.nw=P.ne + (20,0); - Class_draw.Q; -endfig; - -beginfig(4); - save P, Q; - - Class.P("AAA")()(); - classStereotypes.P("<>","<>", "<>"); - Class_setDebugMode.P; - P.nw=(0,0); - Class_draw.P; - - - Class.Q("AAA")()(); - classStereotypes.Q("<>","<>", "<>"); - Q.nw=P.ne + (20,0); - Class_draw.Q; -endfig; - -beginfig(5) - Class.A("User")()(); - classStereotypes.A("<>","<>"); - A.nw=(0,0); - drawObject(A); -endfig; - -beginfig(6) - save A; - Class.A("User")()(); - A.info.iMethodStack.left := A.info.iMethodStack.right := 50; - A.info.iMethodStack.top := A.info.iMethodStack.bottom := 20; - - drawObject(A); -endfig; - -beginfig(7) - save inter; - EClass.inter(iInterface)("Observer")()("+update(src: Object)"); - drawObjects(inter); -endfig; - -beginfig(8) - save inter; - EInterface.inter(iInterface)("Observer")("+update(src: Object)"); - drawObjects(inter); -endfig; - -beginfig(9) - save inter; - Interface.inter("Observer")("+update(src: Object)"); - drawObjects(inter); -endfig; - -beginfig(10) - save A; - EClass.A(iAbstractClass)("AbstractClass")("[]{}")("+update(src: Object)"); - drawObjects(A); -endfig; - -beginfig(11) - save A; - AbstractClass.A("AbstractClass")("[]{}")("+update(src: Object)"); - drawObjects(A); -endfig; - -beginfig(12) - save A; - EClass.A(iClassNameOnly)("AClassWithNoCompartments")()(); - drawObjects(A); -endfig; - -beginfig(13) - save A; - ClassName.A("AnotherClass"); - drawObjects(A); -endfig; - -beginfig(14) - save A; - ClassName.A("AnotherClass"); - classStereotypes.A("<>","<>"); - - drawObjects(A); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_class_qual_assoc.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_class_qual_assoc.mp deleted file mode 100644 index 735bba19e0d..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_class_qual_assoc.mp +++ /dev/null @@ -1,53 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -beginfig(1); - save P,qa; - - Class.P("Person")()(); - QualifiedAssociation.qa("accountNumber:int", "foo: id"); - - P.nw = (0,0); - qa.n = P.s; - - - P.info.iName.left := 35; - P.info.iName.right := 35; - drawObjects(P); - - drawObject(qa); -endfig; - -beginfig(2); - save P,qa; - - Class.P("Person")()(); - QualifiedAssociation.qa("accountNumber:int", "foo: id", "foolang"); - - P.nw = (0,0); - qa.w = P.e; - - P.info.shade := 0; - P.info.iMethodStack.top := 20; - drawObjects(P); - - drawObject(qa); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_class_templates.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_class_templates.mp deleted file mode 100644 index c3fc50209c8..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_class_templates.mp +++ /dev/null @@ -1,62 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -beginfig(1); - save P,template; - - Class.P("Person")()(); - Template.template("foo", "bar"); - - drawObjectAt(P)(P.nw=(0,0)); - - Template_attachToClass.template(P); - drawObject(template); -endfig; - -beginfig(2); - save P,template; - - Class.P("Person")()(); - Template.template("foo: int"); - Template_attachToClass.template(P); - - drawObjectAt(P)(P.nw=(0,0)); - drawObject(template); -endfig; - -beginfig(3); - save CA, TA, CB, TB, CC, TC; - Class.CA("VeryVeryLongClassName")()(); - ClassTemplate.TA("int foo")(CA); - - Class.CB("Shortie")("abracadabra: long long int")(); - ClassTemplate.TB("T")(CB); - - Class.CC("Shortie")("abracadabra: long long int")(); - ClassTemplate.TC("TrulyAmazingLongTypename")(CC); - - CA.s = CB.n + (0,14); - CB.s = CC.n + (0,14); - - drawObjects(CA, TA, CB, TB, CC, TC); -endfig; - - - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_component.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_component.mp deleted file mode 100644 index 3668a548f21..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_component.mp +++ /dev/null @@ -1,45 +0,0 @@ -input metauml; -input metauml_component; -input metauml_component_relations; - -beginfig(1); - Class.classA("Class A")()(); - - Class.classB("Class B")()(); - - Component.compA("Component A")(); - - Component.compB("Component B")(); - - Component.compC("Component C")(compA, compB, classA, classB); - - - - compB.w = compA.e + (40, 0); - - classA.w = compB.e + (20, 0); - - classB.w = classA.e + (20, 0); - - - - drawObjects(compC); - - - - path open; - - open := compA.e .. compA.e + (20, 0); - - - - path close; - - close := compA.e + (20, 0) .. compB.w; - - link(requiredInterface)(open); - - link(providedInterface)(close); -endfig; - -end \ No newline at end of file diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_font.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_font.mp deleted file mode 100644 index d5fc1a7702f..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_font.mp +++ /dev/null @@ -1,91 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -string theFont; - -beginfig(1); - theFont := "pcrr"; - - boxjoin(a.sw=b.nw); - boxit.ff(("Font name: ( ) " & theFont) infont theFont); - boxit.s0("<>" infont theFont ); - boxit.s1("<>, <>, <>" infont theFont); - boxit.g0("[guard] " infont theFont); - boxit.g1("[stillhungry] closing paranthesis SHOWN after hungry !" infont theFont); - boxit.g2("[still hungry] closing paranthesis NOT shown after hungry !" infont theFont); - boxit.g3("[][][][]hm]" infont theFont); - boxit.c0("{constraint}" infont theFont); - boxit.c1("{a constraint} closing paranthesis NOT shown !" infont theFont); - - drawboxed(ff, s0, s1, g0, g1, g2, g3, c0, c1); -endfig; - -beginfig(2); - save ff,s,g,c; - theFont := "tyxbtt"; - - boxjoin(a.sw=b.nw); - boxit.ff(("Font name: ( ) " & theFont) infont theFont); - boxit.s0("<>" infont theFont ); - boxit.s1("<>, <>, <>" infont theFont); - boxit.g0("[guard] " infont theFont); - boxit.g1("[stillhungry] closing paranthesis SHOWN after hungry !" infont theFont); - boxit.g2("[still hungry] closing paranthesis NOT shown after hungry !" infont theFont); - boxit.g3("[][][][]hm]" infont theFont); - boxit.c0("{constraint}" infont theFont); - boxit.c1("{a constraint} closing paranthesis NOT shown !" infont theFont); - - drawboxed(ff, s0, s1, g0, g1, g2, g3, c0, c1); -endfig; - -beginfig(3); - picture pA, pB, pC; - string sA, sB, sC; - sA := "assembleElementLocalMatrix(k: KeyType, mat: LocalMatrixType, a: AssembleAction)"; - sB := "assembleElementLocalMatri(k: KeyType, mat: LocalMatrixType, a: AssembleAction)"; - sC := "assembleElntLocalMatri(k: KeyType, mat: LocalMatrixType, a: AssembleAction)"; - - pA := sA infont "tyxbtt"; - pB := sB infont "tyxbtt"; - pC := sC infont "tyxbtt"; - - draw pA; - draw pB shifted (0,-20); - draw pC shifted (0,-40); -endfig; - -beginfig(4); - save ff,s,g,c; - theFont := "ptmr8r"; - - boxjoin(a.sw=b.nw); - boxit.ff(("Font name: ( ) " & theFont) infont theFont); - boxit.s0("<>" infont theFont ); - boxit.s1("<>, <>, <>" infont theFont); - boxit.g0("[guard] " infont theFont); - boxit.g1("[stillhungry] closing paranthesis SHOWN after hungry !" infont theFont); - boxit.g2("[still hungry] closing paranthesis NOT shown after hungry !" infont theFont); - boxit.g3("[][][][]hm]" infont theFont); - boxit.c0("{constraint}" infont theFont); - boxit.c1("{a constraint} closing paranthesis NOT shown !" infont theFont); - - drawboxed(ff, s0, s1, g0, g1, g2, g3, c0, c1); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_group.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_group.mp deleted file mode 100644 index 17265c458b2..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_group.mp +++ /dev/null @@ -1,60 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -beginfig(1); - save p,q,r,t,g; - - EPicture.p(iPictBoxed)("p0"); - EPicture.q(iPictBoxed)("p1"); - p.se = q.nw; - - string f; - f= enumToString(p,q)(""); - show "f=" & f; - - EGroup.g(iGroup)(p,q); - g.nw = (0,0); - - drawObject(g); -endfig; - -beginfig(2); - save g,h,p,gg; - - Group.g(); - g.info.boxed := 1; - g.nw = (30,30); - drawObject(g); - - Picture.p("Test picture in group"); - p.info.boxed := 1; - Group.h(p); - h.info.boxed := 1; - h.nw = (0,0); - drawObject(h); - - Picture.v0("s"); v0.info.boxed := 1; - Picture.v1("s"); v1.info.boxed := 1; - v1.nw = v0.se + (10,10); - Group.gg(v0, v1); gg.info.boxed := 1; - gg.nw = (70,70); - drawObject(gg); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_instance.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_instance.mp deleted file mode 100644 index d01ff8452e2..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_instance.mp +++ /dev/null @@ -1,35 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Radu-George Radulescu -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -beginfig(1); - Instance.A(":Foo")("int: val1", "bool: val2"); - Instance.B(":Bar")("very long text for testing purposes"); - Instance.C("s: Student")("line1", "line2", "line3", "line4", "line5"); - Instance.D("Example")("small"); - Instance.E("g: Yummy")("{placed}", "{color=red}"); - - B.w = A.e + (20, 0); - C.n = A.s - (0, 20); - D.w = C.e + (20, 0); - E.w = D.e + (20, 0); - - drawObjects(A, B, C, D, E); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_lars_issues.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_lars_issues.mp deleted file mode 100644 index 607ef54c909..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_lars_issues.mp +++ /dev/null @@ -1,94 +0,0 @@ -input metauml; - -numeric u; -u = 1.3cm; - -beginfig(1); - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -Class.ElLocSysAcc("ElementLocalSystemAcceptor") -() -("+startElementAssebly()", - "+assembleElementLocalMatrix(k: KeyType, mat: LocalMatrixType, a: AssembleAction)", - "+assembleElementLocalRHS(k: KeyType, rhs: LocalRHSType, a: AssembleAction)", - "+endElementAssembly()"); - -classStereotypes.ElLocSysAcc("<>"); -ClassTemplate.TEl("KeyType: typename")(ElLocSysAcc); - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - Class.FaceLocSysAcc("FaceLocalSystemAcceptor") - () - ("+startFaceAssebly()", - "+assembleFaceLocalMatrix(k1: KeyType, k2: KeyType, mat: LocalMatrixType, a: AssembleAction)", - "+assembleFaceLocalRHS(k: KeyType, rhs: LocalRHSType, a: AssembleAction)", - "+endFaceAssembly()"); - - classStereotypes.FaceLocSysAcc("<>"); - ClassTemplate.TFa("KeyType: typename")(FaceLocSysAcc); - - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - Class.SolProvider("SolutionProvider") - () - ("+startSortBack()", - "+getLocalSolution(k: KeyType, sol: LocalSolutionType)", - "+endSortBack()"); - - classStereotypes.SolProvider("<>"); - ClassTemplate.TSol("KeyType: typename")(SolProvider); - -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - % now inherit from these for LapackMatrixSorter - Class.LapackMS("LapackMatrixSorter") - ("-indMan: IndexManager", - "-A: LaGenMatDouble&", - "-x: LaVectorDouble&", - "-b: LaVectorDouble&" - ) - ("+startElementAssembly()"); - - ClassTemplate.TLap("KeyType: typename", "IndexManager: class")(LapackMS); - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% where to draw these: -FaceLocSysAcc.nw = ElLocSysAcc.ne + (1.5u, 0); -SolProvider.nw = FaceLocSysAcc.ne + (1.5u, 0); -LapackMS.n = FaceLocSysAcc.s + (0, -3u); - -drawObjects(ElLocSysAcc, TEl, FaceLocSysAcc, TFa, - SolProvider, TSol, LapackMS, TLap); - -% 50: how much should the path raise upwards before making a horizontal turn. -link(inheritance)(pathStepY(LapackMS.n, FaceLocSysAcc.s, 50)); -link(inheritance)(pathStepY(LapackMS.n, SolProvider.s, 50)); -link(inheritance)(pathStepY(LapackMS.n, ElLocSysAcc.s, 50)); - -endfig; - -beginfig(2); - Begin.b; - Activity.A("Eat something good", "from the kitchen"); - Activity.B("Read a book"); - End.e; - - % or other positioning code... - setObjectJoin(pa.s = pb.n + (0,20)); - joinObjects(b, A, B, e); - - % important: first draw the activities - drawObjects(b, A, B, e); - - % you can now draw the transitions - clink(transition)(b, A); - clink(transition)(A, B); - link(transition)(pathStepX(B.e, e.e, 30)); - - item(iGuard)("foo")(obj.sw = .5[b.s, A.n]); -endfig; - -end; diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_lowlevel.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_lowlevel.mp deleted file mode 100644 index 952da34f482..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_lowlevel.mp +++ /dev/null @@ -1,66 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; -input util_infrastructure; - -beginfig(1); - show "Lowlevel test"; - %string foo; - %foo := var_instruction(numeric) x, y; - %show foo; - %foo := foo & ";"; - %show foo; - attributes(foo); - _n_ := "foo"; - %scantokens foo; - %string x; - %x := str(numeric); - var(numeric) x; - - label.top("nothing shown (intentionally)", (0,0)); -endfig; - -vardef _foo@#= - attributes(@#); - var(string) @#a[]; - @#a[0] := "fpp"; - @#a[1] := "gqq"; -enddef; - -% _foo.b; % not working - -vardef _bar@#(text s)= - attributes(@#); - var(string) elements; - @#elements := enumToString(s)(""); -enddef; - -beginfig(2); - for f = scantokens "a, b, c": - show f; - endfor; - _bar.xx(a, b, c, d); - show xx.elements; - for f = scantokens xx.elements: - show f; - endfor; - label.top("nothing shown (intentionally)", (0,0)); -endfig; - -end - diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_note.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_note.mp deleted file mode 100644 index 9ea6b1a2931..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_note.mp +++ /dev/null @@ -1,39 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml_note; -input metauml_base; -input metauml_paths; -input metauml_links; -input metauml_class_relations; - -beginfig(1); - Note.foo("Antananarivo", "Machupichu"); - drawObject(foo); -endfig; - -beginfig(2); - save foo; - Note.foo("Please disregard this note"); - Note.bar("Please take the other note", "very seriously"); - - bar.s = foo.n + (10,20); - drawObjects(foo, bar); - clink(dashedLink)(foo, bar); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_package.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_package.mp deleted file mode 100644 index 8b6cad579a3..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_package.mp +++ /dev/null @@ -1,54 +0,0 @@ -input metauml; -input metauml_package; -input metauml_package_relations; - -beginfig(1); - Package.emptyPackage("")(); - - Package.nameOnlyPackage("java.sun.com")(); - - Class.oneClass("A class")()(); - Package.oneClassPackage("One class package")(oneClass); - - Instance.oneInstance("An instance")(); - State.oneState("A state")(); - Activity.oneActivity("An activity"); - Package.multiPackage("Multipackage")(oneInstance, oneState, oneActivity); - - Package.allPackage("This package contains them all")(emptyPackage, nameOnlyPackage, - oneClassPackage, multiPackage); - - nameOnlyPackage.nw = emptyPackage.ne + (30, 0); - oneClassPackage.ne = emptyPackage.s - (0, 50); - - multiPackage.top = oneClassPackage.top; - multiPackage.left = oneClassPackage.right + 20; - - centered_align_top(oneState, oneActivity)(10, below(oneInstance.s, 20)); - - drawObjects(allPackage); -endfig; - -beginfig(2); - Package.nameOnlyOnTopPackage("Name on top")(); - nameOnlyOnTopPackage.info.forceEmptyContent := 1; - Package.nameOnlyInMiddlePackage("By default name", "is in the middle")(); - - Class.cl("A class")("Attribute")("Method"); - Package.notEmptyPackage("Contains class")(cl); - - nameOnlyInMiddlePackage.n = nameOnlyOnTopPackage.s - (0, 40); - notEmptyPackage.w = nameOnlyInMiddlePackage.e + (80, 0); - drawObjects(nameOnlyOnTopPackage, nameOnlyInMiddlePackage, notEmptyPackage); - - %link(import)(pathStepX(notEmptyPackage.w, nameOnlyOnTopPackage.e, -30)); - %link(import)(pathVertical(nameOnlyInMiddlePackage.ne - (10, 0), nameOnlyOnTopPackage.bottom)); - %link(import)(notEmptyPackage.sw -- nameOnlyInMiddlePackage.ne); -endfig; - -beginfig(3); - link(nest)((10,10)--(30,30)); -endfig; - - -end \ No newline at end of file diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_paths.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_paths.mp deleted file mode 100644 index 9de403b86af..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_paths.mp +++ /dev/null @@ -1,100 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -iPict.boxed := 1; - -beginfig(1); - iClass.shade := 3; - Class.F("Foo")("a: int","b: int")(); - Class.B("Bar")()(); - - B.nw = F.ne + (20,-20); - - drawObjects(B, F); - - link(association)(B.nw -- F.ne); - - draw objectBorder(B) withcolor red; - draw objectBorder(F) withcolor blue; - - link(association)(pathCut(B,F)(B.c--F.c)); -endfig; - -beginfig(2); - save A, B; - - Picture.A("A"); - Picture.B("Blue"); - - B.sw = A.ne + (20,20); - - drawObjects(A, B); - - link(associationUni)(pathManhattanX(A.e, B)); -endfig; - -beginfig(3); - save A, B, C, D, O; - - Picture.A("Alpha"); - Picture.B("Beta"); - Picture.C("Gamma"); - Picture.D("Detla"); - Picture.O("Omega"); - - A.c = O.c + (-50,50); - B.c = O.c + (50,50); - C.c = O.c + (-50,-50); - D.c = O.c + (50,-50); - - drawObjects(O, A, B, C, D); - - link(associationUni)(pathManhattanX(O, A)); - link(associationUni)(pathManhattanX(O, B)); - link(associationUni)(pathManhattanX(O, C)); - link(associationUni)(pathManhattanX(O, D)); -endfig; - -beginfig(3); - show ""; - show ""; - show " FIGURE 3"; - - save A, B, C, D, O; - - Picture.A("Alpha"); - Picture.B("Beta"); - Picture.C("Gamma"); - Picture.D("Detla"); - Picture.O("Omega"); - - A.c = O.c + (-50,50); - B.c = O.c + (50,50); - C.c = O.c + (-50,-50); - D.c = O.c + (50,-50); - - drawObjects(O, A, B, C, D); - - link(associationUni)(pathManhattanX(O, A)); - link(associationUni)(pathManhattanX(O, B)); - link(associationUni)(pathManhattanX(O, C)); - link(associationUni)(pathManhattanX(O, D)); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_picture.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_picture.mp deleted file mode 100644 index 5207a7c07e3..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_picture.mp +++ /dev/null @@ -1,270 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -string theFont; -theFont := "tyxbtt"; - -beginfig(1); - draw "xxx" infont defaultfont scaled defaultscale shifted (0,0); - draw "yyy" infont (iFont.name) scaled (iFont.scale) shifted (5, 5); - - Picture.p("foo, bar, foo"); - p.nw = (0,0); - drawObject(p); - - Picture.q("nice, ugly"); - drawObjectAt(q)( q.nw = (30,30) ); - - FontInfo.foo("tyxbtt", 1); - PictureInfo.nice(3,6,5,10)(foo); - nice.boxed := 1; - - EPicture.myPic(nice)("what a nice feature"); - drawObjectAt(myPic)( myPic.nw = (0,0)); -endfig; - -beginfig(2); - save p, q, r, t; - - Picture.p("foo"); - Picture.q("bar"); - p.nw = (10, 10); - q.nw = (20, 20); - - drawObject(p); - drawObject(q); - - drawObjects(p, q); - - Picture.a0("root" infont defaultfont); - Picture.a1("toof"); - - a[0].nw = (30, 30); - a[1].nw = (50, 50); - - drawObjects(scantokens listArray(a)(2)); - %drawObjectArray(a)(2); -endfig; - -beginfig(3); - save p, q, r, t, u, pp; - - bboxmargin := 0; - - picture pp; - pp = "a" infont theFont; - Picture.p(pp); - Picture.q("cool" infont theFont); - Picture.r("good" infont theFont); - Picture.t("tust"); - Picture.u("fook" infont theFont); - - p.nw = (0,50); - setObjectJoin(pa.left=pb.left; pa.bottom = pb.top + 1); - joinDrawObjects(p, q, r, t, u); - - defaultdy:=0; - boxjoin(a.sw=b.nw; a.se=b.ne); - boxit.A0("aaa"); - boxit.A1("dddd"); - boxit.A2("asf"); - boxit.A3("good"); - boxit.A4(".."); - A0.nw=(0,0); - drawboxed(A0,A1,A2,A3,A4); - - show A[1].nw; - - Picture.B0(btex adsaas etex); - Picture.X[2](btex asdasad etex); - - myy := 40; - - bboxmargin := 0; - - pair p; - p := (30,myy); - dotlabel.lrt(".", p); - picture x; - x := "f: int" infont theFont; - draw bbox(x) shifted p; - draw x shifted p; - - show "LLCORNER P"; - show llcorner x; - - pair q; - q := (70,myy); - dotlabel.lrt(".", q); - picture y; - y := "goofy: int" infont theFont; - draw bbox(y) shifted q; - draw y shifted q; - - pair qq; - qq := (135,myy); - dotlabel.lrt(".", qq); - picture y; - y := "goot" infont theFont; - draw bbox(y) shifted qq; - draw y shifted qq; - - show "LLCORNER q"; - show llcorner y; - - draw (0,myy)--(150, myy) dashed evenly; - - myyb := 70; - Picture.aa(btex goof etex); - aa.sw = (30, myyb); - Picture_draw.aa; - - draw (0,myyb)--(100, myyb) dashed evenly; -endfig; - -beginfig(4); - save a, b; - FontInfo.myFont(theFont, 1); - PictureInfo.myWay(0,0,0,0)(myFont); - myWay.boxed := 1; - - EPicture.a0(myWay)("goof"); - EPicture.a1(myWay)("Aoorian"); - EPicture.a2(myWay)("fpp"); - EPicture.a3(myWay)("f: int"); - EPicture.a4(myWay)("aa()"); - - a0.nw = (0,0); - setObjectJoin(pa.bottom = pb.bottom; pa.right = pb.left - 10); - joinDrawObjects(scantokens listArray(a)(5)); - - draw a0.sw -- a4.se withcolor black dashed evenly; - - myWay.ignoreNegativeBase := 1; - EPicture.b0(myWay)("goof"); - EPicture.b1(myWay)("Aoorian"); - EPicture.b2(myWay)("fpp"); - EPicture.b3(myWay)("f: int"); - EPicture.b4(myWay)("aa()"); - - b0.nw = (0,-20); - setObjectJoin(pa.bottom = pb.bottom; pa.right = pb.left - 10); - joinDrawObjects(scantokens listArray(b)(5)); - - draw b0.sw -- b4.se withcolor black dashed evenly; -endfig; - - -beginfig(5); - truecorners := 1; - bboxmargin := 0; - save p; - picture basepict; - basepict := "<>" infont "tyxtt"; - - draw basepict; - draw bbox basepict; -endfig; - -beginfig(6); - item.foo(iPictBoxed)("foo bar cool")(foo.nw = (0,0)); - item.bar(iPict)("x: int")(bar.nw = (20,20)); - - aitem(iPictBoxed)("an anounymous item")(obj.nw = (40,10)); -endfig; - -beginfig(7); - save a, b, c, d, e, myFixed; - PictureInfoCopy.myFixed(iPict); - myFixed.ignoreNegativeBase := 1; - myFixed.fixedWidth := 20; - myFixed.boxed := 1; - - EPicture.a(myFixed)("a"); - EPicture.b(myFixed)("yummy"); - EPicture.c(myFixed)(".-."); - EPicture.d(myFixed)("job"); - EPicture.e(myFixed)("football"); - - leftToRight.bottom(20)(a, b, c, d, e); - - drawObjects(a, b, c, d, e); -endfig; - -beginfig(8); - save a, b, c, d, e, myFixed; - PictureInfoCopy.myFixed(iPict); - myFixed.halign := "center"; - myFixed.ignoreNegativeBase := 1; - myFixed.fixedWidth := 20; - myFixed.boxed := 1; - - EPicture.a(myFixed)("a"); - EPicture.b(myFixed)("yummy"); - EPicture.c(myFixed)(".-."); - EPicture.d(myFixed)("job"); - EPicture.e(myFixed)("football"); - - leftToRight.bottom(20)(a, b, c, d, e); - - drawObjects(a, b, c, d, e); -endfig; - -beginfig(9); - save a, b, c, d, e, myFixed; - PictureInfoCopy.myFixed(iPict); - myFixed.halign := "center"; - myFixed.ignoreNegativeBase := 1; - myFixed.fixedWidth := 20; - myFixed.fixedHeight := 30; - myFixed.boxed := 1; - - EPicture.a(myFixed)("a"); - EPicture.b(myFixed)("yummy"); - EPicture.c(myFixed)(".-."); - EPicture.d(myFixed)("job"); - EPicture.e(myFixed)("football"); - - leftToRight.bottom(20)(a, b, c, d, e); - - drawObjects(a, b, c, d, e); -endfig; - -beginfig(10); - save a, b, c, d, e, myFixed; - PictureInfoCopy.myFixed(iPict); - myFixed.halign := "center"; - myFixed.valign := "center"; - myFixed.ignoreNegativeBase := 1; - myFixed.fixedWidth := 20; - myFixed.fixedHeight := 30; - myFixed.boxed := 1; - - EPicture.a(myFixed)("a"); - EPicture.b(myFixed)("yummy"); - EPicture.c(myFixed)(".-."); - EPicture.d(myFixed)("job"); - EPicture.e(myFixed)("football"); - - leftToRight.bottom(20)(a, b, c, d, e); - - drawObjects(a, b, c, d, e); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_picture_stack.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_picture_stack.mp deleted file mode 100644 index d13803f71ff..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_picture_stack.mp +++ /dev/null @@ -1,70 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -string theFont; -theFont := "tyxtt"; - -beginfig(1); - PictureStackInfoCopy.stackWay(iStack); - - EPictureStack.emptyStack(stackWay)()("vcenter"); - emptyStack.nw=(10,10); - drawObject(emptyStack); -endfig; - -beginfig(2); - PictureStack.myStack("foo", "bar: int" infont theFont, "cool man" infont defaultfont, "nice")("vcenter"); - myStack.nw = (0,0); - PictureStack_draw.myStack; -endfig; - -beginfig(3); - % 1 - PictureStack.stack("fooornika", "gar nichts", "nicelina")("vcenter"); - stack.info.boxed := 1; - stack.info.iPict.boxed := 1; % this does nothing, it's too late - - stack.nw = (0,0); - drawObject(stack); - - % 2 - PictureStack.stackb("fooornika", "gar nichts", "nicelina")("vcenter"); - stackb.info.boxed := 1; - stackb.pict[0].info.boxed := 1; - stackb.pict[2].info.boxed := 1; - - stackb.nw = (50,0); - drawObject(stackb); - - % 3 - PictureStackInfoCopy.myInfo(iStack); - myInfo.boxed := 1; - myInfo.iPict.boxed := 1; - EPictureStack.stackc(myInfo)("fooornika", "gar nichts", "nicelina")("vcenter"); - - stackc.nw = (100,0); - drawObject(stackc); -endfig; - -beginfig(4); - % - -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_picture_tex_rendering.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_picture_tex_rendering.mp deleted file mode 100644 index 3c041298699..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_picture_tex_rendering.mp +++ /dev/null @@ -1,43 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -input TEX; - -beginfig(1); - PictureInfoCopy.myP(iPict); - myP.boxed := 1; - myP.ignoreNegativeBase := 1; - - EPicture.p(myP)( TEX("Hello, world $x=7$") ); - - PictureStackInfoCopy.myPS(iStack); - myPS.boxed := 1; - myPS.iPict.boxed := 1; - myPS.iPict.ignoreNegativeBase := 1; - - EPictureStack.ps(myPS)("Hello, world!", - TEX("This is cool: $x=y$."), - TEX("But this is insane: $\sum_1^3 f(x) \over x$!") ) ("vleft"); - - leftToRight(20)(p, ps); - - drawObjects(p, ps); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_positioning.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_positioning.mp deleted file mode 100644 index 66034767716..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_positioning.mp +++ /dev/null @@ -1,195 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -iPict.boxed := 1; -spacing := 5; -string strA, strB, strC; -strA := "a"; -strB := "..."; -strC := "XYZ"; - -beginfig(1); - save A, B, C, X, Y, Z; - - Picture.A(strA); - Picture.B(strB); - Picture.C(strC); - - align(top, left, right)(spacing)("+")(A, B, C); - - drawObjects(A, B, C); - - draw (A.left, A.top) -- (C.right, A.top); - - %%%% - - Picture.X(strA); - Picture.Y(strB); - Picture.Z(strC); - - leftToRight.top(spacing)(X, Y, Z); - - X.top = A.bottom - 10; - - drawObjects(X, Y, Z); - - draw (X.left, X.top) -- (Z.right, X.top); -endfig; - -beginfig(2); - save A, B, C, X, Y, Z; - - Picture.A(strA); - Picture.B(strB); - Picture.C(strC); - - align(midy, left, right)(spacing)("+")(A, B, C); - - drawObjects(A, B, C); - - draw (A.left, A.midy) -- (C.right, A.midy); - - %%%% - - Picture.X(strA); - Picture.Y(strB); - Picture.Z(strC); - - leftToRight.midy(spacing)(X, Y, Z); - - X.top = A.bottom - 10; - - drawObjects(X, Y, Z); - - draw (X.left, X.midy) -- (Z.right, X.midy); -endfig; - -beginfig(3); - save A, B, C, X, Y, Z; - - Picture.A(strA); - Picture.B(strB); - Picture.C(strC); - - align(bottom, left, right)(spacing)("+")(A, B, C); - - drawObjects(A, B, C); - - draw (A.left, A.bottom) -- (C.right, A.bottom); - - %%%% - - Picture.X(strA); - Picture.Y(strB); - Picture.Z(strC); - - leftToRight.bottom(spacing)(X, Y, Z); - - X.top = A.bottom - 10; - - drawObjects(X, Y, Z); - - draw (X.left, X.bottom) -- (Z.right, X.bottom); -endfig; - -beginfig(4); - save A, B, C, X, Y, Z; - - Picture.A(strA); - Picture.B(strB); - Picture.C(strC); - - align(left, top, bottom)(spacing)("-")(A, B, C); - - drawObjects(A, B, C); - - draw (A.left, A.top) -- (A.left, C.bottom); - - %%%% - - Picture.X(strA); - Picture.Y(strB); - Picture.Z(strC); - - topToBottom.left(spacing)(X, Y, Z); - - X.top = C.bottom - 10; - - drawObjects(X, Y, Z); - - draw (X.left, X.top) -- (X.left, Z.bottom); -endfig; - -beginfig(5); - save A, B, C, X, Y, Z; - - Picture.A(strA); - Picture.B(strB); - Picture.C(strC); - - align(midx, top, bottom)(spacing)("-")(A, B, C); - - drawObjects(A, B, C); - - draw (A.midx, A.top) -- (A.midx, C.bottom); - - %%%% - - Picture.X(strA); - Picture.Y(strB); - Picture.Z(strC); - - topToBottom.midx(spacing)(X, Y, Z); - - X.top = C.bottom - 10; - - drawObjects(X, Y, Z); - - draw (X.midx, X.top) -- (X.midx, Z.bottom); -endfig; - -beginfig(6); - save A, B, C, X, Y, Z; - - Picture.A(strA); - Picture.B(strB); - Picture.C(strC); - - align(right, top, bottom)(spacing)("-")(A, B, C); - - drawObjects(A, B, C); - - draw (A.right, A.top) -- (A.right, C.bottom); - - %%%% - - Picture.X(strA); - Picture.Y(strB); - Picture.Z(strC); - - topToBottom.right(spacing)(X, Y, Z); - - X.top = C.bottom - 10; - - drawObjects(X, Y, Z); - - draw (X.right, X.top) -- (X.right, Z.bottom); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_skins.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_skins.mp deleted file mode 100644 index 750cee4e975..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_skins.mp +++ /dev/null @@ -1,26 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; -input metauml_skin_simple; - -beginfig(1); - Class.HelloSkin("HelloSkin")("nice: int")("done(): void"); - drawObject(HelloSkin); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_skins_global_defaults.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_skins_global_defaults.mp deleted file mode 100644 index aaeffd043b7..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_skins_global_defaults.mp +++ /dev/null @@ -1,29 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -string metauml_defaultFont, metauml_defaultFontLight; -metauml_defaultFont := "cmr12"; -metauml_defaultFontLight := "cmr10"; - -input metauml; - -beginfig(1); - Class.HelloSkinB("HelloSkinGlobal")("foo: int")("bar(): void"); - drawObject(HelloSkinB); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_state.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_state.mp deleted file mode 100644 index f9a53741c01..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_state.mp +++ /dev/null @@ -1,73 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -beginfig(1); - EntryPoint.entry; - ExitPoint.exit; - - entry.nw = (0,0); - exit.nw = (50,50); - - drawObjects(entry, exit); - clink(transition)(entry, exit); -endfig; - -beginfig(2); - EState.myState(iState)("the light is", "visibly on")(); - drawObject(myState); - - State.anotherState("Another nice state")(); - anotherState.info.drawNameLine := 1; - drawObjectAt(anotherState)(anotherState.nw = (0,50)); -endfig; - -beginfig(3); - State.interesting("Interesting state")(); - State_internalTransitions.interesting("OnEntry / doVeryHappy", "OnExit / doSomewhatSad"); - interesting.info.drawNameLine := 1; - - drawObject(interesting); -endfig; - -beginfig(4); - Begin.b; - End.e; - State.sa("A state")(); - State.sb("Another state")(); - setObjectJoin(pb.w = pa.e + (40, 0)); - joinObjects(b, sa, sb, e); - - State.composite("Composite state")(b, e, sa, sb); - drawObject(composite); - - clink(transition)(b, sa); - clink(transition)(sa, sb); - clink(transition)(sb, e); -endfig; - -beginfig(5); -endfig; - -beginfig(6); -endfig; - -beginfig(7); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_usecase.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_usecase.mp deleted file mode 100644 index dd75ac68be5..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/test_usecase.mp +++ /dev/null @@ -1,197 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -input metauml; - -HumanInfoCopy.iDwarf(iHuman); -iDwarf.width := 60; -iDwarf.height := 20; -iDwarf.foreColor := blue; -iDwarf.shadeColor := .8blue; - -beginfig(1); - Human.h; - drawObject(h); - draw objectBox(h); - - Human.h1; - h1.n = (35, 0); - h1.info.foreColor := red; - drawObject(h1); - - Human.h2; - h2.info.height := 90; - h2.nw = (50,0); - drawObject(h2); - draw objectBox(h2); - - EHuman.d(iDwarf); - drawObjectAt(d)(d.s = (10,-50)); - - EHuman.d2(iDwarf); - d2.info.shadeColor := red; - drawObjectAt(d2)(d2.s = (10,-80)); -endfig; - -beginfig(2); - save a,b,c,d; - - show "***"; - show "Figure 2"; - show ""; - - Actor.a("foo"); - drawObject(a); - - Actor.b("Bar in debug mode", "fooling around"); - Actor_setDebugMode.b; - b.n = (70,0); - drawObject(b); - - Actor.c("Student"); - c.sw = b.n; - drawObject(c); - - Actor.d("."); - d.e = (30, -50); - drawObject(d); - label.rt("X", d.e); -endfig; - -beginfig(3); - Usecase.u("foo"); - drawObject(u); - - draw objectBox(u) withpen pencircle scaled .1; - - draw u.n withpen pencircle scaled 2 withcolor red; - draw u.s withpen pencircle scaled 2 withcolor red; - draw u.e withpen pencircle scaled 2 withcolor red; - draw u.w withpen pencircle scaled 2 withcolor red; - - draw u.ulft withpen pencircle scaled 2 withcolor blue; - draw u.urt withpen pencircle scaled 2 withcolor blue; - draw u.llft withpen pencircle scaled 2 withcolor blue; - draw u.lrt withpen pencircle scaled 2 withcolor blue; - - Usecase.login("Log in for an eagerly", "awaiting user", "which spans the 3rd line"); - login.s = (0, 5); - drawObject(login); - - Usecase.t("foo xasdf asdf as", "asdfa"); - t.s = login.n + (0,10); - drawObject(t); - - Usecase.q("foo xasdf asdf as", "asdfa", "cru asdf asdf ygh", "Sdfg s"); - q.s = t.n + (0,10); - drawObject(q); - -endfig; - -beginfig(4); - Actor.userA("User A2", "doesn't looks all too nice", "by today's standards"); - % Any Actor object is made of two sub-objects: nameStack and human. - % Each individual picture in the nameStack can be configured individually. - % - % However, it is not possible to configure all the lines in the nameStack at - % once now, saying something like: - % - % userA.nameStack.info.iPict.iFont.scale := 3; - % - % This happens because the information above is copied into the Picture objects - % in the Actor constructor (and it is useless to modify it afterwards). - % - % If you do want to make such global modifications of the settings, see the - % next two examples. - - userA.nameStack.pict[0].info.iFont.scale := 1.2; - userA.nameStack.pict[1].info.iFont.scale := .7; - userA.nameStack.info.borderColor := blue; - userA.nameStack.info.boxed := 1; - userA.nameStack.group.info.left := 30; - userA.nameStack.group.info.right := 5; - userA.human.info.foreColor := red; - - drawObject(userA); - %draw objectBox(userA.nameStack); - %draw objectBox(userA.human); -endfig; - -beginfig(5); - save userA; - % If you want to have preset a info for specific objects - - ActorInfoCopy.iBig(iActor); - - % ActorInfo contains info-s for two objects - % iNameStack: for the stack representing the actor's name - % iHuman: for the little human - - iBig.iNameStack.iPict.iFont.scale := 3; - iBig.iNameStack.spacing := 25; - iBig.iHuman.height := 25; - - EActor.userA(iBig)("User A", "on two lines"); - drawObject(userA); -endfig; - -beginfig(6); - save userA; - % If you want to have GLOBAL settings - - iActor.iNameStack.iPict.iFont.scale := 2; - iActor.iNameStack.spacing := 18; - - Actor.userA("User A", "reloaded"); - drawObject(userA); -endfig; - -beginfig(7); - save usecaseA; - Usecase.usecaseA("A highly customizable", "usecase. Foo bar!"); - usecaseA.info.iNameStack.iPict.iFont.scale := .5; - drawObject(usecaseA); -endfig; - -beginfig(8); - save usecaseA; - Usecase.usecaseA("A highly customizable", "usecase. Foo bar!"); - usecaseA.info.iNameStack.iPict.iFont.scale := 1.1; - usecaseA.info.foreColor := red; - usecaseA.info.borderColor := blue; - usecaseA.info.iShade.background := green; - usecaseA.info.iShade.shift := 4; - drawObject(usecaseA); -endfig; - -beginfig(9); - save usecaseA; - UsecaseInfoCopy.iMyUsecase(iUsecase); - iMyUsecase.iNameStack.iPict.iFont.scale := .6; - iMyUsecase.iNameStack.spacing := 5; - iMyUsecase.foreColor := green; - iMyUsecase.iShade.background := red; - - EUsecase.usecaseA(iMyUsecase)("A highly ", " customizable usecase."); - EUsecase.usecaseB(iMyUsecase)("Another very ", " customizable usecase."); - - leftToRight(20)(usecaseA, usecaseB); - drawObjects(usecaseA, usecaseB); -endfig; - -end - diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/usecase.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/usecase.mp deleted file mode 100644 index ca8040f57b2..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/usecase.mp +++ /dev/null @@ -1,43 +0,0 @@ -% Sample MetaUML figures. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -input metauml; - -beginfig(1); - Usecase.U("Authenticate user", - "by name, password"); - drawObject(U); -endfig; - -beginfig(2); - Actor.A("User"); - drawObject(A); -endfig; - -beginfig(3); - save A; - - Actor.A("Administrator"); - drawObject(A); - draw A.nw -- A.ne -- A.se -- A.sw -- cycle; - draw A.human.nw -- A.human.ne -- A.human.se -- A.human.sw -- cycle; - -endfig; - - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/usecase_diagrams.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/usecase_diagrams.mp deleted file mode 100644 index 110ca35c072..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/fig/usecase_diagrams.mp +++ /dev/null @@ -1,48 +0,0 @@ -% Part of the MetaUML manual. -% Copyright (C) 2005 Ovidiu Gheorghies -% -% This program is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License -% as published by the Free Software Foundation; either version 2 -% of the License, or (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program; if not, write to the Free Software -% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -% for f in `find . | grep '.*\.[1-9]'`; do echo $f; done - -input metauml; - -beginfig(1); - Actor.user("User"); - Actor.db("Database"); - - Usecase.dbquery("Query database"); - Usecase.auth("Authentification"); - Usecase.authA("Authentification by", "username, password"); - Usecase.authB("Authentification by", "smartcard"); - - auth.w = user.human.e + (30,0); - dbquery.s = auth.n + (0,30); - db.human.w = dbquery.e + (30,0); - - authB.left - authA.right = 30; - authB.midy = authA.midy; - .5[authB.w, authA.e] = (auth.midx, auth.bottom - 50); - - drawObjects(user, auth, dbquery, db, authA, authB); - - clink(inheritance)(authA, auth); - clink(inheritance)(authB, auth); - clink(association)(auth, dbquery); - clink(association)(user.human, auth); - clink(association)(dbquery, db.human); -endfig; - -end diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/gnu-fdl.tex b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/gnu-fdl.tex deleted file mode 100644 index 6602c824dab..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/gnu-fdl.tex +++ /dev/null @@ -1,485 +0,0 @@ - \begin{center} - - Version 1.2, November 2002 - - - Copyright \copyright 2000,2001,2002 Free Software Foundation, Inc. - - \bigskip - - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - \bigskip - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. -\end{center} - - -\begin{center} -{\bf\large Preamble} -\end{center} - -The purpose of this License is to make a manual, textbook, or other -functional and useful document "free" in the sense of freedom: to -assure everyone the effective freedom to copy and redistribute it, -with or without modifying it, either commercially or noncommercially. -Secondarily, this License preserves for the author and publisher a way -to get credit for their work, while not being considered responsible -for modifications made by others. - -This License is a kind of "copyleft", which means that derivative -works of the document must themselves be free in the same sense. It -complements the GNU General Public License, which is a copyleft -license designed for free software. - -We have designed this License in order to use it for manuals for free -software, because free software needs free documentation: a free -program should come with manuals providing the same freedoms that the -software does. But this License is not limited to software manuals; -it can be used for any textual work, regardless of subject matter or -whether it is published as a printed book. We recommend this License -principally for works whose purpose is instruction or reference. - - -\begin{center} -{\bf 1. APPLICABILITY AND DEFINITIONS} -%\addcontentsline{toc}{section}{1. APPLICABILITY AND DEFINITIONS} -\end{center} - -This License applies to any manual or other work, in any medium, that -contains a notice placed by the copyright holder saying it can be -distributed under the terms of this License. Such a notice grants a -world-wide, royalty-free license, unlimited in duration, to use that -work under the conditions stated herein. The \textbf{"Document"}, below, -refers to any such manual or work. Any member of the public is a -licensee, and is addressed as \textbf{"you"}. You accept the license if you -copy, modify or distribute the work in a way requiring permission -under copyright law. - -A \textbf{"Modified Version"} of the Document means any work containing the -Document or a portion of it, either copied verbatim, or with -modifications and/or translated into another language. - -A \textbf{"Secondary Section"} is a named appendix or a front-matter section of -the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall subject -(or to related matters) and contains nothing that could fall directly -within that overall subject. (Thus, if the Document is in part a -textbook of mathematics, a Secondary Section may not explain any -mathematics.) The relationship could be a matter of historical -connection with the subject or with related matters, or of legal, -commercial, philosophical, ethical or political position regarding -them. - -The \textbf{"Invariant Sections"} are certain Secondary Sections whose titles -are designated, as being those of Invariant Sections, in the notice -that says that the Document is released under this License. If a -section does not fit the above definition of Secondary then it is not -allowed to be designated as Invariant. The Document may contain zero -Invariant Sections. If the Document does not identify any Invariant -Sections then there are none. - -The \textbf{"Cover Texts"} are certain short passages of text that are listed, -as Front-Cover Texts or Back-Cover Texts, in the notice that says that -the Document is released under this License. A Front-Cover Text may -be at most 5 words, and a Back-Cover Text may be at most 25 words. - -A \textbf{"Transparent"} copy of the Document means a machine-readable copy, -represented in a format whose specification is available to the -general public, that is suitable for revising the document -straightforwardly with generic text editors or (for images composed of -pixels) generic paint programs or (for drawings) some widely available -drawing editor, and that is suitable for input to text formatters or -for automatic translation to a variety of formats suitable for input -to text formatters. A copy made in an otherwise Transparent file -format whose markup, or absence of markup, has been arranged to thwart -or discourage subsequent modification by readers is not Transparent. -An image format is not Transparent if used for any substantial amount -of text. A copy that is not "Transparent" is called \textbf{"Opaque"}. - -Examples of suitable formats for Transparent copies include plain -ASCII without markup, Texinfo input format, LaTeX input format, SGML -or XML using a publicly available DTD, and standard-conforming simple -HTML, PostScript or PDF designed for human modification. Examples of -transparent image formats include PNG, XCF and JPG. Opaque formats -include proprietary formats that can be read and edited only by -proprietary word processors, SGML or XML for which the DTD and/or -processing tools are not generally available, and the -machine-generated HTML, PostScript or PDF produced by some word -processors for output purposes only. - -The \textbf{"Title Page"} means, for a printed book, the title page itself, -plus such following pages as are needed to hold, legibly, the material -this License requires to appear in the title page. For works in -formats which do not have any title page as such, "Title Page" means -the text near the most prominent appearance of the work's title, -preceding the beginning of the body of the text. - -A section \textbf{"Entitled XYZ"} means a named subunit of the Document whose -title either is precisely XYZ or contains XYZ in parentheses following -text that translates XYZ in another language. (Here XYZ stands for a -specific section name mentioned below, such as \textbf{"Acknowledgements"}, -\textbf{"Dedications"}, \textbf{"Endorsements"}, or \textbf{"History"}.) -To \textbf{"Preserve the Title"} -of such a section when you modify the Document means that it remains a -section "Entitled XYZ" according to this definition. - -The Document may include Warranty Disclaimers next to the notice which -states that this License applies to the Document. These Warranty -Disclaimers are considered to be included by reference in this -License, but only as regards disclaiming warranties: any other -implication that these Warranty Disclaimers may have is void and has -no effect on the meaning of this License. - - -\begin{center} -{\bf 2. VERBATIM COPYING} -%\addcontentsline{toc}{section}{2. VERBATIM COPYING} -\end{center} - -You may copy and distribute the Document in any medium, either -commercially or noncommercially, provided that this License, the -copyright notices, and the license notice saying this License applies -to the Document are reproduced in all copies, and that you add no other -conditions whatsoever to those of this License. You may not use -technical measures to obstruct or control the reading or further -copying of the copies you make or distribute. However, you may accept -compensation in exchange for copies. If you distribute a large enough -number of copies you must also follow the conditions in section 3. - -You may also lend copies, under the same conditions stated above, and -you may publicly display copies. - - -\begin{center} -{\bf 3. COPYING IN QUANTITY} -%\addcontentsline{toc}{section}{3. COPYING IN QUANTITY} -\end{center} - - -If you publish printed copies (or copies in media that commonly have -printed covers) of the Document, numbering more than 100, and the -Document's license notice requires Cover Texts, you must enclose the -copies in covers that carry, clearly and legibly, all these Cover -Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on -the back cover. Both covers must also clearly and legibly identify -you as the publisher of these copies. The front cover must present -the full title with all words of the title equally prominent and -visible. You may add other material on the covers in addition. -Copying with changes limited to the covers, as long as they preserve -the title of the Document and satisfy these conditions, can be treated -as verbatim copying in other respects. - -If the required texts for either cover are too voluminous to fit -legibly, you should put the first ones listed (as many as fit -reasonably) on the actual cover, and continue the rest onto adjacent -pages. - -If you publish or distribute Opaque copies of the Document numbering -more than 100, you must either include a machine-readable Transparent -copy along with each Opaque copy, or state in or with each Opaque copy -a computer-network location from which the general network-using -public has access to download using public-standard network protocols -a complete Transparent copy of the Document, free of added material. -If you use the latter option, you must take reasonably prudent steps, -when you begin distribution of Opaque copies in quantity, to ensure -that this Transparent copy will remain thus accessible at the stated -location until at least one year after the last time you distribute an -Opaque copy (directly or through your agents or retailers) of that -edition to the public. - -It is requested, but not required, that you contact the authors of the -Document well before redistributing any large number of copies, to give -them a chance to provide you with an updated version of the Document. - - -\begin{center} -{\bf 4. MODIFICATIONS} -%\addcontentsline{toc}{section}{4. MODIFICATIONS} -\end{center} - -You may copy and distribute a Modified Version of the Document under -the conditions of sections 2 and 3 above, provided that you release -the Modified Version under precisely this License, with the Modified -Version filling the role of the Document, thus licensing distribution -and modification of the Modified Version to whoever possesses a copy -of it. In addition, you must do these things in the Modified Version: - -\begin{itemize} -\item[A.] - Use in the Title Page (and on the covers, if any) a title distinct - from that of the Document, and from those of previous versions - (which should, if there were any, be listed in the History section - of the Document). You may use the same title as a previous version - if the original publisher of that version gives permission. - -\item[B.] - List on the Title Page, as authors, one or more persons or entities - responsible for authorship of the modifications in the Modified - Version, together with at least five of the principal authors of the - Document (all of its principal authors, if it has fewer than five), - unless they release you from this requirement. - -\item[C.] - State on the Title page the name of the publisher of the - Modified Version, as the publisher. - -\item[D.] - Preserve all the copyright notices of the Document. - -\item[E.] - Add an appropriate copyright notice for your modifications - adjacent to the other copyright notices. - -\item[F.] - Include, immediately after the copyright notices, a license notice - giving the public permission to use the Modified Version under the - terms of this License, in the form shown in the Addendum below. - -\item[G.] - Preserve in that license notice the full lists of Invariant Sections - and required Cover Texts given in the Document's license notice. - -\item[H.] - Include an unaltered copy of this License. - -\item[I.] - Preserve the section Entitled "History", Preserve its Title, and add - to it an item stating at least the title, year, new authors, and - publisher of the Modified Version as given on the Title Page. If - there is no section Entitled "History" in the Document, create one - stating the title, year, authors, and publisher of the Document as - given on its Title Page, then add an item describing the Modified - Version as stated in the previous sentence. - -\item[J.] - Preserve the network location, if any, given in the Document for - public access to a Transparent copy of the Document, and likewise - the network locations given in the Document for previous versions - it was based on. These may be placed in the "History" section. - You may omit a network location for a work that was published at - least four years before the Document itself, or if the original - publisher of the version it refers to gives permission. - -\item[K.] - For any section Entitled "Acknowledgements" or "Dedications", - Preserve the Title of the section, and preserve in the section all - the substance and tone of each of the contributor acknowledgements - and/or dedications given therein. - -\item[L.] - Preserve all the Invariant Sections of the Document, - unaltered in their text and in their titles. Section numbers - or the equivalent are not considered part of the section titles. - -\item[M.] - Delete any section Entitled "Endorsements". Such a section - may not be included in the Modified Version. - -\item[N.] - Do not retitle any existing section to be Entitled "Endorsements" - or to conflict in title with any Invariant Section. - -\item[O.] - Preserve any Warranty Disclaimers. -\end{itemize} - -If the Modified Version includes new front-matter sections or -appendices that qualify as Secondary Sections and contain no material -copied from the Document, you may at your option designate some or all -of these sections as invariant. To do this, add their titles to the -list of Invariant Sections in the Modified Version's license notice. -These titles must be distinct from any other section titles. - -You may add a section Entitled "Endorsements", provided it contains -nothing but endorsements of your Modified Version by various -parties--for example, statements of peer review or that the text has -been approved by an organization as the authoritative definition of a -standard. - -You may add a passage of up to five words as a Front-Cover Text, and a -passage of up to 25 words as a Back-Cover Text, to the end of the list -of Cover Texts in the Modified Version. Only one passage of -Front-Cover Text and one of Back-Cover Text may be added by (or -through arrangements made by) any one entity. If the Document already -includes a cover text for the same cover, previously added by you or -by arrangement made by the same entity you are acting on behalf of, -you may not add another; but you may replace the old one, on explicit -permission from the previous publisher that added the old one. - -The author(s) and publisher(s) of the Document do not by this License -give permission to use their names for publicity for or to assert or -imply endorsement of any Modified Version. - - -\begin{center} -{\bf 5. COMBINING DOCUMENTS} -%\addcontentsline{toc}{section}{5. COMBINING DOCUMENTS} -\end{center} - - -You may combine the Document with other documents released under this -License, under the terms defined in section 4 above for modified -versions, provided that you include in the combination all of the -Invariant Sections of all of the original documents, unmodified, and -list them all as Invariant Sections of your combined work in its -license notice, and that you preserve all their Warranty Disclaimers. - -The combined work need only contain one copy of this License, and -multiple identical Invariant Sections may be replaced with a single -copy. If there are multiple Invariant Sections with the same name but -different contents, make the title of each such section unique by -adding at the end of it, in parentheses, the name of the original -author or publisher of that section if known, or else a unique number. -Make the same adjustment to the section titles in the list of -Invariant Sections in the license notice of the combined work. - -In the combination, you must combine any sections Entitled "History" -in the various original documents, forming one section Entitled -"History"; likewise combine any sections Entitled "Acknowledgements", -and any sections Entitled "Dedications". You must delete all sections -Entitled "Endorsements". - -\begin{center} -{\bf 6. COLLECTIONS OF DOCUMENTS} -%\addcontentsline{toc}{section}{6. COLLECTIONS OF DOCUMENTS} -\end{center} - -You may make a collection consisting of the Document and other documents -released under this License, and replace the individual copies of this -License in the various documents with a single copy that is included in -the collection, provided that you follow the rules of this License for -verbatim copying of each of the documents in all other respects. - -You may extract a single document from such a collection, and distribute -it individually under this License, provided you insert a copy of this -License into the extracted document, and follow this License in all -other respects regarding verbatim copying of that document. - - -\begin{center} -{\bf 7. AGGREGATION WITH INDEPENDENT WORKS} -%\addcontentsline{toc}{section}{7. AGGREGATION WITH INDEPENDENT WORKS} -\end{center} - - -A compilation of the Document or its derivatives with other separate -and independent documents or works, in or on a volume of a storage or -distribution medium, is called an "aggregate" if the copyright -resulting from the compilation is not used to limit the legal rights -of the compilation's users beyond what the individual works permit. -When the Document is included in an aggregate, this License does not -apply to the other works in the aggregate which are not themselves -derivative works of the Document. - -If the Cover Text requirement of section 3 is applicable to these -copies of the Document, then if the Document is less than one half of -the entire aggregate, the Document's Cover Texts may be placed on -covers that bracket the Document within the aggregate, or the -electronic equivalent of covers if the Document is in electronic form. -Otherwise they must appear on printed covers that bracket the whole -aggregate. - - -\begin{center} -{\bf 8. TRANSLATION} -%\addcontentsline{toc}{section}{8. TRANSLATION} -\end{center} - - -Translation is considered a kind of modification, so you may -distribute translations of the Document under the terms of section 4. -Replacing Invariant Sections with translations requires special -permission from their copyright holders, but you may include -translations of some or all Invariant Sections in addition to the -original versions of these Invariant Sections. You may include a -translation of this License, and all the license notices in the -Document, and any Warranty Disclaimers, provided that you also include -the original English version of this License and the original versions -of those notices and disclaimers. In case of a disagreement between -the translation and the original version of this License or a notice -or disclaimer, the original version will prevail. - -If a section in the Document is Entitled "Acknowledgements", -"Dedications", or "History", the requirement (section 4) to Preserve -its Title (section 1) will typically require changing the actual -title. - - -\begin{center} -{\bf 9. TERMINATION} -%\addcontentsline{toc}{section}{9. TERMINATION} -\end{center} - - -You may not copy, modify, sublicense, or distribute the Document except -as expressly provided for under this License. Any other attempt to -copy, modify, sublicense or distribute the Document is void, and will -automatically terminate your rights under this License. However, -parties who have received copies, or rights, from you under this -License will not have their licenses terminated so long as such -parties remain in full compliance. - - -\begin{center} -{\bf 10. FUTURE REVISIONS OF THIS LICENSE} -%\addcontentsline{toc}{section}{10. FUTURE REVISIONS OF THIS LICENSE} -\end{center} - - -The Free Software Foundation may publish new, revised versions -of the GNU Free Documentation License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. See -http://www.gnu.org/copyleft/. - -Each version of the License is given a distinguishing version number. -If the Document specifies that a particular numbered version of this -License "or any later version" applies to it, you have the option of -following the terms and conditions either of that specified version or -of any later version that has been published (not as a draft) by the -Free Software Foundation. If the Document does not specify a version -number of this License, you may choose any version ever published (not -as a draft) by the Free Software Foundation. - - -\begin{center} -{\bf ADDENDUM: How to use this License for your documents} -%\addcontentsline{toc}{section}{ADDENDUM: How to use this License for your documents} -\end{center} - -To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and -license notices just after the title page: - -\bigskip -\begin{quote} - Copyright \copyright YEAR YOUR NAME. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.2 - or any later version published by the Free Software Foundation; - with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. - A copy of the license is included in the section entitled "GNU - Free Documentation License". -\end{quote} -\bigskip - -If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, -replace the "with...Texts." line with this: - -\bigskip -\begin{quote} - with the Invariant Sections being LIST THEIR TITLES, with the - Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. -\end{quote} -\bigskip - -If you have Invariant Sections without Cover Texts, or some other -combination of the three, merge those two alternatives to suit the -situation. - -If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, -to permit their use in free software. diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/macro.tex b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/macro.tex deleted file mode 100644 index dc6bee1a4d5..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/macro.tex +++ /dev/null @@ -1,11 +0,0 @@ -% $Id$ -% This file defines some useful macros - -\def\newop#1 {\expandafter\def\csname #1\endcsname{\mathop{\rm #1}\nolimits}} - -\newop{Operator} % use with \Operator - -\def\fn(#1:#2->#3){#1:#2 \rightarrow #3} -\def\set(#1,#2...#3){\{#1,#2,\ldots,#3\}} -\def\enum(#1,#2...#3){#1,#2,\ldots,#3} -\def\ssets{\cal{P}} \ No newline at end of file diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/metauml_manual.tex b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/metauml_manual.tex deleted file mode 100644 index 498960cf761..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/metauml_manual.tex +++ /dev/null @@ -1,2084 +0,0 @@ -% MetaUML: Tutorial, Reference and Test Suite -% -% Copyright (c) 2005-2006 Ovidiu Gheorghies -% Permission is granted to copy, distribute and/or modify this document -% under the terms of the GNU Free Documentation License, Version 1.2 -% or any later version published by the Free Software Foundation; -% with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. -% A copy of the license is included in the section entitled "GNU -% Free Documentation License". - -\documentclass{article} - -\usepackage[pdftex,colorlinks=true]{hyperref} -\usepackage{multicol} -\usepackage{multido} - -\ifx\pdftexversion\undefined - \usepackage[dvips]{graphicx} -\else - \usepackage[pdftex]{graphicx} - \DeclareGraphicsRule{*}{mps}{*}{} -\fi - -\newcommand{\code}{\ttfamily} -\newcommand{\metauml}{MetaUML} - -\setcounter{page}{1} - -\begin{document} - -\metauml: Tutorial, Reference and Test Suite - -\begin{quote} - Copyright \copyright 2005-2006 Ovidiu Gheorghie\c{s}. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.2 - or any later version published by the Free Software Foundation; - with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. - A copy of the license is included in the section entitled "GNU - Free Documentation License". -\end{quote} - -\pagebreak -This page is intentionally left blank. - -\pagebreak -\title{\metauml: Tutorial, Reference and Test Suite} - -\author{Ovidiu Gheorghie\c{s}} - -\maketitle - -\begin{abstract} -\metauml\ is a GNU GPL MetaPost library for typesetting UML diagrams, using a human-friendly textual notation. MetaUML offers a highly customizable, object-oriented API, designed with the ease of use in mind. Apart from being a reference, this manual is also a tutorial but, more importantly, a living example. You can look at its source code, getting direct accounts on ``how things are done''. -\end{abstract} - -%\begin{keywords} -%MetaPost, TeX, LaTeX, UML, class diagram, state machine diagram, -%use case diagram, activity diagram -%\end{keywords} - -\section{Introduction} - -Here are a few diagrams created with MetaUML, just to give you a glimpse of its features: - -\begin{multicols}{2} -\paragraph{A} Class Diagram\\ -\includegraphics[scale=.55]{fig/appetizer.1} -\paragraph{B} Activity Diagram\\ -\includegraphics[scale=.55]{fig/appetizer.2} -\paragraph{C} Notes\\ -\includegraphics[scale=.55]{fig/appetizer.5} -\columnbreak -\paragraph{D} Use Case Diagram\\ -\includegraphics[scale=.55]{fig/appetizer.3} -\paragraph{E} State Machine Diagram\\ -\includegraphics[scale=.55]{fig/appetizer.4} -\paragraph{F} Package Diagram\\ -\includegraphics[scale=.55]{fig/appetizer.6} -\end{multicols} - -\pagebreak - -The code which generates these diagrams is quite straightforward, combining a natural object-oriented parlance with the power of MetaPost equation solving; for more information on MetaPost see \cite {metapost}. - -An UML class, for example, can be drawn as follows: - -\begin{multicols}{2} -\begin{verbatim} -Class.A("MyClass") - ("attr1: int", "attr2: int") - ("method1(): void", - "method2(): void"); - -A.nw = (0, 0); % optional, implied -drawObject(A); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/appetizer.7} -\end{multicols} - -This piece of code creates an instance of {\code Class}, which will be afterward -identified as {\code A}. This object has the following content properties: a name -({\code MyClass}), a list of attributes ({\code attr1}, {\code attr2}) -and a list of methods ({\code method1}, {\code method2}). The one thing remaining -before actually drawing {\code A} is to set its location. - -\begin{figure} -\centering -\includegraphics{fig/properties.1} -\caption{Positioning properties of any MetaUML object (here a class object is depicted).} -\label{fig:properties} -\end{figure} - -In {\code A.nw} we refer to the ``north-west'' of the class rectangle, that is -to its upper-left corner. In general, every MetaUML object has the positioning -properties given in figure \ref{fig:properties}. These properties are used to set -where to draw a given object, whether by assigning them absolute values, or by setting -them relatively to other objects. Suppose that we have defined two classes -{\code A} and {\code B}. Then the following code would give a conceivable positioning: - -\begin{multicols}{2} -\begin{verbatim} -A.nw = (0,0); -B.e = A.w + (-20, 0); -\end{verbatim} -\columnbreak -\includegraphics{fig/appetizer.8} -\end{multicols} - -After the objects are drawn, one may draw links between them, such as inheritance -or association relations between classes in class diagrams, or transitions between states -in state machine diagrams. Whichever the purpose is, MetaUML provides a generic -way of drawing an edge in a diagram's graph: - -\begin{verbatim} -link(how-to-draw-information)(path-to-draw); -\end{verbatim} - -The ``how to draw information'' is actually an object which defines the style -of the line (e.g. solid, dashed) and the appearance of the heads (e.g. nothing, arrow, diamond). -One such object, called {\code inheritance}, defines a solid path ending in -a white triangle. The {\code path-to-draw} parameter is simply a MetaPost path. -For example, the following code can be used used to represent that class {\code B} is derived from {\code A}: - -\begin{verbatim} -link(inheritance)(B.e -- A.w); -\end{verbatim} - -Note that the direction of the path is important, and MetaUML uses it to determine the -type of adornment to attach at the link ends (if applicable). In our example, a white triangle, -denoting inheritance, points towards the end of the path, that is towards class {\code A}. - -To sum up, we present a short code and the resulting diagram, typical for just about -everything else in MetaUML. The positioning of {\code A} does not need to be -explicitly set because ``floating'' objects are automatically positioned at {\code (0,0)} by their -draw method. - -\begin{multicols}{2} - -\begin{verbatim} -input metauml; -beginfig(1); - Class.A("A")()(); - Class.B("B")()(); - B.e = A.w + (-20, 0); - drawObjects(A, B); - link(inheritance)(B.e -- A.w); -endfig; -end -\end{verbatim} -\columnbreak -\includegraphics{fig/appetizer.9} -\end{multicols} - -From a user's perspective, this is all there is to MetaUML. With a reference describing how other -UML elements are created, one can set out to typeset arbitrary complex diagrams. - -\section{Class Diagrams} - -A class is created as follows: - -\begin{verbatim} -Class.name(class-name) - (list-of-attributes) - (list-of-methods); -\end{verbatim} - -The suffix {\code name} gives a name to the {\code Class} object (which, of course, represents an UML class). -The name of the UML class is a string given by {\code class-name}; -the attributes are given as a comma separated list of strings, {\code list-of-attributes}; -the methods are given as a comma separated list of strings, {\code list-of-attributes}. -The list of attributes and the list of methods may be void. - -Each of the strings representing an attribute or a method may begin with a visibility marker: ``$+$'' for -public, ``\#'' for protected and ``$-$'' for private. MetaUML interprets this marker and renders a -graphic stereotype in form of a lock which may be opened, semi-closed and closed, respectively. - -Here is an example: - -\begin{multicols}{2} -\begin{verbatim} -Class.A("Point") - ("#x:int", "#y:int") - ("+set(x:int, y:int)", - "+getX():int", - "+getY():int", - "-debug():void"); -drawObject(A); -\end{verbatim} -\columnbreak -\includegraphics{fig/class.1} -\end{multicols} - -\subsection{Stereotypes} - -After a class is created, its stereotypes may be specified by using the macro {\code classStereotypes}: - -\begin{verbatim} -classStereotypes.name(list-of-stereotypes); -\end{verbatim} - -Here, {\code name} is the object name of a previously created class and {\code list-of-stereotypes} -is a comma separated list of strings. Here is an example: - -\begin{multicols}{2} -\begin{verbatim} -Class.A("User")()(); -classStereotypes.A("<>", - "<>"); - -drawObject(A); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/class.2} -\end{multicols} - -\subsection{Interfaces and Abstract Classes} - -At times it is prefered to typeset the name of an interface in an oblique font, rather than using the ``interface'' stereotype. This can be easily achieved by using the macro: - -\begin{verbatim} -Interface.name(class-name) - (list-of-methods); -\end{verbatim} - -Here is an example: - -\begin{multicols}{2} -\begin{verbatim} -Interface.A("Observer") - ("+update(src:Object)"); - -drawObject(A); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/class.11} -\end{multicols} - -Note that {\code Interface} is a special kind of {\code Class}, the declaration code above being equivalent to: -\begin{verbatim} -EClass.A(iInterface)("Observer")() - ("+update(src:Object)"); -\end{verbatim} - -Along the same line, here's how abstract classes can be drawn: - -\begin{multicols}{2} -\begin{verbatim} -EClass.A(iAbstractClass)("Observable") - ("observers: Observer[0..*]") - ("+addObserver(o: Observer)", - "+notify()"); - -drawObject(A); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/class.12} -\end{multicols} - -If you prefer, you can use the syntactic sugar: - -\begin{verbatim} -AbstractClass.A("Observable") - ("observers: Observer[0..*]") - ("+addObserver(o: Observer)", - "+notify()"); -\end{verbatim} - -\subsection{Displaying Class Name Only} - -If you want the empty methods and attributes compartments in a class not being displayed, one way is to set the spacing at their top and the bottom to {\code 0}: - -\begin{multicols}{2} -\begin{verbatim} -Class.A("MyModel")()(); -A.info.iAttributeStack.top := 0; -A.info.iAttributeStack.bottom := 0; -A.info.iMethodStack.top := 0; -A.info.iMethodStack.bottom := 0; - -drawObject(A); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/class.13} -\end{multicols} - -There are also specific formating macros defined for this usage scenarios, the formatting information object {\code iClassNameOnly} and the syntactic sugar macro {\code ClassName}: - -\begin{multicols}{2} -\begin{verbatim} -EClass.A(iClassNameOnly)("MyModel")()(); -ClassName.B("AnotherModel"); -classStereotypes.B("<>"); - -topToBottom(20)(A, B); - -drawObjects(A, B); -\end{verbatim} -\columnbreak -\hspace{2cm}\includegraphics{fig/class.14} -\end{multicols} - -To customize the space around the class name globally, you can set the values of {\code iClassNameOnly.iName.top} and {\code iClassNameOnly.iName.bottom}. Individually, for a given object, say {\code B}, the attributes {\code B.info.iName.top} and {\code B.info.iName.bottom} can be used. - -\subsection{Objects (or Class Instances)} - -An UML object (or class instance) is created as follows: - -\begin{verbatim} -Instance.name(object-name) - (list-of-attributes); -\end{verbatim} - -The suffix {\code name} gives a name to the {\code Instance} object. The name of the object (given by {\code object-name}) is typeset underlined. The attributes are given as a comma separated list of strings, {\code list-of-attributes}. - -\begin{multicols}{2} -\begin{verbatim} -Instance.order("o: Order") - ("name='book'", "{placed}", "{payed}"); -drawObject(order); -\end{verbatim} -\columnbreak -\hspace{2cm}\includegraphics{fig/instance.1} -\end{multicols} - - -\subsection{Parametrized Classes (Templates)} - -The most convenient way of typesetting a class template in \metauml\ is to use the macro {\code ClassTemplate}. -This macro creates a visual object which is appropriately positioned near the class object it adorns. - -\begin{verbatim} -ClassTemplate.name(list-of-templates) - (class-object); -\end{verbatim} - -The {\code name} is the name of the template object, {\code list-of-templates} is a comma separated list of strings and the {\code class-object} is the name of a class object. - -Here is an example: - -\begin{multicols}{2} -\begin{verbatim} -Class.A("Vector")()(); -ClassTemplate.T("T", "size: int")(A); - -drawObjects(A, T); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/class.3} -\end{multicols} - -The macro {\code Template} can also be used to create a template object, but this time the resulting -object can be positioned freely. - -\begin{verbatim} -Template.name(list-of-templates); -\end{verbatim} - -Of course, one can specify both stereotypes and template parameters for a given class. - -\subsection{Types of Links} - -In this section we enumerate the relations that can be drawn between classes by means -of \metauml\ macros. Suppose that we have the declared two points, {\code A} (on the left) -and {\code B} (on the right): - -\begin{verbatim} -pair A, B; -A = (0,0); -B = (50,0); -\end{verbatim} - -\begin{tabular}{||l|c||} -\hline -{\code link(association)(X.e -- Y.w)} & \includegraphics{fig/class_diagrams.4} \\ -\hline -{\code link(associationUni)(X.e -- Y.w)} & \includegraphics{fig/class_diagrams.5} \\ -\hline -{\code link(inheritance)(X.e -- Y.w)} & \includegraphics{fig/class_diagrams.6} \\ -\hline -{\code link(realization)(X.e -- Y.w)} & \includegraphics{fig/class_diagrams.12} \\ -\hline -{\code link(aggregation)(X.e -- Y.w)} & \includegraphics{fig/class_diagrams.7} \\ -\hline -{\code link(aggregationUni)(X.e -- Y.w)} & \includegraphics{fig/class_diagrams.8} \\ -\hline -{\code link(composition)(X.e -- Y.w)} & \includegraphics{fig/class_diagrams.9} \\ -\hline -{\code link(compositionUni)(X.e -- Y.w)} & \includegraphics{fig/class_diagrams.10} \\ -\hline -{\code link(dependency)(X.e -- Y.w)} & \includegraphics{fig/class_diagrams.11} \\ -\hline -\end{tabular} - -\subsection{Associations} -In UML an association typically has two of association ends and may have a name specified for it. -In turn, each association end may specify a multiplicity, a role, a visibility, an ordering. -These entities are treated in \metauml\ as pictures having specific drawing information -(spacings, font). - -The first method of creating association ``items'' is by giving them explicit names. -Having a name for an association item comes in handy when referring to its properties -is later needed (see the non UML-compliant diagram below). Note that the last parameter of the macro {\code item} is an equation which uses the item name to perform positioning. - -\begin{multicols}{2} -\begin{verbatim} -Class.P("Person")()(); -Class.C("Company")()(); -% drawing code ommited - -item.aName(iAssoc)("works for") - (aName.s = .5[P.w, C.w]); -draw aName.n -- (aName.n + (20,20)); -label.urt("association name" infont "tyxtt", - aName.n + (20,20)); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics[scale=.8]{fig/class_association.1} -\end{multicols} - -However, giving names to every association item may become an annoying burden -(especially when there are many of them). Because of this, \metauml\ also allows for -``anonymous items''. In this case, the positioning is set by an equation -which refers to the anonymous item as {\code obj}. - -\begin{multicols}{2} -\begin{verbatim} -% P and C defined as in the previous example - -item(iAssoc)("employee")(obj.nw = P.s); -item(iAssoc)("1..*")(obj.ne = P.s); - -% other items are drawn similarly -\end{verbatim} -\columnbreak -\hspace{3cm}\includegraphics{fig/class_association.2} -\end{multicols} - -\subsection{Dependencies and Stereotypes} - -Stereotypes are frequently used with dependencies. Below is an example. -\pagebreak - -\begin{multicols}{2} -\begin{verbatim} -Class.F("Factory")()(); -Class.O("Object")()(); - -O.n = F.s - (0, 50); -drawObjects(F, O); - -clink(dependency)(F, O); -item(iStereo)("<>")(obj.w = .5[F.s,O.n]) -\end{verbatim} -\columnbreak -\hspace{3cm}\includegraphics{fig/class_association.3} -\end{multicols} - -\section{Notes} - -A note is created as follows: - -\begin{verbatim} -Note.name(list-of-lines); -\end{verbatim} - -The suffix {\code name} is the name of the {\code Note} object. The comma separated list of strings, {\code list-of-lines}, gives the text contents of the note object, each string being drawn on its own line. -Here is an example: - -\begin{multicols}{2} -\begin{verbatim} -Note.A("This note", "has two lines."); -drawObject(A); -\end{verbatim} -\columnbreak -\hspace{3cm}\includegraphics{fig/note.1} -\end{multicols} - -\subsection{Attaching notes to diagram elements} - -Notes can be attached to diagram elements by using a link of type {\code dashedLink}. - -\begin{multicols}{2} -\begin{verbatim} -Note.A("This is a class"); -Class.C("Object")()(); - -A.sw = C.ne + (20, 20); - -drawObject(A, C); - -clink(dashedLink)(A, C); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/note.2} -\end{multicols} - -Now let us see a more complex example, which demontrates the ability of accessing sub-elements in a \metauml\ diagram. -\pagebreak - -\begin{multicols}{2} -\begin{verbatim} -Note.nA("This is the class name"); -Note.nB("This is a key attribute"); -Note.nC("This is a nice method"); - -Class.C("Object")("+id:int") - ("+clone()", "+serialize()"); - -topToBottom.left(10)(nA, nB, nC); -leftToRight(10)(C, nB); - -drawObjects(C, nA, nB, nC); - -clink(dashedLink)(C.namePict, nA); -clink(dashedLink)(C.attributeStack.pict[0], nB); -clink(dashedLink)(C.methodStack.pict[1], nC); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/note.3} -\end{multicols} - -Macros like {\code leftToRight} and {\code topToBottom} are presented in section \ref{section:positioning}. - -\subsection{Using mathematical formulae} - -MetaUML notes can contain mathematical formulae typeset in TeX (and {\bf not} LaTeX). This feature is considered experimental, as it is not always straightforward to use it. Below is a full-code example, note the import of MetaPost package {\code TEX}. - -\begin{multicols}{2} -\begin{verbatim} -input metauml; -input TEX; - -beginfig(1); - Note.A("This class implements the formula:", - TEX("$\sum_1^n f(x) \cdot dx$")); - drawObjects(A); -endfig; - -end -\end{verbatim} -\columnbreak -\hspace{0.5cm}\includegraphics{fig/note.4} -\end{multicols} - -If you have a taller formula, you must be prepared to do some advanced stunts. Remark: {\code "aaa" \& "bbb"} is MetaPost's way to concatenate the strings into {\code "aaabbb"}. The formula's string was split in two for space reasons. - -\begin{multicols}{2} -\begin{verbatim} -Note.A("Can you do it?", - TEX("$\sum_1^n f(x) \cdot dx " & - "\over \sum_1^m g(y) \cdot dy$")); -A.stack.info.spacing := 30; -A.stack.pict[1].info.ignoreNegativeBase := 0; - -drawObject(A); -\end{verbatim} -\columnbreak -\hspace{3cm}\includegraphics{fig/note.5} -\end{multicols} - -Alas, this trick does not entirely solve the problem: a third line in the note would be badly aligned. Therefore, until MetaUML's {\code Note} class is upgraded to better support this scenario, you may want to limit yourself to two lines per note --- at least when tall formulae are involved. - -\section{Packages} - -MetaUML allows for the creation of packages in various forms. Firstly, we have the option of writing the package name in the middle of the main box. Secondly, we can write the name on the tiny box above the main box, leaving the main box empty. Lastly, we can write the package name as in the second case, but the main box can have an arbitrary contents: classes, other packages, or even other UML items. - -The macro that creates a package has the following synopsis: - -\begin{verbatim} -Package.name(package-name)(subitems-list); -\end{verbatim} - -The parameter {\code package-name} is a string or a list of comma separated strings representing the package's name. The {\code subitems-list} parameter is used to specify the subitems (tipically classes or packages) of this package; its form is as a comma separated list of objects, which can be void. - -\begin{multicols}{2} -\begin{verbatim} -Package.P("java.lang")(); -drawObject(P); -\end{verbatim} -\columnbreak -\hspace{3cm}\includegraphics{fig/package.1} -\end{multicols} - -Below is another example: - -\begin{multicols}{2} -\begin{verbatim} -Package.P("An important", "package")(); -drawObject(P); -\end{verbatim} -\columnbreak -\hspace{3cm}\includegraphics{fig/package.2} -\end{multicols} - -If you wish to leave the main box empty, you can use the following code: - -\begin{multicols}{2} -\begin{verbatim} -Package.P("java.lang")(); -P.info.forceEmptyContent := 1; -drawObject(P); -\end{verbatim} -\columnbreak -\hspace{3cm}\includegraphics{fig/package.3} -\end{multicols} - -The same effect as above can be achieved globally by doing: - -\begin{verbatim} -iPackage.forceEmptyContent := 1; -\end{verbatim} - -More information on MetaUML's way of managing global and per-object configuration data can be found in section \ref{section:infrastructure} and section \ref{section:customization}. - -Here is an example involving items contained in a package. - -\begin{multicols}{2} -\begin{verbatim} -Class.A("A")()(); -Class.B("B")()(); -Package.P("net.metauml")(A, B); - -leftToRight(10)(A, B); - -drawObject(P); -\end{verbatim} -\columnbreak -\hspace{3cm}\includegraphics{fig/package.4} -\end{multicols} - -\subsection{Types of Links} - -The nesting relation between packages is created by using the {\code nest} link information. - -\begin{tabular}{||l|c||} -\hline -{\code link(nest)(X.e -- Y.w)} & \includegraphics{fig/package.5} \\ -\hline -\end{tabular} - -\section{Component Diagrams} - -A component is created by the macro {\code Component}: - -\begin{verbatim} -Component.name(component-name) - (subitems-list) -\end{verbatim} - -The parameter {\code component-name} is a string representing the component's name. The {\code subitems-list} parameter is used to specify the subitems of this component (possibly classes, packages or other components); its form is as a comma separated list of objects, which can be void. - -\begin{multicols}{2} -\begin{verbatim} -Component.C("Business Logic")(); -drawObject(C); -\end{verbatim} -\columnbreak -\hspace{3cm}\includegraphics{fig/component.1} -\end{multicols} - -Here is an example involving subitems in a component: - -\begin{multicols}{2} -\begin{verbatim} -Class.A("A")()(); -Package.B("B")(); -Component.C("C")(); - -Component.BigC("Big Component")(A, B, C); - -leftToRight(10)(A, B); -topToBottom(10)(A, C); - -drawObject(BigC); -\end{verbatim} -\columnbreak -\hspace{3cm}\includegraphics{fig/component.2} -\end{multicols} - -\subsection{Types of Links} - -\begin{tabular}{||l|c||} -\hline -{\code link(requiredInterface)( A.e -- .5[A.e, B.w] );} & \includegraphics{fig/component.3} \\ -\hline -{\code link(providedInterface)( .5[A.e, B.w] -- B.w );} & \includegraphics{fig/component.4} \\ -\hline -\end{tabular} - -\vspace{0.5cm} - -The {\code requiredInterface} and {\code providedInterface} visual constructs can be easily combined, as shown in the following example: - -\begin{multicols}{2} -\begin{verbatim} -Component.A("A")(); -Component.B("B")(); - -leftToRight(80)(A, B); - -drawObjects(A, B); - -link(providedInterface)( A.e -- .5[A.e, B.w] ); -link(requiredInterface)( B.w -- .5[A.e, B.w] ); -\end{verbatim} -\columnbreak -\hspace{-1cm}\includegraphics{fig/component.5} -\end{multicols} - - -\section{Use Case Diagrams} - -\subsection{Use Cases} -An use case is created by the macro {\code Usecase}: - -\begin{verbatim} -Usecase.name(list-of-lines); -\end{verbatim} - -The {\code list-of-lines} is a comma separated list of strings. These strings are placed -on top of each other, centered and surrounded by the appropriate visual UML notation. - -Here is an use case example: - -\begin{multicols}{2} -\begin{verbatim} -Usecase.U("Authenticate user", - "by name, password"); -drawObject(U); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/usecase.1} -\end{multicols} - -\subsection{Actors} - -An actor is created by the macro {\code Actor}: - -\begin{verbatim} -Actor.name(list-of-lines); -\end{verbatim} - -Here, {\code list-of-lines} represents the actor's name. For convenience, the name may be -given as a list of strings which are placed on top of each other, to provide support for -the situations when the role is quite long. Otherwise, giving a single string -as an argument to the Actor constructor is perfectly fine. - -Here is an actor example: - -\begin{multicols}{2} -\begin{verbatim} -Actor.A("User"); -drawObject(A); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/usecase.2} -\end{multicols} - -Note that one may prefer to draw diagram relations positioned relatively to -the visual representation of an actor (the ``human'') rather than relatively to the whole -actor object (which also includes the text). Because of that, MetaUML provides access -to the ``human'' of every actor object {\code actor} by means of the sub-object {\code actor.human}. - -\begin{multicols}{2} -\begin{verbatim} -Actor.A("Administrator"); -drawObject(A); -draw objectBox(A); -draw objectBox(A.human); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/usecase.3} -\end{multicols} - -Note that in \metauml\ {\code objectBox(X)} is equivalent to {\code X.nw -- X.ne -- X.se -- X.sw -- cycle} for every object {\code X}. {\code A.human} is considered a \metauml\ object, so you can use expressions like {\code A.human.n} or {\code A.human.midx}. - -\subsection{Types of Links} - -Some of the types of links defined for class diagrams (such as inheritance, association etc.) can be used with similar semantics within use case diagrams. - -\section{Activity Diagrams} - -\subsection{Begin, End and Flow End} - -The begin and the end of an activity diagram can be marked by using the macros {\code Begin} -and {\code End} or {\code FlowFinal}, respectively. The constructors of these visual objects take no parameters: - -\begin{verbatim} -Begin.beginName; -End.endName; -\end{verbatim} - -Below is an example: - -\begin{multicols}{2} -\begin{verbatim} -Begin.b; -End.e; -FlowFinal.f; - -leftToRight(20)(b, e, f); - -drawObjects(b, e, f); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/activity.1} -\end{multicols} - -\subsection{Activity} - -An activity is constructed as follows: -\begin{verbatim} -Activity.name(list-of-strings); -\end{verbatim} - -The parameter {\code list-of-strings} is a comma separated list of strings. These strings are -centered on top of each other to allow for the accommodation of a longer activity description -within a reasonable space. - -An example is given below: - -\begin{multicols}{2} -\begin{verbatim} -Activity.A("Learn MetaUML -", - "the MetaPost UML library"); -drawObject(A); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/activity.2} -\end{multicols} - -\subsection{Fork and Join} - -A fork or join is created by the macro: - -\begin{verbatim} -Fork.name(type, length); -\end{verbatim} - -The parameter {\code type} is a string and can be either of {\code "h"}, {\code "horiz"}, {\code "horizontal"} for horizontal bars, and either of {\code "v"}, {\code "vert"}, {\code "vertical"} for vertical bars. The {\code length} gives the bar's length. - -\begin{multicols}{2} -\begin{verbatim} -Fork.forkA("h", 100); -Fork.forkB("v", 20); - -leftToRight(10)(forkA, forkB); - -drawObject(forkA, forkB); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/activity.3} -\end{multicols} - -\subsection{Branch} - -A branch is created by the macro: - -\begin{verbatim} -Branch.name; -\end{verbatim} - -Here is an example: - -\begin{multicols}{2} -\begin{verbatim} -Branch.testA; - -drawObject(testA); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/activity.4} -\end{multicols} - - -\subsection{Types of Links} - -In activity diagrams, transitions between activities are needed. They are typeset -as in the example below. In section \ref{composite-states} such a transition -is showed. This type of link is also used for state machine diagrams. - -\begin{verbatim} -link(transition)( pointA -- pointB ); -\end{verbatim} - -\section{State Diagrams} - -The constructor of a state allows for aggregated sub-states: - -\begin{verbatim} -State.name(state-name)(substates-list); -\end{verbatim} - -The parameter {\code state-name} is a string or a list of comma separated strings representing -the state's name or description. The {\code substates-list} parameter is used to specify -the substates of this state as a comma separated list of objects; this list may be void. - -An example of a simple state: - -\begin{multicols}{2} -\begin{verbatim} -State.s("Take order")(); -drawObject(s); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/state.1} -\end{multicols} - - -\subsection{Composite States} -\label{composite-states} - -A composite state is defined by enumerating at the end of its constructor the inner -states. Interestingly enough, the composite state takes care of drawing the sub-states it -contains. The transitions must be drawn after the composite state, as seen in the -next example: - -\begin{multicols}{2} -\begin{verbatim} -Begin.b; -End.e; -State.c("Component")(); -State.composite("Composite")(b, e, c); - -b.midx = e.midx = c.midx; -c.top = b.bottom - 20; -e.top = c.bottom - 20; - -composite.info.drawNameLine := 1; -drawObject(composite); - -link(transition)(b.s -- c.n); -link(transition)(c.s -- e.n); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/state.2} -\end{multicols} - -\subsection{Internal Transitions} - -Internal transitions can be specified by using the macro: -\begin{verbatim} -stateTransitions.name(list-transitions); -\end{verbatim} - -Identifier {\code name} gives the state object whose internal transitions are being set, -and parameter {\code list-transitions} is a comma separated string list. - - -An example is given below: - -\begin{multicols}{2} -\begin{verbatim} -State.s("An interesting state", - "which is worth mentioning")(); -stateTransitions.s( - "OnEntry / Open eyes", - "OnExit / Sleep well"); -s.info.drawNameLine := 1; - -drawObject(s); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/state.3} -\end{multicols} - -\subsection{Special States} - -Similarly to the usage of {\code Begin} and {\code End} macros, one can define history states, -exit/entry point states and terminate pseudo-states, by using the following constructors. - -\begin{verbatim} -History.nameA; -ExitPoint.nameB; -EntryPoint.nameC; -Terminate.nameD; -\end{verbatim} - -\section{Drawing Paths} - -The {\code link} macro is powerful enough to draw relations following arbitrary paths: - -\begin{multicols}{2} -\begin{verbatim} -path cool; -cool := A.e .. A.e+(20,10) .. - B.s+(20,-40) .. B.s+(-10,-30) - -- B.s; -link(inheritance)(cool); - -link(aggregationUni) - (A.n ..(30,30)..B.w); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/paths.1} -\end{multicols} - -Regardless of how amusing this feature might be, it does become a bit of a nuisance to -use it in its bare form. When typesetting UML diagrams in good style, one generally -uses rectangular paths. It is for this kind of style that \metauml\ offers extensive -support, providing a ``syntactic sugar'' for constructs which can otherwise be -done by hand, but with some extra effort. - -\subsection{Manhattan Paths} - -The ``Manhattan'' path macros generate a path between two points consisting of one -horizontal and one vertical segment. The macro {\code pathManhattanX} generates first a -horizontal segment, while the macro {\code pathManhattanY} generates first a -vertical segment. In \metauml\ it also matters the direction of a path, so you -can choose to reverse it by using {\code rpathManhattanX} and {\code rpathManhattanY} -(note the prefix ``{\code r}''): - -\begin{verbatim} -pathManhattanX(A, B) -pathManhattanY(A, B) - -rpathManhattanX(A, B) -rpathManhattanY(A, B) -\end{verbatim} - -\pagebreak -Here is an example: - -\begin{multicols}{2} -\begin{verbatim} -Class.A("A")()(); -Class.B("B")()(); - -B.sw = A.ne + (10,10); -drawObjects(A, B); - -link(aggregationUni) - (rpathManhattanX(A.e, B.s)); -link(inheritance) - (pathManhattanY(A.n, B.w)); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/paths.2} -\end{multicols} - -\subsection{Stair Step Paths} - -These path macros generate stair-like paths between two points. -The ``stair'' can ``rise'' first in the direction of $Ox$ axis ({\code pathStepX}) -or in the direction of $Oy$ axis ({\code pathStepY}). How much should a step -rise is given by an additional parameter, {\code delta}. Again, the macros -prefixed with ``{\code r}'' reverse the direction of the path given by their -unprefixed counterparts. - -\begin{verbatim} -pathStepX(A, B, delta) -pathStepY(A, B, delta) - -rpathStepX(A, B, delta) -rpathStepY(A, B, delta) -\end{verbatim} - -Here is an example: - -\begin{multicols}{2} -\begin{verbatim} -stepX:=60; -link(aggregationUni) - (pathStepX(A.e, B.e, stepX)); - -stepY:=20; -link(inheritance) - (pathStepY(B.n, A.n, stepY)); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/paths.3} -\end{multicols} - -\subsection{Horizontal and Vertical Paths} - -There are times when drawing horizontal or vertical links is required, -even when the objects are not properly aligned. To this aim, the following macros -are useful: - -\begin{verbatim} -pathHorizontal(pA, untilX) -pathVertical(pA, untilY) - -rpathHorizontal(pA, untilX) -rpathVertical(pA, untilY) -\end{verbatim} - -A path created by {\code pathHorizonal} starts from the point {\code pA} -and continues horizontally until coordinate {\code untilX} is reached. The macro -{\code pathVertical} constructs the path dually, working vertically. -The prefix ``{\code r}'' reverses the direction of the path. - -Usage example: - -\begin{multicols}{2} -\begin{verbatim} -untilX := B.left; -link(association) - (pathHorizontal(A.e, untilX)); - -untilY:= C.bottom; -link(association) - (pathVertical(A.n, untilY)); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/paths.4} -\end{multicols} - -\subsection{Direct Paths} - -A direct path can be created with {\code directPath}. The call {\code directPath(A, B)} -is equivalent to {\code A -{}- B}. - -\subsection{Paths between Objects} - -Using the constructs presented above, it is clear that one can draw links between diagram -objects, using a code like: - -\begin{verbatim} -link(transition)(directPath(objA.nw, objB.se)); -\end{verbatim} - -There are times however this may yield unsatisfactory visual results, -especially when the appearance of the object's corners is round. MetaUML provides the macro -{\code pathCut} whose aim is to limit a given path exactly to the region outside the actual -borders of the objects it connects. The macro's synopsis is: - -\begin{verbatim} -pathCut(thePath)(objectA, objectB) -\end{verbatim} - -Here, {\code thePath} is a given MetaPost path and {\code objectA} and {\code objectB} -are two \metauml\ objects. By contract, each \metauml\ object of type, say, {\code X} -defines a macro {\code X\_border} which returns the path that surrounds it. Because -of that, {\code pathCut} can make the appropriate modifications to {\code thePath}. - -The following code demonstrates the benefits of the {\code pathCut} macro: - -\begin{multicols}{2} -\begin{verbatim} -z = A.se + (30, -10); -link(transition) - (pathCut(A, B)(A.c--z--B.c)); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/paths.5} -\end{multicols} - -\subsubsection{Direct Paths between Centers} - -At times is quicker to just draw direct paths between the center of two objects, -minding of course the object margins. The macro which does this is {\code clink}: - -\begin{verbatim} -clink(how-to-draw-information)(objA, objB); -\end{verbatim} - -The parameter {\code how-to-draw-information} is the same as for the macro {\code link}; -{\code objA} and {\code objB} are two \metauml\ objects. - -Below is an example which involves the inheritance relation: - -\begin{multicols}{2} -\begin{verbatim} -clink(inheritance)(A, B); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/paths.6} -\end{multicols} - -\section{Arranging Diagram Items} -\label{section:positioning} - -Using equations involving cardinal points, such as {\code A.nw = B.ne + (10,0)}, is -good enough for achieving the desired results. However, programs are best to -be written for human audience, rather than for compilers. It does become a bit -tiresome to think all the time of cardinal points and figure out the -direction of positive or negative offsets. Because of that, \metauml\ offers -syntactic sugar which allows for an easier understanding of the intent behind -the positioning code. - -Suppose that we have three classes, {\code A}, {\code B}, {\code C} and their base class -{\code Base}. We want the base class to be at the top, and the derived classes to be -on a line below. A code like the following will do: - -\begin{verbatim} -A.ne = B.nw + (20,0); -B.ne = C.nw + (20,0); -Base.s = B.n + (0,-20); -\end{verbatim} - -Now, look at the code again. What strikes you is that you cannot visualize what it is all about, unless you really try --- decoding the intent line by line. What this code lacks is a feature called self-documenting: the code is good only if you can read it as a story and understand its meaning. - -Perhaps the following version of the code will make the point. All you need to know is that the numeric argument represents a distance. - -\begin{multicols}{2} -\begin{verbatim} -leftToRight(20)(A, B, C); -topToBottom(20)(Base, B); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/positioning.2} -\end{multicols} - -Below there are examples which show how these macros can be used. Suppose that we have the following definitions for objects {\code X}, {\code Y}, and {\code Z}; also, let's assume that {\code spacing} is a numeric variable set to {\code 5}. - -\begin{verbatim} -Picture.X("a"); -Picture.Y("..."); -Picture.Z("Cyan"); -\end{verbatim} - -\begin{tabular}{||l|c||} -\hline -{\code leftToRight.top(spacing)(X, Y, Z);} & \includegraphics{fig/positioning.3} \\ -\hline -{\code leftToRight.midy(spacing)(X, Y, Z);} & \includegraphics{fig/positioning.4} \\ -\hline -{\code leftToRight.bottom(spacing)(X, Y, Z);} & \includegraphics{fig/positioning.5} \\ -\hline -{\code topToBottom.left(spacing)(X, Y, Z);} & \includegraphics{fig/positioning.6} \\ -\hline -{\code topToBottom.midx(spacing)(X, Y, Z);} & \includegraphics{fig/positioning.7} \\ -\hline -{\code topToBottom.right(spacing)(X, Y, Z);} & \includegraphics{fig/positioning.8} \\ -\hline -\end{tabular} \\ - -To make typesetting even quicker in frequent usage scenarios, the following equivalent contructs are also allowed: - -\begin{verbatim} -leftToRight.midy(spacing)(X, Y, Z); -leftToRight(spacing)(X, Y, Z); -\end{verbatim} - -\begin{verbatim} -topToBottom.midx(spacing)(X, Y, Z); -topToBottom(spacing)(X, Y, Z); -\end{verbatim} - -If you want to specify that some objects have a given property equal, while the distance between them is given elsewhere, you can use the macro {\code same}. -This macro accepts a variable number of parameters, but at least two. The following table gives the interpretation of the macro for a simple example. - -\begin{tabular}{||l|l||} -\hline -{\code same.top(X, Y, Z);} & {\code X.top = Y.top = Z.top;} \\ -\hline -{\code same.midy(X, Y, Z);} & {\code X.midy = Y.midy = Z.midy;} \\ -\hline -{\code same.bottom(X, Y, Z);} & {\code X.bottom = Y.bottom = Z.bottom;} \\ -\hline -{\code same.left(X, Y, Z);} & {\code X.left = Y.left = Z.left;} \\ -\hline -{\code same.midx(X, Y, Z);} & {\code X.midx = Y.midx = Z.midx;} \\ -\hline -{\code same.right(X, Y, Z);} & {\code X.right = Y.right = Z.right;} \\ -\hline -\end{tabular} \\ - - -To specify the relative position of two points more easily, one can use the macros {\code below}, {\code above}, {\code atright}, {\code atleft}. Let us assume that {\code A} and {\code B} are two points (objects of type {\code pair} in MetaPost). The following constructs are equivalent: - -\begin{tabular}{||l|l||} -\hline -{\code B = A + (5,0);} & {\code B = atright(A, 5);} \\ -{\code B = A - (5,0);} & {\code B = atleft(A, 5);} \\ -{\code B = A + (0,5);} & {\code B = above(A, 5);} \\ -{\code B = A - (0,5);} & {\code B = below(A, 5);} \\ -\hline -\end{tabular} - - -\section{The MetaUML Infrastructure} -\label{section:infrastructure} - -MetaPost is a macro language based on equation solving. Using it may seem quite -tricky at first for a programmer accustomed to modern object-oriented languages. -However, the great power of MetaPost consists in its versatility. Indeed, it is possible to write -a system which mimics quite well object-oriented behavior. Along this line, METAOBJ -(\cite{metaobj}) is a library worth mentioning: it provides a high-level objects -infrastructure along with a battery of predefined objects. - -Surprisingly enough, \metauml\ does not use METAOBJ. Instead, it uses a custom written, -lightweight object-oriented infrastructure, provisionally called ``{\code util}''. -METAOBJ's facilities, although impressive, were perceived by me as being a bit too much -for what was initially intented as a quick way of getting some UML diagrams layed out. -Inspired by METAOBJ, ``{\code util}'' was designed to fulfill with minimal effort -the specific tasks needed to confortably position, allign or group visual objects -which include text. - -Another library having some object-oriented traits is the {\code boxes} -library, which comes with the standard MetaPost distribution. Early versions of -MetaUML did use {\code boxes} as an infrastructure, but this approach had to be abandoned eventually. -The main reason was that it was difficult to achieve good visual results when stacking texts -(more on that further on). Also, it had a degree of flexibility which became apparent to be -insufficient. - -\subsection{Motivation} - -Suppose that we want to typeset two texts with their bottom lines aligned, using {\code boxit}: - -\begin{multicols}{2} -\begin{verbatim} -boxit.a ("yummy"); -boxit.b ("cool"); - -a.nw = (0,0); b.sw = a.se + (10,0); - -drawboxed (a, b); % or drawunboxed(a,b) -draw a.sw -- b.se dashed evenly - withpen pencircle scaled 1.1; -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/boxes_vs_util.1} -\end{multicols} - -Note that, despite supposedly having their bottoms alligned, -``yummy'' {\it looks} slightly higher than ``cool''. This would be unacceptable -in an UML class diagram, when roles are placed at the ends of a horizontal association. -Regardless of default spacing being smaller in the {\code util} library, -the very same unfortunate misalignment effect rears its ugly head: - -\pagebreak - -\begin{multicols}{2} -\begin{verbatim} -Picture.a("yummy"); -Picture.b("cool"); -% comment next line for unboxed -a.info.boxed := b.info.boxed := 1; - -b.sw = a.se + (10,0); - -drawObjects(a, b); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/boxes_vs_util.2} -\end{multicols} - -However, the strong point of {\code util} is that we have a recourse to this problem: - -\begin{multicols}{2} -\begin{verbatim} -iPict.ignoreNegativeBase := 1; - -Picture.a("yummy"); -Picture.b("cool"); -% the rest the same as above -drawObjects(a, b); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/boxes_vs_util.3} -\end{multicols} - -\subsection{The Picture Macro} - -We have seen previously the line {\code iPict.ignoreNegativeBase := 1}. -Who is {\code iPict} and what is it doing in our program? \metauml\ -aims at separating the ``business logic'' (what to draw) from the -``interface'' (how to draw). In order to achieve this, it records the ``how to draw'' -information within the so-called {\code Info} structures. The object {\code iPict} -is an instance of {\code PictureInfo} structure, which has the following properties -(or attributes): -\begin{verbatim} -left, right, top, bottom -ignoreNegativeBase -boxed, borderColor -\end{verbatim} - -The first four attributes specify how much space should be left around the -actual item to be drawn. The marvelous effect of {\code ignoreNegativeBase} -has just been shown (off), while the last two attributes control whether the border -should be drawn (when {\code boxed=1}) and if drawn, in which color. - -There's one more thing: the font to typeset the text in. This is specified -in a {\code FontInfo} structure which has two attributes: the font name -and the font scale. This information is kept within the {\code PictureInfo} structure -as a contained attribute {\code iFont}. Both {\code FontInfo} and {\code PictureInfo} -have ``copy constructors'' which can be used to make copies. We have already -the effect of these copy constructors at work, when we used: - -\begin{verbatim} -Picture.a("yummy"); -a.info.boxed := 1; -\end{verbatim} - -A copy of the default info for a picture, {\code iPict}, has been made within -the object {\code a} and can be accessed as {\code a.info}. Having a copy of the -info in each object may seem like an overkill, but it allows for a fine grained -control of the drawing mode of each individual object. This feature comes in very -handy when working with a large number of settings, as it is the case for \metauml. - -Let us imagine for a moment that we have two types of text to write: one with a small font -and a small margin and one with a big font and a big margin. We could in theory -configure each individual object or set back and forth global parameters, but -this is far for convenient. It is preferable to have two sets of settings and specify -them explicitly when they are needed. The following code could be placed somewhere -in a configuration file and loaded before any {\code beginfig} macro: -\begin{verbatim} -PictureInfoCopy.iBig(iPict); -iBig.left := iBig.right := 20; -iBig.top := 10; -iBig.bottom := 1; -iBig.boxed := 1; -iBig.ignoreNegativeBase := 1; -iBig.iFont.name := defaultfont; -iBig.iFont.scale := 3; - -PictureInfoCopy.iSmall(iPict); -iSmall.boxed := 1; -iSmall.borderColor := green; -\end{verbatim} - -Below is an usage example of these definitions. Note the name of the macro: {\code EPicture}. -The prefix comes form ``explicit'' and it's used to acknowledge that the -``how to draw'' information is given explicitly --- as a parameter, -rather than defaulted to what's recorded in {\code iPict}, as with the {\code Picture} macro. -Having predefined configurations yields short, convenient code. - -\begin{multicols}{2} -\begin{verbatim} -EPicture.a(iBig)("yummy"); -EPicture.b(iSmall)("cool"); -% you can still modify a.info, b.info - -b.sw = a.se + (10,0); - -drawObjects(a, b); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/picture_info.1} -\end{multicols} - -\subsubsection{Fixed Sizes} - -By default, the size of a {\code Picture} object is set by its contents. However, -it is possible to specify fixed dimensions both the width and the height, independently. -This can be done by setting the {\code info}'s attributes {\code fixedWidth} and {\code fixedHeight} to values -greater than 0. If any of these attributes is left to its default value, {\code -1}, then for the corresponding -axis the dimension is set according to the dimension of the content. Nevertheless, the fixed dimensions are enforced, even though the contained object would have needed additional space. - -\begin{multicols}{2} -\begin{verbatim} -PictureInfoCopy.myFixed(iPict); -myFixed.ignoreNegativeBase := 1; -myFixed.fixedWidth := 15; -myFixed.fixedHeight := 20; -myFixed.boxed := 1; - -EPicture.a(myFixed)("a"); -EPicture.b(myFixed)(".-."); -EPicture.c(myFixed)("toolong"); - -leftToRight.bottom(10)(a, b, c); - -drawObjects(a, b, c); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/picture_info.2} -\end{multicols} - -\subsubsection{Content alignment} - -When fixed dimensions are used, one most likely would prefer a centered alignement of the contents in the -{\code Picture} box. This option can be expressed independently for each of the axes, -by setting the {\code info}'s attributes {\code valign} and {\code halign} to descriptive string values. -For horizontal alignement, {\code halign} can be set to {\code "left"} or {\code "center"}, and for -vertical alignement, {\code valign} can be set to {\code "bottom} or {\code "center"}. The default -values for these attributes are {\code "left"} and {\code "bottom"}, respectively. - -The next example uses horizontal centered alignement and a bottom alignement with a {\code 4.5} base offset, for -vertical alignement. This vertical alignement gives a better visual result than the centered one, at -least for the situations in which there are texts to be placed horizontally. - -\begin{multicols}{2} -\begin{verbatim} -PictureInfoCopy.myFixed(iPict); -myFixed.ignoreNegativeBase := 1; -myFixed.bottom := 4.5; -myFixed.valign := "bottom"; -myFixed.halign := "center"; -myFixed.fixedWidth := 25; -myFixed.fixedHeight := 15; -myFixed.boxed := 1; - -EPicture.a(myFixed)("a"); -EPicture.b(myFixed)("yum"); -EPicture.c(myFixed)("b"); - -leftToRight.bottom(10)(a, b, c); - -drawObjects(a, b, c); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/picture_info.3} -\end{multicols} - -\subsection{Stacking Objects} - -It is possible to stack objects, much in the style of {\code setboxjoin} -from {\code boxes} library. - -\pagebreak - -\begin{multicols}{2} -\begin{verbatim} -Picture.a0("yummy"); -Picture.a1("cool"); -Picture.a2("fool"); - -setObjectJoin(pa.sw = pb.nw); -joinObjects(scantokens listArray(a)(3)); - -drawObjects(scantokens listArray(a)(3)); -% or drawObjects (a0, a1, a2); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/object_stack.1} -\end{multicols} - -The {\code listArray} macro provides here a shortcut for writing -{\code a0, a1, a2}. This macro is particularly useful for generic -code which does not know beforehand the number of elements to be drawn. -Having to write the {\code scantokens} keyword is admittedly a nuisance, but -this is required. - - -\subsection{The Group Macro} - -It is possible to group objects in \metauml. This feature is the cornerstone -of \metauml, allowing for the easy development of complex objects, such as -composite stats in state machine diagrams. - -Similarly to the macro {\code Picture}, the structure {\code GroupInfo} -is used for specifying group properties; its default instantiation is -{\code iGroup}. Furthermore, the macro {\code EGroup} explicitely sets the -layout information. - -Here is an example: - -\begin{multicols}{2} -\begin{verbatim} -iGroup.left:=20; -iGroup.right:=15; -iGroup.boxed:=1; -iPicture.boxed:=1; - -Picture.a("yummy"); -Picture.b("cool"); -Picture.c("fool"); - -b.nw = a.nw + (20,20); % A -c.nw = a.nw + (15, 40); % B - -Group.g(a, b, c); -g.nw = (10,10); % C - -drawObject(g); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/group.1} -\end{multicols} - -Note that after some objects are grouped, they can all be drawn -by invoking the {\code drawObject} macro solely on the group that aggregates them. -Another important remark is that it is necessary only to set the relative -positioning of objects within a group (line A and B); afterward, one can -simply ``move'' the group to a given position (line C), and all the contained -objects will move along. - -\subsection{The PictureStack Macro} - -The {\code PictureStack} macro is a syntactic sugar for a set of pictures, -stacked according to predefined equations and grouped together. - -\begin{multicols}{2} -\begin{verbatim} -iStack.boxed := 1; -iStack.iPict.boxed := 1; -PictureStack.myStack("foo", - "bar: int" infont "tyxtt", - "nicely-centered" infont defaultfont, - "nice")("vcenter"); - -drawObject(myStack); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/picture_stack.1} -\end{multicols} - -Note the last parameter of the macro {\code PictureStack}, here {\code vcenter}. -It is used to generate appropriate equations based on a descriptive name. -The spacing between individual picture objects is set by the field -{\code iStack.spacing}. Currently, the following alignment names are -defined: {\code vleft}, {\code vright}, {\code vcenter}, -{\code vleftbase}, {\code vrightbase}, {\code vcenterbase}. All these -names refer to vertical alignment (the prefix ``{\code v}''); alignment can -be at left, right or centered. The variants having the suffix ``{\code base}'' align -the pictures so that {\code iStack.spacing} refer to the distance between the -bottom lines of the pictures. The unsuffixed variants use {\code iStack.spacing} as -the distance between one's bottom line and the next's top line. - -The ``{\code base}'' alignment is particularly useful for stacking text, since it -offers better visual appearance when {\code iPict.ignoreNegativeBase} is set to {\code 1}. - -\section{Components Design} - -Each MetaUML component (e.g. {\code Picture}, {\code PictureStack}, {\code Class}) is -designed according to an established pattern. This section gives more insight -on this. - -In order to draw a component, one must know the following information: -\begin{itemize} -\item what to draw, or what are the elements of a component. -\item how to draw, or how are the elements positioned in relation to each other within the component -\item where to draw -\end{itemize} - -For example, in order to draw a picture object we must know, respectively: -\begin{itemize} -\item what is the text or the native picture that needs to be drawn -\item what are the margins that should be left around the contents -\item where is the picture to be drawn -\end{itemize} - -Why do we bother with these questions? Why don't we just simply draw the picture -component as soon as it was created and get it over with? -That is, why doesn't the following code just work? - -\begin{verbatim} -Picture.pict("foo"); -\end{verbatim} - -Well, although we have the answer to question 1 (what to draw), -we still need to have question 3 answered. The code below becomes thus a -necessity (actually, you are not forced to specify the positioning of an object, -because its draw method positions it to {\code (0,0)} by default): - -\begin{verbatim} -% question 1: what to draw -Picture.pict("foo"); - -% question 3: where to draw -pict.nw = (10,10); - -% now we can draw -drawObject(pict); -\end{verbatim} - -How about question 2, how to draw? By default, this problem is addressed behind the -scenes by the component. This means, for the Picture object, that a native picture is created -from the given string, and around that picture certain margins are placed, by means of MetaPost equations. -(The margins come in handy when one wants to quickly place Picture objects near others, -so that the result doesn't look too cluttered.) -If these equations were defined within the Picture constructor, then an -usability problem would have appeared, because it wouldn't have been possible to modify the margins, -as in the code below: - -\begin{verbatim} -% question 1: what to draw -Picture.pict("foo"); - -% question 2: how to draw -pict.info.left := 10; -pict.info.boxed := 1; - -% question 3: where to draw -pict.nw = (0,0); - -% now we can draw -drawObject(pict); -\end{verbatim} - -To allow for this type of code, the equations that define the layout of the {\code Picture} object (here, what the margins are) -must be defined somewhere after the constructor. This is done by a macro called {\code Picture\_layout}. -This macro defines all the equations which link the ``what to draw'' information to the ``how to draw'' -information (which in our case is taken from the {\code info} member, a copy of {\code iPict}). -Nevertheless, notice that {\code Picture\_layouts} is not explicitly invoked. To the user's -great relief, this is taken care of automatically within the {\code Picture\_draw} macro. - -There are times however, when explicitly invoking a macro like {\code Picture\_layout} -becomes a necessity. This is because, by contract, it is only after the {\code layout} -macro is invoked that the final dimensions (width, height) of an object are -definitely and permanently known. Imagine that we have a component whose job is to -surround in a red-filled rectangle some other objects. This component -needs to know what the dimensions of the contained objects are, in order to be able to set -its own dimensions. At drawing time, the contained objects must not have been drawn already, -because the red rectangle of the container would overwrite them. -Therefore, the whole pseudo-code would be: -\begin{verbatim} -Create objects o1, o2, ... ok; -Create container c(o1, o2, ..., ok); -Optional: modify info-s for o1, o2, ... ok; -Optional: modify info for c; - -layout c, requiring layout of o1, o2, ... ok; -establish where to draw c; -draw red rectangle defined by c; -draw components o1, o2, ...ok within c -\end{verbatim} - -Note that an object mustn't be laid out more than once, because otherwise -inconsistent or superfluous equations would arise. To enforce this, by contract, -any object must keep record of whether its layout method has already been invoked, -and if the answer is affirmative, subsequent invocations of the layout macro would -do nothing. It is very important to mention that after the {\code layout} macro is -invoked over an object, modifying the {\code info} member of that object has -no subsequent effect, since the layout equations are declared and interpreted only once. - -\subsection{Notes on the Implementation of Links} - -\metauml\ considers edges in diagram graphs as links. A link is composed of a path and the -heads (possible none, one or two). For example, an association has no heads, and one must simply -draw along the path with a solid pen. An unidirectional aggregation has a solid path and two -heads: one is an arrow and the other is a diamond. So the template algorithm for drawing a link -is: - -\begin{verbatim} -0. Reserve space for heads -1. Draw the path (except for the heads) -2. Draw head 1 -3. Draw head 2 -\end{verbatim} - -Each of the UML link types define how the drawing should be done, in each of the -cases (1, 2 and 3). Consider the link type of unidirectional composition. -Its ``class'' is declared as: - -\begin{verbatim} -vardef CompositionUniInfo@# = - LinkInfo@#; - - @#widthA = defaultRelationHeadWidth; - @#heightA = defaultRelationHeadHeight; - @#drawMethodA = "drawArrow"; - - @#widthB = defaultRelationHeadWidth; - @#heightB = defaultRelationHeadHeight; - @#drawMethodB = "drawDiamondBlack"; - - @#drawMethod = "drawLine"; -enddef; -\end{verbatim} - -Using this definition, the actual description is created like this: - -\begin{verbatim} -CompositionUniInfo.compositionUni; -\end{verbatim} - -As shown previously, is is the macro {\code link} which -performs the actual drawing, using the link description information -which is given as parameter (generally called {\code iLink}). -For example, we can use: - -\begin{verbatim} -link(aggregationUni)((0,0)--(40,0)); -\end{verbatim} - -%\begin{figure} -%\centering -%\includegraphics{fig/how-links-work.1} -%\caption{An example of a picture stack.} -%\label{fig:hlw} -%\end{figure} - -Let us see now the inner workings of macro {\code link}. Its definition is: - -\begin{verbatim} -vardef link(text iLink)(expr myPath)= - LinkStructure.ls(myPath, - iLink.widthA, iLink.widthB); - drawLinkStructure(ls)(iLink); -enddef; -\end{verbatim} - -\begin{figure} -\centering -\begin{tabular}{l|l} -$AB$ & the path specified by the user \\ -$|AA'|$ & {\code iLink.widthA}\\ -$|BB'|$ & {\code iLink.widthB} -\end{tabular} -\includegraphics{fig/how-links-work.2} -\caption{Details on how a link is drawn by \metauml.} -\label{fig:hlw2} -\end{figure} - -First, space is reserved for heads, by ``shortening'' the given path {\code myPath} -by {\code iLink.widthA} at the beginning and by {\code iLink.widthB} at the end. -After that, the shortened path is drawn with the ``method'' -given by {\code iLink.drawMethod} and the heads with the ``methods'' -{\code iLink.drawMethodA} and {\code iLink.drawMethodB}, -respectively (figure \ref{fig:hlw2}). - -\subsection{Object Definitions: Easier {\code generic\_declare}} - -In MetaPost, if somebody wants to define something resembling a class in an object-oriented language, -named, say, {\code Person}, he would do something like this: - -\begin{verbatim} -vardef Person@#(expr _name, _age)= - % @# prefix can be seen as `this` pointer - string @#name; - numeric @#age; - - @#name := _name; - @#age := _age; -enddef; -\end{verbatim} - -This allows for the creation of instances (or objects) of class {\code Person} by using -declarations like: - -\begin{verbatim} -Person.personA; -Person.personB; -\end{verbatim} - - However, if one also wants to able able to create indexed arrays of persons, such as -{\code Person.student0}, {\code Person.student1} etc., the definition of class -{\code Person} must read: - -\begin{verbatim} -vardef Person@#(expr _name, _age)= - _n_ := str @#; - generic_declare(string) _n.name; - generic_declare(numeric) _n.age; - - @#name := _name; - @#age := _age; -enddef; -\end{verbatim} - -This construction is rather inelegant. MetaUML offers alternative macros to achieve -the same effect, uncluttering the code by removing the need for the unaesthetic {\code \_n\_} and -{\code \_n}. - -\begin{verbatim} -vardef Person@#(expr _name, _age)= - attributes(@#); - var(string) name; - var(numeric) age; - - @#name := _name; - @#age := _age; -enddef; -\end{verbatim} - -\section{Customization in MetaUML: Examples} -\label{section:customization} - -We have seen that in MetaUML the ``how to draw'' information is memorized into the so-called -``{\code Info}'' structures. For example, the default way in which a {\code Picture} object is -to be drawn is recorded into an instance of {\code PictureInfo}, named {\code iPict}. In this section we -present a case study involving the customization of {\code Class} objects. The customization of -any other \metauml\ objects works similarly. Here we cannot possibly present all the customization -options for all kinds of \metauml\ objects: this would take too long. Nevertheless, an interested reader can refer -to the top of the appropriate \metauml\ library file, where {\code Info} structures are defined. -For example, class diagram related definitions are in {\code metauml\_class.mp}, activity diagram -definitions are in {\code metauml\_activity.mp} etc. - -\subsection{Global settings} - -Let us assume that we do not particularly like the default foreground color of all classes, and wish -to change it so something yellowish. In this scenario, one would most likely want to change -the appropriate field in {\code iClass}: - -\begin{verbatim} -iClass.foreColor := (.9, .9, 0); -\end{verbatim} - -After this, we can obtain the following result: - -\begin{multicols}{2} -\begin{verbatim} -Class.A("A")()(); -Class.B("B")()(); -Class.C("C")()(); - -B.w = A.e + (20,0); -C.n = .5[A.se, B.sw] + (0, -10); - -drawObjects(A, B, C); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/class_customization.1} -\end{multicols} - -\subsection{Individual settings} - -When one wants to make modifications to the settings of one particular -{\code Class} objects, another strategy is more appropriate. How about having class -{\code C} stand out with a light blue foreground color, a bigger font size for the class name and a blue border? - -\pagebreak -\begin{multicols}{2} -\begin{verbatim} -iPict.foreColor := (.9, .9, 0); - -Class.A("A")()(); -Class.B("B")()(); -Class.C("C")()(); -C.info.foreColor := (.9, .7, .7); -C.info.borderColor := green; -C.info.iName.iFont.scale := 2; - -% positioning code ommited -drawObjects(A, B, C); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/class_customization.2} -\end{multicols} - -As an aside, note that for each {\code Class} object its {\code info} member is created as -a copy of {\code iClass}: the actual drawing is performed using this copied -information. Because of that, one can modify the {\code info} member after the object -has been created and still get the desired results. - -Another thing worth mentioning is that the {\code ClassInfo} structure contains -the {\code iName} member, which is an instance of {\code PictureInfo}. In our example we -do not want to modify the spacings around the {\code Picture} object, -but the characteristics of the font its contents is typeset into. To do that, -we modify the {\code iName.iFont} member, which by default is a copy of {\code iFont} -(an instance of {\code FontInfo}, defined in {\code util\_picture.mp}). -If, for example, we want to change the font the class name is rendered into, we would set -the attribute {\code iName.iFont.name} to a string representing a font name -on our system (as used with the MetaPost {\code infont} operator). - - -\subsection{Predefined settings} - -This usage scenario is perhaps more interesting. Suppose that we have two -types of classes which we want to draw differently. Making the setting adjustments -for each individual class object would soon become a nuisance. \metauml's solution consists in the -ability of using predefined ``how to draw'' {\code Info} objects. Let us create such objects: - -\begin{verbatim} -ClassInfoCopy.iHome(iClass); -iHome.foreColor := (0, .9, .9); - -ClassInfo.iRemote; -iRemote.foreColor := (.9, .9, 0); -iRemote.borderColor := green; -\end{verbatim} - -Object {\code iHome} is a copy of {\code iClass} (as it might have been set at -the time of the macro call). Object {\code iRemote} is created just as {\code iClass} -is originally created. We can now use these {\code Info} objects to easily set the -``how to draw'' information for classes. The result is depicted below, -please note the ``{\code E}'' prefix in {\code EClass}: - -\begin{multicols}{2} -\begin{verbatim} -EClass.A(iHome)("UserHome")()(); -EClass.B(iRemote)("UserRemote")()(); -EClass.C(iHome)("CartHome")()(); -EClass.D(iRemote)("CartRemote")()(); -\end{verbatim} -\columnbreak -\hspace{1cm}\includegraphics{fig/class_customization.3} -\end{multicols} - -\subsection{Extreme customization} - -When another font (or font size) is used, one may also want to modify the spacings between the -attributes' and methods' baselines. Figure below is the result of the -(unlikely) code: - -\begin{multicols}{2} -\begin{verbatim} -Class.A("Foo") - ("a: int", "b: int") - ("foo()", "bar()", "gar()"); - -A.info.iName.iFont.name := metauml_defaultFontBold; -A.info.iName.iFont.scale := 1.2; - -A.info.iAttributeStack.iPict.iFont.scale := 0.8; -A.info.iAttributeStack.top := 10; -A.info.iAttributeStack.spacing := 11; - -A.info.iMethodStack.iPict.iFont.scale := 2; -A.info.iMethodStack.spacing := 17; -A.info.iMethodStack.bottom := 10; - -drawObject(A); -\end{verbatim} -\columnbreak -\hspace{4cm}\includegraphics{fig/class_customization.4} -\end{multicols} - -\begin{verbatim} -\end{verbatim} - -Both {\code iAttributeStack} and {\code iMethodStack} are instances of -{\code PictureStackInfo}, which is used to control the display of {\code PictureStack} objects. -%We can also customize the size and colors of the ``locks'' by setting {\code A.info.iLock}. - -As font names, you can choose from the globally defined {\code metauml\_defaultFont}, {\code metauml\_defaultFontOblique}, {\code metauml\_defaultFontBold}, {\code metauml\_defaultFontBoldOblique}, or any other name of a font that is available on your system. - -%\theendnotes - -\bibliographystyle{apalike} - -\begin{thebibliography}{1} -\bibitem[Roegel, 2002]{metaobj} -Roegel, D. (2002). -\newblock {The METAOBJ tutorial and reference manual}. -\newblock Available from {\code www.loria.fr/~roegel/TeX/momanual.pdf}. - -\bibitem[Knuth, 1986]{knuth} -Knuth, D.~E. (1986). -\newblock {\em The {\TeX{}}book}. -\newblock Addison-Wesley Publishing Company. - -\bibitem[Lamport, 1994]{lamport} -Lamport, L. (1994). -\newblock {\em {\LaTeX} a Document Preparation System}. -\newblock Addison-Wesley Publishing Company, 2nd edition. - -%\bibitem[Gheorghies, 2005]{metaumlman} -%Gheorghies, O. (2005). -%\newblock {MetaUML: Tutorial, Reference and Test Suite}. -%\newblock Available from {\code http://metauml.sourceforge.net}. - -\bibitem[Hobby, 1992]{metapost} -Hobby, J. (1992) -\newblock {A User's Manual for MetaPost}. -\newblock Available from {\code http://www.tug.org/tutorials/mp/}. - -\bibitem[Gjelstad, 2001]{umlsty} -Gjelstad, E. (2001). -\newblock {uml.sty 0.09.09}. -\newblock Available from {\code http://heim.ifi.uio.no/\~{ }ellefg/uml.sty/}. - -\bibitem[Diamantini, 1998]{pstumlsty} -Diamantini, M. (1998). -\newblock {Interface utilisateur du package pst-uml}. -\newblock Available from {\code http://perce.de/LaTeX/pst-uml/}. - -\bibitem[Palmer, 1999]{umldoc} -Palmer, D. (1999). -\newblock {The umldoc UML Documentation Package}. -\newblock Available from {\code http://www.charvolant.org/\~{ }elements/}. - -\bibitem[OMG, 2003]{XMI} -Object Management Group (2003). -\newblock {XML Metadata Interchange (XMI) Specification}. -\newblock Available from {\code http://www.omg.org/}. -\end{thebibliography} - -\pagebreak -\pagebreak -\pagebreak -\input{test_suite} - -\pagebreak -\section{GNU Free Documentation License} -\input{gnu-fdl} - -\end{document} diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/my-bib.bib b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/my-bib.bib deleted file mode 100644 index 3dea8fd262a..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/my-bib.bib +++ /dev/null @@ -1,13 +0,0 @@ -@inproceedings{ template, - author = "Nicholas Freitag McPhee and Riccardo Poli", - title = "A schema theory analysis of the evolution of size in genetic programming with linear representations", - booktitle = "Genetic Programming, Proceedings of EuroGP'2001", - volume = "2038", - month = "18-20", - publisher = "Springer-Verlag", - address = "Lake Como, Italy", - editor = "Julian F. Miller and Marco Tomassini and Pier Luca Lanzi and Conor Ryan and Andrea G. B. Tettamanzi and William B. Langdon", - isbn = "3-540-41899-7", - pages = "108--125", - year = "2001", - url = "citeseer.nj.nec.com/mcphee01schema.html" } \ No newline at end of file diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/test.mp b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/test.mp deleted file mode 100644 index b7f60eadca0..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/test.mp +++ /dev/null @@ -1,9 +0,0 @@ -input metauml; - -beginfig(1); - Class.X("X")()(); - drawObjects(X); -endfig; - -end - diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/test_suite.tex b/Master/texmf-dist/doc/metapost/metauml/metauml_manual/test_suite.tex deleted file mode 100644 index 05f19ad2459..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual/test_suite.tex +++ /dev/null @@ -1,86 +0,0 @@ -% Part of the MetaUML manual -% Copyright (c) 2005 Ovidiu Gheorghies -% -% Permission is granted to copy, distribute and/or modify this document -% under the terms of the GNU Free Documentation License, Version 1.2 -% or any later version published by the Free Software Foundation; -% with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. -% A copy of the license is included in the section entitled "GNU -% Free Documentation License". - -\newcommand{\metaumltest}[2]{Test #2 --- \\ \includegraphics{fig/test_#1.#2} \\ } -\newcommand{\metaumltests}[2]{\multido{\iA=1+1}{#2}{\metaumltest{#1}{\iA}}} - -\section{Test suite} - -\subsection{Low-level} - \metaumltests{lowlevel}{2} - -\subsection{Fonts} - \metaumltests{font}{3} - -\subsection{Cliparts} - %\metaumltests{cliparts}{1} - Locks ---\\ - \includegraphics{fig/cliparts.1} - -\subsection{Util library} - \subsubsection{Picture tests} - \metaumltests{picture}{10} - - \subsubsection{Picture tests - TeX rendering} - \metaumltests{picture_tex_rendering}{1} - - \subsubsection{Group tests} - \metaumltests{group}{2} - - \subsubsection{PictureStack tests} - \metaumltests{picture_stack}{3} - - \subsubsection{Positioning tests} - \metaumltests{positioning}{6} - -\subsection{Class diagram} - \subsubsection{Class tests} - \metaumltests{class}{14} - - \subsubsection{Class template tests} - \metaumltests{class_templates}{3} - - \subsubsection{Qualified Association tests} - \metaumltests{class_qual_assoc}{2} - -\subsection{Package diagram} -\subsubsection{Package tests} - \metaumltests{package}{2} - -\subsection{Component diagram} -\subsubsection{Component tests} - \metaumltests{component}{1} - -\subsection{Paths} - \metaumltests{paths}{3} - -\subsection{Behavioral diagrams} - \subsubsection{Activity tests} - \metaumltests{activity}{2} - - \subsubsection{State Machine tests} - \metaumltests{state}{5} - - \subsubsection{Usecase tests} - \metaumltests{usecase}{9} - -\subsection{Miscelaneous} - \subsubsection{Notes} - \metaumltests{note}{2} - \subsubsection{Objects (Class Instances)} - \metaumltests{instance}{1} - -\subsection{User requests} - Test 1 --- \\ \includegraphics[scale=.2]{fig/test_lars_issues.1} \\ - \metaumltest{lars_issues}{2} - -\subsection{Skins} - \metaumltests{skins}{1} - \metaumltests{skins_global_defaults}{1} diff --git a/Master/texmf-dist/doc/metapost/metauml/metauml_manual_0.2.5.pdf b/Master/texmf-dist/doc/metapost/metauml/metauml_manual_0.2.5.pdf deleted file mode 100644 index cd7e13348b6..00000000000 --- a/Master/texmf-dist/doc/metapost/metauml/metauml_manual_0.2.5.pdf +++ /dev/null @@ -1,5884 +0,0 @@ -%PDF-1.4 -% -5 0 obj -<< /S /GoTo /D (section.1) >> -endobj -8 0 obj -(Introduction) -endobj -9 0 obj -<< /S /GoTo /D (section.2) >> -endobj -12 0 obj -(Class Diagrams) -endobj -13 0 obj -<< /S /GoTo /D (subsection.2.1) >> -endobj -16 0 obj -(Stereotypes) -endobj -17 0 obj -<< /S /GoTo /D (subsection.2.2) >> -endobj -20 0 obj -(Interfaces and Abstract Classes) -endobj -21 0 obj -<< /S /GoTo /D (subsection.2.3) >> -endobj -24 0 obj -(Displaying Class Name Only) -endobj -25 0 obj -<< /S /GoTo /D (subsection.2.4) >> -endobj -28 0 obj -(Objects \(or Class Instances\)) -endobj -29 0 obj -<< /S /GoTo /D (subsection.2.5) >> -endobj -32 0 obj -(Parametrized Classes \(Templates\)) -endobj -33 0 obj -<< /S /GoTo /D (subsection.2.6) >> -endobj -36 0 obj -(Types of Links) -endobj -37 0 obj -<< /S /GoTo /D (subsection.2.7) >> -endobj -40 0 obj -(Associations) -endobj -41 0 obj -<< /S /GoTo /D (subsection.2.8) >> -endobj -44 0 obj -(Dependencies and Stereotypes) -endobj -45 0 obj -<< /S /GoTo /D (section.3) >> -endobj -48 0 obj -(Notes) -endobj -49 0 obj -<< /S /GoTo /D (subsection.3.1) >> -endobj -52 0 obj -(Attaching notes to diagram elements) -endobj -53 0 obj -<< /S /GoTo /D (subsection.3.2) >> -endobj -56 0 obj -(Using mathematical formulae) -endobj -57 0 obj -<< /S /GoTo /D (section.4) >> -endobj -60 0 obj -(Packages) -endobj -61 0 obj -<< /S /GoTo /D (subsection.4.1) >> -endobj -64 0 obj -(Types of Links) -endobj -65 0 obj -<< /S /GoTo /D (section.5) >> -endobj -68 0 obj -(Component Diagrams) -endobj -69 0 obj -<< /S /GoTo /D (subsection.5.1) >> -endobj -72 0 obj -(Types of Links) -endobj -73 0 obj -<< /S /GoTo /D (section.6) >> -endobj -76 0 obj -(Use Case Diagrams) -endobj -77 0 obj -<< /S /GoTo /D (subsection.6.1) >> -endobj -80 0 obj -(Use Cases) -endobj -81 0 obj -<< /S /GoTo /D (subsection.6.2) >> -endobj -84 0 obj -(Actors) -endobj -85 0 obj -<< /S /GoTo /D (subsection.6.3) >> -endobj -88 0 obj -(Types of Links) -endobj -89 0 obj -<< /S /GoTo /D (section.7) >> -endobj -92 0 obj -(Activity Diagrams) -endobj -93 0 obj -<< /S /GoTo /D (subsection.7.1) >> -endobj -96 0 obj -(Begin, End and Flow End) -endobj -97 0 obj -<< /S /GoTo /D (subsection.7.2) >> -endobj -100 0 obj -(Activity) -endobj -101 0 obj -<< /S /GoTo /D (subsection.7.3) >> -endobj -104 0 obj -(Fork and Join) -endobj -105 0 obj -<< /S /GoTo /D (subsection.7.4) >> -endobj -108 0 obj -(Branch) -endobj -109 0 obj -<< /S /GoTo /D (subsection.7.5) >> -endobj -112 0 obj -(Types of Links) -endobj -113 0 obj -<< /S /GoTo /D (section.8) >> -endobj -116 0 obj -(State Diagrams) -endobj -117 0 obj -<< /S /GoTo /D (subsection.8.1) >> -endobj -120 0 obj -(Composite States) -endobj -121 0 obj -<< /S /GoTo /D (subsection.8.2) >> -endobj -124 0 obj -(Internal Transitions) -endobj -125 0 obj -<< /S /GoTo /D (subsection.8.3) >> -endobj -128 0 obj -(Special States) -endobj -129 0 obj -<< /S /GoTo /D (section.9) >> -endobj -132 0 obj -(Drawing Paths) -endobj -133 0 obj -<< /S /GoTo /D (subsection.9.1) >> -endobj -136 0 obj -(Manhattan Paths) -endobj -137 0 obj -<< /S /GoTo /D (subsection.9.2) >> -endobj -140 0 obj -(Stair Step Paths) -endobj -141 0 obj -<< /S /GoTo /D (subsection.9.3) >> -endobj -144 0 obj -(Horizontal and Vertical Paths) -endobj -145 0 obj -<< /S /GoTo /D (subsection.9.4) >> -endobj -148 0 obj -(Direct Paths) -endobj -149 0 obj -<< /S /GoTo /D (subsection.9.5) >> -endobj -152 0 obj -(Paths between Objects) -endobj -153 0 obj -<< /S /GoTo /D (subsubsection.9.5.1) >> -endobj -156 0 obj -(Direct Paths between Centers) -endobj -157 0 obj -<< /S /GoTo /D (section.10) >> -endobj -160 0 obj -(Arranging Diagram Items) -endobj -161 0 obj -<< /S /GoTo /D (section.11) >> -endobj -164 0 obj -(The MetaUML Infrastructure) -endobj -165 0 obj -<< /S /GoTo /D (subsection.11.1) >> -endobj -168 0 obj -(Motivation) -endobj -169 0 obj -<< /S /GoTo /D (subsection.11.2) >> -endobj -172 0 obj -(The Picture Macro) -endobj -173 0 obj -<< /S /GoTo /D (subsubsection.11.2.1) >> -endobj -176 0 obj -(Fixed Sizes) -endobj -177 0 obj -<< /S /GoTo /D (subsubsection.11.2.2) >> -endobj -180 0 obj -(Content alignment) -endobj -181 0 obj -<< /S /GoTo /D (subsection.11.3) >> -endobj -184 0 obj -(Stacking Objects) -endobj -185 0 obj -<< /S /GoTo /D (subsection.11.4) >> -endobj -188 0 obj -(The Group Macro) -endobj -189 0 obj -<< /S /GoTo /D (subsection.11.5) >> -endobj -192 0 obj -(The PictureStack Macro) -endobj -193 0 obj -<< /S /GoTo /D (section.12) >> -endobj -196 0 obj -(Components Design) -endobj -197 0 obj -<< /S /GoTo /D (subsection.12.1) >> -endobj -200 0 obj -(Notes on the Implementation of Links) -endobj -201 0 obj -<< /S /GoTo /D (subsection.12.2) >> -endobj -204 0 obj -(Object Definitions: Easier generic\137declare) -endobj -205 0 obj -<< /S /GoTo /D (section.13) >> -endobj -208 0 obj -(Customization in MetaUML: Examples) -endobj -209 0 obj -<< /S /GoTo /D (subsection.13.1) >> -endobj -212 0 obj -(Global settings) -endobj -213 0 obj -<< /S /GoTo /D (subsection.13.2) >> -endobj -216 0 obj -(Individual settings) -endobj -217 0 obj -<< /S /GoTo /D (subsection.13.3) >> -endobj -220 0 obj -(Predefined settings) -endobj -221 0 obj -<< /S /GoTo /D (subsection.13.4) >> -endobj -224 0 obj -(Extreme customization) -endobj -225 0 obj -<< /S /GoTo /D (section.14) >> -endobj -228 0 obj -(Test suite) -endobj -229 0 obj -<< /S /GoTo /D (subsection.14.1) >> -endobj -232 0 obj -(Low-level) -endobj -233 0 obj -<< /S /GoTo /D (subsection.14.2) >> -endobj -236 0 obj -(Fonts) -endobj -237 0 obj -<< /S /GoTo /D (subsection.14.3) >> -endobj -240 0 obj -(Cliparts) -endobj -241 0 obj -<< /S /GoTo /D (subsection.14.4) >> -endobj -244 0 obj -(Util library) -endobj -245 0 obj -<< /S /GoTo /D (subsubsection.14.4.1) >> -endobj -248 0 obj -(Picture tests) -endobj -249 0 obj -<< /S /GoTo /D (subsubsection.14.4.2) >> -endobj -252 0 obj -(Picture tests - TeX rendering) -endobj -253 0 obj -<< /S /GoTo /D (subsubsection.14.4.3) >> -endobj -256 0 obj -(Group tests) -endobj -257 0 obj -<< /S /GoTo /D (subsubsection.14.4.4) >> -endobj -260 0 obj -(PictureStack tests) -endobj -261 0 obj -<< /S /GoTo /D (subsubsection.14.4.5) >> -endobj -264 0 obj -(Positioning tests) -endobj -265 0 obj -<< /S /GoTo /D (subsection.14.5) >> -endobj -268 0 obj -(Class diagram) -endobj -269 0 obj -<< /S /GoTo /D (subsubsection.14.5.1) >> -endobj -272 0 obj -(Class tests) -endobj -273 0 obj -<< /S /GoTo /D (subsubsection.14.5.2) >> -endobj -276 0 obj -(Class template tests) -endobj -277 0 obj -<< /S /GoTo /D (subsubsection.14.5.3) >> -endobj -280 0 obj -(Qualified Association tests) -endobj -281 0 obj -<< /S /GoTo /D (subsection.14.6) >> -endobj -284 0 obj -(Package diagram) -endobj -285 0 obj -<< /S /GoTo /D (subsubsection.14.6.1) >> -endobj -288 0 obj -(Package tests) -endobj -289 0 obj -<< /S /GoTo /D (subsection.14.7) >> -endobj -292 0 obj -(Component diagram) -endobj -293 0 obj -<< /S /GoTo /D (subsubsection.14.7.1) >> -endobj -296 0 obj -(Component tests) -endobj -297 0 obj -<< /S /GoTo /D (subsection.14.8) >> -endobj -300 0 obj -(Paths) -endobj -301 0 obj -<< /S /GoTo /D (subsection.14.9) >> -endobj -304 0 obj -(Behavioral diagrams) -endobj -305 0 obj -<< /S /GoTo /D (subsubsection.14.9.1) >> -endobj -308 0 obj -(Activity tests) -endobj -309 0 obj -<< /S /GoTo /D (subsubsection.14.9.2) >> -endobj -312 0 obj -(State Machine tests) -endobj -313 0 obj -<< /S /GoTo /D (subsubsection.14.9.3) >> -endobj -316 0 obj -(Usecase tests) -endobj -317 0 obj -<< /S /GoTo /D (subsection.14.10) >> -endobj -320 0 obj -(Miscelaneous) -endobj -321 0 obj -<< /S /GoTo /D (subsubsection.14.10.1) >> -endobj -324 0 obj -(Notes) -endobj -325 0 obj -<< /S /GoTo /D (subsubsection.14.10.2) >> -endobj -328 0 obj -(Objects \(Class Instances\)) -endobj -329 0 obj -<< /S /GoTo /D (subsection.14.11) >> -endobj -332 0 obj -(User requests) -endobj -333 0 obj -<< /S /GoTo /D (subsection.14.12) >> -endobj -336 0 obj -(Skins) -endobj -337 0 obj -<< /S /GoTo /D (section.15) >> -endobj -340 0 obj -(GNU Free Documentation License) -endobj -341 0 obj -<< /S /GoTo /D [342 0 R /Fit ] >> -endobj -344 0 obj << -/Length 757 -/Filter /FlateDecode ->> -stream -xuUKo@WX=%8B+DS.7EbWm=3;4"%3|܍8|D$J󬈲R^xt˙"tĘ;(2-30(3y*/ve]usm(<.Ƃ~OzC6N[ ЁP` Wǘhru|~^TX+ ҬP3AH܌1>a9eEVE> endobj -345 0 obj << -/D [342 0 R /XYZ 133.768 692.105 null] ->> endobj -346 0 obj << -/D [342 0 R /XYZ 133.768 667.198 null] ->> endobj -343 0 obj << -/Font << /F8 349 0 R /F14 352 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -356 0 obj << -/Length 196 -/Filter /FlateDecode ->> -stream -xmP0 !炐A@",9ɠdj`/!lRq4&%@A͝ҔCܭDp56u0:t,_:$ATьPFeKD7 _ (O -endstream -endobj -355 0 obj << -/Type /Page -/Contents 356 0 R -/Resources 354 0 R -/MediaBox [0 0 612 792] -/Parent 353 0 R ->> endobj -357 0 obj << -/D [355 0 R /XYZ 133.768 692.105 null] ->> endobj -354 0 obj << -/Font << /F8 349 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -360 0 obj << -/Length 8937 -/Filter /FlateDecode ->> -stream -x][sdq~篘Ye~|HT9˥5QC+_n\sW$WrbZwp@8zzbHͤ_]L"A^Z&2(eeYY2h?lo>qd_}n]녾ť>__o/>ťU님> -Qs,as'Pʻñ"Ww\J)*oҔ._፻G`o[m.;VYuڜ? U;;Y0cao¹*!* &+& &N֘MZ)jDHF;\Ok'{FTa)t O8> Pe,fr9o_iɾD[9| [ÇjwC}p0X|PxHeKmd+GEzw~Y*ԠIQt{d[_;C-q#>btq."Vi//^ {Ak=J}?2v{ťO\#}zܔ?_J7>۬_wQ5REiA~Xf  nhy)>J(F2w _o{eFΧua jCz8p 5_^nC0qKkt7'VWp}Mm }Mq=: |6PgGjѼ?VZ[6Z1`O4n -:k|@AraG=ynI+萂E"^kϛ5O:ZXb eS-qpmt][?Ww%>mW_/ڐ[h&LJo=ַP^9>FԫiQXkA}u3Mc6}6NS0Jn;th Sr%Xj<_FVO3~R Kڝ4Y_{V2f~?{trːLl/*PW?yjurWӽDTwP AT5/A,@L8jRT_NrvRu~ (_EåO d21ʯ[ɆFG*Jvϟx`"۱BbaJ|&Tmrt%,Ğ' ۻ!BjHїQ:*j.^m07ltRPؖ1~mzg#<,#懿 +76Z'1% ¤΀GBgNŽ ,|Y{F$ԵMW07ȿ9@4VyrEWa5z [XУBv@-Wݑ]~]c]3V -:o2 I8a"~+%-bV -`pI&ʶ+^xvM#b\QpVG.}: qD4,p e0 ۰q0E;4ҍ?7iǨ)h20* ^wb ʆ/eYaJ& ̠jν&0g|H͟2Gi>bEW $QQ B]8iK0rbL8[`*'BI -WN0%PU++jJtBW.b<_=1i^}\,BOYZ-᢭|v}3>Ո*ƺ,>SӘhC~i BN a:H))eU[&;q}P GDg C@xLKijf1|@'&TK! wGHԦRU}°PhMaP!eCV C3Y(\+u!bKB!-(bb -:슙bW]V=zB(u͛(%R]1g!8Lk$앚IK7vً v`d/OJT.^uݔ./:͌17[ 'tU婋vɀ5S[~935'`:T2 ]ޒDC)7wg#'/J(Q ņA{N"K [)B9ם9rPnvW].Z`XNGB'V@6[>Ƃ"N6ƎmqeCp6U2VzAi7`nI4M!E#/ea^55+"v6$">9gE/I|$IIŹuPGY<'f`l-(0hl1A܇,؂-؂-قfl Hiat/4ՙQMd -GX}anYw$yi@W=:۞pץ (L~[Al0?~do+0na -SX pBڊQ#0!Rz*=$-&&yuѱ-1[̒flܵ1lFn.-lW͌Zdơ63ArnWy3+MxUDgXmw} C3lP>uu^ W^@[ߗ.~(c 'Bcp"cx;‘ఈ.H -.3x;‘ఈ/hetsF ƾO)~)P\c&EZy,IDneD%Ƽ%JR2EfA'&*g,2͑Ŷ_y28YF[)-ü 2[0)%};E1o"kӬ7ԮT>lڵ($ZQ.ĄE -sY 1,X$V:k)JLX$VԤd͂޽@+83\0u3/3pWWzC(A{~VꂳС̰{-$qvfwEԹ,bj K$KjMy0 ܝK/ ~}ꢌqCQS<-rECYOQ\c2h.KOUû3 [(P_eWKB؈n>cP*uI]]_2e3 -m Y9OKq, 4"6:\cQ>Z,ܫXr֤"[U1: MdRKkEM2\V-iБb=ݤ}:CFanhCŗ]/K 8:k0IUҸsrUI:8֥=Np V?i,BOek|(q,3ޏ.Wozm0Vǻ o1oUeTąQL(]~x]S 4f~/fg,dkp^پLyxXx#?+oR_\~`tN2mG5$sAq7xDti창߾'AL !UM}䜀 -$Knu;YYcPgxH+~ é -ô|Oeb*s3w)`BRuMwR&@ϑܸ^ȭO~aNW)W80LmJ]Mh ֻ O@Eghx#˶s|$Ԫ9m3Īl%o4U~BB w,MӒ1M1f~a.5M4`FuiJg0r`k nl91%ڮQLFZz7k^Z¦brjl -A+D*g &,0̸>T.l*91瀝]% cĖm:"Ӳ}<$E#Hyvͳ?ST]Y+*R֐f,C)K,ē PD#%'Bɖߊ^~tÇ-^Ňz`>nހQxw>d˻|ܘ-=}'EIn[Vy1?2U(Q'FHEby<Pӡ"%,? q-%2-r\&o΂H|mZ}ӛ^jТ6F"V,`6,Ն鵡A+$ĉ; .QRZ O"QP6y<ٔ]g׫ keaVTX= b 3ƟDf̓'g,]~"5q>vH`34ȧnKf蝳udQjOv3tb K0W3tb9u3O0 -$3tOf:C߭ pa}^~AQupw1j]Ĥ{4 - ~IzG?dyiMx'QN31.A;9d+`<\U{@%ہ,)2&Z@q?ϱˍ" BXJ.0Eu/-NAu"Y=ܵ֬#Bп[J⥂:D1^Q"xfRrIֆ)<^fyzǕx|zϣq& >q8N;3t=x~VWq8e~L= oBv֭S)j\Ǔ.AڡfD @$~TrՒO],L(n8~ 87_x^DSŹѮ鷶z^9`ҕy==eWO^br(GH/~t]X3d)!Z+A譪,?.K YZJ|on 9'jzA98Qo2M_ڀw}z e.)/^aSޟ^o Ta2^n0}pWM \(S -bg -/DFQő$:߲USa K2mrR"SvZmq@a8RoY?g]xvnQf2!Իܔn W3$.lyfyWA\ -<[._e/YNQm[m+PmnKKMo/uk,jᨩ׶͒TۆkQmkmk L&\,n"+z;|YdSB'Yzazy2nyϵ_Ħ'Hu{!E™wBVVa E޹Rz<' Z@Ύ GҊY 8ϊoڧ,`w Sb1Fb5:,\ű-ƼV <٠tӝCm`l6 bVuS@lСz̏.VâU6}\7cᢲW#ihfI -Y]fĸ;C+j C*,O -B d | >L +O;w0lƳԸdTDΤ^VL4N`wmzf 5R5JT۬W:›߼s -o/yJD#ʒmLh%OS)2uYEeg(k(QZxJݬ -R'sa,<9KToB(B)^5)1b@šUPD1 . 1Nb;gk8NY%-\f$7;Ż[9t4Fg1.K3t mN_4rqg68- :'Lm< a]Gs| ͬiĞW:8OxA{p,25)C ᇺOHxśCxȊ䄀8#P(%F OX e!9qΆ-!2>x'}kz"壡ydwQ&rS.(G28Q/4&XcTd~$ړi 'Xc9qOvdS%ɓ7.C:>S&RUڼS&6}Y@/P/QZf62sY?^gK|l&%ɑ7т V&J$kPTfHA$-8U!0PèXӗhOt&JaYd҅ ki7OzO$3u$l$a}h^%V?/\2OE0=T([9CiR"-"WOt _ `-YJE -%3RJM9#"Ex-c8$rsi%!Iڨ~Y͟$(H$ SNI0I%JX~k({0GKZz5+ghww?3,%?ˑY|g LG3fVݥPbm^*@BSZFI3N`q QL (Jל¥ Pd, |` !ԐQ 9+$eFy"co>~;OHbAMxJ$t;yxܾxτ<& ~~5Md3IӤ̔.RXx,)BLDzxj4%L -Ւ:haMDOiuk820ÔpaE@["QYl4DDSIVAZ|3ѲFXa<`M4P0!{J\`5P!j֘EHeB &Vq(;0۴k MҜէr -+&2[ x(Z|o}X,s. YyOI$Orq1a2ƕxuՎ֊!J/=CI_:fI…rE:|gϨkֽN /%Q[nQS+C>7}U:$:&N?_Gh^ -LMV\J9r;P'!R߼61WzE].[:"%V _-ehF; hG)y^%iIںǫ -q~VN ?QK?[Sgoӻ>S]Kr %[~AނƫT1|U>|BT)QD/v?CrRȈ;!YU~ }B5}-K[^!Am -t -?-Kլ=nBW:O~Kg/nԗ0~yE%fZV6WUW6Z }<hlw['1 _dV͞:^ J8OE -endstream -endobj -359 0 obj << -/Type /Page -/Contents 360 0 R -/Resources 358 0 R -/MediaBox [0 0 612 792] -/Parent 353 0 R ->> endobj -361 0 obj << -/D [359 0 R /XYZ 133.768 692.105 null] ->> endobj -6 0 obj << -/D [359 0 R /XYZ 133.768 440.155 null] ->> endobj -377 0 obj << -/D [359 0 R /XYZ 133.768 377.556 null] ->> endobj -384 0 obj << -/D [359 0 R /XYZ 133.768 286.075 null] ->> endobj -385 0 obj << -/D [359 0 R /XYZ 133.768 149.808 null] ->> endobj -386 0 obj << -/D [359 0 R /XYZ 310.605 376.362 null] ->> endobj -387 0 obj << -/D [359 0 R /XYZ 310.605 293.596 null] ->> endobj -388 0 obj << -/D [359 0 R /XYZ 310.605 167.098 null] ->> endobj -358 0 obj << -/Font << /F17 364 0 R /F18 367 0 R /F28 370 0 R /F27 373 0 R /F30 376 0 R /F8 349 0 R /F31 380 0 R /F32 383 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -391 0 obj << -/Length 4176 -/Filter /FlateDecode ->> -stream -xڭ[ݓ۶BOHviMVI590D!5 n2"TųUj"6k"3И˭&P%4R;pDtŅ`IX_2b53%+?^%c@!qm^J[pI(r4No%a_J2q&~$bOP'GvMh6^.8)y̭ C*+x:%EOHgrۧ"`WtaU̾ {*2LYzNB-|\~Fr I6P!?[腼%&PT29og8aq9 8E+nݐ3Ì14nI5% tϗ#:74O\G/]B6o.af8\jI?t4++oy&\,8<^tPJfpMnv򏜍1~b籽˻EBTx@bK@ͭ뗒#-ah.6z{% EEA껫US2H^7^"ACLNIm"穌Z•ջ˼uen{@dpLM*,aK{AWZ. )c`g\=pᙂp\kh.ȉ_עZNmxτ A -95տn=Z H~pFf8ĺp*m#02T5vxYSj@8rA5mʣ6TcG,J>@Y%HY#"49ΫJ-Vˍ-A\9!cݑx 6i;}}޵WRgSw5G*:nZ BƩo VL5M}Mpw4^תplgDSw>*Ƕz2ݶ$Mn=UC_6ua(J)ׅv΢c*M85a/EI 2(iޠ.-&J'7QNƟJ.pk'y W$OΓ\?jRLo~|Nr[;ρ_/vDLf$H:P^HmaֲUE>yO_O<Hm Oe2=w :ڈC mxK^sB$2G^`^#d-4̲{tp{B};QN'n@PM S# ?z?Ou?tR{y69}y_ѷ=KPR]=Gp[ש g\Z^zQ&?ӣc|b6(/Y,]ڛ}.մ/kUBc,(-/SF80#Dhd#$Β*|ai/lN0Pi6N8l[ r%+XSJV;b8@,= , xNͯ`Qf8{ \ C!a9d0$^дhX-:ηoS+#uoÚO5o9wabJm}[SpeZB}KbyV#YV¢sLZs[$#DP޸5FS[3hDQ#52yms5Ĕ|Vu LQ:u@\\:s(4:mFXR7CGpOFJuUdMہۜд`b&z"Z/@NU)A0%H-[ ]amYzXޱ5S[3A*Akr5$T34;b-dj;bP޳L MG5E?i6SZ ZPZpfM9>Oȥ.m« u ("<(St-\4 GxP`;u?Yc2®/4=mÛ\Ŵ"UyٵWipMd# * -"r(`EϮAE)9jC(|ƗTN}}fKCEH="&9$y"Wd%B* -%HgK.*晫*WdC?Q8q \\ފzsH*nxv^)Ǩ/ -*6azjgܿyX18߮7cΞ -hܶ;kĦPyrmT;u*OTљ$Ď4#V(nZ6`@vK?]#`[/x2<7p´i9f }kf[6 E.H/*U.gyuNhg !ww `5Us$Ms${}uBن{{nm -\chVD/}a9 KwFL30\]{u W 94H|N?5u.;)MF' Rϼs$bq8w*D'2MČUc5h)76]]1<-ms&*FepK'z磽Xab Qk].k QuZKn[h~&>6Y6dT0`1<>AOZQ.I4qAHu"@6q_!8SB,;cOn/jxU~3q-x${mmܻEŨs.ޢfB;uuoڃmVRvh܄>;7rZ좞m=pSLZ Cy,φZ~n&C[ĨaTOmLl#*T#f*K["֛Z0c/U.})>>nͳ|%^07JEòѥujpy>Nm1JJI|"'uV(;/,#PJoK!UcnΏR0F_j l*ᰞ`hGH3'Tyz8J|KfXqdC؞s(qHR,gX᢮줲1qnǎy飓]Hk;%_i]WCL4p@3$>%1e QEX7.tuiJ7z:rcOq7ߛ&/b0Ʉ>6)RwsTГ 8o~ VY<ʼ -endstream -endobj -390 0 obj << -/Type /Page -/Contents 391 0 R -/Resources 389 0 R -/MediaBox [0 0 612 792] -/Parent 353 0 R -/Annots [ 394 0 R 398 0 R ] ->> endobj -394 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 0] -/Rect [304.683 438.103 360.364 448.951] -/Subtype /Link -/A << /S /GoTo /D (cite.metapost) >> ->> endobj -398 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [224.78 234.865 231.754 245.713] -/Subtype /Link -/A << /S /GoTo /D (figure.1) >> ->> endobj -392 0 obj << -/D [390 0 R /XYZ 133.768 692.105 null] ->> endobj -393 0 obj << -/D [390 0 R /XYZ 177.17 521.235 null] ->> endobj -389 0 obj << -/Font << /F32 383 0 R /F8 349 0 R /F34 397 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -402 0 obj << -/Length 2375 -/Filter /FlateDecode ->> -stream -xڭYKsܸW| "2IW&NefJajH!'$Dz}ZiS)U@h_0S=a^ZDV[nha`ػ0$Y&Y w7z{EX4/b0PJ*H"?(iWQ*~12ir"2MJ0ەkmp UlPwGRUi#k\zB: ,ּÞtiUh/ÙZMS cS{2#%~,P:ϨOߘ?'4"v*;զf4*Lqǰ(7guuYyiq-,o`&G \OzMK?['ޢ%Lj?)tKOI<-QGH]h4pn(n!c("Ix,*lCc(@CY2uj8eőout"J'ͥ*$_ d -C'IxXh&Ymȏ $A'ԥS٭3gXgO)(a -=>J0A]2kvMn7k@mZwDCX:"TVe35a^Dsp'̢߱XmZK~BǍ!qrw[EO:s_ȥ;sO5V+ؗAjţQz)`"TjOm9831 -@h๳sYaVB9`Ϩ0vMGYwQR0{S5;'jxE9& -[NS*ΰ[Ykί܁d$؅ͺ|lk݅<0M!\JVs< kUs1i(A8e9J\5QD۔uhdD gy9$b IrB?Tx%#²(^KdB#@I*Îa/f//eH_ɭ3XDgo'.Xvp<ڷG9CihW=0ӄͻ7.o/8uG^=67 {W 4wwe$0GH,+2XN<"V8KBSHe!tS )~pV23ra(xB0Pa+\;.blȵmo@FA2 -ڇB)DvsQ$S|*XV$#PG: 3%@gatbIȒVAts)$&sFs @"6s~?r 4 0Mnl hZYH A;5QNf\,S?>tmuIz˒ N+ubT~#|䄸G_/QaeQA&ГpxdqǬ y BLzKԋ./&WvETG`/9ޯaĊQZ^z~F6_ Xᨎ(42~p{:hЫ^.8WމCeO 3OPӕKHz(b.%GOH`F0doخ[t'~d*!5lZ+y+ -Q|A|S{Bwƽҗa{:.==Af| :? -$TxۏT0aq͎`"\P -Jrm||:ŌHK+{t y)e/> endobj -403 0 obj << -/D [401 0 R /XYZ 133.768 692.105 null] ->> endobj -10 0 obj << -/D [401 0 R /XYZ 133.768 229.824 null] ->> endobj -400 0 obj << -/Font << /F8 349 0 R /F34 397 0 R /F32 383 0 R /F30 376 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -406 0 obj << -/Length 2914 -/Filter /FlateDecode ->> -stream -xڥko$5{~E+|Cwht'‡ɤ #LvɿzeUz\.$J#o+PUՅ`* -{G&!VMVQDoJ0ʻ q/cwXU+UHկ?|Xr=[u RN(nnB=cBk1[!DyInJ2`'rMh)LlqtR{92LXody$iKsAJUVQJDZv Ft{h;#:?/ ) -e#Z -~%)1*^0؜nwIt|L+GR]FfFGjl'c=&9ݻ:Aҗg9ÌGwvxt>J$Kݾ731|(kBY?O*W㒙mA;GAbhÚY]R=փػ%zl@jra)*wQB~g~sl,@>ba)mhuw1 -76ITÒUcna֤ :ĝʊh͌ch}o-ɪmf0Ԁpn6Mg*l1>JY6 CL1w؆嬠g=C,hlP -;y+v -eнdt(.{B 9DOL`}ymacS*ߍrA@OU6 D(b[۲y'GXH6ll;hA ό1<ЎJ f ){7|kƊ% -r`%]=.Cwri48ທy3 w6F'%T1VaW -} -˗'ww61Hqhe -\|ss%! jC$T$aҪ2[Sl%%$֫HɟXWer]-Lh.Cr"O^yC/.CDrJ0Ɨ]wnw)>9%ݿo1CU3pi##a5AHP{lB2SJz?~FrF-^ƵDȢxqx"$D4>-g,&aU!\WY.~xpkK, \T~HᢑČo=l-EA㇭ŴBAriYv8LV 5& k # ]ihgƠ𱤥1~pOdֿOڴX627cǵ>Ђ*u&>~V|r"ď{]@Ҳ.#0! -D, ≋w4k7~hY [jIkǷ!NNW. Fh-$UK D1F?˜90BhLO1h((*! la9d1Ɣ@hFPp:Ir~<3ύZ8s+Jvi1-b -HC)bFm"pᒇhGH1d@m@<m۱ 9w0ÆmK#BI9蒀E0'bسvdI;܎dCcΑCu {+8pG - ;JƲTO^p;ƒe/#ٽ=cplM^P=){KGpdajf\HnW".h͡rpDmH K7Zk.bn|P.q~#湯sbg#gDtXJ_te{L !.LYa luÊ?͸2N{ ;SP7l*TN#0Uwݖ*CM~q4q`TtټT&-Ũ<1*(}Vp_'MQ0Ǣ;(G GQ>p5*w2&*F('y֌6Jz疢>IJyt1u(E&!LKO+P+\Gbyҝr 0 u ?8ᕒp`t7:$n!F7VMv2`}L.]Zk<.B01O74y͜bX2\t8Q2S2=3.fJ&:\vG/vϊT -ԦcbiAwIߖ!?}o>*=XS(7bz ߱Il?APƋU -!#fU"ju_{#=w5<}ɋ~/ ~\vΤbɺ+' -Yu݉T>-‘AKFbhz,Ș?iJ9] -endstream -endobj -405 0 obj << -/Type /Page -/Contents 406 0 R -/Resources 404 0 R -/MediaBox [0 0 612 792] -/Parent 353 0 R ->> endobj -407 0 obj << -/D [405 0 R /XYZ 133.768 692.105 null] ->> endobj -14 0 obj << -/D [405 0 R /XYZ 133.768 423.12 null] ->> endobj -18 0 obj << -/D [405 0 R /XYZ 133.768 237.366 null] ->> endobj -404 0 obj << -/Font << /F8 349 0 R /F34 397 0 R /F14 352 0 R /F32 383 0 R /F30 376 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -410 0 obj << -/Length 2161 -/Filter /FlateDecode ->> -stream -xYO۶Shr3i'%9hm9Զ6; ErIO̬A~`DȄR,Efdl# 2ADiHM ..LVȉAfiMΤf+9n6AAfn뾫rUܶsuxX|-9 FI^uUVW~V%~+?}ϗ9᧯cQvp20+uf`{M)Yd°~@0+8@11ip@'X|9s^l7Cj,Pۄ(Pw q^[F%Z`&{>l } fordѦH ̭@+E}ߪа*gC!hLZ3 -҅0p8AiS(} -FFl?o gI=K ɹXۄ䈢Btx($*~;&i^iu(Ƶsvē雖AE MBfAXߛZ,tQ١_PfUFY3M[RZO1o`Z-b^:[&ٜ.^h&mٶ'JD^{H嚖ܖʡfOU Z;lf>*$eH27!ӡha3hGP1zFya,lڣ8bd,q.+\ˠ?sUG u NJ2cISPS)iC=9i),ӪqM<< $kݖ%]O0}HK+PaqtՒ@E_-89 (. |sAs׷mw(Wv[=EZګH3A zχAz^3 Z-^ - @<6>t |=ѐ}8d rϡ@@?A!ê#3O5(%Q? 5"?{="L>.E@ߢy -%3ADl"(:4ʭ ml - PVx4"&`:hC=/!B5 &ga/1s -GQ! &Hn@FF2XBg,=tvJΟ=>{~F"8tҘpHUXH3D - h ZD߾au(DsvliF_PޤŖ°TݽQڇ%iSO8 M5u$[ڮ"@"юkva9}{{ͺڎzȧ4Mk"z iO1&b|ñ^u5>-~-,]{C EksAoh-N=z\d&zCOԶ{A~74$ b$Ftghd[$K¯;NN|{e>B0"-6L%hiz  ~D,VL 8Bco]u4yłǼ~υIná/8qGGd΍Oik,?':>5ljWP7-x ztŏF nжî^  -ڧ*<ԝr4SO׵ϜXޡVG׈è𨨇VyX$ɦzjR¦#hމi| EpL]"A8 UWʏW94lXoK -endstream -endobj -409 0 obj << -/Type /Page -/Contents 410 0 R -/Resources 408 0 R -/MediaBox [0 0 612 792] -/Parent 415 0 R ->> endobj -411 0 obj << -/D [409 0 R /XYZ 133.768 692.105 null] ->> endobj -22 0 obj << -/D [409 0 R /XYZ 133.768 352.164 null] ->> endobj -408 0 obj << -/Font << /F34 397 0 R /F36 414 0 R /F32 383 0 R /F8 349 0 R /F30 376 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -418 0 obj << -/Length 2232 -/Filter /FlateDecode ->> -stream -xڭkoF/poqkSԗ+-юrt\̾HOi >ffg=kPc d:OQ4.@f6S!s8 y62 `R2…=ju bHVw=Cfy]Ѷ Utk.j+lqyt]o%E1QȕU݇A"@љ[#ۮlʺ{:GvxE} bEê#^0\ioa~y@KYV NwdSœ+ޕD{JSPvdb1ހPciN$E5Dv \I3Xkv~XjBk#n6O~3$1 -&w -Ā sfjCQDt3qSN8i `* - 4>ɍF?G38xhY-s|^lAAz-~Ap|Ph㡂ߍ#9(OyWҭC@H7nroq=-sxj9 sTʑlnͧ@"##2dPhw3ε1!8͌] PE@[ѾEژ -%#LiFuo !RA}n$ -'3fI/@^[ht&oqV?Mɔjrb`~;Z QtfvЁ&3IdVwuT-9X;iAnD鵵I! 1'D |w۶K,m9#]9,Y1:Tn(ӿLm `MrT1\ogl>1H:9؃dwD@f/6:0|6qG퉹b.ܹ]r3 xp ^:-x4h9ք13+U0C^6m,y?U 40Fx2Q>8M1- 6i`syz "TEEGo_xײhSCI o:'Vy77ͦll{Zt\^?D[ۺݼ+֨ }ΐXU_{WLT]q]!(jƽ+E Gk?ӹj,ks*\"-۹f+ETGGs;ϧ \H|ДB1ئhM1af\R:< (iӾ|Ҿ{ >3N(mbNqpZ_;CD|m._> endobj -419 0 obj << -/D [417 0 R /XYZ 133.768 692.105 null] ->> endobj -26 0 obj << -/D [417 0 R /XYZ 133.768 504.814 null] ->> endobj -30 0 obj << -/D [417 0 R /XYZ 133.768 313.856 null] ->> endobj -416 0 obj << -/Font << /F34 397 0 R /F32 383 0 R /F8 349 0 R /F30 376 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -422 0 obj << -/Length 2245 -/Filter /FlateDecode ->> -stream -xo6W$+?DQlчZ\ѢX-jlD=47CRm˲6NFKplj D%ihNt9-<~A]H)xAR22Q"{;;Dy= '3]LJl[o_5{T:ʖdQ1zzI.WE>dW6_*orA43fAFiUjQI gD&-x$ /(QVH6OppNTJ/( rĂ f&x*] sУmfBQ u)jV{wFK "؟FZ~VVR7.`FJ`tT)d~"Ntu:XngЯCXh(cNOlHbPZ1Hz\uۢnBV00U&(OoSͶJht-E()zanoYds .O1%AS;cj흙n[dwۭ<ᓻU)L=2Gқ7D_<=,pcl!zṟ9,~#jkɃI $i$)<:UBP(tjJ *? -tZ]^^}ΦRT"]+8Â,j|8dcIljQUL 5t*qa;/*8lR;A!u*зՍOup?l뺩x"c'|ccQ՟qUyዱ\.pMK]J! {X=v/n 4QB_(J -kg @U,i`/'É;gF *Oa9\ B~q&ZQUy -dg*COQOP-v%U؍;} Ǥ[Z=g{>!gXʼz$w{n/lmKKVJI8ZO+a%tfЍ; Кsh-NI'3P -v -|Y2}X_ߕ -~^b'8Z-zeWIӷ?M_]:SvRMh_vNˍegmGK@K6B/p|iH+qD?~_RMD"'X$0aĦA֒P -endstream -endobj -421 0 obj << -/Type /Page -/Contents 422 0 R -/Resources 420 0 R -/MediaBox [0 0 612 792] -/Parent 415 0 R ->> endobj -423 0 obj << -/D [421 0 R /XYZ 133.768 692.105 null] ->> endobj -34 0 obj << -/D [421 0 R /XYZ 133.768 513.836 null] ->> endobj -420 0 obj << -/Font << /F34 397 0 R /F32 383 0 R /F8 349 0 R /F30 376 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -426 0 obj << -/Length 2470 -/Filter /FlateDecode ->> -stream -xY[o~ׯ dnC6M8p`KILR^̐ڕӷBs̹wHIS2FYeJz{![r,щ湰y%o/eFoo5i.]J*QJ<*12^7æݸ~(RAY2JT!LQUbe~Eq=Rij;w+=oyM 6n1 S2_Ur -=gwKe O&" mz\au\Wkt -Π<a797{'(Ss?ͺᨯ -8c.j \:HbϨeꮛu"̌Vg3 cw!2~{WGe<5SSH7= u5φ6Nz-[ -^fK<q0€>\eѕlvT:qPosvnM`Bʊڃ<@`AVP ă-b-ղa:n #Ϧszfi݌[ט=n8d,5$'­D@!:tyо3SL&o/edu +I~W'Ʉge^&Z޻]95Rv[;zG -AJ{AImoi/V\X̉>5@d5TXcS  jRhE2: %NwNZ=).*JQlA(}mE -lGߡٍ?ka\javjVCњQ; /ytpyL|9Lձ,ԯZȴ,$KJjh@(%c)MyfY2Gڧh -FZFS {Kjm/J2Q@-4:]܀D1-(ERԼNHHŻ背6 %W7 g*os e!L(<2.)gQrS@hp)EATX`&G|sj`:҄T(`_hmHˡ Ǚ,X 1:a$ ,?́|?_`ByB =d΅:ĜYsoM*ҬkS_T3T"1M䑥TI1i*TynFa.S`)JI?凌p?auy30$.(Kp+H:2΄pLK>:>aw -:ge6JYHaȤ箹=uSp=ABEY378{Hܞ[ܵah%uBd4?MնN wV%_/ts4/2NR/(fft-1jZUZj$036v%n:qQf`TVd.G6q~f)FrI 3ڞXUw±a;C^x!5e#Clh6HvI_퇦+ַG݇`T*$7AI(yLaQ|-DAjGFRPlpTwpO@}]_Hhnw_)`%_b_t .0=nL7hq> l`?5_kyCUjİyr$?pAAy723ZӤpdxV=N(tDp!|sSη{l. `P!:')~H|}hgh_P<{'EAY( ψ·XZ!-[BKN&.IsN}Īi|,/Gޛ[!} f;x=ْ//ȥPoIj~޺0?{ī*p4jiX~Îw0~-RPU(Txdy &Ԫ +U 5 -endstream -endobj -425 0 obj << -/Type /Page -/Contents 426 0 R -/Resources 424 0 R -/MediaBox [0 0 612 792] -/Parent 415 0 R ->> endobj -427 0 obj << -/D [425 0 R /XYZ 133.768 692.105 null] ->> endobj -38 0 obj << -/D [425 0 R /XYZ 133.768 667.198 null] ->> endobj -42 0 obj << -/D [425 0 R /XYZ 133.768 219.204 null] ->> endobj -424 0 obj << -/Font << /F30 376 0 R /F8 349 0 R /F34 397 0 R /F32 383 0 R /F39 430 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -433 0 obj << -/Length 1994 -/Filter /FlateDecode ->> -stream -xڵYs6_5$י\|LLSZ#%:ﻋIHψX`?b X$D"b6/I&IVO>"( ,L邁06Xac 2]/~T:q*'xouٶ7\u vߟ_LL,˾XEbNx׬YfFd-52(Fׇ(p^OUm>!纺uլ󜗍lmj۫:T^Wv)_~|dG.2|G&4 ܰ\XL^;θ@I?)Fi }Bg#?g/ZD[hT&TQR1:Y܂8 G5*rԢ-bGү3m'k0q!xo/Ws50"SܔDfAUdaX+)9 `2|].IXN"&Tƛ&Sm4-dYGCPԣtwb F b0ԠmhޯXk1:BjZ@8>}5$Gi'Gm< lH !k]wQ)0l]gTdED HFfy^wj8gOXO8V\&tIB~':y_71yfJ1eY.Sw}?t-Nb [${̔Ri*jm[f*o' -ؔW|o6Wj8q UJ835.xl6I;ԸbFhj_ڑ:&T|ɛ c3CPÏVm -HMT'T̃%rγ(g &}jhބ9σF48Trq{/#lR؟.Af>f I`8HqU$JH* -jK%} ) -LN /gcKT7U~8`Q6κ];l4->Pԁ ABZx̂M SNݞP+nOlh܅LMvCI.Mm|m$S\>v.O+(8#y9oI\ -GO{ &k0^?w?s='__i':(bBXl Gc!Ŝ< -y;(32`VrӃH&:2*r^ /A{D:'j2 -j]g|3I uGD0C%4` o([Mq0A] zz-yDD<=HEo^#&ӣwG|[y7ħ者. #l)05͍X)`UvYJE/F3)|V8 st  z@JǴ.XXu0mUQďL=RB.wtI"T-6FvϺ&܊%UÛ`mpE wʕU/sx;w>̏NO W>oj7S,[i%yNwHq`z-芘kHAںS, -endstream -endobj -432 0 obj << -/Type /Page -/Contents 433 0 R -/Resources 431 0 R -/MediaBox [0 0 612 792] -/Parent 415 0 R ->> endobj -434 0 obj << -/D [432 0 R /XYZ 133.768 692.105 null] ->> endobj -46 0 obj << -/D [432 0 R /XYZ 133.768 555.547 null] ->> endobj -50 0 obj << -/D [432 0 R /XYZ 133.768 393.26 null] ->> endobj -431 0 obj << -/Font << /F34 397 0 R /F32 383 0 R /F30 376 0 R /F8 349 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -437 0 obj << -/Length 3283 -/Filter /FlateDecode ->> -stream -xڽZ{oߟB0nעK|%Y"]N~\M[]ٙ!ل0!HD[NUNNX Hn΅41YJ#eܐ hZe Orbbr~ -hΗ?VuAWREOϯW\q5u/|Ʀ0]?>#VgssS1vuqW?arp馨e b{w;q[Z\Ds%#F vv/]]2xDuu{^Uu]mȺqQ Vyx8K  -WWWW{ ҳVYn/fa^A]B׽K$k|a&' rJ>Rbp={"m=: -̨at|oh W'SgqW;<`hGsAڦ ,vH$D>̇V -fRIHg+^LjLX?hQPԍiEM2U |p6d̙I8Ix4|pRsDM\aÏ?/$n`W͌)jz\6t - sJFjԛ*+dfmi+)δ,ͬmy`.{r0XVWpDk__.4o -![cpq!9ϸ ̥U=*, f--sDZzܡkY@DU>¿j7b^̸m@c%ګ=e\(rه/2(0Px-vpɦ%ZcwGKwU/pX)Ula,klє۫POZz[wfZ(u"̓p kՅXqpj3v\ -s879wߺzfwWuu7`\ߦ32 *\s'8)5֞aϦw(nYp@{EẄi'b o%URewy$I{=o@2KAB뻭wdy_U,wAj7蚯_ "Īk"7_63P }vb>оP/hpY -U jk&gźB/8tx{J|w5rk]&/--ojiuGCI]Uo޼)=ͯ!T(w/=O` -N/~ ]ri#qTG=!>Q4Rվi`~Yu"*c!{Q\ՕL(-~ -Oqަ(>xVͺsʄmY8յX 8MlswE ry;, e!y9 -~s*ۜmLZHcP<מetװMF [:JpL7#F$m/8nÉī͓jUG`8AC:imSl6q$?9]05 -%|31 {@L[Rɱ%dfPA~,&ė)!$cy!P/37ȕec\%ۤ=m]v8wpɅ=Ns ސfp}QML5"5C&/|~o̼Ȫ]/w&2*glbWgj~Ty~?WL4c"ʄӷQC^UcHȁ'6 {m_Ei zWo}A*gNn &d\[Uu 0,t kȶ"4XFսG5/"(Br٦abECxKe2>.Off/D=%UB=qQ wM:.p+ϸ[#g}/pzEvK -c*i\/Aj.|ׯ\չ-~,z8wEZPY$ B0=V&@1\&H5X&eOPAW Y;hW#$AL7ݡi. I0a- ,> endobj -439 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [447.895 462.742 459.85 473.867] -/Subtype /Link -/A << /S /GoTo /D (section.10) >> ->> endobj -438 0 obj << -/D [436 0 R /XYZ 133.768 692.105 null] ->> endobj -54 0 obj << -/D [436 0 R /XYZ 133.768 449.798 null] ->> endobj -435 0 obj << -/Font << /F34 397 0 R /F32 383 0 R /F8 349 0 R /F30 376 0 R /F31 380 0 R /F1 442 0 R /F42 445 0 R /F43 448 0 R /F11 451 0 R /F14 352 0 R /F9 454 0 R /F6 457 0 R /F44 460 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -463 0 obj << -/Length 2551 -/Filter /FlateDecode ->> -stream -xڥYݏ6߿BKeV%QJp!{MS-{ȖOf7$[`pf8 %?H#AH8XnD_n#H$f,X8tw4Ȣ,&&*Hb)w?~FBe ]B:RaXʰ} u -MQ=so5̬>/x&1(x8Xbib<=(Ú[UdCAݿ4Qf [n *Osrg 5_w3C[dPi%wƅ^nOmrI]o'LZ)H:vgne|yx!M[017q3 L헶,MN;ԩFljQo;|'b.9bXxS{v*S;h7y#DS;:9`m#PYz vUi?Hw_97ϣ5£uk B$ptYX 15\uM鴠ň6ui7 ` sA._553r۫Ȼ!ќ<I[~hGCPd!yQڲ}|'_RA^X@v8{G$O1ig6_}5"t"n/j@|ص˪l;|59D$d:Y%2y;k%I&.5I0Ma8ұuQ ڂ|jDA ?W%̉n֮kZ &Qf[5š?qƢIVG1w-wV)$wC0<3LlX[#B*emjVAc^ں,i{̰R1GD>.q +T@0BB8RBxtGM% '@9̝fo#S;%9.tq uʉD$,>>zYu 0A57J)bFtHDT"Y 4c yc9|}v M?=Mb"2(Q&I9C&"ɂ~Dp;45 -Q@fM/zY\1Y -=lOF|2:"vHP%\)8x#Sk7}w$p%RRI89nt>f?`M /F%FH"!%Y%g8l2~B;mȀ(O}2@/`[ˆ-EL"(=3I7KZ(8 . SLM&52@Jl ܢNtl] -ѹQH5P_j\~f>Uyl/GV|>wpTEqv%܍4amT7uyw^|ф/(#"dIˀ""s))Y4/WE ";2*> endobj -465 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [320.485 137.047 332.44 147.895] -/Subtype /Link -/A << /S /GoTo /D (section.11) >> ->> endobj -466 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [386.405 137.047 398.36 147.895] -/Subtype /Link -/A << /S /GoTo /D (section.13) >> ->> endobj -464 0 obj << -/D [462 0 R /XYZ 133.768 692.105 null] ->> endobj -58 0 obj << -/D [462 0 R /XYZ 133.768 606.357 null] ->> endobj -461 0 obj << -/Font << /F8 349 0 R /F34 397 0 R /F30 376 0 R /F32 383 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -470 0 obj << -/Length 2723 -/Filter /FlateDecode ->> -stream -xZYs7~篘˒U!}lZ{<% -9~q 0ikT4 ( Av0fB;E!ak\HK@_5%ˀqK ̵2 ozBV8-P乾y;yU`Z>6'2g8UJ]x'K^,?,V䵗ۮY5k)_~7+-\Ǽzu\oVOɛ_ޯ^u6uUDsY)Ԙ;J(g#XQo4D47rH+W)l})1h8(!4 j3GA܂8s80YK:LWGwZ݀Fz a2QG:Gj"+ b9RRbnK$LiσЃiu*˸+ -JjoES侴gVZuֶI!iMᯥ -e%6mfNoA,-30Sz -b.~hV7A݌;߿)ǚ0Vc= - |1u08 -mD\|o -|w"@u̙YN KwQavt@P~!Ee@#vAKsNNlX_K?YPw@K^r@Gi`~7Wrnk]''l(azON/'~y&vf{bX(?_-&1 %hH4>7ZL搟!W)b e#GWXDS0M`kt7v7zMK]Xܺ in^ n\hv׻]6㒗Op:q= G'2<J;8i+-ւD+*8-{;ʺ)qp}̂xTux2P%ptu^:?]A3 %Z.etk!'KΓ[Vi[hSնZ *I-1-T{ڝ>/ H@DmhuX`:Jcр4|'S1}fVJTF@~8ǖ -id(`9I87Ŵ㝚ݔM!}%,9 $I о -endstream -endobj -469 0 obj << -/Type /Page -/Contents 470 0 R -/Resources 468 0 R -/MediaBox [0 0 612 792] -/Parent 467 0 R ->> endobj -471 0 obj << -/D [469 0 R /XYZ 133.768 692.105 null] ->> endobj -62 0 obj << -/D [469 0 R /XYZ 133.768 571.564 null] ->> endobj -66 0 obj << -/D [469 0 R /XYZ 133.768 475.878 null] ->> endobj -468 0 obj << -/Font << /F34 397 0 R /F32 383 0 R /F30 376 0 R /F8 349 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -474 0 obj << -/Length 2156 -/Filter /FlateDecode ->> -stream -xZKWL퉬<3iIJ9=:.>VC3(*yht7nk"'2ydlCߏD`Q,zSm-Ӷ̦0,XiLv1IذTiƷ%Ɵ@xL;|X3ނ}=mkAZ[ I}dz9}=LE6g,H"W7xT.ġ˷*Ti_c*a&LwuV2WιZ0ȹ+xgnxSxZ6},Y H=f55x:̼ܰwER:*Cpdm_Ҝ k3}>J2K7[Ĥ#i˙GfČ}(8:J'Wvn) $|I4o32ط A R݈  fq9?@NG@t 1S"DYy Or.ZPy$z -W:1tMg*DŽ*2$$7dvdjErˋU^i˕?|7 w -"c f1d`FQpPS^+-)_W{D/=&Wy_ F;u~^Zћ&S1n#Zٞzd9Uj)^%9qxKκrՄAzBK&WDYoyGsEs%+Cws_Az$)-C0E~{GӄBDwvSoPUX-dJI8a \`?lVbaO\伩/_ju ZUcܰi=Fس{dVKЧ|MaOYЦrtJ1(,$Ո_QS}EqRN< E_ btsτq<1׀wkwl|gB_}Sw_/zQ啥_,j _#V`?, |`5Y em _?EЄEpd}!ӟ4a劔L I5XQ=PgΔ  kU!{jh'GmP]\ -ET<:wD#[QMSm~0=aM3Gc.Ton'C^Yc/dG4|e3$`zs-Hᒯ%My̯dz M4 -Cr\g)z`<<)/a!Gx%җ8RY­wNºʴ6 ;uD*t.NKko7MQgGKyA-w'Z\9!N rZ VЭqi-UD4.Mťvi[hU2~0ojoFJu`ie_AI QWW:gL -$3לN^ny4'ޝ8pDk'0AR;y-'.]=ﻚx8ddhwK@qi?DL`^ 5eQ|";w<ǯΊsGE-d0S Gw -endstream -endobj -473 0 obj << -/Type /Page -/Contents 474 0 R -/Resources 472 0 R -/MediaBox [0 0 612 792] -/Parent 467 0 R ->> endobj -475 0 obj << -/D [473 0 R /XYZ 133.768 692.105 null] ->> endobj -70 0 obj << -/D [473 0 R /XYZ 133.768 667.198 null] ->> endobj -74 0 obj << -/D [473 0 R /XYZ 133.768 404.504 null] ->> endobj -78 0 obj << -/D [473 0 R /XYZ 133.768 373.916 null] ->> endobj -82 0 obj << -/D [473 0 R /XYZ 133.768 190.729 null] ->> endobj -472 0 obj << -/Font << /F30 376 0 R /F34 397 0 R /F32 383 0 R /F8 349 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -478 0 obj << -/Length 2571 -/Filter /FlateDecode ->> -stream -xڝY[o6~_!ee by(>9xE" h kdȕ4q{..3$0!ɏ9T$OE< --Lj4gv1 (YXx}& -Qd& mv{ߺou.Tj<0&}6z`݅e˭WJdv+]p\BY]Ф Z Sqy\&zlqՁ4~DK=cHQO8;".{o-z{#hw ЁU.Mt~u _ǎ*W$;Bق؆#i]?zٌ'tEO;bECxmҶ#D`- S3 @:mc\Uc nE= .{8g_Xb w MqnnE xaC}?8ZВueÁiU4 Hƿ{ܽ*D7ӥWpC]4OE*/,?,o|BAL?d*muaӶ}ǺQzR[TdFi*U_1L7JF6RRz5P]w}{LdT63g@HJ=szH(&yQ `gMd"n_~,SMiTN'*@M&exֽYT8^l4 fL$GdL3 Lkզلf4 #lLyIf3[ \ u@@BT K}P0xn)z'Iu.)dˑKIZc#Eo1{7'|=+u[M$& - Ez2zz@>GdqCYSlQj(D=Q"v3@/r@":Yݡ X? -Cͼ0ZW[]ӎ\`J%QӬO(vnK͡jm=pT``Q*Růj]{H.cۻ$J?ˌru\UfH($͚8%3g"su9.3ΧH«yB3#T\lpKgRpUm.$vtNgԄx -і%Җ9s{1U/SJT~}%E"J6QʅnMOr(:ILgD\*w&YΤ/$qhCښQL5 D͐*2Kf63YXte1ĝf%=%p,Lj6s^Bc]Se)t_UfԝM{$_ԓr^GbO '窭ϖUO\N'`r'g!9"x/YFug i Kq')xa)4l-]`,x#j d+@OWI)qyTw9ail\Y6YQ [}b"}~3xƝ!.' @[m쉝}r~5L{3p=&S -K /<'L" M 2 -@ 1rH9|-:IPk!v|4#QW~}xr%i`m~Jm!q,Wm9}|QVxcXRkWSq,2K.ƿ(o7V^4'ÑCS3YlM[ 'LU&"Y;NO"rpp;o/ ܔR밝8+<W -7-> |w(^Y%4j\rO&Uv1ߒ> -endstream -endobj -477 0 obj << -/Type /Page -/Contents 478 0 R -/Resources 476 0 R -/MediaBox [0 0 612 792] -/Parent 467 0 R ->> endobj -479 0 obj << -/D [477 0 R /XYZ 133.768 692.105 null] ->> endobj -86 0 obj << -/D [477 0 R /XYZ 133.768 351.223 null] ->> endobj -90 0 obj << -/D [477 0 R /XYZ 133.768 291.364 null] ->> endobj -94 0 obj << -/D [477 0 R /XYZ 133.768 263.267 null] ->> endobj -476 0 obj << -/Font << /F8 349 0 R /F34 397 0 R /F32 383 0 R /F30 376 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -482 0 obj << -/Length 2243 -/Filter /FlateDecode ->> -stream -xYKoW tY0{=6=HgH*cSU) {ĞzwUWh8F(Ŝm%47Ǚ,J3/J{¸`,V!=s1؛onZZ\"/7fnZ -Z^eoͮ]~-k+7\r/puj4y/b>|WNj$7dfn7p\ JB&$5Qd{ULL|b̾,94 Yfi3Es.!X*f!Jf*>͢BgY]N tA -?cdR9$" Gċ^vMv5FL47͇x>jKyƹ"TL(=OpXyRJCDUax0Y[MJUMY|Sۉ' LA7K!oLTBNg!dge+zईeΫiyJzxS1?iJ`K q'p2يRb$<5MQNBklRIM#S:OElXR`I[y'vn"xrqa5_/ -)5O!DiDki']moOJQmoR>@,B-T]YA)lTkooRv"TO'wXʀK`tpm!JXckM3w"]sCLcso VQL`W ujZa %:Q. W _zu/Pb!o}÷nռ(%Hq+1ձa/?_N1jF@sq2P_1_¢p_ٮq[>cУ84)Pd~Z@;B@µ+pv(݂4ddobs潊̛` vVQ`w߆7h$"/{bc:hX -hO=.T~[ -Aӎu .$GB֑߭^YPq|}T)BsjqBm -y  j}R>UmHM>n-6&uI8cfB$dO1;n0boo}乁]!cz.h`_UbOQGvzw]E?zEQ1em{) cO?j*'tTSѝNZga, _/B{8Of?I =T|E8 #m-sZ]4O#ry-NY* Sexf4q+RֱXKj|f-MBHMKz& U^>A)tCw9tS=9$+|dW%伙 Q.>Vr`f;۝ABXU'Y';9L"Učo-?5nw w]>޳J)<$PeyS]m%/=j[kbx%b@!};y -_H)"LAa]TK`mQ(SGPHQG*n"dj@nlF0 UM< 4liEdx53Y~gCl.:H~w솩l7~ט֧T|Mh vC Pm«$K@:%9/$K3IUZfu.EFWdrViPTs(<1!o`p?w )5tH3/3 3W z#QyC"_KTp$Gd8CuKJřx$/N簲^5H`3u -n(92r7&ZLvfzkEj9Z '4K +u_rI%="nH(Gy9- -endstream -endobj -481 0 obj << -/Type /Page -/Contents 482 0 R -/Resources 480 0 R -/MediaBox [0 0 612 792] -/Parent 467 0 R ->> endobj -483 0 obj << -/D [481 0 R /XYZ 133.768 692.105 null] ->> endobj -98 0 obj << -/D [481 0 R /XYZ 133.768 571.564 null] ->> endobj -102 0 obj << -/D [481 0 R /XYZ 133.768 401.749 null] ->> endobj -106 0 obj << -/D [481 0 R /XYZ 133.768 204.039 null] ->> endobj -480 0 obj << -/Font << /F34 397 0 R /F30 376 0 R /F8 349 0 R /F32 383 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -486 0 obj << -/Length 2195 -/Filter /FlateDecode ->> -stream -x]ݿBKeCp&AEz~K Z[wߙᐒmyw_  Xp8pfVET-"[jdէJ1IEla11i!`3DQnP.D8r 1{Y}IRDI ~ߟ>wol~z6T;W2E6"2VFgJEd1Oפ4URdDm#>%fP~Ze .'Aс p\P= 4qDGd7EĠȢϫߢ?dq?^aI_Չ~S2L - ?SR#sVqNYY:1:nY iO0XLg%+)߻u4q L:yU6l CӆC̫mxcunܠk9X'orf1M@$]3- Whm_LaDKuzБa[GؓB K&5 7;6lkK,Y噐?:{9a٘yjTu{M7#K^[q~(Ftn&j޴dAٱ97mFDG>JDB ?x΍:MqnihvnП`q觊U-:!A\,UBu}|7{T6whaFcv;q`8Dz_RaR1hQjom>ڽ29|O =V }#_1v! N~aXp$I%|wSMEfyj|S :5:[ _bK!98s̪2Mɴ*fMRp9_gBkDa/Onsƣ++kmij@žtI8t;HqiS -eŝ>7gbG[B+-k/_7!%i"> Vdi0vF`-kK)MYKw81:Ykz?P0&'o9z + 5Pmq^1^>uOa-za.<$L*IHO}z/mlu>6 ʰQ]Dk &( n\8S\0|>5..]sdž -,yϦE&mur)m7JYW/EN{xdKP -2iaf8NsLEm^ = *LfRa$RUYSas IhBgim4Q%Rsbn@Zte + 'lv\yI'W&Ϲ{LBj#GxfaXL bx )jW$Y? #JFo)iA4{3y=M {sZxo` #7`l6;LM'2x )g:ș0di7 -,&1'Ir| LJSx~]J> endobj -488 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [292.354 572.159 307.077 583.007] -/Subtype /Link -/A << /S /GoTo /D (subsection.8.1) >> ->> endobj -487 0 obj << -/D [485 0 R /XYZ 133.768 692.105 null] ->> endobj -110 0 obj << -/D [485 0 R /XYZ 133.768 619.384 null] ->> endobj -114 0 obj << -/D [485 0 R /XYZ 133.768 523.992 null] ->> endobj -118 0 obj << -/D [485 0 R /XYZ 133.768 333.035 null] ->> endobj -484 0 obj << -/Font << /F34 397 0 R /F30 376 0 R /F8 349 0 R /F32 383 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -491 0 obj << -/Length 2841 -/Filter /FlateDecode ->> -stream -xZo_q ݍч8qm@z@S'TI*̞yrh0`cwgv%d#n].V -۬3§og2h,&>.LVA8djє" WlktTTq/:;5j vu4߼mE2skU|Vh]A1]-tZ05BIxW$s:GЛT"CFTlòR -TPP(Q&cUբR6L)+dpi+46qS/]+Aī^:Vn=NKW:ʶOW+hhR?u)ṸY+Q毻jDpU8!y]߾avZ[I}4XDtǤ8_\LxM T- Y㰡F FJe1{ -E魺%]DhPK@kC*Sx 169DDd +~U|} @LK^lNj8R|I<%\I%@,`J| !#Fh/!࣍TTmx}M4IѨ[0K%dc uWdp8㾕7wˆn/V{eEt_;9 \q#Ɵ -Ë`SQf&c]. EUUk*5xsDp<Smgسڴ6 ?C?|'_Sdy=ɂ6|5IUnב|@ ULZ{&HYCy$E'wy -C}3Fx9{)07^7jSyKSp@ҸH8Ê2J&1,ߤ8@*l:os}hx|` ˒ybU~DA)>Ve^ U+ -endstream -endobj -490 0 obj << -/Type /Page -/Contents 491 0 R -/Resources 489 0 R -/MediaBox [0 0 612 792] -/Parent 493 0 R ->> endobj -492 0 obj << -/D [490 0 R /XYZ 133.768 692.105 null] ->> endobj -122 0 obj << -/D [490 0 R /XYZ 133.768 526.257 null] ->> endobj -126 0 obj << -/D [490 0 R /XYZ 133.768 308.622 null] ->> endobj -130 0 obj << -/D [490 0 R /XYZ 133.768 178.195 null] ->> endobj -489 0 obj << -/Font << /F32 383 0 R /F30 376 0 R /F8 349 0 R /F34 397 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -496 0 obj << -/Length 1636 -/Filter /FlateDecode ->> -stream -xڭWێ6}WyQUR!"Ah Ƀjli+i|}p(;i 4 J$D#'y.Yf2Yc闙,ƂEbf! ^rWm66)EszTf9em|RtAtx#B ߽NjPsJ՞4Z%5GjaDNYи e{v?;cm۴H[nvY:">k#JPZz]M׾n#ZR#CD`x*f?]>ԁt"6qΖJ5rhG刜iMr!=LZD;`% ]@yĞ=KᒻLVxΔL.f -OeiLPF"\rfseʛJ9x b;o83qHK-/qY.-4pvꬿa5@ @ den;ZN+i^zͫHBjNfFh/K2^:C$! ھ)]s?+~u2^/A#2Bϥ - Ut)f }B^m0֖v-M7>cbдk^7 u]=+zCb#S.zȊV>#&R삞b+R;{ZqA5Pn6x f UUe:v%P0iiw |UM1ưw1}31!:d~GR!/x"j+|؋5 Vgz{Ezm; 3[t}NjE -70-%Kmy> |dB庋s~hHي'7XB]c99Xi{'feZvh>vwyqAqMJ#%|[Hşw }ATҒ {@LecOF"Ù|m7Ƥ˪A7kBAhbx%-QU-Ђ Wx*8 ]ԁ/˰Hp9M&|@)UG 5_nqD"v %q/ Z+mFjwTu_QIş! -{W [Eddw\Q 6)Ͱ/Ď>r~ktR -kcUՖU4Ih.zMz -gHVxֻiA> endobj -497 0 obj << -/D [495 0 R /XYZ 133.768 692.105 null] ->> endobj -134 0 obj << -/D [495 0 R /XYZ 133.768 485.94 null] ->> endobj -494 0 obj << -/Font << /F34 397 0 R /F8 349 0 R /F30 376 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -500 0 obj << -/Length 2185 -/Filter /FlateDecode ->> -stream -xY[o6~ϯ$cG\^%r,vwP--&h[3N3sx(Kvy,Xw.$1,&)rFUr -uOذsrcB(!nskpADJA= C}6Joo"\ ڠ^H^س>u,;D2k\:i$aD}~$?DMDn.2P#1bᧃ2ȝrTiߨD,kgv]P%G^6=vu PTrVEeMe{Ȱk/ʆbJ+^vM^"s:LLuvoL-wQ&q +-HD.QwPeA 7P$夂ZPj~L;dAW[ -8uظBXrf_=~0[Ux8#5Щe\§`q(IƎ6$ycc;Y+MK/î[.f7.KƧE|.)R6 9JDziN79QXQ*?e|`U 燃\"Z,YbXl&/pT Zbل74JGsC7 QNW S|hq9 .'S1JL lʍ EaِoƮ;Ąit`bHNn#)1LzӀ#6YzVEoؽcw˃[#B|ӛB4 Iz.sDu{<- #s{XF ;Nn/^i@}dw/Rt,Wee-W/QtF.瀣+M8{'Nyz'Q&Dj$QLi\ O9g<7#NSO`FŘYڛ7S(u.2Z; *'T&f}~ϓokw3͋Ԑjψ`Kc'p@ ~7&ϳw3;/١G v;M'gqE硞摞Í` 6g0ETb5Bk%<2)ieZc3ĸ@G C%sY!=u|> ̄#d8Q/-U|L>8Z ˑ Q+%( -dLQ^nX#Y/büv_C@R -SY;@#Vk^ך|s_:k-᯵#?t %VFlȴ,O/};/h`t7xM˄ׁ"7%]ivk1a颣j5 >#k , r/s]#K,wڙJy]{jM@Y=926vږ o5]+VKc2]ht0`޼96a4[?g ]9Zb: rtwc(c8瑻|LmVFk'swAk4$6D$0cRD -endstream -endobj -499 0 obj << -/Type /Page -/Contents 500 0 R -/Resources 498 0 R -/MediaBox [0 0 612 792] -/Parent 493 0 R ->> endobj -501 0 obj << -/D [499 0 R /XYZ 133.768 692.105 null] ->> endobj -138 0 obj << -/D [499 0 R /XYZ 133.768 512.317 null] ->> endobj -142 0 obj << -/D [499 0 R /XYZ 133.768 208.688 null] ->> endobj -498 0 obj << -/Font << /F8 349 0 R /F34 397 0 R /F32 383 0 R /F30 376 0 R /F11 451 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -504 0 obj << -/Length 2895 -/Filter /FlateDecode ->> -stream -xڭZmo_qwrS6 MpuGIyG _ē-;a9ݙyvv|oYn"Lov3"X8CKf3ae1V+'- $ΔZ.P?t;r(|X;P"ϏB%_}KO=Qyu0K,D,VvsRI!P (S*95JE46kGRJsXˌ -zFZ38E)=4g (]M(L゙K)3ޛ;99:u&^ܪ0k%H2Wz-,F?Ub" uR<#:ZALS25њW.(>fѺ֏Bb1e iP/8f!{fZ*9RhA{2([:OnsA iȒ5#p(4ŽK·.W; -Ř<1C4B^@7cl-7C3,HHցY dIF I "FcԾzսe9b^">9a;F[l<3 )myAp Bs/@Jnۯ2):'b"5#]2>g 4+ELR&aw&/- S h}cV]fXV&TȒR ѣr%/_Ut\)8/sh2~Kp -f:)eޑ6 -Nߩӹn4[)Wj*ae(Y6IOžQ@O蹮qOʻx -w`mNaC. `;PF_ qbo $cS^6Z@ŎI;6\]zmIeנ}M'nʡ ';bܛu -G1˚Dj5|,n]@ xd0uOLwɻF}}ΐ<cWf'|~T՞2)|cC}%\MdTe7SZ)))=xBY-^g5xO':%{ʭ].:һޯ -=!k܂8])p~lHo/k͘mEywec_ -QB3ګw!d.ZQ>˾:|2>F!vr.ᣡ u<^芆p'u|ˡv{S=w Ql x]D8bWfsT( -9?"fJJ ߨŕq1ٵ1N1<Gש'}hȾyԖ|Ѡ}՟h5VWأƖm;:) '/PvF?*6ѓƛbg%J d2_}S,5m`(D<~\BVs@ G#ٔZ_$ !Q-&g"\ -[)8:pK.݀!nAzDg2F -޺X_D}|=8?lM>;8]DYk4Ь Q _H$0-[P Ց!@4,cgD(A9-\'\WzkL}AawwO볾Ccx\:XMX G8vuk9' ^ƒk?YgbqΣuf΄Y9*tDP,:FK$8wncn$q{74(v\*0I Ϧt{2*BXC-]MdNeXMQsJa>~Yg(: ZQ?! қW;՝hV:8Tz$~s{.>/ĉHތQFtY-s=AZx*`Ъ -endstream -endobj -503 0 obj << -/Type /Page -/Contents 504 0 R -/Resources 502 0 R -/MediaBox [0 0 612 792] -/Parent 493 0 R ->> endobj -505 0 obj << -/D [503 0 R /XYZ 133.768 692.105 null] ->> endobj -146 0 obj << -/D [503 0 R /XYZ 133.768 434.854 null] ->> endobj -150 0 obj << -/D [503 0 R /XYZ 133.768 374.684 null] ->> endobj -502 0 obj << -/Font << /F34 397 0 R /F8 349 0 R /F32 383 0 R /F30 376 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -508 0 obj << -/Length 3032 -/Filter /FlateDecode ->> -stream -xZKs ϯSˮMĕMyKr`Fpd4Mr-Fhge QdAH8V"w+$F,؈tL2#*R$q)m7[}6AnsyU>QWROEB+lfF(M]5o %1(!'HXoN=6 vܬemy]n |^2hU(ϑ,-p3?tmfO? мH}RF!na l|-O|8pF HGNDM99.npyUϨ܈"pK $B3Y21"W'=pXh9DZJpv뿛+NB\*M$gF by4hWnQhv& "Ե~lǃmSO3Zr 4;[Ε}ȃPy q9 Qʞ& cmq!C1VDu|+ll2} z*mG3h}.6F$x"ıP\C߲ K<̛՟ў֣>G0Pyˆ+{r= M;޹N[N%E-蘢[ч§]ONE[#ǿZiR,KƑ>E.{tXf6raT#Zm(z g7++$ˉZh1 L:3aɗ܉pO-_x_4H4#s(ԄlK.}`ᗲKYBLdFsl&%MSH? } e2/G#8] s}Q\jǺ267A!aq/r;~[ӯjPAݮ?cBk8P #yd<mé^z}ōCPy`Z4eo=~lI{ƿe4T;SE>P ԝ7{,CRF>#Kɑl{_dBV&M#jSa -endstream -endobj -507 0 obj << -/Type /Page -/Contents 508 0 R -/Resources 506 0 R -/MediaBox [0 0 612 792] -/Parent 493 0 R ->> endobj -509 0 obj << -/D [507 0 R /XYZ 133.768 692.105 null] ->> endobj -154 0 obj << -/D [507 0 R /XYZ 133.768 591.268 null] ->> endobj -158 0 obj << -/D [507 0 R /XYZ 133.768 398.075 null] ->> endobj -506 0 obj << -/Font << /F34 397 0 R /F32 383 0 R /F31 380 0 R /F8 349 0 R /F30 376 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -512 0 obj << -/Length 2915 -/Filter /FlateDecode ->> -stream -x[YoH~e% ;O`w,!#˶fu8OVnu$ 2 Y*?6bBR0F^"$0yXi bʜʸ!%Z 7닿Cȑ%VmR(\߼/f}3USBq5~>_ ?G`Xu]m!/,_:*iJ f%d70aՒ0!!ECIs`NKwH7i*־)IBGQ2X3 FOF L) -TM2m|ȣDhЬU@@k&E%OQ)"e M'NLVJ(g.n!AMŨe-uSHX2:Q<,G4lE6O#!kʟheKJz#q' xPPЌJ1.A7JuȈ&@Ev@734nfHٖ7Қ-!*U+9! -d/mĞ/F&@EǤњho%z>2_f̑2Ldב=Ȓ>hYwyW /!wA -߻GGoʬ,lRb=f4)fx1Z>,ħ9P^p "_xQA#T+/72?ng7dRHkW0pZ$RrM;ܸuJ29Q7OUxp_njXz|4_So7~Lj^;֫m7#L-.\9 -WTPβEw&oz7cA'AII>HY8QPh%VAM!{X. -2th$JD9Əʋ]ᚹ7>Zlj=3O::jĠet\!wɘt"~k<|W}ǑL{!9:WUbmEZ8.޹:bNP7ZxLG VerLx4W- -,ΖQ0l`k* 8;NGtapNDpv|>`N#b48MXYDtJ`iwΗxFrZwl{Jn=,AƜ#m ݝJ`ePXudR<}s~>K~ tgx];J{wB "3DbtJCdncAc8;VnP^EbN.0CN ^J Ox  سb+KиϷ \$_H/m.(1Dk$\YT[eUm`De弃ͧ =$3`9L b.!Q\vq9\cT)0.')ύ˒l]f8v!2hsCaZsN~' H (%? -m;RHI-Ԇg-NPIY|ʆ }1rKD~|%@wgxijֲxC)Q4BCtNR϶.Bxf`BQxj8>pVc }bDjSy7s d_ؙ͞0Z=Zzbx@w+U bH)յW|WS><6-s^vFycl[MIu2Yla/z .$mzאv]{M]sh{&vEMn{kmWH0? tum_%?E*c"y޾NOK$F_>ޏ;1; β{0G۽v>(n}8^?z -p^~۷Bwqb3bu]YIn ە'=f;S}j@CZO}ե)^WjJ n<e#Jr]H@Qc -_7:{8MKCU,N.FޞR 5Z:)> endobj -513 0 obj << -/D [511 0 R /XYZ 133.768 692.105 null] ->> endobj -510 0 obj << -/Font << /F34 397 0 R /F32 383 0 R /F8 349 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -516 0 obj << -/Length 3054 -/Filter /FlateDecode ->> -stream -xZY~_!%2b 0ĆlvgJ$f)qLRsMR$ -0Y, X}TWWW}]Gs(b$0E`FE0Z/%QHLNA4H+f`4ڷxtI2Z_$H~qſ:n<8OLx[DmXXXg&Gh?ߔ%~b$L臱&GNיߔ\'F ?_x}%#KvN-#72;rߠ,_ԃ4"AJ}#FaM󒠩q` :h3mulfOz ySo -Tt9-\?f [DrAt0 6PNi_1hiYQ3MO2􅑖r"DtZeǡa|Pp-WxȖĎC"w$j3pfJZ*m&Dez53PN|^@ LI]B5@0gn $ uڗ }ߪ:q,{) 0ڻ^,3r BY n zFe+&VH.$NZd=f/`ï{(_WRψ7CDs? ReW82;)S[b_,^("Y+f}?')}qI{Ti+h2#SHI1B}֤@Vfbl V'$D?R^SaP_HnXˌ)p$\L{qդƫ.lyՎ -_hܸq;Ro[Jה;;I3 P@hj_@;ѐܿ-tM%pV3:z[6Hv K]TR]=QQiMSfRVMΙ) -ڂ~i[*E?Tp%~!t,+^I.*[x SRq{(h꼦"zT-]5ص'Wo6gٜ"2šD"0PWlehc`uw>Eȧ#+Dլ,!kKcDL$lZQѥۛ]njObLxi&*EG s0[z2- -mɽ Zm pmA{ 7 -dḿgQ̊ [aWnKS`Ǖwܟ]yV4y?s|Ov|N<=kmkb(Ƃ;;M!64ä䢤1 :'zk6H7mw;3-Hl̓Pz2*hஇbH #6(̽5yC@H{ЬJʒ }}[eֹ{qƈ%]0gNS@{ wI]B?^(o<ݶRxeظ_QxNeqZI]Ȓ=,zT2׮5 .u:7?״8> endobj -518 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 0] -/Rect [308.948 395.7 366.15 406.548] -/Subtype /Link -/A << /S /GoTo /D (cite.metaobj) >> ->> endobj -517 0 obj << -/D [515 0 R /XYZ 133.768 692.105 null] ->> endobj -162 0 obj << -/D [515 0 R /XYZ 133.768 479.234 null] ->> endobj -166 0 obj << -/D [515 0 R /XYZ 133.768 203.428 null] ->> endobj -514 0 obj << -/Font << /F34 397 0 R /F8 349 0 R /F30 376 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -523 0 obj << -/Length 1052 -/Filter /FlateDecode ->> -stream -xڥVێF}+H+ae 4(/VHuv !Tu5XFSS6P%:u&౟<O8"pw0TQ,M֐gP!S&q¤~zޫX}X -rm%u#30qpc~w9;X6_ ~(5~]\åbh3A\<[NpkٱbذAI71P7g,yr㩵d7 s}ns c6J0Gq\ձl y獋2䦙F {?op'#?N[€+q4錓-Ch[$K5<\ARi%kW -V)t -րY:2]T"a1Z,er6!~4_5e(S8⩠odz>~vO/_d!}xVDowq0V@IjoHk hBG5E B28Ǻ~{1:vv+pOOg~{ū5&A@ d)oRWxt(̓ -mLRKk;x[ے"8o$,)ggy+ZhvtgWZq-j *wPPe) cb#ar7:wtaſZˮih8{mWw-pE"haN(](uLՙ-z`[EV% u(ɤX7D&#&X Co*ԵR|֏HO_\eJݩ}dіdd$Nf~mS[PCQ\Ҳ}iz,9[c}s!LUWVfLo ̳[í) -6!TQ(n -endstream -endobj -522 0 obj << -/Type /Page -/Contents 523 0 R -/Resources 521 0 R -/MediaBox [0 0 612 792] -/Parent 519 0 R ->> endobj -524 0 obj << -/D [522 0 R /XYZ 133.768 692.105 null] ->> endobj -521 0 obj << -/Font << /F34 397 0 R /F8 349 0 R /F45 527 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -530 0 obj << -/Length 2553 -/Filter /FlateDecode ->> -stream -xڽZ[o~PkʹL({Cv]>Pe1H\f(Ҥ)&̹oFɅZ$.]L x/na+Yɕ6Eɐe*U*Y9i77WZE&27@fKCNM!_cz8UiJJ1x7u}*m㱨:TGv(vu/&:UcY*eOG,e4<ƸZk@QIu{1.LvM]:cjcZCޓH,ʓÀ3_òJpǩi L !_>׏[yp|R(o)Q]xs0v{ߣ?C1ދq^:N_ܽmLec5:eDX}V,?^Wy0߻^/C?YToA -#Jʠw33?s3>o='/ArG%/u5ǦRC[}iz,i_Wεw ) %R(0&˕N\PS&֓,:~25Q24o8FQKmxt,MOH2‰sp4m rOùo ѥ4ur&Yh{m(tۨl ޜ | H]y166*x[0[ي5z_jm &i6.7ˣ_8l,1 rܒV^𡆿BĮ1Z\+AF$b6%OsǾA5`[Hrd6(bv/h76wH1fL0Gٱ7ΨSY(*u_f:2Hro[>D8 o v߫C+ݗі^UH)VJ$!c$WelO(i/0.4_OFL6F(3΀cg+?).6҉ƆM54Á' 8F4]YL2: ccc@_DZRy0_D5;΃Ӧ݇ :H)ĝAD~f[4`I7"3hs(^#E4MXXำɋ0v.j4Tþ>N4QQ6t:B-X ICrU'0U rye,u#Ek&Ց+`l*d9 Ck:*5$et2ty|"3C˪j;p4Nζd#J$%5Nt{4sێ:O - a&VŽBR~WP@@6v7ɕvAqsAmn s-3Bc_MQdRMR`H]{/zu%|p㭝ԣԇlcJ -QoݾFʊtjX'vY&o/z'}DBsť*L6asiKfx2͡XhuͶ&cNhM=˳9ur!D֧.DO 5|w# whZ{+2",o=>))06)trS3̽u -ᷞϝXZI0 975n{)r~l9c -α. ->&S|5#bzpBZ5> OGJv6JvPI;G}\`X!TA -s\zJsΠ f٠ʰE -j&ⷜe;,fߣh{9Fji}S1Gb^I7I"i&:LnchFUP]<ފ%MM/& -endstream -endobj -529 0 obj << -/Type /Page -/Contents 530 0 R -/Resources 528 0 R -/MediaBox [0 0 612 792] -/Parent 519 0 R ->> endobj -531 0 obj << -/D [529 0 R /XYZ 133.768 692.105 null] ->> endobj -170 0 obj << -/D [529 0 R /XYZ 133.768 452.012 null] ->> endobj -528 0 obj << -/Font << /F34 397 0 R /F8 349 0 R /F30 376 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -534 0 obj << -/Length 2596 -/Filter /FlateDecode ->> -stream -xڍ]6}PfER)%Esɡɵ=-6YJrv]܏ %ym'Vp rŸ\HEd$WB߄-,F:مU"Jjë_g\^mCT(/߃Y48.W:A_-W28.eybiE 3ٺ12.R9hTKURz䌾%ۦ\Rvpޭme],OR{s{"wI'Q:!ޏO0%zF㨵絏RGO ^=KW1P]0IԮFpm%X9ӣ!;oqjqŬ wqsH:bfq%qarD3OƠ|/3V@|Mþ{-Fq߈'jS*;z4}HPcDE SjGkҏD-\[; `3$b\uSՄ%$bLJuWhR*T.,C%1"Ʌ29IȽJ}.y"l_^? /n~_.Jt#;F@z9k -z6WaFd0 -8?J FG侭'.8@>Q -|Wݛ͐KG_ < -LRH |d doQB_UѰ3u Ntrl C&À:/2 -)14r#^]E~B7]9K@[zg3JdiDzVS{p{m)5q\_aK ".llboU[\%iK531#,w]Ց9R]\Vҝ(]'}MݽJT/DPK -QE< Ԑ$ʋ 0OCi ]cғm,o=rf3|7OwfivRQ)4gvLr@ic"a(.u0ia儜Pzji =eݗj'-n~̍Cu{.# ?NH+y^z"ǜl\2gbq??nḃʙYmƷ><ԯ#+؅P=mb7ܹK~47͕J'. )9FW75ס-K?yx[LdiPIxݝqL=a8§a|M7T5=ӏ!XB'[yՄsH^uȸʞ;?.: -endstream -endobj -533 0 obj << -/Type /Page -/Contents 534 0 R -/Resources 532 0 R -/MediaBox [0 0 612 792] -/Parent 519 0 R ->> endobj -535 0 obj << -/D [533 0 R /XYZ 133.768 692.105 null] ->> endobj -174 0 obj << -/D [533 0 R /XYZ 133.768 223.266 null] ->> endobj -532 0 obj << -/Font << /F8 349 0 R /F34 397 0 R /F31 380 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -538 0 obj << -/Length 1806 -/Filter /FlateDecode ->> -stream -xXKF | yՠM@I!ARZrv7#[` !!94U eH43-B+l|< Q5936`H.ɀTT$Q"qA&W'<]WhUۻWm|/#9UaIۘᨙR"Փr*oOŋ|u1E: -r٬3$O\=KQM< NtFd#rBI>);:c3}cMUySV}Nqǿ) ![gl܏(7?v]tylX R5#2ijsׂu?bg7ՋmǛ`n2l~5阹KČM(œGax8JN{8&cgk8l ?8MdQ&cLr :gɥJj.jWl; hQ80Q_;ŀPxۜ;NTPl&,Hvw~ؐqFn1xL@ll-M"dN'og1z n#87Y블F9; -`)%eIi]qͷqx#:dxSJOo1!d>T7%JY>q6Z WhyCBb|жm8c8Hp_*Kg⺟ اTVÐ]V>דTk9#4bXDMYY{rURìDvycuѹG/K]2%2QK?߼Mm C[ 1R\d --7X, ,x%牅T`95/n2GWj.PXpmhD+GGK4?|1 tbRsNj˺cuX4.ͣKsw؞ߥ3"KLQ<֞Qh{˃LK23Џ,4؊ɤTXC>MGi47ߡ"Ӹ0 aϷ$E&mϒ;J۳1ܲehD~g(;WulWYZ'wxgI𡿽nF -͙֙{HL8#)QS:P*&Yp : -endstream -endobj -537 0 obj << -/Type /Page -/Contents 538 0 R -/Resources 536 0 R -/MediaBox [0 0 612 792] -/Parent 519 0 R ->> endobj -539 0 obj << -/D [537 0 R /XYZ 133.768 692.105 null] ->> endobj -178 0 obj << -/D [537 0 R /XYZ 133.768 499.833 null] ->> endobj -536 0 obj << -/Font << /F34 397 0 R /F8 349 0 R /F31 380 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -542 0 obj << -/Length 346 -/Filter /FlateDecode ->> -stream -xmIO0>v=x"Q8!m- {YhEy<ʻ\4 -e!lMcs@Ze}dp_d9 *Zˊ9ze>8PHnAR ]MZH,to+#lXTak&!( >uBx㧐&m!jPf{[|aXk)51H ?/M6c^:T!u5Y %`~S=Ւjhn|oxUu0V'6\ycG[^YGw7zI"aD@oC!*t7ߋ,_E6j\%E5=_BG -endstream -endobj -541 0 obj << -/Type /Page -/Contents 542 0 R -/Resources 540 0 R -/MediaBox [0 0 612 792] -/Parent 519 0 R ->> endobj -543 0 obj << -/D [541 0 R /XYZ 133.768 692.105 null] ->> endobj -182 0 obj << -/D [541 0 R /XYZ 133.768 667.198 null] ->> endobj -540 0 obj << -/Font << /F30 376 0 R /F8 349 0 R /F34 397 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -546 0 obj << -/Length 2118 -/Filter /FlateDecode ->> -stream -xڭY[D~_!!9Sa@0}byp'c!Re;E#թss2r?9Z8JfQ l g[z{'DHMl.IƁH1*U"b," o6T=la[b\dC~v>`(_H)R{^uCݰoС?! #%h)1.4xE~Qc{Ț/s𙷏mUP: -i %9<\=a;&{1bNJp%97xwrxZFJ#%߅BH /sʄy|3p"2dTICƞ8zuӹ/P`SΦGV7jp\C.@GEE5z2~H}CK8vŜ 4=D‰ -XP9$I/0pJ*CQ0x۰ pﲕ[ >x26`H"Tn׏`W[~'*OZbbH!/&.s9LeqmMҼe蠧=T_L7XP4,^ .o( h|E*4hgG^:SJwS܅ܖ6 ء6k}j}phFPHq;+ސ(ՖOCt]'&I&a!s-PD%5U&I' j -endstream -endobj -545 0 obj << -/Type /Page -/Contents 546 0 R -/Resources 544 0 R -/MediaBox [0 0 612 792] -/Parent 548 0 R ->> endobj -547 0 obj << -/D [545 0 R /XYZ 133.768 692.105 null] ->> endobj -186 0 obj << -/D [545 0 R /XYZ 133.768 485.94 null] ->> endobj -544 0 obj << -/Font << /F34 397 0 R /F8 349 0 R /F30 376 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -551 0 obj << -/Length 2904 -/Filter /FlateDecode ->> -stream -xڝZ[s6~e%.$Cmwtm-QtIʎ @e;D$ppsph\IEU+!d9^ū=LJ:mDd0YZ}{EݴI oQ{{Nrsp#foU:*gߵ'$+xoJ^#n`lHݍ{Q6*-Cv[r8St描?VR/Ee\52&naJ o-3?f3cuSmq)X6`ؖT"kt{fv\V%vn! fW6q"ReVB9+mEjr$\s1ד5"%'hJpz=LhKR&U3B'̑C[ODUg"0CZNg;~;⿠~[+>\ğT%\*ou&KQQJ4MUNvLb UuCdOH]<&fg>U -P?4(i -̵`LW`(`!#6hU -? AcCET F)\=1NTYMll,T낷PxZ +bd|C+"ӜWbA!42M3 `"u<d>`p2sZQӂ_ސBe1~2}JLO%-OȔ=#*z\0DwV҂?Q -.=G=2*УG 4%HD{1xLAL$n6G?8Ȓ|VN=!>[d1hCI)Դw8Zjm1E| ~z;BD"USHJXϪ/#hԀGN86( Ws*pۜ 6OzτUϳ-y7<vp3%wŦjg|T2(w! M! -f\+ܱlgPa\tzma s]r뙾HaH9VYQ^n.ȬH2}.wÙ*2c-}wpvVkjZCJ͍$B?cg%e2;@I`_ˆ%[ANс?4t3RagxG:O_VZf2]ёt69mPGyA1<|B_6 1Fϵ -lefxyG׹nFsX6K1vCfβ Ɉ޳.~Nw*mJ׮t/4~-ul_֣ ll;Z@ E殻޸cەpɲ~Szꁥd> endobj -552 0 obj << -/D [550 0 R /XYZ 133.768 692.105 null] ->> endobj -190 0 obj << -/D [550 0 R /XYZ 133.768 629.03 null] ->> endobj -194 0 obj << -/D [550 0 R /XYZ 133.768 308.429 null] ->> endobj -549 0 obj << -/Font << /F8 349 0 R /F30 376 0 R /F34 397 0 R /F39 430 0 R /F14 352 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -555 0 obj << -/Length 1949 -/Filter /FlateDecode ->> -stream -x٪F_a2\HPn[jCٖҍ$ǽ߳˾3gξ\Oϵ*Qb|8S8mqwpNaǫ(2 -Wzӯ:'~z?A twJog;j:~)C0؏Vbim 5lcmOw8mbiVw5` {R{%?_2ۥa^$$p pԌw /Ukb{G Q|"V -nn:jHu+jxi8   {H6 v){^rJ61T1` !FysG:vΐ]/ɠ x{tnQs^>0ƖUIl}bÊȟ_O@@  SaIj:TVg>: -Ջ}U~⌓H\o8:^[(@;0) T@]Na.Ҳج ҌEa \>#CtEvV$Rzí/3 @+!&z(Ɍv?i.whAeS#/M,d[@bQDOc-B<آKQzT:!U=21Zp!`qr̕';$X\84¿=X! OLQiRyyK=L#y]!=B2)J( S՝HI`eq3,:.\^h^,*X0zCpP&;K -l?_yX(4pW#؃Ev~yf쵺j~ȽYmiy@|U]x' @O? `=2 .p>h{$',!A7|ǁ/M@*uyl&N.o3nV]*Zpx1WXR*r_̵JH2?ĽG`ᨅٴ0<>↑"kld |5mۣð#ϥx@ݾvd ]ˆri][Wrq9Wv-&t6΃+Œ?6H(S{d̍~GX^:"nip`P1X?J^A$rN9><# ﳛGAuvE]%L"F?׃:u% iESE%/Q k<0Y!g޶_rs.V( - -c%`urV -endstream -endobj -554 0 obj << -/Type /Page -/Contents 555 0 R -/Resources 553 0 R -/MediaBox [0 0 612 792] -/Parent 548 0 R ->> endobj -556 0 obj << -/D [554 0 R /XYZ 133.768 692.105 null] ->> endobj -553 0 obj << -/Font << /F14 352 0 R /F8 349 0 R /F34 397 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -559 0 obj << -/Length 2748 -/Filter /FlateDecode ->> -stream -xڭ˒6>_%*!=yJ*&S$f(B&)+/(-Wy@*j4_E(Yh>(AP~\, MV3 -}z}*"ի$X'/)>z\\< l þt<; 5{1΂=ij~s#J0;xo]w`>,H_K -o<t(l+^<.Tp䆻$ jL-T-D"D,KDՑUy0aD޵XAZ[ZŐF>:dţ(w + T 6\.Sͭ7= PȾw{&YHGQ`[~V6iv"HۛG @xM -mH[Ay^쮖*ΊI~d@xoG5 -ґZk'a:/o6ŤdPB=! oQ[+rU5j SJSm"R>nS6~zT'5X=yAJm%vʗ'z1 TJ6olh,%R-[u#W&3œNE5 -|Cn3 *-8s38gqeG]$`Br81 DIч [1~hDPTHt@'^xq7jseYY鹤bkn(nBU}(Hy2M9snDbIeyBMSA#TtÝec`wbZk v$6q u\H-⌈F;z^oXY &gKOJ6 W'VQM b _nhtN ƪ: -3R#0/XinQۼeăWqV[̆F{ߓ<# :=>#r -5/|ө(QB7eTtA֙R"F0 -)@~?^&9%j=?2x5XnXZ9h cln :~Biُ&~|-kcÏd>pђG6mIl9;=gx!S}hp|uݱ8N!9Io?Ujj.r w4ה>MP&ҩqCiv{xsml+)n4,k:2/|&e, H/RF̕xSr1<sYh.ox%d2vuٷ ry={c<%Nh|:Mރ'2> endobj -560 0 obj << -/D [558 0 R /XYZ 133.768 692.105 null] ->> endobj -198 0 obj << -/D [558 0 R /XYZ 133.768 266.762 null] ->> endobj -557 0 obj << -/Font << /F8 349 0 R /F34 397 0 R /F30 376 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -563 0 obj << -/Length 2391 -/Filter /FlateDecode ->> -stream -xڭےӸ=_^:U̜]RC<>ؓ2N0ݒ|ԭV߻_ Xj n݂GkEi@8;L4<=IM3D~sؗܪm$Lxj#k7W-~zY$P:gZ͟<*)>W9l#!XnL]\>KFԈlVN̈́nqLd|X&"/"Lī-aD$[<Ӹ$](/E $ʂP9pd@{$i;]9֑eyI0FnY?P#+}BZ2UP(z_КeB5iXjkM "XkwdBe_QrNT1ЂOPx"zӧs-[f3m= Wpag+Ԙ>xz&R)7HG<A/_Ghf!|Z4p@\ǰ>Gc*+Zi$#&|]?/y fhE۵OD 5n-}vefsj-y;" D+Dh'^U*JѸj& b3?f$,K (hrahmFp8fY&!pV{·v ;v.-S$-vq~,WWz|n'5NC -G^bb mu_dcƯQ|H>¾-:P];jYeñݣK.`\5 ZqJjpI(=0} HXXl6pwku 7)Mpu";9#&ъgnw{xw=܇A_;oҫmq ^xO n-ڣKQqa2Kp,\nz7!;bXe0Ҁ:^Mks.lDtlHrAgOp BĂ\x/UQ1P'^o:"-*ꔌdʶxxQu]y09b\1U 3z.Əݮ)Ñ4bFbNrAw&'L^5%p'E{SCMiZʿ 4og? -@*}eEjqӞ"^U[8(|$z6Ά҆,{\φ[AuBl0찖կ5u+A!WETl?ֻ21(XTfjF*|;u*٘)~bf|6fN2T\^պQ* D\KQY&ϐ8t"{M4듈w5U/E-9 }%||q@1icVC rvxC#m7 9n/SV!Q}oml>;^vo+= ,zg'[Ə#p (wnXྔrL%"jy|K t5nvmW5W/n.!O -T\辠}*?)B)3Qf* I4rsւ32-Bd4\auӐ^X.9˔';?c<*bCG+:_外̚BRgl(t2ÍB{D^P%q@́>'̵X ;zΚR f3;ߨ =afætP2e:&h(Z@>;ҵ8Db//VWy#Bse:H E;\ngwk -mRS3motRX߻Q}ğ`rկIc6?8/52tBE׬,gʚ/ 8UΙ Ӕ=2){쨿 -endstream -endobj -562 0 obj << -/Type /Page -/Contents 563 0 R -/Resources 561 0 R -/MediaBox [0 0 612 792] -/Parent 548 0 R -/Annots [ 566 0 R ] ->> endobj -566 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [218.672 115.766 225.646 127.721] -/Subtype /Link -/A << /S /GoTo /D (figure.2) >> ->> endobj -564 0 obj << -/D [562 0 R /XYZ 133.768 692.105 null] ->> endobj -565 0 obj << -/D [562 0 R /XYZ 228.289 619.834 null] ->> endobj -561 0 obj << -/Font << /F11 451 0 R /F8 349 0 R /F14 352 0 R /F44 460 0 R /F34 397 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -569 0 obj << -/Length 1459 -/Filter /FlateDecode ->> -stream -xXmo6_a W(k+a٧HeqR&Iww" H"xw!'B)G2J%,7_na"ud0qt.Ñ 11 -+0 -:y -#nlUb|G\ply - )lxkL ڀ”uA_ s#_g*Mw͙H~X --~]2dQ6&Ω8b1&ѻYm]@2eipF(dJHJRc YJeֶٻLiVqr [/Bg7|qazB` -ʍG XB5tjhPwC=ZЉwY)(Ĉ!a$I- )\u4h3CBFlkϰ' =FϫDA%[!"WX0mL/3c;mD0<ֶT̝"$H3ALP -_.*bXH2$2Y@Lt=fic8W_`J S8'YaqY^Nc,%)ly2 Ή<=4RRwFE@Q]]n0Dm?9L P~բxT)b}M7T5'ɨ zwΊ2ڝy Pm.C.$ݽ`~o x?2Nxkw%=@i{ՊB >&)"A$xNl#csz07ף̩4b\&S̩QK.NNee-)Vg당ҰHy&ŞRg #=v?Tu9kA[ׇ6hc -+J<)Yp]N67I!Gsvp<,h9z*zTORa#A -endstream -endobj -568 0 obj << -/Type /Page -/Contents 569 0 R -/Resources 567 0 R -/MediaBox [0 0 612 792] -/Parent 548 0 R ->> endobj -570 0 obj << -/D [568 0 R /XYZ 133.768 692.105 null] ->> endobj -202 0 obj << -/D [568 0 R /XYZ 133.768 667.198 null] ->> endobj -567 0 obj << -/Font << /F30 376 0 R /F47 573 0 R /F8 349 0 R /F34 397 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -576 0 obj << -/Length 2521 -/Filter /FlateDecode ->> -stream -xڵY[s6~ׯ䉚PK:;;iI;}H@KĆ]=,ٓt |HF Zdi2|3I 8E`;383Y&LVD@W&n26Jf!z:RzMeܷgSß/ev;vͷL{ }&i"msx駛߽ʣBFhȕ9u&5Ν,;S -.{ -%P@[W(YS7w̻^8q[ -&6;nHM#hHn7$(, R@& ]v6Ǚ%Ӑd'C͈UnE$]'hDJ:(+̝qvy/BLg-WycOVu0lH^Tg6=)4L&DjAUL"TS{;Y^EMkVY8 oK"+?XpNL>+^]nDi#Lo嬹` FK cږ>] ipmpd^B"zTfpr@wTF )C1k:pht@O|;{!0`ܓS@ž͇1gS)gͅ0C8XIU_K!U|ݔiQc@o4UEG["Ӆ%!~ SPH>78ui]C皭]?Ѫrh{odt뼰!4?Vl5#w9Sr:+AN=Sg:/ /R8Hq>"?E #2 ՗..8z9r!W_uKu8T@yv&dTZ;\.Sm,884!Ot|)Ȃ -ޑӐw]Ii}CAtƉ|G)] ,{f-aPQ}tP5Հ)xؗQ"bfrDo05R|0@ {IȒVbnAp6b UC4(5˓s$BCo!`,(W\HaR@zx>؂&~OUFcL|?(M{ 2!ym}mspoH)h[M,iDi oi7^דz°09 H @~ -z}±A7Ԋ\) 9'O5lNY *M&(w-yﱨYjbjB7OX[:;yRq?.?S_ -endstream -endobj -575 0 obj << -/Type /Page -/Contents 576 0 R -/Resources 574 0 R -/MediaBox [0 0 612 792] -/Parent 578 0 R ->> endobj -577 0 obj << -/D [575 0 R /XYZ 133.768 692.105 null] ->> endobj -206 0 obj << -/D [575 0 R /XYZ 133.768 667.198 null] ->> endobj -210 0 obj << -/D [575 0 R /XYZ 133.768 501.922 null] ->> endobj -214 0 obj << -/D [575 0 R /XYZ 133.768 280.302 null] ->> endobj -574 0 obj << -/Font << /F30 376 0 R /F8 349 0 R /F34 397 0 R /F32 383 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -581 0 obj << -/Length 2899 -/Filter /FlateDecode ->> -stream -xڵksܶ~ōg:ɡN?Xu&X~p򁺣$=K -Ymy@;!vhc Ё![z3ih(5$KR: UXMő ,A~yǽTlH@ցʠ3*N;² .j -.$QW6nmn/R*$Y$4.bx߰ThuoZgQTEˁb8:Zd}#H*F3<ഃ AESH-P*^+zp+=l w-SweDbL x-G.u2>V|C^@DN샎ӈ.h'*Ȟݒ K;oO`ۀBQfd{u\@;"q<CjMrewr_1i~VZXsEfRͩr P ͩ_Ӊg̖$IcR= pd9I,RwCa-;v<>u&"[CIg?h~.sMR0" LoZ^ dƍ(iݼXk8"AUtE߻ -kzo -F .1G2._ޖ { m֝'^tY3`u]lz Iܹ3q}_Ê H+=]p~1Ҷ9߃@qU⬷c31ۂbh~ "q {N]y*vq/:dg`wljV?1-?]J|͖;ҨI5r r(E턼_6W3acj"; O֝K3|6{Sgh&{=MSCٗ}?Ü5iWQC/G|sy%o6?/>11q?ypDF>3MѸێDan056/Eέ0:!a?gKU Ej=z*qJCcbJB2C9!os{UJM =L"漉VH`+)<snRd&ԚWwsKwcO6EߛԐ<T'B  J$8+K{s!<|Sj\­yc%yNjW&/l_:3󬌡xT}Ar=6]V> endobj -582 0 obj << -/D [580 0 R /XYZ 133.768 692.105 null] ->> endobj -218 0 obj << -/D [580 0 R /XYZ 133.768 353.88 null] ->> endobj -579 0 obj << -/Font << /F34 397 0 R /F32 383 0 R /F8 349 0 R /F30 376 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -585 0 obj << -/Length 3164 -/Filter /FlateDecode ->> -stream -xڵZms6_ɗ3'M&M;tn(J+Q)NriD,lB?6aBD;NUNX"$0 -i LbM2`ep@d:t8cDt:r*AQ+.*%_&,_כlE_H0r^kQ]U\/b^ 4پ76rS8J)]axo}Ny 7ՏgvKt[EaxyyY#Y=b[47h_'Q2$ cɵ@}(H9/fVԣixAj+HS|dEhQuD> }Tb^($bL\qO! è  EqYv"2>0E]܄"eRrbLm' -A24!524$#į\>H%`!/µ-^SAz+N Xv"3aҡV>@|d($Q@EA DRvH]LFGQȢ 1/ku o9yi_FAFC#@-n tp - %a4(l@S -nys `IYc`dqF1Hk iڗaPF1pghu(w'DRvDݽ淗b݄pdNg81 yi_FAFC#86h8c1pP.a0V(/w-k#N1l1>AڅfNj myRrPb^}Z $Bõo NK8fa's5羟C V҆XA*;Q!Xubn&6-U-Q@W֑id]4<; ׬#[&N=jYP\* L~ ޞk1Ǐ}?)m]/Lx'Z_JX ?5YZN#JXT)6[EGmv2x37 |B샯c1CD>[aK\v<A 2(#]G'}t̮/l%U#ev6eM3af#[Ln4[-W=;c?0i*[NnU0r8U4i,J}>2Ű(>0F;̀jlp6 }8u:~ =ĈtIϋ2𓾊tAl1ه+]U9emg^݊>}] $`DwUл7o}yy>x"mu]}pJouhyNl+!?Ơ&J** JGKbӋ7BvY)s",w7K ]m~EIz}cH:nA/Z$fвx3\ɁpkГJDSJWMjHF~'[<?(/{&XI $Pܐvq}d&",UxI&o o6Mx-[3wSnw> endobj -586 0 obj << -/D [584 0 R /XYZ 133.768 692.105 null] ->> endobj -222 0 obj << -/D [584 0 R /XYZ 133.768 596.8 null] ->> endobj -590 0 obj << -/D [584 0 R /XYZ 133.768 205.393 null] ->> endobj -520 0 obj << -/D [584 0 R /XYZ 133.768 205.393 null] ->> endobj -591 0 obj << -/D [584 0 R /XYZ 133.768 174.278 null] ->> endobj -592 0 obj << -/D [584 0 R /XYZ 133.768 143.163 null] ->> endobj -583 0 obj << -/Font << /F34 397 0 R /F32 383 0 R /F30 376 0 R /F8 349 0 R /F49 589 0 R /F45 527 0 R /F51 595 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -598 0 obj << -/Length 1010 -/Filter /FlateDecode ->> -stream -xڅVM64PQ&Y$@`$WJ!YHɶbYk>9!q)5nfٲc54="@84&}+vi,tRiqѰX^)'U;HP_a^qjcff@%2A%< 9ɛ5?~-%0zpooxfV99`_Ѝc^VGr52۶pr@5J^v?Ex/ܲ t2$X#BVir39Wp?>X> endobj -599 0 obj << -/D [597 0 R /XYZ 133.768 692.105 null] ->> endobj -399 0 obj << -/D [597 0 R /XYZ 133.768 669.191 null] ->> endobj -600 0 obj << -/D [597 0 R /XYZ 133.768 637.31 null] ->> endobj -601 0 obj << -/D [597 0 R /XYZ 133.768 605.43 null] ->> endobj -602 0 obj << -/D [597 0 R /XYZ 133.768 573.549 null] ->> endobj -603 0 obj << -/D [597 0 R /XYZ 133.768 541.669 null] ->> endobj -596 0 obj << -/Font << /F8 349 0 R /F34 397 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -606 0 obj << -/Length 1614 -/Filter /FlateDecode ->> -stream -xY[o6}lx Ah7l =yP\5؝ }(#7JbGlQcm38aTeͮ/340 <̥1D?/g?>X!u|Qp91.˅r_-ra|a]-ؼ\\, 0QhsA,m6'v!c9҇alӢY"Y.,΍p~!,|gOӎ<) jF90Bu5ϻVHGnf(w[l\x Q5,C*dg[{F9FGb20(YƑ)+V9F2ctAF@Ǒ7)m^ac7?)ℽ/ʰ -b+ABd-=t&)ywm@n6'nUJTqv] sh| Hp%0Mrts -Vgf^ƬSx[Nl8''ܕ}yz:2ah˥%X E\ن QǦPJk0V'']i5`R ǾMCՆpg7v~ؽ@J#HI4 PMq 0.J\N"!;1쫵6WۚoMTfu]{D^X(NB艥Fjવu,MS6>z"vZhO҂[lV`` FyL4WXL.n!7gd:vcGO iR'h"MO 8;&֡Hv>Yn+HVN$Gu=dhڴ>i+S -EJ]Ru鲪Fcښ 8AH.[Vc=E D^S.iA1 ) 92DwUM!%au -!x -NQ`h`IP DGqxuMJ=5Ԙp2'`ہ>v=  w  -vB(58T6*` -3b#)fİԍOD0Q X -J&ʤ܎e -uMytoODb6X3bpq,-l0*}F+Φcm2=a&pp_ﯥ>Ayjӓ66ٰ c*D7'Rڮ΄1'PMwmv1}K»}3x rs-W2}h܊_ޔvUE[}kl,IsmU'=Eq3U嗾L֎FdE3"2|k ӓ!zww = -_ o٬B1O_:!#BC*YUw:i -endstream -endobj -605 0 obj << -/Type /Page -/Contents 606 0 R -/Resources 604 0 R -/MediaBox [0 0 612 792] -/Parent 578 0 R ->> endobj -607 0 obj << -/D [605 0 R /XYZ 133.768 692.105 null] ->> endobj -226 0 obj << -/D [605 0 R /XYZ 133.768 667.198 null] ->> endobj -230 0 obj << -/D [605 0 R /XYZ 133.768 647.37 null] ->> endobj -234 0 obj << -/D [605 0 R /XYZ 133.768 553.271 null] ->> endobj -604 0 obj << -/Font << /F30 376 0 R /F8 349 0 R /F54 610 0 R /F55 613 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -616 0 obj << -/Length 2707 -/Filter /FlateDecode ->> -stream -x[oܸ߿Bk#SrľzSAb|g(J$wcȥr~3#*#!%5\7Wo>WoV" -jU(kdnOkݼMh@bPbFP뿶غſص~‹/\7f# _l._.6R Ss\Pw;T }icNc7i0gzʛk3l޴8V4F19b+-ʰAE٘BvK 6wLdrIIB`{.~,/T4 "f -)p*@F*BG5 =RAN"5喭۵RS 5Ɲs+HTH-zd -o(k9.q3yvGRKX¬̥e3<;c >~$48;jۭIH=b!u= -"-]98744*G;aӯSզ.U͜ շx-sAIJ >˺܁Z0r8-⨊q --C=6>x}|).H8s$K?ﯞ tr:n`Tx~wqh% <ߙ 1rYi@70=j3V8_oɘHAп6`jmp냆&&5ǹ;HZb8v{r{)BU0.ݞXaߧ=8BgH`RYa.{M,ZǩUqƬox;q[0md%6L?͘\CCvqn ?Er:&^wjb9b10zkoQ ҉OAcKՈ35*$ޙ[j ̽Vs&إ:Yμo~=kZnj͜HfF]5< ;iX)kY &={1Z)$\9;k,gGK*צ>>~X:.`A˸Lx}+x=gbVAHU* QȖoĐ0m/ZwQH2I#X `(?2Da>qLUGPaE,\1._Dd#<Đ&0m/Z3okrjLɒ#1aegۼ {{0L84iԧl,f '8Ë DU4s۞m]d]Ⱥ6Gbi K$dkkSgufִG m ضo_d_!|1vEnbmEaS)JPʆC+1FOqQ`btE@ -a!ΘFϺBW~5IҫDAc -5Q`bi6ynLO'5{Q@%3Jj ?˞Q cD M֝"!G'2jMO40y?oL:N-VXl}m7@sv f{CXRϟ!MpexC_ 1-K)Fŵt!Vh5cQ-=]Ue8\s0'87 =y_¬c΢wUqoCf -&_Qwmd1H/Zu&;^OeW2NJ.;s2<ïNhg-}>%M4kfv '޼9{&ޅ2W0Y\1f%O&xDگjIm#驞JOLUSΤav6oB cv5LY|݌R_9BO -kˉ;B4)czWV~a~~<::p}ki/AbBX C+Q`qhnߝJey9x~X:ѭ (@o>M#UtvP-ۇaO A-1oX(fM*<|uwD~oêo{Qwu#e\JO$U:L#|`|b!6U}ep<}yi w"NXgYxgڧ;Z]ج鐘By5 -ŝ/6lkf_Y93'љPՆVq8,8N>nv0Ssra9V#:Iԙ1D`ڨsSԧˡQ䥚\դF y?q6c9p*U̓@.Aq,s zN)[984)V> endobj -617 0 obj << -/D [615 0 R /XYZ 133.768 692.105 null] ->> endobj -238 0 obj << -/D [615 0 R /XYZ 133.768 667.198 null] ->> endobj -242 0 obj << -/D [615 0 R /XYZ 133.768 593.909 null] ->> endobj -246 0 obj << -/D [615 0 R /XYZ 133.768 571.203 null] ->> endobj -614 0 obj << -/Font << /F30 376 0 R /F8 349 0 R /F31 380 0 R /F55 613 0 R /F39 430 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -620 0 obj << -/Length 2054 -/Filter /FlateDecode ->> -stream -xڵZo6~_R`P`@a@ۇ4MtN9(Yb,2h%ҔwwTCi- JLVՌ%` hǺNDyMw,SPKр eyZ|e-ʨMUPzNi+(^|ӯ":]ȐPI,9n~pzM[#I?4f'HV7ng/K@jt/[y| c25?.h~ߋ2IpfL` -wBQZLQ"CdI0&7)-lg]},T+i%ԨV V+{^>kliv4B4m<j& ԧl~$'smYvjV(m> P/7U$Px6t5t= =e Vr1N@/$]ZCR1 -"~ޠ/YG-֞@W;H+)PS\ና8CF,6QwM>:~j1â y`W9=ʐ7_H=x|@::ݸe46,)Z/戀HT8A5m^9[ iěJ"$b`PAȆk/l} >W)zw.7)LS#?/i"2x(tx+_T|Mh)L^Z9 OUs'*$RUm r} Geg@\ e%`N8siy9\Xn?)& J -dCyGg%^\x練)zS) 4 m) m_M릖T (t8=xk?zLļc$.`xN>6l<;Gh<ׇ>M|Ik4m^߬As-8X{9A-*'oG8K8v[.+lV -H 7=x2S#ElD?]Ļ8T~0GEg{>msZ؇_V|!_(9ǃ1fV>MfSi>_e9zŵa0 L'G~ߧVCdvt\n]QNܵ7kf&u6vGfIӏhް9F3elgm5{Zf)=Z>ފJ=R/ICA<28J >YpnY=zE -! Ss} - -!mt?i%An{Yv[|;9L0ex6\c9)fB_StiŁ6FYm`e/t_B= - -OJ K: -ҺQ 1c,Rp`z]\mVq6v}u Ţʂ7$@QohaQFU`%LNJѫWK w$EQo`;$ZV&EA$]6F1[OugMҪP=ޯx?O{Я=Q¡mmWf0Ġ84]@ -endstream -endobj -619 0 obj << -/Type /Page -/Contents 620 0 R -/Resources 618 0 R -/MediaBox [0 0 612 792] -/Parent 622 0 R ->> endobj -621 0 obj << -/D [619 0 R /XYZ 133.768 692.105 null] ->> endobj -250 0 obj << -/D [619 0 R /XYZ 133.768 564.351 null] ->> endobj -254 0 obj << -/D [619 0 R /XYZ 133.768 458.114 null] ->> endobj -258 0 obj << -/D [619 0 R /XYZ 133.768 273.926 null] ->> endobj -618 0 obj << -/Font << /F8 349 0 R /F31 380 0 R /F11 451 0 R /F1 442 0 R /F6 457 0 R /F42 445 0 R /F43 448 0 R /F39 430 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -625 0 obj << -/Length 2058 -/Filter /FlateDecode ->> -stream -xڽ[n6+f~l (4Y"G&K5 $uyϕacBm'Îvwћ ]oU>ȿvv?ິ;qvh}]' (a=%f?DLCzbuB-|pBsuvS֩-h6w|zN(xBAIpw2̹ j>s|f 4Q3 s(5[C&26k pī0KC[zɇɚ~PiTPj﹆jUf`ثN*" ;/_c/g/.^c,_?>,,c79Lسcߨ`ǔ3 >`ܜ^?Xy>Q@sH.)9UGg v9QP΂P| 4!2PHqT}9000K]Li ~E`m"fl)/6DO7G<յ)XV. -Z]CԠ稗DG)b}U')gT4hO1LQ33E:w<'rRCވ/"nƛpxc: K_Wq]IA2҅xÅc0!K/7%If mk[J};Auki{ - 6 -=İ4ue 7 D&Q_'ֳRrαKwdRY:y >kMXs*Ӕdp S+yI,lJi6#6՟] (`NA/$ 2CޅIIJ!y9q -naRS*5QQғ2)]3)M,gR9QUK]Cy׶)mOA -c4ư3<5 {9(luJSP4+_ aUgPY#{[Uĥ j(.]C"3<ō(K,*#Cp[-Y&TiW1XUFC}U?v5Ea& ;S4FU+e iy^ǯC{=d4+uK%3N\ mz"B4V5|ԂN -9V!HQ(8A+SnX3dڇDNN1Ňx:W sz98K_KYe*gv CjA3p8-fAaq39S3.g%cK*'U@ 7\j mcJ/ic6(`!p:VCS7'm$@` cI1RCp,bg&R7AShRt\PBi)z +O;!MGD:;8[V95[Sbyã氜zX*2;U!kʃG*a[3X,h]id9Lhd_9,(tjD&I2H 2hhL;-8?)u[=,δM;u, "8iA[03%`ڢIGg@$ҒZTU[Qp(QD7+*i\{ -endstream -endobj -624 0 obj << -/Type /Page -/Contents 625 0 R -/Resources 623 0 R -/MediaBox [0 0 612 792] -/Parent 622 0 R ->> endobj -626 0 obj << -/D [624 0 R /XYZ 133.768 692.105 null] ->> endobj -262 0 obj << -/D [624 0 R /XYZ 133.768 597.302 null] ->> endobj -623 0 obj << -/Font << /F8 349 0 R /F31 380 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -629 0 obj << -/Length 3581 -/Filter /FlateDecode ->> -stream -xrί#yW⊫R.EA(ɮtr3=;áRv"ۍh}v1CȦn|XC4B//]p)(lke2>vݏ]_\jm7G]\77?CrHO.ulw8T#1ο2>!dzRiҫ x}SaHoxW$(RqTf1|EHh<^u~7gAuA: -hq>:@9y`T4z5X2EO~tK<\3>2&'G4~`X& -p* .8]}ٻ_є yHɾq2:X%IWBןiC63:BLyH@RS1{*c"UZ9kE&@g yH*M -cuut@߾:c}W޻A^ewd\ p*bC/]i<x,8< -du.ڈp'y$Xag09eIKӗ6$z<Z)B1TӚ P̜-mIlbJCr %.2AYgЖAM}ڨu48$8pCzl~: -$)8+xeZWs@&Qb(aa-҈v55œ4H#g+LQ+($&$Ss;5fNk$9EC<0g,!R.C0q]HdȆzHZo#902dsgE˃ujy#JlE"u 8z1+,:`Nk3s 8SԅZ8`j:ʩ0t{NR D(E-tKDȣKŪzTHg4`)%@io!p"EfE YX#z=7J 5Dj $J@xZTHY`0?e5Ā-Z bE5nk*3 5Dp5DHj5D߫WJ g5%9V $oPtARQ2mDn^Yp=0$Ӧjp[%_K( ]A5jdpi#ZR[P aLl&&󰿈'"Wd3 UbAR2KIbbw))bԁ!z'EFKLX"L*'*/Ӹ4s@ v*suVU!K/@kdy|K1E%K;F$q|c!HmJHคL\ c-^(dh#5JluᢊWI\OԁRN5}.Y F$;(1cPhQ)Bc:"({/E4U"YbȜs1{3r)pa|1ҝDvDɺ -tG&N;*3YwTgL\pJH.1庳1Sn?&7r4ɑ%r 482`M! B(OT^x5o>eE{!;TL_W3֊U lr>)GO"pJ}\U?QXגd]z&b=(4pڕ_x`V88p 8o]7<os]Az8V7', -oA,>rp_RW'/-LW s {IB^X7xIHF5njyO7Ln.p.pN**gUNvm6Mv{nl׺ֺ0w͘yd&[Han2CF+Mn>HE-+?auyS~'ܳ̂{v+ w?hƄƆ{/L -P73U2D{e&K9MTSt=ۑgA{Kt>nDcShn4NޙB֠Db_oooo_h7C2L 20z45`F zzdw@AdLFQPA^8)r*Q&ק)B#  ?\7We/[+).rci8#(yk?1jFOxڈN[5ܭcCqE8wYO[!~ԨVٜ?qd'~yR{[y\AC!dxVe?^MvӅJ|*oh8#$vlYg}-5=vd*_K|"Q8wX١Nݾ*L(!#|;Tɘ-`PPR"~p+=Y>֜煜@5)U "Bޯ;C7> -ǷB0lBQ*YBSY6JeB]޿VcWFE]MKrLMO V?F.8zf7C`2ICEOW1F>D:pAp|c! zccn jrQ +G`XٵSS\c7j(#*j,\ Um=[+~.cl5~T^9:N(env1u >WiLXCM2;tE.-^\1ngA{>ޖP^oAG0A'/y|,xսl憗3Ouݵ_5U/W~X):ik:NDW^^i͉xDHzr"e'[v" 5lw"Lsrr"g3Ďn;ZNĩ.,'rgC2> endobj -630 0 obj << -/D [628 0 R /XYZ 133.768 692.105 null] ->> endobj -266 0 obj << -/D [628 0 R /XYZ 133.768 667.198 null] ->> endobj -270 0 obj << -/D [628 0 R /XYZ 133.768 648.477 null] ->> endobj -627 0 obj << -/Font << /F30 376 0 R /F31 380 0 R /F8 349 0 R /F32 383 0 R /F36 414 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -633 0 obj << -/Length 1666 -/Filter /FlateDecode ->> -stream -xZMs6W(X|fdM3Lq#7Hv*($d.۷ Qq bָxvƫ_p8.!%"HR+ k_2weQ:"&u |sfo ޗμbҦ%%[YW0x n`yBɊMxGVyLWVx>~x h^j]JVn BWZ.׮)Ґe»o.g_}G.o+a$#i+HRnd5!*}N@"P(y1>_W\+O4bBDJC$bkUVmZ*JUTdG7%E-i17[,rUo&ɵjXj&].R%5T"!NEpA"JH^$[EZY,5xGz"<`<A>b4sT )4eVNYDKQmSdNja9ܬ 4SB(Ј6Ĕs1{gh?`=Z>z&=kT]~-0t|c3Y}Xk#XS-R-b@hi)=NP"`P6~V'v^"Dׅp3üF:WxƋڲ#.dHe SSuڨ[ B?*]k+A*jKG Haf/>Tu"hVRIZ:ybo[*) mq^ 16TH`~*ɡ7>x~y;lwQ#w -T"ft`C"F )g"X #!PY:7%=n ōMBn.0re8qϸ/ֻDR=^(%!Lh7Rg"@V@iQڒBiHODvJv[x1mQ8Mi:/-҉! 5T}v́†߉\IMBf}%-M@Fxi& n?L$/N  O6J 4q^ߓPi¡GXBt$P˅ob_hlB۠H(h0LqG0ø,0im,/PLǏԐd`Y*S\o -%c}#Mc}mYtQL'S%60XFOn -y&L k`4;ʺM-Mҥ-]"X/"c:l01h,x2~BNeG{w.y^ ~8IT~ʍY~I57c|R4۟7y3;|673S&[+ImbAah0|[4t:DhHCɹ7-ߋ` @ˏ=#;SL"@3BPJ֕Wj/3 -endstream -endobj -632 0 obj << -/Type /Page -/Contents 633 0 R -/Resources 631 0 R -/MediaBox [0 0 612 792] -/Parent 622 0 R ->> endobj -634 0 obj << -/D [632 0 R /XYZ 133.768 692.105 null] ->> endobj -274 0 obj << -/D [632 0 R /XYZ 133.768 359.545 null] ->> endobj -631 0 obj << -/Font << /F36 414 0 R /F32 383 0 R /F8 349 0 R /F31 380 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -637 0 obj << -/Length 2986 -/Filter /FlateDecode ->> -stream -x[s+ أtCkLI$ESS[NuXie˲}{'K~#ݘF1*ԄlѾYts>3}pPkrx4.#uj u7j? -Q6A1NhSYAZE2%#:ʦ*zIGO RF$҄@7u -N|O/Bu͌n{|;+-^Qى^zp+ؖ8)y/d4бɃWιƘ?7mW߯n\~;eU4jd *ÃҐɸ>VY+dK!PȔX]AET끼S^p\~N;bbP´сB" ZZ zᅎA"Å:{eFl -Q߀a. oR_ /^#BRnsʂ3R ܗsz|RP&bzuE?_Sztu%\ `iPRpq1B,Tp8v8gؑN?),ѯRt8 -<5њƝ* hAyH 3ϧd-̀*@c(bSWdI9`=*;^!:ҩ Pۚݬpw׹HB -3*D"Åd6縛v s@k܎mr.Ϧd{ڒ4^ƹ<.lj<e*JZ kmIΎ*0#*Ił";tLTnFshW >ϱs67sYJև3}ӥ;"D1d Yh : -X1[s<&f /cj,YZ"  " [)Lȝ,q)}T_̒\ n7bn\uxrqթpyǨVqk_mJՔf҆z]mo5Uf}#)H&âL*m^0_`ϯ6TܯnM 7PF1(^T$u<<ΩTv ]Ζ[ؽN}S-q#p@ CO/CDg \v}1RG ZZ=2mܤK9N[v/~S] D"ADju?{śHP^AWBqam}S[6VG()=܀]ym|خbɚmq<5@0ZQuC%*(Ԋ,!Ҏ!v9-h@t3 ѦzoX -blX|衠^m0)䍑/#Agݟޯs -{LJj>%7n[(y}\KZ%LbP9t˜IxC6,%*1Yft 8C ]QezFFR:R:KVMMs),МxO ǃ$V![m!@sy .LFVr,ja ۱xpAad8b-U>d,:@Ky5 > endobj -638 0 obj << -/D [636 0 R /XYZ 133.768 692.105 null] ->> endobj -278 0 obj << -/D [636 0 R /XYZ 133.768 519.302 null] ->> endobj -282 0 obj << -/D [636 0 R /XYZ 133.768 366.114 null] ->> endobj -286 0 obj << -/D [636 0 R /XYZ 133.768 343.408 null] ->> endobj -635 0 obj << -/Font << /F32 383 0 R /F31 380 0 R /F8 349 0 R /F30 376 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -641 0 obj << -/Length 2647 -/Filter /FlateDecode ->> -stream -xZKoWqtߏl#k` n{JGr1]4dbUXEJ7 -tmcHMȦ7W|F=XMػ6YEbjՌ65v˖5ɹ>PoFRO!_E'5|c3CjhF -,(H[Fq0e'5yUQ++|iJ65eO\y7p{ 'Z'ɚ> Df>0o_n~WN?.~>E=J+64M֗V ąwU ҂s2@J(!ԑPhu5RO` Lo9F"o>jy<!Z):m0ʵEW} +n{~an#ak<lem -AP;I-udrѣB$5I$AP+؍LhSz -;]Hj.on䷡ӱ4X!gBow;Uwp$umҼ_-kژ2tLNR/uFSc]PzA|;` 4ZxOwK1H*sgx"RK=ָSJ8]f`;:Ǜ[4&>jyj8Kh]s0䗛gǨu(xj\z 6AP+O~o=JJbJsX j-r*Q1rsT-LkS&pGyb#S!! M8C#M~d -ѲBT$p#f F=f&s!W|7Vl*4Ղa -@uǞ*Ϝ/TOƺڊXg//%MYyDLJ3TIg"@Jg7Yt&t_qX^ sj3e4@ݩ޴ }ݠcswjfb[/?Q=)/ѢpM½|Qw7Errɼ8Mvs@2h$~P(8}OU8_Aqn 6*x3/#Hת4_ΑK׷'6N!M4-R| > tSkIRM&K"AZ6E`=Z -txZ`SҦ3]fш[9C/G2u SۋvaWgtji %`a*# -D9t,vtWqJaNhZ=f)h*lkq\钃:?Uiğxd'Wh|,G^⪓mF_`Q"'۞CmF_%:%z*txl3 , Ȑ8Ks|T-e0ȴBPTtf[0qIϭѰ& p`]Pic=EV~3ǍdimZr*s'e"Xh8’rD/`-@I -},&,[:gljǨGl - `v:e$#`!tJXX{ -XPR -D 8 *mnt+jC$3GhMlKJ&(8s5Ef25B/*"']>]X FASR6뫸=mXë[FFViEk%jZn/@Vn[mvP{^ SU/R 촪^WZ]Vͪ2=אŞI(L-au՚GF@NSbcl=]Tn_/LyUi";wL#?Z kVTkȷT6>ziHWQL)hmSS襏my'$u⧡եZIZ,t-mpk%mČ"sp<̇'X\UvRD&oti!.&yM$Nv>|GmYZ@H>yM[0t'b'~ˋ핑#e@ 2|hWvpEnIZ,S$<"kCB-2AчaѰ*ʉACAFyA+I -Q 4豤o@!&օ# Zтj_ -JgbEDdN;S>? =Zі-ʍ[:ir[Dn‘Dr| O1JN$L l!+>0|> endobj -642 0 obj << -/D [640 0 R /XYZ 133.768 692.105 null] ->> endobj -290 0 obj << -/D [640 0 R /XYZ 133.768 526.302 null] ->> endobj -294 0 obj << -/D [640 0 R /XYZ 133.768 503.596 null] ->> endobj -298 0 obj << -/D [640 0 R /XYZ 133.768 369.684 null] ->> endobj -639 0 obj << -/Font << /F32 383 0 R /F30 376 0 R /F31 380 0 R /F8 349 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -645 0 obj << -/Length 1782 -/Filter /FlateDecode ->> -stream -xYIo7ϯQ:5 (\`8b@|&iz>F2Iw]mn0u6̢ X$f&Wev%uQxbb2/&6RqU\)=s ەYuB6×GVs~5ȣ3c:Om+\~x7rQ}iMlܲQOsO|An V@It߷úX1ɥv<h<@Mfk)\} O+ǎ=EX;bz(V1#p;akAF( M[= ťȅGY c!'&H[ ={wւ%z8A8UyvٜVV,Us\G;c/܈;jQ(> o5y@t5iO@z&G&z@\9 Z+p)P7dɨL,~7:qRE ){'dмR{K#e6w9yi.8e$MHI:<4caT4alK'iNң4q^FK &Bϼ+HoRQe:"ՠbUTJJL5G~4"cU!٩;6e]^yL#ؔ~7M]e(+Ǯ"nPU}El8ȊNر)OUm~<_#BdcTBvb.ˆmpu{?>"#R~Ĥ~|w_n/%pމ<5AabzL黣$ F$~ -zQ_l/72}jg[^$&0M0@M~RZo/SjK" ]L$.̽.ۅ8nXlч+fLVTJAЭٱ#: 3@lw^=YV"{;uVh%0?J驰Q;*s&Lj> endobj -646 0 obj << -/D [644 0 R /XYZ 133.768 692.105 null] ->> endobj -302 0 obj << -/D [644 0 R /XYZ 133.768 527.302 null] ->> endobj -306 0 obj << -/D [644 0 R /XYZ 133.768 504.596 null] ->> endobj -310 0 obj << -/D [644 0 R /XYZ 133.768 293.732 null] ->> endobj -643 0 obj << -/Font << /F8 349 0 R /F30 376 0 R /F31 380 0 R /F32 383 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -650 0 obj << -/Length 4846 -/Filter /FlateDecode ->> -stream -x\[o%G~?b}<@$/):Y#;B$~;1bh 4Wqω749v6& .N9X/d<|ÿM fdg_sxܜR >ѥ 9X?]9tuHa!80 -˳)&II-.x5::Ρl -/}t{ M#cX.Yg'^DIlFLs.AYSsuxw -Y?+3nAwAA^SP+Ļ#o yؽ? My9Û<9pdM2>'!i*r-{Sf7R(Ƣ&i.Be5h0`[ٹ -X3s -9f3`԰9d]8V">BIAKðX *W<nI϶:̌NAk4XɏXďɏȏ ~d̑I.3HyG9n~$@F0K$)8o 6Լ6X9#1 SɠS/H% y1b~U"I^c[V=nZyx|xJ3}fB'LOEw5W/ӫgXTAT\ z}^={<ޟ?'M2H铋hE|"Y.dh e *.[# *`S,z`%YaXH,WI2" oh OhM6VaZG E,\BB1^!l^F)}M%qf!ot{Ms@`@p fp pn 9 GX/pT~'xAad-{ذ kbT{"AgM([ۋn<ލNZ);ֵA!9Xxm _έgݛo9g)ttR֊Quy>wwo/߼}Rx: -Kp7w_?ݜޜ\ʨ] -j'+vP=џ'aj|?IXwvWv&?{H&WBWӘTӕիZJS~ -Ce\Jt2#9(tpb S" -KؙL@DS `E2*K5͹na7/^W9ǾMBϾ%$pGI6ɷ,:V-됌uM-%Z]V(9}kJ4ÊeQ=ɋ>ƕ?fŦnpEzAǧJbI?=T%J,$:caJK2MI`mi..R& |7L<)#ػї(<4SYݭUˋz}3[M d% -bei=4)#`3V*5Α"g}%:)xPP9$X\,1ֈ%5r#YxnՋh`hP0r,BbrE jQ< 'i,C[J,5cKĴ_D?a$h -R`k/g_D>{SqNƶh 9@2(A@h}هDkF<&GۧN>Z#O@RKi'/f?Cyv@hWc+nq+o48 :vvk= "rcEWۋ6~@|}KR3 -H0;8|Tmp_1갳IA=)瞔s_D3>y_7>k5#L\E@;3' Jq.|v!VSֹB2q-J 2`M+rbMm1iQ#|\ ?0h![jA~V۝49Y,LI~|j?tEJjo!uB2F? kZ5? SVį>*0Y -c갓nߞo=<:2:^ħmħmħMħMħMħOOtħ'#>#>D|YG|^G|pħe'ii/66&&&NħMħTħ'">/#>o"Sr|vj 7_/Cwj{Nûԫ~@X& Tjsů lj훁e8qO}qɕ  WϰVMi/Ba6AX 8ۗs[ZmD0 0ʈ'V4M_;1fuceGh_yYիHU} LD3W t.mlΦL d"H5=@kr`Dh5x11 ]"7՛vo殽t3g߶oqggN0;Hr-qގ޼sXZᲽ{p؛qЪcF:#>I6rXeND]UkތY= -2-"s F)IٻO8wRC2ګoᴰ9؝MO -qvD2)Uv*k eNIAI0GIsX9v2T8B1c[&֞>ga#3&r9BS|GRl+;!M13RU!ӂXerc11o09F$xq "4o/БE0&a9(GA\Y%u.mF槮T~˨0}AFk0yw||Qf"v_8 /"v_XE!_XE_ a9ƨ/z @IRF8Τ$GA> endobj -651 0 obj << -/D [649 0 R /XYZ 133.768 692.105 null] ->> endobj -314 0 obj << -/D [649 0 R /XYZ 133.768 382.489 null] ->> endobj -648 0 obj << -/Font << /F32 383 0 R /F8 349 0 R /F31 380 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -654 0 obj << -/Length 2514 -/Filter /FlateDecode ->> -stream -xZKW(>Xq ,Cg:Pis¡Cɤ<`>$KHe#G'L1ni6#̨VZZL#Uh -Rw1A%f?zlh`Y}41t@Aja3aFqq]yėpqxbj.Y,.ҟ\rN键I'?,F*:`(Qm`xYwa 8*lWݗ VFCqan|+%atܾ^Ƅ<@l댵 z9Ӗ~~v/ۋ"sC 4EBk3*QrґfN5Ѹ#-Y@#;*Jf VV1gwt:v9G2{$TIL-ABphq5o\<_U,VZ] FB@x} a(.տW]$R׫%@ ]v|Eb+]b&.lO4`,Tg-E8^-XG5̢*4PXʀYԭymYeqVg:{&k>m021ũ@]g=I9USn9b9Q5 +Hr߫?+$k1 -a -tΡ7yP iH/OFAcKPQ KFaXF 9K6әݙ,3ga$̙0Y/P Of -G`=2'8Gk;R}& vIG (ND 2{usDQX$9d_ K7 \B0a{|VTHEjK/%(Q$a_p651_՗nIoustfBIw=&4YOs4:p"Ϟt:B1R@J0MD[TYth+@,v,B(5*"'6bMqVDJ'+z;!V@-k"skj7{檹a4T#e,0,|c2ZX( p T OYoQC*檬Z;'0odq=p qMtw*T~SȨC쵛%1:s7Ar|XSN6* -endstream -endobj -653 0 obj << -/Type /Page -/Contents 654 0 R -/Resources 652 0 R -/MediaBox [0 0 612 792] -/Parent 647 0 R ->> endobj -655 0 obj << -/D [653 0 R /XYZ 133.768 692.105 null] ->> endobj -652 0 obj << -/Font << /F8 349 0 R /F32 383 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -658 0 obj << -/Length 2362 -/Filter /FlateDecode ->> -stream -xZKs#ϯ4pUqvUxM]RkW3rywwQ4wIJUt Z?Ђ/p.7 o7 S)@3e-SַJ×7ovgC1-R7&7S''tt&_om&jnp'G\e(0I$x,O]oUb[)6£ӪE A;.'1^Iy$YﲩY$}$ЕGSHZͱC7?Bdq{uV6tc] 9OfIVf!RD̔JfE+595"} n޼k-io=Ϭ$Я4CDR z浏{SD%L+a'y1T!2w+7@:ja0Ula@!cBOެ)m-WaE@bj -&ȨROê_Vg'xqRb?R$4)5NB1>|,Ǟ aDȮ]cxUwj3zhqmXIJI ?i>,J穚0SeX*ScNaҪ0=$6[O14 ->َXԮ/yX?=׳b3Ɩd)+"<ܕC) /^94лS00 ^E(ӱS+)|s:Vu`?RP{i,#}6xFw -K ~x7Փdb\M["U2`:\ㄆ"D/e!!^Ի,N'KX­-EjoiH(h03iԣ٫5wr#U8uw$0NO'Q## -x nۑ$ZܣjhI5 -3΅2fU;dHo3`"?s3Dr:cO'7N~?9ddb@#V -YS7Z˓zQ-(UƒPc  zw'i?-덩?۩a}EOvXxվ T5uBoDAV®ޕՕ4\E`-4Y L&sdϡ}^HHGZ0@fTLbi9!!KP}H@0& * : k* 6KGa5&_gB*WYXz" #En_=5Εy}a19XK$0L+2eq%<+`{ U3duPEϠ}^=4UƩξ:NU o\/ & C*XBI3{j G+70_0ib@8wC~v }+ -jiQMVdeEe+^YIS \ p9Kcۆ`rȳ/ohK]F"].O6c"aI' - -8= ׌c/H>vc&ܕc؏mnPH;}Q'` q"Li (qgJ}Vӗ -dWNs -endstream -endobj -657 0 obj << -/Type /Page -/Contents 658 0 R -/Resources 656 0 R -/MediaBox [0 0 612 792] -/Parent 647 0 R ->> endobj -659 0 obj << -/D [657 0 R /XYZ 133.768 692.105 null] ->> endobj -318 0 obj << -/D [657 0 R /XYZ 133.768 527.392 null] ->> endobj -322 0 obj << -/D [657 0 R /XYZ 133.768 507.01 null] ->> endobj -326 0 obj << -/D [657 0 R /XYZ 133.768 349.822 null] ->> endobj -656 0 obj << -/Font << /F8 349 0 R /F32 383 0 R /F30 376 0 R /F31 380 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -662 0 obj << -/Length 4591 -/Filter /FlateDecode ->> -stream -x\K#WߏHĉhw'=#;6*vXT5hAx鯋bͦ 'Rλ0wQuRj;wp닙DWw8c>{=n.Z;Tc}4@Vt~;)+~<_O_0]t5 1|} FkԍgMgl͞0T=,rS2 ÜNٹ BZGOܝogڅNHm5^nW] ^@eu~4Ť)& Hzk-](!*Y:D".ueeNZԪI4ד^*{x,ury4NjUz(zji"^.Nz?~ Ԭ\ % -k]֍o6r a \9,p˓8W&sG+2+E̚{c֌+(QP!QW.$Q+Ti4b4S`:*u1f\LqR9# t,pel -aa$27 vYՔ -;-3~@e'({h9omU']sbV/;E0Qe'Ch;B3H]AqÈy //_| D%AԦ3O$Qø@Jk.~EKevNwZ1VAZ%ӪZ|,WQpY T|)Ŝo5K)U8#Z HӦ~o~Dv=͟Cy-tdEbxlp"yM1n=u!0_Bns,tiyM-bx df>{ -!,Gd$"Q0aT9N-mS_9yaL)H?z-2BQKi*VdۚZ2|U~8+ˈG_૭Q3aկNՖԶB0NRDDQJDEJ.: a/^1 T}E z;ރ. ݌6.lxyzUjQkQkUjU--~[Tӫ4!LI:D3Q⇥JCsX u[dPYC##$mN~ .?So廋 b\G o6_]hrσI{^/K]e<Dz~]aΓ+pZoA#f@`Foj8M Y뒥4Q7R] V0celj)T!T6]ІorU:UӴ  bez}ׅ{WDZFAa-k#n0Fa}t{3𪒅&cJSR -wMD\BkD4ծa𩈳YGAB2iD\3NEjW[ix6|381Qq~c%`ǸU,1)e1j?ce4`lsTcoĘYv*UJK+1qh+%㸀u,1)e1j?cm$kg0TY~kCicf٩Wj+-1ІoNX8Ɲ(XǸȲRS16 SckgQ"\ -wE\Q ,߬rG3NŷjSSg /^/ISuTY|jCo*8qAzg? Ϸ._H-!̍pc-q^iޓ;^O%VY역+6hU45[G? TKc DbGl:Le{nɎ \RbJZ?+MK?0H]P|c:{:_):fnIW3E,dٙ+  hpblTp$[:SYiͥtzg̨0}mz0c8|V,;2 _0p.`a')[4.`u0W1`((, --RlPX ROuSNi{<T,UBP. ͕JjeHTKԡ[۳ )aX)x嬕@Hp,e9#;iBp)i}ZdI?KnY_q M6nJV`6裦;#HJIr,3>W"@G} 9*G(OgYr%AA#AAi-]w0J5IKSG밢ie:!| -ٮv~FSS֧/Z$׹ _Ldv$?:hj)6ꌞ.[G .r黴4 * -La!ב:jY+Gv`FԳ` i鸹6jU>}?.9@vL`R\10L:3q;gӂ-K Wmda}<=5 + g.0 &*Mz a0"m)l9[30 ldB%#"wtN]Z|/GwG+d% {x$*'*c"8T  +ҕTbW}N@Տ:+8Ap=Vrtp-\KJș "V)Aa%\*q< oav 29eg|N 3,iGBl3,ÀGUPj:6NZXMt+e\xdРa+ ]pnfG]H`4|%hu)5:l(c(HYUWӇ t@6hÆNT:}P1RR"H54P BBA~ptv1+) (1x YEHQh可i6O< n/} -_g8C#No2ǹ/7R~BNa)WO}}`CALNtqg<չIrW -'=I"Bi8XZ &Nx_l0ɿYn)9 :y -w:bkLKMO,xېfޟaq|d^xVrmU]Mk\ KD{9&qVt+ZJ+j|6A >,͹)PXKݐ"V}Z)5H{0U+`0h5:i.c8McZUW'͕:ϧU"'͕ZO+ZJ+jl>d#%N\J~{UW*M,fTI~<7KMIs_7ļ^J6khom%F> endobj -663 0 obj << -/D [661 0 R /XYZ 133.768 692.105 null] ->> endobj -330 0 obj << -/D [661 0 R /XYZ 133.768 667.198 null] ->> endobj -334 0 obj << -/D [661 0 R /XYZ 133.768 414.203 null] ->> endobj -660 0 obj << -/Font << /F30 376 0 R /F8 349 0 R /F32 383 0 R /F18 367 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -666 0 obj << -/Length 3016 -/Filter /FlateDecode ->> -stream -x}]o8@un7E\dEm]%'ɛ|l`ᐜGS+~8Ӿ -UѾ V;XN JhE$olQ]MzNDhTSz6_כ0ufW1S+NmuX`\+/k'Eu'w5f~UFQf~WX ^`! jG: jNz׷&*pr!m-Sfprmu)eBs0"RjYm(8XtoKcoۙ)rQ'Eb[ "t 9k} pkJ^s-`c@DeOmK_&L9tJy GW ӳ?Xtt#ˍ)` ̸=M& W8b͟ UĶbhjz(epK⚒MJeu?!49$Pw)s:)[Ozr斓HhfǓMG"$@]Wj%J<'D?Ky -^RF~Wds@rah3N_FĈE2lw֯\{" 4"PCɢ*0 02*"A0^('JSQ,jBG@My*|쫯ʥLe7q -ugu3ruBKeo"eQ90Wׯ_Z ccxNBVwOzxL'a,Cq|?6oEe1Y _|^!da$eShFPvzj||3@RN7cXK)N^&/b8m`' m&X)97,FۜZM'.T!7*ZrL]`RCr"f+me泃~.rЏ%aKJ n봓 *0S=έXgRys>H8dSc/j~bRZ+"v Hwxs#>!c'cǤHIJVYJP)1]BkmeNЙgf}YHvv҉H_Wv,W9*eeyP; -$3s+ yFUlܡ$jI2C5k.)49q׫oRt -%ZB1Z@Izc9+p)dhߙgeƟj 8Ω$dsMA -clL:tt3.Qd39O%%AY 2> endobj -667 0 obj << -/D [665 0 R /XYZ 133.768 692.105 null] ->> endobj -338 0 obj << -/D [665 0 R /XYZ 133.768 667.198 null] ->> endobj -664 0 obj << -/Font << /F30 376 0 R /F8 349 0 R /F14 352 0 R /F31 380 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -670 0 obj << -/Length 3480 -/Filter /FlateDecode ->> -stream -xڕZK8ϯe媶F13ynevS>dfg,ȖGTb -A`w 8> Z\'y'yyIw_fM~wyzjjwXCZEBWOn諫Ze3C5jO߃4\80MWlٞDj BL|YiZfXue*4W{v%1,,1l?ﱝVX ͫĚh-i=2\AēxFe=}%2'v]=ǡx.8^Z# QhG*Vت%W Ly Ӵo>2L2I.ġ3((Mr,υ0,38Qs R?U 0jC$'cuܠcxpU|*vj0B”:LhS78npJs8ْ-79F )zaSȽRƪdCO'lFmkjQ|\FO]s xgF^ޫwSW`l0ZVV Nj䟍0M3״7>rFE{J~+ ܛ(gE߃0̔ -E<7 aLH6Kv$=.wcxd#ĩ.k;I>p24>Ga/rVF_ؓ8#%7:tl ԅk;Y8łtZIi8$#]ńX"M|hwvIW'Y=Vj|A6MˈjaZ30GΑd*3uH}TaD9$ e{n.X`I ]B'+UB0.6fU$ޠ6y`i-is$Oz_ik0,J Ao;^qs<$k`y1{phF>}/gƛPa5}v[ %J\O(~إ9xH{)o{Vr %3qjdQ7]i|BYP邛=BD?l{Zmȏ9c~"|]D"|TWJ -ŮY{ync $[p̏\ɬ9 g. jc86kQ?|T]Ͻ:aQ_(ahNV8 .NB`V!9$}?#'9#-۫@6|Sh Nݖh,h 2^.\\ {;" 34c wB`l`OC(㛜 j=ɦ ̀cc,h7nٴ˄D -#Nh^QAN]l4䄩YA|@c;KṖ-sax-n'`$fkz'NJmHZ<::ДQ:fH0wD`&|uD,rL:.ccQa<}e2nSX&U -pQq`8QAO  Փ2ݕLٚF{Q%6}2N[ez[?vFWK@\Ԙmq:_ q: jSSH;3AB$4柬?-xI? -MW~R~ -2' J-ߧiqc7ڹ9:(sE#ŵ2zݝ, 2\3{6ss#Q:#urTs@8]M<(>T2-a(Լ@Qx KV15eTA^+^nhR y6kdpi{_Ȩ{>C{b,^iYHꍴ+`ea_s/k;dMoE}# MZ8 -eX(/x]xvN3"4oE 0"Hq1w|Vk69*zo..&S+vtz&H\od@56ian25e(XKMȼOP|$ {?"u2A}!3ȣ֬C,2R C[Q0tr듊rɗhVZkkZ/Y\׻;$$dv0r>sÄϵFk?Ao cHfY؈'PF.yvtrp28:\):E޿VQ 5|ElQJ<~2? %l$*"ʅ@t@3d:rDq -:qAū5RʡuQWM]"hmmGcT1Wh!Y@_Y;bĻf~TD@Ĕ 2uVg.h64APNZv!pP8g -1O~qݙYZRUF㥼|\pKP.^X9#(>L Jє<[1DuZV/O=ւ&$Jy T -{U -}3ցT6s>& Y^z540bN4A44uq oB?,ف.{_5u {ng踩eE9\i*G$'3;& KaY+YƤ3,Z9AǸWrI<Ձ!d|QGcky4w)U!"/=Wwmm竗5,둟)a5YE}\-U \~XzE Ʋ<Ӡx^ OzưIE Pa땊 -,y(1!?yBH~0*棫1 "0jdٱAt3P_&:R#$I<lEc8O|@F3\tvM8+ -yh:?WH&ĒN& x^'\' UK9nzs_{ _5?~e((}ſ2,ks]qY)Xp^OeFv' -endstream -endobj -669 0 obj << -/Type /Page -/Contents 670 0 R -/Resources 668 0 R -/MediaBox [0 0 612 792] -/Parent 672 0 R ->> endobj -671 0 obj << -/D [669 0 R /XYZ 133.768 692.105 null] ->> endobj -668 0 obj << -/Font << /F8 349 0 R /F31 380 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -675 0 obj << -/Length 3196 -/Filter /FlateDecode ->> -stream -xڕZٮ}W-`)ds؞8IpТx%fhں)ꭺԩ v> vA$%:~+W]? -D$@$F!Jc滃3ÛW)< wOϻ `Kxtt-0Lw2CaFU}JUmQO;˘=Z"!j]@Ųx`[~ǎGQJ˵*pOG*Of zڧ_V qFJTıI[t\S"EҌCߑ%V.@$Y(zb(Eb̀3 Qr50[نnׯƂnã]mlX^԰Kk$,,2r8(f3ٝn -24(oC$Pn;pײ -_:t^|ҠdθCB -j l"к -_'Z -٣@EԨ#?{owJ@w2_'^I<8<#SoUM.T#☔Ų+0 bѿi8;xc$3SP_{fmoP ʊHI͍'FK~̰L)43 {N1A^lc}SZ؉a`BSLnGqq鹫kz1OOUq@s=oPπn痢b)@E6]"xyHP@9zHi˲2 -d73Y $69N'_̈́@؂DϷf#*é᦭)LJk`vدFPX-h? ڧKg9t,R>&.EB#,`?59"%'lQ.HXIpi^ʶ1bz4`0s˕f ɠJ^NtWZҺ֎$FJ~S EQN!:;㢫%#yg -Q04ݺa? }X4({E,fp|37(H- Y_MS2e8+ bZ#yMLH,c9#R}"~ \_Hyc3O-2pQJ|w7xŌHpN=HmccN>WLkPLOtWW*2{cKTt"R,5lo̗6q,G\q` e|hf6(=si1!49cd ZhA?6p;|oX 0]H.?Պ$\>e9.k[Μ)\1M2̖4\km8$3 -qxIM]G 'W،cV">?-#+A,o9e 5#6gfu=҅D"9##gEt8NJ|IXx6?PmtVv]8(EF0iZ$'ʗYֹQߥ\K8pEohːRR 5.x#ǒ3Xy -;:'z˛k60ӟ921B3 %N2%^T -endstream -endobj -674 0 obj << -/Type /Page -/Contents 675 0 R -/Resources 673 0 R -/MediaBox [0 0 612 792] -/Parent 672 0 R ->> endobj -676 0 obj << -/D [674 0 R /XYZ 133.768 692.105 null] ->> endobj -673 0 obj << -/Font << /F8 349 0 R /F31 380 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -679 0 obj << -/Length 2752 -/Filter /FlateDecode ->> -stream -xڝk -nQ^v%5 P4k5Jmw^hh"3ysV!:HlQx; WO% ¯ŻHGA՝6A cPƬ8 "M߾V<>8 LVfXE/0x}kwǝ -US\L.ʲD?v;nΛ(|]{^W@Qp})PwߐnvUS3| !<\D)s$N8( R-j?l%qB55q#a:8v%e1ŸO1 7qh}-/U{踟8,zEGk!vPt%/E%qC9([Ǖu'MΑ~Pu<\X] Y~ 9l."cxbV8nSP]:MΪqU5QOWWuebUr맃 U7t+BS80$M@G+Ʋ52Ãa^KԜlYz醯38hNGX8)If3ڿW5\U!RcI,*} -1is&A~?ks5M};bߗTC:q'-1 -*{T}*[{ôp  PoF!R. -EsmXSꐧ%dw83NL\b_ -wMc3n:6&`J -uNo0CPHk= x?݄x{)ˉ!sͳNae` -<菳D:)tBQ&*V÷N9p t xt 57(b`P\*\] -_-k3ZS[Yn:dctU lܐϥt#//8XH0gf W ̵eӼ!-r4O@jRx.r54ijJF )Y= SC'5'jViKo9=q}ϓoe)}[zJ9ڗ|{PT pZ`՟x[qI=z# -'&` -2R>cJ-ؖi;`|)u/R+.D^yU񟫡z]^y|+No=EJV*Y]h@t6(ؼ -R*qs - +wyQ{EmbcEb0_ʛ/oy ؽ*MoNOL(i*:dyx98 0ުCmIFw -endstream -endobj -678 0 obj << -/Type /Page -/Contents 679 0 R -/Resources 677 0 R -/MediaBox [0 0 612 792] -/Parent 672 0 R ->> endobj -680 0 obj << -/D [678 0 R /XYZ 133.768 692.105 null] ->> endobj -677 0 obj << -/Font << /F31 380 0 R /F8 349 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -683 0 obj << -/Length 2809 -/Filter /FlateDecode ->> -stream -xڝَ_!K(`e&xN|,I CH<ϧn6 >ҨMFE&-B_f|l% Q -g+88+6;7?o -HF%f&M2?}O鶻0zvT=n8z -Aps{/ҽ|+fV9q?v8S/~X(@֢M{[$ECC$VPO0>?41?e5R>/E*(|QdxMxXxc_#lG8>e5UyHߍEć"RU-ll"" \4k׍ZSg ^EsJ5ZbR.; -ԢAm0,+b]n"9;;B( tkUu/"K64`k!X^5]XQJwʽ3F% -RDLZsIA541B -geh!ʪ5G#[{k/@\eewZ3M~רY BhCj;Q!@_5PK^y:UR1럔{z'ޗ3yAЄ'> !7)b\e,\[/ۜIK<>+P6PWeq, NbدR3bFMRCe-$˓I͎FbQP?\speMs!(ń/ \J{ߵ   acPϔ>+/% tWX~t))4 ϗ5Wup1dŒYRCOwƧkN+6;& A~*#1Osk8(&3&ij}s.yy34^u'ni#!@(dG2z/N~zqytS?<%X>/R@)^^ڎ$1~mk_DURy"QwiQNZn;-|3 rB1_zOp< >P2V|ef '$dtuzX #WDu!*eaݣn!?Ô)CR= bJa'qr\̆hE -A(*75VLOǃk ,J̈́8weTZdim -6& < L NJx*#N&WF -,50Mx=dAo@)ЊӁP\ -N0 yG&kVJQ9ީb[mS@ Ͳ" OD]]&y=&'>{]s4WVa҅$X}H]OMu&QoRq(%4zCa`\*A **slUarT׿+RM O&>u=3v/LNKVM|j}cC8p뼕lh^: @P|/y8̝]_^c/Ջot~~c  tϥ}Bo;G)Tt( 'HD!{._w?S3s(- +dZQ*|sinT)C\yΙo2%T8^K$T+=V,T}Fn^iIYL|9]dbܘgsi,b_yo5ww+ڂ.jEJJgKLN|x9%=]pK x\JNJ[kHv\<B\xύn32grI O{nΌ4CWr(1'Ϧ_>phG-Ь)=rxIJy& UF֋XDjja牲 B>|Okϸ׏X|w5rvY쫨UG 79H>Ƌ򟗟QJ9%$8Z/oz𱶬le3T}h-"࢑#\ްCJDm B5{Y\q5JV^5گjOc;XF7arb`!0n\&4+oet`:"6 ?J] uƑB&ecIAJA -endstream -endobj -682 0 obj << -/Type /Page -/Contents 683 0 R -/Resources 681 0 R -/MediaBox [0 0 612 792] -/Parent 672 0 R ->> endobj -684 0 obj << -/D [682 0 R /XYZ 133.768 692.105 null] ->> endobj -681 0 obj << -/Font << /F8 349 0 R /F31 380 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -687 0 obj << -/Length 2957 -/Filter /FlateDecode ->> -stream -xڅZYs~Pe*}TSUkmLm}`@tʜg -n|Q&-U'7;SB@`ofrg*Ί6s~S4ClFf//Q{Skuuרgvbt,4n eީ#SA rGpvU pԑ[=}ȅ#yoŭ6/`U$Å,pa{۶EyjPabs^j[6]ɝ K'Տ΋.;X_'еOeg"BQ 2 E޺jUKMī"Gma< pהĬ̑7lq׀wCdI!WIEE"TKMY\5𾨰q) LE޷({dm:4(jG@ϢQ{ |e` $p t8s3G Dd_𢏵 -~7]ZP$8iJ 7 Ikm6=^HT/>h L#oFK4HT -|7Xߓ9?ZEs@j,^\@| " Dme *W0}4e7'8b<{Ν|#YKf;1 Ux&KƝ,j;+5Iпw ȿo_hґUYBa';3$@M@Db6!=\W3 -2PxȬ_1`U7+oD wL5fIo?|&"6v,"Qk"(LV FW5KP&W]jep -,,,ǃ.{1F|'%4Ij W'zw;U @:΃U^D. -qCt GC ;財A $?{w×o#g]??~{||CVGH, -A0A 7y4x'̒!JSO6B/-`߁}>=Xb\ -Yl.-k9FQР3 WFY3-{h(C`7$3ԽH0<NQŹ l;OgSӞ]L=SRTg Y9s9*gynȎ<(M f45c|`\ߐEU) I`d z8nh$i -IӧOq`D@nYN|}e# _3A>@,SjA2y&S zEJ@.*F}/'$mp czE!t).q>cgאgJ;}W#e>_U v<|[CܴP[;<TJэL^ "}Iތ[ ,-|\~X2D*vW=|r9]vgG;0;gAˈT _4ثTH3P<Ԏ xK /,)//erI J4PWŢ=h̬OݔVN`>3.jNˣ&%*.byPx쾚"WehzXд ru4+I^(RE\칀Gyh">S1ùVv+xVRH= -Jɾ_zG8X/TgI& R c#8&c̙>qT-2neJK*ܘJM"~~8dO('3gpS|P lb|>CT2nM* OIa=tv(al$t`UR׈ k2^=Tw\7u\_OZRvݼ(ahC<+p@GN^C{E"Hʉs ޤM[so~ Up7Zy~ŤKvZJ+~W.XyC(×o$ VQ1¼dYZِU6N"j;Ũ$=eE+:qY%ڊn0gذa~y[܅J#  c?Py>1ֲ֨K}}^-㣬"qXM|W,b*Sx4җF E^tO9d9МF;@Q%Q>G3% -endstream -endobj -686 0 obj << -/Type /Page -/Contents 687 0 R -/Resources 685 0 R -/MediaBox [0 0 612 792] -/Parent 672 0 R ->> endobj -688 0 obj << -/D [686 0 R /XYZ 133.768 692.105 null] ->> endobj -685 0 obj << -/Font << /F8 349 0 R /F31 380 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -691 0 obj << -/Length 2937 -/Filter /FlateDecode ->> -stream -xڅrF_XeBIX[R}H.H0~-Ws 33? 4fIVwl [$"JS7JlyΖsIAϖ:/Ef<Ȝ愓8{IuX.o Îכ w@7-u̓EO@wtHE3g~ĿϏ#yxz~0q4]fgp5$/>7H[ IՉ UXNY* AK)0VH?g>0,,p3Rwc(AU[ 8$%Bl2l/sط3)a85))A E&L:חwìՈu'v@lzq?no3 bnoT?妿?}EA S]iʥpí{9[0By`\`g'.(<N{B] (T:q  -e[MCmǢrĚ -KLYhywGoE*pKL:u -clOx$/C*=Mz3AR 5R Y!|[ޔj!FȐf`iF$=<.BZR2H$U;5}$ݰ&OunGχ"F(Q8RcQ&<X:ͨS9JԔԐ~^h-B|B\[l _T-̣&d,ucANQ*oHػhr c. 2 ;yjfv~m9F߀E4+li FưZ0 g 1+Ȇ9# 1] I){3C؅<g+d=f_?`au3@]{xfɆ_˓WAz, ~9 zQZOKVIL[3'Lۥ'&J^QVl2/:)9眵&Z T)I|3K_`Nԕ48/j:)$Eʅ&tQ\?%y:`B='\Ude -$pߧn1iEpv,凑3?<>`Ar壜n# G8s4w ؃= _YR(^(xqᎋ0?}<}}뿲GW -rV}ȱB쳝{au߇ԓ>EÉj %JP[jT`O'j^Cm<}ь}8Vʤ Gףr>b;#ABоb`.d2x{,Z*`I3H t!&*5 >%?V}-75A߽{?A9!KcS=7`Cg\ĭrC$\ @@;fGOP܉; -K,$0X _ "ݾn6:Os*#9z75gnR@]Pa*!WA/ -endstream -endobj -690 0 obj << -/Type /Page -/Contents 691 0 R -/Resources 689 0 R -/MediaBox [0 0 612 792] -/Parent 672 0 R ->> endobj -692 0 obj << -/D [690 0 R /XYZ 133.768 692.105 null] ->> endobj -689 0 obj << -/Font << /F8 349 0 R /F31 380 0 R /F14 352 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -695 0 obj << -/Length 893 -/Filter /FlateDecode ->> -stream -xuVIo8W9I@Ċ" ҌAQ4i0Ɩmadɐ6-6D|GZ @*%221p;=I4HcBe/<0oGM$P9L5tS]pJ9c1S=b>Bf ̀(*p8czC160ռ`* SIq!]E:Wz!+{?5Ё77׌r5~/6zy Fy3XDa۩j;5\lYc\녤'Z0]I`A4 i֧5fk7T]-H`b#["FC=#R hAl0ɨ@;6 -E~ǵf|Z,KuGm2ms?3.}ftoYE1 ~KCr6)6D:;fnuj?e`,Z:\D#ߣǓ Lxl\_7EH[/PQ -돌S:1*ID dPeY -endstream -endobj -694 0 obj << -/Type /Page -/Contents 695 0 R -/Resources 693 0 R -/MediaBox [0 0 612 792] -/Parent 697 0 R ->> endobj -696 0 obj << -/D [694 0 R /XYZ 133.768 692.105 null] ->> endobj -693 0 obj << -/Font << /F8 349 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -612 0 obj << -/Length1 1476 -/Length2 5563 -/Length3 532 -/Length 6437 -/Filter /FlateDecode ->> -stream -xy8m!",e73.K"k:`3P-{BeɖYL-߹\g뾟y<F"*h;eX0p(FCpY,@K Yƒ.a]O@,%##M0,@QF9 ȟq{Os^pAO$(@DA]?<VNX.Ym,pC#0' 3lc\悂{x$J顱ܝ$( ԿF஄}Ga=e} .Uk$o`h{ ԇ -H  q8P( -%lybh կ1db$"_?2!`)qqL$aG _Ю"ҿ"HB@$ &AL7bZO7Ab~@L74~A?$M7&) D; wdx߅L& ??)$p g ڂ8.gy 6~"@A $p;]$zAgvX6C(?߄_FX n:] % g_WUU4W,  IB`-yb7pfs04L.Ĺ2B[d|z92޼#B{m4E栻}O? qn,[M%kSG;I=cL0ळ t*&TstWf -ۧ́}޼Jm~wmnIˈximwL"s-2 "mڈypi(=s5Ӛ hc!ߛg2~}`zs9ߣ|+]RŠ[zyBF -}F1zF9щ4t{GUr$fbBO{*֦GGT92GGQ]uQREf0֥ܡڸ8hrH Q.| ƤY8qL0 k}j)W4ev1m򕥜 ٕM- cvCG'boϺIgh'FDBO,Ͼ0g-PǑfȰS-ϋӰ ^PcG :[75 qvڳRc?!֋|%&7*s0oU~H5'1=I)x»jFk{4:I$ , ~_df "eJw'47>?L͒L@L8.:͊#>&/c^JU9.d1yEqeEfP/{YDbx1Gg'`Ṇvڮ{iKݞSzGvԓ X1Qgs,|Ѷvg)9)jI?D$/]i /OTay2XF^< #7xQGs -9+e%V"ܨDgw(O}r]Ž19א~B k"{~Iirl߫s="+]⇩PGFR)~ -;R̯@< xFʨ3P,=ְ^t1NNY։Af`4Ճ<#S4aV0zշȵ/PW5POUמ[ gh6]\.lB ŒdX$ *A-sh[m|LBd3 )+%/rq̯b.us[}-VyO)pK׭Cm^fpDRյ"ur>0 -PC_@)Z=Sc Q!_l7{2Wg3u\}%)^RFlt9;)5^>|2[%ArHLPivczoϜ|9^fVCzX崟?s\ tDh~blJM 2xf}L:vVuZZ-ÉR%,֝}:t{%#cEԟ|֓O)|]m7Q9v%5trEzS:țBS36ٝ&5T= - ^*}9_CpCr0Gfl -JHYS&ך͵0)DGf2o,8r3DfmPIJq޶ -G-Zhbj dCPR_S$fQ?sz4?쮦\r >]?e.;a7m'}K-05tISg!b NsuXȌs -RPkܟꤠk'jNH{jŐQ (%͠Ê~YG<,&<;B=WS-[Ɏa/iD0HwZɺt'h5A4apy}Ϊvew*Ruf.! Ҍ %'6|9 2t,ual1 }}p[E'o7;K7+Q44~Um;F‹Oz/v-Q=8۲rli,b{djORyl -8qr,Lè^PbѽGU/ .`F @=Ӕ? ^;w2IB@ ~g⪦[g-R5s7L^jԼ-[DרE -eR#GzPM$vw3˾m -JVH:~ZWS lȶǐ 1fg'ALܬ -O6:- pҎXaЌ@m+ )W)4‹r iF̓<]!GYiQ{znǬ;7v~‡ٹO,(}QLR6K~afb 9D(:'oZѪWYźqLpvWF/*lru.ܥgmƉ큲 @W?*R%6<]f:[VǞDVDœ'abZKb$|`6Lk@% %'TkSV\*OHa"iSi;>zcb%맄0XΊU-;9;ќ2z;^JTLUwKVO0- UmiE,Ҁ‹pƞQCB-`VG]c?({dH$Hvrv=$Uʫ9ԓqaX2 -tX7p+;Cq6Π>>rAc^W71\@u4,Nڋ~sMf#Vs7*u`HeYVb?dKU$wa,,3"_4z -|aڸ@!j*`)))݇Z' -=K l;-Au}9 -;y~&lo&?jȞ|R'6z B61z?KG#ٴ*,A-.pXk?d. _5>5pi6J2uMz)U-Z/ -.)*c=Ra y+MBQSyԬdiXQM:%` ~F˒Ƹ וdzxlF$CIf!6AN1f.e -]Ij[`2^Z;mts( ng"V6A/Nhn:*ygdoʾ+Q3޹@i, -GHֵ+Oʅf"Y}z/8jV||߲#n5Ig]D#*l(>U:Apa 95әz*fDDa;E8S.ƻ^˫[xYnI kobB= R` EIvr! Eʏ//u/t۵\nq|~Rz(im尵&)rk!u"՞5DB:_SJx*j,瓦Kemiv߾Æ ]ʅzv6~&ɉ!77;ɺ; UPNE6 KΏQ _d3YwY2~䈭 {0m/6Mc_5_?K1cN4ɥrj?H3yWlt֓a|jk<Ƭf]̟uS rV`8\>FݗL ҽwm^r.[O\օsWtb*ivc9)Ͽq,>+k?1ީZVe;5rsporw ;U%y2!VˉVTbq[*%.}'W[uB. %o. 4GbD _h휭qBg)ANԒq WSŕRE.IsPB.v,N!H.)-3&AͤjU\qP,/M;Z'oL'˚-(^R˻.mB&34¦8YBcMt14P"P#M;ksOdp [fRC∲aROLR>$2lTKl~SB;+I'\&6&3~r2TU#kGw "eֿ)\yqRR=/R$~nɅ?cA|PJ>ӆ .0s#rˋ {Ρo-|?וu+1?3Sq=v? Kq揢✉?.fX拪x :TUH h./SwmZ; `ZPp8c[6Bn, -gģh) Y95, ->1Tmn?ze5(KJ%Oܯ [0F}λ'^I0zqäd9G&o "}4D]oTS«ťZ:+N>Έ}ȸ@ ( tJyU -ӗEA:: ᛅ(R~~߇a.:ve5-Z !WSwsZHQco/74HGqL(dW]ιNzT{ rlߌ5u٭= B?.~"l, -$?-Cop *36K=j0{~FMĒT[y`I1{7ٺY)bךlԖukܲQNJ,tBڳI -PSyy ˊY3`ͪ璾K\< - -k@0֛JiCOsJ;&,6sul p* ڍٷ/S÷{?wZJ8L}˦L'|P\tp9Ç5mKIX? - jkG{/Uq$c5/|_.dGl 7缭T88|Wy{@!S3  [%(;fW{LUkҷ|VfM?e" -F%+K:;ۤ?q bhW(ƅ -endstream -endobj -613 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 698 0 R -/FirstChar 19 -/LastChar 125 -/Widths 699 0 R -/BaseFont /ATEMDG+t1xbtt -/FontDescriptor 611 0 R ->> endobj -611 0 obj << -/Ascent 708 -/CapHeight 659 -/Descent -167 -/FontName /ATEMDG+t1xbtt -/ItalicAngle 0 -/StemV 84 -/XHeight 491 -/FontBBox [-28 -213 1516 882] -/Flags 4 -/CharSet (/guillemotleft/guillemotright/exclam/parenleft/parenright/comma/colon/A/E/F/H/K/L/M/N/O/S/T/W/bracketleft/bracketright/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/r/s/t/u/w/x/y/braceleft/braceright) -/FontFile 612 0 R ->> endobj -699 0 obj -[525 525 0 0 0 0 0 0 0 0 0 0 0 0 525 0 0 0 0 0 0 525 525 0 0 525 0 0 0 0 0 0 0 0 0 0 0 0 0 525 0 0 0 0 0 0 525 0 0 0 525 525 0 525 0 0 525 525 525 525 525 0 0 0 525 525 0 0 525 0 0 0 525 0 525 0 0 0 525 525 525 525 525 525 525 525 525 0 525 525 525 525 525 525 0 525 525 525 525 0 525 525 525 0 525 0 525 ] -endobj -698 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 19/guillemotleft/guillemotright 21/.notdef 33/exclam 34/.notdef 40/parenleft/parenright 42/.notdef 44/comma 45/.notdef 58/colon 59/.notdef 65/A 66/.notdef 69/E/F 71/.notdef 72/H 73/.notdef 75/K/L/M/N/O 80/.notdef 83/S/T 85/.notdef 87/W 88/.notdef 91/bracketleft 92/.notdef 93/bracketright 94/.notdef 97/a/b/c/d/e/f/g/h/i 106/.notdef 107/k/l/m/n/o/p 113/.notdef 114/r/s/t/u 118/.notdef 119/w/x/y 122/.notdef 123/braceleft 124/.notdef 125/braceright 126/.notdef] ->> endobj -700 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 1/dotaccent/fi/fl/fraction/hungarumlaut/Lslash/lslash/ogonek/ring 10/.notdef 11/breve/minus 13/.notdef 14/Zcaron/zcaron/caron/dotlessi/dotlessj/ff/ffi/ffl/notequal/infinity/lessequal/greaterequal/partialdiff/summation/product/pi/grave/quotesingle/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 127/.notdef 128/Euro/integral/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/Omega/radical/approxequal 144/.notdef 147/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/Delta/lozenge/Ydieresis 160/.notdef 161/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis] ->> endobj -609 0 obj << -/Length1 1612 -/Length2 10867 -/Length3 532 -/Length 11713 -/Filter /FlateDecode ->> -stream -xweP]mp'hp\C> 0Hpw 'Xp  hp~wsuNT=սzzjre5&3{=ؙheg`gRYތ =X h S;; ftijO_!th\Av F5l [قbJ:2R:)E  m.&Vy+S D0lڃͬ*͉ K 89L޶LA 3 `zlںEnn7![ݛ Lb x˪,.Ζ@r;Yof. ;An2̬lo Vpq[#BlANNo0ouuS@[w@lo9Mr[XY=v3 7#4ۺ@,o)tw*3ω? #W!tUڽ ?. cu![8Z?8ߚ!xF+'I+7%h֩`3 - zSfXYŧniejHSgSwQo;;Rc2spyaZ r轕w_`$f͊3l6^am+:2E^7d\?*PXWn[jT\;>w#˰;# tMMIߕFq7Ű-H+tV~VUswkTEհ dxzKGCuc\ۊQ2&~whkcf gWX4H?L"!]Rpz:T2vOTTvff!xtOg"SY+.Nxuc6TiդgtNav ]Y3*_wY]~5:8Q{/Y217Z&-S6GfY4|e܃:\`xϘ|`ݙ4e{Ik7շb7Hm=+BۄMDsAT>aTLf҇C^{RJ=B\z?P ONXJlEXZhJ.o9*'GW;> / |2 iyx_Ĵ3ng7lsߏ.n}8őL%"ŊpUd$ח2r kS^PQij|OϝtOb CZI,V,x`5*hTR;KK5epwI1Sws^$Clѯ4G=1bas>?h_])(z*o1ʡ$B10e[[a-K"OiĞ+I./56[Y {Q;]W;߅>\pM+40xkYMsYg1\9HG9E8 iY{wa=@nlͅJ~g\1,gW/Tȸ#ۨ (Nk_ɋru( c5/!5͂omjx&N =Y8Z wjml3{Dn^p('غ=Q|d\?q| Q^. mPD٣ Ogtuf֝Ԅ~KĚش`rjn޶"091!)MX\RF&k b@604V=| -J8a=ˁyD?q!^89؝Zy-Xռ`9+g􅨲^\5ɥ[3[{!=ujcRn -znIGtfPk)Jqy8 L_]2w|7AYX2 -;#ʺŏdAG>Zˤ-ä )9q_f4 -%f6"rLD陟(.7 &H!t>~S%c}t9 o18amܑ?~'d|Zg& 8 9<0/u鵧?Q)v*a7z'fHN~tpnMSٚt=qi̦w Ӭ#UY!C s_8Fu_V-٢w &.ReTcD.I - -+q@3#;CBmNhH8GbRT@LlFDݷi8BE?N 5жtFEvRmuM_o҃ ǝ*; v3>v _GImԒoU%g^FM{Ahǥх]4go>Tx-M1W,0L/%”([tgZ5:_jp+G5Dy2d!gz/kbcn;%0<1{0$Gg快Ep}mX) []T\xDGR`*S<}~h[0Ukpn阞n]Yz>KnA%UZQ˴1E!JcV"?QT{x `~4W+~MLD/VH23ܳ]Who| j㻜l~5ͬ>Yk,)]kh7WSyݙ8l.Wk>L7hK|i-]dDq~"G#ozo;KY0*kcc=Mh6לfB̼O;ͺWm2Lzk#1S趇Nu.t#HN  Dxxw:+k|%*B/x5ێEO%Gй,wE'.oVj18-Zޭ^eYʿjs!m -ܓ[G{Z?hs[356|ԣ_t_v)ĥi y{(j72E;f"V;6Hnކ~νDdd1qc*pj}R1cp6Q3A a ŀu0W̄FnBj`Qܸ -Mјt&7ƳmE7C+ -jT]yvZ."Y~GM-"Ҳ\E9# MPW\;_DI?eƇbC`ÚC.&~:,!{ό,~@6ZpZeAQ%C%ĉ/WȹoOJc[BBPrCU)tSӦ|=QXe -uW->:VB!FE^բ`?I $g3je=6YSOďp[h&0W}lͿ:/P Dg&/.'t2`KKvOrkށqowȟڑ8MHRv h~{EG#ާ0 -[AQЄ6Lv"ڨA =ᨴ*rgg⛮K*,[nFja2լg>]%n>kCvQNO eTBGYaIp!X-XZa"W -#֯;'*8݉h2dۄI [#9w%g^Gy ϤJ2S_q2kOSq޹]!A<4_݋E9[R۳*J`%hWO]+7#KP$.EE{pB;+#¹7DXY< rDlD&ch׃);DG4hs_]rņH\Qz ]n\kj 6F»eAm=xXZl$3d"xs#A0̳mTI:j(Wt|iF z%G$H KhUMF»[`](GD }0Z5w.H0_O?>sbCϯXH,fd@Ygyڌ7Q"HpJй־/ -II|pTKx?Y[#t1p6|\-ك6V<ȻāF#zk%NG5aH0zaQbEM8hC?F6JHx>H5 ̻# 6_|@uiLlU2N; GZd$Ja|’TȦ;uڢ+G_JjfnLDu_uN+MlZգFdEū/gK3&u76*xrƥ1'NgV>N!7hsO6EZ%>.5lhTк'/xč='"B_m[na}rV7762XBE5P|+yCe5m<['N&(V Rlп^~^{xƺCfAHg 8I+CJ@dЯչLzV_Zk7lrW.mOȷxԡj Z2mI]l uRWOAEBűuV˔oƄIz8+Mh"Y@'7+Bp Pjѻ\oB;ZD 1S+=طcq^vg?I\UQu"t= ȢBlk|;,F&@{dxɶC_%d˫3 |E+XqcRUca`nhdv3Ϊ׫OqE -C@]ͩ"f˅Qr{EMUk  p)$2Inin\G7%SpӖ}0ECՄGl{*аR zwhw&mQ7^NP-: -QWôw4;pyIB 3Gq_JG. 6H4&ҙX0Jtkc0-z~chUc|f8~VpH}]ʘ,v`_iG\]{۪D E'd(57YjT`hh0{s02fwڱNvJ}b ]X\T\DG+iw#|' 3Q᳁ Rs1Gl.~G៛w(~Uɟpo#*gKvˤQv-C}y.͈砉 Q]Ɣ 4Pc!%}FW#bwzCm 9y.2G*j#}E!@]̂lA[1CVR\Ix%OXdgd{6ϼls^U99v{"`QICY=qFC)O- fv;i/X_G;I{>*U"ZĔDwOh h9[P1v6Kbn0y,ׁ¿+-kBZ:`}:`& SvOPOxB9O-G}֤:ӵ $:Wׅ";mO0(O.~EA;ۙ.=7@`eONlwf Tw8R޻+6 FAkX)I$SC&Q}X_d ~ m6얔.Eȑ+zMdP!d>C:%i@'k^"l侗!O/&>K ?HW >69j=@3B^:T-o7KXnn.,>kFckvȮ`7ho7P١y9-ʨ*,V|ahuNL;?9Ɣ>tPT.&|nwFvY֫.T#q~O9h2s4uI.<t'"5K$4a@ ?b-Pa~KkݸqXy"E}M -yi -f|U;Z[]X*^bi(0ZoҜw: Mo>u ,ebCǚJ!Q9~2,Ȼ@Xa7b8 z/^:Xb+J_Ux(lϱ+OdSU$_Z;-}ᵐc?cԋnY0qO+54yKp'q&:]И?PcL4`KiENKNRua6p8+N]/ROgWXU6 mvWfC` -yJ̖^tw6?#cavԹR_9?gޏE~e=AIG"6Q]=!|%)rql }҅}%ߦ7KYN`gGZL3p &>}6\9f@-vAG~nF-7wlvt(ێEMzB֓LT;-\aMHU) uC@RBVfZKfMZzbƳc]QQzqf`QWKw=|9@ ?:Mb3Hv@[ -NX`zÁ~i:L7qDnoj+}vzUL.)ej68alzEoAm"Ysƒ '}C'nFyVՉOu -GQOq#jauA#UÌ׫t%]Td*+ZA7:Ȉ }DJ=f}D:|Y|H8{2#qF>AE|o;.m%^,>9%5 $c_(v훦 -upz):c<吹잝p2mh.1q|3g0\a1D:w~8Ҝ4zA;./kkNSAG% -C$hI+] JkItk8=SJ|*-toѲfIxAxٯ<.vR$tytQyy?DqH# Óli:0`ʷuyzbN{n~SCYX" -_RDAQ}^FwAUzPK^dbRVa{y4N'C'O5lNi=+XhOyY-*5eM0', T%69[?kaE6l-%KC%Y>v~T6VWDMd"yj=/EH`u<Rul资Ut/ PƘ哼lDte6$W -EYW5 jdd88%HSjG8ov4 5fÔ2dwu!%{W^p;쇗=j0̉`[hsTT2 ;_OS*ߦqxImvFdpy%¤i`uШW(h:6P\HkuOSAjF*vU~E62 -ȷxU  -y񱯦;7Q H;w[DN~31 iN^2^l#`Nq4~#>L;3״|ќVxxc -MPQxH<6?_׭D(*! QT jJl;Uk$,Egrܧv3 2  -owr >,OK(5Z(Pgm{pY(6 hSmWx72=͗^," }xҶ_Ph5jrf7#R-Uf!e0,89pjVȻN0PH`%p{;UA-'ޚQɲW/!"σ5}S cM0" h/#|vdfv -^= ފaƸ0Ew-aw?nH* -#eaR`^*I Gh ~81g+$<;I_֥lSxU &:l-.r*B9"-_Us9FLLj!s!XtpEO4Gew-64[az8 $4&AVE鬸 W0XLB~tBq?웾k Q5Nop}LOQyN|LKAx2Lrd/1I $9]+rd! Y1i׎f#3+?5NSu C(e]w=Fd4DHqKq_衅"*EY~1`ӻ$7O~ ^͍x TdT{pʴ"E.T3_׫oWMr]V^Siw|fɼ)IhAi uJ쟪iN&S[ΡuHƚ ~R-as|u56PWHoΟGNYG -vo8D.ôEitjI\X.2טTT35(sY ->hA'a;M^|PIa>IV5lQm[[lz<^wdQ 7%I\e~!LWc loNC3=e5!COڂg{; a͑ -endstream -endobj -610 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 700 0 R -/FirstChar 32 -/LastChar 125 -/Widths 701 0 R -/BaseFont /KQCDEW+NimbusMonL-Regu -/FontDescriptor 608 0 R ->> endobj -608 0 obj << -/Ascent 625 -/CapHeight 557 -/Descent -147 -/FontName /KQCDEW+NimbusMonL-Regu -/ItalicAngle 0 -/StemV 41 -/XHeight 426 -/FontBBox [-12 -237 650 811] -/Flags 4 -/CharSet (/space/exclam/parenleft/parenright/comma/colon/less/greater/F/H/N/O/S/T/W/bracketleft/bracketright/a/b/c/d/e/f/g/h/i/l/m/n/o/p/r/s/t/u/w/y/braceleft/braceright) -/FontFile 609 0 R ->> endobj -701 0 obj -[600 600 0 0 0 0 0 0 600 600 0 0 600 0 0 0 0 0 0 0 0 0 0 0 0 0 600 0 600 0 600 0 0 0 0 0 0 0 600 0 600 0 0 0 0 0 600 600 0 0 0 600 600 0 0 600 0 0 0 600 0 600 0 0 0 600 600 600 600 600 600 600 600 600 0 0 600 600 600 600 600 0 600 600 600 600 0 600 0 600 0 600 0 600 ] -endobj -594 0 obj << -/Length1 741 -/Length2 1118 -/Length3 532 -/Length 1675 -/Filter /FlateDecode ->> -stream -xmTW] T*/J!VL4$E"("D)APĴ13 #a& $E((U)jqA= "fQfV@Q BBQY#YqӞ2)D}Sx@4 1H~"R8/R ^r!SJLȋ8$W*Vw?꜈ xEHC,.Fx2B8G` `"E1}( +FgFH*0"8&SqY|R&. 7cQ,*S"cJB>#Pe#0]8 TdIeѸ- -CP8HD8d`BcxȀ]O^,Db0_5km@U``@Fq{ۻ͘QL -,O "0Z1Y,@TF`: -LiN=YΛk~ 6D&x0YFO'Y`ĻZC"&uub*j6ohFs)IkPE7m~$!((2A鰄k[;ؘ(4Z|@=+xx8JhҔPg{`cg?o~ l5-}1/MO@6ioލoo'GxWQӇQ3]uc[p3s{1 ;\O{l4d_S\e?:a ~y[mLo,ՌWgMPFcz}d Àmՙ2Uv߉Ltkȶ:6=R|}9Q>EuK^]>AkE@0=|nmh6O^*?ECS+){ou*Pw@J?6:ZQAV^ Qb ӅyꢔνXR8uaihjٞGBv\dүmkil -68gꎫd~UTrX072zMw#[/%$'J>*t5櫅,\i>6]sj߲{"bVt@-cv?pLΈA=Zظ_i{l}rW1c:0'w˟GkNjz;f9/)H9|,s+wv|vDBܽaE(OMOq ,Gg_Ww>Jytfkg5 تA5kUCxu|n}˒+=c -*{,׎BDUF苣ԩ/D:u%ۊc6]TZvdO8T;ߙ \;IUwZ{>GL[,8py6uF=EcՓ]?x ==}v}<%Y0FS_vuyuкҬraYrYsvAݲ6Tۖ5\> endobj -593 0 obj << -/Ascent 694 -/CapHeight 678 -/Descent -194 -/FontName /VZGIXM+CMTI7 -/ItalicAngle -14.04 -/StemV 76 -/XHeight 431 -/FontBBox [-27 -250 1268 750] -/Flags 4 -/CharSet (/A) -/FontFile 594 0 R ->> endobj -703 0 obj -[866 ] -endobj -702 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 65/A 66/.notdef] ->> endobj -588 0 obj << -/Length1 1626 -/Length2 4760 -/Length3 532 -/Length 5603 -/Filter /FlateDecode ->> -stream -xTw4ւhѥ?w{'D313fF^#D-D A"#jBLH#9;s;kZwg?{?}x,%!HwVa>~+9RT -D]4!z ,TB=(di]$* ¶Vv"bbZNC{'$~CH%BP<`p({64 (,00` -CD?N[H1`1 N] -a0o< 8,!p?) -$F}D0 $a(,@jgO{Z#1G!z `ZPà bm" - MCx@@C=AhaاOPQbpIYbM0X:cCEΈI H<@=h̑XbI@N#{U}+n!.o @|d@CR@>0xh;lup_}Xq$O,ҒaX bÂ8v[PG -HHKg{#N >Q䥴 -;ЂX Z1CBq8A!2 -J  )+Hd57S7& -CP0$X5fn~~cO y ٦8\v0FeTד Ϗ&.vP]a|"L \*6CL };rn3؈.%ԤSIvQ;?'3'܃)YQWD -:[:efF_>O]zcHk-k㙓8΢fslLe#P腠ʾ^`ssdDgbv>ʪ~i,)69ዝbf+XZWUk FƌtYմ2 _r<Ω6'EGK3xuc!| _?nA 9H#׸.AV&o-N)[Wa:cJ}2ۊhjh#Ҕ!- bULwl*R&ol2tQ&E⇟B:!'&GƕăE Hlsā/*e7Fcr|bC'}x[e5B1:@XdU+YhUsG0릆rork%& Kbb&sy!i䨡pjPVӞH3~*Ӿ(a6ثy8{}yɊN8ds[ M7[_3DXˌzpkviP6 9c'5oj4Ѷ}w 263tvn<(yyG,|44]1vu j16g}pQa0Q'IOxq`b̢x'$AX4/*x[;3Ћ351Z.:d!Gh)5AxˡPrWn]G^o'l. G6# -xeGo/!] ! Tr IgE@Iq_(r̕{op]̷W)]^+JNoK&-4xܖ^ $Trw4p]h Zq{M 8 QZ=.B=l 2Tp];T$f]HL+3Et'g>P2^@qVi9taq`avGIoQ&{S0r'DO5S! >G5e6gZ1$) f+fRs! 4н㥜g_Z0 \OH -r-҆va\$;u/6(cY\a3;åwjxtMXP8ܿ~Wѹ]`ڝU#j>uDά 9}ƍҷ~M=z_/a~h:lqd{nW 'φ!YǼ:xȇgmB_^46>o+#\8!RLhwMO.l>zU`_pp)1˜lP0@0ZxgCK؜@J kO-ڥ1]^~F~:xO2dUmbHN  >^gU5z-r÷³Hm(֗\Q(v"5/5_p׫6h m7G9ݒvG ڠ+wObi=ɿ'Zpq>g6m<`mª:Bk-dˬ] B`ld4n76u>sBg -v{PZұfdn~dZYsuoe$#Nbta1<*_nP%S\ 0O¡+ -;w? qAƕ$3Er, TUBJ >+PrKCMqPZbpaR7ۭ~G*5e]t4O5KSV.n7Mg zЏ7i^ݣbf7ѕS:_xs9HqE&,|8˒x 7L{GjƊR5sTF7%I= ~l}y'@Nߠ ԽTKytezBI&!k<9KI2LeK l+o{uQ DЛmbkm Kdڣi9\XSq_񔪮f(zIK䧯ՅY 7*4=yLCRђvnCIqG$c%X+w{M]_7:( @u^=7Z |@+q*R{ Azd˂'lvDa(Gy<`KY5wB Y )i| R⁣Y֗;w(x -.]PM ajd7$+V֒lf %1 Xudc_k/+${BV ^L|-/A|VgWU_\ 7Iy4OqDz_S9|We݈3+C1TG X#t^UÀA´#E'z1RDYWc1dো]Su[}n4IICL3D3E܈Mlp33Uo*W g;)rEؘ__k2O'2Ц\g: z -Ql~O^#@7 -ӣWbGŪ*orm,+ /qvvH雄ŲAjC5gy_EjCp]gJʋsv/^`ܓR' j\Z::{a#*n NWV$SШ ٿ60T(x?%z&QWeᖒמ]V\QQ<+Ko/h.]-'dSH9*9R6YfdJf >ˑ?R{3'Ǡ$rBoil;*;:vm tLLBW)e"g^ZO œ.(4;H*ynisµ 3ž?08ouo_ǵ*tCD1_,>fٯ5(3!Չ<{M(?FLzqjWqU-~oWڄ"X> endobj -587 0 obj << -/Ascent 690 -/CapHeight 690 -/Descent -209 -/FontName /ANGQHR+NimbusRomNo9L-Medi -/ItalicAngle 0 -/StemV 140 -/XHeight 461 -/FontBBox [-168 -341 1000 960] -/Flags 4 -/CharSet (/F/o) -/FontFile 588 0 R ->> endobj -704 0 obj -[611 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 ] -endobj -572 0 obj << -/Length1 855 -/Length2 2275 -/Length3 532 -/Length 2879 -/Filter /FlateDecode ->> -stream -xgTSbP:mtJB @%)D XE tPDܨx=?u~f{wZv\N Oq(dR0FH)`*)d, DH55$CRB+)CaI 4@#HD ai[%- 0z0A/" H¿::Ev*x?S ՛m -d2A(ܘ¾ d;oY\χD2z|֥D - F?gOѰ$"NL {GDQ}oaom 02 [K$,~ȿ*8G BOq<2Rt({5؄#"?0\L\\(Ty~ }'5H8Tिɖ"J :mmy9$ e5+P m)]Y?Cݮtmh<;*tKzf%?Ugb5Qδҽ14P)j3jD<%dQO(I`KnYMSI;n=[ZbJdU9XIH7o<-j"6܈z5[w=Dvr٣H=`G7Yoa4qJ+y2Ic}aop:*{sn pIM EaL5Z`,|<{@gܿ3#G}KG[#d!FƪsZ{1YjMx)1,9RQR1쀶qp?#:Xgɺ%shNW@H!R29$ahP(fH[f]aBF!~}]/Jlxs˫4[⻻]KÝh 9.X63t9[<sP_4H89|ղf]DH i 7օ3@W/V..1CR E3Q9"ʆ#Ϣ#%{!6Kw#B- ry%i rǃ_C+lwLfOhjBMdqrjT ]]u/ͻQas+ƨ)Kb"CUoyab-&-*Fpp5tdY -4QgջD\닺ez.tċWeP ݻOuK,q>5}k^5 ;8*: -0=3N.Q i98iހͅ:1K}Ld);y3ǚ*O#/tdjtA9ULfK%F2>bCk kEBz\32:-/1%bާn,_ J?Zr] -oo~jjzxԀ)V4"=ûC =Ν1哇%jI2E?I׏zcU\SKAk#^d+UbGJ17}xk:f03 Q|܎NY\zΑa)_ᴻ->Yhq-7DO81zm^/c]:1'|tOqrsuZYmKJY/˖+φgq gD?-`tz 1`NvQ.Alb ň3wM,@R2,0ӂIͷdYcDW㗬gٿ채#v) -u퓪Q >SB"|F[NU>2HlDn?{]5mt+yu/sˎXc8yעA8(X;_ -endstream -endobj -573 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 705 0 R -/FirstChar 97 -/LastChar 114 -/Widths 706 0 R -/BaseFont /XNRRKC+CMTT12 -/FontDescriptor 571 0 R ->> endobj -571 0 obj << -/Ascent 611 -/CapHeight 611 -/Descent -222 -/FontName /XNRRKC+CMTT12 -/ItalicAngle 0 -/StemV 65 -/XHeight 431 -/FontBBox [-1 -234 524 695] -/Flags 4 -/CharSet (/a/c/d/e/g/i/l/n/r) -/FontFile 572 0 R ->> endobj -706 0 obj -[515 0 515 515 515 0 515 0 515 0 0 515 0 515 0 0 0 515 ] -endobj -705 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 97/a 98/.notdef 99/c/d/e 102/.notdef 103/g 104/.notdef 105/i 106/.notdef 108/l 109/.notdef 110/n 111/.notdef 114/r 115/.notdef] ->> endobj -526 0 obj << -/Length1 1085 -/Length2 6204 -/Length3 532 -/Length 6915 -/Filter /FlateDecode ->> -stream -xeXT]vhRb.``aAFJPBPRJڗ뺟z>xo}c1)U'/$ T6R - -*ؔ -+Pi0Pb;}ĥl@%r*q$Tp  8Prj8`@C*`@Vx 7(= -IJk7yk -M.I0!m5ȭ)S-r+ 0 g)_!`?( wA|BzB}!`=(yBtrۿ}YXhA(#?wPw,o-o,tx{{db*p -w -AH$p{nI /_ ֱ?]L @忦ER@8P@?$)M"@$ -0Mfۘo}Cx୮x+ o~mm!( po"ۺmWP (|73 UG(%.e:x!8h8g2a.%A*Kq<2Æ3ddȧMcFCp2hiڮfQlQ!P |W~!޾ö 懼$n9ћM< ,'8UZ߄$ -hwcKfg\GV ^YZR!&[IC;E2O(nipD!5!wuWqu 8o+~{F/cNHأeB"iG\ /wgęއz0t|X>Uƃܝ!XX[[#So=cuS!GC6N9{88W^J,J.N;.yr*̺at_6שBJiAStf)p2.G|w8mLuFV+-S4?G~M"ebZ۝џ -%~yP+:T -_B#m'f1MfkfoeCIȊ2bo4q̻S.[>T M ^6 `|,y6 2 y*xeb_v=B vV(Dܒ=5]E6|=\\/v=>]6r`'2%ٲ8Z [Zsl$PaUD3le[sʧ "Azr -MsA3 ՚z[ WJӢҜ v.U$G$nr&V g,?)+Զ$ ᱝ!0q{_5d%Oِ{(Dncq$˷\gEM4dTQI9E"ay+ -jK`*rQ;ߎ=OGk7 A[a -i:x i~KIy/eu/2#?VF3.TDMKJvͿ1R1%pcg}϶&fե^@ln Y~;Ct-yAƹ$K.{EeVh޴rHܩ -,d晙 W^鎴rZik@U28"PUe&++wd8DnxO6ہ;i9K4w>4{0vt}>;cy6d/kE4X^.#uny>ctj]* e:ɵ9VF gG˝i2) -nlGiMtkRMO{%=G0QbW7qo xJt*_*9&#I1+vQQ^ȝh)o>?D_?~Nt7Ԍ [xƞ,g - ,]@smȝL7֦K^CD{bt-dasb,+Jbܫ`6z JT׏;q.bC&GҚ_2)qIl/}ޒ kDKVp[i56շ'^N3*b;8<ю`m:`LUcD;89MBꬃFHKeCmޢiOj2ە -5Fc\lEo[a5WQz &vcCLXDSăA|b5Au}*X3߾f .2jYRT -y}ī Tb.]8Á2rt -ɱ2fxcoMWs -YzkDeʢx+d1)5q)-.&6 \E\\I*/0tx,;?^N؟sP4XEϒ9*[PO3; 2ӸIY !?U$+_f0j>w:^Rk~ZY^gF3Xv3BLR cǿ4hZ O]|TmS-ڱe%*7 ND;Z"%C2Jh5}Z!oP8gc6w ^S4 U'%6R:Fz7<l'Lz"Nkk(P$N_vRɿ&fu`Ck*n#R`u=`T ,|#tLw~a׽8ʼIni,B٭ɹKTdEcG"I:sM3Bv{^U?`#A;)IGz?e ML$$H4gQ.ɲv\h#~0#GL`GJ'HK[dq4/h!. _K\̑d@Qg}oeXǷ~p s2G9R*a,|HضCi6Y- g^Ԝ1 {Cg:^TJ+G[XI -yN5x~-1WȧD*tci[4yWj[S0!@oS'9 {7j -L/3J A=^t.xKG N[QQM -EA*isvgI0{޽eV]}^.lFS(P@Zd擺:;M[;G=^y*1Y󸴄ݹvi$WRkrJP`WO12gӜ((T}Ð$\ْͯ?jPk<,xUDuoF $ݒ;hʰ=ϟdj]گKCaj5]¾QIeN̜X{{鳅:  PnEEЩʵ8p|>/[+ -aƨǘzɂ*rOxȉ|Urh[Ramjݭd7](713]S /C޾u\53 yEDz?ZϰH~\ٲld9[&CŽ4/c\)J*=rO-/tZ>Pl6-JWkT]ZߙIS ^Mg2veN ư:\Q=l&khoBޙ$,`x͵,e0e_:X{/yd%1 -{^֯_MbD1^E\E6SUqkGg=s4LۡuΰӞZ{+HNUY! 2 -Gs:>s[/I]g/!e@mS~9Sid>-`W*52piwWx.x썑G*\zR̙ TWSG?9`l]T_Tv%.ع'%U|Ռ攋s`{2tz,6G&Ĥ\*ܡ:],Q5R6|0_H3YX'SC>"tۚ;h+f ɏj -x@ǎg%~}5T4X9@m2ŽTzO$!#k$]9_%)|<es]_X"*F*xw7Zv{Q`XZokQ-=mIE39[洣8wR6 3^[g}bwZ̞?ʸ*8[T&99+R ĮIhdD4_e[ӯ(s j-^ .Sҹ `tmm6Ϋm !< +PthϥQ!U}Rѿ'nlWKI -wsG>e Ͼqp &)D7pFY+02cq|Hq)cY5?Hƾt,鐣cJi 9$r`OJlE0hzJI>r.n/Y%Ee}r.ʵVGUԑb(=R͙" s_ӄUdwbIXhr%;8m`&iL'+ǿuS}.PämZ2;.B]> Q:,gAwb&]\cU/Oqb-+οLIhBu?{eIh18Rϲ?Z\:S^˧%7᥹&:_>!j񞮳Q[0rcf걔61TP 6>2tLH Vo|xU'?q&] f`ْ|QIn%ql 8Pc:Lm6ά(BWybN\xT[qL;Rmd+3xQVJDIRJ܀En$VZRrQ^.Ba$-] -k#?kS#RwΔ"9:ѿBLK?>U}HWyDZVFuU! -&f^Q^W9P6j.:`h 0;;gPiMg_ʵLi,Rœrd-gw.1 :> endobj -525 0 obj << -/Ascent 694 -/CapHeight 683 -/Descent -194 -/FontName /HZRZVJ+CMTI10 -/ItalicAngle -14.04 -/StemV 68 -/XHeight 431 -/FontBBox [-163 -250 1146 969] -/Flags 4 -/CharSet (/D/E/L/P/S/T/X/a/b/c/e/h/i/k/l/m/n/o/p/r/s/t/u/y) -/FontFile 526 0 R ->> endobj -708 0 obj -[755 678 0 0 0 0 0 0 627 0 0 0 678 0 0 562 716 0 0 0 743 0 0 0 0 0 0 0 0 511 460 460 0 460 0 0 511 307 0 460 256 818 562 511 511 0 422 409 332 537 0 0 0 486 ] -endobj -707 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 68/D/E 70/.notdef 76/L 77/.notdef 80/P 81/.notdef 83/S/T 85/.notdef 88/X 89/.notdef 97/a/b/c 100/.notdef 101/e 102/.notdef 104/h/i 106/.notdef 107/k/l/m/n/o/p 113/.notdef 114/r/s/t/u 118/.notdef 121/y 122/.notdef] ->> endobj -459 0 obj << -/Length1 772 -/Length2 680 -/Length3 532 -/Length 1232 -/Filter /FlateDecode ->> -stream -xRkPW-Eh -HG.<6AABF:.7eV -tE`XcJт,LgtiAQ -2(:g{ - Sa$MTYrk@b[@%ij# _0]@@$Ah!Y+@2$Q cӡ15P8 Y ޺# ,dCB( H0ՐR `MsP6d8S38M *DGsgAɿajxN4VykHT" Pp[,$Hf>*g15QijZxt "I=$$΂3}Hp)٩` -+LRRBܚ> - J:1 f@ĜD*F9"!E% T4X MArCrv^`x87 -(X/E*J@@$oD\0bU$-z#޻./"N`Ƽ$VovOcOt)s4\4+O$H[N* 2+~߹x\5nҝVpyv6@ħqwE=:#4Ԙɣӷz>v)|g_?!!ưc2?hG -endstream -endobj -460 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 709 0 R -/FirstChar 1 -/LastChar 48 -/Widths 710 0 R -/BaseFont /SPRKII+CMSY7 -/FontDescriptor 458 0 R ->> endobj -458 0 obj << -/Ascent 750 -/CapHeight 683 -/Descent -194 -/FontName /SPRKII+CMSY7 -/ItalicAngle -14.035 -/StemV 93 -/XHeight 431 -/FontBBox [-15 -951 1252 782] -/Flags 4 -/CharSet (/periodcentered/prime) -/FontFile 459 0 R ->> endobj -710 0 obj -[339 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 329 ] -endobj -709 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 1/periodcentered 2/.notdef 48/prime 49/.notdef] ->> endobj -456 0 obj << -/Length1 758 -/Length2 1256 -/Length3 532 -/Length 1816 -/Filter /FlateDecode ->> -stream -xR}K".k㖔* ]FV {Ϟs}{y~?a XdC&M(d3Hd G$D`''*a ht2GH"i0"@T#ImQ ȳQ(Oa _H+B,JGwwuejV*,ևl+jj|UqqB{3x{nIQY%ㅲFBt,dVBF]Kσ߶O(pPW"v(1ȭ -H;}Θu>">m8F+7gp< Fb| g| رƞҷiZ5˷;.(Q`\FvD;r)ntdҺQdHt8>R:we2a^_Phgk͝RNMv^ -C qk>@Yw?[fj&RO⿁-f[U% TOy ?77hqX/<,`TDhjvDzV׹/qfO ՊJѧK3$fNӷ'2m]B+alGٻj =yT*=*R3J Bzy^/!Kzqt뿔ӛ|aϽqI+7ZSIp*IqD}law|iosw7Zȣ"iᬌLw)]>ӏUIU[bShxgy&={kGT 6k[Lܯ8%E>_L0vl{.p aicӏB'D98`J3geBpo00O56ԯ5٣){6_ -NTxdZX+d%ڗfӊ. ̏r~^M -7%گ7ZPSG,p?ՠ eI =tϷC #':l*݌H,$>}:2UޮR;T`ڥ (1#J>/ʱêɂMMn\c~".C{A⮜-;7{C}:Qa2fϗ?vP~u_zA}2_^֝{5.TX-'WΤ~_Utw_:X2)+di+s[rlcSbW+Ɵ_x7֙Yߖ>uHfiPNy sg<#Mz_u_Z%N]1x瘬y&>eU=K?nj66eMz:R.U-eqxjEf%]uRpǩ&E렷v*r=^ &tL]p!z -O=Ʈ -endstream -endobj -457 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 711 0 R -/FirstChar 49 -/LastChar 51 -/Widths 712 0 R -/BaseFont /KICUOQ+CMR5 -/FontDescriptor 455 0 R ->> endobj -455 0 obj << -/Ascent 694 -/CapHeight 680 -/Descent -194 -/FontName /KICUOQ+CMR5 -/ItalicAngle 0 -/StemV 89 -/XHeight 431 -/FontBBox [-341 -250 1304 965] -/Flags 4 -/CharSet (/one/three) -/FontFile 456 0 R ->> endobj -712 0 obj -[681 0 681 ] -endobj -711 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 49/one 50/.notdef 51/three 52/.notdef] ->> endobj -453 0 obj << -/Length1 760 -/Length2 1565 -/Length3 532 -/Length 2125 -/Filter /FlateDecode ->> -stream -xRk@cg% @fA -F@, d~0| dK'_( -B!@  -B 6dɃ6ts+Be&$f3 -|`4HaKq7䗂[d1`B@ <֗]d2hdv8 VxOuF#S(-Qrbӿt"oӋG6t=*`|"/c_Xˆ-x(>ʦt; A@>/"H@,`P H ,0*=Ha0]Uj ZDt`C G!F48!b 1LsH>pikaUOS湴 wϖG[q3P]S7?.R ޝq8ngWBЖvdJ׊/]L]nĵ]' C.)U\&7zNCbsղ'n.+h9CT7K>;F8m\lu}7gȻe -j$ F7bu5n]69KŎ楅UAz+wO$k>m{ڇ7y'(:. -)$ zf#8}Z}ٙK{d,܃ ~(}4;\@൰mކla QFë̑SGn88":Yur -$ZB[$[ś -&sa26!GMݾ!s^fn7 vdn+lQވR2zd 9bd5F <1s5Pmy;`s؊y9'I{dݫڄn{Ⱦ7]M.кDSq>$Ec!}.nPcg9^0Ewd9sm:oɶo fUVok2 QxZen]Lս*c=EBIsiEWypj}eˡ-_={+QY%{k+;5([̿^ؿLu40z3SlIte,(␲zR)wOښuFw%kdž WORԓ-^7rE G%K:>&V5Ԓ-ױ?֮%2{X@vEȨ -r^تݞ||>H|[ Ap]Q$fj$˃%wqsaI|?ACNGaŬ<'hy:HH9'LΊ'zW&q%i {i q]b"WLؼhv@ܺTmJd+FFZ(8kqZߩIUQz -Ɩi}To.\gs~|'s1WTBZ"swzߩo$)J5z*X!!:[k۪j5:S?cJ-6Ur5U_BƄ@Y .Vh -endstream -endobj -454 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 713 0 R -/FirstChar 109 -/LastChar 110 -/Widths 714 0 R -/BaseFont /JKMLSA+CMMI5 -/FontDescriptor 452 0 R ->> endobj -452 0 obj << -/Ascent 694 -/CapHeight 683 -/Descent -194 -/FontName /JKMLSA+CMMI5 -/ItalicAngle -14.04 -/StemV 90 -/XHeight 431 -/FontBBox [37 -250 1349 750] -/Flags 4 -/CharSet (/m/n) -/FontFile 453 0 R ->> endobj -714 0 obj -[1228 881 ] -endobj -713 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 109/m/n 111/.notdef] ->> endobj -450 0 obj << -/Length1 836 -/Length2 2347 -/Length3 532 -/Length 2939 -/Filter /FlateDecode ->> -stream -xRi<lkޞ3c4ֆЈd˾fy/_u_aP;5#<4Rjz fBt"rK ]]-( 5JS &TKM#2H#K QqDRH$q0xu'7C@=ST@G8MJ$J!XHOjWgUsZ{Cy'J%+ooQ).om߭VM+*(8Gf}ݖR[^ckVpQ#B&- (U[RVjx\.d%KbXLQo"O}ut>lC߁1' zcR3G˜da7DݱׅhyƷ+lՐ E%{t !bmXVK拒st؍TGxx --(JN޼̵5ʧT%?0Ӿ7ʶq]^C<_cE>}UiIpK ]9Fbd6;},4  ֐O$46evp>!c%oenr=ǯJ_MtW#KɇO&UkX:ClIHK9s\HȕuZ|oh,>b0M2a譝:v^b5w0g4IeR EQ_LP`аsf\zYD:v9$ҩ>Z{E!ϕ\O{{2U4&'I#]E*:=O}k*;^޻,JyۡG9Ya % #7nLy-_v.D#s+g*j76L"\{F e*yhG}(tilΧ^ʞS]SIycZn?!*ĺ-4OS+5İԌN(^Yb_3Iw@XQUgW%W}8TV `[U#WNmWd\ B}z&~~<24d)pZJ.cx7PXEW~bS].!'T3|4ǠE٭JE\DDhmk[HD/Er-0Sf9$&GpMdՠo7R1 )bU$K+X(aAMi›$_n91_P+,#k |M8+2Z񞒓o̫0r#\T`ʝxjW(ةq)*S4Rto97)IzW}ES):?\p~2w5VquVdyX9zӥ]^k-kGy:@XvVÑ |{\nf/%e{⼫cM|"@^G(/X7O7*0hʰY-Xw+"^xsMwhƶ wk;dZzx)4Kڢx/vEP}8n=чVO4[[n*&nNM-ۊe\GOm͘"ӕJo2<$9;́.{{VYuKW7EcS6m"V< -:}ŴBHiOw\H.r~ILyEU"ēw~ mcmPzt-2^E,j}?{R۪7;  ʇϨj \M-VRnc]k%wڹm}ww0["I/5h1IxCY ʺ0}1FL '0(~ 0Ӯa1".)A?ڰ,\g&t}3, mژ~"o6='GGUQ9uW[kkK*7 % ;ct$k=saZA{#=k<,Groe/+~[NvE%7R]Y?\ܷ3/> endobj -449 0 obj << -/Ascent 694 -/CapHeight 683 -/Descent -194 -/FontName /OSSHXB+CMMI10 -/ItalicAngle -14.04 -/StemV 72 -/XHeight 431 -/FontBBox [-32 -250 1048 750] -/Flags 4 -/CharSet (/A/B/O/d/f/x/y) -/FontFile 450 0 R ->> endobj -716 0 obj -[750 758 0 0 0 0 0 0 0 0 0 0 0 0 763 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 520 0 490 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 572 490 ] -endobj -715 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 65/A/B 67/.notdef 79/O 80/.notdef 100/d 101/.notdef 102/f 103/.notdef 120/x/y 122/.notdef] ->> endobj -447 0 obj << -/Length1 780 -/Length2 1299 -/Length3 532 -/Length 1866 -/Filter /FlateDecode ->> -stream -xR{8TƳIЅb̸߲݆aHa6f4f10VE{鴕'{x}FSӞ Rf9P[N(@x Cs  <6@-{&S6dC4* SjШLL@2Ɖ( ]t`(l!B`t s"P ; -5h&"f1y ] aj8dQ7ьR!&w  t nY#t%!T&De2AAQD )Bc!Tf,vhl Nx)ܤ(Tx"ݬl8h#~v#!&ͦ0^1  kςFl0pA `Amѭ0 ܬvv07N` -Q x05%[#FU]BcR@h i0257$RqQ{9nMw 2oFT *1JQ5{tg"s -'&uJ>2mRʔ}留E{G:J|_kFrekU5͗SML}񌴪C%g2cd.~5ܝ!Y;$8WK^~*p0o40Fʯ,i]$ݷ5voOZVDXGe%VܧCTgkG ۬aG'"Ńg^:>Bw[٧r8yOIK yh[>5_:z\,"6xC$]6U/6pZ}t*ruO߰z':Z&&ڝb+&|F}*O32Rx$>XM2 -&ݠO,A1i\خӴ~G'SZ -'-i`-&쬧gHmc߄Œ+\Ο?XTtԂ -L")9#Ig -[2n:TzkyfrRgڀuaHnu{/*ڿ$$Ld!>3NNw=为Sv498zhx˻Lyώa=xd;rbW漓u J0l|hPzI%qׂp>.Շ&2HLiXb,q=ܜhm)4kҰקW݄[z0՛e@wgH OИ T)?{ -endstream -endobj -448 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 717 0 R -/FirstChar 40 -/LastChar 49 -/Widths 718 0 R -/BaseFont /VRNCFP+CMR7 -/FontDescriptor 446 0 R ->> endobj -446 0 obj << -/Ascent 694 -/CapHeight 683 -/Descent -194 -/FontName /VRNCFP+CMR7 -/ItalicAngle 0 -/StemV 79 -/XHeight 431 -/FontBBox [-27 -250 1122 750] -/Flags 4 -/CharSet (/parenleft/parenright/one) -/FontFile 447 0 R ->> endobj -718 0 obj -[446 446 0 0 0 0 0 0 0 569 ] -endobj -717 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 40/parenleft/parenright 42/.notdef 49/one 50/.notdef] ->> endobj -444 0 obj << -/Length1 819 -/Length2 2278 -/Length3 532 -/Length 2866 -/Filter /FlateDecode ->> -stream -xRi8*Q, -~DN}ҷ1s>o=kH 7 qT,L3 hG*LFpRpD H@*0TH0`B,uPڟPbg?"R4g$j WD0U*o4/ )#ҿ0ǘRA4 ^UjW -^)M^;%HO\)wڼY9EAwB#_tpAneڲ-\}BrrbߏNz=]_kb0xxh{9#20SizkxӍF\H̕;#c_s^WB`SUȮUٌ8ՒPFn~X.Zi @հ0"*J*~#\bӋ9fCX=sTP6}a4"L~l `'"Z1d -՘"8zr;w,-@]s.QJD[3I_<&"WW}}0eyj9 9Qvԯu&TD^hhOܧme91Ptt~\}5Z O!їҽď^4WidPO ʭ?sJ})NNSGW|vZS(U'IJ_c K~ y|x˲jceb7 -ݚr7#oL?*-J -/+&jlbFJEZI|\JӀm%aށz|]@lk=WHwgc 6nb\?u,\.pxOSoyaq(A --l4c9t6!rg_1 kOZ1H>~E=0slEdה1mpi}`喭T{FG& ]U-&N\?pO 䚇H\ϛC]<j^]62 KaU;\M9*Dҫ >b^h9/:}@ahWSEP*Z.0/Ȼ?<} -&FnuwqX;-72'~stMQ< Wx+&Fks z:oՠ6su:rѺ,'6/{q.x[j9#0ZhDm -G9R,5Yi8/ftֶy[R4N=H)K4:6S%U]~:Us(#-d8diƬ[vvaOd ׇ}L;!( g5.^W3}I! ju lNL6-L~ւNFz#xt o_ /0S21(y#5?2mP 'RWI$ÊX]m6p{5t>HkgVh^]LF|:dtYs9é~w8_t]kTjH:0fd(ҩ\akc=1ؕ"nmlxaMx3;GevK~ە14Ձ[/ thgZYDBsVKἤ"ɍ'Z`Onƍ}$r쑶[[n){d d$z%6-c{=W\eӚƸgTq N&6U)Cehu=w g5rƺ;EQ:d~Ã9<}VW & 6TU6%*` 4D)$|_ -endstream -endobj -445 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 719 0 R -/FirstChar 100 -/LastChar 121 -/Widths 720 0 R -/BaseFont /NODQKV+CMMI7 -/FontDescriptor 443 0 R ->> endobj -443 0 obj << -/Ascent 694 -/CapHeight 683 -/Descent -194 -/FontName /NODQKV+CMMI7 -/ItalicAngle -14.04 -/StemV 81 -/XHeight 431 -/FontBBox [0 -250 1171 750] -/Flags 4 -/CharSet (/d/f/g/n/x/y) -/FontFile 444 0 R ->> endobj -720 0 obj -[595 0 557 557 0 0 0 0 0 0 706 0 0 0 0 0 0 0 0 0 648 579 ] -endobj -719 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 100/d 101/.notdef 102/f/g 104/.notdef 110/n 111/.notdef 120/x/y 122/.notdef] ->> endobj -441 0 obj << -/Length1 754 -/Length2 1067 -/Length3 532 -/Length 1621 -/Filter /FlateDecode ->> -stream -xRiTg* -"z@&YZh$l!PZ MfB2 "beQDhBVREE* J*XS̟y;{v'Xrta/ʎv!;;?#$`OOVI0`/Ë?Bb%$9K*0!P2JCHA!P2R>zB Q%GE &$r4!QKAo"-*)@u("&*\x5 ƋsTR)ʏ0i B&W"TFo̅"L%X) -oZQ# FJt&,,  Xǝ|ʎjGA kɸal\H0<0D@ j{ $Ejʱ3N@ 4ztTdc[Fjr__B`'"jӍ k -'օm-ƨQT -_.W(OfW8j^iJZ&}iikHcwuHe>>U/,>mk:^/+ZEPQhM͓{3~؅ O8y[>[b6}=S$]:XWԭ2.ۼdk[?3U=gi -=R.\^|m}~lr^>Gib%!KMwmgpLтΎZ^U -0*%L\Rg7oB[ZQWf, s5,y ;iL`93,)Kżp/}JN>B7xHh{:FDg1œeشԬ*l i:/[މ]{Rwgo]Y ^Mo|;-MwVUcց+bg)5sV1Ӵ>7ٞ`y˃loV,_ߑWpF3AēaFFDu t4?;O4TSI~/l]Y;)as%"U>s>LؽPbG S:Nm'l\x_6,:fmbլl_q,myP" -!gL -endstream -endobj -442 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 721 0 R -/FirstChar 80 -/LastChar 80 -/Widths 722 0 R -/BaseFont /UGHGKG+CMEX10 -/FontDescriptor 440 0 R ->> endobj -440 0 obj << -/Ascent 40 -/CapHeight 0 -/Descent -600 -/FontName /UGHGKG+CMEX10 -/ItalicAngle 0 -/StemV 47 -/XHeight 431 -/FontBBox [-24 -2960 1454 772] -/Flags 4 -/CharSet (/summationtext) -/FontFile 441 0 R ->> endobj -722 0 obj -[1056 ] -endobj -721 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 80/summationtext 81/.notdef] ->> endobj -429 0 obj << -/Length1 975 -/Length2 2328 -/Length3 532 -/Length 2994 -/Filter /FlateDecode ->> -stream -xi">L8Vvrĉr`ۆBz١}y2Vtu5!ï\"QU3eƲc̤VZyh5Ӧ'(ћ2>"IfKyasAMUu[Y}&XD=q^tiG;NJ/j^ =~Xp,aږC>;p!'ZIڣg ;"/h| C*Wٵtj^B{^9.-R85Z9oёk8@#Ŵ 0>vݝ#Ͳ VJ> C+1ߓS] kT(94ěCQާĿ Hk\Ie0t53D˔g' -L߲OFu 5 -.TSH9WQj"opD^|SVː=\W݃J[lM3!Xʉc?-꽳8O>GQszKcX --O#YKE@ 4,qAjFExmZN~`f!B]߈ဤNخ7ge)6fo!%Z ߶k[Hf84IrOEM}Deҍ"toy-I\^&}Q9E/{N Q)S?eyΖ/S%%oI7gЍF #tӪGwG<֗m)?[V0w]W$V!]z_=Y#9uf=LG5w#uk7R#F.Ľ(y$]ۛgjNnB=t`amsښ#V9q"8`l` N-W-B<عv6lw8ا"(mU:4!C(#ř9O'ƾ|%dT6R9oTutLl˞ťplh?ӵڹٕF(zLLJR ;ʫҪCL hpnbҳղnG| \x'Ev8>O 7gP+vqƪpag:ܞ9= Wt=K>xV#аRzE%@Vx0|?G1썡x 6< -endstream -endobj -430 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 723 0 R -/FirstChar 19 -/LastChar 116 -/Widths 724 0 R -/BaseFont /DGALMJ+t1xtt -/FontDescriptor 428 0 R ->> endobj -428 0 obj << -/Ascent 676 -/CapHeight 618 -/Descent -167 -/FontName /DGALMJ+t1xtt -/ItalicAngle 0 -/StemV 84 -/XHeight 461 -/FontBBox [-5 -183 1501 822] -/Flags 4 -/CharSet (/guillemotleft/guillemotright/colon/a/b/c/e/f/i/m/n/o/r/s/t) -/FontFile 429 0 R ->> endobj -724 0 obj -[525 525 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 525 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 525 525 525 0 525 525 0 0 525 0 0 0 525 525 525 0 0 525 525 525 ] -endobj -723 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 19/guillemotleft/guillemotright 21/.notdef 58/colon 59/.notdef 97/a/b/c 100/.notdef 101/e/f 103/.notdef 105/i 106/.notdef 109/m/n/o 112/.notdef 114/r/s/t 117/.notdef] ->> endobj -413 0 obj << -/Length1 1644 -/Length2 6435 -/Length3 532 -/Length 7305 -/Filter /FlateDecode ->> -stream -xte\64 -8ҍCJ#1 03"%%HHKt7J-%-{seuֽT({ -nX#B% 29v) - P (}0&0Aa8@LVVPC=1pG',==pG$sE0$O?v|pN0P73h0 `f -@p P_s`` n0 aX#{CHwxOBh -d(, 8>}9qccxr߄ nKi( Gb8w,{ -Ǣ]x24' 7, #uaxC$.{DEEE`7u$=Hq`$?{4!n ^?_?^ PL I)qe[ňyٙ%I v祁.T0Q*Dt5cͬ` iS ߫*G%/&{htyɚPKlF+yL^qSُ> H j1PPӀ8+Bcdz>l\kMagɋ-خ%h6k ^|ϭd"ߡ&I#؈ԪUk؋[7BXIcݝ(ȉ)bIMLd\ʂy=͋WE`=2;` JNw: XedMi2Oqh]eDp 1cFzр~aie|m+KJx/N.|j=dR=cW[+Gʁr -fWN+~nzc|4 L*q‹TsU %o&^ʛnafCh#j-2̧(gECLDӝW% SHYDL*ݜ9" yaƪw12;Eyz)Bapu|(\?r'y}&{=Zrlo$jd|[Ez9}IWΨdD_tbL WT!Knk{gz+O< )V^oI3#J3K-,k)s#YoJ>1_}.g JZEFSEQd8v^?^c'yrHecܽ8& dh/il͢GVIg2J xGX83ՠ_1'x`"^#I+xR]M=JV(U9YV)=#GQ/@_ zQv5\V٦}>$j 2eZqj"9FjXD]brk<ٶD뱜k!H'X k|*TƗRF+|u?CШ G!3nIbD ]9gtvb=Tr9tߑ7rʥ4BaLɃpCkvu7NZ k%2 85vi4N֐E!Gʘ(˄2x,|,S&r{8F'g4ϽB}h+SH]mqӏ_cU>!To8~ӳA~7FL/iqh,4xf|䏲RM=kZ2y|\lO6cӑ An/X囅UqfCSs^1KS$wF~wu^T ؜/DM~Ɲ#ʶvh<2if(7lD9^j%3G%%d{!}A5_O+L _) ǪUõqCקc) -2#W~|HoJWg -}O^gVI]*b\դcnz‡/`>kzoLVվqa=J]̔i}]l "r">~'#˩#Q|:/Y] |"!s Թvw_c*Gc󘜜lcj}7Hs\xDJQl{΍FTL1|_z&__o_s@k.+̧Q͸,lK-JJYnmENIv՛Q{}SG+<Y3LZ"8Rre{^X5Ź)1NGjQR5mD׍}T'UB"e4VctNHi&3,c(eb0"JgB04;/ZxJ͘pm@#?,O`IWUXK8Juұ&n_xwV8Hyh:t{ϩzP骒ʯqke~sGy;R}Aۺ_N8Wu7|bXhjQi[+ke 3髎]kj$YZ'b%H,963^Dq`y*g"i-Lw"zCcu){Q3͊61жcՠĹn_{!=kb"Cxk()ՉnagrPlPS40S;PG?-7-g&|fSHM=b Ͱ6&UiZqe/ƛdv\XS;K*!6ORGnl.9aɃ;z4( 0e }HA0KՐ~+8,*WL);Y &96,]!9RF!^% nd]jY0yD~U^$F\z{M5@(SнKǗ2u^v\{ hDdqK9H {] _pZ -CNSVƴY߫pmgπ[LF\Fmybm>Yx1E,X܌>5uH8΃ltOmQY}j]٪/,"LC̊*-S~0s*[jb̰[Z* ROMjuԁj #E"8aK۲v8!I:"3͢ .* Foĥ -9h&K_=K؆%L.׭[YA]tbCm>YW8Wf5+DZB "^s9FХ䧣R/э!+Pb^Mh':[]\DjeޜI%' mL7W璭D{ħvfB6NI`-J0iw?nq 6+ ,rR1NN2t:.-V%Xy Zv>-55B.k(?+ hɛC8aP14H>Qcr~:[__݇auVfD2mٶ%l'TJTV; -t:~ؤ$2}g*s -~6^{"|`\q]şɞ\ih:c|?kr k@YeMbi4kUt|E6 r?>38k(&2|Bƌջ[Y,һtEJCHe:M(% /py{|Om/ڍ&P-;^ ~M%֧@<gSOkûf0?xN,%GzEx[U:"`IݜsW@ǟIs8>ڃڥs ՝Ëd `١&ا̵㏞iNmj0T *XR48 k 3\[ :=McJ RwYC.ī~c_ fPLzZ$7ڔȓrh$:Drao9{⹏/2 -u)^2HBPd3 -1XVD.}ԝEG2(V+E;JiGJS8&;߾`r^Y ֘ -uUwcݬڑʩ?=}(ɮA 0 ;G{$ty]E4ɲI+J9 ݌IUK֛[<{M;#YKwiTR-(q_6TWB˅[._L% ;T;N2&=:/Im' ZvX n klZhu93܊H@1KPr݅d_w6X^-i9 nF3Up!x],xY8κaL8Lh1\a(1wp1 : {9Eр`l_VVfZ5i{?) Z?W6w‹Ł@$l+au˱}h -iP^ .&Ee_1`Ҵmac HŠmWl{ Kw@mCmC:4FӡS2& JT: è3<9%$M 4 2bJF":$(8vC~Sbc&w8Xbqy=淂G:6 tK;Oy /!DJf9*֭~(+? 4ٻ:kƂo_+Rl{m'1о1~*a/9m(4 urgT5TgG r+\Ff/^bDdhM- 9A;\K;7.]%/|=/K)uwRbfrwLʃwHZ|eǴ,#W-R ,߶?7J,)1)Pĭ#t10fTn'Ȟ["l)yAqBM^FC4G4i)Q' 00B1.%w -endstream -endobj -414 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 700 0 R -/FirstChar 65 -/LastChar 118 -/Widths 725 0 R -/BaseFont /KNKCKO+NimbusRomNo9L-Regu-Slant_167 -/FontDescriptor 412 0 R ->> endobj -412 0 obj << -/Ascent 678 -/CapHeight 651 -/Descent -216 -/FontName /KNKCKO+NimbusRomNo9L-Regu-Slant_167 -/ItalicAngle -9 -/StemV 85 -/XHeight 450 -/FontBBox [-168 -281 1000 924] -/Flags 4 -/CharSet (/A/C/O/a/b/c/e/l/r/s/t/v) -/FontFile 413 0 R ->> endobj -725 0 obj -[722 0 667 0 0 0 0 0 0 0 0 0 0 0 722 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 444 500 444 0 444 0 0 0 0 0 0 278 0 0 0 0 0 333 389 278 0 500 ] -endobj -396 0 obj << -/Length1 2246 -/Length2 14675 -/Length3 532 -/Length 15903 -/Filter /FlateDecode ->> -stream -xUX\Ͷ <@pm ]4n!kpwwݝ{dw̚5Qjnrbez!#C#=33@DVE $ ON.b2p45pYB3  bcfofbg'@ -do48s ,6@3@%d 02: A&f8}6pW.9RiRF6֖n#1< 8\RRu+3KacePuɂ̜/f@!kKBff #3G) 0;W_jjBj_h``ffY/f7sh1ח<?db@#3k ; }`Y\ W0##xM6t hd22NVOhdcii`' `A֎b\F+p4rwfcO``e),Yc-%m Dٚ/q3?lZ, LDmEX`{G?ގFm;X`]p`Y_2c!fpS_7q3F9– ?69i>4?9(q{ !!8l'fe8gCr]ή8SCU8gWC] k77Zl_nUn3Off@3{՟8X twH}L3'?lj\7130 _?/[`WӿhB_ Ve?}B_ !/|`+ǿlBd[`+lw3,϶3?"W,[JXՃ @~s2 :كÎ~_ +4oh\-7YM)l#W5ӎ icDڎfF4 CX]L랳^{3Uۮ-}ֆٛvHx*Q!985S-UCj(XPCBV]PV'C`hW.mڜО`A<aY3'BRqVEMW#tp?: *S*g[Z;'7[ f_ iqe>Lr;~(GR:k,Epx_ R(v/& - DYTF 3!+q̿0ʻCW*J[Ti>d+Z%MQ,Dmn_5U1;3!f7{Б9b*R9}!=W Y[YqCr \jɴӒ5F=g鍲.vMk-,H[ (jVG1G6^#@!$e gªKd;ҺkƧٵzQf2Cr-zeڛ͌$*LK7TӠQL C֔a%vewtnY9<-Il J 2c |7F[Bڜ>w db%H:8D6cbҝI#1 !JҺnOYAW'("d'Y%qsmi U`0MP-6|VM,e_"c 1 -ϫL?RTqֿi*GL[L2PjI0lo}ji H:ǵoA)EsQEb[^ΪMi(k4<#<IîHun|8H4WXA2 F'Uݾ"VCt?ɂġtxxvZD<-0ы m<]ớ(7YznаhXkb2lY~ћxMW?Gxަ&ve `/,A[4NT$<"vQzp4q=3.C^Ȝ]#-*xT[f޺vra)61LN 1_j D&w}#{>d(2R6R_E*3=@&/4h8Ş;}qVeo쁋oY dAM.$,v2PH>/3a,^ ?%~9;Ն-?Mߖϋ' 8ZoŘ'xI5AÅu &>;y[v.Jbb?#rDW\*NRE?|C'(B~$qjE1.sL;S/7Iu7#hDfI]'IN) -9W(7hػZV੏4?h;w>e'%uS7B/[ܤޡ:"Lj LLDβW6QB:v) ϫBU(.@|OTAlԶ=]"`qۊc<, #\OnIGC9=+> *q{cP:c~:Cl&:.#iGCT`3<: S@srŠL}Gs/k`c<50D -lySw'c1\MM70.SHUdu=$cIKE)qfqLs1ߠ30) z ծ/F..U쎽#t/٢ӏjKA'r_ƪ0XJ3󳔱{ǘD)e\ľй?*Y԰l&M1Gj,:2n-u(4 pt]~})xET_#$bLQ$(6d/IG:oB"Q^gIQ{5k/0A xx\o9U(`9[9,OxߐOy~,q!ih3F!1NM)*lZ@.̮.qJ:yoޜs$MV@! $ -b![v}(A_M3]Yq(Dsυ;VhocsG?# -ޚT:_DWAtf(d:*1&ѵ@>qMe/F?EY/Y*3A(\ߔ/dӷ(B5m=[ny`Onn%Yt OS7'MQd{:}{ڂHuH,vӃgg+*gJ8!OEF岕E3LMWҭ{p0,Ԣڣ: b!k ٹ!į?yavtw,w8Ram(tl'󎊛^~b̓濇g҇o1`4Zpq/.Uܰ9K?6Ѿ ?K t 8NW|L|k&ZLRmi)ys"4fQ[DbIǂRnQGQ?VrHH}]ds4@_mf{4ծN7AȂ3ڭ))8zP;+ rAICNNP~@n, ͰͣO*6HqN -oJ5jV7hUVVD-g|K`+m8F{v Rof򘎸jacSbP?O*;`O&Ix߭S ySIaBY& 茞9zEXF嗬;'0“\$ -o6G2x 4v|G { [4"@ő/Dң9{)3B kp Q1yB/401nx+r.;Y -F_okcB8'9sHL{6 -u%b97?GqhUef6e0Yl]puw}*5mE1;ޏ@lD+1ٱq<|Qݪ#%$} -mDN0(_5#y}~ʟpB@'۽y͕vLnŬD=P6fazPv`;ڕ2A?߽]L-Avw\fKU FO_ƨo;+FՓǠ|cYkS?L놰Y`YoIģz>v6qLXD.Z`@bJ䋊 d9p V>i_(tukrZ0>L /J۹܊S][W1"xIH!0n-iJų/לY"Jj?و|=@ry%JcޢX_CIxB8yؕru¡c6cZIʵ8XCx)q״JT!h:dwNCUB]F4_vˆl/ !Ԓ'ukJGYOm|9W *vLU/>0.]+=g2lx>hl+_`=@%Nvn躒exNȫr7LXB5BVH~@uh} I$61h8`Ţt.j)]~R\~(PѲcf~zGi?#ИN8,DcHtc=9iҤ b=qe;"ɶ#GSscнmzR,UCAT0+/)Q6W@*5Zy6}|HF8LNW;%a7I-Iaw6~e,0."5gW -Cf7(^Ox]$BMl3.IX;" Ҵc]rX|oJ< _"̏YmLԚbSh!ZҔi4~|:NRysuVK{,s<$R6f'E'&t+L#O H!tET$F \bO?I.'ʼnXhwGcٴ&_],agTGV -svw$%MQVD z *V -q>끰Q`p]zњH?=%tPm9TdqC,re:<\rR>Ӑ`xA=uEn~Ǟpבܹ`p!ġI -JáYœi)26cWtRvdװtr1Wں6#;b9ѳӒQcC}*sRpb\f("Lg>!na`9M:$(aŹD -Tc}/S9ɛMo7Nɝ{FZ`>?i -,?\GSws()4o^}4/,J/Vdk1"yiUwG#Ny&Nl->+e1n\ԋ 'n/?aDd=26O%넽llʥě3 yH{/A\>?^7`/:gg՚O1uCDX #-sofP< c'a;6S[\[ -wdBJq2RȲ a+Q4"B;(=Sm$2[@[w$ad,^4N}_)CIi| 6ՠô[CgUJ_{k,kC PTMh.ڎUrnP~RB̐wҲ0rd$FJm_k0gKElBc J/~a|Z*TB~'s$ǐN e 9pfȌk Xpj aq)uo![,Oz+3C, .I,%ɔcʰsJθe-:$ -ʰ8߄$Ya&ݯ4S|ʍh$?TCdorw2̞i(?p2Y-鼕^5~&5mP6dALG}Ҏ$tXM - 6%͗4L9Ad,u9Kc0YeE[#llN3#臺ϔ<ϧ圁1ϡno[svW1߽.](yY.pZXaEЧ %Ljrx>mʱm.:+nAT:ÉRذ:HzZ-_7Q:/h7CA}r]ٔg?roG/[X5#+$0e+ʬvW^}Ls:kL07O9[m_~A㶱s!]y }RSG<&e bd%X &";%a3h:<^4o 辢 ;"T.~”[sVhy,IQ>Zux>-v5Džanj#٤ HɺmVX5tO@h _Z!^l`6Jh zᮭx[so`g{|WKHkˠy[h0|ni@ -M-^ Yq]R='4d 1@ 믟jZI]w"vJ`]3jm p>챴""#B5.)P >KBje~10}u[T]D\KBݚ{HPim#*>+DzFưSٳ bdv,CU޲w1kQy1 ʫvz+1x.:۫ >%W~A&m{/Ѭp,*Ƣq zBzjČ84GS-y-m7ee:ErꙄGh+Gl{*{GJaHo R%j\}BD0䵉 -O&X};'ag]&v -R7AKuDm[yх|IEl~ JiᗝpY E :_qm M5 gÜE:+U:B` U/7_R4/ptfz/}`ވ޹D0ֈh X=N*KwcS_Ih*fBÇD!>pg>57=/A XF ?_I]|N)e; }B(} .F+a9!dj9#?b5*٥]z8?eN5KW+SCo&+^x10ewW-0wu]פ+}?)4zmtīx{2/b*(Dp 2k"JBwqhNRt\6ȦY%DʣT-ub!B^gj()EO?s`m< W>^#0` BZw};~m|pθۚ[lYjffɨd2٨ގ4e'qތ5v` їdsR%l߯sMǛWw?=i,y8^s -U4]>)D,ŌNlX3n`(6ksrnLk )N8Y ^ͨ˿l'w/%?$Fai50XQ-kn͞i%f{R5#O!@9oxQ -`mNc|*JNwrľ+Jz k};h(Q"m4WZC9}i[ziFS+r^kT/1QYhG(fmF#蛋۹bU^ g_|$xT]U@{ƛr3R"`ףV6yŖ(?ۦ‘QˉUԟ~<|@)2NkfS`Mr1ϡ3]hBpK_?b"N v&PCF:lB/X`@Ixa|d5?S؅ae`5 Mc*&Zj䇷͡9o-!|қJa$v an)8N 4&-4f?Ot]|y9XrΣfC#x&+ ^;é?VHR曭#UG4!}dHVl_! مt\ [e8 kPT:eRLV\ t:Gvo"aIN%FW#S,{i\\%ZQƩ("{hDkV0N=&5v4lQz{96{ -qc{p6M-R 5(qb} ﺙwJLHH.SіG83uu:>"F:ś9fn(*ױGq67n eӳ#-?G2 }7V?T*r0 p>z%.3FO<4器Ab[)AX9N)% b^XhPl?sHW\3z^GܕĺFz,W5n݆wRqyU>&<`y>kx!Jtf@B,Eu#졋„6qYB H~@ȳlw Rɳ!Tijݹ/Kٶ Kgno@h|čPZt퇪Jc\:j6%k%)dPw#11uMNpkWj/-Nn)Y~spXJ 46s*L&xy6kexas|pu] N(fwK.#m 9rU5\D}! ) )6D\z>H&ϛr}N[ :>ǎ@aV-1t LN֗uI`7J9D64vb5슇 \Z.C3js$]t\c=Rԣ~ۇRL4V5tj]yX֓@3jƴhS&ŚgJN]QBy&X__8ls V'?|W.uL\ W1ȆHRC:0T#hg[b!0(\1k} _%zNRShtSO/r<sSUlqPْrѕP"ZTL@ذ5b+bk⸊SՁflSbevL$!S9˛w&r؃Ǩ`Ҽh98K]df+lH84sNW oCcPrcBdDwًe:= -hm% 4\,OP=i|qEE4MwNKߦu*Zݽ뉽;oю) */dPM9HS]Qf xdgNth ܙsҋȺ-7F -֗9 5\xI1n*qΞM:1fwri{d$B(qjh hpZnx(ŇXvR k; +Hoa,^<훨uٝM cgi1y9niJp=P4hg| zʿ.R(3=)iVAidY_-p - -5!ca -D(W=sYϒBp qS}{-DW|ot[nGbz%q@Ӹ 5HYĠ* 6/{尕SIv^4e*͓(Åj]m[0zzڇgfECeRvӥ\ܚbd֭LJxl]#F{v u9u#٥fۯ c޳9'J!֌KjFi~ id'4U_qc4!(Kx 6RJF?64***$?O!rq NtX\3UlWAxSUJ -p;Q.SJtg>G >̣S:NЅM5HbXLhL0z}Vǡ~z8r=AXCv_ΆGYh9[ǙJ)|S{BG謋 QU:qOu_1_7'N& -8^J}ѹ퓝gZj)%)7d>NL'q}1aTc'$c%w랜n:l)i k {b^lL:rZIYtȥ%c|}TBUNan&Cuu2Kx7.nW%'U!Z!ٽQmX Z=դ5gE!+N6f#㉛ *7[y{M>: I AI Dʓ8-l+ : U4Xe^"?T&IOA1PzE)'Zx>:o7Yf%0QtI`_^*4_X`Gjtg*F4~FSLZ[f?n#B7[k#9/¤rY ['?0{NCni\U教n^ļs"ҍ0E,Ef xZ y5F+‡q$ R AH.z6x{e -Czz9k8>g|F[9?ߏ,LLYXJy-_=4Qh(ܚu|Qڨbe|IU*1BҺ\E.tCXQBV!YSS:~7GOU5RT[',B!nzh\bt>j17Ԗ[GS̯ Ph[XG|{ܖ5l.nbz)ErqCƐ7F1Yoד&wۚ:u?>gJܵVoʪT4([EqX9`Rk|nDf Mϳ u ?5 $ՌB-1amHtDA 8~yW׏(<2'^uqpdZ걸 ?5d%仫gb /D -C)7CA2Pc$)B0AOrH~} ƺk)ǺGD}C'ABႎ$$gB$S^3A7rF` Iҕaȇb?SŅ> endobj -395 0 obj << -/Ascent 611 -/CapHeight 611 -/Descent -222 -/FontName /VVAVXI+CMTT10 -/ItalicAngle 0 -/StemV 69 -/XHeight 431 -/FontBBox [-4 -235 731 800] -/Flags 4 -/CharSet (/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/braceright/asciitilde) -/FontFile 396 0 R ->> endobj -727 0 obj -[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 525 525 525 525 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 525 525 ] -endobj -726 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 34/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J 75/.notdef 76/L/M/N/O/P 81/.notdef 82/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft 124/.notdef 125/braceright/asciitilde 127/.notdef] ->> endobj -382 0 obj << -/Length1 1630 -/Length2 17672 -/Length3 532 -/Length 18598 -/Filter /FlateDecode ->> -stream -xڬcp}&cv6;m;6:vǶAǶmc}?Ϝ9S2s>ҵpߪ$J "f& Ff^ENGAWOA!ln :؋yfqsS++ U4iS ?,#]ʿnvׁ9hkSTҖVPK*$͝mJ&@SŜ` 0u7Ӛ _,17=tX:ۃڛںS_ÿ -rtvaLb tfUw +c?]f/_V12`tq5/3_e-z_L?/;:z+_^ ւoNSܖ@{xvEo̝5 vof3s x&ߔ;Hoz/=Wh W[[c {d @ϡ5vm=OQ[A"bofF+.@s3% -`alwfҫۛ;rXM -hjc 6ۛD%457_Jэux3prXYoR ?eyc3ofu?~)of*O?fSWg$?)ʒ)_uZf:;whB\rciZQA@CZ6O[w)ޏVS}ڃ,[|_2 v. &R3h-(Nf e7©v6/W4dn~?v6Q8~|쾁ǧˉsB -pQJ+|/(}ot Jn4/ Px:V{ 4wnn¬,Ul\HErT8&M ՓڷW7nw2HJlDe͋eWqt)Ki܇~u5Eb>1+;T[Y٪%RFH#f,ĪAPѮ,**&Ap$ylys y\$eRץF/x4oҟQY7!w8 YGzvg~9]%>Ge}\xe׊priڰ1y,Y!?rAN-@ye4V.QX<j&^Zj^["f9Zr{x^6|!f+jc5U*b#:FsyG%V$~!`Ԟ(3BknJ|/>Zݖ*ǓjPR4< .XhL|]?|31ogY]>n YhShq|Gp<3YɦB -AF_miw{!s,>qn]8'fz&%\m(̫?Qﲇf?Q/` )gCQ2 icx7PWkS`NRHC6>M!'mk rӤ'rH{,DsM!`JCfA3k7?{$8@Z -TWhcD66O\[_ 53uiWo3-.k3A=(r;VatiB5 ,{xdA?=޻SѮD;/Պ @+v sdFH{1 }XYU7Z\Ø')G -wnk.XZ0OO3tpR!uFWԉS aqXnKb,$rhm3CWl %\hyMѵҌu;XQd9;k,jmo/w -""6\ɭ1d/ZqH>5gX:°URyHL2:7G-tG^ڱ^ǮR^'/P?F,9"&pyH0"|J#^Ji&/glՇX0m&' 1g55 ̛y[I7տ htSf$4aRǙގ#w E~,EF;Gy` #?rHݫA89}DĂ70>#!p4S冚ܺy햰Qw<ʽ:j+`sÌX=snM2s>lkYg\LCW yiλ{Kyo -y|6+U|젭QCl.qӦ1_JoTm D2@{x= 3?|̌;5jP][yxw]U8;JIW4),A[(9)&G8v8`A#fBik*?8#/5IP -23N!;o`wU4ojȍhSbt!qWџ!UqoV^Jm,䉶^x;zW@S\j0F␭^J N2+4զ%娍Epe 5bLtrAu׋mez1= xa3cG)ލeCscߤ澦uYw6OsNݦCo?1V3 >f² 0_b1T;r3;e(B*74[և/Q)-JZ5߸g\lV6aWÝ>(%$k]Ql+i vJh/[Ѻ,˃ &'c\Sv΀c")/;El$̏Y?*VE;,.~Ya#5 uPDC HŸUVQI;mAi? e!̟6ŧRa1'J69p }jt-IlpKR"'_ε!CqI{k %<j(DBoN&9q+uOƵ>bsn&ò2eX?ӏrq=M -]xI9;y?på\m;Nuįjzry ޣ٨Fʝp!/K <#2/t - -7K!VFh.2"/_fw1~杨;$ ίzwʇTۺ=@g|7`ԍD|AѼxF 9KRn -ԩ'wOG#nL;4hWo?z Jđ|2%j጖Lzy y}lb?zHa]lr=tTJ1sok;ʰ=pQG\uQ0;#jcͣ *=/l^B&~UAg0|5%?HS2f?{pw&)"Rt8kcxuRԫiEͽ&QJ?=lLH z@Pn%P08>UO=.ߔ.r# ⣂E7ވ xS޲d!\-slǫtU{g罺ӿI6~aWnOMUWcDM`Gv{Y'XSťt/(~,C ůWOm2P!3F/1M )@J_ (G -G>&)4ih[T,?\Q鷲C5EwTB-,Tyz{cm#uW}޶Ӗτ%[Waj84TYq7{]!_ҤPX C9ְFvcbvWh)҉ΆlV6J=Xib2q|S&J[9:vv/p(bv}ȜVԌߨ=(~6k Zg?Ӷ&s2W8m=#&abY'$΃ -c3P^v/${eʩPW h D3 w m156`#WYrKޔpO`]t^e(Ἡ2m@R)+Ɩ8S,"$ -woZp^Gb!9, Wɼqh)6)D+$~BQqKrd_Dd0S噭; - .fܱlS-f`vg)KX1PYHk26c;gUg$ڇ WAyF#*x4NTV珏zmfrukԦ`su@,~5ۊk_.Eش9o=3  -&Y~irEKYTm6A)w-5yĄTnv:sO2^n -)nɅߴ6fk 8<8JV?jk͏/ #{55HrQр>S5ۏU 1ゥ3|Y] ИW}Z><2qH`YrZmyK$9WL?O\K4fr[(MܚB VV˚Zhz")tYxbd['eVו[̝6ncө916mN$7{lE,œu \wm@LQRhARNamyC=LS=GʰԦ(ή3{d2#Qb2jy<,"۔&!͵Qcc2Іr-u>Yi`pͭo@"[#TUrW}'Efv@B,:*3b,AEE1@Pza5)pC"["Aqf/F .wzc̐.y327-<(20K-d :p-c ۳*K꽫PNNFL{ID#ijh3 "+L\އPC_ usW n;sGC{ G^[#=><;'^*ԏ9e.Ml U8pnH4Ĺy`~~Vv#a47yle lUê?f_=Kj |1;:JHHyNwTe0,?~T?^w+ lު[~C=c"/(*!u#ԉmVͤt_gޗrL`H6.TշA+&[w1M 3N U˕%B06*JԹ/n/z2|snT|T#SXaq{lb)j"I=!_`AJ$%l68S* slzk.txn3Lv«h"oE>ɝ`XD<,|xMb[GYN!j6I*C,U[k^"@Ll 70wEBn״Cpy-;j<%RK3KαYLsqP.ۡ'(#%ڛ!ƃ>I}FNY&j`GQͲnjUKfJ F>>QLJѣ<'֕Ïs8j^ TUUWVTF;TY/ 7<繅[Ʋgkf+ZQtւIӷ]%[_Bܯl]WZ`l>DF=}`i --qD?{/~]C×'}Pnew?N{1C\e 漚M[mܮ@BbKb";]1wPFscߍS8l0Y%+]q6!$AY*=5Ǝ2Vެ=8J&׸|h8(NQPYO ]O1xTO䂟vq UʔEK3rDF|rgƮw/qƱ/] Ե|ȧ\Vmݽ}1ިq]iŘRv\Ztt-dEGL"jy2QM(Wt!{S[*NY_}G-,.ŽWcx \J9$bΊxl=*VauGC,TIC$;%gk?Fc-8q]h>rN(41'zEqsMbţ 4y<⾏kIN1X$^~_k`-<92ޕDG ތjғ7Q*ČNŻ8^%҃)YG -{`Pr5C/C$`IM;'PE|[G[AgI'k+ -LBuHnԯmc,)|?ó #uh#;U\)I!JD7tx9z9P=žo`IHxݠ2rX؞s.~!I@c6|TfkX9nD tN~2Lmz*9h/bEw鷘-dzcg#<`m3ːZO#7Mej;#&nr Y3Qa>QIIKiP;$ ^%YrvOM~ahs\|Ժ-4Pvy(HYyye $)ri`CǀےEF8!Ͻ+ɷş.FߤYgwm='1S0GlΑPe:[m4\CQ~{}+C/3'6 J: ֯Q1?§|k?Y܌47$FN.A]6-pYO%/l"& d$ ޾\&xj-GC鱦t&0 -YsutZxՃ) h#tdšV,2vbcg!ve9pOYד>s8߿ N3ڹ|]$rUP?Fb'B2S'D|-3|ICfŦ]8rGEF18gi/'f.O:~ cdjG}?r}`YA#6-M:,?4{J5.A&n/>e+mto65#hn>?CW8J -m?0k _u&_mJB!B2u;B>7ߑ,ąmhe[ Qܠ҆F\hH799 */ƿiw4z]\ݼigO 7\bG6TZ4 ӄ3S[WҫE)toi~>+v1dɀ_Tf4~r{/>W[TFp. lcQhMwkVrfXS0l{kǠ}C4^ o&zR[:46,q"Èg@% t}E8'D;@KݰWQ4!ljģ;Ințqy'7u,f &SϜmGD ˆh,شX½8dq ^:WƂoJz|u~ -{,{ʊB,c͇B%{{)M,[Pϓ9'} 83 uX=;K3&vWAX~lwXO}V+gDۜXFpW/j!YͨiC+7ɮ:[V zU$گn,v>r";.Vf(( !GivFnlF{Xn%ewˢLe$\sVbü pBuWM~$KpY^%>L5&yIKqQq$+^FLaCȸ&S۷U (|5vx kip2kKՍ|eVZIŜMW+:.u,YkGKrc D?i3A+pGR -G}KѦ0 -rQ$o9dHrۂ,\%D>8[#tBq%8uH8ҲjEj~ dd\-_?u|p?cB,Yua,']] g, gă0f^'IջD{pxI^X<4~:4:. Z3vk5j4:2t<9HvJL8;y"_SxcP$T,ȸm-*]ْsook%,ݍDKP#|EuT(y}Z -M8j4<ϓĉD6Mr1Ρ a5aL?hq9ӹel_lKq̣SJ CLe -C*iAref^(we7 cŃq5ob+J&͒9 %gwl廒!?!H#=%M7gclR{6'6r*ZBgN/^% T5'rP -MpO(Yn@o Y,(1PsE%8*99^h$%<&[Z|`noGnɆ2h݈BOW#VaPA26}=bb0 Ӝ觳 -,-F ri1_[&HiC%Z~d-(Li~|둍)QuA D>QP}TQJs40\?= \9y)ë5́Փ^ȖfB# o9ɲ7Kn(QL,+OS߃PT} ]+csn&`89!pbE y&omutt uC(fMe/<06WK=մkcH 6zZUZ0gn*9qHפn(<;EևlNjOQ(dOhՊCn t6z|û#RpOIr9TrSz+:tilcy.:(wng@&A±9hY-90XȖ/*7m /ݗW%h$Gf$E:9p(Tzps -%Ba&_,OKCbdmCI UP`;jdh(Ixzv†3iF%3z_K~*%l;3PÂGnm9xU /%[6{XT=IHT*b:|x0nwϸ5C~mv* 0]n=1}O]|f{ cfx}DUR96mK2L=ogJLメĪ`,iY53cDgB^0AAWbޠ_a3]~>괂bҗkn{DS-0 (En$s-{qt)|80ЪT&&&dJnKW唐e q$׿}m%Z1L-Vp"‘lVg+0yGvʵ4H&DK*|ZejRoЊҸ F̂H4QP„h'A'[%͉k:TJ/)I=JӢ~7+U)䚌G}PّZEԂ.q4>:\lHpe ]mREn' r/D"$L4z&~{(/w 02^CaԤ9 -wè41 zs%.]r"W\E\AK+ 8oZm}*s3[X)i[r Qz.p ++3gLͯp)0̔&a+3$7+xcXKBQ_˞X -آ4p$)<JCWJf'F44> I[ IKr}iG-HliAwž`crtl#sUӠ~& ?pOP[ɹM+?ZZ3G%"a_-I&C)$EOY*_ņ@ qֻ'$Lv":f$̣6RQ>[L>5i&ye[^.M7{tN/2 ^$V9'[dl6'rqXe>300gKv? Wڒxq+ [k;V ɣlckzyYOEG26HėUק\rt/Z_5[1fb=l!9Gq6?\ؽwL? PDrz+n8,k⚚ UBQVѽxF]ȸ#P/KsշҮ_MQsw|\{ 5.Qin|„g - ʋs`ЅZ"&\>UPgq& ^atTVߐX]]5OaLN={I4p0G9rt~MdfF.;<.B# SJsy.I덛.$|Ja`LS*L*n/!r -%'񾈩2 gEk=_ͥHhǗd~Gu x@~!3k3O'^"Ti^D!*k-Ifߓɦ3Ni=?Iuj(Z3)SԖ̠E SjP`ѨHf"D9gKB\Q…Z۶JT"6,ZZuoR7.!8,t;AX8Kvqe؛|"/.`/5{sWەJ @*>eu;՘GeK͎S})Z%0Exց3)-;Y[b[?{C|9!ӶUBbnXկZyF'ݣ\ks0&|I4պˁy p[nJ$U5 -vi;^u1I0ϩ(7D~܁&Hu;>qh1>#M@#ʋ-0 \ra!;;[&lP)h|h y5r44zOlV0Hk?L4Ee!66?r5힑p]43L֯uhR3ەP$hy#!3~A(ȋwdxGM"Q_C-0kDĘGRg27H(T䃗׫lzAXS:6i-\!sVXɉ3bV0R?.W"BGX5eT\d%q[9p64 Խ4Wk^BKWfr4UTpSn.Qm͔->j2ba}|ķր.K$ VλggL߲V,FʂOU2|Cc-Q4 h$r?gL_p(n'W\3i!L*qD(PIh0>:J2*zH5q>{,ϣKtJ9;hF:IlC:QWDg*zkB8ӴP.YzF -T`=Zl\\0(}NeFڵkY`.(9"ƀN'6R{>+yي?-NC_s> -{ uֈ*T{@a QZ҄UWdie FHA4ʵۚhgdd5DfGZu%PB2k[WN~2M+k#fI+e]kܡ3cb7+nw')}\ӥy4丰_oO}ol9KQ>-aT9G~(Cf!?B FI4&n4tڽ-Fzrշ InA.X.vN *20Om>:뙿CTmϵVO~\xVy=T+Ra3'/Q -h`vRdF^[V(^4Q ȋZ[쭏tvM@t!tI,8>cr،33V*F|A=߳Re@t긑 F֒ΝRƅI cS{ƾ_Rnkݔh6~t3_j0iؐrMl{"G9=ۿ^c␬$mzj-u@2g:Kɕyn - 3^X i^$щAT}쳬*UawIg_SZ2'Y9Kf偿ЧW< ^|uh)<0_ -^0_Jld8gߟ[%Mf`mw -]zX-ο\ 1VJ+ Čmd p~RܞbGʆ^|utnZDe0[iXcJvyeA` h˯ɬCgVEN0TF] -S*aU$T%wxBPo)(Z_Onc9J aLbޫ!^^*2b؎5ϊز ;iޯ_5?qOlї qkt9=Dn%אl(nk+ϼ}Op3-ySd+H - kO$hc8P??ڋШ/A:lHvbe-2:(Doݴq3{Nfo1Q5 k>-hc)O;MǽmuzD-G -ٗLLiGYL$ލpxWbP:x/`l8E- j6 3ݘG/he F4pFe^$iel7㵉 9"qR(4ޅöbHBu_;sxt^"cr,s+ -!Id&\Knms-6uJQC|_|gmluw?(C䆡~#|3"A4,<)1ndo"!d+lҷ AwGh>ǩ HL]iuQrdԎǦmEYޫ̾u@*ȮlF_̓?ΙD#0!W IKb}w,h!8.N@ L"KeiI+nl& -*2 'C*H{+$j y~:S7Jp:a xfV[wug! Bk>n5(ielxkk3KEZL|A4 gD#,tli>r| 'Ȩijhv[Z33UȷjiPUUz2 e'2fayv޻ 40t*.9"d]]╄?[q# - A,?EB;l+Ƕ LLެEo֩|Ⱦ>szm}D:l8FxXmpKVy4wlC+#?iGxP$*KNb62M#TϺLӇ7Ǝg$XJ#}I4/nx"tDb8 " -P*lEp.bѷ!n*-x徏`i|xbhLOB^(`tHDqj¤&/B]*U4 -])Pfm?0z.3@rk "|w&6c _01Fͧ)wP7?+ۄ;8bP`/?޻ -endstream -endobj -383 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 700 0 R -/FirstChar 32 -/LastChar 187 -/Widths 728 0 R -/BaseFont /ADGXWW+NimbusRomNo9L-Regu -/FontDescriptor 381 0 R ->> endobj -381 0 obj << -/Ascent 678 -/CapHeight 651 -/Descent -216 -/FontName /ADGXWW+NimbusRomNo9L-Regu -/ItalicAngle 0 -/StemV 85 -/XHeight 450 -/FontBBox [-168 -281 1000 924] -/Flags 4 -/CharSet (/space/exclam/ampersand/quoteright/parenleft/parenright/asterisk/comma/hyphen/period/slash/zero/one/two/three/four/five/colon/equal/question/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/bracketleft/bracketright/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/r/s/t/u/v/w/x/y/z/braceleft/braceright/guillemotleft/guillemotright) -/FontFile 382 0 R ->> endobj -728 0 obj -[250 333 0 0 0 0 778 333 333 333 500 0 250 333 250 278 500 500 500 500 500 500 0 0 0 0 278 0 0 564 0 444 0 722 667 667 722 611 556 722 722 333 0 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 0 333 0 333 0 0 0 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 0 333 389 278 500 500 722 500 500 444 480 0 480 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 ] -endobj -379 0 obj << -/Length1 1777 -/Length2 12839 -/Length3 532 -/Length 13832 -/Filter /FlateDecode ->> -stream -xUX\ݲӸ;;A, NIkrss5FUsl*2U &1Kgs3?@BI\*@E%4uv4@sЇ - fkm' t0s(yAgX94-l1?;@wВ `ik0Z:!$d ,yARi@NK3.lZ7su gGO@:wv_e<l-Ĝ -ٺK-Um=,lVfŁNܿXTkQC/fà XAe%?I9Y8[:YعfnnfD\6%0;9{@# X9!sA,VWOg]YdVE;\_ӟ7(t-x,~@7?>g T W?ΞnW#w, 5w_f/}." S g?ALj!]J!PR&PԞ&@}!Pu?@ՕUW7񂪫!Pu?@5h@.@.o!>?g@,Ml! _ ANlBP+v!/I9 +?8 +d\B_ N+ $ן?le z>@ ov-ARsU֭IM}݈ae -[9(GG޿ cԦB\ߎLr uos|]P;[~s,lMV ]Jjnx5sJ8h}h SGr鍖9daƹ0&6֝ jHh`v3@~qMAK%:¾C>$Մ}fIBO=oxLٙKpݰRSl1Nt|y0J\b¾ ȖHĂHCDAuˢ(xط_`U6~ʾVh2BSv}9R*@8lc.HulH *c濂rLU/x4Ң9C-d h[WfߍsX3[lQ$B2m :!|;>Yrd <ԛ !!\5 Vq^}>w g܆_W"YgpA=V5|qL0|a<6۔QP/]X%%t 2t"9g6 ~7+l>\lHF._c|irfIBR"v'D4|krhcXwbkxeriINAǥ$-醽8iBEbWA0m|G',8:PzfQ2ﵒgĂL\NIwOĒ'J/%B@&|G - l1Y(ߵOT -ǿrE­B1Ȓ$cih1+hF08tȋ|3Km|Ȟ!F*L6ȿʝ1#:z߅4]oÕ.Sa8 Ѣcs`gGf 2 -g:rэkT ~mQ\&A+p>9sjӫkq&qjʵ9Z_@G^0š83uh'&eÑY9Q5PΤ2 AI("==FfrN]-GM!lPW+߫p/_qsKs^G1!uGf {H!7 ?;jBtfl̵eͧQ+;#GI t}SL7!.6/5+26BrCc5' -&bo5QljP~͋ڷf`8CkwVs_Y# 1LykkDfv?FԀM>e{/svZ5a%?AIuX@G?NM`! -qƊ,SZ˱@#CoXsk< v &nLa {{КxGN}v35}$m_{A#'ߜPYբ9ߖVD8%D]zYUϷwp"}5*J:iZ[ø{x6"*M ?/@9_Qb ;sү -xޑR߾;C*] -ɚ'UKP,rm -d߿?6ކذ?LuUñ')tL ؗ -޻G_NX0Chf%bW䗞-]ݷ>](5kTzN aIi25ߚ th!n[~AJBs1)]L@F\kuҖF/.KSLbsGq lp^f. ,AgZ55Ἥ CVi)!LT1> -l٫bq;`F[韜>in]nS RAeF\B8RҚr>ҭd%{XkblV~t\XʻA4)YeDx~?LKz7KDM\lkVRk?{ς G0c:lq]H@ ~W93i"x6G߄c"a~EU{*Fl,0I Er.#Ekʝ5m|=XxP D. - Q guΒVAH[VsT #[<_@_ffFUts1*퍔Zj -f~ѪS.)VmCuۚHVԢcҶ 9" - Bm!$L{ 0nGp}9p:G5>5|hy5p#vEFAX`Z:{jqC`27{%"W1u߄^qTeF-x/Qб$P^ROz]HN:{a81 IxZ 7f$:u9Vwh+,V$K/;:t?Rs>,̦ -> r8._əm$߆h{ cjaBħc# OӇr/G_3ԛәkuDt49c۱i<^jIxrq!.0o~I3㞹k S0_=")t滀t0tbZ]?lFyhC'HXj&4"M-hxMEA6Us8cu -1>cV33ni*5{X5!7O hK;Pc4v}ZIŹ -Bj5FǢ[*MQ44UܫlO/OP_$݂0g~RRܗ5ƞ6>w"JՃr=ʕ?(: ",)q3[{퐘nsMA ӵ9q/W= -/w9W,.ϔvM<ԣ6$div[30jg2 I!r>A^CHVҪ?#?/sVKE8Ml"ʹ -%lf9/.T"vP5lE她WB:sM~q1 |FDbGTX!ù*F E_&c6c2y@*Z0lN*3g&l5H޼*ͯ_2Sb!K1n&l*+i\߆$V-;lזmfeٕv Y. ',Dgcdu߉ -|$L!\&XmmR xhD6C<i;W0 gy5U}tpu&]Yw~IBIh'Ixc„Νa4̒vNPQۖ%s/7ˠi[(d|O]k _{T1m9+$sxZ6&BV@?ɽt\t%q+]CI4͡hf)Bh{q?-P[H#̧q,;ai7򏍠M2\uQMjiDVXU.ڗ9W0qM %َhO0ߘ:U禒ˆGܕIiyyQpl+f48"&N3U60_>D.Pi ;^1\CMO/7;p]Tm򥺽5׊ܩgJ8<}c{4A !;_>/HIoA yQ5g|ĥXf>BP`縸g$H;Nǭ?XXa&+OJtLrǎhg 02'hXЉEn{%7XپIt8}IGy׉+pdN#GYxb/;kҘՀ-P}Ld+QHԲ #ax'>ҰFP4)GЫk7bT-bZ$-P殮<!Mp9x榓*(~G1F,;WO` 'G *oɯ])*7z`U0씢LXX93DDKQ~pRM0ĸTSQf*mt?.t6r4b 73//HH u sDN!o+~RlcIqjS"4򵻁&IT75J{nwZ#mjr<\܈[,8=p9٬_J#nڑJEfkP_&f9 ̛7 -+4(db٫3{7fz6`vRՍWG>"\||%{7ڔ'bj^,J1]gfv4!Gϕ~Z͡6"ŵHC2~n׷0NiKu1 X~՚+J31gCĮh_Ȧ8B/+|5dĨ/(%" -"*t:jhԴdAH?s| pM)JԚ>VN:07A[;F b'?gT\͂jߵ BBVֱ -ȍ+bFz ;m &w -/l.]*:`zBzLJJfao񧮚ϞgvX_>2(mm -3 -( WgoCu1#?s0VL6hvh|*/,>QfUZaI"ALa c-X4ˆ"qH $f ;|.{Pi:y 3"$|YlX8?)Ba6sf(ɛ*d{Id`Eq4R0ʛЖ.d ֜AFloU/zDVj[EK),օGQ26g:.R^L-*B#·|^l##kXϗqyGiur3e.rD^TX ݡ|YG׳{Q(\A=;q8^-VV}uwktv_Vb!P1XQq<"!3,uwt󚵧ɇC?vx30q-bK Di*vQkge)kfFm/9DJ9!xSo3?<.\(uJ0O "\߮mJV&)o&s)F%3Dƙbܛ0w%瓫3?tw\}hGs?b2_j'Xr٥?RK\('I͝*dxvu+k㡌Nŗܼ -w򕢫6SVrۀLC|hoch9T$(6+v2/HE09~j}XiT7qK x\ iWaƸc#قwz+z<;ͮ% -!a`]aNk:'C͏WI7ۊ[@ҳl'u[HoD. ǹ7ۀ`+)fnCPJmsV >syBa^snvC, u Ł+5ot Wx@c~#7[Ɖ^R/Y )$ ک;W=I$ΝFl\R 3 >a=F@G#jM$]ԶOƂ.4tFrod Ksa=+8NXO4 yҕ,Z'E94}~)|Qou?[-yp%'r0K)(A; -a[XlyP,׶aL.k`hȰdV|jeB0CYӆ$]G#wQ yԒp]<% - -I}lVcb_aeづӕu74zhOw>됍~E+{-Nju2zv6 6p M5vb4R+ǐb!?t2P>~<Y?8u ^ϴ&D<0 J݂GQVo_2@~ Wg/Vδ;Mm8tRXP}VML臅}>CMiK]pTKjt}v'Nr3H#R #ߪ$qp4)4 }­!4NbXzRķR/tl'[ƷChZq]_fbgn}2T C/|pyAgU>hzHbC'Ň#euVGx(9*"X`V<:H&r1R9tSsEI-zG͛3d#m"A<? SwZQ;"VgO*vf`4.wx87X|'^ ]'a <0sfb+cq gLٴ}oͶ#^ו"&夊Y_QZ䠖K;:ŖqMpr|k-j;oю[&⑎D9 @dٗ/St䥎6V'DMOy"2$?;wN˕bpȕ'ԏi7qCM^QKa5f8{-Ji=5Nu=,EEAʯEߵg3?=yFg#QW$ -Jo3r4D&IM0ppeBH 9ayM|ox8 ]!YyS+$}*! --|jway:OsDKuTBу6{D(巊R"E5C7^)±a\9*5l_ۿh1$9 ) -3.'A~p2.0$I\'Y_JL;+>lrPه70^̌=QKw+}q]B>%BNf]6m'ZVf@`.u? +ȋ9~WȇJ)QжI@thB`33ր.n>!8[[Kx3JPl,(ń7L/Y)8>.?zf2{haQSE FCDZDҽ!oMІS,re/G4T`f=ϼ,&lZn31EB߆p{9?yuEEcG'/4)Xڝp$K-˥x?Oϵ5eK{`nɞXDilW>S2fO>cԠa#'_Eky_r-^Z VE̼]:M%̱Eگ9l͏HP_- )v:EWM҃R߱ PY8 "PNf3s㋃9FNv}2?yMg8;1dP+^_&YIK8Q.,UViD$qaTokɭ%P,eݧƨ9TT~Y{݇.(EטYJQ1[9{25E'H[yl6kh"gXaasCb_,q?so3m"% $Ijo!ʑw7a@k^ jJk&I_֛ܮf]ALP->77sisbJQ''f6rX~߳kїuܢ%0ɼ@*2YxERx#C'n ?c"S\&zNn=NJ UXm -8g- tTG @qdπK}`36#`ޜNL0oIfه )X'9 OH!)b.ӻIJgK^~L` ٮx.҅*>=nZeEuGg UF~YH5~&Xi)3{~6j‘(`E*F%BJu, ez>Jm 䢳@OvwNm -.ġ`5SBt.X/hwXȧ>w ͐D ~;-TO;&>}fXF"Z;urPjcT?c:MC\2?:>CKfO yNm\$eCb'Ƙ4%@ nu,PPj8~ N~n4|'[@UV(ep~BisfwUFQ-`=GS M\AmmᗶGDv24NΦ߂e D0Lrݖ"ߒ'Y-GٚnT;זl30qZoHs'ƫ>b*ӼR@&V?f 6bxv</lH?ju\^^+~WjRlCM\鉾hLhС{=s&LH@|5{epzMR$W -~`D JR49΂/~&,;dltX -HaHFLw$s_tCa꼚lPWzbp;[`h6WPjE2rܨ}~Ph6Idu -z*_3^JYp~'Y s:JΎRsa-%f<ç7ˡLils {0vl4Ul=AH{i{P ͋Kx!FHKHk¼)GLXk4$ 1$7 ?|6 y_jn\{!!^/So=.&bՐVn6Zb>ZmPZ~]˭}3zE$%*ဝiI'8dcމQQtQraL}C9燸tftrۛatvneg'&hH tc²3;ul1Uyn]."2*E5U|4PTVy:u-1T_h2\DZ2C o H o{Hn&'(b> endobj -378 0 obj << -/Ascent 694 -/CapHeight 686 -/Descent -194 -/FontName /BLINAP+CMBX10 -/ItalicAngle 0 -/StemV 114 -/XHeight 444 -/FontBBox [-301 -250 1164 946] -/Flags 4 -/CharSet (/fi/quotedblright/parenleft/parenright/hyphen/period/zero/one/two/three/four/five/six/seven/eight/nine/colon/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z) -/FontFile 379 0 R ->> endobj -730 0 obj -[639 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 603 0 0 0 0 0 447 447 0 0 0 383 319 0 575 575 575 575 575 575 575 575 575 575 319 0 0 0 0 0 0 869 818 831 882 756 724 904 900 436 0 901 692 1092 900 864 786 864 862 639 800 885 869 1189 869 869 703 0 0 0 0 0 0 559 639 511 639 527 351 575 639 319 351 607 319 958 639 575 639 607 474 454 447 639 607 831 607 607 511 ] -endobj -729 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 12/fi 13/.notdef 34/quotedblright 35/.notdef 40/parenleft/parenright 42/.notdef 45/hyphen/period 47/.notdef 48/zero/one/two/three/four/five/six/seven/eight/nine/colon 59/.notdef 65/A/B/C/D/E/F/G/H/I 74/.notdef 75/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z 91/.notdef 97/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z 123/.notdef] ->> endobj -375 0 obj << -/Length1 1694 -/Length2 10190 -/Length3 532 -/Length 11138 -/Filter /FlateDecode ->> -stream -xUX` wwwww(p`=x !'˙yaWگ= 5( v``HHsp8Xّih܀v`gi  C@ p8xyiR`_7;^N| '3@z$ph݁n^@kVdsFfH 5y!Rz$h vvXmT\@ >?kG;xz*`k9IHahg% r#d.kVX8:[wȲKM[RAR^?_vھ.b? Y7;;+;;#_d2V`k;gȁXY"CNx;gk1fcu{@ K!-6bBnvh'lV`''?-O2`?!~ ' `;< ?<nz tz@!ko2+l?: L# SH!p?+ % !HyrRԥ E)!Hv?ɮ U$ڿ]Ai!H>?ɧ !Hvn9IoB_!ۿbdBB_r !VNbB!/X+B&Na׿3)W0PliAaxHwaQV[lH]!ȇf]LUXK<ۺYeknzK6ULb$'tӴ OZ,WE. 2/Md?e?FaRS/gQj^=L*6+b[*y!g$X! -yGVyCn[>?MDi:&z1ч,6E+⍕tNz"4<[j,&PgEiST#~^"J -ovRXőkIܮ/U2Dǎ[bytؔzἈf1X(k3>Q{ H(5,4/R_4P5`}';0n|Gnynܗ\G\ѳL|qDb+/G;8>K;ufjY2=I\9Xqw ܙx0se'9;wCC/YZ\qx"ɨ<\RzP7UܸN&\R>X :3,hO(2n.Q(y[!JsTAs:bD@,J$dwx(%A:X~#fubC]#,0F+! gƇSnmH)֚9=*sӦ2Bz=VX qap?{<[,Vә)7.JD.i\{WPX4x:ղ#1]zz'~$GÇ1Q=U0iU\%i3RG'S;{'IA - -qbshtx9!tD8i ۡśoe-9}&lzX weǣp\uTSq4"^%Yk^%_HhC)>gy!) -/@ c; _gKȠDgvM[#l+ZuIA=&{%YiX ޣZ7= Mc2Xg!f41_Z䬁퉝 mc- ;q1-e9ghwbTc>Pnf, -2y<@lz%!됽yp2 -H[SHKO) V[QjCN'uQukq* _W'nu)4Z2`115b@Qu , Ih$y%dQ2^Z:*7^3g4n/őǐt+evO|90;U.ۿ% Nc\v3 ZqM^(D2II}PKlO&M\'.XʪDcT>(6+)a{kzY-?v/h}BCSnA`|XMi;$fvr7B}% BLD0] f?]j܆Ψ -Ea*rLk'n~E* G'IWltZ۝@3cE^ &WPTT!925)ϪkP<nH[{6bHz@ _{I:j9햦xD78߉l^t+s$B$}55?EW yGmZdTl՞WŨkvhǵCTt-q/kd>Ъ'E"I|n~A[v%,X -|mRIBH'6P :mӕGc&1e[M@_5X|:&"NHքߴ}IL̮SiC>s 1v-|sKtEb,w8uВw4n}T/ˣ!OȐɤKU=R8צW<^sIyY{G -; 9"'Ze>SK]LyC=Y]cP( x$Ό"RNJ vs"Dy5ztR<(Mϥz{zDU#Rj7ϬNG"x3q?< wT *QIœϿP &e\[G#fM.-w Zjnߪ;QsþB!kv~i1??0!jy*= X=xѶp|s}cDՐ0E?l #[~}`# -"3AگE -ʋEBLyXv|~&I)"BIjݲ -@z4p8Dxeiԉ5Mz[&/_WR#Do|oY˜FB3VXީ˓jQN%֝&9QrĢO <dKؾ I@~=QaVΛ#gV)k5c7Rv/1/$ǽwU3/*<"o~T=} -n~s=^ v j\ Hd=ٯq?fϻqo$¸lO)7B.[Yy)Sr<8[M#-wα|ٿ ]}7tߙ)(_f}l$G_?el O5Ea+5,;{}x'\|c s<)AfXgG}:}ؔH7yp-:EV#L8\5y˿^{FXIވ2(7u%|IdN+՞>#ԜFu&:HFL (41R=8-%?ϔ6ʮL1{#S -H~a& -Cv(L!SW"=E,73.UW!le$`b_wr(aApE~Z:/Bg GLXXVAqtᆷ4pљ9Ԗ'$Cl#:i7c/+x~1*oRگDJ;Bfl%^? vA.fsVq ȧ:n.Qf)ap1f4SL`;*l.(pqgU=J㔾Ԭte92a!q=>T)ϗ/ {7hnp{hnU؛+apڜd|%jZ*| /?y{K*~8~KVcX*v! M g8NVɃm]jKtx5hdt&an['"eEB៞o?JC. k*"25BOK3-DƝr-no }̣'$E$}*a5gXT^A] IGH|jk4j(^=KR'R -.WmСd?Ul6<_qL]".^\sRBN8B1jsLDhǚXvEމ4a},rHB ζz{(#"#S)ϽX*5_Uހ)16:\*.{gCAu$cg>$ sU.gbY)i`M`{Q|ޑ s2.b}Q=ZO*{ב8HS5>g&}43.񸥐 RեǞɯЃ"d7A)HpyǦNٍ[kjm((ᙶh^m)\xkȔ6knMk-饶y_ ʍMuah8*K7 5B1KL+)!6=`A\C K~Uy";nuȞ5ABآ͈)+A'fA7$felpo,.0>(o.FN55-`h7ђŸJ+'~V4sE|W `N \0:N7,u/ iY$jEcV *X(>`j -I9&[JũZIcȪa=v6-o`^|qo5Rozαzf卐d- I#+/^'^?JӈR-6)DMWI!]HY\'h -.Rkōa MPM돎6@} WVX՜Mbω d-ruke%j֦ì›&cHC)˗&"Uh NTnI[`RXM~֯0:l^C3%I56q2+;ҽrg$ww6oi19LCB(uKIoyEnTɚovbUS.)MCr)Xd&B}DIAhR2WQvZ{mpC{} kФ)}WQX]OaIm٭1KeMalY\+jՁorVݾ#V"ݹ)A[8IH 'GV [0q]zXUN:clDHݏO"tOi NW*Yʤ("67L`J Vir +\a~i+w]pg`/5MŪJ+`pf>ػ39 -ZʵȽ<HD%}0pRcR!du /Q7ԵFЗv2WW|Pܢf4Udsgoc}㱋{OvK*{XQC#l{JsL>ȟ Uy}r=!Bh񜃏,Wc "=~C^äRfi.af:q[ g- 9= -̦ yhoH ӈivs s x2vN8p# m~RMxsʒh 5/@w+QCT-5M_vnYҩYn -G'3ޗ0L(4JvY!d3EdNXr XKj6+$ӹxG:[row"Qh@Ef鿫c>;֠`%K`)P$}UJ)[246BUelU #..LJBּ!䆎|&yrǞ TwǕ;|}K2 -:9?];l OtG6 -5cۧ -Ի)ըYliS. c.l*"h'Zk')hUSR-i"r‘UjTr|@PM*OXB/<ߕ7cX+J2&*|/4] n[/q(tWEkzz!aÒt桥*6c; -Gol'KT,3w765xBnȬŤf>JdP_{w7XK["c> -QdGOSf%}Ra}*tm=%<8]*fL= v5+}\UahWSYŐ2gϋ3>i-#˓!>~"cJ֦tŪ?)m.j[V;<.ɮ~E+8f]1Fң韩'秪 ϞU<Spiv^XRTzOՋfG=Vli;<~!GMq|RpH=Y\>VX|0NĘp4*R;Ii3St8!$ylkk! όHk׉%S;|`J(Z]!&»g#lj>%=rU4 'pW]+†lF=TSAȂS?ӎo}Bsr*bniC ~4dLpP+2"%Hu2efF *wnЀ 6/!کmYJ]V…5{n+2]>'=^'׆Fkܒ zei~+x8ST -I Y Be63P){ٙ -X1[_VJqi.-5FbN+(}huLx4Blk&ay3s䳊|4<NJ;+˜īIM_C)F&6,nTUjHSiZejܖj錀Y}#[)Ȉ(fOa:ޙm0 iNSř'R*,Q@5|@!匤zdB{ώ?mx _tVI>K[y55#Ȣ \4F -3}4xĒj Li{-s>3TW6tMӫ`g;@ Ģ\}re5# :okg3yqH2h27BHEgRKW^ H{Z?虸a=+_)j4^QI6)Z dY$Bu&oN.w-O29l 9Dnqx"*M[p^N.@'\#B; -lO^SJIň@7~y4Hw6Rg6no oKq2yS!!kvg)cKAP ha]!iYEOL`p;Y9 /]! -endstream -endobj -376 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 731 0 R -/FirstChar 12 -/LastChar 122 -/Widths 732 0 R -/BaseFont /TBIBHA+CMBX12 -/FontDescriptor 374 0 R ->> endobj -374 0 obj << -/Ascent 694 -/CapHeight 686 -/Descent -194 -/FontName /TBIBHA+CMBX12 -/ItalicAngle 0 -/StemV 109 -/XHeight 444 -/FontBBox [-53 -251 1139 750] -/Flags 4 -/CharSet (/fi/parenleft/parenright/comma/hyphen/period/zero/one/two/three/four/five/six/seven/eight/nine/colon/A/B/C/D/E/F/G/H/I/J/L/M/N/O/P/R/S/T/U/V/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z) -/FontFile 375 0 R ->> endobj -732 0 obj -[625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 438 438 0 0 313 375 313 0 563 563 563 563 563 563 563 563 563 563 313 0 0 0 0 0 0 850 800 813 862 738 707 884 880 419 581 0 676 1067 880 845 769 0 839 625 782 865 850 0 0 0 0 0 0 0 0 0 0 547 625 500 625 513 344 563 625 313 344 594 313 938 625 563 625 594 459 444 438 625 594 813 594 594 500 ] -endobj -731 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 12/fi 13/.notdef 40/parenleft/parenright 42/.notdef 44/comma/hyphen/period 47/.notdef 48/zero/one/two/three/four/five/six/seven/eight/nine/colon 59/.notdef 65/A/B/C/D/E/F/G/H/I/J 75/.notdef 76/L/M/N/O/P 81/.notdef 82/R/S/T/U/V 87/.notdef 97/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z 123/.notdef] ->> endobj -372 0 obj << -/Length1 1339 -/Length2 7222 -/Length3 532 -/Length 8039 -/Filter /FlateDecode ->> -stream -xeX[[)R4nAC;Ŋ^HR(+NqN:Ic19Ya~!c )B!<<@9  '7&; -yDDx2^@^n (&Ph dckPhcjXy:\5lPG'P uPrrbmm< {G&_>*;(P_a[/Ap) 3\WB~@[&&>nC?+zV.e\~'uq5 w5KMdYO+  r+ vqY=@Ao.C%- mw#Sy~37@nNnn@߿c* VV~N# }8!PO%@xKvPw̿6\vF>~ dk ;@]\~G\~ PBQ2|:RMK7 4!an oϠD\FAv~/E^7KCde|"@^'x ?zl? /sqj#]f -+}[fӇn@B"ƺhxSGMsG|B(-5öv;iwW_sZ*3J?fA[A3nˏ2TD52UǬe?YvA϶|"y^`(ߦOgΎAEi nHt>;pe ]QH]WO`1sL2}eHs hVefPP}Z7eq?~i;A{MtA\fuiI8OPOi>"?]7٧S.^Սf1BS)sq" &^ N~ =ˌh!- EoeP(?LU8ɹ^&StPr -;t\uxg)AIGGr.CL: 2a.F,yPvƏUȌvrnTw *dլh6IBhZ5 ;[I+9R=,MiA \kؓht+Zs*#,!Ҳ9SEJ,Vߢ0`l']@ɕ n* 5~2ϗxĄ>?[9߸)Qӓ]Lփ9M#T{w`H_W{7;թT<^!| TUA~v֮ReY WqHZ)~Zy!؝Y;r#y &*r`H6?$4רW'8Hn32oXg5H ?@[WǤrDJQ6!8ף_:x+Qh44NF>_G~\DjY.$6Ԍ-FܻtNXғ+hphE?#rN(<aIPʜ3r͚TNs$7;Iw"Okg#Ucʉx.) g^^dUɃL2ܾ{v& -ms0FxZQ  V)z8֯3YnXq(Yp(qmN2DZfYPg^_bz BYxk:D)YN&٨YyvcBUNJ&f+6]e{yj~Ob)K,:W^=x 0Oc24 =>vH[yk/bּʷ\2ˀϐ8jۂHPE R{*C-7Wsi Ϛ/}Dr';q+'` -nF=9a16BfCWOB>ON JO[JTw lZ ZP!tLޢU)sm|ȼbB&emʾ22gj?@IPxՐuP1] qDl,#]0下cV?V3K`rdq&6xH,-kGĨyN[zf)LzbG2y.bkJb OD:SAWaA^o wE] OH2)9J0;$0T YZ~D2~JxOkD%Hјt;/i҆Kp>Rm϶,t- ;%5 {8krx*?\e8^+<5HcvTnt5m<QN^ ur|Iq+ݸw;,cUC #m%٥Lت@,S8d`קT>Dut2C(N9f藅da瓎k 3g1Kҟ -\M5ͽͦ>RX{ZޯϭNoc94 Ln[ T3Eȷvlr-Lj~з J="3R9S'vjejGtKGqPDظpE}c|Kl?9."6oj`\P,9AAȨڳ'"<0pTiN!Y+ dT2$.l2u@o\\Bnfe`d mXr"Ij\£ euelصm4-;7O\#!eز pg^KM!D'M=ߒEfoTLzBX0ׄ&,S5Gօ]ޔ&f K4@BR爺*%Z'O_ ;^ -e_f- -#z߽n0Ih\f߰@?0*dJx8aoGq@]tJEehq%*8^jԦ?H-w<O:~s;qAh+c(2?NSi/?g)L/|Q!A""mS΁rGVcR:Z^ԃ&*'mvʞh hpVC\Ca;XRlA莫Y vs}q@ņ}ټ~'A`DDd]TԴ0'+h6nj( nG}pei9DzӪ(-7HȒh gS*gm=@ ;[U1Js[]ys<%JhJͬ}j\EFPJ/To>==%>^RFpmk<_q`e4oi!m1=]=᫯7y_ BGz<vh5 -Q˽_TkrM P* - Vw:MX6yF;I#hʤAϘEz1C>5s؍&+237V %_;\̗9 -ASRovL}I%),VWCgb yXs(".gWI \bu??K0j+X@`9 -1cÃ.Vؒr,,JyBI}/fkN а׳!ߍt&mm -_ op\ɟMmFa2ƒڶa-*Vykv`] C͂sM_:;P:zlN`P DwZ`I ;2ay]5ԗ -'-emgH<.>0~SU 3gR Ɩ7UT4LT乡nD"ǥ{pJ[Mo+tq&mU&uWj͌jbK~)hh7@w 5ۥ<VC]|6klMk3jax}r;kh#un7d޷K y. j%B'v ;[va)_|j}ߘ>K$Ż(J,vxi}CM@ݱ+V)|C,# lq [s׌zq NL >lƕX5cλS6B%Dr: <̜X,ח867>}NdxN٨^h'Ԏ!9ϵ<=9n.qF)\F⟻ -dNĭm ʯ̴ ?Gvh+J 9"R^ArV(2,3SϏlJsn`e歵ڱ'PS%yzPp4;RU)!mQB-L -cBФT?Մ e)i0/o$^fށkW4WE6 oz -R%3gny34Vtz%l=3ݠokz"fd6$D4zq`hXµĸn6ºۛB//笲,rJΚs0&+c^Sx- - dքѯy$:lX2p%dx(| B=:Rto3Kv,1b󝲺O?p7@z6: #3w[yX .fXY}4+)@ZJUᥧ%H>Y_)tJٕL iMtQé2k0,6MYFǤXP{{yLYtbc|(Jbl"ZQZg!!Y:4*HiKA߁ J -X˭~>Ey^y_kjdto*`+Omj&k -T挶D -X2ZeؒXvFEhT}zh(K --UŜPc$w3=PU8G,[Sq1&~ Ejs?~06`'  -endstream -endobj -373 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 733 0 R -/FirstChar 11 -/LastChar 122 -/Widths 734 0 R -/BaseFont /WXGOMP+CMR9 -/FontDescriptor 371 0 R ->> endobj -371 0 obj << -/Ascent 694 -/CapHeight 683 -/Descent -194 -/FontName /WXGOMP+CMR9 -/ItalicAngle 0 -/StemV 74 -/XHeight 431 -/FontBBox [-39 -250 1036 750] -/Flags 4 -/CharSet (/ff/quotedblright/comma/hyphen/period/A/G/I/L/M/N/P/U/Y/quotedblleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/r/s/t/u/v/w/x/y/z) -/FontFile 372 0 R ->> endobj -734 0 obj -[600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 514 0 0 0 0 0 0 0 0 0 286 343 286 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 771 0 0 0 0 0 807 0 371 0 0 642 942 771 0 699 0 0 0 0 771 0 0 0 771 0 0 514 0 0 0 0 514 571 457 571 457 314 514 571 286 314 542 286 857 571 514 571 0 402 405 400 571 542 742 542 542 457 ] -endobj -733 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 11/ff 12/.notdef 34/quotedblright 35/.notdef 44/comma/hyphen/period 47/.notdef 65/A 66/.notdef 71/G 72/.notdef 73/I 74/.notdef 76/L/M/N 79/.notdef 80/P 81/.notdef 85/U 86/.notdef 89/Y 90/.notdef 92/quotedblleft 93/.notdef 97/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p 113/.notdef 114/r/s/t/u/v/w/x/y/z 123/.notdef] ->> endobj -369 0 obj << -/Length1 821 -/Length2 1985 -/Length3 532 -/Length 2576 -/Filter /FlateDecode ->> -stream -xRy<5QBY1Ƙe)K -Y/F0%Kd=vE)IYZRE=Q5dCsy_s?>|OVFv $  4 -DVրbix28jpMM8GTU8J REBdwI o="H$ K, Xqx  *`RA/ 7<xeȄNԿ?Z 2(LX$BC`d,agqC:`%no6'@&zi 0#T[7}2oSLhXG j,4'%P:Hr+m0S&osgœh6n1OʆTUT,"si '`)l.X < @a2Lc]Xd -dk($*m#~`?si0W`@/hH dYk"uJqt -$Ѷ+8@/}J;9='vOf#6(ۭ\dJmQcmsa>I=_.̫矈-\5 x-1{if9ڒf|TqR;|K]D^%,CHYeEEc="+jg'r5Λ_1nmg\VLg/N]Oj]/ -u;AiipaX2 @X-xk;EbNR68Wr.qHf~*İ~Ri]߻p1 8%oSbnх:1Rxm.Ō;YJ)\!g):$Lբ/(]:Ke +67=d9md!5f'Ӝ\e:"W發$q_C3_|pNzqJ:hX Ψ.g9Fs_gK3#ڵ z= 4ZI:]3kŰJX;(u;4}퓯꧃D6LHNԈhsH[q']]53anف 2VN2l%=甈w<$oVh -r|Z@#]MŒ^w"!n; QRlȃ%Zrtڙǩgg`Sa+y-T^7y&ߏU0п_p.czȸs=x)yŖg;G E\qN_#e[i@Jۜ-!+h31Q~) L`]zӫrS{ښk>rPo|6m\W -[bWBZ1n"kw¬zpxƥS399dI)#qq8 ~~˼jB}T8UhB2Ff e_B@clo}İX3}4t}!ۈE!=d&sCq&=(Xc{tbg.fF;쩴j7F5l(\MLᄏ jۼ=e+U)ڱ$}nqG"P~-wd;&\<SRRVaMKy}״.g4smq_SBW,]qf5sF52^oZ+k9PҦ_{&{=m2"^ $ ~9Գ1sG5R4;e)$YzPip5EV > endobj -368 0 obj << -/Ascent 694 -/CapHeight 686 -/Descent -194 -/FontName /GLIYUS+CMBX9 -/ItalicAngle 0 -/StemV 117 -/XHeight 444 -/FontBBox [-58 -250 1195 750] -/Flags 4 -/CharSet (/A/a/b/c/r/s/t) -/FontFile 369 0 R ->> endobj -736 0 obj -[893 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 575 657 526 0 0 0 0 0 0 0 0 0 0 0 0 0 0 488 467 460 ] -endobj -735 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 65/A 66/.notdef 97/a/b/c 100/.notdef 114/r/s/t 117/.notdef] ->> endobj -366 0 obj << -/Length1 1233 -/Length2 5754 -/Length3 532 -/Length 6539 -/Filter /FlateDecode ->> -stream -xeXAiAsHafanIiPFZRPJ~n||O|ߺuZ׺F] i UA"?w@E "#sI EB?$MB>߄KJ&~ME@>v e@t]?(u Zի?P?]D *( }y<"VD<=z'?lC?'PL0K;f4F)csb*7%ij' OƄ jrԙ\VdSobo2xq}7r⚔9seBcr,lqtOSgre,E_wJ.1bt{w焋d "XI3]ˢIR‚o2>3k}fvf.u b>꥞zkܧ~*>*qh*/hP]gtK"L[H%,;K# -PUO2DFoZ[P;51Zo3xjt~{p+#иVH&*"oJo {KS)}zk$P HW W= grqɄ?boY`,4>" ڊRg2Bk9vkYii3;yڣ6gXA,5^i.i1?XpIf:Z0RR`oMS1:U%V.rXs>_K)Z -ɚ]H>2(~l.Xl>ЗWc2>c~r|X^Z.U=\GÇ[")z,ߊ7IQlC޳W7_By .<Z::4Ft~=R!a-\zh|#- -.'\A95Oՙ}Wx6["iFp~}%5? ֘gLwsJR$ݛ½BT -/g]DZTBwENl]3!$_!%HN/Oj\#"KֳWuO|tĐ=mP?V(u')Sj ]_\^uT^=XxL+w`O|T+$AAwfehVX.S^9fqn=ESqᣩl1||s207.c[sL|9?2YLAf65Y|nW]v+ k8S̎nTNoW<^8+S,-R ,#MejZΣdKu*]we\.|9Neu -Ij- s.XKX}(*zgcE="Bvf?!SB#7!19@.i!1? $mo9Ab^ۭVi|Vc -B(cdF![:A + }(ߌú,GJDqeoț3(48nȆJvq֘rEXq ʂȘHb_B%˙*s@IO9/BE $*܀a(a&ӗݺi#B9'4f9i'L_hM -doT\Tȕ?o#> T&[xן7_LZҏ:œXp@/bT"1zbqWMJ[$=e-x]qܜG| n0w{jfN )Uu%d8I[Er^ڼn7Lg>L!4C~-lhn[V'G Oe7:ǃE$ET4~tq:MɊsNclo41[ދNhRƉ OZT0 b_ -Rk\C4ž -yWjkvGЧtʰz"X 45&VS[VA\|n*{ݱoqQRYҊ|v*ɩ$ZhҔ=~q݈Qu֔w#1B-[ i/Z\'? nfu" -b[KמG`&BeHӖ h&ѕ?pURڇc_iR.kz ~N\wɺOge)-KMRm"ꟺ})u|xڊb='8Lq}ջ@} fz۾c3C³qZc8<\K&gCY6n;A! rDIQuufd3Oo)Dgw92]OMI=,!9y`E)k(m*rK5=SoPV91T-7??~V\5ܘglZԴSxZ|4IX~hb+ S#k_]Aoj4{s.dihd+GѾ &[Isil=%ẹ /UqۇKr}K;a'2%;C$#חQj Z kG+dQNڬ#r&71IDs~,ytV߷}خħ+^̮锬(>h`U]\Lɛ%Hyt#Crlfb.b)t, 6tTӵ*)OmH`M'3r;nu>%f޺- g#/rvlkMx;]ޜהxaϐea-y)ډǝlOw~;c)#;He#J͇.ۘDqAz}!0BXkIZg{Bp(_U')9 -mn> ᾞxG;L۶i X8Q6귛]t {[sۭvhptj>N=?ܦMچ@R ︷cD{뻢%> IԜ,A\8I':B*b4yl8]ieW*2ur[Z+Hi8,fwC,A ќƷbinLt0ӦE&'j/յ?>?tu#~rnt+8@=;8j Q UD^1S~Ji^ì-t -odJeL3sGj)Yfm=uM##|'Pgu brԯF(-MZwG.TE oDbt7J!}E){_PZĪ0J߹[=`ڜ~XvԠuQFȌ|4qaHY"3ʖyQm[ k 1meɛ=Wv"T8%'6?1 -pyXc*X[,N\7kh]vt3$ҋ9*$Q^i_R;,\QChBQ[0jPd 66b2e.|if/q_*'Er3>y:j; ٨ .JY0d˕vn'O*|U_ =NOwIv4`) `>bzׂwڣLY(<3Svwy*B1̏nGT >uua oL oG ܭV_e:P&!*)xX3a{^/9֗MpF@Ic/֫/V@ $Y. Y KܳBޑ) Jdd-!/R6p>FK=D&G߅ǓOAh]+`ShX2+ҟr -^I2}?܉:|7K$pXÌ=>7LA?S#|Qw+`I~846|U:} f7DLR#O~НĴZ ʓeQ֗9NZs(#ؓl??3ԬX5F|sL 9|КD*ѭ]URn4PK`KaT;x-e3`23NTs[ݯHm]JpWSp`gnQn^;`pxh';f^ELk}C(?Q2]ŇĖ$ -L⯿ZǧH(1Z3'9S=N7jt>N|7o;3YvIsԃ1Tڷbz$۲F&WoaIniė2~.H+{aʊb0 khG +qt2& ӕr<7Zp]q >jre@k2q>PL4m=S2#b_t+6s@^oAnP,a:0z|U[~j'R\j,/ .Pq@ q-WcG#.k1mŎNZ#k~D.+?wkPz~Lj7iVBt{z~~MBɢ˞舴na:= QJOc;Js#A#3(DQ@d.M@&U$֢Ѕ4]]y2^賋^"+?>o G/MM&~.w[6|*O9%)\JLk} 1Sj,Ee:?p0:l2xfxD"a~ {pi~n -R^ -hph  _[M>38L'9&YSn4ͱB*m8/c|;|ְrW*k 7qH׶z*%i5Y0\-o~sx$0:be'L!5Y.{ǵ?0QKeMت_E8eHONz >~;):ւܬ)zcQ++oTe -ʲ>[y\@ZK]ݻ8bNXb}'V4 o;۰c(]~:GQu7_vtіqYn Cr+9Τ[2)ʸiuFo;?+?B < 7'e)v -endstream -endobj -367 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 737 0 R -/FirstChar 24 -/LastChar 118 -/Widths 738 0 R -/BaseFont /KGOVFA+CMR12 -/FontDescriptor 365 0 R ->> endobj -365 0 obj << -/Ascent 694 -/CapHeight 683 -/Descent -194 -/FontName /KGOVFA+CMR12 -/ItalicAngle 0 -/StemV 65 -/XHeight 431 -/FontBBox [-34 -251 988 750] -/Flags 4 -/CharSet (/cedilla/suppress/parenleft/parenright/comma/zero/two/six/seven/colon/A/G/H/O/S/a/b/d/e/f/g/h/i/k/l/n/o/r/s/t/u/v) -/FontFile 366 0 R ->> endobj -738 0 obj -[435 0 0 0 0 0 0 0 272 0 0 0 0 0 0 0 381 381 0 0 272 0 0 0 490 0 490 0 0 0 490 490 0 0 272 0 0 0 0 0 0 734 0 0 0 0 0 768 734 0 0 0 0 0 0 762 0 0 0 544 0 0 0 0 0 0 0 0 0 0 0 0 0 490 544 0 544 435 299 490 544 272 0 517 272 0 544 490 0 0 381 386 381 544 517 ] -endobj -737 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 24/cedilla 25/.notdef 32/suppress 33/.notdef 40/parenleft/parenright 42/.notdef 44/comma 45/.notdef 48/zero 49/.notdef 50/two 51/.notdef 54/six/seven 56/.notdef 58/colon 59/.notdef 65/A 66/.notdef 71/G/H 73/.notdef 79/O 80/.notdef 83/S 84/.notdef 97/a/b 99/.notdef 100/d/e/f/g/h/i 106/.notdef 107/k/l 109/.notdef 110/n/o 112/.notdef 114/r/s/t/u/v 119/.notdef] ->> endobj -363 0 obj << -/Length1 1034 -/Length2 4035 -/Length3 532 -/Length 4723 -/Filter /FlateDecode ->> -stream -xg<\kƕ =! aނ{%J9 &3".$hE轆hA8BD{Nrx{g6 \ -2., )xx1pFp,-  0.S$ @ °Npg pA"7( Q= wD(@? iЀ_a{w<7)o[Gހ=܁ׂo;s!I@zg h{8;>;  -!^p{ p!?pMblUR<(??2㻃AxB`|"_TQvh{ - yS7O@^ o$Bch ŏq ;3GgD\GI $?$%H"/@&~@jJKkC`aad7ėt o x)oBx/->m%%( (". HbҾ%?$^p;h;{I5~ -Ikcƚ)&c o]f+;S{E4=4T pI?[]I}Pj%U{م0h8lAy^wnf*GvKifjHJ^Q(mkAX،'mB܅ {anNF7}ϽfCfMX#'Nc@%%WYx#NDdN/ݭ˩.ޟ^ _/9)4}:Gzl]\t[uR@`Rkέy6Pty}^w z]rT wWZ -ʨYXUKjW-|X]}MziWh8. |dTmfY0 JA܄՘-IJQ{3j`YNMd=Bp -G{D.[*O0Ԯ3F!"CHv vUh9)!ב?#a4>e~O<7!QK .#&td]$0,'gn˵gM[z%.#XsPdo=h\'|Sjp7[S(vWdk3D@e")A?_$y*"ΰ՚xs N"WzcWЋ %چƺKlgsV/AKЩrK]=/嘝j(b$- Yeѥ -E; `uiviY~w+1\==_9ݜ{ck|"Bw|YbN v32}%qMdK%1kЫ&s6Л&&q?OWqV7m+ӄEu.OkRy?T,s#hd1.B$9?rAAg躊d iٮ/ysAͩާE&}Lҍ@e󒕦ک7e߂ȲWW܌KΪ/.脦<}O9|_")&7k2Z*>gήo2Q\^4E SLJ8"X'U<H.)v_\ׇTl=*mPLr S%T-2-^Z,c*I$`Fdpjnrdv0^gSvs orR\7g22vnEfԣŦ dPP4T̂q~`ҌU6-W\@oB$&* &'u+f͂D&Ek:@LsG٨3:uƁ'BT S9`ZEmON,\م0wNpjZa.O%i `-TVM_^#BW:CjW8'QKpiS{Z[DyF%8rЦ[_%FԂeۯ%z_zCIf}ײ g QM_w8(P1 $F#)%9JF;Uo`-4209J.9 -#Cil TKHQRc"u4[z;'"C1n^ XQ(%mG~2w*6Aw&ELL`Q6bQMq]o}3 +V_QX%Q/$Զ'{s#/ɘd0lSd-K^#K;w5囼DۡZgKf-ti 䏄d&A*rpѺ|t+P6SgKq;^5oEi Pw G -H%5jyqOUE% srJ)C7=J^s/go?}I@y4#rhXYm[j)8H t8_E__%^B2/4szY!TV#xzn¢xm5V؝׵3@yk< RRy~Ϳ×NqZv!VomRe8D.y3ZoY}VQa#&߷>Ny:~G:}~;RRC -Kc=춽??Z2̱ ahI7e5z]M!#O8SzT&gm>'l/v}q`jWKlƺ,oD7yL1WоW{lAxe(Fi9: h5vmc a(5Tbê-oCcdXސGoMgrx8F WZ3ׯΫ bC_ъD$%:k5unRO{Mqs b} Kܯ X['dLLJ -طg8 C -> ]~%x^ MIW (u'7!FC"yظ6Ry m"jbCmߦ,\k#_I\R-h2:Meq tӹ^HXMۦŗd{5(^ф~eͤp=6&ݏzZS1X;.%HElu¤jhԸXڮgmcʰg -e Ax>W~dk0Nkeo -m257=!2hdK7S00)ܧԑfrg-T^Rh)p9Ⱥ]9a{;!GCIΎmL[i$j}GAalWR:v$.6(0)F*}.a!"tm938keeٓhgGxQ ;$a*ԉE -endstream -endobj -364 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 739 0 R -/FirstChar 44 -/LastChar 117 -/Widths 740 0 R -/BaseFont /ATXRBE+CMR17 -/FontDescriptor 362 0 R ->> endobj -362 0 obj << -/Ascent 694 -/CapHeight 683 -/Descent -195 -/FontName /ATXRBE+CMR17 -/ItalicAngle 0 -/StemV 53 -/XHeight 431 -/FontBBox [-33 -250 945 749] -/Flags 4 -/CharSet (/comma/colon/L/M/R/S/T/U/a/c/d/e/f/i/l/n/o/r/s/t/u) -/FontFile 363 0 R ->> endobj -740 0 obj -[250 0 0 0 0 0 0 0 0 0 0 0 0 0 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 576 850 0 0 0 0 680 511 668 693 0 0 0 0 0 0 0 0 0 0 0 459 0 406 511 406 276 0 0 250 0 0 250 0 511 459 0 0 354 359 354 511 ] -endobj -739 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 44/comma 45/.notdef 58/colon 59/.notdef 76/L/M 78/.notdef 82/R/S/T/U 86/.notdef 97/a 98/.notdef 99/c/d/e/f 103/.notdef 105/i 106/.notdef 108/l 109/.notdef 110/n/o 112/.notdef 114/r/s/t/u 118/.notdef] ->> endobj -351 0 obj << -/Length1 835 -/Length2 921 -/Length3 532 -/Length 1512 -/Filter /FlateDecode ->> -stream -xU}TLinĔ+oH[9ŔƖ&}6Etk޺s'3RHI!GI1[)1DZ[>¢T+[8ݿ{y9=ZYz$K)|ʕ;X,D-@"G;Q(XW*RK0XD@0a" -Gh@P߁*p:2 $G0ȝ -#S8bMk,Z(RxQ]805TPx!ʁ)}#JB}jp.kNcZ9ugJH|ݛ&ά u6D^sFܓvu$IA엥Jx)҈[Qrfc8.k*/ -R.,o{eJ Z?*\޾ NxsP\OqjłUQ%NKɱE'w-}z¸d"l:ZkJ1^գdꢗ麰-ܻgW7,<ضV9d}$/Fm\i߸{2Gr?mt=> endobj -350 0 obj << -/Ascent 750 -/CapHeight 683 -/Descent -194 -/FontName /MIAVGJ+CMSY10 -/ItalicAngle -14.035 -/StemV 85 -/XHeight 431 -/FontBBox [-29 -960 1116 775] -/Flags 4 -/CharSet (/minus/periodcentered/circlecopyrt/bullet/bar) -/FontFile 351 0 R ->> endobj -742 0 obj -[778 278 0 0 0 0 0 0 0 0 0 0 0 1000 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 278 ] -endobj -741 0 obj << -/Type /Encoding -/Differences [ 0 /minus/periodcentered 2/.notdef 13/circlecopyrt 14/.notdef 15/bullet 16/.notdef 106/bar 107/.notdef] ->> endobj -348 0 obj << -/Length1 2156 -/Length2 15649 -/Length3 532 -/Length 16807 -/Filter /FlateDecode ->> -stream -xڬsxݶ۶Vc۶mضmlFz>gʵ11g̱rbe:A{#S1{;:&z&n"aY%&F"&zFF!rra'SCK{;CSn"&..f"1S#/7+73 9 0?8mM, d ],Lm{) )™HԄ؅%I;3{"M\w ED/M*"' = )?Sg&::ڛ:ߩv55t.6Ƃv6DY:Yz(X[8+njg%Ϳ_c -v.*b? 6#LrۛXڙ1:9z@lDLDv&Daz;{"@M|`9P3+odddgafgcc `gW'Sg?A> C?!ZGW{S#7F؈\m1s?aY߳Y LlL2OLx8ظc mm[x:XXHko'xJCg?N"/S'? g bd׌o'O-u4 l+ Lvp6-g[M] ?;?G`υ'pCB[!@R:bZ"P?pC?pC?pq\ dWC*]!@v?Ȯ5C\ZP #'CckSjp{?_`ς}͹F``kP0 i6  B@I,B@MOE N!@ۆ``ܠ v!/X9_r +`B_&/Xy+{{K?M"$dM /9.".v.i\d_6LM=La֖yR[BD g+[aV۔K;Ro5h@E8?"tuQqfpՎq!y@tٲx,?5QY4}=r@)r _ۭ?3CC,F5, Rcy8kئ;RRLUTƍ}+B'8d.B=j4c0$ϡZL"se'#u(qɠl/QkipY_][%,4ERŌ U1/P^gD)\]҉v &ǨPi÷[bj gd΢y1!g8'}z -d -8X#z7EU8i&Rtb RXVB}U%GD3P*Vn, 8Hf3ÕDρ6T ud;(CEps;l Z7Q&5j5jYjx EK='wm0,H {,&8{mX?$1 -pc~LF%Pb+x -QE!p[2bGa ⶶ+s{agq*ue?)DN3Vc}BYMOdddb&R)iF:73ˠ/VxCp0(NAqϯյ! `mSDe[P/0+̣A:}֗T'dVw\MfOsg2R"@[Fl):&āQc^4x6-u=4Mslb_sɋڻKS?ܭ0D :w4ΠOy}m">$rʹ1[Ex 8c| qO9XS53 Ĕ ^aۺCb}?!"#,ݧ\4[ڻp -^6uffݘz=家$FM:[&RaeEӑwm9OX4iy:gO%RE<8$ Tx3|5=P) Gܹ 4A%rD¯f VT+Yܳ;SEV$"/\R \O8T,ēuZuƠ*앺.r!" 'US# V-ckJE%˸?3 h;EjDwI-J߿ڣ (R!>Utd?|V$dcN6tƳͅ%q}J&2_`h70i-fʥF*0`~͏\x'˝7ނC♚౬DQf^LᎻ.ljάv=r]500ߚWI!mC/P}eϋ~n,Fx._2~QqOݑٛT\ -t NPS0r;Z8n Yq E {GS2Ejo)ø?w "ڒ%^ˮw+ &{TBaӄa -n]5+=VR[ Dm|\iAz==Q1a?=OPDe4< 耶mVC`BJaXϴV>U_|EҘEbaFU.YlA-l$ D$J2nb(3̤3n۽,,*z9?fXժty>riqXD*f/dp5G9ia- -ڮ%E1 3# oo+n+%NC*u*^a +9YadCިM)س7:uaFR[\_VmJeOr]G -x-,-7Z2 3[/=N6$`ҷJo=1[d8B7yWb]e{RGyYⶊU:8/K٭e9y&]Dl!t~;5_;ux썇aZo eJC-0)M䯷9/ZA)=Bnmʧ%V1~PoJ; -3~AH,)ŪG"`]*>|ֹ!ehQ B ?ղgţQj)T/D@ E=/0Cl qgT9=9o k;hD&~?'cOlIo2NH?0ECӑ@:/}vO)4 5[LJt3oYϕ1t5H4˜BBV /+a P^zrÿm4B?8U;qenL/ez~Zpn%ّ&0b5-埤& lO\ C}c[5 >QmͶ*7f3AY69VCU/^͒_Fou`,8cB@[ڼfU$eŹH x;vp)u255圉^Wu ,[[RmֽI8:"vRmʆey2bO'Ch= >ƿﯠ}aFᴑ.GpT[;y_FxpF](g*-2ʃ*n2 3ṛ bokhrvJwx]YJFצ7L5*r2C6DpIh_rjmL&R8Htl Ի6ZtYͲSu ss6Vw@>BŒTX^z岖ĩh_Ltѭ;1]B2_mlu޹w"x[WDH01@z)i⨝kMȩWR!돡OXP r¹ 5zws,8?ݒS8(U{[mʷɽX - PJ p ,Due8:4Wq |ocq"O*6p}s :4/?,t 9YS'lYXko;b+1C BY01IF)dv#B]3vr%V&4+׼,BG-Rϣ#.ig-ph m>G0޽Ԑ6y$~ J_O/JbH%x6J!7G!ٳ8"biJȁ8r]*9z9O¯'Rhh60TM.ӄ@;v.ٱ31Bd{`NiKmP(B.~{=EWDsA5LцMg퐇Z ubFG[ _ƐIy\{aj;@~#eފ QڿPos?b"+1CCҝT6ޚɨ;VR,88>}YY2YO --NoUՍ9Ngq8R#6Yqvr܉͡* -FRJ9j˯^LYJX9M^KUv.ĚB /AW$H'/bT_Yl hIADEMkkBJ>QJ6YVcMw󥁛G)4fd6&GS{o RXV@s dB˥pğOQж~7g|;q 2RlHK.BJcdE+@VxCOBfNܧUȹ!QYp|uARSB^)LHQ˲Ǯ6{I莫t_s5<[TR -&D/VryPGa#*x4on?#L 1"bx/$,; =o\F0nv݅qːdǰ#U* _[/%Oh\I$f>i0К:CCdv ~Oa$5#r,=v2] g(^ 2BL] -U54[㞐Ϛ Ȅ.ԑ0^3q ][н ZZA:.M}k71PȲy+j#@m q _拗pglngt~8ZU=77]L<{Vw9]BUTDnBJ)~zшz9dN*=wŠS-+= s E-td7ݿN`c3_A邍qAZZXf~L92}$> nxnab;U3.7)7miG֊ovqFkЊI\6eTrXW ږ2~Z){Kԁ墆DmFjĒ%z,B3f-2 <,ڋ.* (m Ak~ YwP*Tb(޲5܀d{˜OMa!6 IS8 '@[nLWɈ[<~& 0TaxFX"6M -MeV0`99hIk?`A#V -k;ώ|u%pp=)-z'~8N:A]PIΡo+֊KX`#][)D79CY"ŋai+GS2K KzLh+eyζ{[U( -`2a=gh.!T' ʐkݾ7>8XWرRt4i(,|?=Ah@Ap6So4a-knVvsgW|~(mGַ4O I{ JީʉDLlrs ʭJi WRh3UR/8 GLИYՆUԏtKsNMt35c7Ƅ^QZVt܃^* O\M*'L2o?հ^q:m, KcU]9.a7$Oi[,߬COEWx&r&$$N{{0xWYFk ->vnn$_b_ -2wÓمRДѵIM)(xSv,hώnq(L -u|"\b}ǀŧې8"9$l~˧dus_C !Fv}fLu sqpܝx#k^Ao,]0yqϮA˄D @Ԣ2?Ix$G4wg8N|b\L11#w]/LX>y].I)M6g7E">aEx3 8 gAOYfT~q +z~<) wMoɯ?+H#):$t*@&/ފ=J`JV2όa"ee$g!D!2 *udKGO$Gs\uwA(G1UwpAzv.#kU ME - -/xLPK'w-ݺf_g?C3-,G:BC8` -M5ϾMT_cǙUfdźi}=F"h'PLB3Y)酯JF63|'20Q?j߳N۩QXm2'~v$zdђ`ӜNJ+%+5= rET˕_5.}V׉EeIŲg2BQx!=zp@~a܄j -܏JDԐugWVfwQ|䎌KHu\ p }^:|oS6'Bm:b-:co -`(ꅩ)Y"+RT$jLH /5N6[4yQGeFaҋ\ oDx`?`.))~>! -%+ h--}aS_VR.鬢+u>WÉ  -}wKVȎaRQϙ}ZZ6Z>࣯|=*M:;Je -B)>"48S+hKtMrASc1 @d$ї2hZ ý -&}كKoicc6(4N9ҧ}(%6dFƏ(b96j˄'tqył'VZ|+,0.lfn0O϶ gZdu`e85LchO^OGba[;ؽ^؉ut#2[?!UW r`HkV)ِ%@RO ޓA..BGxLΆYk.%1%\1jPBoS0gdO:Oy(NU^<+*>UG뫭ё 3D2؁{U<}iXDyњ>ZQA5gLT?^(+j! (g0djļfVM]07|3=L" ܌t> -Fqi*ywannyC6WkzB1Cm{h8}mvt\qk `Se A!NvV#I!$;?#ׁJ%IPHQER;# '>$Iy;jR31'k& ؈ܲ P2*h/=H*>I5mK5%3ݠu"7ANT;ߌ+z}6#gm(ZJ*/삂߰,*xFa{{Rۮ-vqו]q6\!BCoO:g/lj7΂&7LNv+S2uֶ@dHVtOL/B -ȏi@l_ ?t3ڔI4Wdi}#9! -zdf^sCScLp`5(B[,}ssNJ38,"f" hy=_K WO]bf%@gDU~+\ڸ!6#F|ȉv]%>~G]W(OXs}mR7G!!0ybw=4}0č"DxHh -vx68]?^iFa!3*fuhmUMsˏh>p`Wh~}[ZՀkeoS0QMxw^ I6*bd)S43ֱ#=̫#(GJ^_\U -A@v0MQNm'a uj̈́,+߲L7oQ Mf6Sգ,׼>+~hlIy5^cE2~#w۾IjGg=UbaY꡵ % %Ykj.A {fOVj6BoL p̂:QpptrDB"[~qk e?f 6cv} Yō"Yedʔ~ӑ02kH%8c+eKfYȥa6,̶;@b3 < -zI壥݁mU5”T$OJUk\{Ujv5Ej N/ )W+r3zM,T(n1DJ9XPV;e&| }f/s6t[-A,sr㠤@66?D:.Shnk^]8@4 -Ր vȤ"~7,xL pB̓198Z4PXiX+i稔l N 4#(G`C{-"waS0ʋޔdij.!^=3[5T20#xk쇦NR ޗI^# }F/p2NSrMh5 e3xHO E_2%|rJω7} -.S1p -D7:eܑj'S<قUc̡18]hF$4{6Pa[^oԉm: -JӪRٝsUl[}x!0eJo_\K` 3nMD*c/^,A'ZiB4@S@vd*/7Q472fm{DZxq_ -J8ܷErChފ -p -IC4BDEjQG}'a^[4'O[=tC͝ EFXη*p[zwAvw 2%]a9]V![Vw|,DnҦv Itޟ2!_' yceU}TZ]*K V=q : et~γ921 -aQȱxn f 6*|~@98<,ʰSA*gw%߅-i|ڻԀi0Kcw%̯mbVHl0LQPa?<|yT *!]DO;VbS7SJTՁ -2SJ"Y>w֫vHO蔝cLEfemU,lL+?.TŠMa;2_A,UP H5_/e{$/O7ݺwz}"Di#6mIFaF{|\Z_i ˹[We?9dg7.{ODiqkOX'@YQvTjν-i`ƒ-UI_ބM7Υx=_ȾM6JE-7w_~l͓eAH#kC//xHXsy1k4ݎ "c3f[-6Uf?wdI1K2h "F_?A.?Bv= $llw6ʰ}Vн -(>,%&h;a)IuN||Ҝ0 /[*܈A5!,#}ܔ"WpQ?xf2dЎaR &'x'Uݒ8d/iWSHR3H:V-If[OsӪubؒ#VW=ZזŞzXV1E'G3fTGE݋'bI*~I\.ݔRZ˫@A0di屄C$#C dIA46c"ؠӬ(4PV8)rY~MJVr|^U<:? s}u0u5s΍(v:~ּ -P06VZc`^Sm%jsgUm%3 -v 1\{A4k[~߆n<[u;QM̩ivEUD:+uјh5,-bEwUlٸiDI!LxEZdC,`8Q[7F&J7?2h0~ _z=әQv&aba EO[rxX Y[ ÷Sխ 604oU1C($]FmBw{'#ӄI{?x}n2Js?t(fzO)lѝG7fY6c}~P.GC7' C󚱾F$ -\ϲǛl6VS DLHf\tprd9IpٓZ.+~h'&%,eH@[DNIж:$FR;) lF"OF7e؇T Zh*(e˃ ?gzyQ,[nFqDIƱF6bӂ&Q/ L$Inbh]uKl_^ u\2|eg_Y( ]wBxNW8M(R$6;#gf2is.ޫ?ܤD8.}0_=̙/>}#ūE*Нo-t Mm  cTN֤6prx% -vI)`V8#vD[dtZGF+/m䥨>/oxg&t!Lm“\X2y1kyI&jp#şƝ}CxNt}жqj+;?U"&Ln) ~13+ttD0 uHIP(mȖ.yjkԀaa@rNjbQI~nbQ6KiE -endstream -endobj -349 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 743 0 R -/FirstChar 11 -/LastChar 124 -/Widths 744 0 R -/BaseFont /CKCQVZ+CMR10 -/FontDescriptor 347 0 R ->> endobj -347 0 obj << -/Ascent 694 -/CapHeight 683 -/Descent -194 -/FontName /CKCQVZ+CMR10 -/ItalicAngle 0 -/StemV 69 -/XHeight 431 -/FontBBox [-251 -250 1009 969] -/Flags 4 -/CharSet (/ff/fi/fl/ffi/cedilla/suppress/exclam/quotedblright/numbersign/quoteright/parenleft/parenright/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/equal/question/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/bracketleft/quotedblleft/bracketright/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash) -/FontFile 348 0 R ->> endobj -744 0 obj -[583 556 556 833 0 0 0 0 0 0 0 0 0 444 0 0 0 0 0 0 0 278 278 500 833 0 0 0 278 389 389 0 778 278 333 278 500 500 500 500 500 500 500 500 500 500 500 278 278 0 778 0 472 0 750 708 722 764 681 653 785 750 361 514 778 625 917 750 778 681 0 736 556 722 750 750 1028 750 750 611 278 500 278 0 0 0 500 556 444 556 444 306 500 556 278 306 528 278 833 556 500 556 528 392 394 389 556 528 722 528 528 444 500 1000 ] -endobj -743 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 11/ff/fi/fl/ffi 15/.notdef 24/cedilla 25/.notdef 32/suppress/exclam/quotedblright/numbersign 36/.notdef 39/quoteright/parenleft/parenright 42/.notdef 43/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon 60/.notdef 61/equal 62/.notdef 63/question 64/.notdef 65/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P 81/.notdef 82/R/S/T/U/V/W/X/Y/Z/bracketleft/quotedblleft/bracketright 94/.notdef 97/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash 125/.notdef] ->> endobj -353 0 obj << -/Type /Pages -/Count 6 -/Parent 745 0 R -/Kids [342 0 R 355 0 R 359 0 R 390 0 R 401 0 R 405 0 R] ->> endobj -415 0 obj << -/Type /Pages -/Count 6 -/Parent 745 0 R -/Kids [409 0 R 417 0 R 421 0 R 425 0 R 432 0 R 436 0 R] ->> endobj -467 0 obj << -/Type /Pages -/Count 6 -/Parent 745 0 R -/Kids [462 0 R 469 0 R 473 0 R 477 0 R 481 0 R 485 0 R] ->> endobj -493 0 obj << -/Type /Pages -/Count 6 -/Parent 745 0 R -/Kids [490 0 R 495 0 R 499 0 R 503 0 R 507 0 R 511 0 R] ->> endobj -519 0 obj << -/Type /Pages -/Count 6 -/Parent 745 0 R -/Kids [515 0 R 522 0 R 529 0 R 533 0 R 537 0 R 541 0 R] ->> endobj -548 0 obj << -/Type /Pages -/Count 6 -/Parent 745 0 R -/Kids [545 0 R 550 0 R 554 0 R 558 0 R 562 0 R 568 0 R] ->> endobj -578 0 obj << -/Type /Pages -/Count 6 -/Parent 746 0 R -/Kids [575 0 R 580 0 R 584 0 R 597 0 R 605 0 R 615 0 R] ->> endobj -622 0 obj << -/Type /Pages -/Count 6 -/Parent 746 0 R -/Kids [619 0 R 624 0 R 628 0 R 632 0 R 636 0 R 640 0 R] ->> endobj -647 0 obj << -/Type /Pages -/Count 6 -/Parent 746 0 R -/Kids [644 0 R 649 0 R 653 0 R 657 0 R 661 0 R 665 0 R] ->> endobj -672 0 obj << -/Type /Pages -/Count 6 -/Parent 746 0 R -/Kids [669 0 R 674 0 R 678 0 R 682 0 R 686 0 R 690 0 R] ->> endobj -697 0 obj << -/Type /Pages -/Count 1 -/Parent 746 0 R -/Kids [694 0 R] ->> endobj -745 0 obj << -/Type /Pages -/Count 36 -/Parent 747 0 R -/Kids [353 0 R 415 0 R 467 0 R 493 0 R 519 0 R 548 0 R] ->> endobj -746 0 obj << -/Type /Pages -/Count 25 -/Parent 747 0 R -/Kids [578 0 R 622 0 R 647 0 R 672 0 R 697 0 R] ->> endobj -747 0 obj << -/Type /Pages -/Count 61 -/Kids [745 0 R 746 0 R] ->> endobj -748 0 obj << -/Type /Outlines -/First 7 0 R -/Last 339 0 R -/Count 15 ->> endobj -339 0 obj << -/Title 340 0 R -/A 337 0 R -/Parent 748 0 R -/Prev 227 0 R ->> endobj -335 0 obj << -/Title 336 0 R -/A 333 0 R -/Parent 227 0 R -/Prev 331 0 R ->> endobj -331 0 obj << -/Title 332 0 R -/A 329 0 R -/Parent 227 0 R -/Prev 319 0 R -/Next 335 0 R ->> endobj -327 0 obj << -/Title 328 0 R -/A 325 0 R -/Parent 319 0 R -/Prev 323 0 R ->> endobj -323 0 obj << -/Title 324 0 R -/A 321 0 R -/Parent 319 0 R -/Next 327 0 R ->> endobj -319 0 obj << -/Title 320 0 R -/A 317 0 R -/Parent 227 0 R -/Prev 303 0 R -/Next 331 0 R -/First 323 0 R -/Last 327 0 R -/Count -2 ->> endobj -315 0 obj << -/Title 316 0 R -/A 313 0 R -/Parent 303 0 R -/Prev 311 0 R ->> endobj -311 0 obj << -/Title 312 0 R -/A 309 0 R -/Parent 303 0 R -/Prev 307 0 R -/Next 315 0 R ->> endobj -307 0 obj << -/Title 308 0 R -/A 305 0 R -/Parent 303 0 R -/Next 311 0 R ->> endobj -303 0 obj << -/Title 304 0 R -/A 301 0 R -/Parent 227 0 R -/Prev 299 0 R -/Next 319 0 R -/First 307 0 R -/Last 315 0 R -/Count -3 ->> endobj -299 0 obj << -/Title 300 0 R -/A 297 0 R -/Parent 227 0 R -/Prev 291 0 R -/Next 303 0 R ->> endobj -295 0 obj << -/Title 296 0 R -/A 293 0 R -/Parent 291 0 R ->> endobj -291 0 obj << -/Title 292 0 R -/A 289 0 R -/Parent 227 0 R -/Prev 283 0 R -/Next 299 0 R -/First 295 0 R -/Last 295 0 R -/Count -1 ->> endobj -287 0 obj << -/Title 288 0 R -/A 285 0 R -/Parent 283 0 R ->> endobj -283 0 obj << -/Title 284 0 R -/A 281 0 R -/Parent 227 0 R -/Prev 267 0 R -/Next 291 0 R -/First 287 0 R -/Last 287 0 R -/Count -1 ->> endobj -279 0 obj << -/Title 280 0 R -/A 277 0 R -/Parent 267 0 R -/Prev 275 0 R ->> endobj -275 0 obj << -/Title 276 0 R -/A 273 0 R -/Parent 267 0 R -/Prev 271 0 R -/Next 279 0 R ->> endobj -271 0 obj << -/Title 272 0 R -/A 269 0 R -/Parent 267 0 R -/Next 275 0 R ->> endobj -267 0 obj << -/Title 268 0 R -/A 265 0 R -/Parent 227 0 R -/Prev 243 0 R -/Next 283 0 R -/First 271 0 R -/Last 279 0 R -/Count -3 ->> endobj -263 0 obj << -/Title 264 0 R -/A 261 0 R -/Parent 243 0 R -/Prev 259 0 R ->> endobj -259 0 obj << -/Title 260 0 R -/A 257 0 R -/Parent 243 0 R -/Prev 255 0 R -/Next 263 0 R ->> endobj -255 0 obj << -/Title 256 0 R -/A 253 0 R -/Parent 243 0 R -/Prev 251 0 R -/Next 259 0 R ->> endobj -251 0 obj << -/Title 252 0 R -/A 249 0 R -/Parent 243 0 R -/Prev 247 0 R -/Next 255 0 R ->> endobj -247 0 obj << -/Title 248 0 R -/A 245 0 R -/Parent 243 0 R -/Next 251 0 R ->> endobj -243 0 obj << -/Title 244 0 R -/A 241 0 R -/Parent 227 0 R -/Prev 239 0 R -/Next 267 0 R -/First 247 0 R -/Last 263 0 R -/Count -5 ->> endobj -239 0 obj << -/Title 240 0 R -/A 237 0 R -/Parent 227 0 R -/Prev 235 0 R -/Next 243 0 R ->> endobj -235 0 obj << -/Title 236 0 R -/A 233 0 R -/Parent 227 0 R -/Prev 231 0 R -/Next 239 0 R ->> endobj -231 0 obj << -/Title 232 0 R -/A 229 0 R -/Parent 227 0 R -/Next 235 0 R ->> endobj -227 0 obj << -/Title 228 0 R -/A 225 0 R -/Parent 748 0 R -/Prev 207 0 R -/Next 339 0 R -/First 231 0 R -/Last 335 0 R -/Count -12 ->> endobj -223 0 obj << -/Title 224 0 R -/A 221 0 R -/Parent 207 0 R -/Prev 219 0 R ->> endobj -219 0 obj << -/Title 220 0 R -/A 217 0 R -/Parent 207 0 R -/Prev 215 0 R -/Next 223 0 R ->> endobj -215 0 obj << -/Title 216 0 R -/A 213 0 R -/Parent 207 0 R -/Prev 211 0 R -/Next 219 0 R ->> endobj -211 0 obj << -/Title 212 0 R -/A 209 0 R -/Parent 207 0 R -/Next 215 0 R ->> endobj -207 0 obj << -/Title 208 0 R -/A 205 0 R -/Parent 748 0 R -/Prev 195 0 R -/Next 227 0 R -/First 211 0 R -/Last 223 0 R -/Count -4 ->> endobj -203 0 obj << -/Title 204 0 R -/A 201 0 R -/Parent 195 0 R -/Prev 199 0 R ->> endobj -199 0 obj << -/Title 200 0 R -/A 197 0 R -/Parent 195 0 R -/Next 203 0 R ->> endobj -195 0 obj << -/Title 196 0 R -/A 193 0 R -/Parent 748 0 R -/Prev 163 0 R -/Next 207 0 R -/First 199 0 R -/Last 203 0 R -/Count -2 ->> endobj -191 0 obj << -/Title 192 0 R -/A 189 0 R -/Parent 163 0 R -/Prev 187 0 R ->> endobj -187 0 obj << -/Title 188 0 R -/A 185 0 R -/Parent 163 0 R -/Prev 183 0 R -/Next 191 0 R ->> endobj -183 0 obj << -/Title 184 0 R -/A 181 0 R -/Parent 163 0 R -/Prev 171 0 R -/Next 187 0 R ->> endobj -179 0 obj << -/Title 180 0 R -/A 177 0 R -/Parent 171 0 R -/Prev 175 0 R ->> endobj -175 0 obj << -/Title 176 0 R -/A 173 0 R -/Parent 171 0 R -/Next 179 0 R ->> endobj -171 0 obj << -/Title 172 0 R -/A 169 0 R -/Parent 163 0 R -/Prev 167 0 R -/Next 183 0 R -/First 175 0 R -/Last 179 0 R -/Count -2 ->> endobj -167 0 obj << -/Title 168 0 R -/A 165 0 R -/Parent 163 0 R -/Next 171 0 R ->> endobj -163 0 obj << -/Title 164 0 R -/A 161 0 R -/Parent 748 0 R -/Prev 159 0 R -/Next 195 0 R -/First 167 0 R -/Last 191 0 R -/Count -5 ->> endobj -159 0 obj << -/Title 160 0 R -/A 157 0 R -/Parent 748 0 R -/Prev 131 0 R -/Next 163 0 R ->> endobj -155 0 obj << -/Title 156 0 R -/A 153 0 R -/Parent 151 0 R ->> endobj -151 0 obj << -/Title 152 0 R -/A 149 0 R -/Parent 131 0 R -/Prev 147 0 R -/First 155 0 R -/Last 155 0 R -/Count -1 ->> endobj -147 0 obj << -/Title 148 0 R -/A 145 0 R -/Parent 131 0 R -/Prev 143 0 R -/Next 151 0 R ->> endobj -143 0 obj << -/Title 144 0 R -/A 141 0 R -/Parent 131 0 R -/Prev 139 0 R -/Next 147 0 R ->> endobj -139 0 obj << -/Title 140 0 R -/A 137 0 R -/Parent 131 0 R -/Prev 135 0 R -/Next 143 0 R ->> endobj -135 0 obj << -/Title 136 0 R -/A 133 0 R -/Parent 131 0 R -/Next 139 0 R ->> endobj -131 0 obj << -/Title 132 0 R -/A 129 0 R -/Parent 748 0 R -/Prev 115 0 R -/Next 159 0 R -/First 135 0 R -/Last 151 0 R -/Count -5 ->> endobj -127 0 obj << -/Title 128 0 R -/A 125 0 R -/Parent 115 0 R -/Prev 123 0 R ->> endobj -123 0 obj << -/Title 124 0 R -/A 121 0 R -/Parent 115 0 R -/Prev 119 0 R -/Next 127 0 R ->> endobj -119 0 obj << -/Title 120 0 R -/A 117 0 R -/Parent 115 0 R -/Next 123 0 R ->> endobj -115 0 obj << -/Title 116 0 R -/A 113 0 R -/Parent 748 0 R -/Prev 91 0 R -/Next 131 0 R -/First 119 0 R -/Last 127 0 R -/Count -3 ->> endobj -111 0 obj << -/Title 112 0 R -/A 109 0 R -/Parent 91 0 R -/Prev 107 0 R ->> endobj -107 0 obj << -/Title 108 0 R -/A 105 0 R -/Parent 91 0 R -/Prev 103 0 R -/Next 111 0 R ->> endobj -103 0 obj << -/Title 104 0 R -/A 101 0 R -/Parent 91 0 R -/Prev 99 0 R -/Next 107 0 R ->> endobj -99 0 obj << -/Title 100 0 R -/A 97 0 R -/Parent 91 0 R -/Prev 95 0 R -/Next 103 0 R ->> endobj -95 0 obj << -/Title 96 0 R -/A 93 0 R -/Parent 91 0 R -/Next 99 0 R ->> endobj -91 0 obj << -/Title 92 0 R -/A 89 0 R -/Parent 748 0 R -/Prev 75 0 R -/Next 115 0 R -/First 95 0 R -/Last 111 0 R -/Count -5 ->> endobj -87 0 obj << -/Title 88 0 R -/A 85 0 R -/Parent 75 0 R -/Prev 83 0 R ->> endobj -83 0 obj << -/Title 84 0 R -/A 81 0 R -/Parent 75 0 R -/Prev 79 0 R -/Next 87 0 R ->> endobj -79 0 obj << -/Title 80 0 R -/A 77 0 R -/Parent 75 0 R -/Next 83 0 R ->> endobj -75 0 obj << -/Title 76 0 R -/A 73 0 R -/Parent 748 0 R -/Prev 67 0 R -/Next 91 0 R -/First 79 0 R -/Last 87 0 R -/Count -3 ->> endobj -71 0 obj << -/Title 72 0 R -/A 69 0 R -/Parent 67 0 R ->> endobj -67 0 obj << -/Title 68 0 R -/A 65 0 R -/Parent 748 0 R -/Prev 59 0 R -/Next 75 0 R -/First 71 0 R -/Last 71 0 R -/Count -1 ->> endobj -63 0 obj << -/Title 64 0 R -/A 61 0 R -/Parent 59 0 R ->> endobj -59 0 obj << -/Title 60 0 R -/A 57 0 R -/Parent 748 0 R -/Prev 47 0 R -/Next 67 0 R -/First 63 0 R -/Last 63 0 R -/Count -1 ->> endobj -55 0 obj << -/Title 56 0 R -/A 53 0 R -/Parent 47 0 R -/Prev 51 0 R ->> endobj -51 0 obj << -/Title 52 0 R -/A 49 0 R -/Parent 47 0 R -/Next 55 0 R ->> endobj -47 0 obj << -/Title 48 0 R -/A 45 0 R -/Parent 748 0 R -/Prev 11 0 R -/Next 59 0 R -/First 51 0 R -/Last 55 0 R -/Count -2 ->> endobj -43 0 obj << -/Title 44 0 R -/A 41 0 R -/Parent 11 0 R -/Prev 39 0 R ->> endobj -39 0 obj << -/Title 40 0 R -/A 37 0 R -/Parent 11 0 R -/Prev 35 0 R -/Next 43 0 R ->> endobj -35 0 obj << -/Title 36 0 R -/A 33 0 R -/Parent 11 0 R -/Prev 31 0 R -/Next 39 0 R ->> endobj -31 0 obj << -/Title 32 0 R -/A 29 0 R -/Parent 11 0 R -/Prev 27 0 R -/Next 35 0 R ->> endobj -27 0 obj << -/Title 28 0 R -/A 25 0 R -/Parent 11 0 R -/Prev 23 0 R -/Next 31 0 R ->> endobj -23 0 obj << -/Title 24 0 R -/A 21 0 R -/Parent 11 0 R -/Prev 19 0 R -/Next 27 0 R ->> endobj -19 0 obj << -/Title 20 0 R -/A 17 0 R -/Parent 11 0 R -/Prev 15 0 R -/Next 23 0 R ->> endobj -15 0 obj << -/Title 16 0 R -/A 13 0 R -/Parent 11 0 R -/Next 19 0 R ->> endobj -11 0 obj << -/Title 12 0 R -/A 9 0 R -/Parent 748 0 R -/Prev 7 0 R -/Next 47 0 R -/First 15 0 R -/Last 43 0 R -/Count -8 ->> endobj -7 0 obj << -/Title 8 0 R -/A 5 0 R -/Parent 748 0 R -/Next 11 0 R ->> endobj -749 0 obj << -/Names [(Doc-Start) 346 0 R (cite.XMI) 603 0 R (cite.knuth) 591 0 R (cite.lamport) 592 0 R (cite.metaobj) 520 0 R (cite.metapost) 399 0 R (cite.pstumlsty) 601 0 R (cite.umldoc) 602 0 R (cite.umlsty) 600 0 R (figure.1) 393 0 R (figure.2) 565 0 R (page.1) 345 0 R (page.10) 427 0 R (page.11) 434 0 R (page.12) 438 0 R (page.13) 464 0 R (page.14) 471 0 R (page.15) 475 0 R (page.16) 479 0 R (page.17) 483 0 R (page.18) 487 0 R (page.19) 492 0 R (page.2) 357 0 R (page.20) 497 0 R (page.21) 501 0 R (page.22) 505 0 R (page.23) 509 0 R (page.24) 513 0 R (page.25) 517 0 R (page.26) 524 0 R (page.27) 531 0 R (page.28) 535 0 R (page.29) 539 0 R (page.3) 361 0 R (page.30) 543 0 R (page.31) 547 0 R (page.32) 552 0 R (page.33) 556 0 R (page.34) 560 0 R (page.35) 564 0 R (page.36) 570 0 R (page.37) 577 0 R (page.38) 582 0 R (page.39) 586 0 R (page.4) 392 0 R (page.40) 599 0 R (page.41) 607 0 R (page.42) 617 0 R (page.43) 621 0 R (page.44) 626 0 R (page.45) 630 0 R (page.46) 634 0 R (page.47) 638 0 R (page.48) 642 0 R (page.49) 646 0 R (page.5) 403 0 R (page.50) 651 0 R (page.51) 655 0 R (page.52) 659 0 R (page.53) 663 0 R (page.54) 667 0 R (page.55) 671 0 R (page.56) 676 0 R (page.57) 680 0 R (page.58) 684 0 R (page.59) 688 0 R (page.6) 407 0 R (page.60) 692 0 R (page.61) 696 0 R (page.7) 411 0 R (page.8) 419 0 R (page.9) 423 0 R (section*.1) 377 0 R (section*.2) 384 0 R (section*.3) 385 0 R (section*.4) 386 0 R (section*.5) 387 0 R (section*.6) 388 0 R (section*.7) 590 0 R (section.1) 6 0 R (section.10) 158 0 R (section.11) 162 0 R (section.12) 194 0 R (section.13) 206 0 R (section.14) 226 0 R (section.15) 338 0 R (section.2) 10 0 R (section.3) 46 0 R (section.4) 58 0 R (section.5) 66 0 R (section.6) 74 0 R (section.7) 90 0 R (section.8) 114 0 R (section.9) 130 0 R (subsection.11.1) 166 0 R (subsection.11.2) 170 0 R (subsection.11.3) 182 0 R (subsection.11.4) 186 0 R (subsection.11.5) 190 0 R (subsection.12.1) 198 0 R (subsection.12.2) 202 0 R (subsection.13.1) 210 0 R (subsection.13.2) 214 0 R (subsection.13.3) 218 0 R (subsection.13.4) 222 0 R (subsection.14.1) 230 0 R (subsection.14.10) 318 0 R (subsection.14.11) 330 0 R (subsection.14.12) 334 0 R (subsection.14.2) 234 0 R (subsection.14.3) 238 0 R (subsection.14.4) 242 0 R (subsection.14.5) 266 0 R (subsection.14.6) 282 0 R (subsection.14.7) 290 0 R (subsection.14.8) 298 0 R (subsection.14.9) 302 0 R (subsection.2.1) 14 0 R (subsection.2.2) 18 0 R (subsection.2.3) 22 0 R (subsection.2.4) 26 0 R (subsection.2.5) 30 0 R (subsection.2.6) 34 0 R (subsection.2.7) 38 0 R (subsection.2.8) 42 0 R (subsection.3.1) 50 0 R (subsection.3.2) 54 0 R (subsection.4.1) 62 0 R (subsection.5.1) 70 0 R (subsection.6.1) 78 0 R (subsection.6.2) 82 0 R (subsection.6.3) 86 0 R (subsection.7.1) 94 0 R (subsection.7.2) 98 0 R (subsection.7.3) 102 0 R (subsection.7.4) 106 0 R (subsection.7.5) 110 0 R (subsection.8.1) 118 0 R (subsection.8.2) 122 0 R (subsection.8.3) 126 0 R (subsection.9.1) 134 0 R (subsection.9.2) 138 0 R (subsection.9.3) 142 0 R (subsection.9.4) 146 0 R (subsection.9.5) 150 0 R (subsubsection.11.2.1) 174 0 R (subsubsection.11.2.2) 178 0 R (subsubsection.14.10.1) 322 0 R (subsubsection.14.10.2) 326 0 R (subsubsection.14.4.1) 246 0 R (subsubsection.14.4.2) 250 0 R (subsubsection.14.4.3) 254 0 R (subsubsection.14.4.4) 258 0 R (subsubsection.14.4.5) 262 0 R (subsubsection.14.5.1) 270 0 R (subsubsection.14.5.2) 274 0 R (subsubsection.14.5.3) 278 0 R (subsubsection.14.6.1) 286 0 R (subsubsection.14.7.1) 294 0 R (subsubsection.14.9.1) 306 0 R (subsubsection.14.9.2) 310 0 R (subsubsection.14.9.3) 314 0 R (subsubsection.9.5.1) 154 0 R] -/Limits [(Doc-Start) (subsubsection.9.5.1)] ->> endobj -750 0 obj << -/Kids [749 0 R] ->> endobj -751 0 obj << -/Dests 750 0 R ->> endobj -752 0 obj << -/Type /Catalog -/Pages 747 0 R -/Outlines 748 0 R -/Names 751 0 R -/PageMode /UseOutlines -/OpenAction 341 0 R ->> endobj -753 0 obj << -/Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfeTeX-1.304)/Keywords() -/CreationDate (D:20060827133740+03'00') -/PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.30.4-2.2 (Web2C 7.5.5) kpathsea version 3.5.5) ->> endobj -xref -0 754 -0000000001 65535 f -0000000002 00000 f -0000000003 00000 f -0000000004 00000 f -0000000000 00000 f -0000000015 00000 n -0000018449 00000 n -0000388975 00000 n -0000000060 00000 n -0000000090 00000 n -0000026596 00000 n -0000388852 00000 n -0000000135 00000 n -0000000168 00000 n -0000029936 00000 n -0000388778 00000 n -0000000219 00000 n -0000000249 00000 n -0000029996 00000 n -0000388691 00000 n -0000000300 00000 n -0000000350 00000 n -0000032596 00000 n -0000388604 00000 n -0000000401 00000 n -0000000446 00000 n -0000035267 00000 n -0000388517 00000 n -0000000497 00000 n -0000000546 00000 n -0000035328 00000 n -0000388430 00000 n -0000000597 00000 n -0000000650 00000 n -0000037999 00000 n -0000388343 00000 n -0000000701 00000 n -0000000734 00000 n -0000040895 00000 n -0000388256 00000 n -0000000785 00000 n -0000000816 00000 n -0000040956 00000 n -0000388182 00000 n -0000000867 00000 n -0000000914 00000 n -0000043389 00000 n -0000388057 00000 n -0000000960 00000 n -0000000984 00000 n -0000043450 00000 n -0000387983 00000 n -0000001035 00000 n -0000001089 00000 n -0000047330 00000 n -0000387909 00000 n -0000001140 00000 n -0000001186 00000 n -0000050753 00000 n -0000387784 00000 n -0000001232 00000 n -0000001259 00000 n -0000053902 00000 n -0000387723 00000 n -0000001310 00000 n -0000001343 00000 n -0000053963 00000 n -0000387598 00000 n -0000001389 00000 n -0000001426 00000 n -0000056545 00000 n -0000387537 00000 n -0000001477 00000 n -0000001510 00000 n -0000056606 00000 n -0000387412 00000 n -0000001556 00000 n -0000001592 00000 n -0000056667 00000 n -0000387338 00000 n -0000001643 00000 n -0000001671 00000 n -0000056728 00000 n -0000387251 00000 n -0000001722 00000 n -0000001747 00000 n -0000059725 00000 n -0000387177 00000 n -0000001798 00000 n -0000001831 00000 n -0000059786 00000 n -0000387050 00000 n -0000001877 00000 n -0000001913 00000 n -0000059847 00000 n -0000386976 00000 n -0000001964 00000 n -0000002006 00000 n -0000062516 00000 n -0000386887 00000 n -0000002057 00000 n -0000002085 00000 n -0000062577 00000 n -0000386796 00000 n -0000002137 00000 n -0000002170 00000 n -0000062639 00000 n -0000386704 00000 n -0000002222 00000 n -0000002248 00000 n -0000065438 00000 n -0000386626 00000 n -0000002300 00000 n -0000002334 00000 n -0000065500 00000 n -0000386495 00000 n -0000002381 00000 n -0000002415 00000 n -0000065562 00000 n -0000386416 00000 n -0000002467 00000 n -0000002503 00000 n -0000068830 00000 n -0000386323 00000 n -0000002555 00000 n -0000002595 00000 n -0000068892 00000 n -0000386244 00000 n -0000002647 00000 n -0000002681 00000 n -0000068954 00000 n -0000386112 00000 n -0000002728 00000 n -0000002761 00000 n -0000071017 00000 n -0000386033 00000 n -0000002813 00000 n -0000002848 00000 n -0000073615 00000 n -0000385940 00000 n -0000002900 00000 n -0000002936 00000 n -0000073677 00000 n -0000385847 00000 n -0000002988 00000 n -0000003037 00000 n -0000077012 00000 n -0000385754 00000 n -0000003089 00000 n -0000003121 00000 n -0000077074 00000 n -0000385636 00000 n -0000003173 00000 n -0000003214 00000 n -0000080533 00000 n -0000385571 00000 n -0000003271 00000 n -0000003319 00000 n -0000080595 00000 n -0000385478 00000 n -0000003367 00000 n -0000003410 00000 n -0000087528 00000 n -0000385346 00000 n -0000003458 00000 n -0000003504 00000 n -0000087590 00000 n -0000385267 00000 n -0000003557 00000 n -0000003587 00000 n -0000091961 00000 n -0000385135 00000 n -0000003640 00000 n -0000003677 00000 n -0000094971 00000 n -0000385056 00000 n -0000003735 00000 n -0000003766 00000 n -0000097191 00000 n -0000384977 00000 n -0000003824 00000 n -0000003861 00000 n -0000097951 00000 n -0000384884 00000 n -0000003914 00000 n -0000003950 00000 n -0000100483 00000 n -0000384791 00000 n -0000004003 00000 n -0000004038 00000 n -0000103800 00000 n -0000384712 00000 n -0000004091 00000 n -0000004133 00000 n -0000103861 00000 n -0000384580 00000 n -0000004181 00000 n -0000004218 00000 n -0000109350 00000 n -0000384501 00000 n -0000004271 00000 n -0000004327 00000 n -0000114225 00000 n -0000384422 00000 n -0000004380 00000 n -0000004445 00000 n -0000117173 00000 n -0000384290 00000 n -0000004493 00000 n -0000004547 00000 n -0000117235 00000 n -0000384211 00000 n -0000004600 00000 n -0000004635 00000 n -0000117297 00000 n -0000384118 00000 n -0000004688 00000 n -0000004727 00000 n -0000120623 00000 n -0000384025 00000 n -0000004780 00000 n -0000004819 00000 n -0000124213 00000 n -0000383946 00000 n -0000004872 00000 n -0000004913 00000 n -0000128196 00000 n -0000383813 00000 n -0000004961 00000 n -0000004991 00000 n -0000128258 00000 n -0000383734 00000 n -0000005044 00000 n -0000005073 00000 n -0000128319 00000 n -0000383641 00000 n -0000005126 00000 n -0000005151 00000 n -0000131453 00000 n -0000383548 00000 n -0000005204 00000 n -0000005232 00000 n -0000131515 00000 n -0000383416 00000 n -0000005285 00000 n -0000005317 00000 n -0000131577 00000 n -0000383337 00000 n -0000005375 00000 n -0000005408 00000 n -0000134071 00000 n -0000383244 00000 n -0000005466 00000 n -0000005515 00000 n -0000134133 00000 n -0000383151 00000 n -0000005573 00000 n -0000005604 00000 n -0000134195 00000 n -0000383058 00000 n -0000005662 00000 n -0000005700 00000 n -0000136730 00000 n -0000382979 00000 n -0000005758 00000 n -0000005795 00000 n -0000140712 00000 n -0000382847 00000 n -0000005848 00000 n -0000005881 00000 n -0000140774 00000 n -0000382768 00000 n -0000005939 00000 n -0000005970 00000 n -0000142880 00000 n -0000382675 00000 n -0000006028 00000 n -0000006068 00000 n -0000146293 00000 n -0000382596 00000 n -0000006126 00000 n -0000006173 00000 n -0000146355 00000 n -0000382464 00000 n -0000006226 00000 n -0000006261 00000 n -0000146417 00000 n -0000382399 00000 n -0000006319 00000 n -0000006352 00000 n -0000149491 00000 n -0000382267 00000 n -0000006405 00000 n -0000006442 00000 n -0000149553 00000 n -0000382202 00000 n -0000006500 00000 n -0000006535 00000 n -0000149615 00000 n -0000382109 00000 n -0000006588 00000 n -0000006613 00000 n -0000151824 00000 n -0000381977 00000 n -0000006666 00000 n -0000006705 00000 n -0000151886 00000 n -0000381898 00000 n -0000006763 00000 n -0000006797 00000 n -0000151948 00000 n -0000381805 00000 n -0000006855 00000 n -0000006894 00000 n -0000157221 00000 n -0000381726 00000 n -0000006952 00000 n -0000006985 00000 n -0000162850 00000 n -0000381594 00000 n -0000007039 00000 n -0000007071 00000 n -0000162912 00000 n -0000381515 00000 n -0000007130 00000 n -0000007155 00000 n -0000162973 00000 n -0000381436 00000 n -0000007214 00000 n -0000007261 00000 n -0000167991 00000 n -0000381343 00000 n -0000007315 00000 n -0000007348 00000 n -0000168053 00000 n -0000381264 00000 n -0000007402 00000 n -0000007427 00000 n -0000171496 00000 n -0000381185 00000 n -0000007475 00000 n -0000007525 00000 n -0000008415 00000 n -0000008651 00000 n -0000007577 00000 n -0000008527 00000 n -0000008589 00000 n -0000378017 00000 n -0000360926 00000 n -0000377856 00000 n -0000360277 00000 n -0000358484 00000 n -0000360116 00000 n -0000379564 00000 n -0000009186 00000 n -0000009012 00000 n -0000008735 00000 n -0000009124 00000 n -0000018881 00000 n -0000018275 00000 n -0000009257 00000 n -0000018387 00000 n -0000357765 00000 n -0000352759 00000 n -0000357604 00000 n -0000351753 00000 n -0000344931 00000 n -0000351592 00000 n -0000344458 00000 n -0000341600 00000 n -0000344297 00000 n -0000340595 00000 n -0000332274 00000 n -0000340435 00000 n -0000331145 00000 n -0000319722 00000 n -0000330983 00000 n -0000018509 00000 n -0000318545 00000 n -0000304428 00000 n -0000318383 00000 n -0000303424 00000 n -0000284529 00000 n -0000303250 00000 n -0000018571 00000 n -0000018633 00000 n -0000018695 00000 n -0000018757 00000 n -0000018819 00000 n -0000023869 00000 n -0000023300 00000 n -0000019043 00000 n -0000023746 00000 n -0000023808 00000 n -0000023440 00000 n -0000282996 00000 n -0000266808 00000 n -0000282834 00000 n -0000023596 00000 n -0000125935 00000 n -0000026657 00000 n -0000026422 00000 n -0000023966 00000 n -0000026534 00000 n -0000030057 00000 n -0000029762 00000 n -0000026767 00000 n -0000029874 00000 n -0000032657 00000 n -0000032422 00000 n -0000030180 00000 n -0000032534 00000 n -0000266412 00000 n -0000258801 00000 n -0000266228 00000 n -0000379681 00000 n -0000035389 00000 n -0000035093 00000 n -0000032780 00000 n -0000035205 00000 n -0000038060 00000 n -0000037825 00000 n -0000035499 00000 n -0000037937 00000 n -0000041017 00000 n -0000040721 00000 n -0000038170 00000 n -0000040833 00000 n -0000258070 00000 n -0000254794 00000 n -0000257909 00000 n -0000043510 00000 n -0000043215 00000 n -0000041140 00000 n -0000043327 00000 n -0000047391 00000 n -0000046984 00000 n -0000043620 00000 n -0000047268 00000 n -0000047116 00000 n -0000254467 00000 n -0000252564 00000 n -0000254306 00000 n -0000252136 00000 n -0000248987 00000 n -0000251974 00000 n -0000248603 00000 n -0000246457 00000 n -0000248444 00000 n -0000245938 00000 n -0000242716 00000 n -0000245776 00000 n -0000242398 00000 n -0000239990 00000 n -0000242236 00000 n -0000239651 00000 n -0000237555 00000 n -0000239492 00000 n -0000237100 00000 n -0000235589 00000 n -0000236941 00000 n -0000050814 00000 n -0000050247 00000 n -0000047615 00000 n -0000050691 00000 n -0000050387 00000 n -0000050539 00000 n -0000379798 00000 n -0000054024 00000 n -0000053728 00000 n -0000050924 00000 n -0000053840 00000 n -0000056789 00000 n -0000056371 00000 n -0000054134 00000 n -0000056483 00000 n -0000059908 00000 n -0000059551 00000 n -0000056899 00000 n -0000059663 00000 n -0000062701 00000 n -0000062342 00000 n -0000060018 00000 n -0000062454 00000 n -0000065624 00000 n -0000065087 00000 n -0000062811 00000 n -0000065376 00000 n -0000065219 00000 n -0000069016 00000 n -0000068656 00000 n -0000065734 00000 n -0000068768 00000 n -0000379915 00000 n -0000071078 00000 n -0000070843 00000 n -0000069126 00000 n -0000070955 00000 n -0000073739 00000 n -0000073441 00000 n -0000071175 00000 n -0000073553 00000 n -0000077136 00000 n -0000076838 00000 n -0000073862 00000 n -0000076950 00000 n -0000080657 00000 n -0000080359 00000 n -0000077246 00000 n -0000080471 00000 n -0000083950 00000 n -0000083776 00000 n -0000080780 00000 n -0000083888 00000 n -0000087652 00000 n -0000087182 00000 n -0000084047 00000 n -0000087466 00000 n -0000087314 00000 n -0000380032 00000 n -0000124335 00000 n -0000089056 00000 n -0000088882 00000 n -0000087749 00000 n -0000088994 00000 n -0000234884 00000 n -0000227685 00000 n -0000234722 00000 n -0000092023 00000 n -0000091787 00000 n -0000089153 00000 n -0000091899 00000 n -0000095033 00000 n -0000094797 00000 n -0000092120 00000 n -0000094909 00000 n -0000097253 00000 n -0000097017 00000 n -0000095130 00000 n -0000097129 00000 n -0000098013 00000 n -0000097777 00000 n -0000097350 00000 n -0000097889 00000 n -0000100544 00000 n -0000100309 00000 n -0000098110 00000 n -0000100421 00000 n -0000380149 00000 n -0000103923 00000 n -0000103626 00000 n -0000100641 00000 n -0000103738 00000 n -0000106250 00000 n -0000106076 00000 n -0000104046 00000 n -0000106188 00000 n -0000109412 00000 n -0000109176 00000 n -0000106347 00000 n -0000109288 00000 n -0000112388 00000 n -0000111981 00000 n -0000109509 00000 n -0000112264 00000 n -0000112326 00000 n -0000112113 00000 n -0000114287 00000 n -0000114051 00000 n -0000112511 00000 n -0000114163 00000 n -0000227206 00000 n -0000224044 00000 n -0000227044 00000 n -0000117359 00000 n -0000116999 00000 n -0000114397 00000 n -0000117111 00000 n -0000380266 00000 n -0000120684 00000 n -0000120449 00000 n -0000117469 00000 n -0000120561 00000 n -0000124521 00000 n -0000124039 00000 n -0000120794 00000 n -0000124151 00000 n -0000223722 00000 n -0000217823 00000 n -0000223548 00000 n -0000124273 00000 n -0000124397 00000 n -0000124459 00000 n -0000217515 00000 n -0000215559 00000 n -0000217355 00000 n -0000126243 00000 n -0000125761 00000 n -0000124670 00000 n -0000125873 00000 n -0000125997 00000 n -0000126058 00000 n -0000126119 00000 n -0000126181 00000 n -0000128381 00000 n -0000128022 00000 n -0000126327 00000 n -0000128134 00000 n -0000214910 00000 n -0000202903 00000 n -0000214739 00000 n -0000199786 00000 n -0000193065 00000 n -0000199624 00000 n -0000131639 00000 n -0000131279 00000 n -0000128491 00000 n -0000131391 00000 n -0000134257 00000 n -0000133897 00000 n -0000131762 00000 n -0000134009 00000 n -0000380383 00000 n -0000136792 00000 n -0000136556 00000 n -0000134417 00000 n -0000136668 00000 n -0000140836 00000 n -0000140538 00000 n -0000136876 00000 n -0000140650 00000 n -0000142942 00000 n -0000142706 00000 n -0000140959 00000 n -0000142818 00000 n -0000146479 00000 n -0000146119 00000 n -0000143052 00000 n -0000146231 00000 n -0000149677 00000 n -0000149317 00000 n -0000146589 00000 n -0000149429 00000 n -0000152010 00000 n -0000151650 00000 n -0000149787 00000 n -0000151762 00000 n -0000380500 00000 n -0000157283 00000 n -0000157047 00000 n -0000152120 00000 n -0000157159 00000 n -0000160149 00000 n -0000159975 00000 n -0000157380 00000 n -0000160087 00000 n -0000163035 00000 n -0000162676 00000 n -0000160233 00000 n -0000162788 00000 n -0000168115 00000 n -0000167817 00000 n -0000163145 00000 n -0000167929 00000 n -0000171558 00000 n -0000171322 00000 n -0000168225 00000 n -0000171434 00000 n -0000175403 00000 n -0000175229 00000 n -0000171668 00000 n -0000175341 00000 n -0000380617 00000 n -0000178938 00000 n -0000178764 00000 n -0000175487 00000 n -0000178876 00000 n -0000182029 00000 n -0000181855 00000 n -0000179022 00000 n -0000181967 00000 n -0000185177 00000 n -0000185003 00000 n -0000182113 00000 n -0000185115 00000 n -0000188473 00000 n -0000188299 00000 n -0000185261 00000 n -0000188411 00000 n -0000191749 00000 n -0000191575 00000 n -0000188557 00000 n -0000191687 00000 n -0000192994 00000 n -0000192820 00000 n -0000191846 00000 n -0000192932 00000 n -0000380734 00000 n -0000200489 00000 n -0000200165 00000 n -0000201015 00000 n -0000215273 00000 n -0000217741 00000 n -0000217717 00000 n -0000223936 00000 n -0000227492 00000 n -0000227418 00000 n -0000235310 00000 n -0000235134 00000 n -0000237442 00000 n -0000237322 00000 n -0000239886 00000 n -0000239856 00000 n -0000242630 00000 n -0000242601 00000 n -0000246301 00000 n -0000246153 00000 n -0000248868 00000 n -0000248822 00000 n -0000252422 00000 n -0000252346 00000 n -0000254700 00000 n -0000254675 00000 n -0000258569 00000 n -0000258323 00000 n -0000266656 00000 n -0000283990 00000 n -0000283604 00000 n -0000303946 00000 n -0000319333 00000 n -0000318953 00000 n -0000331903 00000 n -0000331534 00000 n -0000341231 00000 n -0000340907 00000 n -0000344806 00000 n -0000344668 00000 n -0000352334 00000 n -0000352060 00000 n -0000358219 00000 n -0000358009 00000 n -0000360769 00000 n -0000360524 00000 n -0000378997 00000 n -0000378573 00000 n -0000380811 00000 n -0000380929 00000 n -0000381039 00000 n -0000381109 00000 n -0000389047 00000 n -0000392737 00000 n -0000392776 00000 n -0000392814 00000 n -0000392944 00000 n -trailer -<< /Size 754 -/Root 752 0 R -/Info 753 0 R -/ID [<87E3F6ECB915E00D00AD5A4491DBE501> <87E3F6ECB915E00D00AD5A4491DBE501>] >> -startxref -393208 -%%EOF -- cgit v1.2.3