diff --git a/05/.gitignore b/05/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..65f75cfdb0031b64cdbf9726168ae53ff0222666 --- /dev/null +++ b/05/.gitignore @@ -0,0 +1,9 @@ +.DS_Store +.gradle +/build/ +/out/ +gradle-app.setting +!gradle-wrapper.jar +.gradletasknamecache +.idea/ +*.iml diff --git a/05/.travis.yml b/05/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..adf798783d6950c368e3f280cc509e684bbbd64d --- /dev/null +++ b/05/.travis.yml @@ -0,0 +1,2 @@ +language: java +dist: trusty \ No newline at end of file diff --git a/05/LICENSE b/05/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..ed3a58dc8971785b81f4ad71d31109737fb8950d --- /dev/null +++ b/05/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 HS Rosenheim :: Informatik :: Programmieren 3 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/05/README.md b/05/README.md new file mode 100644 index 0000000000000000000000000000000000000000..260291c3fe81bffbe2f9be1478a147d14b5764f6 --- /dev/null +++ b/05/README.md @@ -0,0 +1,59 @@ +_This is an assignment to the [Software Architecture](https://ohm-softa.github.io) class at the [Technische Hochschule Nürnberg](http://www.th-nuernberg.de)._ + +# Assignment 5: Generics and Bounds + +This assignment covers an advanced topic of generics: bounds on type parameters and wildcards. +Bounds describe type constraints of generic classes or methods that allow to balance type safety with flexibility of use. + + +## Setup + +1. Create a fork of this repository (button in the right upper corner) +2. Clone the project (get the link by clicking the green _Clone or download button_) +3. Import the project to your IDE (remember the guide in assignment 1) +4. Validate your environment by running the tests from your IntelliJ and by running `gradle test` on the command line. + + +## Groundwork + +First, create the model for this assigment: + + + +1. Create the `enum` _PlantColor_ +2. Implement the `abstract` class _Plant_ +3. Implement the child classes _Flower_ and _Shrub_<br> + _Remarks:_ + - A shrub is always green; a flower may be any color but green (handle a wrong value in the constructor) + - Flowers compare to each other by height + - All good data classes should always implement `equals` and `hashCode`, ideally also `toString`. +4. Create tests to ensure that your model classes are correct (e.g. green flowers won't work) + + +## Basic Bounds + +Implement a `PlantBed` which manages a list of plants (use `SimpleList<T>`). + + + +A `PlantBed` may contain any subclass of `Plant` but nothing else! +Use appropriate bounds when declaring the generic class. + +_Remarks:_ The method `getPlantsByColor` is very easy to implement if you think of the `filter` method of the `SimpleList`! +Remember to create tests for nearly every line you code! + + +## Bounds on Wildcards + +Last but not least we'll look at the PECS (**P**roducer **E**xtends **C**onsumer **S**uper) principle. + + + +Implement a method `repot` that removes plants from one bed and inserts it in another. +Make sure that you can repot from a flower bed to a plant bed, but not vice versa. + +1. Add a `remove` function to `PlantBed` +2. Implement the utility method `repot` in a utility class `PlantBedUtility`, use the appropriate bounds. + Why should this class be declared `abstract` and have a `private` constructor? + +_Remark:_ the above UML diagram for the utility method does not include any bounds but you **need** some (PECS!) -- the compiler is unable to capture the types if you implement the method strictly as described in the UML! diff --git a/05/assets/class-spec-1.eps b/05/assets/class-spec-1.eps new file mode 100644 index 0000000000000000000000000000000000000000..cbe04d185b3e13d2faf4a3553eb78f17d9421ab1 --- /dev/null +++ b/05/assets/class-spec-1.eps @@ -0,0 +1,4160 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: PlantUML v1.2019.03 +%%Title: noTitle +%%BoundingBox: 0 0 321 423 +%%ColorUsage: Color +%%Origin: 0 0 +%%EndComments + +gsave +0 423 translate +.01 -.01 scale +/simplerect { +newpath moveto 1 index 0 rlineto +0 exch rlineto +neg 0 rlineto +} def +/roundrect { +newpath +dup 3 index add 2 index 2 index add 2 index 180 270 arc +2 index 5 index add 1 index sub 2 index 2 index add 2 index 270 0 arc +2 index 5 index add 1 index sub 2 index 5 index add 2 index sub 2 index 0 90 arc +dup 3 index add 2 index 5 index add 2 index sub 2 index 90 180 arc +pop pop pop pop pop +} def +/rquadto { +3 index 3 index 4 2 roll rcurveto +} def +/P$1t { +0 -925 rlineto +115 0 rlineto +0 925 rlineto +} def +/P$3z { +0 -932 rlineto +115 0 rlineto +0 408 rlineto +70 -133 212 -133 rquadto +114 0 180 83 rquadto +65 83 65 229 rquadto +0 158 -74 255 rquadto +-74 96 -196 96 rquadto +-113 0 -188 -86 rquadto +-14 79 rlineto +closepath +} def +/P$6 { +0 -1079 rlineto +202 0 rlineto +0 1079 rlineto +} def +/P$3m { +-112 87 -200 87 rquadto +-72 0 -111 -45 rquadto +-38 -45 -24 -114 rquadto +19 -95 109 -146 rquadto +90 -51 240 -51 rquadto +25 0 rlineto +14 -70 rlineto +20 -101 -83 -101 rquadto +-83 0 -191 51 rquadto +17 -87 rlineto +115 -43 209 -43 rquadto +97 0 135 44 rquadto +37 44 19 136 rquadto +-52 264 rlineto +-18 90 37 90 rquadto +6 0 20 -2 rquadto +-4 58 rlineto +-39 17 -82 17 rquadto +-74 0 -77 -87 rquadto +closepath +} def +/P$3s { +-182 -636 rlineto +113 0 rlineto +139 492 rlineto +150 -492 rlineto +115 0 rlineto +131 492 rlineto +159 -492 rlineto +99 0 rlineto +-207 636 rlineto +-116 0 rlineto +-134 -492 rlineto +-152 492 rlineto +} def +/P$2a { +-165 0 -266 -114 rquadto +-100 -114 -100 -303 rquadto +0 -189 101 -303 rquadto +101 -113 270 -113 rquadto +168 0 270 113 rquadto +101 113 101 302 rquadto +0 192 -101 305 rquadto +-101 113 -275 113 rquadto +closepath +} def +/P$2c { +-204 -794 rlineto +108 0 rlineto +162 627 rlineto +149 -627 rlineto +108 0 rlineto +141 619 rlineto +175 -619 rlineto +91 0 rlineto +-222 794 rlineto +-112 0 rlineto +-140 -612 rlineto +-146 612 rlineto +} def +/P$7 { +0 -750 rlineto +202 0 rlineto +0 141 rlineto +99 -158 255 -158 rquadto +100 0 158 63 rquadto +58 63 58 173 rquadto +0 530 rlineto +-202 0 rlineto +0 -480 rlineto +0 -127 -84 -127 rquadto +-96 0 -185 136 rquadto +0 472 rlineto +} def +/P$3t { +-116 35 -198 35 rquadto +-140 0 -229 -93 rquadto +-88 -93 -88 -242 rquadto +0 -144 78 -237 rquadto +78 -92 200 -92 rquadto +115 0 178 82 rquadto +62 82 62 233 rquadto +0 35 rlineto +-401 0 rlineto +25 226 222 226 rquadto +72 0 176 -38 rquadto +closepath +} def +/P$3c { +-125 0 -183 -82 rquadto +-58 -82 -30 -222 rquadto +28 -140 119 -222 rquadto +91 -81 219 -81 rquadto +128 0 186 81 rquadto +58 81 30 221 rquadto +-28 142 -120 224 rquadto +-91 81 -223 81 rquadto +closepath +} def +/P$1k { +0 -106 rlineto +105 0 rlineto +0 106 rlineto +} def +/P$3y { +0 -119 rlineto +-91 134 -223 134 rquadto +-83 0 -132 -52 rquadto +-49 -52 -49 -141 rquadto +0 -457 rlineto +115 0 rlineto +0 419 rlineto +0 71 20 101 rquadto +20 30 69 30 rquadto +105 0 199 -138 rquadto +0 -412 rlineto +115 0 rlineto +0 636 rlineto +} def +/P$40 { +89 79 169 79 rquadto +166 0 166 -253 rquadto +0 -223 -147 -223 rquadto +-96 0 -188 104 rquadto +closepath +} def +/P$27 { +0 -39 rlineto +51 -14 51 -121 rquadto +0 -10 rlineto +-51 0 rlineto +0 -132 rlineto +132 0 rlineto +0 114 rlineto +0 176 -132 190 rquadto +closepath +} def +/P$2q { +127 -636 rlineto +115 0 rlineto +-23 119 rlineto +118 -133 250 -133 rquadto +82 0 121 52 rquadto +38 52 21 140 rquadto +-91 457 rlineto +-115 0 rlineto +83 -419 rlineto +14 -70 0 -101 rquadto +-14 -30 -62 -30 rquadto +-106 0 -227 138 rquadto +-82 411 rlineto +} def +/P$3j { +21 -106 rlineto +105 0 rlineto +-21 106 rlineto +} def +/P$2f { +0 -794 rlineto +206 0 rlineto +119 0 182 45 rquadto +63 45 63 129 rquadto +0 144 -163 205 rquadto +194 59 194 215 rquadto +0 96 -64 147 rquadto +-64 51 -185 51 rquadto +closepath +} def +/P$3h { +-14 73 rlineto +131 -78 226 -214 rquadto +95 -135 125 -289 rquadto +30 -153 -10 -288 rquadto +-40 -135 -141 -214 rquadto +-14 73 rlineto +61 85 75 184 rquadto +13 98 -15 245 rquadto +-29 147 -82 245 rquadto +-53 98 -149 184 rquadto +} def +/P$2t { +0 -242 rlineto +-69 -72 -152 -72 rquadto +-73 0 -114 58 rquadto +-41 58 -41 160 rquadto +0 191 134 191 rquadto +91 0 172 -96 rquadto +} def +/P$2m { +-115 507 rlineto +231 0 rlineto +closepath +} def +/P$3u { +280 0 rlineto +0 -177 -132 -177 rquadto +-133 0 -148 177 rquadto +} def +/P$3w { +0 -925 rlineto +115 0 rlineto +0 408 rlineto +91 -133 223 -133 rquadto +82 0 131 52 rquadto +49 52 49 140 rquadto +0 457 rlineto +-115 0 rlineto +0 -419 rlineto +0 -70 -20 -101 rquadto +-20 -30 -68 -30 rquadto +-106 0 -199 138 rquadto +0 411 rlineto +} def +/P$k { +0 -141 rlineto +-77 158 -245 158 rquadto +-135 0 -212 -99 rquadto +-77 -99 -77 -272 rquadto +0 -188 87 -300 rquadto +87 -112 234 -112 rquadto +117 0 213 92 rquadto +0 -404 rlineto +203 0 rlineto +0 1079 rlineto +closepath +} def +/P$s { +183 0 232 -247 rquadto +48 -244 -132 -244 rquadto +-180 0 -229 245 rquadto +-49 246 128 246 rquadto +} def +/P$25 { +0 -794 rlineto +444 0 rlineto +0 84 rlineto +-331 0 rlineto +0 255 rlineto +277 0 rlineto +0 83 rlineto +-277 0 rlineto +0 287 rlineto +354 0 rlineto +0 84 rlineto +} def +/P$3d { +168 0 213 -226 rquadto +44 -223 -121 -223 rquadto +-165 0 -210 225 rquadto +-45 225 118 225 rquadto +} def +/P$39 { +257 0 rlineto +32 -162 -88 -162 rquadto +-121 0 -168 162 rquadto +} def +/P$c { +0 -1079 rlineto +202 0 rlineto +0 470 rlineto +99 -158 255 -158 rquadto +100 0 158 63 rquadto +58 63 58 173 rquadto +0 530 rlineto +-202 0 rlineto +0 -480 rlineto +0 -127 -84 -127 rquadto +-96 0 -185 136 rquadto +0 472 rlineto +} def +/P$j { +0 -146 rlineto +129 49 215 49 rquadto +86 0 137 -51 rquadto +50 -51 50 -139 rquadto +0 -217 -312 -217 rquadto +-36 0 -73 6 rquadto +0 -507 rlineto +581 0 rlineto +0 159 rlineto +-433 0 rlineto +-10 218 rlineto +218 0 341 89 rquadto +122 89 122 250 rquadto +0 148 -107 233 rquadto +-107 85 -293 85 rquadto +-79 0 -218 -29 rquadto +} def +/P$24 { +36 0 rlineto +212 0 212 -167 rquadto +0 -122 -178 -122 rquadto +-70 0 rlineto +} def +/P$35 { +0 -794 rlineto +444 0 rlineto +0 84 rlineto +-331 0 rlineto +0 266 rlineto +278 0 rlineto +0 83 rlineto +-278 0 rlineto +0 360 rlineto +} def +/P$3v { +-87 0 -223 -38 rquadto +0 -121 rlineto +146 67 240 67 rquadto +72 0 116 -38 rquadto +44 -38 44 -100 rquadto +0 -50 -29 -86 rquadto +-29 -35 -106 -79 rquadto +-59 -34 rlineto +-110 -63 -156 -119 rquadto +-45 -55 -45 -130 rquadto +0 -100 72 -164 rquadto +72 -64 185 -64 rquadto +100 0 211 33 rquadto +0 112 rlineto +-137 -53 -204 -53 rquadto +-63 0 -105 33 rquadto +-41 33 -41 85 rquadto +0 43 30 76 rquadto +30 33 111 79 rquadto +62 35 rlineto +112 63 157 120 rquadto +44 56 44 136 rquadto +0 113 -83 181 rquadto +-83 68 -221 68 rquadto +} def +/P$z { +186 -932 rlineto +115 0 rlineto +-81 408 rlineto +97 -133 239 -133 rquadto +114 0 164 83 rquadto +49 83 20 229 rquadto +-31 158 -125 255 rquadto +-94 96 -215 96 rquadto +-113 0 -170 -86 rquadto +-29 79 rlineto +closepath +} def +/P$3r { +0 -867 rlineto +484 0 rlineto +0 91 rlineto +-361 0 rlineto +0 290 rlineto +303 0 rlineto +0 90 rlineto +-303 0 rlineto +0 393 rlineto +} def +/P$u { +173 -867 rlineto +115 0 rlineto +-23 119 rlineto +97 -133 239 -133 rquadto +114 0 164 83 rquadto +49 83 20 229 rquadto +-31 158 -125 255 rquadto +-94 96 -215 96 rquadto +-113 0 -170 -86 rquadto +-60 303 rlineto +closepath +} def +/P$1d { +-106 32 -182 32 rquadto +-128 0 -210 -85 rquadto +-81 -85 -81 -222 rquadto +0 -132 71 -217 rquadto +71 -84 183 -84 rquadto +105 0 163 75 rquadto +57 75 57 213 rquadto +0 32 rlineto +-367 0 rlineto +23 207 203 207 rquadto +66 0 162 -35 rquadto +closepath +} def +/P$30 { +0 503 rlineto +-106 0 rlineto +0 -503 rlineto +-82 0 rlineto +0 -79 rlineto +82 0 rlineto +0 -69 rlineto +0 -208 190 -208 rquadto +53 0 120 17 rquadto +0 83 rlineto +-71 -22 -114 -22 rquadto +-52 0 -71 24 rquadto +-19 24 -19 92 rquadto +0 81 rlineto +145 0 rlineto +0 79 rlineto +} def +/P$e { +0 -148 rlineto +150 62 257 62 rquadto +124 0 124 -84 rquadto +0 -54 -102 -95 rquadto +-68 -27 rlineto +-111 -45 -159 -97 rquadto +-47 -51 -47 -128 rquadto +0 -106 81 -165 rquadto +81 -59 227 -59 rquadto +91 0 218 26 rquadto +0 142 rlineto +-121 -42 -201 -42 rquadto +-125 0 -125 77 rquadto +0 51 92 86 rquadto +58 22 rlineto +131 49 183 101 rquadto +51 51 51 131 rquadto +0 105 -87 171 rquadto +-87 65 -228 65 rquadto +-135 0 -273 -41 rquadto +} def +/P$w { +-122 95 -218 95 rquadto +-79 0 -121 -49 rquadto +-42 -49 -27 -125 rquadto +20 -104 119 -160 rquadto +98 -55 262 -55 rquadto +27 0 rlineto +15 -76 rlineto +22 -110 -91 -110 rquadto +-91 0 -208 56 rquadto +19 -95 rlineto +126 -47 228 -47 rquadto +106 0 147 48 rquadto +41 48 20 149 rquadto +-57 288 rlineto +-19 99 41 99 rquadto +7 0 22 -2 rquadto +-4 63 rlineto +-43 18 -90 18 rquadto +-80 0 -84 -95 rquadto +closepath +} def +/P$2u { +0 -109 rlineto +-64 122 -194 122 rquadto +-105 0 -165 -76 rquadto +-60 -76 -60 -210 rquadto +0 -145 68 -234 rquadto +68 -88 180 -88 rquadto +103 0 171 79 rquadto +0 -331 rlineto +106 0 rlineto +0 848 rlineto +closepath +} def +/P$4 { +-286 -750 rlineto +213 0 rlineto +209 541 rlineto +208 -541 rlineto +146 0 rlineto +-289 750 rlineto +} def +/P$1v { +0 -164 rlineto +-38 -1 rlineto +-94 0 -153 36 rquadto +-58 36 -58 94 rquadto +0 41 29 70 rquadto +29 28 71 28 rquadto +72 0 150 -63 rquadto +} def +/P$2 { +-101 97 -216 97 rquadto +-98 0 -159 -60 rquadto +-61 -60 -61 -155 rquadto +0 -124 99 -191 rquadto +99 -67 284 -67 rquadto +54 0 rlineto +0 -68 rlineto +0 -116 -133 -116 rquadto +-118 0 -239 66 rquadto +0 -139 rlineto +137 -51 272 -51 rquadto +294 0 294 234 rquadto +0 332 rlineto +0 88 56 88 rquadto +10 0 26 -2 rquadto +4 113 rlineto +-64 19 -113 19 rquadto +-124 0 -159 -97 rquadto +closepath +} def +/P$1u { +-103 95 -199 95 rquadto +-79 0 -131 -49 rquadto +-52 -49 -52 -125 rquadto +0 -104 87 -160 rquadto +87 -55 251 -55 rquadto +27 0 rlineto +0 -76 rlineto +0 -110 -113 -110 rquadto +-91 0 -197 56 rquadto +0 -95 rlineto +116 -47 218 -47 rquadto +106 0 157 48 rquadto +50 48 50 149 rquadto +0 288 rlineto +0 99 60 99 rquadto +7 0 22 -2 rquadto +8 63 rlineto +-39 18 -86 18 rquadto +-80 0 -103 -95 rquadto +closepath +} def +/P$14 { +-118 0 -196 -87 rquadto +-77 -87 -77 -220 rquadto +0 -142 77 -221 rquadto +77 -79 215 -79 rquadto +68 0 152 18 rquadto +0 88 rlineto +-89 -26 -146 -26 rquadto +-81 0 -130 60 rquadto +-49 60 -49 162 rquadto +0 98 50 158 rquadto +50 60 132 60 rquadto +72 0 149 -37 rquadto +0 91 rlineto +-102 31 -177 31 rquadto +} def +/P$2p { +49 0 rlineto +109 0 179 -50 rquadto +69 -50 88 -142 rquadto +15 -77 -24 -111 rquadto +-40 -33 -149 -33 rquadto +-75 0 rlineto +closepath +} def +/P$3n { +30 -150 rlineto +-35 -1 rlineto +-87 0 -147 33 rquadto +-60 33 -71 86 rquadto +-7 38 13 64 rquadto +21 26 60 26 rquadto +66 0 149 -58 rquadto +} def +/P$2n { +299 0 rlineto +334 1239 rlineto +-244 0 rlineto +-76 -306 rlineto +-327 0 rlineto +-74 306 rlineto +-244 0 rlineto +closepath +} def +/P$2j { +-135 -342 rlineto +-135 342 rlineto +closepath +} def +/P$1c { +0 -583 rlineto +105 0 rlineto +0 109 rlineto +62 -122 182 -122 rquadto +16 0 33 2 rquadto +0 98 rlineto +-27 -9 -48 -9 rquadto +-100 0 -168 119 rquadto +0 384 rlineto +} def +/P$1l { +0 73 rlineto +116 -78 183 -214 rquadto +67 -135 67 -289 rquadto +0 -153 -67 -288 rquadto +-67 -135 -183 -214 rquadto +0 73 rlineto +78 85 112 184 rquadto +33 98 33 245 rquadto +0 147 -33 245 rquadto +-33 98 -112 184 rquadto +} def +/P$2g { +23 0 rlineto +124 0 160 -15 rquadto +69 -29 69 -109 rquadto +0 -70 -63 -117 rquadto +-63 -46 -158 -46 rquadto +-31 0 rlineto +closepath +} def +/P$1i { +0 -848 rlineto +105 0 rlineto +0 374 rlineto +83 -122 205 -122 rquadto +75 0 120 48 rquadto +45 48 45 129 rquadto +0 418 rlineto +-105 0 rlineto +0 -384 rlineto +0 -64 -19 -92 rquadto +-19 -27 -63 -27 rquadto +-97 0 -183 127 rquadto +0 377 rlineto +} def +/P$1e { +257 0 rlineto +0 -162 -121 -162 rquadto +-121 0 -135 162 rquadto +} def +/P$31 { +94 -212 rlineto +-225 -583 rlineto +114 0 rlineto +167 439 rlineto +178 -439 rlineto +99 0 rlineto +-318 795 rlineto +} def +/P$3q { +-58 29 -122 44 rquadto +-63 14 -134 14 rquadto +-250 0 -382 -165 rquadto +-131 -165 -131 -477 rquadto +0 -312 131 -478 rquadto +131 -165 382 -165 rquadto +70 0 135 14 rquadto +64 14 121 44 rquadto +0 272 rlineto +-63 -58 -122 -85 rquadto +-59 -26 -122 -26 rquadto +-134 0 -202 106 rquadto +-68 106 -68 316 rquadto +0 209 68 315 rquadto +68 106 202 106 rquadto +63 0 122 -26 rquadto +59 -26 122 -85 rquadto +closepath +} def +/P$1j { +0 -105 rlineto +105 0 rlineto +0 105 rlineto +closepath +} def +/P$33 { +0 -242 rlineto +-69 -72 -152 -72 rquadto +-73 0 -114 58 rquadto +-41 58 -41 160 rquadto +0 191 134 191 rquadto +91 0 172 -96 rquadto +closepath +} def +/P$y { +127 -636 rlineto +115 0 rlineto +-23 119 rlineto +95 -133 225 -133 rquadto +17 0 36 2 rquadto +-21 107 rlineto +-27 -9 -50 -9 rquadto +-109 0 -209 130 rquadto +-83 419 rlineto +closepath +} def +/P$29 { +0 -794 rlineto +112 0 rlineto +0 710 rlineto +357 0 rlineto +0 84 rlineto +} def +/P$2w { +0 -109 rlineto +-84 122 -204 122 rquadto +-76 0 -121 -48 rquadto +-45 -48 -45 -129 rquadto +0 -418 rlineto +105 0 rlineto +0 384 rlineto +0 65 19 93 rquadto +19 27 63 27 rquadto +96 0 182 -127 rquadto +0 -378 rlineto +105 0 rlineto +0 583 rlineto +} def +/P$1a { +-95 87 -183 87 rquadto +-72 0 -120 -45 rquadto +-47 -45 -47 -114 rquadto +0 -95 80 -146 rquadto +80 -51 230 -51 rquadto +25 0 rlineto +0 -70 rlineto +0 -101 -104 -101 rquadto +-83 0 -181 51 rquadto +0 -87 rlineto +106 -43 200 -43 rquadto +97 0 144 44 rquadto +46 44 46 136 rquadto +0 264 rlineto +0 90 55 90 rquadto +6 0 20 -2 rquadto +7 58 rlineto +-35 17 -79 17 rquadto +-74 0 -94 -87 rquadto +closepath +} def +/P$37 { +48 -242 rlineto +-55 -72 -137 -72 rquadto +-73 0 -126 58 rquadto +-53 58 -73 160 rquadto +-38 191 96 191 rquadto +91 0 192 -96 rquadto +} def +/P$h { +-172 0 -279 -147 rquadto +-107 -147 -107 -383 rquadto +0 -238 108 -384 rquadto +108 -146 284 -146 rquadto +175 0 283 145 rquadto +108 145 108 382 rquadto +0 242 -108 388 rquadto +-108 145 -288 145 rquadto +closepath +} def +/P$3 { +0 -152 rlineto +-47 0 rlineto +-196 0 -196 123 rquadto +0 41 28 70 rquadto +28 28 70 28 rquadto +71 0 145 -69 rquadto +} def +/P$n { +269 0 rlineto +0 -192 -123 -192 rquadto +-125 0 -145 192 rquadto +} def +/P$i { +179 0 179 -404 rquadto +0 -404 -177 -404 rquadto +-177 0 -177 404 rquadto +0 405 174 405 rquadto +} def +/P$28 { +0 -331 rlineto +-265 -462 rlineto +128 0 rlineto +206 358 rlineto +222 -358 rlineto +104 0 rlineto +-284 460 rlineto +0 334 rlineto +} def +/P$5 { +0 -219 rlineto +219 0 rlineto +0 219 rlineto +} def +/P$2x { +0 -854 rlineto +105 0 rlineto +0 374 rlineto +64 -122 194 -122 rquadto +105 0 165 76 rquadto +60 76 60 210 rquadto +0 145 -68 233 rquadto +-68 88 -180 88 rquadto +-103 0 -172 -79 rquadto +-12 72 rlineto +closepath +} def +/P$3a { +-80 0 -116 -46 rquadto +-35 -46 -19 -128 rquadto +68 -342 rlineto +-73 0 rlineto +15 -79 rlineto +73 0 rlineto +21 -105 rlineto +107 -10 rlineto +-23 116 rlineto +152 0 rlineto +-15 79 rlineto +-152 0 rlineto +-64 323 rlineto +-22 114 75 114 rquadto +20 0 52 -6 rquadto +-14 73 rlineto +-51 13 -87 13 rquadto +} def +/P$b { +174 0 174 -267 rquadto +0 -122 -46 -193 rquadto +-46 -71 -126 -71 rquadto +-79 0 -126 71 rquadto +-46 71 -46 194 rquadto +0 122 45 194 rquadto +45 71 125 71 rquadto +} def +/P$f { +0 -624 rlineto +-103 0 rlineto +0 -126 rlineto +103 0 rlineto +0 -54 rlineto +0 -291 276 -291 rquadto +89 0 184 25 rquadto +0 136 rlineto +-86 -36 -154 -36 rquadto +-104 0 -104 157 rquadto +0 61 rlineto +190 0 rlineto +0 126 rlineto +-190 0 rlineto +0 624 rlineto +} def +/P$m { +-144 42 -273 42 rquadto +-187 0 -296 -106 rquadto +-108 -106 -108 -291 rquadto +0 -174 99 -280 rquadto +99 -106 262 -106 rquadto +164 0 240 103 rquadto +75 103 75 328 rquadto +-465 0 rlineto +20 214 235 214 rquadto +101 0 229 -47 rquadto +closepath +} def +/P$10 { +185 -925 rlineto +115 0 rlineto +-185 925 rlineto +} def +/P$1h { +-80 0 -125 -46 rquadto +-45 -46 -45 -128 rquadto +0 -342 rlineto +-73 0 rlineto +0 -79 rlineto +73 0 rlineto +0 -105 rlineto +105 -10 rlineto +0 116 rlineto +152 0 rlineto +0 79 rlineto +-152 0 rlineto +0 323 rlineto +0 114 98 114 rquadto +20 0 51 -6 rquadto +0 73 rlineto +-48 13 -84 13 rquadto +} def +/P$1o { +0 -583 rlineto +105 0 rlineto +0 109 rlineto +83 -122 205 -122 rquadto +75 0 120 48 rquadto +45 48 45 129 rquadto +0 418 rlineto +-105 0 rlineto +0 -384 rlineto +0 -64 -19 -92 rquadto +-19 -27 -63 -27 rquadto +-97 0 -183 127 rquadto +0 377 rlineto +} def +/P$1b { +0 -150 rlineto +-35 -1 rlineto +-87 0 -140 33 rquadto +-53 33 -53 86 rquadto +0 38 26 64 rquadto +26 26 65 26 rquadto +66 0 137 -58 rquadto +} def +/P$0 { +0 -135 rlineto +88 40 151 40 rquadto +58 0 83 -36 rquadto +24 -36 24 -123 rquadto +0 -750 rlineto +202 0 rlineto +0 736 rlineto +0 157 -70 229 rquadto +-70 71 -223 71 rquadto +-68 0 -168 -32 rquadto +closepath +} def +/P$1q { +-771 0 rlineto +0 -1239 rlineto +771 0 rlineto +0 215 rlineto +-527 0 rlineto +0 267 rlineto +477 0 rlineto +0 215 rlineto +-477 0 rlineto +0 324 rlineto +527 0 rlineto +closepath +} def +/P$3b { +-185 0 -264 -108 rquadto +-79 -108 -39 -308 rquadto +39 -198 164 -308 rquadto +124 -109 311 -109 rquadto +106 0 243 34 rquadto +-21 105 rlineto +-152 -56 -240 -56 rquadto +-129 0 -217 87 rquadto +-88 87 -120 247 rquadto +-30 152 27 239 rquadto +58 87 189 87 rquadto +112 0 255 -69 rquadto +-19 96 rlineto +-129 60 -268 60 rquadto +closepath +} def +/P$3e { +169 -848 rlineto +105 0 rlineto +-169 848 rlineto +} def +/P$13 { +155 -775 rlineto +-307 0 rlineto +18 -91 rlineto +738 0 rlineto +-18 91 rlineto +-307 0 rlineto +-155 775 rlineto +closepath +} def +/P$22 { +-144 41 -251 41 rquadto +-189 0 -290 -107 rquadto +-101 -107 -101 -309 rquadto +0 -197 102 -307 rquadto +102 -109 287 -109 rquadto +121 0 252 35 rquadto +0 104 rlineto +-164 -55 -251 -55 rquadto +-128 0 -200 87 rquadto +-71 87 -71 246 rquadto +0 157 76 244 rquadto +76 87 213 87 rquadto +56 0 121 -19 rquadto +0 -258 rlineto +112 0 rlineto +} def +/P$1z { +-136 0 -217 -90 rquadto +-81 -90 -81 -242 rquadto +0 -153 81 -242 rquadto +81 -89 221 -89 rquadto +140 0 221 89 rquadto +81 89 81 241 rquadto +0 155 -82 244 rquadto +-82 89 -225 89 rquadto +closepath +} def +/P$d { +0 -750 rlineto +194 0 rlineto +0 141 rlineto +88 -158 252 -158 rquadto +84 0 139 41 rquadto +54 41 66 116 rquadto +105 -158 254 -158 rquadto +205 0 205 226 rquadto +0 540 rlineto +-194 0 rlineto +0 -474 rlineto +0 -133 -88 -133 rquadto +-90 0 -177 131 rquadto +0 476 rlineto +-194 0 rlineto +0 -474 rlineto +0 -133 -89 -133 rquadto +-89 0 -175 131 rquadto +0 476 rlineto +} def +/P$17 { +0 -583 rlineto +105 0 rlineto +0 109 rlineto +77 -122 198 -122 rquadto +117 0 159 122 rquadto +75 -122 195 -122 rquadto +77 0 119 45 rquadto +42 45 42 127 rquadto +0 424 rlineto +-106 0 rlineto +0 -407 rlineto +0 -99 -78 -99 rquadto +-82 0 -172 116 rquadto +0 391 rlineto +-106 0 rlineto +0 -407 rlineto +0 -100 -80 -100 rquadto +-80 0 -171 117 rquadto +0 391 rlineto +} def +/P$21 { +0 -636 rlineto +115 0 rlineto +0 119 rlineto +68 -133 199 -133 rquadto +17 0 36 2 rquadto +0 107 rlineto +-29 -9 -52 -9 rquadto +-109 0 -183 130 rquadto +0 419 rlineto +closepath +} def +/P$1x { +-87 0 -137 -50 rquadto +-49 -50 -49 -140 rquadto +0 -373 rlineto +-79 0 rlineto +0 -86 rlineto +79 0 rlineto +0 -115 rlineto +115 -11 rlineto +0 126 rlineto +166 0 rlineto +0 86 rlineto +-166 0 rlineto +0 352 rlineto +0 124 107 124 rquadto +22 0 55 -7 rquadto +0 79 rlineto +-53 14 -92 14 rquadto +} def +/P$9 { +0 -276 rlineto +-73 -82 -153 -82 rquadto +-76 0 -121 69 rquadto +-45 69 -45 187 rquadto +0 220 141 220 rquadto +97 0 178 -117 rquadto +closepath +} def +/P$3k { +158 -794 rlineto +216 0 rlineto +143 0 197 48 rquadto +53 48 30 159 rquadto +-25 126 -125 198 rquadto +-100 71 -252 71 rquadto +-49 0 rlineto +-63 315 rlineto +closepath +} def +/P$12 { +280 0 rlineto +35 -177 -96 -177 rquadto +-133 0 -183 177 rquadto +closepath +} def +/P$3p { +116 -583 rlineto +105 0 rlineto +-21 109 rlineto +87 -122 207 -122 rquadto +16 0 33 2 rquadto +-19 98 rlineto +-25 -9 -46 -9 rquadto +-100 0 -191 119 rquadto +-76 384 rlineto +closepath +} def +/P$19 { +81 73 155 73 rquadto +152 0 152 -232 rquadto +0 -205 -135 -205 rquadto +-88 0 -172 96 rquadto +} def +/P$2h { +35 0 rlineto +90 0 139 -38 rquadto +49 -38 49 -109 rquadto +0 -117 -181 -117 rquadto +-44 0 rlineto +} def +/P$3i { +21 -105 rlineto +105 0 rlineto +-21 105 rlineto +closepath +} def +/P$2z { +257 0 rlineto +0 -162 -121 -162 rquadto +-121 0 -135 162 rquadto +closepath +} def +/P$1 { +0 -168 rlineto +202 0 rlineto +0 168 rlineto +} def +/P$8 { +16 -146 rlineto +125 57 238 57 rquadto +112 0 162 -47 rquadto +49 -47 49 -155 rquadto +0 -102 rlineto +-73 162 -244 162 rquadto +-133 0 -212 -100 rquadto +-78 -100 -78 -271 rquadto +0 -179 88 -288 rquadto +88 -108 234 -108 rquadto +114 0 212 92 rquadto +21 -75 rlineto +181 0 rlineto +0 572 rlineto +0 171 -20 247 rquadto +-20 75 -81 129 rquadto +-101 87 -285 87 rquadto +-130 0 -283 -53 rquadto +closepath +} def +/P$1p { +-80 0 -125 -46 rquadto +-45 -46 -45 -128 rquadto +0 -342 rlineto +-73 0 rlineto +0 -79 rlineto +73 0 rlineto +0 -105 rlineto +105 -10 rlineto +0 116 rlineto +152 0 rlineto +0 79 rlineto +-152 0 rlineto +0 323 rlineto +0 114 98 114 rquadto +20 0 51 -6 rquadto +0 73 rlineto +-48 13 -84 13 rquadto +closepath +} def +/P$3l { +45 0 rlineto +100 0 164 -46 rquadto +64 -46 80 -130 rquadto +14 -71 -22 -102 rquadto +-36 -30 -137 -30 rquadto +-69 0 rlineto +closepath +} def +/P$t { +127 -636 rlineto +115 0 rlineto +-23 119 rlineto +111 -133 243 -133 rquadto +127 0 147 133 rquadto +108 -134 240 -134 rquadto +84 0 120 49 rquadto +36 49 18 138 rquadto +-92 462 rlineto +-116 0 rlineto +88 -444 rlineto +21 -108 -64 -108 rquadto +-89 0 -213 127 rquadto +-85 426 rlineto +-116 0 rlineto +88 -444 rlineto +21 -109 -65 -109 rquadto +-87 0 -212 127 rquadto +-85 426 rlineto +} def +/P$q { +-202 0 -288 -118 rquadto +-86 -118 -42 -336 rquadto +43 -216 179 -336 rquadto +136 -119 340 -119 rquadto +116 0 265 38 rquadto +-23 115 rlineto +-165 -61 -262 -61 rquadto +-141 0 -237 95 rquadto +-96 95 -131 269 rquadto +-33 165 30 261 rquadto +63 95 206 95 rquadto +123 0 278 -75 rquadto +-21 105 rlineto +-141 66 -293 66 rquadto +closepath +} def +/P$2y { +0 -848 rlineto +105 0 rlineto +0 848 rlineto +} def +/P$11 { +-123 35 -205 35 rquadto +-140 0 -210 -93 rquadto +-70 -93 -40 -242 rquadto +28 -144 125 -237 rquadto +96 -92 218 -92 rquadto +115 0 162 82 rquadto +46 82 16 233 rquadto +-7 35 rlineto +-401 0 rlineto +-20 226 176 226 rquadto +72 0 184 -38 rquadto +closepath +} def +/P$38 { +-112 32 -188 32 rquadto +-128 0 -193 -85 rquadto +-64 -85 -36 -222 rquadto +26 -132 115 -217 rquadto +88 -84 200 -84 rquadto +105 0 148 75 rquadto +42 75 14 213 rquadto +-7 32 rlineto +-367 0 rlineto +-18 207 161 207 rquadto +66 0 169 -35 rquadto +closepath +} def +/P$2o { +173 -867 rlineto +236 0 rlineto +157 0 214 53 rquadto +57 53 33 174 rquadto +-27 138 -137 216 rquadto +-109 78 -275 78 rquadto +-54 0 rlineto +-68 344 rlineto +closepath +} def +/P$2v { +-82 -72 -155 -72 rquadto +-152 0 -152 232 rquadto +0 204 135 204 rquadto +88 0 172 -96 rquadto +} def +/P$2r { +-87 0 -127 -50 rquadto +-39 -50 -21 -140 rquadto +74 -373 rlineto +-79 0 rlineto +17 -86 rlineto +79 0 rlineto +23 -115 rlineto +117 -11 rlineto +-25 126 rlineto +166 0 rlineto +-17 86 rlineto +-166 0 rlineto +-70 352 rlineto +-24 124 82 124 rquadto +22 0 57 -7 rquadto +-15 79 rlineto +-56 14 -95 14 rquadto +closepath +} def +/P$34 { +0 -794 rlineto +112 0 rlineto +0 335 rlineto +378 0 rlineto +0 -335 rlineto +112 0 rlineto +0 794 rlineto +-112 0 rlineto +0 -375 rlineto +-378 0 rlineto +0 375 rlineto +} def +/P$1s { +49 0 rlineto +109 0 169 -50 rquadto +59 -50 59 -142 rquadto +0 -77 -46 -111 rquadto +-46 -33 -156 -33 rquadto +-75 0 rlineto +} def +/P$2d { +0 -794 rlineto +264 0 rlineto +118 0 190 26 rquadto +72 26 125 89 rquadto +84 99 84 263 rquadto +0 198 -104 307 rquadto +-104 109 -294 109 rquadto +closepath +} def +/P$2e { +144 0 rlineto +154 0 219 -83 rquadto +69 -88 69 -237 rquadto +0 -140 -68 -220 rquadto +-41 -48 -98 -66 rquadto +-57 -17 -172 -17 rquadto +-92 0 rlineto +} def +/P$1m { +0 -583 rlineto +105 0 rlineto +0 583 rlineto +closepath +} def +/P$p { +0 -215 rlineto +737 0 rlineto +0 215 rlineto +-246 0 rlineto +0 807 rlineto +246 0 rlineto +0 215 rlineto +-737 0 rlineto +0 -215 rlineto +246 0 rlineto +0 -807 rlineto +closepath +} def +/P$3f { +116 -583 rlineto +105 0 rlineto +-21 109 rlineto +87 -122 207 -122 rquadto +16 0 33 2 rquadto +-19 98 rlineto +-25 -9 -46 -9 rquadto +-100 0 -191 119 rquadto +-76 384 rlineto +} def +/P$1r { +0 -867 rlineto +236 0 rlineto +157 0 225 53 rquadto +68 53 68 174 rquadto +0 138 -93 216 rquadto +-93 78 -260 78 rquadto +-54 0 rlineto +0 344 rlineto +closepath +} def +/P$1w { +0 -636 rlineto +115 0 rlineto +0 119 rlineto +91 -133 223 -133 rquadto +82 0 131 52 rquadto +49 52 49 140 rquadto +0 457 rlineto +-115 0 rlineto +0 -419 rlineto +0 -70 -20 -101 rquadto +-20 -30 -68 -30 rquadto +-106 0 -199 138 rquadto +0 411 rlineto +} def +/P$23 { +0 -794 rlineto +240 0 rlineto +114 0 175 50 rquadto +60 50 60 146 rquadto +0 158 -160 225 rquadto +265 372 rlineto +-138 0 rlineto +-226 -336 rlineto +-105 0 rlineto +0 336 rlineto +closepath +} def +/P$15 { +-125 0 -199 -82 rquadto +-74 -82 -74 -222 rquadto +0 -140 74 -222 rquadto +74 -81 203 -81 rquadto +128 0 203 81 rquadto +74 81 74 221 rquadto +0 142 -75 224 rquadto +-75 81 -206 81 rquadto +closepath +} def +/P$2l { +0 -794 rlineto +444 0 rlineto +0 84 rlineto +-331 0 rlineto +0 255 rlineto +277 0 rlineto +0 83 rlineto +-277 0 rlineto +0 287 rlineto +354 0 rlineto +0 84 rlineto +closepath +} def +/P$16 { +168 0 168 -226 rquadto +0 -223 -165 -223 rquadto +-165 0 -165 225 rquadto +0 225 163 225 rquadto +} def +/P$36 { +30 -91 rlineto +83 43 172 43 rquadto +178 0 216 -189 rquadto +18 -91 rlineto +-83 122 -216 122 rquadto +-104 0 -151 -76 rquadto +-46 -76 -20 -205 rquadto +26 -133 113 -216 rquadto +87 -83 198 -83 rquadto +97 0 152 79 rquadto +13 -66 rlineto +106 0 rlineto +-84 424 rlineto +-27 136 -54 202 rquadto +-27 65 -74 107 rquadto +-84 73 -230 73 rquadto +-102 0 -189 -31 rquadto +closepath +} def +/P$1y { +-202 0 -312 -118 rquadto +-110 -118 -110 -336 rquadto +0 -216 112 -336 rquadto +112 -119 316 -119 rquadto +116 0 273 38 rquadto +0 115 rlineto +-178 -61 -274 -61 rquadto +-141 0 -218 95 rquadto +-77 95 -77 269 rquadto +0 165 82 261 rquadto +82 95 225 95 rquadto +123 0 263 -75 rquadto +0 105 rlineto +-128 66 -280 66 rquadto +} def +/P$a { +-175 0 -279 -106 rquadto +-103 -106 -103 -286 rquadto +0 -181 104 -287 rquadto +104 -105 283 -105 rquadto +179 0 284 105 rquadto +104 105 104 285 rquadto +0 184 -104 289 rquadto +-104 104 -288 104 rquadto +closepath +} def +/P$x { +32 -164 rlineto +-38 -1 rlineto +-94 0 -160 36 rquadto +-65 36 -77 94 rquadto +-8 41 15 70 rquadto +23 28 65 28 rquadto +72 0 162 -63 rquadto +} def +/P$32 { +-80 0 -204 -34 rquadto +0 -111 rlineto +134 62 220 62 rquadto +66 0 107 -34 rquadto +40 -34 40 -91 rquadto +0 -46 -26 -79 rquadto +-26 -32 -98 -73 rquadto +-54 -31 rlineto +-101 -58 -143 -109 rquadto +-41 -51 -41 -119 rquadto +0 -91 66 -151 rquadto +66 -59 169 -59 rquadto +91 0 193 30 rquadto +0 103 rlineto +-125 -49 -187 -49 rquadto +-58 0 -96 31 rquadto +-38 31 -38 78 rquadto +0 39 27 70 rquadto +27 30 102 73 rquadto +56 32 rlineto +103 58 143 110 rquadto +40 52 40 125 rquadto +0 103 -76 166 rquadto +-76 62 -202 62 rquadto +} def +/P$3o { +116 -583 rlineto +105 0 rlineto +-21 109 rlineto +108 -122 229 -122 rquadto +75 0 111 48 rquadto +35 48 19 129 rquadto +-83 418 rlineto +-105 0 rlineto +76 -384 rlineto +12 -64 0 -92 rquadto +-13 -27 -57 -27 rquadto +-97 0 -208 127 rquadto +-75 377 rlineto +} def +/P$o { +0 -1079 rlineto +202 0 rlineto +0 1079 rlineto +closepath +} def +/P$26 { +0 -794 rlineto +110 0 rlineto +400 613 rlineto +0 -613 rlineto +96 0 rlineto +0 794 rlineto +-110 0 rlineto +-400 -613 rlineto +0 613 rlineto +} def +/P$1n { +0 -105 rlineto +105 0 rlineto +0 105 rlineto +} def +/P$18 { +0 -795 rlineto +105 0 rlineto +0 109 rlineto +64 -122 194 -122 rquadto +105 0 165 76 rquadto +60 76 60 210 rquadto +0 145 -68 233 rquadto +-68 88 -180 88 rquadto +-103 0 -172 -79 rquadto +0 278 rlineto +closepath +} def +/P$2i { +112 0 rlineto +0 501 rlineto +0 119 44 174 rquadto +44 54 140 54 rquadto +94 0 134 -51 rquadto +39 -51 39 -173 rquadto +0 -505 rlineto +98 0 rlineto +0 503 rlineto +0 162 -66 236 rquadto +-66 74 -212 74 rquadto +-148 0 -219 -76 rquadto +-70 -76 -70 -237 rquadto +} def +/P$3x { +0 -636 rlineto +115 0 rlineto +0 119 rlineto +68 -133 199 -133 rquadto +17 0 36 2 rquadto +0 107 rlineto +-29 -9 -52 -9 rquadto +-109 0 -183 130 rquadto +0 419 rlineto +} def +/P$1f { +0 -710 rlineto +-281 0 rlineto +0 -84 rlineto +676 0 rlineto +0 84 rlineto +-281 0 rlineto +0 710 rlineto +} def +/P$l { +-73 -82 -156 -82 rquadto +-74 0 -118 71 rquadto +-44 71 -44 192 rquadto +0 230 147 230 rquadto +90 0 172 -115 rquadto +} def +/P$20 { +183 0 183 -247 rquadto +0 -244 -181 -244 rquadto +-180 0 -180 245 rquadto +0 246 178 246 rquadto +} def +/P$3g { +-14 73 rlineto +-100 -78 -141 -214 rquadto +-40 -135 -10 -289 rquadto +30 -153 125 -288 rquadto +95 -135 226 -214 rquadto +-14 73 rlineto +-96 85 -149 184 rquadto +-53 98 -82 245 rquadto +-29 147 -15 245 rquadto +13 98 75 184 rquadto +closepath +} def +/P$2k { +-86 -220 rlineto +-336 0 rlineto +-87 220 rlineto +-104 0 rlineto +315 -794 rlineto +111 0 rlineto +310 794 rlineto +} def +/P$v { +73 79 153 79 rquadto +166 0 217 -253 rquadto +44 -223 -102 -223 rquadto +-96 0 -209 104 rquadto +} def +/P$2b { +121 0 188 -87 rquadto +66 -87 66 -247 rquadto +0 -155 -66 -242 rquadto +-66 -87 -185 -87 rquadto +-118 0 -185 87 rquadto +-66 87 -66 244 rquadto +0 155 66 244 rquadto +66 89 182 89 rquadto +} def +/P$r { +-136 0 -199 -90 rquadto +-63 -90 -32 -242 rquadto +30 -153 130 -242 rquadto +99 -89 239 -89 rquadto +140 0 203 89 rquadto +63 89 33 241 rquadto +-31 155 -131 244 rquadto +-99 89 -243 89 rquadto +closepath +} def +/P$2s { +12 -91 rlineto +91 43 181 43 rquadto +178 0 178 -189 rquadto +0 -91 rlineto +-58 122 -192 122 rquadto +-104 0 -166 -76 rquadto +-61 -76 -61 -205 rquadto +0 -133 70 -216 rquadto +70 -83 182 -83 rquadto +97 0 168 79 rquadto +0 -66 rlineto +106 0 rlineto +0 424 rlineto +0 136 -14 202 rquadto +-14 65 -53 107 rquadto +-69 73 -215 73 rquadto +-102 0 -195 -31 rquadto +closepath +} def +/P$g { +-72 21 -114 21 rquadto +-263 0 -263 -246 rquadto +0 -395 rlineto +-84 0 rlineto +0 -126 rlineto +84 0 rlineto +0 -126 rlineto +202 -23 rlineto +0 149 rlineto +160 0 rlineto +0 126 rlineto +-160 0 rlineto +0 368 rlineto +0 138 112 138 rquadto +25 0 62 -9 rquadto +} def +/P$1g { +0 73 rlineto +-116 -78 -183 -214 rquadto +-67 -135 -67 -289 rquadto +0 -153 67 -288 rquadto +67 -135 183 -214 rquadto +0 73 rlineto +-78 85 -112 184 rquadto +-33 98 -33 245 rquadto +0 147 33 245 rquadto +33 98 112 184 rquadto +} def +0.78 0.78 0.78 setrgbcolor +newpath +1700 1900 moveto +6900 0 rlineto +700 2248 rlineto +9800 0 rlineto +0 7351 rlineto +-17400 0 rlineto +0 -9600 rlineto +1700 1900 lineto +closepath eofill +0.69 0.69 0.69 setrgbcolor +newpath +1750 1950 moveto +6900 0 rlineto +600 2248 rlineto +9800 0 rlineto +0 7251 rlineto +-17300 0 rlineto +0 -9500 rlineto +1750 1950 lineto +closepath eofill +0.59 0.59 0.59 setrgbcolor +newpath +1800 2000 moveto +6900 0 rlineto +500 2248 rlineto +9800 0 rlineto +0 7151 rlineto +-17200 0 rlineto +0 -9400 rlineto +1800 2000 lineto +closepath eofill +0.49 0.49 0.49 setrgbcolor +newpath +1850 2050 moveto +6900 0 rlineto +400 2248 rlineto +9800 0 rlineto +0 7051 rlineto +-17100 0 rlineto +0 -9300 rlineto +1850 2050 lineto +closepath eofill +0.39 0.39 0.39 setrgbcolor +newpath +1900 2100 moveto +6900 0 rlineto +300 2248 rlineto +9800 0 rlineto +0 6951 rlineto +-17000 0 rlineto +0 -9200 rlineto +1900 2100 lineto +closepath eofill +0.29 0.29 0.29 setrgbcolor +newpath +1950 2150 moveto +6900 0 rlineto +200 2248 rlineto +9800 0 rlineto +0 6851 rlineto +-16900 0 rlineto +0 -9100 rlineto +1950 2150 lineto +closepath eofill +0.2 0.2 0.2 setrgbcolor +newpath +2000 2200 moveto +6900 0 rlineto +100 2248 rlineto +9800 0 rlineto +0 6751 rlineto +-16800 0 rlineto +0 -9000 rlineto +2000 2200 lineto +closepath eofill +1 1 1 setrgbcolor +newpath +1400 1600 moveto +6900 0 rlineto +700 2248 rlineto +9800 0 rlineto +0 7351 rlineto +-17400 0 rlineto +0 -9600 rlineto +1400 1600 lineto +closepath eofill +100 setlinewidth +0 0 0 setrgbcolor +newpath +1400 1600 moveto +6900 0 rlineto +700 2248 rlineto +9800 0 rlineto +0 7351 rlineto +-17400 0 rlineto +0 -9600 rlineto +1400 1600 lineto +closepath stroke +150 setlinewidth +0 0 0 setrgbcolor +newpath +1400 3848 moveto +7600 0 rlineto +stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +1677 3408 moveto +P$0 +1937 2276 moveto +P$1 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +2760 3072 moveto +P$2 +2760 2964 moveto +P$3 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +3400 3153 moveto +P$4 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +4414 3072 moveto +P$2 +4414 2964 moveto +P$3 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +4806 3153 moveto +P$5 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5215 3153 moveto +P$6 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6038 3072 moveto +P$2 +6038 2964 moveto +P$3 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6493 3153 moveto +P$7 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7418 3386 moveto +P$8 +7885 2873 moveto +P$9 +fill +0.78 0.78 0.78 setrgbcolor +newpath +2400 14000 moveto +15500 0 rlineto +700 2248 rlineto +13400 0 rlineto +0 25951 rlineto +-29600 0 rlineto +0 -28200 rlineto +2400 14000 lineto +closepath eofill +0.69 0.69 0.69 setrgbcolor +newpath +2450 14050 moveto +15400 0 rlineto +700 2248 rlineto +13400 0 rlineto +0 25851 rlineto +-29500 0 rlineto +0 -28100 rlineto +2450 14050 lineto +closepath eofill +0.59 0.59 0.59 setrgbcolor +newpath +2500 14100 moveto +15300 0 rlineto +700 2248 rlineto +13400 0 rlineto +0 25751 rlineto +-29400 0 rlineto +0 -28000 rlineto +2500 14100 lineto +closepath eofill +0.49 0.49 0.49 setrgbcolor +newpath +2550 14150 moveto +15200 0 rlineto +700 2248 rlineto +13400 0 rlineto +0 25651 rlineto +-29300 0 rlineto +0 -27900 rlineto +2550 14150 lineto +closepath eofill +0.39 0.39 0.39 setrgbcolor +newpath +2600 14200 moveto +15100 0 rlineto +700 2248 rlineto +13400 0 rlineto +0 25551 rlineto +-29200 0 rlineto +0 -27800 rlineto +2600 14200 lineto +closepath eofill +0.29 0.29 0.29 setrgbcolor +newpath +2650 14250 moveto +15000 0 rlineto +700 2248 rlineto +13400 0 rlineto +0 25451 rlineto +-29100 0 rlineto +0 -27700 rlineto +2650 14250 lineto +closepath eofill +0.2 0.2 0.2 setrgbcolor +newpath +2700 14300 moveto +14900 0 rlineto +700 2248 rlineto +13400 0 rlineto +0 25351 rlineto +-29000 0 rlineto +0 -27600 rlineto +2700 14300 lineto +closepath eofill +1 1 1 setrgbcolor +newpath +2100 13700 moveto +15500 0 rlineto +700 2248 rlineto +13400 0 rlineto +0 25951 rlineto +-29600 0 rlineto +0 -28200 rlineto +2100 13700 lineto +closepath eofill +150 setlinewidth +0 0 0 setrgbcolor +newpath +2100 13700 moveto +15500 0 rlineto +700 2248 rlineto +13400 0 rlineto +0 25951 rlineto +-29600 0 rlineto +0 -28200 rlineto +2100 13700 lineto +closepath stroke +150 setlinewidth +0 0 0 setrgbcolor +newpath +2100 15948 moveto +16200 0 rlineto +stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +2941 15270 moveto +P$a +2945 15144 moveto +P$b +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +3520 15253 moveto +P$c +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +4440 15253 moveto +P$d +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5734 15253 moveto +P$5 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6123 15229 moveto +P$e +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7250 15270 moveto +P$a +7253 15144 moveto +P$b +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7850 15253 moveto +P$f +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8796 15249 moveto +P$g +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9344 15172 moveto +P$2 +9344 15064 moveto +P$3 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9737 15253 moveto +P$5 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10513 15172 moveto +P$2 +10513 15064 moveto +P$3 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +11299 15278 moveto +P$h +11301 15152 moveto +P$i +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +11939 15249 moveto +P$j +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +12753 15253 moveto +P$5 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +13162 15253 moveto +P$d +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +14834 15270 moveto +P$a +14838 15144 moveto +P$b +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +15886 15253 moveto +P$k +15886 14699 moveto +P$l +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +16952 15228 moveto +P$m +16484 14804 moveto +P$n +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +17161 15253 moveto +P$o +fill +0.78 0.78 0.78 setrgbcolor +15700 6095 2650 4700 100 roundrect +closepath eofill +0.71 0.71 0.71 setrgbcolor +15600 5995 2700 4750 100 roundrect +closepath eofill +0.64 0.64 0.64 setrgbcolor +15500 5895 2750 4800 100 roundrect +closepath eofill +0.56 0.56 0.56 setrgbcolor +15400 5795 2800 4850 100 roundrect +closepath eofill +0.49 0.49 0.49 setrgbcolor +15300 5695 2850 4900 100 roundrect +closepath eofill +0.42 0.42 0.42 setrgbcolor +15200 5595 2900 4950 100 roundrect +closepath eofill +0.34 0.34 0.34 setrgbcolor +15100 5495 2950 5000 100 roundrect +closepath eofill +0.27 0.27 0.27 setrgbcolor +15000 5395 3000 5050 100 roundrect +closepath eofill +0.2 0.2 0.2 setrgbcolor +14900 5295 3050 5100 100 roundrect +closepath eofill +1 1 0.81 setrgbcolor +15700 6095 2250 4300 simplerect +closepath eofill +150 setlinewidth +0.66 0 0.21 setrgbcolor +15700 6095 2250 4300 simplerect +closepath stroke +0.71 0.65 0.9 setrgbcolor +newpath +5640 5900 1100 0 360 arc +closepath eofill +100 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +5640 5900 1100 0 360 arc +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5282 5526 moveto +P$p +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7939 6375 moveto +P$q +8651 6368 moveto +P$r +8670 6281 moveto +P$s +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9142 6353 moveto +P$t +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10216 6584 moveto +P$u +10408 6201 moveto +P$v +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +11362 6272 moveto +P$w +11358 6209 moveto +P$x +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +11681 6353 moveto +P$y +12516 6272 moveto +P$w +12511 6209 moveto +P$x +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +12833 6360 moveto +P$z +12980 6201 moveto +P$v +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +13590 6353 moveto +P$10 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +14407 6333 moveto +P$11 +14086 5966 moveto +P$12 +fill +1 1 1 setrgbcolor +[2 2] 0 setdash +1000 1613 17250 4000 simplerect +closepath eofill +[] 0 setdash +100 setlinewidth +0 0 0 setrgbcolor +[2 2] 0 setdash +closepath stroke +[] 0 setdash +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +17668 5260 moveto +P$13 +fill +150 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +2350 7500 moveto +15500 0 rlineto +stroke +150 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +2350 8300 moveto +15500 0 rlineto +stroke +0.52 0.75 0.52 setrgbcolor +newpath +3350 9497 300 0 360 arc +closepath eofill +100 setlinewidth +0.01 0.5 0.28 setrgbcolor +newpath +3350 9497 300 0 360 arc +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +4583 9776 moveto +P$14 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5147 9776 moveto +P$15 +5149 9697 moveto +P$16 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5594 9763 moveto +P$17 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6621 9975 moveto +P$18 +6727 9624 moveto +P$19 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7614 9689 moveto +P$1a +7599 9631 moveto +P$1b +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7921 9763 moveto +P$1c +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8799 9744 moveto +P$1d +8438 9408 moveto +P$1e +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9170 9763 moveto +P$1f +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9908 9776 moveto +P$15 +9910 9697 moveto +P$16 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10568 9849 moveto +P$1g +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10941 9776 moveto +P$15 +10943 9697 moveto +P$16 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +11564 9776 moveto +P$1h +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +11800 9763 moveto +P$1i +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +12910 9744 moveto +P$1d +12549 9408 moveto +P$1e +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +13096 9763 moveto +P$1c +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +13561 9763 moveto +P$1j +13561 9286 moveto +P$1k +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +14428 9763 moveto +P$1f +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +14871 9849 moveto +P$1l +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +15310 9763 moveto +P$1j +15310 9286 moveto +P$1k +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +15991 9763 moveto +P$1m +15991 9074 moveto +P$1n +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +16309 9763 moveto +P$1o +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +17167 9776 moveto +P$1p +fill +0.78 0.78 0.78 setrgbcolor +10100 11277 21150 18100 100 roundrect +closepath eofill +0.71 0.71 0.71 setrgbcolor +10000 11177 21200 18150 100 roundrect +closepath eofill +0.64 0.64 0.64 setrgbcolor +9900 11077 21250 18200 100 roundrect +closepath eofill +0.56 0.56 0.56 setrgbcolor +9800 10977 21300 18250 100 roundrect +closepath eofill +0.49 0.49 0.49 setrgbcolor +9700 10877 21350 18300 100 roundrect +closepath eofill +0.42 0.42 0.42 setrgbcolor +9600 10777 21400 18350 100 roundrect +closepath eofill +0.34 0.34 0.34 setrgbcolor +9500 10677 21450 18400 100 roundrect +closepath eofill +0.27 0.27 0.27 setrgbcolor +9400 10577 21500 18450 100 roundrect +closepath eofill +0.2 0.2 0.2 setrgbcolor +9300 10477 21550 18500 100 roundrect +closepath eofill +1 1 0.81 setrgbcolor +10100 11277 20750 17700 simplerect +closepath eofill +150 setlinewidth +0.66 0 0.21 setrgbcolor +10100 11277 20750 17700 simplerect +closepath stroke +0.92 0.58 0.5 setrgbcolor +newpath +22250 19300 1100 0 360 arc +closepath eofill +100 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +22250 19300 1100 0 360 arc +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +22611 19950 moveto +P$1q +fill +0.52 0.75 0.52 setrgbcolor +newpath +24150 19250 300 0 360 arc +closepath eofill +100 setlinewidth +0.01 0.5 0.28 setrgbcolor +newpath +24150 19250 300 0 360 arc +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +24861 19753 moveto +P$1r +24983 19315 moveto +P$1s +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +25528 19753 moveto +P$1t +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +26203 19672 moveto +P$1u +26186 19609 moveto +P$1v +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +26538 19753 moveto +P$1w +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +27474 19768 moveto +P$1x +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +28099 19775 moveto +P$1y +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +28811 19768 moveto +P$1z +28812 19681 moveto +P$20 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +29299 19753 moveto +P$1t +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +29895 19768 moveto +P$1z +29896 19681 moveto +P$20 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +30383 19753 moveto +P$21 +fill +150 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +20850 20900 moveto +9900 0 rlineto +stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +22049 22341 moveto +P$22 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +22247 22363 moveto +P$23 +22359 21942 moveto +P$24 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +22943 22363 moveto +P$25 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +23539 22363 moveto +P$25 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +24135 22363 moveto +P$26 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +24952 22535 moveto +P$27 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +21624 23658 moveto +P$28 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +22137 23658 moveto +P$25 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +22734 23658 moveto +P$29 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +23320 23658 moveto +P$29 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +24227 23678 moveto +P$2a +24228 23594 moveto +P$2b +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +24864 23658 moveto +P$2c +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +25707 23831 moveto +P$27 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +21452 24954 moveto +P$23 +21564 24533 moveto +P$24 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +22148 24954 moveto +P$25 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +22744 24954 moveto +P$2d +22857 24870 moveto +P$2e +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +23573 25126 moveto +P$27 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +21452 26250 moveto +P$2f +21564 26165 moveto +P$2g +21564 25804 moveto +P$2h +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +22085 26250 moveto +P$29 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +22665 25455 moveto +P$2i +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +23433 26250 moveto +P$25 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +24035 26422 moveto +P$27 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +21772 27565 moveto +P$2a +21774 27481 moveto +P$2b +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +22307 27545 moveto +P$23 +22418 27124 moveto +P$24 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +23405 27241 moveto +P$2j +23524 27545 moveto +P$2k +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +23761 27545 moveto +P$26 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +25171 27524 moveto +P$22 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +25369 27545 moveto +P$2l +fill +150 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +20850 28177 moveto +9900 0 rlineto +stroke +0.78 0.78 0.78 setrgbcolor +14300 13868 3350 16800 100 roundrect +closepath eofill +0.71 0.71 0.71 setrgbcolor +14200 13768 3400 16850 100 roundrect +closepath eofill +0.64 0.64 0.64 setrgbcolor +14100 13668 3450 16900 100 roundrect +closepath eofill +0.56 0.56 0.56 setrgbcolor +14000 13568 3500 16950 100 roundrect +closepath eofill +0.49 0.49 0.49 setrgbcolor +13900 13468 3550 17000 100 roundrect +closepath eofill +0.42 0.42 0.42 setrgbcolor +13800 13368 3600 17050 100 roundrect +closepath eofill +0.34 0.34 0.34 setrgbcolor +13700 13268 3650 17100 100 roundrect +closepath eofill +0.27 0.27 0.27 setrgbcolor +13600 13168 3700 17150 100 roundrect +closepath eofill +0.2 0.2 0.2 setrgbcolor +13500 13068 3750 17200 100 roundrect +closepath eofill +1 1 0.81 setrgbcolor +14300 13868 2950 16400 simplerect +closepath eofill +150 setlinewidth +0.66 0 0.21 setrgbcolor +14300 13868 2950 16400 simplerect +closepath stroke +0.66 0.86 0.87 setrgbcolor +newpath +7725 18000 1100 0 360 arc +closepath eofill +100 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +7725 18000 1100 0 360 arc +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7736 17559 moveto +P$2m +7586 17335 moveto +P$2n +fill +0.52 0.75 0.52 setrgbcolor +newpath +10275 17950 300 0 360 arc +closepath eofill +100 setlinewidth +0.01 0.5 0.28 setrgbcolor +newpath +10275 17950 300 0 360 arc +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10986 18453 moveto +P$2o +11196 18015 moveto +P$2p +11653 18453 moveto +P$10 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +12344 18372 moveto +P$w +12340 18309 moveto +P$x +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +12663 18453 moveto +P$2q +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +13596 18468 moveto +P$2r +fill +150 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +3050 19600 moveto +14100 0 rlineto +stroke +100 setlinewidth +0.78 0.16 0.19 setrgbcolor +600 600 3750 20497 simplerect +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5055 21063 moveto +P$1i +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6166 21044 moveto +P$1d +5805 20708 moveto +P$1e +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6351 21063 moveto +P$1m +6351 20374 moveto +P$1n +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6671 21257 moveto +P$2s +7043 20861 moveto +P$2t +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7355 21063 moveto +P$1i +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8212 21076 moveto +P$1h +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8464 21063 moveto +P$1j +8464 20586 moveto +P$1k +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9519 21063 moveto +P$2u +9519 20619 moveto +P$2v +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10065 21076 moveto +P$15 +10067 20997 moveto +P$16 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10878 21063 moveto +P$2w +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +11196 21069 moveto +P$2x +11301 20924 moveto +P$19 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +11888 21063 moveto +P$2y +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +12633 21044 moveto +P$1d +12272 20708 moveto +P$2z +fill +100 setlinewidth +0.78 0.16 0.19 setrgbcolor +600 600 3750 21793 simplerect +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5182 21855 moveto +P$30 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5761 22284 moveto +P$1a +5745 22227 moveto +P$1b +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6067 22358 moveto +P$17 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7094 22358 moveto +P$1m +7094 21669 moveto +P$1n +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7412 22358 moveto +P$2y +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7764 22571 moveto +P$31 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8320 22358 moveto +P$1j +8320 21882 moveto +P$1k +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9153 22378 moveto +P$32 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9768 22372 moveto +P$1h +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10005 22358 moveto +P$1c +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10455 22358 moveto +P$1m +10455 21669 moveto +P$1n +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10773 22358 moveto +P$1o +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +11458 22552 moveto +P$2s +11830 22157 moveto +P$33 +fill +100 setlinewidth +0.78 0.16 0.19 setrgbcolor +600 600 3750 23088 simplerect +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5055 23654 moveto +P$1o +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6039 23580 moveto +P$1a +6023 23522 moveto +P$1b +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6345 23654 moveto +P$17 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7800 23635 moveto +P$1d +7439 23300 moveto +P$1e +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8000 23654 moveto +P$1j +8000 23177 moveto +P$1k +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8834 23674 moveto +P$32 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9449 23667 moveto +P$1h +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9685 23654 moveto +P$1c +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10135 23654 moveto +P$1m +10135 22965 moveto +P$1n +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10453 23654 moveto +P$1o +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +11138 23848 moveto +P$2s +11510 23452 moveto +P$33 +fill +150 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +3050 24286 moveto +14100 0 rlineto +stroke +0.52 0.75 0.52 setrgbcolor +newpath +4050 25484 300 0 360 arc +closepath eofill +100 setlinewidth +0.01 0.5 0.28 setrgbcolor +newpath +4050 25484 300 0 360 arc +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5057 25943 moveto +P$2s +5430 25548 moveto +P$2t +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6169 25731 moveto +P$1d +5808 25395 moveto +P$1e +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6529 25763 moveto +P$1h +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6762 25750 moveto +P$34 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8001 25731 moveto +P$1d +7640 25395 moveto +P$1e +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8187 25750 moveto +P$1m +8187 25060 moveto +P$1n +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8507 25943 moveto +P$2s +8879 25548 moveto +P$2t +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9191 25750 moveto +P$1i +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10048 25763 moveto +P$1h +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10497 25835 moveto +P$1g +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10576 25835 moveto +P$1l +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +11015 25750 moveto +P$1j +11015 25273 moveto +P$1k +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +12070 25750 moveto +P$2u +12070 25305 moveto +P$2v +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +12617 25763 moveto +P$15 +12618 25683 moveto +P$16 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +13429 25750 moveto +P$2w +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +13747 25756 moveto +P$2x +13853 25610 moveto +P$19 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +14439 25750 moveto +P$2y +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +15185 25731 moveto +P$1d +14824 25395 moveto +P$2z +fill +0.52 0.75 0.52 setrgbcolor +newpath +4050 26779 300 0 360 arc +closepath eofill +100 setlinewidth +0.01 0.5 0.28 setrgbcolor +newpath +4050 26779 300 0 360 arc +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5057 27239 moveto +P$2s +5430 26843 moveto +P$2t +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6169 27026 moveto +P$1d +5808 26691 moveto +P$1e +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6529 27058 moveto +P$1h +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6762 27045 moveto +P$35 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7656 26971 moveto +P$1a +7640 26913 moveto +P$1b +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7963 27045 moveto +P$17 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8990 27045 moveto +P$1m +8990 26356 moveto +P$1n +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9308 27045 moveto +P$2y +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9659 27257 moveto +P$31 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10412 27131 moveto +P$1g +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10492 27131 moveto +P$1l +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10931 27045 moveto +P$1j +10931 26568 moveto +P$1k +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +11764 27065 moveto +P$32 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +12379 27058 moveto +P$1h +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +12616 27045 moveto +P$1c +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +13066 27045 moveto +P$1m +13066 26356 moveto +P$1n +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +13384 27045 moveto +P$1o +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +14069 27239 moveto +P$2s +14441 26843 moveto +P$33 +fill +0.52 0.75 0.52 setrgbcolor +newpath +4050 28075 300 0 360 arc +closepath eofill +100 setlinewidth +0.01 0.5 0.28 setrgbcolor +newpath +4050 28075 300 0 360 arc +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5057 28534 moveto +P$2s +5430 28139 moveto +P$2t +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6169 28322 moveto +P$1d +5808 27986 moveto +P$1e +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6529 28354 moveto +P$1h +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6762 28341 moveto +P$26 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7879 28266 moveto +P$1a +7863 28209 moveto +P$1b +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8186 28341 moveto +P$17 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9640 28322 moveto +P$1d +9279 27986 moveto +P$1e +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10038 28426 moveto +P$1g +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10117 28426 moveto +P$1l +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10556 28341 moveto +P$1j +10556 27864 moveto +P$1k +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +11389 28360 moveto +P$32 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +12004 28354 moveto +P$1h +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +12241 28341 moveto +P$1c +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +12691 28341 moveto +P$1m +12691 27651 moveto +P$1n +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +13009 28341 moveto +P$1o +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +13694 28534 moveto +P$2s +14066 28139 moveto +P$33 +fill +0.52 0.75 0.52 setrgbcolor +newpath +4050 29370 300 0 360 arc +closepath eofill +100 setlinewidth +0.01 0.5 0.28 setrgbcolor +newpath +4050 29370 300 0 360 arc +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5019 29830 moveto +P$36 +5470 29434 moveto +P$37 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6172 29617 moveto +P$38 +5879 29282 moveto +P$39 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6526 29649 moveto +P$3a +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7099 29656 moveto +P$3b +7752 29649 moveto +P$3c +7770 29570 moveto +P$3d +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8202 29636 moveto +P$3e +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8746 29649 moveto +P$3c +8763 29570 moveto +P$3d +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9196 29636 moveto +P$3f +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9841 29722 moveto +P$3g +9920 29722 moveto +P$3h +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10376 29636 moveto +P$3i +10472 29159 moveto +P$3j +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +11054 29636 moveto +P$3k +11246 29235 moveto +P$3l +11666 29636 moveto +P$3e +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +12299 29562 moveto +P$3m +12295 29504 moveto +P$3n +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +12591 29636 moveto +P$3o +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +13446 29649 moveto +P$3a +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +14018 29656 moveto +P$3b +14672 29649 moveto +P$3c +14689 29570 moveto +P$3d +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +15122 29636 moveto +P$3e +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +15665 29649 moveto +P$3c +15683 29570 moveto +P$3d +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +16115 29636 moveto +P$3p +fill +0.78 0.78 0.78 setrgbcolor +8000 4800 4900 36700 100 roundrect +closepath eofill +0.71 0.71 0.71 setrgbcolor +7900 4700 4950 36750 100 roundrect +closepath eofill +0.64 0.64 0.64 setrgbcolor +7800 4600 5000 36800 100 roundrect +closepath eofill +0.56 0.56 0.56 setrgbcolor +7700 4500 5050 36850 100 roundrect +closepath eofill +0.49 0.49 0.49 setrgbcolor +7600 4400 5100 36900 100 roundrect +closepath eofill +0.42 0.42 0.42 setrgbcolor +7500 4300 5150 36950 100 roundrect +closepath eofill +0.34 0.34 0.34 setrgbcolor +7400 4200 5200 37000 100 roundrect +closepath eofill +0.27 0.27 0.27 setrgbcolor +7300 4100 5250 37050 100 roundrect +closepath eofill +0.2 0.2 0.2 setrgbcolor +7200 4000 5300 37100 100 roundrect +closepath eofill +1 1 0.81 setrgbcolor +8000 4800 4500 36300 simplerect +closepath eofill +150 setlinewidth +0.66 0 0.21 setrgbcolor +8000 4800 4500 36300 simplerect +closepath stroke +0.68 0.82 0.7 setrgbcolor +newpath +6000 37900 1100 0 360 arc +closepath eofill +100 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +6000 37900 1100 0 360 arc +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6247 38514 moveto +P$3q +fill +0.52 0.75 0.52 setrgbcolor +newpath +7900 37850 300 0 360 arc +closepath eofill +100 setlinewidth +0.01 0.5 0.28 setrgbcolor +newpath +7900 37850 300 0 360 arc +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8611 38353 moveto +P$3r +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9258 38353 moveto +P$1t +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9854 38368 moveto +P$1z +9856 38281 moveto +P$20 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10416 38353 moveto +P$3s +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +11733 38333 moveto +P$3t +11340 37966 moveto +P$3u +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +11935 38353 moveto +P$21 +fill +150 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +4600 39500 moveto +7800 0 rlineto +stroke +150 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +4600 40300 moveto +7800 0 rlineto +stroke +0.78 0.78 0.78 setrgbcolor +7600 4800 16400 36700 100 roundrect +closepath eofill +0.71 0.71 0.71 setrgbcolor +7500 4700 16450 36750 100 roundrect +closepath eofill +0.64 0.64 0.64 setrgbcolor +7400 4600 16500 36800 100 roundrect +closepath eofill +0.56 0.56 0.56 setrgbcolor +7300 4500 16550 36850 100 roundrect +closepath eofill +0.49 0.49 0.49 setrgbcolor +7200 4400 16600 36900 100 roundrect +closepath eofill +0.42 0.42 0.42 setrgbcolor +7100 4300 16650 36950 100 roundrect +closepath eofill +0.34 0.34 0.34 setrgbcolor +7000 4200 16700 37000 100 roundrect +closepath eofill +0.27 0.27 0.27 setrgbcolor +6900 4100 16750 37050 100 roundrect +closepath eofill +0.2 0.2 0.2 setrgbcolor +6800 4000 16800 37100 100 roundrect +closepath eofill +1 1 0.81 setrgbcolor +7600 4800 16000 36300 simplerect +closepath eofill +150 setlinewidth +0.66 0 0.21 setrgbcolor +7600 4800 16000 36300 simplerect +closepath stroke +0.68 0.82 0.7 setrgbcolor +newpath +17500 37900 1100 0 360 arc +closepath eofill +100 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +17500 37900 1100 0 360 arc +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +17747 38514 moveto +P$3q +fill +0.52 0.75 0.52 setrgbcolor +newpath +19400 37850 300 0 360 arc +closepath eofill +100 setlinewidth +0.01 0.5 0.28 setrgbcolor +newpath +19400 37850 300 0 360 arc +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +20281 38375 moveto +P$3v +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +20761 38353 moveto +P$3w +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +21506 38353 moveto +P$3x +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +22395 38353 moveto +P$3y +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +22742 38360 moveto +P$3z +22857 38201 moveto +P$40 +fill +150 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +16100 39500 moveto +7400 0 rlineto +stroke +150 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +16100 40300 moveto +7400 0 rlineto +stroke +100 setlinewidth +0.66 0 0.21 setrgbcolor +[9 9] 0 setdash +newpath +10100 12472 moveto +10100 13721 10100 15078 10100 16397 curveto +stroke +[] 0 setdash +100 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +9400 12434 moveto +699 -2000 rlineto +700 2000 rlineto +-1400 0 rlineto +9400 12434 lineto +closepath stroke +100 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +9165 32315 moveto +9013 33775 8867 35170 8751 36282 curveto +stroke +100 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +8471 32223 moveto +903 -1916 rlineto +488 2061 rlineto +-1392 -145 rlineto +8471 32223 lineto +closepath stroke +100 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +15576 32016 moveto +16566 33583 17521 35094 18272 36282 curveto +stroke +100 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +14972 32371 moveto +-476 -2064 rlineto +1660 1316 rlineto +-1183 747 rlineto +14972 32371 lineto +closepath stroke +grestore +showpage +%plantuml done +%%EOF diff --git a/05/assets/class-spec-1.plantuml b/05/assets/class-spec-1.plantuml new file mode 100644 index 0000000000000000000000000000000000000000..fa7fbbe6e28bb52bfe74de7695b7cff0ec437dcd --- /dev/null +++ b/05/assets/class-spec-1.plantuml @@ -0,0 +1,35 @@ +@startuml +package java.lang { + + interface Comparable<T> { + +compareTo(other: T): int + } +} + +package ohm.softa.a05.model { + +enum PlantColor { + GREEN, + YELLOW, + RED, + BLUE, + ORANGE + } + + +abstract class Plant implements Comparable { + -height: double + -family: String + -name: String + + +getHeight(): double + +getFamily(): String + +getName(): String + +{abstract} getColor(): PlantColor + } + + +class Flower extends Plant { + } + + +class Shrub extends Plant{ + } + } +@enduml \ No newline at end of file diff --git a/05/assets/class-spec-1.svg b/05/assets/class-spec-1.svg new file mode 100644 index 0000000000000000000000000000000000000000..c836358a2757423e2225ce731f7205b1d3cfe6cb --- /dev/null +++ b/05/assets/class-spec-1.svg @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="431px" preserveAspectRatio="none" style="width:339px;height:431px;" version="1.1" viewBox="0 0 339 431" width="339px" zoomAndPan="magnify"><defs><filter height="300%" id="fo6x3wtnyfwlg" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--cluster java.lang--><polygon fill="#FFFFFF" filter="url(#fo6x3wtnyfwlg)" points="14,16,83,16,90,38.4883,188,38.4883,188,112,14,112,14,16" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="14" x2="90" y1="38.4883" y2="38.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="63" x="18" y="31.5352">java.lang</text><!--cluster ohm.softa.a05.model--><polygon fill="#FFFFFF" filter="url(#fo6x3wtnyfwlg)" points="21,137,176,137,183,159.4883,317,159.4883,317,419,21,419,21,137" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="21" x2="183" y1="159.4883" y2="159.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="149" x="25" y="152.5352">ohm.softa.a05.model</text><!--class Comparable--><rect fill="#FEFECE" filter="url(#fo6x3wtnyfwlg)" height="60.9551" id="Comparable" style="stroke: #A80036; stroke-width: 1.5;" width="157" x="22.5" y="43"/><ellipse cx="56.4" cy="59" fill="#B4A7E5" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M52.8277,55.2651 L52.8277,53.1069 L60.2071,53.1069 L60.2071,55.2651 L57.7418,55.2651 L57.7418,63.3418 L60.2071,63.3418 L60.2071,65.5 L52.8277,65.5 L52.8277,63.3418 L55.2931,63.3418 L55.2931,55.2651 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="71" x="74.6" y="63.5352">Comparable</text><rect fill="#FFFFFF" height="16.1328" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="10" x="172.5" y="40"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="8" x="173.5" y="52.6016">T</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="23.5" x2="178.5" y1="75" y2="75"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="23.5" x2="178.5" y1="83" y2="83"/><ellipse cx="33.5" cy="94.9775" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="131" x="42.5" y="97.6348">compareTo(other: T): int</text><!--class PlantColor--><rect fill="#FEFECE" filter="url(#fo6x3wtnyfwlg)" height="112.7754" id="PlantColor" style="stroke: #A80036; stroke-width: 1.5;" width="101" x="207.5" y="177"/><ellipse cx="222.5" cy="193" fill="#EB937F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M226.1143,199.5 L218.3945,199.5 L218.3945,187.1069 L226.1143,187.1069 L226.1143,189.2651 L220.8433,189.2651 L220.8433,191.938 L225.6162,191.938 L225.6162,194.0962 L220.8433,194.0962 L220.8433,197.3418 L226.1143,197.3418 Z "/><ellipse cx="241.5" cy="192.5" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="58" x="247.5" y="197.5352">PlantColor</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="208.5" x2="307.5" y1="209" y2="209"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="38" x="213.5" y="223.6348">GREEN,</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="46" x="213.5" y="236.5898">YELLOW,</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="24" x="213.5" y="249.5449">RED,</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="29" x="213.5" y="262.5">BLUE,</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="46" x="213.5" y="275.4551">ORANGE</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="208.5" x2="307.5" y1="281.7754" y2="281.7754"/><!--class Plant--><rect fill="#FEFECE" filter="url(#fo6x3wtnyfwlg)" height="138.6855" id="Plant" style="stroke: #A80036; stroke-width: 1.5;" width="143" x="29.5" y="164"/><ellipse cx="77.25" cy="180" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M77.3633,175.5981 L76.2095,180.6699 L78.5254,180.6699 Z M75.8691,173.3569 L78.8657,173.3569 L82.2109,185.75 L79.7622,185.75 L78.9985,182.687 L75.7197,182.687 L74.9727,185.75 L72.5239,185.75 Z "/><ellipse cx="102.75" cy="179.5" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="28" x="108.75" y="184.5352">Plant</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="30.5" x2="171.5" y1="196" y2="196"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="37.5" y="204.9775"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="77" x="49.5" y="210.6348">height: double</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="37.5" y="217.9326"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="70" x="49.5" y="223.5898">family: String</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="37.5" y="230.8877"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="67" x="49.5" y="236.5449">name: String</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="30.5" x2="171.5" y1="242.8652" y2="242.8652"/><ellipse cx="40.5" cy="254.8428" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="103" x="49.5" y="257.5">getHeight(): double</text><ellipse cx="40.5" cy="267.7979" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="97" x="49.5" y="270.4551">getFamily(): String</text><ellipse cx="40.5" cy="280.7529" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="93" x="49.5" y="283.4102">getName(): String</text><ellipse cx="40.5" cy="293.708" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="117" x="49.5" y="296.3652">getColor(): PlantColor</text><!--class Flower--><rect fill="#FEFECE" filter="url(#fo6x3wtnyfwlg)" height="48" id="Flower" style="stroke: #A80036; stroke-width: 1.5;" width="80" x="45" y="363"/><ellipse cx="60" cy="379" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M62.4731,385.1431 Q61.8921,385.4419 61.2529,385.5913 Q60.6138,385.7407 59.9082,385.7407 Q57.4014,385.7407 56.0815,384.0889 Q54.7617,382.437 54.7617,379.3159 Q54.7617,376.1865 56.0815,374.5347 Q57.4014,372.8828 59.9082,372.8828 Q60.6138,372.8828 61.2612,373.0322 Q61.9087,373.1816 62.4731,373.4805 L62.4731,376.2031 Q61.8423,375.6221 61.2488,375.3523 Q60.6553,375.0825 60.0244,375.0825 Q58.6797,375.0825 57.9949,376.1492 Q57.3101,377.2158 57.3101,379.3159 Q57.3101,381.4077 57.9949,382.4744 Q58.6797,383.541 60.0244,383.541 Q60.6553,383.541 61.2488,383.2712 Q61.8423,383.0015 62.4731,382.4204 Z "/><ellipse cx="79" cy="378.5" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="37" x="85" y="383.5352">Flower</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="46" x2="124" y1="395" y2="395"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="46" x2="124" y1="403" y2="403"/><!--class Shrub--><rect fill="#FEFECE" filter="url(#fo6x3wtnyfwlg)" height="48" id="Shrub" style="stroke: #A80036; stroke-width: 1.5;" width="76" x="160" y="363"/><ellipse cx="175" cy="379" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M177.4731,385.1431 Q176.8921,385.4419 176.2529,385.5913 Q175.6138,385.7407 174.9082,385.7407 Q172.4014,385.7407 171.0815,384.0889 Q169.7617,382.437 169.7617,379.3159 Q169.7617,376.1865 171.0815,374.5347 Q172.4014,372.8828 174.9082,372.8828 Q175.6138,372.8828 176.2612,373.0322 Q176.9087,373.1816 177.4731,373.4805 L177.4731,376.2031 Q176.8423,375.6221 176.2488,375.3523 Q175.6553,375.0825 175.0244,375.0825 Q173.6797,375.0825 172.9949,376.1492 Q172.3101,377.2158 172.3101,379.3159 Q172.3101,381.4077 172.9949,382.4744 Q173.6797,383.541 175.0244,383.541 Q175.6553,383.541 176.2488,383.2712 Q176.8423,383.0015 177.4731,382.4204 Z "/><ellipse cx="194" cy="378.5" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="200" y="383.5352">Shrub</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="161" x2="235" y1="395" y2="395"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="161" x2="235" y1="403" y2="403"/><!--link Comparable to Plant--><path d="M101,124.7201 C101,137.2139 101,150.7882 101,163.9761 " fill="none" id="Comparable-Plant" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="none" points="94.0001,124.3496,101,104.3496,108.0001,124.3496,94.0001,124.3496" style="stroke: #A80036; stroke-width: 1.0;"/><!--link Plant to Flower--><path d="M91.6546,323.1577 C90.1333,337.7526 88.6788,351.7064 87.5198,362.8256 " fill="none" id="Plant-Flower" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="84.7132,322.2305,93.749,303.0641,98.6378,323.682,84.7132,322.2305" style="stroke: #A80036; stroke-width: 1.0;"/><!--link Plant to Shrub--><path d="M155.7649,320.1641 C165.6688,335.8367 175.2182,350.9483 182.7237,362.8256 " fill="none" id="Plant-Shrub" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="149.7256,323.7106,144.959,303.0641,161.5606,316.2318,149.7256,323.7106" style="stroke: #A80036; stroke-width: 1.0;"/><!-- +@startuml +package java.lang { + + interface Comparable<T> { + +compareTo(other: T): int + } +} + +package ohm.softa.a05.model { + +enum PlantColor { + GREEN, + YELLOW, + RED, + BLUE, + ORANGE + } + + +abstract class Plant implements Comparable { + -height: double + -family: String + -name: String + + +getHeight(): double + +getFamily(): String + +getName(): String + +{abstract} getColor(): PlantColor + } + + +class Flower extends Plant { + } + + +class Shrub extends Plant{ + } + } +@enduml + +PlantUML version 1.2019.03(Sun Mar 10 12:04:44 CET 2019) +(GPL source distribution) +Java Runtime: OpenJDK Runtime Environment +JVM: OpenJDK 64-Bit Server VM +Java Version: 11.0.2+9 +Operating System: Mac OS X +OS Version: 10.14.4 +Default Encoding: UTF-8 +Language: en +Country: GB +--></g></svg> \ No newline at end of file diff --git a/05/assets/class-spec-2.eps b/05/assets/class-spec-2.eps new file mode 100644 index 0000000000000000000000000000000000000000..390ed8b962844831e90e5ca87699943cd5a972b8 --- /dev/null +++ b/05/assets/class-spec-2.eps @@ -0,0 +1,1956 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: PlantUML v1.2019.03 +%%Title: noTitle +%%BoundingBox: 0 0 334 155 +%%ColorUsage: Color +%%Origin: 0 0 +%%EndComments + +gsave +0 155 translate +.01 -.01 scale +/simplerect { +newpath moveto 1 index 0 rlineto +0 exch rlineto +neg 0 rlineto +} def +/roundrect { +newpath +dup 3 index add 2 index 2 index add 2 index 180 270 arc +2 index 5 index add 1 index sub 2 index 2 index add 2 index 270 0 arc +2 index 5 index add 1 index sub 2 index 5 index add 2 index sub 2 index 0 90 arc +dup 3 index add 2 index 5 index add 2 index sub 2 index 90 180 arc +pop pop pop pop pop +} def +/rquadto { +3 index 3 index 4 2 roll rcurveto +} def +/P$g { +0 -925 rlineto +115 0 rlineto +0 925 rlineto +} def +/P$y { +0 -583 rlineto +105 0 rlineto +0 109 rlineto +83 -122 205 -122 rquadto +75 0 120 48 rquadto +45 48 45 129 rquadto +0 418 rlineto +-105 0 rlineto +0 -384 rlineto +0 -64 -19 -92 rquadto +-19 -27 -63 -27 rquadto +-97 0 -183 127 rquadto +0 377 rlineto +} def +/P$x { +0 -150 rlineto +-35 -1 rlineto +-87 0 -140 33 rquadto +-53 33 -53 86 rquadto +0 38 26 64 rquadto +26 26 65 26 rquadto +66 0 137 -58 rquadto +} def +/P$1m { +0 -794 rlineto +216 0 rlineto +143 0 206 48 rquadto +62 48 62 159 rquadto +0 126 -85 198 rquadto +-85 71 -238 71 rquadto +-49 0 rlineto +0 315 rlineto +closepath +} def +/P$s { +155 -775 rlineto +-307 0 rlineto +18 -91 rlineto +738 0 rlineto +-18 91 rlineto +-307 0 rlineto +-155 775 rlineto +closepath +} def +/P$1c { +635 -317 rlineto +-635 -317 rlineto +0 88 rlineto +458 229 rlineto +-458 228 rlineto +closepath +} def +/P$o { +-116 35 -198 35 rquadto +-140 0 -229 -93 rquadto +-88 -93 -88 -242 rquadto +0 -144 78 -237 rquadto +78 -92 200 -92 rquadto +115 0 178 82 rquadto +62 82 62 233 rquadto +0 35 rlineto +-401 0 rlineto +25 226 222 226 rquadto +72 0 176 -38 rquadto +closepath +} def +/P$l { +0 -867 rlineto +225 0 rlineto +130 0 199 49 rquadto +69 49 69 141 rquadto +0 157 -178 224 rquadto +212 65 212 234 rquadto +0 105 -70 161 rquadto +-70 55 -202 55 rquadto +closepath +} def +/P$12 { +0 -106 rlineto +105 0 rlineto +0 106 rlineto +} def +/P$3 { +0 -750 rlineto +194 0 rlineto +0 141 rlineto +88 -158 252 -158 rquadto +84 0 139 41 rquadto +54 41 66 116 rquadto +105 -158 254 -158 rquadto +205 0 205 226 rquadto +0 540 rlineto +-194 0 rlineto +0 -474 rlineto +0 -133 -88 -133 rquadto +-90 0 -177 131 rquadto +0 476 rlineto +-194 0 rlineto +0 -474 rlineto +0 -133 -89 -133 rquadto +-89 0 -175 131 rquadto +0 476 rlineto +} def +/P$16 { +0 -583 rlineto +105 0 rlineto +0 109 rlineto +77 -122 198 -122 rquadto +117 0 159 122 rquadto +75 -122 195 -122 rquadto +77 0 119 45 rquadto +42 45 42 127 rquadto +0 424 rlineto +-106 0 rlineto +0 -407 rlineto +0 -99 -78 -99 rquadto +-82 0 -172 116 rquadto +0 391 rlineto +-106 0 rlineto +0 -407 rlineto +0 -100 -80 -100 rquadto +-80 0 -171 117 rquadto +0 391 rlineto +} def +/P$m { +25 0 rlineto +135 0 175 -16 rquadto +76 -32 76 -119 rquadto +0 -77 -69 -128 rquadto +-69 -51 -172 -51 rquadto +-34 0 rlineto +closepath +} def +/P$1o { +0 -794 rlineto +206 0 rlineto +119 0 182 45 rquadto +63 45 63 129 rquadto +0 144 -163 205 rquadto +194 59 194 215 rquadto +0 96 -64 147 rquadto +-64 51 -185 51 rquadto +closepath +} def +/P$k { +-87 0 -137 -50 rquadto +-49 -50 -49 -140 rquadto +0 -373 rlineto +-79 0 rlineto +0 -86 rlineto +79 0 rlineto +0 -115 rlineto +115 -11 rlineto +0 126 rlineto +166 0 rlineto +0 86 rlineto +-166 0 rlineto +0 352 rlineto +0 124 107 124 rquadto +22 0 55 -7 rquadto +0 79 rlineto +-53 14 -92 14 rquadto +} def +/P$1l { +0 -242 rlineto +-69 -72 -152 -72 rquadto +-73 0 -114 58 rquadto +-41 58 -41 160 rquadto +0 191 134 191 rquadto +91 0 172 -96 rquadto +} def +/P$u { +81 73 155 73 rquadto +152 0 152 -232 rquadto +0 -205 -135 -205 rquadto +-88 0 -172 96 rquadto +} def +/P$1q { +35 0 rlineto +90 0 139 -38 rquadto +49 -38 49 -109 rquadto +0 -117 -181 -117 rquadto +-44 0 rlineto +} def +/P$p { +280 0 rlineto +0 -177 -132 -177 rquadto +-133 0 -148 177 rquadto +} def +/P$1j { +-80 0 -125 -46 rquadto +-45 -46 -45 -128 rquadto +0 -342 rlineto +-73 0 rlineto +0 -79 rlineto +73 0 rlineto +0 -105 rlineto +105 -10 rlineto +0 116 rlineto +152 0 rlineto +0 79 rlineto +-152 0 rlineto +0 323 rlineto +0 114 98 114 rquadto +20 0 51 -6 rquadto +0 73 rlineto +-48 13 -84 13 rquadto +closepath +} def +/P$c { +0 -146 rlineto +129 49 215 49 rquadto +86 0 137 -51 rquadto +50 -51 50 -139 rquadto +0 -217 -312 -217 rquadto +-36 0 -73 6 rquadto +0 -507 rlineto +581 0 rlineto +0 159 rlineto +-433 0 rlineto +-10 218 rlineto +218 0 341 89 rquadto +122 89 122 250 rquadto +0 148 -107 233 rquadto +-107 85 -293 85 rquadto +-79 0 -218 -29 rquadto +closepath +} def +/P$2 { +0 -1079 rlineto +202 0 rlineto +0 470 rlineto +99 -158 255 -158 rquadto +100 0 158 63 rquadto +58 63 58 173 rquadto +0 530 rlineto +-202 0 rlineto +0 -480 rlineto +0 -127 -84 -127 rquadto +-96 0 -185 136 rquadto +0 472 rlineto +} def +/P$1a { +-635 -317 rlineto +635 -317 rlineto +0 88 rlineto +-458 229 rlineto +458 228 rlineto +} def +/P$v { +0 -848 rlineto +105 0 rlineto +0 848 rlineto +} def +/P$17 { +-106 32 -182 32 rquadto +-128 0 -210 -85 rquadto +-81 -85 -81 -222 rquadto +0 -132 71 -217 rquadto +71 -84 183 -84 rquadto +105 0 163 75 rquadto +57 75 57 213 rquadto +0 32 rlineto +-367 0 rlineto +23 207 203 207 rquadto +66 0 162 -35 rquadto +closepath +} def +/P$1e { +-82 -72 -155 -72 rquadto +-152 0 -152 232 rquadto +0 204 135 204 rquadto +88 0 172 -96 rquadto +} def +/P$5 { +0 -148 rlineto +150 62 257 62 rquadto +124 0 124 -84 rquadto +0 -54 -102 -95 rquadto +-68 -27 rlineto +-111 -45 -159 -97 rquadto +-47 -51 -47 -128 rquadto +0 -106 81 -165 rquadto +81 -59 227 -59 rquadto +91 0 218 26 rquadto +0 142 rlineto +-121 -42 -201 -42 rquadto +-125 0 -125 77 rquadto +0 51 92 86 rquadto +58 22 rlineto +131 49 183 101 rquadto +51 51 51 131 rquadto +0 105 -87 171 rquadto +-87 65 -228 65 rquadto +-135 0 -273 -41 rquadto +} def +/P$1d { +0 -109 rlineto +-64 122 -194 122 rquadto +-105 0 -165 -76 rquadto +-60 -76 -60 -210 rquadto +0 -145 68 -234 rquadto +68 -88 180 -88 rquadto +103 0 171 79 rquadto +0 -331 rlineto +106 0 rlineto +0 848 rlineto +closepath +} def +/P$f { +49 0 rlineto +109 0 169 -50 rquadto +59 -50 59 -142 rquadto +0 -77 -46 -111 rquadto +-46 -33 -156 -33 rquadto +-75 0 rlineto +} def +/P$i { +0 -164 rlineto +-38 -1 rlineto +-94 0 -153 36 rquadto +-58 36 -58 94 rquadto +0 41 29 70 rquadto +29 28 71 28 rquadto +72 0 150 -63 rquadto +} def +/P$8 { +-101 97 -216 97 rquadto +-98 0 -159 -60 rquadto +-61 -60 -61 -155 rquadto +0 -124 99 -191 rquadto +99 -67 284 -67 rquadto +54 0 rlineto +0 -68 rlineto +0 -116 -133 -116 rquadto +-118 0 -239 66 rquadto +0 -139 rlineto +137 -51 272 -51 rquadto +294 0 294 234 rquadto +0 332 rlineto +0 88 56 88 rquadto +10 0 26 -2 rquadto +4 113 rlineto +-64 19 -113 19 rquadto +-124 0 -159 -97 rquadto +closepath +} def +/P$h { +-103 95 -199 95 rquadto +-79 0 -131 -49 rquadto +-52 -49 -52 -125 rquadto +0 -104 87 -160 rquadto +87 -55 251 -55 rquadto +27 0 rlineto +0 -76 rlineto +0 -110 -113 -110 rquadto +-91 0 -197 56 rquadto +0 -95 rlineto +116 -47 218 -47 rquadto +106 0 157 48 rquadto +50 48 50 149 rquadto +0 288 rlineto +0 99 60 99 rquadto +7 0 22 -2 rquadto +8 63 rlineto +-39 18 -86 18 rquadto +-80 0 -103 -95 rquadto +closepath +} def +/P$q { +0 -119 rlineto +-70 134 -212 134 rquadto +-114 0 -180 -83 rquadto +-65 -83 -65 -229 rquadto +0 -158 74 -255 rquadto +74 -96 196 -96 rquadto +113 0 187 86 rquadto +0 -361 rlineto +116 0 rlineto +0 925 rlineto +closepath +} def +/P$14 { +0 -583 rlineto +105 0 rlineto +0 583 rlineto +closepath +} def +/P$r { +-89 -79 -169 -79 rquadto +-165 0 -165 253 rquadto +0 223 147 223 rquadto +96 0 188 -104 rquadto +closepath +} def +/P$e { +0 -867 rlineto +236 0 rlineto +157 0 225 53 rquadto +68 53 68 174 rquadto +0 138 -93 216 rquadto +-93 78 -260 78 rquadto +-54 0 rlineto +0 344 rlineto +closepath +} def +/P$j { +0 -636 rlineto +115 0 rlineto +0 119 rlineto +91 -133 223 -133 rquadto +82 0 131 52 rquadto +49 52 49 140 rquadto +0 457 rlineto +-115 0 rlineto +0 -419 rlineto +0 -70 -20 -101 rquadto +-20 -30 -68 -30 rquadto +-106 0 -199 138 rquadto +0 411 rlineto +} def +/P$1w { +-118 0 -196 -87 rquadto +-77 -87 -77 -220 rquadto +0 -142 77 -221 rquadto +77 -79 215 -79 rquadto +68 0 152 18 rquadto +0 88 rlineto +-89 -26 -146 -26 rquadto +-81 0 -130 60 rquadto +-49 60 -49 162 rquadto +0 98 50 158 rquadto +50 60 132 60 rquadto +72 0 149 -37 rquadto +0 91 rlineto +-102 31 -177 31 rquadto +} def +/P$n { +39 0 rlineto +98 0 152 -42 rquadto +54 -42 54 -118 rquadto +0 -127 -198 -127 rquadto +-48 0 rlineto +} def +/P$1t { +-125 0 -199 -82 rquadto +-74 -82 -74 -222 rquadto +0 -140 74 -222 rquadto +74 -81 203 -81 rquadto +128 0 203 81 rquadto +74 81 74 221 rquadto +0 142 -75 224 rquadto +-75 81 -206 81 rquadto +closepath +} def +/P$1u { +168 0 168 -226 rquadto +0 -223 -165 -223 rquadto +-165 0 -165 225 rquadto +0 225 163 225 rquadto +} def +/P$0 { +-175 0 -279 -106 rquadto +-103 -106 -103 -286 rquadto +0 -181 104 -287 rquadto +104 -105 283 -105 rquadto +179 0 284 105 rquadto +104 105 104 285 rquadto +0 184 -104 289 rquadto +-104 104 -288 104 rquadto +closepath +} def +/P$1g { +0 73 rlineto +116 -78 183 -214 rquadto +67 -135 67 -289 rquadto +0 -153 -67 -288 rquadto +-67 -135 -183 -214 rquadto +0 73 rlineto +78 85 112 184 rquadto +33 98 33 245 rquadto +0 147 -33 245 rquadto +-33 98 -112 184 rquadto +closepath +} def +/P$13 { +-80 0 -204 -34 rquadto +0 -111 rlineto +134 62 220 62 rquadto +66 0 107 -34 rquadto +40 -34 40 -91 rquadto +0 -46 -26 -79 rquadto +-26 -32 -98 -73 rquadto +-54 -31 rlineto +-101 -58 -143 -109 rquadto +-41 -51 -41 -119 rquadto +0 -91 66 -151 rquadto +66 -59 169 -59 rquadto +91 0 193 30 rquadto +0 103 rlineto +-125 -49 -187 -49 rquadto +-58 0 -96 31 rquadto +-38 31 -38 78 rquadto +0 39 27 70 rquadto +27 30 102 73 rquadto +56 32 rlineto +103 58 143 110 rquadto +40 52 40 125 rquadto +0 103 -76 166 rquadto +-76 62 -202 62 rquadto +} def +/P$1i { +0 73 rlineto +116 -78 183 -214 rquadto +67 -135 67 -289 rquadto +0 -153 -67 -288 rquadto +-67 -135 -183 -214 rquadto +0 73 rlineto +78 85 112 184 rquadto +33 98 33 245 rquadto +0 147 -33 245 rquadto +-33 98 -112 184 rquadto +} def +/P$1s { +-185 0 -286 -108 rquadto +-100 -108 -100 -308 rquadto +0 -198 102 -308 rquadto +102 -109 289 -109 rquadto +106 0 250 34 rquadto +0 105 rlineto +-163 -56 -251 -56 rquadto +-129 0 -200 87 rquadto +-70 87 -70 247 rquadto +0 152 75 239 rquadto +75 87 206 87 rquadto +112 0 241 -69 rquadto +0 96 rlineto +-117 60 -256 60 rquadto +} def +/P$1v { +0 -583 rlineto +105 0 rlineto +0 109 rlineto +62 -122 182 -122 rquadto +16 0 33 2 rquadto +0 98 rlineto +-27 -9 -48 -9 rquadto +-100 0 -168 119 rquadto +0 384 rlineto +} def +/P$1p { +23 0 rlineto +124 0 160 -15 rquadto +69 -29 69 -109 rquadto +0 -70 -63 -117 rquadto +-63 -46 -158 -46 rquadto +-31 0 rlineto +closepath +} def +/P$18 { +257 0 rlineto +0 -162 -121 -162 rquadto +-121 0 -135 162 rquadto +} def +/P$d { +-58 29 -122 44 rquadto +-63 14 -134 14 rquadto +-250 0 -382 -165 rquadto +-131 -165 -131 -477 rquadto +0 -312 131 -478 rquadto +131 -165 382 -165 rquadto +70 0 135 14 rquadto +64 14 121 44 rquadto +0 272 rlineto +-63 -58 -122 -85 rquadto +-59 -26 -122 -26 rquadto +-134 0 -202 106 rquadto +-68 106 -68 316 rquadto +0 209 68 315 rquadto +68 106 202 106 rquadto +63 0 122 -26 rquadto +59 -26 122 -85 rquadto +closepath +} def +/P$1r { +94 -212 rlineto +-225 -583 rlineto +114 0 rlineto +167 439 rlineto +178 -439 rlineto +99 0 rlineto +-318 795 rlineto +} def +/P$11 { +0 -105 rlineto +105 0 rlineto +0 105 rlineto +closepath +} def +/P$15 { +0 -105 rlineto +105 0 rlineto +0 105 rlineto +} def +/P$t { +0 -795 rlineto +105 0 rlineto +0 109 rlineto +64 -122 194 -122 rquadto +105 0 165 76 rquadto +60 76 60 210 rquadto +0 145 -68 233 rquadto +-68 88 -180 88 rquadto +-103 0 -172 -79 rquadto +0 278 rlineto +closepath +} def +/P$1n { +45 0 rlineto +100 0 155 -46 rquadto +54 -46 54 -130 rquadto +0 -71 -42 -102 rquadto +-42 -30 -143 -30 rquadto +-69 0 rlineto +} def +/P$19 { +0 -794 rlineto +112 0 rlineto +0 710 rlineto +357 0 rlineto +0 84 rlineto +} def +/P$w { +-95 87 -183 87 rquadto +-72 0 -120 -45 rquadto +-47 -45 -47 -114 rquadto +0 -95 80 -146 rquadto +80 -51 230 -51 rquadto +25 0 rlineto +0 -70 rlineto +0 -101 -104 -101 rquadto +-83 0 -181 51 rquadto +0 -87 rlineto +106 -43 200 -43 rquadto +97 0 144 44 rquadto +46 44 46 136 rquadto +0 264 rlineto +0 90 55 90 rquadto +6 0 20 -2 rquadto +7 58 rlineto +-35 17 -79 17 rquadto +-74 0 -94 -87 rquadto +closepath +} def +/P$1b { +0 -710 rlineto +-281 0 rlineto +0 -84 rlineto +676 0 rlineto +0 84 rlineto +-281 0 rlineto +0 710 rlineto +} def +/P$a { +-172 0 -279 -147 rquadto +-107 -147 -107 -383 rquadto +0 -238 108 -384 rquadto +108 -146 284 -146 rquadto +175 0 283 145 rquadto +108 145 108 382 rquadto +0 242 -108 388 rquadto +-108 145 -288 145 rquadto +closepath +} def +/P$9 { +0 -152 rlineto +-47 0 rlineto +-196 0 -196 123 rquadto +0 41 28 70 rquadto +28 28 70 28 rquadto +71 0 145 -69 rquadto +} def +/P$b { +179 0 179 -404 rquadto +0 -404 -177 -404 rquadto +-177 0 -177 404 rquadto +0 405 174 405 rquadto +} def +/P$4 { +0 -219 rlineto +219 0 rlineto +0 219 rlineto +} def +/P$10 { +-72 0 -176 -33 rquadto +0 -97 rlineto +103 51 180 51 rquadto +45 0 75 -24 rquadto +30 -24 30 -61 rquadto +0 -54 -84 -89 rquadto +-61 -26 rlineto +-136 -56 -136 -163 rquadto +0 -76 53 -120 rquadto +53 -43 147 -43 rquadto +48 0 120 13 rquadto +22 4 rlineto +0 88 rlineto +-88 -26 -140 -26 rquadto +-102 0 -102 74 rquadto +0 47 77 80 rquadto +51 21 rlineto +86 36 122 77 rquadto +35 40 35 101 rquadto +0 76 -60 126 rquadto +-60 49 -155 49 rquadto +} def +/P$1h { +0 -79 rlineto +360 -424 rlineto +-344 0 rlineto +0 -79 rlineto +474 0 rlineto +0 79 rlineto +-360 424 rlineto +367 0 rlineto +0 79 rlineto +} def +/P$1k { +12 -91 rlineto +91 43 181 43 rquadto +178 0 178 -189 rquadto +0 -91 rlineto +-58 122 -192 122 rquadto +-104 0 -166 -76 rquadto +-61 -76 -61 -205 rquadto +0 -133 70 -216 rquadto +70 -83 182 -83 rquadto +97 0 168 79 rquadto +0 -66 rlineto +106 0 rlineto +0 424 rlineto +0 136 -14 202 rquadto +-14 65 -53 107 rquadto +-69 73 -215 73 rquadto +-102 0 -195 -31 rquadto +closepath +} def +/P$1 { +174 0 174 -267 rquadto +0 -122 -46 -193 rquadto +-46 -71 -126 -71 rquadto +-79 0 -126 71 rquadto +-46 71 -46 194 rquadto +0 122 45 194 rquadto +45 71 125 71 rquadto +} def +/P$6 { +0 -624 rlineto +-103 0 rlineto +0 -126 rlineto +103 0 rlineto +0 -54 rlineto +0 -291 276 -291 rquadto +89 0 184 25 rquadto +0 136 rlineto +-86 -36 -154 -36 rquadto +-104 0 -104 157 rquadto +0 61 rlineto +190 0 rlineto +0 126 rlineto +-190 0 rlineto +0 624 rlineto +} def +/P$7 { +-72 21 -114 21 rquadto +-263 0 -263 -246 rquadto +0 -395 rlineto +-84 0 rlineto +0 -126 rlineto +84 0 rlineto +0 -126 rlineto +202 -23 rlineto +0 149 rlineto +160 0 rlineto +0 126 rlineto +-160 0 rlineto +0 368 rlineto +0 138 112 138 rquadto +25 0 62 -9 rquadto +} def +/P$z { +-80 0 -125 -46 rquadto +-45 -46 -45 -128 rquadto +0 -342 rlineto +-73 0 rlineto +0 -79 rlineto +73 0 rlineto +0 -105 rlineto +105 -10 rlineto +0 116 rlineto +152 0 rlineto +0 79 rlineto +-152 0 rlineto +0 323 rlineto +0 114 98 114 rquadto +20 0 51 -6 rquadto +0 73 rlineto +-48 13 -84 13 rquadto +} def +/P$1f { +0 73 rlineto +-116 -78 -183 -214 rquadto +-67 -135 -67 -289 rquadto +0 -153 67 -288 rquadto +67 -135 183 -214 rquadto +0 73 rlineto +-78 85 -112 184 rquadto +-33 98 -33 245 rquadto +0 147 33 245 rquadto +33 98 112 184 rquadto +} def +0.78 0.78 0.78 setrgbcolor +newpath +1700 1900 moveto +10700 0 rlineto +700 2248 rlineto +20200 0 rlineto +0 11251 rlineto +-31600 0 rlineto +0 -13500 rlineto +1700 1900 lineto +closepath eofill +0.69 0.69 0.69 setrgbcolor +newpath +1750 1950 moveto +10700 0 rlineto +700 2248 rlineto +20100 0 rlineto +0 11151 rlineto +-31500 0 rlineto +0 -13400 rlineto +1750 1950 lineto +closepath eofill +0.59 0.59 0.59 setrgbcolor +newpath +1800 2000 moveto +10700 0 rlineto +700 2248 rlineto +20000 0 rlineto +0 11051 rlineto +-31400 0 rlineto +0 -13300 rlineto +1800 2000 lineto +closepath eofill +0.49 0.49 0.49 setrgbcolor +newpath +1850 2050 moveto +10700 0 rlineto +700 2248 rlineto +19900 0 rlineto +0 10951 rlineto +-31300 0 rlineto +0 -13200 rlineto +1850 2050 lineto +closepath eofill +0.39 0.39 0.39 setrgbcolor +newpath +1900 2100 moveto +10700 0 rlineto +700 2248 rlineto +19800 0 rlineto +0 10851 rlineto +-31200 0 rlineto +0 -13100 rlineto +1900 2100 lineto +closepath eofill +0.29 0.29 0.29 setrgbcolor +newpath +1950 2150 moveto +10700 0 rlineto +700 2248 rlineto +19700 0 rlineto +0 10751 rlineto +-31100 0 rlineto +0 -13000 rlineto +1950 2150 lineto +closepath eofill +0.2 0.2 0.2 setrgbcolor +newpath +2000 2200 moveto +10700 0 rlineto +700 2248 rlineto +19600 0 rlineto +0 10651 rlineto +-31000 0 rlineto +0 -12900 rlineto +2000 2200 lineto +closepath eofill +1 1 1 setrgbcolor +newpath +1400 1600 moveto +10700 0 rlineto +700 2248 rlineto +20200 0 rlineto +0 11251 rlineto +-31600 0 rlineto +0 -13500 rlineto +1400 1600 lineto +closepath eofill +100 setlinewidth +0 0 0 setrgbcolor +newpath +1400 1600 moveto +10700 0 rlineto +700 2248 rlineto +20200 0 rlineto +0 11251 rlineto +-31600 0 rlineto +0 -13500 rlineto +1400 1600 lineto +closepath stroke +150 setlinewidth +0 0 0 setrgbcolor +newpath +1400 3848 moveto +11400 0 rlineto +stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +2241 3170 moveto +P$0 +2245 3044 moveto +P$1 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +2820 3153 moveto +P$2 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +3740 3153 moveto +P$3 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5034 3153 moveto +P$4 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5423 3129 moveto +P$5 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6550 3170 moveto +P$0 +6553 3044 moveto +P$1 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7150 3153 moveto +P$6 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8096 3149 moveto +P$7 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8644 3072 moveto +P$8 +8644 2964 moveto +P$9 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9037 3153 moveto +P$4 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9813 3072 moveto +P$8 +9813 2964 moveto +P$9 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10599 3178 moveto +P$a +10601 3052 moveto +P$b +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +11239 3149 moveto +P$c +fill +0.78 0.78 0.78 setrgbcolor +30000 9982 2600 4700 100 roundrect +closepath eofill +0.71 0.71 0.71 setrgbcolor +29900 9882 2650 4750 100 roundrect +closepath eofill +0.64 0.64 0.64 setrgbcolor +29800 9782 2700 4800 100 roundrect +closepath eofill +0.56 0.56 0.56 setrgbcolor +29700 9682 2750 4850 100 roundrect +closepath eofill +0.49 0.49 0.49 setrgbcolor +29600 9582 2800 4900 100 roundrect +closepath eofill +0.42 0.42 0.42 setrgbcolor +29500 9482 2850 4950 100 roundrect +closepath eofill +0.34 0.34 0.34 setrgbcolor +29400 9382 2900 5000 100 roundrect +closepath eofill +0.27 0.27 0.27 setrgbcolor +29300 9282 2950 5050 100 roundrect +closepath eofill +0.2 0.2 0.2 setrgbcolor +29200 9182 3000 5100 100 roundrect +closepath eofill +1 1 0.81 setrgbcolor +30000 9982 2200 4300 simplerect +closepath eofill +150 setlinewidth +0.66 0 0.21 setrgbcolor +30000 9982 2200 4300 simplerect +closepath stroke +0.68 0.82 0.7 setrgbcolor +newpath +13125 5900 1100 0 360 arc +closepath eofill +100 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +13125 5900 1100 0 360 arc +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +13372 6514 moveto +P$d +fill +0.52 0.75 0.52 setrgbcolor +newpath +15675 5850 300 0 360 arc +closepath eofill +100 setlinewidth +0.01 0.5 0.28 setrgbcolor +newpath +15675 5850 300 0 360 arc +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +16386 6353 moveto +P$e +16508 5915 moveto +P$f +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +17053 6353 moveto +P$g +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +17728 6272 moveto +P$h +17711 6209 moveto +P$i +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +18063 6353 moveto +P$j +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +18999 6368 moveto +P$k +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +19253 6353 moveto +P$l +19375 6261 moveto +P$m +19375 5867 moveto +P$n +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +20413 6333 moveto +P$o +20019 5966 moveto +P$p +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +21024 6353 moveto +P$q +21024 5868 moveto +P$r +fill +1 1 1 setrgbcolor +[2 2] 0 setdash +1000 1613 31500 4000 simplerect +closepath eofill +[] 0 setdash +100 setlinewidth +0 0 0 setrgbcolor +[2 2] 0 setdash +closepath stroke +[] 0 setdash +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +31918 5260 moveto +P$s +fill +150 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +2300 7500 moveto +29800 0 rlineto +stroke +100 setlinewidth +0.78 0.16 0.19 setrgbcolor +600 600 3000 8397 simplerect +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +4305 9175 moveto +P$t +4411 8824 moveto +P$u +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +4998 8963 moveto +P$v +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5616 8889 moveto +P$w +5601 8831 moveto +P$x +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5923 8963 moveto +P$y +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6781 8976 moveto +P$z +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7172 8976 moveto +P$10 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7593 8963 moveto +P$11 +7593 8486 moveto +P$12 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8427 8983 moveto +P$13 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8866 8963 moveto +P$14 +8866 8274 moveto +P$15 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9184 8963 moveto +P$16 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10211 9175 moveto +P$t +10317 8824 moveto +P$u +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10904 8963 moveto +P$v +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +11649 8944 moveto +P$17 +11288 8608 moveto +P$18 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +11831 8963 moveto +P$19 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +12421 8963 moveto +P$14 +12421 8274 moveto +P$15 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +12894 8976 moveto +P$10 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +13475 8976 moveto +P$z +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +14361 8963 moveto +P$1a +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +14771 8963 moveto +P$1b +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +15295 8963 moveto +P$1c +fill +150 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +2300 9595 moveto +29800 0 rlineto +stroke +0.52 0.75 0.52 setrgbcolor +newpath +3300 10793 300 0 360 arc +closepath eofill +100 setlinewidth +0.01 0.5 0.28 setrgbcolor +newpath +3300 10793 300 0 360 arc +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +4606 10984 moveto +P$w +4591 10927 moveto +P$x +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5287 11058 moveto +P$1d +5287 10614 moveto +P$1e +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5979 11058 moveto +P$1d +5979 10614 moveto +P$1e +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6510 11144 moveto +P$1f +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6655 11271 moveto +P$t +6761 10919 moveto +P$u +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7347 11058 moveto +P$v +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7966 10984 moveto +P$w +7951 10927 moveto +P$x +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8273 11058 moveto +P$y +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9131 11072 moveto +P$z +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9382 11058 moveto +P$11 +9382 10582 moveto +P$12 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10249 11058 moveto +P$1b +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10693 11144 moveto +P$1g +fill +0.52 0.75 0.52 setrgbcolor +newpath +3300 12088 300 0 360 arc +closepath eofill +100 setlinewidth +0.01 0.5 0.28 setrgbcolor +newpath +3300 12088 300 0 360 arc +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +4460 12367 moveto +P$10 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +4866 12354 moveto +P$14 +4866 11665 moveto +P$15 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5144 12354 moveto +P$1h +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6242 12335 moveto +P$17 +5881 12000 moveto +P$18 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6640 12440 moveto +P$1f +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6719 12440 moveto +P$1i +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7158 12354 moveto +P$11 +7158 11877 moveto +P$12 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7839 12354 moveto +P$14 +7839 11665 moveto +P$15 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8157 12354 moveto +P$y +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9015 12367 moveto +P$1j +fill +0.52 0.75 0.52 setrgbcolor +newpath +3300 13384 300 0 360 arc +closepath eofill +100 setlinewidth +0.01 0.5 0.28 setrgbcolor +newpath +3300 13384 300 0 360 arc +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +4307 13843 moveto +P$1k +4680 13448 moveto +P$1l +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5419 13631 moveto +P$17 +5058 13295 moveto +P$18 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5779 13663 moveto +P$z +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6012 13650 moveto +P$1m +6124 13248 moveto +P$1n +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6623 13650 moveto +P$v +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7242 13575 moveto +P$w +7227 13518 moveto +P$x +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7549 13650 moveto +P$y +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8407 13663 moveto +P$z +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8798 13663 moveto +P$10 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9201 13650 moveto +P$1o +9312 13565 moveto +P$1p +9312 13204 moveto +P$1q +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9870 13862 moveto +P$1r +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10748 13669 moveto +P$1s +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +11401 13663 moveto +P$1t +11402 13583 moveto +P$1u +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +11848 13650 moveto +P$v +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +12394 13663 moveto +P$1t +12396 13583 moveto +P$1u +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +12842 13650 moveto +P$1v +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +13504 13735 moveto +P$1f +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +13877 13663 moveto +P$1w +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +14441 13663 moveto +P$1t +14443 13583 moveto +P$1u +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +14889 13650 moveto +P$v +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +15435 13663 moveto +P$1t +15436 13583 moveto +P$1u +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +15882 13650 moveto +P$1v +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +16347 13650 moveto +P$11 +16347 13173 moveto +P$12 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +17025 13650 moveto +P$1m +17137 13248 moveto +P$1n +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +17636 13650 moveto +P$v +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +18255 13575 moveto +P$w +18240 13518 moveto +P$x +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +18562 13650 moveto +P$y +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +19420 13663 moveto +P$z +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +19993 13669 moveto +P$1s +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +20645 13663 moveto +P$1t +20647 13583 moveto +P$1u +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +21093 13650 moveto +P$v +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +21639 13663 moveto +P$1t +21641 13583 moveto +P$1u +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +22086 13650 moveto +P$1v +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +22470 13735 moveto +P$1i +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +22909 13650 moveto +P$11 +22909 13173 moveto +P$12 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +23743 13669 moveto +P$13 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +24183 13650 moveto +P$14 +24183 12960 moveto +P$15 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +24501 13650 moveto +P$16 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +25528 13862 moveto +P$t +25633 13510 moveto +P$u +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +26220 13650 moveto +P$v +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +26965 13631 moveto +P$17 +26604 13295 moveto +P$18 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +27147 13650 moveto +P$19 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +27737 13650 moveto +P$14 +27737 12960 moveto +P$15 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +28210 13663 moveto +P$10 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +28791 13663 moveto +P$z +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +29677 13650 moveto +P$1a +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +30088 13650 moveto +P$1b +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +30611 13650 moveto +P$1c +fill +grestore +showpage +%plantuml done +%%EOF diff --git a/05/assets/class-spec-2.plantuml b/05/assets/class-spec-2.plantuml new file mode 100644 index 0000000000000000000000000000000000000000..45f42674a9e53388ae9580b5d7869cf4f9af0c99 --- /dev/null +++ b/05/assets/class-spec-2.plantuml @@ -0,0 +1,12 @@ +@startuml +package ohm.softa.a05 { + + +class PlantBed<T> { + -plants: SimpleList<T> + + +add(plant: T) + +size(): int + +getPlantsByColor(color: PlantColor): SimpleList<T> + } +} +@enduml diff --git a/05/assets/class-spec-2.svg b/05/assets/class-spec-2.svg new file mode 100644 index 0000000000000000000000000000000000000000..bf9775e61d53e0d824698304de3543f3d3f0a802 --- /dev/null +++ b/05/assets/class-spec-2.svg @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="163px" preserveAspectRatio="none" style="width:352px;height:163px;" version="1.1" viewBox="0 0 352 163" width="352px" zoomAndPan="magnify"><defs><filter height="300%" id="f1uwdgfzocpil6" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--cluster ohm.softa.a05--><polygon fill="#FFFFFF" filter="url(#f1uwdgfzocpil6)" points="14,16,121,16,128,38.4883,330,38.4883,330,151,14,151,14,16" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="14" x2="128" y1="38.4883" y2="38.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="101" x="18" y="31.5352">ohm.softa.a05</text><!--class PlantBed--><rect fill="#FEFECE" filter="url(#f1uwdgfzocpil6)" height="99.8203" id="PlantBed" style="stroke: #A80036; stroke-width: 1.5;" width="300" x="22" y="43"/><ellipse cx="131.25" cy="59" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M133.7231,65.1431 Q133.1421,65.4419 132.5029,65.5913 Q131.8638,65.7407 131.1582,65.7407 Q128.6514,65.7407 127.3315,64.0889 Q126.0117,62.437 126.0117,59.3159 Q126.0117,56.1865 127.3315,54.5347 Q128.6514,52.8828 131.1582,52.8828 Q131.8638,52.8828 132.5112,53.0322 Q133.1587,53.1816 133.7231,53.4805 L133.7231,56.2031 Q133.0923,55.6221 132.4988,55.3523 Q131.9053,55.0825 131.2744,55.0825 Q129.9297,55.0825 129.2449,56.1492 Q128.5601,57.2158 128.5601,59.3159 Q128.5601,61.4077 129.2449,62.4744 Q129.9297,63.541 131.2744,63.541 Q131.9053,63.541 132.4988,63.2712 Q133.0923,63.0015 133.7231,62.4204 Z "/><ellipse cx="156.75" cy="58.5" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="50" x="162.75" y="63.5352">PlantBed</text><rect fill="#FFFFFF" height="16.1328" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="10" x="315" y="40"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="8" x="316" y="52.6016">T</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="23" x2="321" y1="75" y2="75"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="30" y="83.9775"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="118" x="42" y="89.6348">plants: SimpleList<T></text><line style="stroke: #A80036; stroke-width: 1.5;" x1="23" x2="321" y1="95.9551" y2="95.9551"/><ellipse cx="33" cy="107.9326" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="68" x="42" y="110.5898">add(plant: T)</text><ellipse cx="33" cy="120.8877" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="49" x="42" y="123.5449">size(): int</text><ellipse cx="33" cy="133.8428" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="274" x="42" y="136.5">getPlantsByColor(color: PlantColor): SimpleList<T></text><!-- +@startuml +package ohm.softa.a05 { + + +class PlantBed<T> { + -plants: SimpleList<T> + + +add(plant: T) + +size(): int + +getPlantsByColor(color: PlantColor): SimpleList<T> + } +} +@enduml + +PlantUML version 1.2019.03(Sun Mar 10 12:04:44 CET 2019) +(GPL source distribution) +Java Runtime: OpenJDK Runtime Environment +JVM: OpenJDK 64-Bit Server VM +Java Version: 11.0.2+9 +Operating System: Mac OS X +OS Version: 10.14.4 +Default Encoding: UTF-8 +Language: en +Country: GB +--></g></svg> \ No newline at end of file diff --git a/05/assets/class-spec-3.eps b/05/assets/class-spec-3.eps new file mode 100644 index 0000000000000000000000000000000000000000..90f3d85963117ddf70c950c27612cc09197f9dd9 --- /dev/null +++ b/05/assets/class-spec-3.eps @@ -0,0 +1,1859 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: PlantUML v1.2019.03 +%%Title: noTitle +%%BoundingBox: 0 0 466 116 +%%ColorUsage: Color +%%Origin: 0 0 +%%EndComments + +gsave +0 116 translate +.01 -.01 scale +/simplerect { +newpath moveto 1 index 0 rlineto +0 exch rlineto +neg 0 rlineto +} def +/roundrect { +newpath +dup 3 index add 2 index 2 index add 2 index 180 270 arc +2 index 5 index add 1 index sub 2 index 2 index add 2 index 270 0 arc +2 index 5 index add 1 index sub 2 index 5 index add 2 index sub 2 index 0 90 arc +dup 3 index add 2 index 5 index add 2 index sub 2 index 90 180 arc +pop pop pop pop pop +} def +/rquadto { +3 index 3 index 4 2 roll rcurveto +} def +/P$s { +25 0 rlineto +135 0 178 -16 rquadto +82 -32 100 -119 rquadto +15 -77 -43 -128 rquadto +-58 -51 -162 -51 rquadto +-34 0 rlineto +closepath +} def +/P$14 { +635 -317 rlineto +-635 -317 rlineto +0 88 rlineto +458 229 rlineto +-458 228 rlineto +} def +/P$1w { +0 -583 rlineto +105 0 rlineto +0 109 rlineto +83 -122 205 -122 rquadto +75 0 120 48 rquadto +45 48 45 129 rquadto +0 418 rlineto +-105 0 rlineto +0 -384 rlineto +0 -64 -19 -92 rquadto +-19 -27 -63 -27 rquadto +-97 0 -183 127 rquadto +0 377 rlineto +} def +/P$g { +0 -1079 rlineto +202 0 rlineto +0 1079 rlineto +} def +/P$1v { +0 -150 rlineto +-35 -1 rlineto +-87 0 -140 33 rquadto +-53 33 -53 86 rquadto +0 38 26 64 rquadto +26 26 65 26 rquadto +66 0 137 -58 rquadto +} def +/P$v { +280 0 rlineto +35 -177 -96 -177 rquadto +-133 0 -183 177 rquadto +} def +/P$1s { +0 -794 rlineto +216 0 rlineto +143 0 206 48 rquadto +62 48 62 159 rquadto +0 126 -85 198 rquadto +-85 71 -238 71 rquadto +-49 0 rlineto +0 315 rlineto +closepath +} def +/P$1z { +0 -39 rlineto +51 -14 51 -121 rquadto +0 -10 rlineto +-51 0 rlineto +0 -132 rlineto +132 0 rlineto +0 114 rlineto +0 176 -132 190 rquadto +} def +/P$23 { +635 -317 rlineto +-635 -317 rlineto +0 88 rlineto +458 229 rlineto +-458 228 rlineto +closepath +} def +/P$1r { +0 -106 rlineto +105 0 rlineto +0 106 rlineto +} def +/P$3 { +0 -750 rlineto +194 0 rlineto +0 141 rlineto +88 -158 252 -158 rquadto +84 0 139 41 rquadto +54 41 66 116 rquadto +105 -158 254 -158 rquadto +205 0 205 226 rquadto +0 540 rlineto +-194 0 rlineto +0 -474 rlineto +0 -133 -88 -133 rquadto +-90 0 -177 131 rquadto +0 476 rlineto +-194 0 rlineto +0 -474 rlineto +0 -133 -89 -133 rquadto +-89 0 -175 131 rquadto +0 476 rlineto +} def +/P$21 { +0 -583 rlineto +105 0 rlineto +0 109 rlineto +77 -122 198 -122 rquadto +117 0 159 122 rquadto +75 -122 195 -122 rquadto +77 0 119 45 rquadto +42 45 42 127 rquadto +0 424 rlineto +-106 0 rlineto +0 -407 rlineto +0 -99 -78 -99 rquadto +-82 0 -172 116 rquadto +0 391 rlineto +-106 0 rlineto +0 -407 rlineto +0 -100 -80 -100 rquadto +-80 0 -171 117 rquadto +0 391 rlineto +} def +/P$10 { +23 -115 rlineto +115 0 rlineto +-23 115 rlineto +} def +/P$p { +127 -636 rlineto +115 0 rlineto +-23 119 rlineto +118 -133 250 -133 rquadto +82 0 121 52 rquadto +38 52 21 140 rquadto +-91 457 rlineto +-115 0 rlineto +83 -419 rlineto +14 -70 0 -101 rquadto +-14 -30 -62 -30 rquadto +-106 0 -227 138 rquadto +-82 411 rlineto +} def +/P$1c { +0 -794 rlineto +206 0 rlineto +119 0 182 45 rquadto +63 45 63 129 rquadto +0 144 -163 205 rquadto +194 59 194 215 rquadto +0 96 -64 147 rquadto +-64 51 -185 51 rquadto +closepath +} def +/P$i { +-115 507 rlineto +231 0 rlineto +closepath +} def +/P$17 { +81 73 155 73 rquadto +152 0 152 -232 rquadto +0 -205 -135 -205 rquadto +-88 0 -172 96 rquadto +} def +/P$1e { +35 0 rlineto +90 0 139 -38 rquadto +49 -38 49 -109 rquadto +0 -117 -181 -117 rquadto +-44 0 rlineto +} def +/P$f { +0 -168 rlineto +202 0 rlineto +0 168 rlineto +} def +/P$y { +123 0 rlineto +-109 547 rlineto +-26 130 10 190 rquadto +36 59 141 59 rquadto +103 0 157 -55 rquadto +54 -55 80 -189 rquadto +110 -551 rlineto +107 0 rlineto +-109 549 rlineto +-35 177 -124 258 rquadto +-89 80 -248 80 rquadto +-162 0 -222 -83 rquadto +-60 -83 -25 -258 rquadto +} def +/P$2 { +0 -1079 rlineto +202 0 rlineto +0 470 rlineto +99 -158 255 -158 rquadto +100 0 158 63 rquadto +58 63 58 173 rquadto +0 530 rlineto +-202 0 rlineto +0 -480 rlineto +0 -127 -84 -127 rquadto +-96 0 -185 136 rquadto +0 472 rlineto +} def +/P$12 { +-635 -317 rlineto +635 -317 rlineto +0 88 rlineto +-458 229 rlineto +458 228 rlineto +} def +/P$c { +0 -146 rlineto +129 49 215 49 rquadto +86 0 137 -51 rquadto +50 -51 50 -139 rquadto +0 -217 -312 -217 rquadto +-36 0 -73 6 rquadto +0 -507 rlineto +581 0 rlineto +0 159 rlineto +-433 0 rlineto +-10 218 rlineto +218 0 341 89 rquadto +122 89 122 250 rquadto +0 148 -107 233 rquadto +-107 85 -293 85 rquadto +-79 0 -218 -29 rquadto +} def +/P$z { +127 -636 rlineto +115 0 rlineto +-127 636 rlineto +closepath +} def +/P$18 { +0 -848 rlineto +105 0 rlineto +0 848 rlineto +} def +/P$u { +-123 35 -205 35 rquadto +-140 0 -210 -93 rquadto +-70 -93 -40 -242 rquadto +28 -144 125 -237 rquadto +96 -92 218 -92 rquadto +115 0 162 82 rquadto +46 82 16 233 rquadto +-7 35 rlineto +-401 0 rlineto +-20 226 176 226 rquadto +72 0 184 -38 rquadto +closepath +} def +/P$k { +173 -867 rlineto +236 0 rlineto +157 0 214 53 rquadto +57 53 33 174 rquadto +-27 138 -137 216 rquadto +-109 78 -275 78 rquadto +-54 0 rlineto +-68 344 rlineto +closepath +} def +/P$1f { +-106 32 -182 32 rquadto +-128 0 -210 -85 rquadto +-81 -85 -81 -222 rquadto +0 -132 71 -217 rquadto +71 -84 183 -84 rquadto +105 0 163 75 rquadto +57 75 57 213 rquadto +0 32 rlineto +-367 0 rlineto +23 207 203 207 rquadto +66 0 162 -35 rquadto +closepath +} def +/P$1i { +-82 -72 -155 -72 rquadto +-152 0 -152 232 rquadto +0 204 135 204 rquadto +88 0 172 -96 rquadto +} def +/P$h { +0 -148 rlineto +150 62 257 62 rquadto +124 0 124 -84 rquadto +0 -54 -102 -95 rquadto +-68 -27 rlineto +-111 -45 -159 -97 rquadto +-47 -51 -47 -128 rquadto +0 -106 81 -165 rquadto +81 -59 227 -59 rquadto +91 0 218 26 rquadto +0 142 rlineto +-121 -42 -201 -42 rquadto +-125 0 -125 77 rquadto +0 51 92 86 rquadto +58 22 rlineto +131 49 183 101 rquadto +51 51 51 131 rquadto +0 105 -87 171 rquadto +-87 65 -228 65 rquadto +-135 0 -273 -41 rquadto +closepath +} def +/P$x { +-73 -79 -154 -79 rquadto +-165 0 -216 253 rquadto +-44 223 103 223 rquadto +96 0 209 -104 rquadto +} def +/P$5 { +0 -148 rlineto +150 62 257 62 rquadto +124 0 124 -84 rquadto +0 -54 -102 -95 rquadto +-68 -27 rlineto +-111 -45 -159 -97 rquadto +-47 -51 -47 -128 rquadto +0 -106 81 -165 rquadto +81 -59 227 -59 rquadto +91 0 218 26 rquadto +0 142 rlineto +-121 -42 -201 -42 rquadto +-125 0 -125 77 rquadto +0 51 92 86 rquadto +58 22 rlineto +131 49 183 101 rquadto +51 51 51 131 rquadto +0 105 -87 171 rquadto +-87 65 -228 65 rquadto +-135 0 -273 -41 rquadto +} def +/P$n { +-122 95 -218 95 rquadto +-79 0 -121 -49 rquadto +-42 -49 -27 -125 rquadto +20 -104 119 -160 rquadto +98 -55 262 -55 rquadto +27 0 rlineto +15 -76 rlineto +22 -110 -91 -110 rquadto +-91 0 -208 56 rquadto +19 -95 rlineto +126 -47 228 -47 rquadto +106 0 147 48 rquadto +41 48 20 149 rquadto +-57 288 rlineto +-19 99 41 99 rquadto +7 0 22 -2 rquadto +-4 63 rlineto +-43 18 -90 18 rquadto +-80 0 -84 -95 rquadto +closepath +} def +/P$1h { +0 -109 rlineto +-64 122 -194 122 rquadto +-105 0 -165 -76 rquadto +-60 -76 -60 -210 rquadto +0 -145 68 -234 rquadto +68 -88 180 -88 rquadto +103 0 171 79 rquadto +0 -331 rlineto +106 0 rlineto +0 848 rlineto +closepath +} def +/P$8 { +-101 97 -216 97 rquadto +-98 0 -159 -60 rquadto +-61 -60 -61 -155 rquadto +0 -124 99 -191 rquadto +99 -67 284 -67 rquadto +54 0 rlineto +0 -68 rlineto +0 -116 -133 -116 rquadto +-118 0 -239 66 rquadto +0 -139 rlineto +137 -51 272 -51 rquadto +294 0 294 234 rquadto +0 332 rlineto +0 88 56 88 rquadto +10 0 26 -2 rquadto +4 113 rlineto +-64 19 -113 19 rquadto +-124 0 -159 -97 rquadto +closepath +} def +/P$19 { +0 -583 rlineto +105 0 rlineto +0 583 rlineto +closepath +} def +/P$r { +173 -867 rlineto +225 0 rlineto +130 0 189 49 rquadto +59 49 41 141 rquadto +-31 157 -223 224 rquadto +199 65 165 234 rquadto +-21 105 -102 161 rquadto +-81 55 -213 55 rquadto +closepath +} def +/P$l { +49 0 rlineto +109 0 179 -50 rquadto +69 -50 88 -142 rquadto +15 -77 -24 -111 rquadto +-40 -33 -149 -33 rquadto +-75 0 rlineto +closepath +} def +/P$j { +299 0 rlineto +334 1239 rlineto +-244 0 rlineto +-76 -306 rlineto +-327 0 rlineto +-74 306 rlineto +-244 0 rlineto +closepath +} def +/P$q { +-87 0 -127 -50 rquadto +-39 -50 -21 -140 rquadto +74 -373 rlineto +-79 0 rlineto +17 -86 rlineto +79 0 rlineto +23 -115 rlineto +117 -11 rlineto +-25 126 rlineto +166 0 rlineto +-17 86 rlineto +-166 0 rlineto +-70 352 rlineto +-24 124 82 124 rquadto +22 0 57 -7 rquadto +-15 79 rlineto +-56 14 -95 14 rquadto +} def +/P$1l { +-125 0 -199 -82 rquadto +-74 -82 -74 -222 rquadto +0 -140 74 -222 rquadto +74 -81 203 -81 rquadto +128 0 203 81 rquadto +74 81 74 221 rquadto +0 142 -75 224 rquadto +-75 81 -206 81 rquadto +closepath +} def +/P$1m { +168 0 168 -226 rquadto +0 -223 -165 -223 rquadto +-165 0 -165 225 rquadto +0 225 163 225 rquadto +} def +/P$t { +39 0 rlineto +98 0 161 -42 rquadto +62 -42 77 -118 rquadto +25 -127 -172 -127 rquadto +-48 0 rlineto +} def +/P$0 { +-175 0 -279 -106 rquadto +-103 -106 -103 -286 rquadto +0 -181 104 -287 rquadto +104 -105 283 -105 rquadto +179 0 284 105 rquadto +104 105 104 285 rquadto +0 184 -104 289 rquadto +-104 104 -288 104 rquadto +closepath +} def +/P$o { +32 -164 rlineto +-38 -1 rlineto +-94 0 -160 36 rquadto +-65 36 -77 94 rquadto +-8 41 15 70 rquadto +23 28 65 28 rquadto +72 0 162 -63 rquadto +} def +/P$1k { +-185 0 -286 -108 rquadto +-100 -108 -100 -308 rquadto +0 -198 102 -308 rquadto +102 -109 289 -109 rquadto +106 0 250 34 rquadto +0 105 rlineto +-163 -56 -251 -56 rquadto +-129 0 -200 87 rquadto +-70 87 -70 247 rquadto +0 152 75 239 rquadto +75 87 206 87 rquadto +112 0 241 -69 rquadto +0 96 rlineto +-117 60 -256 60 rquadto +} def +/P$1n { +0 -583 rlineto +105 0 rlineto +0 109 rlineto +62 -122 182 -122 rquadto +16 0 33 2 rquadto +0 98 rlineto +-27 -9 -48 -9 rquadto +-100 0 -168 119 rquadto +0 384 rlineto +} def +/P$1x { +0 73 rlineto +116 -78 183 -214 rquadto +67 -135 67 -289 rquadto +0 -153 -67 -288 rquadto +-67 -135 -183 -214 rquadto +0 73 rlineto +78 85 112 184 rquadto +33 98 33 245 rquadto +0 147 -33 245 rquadto +-33 98 -112 184 rquadto +} def +/P$20 { +-80 0 -204 -34 rquadto +0 -111 rlineto +134 62 220 62 rquadto +66 0 107 -34 rquadto +40 -34 40 -91 rquadto +0 -46 -26 -79 rquadto +-26 -32 -98 -73 rquadto +-54 -31 rlineto +-101 -58 -143 -109 rquadto +-41 -51 -41 -119 rquadto +0 -91 66 -151 rquadto +66 -59 169 -59 rquadto +91 0 193 30 rquadto +0 103 rlineto +-125 -49 -187 -49 rquadto +-58 0 -96 31 rquadto +-38 31 -38 78 rquadto +0 39 27 70 rquadto +27 30 102 73 rquadto +56 32 rlineto +103 58 143 110 rquadto +40 52 40 125 rquadto +0 103 -76 166 rquadto +-76 62 -202 62 rquadto +} def +/P$1d { +23 0 rlineto +124 0 160 -15 rquadto +69 -29 69 -109 rquadto +0 -70 -63 -117 rquadto +-63 -46 -158 -46 rquadto +-31 0 rlineto +closepath +} def +/P$1g { +257 0 rlineto +0 -162 -121 -162 rquadto +-121 0 -135 162 rquadto +} def +/P$1j { +94 -212 rlineto +-225 -583 rlineto +114 0 rlineto +167 439 rlineto +178 -439 rlineto +99 0 rlineto +-318 795 rlineto +} def +/P$1q { +0 -105 rlineto +105 0 rlineto +0 105 rlineto +closepath +} def +/P$1a { +0 -105 rlineto +105 0 rlineto +0 105 rlineto +} def +/P$16 { +0 -795 rlineto +105 0 rlineto +0 109 rlineto +64 -122 194 -122 rquadto +105 0 165 76 rquadto +60 76 60 210 rquadto +0 145 -68 233 rquadto +-68 88 -180 88 rquadto +-103 0 -172 -79 rquadto +0 278 rlineto +closepath +} def +/P$e { +0 -750 rlineto +202 0 rlineto +0 750 rlineto +closepath +} def +/P$1t { +45 0 rlineto +100 0 155 -46 rquadto +54 -46 54 -130 rquadto +0 -71 -42 -102 rquadto +-42 -30 -143 -30 rquadto +-69 0 rlineto +} def +/P$22 { +0 -794 rlineto +112 0 rlineto +0 710 rlineto +357 0 rlineto +0 84 rlineto +} def +/P$w { +23 -119 rlineto +-97 134 -238 134 rquadto +-114 0 -164 -83 rquadto +-49 -83 -20 -229 rquadto +31 -158 125 -255 rquadto +94 -96 215 -96 rquadto +113 0 170 86 rquadto +72 -361 rlineto +116 0 rlineto +-185 925 rlineto +closepath +} def +/P$13 { +0 -710 rlineto +-281 0 rlineto +0 -84 rlineto +676 0 rlineto +0 84 rlineto +-281 0 rlineto +0 710 rlineto +} def +/P$1u { +-95 87 -183 87 rquadto +-72 0 -120 -45 rquadto +-47 -45 -47 -114 rquadto +0 -95 80 -146 rquadto +80 -51 230 -51 rquadto +25 0 rlineto +0 -70 rlineto +0 -101 -104 -101 rquadto +-83 0 -181 51 rquadto +0 -87 rlineto +106 -43 200 -43 rquadto +97 0 144 44 rquadto +46 44 46 136 rquadto +0 264 rlineto +0 90 55 90 rquadto +6 0 20 -2 rquadto +7 58 rlineto +-35 17 -79 17 rquadto +-74 0 -94 -87 rquadto +closepath +} def +/P$a { +-172 0 -279 -147 rquadto +-107 -147 -107 -383 rquadto +0 -238 108 -384 rquadto +108 -146 284 -146 rquadto +175 0 283 145 rquadto +108 145 108 382 rquadto +0 242 -108 388 rquadto +-108 145 -288 145 rquadto +closepath +} def +/P$9 { +0 -152 rlineto +-47 0 rlineto +-196 0 -196 123 rquadto +0 41 28 70 rquadto +28 28 70 28 rquadto +71 0 145 -69 rquadto +} def +/P$b { +179 0 179 -404 rquadto +0 -404 -177 -404 rquadto +-177 0 -177 404 rquadto +0 405 174 405 rquadto +} def +/P$4 { +0 -219 rlineto +219 0 rlineto +0 219 rlineto +} def +/P$d { +0 -141 rlineto +-98 158 -255 158 rquadto +-100 0 -158 -63 rquadto +-58 -63 -58 -173 rquadto +0 -530 rlineto +202 0 rlineto +0 480 rlineto +0 127 85 127 rquadto +95 0 184 -136 rquadto +0 -472 rlineto +202 0 rlineto +0 750 rlineto +} def +/P$15 { +-72 0 -176 -33 rquadto +0 -97 rlineto +103 51 180 51 rquadto +45 0 75 -24 rquadto +30 -24 30 -61 rquadto +0 -54 -84 -89 rquadto +-61 -26 rlineto +-136 -56 -136 -163 rquadto +0 -76 53 -120 rquadto +53 -43 147 -43 rquadto +48 0 120 13 rquadto +22 4 rlineto +0 88 rlineto +-88 -26 -140 -26 rquadto +-102 0 -102 74 rquadto +0 47 77 80 rquadto +51 21 rlineto +86 36 122 77 rquadto +35 40 35 101 rquadto +0 76 -60 126 rquadto +-60 49 -155 49 rquadto +} def +/P$1p { +0 -854 rlineto +105 0 rlineto +0 374 rlineto +64 -122 194 -122 rquadto +105 0 165 76 rquadto +60 76 60 210 rquadto +0 145 -68 233 rquadto +-68 88 -180 88 rquadto +-103 0 -172 -79 rquadto +-12 72 rlineto +closepath +} def +/P$1y { +0 -794 rlineto +156 0 rlineto +220 614 rlineto +226 -614 rlineto +139 0 rlineto +0 794 rlineto +-105 0 rlineto +0 -646 rlineto +-219 593 rlineto +-109 0 rlineto +-212 -595 rlineto +0 648 rlineto +} def +/P$1 { +174 0 174 -267 rquadto +0 -122 -46 -193 rquadto +-46 -71 -126 -71 rquadto +-79 0 -126 71 rquadto +-46 71 -46 194 rquadto +0 122 45 194 rquadto +45 71 125 71 rquadto +} def +/P$6 { +0 -624 rlineto +-103 0 rlineto +0 -126 rlineto +103 0 rlineto +0 -54 rlineto +0 -291 276 -291 rquadto +89 0 184 25 rquadto +0 136 rlineto +-86 -36 -154 -36 rquadto +-104 0 -104 157 rquadto +0 61 rlineto +190 0 rlineto +0 126 rlineto +-190 0 rlineto +0 624 rlineto +} def +/P$11 { +149 -231 rlineto +-118 -636 rlineto +124 0 rlineto +86 479 rlineto +290 -479 rlineto +108 0 rlineto +-521 867 rlineto +closepath +} def +/P$7 { +-72 21 -114 21 rquadto +-263 0 -263 -246 rquadto +0 -395 rlineto +-84 0 rlineto +0 -126 rlineto +84 0 rlineto +0 -126 rlineto +202 -23 rlineto +0 149 rlineto +160 0 rlineto +0 126 rlineto +-160 0 rlineto +0 368 rlineto +0 138 112 138 rquadto +25 0 62 -9 rquadto +} def +/P$m { +185 -925 rlineto +115 0 rlineto +-185 925 rlineto +} def +/P$1b { +-80 0 -125 -46 rquadto +-45 -46 -45 -128 rquadto +0 -342 rlineto +-73 0 rlineto +0 -79 rlineto +73 0 rlineto +0 -105 rlineto +105 -10 rlineto +0 116 rlineto +152 0 rlineto +0 79 rlineto +-152 0 rlineto +0 323 rlineto +0 114 98 114 rquadto +20 0 51 -6 rquadto +0 73 rlineto +-48 13 -84 13 rquadto +} def +/P$1o { +0 73 rlineto +-116 -78 -183 -214 rquadto +-67 -135 -67 -289 rquadto +0 -153 67 -288 rquadto +67 -135 183 -214 rquadto +0 73 rlineto +-78 85 -112 184 rquadto +-33 98 -33 245 rquadto +0 147 33 245 rquadto +33 98 112 184 rquadto +} def +0.78 0.78 0.78 setrgbcolor +newpath +1700 1900 moveto +14300 0 rlineto +700 2248 rlineto +29800 0 rlineto +0 7351 rlineto +-44800 0 rlineto +0 -9600 rlineto +1700 1900 lineto +closepath eofill +0.69 0.69 0.69 setrgbcolor +newpath +1750 1950 moveto +14300 0 rlineto +700 2248 rlineto +29700 0 rlineto +0 7251 rlineto +-44700 0 rlineto +0 -9500 rlineto +1750 1950 lineto +closepath eofill +0.59 0.59 0.59 setrgbcolor +newpath +1800 2000 moveto +14300 0 rlineto +700 2248 rlineto +29600 0 rlineto +0 7151 rlineto +-44600 0 rlineto +0 -9400 rlineto +1800 2000 lineto +closepath eofill +0.49 0.49 0.49 setrgbcolor +newpath +1850 2050 moveto +14300 0 rlineto +700 2248 rlineto +29500 0 rlineto +0 7051 rlineto +-44500 0 rlineto +0 -9300 rlineto +1850 2050 lineto +closepath eofill +0.39 0.39 0.39 setrgbcolor +newpath +1900 2100 moveto +14300 0 rlineto +700 2248 rlineto +29400 0 rlineto +0 6951 rlineto +-44400 0 rlineto +0 -9200 rlineto +1900 2100 lineto +closepath eofill +0.29 0.29 0.29 setrgbcolor +newpath +1950 2150 moveto +14300 0 rlineto +700 2248 rlineto +29300 0 rlineto +0 6851 rlineto +-44300 0 rlineto +0 -9100 rlineto +1950 2150 lineto +closepath eofill +0.2 0.2 0.2 setrgbcolor +newpath +2000 2200 moveto +14300 0 rlineto +700 2248 rlineto +29200 0 rlineto +0 6751 rlineto +-44200 0 rlineto +0 -9000 rlineto +2000 2200 lineto +closepath eofill +1 1 1 setrgbcolor +newpath +1400 1600 moveto +14300 0 rlineto +700 2248 rlineto +29800 0 rlineto +0 7351 rlineto +-44800 0 rlineto +0 -9600 rlineto +1400 1600 lineto +closepath eofill +100 setlinewidth +0 0 0 setrgbcolor +newpath +1400 1600 moveto +14300 0 rlineto +700 2248 rlineto +29800 0 rlineto +0 7351 rlineto +-44800 0 rlineto +0 -9600 rlineto +1400 1600 lineto +closepath stroke +150 setlinewidth +0 0 0 setrgbcolor +newpath +1400 3848 moveto +15000 0 rlineto +stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +2241 3170 moveto +P$0 +2245 3044 moveto +P$1 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +2820 3153 moveto +P$2 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +3740 3153 moveto +P$3 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5034 3153 moveto +P$4 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5423 3129 moveto +P$5 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +6550 3170 moveto +P$0 +6553 3044 moveto +P$1 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7150 3153 moveto +P$6 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8096 3149 moveto +P$7 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8644 3072 moveto +P$8 +8644 2964 moveto +P$9 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9037 3153 moveto +P$4 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9813 3072 moveto +P$8 +9813 2964 moveto +P$9 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10599 3178 moveto +P$a +10601 3052 moveto +P$b +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +11239 3149 moveto +P$c +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +12053 3153 moveto +P$4 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +12926 3153 moveto +P$d +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +13768 3149 moveto +P$7 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +13948 3153 moveto +P$e +13948 2276 moveto +P$f +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +14404 3153 moveto +P$g +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +14839 3129 moveto +P$h +fill +0.78 0.78 0.78 setrgbcolor +43200 6095 2600 4700 100 roundrect +closepath eofill +0.71 0.71 0.71 setrgbcolor +43100 5995 2650 4750 100 roundrect +closepath eofill +0.64 0.64 0.64 setrgbcolor +43000 5895 2700 4800 100 roundrect +closepath eofill +0.56 0.56 0.56 setrgbcolor +42900 5795 2750 4850 100 roundrect +closepath eofill +0.49 0.49 0.49 setrgbcolor +42800 5695 2800 4900 100 roundrect +closepath eofill +0.42 0.42 0.42 setrgbcolor +42700 5595 2850 4950 100 roundrect +closepath eofill +0.34 0.34 0.34 setrgbcolor +42600 5495 2900 5000 100 roundrect +closepath eofill +0.27 0.27 0.27 setrgbcolor +42500 5395 2950 5050 100 roundrect +closepath eofill +0.2 0.2 0.2 setrgbcolor +42400 5295 3000 5100 100 roundrect +closepath eofill +1 1 0.81 setrgbcolor +43200 6095 2200 4300 simplerect +closepath eofill +150 setlinewidth +0.66 0 0.21 setrgbcolor +43200 6095 2200 4300 simplerect +closepath stroke +0.66 0.86 0.87 setrgbcolor +newpath +18775 5900 1100 0 360 arc +closepath eofill +100 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +18775 5900 1100 0 360 arc +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +18786 5459 moveto +P$i +18636 5235 moveto +P$j +fill +0.52 0.75 0.52 setrgbcolor +newpath +21325 5850 300 0 360 arc +closepath eofill +100 setlinewidth +0.01 0.5 0.28 setrgbcolor +newpath +21325 5850 300 0 360 arc +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +22036 6353 moveto +P$k +22246 5915 moveto +P$l +22703 6353 moveto +P$m +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +23394 6272 moveto +P$n +23390 6209 moveto +P$o +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +23713 6353 moveto +P$p +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +24646 6368 moveto +P$q +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +24903 6353 moveto +P$r +25043 6261 moveto +P$s +25122 5867 moveto +P$t +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +26067 6333 moveto +P$u +25747 5966 moveto +P$v +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +26674 6353 moveto +P$w +26770 5868 moveto +P$x +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +27183 5486 moveto +P$y +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +28040 6368 moveto +P$q +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +28301 6353 moveto +P$z +28451 5601 moveto +P$10 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +28648 6353 moveto +P$m +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +28994 6353 moveto +P$z +29145 5601 moveto +P$10 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +29529 6368 moveto +P$q +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +29781 6584 moveto +P$11 +fill +150 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +2300 7500 moveto +43000 0 rlineto +stroke +150 setlinewidth +0.66 0 0.21 setrgbcolor +newpath +2300 8300 moveto +43000 0 rlineto +stroke +0.52 0.75 0.52 setrgbcolor +newpath +3300 9497 300 0 360 arc +closepath eofill +100 setlinewidth +0.01 0.5 0.28 setrgbcolor +newpath +3300 9497 300 0 360 arc +closepath stroke +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +4955 9763 moveto +P$12 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5366 9763 moveto +P$13 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +5889 9763 moveto +P$14 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7252 9776 moveto +P$15 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +7658 9975 moveto +P$16 +7764 9624 moveto +P$17 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8351 9763 moveto +P$18 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +8669 9763 moveto +P$19 +8669 9074 moveto +P$1a +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9162 9776 moveto +P$1b +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +9395 9763 moveto +P$1c +9507 9679 moveto +P$1d +9507 9317 moveto +P$1e +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +10458 9744 moveto +P$1f +10097 9408 moveto +P$1g +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +11018 9763 moveto +P$1h +11018 9319 moveto +P$1i +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +11333 9763 moveto +P$1c +11445 9679 moveto +P$1d +11445 9317 moveto +P$1e +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +12003 9975 moveto +P$1j +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +12881 9783 moveto +P$1k +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +13533 9776 moveto +P$1l +13534 9697 moveto +P$1m +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +13980 9763 moveto +P$18 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +14527 9776 moveto +P$1l +14528 9697 moveto +P$1m +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +14974 9763 moveto +P$1n +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +15636 9849 moveto +P$1o +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +15782 9769 moveto +P$1p +15888 9624 moveto +P$17 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +16902 9744 moveto +P$1f +16541 9408 moveto +P$1g +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +17461 9763 moveto +P$1h +17461 9319 moveto +P$1i +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +17794 9763 moveto +P$1q +17794 9286 moveto +P$1r +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +18472 9763 moveto +P$1s +18584 9362 moveto +P$1t +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +19083 9763 moveto +P$18 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +19702 9689 moveto +P$1u +19687 9631 moveto +P$1v +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +20009 9763 moveto +P$1w +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +20867 9776 moveto +P$1b +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +21100 9763 moveto +P$1c +21211 9679 moveto +P$1d +21211 9317 moveto +P$1e +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +22163 9744 moveto +P$1f +21802 9408 moveto +P$1g +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +22723 9763 moveto +P$1h +22723 9319 moveto +P$1i +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +23690 9763 moveto +P$12 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +24101 9763 moveto +P$13 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +24624 9763 moveto +P$14 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +25419 9849 moveto +P$1x +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +26206 9763 moveto +P$1q +26206 9286 moveto +P$1r +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +26884 9763 moveto +P$1y +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +28135 9689 moveto +P$1u +28120 9631 moveto +P$1v +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +28442 9975 moveto +P$16 +28548 9624 moveto +P$17 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +29784 9763 moveto +P$12 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +30005 9763 moveto +P$1s +30117 9362 moveto +P$1t +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +30617 9763 moveto +P$18 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +31235 9689 moveto +P$1u +31220 9631 moveto +P$1v +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +31542 9763 moveto +P$1w +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +32400 9776 moveto +P$1b +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +32974 9783 moveto +P$1k +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +33626 9776 moveto +P$1l +33627 9697 moveto +P$1m +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +34073 9763 moveto +P$18 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +34619 9776 moveto +P$1l +34621 9697 moveto +P$1m +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +35067 9763 moveto +P$1n +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +35518 9935 moveto +P$1z +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +36365 9783 moveto +P$20 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +36805 9763 moveto +P$19 +36805 9074 moveto +P$1a +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +37123 9763 moveto +P$21 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +38150 9975 moveto +P$16 +38256 9624 moveto +P$17 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +38843 9763 moveto +P$18 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +39588 9744 moveto +P$1f +39227 9408 moveto +P$1g +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +39770 9763 moveto +P$22 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +40360 9763 moveto +P$19 +40360 9074 moveto +P$1a +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +40833 9776 moveto +P$15 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +41414 9776 moveto +P$1b +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +42299 9763 moveto +P$12 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +42710 9763 moveto +P$13 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +43233 9763 moveto +P$14 +fill +0 setlinewidth +[] 0 setdash +0 0 0 setrgbcolor +newpath +44108 9763 moveto +P$23 +fill +110 setlinewidth +0 0 0 setrgbcolor +newpath +4200 9913 moveto +40425 0 rlineto +stroke +grestore +showpage +%plantuml done +%%EOF diff --git a/05/assets/class-spec-3.plantuml b/05/assets/class-spec-3.plantuml new file mode 100644 index 0000000000000000000000000000000000000000..021d3017c93f2a48987ab973de6a5a625ddd7867 --- /dev/null +++ b/05/assets/class-spec-3.plantuml @@ -0,0 +1,7 @@ +@startuml +package ohm.softa.a05.utils { + +abstract class PlantBedUtility{ + +{static} <???> repot(from: PlantBed<???>, PlantColor c, to: PlantBed<???>) + } +} +@enduml \ No newline at end of file diff --git a/05/assets/class-spec-3.svg b/05/assets/class-spec-3.svg new file mode 100644 index 0000000000000000000000000000000000000000..9d76eb5abb1a0f9ea7b71f4dd0637a876efc35f3 --- /dev/null +++ b/05/assets/class-spec-3.svg @@ -0,0 +1 @@ +<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="329px" preserveAspectRatio="none" style="width:667px;height:329px;background:#FFFFFF;" version="1.1" viewBox="0 0 667 329" width="667px" zoomAndPan="magnify"><defs/><g><!--cluster ohm--><g id="cluster_ohm"><path d="M8.5,6 L41.5,6 A3.75,3.75 0 0 1 44,8.5 L51,28.4883 L657.5,28.4883 A2.5,2.5 0 0 1 660,30.9883 L660,319.5 A2.5,2.5 0 0 1 657.5,322 L8.5,322 A2.5,2.5 0 0 1 6,319.5 L6,8.5 A2.5,2.5 0 0 1 8.5,6 " fill="none" style="stroke:#000000;stroke-width:1.5;"/><line style="stroke:#000000;stroke-width:1.5;" x1="6" x2="51" y1="28.4883" y2="28.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="32" x="10" y="21.5352">ohm</text></g><!--cluster softa--><g id="cluster_softa"><path d="M32.5,49 L70.5,49 A3.75,3.75 0 0 1 73,51.5 L80,71.4883 L633.5,71.4883 A2.5,2.5 0 0 1 636,73.9883 L636,295.5 A2.5,2.5 0 0 1 633.5,298 L32.5,298 A2.5,2.5 0 0 1 30,295.5 L30,51.5 A2.5,2.5 0 0 1 32.5,49 " fill="none" style="stroke:#000000;stroke-width:1.5;"/><line style="stroke:#000000;stroke-width:1.5;" x1="30" x2="80" y1="71.4883" y2="71.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="37" x="34" y="64.5352">softa</text></g><!--cluster a05--><g id="cluster_a05"><path d="M56.5,92 L83.5,92 A3.75,3.75 0 0 1 86,94.5 L93,114.4883 L609.5,114.4883 A2.5,2.5 0 0 1 612,116.9883 L612,271.5 A2.5,2.5 0 0 1 609.5,274 L56.5,274 A2.5,2.5 0 0 1 54,271.5 L54,94.5 A2.5,2.5 0 0 1 56.5,92 " fill="none" style="stroke:#000000;stroke-width:1.5;"/><line style="stroke:#000000;stroke-width:1.5;" x1="54" x2="93" y1="114.4883" y2="114.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="26" x="58" y="107.5352">a05</text></g><!--cluster utils--><g id="cluster_utils"><path d="M80.5,135 L114.5,135 A3.75,3.75 0 0 1 117,137.5 L124,157.4883 L585.5,157.4883 A2.5,2.5 0 0 1 588,159.9883 L588,247.5 A2.5,2.5 0 0 1 585.5,250 L80.5,250 A2.5,2.5 0 0 1 78,247.5 L78,137.5 A2.5,2.5 0 0 1 80.5,135 " fill="none" style="stroke:#000000;stroke-width:1.5;"/><line style="stroke:#000000;stroke-width:1.5;" x1="78" x2="124" y1="157.4883" y2="157.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="33" x="82" y="150.5352">utils</text></g><!--class PlantBedUtility--><g id="elem_PlantBedUtility"><rect codeLine="2" fill="#F1F1F1" height="64.4883" id="PlantBedUtility" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="477" x="94.5" y="170"/><ellipse cx="274.25" cy="186" fill="#A9DCDF" rx="11" ry="11" style="stroke:#181818;stroke-width:1.0;"/><path d="M274.1133,181.3481 L272.9595,186.4199 L275.2754,186.4199 Z M272.6191,179.1069 L275.6157,179.1069 L278.9609,191.5 L276.5122,191.5 L275.7485,188.437 L272.4697,188.437 L271.7227,191.5 L269.2739,191.5 Z " fill="#000000"/><ellipse cx="299.75" cy="185.5" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="98" x="305.75" y="191.291">PlantBedUtility</text><line style="stroke:#181818;stroke-width:0.5;" x1="95.5" x2="570.5" y1="202" y2="202"/><line style="stroke:#181818;stroke-width:0.5;" x1="95.5" x2="570.5" y1="210" y2="210"/><ellipse cx="105.5" cy="223.7441" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" text-decoration="underline" textLength="451" x="114.5" y="227.5352"><???> repot(from: PlantBed<???>, PlantColor c, to: PlantBed<???>)</text></g><!--SRC=[AqXCpavCJrN8pyZLAyvFAqdKIpGmrIijoSmfLgZcKW02xSIaufAYnEGIXUISnE9YXO2SnBmIfzIKKA2Qp99AY2AmmkhYaiIIpEHQ1HjxUtixXQBKWlmIZRIY_5mhk2QmZ0w4wvoVar-aaAoZK9AFfa0JR6OjLoq0]--></g></svg> \ No newline at end of file diff --git a/05/build.gradle b/05/build.gradle new file mode 100644 index 0000000000000000000000000000000000000000..1a95be99ea93af62bbef2a16425c2936b18db02a --- /dev/null +++ b/05/build.gradle @@ -0,0 +1,36 @@ +plugins { + id 'java' + id 'idea' +} + +group 'ohm.softa' +version '1.0-SNAPSHOT' + +sourceCompatibility = 11 + +repositories { + mavenCentral() +} + +dependencies { + implementation("org.apache.commons:commons-lang3:$commons_lang3_version") + implementation("org.apache.logging.log4j:log4j-api:${log4j2Version}") + implementation("org.apache.logging.log4j:log4j-core:${log4j2Version}") + + testImplementation("org.junit.jupiter:junit-jupiter-api:${junitVersion}") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${junitVersion}") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-params:${junitVersion}") +} + + +test { + useJUnitPlatform() + testLogging { + events "passed", "skipped", "failed" + } +} + +javadoc { + source = sourceSets.main.allJava + classpath = configurations.implementation +} diff --git a/05/gradle.properties b/05/gradle.properties new file mode 100644 index 0000000000000000000000000000000000000000..c73810285a5952b812c24247d9afc7d8b316d4fd --- /dev/null +++ b/05/gradle.properties @@ -0,0 +1,3 @@ +junitVersion=5.7.1 +log4j2Version=2.14.1 +commons_lang3_version=3.12.0 \ No newline at end of file diff --git a/05/gradle/wrapper/gradle-wrapper.jar b/05/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f Binary files /dev/null and b/05/gradle/wrapper/gradle-wrapper.jar differ diff --git a/05/gradle/wrapper/gradle-wrapper.properties b/05/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000000000000000000000000000000000000..442d9132ea32808ad980df4bd233b359f76341a7 --- /dev/null +++ b/05/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/05/gradlew b/05/gradlew new file mode 100755 index 0000000000000000000000000000000000000000..4f906e0c811fc9e230eb44819f509cd0627f2600 --- /dev/null +++ b/05/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/05/gradlew.bat b/05/gradlew.bat new file mode 100644 index 0000000000000000000000000000000000000000..ac1b06f93825db68fb0c0b5150917f340eaa5d02 --- /dev/null +++ b/05/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/05/settings.gradle b/05/settings.gradle new file mode 100644 index 0000000000000000000000000000000000000000..8403dc3097c364b080e721ab2372fae65df31937 --- /dev/null +++ b/05/settings.gradle @@ -0,0 +1,18 @@ +/* + * This settings file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * In a single project build this file can be empty or even removed. + * + * Detailed information about configuring a multi-project build in Gradle can be found + * in the user guide at https://docs.gradle.org/4.2.1/userguide/multi_project_builds.html + */ + +/* +// To declare projects as part of a multi-project build use the 'include' method +include 'shared' +include 'api' +include 'services:webservice' +*/ + +rootProject.name = '05-generic-bounds' diff --git a/05/src/main/java/ohm/softa/a05/collections/SimpleFilter.java b/05/src/main/java/ohm/softa/a05/collections/SimpleFilter.java new file mode 100644 index 0000000000000000000000000000000000000000..fb68e7e733530a2c3d40f946f96f90da0e1d92cb --- /dev/null +++ b/05/src/main/java/ohm/softa/a05/collections/SimpleFilter.java @@ -0,0 +1,18 @@ +package ohm.softa.a05.collections; + +/** + * @author Peter Kurfer + * Created on 10/6/17. + */ +@FunctionalInterface +public interface SimpleFilter<T> { + + /** + * Determines if a item matches a condition + * + * @param item Object to evaluate + * @return true if the referenced object should be included. + */ + boolean include(T item); +} + diff --git a/05/src/main/java/ohm/softa/a05/collections/SimpleList.java b/05/src/main/java/ohm/softa/a05/collections/SimpleList.java new file mode 100644 index 0000000000000000000000000000000000000000..6787953b00600a351594bc328ccbef17ad3120d1 --- /dev/null +++ b/05/src/main/java/ohm/softa/a05/collections/SimpleList.java @@ -0,0 +1,81 @@ +package ohm.softa.a05.collections; + +import java.util.function.Function; + +/** + * A simple list containing just a few basic methods + * Inherits the Iterable interface to ease the handling (e.g. extended for-loop) + * + * @param <T> type of the items which will be saved in the list + */ +public interface SimpleList<T> extends Iterable<T> { + + /** + * Add a given object to the back of the list. + * + * @param o item to add + */ + void add(T o); + + /** + * @param clazz Class instance to solve the instantiation problem + */ + @SuppressWarnings("unchecked") + default void addDefault(Class<T> clazz) { + try { + /* better solution would be to use Google Guava to get a type token + and use this token to create a new instance + because we didn't include a reference to Guava this is the easiest way to create new instance of T */ + this.add(clazz.newInstance()); + } catch (InstantiationException | IllegalAccessException e) { + e.printStackTrace(); + } + } + + /** + * @return current size of the list + */ + int size(); + + /** + * Generate a new list using the given filter instance. + * + * @param filter SimpleFilter instance to determine which elements should be included + * @return a new, filtered list + */ + @SuppressWarnings("unchecked") + default SimpleList<T> filter(SimpleFilter<T> filter) { + SimpleList<T> result; + try { + result = (SimpleList<T>) getClass().newInstance(); + } catch (InstantiationException | IllegalAccessException e) { + result = new SimpleListImpl<>(); + } + + for (T o : this) { + if (filter.include(o)) { + result.add(o); + } + } + return result; + } + + /** + * @param transform + * @param <R> + * @return + */ + @SuppressWarnings("unchecked") + default <R> SimpleList<R> map(Function<T, R> transform) { + SimpleList<R> result; + try { + result = (SimpleList<R>) getClass().newInstance(); + } catch (InstantiationException | IllegalAccessException e) { + result = new SimpleListImpl<>(); + } + for (T t : this) { + result.add(transform.apply(t)); + } + return result; + } +} diff --git a/05/src/main/java/ohm/softa/a05/collections/SimpleListImpl.java b/05/src/main/java/ohm/softa/a05/collections/SimpleListImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..cf1316d7aae3c1c37a2a14de67297c3a09e56da9 --- /dev/null +++ b/05/src/main/java/ohm/softa/a05/collections/SimpleListImpl.java @@ -0,0 +1,124 @@ +package ohm.softa.a05.collections; + +import java.util.Iterator; + +/** + * Default implementation of the SimpleList interface + * + * @author Peter Kurfer + * Created on 10/6/17. + */ +public class SimpleListImpl<T> implements SimpleList<T> { + + private ListElement<T> head; + private int size; + + /** + * Default constructor + */ + public SimpleListImpl() { + head = null; + } + + /** + * Add an object to the end of the list + * + * @param item item to add + */ + @Override + public void add(T item) { + /* special case empty list */ + if (head == null) { + head = new ListElement<>(item); + } else { + /* any other list length */ + ListElement<T> current = head; + while (current.getNext() != null) { + current = current.getNext(); + } + current.setNext(new ListElement<>(item)); + } + size++; + } + + /** + * @return size of the list + */ + @Override + public int size() { + return size; + } + + /** + * Create a new iterator + */ + @Override + public Iterator<T> iterator() { + return new SimpleIterator(); + } + + /** + * Helper class which implements the Iterator<TE> interface + * Has to be non static because otherwise it could not access the head of the list + */ + private class SimpleIterator implements Iterator<T> { + + private ListElement<T> current = head; + + /** + * @inheritDoc + */ + @Override + public boolean hasNext() { + return current != null; + } + + /** + * @inheritDoc + */ + @Override + public T next() { + T tmp = current.getItem(); + current = current.getNext(); + return tmp; + } + } + + /** + * Helper class for the linked list + * can be static because the ListElement does not need to access the SimpleList instance + */ + private static class ListElement<T> { + private T item; + private ListElement<T> next; + + ListElement(T item) { + this.item = item; + this.next = null; + } + + /** + * @return get object in the element + */ + public T getItem() { + return item; + } + + /** + * @return successor of the ListElement - may be NULL + */ + public ListElement<T> getNext() { + return next; + } + + /** + * Sets the successor of the ListElement + * + * @param next ListElement + */ + public void setNext(ListElement<T> next) { + this.next = next; + } + } + +} diff --git a/05/src/main/java/ohm/softa/a05/model/.gitkeep b/05/src/main/java/ohm/softa/a05/model/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/05/src/main/resources/log4j2.xml b/05/src/main/resources/log4j2.xml new file mode 100644 index 0000000000000000000000000000000000000000..99d963ac06f0a6b14216ce4407d46f9eb6859a62 --- /dev/null +++ b/05/src/main/resources/log4j2.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Configuration status="WARN"> + <Appenders> + <Console name="Console" target="SYSTEM_OUT"> + <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> + </Console> + </Appenders> + <Loggers> + <Root level="all"> + <AppenderRef ref="Console"/> + </Root> + </Loggers> +</Configuration> \ No newline at end of file diff --git a/05/src/test/java/ohm/softa/a05/tests/collections/SimpleListTests.java b/05/src/test/java/ohm/softa/a05/tests/collections/SimpleListTests.java new file mode 100644 index 0000000000000000000000000000000000000000..a25c5b369864a1a776e17ef470b8159cad007ed0 --- /dev/null +++ b/05/src/test/java/ohm/softa/a05/tests/collections/SimpleListTests.java @@ -0,0 +1,113 @@ +package ohm.softa.a05.tests.collections; + +import ohm.softa.a05.collections.SimpleFilter; +import ohm.softa.a05.collections.SimpleList; +import ohm.softa.a05.collections.SimpleListImpl; +import ohm.softa.a05.tests.models.Person; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.Iterator; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * @author Peter Kurfer + * Created on 10/6/17. + */ +class SimpleListTests { + + private final Logger logger = LogManager.getLogger(); + private SimpleList<Integer> testList; + + @BeforeEach + void setup(){ + testList = new SimpleListImpl<>(); + + testList.add(1); + testList.add(2); + testList.add(3); + testList.add(4); + testList.add(5); + } + + @Test + void testAddElements(){ + logger.info("Testing if adding and iterating elements is implemented correctly"); + int counter = 0; + for(Object o : testList){ + counter++; + } + assertEquals(5, counter); + } + + @Test + void testSize(){ + logger.info("Testing if size() method is implemented correctly"); + assertEquals(5, testList.size()); + } + + @Test + void testFilterAnonymousClass(){ + logger.info("Testing the filter possibilities by filtering for all elements greater 2"); + SimpleList<Integer> result = testList.filter(new SimpleFilter<Integer>() { + @Override + public boolean include(Integer item) { + return item > 2; + } + }); + + for(Integer i : result){ + assertTrue(i > 2); + } + } + + @Test + void testFilterLambda(){ + logger.info("Testing the filter possibilities by filtering for all elements which are dividable by 2"); + SimpleList<Integer> result = testList.filter(o -> o % 2 == 0); + for(Integer i : result){ + assertTrue(i % 2 == 0); + } + } + + @Test + void testAddEmpty() throws Exception { + logger.info("Testing to add a new empty list element"); + SimpleList<Person> l = new SimpleListImpl<>(); + l.addDefault(Person.class); + assertEquals(1, l.size()); + } + + @Test + void testSimpleListMap(){ + logger.info("Testing default map method"); + SimpleList<Integer> mapped = testList.map(i -> i + 1); + assertEquals(5, mapped.size()); + for(Integer i : mapped) { + assertTrue(i > 1); + assertTrue(i < 7); + } + } + + @Test + void testMap() { + logger.info("Testing default map method by mapping every value to its square"); + SimpleList<Double> result = testList.map(i -> Math.pow(i, 2)); + Iterator<Integer> origIt = testList.iterator(); + Iterator<Double> mapIt = result.iterator(); + while (origIt.hasNext() && mapIt.hasNext()) { + assertEquals(Math.pow(origIt.next(), 2), mapIt.next(), 0.1); + } + } + + @Test + void testSimpleListMapChangedType() { + logger.info("Testing default map method by mapping every integer to a char value"); + SimpleList<Character> mapped = testList.map(i -> ((char) (i + 64))); + assertEquals(5, mapped.size()); + } +} diff --git a/05/src/test/java/ohm/softa/a05/tests/models/Person.java b/05/src/test/java/ohm/softa/a05/tests/models/Person.java new file mode 100644 index 0000000000000000000000000000000000000000..6a893533407eed45c509ce0b06d4a3ab578b8f9b --- /dev/null +++ b/05/src/test/java/ohm/softa/a05/tests/models/Person.java @@ -0,0 +1,71 @@ +package ohm.softa.a05.tests.models; + +import org.apache.commons.lang3.builder.EqualsBuilder; +import org.apache.commons.lang3.builder.HashCodeBuilder; +import org.apache.commons.lang3.builder.ToStringBuilder; + +/** + * Demo model with an empty constructor to be able to test the addEmpty() method + * @author Peter Kurfer + * Created on 10/19/17. + */ +public class Person { + + private String firstName; + private String lastName; + + public Person() { + } + + public Person(String firstName, String lastName) { + this.firstName = firstName; + this.lastName = lastName; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + + if (!(o instanceof Person)) return false; + + Person person = (Person) o; + + return new EqualsBuilder() + .append(getFirstName(), person.getFirstName()) + .append(getLastName(), person.getLastName()) + .isEquals(); + } + + @Override + public int hashCode() { + return new HashCodeBuilder(17, 37) + .append(getFirstName()) + .append(getLastName()) + .toHashCode(); + } + + @Override + public String toString() { + return new ToStringBuilder(this) + .append("firstName", firstName) + .append("lastName", lastName) + .toString(); + } +} +