├── .gitignore ├── Vibes-Regular.otf ├── Vibes-Regular.ttf ├── art ├── vibes-poster.png ├── alphabets-v1.0.png ├── vibes-poster-2.png ├── vibes-poster-3.png ├── vibes-poster-4.png ├── vibes-poster-6.png ├── البلبل-الفتان.key ├── en-samples-v1.0.png ├── vibes-post.afdesign ├── vibes-poster.afdesign ├── vibes-poster-white.png ├── البلبل-الفتان-v1.0.png ├── vernacular-poetry-v1.0.png ├── vibes-poster-white.afdesign ├── vibes-poster-white-portrait.png ├── vibes-poster-white-square-2.png ├── vibes-poster-white-square.png └── البلبل-الفتان │ ├── البلبل-الفتان.001.png │ ├── البلبل-الفتان.002.png │ ├── البلبل-الفتان.003.png │ └── البلبل-الفتان.004.png ├── samples ├── samples-test.pdf ├── snippet-test.pdf ├── samples-test.pages └── samples-test-4.ps ├── Vibes-Regular-no-hint-fixed.ttf ├── METADATA.pb ├── README.md ├── OFL.txt └── check-gf.md /.gitignore: -------------------------------------------------------------------------------- 1 | /Screenshots 2 | /venv 3 | -------------------------------------------------------------------------------- /Vibes-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/Vibes-Regular.otf -------------------------------------------------------------------------------- /Vibes-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/Vibes-Regular.ttf -------------------------------------------------------------------------------- /art/vibes-poster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/art/vibes-poster.png -------------------------------------------------------------------------------- /art/alphabets-v1.0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/art/alphabets-v1.0.png -------------------------------------------------------------------------------- /art/vibes-poster-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/art/vibes-poster-2.png -------------------------------------------------------------------------------- /art/vibes-poster-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/art/vibes-poster-3.png -------------------------------------------------------------------------------- /art/vibes-poster-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/art/vibes-poster-4.png -------------------------------------------------------------------------------- /art/vibes-poster-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/art/vibes-poster-6.png -------------------------------------------------------------------------------- /art/البلبل-الفتان.key: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/art/البلبل-الفتان.key -------------------------------------------------------------------------------- /art/en-samples-v1.0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/art/en-samples-v1.0.png -------------------------------------------------------------------------------- /art/vibes-post.afdesign: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/art/vibes-post.afdesign -------------------------------------------------------------------------------- /art/vibes-poster.afdesign: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/art/vibes-poster.afdesign -------------------------------------------------------------------------------- /samples/samples-test.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/samples/samples-test.pdf -------------------------------------------------------------------------------- /samples/snippet-test.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/samples/snippet-test.pdf -------------------------------------------------------------------------------- /art/vibes-poster-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/art/vibes-poster-white.png -------------------------------------------------------------------------------- /art/البلبل-الفتان-v1.0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/art/البلبل-الفتان-v1.0.png -------------------------------------------------------------------------------- /samples/samples-test.pages: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/samples/samples-test.pages -------------------------------------------------------------------------------- /art/vernacular-poetry-v1.0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/art/vernacular-poetry-v1.0.png -------------------------------------------------------------------------------- /Vibes-Regular-no-hint-fixed.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/Vibes-Regular-no-hint-fixed.ttf -------------------------------------------------------------------------------- /art/vibes-poster-white.afdesign: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/art/vibes-poster-white.afdesign -------------------------------------------------------------------------------- /art/vibes-poster-white-portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/art/vibes-poster-white-portrait.png -------------------------------------------------------------------------------- /art/vibes-poster-white-square-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/art/vibes-poster-white-square-2.png -------------------------------------------------------------------------------- /art/vibes-poster-white-square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/art/vibes-poster-white-square.png -------------------------------------------------------------------------------- /art/البلبل-الفتان/البلبل-الفتان.001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/art/البلبل-الفتان/البلبل-الفتان.001.png -------------------------------------------------------------------------------- /art/البلبل-الفتان/البلبل-الفتان.002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/art/البلبل-الفتان/البلبل-الفتان.002.png -------------------------------------------------------------------------------- /art/البلبل-الفتان/البلبل-الفتان.003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/art/البلبل-الفتان/البلبل-الفتان.003.png -------------------------------------------------------------------------------- /art/البلبل-الفتان/البلبل-الفتان.004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bluemix/vibes-typeface/HEAD/art/البلبل-الفتان/البلبل-الفتان.004.png -------------------------------------------------------------------------------- /METADATA.pb: -------------------------------------------------------------------------------- 1 | name: "Vibes" 2 | designer: "AbdElmomen Kadhim (blueMix)" 3 | license: "OFL" 4 | category: "SANS_SERIF" 5 | date_added: "2019-04-23" 6 | fonts { 7 | name: "Vibes" 8 | style: "normal" 9 | weight: 400 10 | filename: "Vibes-Regular.ttf" 11 | post_script_name: "Vibes-Regular" 12 | full_name: "Vibes Regular" 13 | copyright: "Copyright 2019 The Vibes Project Authors (https://github.com/bluemix/vibes-typeface)" 14 | } 15 | subsets: "arabic" 16 | subsets: "latin" 17 | subsets: "latin-ext" 18 | subsets: "menu" 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | Vibes Typeface 3 |
4 | 5 | 6 | ## Vibes Typeface 7 | 8 | Vibes is a typeface designed for Arabic, as well as English languages. It was designed to be a mixture that radiates energy, flexibility, and cuteness. 9 | It is specially designed to be used for title texts. Acknowledgements goes to Nadine Chahine, where this work wouldn't incepted without her help. 10 | 11 | 12 | ### [Download](https://raw.githubusercontent.com/bluemix/vibes-typeface/master/Vibes-Regular.ttf) 13 | 14 | 15 |

16 | ## Samples 17 | 18 | This is my first-ever typeface designed from [Arabic Typogoraphy Course](http://arabictype.com/courses/course-spring-2019/). 19 | It was designed to be used for titles. 20 | 21 | Vibes Typeface Alphabets 22 | Vibes Typeface Arabic Sample 23 | Vibes Typeface Vernacular Poetry Sample 24 | Vibes Typeface English Samples 25 | 26 | -------------------------------------------------------------------------------- /OFL.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2019, AbdElmomen Kadhim (blueMix) () 2 | 3 | This Font Software is licensed under the SIL Open Font License, Version 1.1. 4 | This license is copied below, and is also available with a FAQ at: 5 | http://scripts.sil.org/OFL 6 | 7 | --------------------------------------------------------------------------- 8 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 9 | --------------------------------------------------------------------------- 10 | 11 | PREAMBLE 12 | 13 | The goals of the Open Font License (OFL) are to stimulate worldwide development 14 | of collaborative font projects, to support the font creation efforts of academic 15 | and linguistic communities, and to provide a free and open framework in which 16 | fonts may be shared and improved in partnership with others. 17 | 18 | The OFL allows the licensed fonts to be used, studied, modified and redistributed 19 | freely as long as they are not sold by themselves. The fonts, including any 20 | derivative works, can be bundled, embedded, redistributed and/or sold with any 21 | software provided that any reserved names are not used by derivative works. The 22 | fonts and derivatives, however, cannot be released under any other type of license. 23 | The requirement for fonts to remain under this license does not apply to any 24 | document created using the fonts or their derivatives. 25 | 26 | DEFINITIONS 27 | 28 | "Font Software" refers to the set of files released by the Copyright Holder(s) under 29 | this license and clearly marked as such. This may include source files, build 30 | scripts and documentation. 31 | 32 | "Reserved Font Name" refers to any names specified as such after the copyright 33 | statement(s). 34 | 35 | "Original Version" refers to the collection of Font Software components as 36 | distributed by the Copyright Holder(s). 37 | 38 | "Modified Version" refers to any derivative made by adding to, deleting, or 39 | substituting -- in part or in whole -- any of the components of the Original Version, 40 | by changing formats or by porting the Font Software to a new environment. 41 | 42 | "Author" refers to any designer, engineer, programmer, technical writer or other 43 | person who contributed to the Font Software. 44 | 45 | PERMISSION & CONDITIONS 46 | 47 | Permission is hereby granted, free of charge, to any person obtaining a copy of the 48 | Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell 49 | modified and unmodified copies of the Font Software, subject to the following 50 | conditions: 51 | 52 | 1) Neither the Font Software nor any of its individual components, in Original or 53 | Modified Versions, may be sold by itself. 54 | 55 | 2) Original or Modified Versions of the Font Software may be bundled, redistributed 56 | and/or sold with any software, provided that each copy contains the above copyright 57 | notice and this license. These can be included either as stand-alone text files, 58 | human-readable headers or in the appropriate machine-readable metadata fields within 59 | text or binary files as long as those fields can be easily viewed by the user. 60 | 61 | 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless 62 | explicit written permission is granted by the corresponding Copyright Holder. This 63 | restriction only applies to the primary font name as presented to the users. 64 | 65 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall 66 | not be used to promote, endorse or advertise any Modified Version, except to 67 | acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with 68 | their explicit written permission. 69 | 70 | 5) The Font Software, modified or unmodified, in part or in whole, must be distributed 71 | entirely under this license, and must not be distributed under any other license. The 72 | requirement for fonts to remain under this license does not apply to any document 73 | created using the Font Software. 74 | 75 | TERMINATION 76 | 77 | This license becomes null and void if any of the above conditions are not met. 78 | 79 | DISCLAIMER 80 | 81 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 82 | INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 83 | PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER 84 | RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 85 | LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, 86 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR 87 | INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. 88 | -------------------------------------------------------------------------------- /check-gf.md: -------------------------------------------------------------------------------- 1 | ## Fontbakery report 2 | 3 | Fontbakery version: 0.7.10 4 | 5 |
6 | [27] Family checks 7 |
8 | INFO: Do we have the latest version of FontBakery installed? 9 | 10 | * [com.google.fonts/check/fontbakery_version](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/fontbakery_version) 11 | * ℹ **INFO** fontbakery (0.7.11) - Well designed Font QA tool, written in Python 3 12 | INSTALLED: 0.7.10 13 | LATEST: 0.7.11 14 | 15 | * 🍞 **PASS** Font Bakery is up-to-date 16 | 17 |
18 |
19 | 🍞 PASS: Check METADATA.pb parse correctly. 20 | 21 | * [com.google.fonts/check/metadata/parses](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/parses) 22 | * 🍞 **PASS** METADATA.pb parsed successfuly. 23 | 24 |
25 |
26 | 🍞 PASS: Font designer field in METADATA.pb must not be 'unknown'. 27 | 28 | * [com.google.fonts/check/metadata/unknown_designer](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/unknown_designer) 29 | * 🍞 **PASS** Font designer field is not 'unknown'. 30 | 31 |
32 |
33 | 🍞 PASS: Multiple values in font designer field in METADATA.pb must be separated by commas. 34 | 35 | * [com.google.fonts/check/metadata/designer_values](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/designer_values) 36 | * 🍞 **PASS** Looks good. 37 | 38 |
39 |
40 | 🍞 PASS: Does METADATA.pb copyright field contain broken links? 41 | 42 | * [com.google.fonts/check/metadata/broken_links](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/broken_links) 43 | * 🍞 **PASS** All links in the METADATA.pb file look good! 44 | 45 |
46 |
47 | 🍞 PASS: METADATA.pb: check if fonts field only has unique "full_name" values. 48 | 49 | * [com.google.fonts/check/metadata/unique_full_name_values](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/unique_full_name_values) 50 | * 🍞 **PASS** METADATA.pb "fonts" field only has unique "full_name" values. 51 | 52 |
53 |
54 | 🍞 PASS: METADATA.pb: check if fonts field only contains unique style:weight pairs. 55 | 56 | * [com.google.fonts/check/metadata/unique_weight_style_pairs](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/unique_weight_style_pairs) 57 | * 🍞 **PASS** METADATA.pb "fonts" field only has unique style:weight pairs. 58 | 59 |
60 |
61 | 🍞 PASS: METADATA.pb license is "APACHE2", "UFL" or "OFL"? 62 | 63 | * [com.google.fonts/check/metadata/license](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/license) 64 | * 🍞 **PASS** Font license is declared in METADATA.pb as "OFL" 65 | 66 |
67 |
68 | 🍞 PASS: METADATA.pb should contain at least "menu" and "latin" subsets. 69 | 70 | * [com.google.fonts/check/metadata/menu_and_latin](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/menu_and_latin) 71 | * 🍞 **PASS** METADATA.pb contains "menu" and "latin" subsets. 72 | 73 |
74 |
75 | 🍞 PASS: METADATA.pb subsets should be alphabetically ordered. 76 | 77 | * [com.google.fonts/check/metadata/subsets_order](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/subsets_order) 78 | * 🍞 **PASS** METADATA.pb subsets are sorted in alphabetical order. 79 | 80 |
81 |
82 | 🍞 PASS: METADATA.pb: Copyright notice is the same in all fonts? 83 | 84 | * [com.google.fonts/check/metadata/copyright](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/copyright) 85 | * 🍞 **PASS** Copyright is consistent across family 86 | 87 |
88 |
89 | 🍞 PASS: Check that METADATA.pb family values are all the same. 90 | 91 | * [com.google.fonts/check/metadata/familyname](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/familyname) 92 | * 🍞 **PASS** METADATA.pb: Family name is the same in all metadata "fonts" items. 93 | 94 |
95 |
96 | 🍞 PASS: METADATA.pb: According Google Fonts standards, families should have a Regular style. 97 | 98 | * [com.google.fonts/check/metadata/has_regular](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/has_regular) 99 | * 🍞 **PASS** Family has a Regular style. 100 | 101 |
102 |
103 | 🍞 PASS: METADATA.pb: Regular should be 400. 104 | 105 | * [com.google.fonts/check/metadata/regular_is_400](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/regular_is_400) 106 | * 🍞 **PASS** Regular has weight = 400. 107 | 108 |
109 |
110 | 🍞 PASS: All tabular figures must have the same width across the RIBBI-family. 111 | 112 | * [com.google.fonts/check/family/tnum_horizontal_metrics](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/family/tnum_horizontal_metrics) 113 | * 🍞 **PASS** OK 114 | 115 |
116 |
117 | 🍞 PASS: Does font file include unacceptable control character glyphs? 118 | 119 | * [com.google.fonts/check/family/control_chars](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/family/control_chars) 120 | * 🍞 **PASS** Unacceptable control characters were not identified. 121 | 122 |
123 |
124 | 🍞 PASS: Checking all files are in the same directory. 125 | 126 | * [com.google.fonts/check/family/single_directory](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/family/single_directory) 127 | * 🍞 **PASS** All files are in the same directory. 128 | 129 |
130 |
131 | 🍞 PASS: Each font in a family must have the same vertical metrics values. 132 | 133 | * [com.google.fonts/check/family/vertical_metrics](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/family/vertical_metrics) 134 | * 🍞 **PASS** Vertical metrics are the same across the family 135 | 136 |
137 |
138 | 🍞 PASS: Fonts have equal unicode encodings? 139 | 140 | * [com.google.fonts/check/family/equal_unicode_encodings](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/cmap.html#com.google.fonts/check/family/equal_unicode_encodings) 141 | * 🍞 **PASS** Fonts have equal unicode encodings. 142 | 143 |
144 |
145 | 🍞 PASS: Make sure all font files have the same version value. 146 | 147 | * [com.google.fonts/check/family/equal_font_versions](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/head.html#com.google.fonts/check/family/equal_font_versions) 148 | * 🍞 **PASS** All font files have the same version. 149 | 150 |
151 |
152 | 🍞 PASS: Fonts have consistent PANOSE proportion? 153 | 154 | * [com.google.fonts/check/family/panose_proportion](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/os2.html#com.google.fonts/check/family/panose_proportion) 155 | * 🍞 **PASS** Fonts have consistent PANOSE proportion. 156 | 157 |
158 |
159 | 🍞 PASS: Fonts have consistent PANOSE family type? 160 | 161 | * [com.google.fonts/check/family/panose_familytype](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/os2.html#com.google.fonts/check/family/panose_familytype) 162 | * 🍞 **PASS** Fonts have consistent PANOSE family type. 163 | 164 |
165 |
166 | 🍞 PASS: Check that OS/2.fsSelection bold & italic settings are unique for each NameID1 167 | 168 | * [com.adobe.fonts/check/family/bold_italic_unique_for_nameid1](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/os2.html#com.adobe.fonts/check/family/bold_italic_unique_for_nameid1) 169 | * 🍞 **PASS** The OS/2.fsSelection bold & italic settings were unique within each compatible family group. 170 | 171 |
172 |
173 | 🍞 PASS: Fonts have consistent underline thickness? 174 | 175 | * [com.google.fonts/check/family/underline_thickness](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/post.html#com.google.fonts/check/family/underline_thickness) 176 | * 🍞 **PASS** Fonts have consistent underline thickness. 177 | 178 |
179 |
180 | 🍞 PASS: Verify that each group of fonts with the same nameID 1 has maximum of 4 fonts 181 | 182 | * [com.adobe.fonts/check/family/max_4_fonts_per_family_name](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/name.html#com.adobe.fonts/check/family/max_4_fonts_per_family_name) 183 | * 🍞 **PASS** There were no more than 4 fonts per family name. 184 | 185 |
186 |
187 | 💤 SKIP: Check font has a license. 188 | 189 | * [com.google.fonts/check/family/has_license](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/family/has_license) 190 | * 💤 **SKIP** Unfulfilled Conditions: gfonts_repo_structure 191 | 192 |
193 |
194 | WARN: Is the command `ftxvalidator` (Apple Font Tool Suite) available? 195 | 196 | * [com.google.fonts/check/ftxvalidator_is_available](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/ftxvalidator_is_available) 197 | * ⚠ **WARN** ftxvalidator is not available. 198 | 199 |
200 |
201 |
202 |
203 | [131] Vibes-Regular.ttf 204 |
205 | 🔥 FAIL: PPEM must be an integer on hinted fonts. 206 | 207 | * [com.google.fonts/check/integer_ppem_if_hinted](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/integer_ppem_if_hinted) 208 | * 🔥 **FAIL** This is a hinted font, so it must have bit 3 set on the flags of the head table, so that PPEM values will be rounded into an integer value. 209 | 210 | This can be accomplished by using the 'gftools fix-hinting' command. 211 | 212 | # create virtualenvpython3 -m venv venv 213 | # activate virtualenvsource venv/bin/activate 214 | # install gftoolspip install git+https://www.github.com/googlefonts/tools [code: bad-flags] 215 | 216 |
217 |
218 | WARN: Checking OS/2 achVendID. 219 | 220 | * [com.google.fonts/check/vendor_id](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/vendor_id) 221 | * ⚠ **WARN** OS/2 VendorID is 'UKWN', a font editor default. You should set it to your own 4 character code, and register that code with Microsoft at https://www.microsoft.com/typography/links/vendorlist.aspx [code: bad] 222 | 223 |
224 |
225 | WARN: METADATA.pb: Fontfamily is listed on Google Fonts API? 226 | 227 | * [com.google.fonts/check/metadata/listed_on_gfonts](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/listed_on_gfonts) 228 | * ⚠ **WARN** Family not found via Google Fonts API. [code: not-found] 229 | 230 |
231 |
232 | WARN: Stricter unitsPerEm criteria for Google Fonts. 233 | 234 | * [com.google.fonts/check/unitsperem_strict](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/unitsperem_strict) 235 | * ⚠ **WARN** Even though unitsPerEm (1000) in this font is reasonable. It is strongly advised to consider changing it to 2000, since it will likely improve the quality of Variable Fonts by avoiding excessive rounding of coordinates on interpolations. [code: legacy-value] 236 | 237 |
238 |
239 | WARN: Check if each glyph has the recommended amount of contours. 240 | 241 | * [com.google.fonts/check/contour_count](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/contour_count) 242 | * ⚠ **WARN** This check inspects the glyph outlines and detects the total number of contours in each of them. The expected values are infered from the typical ammounts of contours observed in a large collection of reference font families. The divergences listed below may simply indicate a significantly different design on some of your glyphs. On the other hand, some of these may flag actual bugs in the font such as glyphs mapped to an incorrect codepoint. Please consider reviewing the design and codepoint assignment of these to make sure they are correct. 243 | 244 | The following glyphs do not have the recommended number of contours: 245 | 246 | Glyph name: uni2215 Contours detected: 2 Expected: 1 247 | Glyph name: quoteleft Contours detected: 0 Expected: 1 248 | Glyph name: quoteright Contours detected: 0 Expected: 1 249 | Glyph name: quotedblleft Contours detected: 0 Expected: 2 250 | Glyph name: quotedblright Contours detected: 0 Expected: 2 251 | Glyph name: quotedblbase Contours detected: 1 Expected: 2 252 | Glyph name: bullet Contours detected: 3 Expected: 1 253 | Glyph name: guilsinglleft Contours detected: 0 Expected: 1 254 | Glyph name: guilsinglright Contours detected: 0 Expected: 1 255 | Glyph name: uni1E9E Contours detected: 2 Expected: 1 256 | Glyph name: guillemotleft Contours detected: 0 Expected: 2 257 | Glyph name: guillemotright Contours detected: 0 Expected: 2 258 | Glyph name: germandbls Contours detected: 2 Expected: 1 259 | Glyph name: fraction Contours detected: 0 Expected: 1 260 | Glyph name: lozenge Contours detected: 0 Expected: 2 [code: contour-count] 261 | 262 |
263 |
264 | WARN: Does GPOS table have kerning information? 265 | 266 | * [com.google.fonts/check/gpos_kerning_info](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/gpos.html#com.google.fonts/check/gpos_kerning_info) 267 | * ⚠ **WARN** GPOS table lacks kerning information. 268 | 269 |
270 |
271 | 💤 SKIP: Does DESCRIPTION file contain broken links? 272 | 273 | * [com.google.fonts/check/description/broken_links](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/description/broken_links) 274 | * 💤 **SKIP** Unfulfilled Conditions: description 275 | 276 |
277 |
278 | 💤 SKIP: Does DESCRIPTION file contain a upstream Git repo URL? 279 | 280 | * [com.google.fonts/check/description/git_url](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/description/git_url) 281 | * 💤 **SKIP** Unfulfilled Conditions: description 282 | 283 |
284 |
285 | 💤 SKIP: Does DESCRIPTION file mention when a family is available as variable font? 286 | 287 | * [com.google.fonts/check/description/variable_font](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/description/variable_font) 288 | * 💤 **SKIP** Unfulfilled Conditions: is_variable_font, description 289 | 290 |
291 |
292 | 💤 SKIP: Is this a proper HTML snippet? 293 | 294 | * [com.google.fonts/check/description/valid_html](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/description/valid_html) 295 | * 💤 **SKIP** Unfulfilled Conditions: descfile 296 | 297 |
298 |
299 | 💤 SKIP: DESCRIPTION.en_us.html must have more than 200 bytes. 300 | 301 | * [com.google.fonts/check/description/min_length](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/description/min_length) 302 | * 💤 **SKIP** Unfulfilled Conditions: description 303 | 304 |
305 |
306 | 💤 SKIP: DESCRIPTION.en_us.html must have less than 1000 bytes. 307 | 308 | * [com.google.fonts/check/description/max_length](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/description/max_length) 309 | * 💤 **SKIP** Unfulfilled Conditions: description 310 | 311 |
312 |
313 | 💤 SKIP: Check copyright namerecords match license file. 314 | 315 | * [com.google.fonts/check/name/license](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/name/license) 316 | * 💤 **SKIP** Unfulfilled Conditions: license 317 | 318 |
319 |
320 | 💤 SKIP: Font has ttfautohint params? 321 | 322 | * [com.google.fonts/check/has_ttfautohint_params](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/has_ttfautohint_params) 323 | * 💤 **SKIP** Font appears to our heuristic as not hinted using ttfautohint. [code: not-hinted] 324 | * 💤 **SKIP** Font appears to our heuristic as not hinted using ttfautohint. [code: not-hinted] 325 | 326 |
327 |
328 | 💤 SKIP: METADATA.pb font.style "italic" matches font internals? 329 | 330 | * [com.google.fonts/check/metadata/italic_style](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/italic_style) 331 | * 💤 **SKIP** This check only applies to italic fonts. 332 | 333 |
334 |
335 | 💤 SKIP: Version number has increased since previous release on Google Fonts? 336 | 337 | * [com.google.fonts/check/version_bump](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/version_bump) 338 | * 💤 **SKIP** Unfulfilled Conditions: api_gfonts_ttFont, github_gfonts_ttFont 339 | 340 |
341 |
342 | 💤 SKIP: Glyphs are similiar to Google Fonts version? 343 | 344 | * [com.google.fonts/check/production_glyphs_similarity](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/production_glyphs_similarity) 345 | * 💤 **SKIP** Unfulfilled Conditions: api_gfonts_ttFont 346 | 347 |
348 |
349 | 💤 SKIP: Check a static ttf can be generated from a variable font. 350 | 351 | * [com.google.fonts/check/varfont/generate_static](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/varfont/generate_static) 352 | * 💤 **SKIP** Unfulfilled Conditions: is_variable_font 353 | 354 |
355 |
356 | 💤 SKIP: Check that variable fonts have an HVAR table. 357 | 358 | * [com.google.fonts/check/varfont/has_HVAR](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/varfont/has_HVAR) 359 | * 💤 **SKIP** Unfulfilled Conditions: is_variable_font 360 | 361 |
362 |
363 | 💤 SKIP: All name entries referenced by fvar instances exist on the name table? 364 | 365 | * [com.google.fonts/check/fvar_name_entries](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/fvar_name_entries) 366 | * 💤 **SKIP** Unfulfilled Conditions: is_variable_font 367 | 368 |
369 |
370 | 💤 SKIP: A variable font must have named instances. 371 | 372 | * [com.google.fonts/check/varfont_has_instances](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/varfont_has_instances) 373 | * 💤 **SKIP** Unfulfilled Conditions: is_variable_font 374 | 375 |
376 |
377 | 💤 SKIP: Variable font weight coordinates must be multiples of 100. 378 | 379 | * [com.google.fonts/check/varfont_weight_instances](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/varfont_weight_instances) 380 | * 💤 **SKIP** Unfulfilled Conditions: is_variable_font 381 | 382 |
383 |
384 | 💤 SKIP: Are there caret positions declared for every ligature? 385 | 386 | * [com.google.fonts/check/ligature_carets](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/ligature_carets) 387 | * 💤 **SKIP** Unfulfilled Conditions: ligature_glyphs 388 | 389 |
390 |
391 | 💤 SKIP: Is there kerning info for non-ligated sequences? 392 | 393 | * [com.google.fonts/check/kerning_for_non_ligated_sequences](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/kerning_for_non_ligated_sequences) 394 | * 💤 **SKIP** Unfulfilled Conditions: ligatures, has_kerning_info 395 | 396 |
397 |
398 | 💤 SKIP: Directory name in GFonts repo structure must match NameID 1 of the regular. 399 | 400 | * [com.google.fonts/check/repo/dirname_matches_nameid_1](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/repo/dirname_matches_nameid_1) 401 | * 💤 **SKIP** Unfulfilled Conditions: gfonts_repo_structure 402 | 403 |
404 |
405 | 💤 SKIP: Check if the vertical metrics of a family are similar to the same family hosted on Google Fonts. 406 | 407 | * [com.google.fonts/check/vertical_metrics_regressions](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/vertical_metrics_regressions) 408 | * 💤 **SKIP** Unfulfilled Conditions: remote_styles 409 | 410 |
411 |
412 | 💤 SKIP: Check variable font instances have correct coordinate values 413 | 414 | * [com.google.fonts/check/varfont_instance_coordinates](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/varfont_instance_coordinates) 415 | * 💤 **SKIP** Unfulfilled Conditions: is_variable_font 416 | 417 |
418 |
419 | 💤 SKIP: Check variable font instances have correct names 420 | 421 | * [com.google.fonts/check/varfont_instance_names](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/varfont_instance_names) 422 | * 💤 **SKIP** Unfulfilled Conditions: is_variable_font 423 | 424 |
425 |
426 | 💤 SKIP: Checking with ftxvalidator. 427 | 428 | * [com.google.fonts/check/ftxvalidator](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/ftxvalidator) 429 | * 💤 **SKIP** Unfulfilled Conditions: ftxvalidator_is_available 430 | 431 |
432 |
433 | 💤 SKIP: Is the CFF subr/gsubr call depth > 10? 434 | 435 | * [com.adobe.fonts/check/cff_call_depth](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/cff.html#com.adobe.fonts/check/cff_call_depth) 436 | * 💤 **SKIP** Unfulfilled Conditions: is_cff 437 | 438 |
439 |
440 | 💤 SKIP: Is the CFF2 subr/gsubr call depth > 10? 441 | 442 | * [com.adobe.fonts/check/cff2_call_depth](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/cff.html#com.adobe.fonts/check/cff2_call_depth) 443 | * 💤 **SKIP** Unfulfilled Conditions: is_cff2 444 | 445 |
446 |
447 | 💤 SKIP: CFF table FontName must match name table ID 6 (PostScript name). 448 | 449 | * [com.adobe.fonts/check/name/postscript_vs_cff](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/name.html#com.adobe.fonts/check/name/postscript_vs_cff) 450 | * 💤 **SKIP** Unfulfilled Conditions: is_cff 451 | 452 |
453 |
454 | 💤 SKIP: Monospace font has hhea.advanceWidthMax equal to each glyph's advanceWidth? 455 | 456 | * [com.google.fonts/check/monospace_max_advancewidth](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/hhea.html#com.google.fonts/check/monospace_max_advancewidth) 457 | * 💤 **SKIP** Font is not monospaced. 458 | 459 |
460 |
461 | 💤 SKIP: The variable font 'wght' (Weight) axis coordinate must be 400 on the 'Regular' instance. 462 | 463 | * [com.google.fonts/check/varfont/regular_wght_coord](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/fvar.html#com.google.fonts/check/varfont/regular_wght_coord) 464 | * 💤 **SKIP** Unfulfilled Conditions: is_variable_font, regular_wght_coord 465 | 466 |
467 |
468 | 💤 SKIP: The variable font 'wdth' (Width) axis coordinate must be 100 on the 'Regular' instance. 469 | 470 | * [com.google.fonts/check/varfont/regular_wdth_coord](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/fvar.html#com.google.fonts/check/varfont/regular_wdth_coord) 471 | * 💤 **SKIP** Unfulfilled Conditions: is_variable_font, regular_wdth_coord 472 | 473 |
474 |
475 | 💤 SKIP: The variable font 'slnt' (Slant) axis coordinate must be zero on the 'Regular' instance. 476 | 477 | * [com.google.fonts/check/varfont/regular_slnt_coord](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/fvar.html#com.google.fonts/check/varfont/regular_slnt_coord) 478 | * 💤 **SKIP** Unfulfilled Conditions: is_variable_font, regular_slnt_coord 479 | 480 |
481 |
482 | 💤 SKIP: The variable font 'ital' (Italic) axis coordinate must be zero on the 'Regular' instance. 483 | 484 | * [com.google.fonts/check/varfont/regular_ital_coord](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/fvar.html#com.google.fonts/check/varfont/regular_ital_coord) 485 | * 💤 **SKIP** Unfulfilled Conditions: is_variable_font, regular_ital_coord 486 | 487 |
488 |
489 | 💤 SKIP: The variable font 'opsz' (Optical Size) axis coordinate should be between 9 and 13 on the 'Regular' instance. 490 | 491 | * [com.google.fonts/check/varfont/regular_opsz_coord](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/fvar.html#com.google.fonts/check/varfont/regular_opsz_coord) 492 | * 💤 **SKIP** Unfulfilled Conditions: is_variable_font, regular_opsz_coord 493 | 494 |
495 |
496 | 💤 SKIP: The variable font 'wght' (Weight) axis coordinate must be 700 on the 'Bold' instance. 497 | 498 | * [com.google.fonts/check/varfont/bold_wght_coord](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/fvar.html#com.google.fonts/check/varfont/bold_wght_coord) 499 | * 💤 **SKIP** Unfulfilled Conditions: is_variable_font, bold_wght_coord 500 | 501 |
502 |
503 | 💤 SKIP: The variable font 'wght' (Weight) axis coordinate must be within spec range of 1 to 1000 on all instances. 504 | 505 | * [com.google.fonts/check/wght_valid_range](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/fvar.html#com.google.fonts/check/wght_valid_range) 506 | * 💤 **SKIP** Unfulfilled Conditions: is_variable_font 507 | 508 |
509 |
510 | 💤 SKIP: The variable font 'wdth' (Weight) axis coordinate must be within spec range of 1 to 1000 on all instances. 511 | 512 | * [com.google.fonts/check/wdth_valid_range](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/fvar.html#com.google.fonts/check/wdth_valid_range) 513 | * 💤 **SKIP** Unfulfilled Conditions: is_variable_font 514 | 515 |
516 |
517 | INFO: Show hinting filesize impact. 518 | 519 | * [com.google.fonts/check/hinting_impact](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/hinting_impact) 520 | * ℹ **INFO** Hinting filesize impact: 521 | 522 | | | Vibes-Regular.ttf | 523 | |:--- | ---:| 524 | | Dehinted Size | 54.8kb | 525 | | Hinted Size | 76.6kb | 526 | | Increase | 21.7kb | 527 | | Change | 39.6 % | 528 | [code: size-impact] 529 | 530 |
531 |
532 | INFO: Font has old ttfautohint applied? 533 | 534 | * [com.google.fonts/check/old_ttfautohint](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/old_ttfautohint) 535 | * ℹ **INFO** Could not detect which version of ttfautohint was used in this font. It is typically specified as a comment in the font version entries of the 'name' table. Such font version strings are currently: ['Version 1.100', 'Version 1.100'] [code: version-not-detected] 536 | 537 |
538 |
539 | INFO: EPAR table present in font? 540 | 541 | * [com.google.fonts/check/epar](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/epar) 542 | * ℹ **INFO** EPAR table not present in font. To learn more see https://github.com/googlefonts/fontbakery/issues/818 [code: lacks-EPAR] 543 | 544 |
545 |
546 | INFO: Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering? 547 | 548 | * [com.google.fonts/check/gasp](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/gasp) 549 | * ℹ **INFO** These are the ppm ranges declared on the gasp table: 550 | 551 | PPM <= 65535: 552 | flag = 0x0F 553 | - Use grid-fitting 554 | - Use grayscale rendering 555 | - Use gridfitting with ClearType symmetric smoothing 556 | - Use smoothing along multiple axes with ClearType® 557 | [code: ranges] 558 | * 🍞 **PASS** The 'gasp' table is correctly set, with one gaspRange:value of 0xFFFF:0x0F. 559 | 560 |
561 |
562 | INFO: Check for font-v versioning 563 | 564 | * [com.google.fonts/check/fontv](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/fontv) 565 | * ℹ **INFO** Version string is: "Version 1.100" 566 | The version string must ideally include a git commit hash and either a "dev" or a "release" suffix such as in the example below: 567 | "Version 1.3; git-0d08353-release" [code: bad-format] 568 | 569 |
570 |
571 | INFO: Font contains all required tables? 572 | 573 | * [com.google.fonts/check/required_tables](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/required_tables) 574 | * ℹ **INFO** This font contains the following optional tables [DSIG, GPOS, cvt , loca, GSUB, gasp, prep, fpgm] 575 | * 🍞 **PASS** Font contains all required tables. 576 | 577 |
578 |
579 | 🍞 PASS: Checking file is named canonically. 580 | 581 | * [com.google.fonts/check/canonical_filename](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/canonical_filename) 582 | * 🍞 **PASS** Vibes-Regular.ttf is named canonically. 583 | 584 |
585 |
586 | 🍞 PASS: Checking OS/2 fsType. 587 | 588 | * [com.google.fonts/check/fstype](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/fstype) 589 | * 🍞 **PASS** OS/2 fsType is properly set to zero. 590 | 591 |
592 |
593 | 🍞 PASS: Check glyph coverage. 594 | 595 | * [com.google.fonts/check/glyph_coverage](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/glyph_coverage) 596 | * 🍞 **PASS** OK 597 | 598 |
599 |
600 | 🍞 PASS: Substitute copyright, registered and trademark symbols in name table entries. 601 | 602 | * [com.google.fonts/check/name/unwanted_chars](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/name/unwanted_chars) 603 | * 🍞 **PASS** No need to substitute copyright, registered and trademark symbols in name table entries of this font. 604 | 605 |
606 |
607 | 🍞 PASS: Checking OS/2 usWeightClass. 608 | 609 | * [com.google.fonts/check/usweightclass](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/usweightclass) 610 | * 🍞 **PASS** OS/2 usWeightClass value looks good! 611 | 612 |
613 |
614 | 🍞 PASS: License URL matches License text on name table? 615 | 616 | * [com.google.fonts/check/name/license_url](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/name/license_url) 617 | * 🍞 **PASS** Font has a valid license URL in NAME table. 618 | 619 |
620 |
621 | 🍞 PASS: Description strings in the name table must not exceed 200 characters. 622 | 623 | * [com.google.fonts/check/name/description_max_length](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/name/description_max_length) 624 | * 🍞 **PASS** All description name records have reasonably small lengths. 625 | 626 |
627 |
628 | 🍞 PASS: Version format is correct in 'name' table? 629 | 630 | * [com.google.fonts/check/name/version_format](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/name/version_format) 631 | * 🍞 **PASS** Version format in NAME table entries is correct. 632 | 633 |
634 |
635 | 🍞 PASS: Make sure family name does not begin with a digit. 636 | 637 | * [com.google.fonts/check/name/familyname_first_char](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/name/familyname_first_char) 638 | * 🍞 **PASS** Font family name first character is not a digit. 639 | 640 |
641 |
642 | 🍞 PASS: Are there non-ASCII characters in ASCII-only NAME table entries? 643 | 644 | * [com.google.fonts/check/name/ascii_only_entries](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/name/ascii_only_entries) 645 | * 🍞 **PASS** None of the ASCII-only NAME table entries contain non-ASCII characteres. 646 | 647 |
648 |
649 | 🍞 PASS: Checks METADATA.pb font.name field matches family name declared on the name table. 650 | 651 | * [com.google.fonts/check/metadata/nameid/family_name](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/nameid/family_name) 652 | * 🍞 **PASS** Family name "Vibes" is identical in METADATA.pb and on the TTF file. 653 | 654 |
655 |
656 | 🍞 PASS: Checks METADATA.pb font.post_script_name matches postscript name declared on the name table. 657 | 658 | * [com.google.fonts/check/metadata/nameid/post_script_name](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/nameid/post_script_name) 659 | * 🍞 **PASS** Postscript name "Vibes-Regular" is identical in METADATA.pb and on the TTF file. 660 | 661 |
662 |
663 | 🍞 PASS: METADATA.pb font.full_name value matches fullname declared on the name table? 664 | 665 | * [com.google.fonts/check/metadata/nameid/full_name](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/nameid/full_name) 666 | * 🍞 **PASS** Font fullname "Vibes Regular" is identical in METADATA.pb and on the TTF file. 667 | * 🍞 **PASS** Font fullname "Vibes Regular" is identical in METADATA.pb and on the TTF file. 668 | 669 |
670 |
671 | 🍞 PASS: METADATA.pb font.name value should be same as the family name declared on the name table. 672 | 673 | * [com.google.fonts/check/metadata/nameid/font_name](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/nameid/font_name) 674 | * 🍞 **PASS** OK: Family name "Vibes" is identical in METADATA.pb and on the TTF file. 675 | * 🍞 **PASS** OK: Family name "Vibes" is identical in METADATA.pb and on the TTF file. 676 | 677 |
678 |
679 | 🍞 PASS: METADATA.pb font.full_name and font.post_script_name fields have equivalent values ? 680 | 681 | * [com.google.fonts/check/metadata/match_fullname_postscript](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/match_fullname_postscript) 682 | * 🍞 **PASS** METADATA.pb font fields "full_name" and "post_script_name" have equivalent values. 683 | 684 |
685 |
686 | 🍞 PASS: METADATA.pb font.filename and font.post_script_name fields have equivalent values? 687 | 688 | * [com.google.fonts/check/metadata/match_filename_postscript](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/match_filename_postscript) 689 | * 🍞 **PASS** METADATA.pb font fields "filename" and "post_script_name" have equivalent values. 690 | 691 |
692 |
693 | 🍞 PASS: METADATA.pb font.name field contains font name in right format? 694 | 695 | * [com.google.fonts/check/metadata/valid_name_values](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/valid_name_values) 696 | * 🍞 **PASS** METADATA.pb font.name field contains font name in right format. 697 | 698 |
699 |
700 | 🍞 PASS: METADATA.pb font.full_name field contains font name in right format? 701 | 702 | * [com.google.fonts/check/metadata/valid_full_name_values](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/valid_full_name_values) 703 | * 🍞 **PASS** METADATA.pb font.full_name field contains font name in right format. ("Vibes" in "Vibes Regular") 704 | * 🍞 **PASS** METADATA.pb font.full_name field contains font name in right format. ("Vibes" in "Vibes Regular") 705 | 706 |
707 |
708 | 🍞 PASS: METADATA.pb font.filename field contains font name in right format? 709 | 710 | * [com.google.fonts/check/metadata/valid_filename_values](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/valid_filename_values) 711 | * 🍞 **PASS** METADATA.pb filename field contains font name in right format. 712 | 713 |
714 |
715 | 🍞 PASS: METADATA.pb font.post_script_name field contains font name in right format? 716 | 717 | * [com.google.fonts/check/metadata/valid_post_script_name_values](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/valid_post_script_name_values) 718 | * 🍞 **PASS** METADATA.pb postScriptName field contains font name in right format. 719 | * 🍞 **PASS** METADATA.pb postScriptName field contains font name in right format. 720 | 721 |
722 |
723 | 🍞 PASS: Copyright notices match canonical pattern in METADATA.pb 724 | 725 | * [com.google.fonts/check/metadata/valid_copyright](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/valid_copyright) 726 | * 🍞 **PASS** METADATA.pb copyright string is good 727 | 728 |
729 |
730 | 🍞 PASS: Copyright notices match canonical pattern in fonts 731 | 732 | * [com.google.fonts/check/font_copyright](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/font_copyright) 733 | * 🍞 **PASS** Name Table entry: Copyright field 'Copyright 2019 The Vibes Project Authors (https://github.com/bluemix/vibes-typeface)' matches canonical pattern. 734 | * 🍞 **PASS** Name Table entry: Copyright field 'Copyright 2019 The Vibes Project Authors (https://github.com/bluemix/vibes-typeface)' matches canonical pattern. 735 | * 🍞 **PASS** Name table copyright entries are good 736 | 737 |
738 |
739 | 🍞 PASS: Copyright notice on METADATA.pb should not contain 'Reserved Font Name'. 740 | 741 | * [com.google.fonts/check/metadata/reserved_font_name](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/reserved_font_name) 742 | * 🍞 **PASS** METADATA.pb copyright field does not contain "Reserved Font Name". 743 | 744 |
745 |
746 | 🍞 PASS: METADATA.pb: Copyright notice shouldn't exceed 500 chars. 747 | 748 | * [com.google.fonts/check/metadata/copyright_max_length](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/copyright_max_length) 749 | * 🍞 **PASS** Copyright notice string is shorter than 500 chars. 750 | 751 |
752 |
753 | 🍞 PASS: METADATA.pb font.style "normal" matches font internals? 754 | 755 | * [com.google.fonts/check/metadata/normal_style](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/normal_style) 756 | * 🍞 **PASS** METADATA.pb font.style "normal" matches font internals. 757 | 758 |
759 |
760 | 🍞 PASS: METADATA.pb font.name and font.full_name fields match the values declared on the name table? 761 | 762 | * [com.google.fonts/check/metadata/nameid/family_and_full_names](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/nameid/family_and_full_names) 763 | * 🍞 **PASS** METADATA.pb familyname and fullName fields match corresponding name table entries. 764 | 765 |
766 |
767 | 🍞 PASS: METADATA.pb: Check if fontname is not camel cased. 768 | 769 | * [com.google.fonts/check/metadata/fontname_not_camel_cased](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/fontname_not_camel_cased) 770 | * 🍞 **PASS** Font name is not camel-cased. 771 | 772 |
773 |
774 | 🍞 PASS: METADATA.pb: Check font name is the same as family name. 775 | 776 | * [com.google.fonts/check/metadata/match_name_familyname](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/match_name_familyname) 777 | * 🍞 **PASS** Font name is the same as family name. 778 | 779 |
780 |
781 | 🍞 PASS: METADATA.pb: Check that font weight has a canonical value. 782 | 783 | * [com.google.fonts/check/metadata/canonical_weight_value](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/canonical_weight_value) 784 | * 🍞 **PASS** Font weight has a canonical value. 785 | 786 |
787 |
788 | 🍞 PASS: Checking OS/2 usWeightClass matches weight specified at METADATA.pb. 789 | 790 | * [com.google.fonts/check/metadata/os2_weightclass](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/os2_weightclass) 791 | * 🍞 **PASS** OS/2 usWeightClass matches weight specified at METADATA.pb 792 | 793 |
794 |
795 | 🍞 PASS: METADATA.pb weight matches postScriptName. 796 | 797 | * [com.google.fonts/check/metadata/match_weight_postscript](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/match_weight_postscript) 798 | * 🍞 **PASS** Weight value matches postScriptName. 799 | 800 |
801 |
802 | 🍞 PASS: METADATA.pb: Font styles are named canonically? 803 | 804 | * [com.google.fonts/check/metadata/canonical_style_names](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/canonical_style_names) 805 | * 🍞 **PASS** Font styles are named canonically. 806 | 807 |
808 |
809 | 🍞 PASS: Checking OS/2 fsSelection value. 810 | 811 | * [com.google.fonts/check/fsselection](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/fsselection) 812 | * 🍞 **PASS** OS/2 fsSelection REGULAR bit is properly set. 813 | * 🍞 **PASS** OS/2 fsSelection ITALIC bit is properly set. 814 | * 🍞 **PASS** OS/2 fsSelection BOLD bit is properly set. 815 | 816 |
817 |
818 | 🍞 PASS: Checking post.italicAngle value. 819 | 820 | * [com.google.fonts/check/italic_angle](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/italic_angle) 821 | * 🍞 **PASS** Value of post.italicAngle is 0.0 with style="Regular". 822 | 823 |
824 |
825 | 🍞 PASS: Checking head.macStyle value. 826 | 827 | * [com.google.fonts/check/mac_style](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/mac_style) 828 | * 🍞 **PASS** head macStyle ITALIC bit is properly set. 829 | * 🍞 **PASS** head macStyle BOLD bit is properly set. 830 | 831 |
832 |
833 | 🍞 PASS: Copyright field for this font on METADATA.pb matches all copyright notice entries on the name table ? 834 | 835 | * [com.google.fonts/check/metadata/nameid/copyright](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/metadata/nameid/copyright) 836 | * 🍞 **PASS** Copyright field for this font on METADATA.pb matches copyright notice entries on the name table. 837 | 838 |
839 |
840 | 🍞 PASS: Font has all mandatory 'name' table entries? 841 | 842 | * [com.google.fonts/check/name/mandatory_entries](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/name/mandatory_entries) 843 | * 🍞 **PASS** Font contains values for all mandatory name table entries. 844 | 845 |
846 |
847 | 🍞 PASS: Check name table: FONT_FAMILY_NAME entries. 848 | 849 | * [com.google.fonts/check/name/familyname](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/name/familyname) 850 | * 🍞 **PASS** FONT_FAMILY_NAME entries are all good. [code: ok] 851 | 852 |
853 |
854 | 🍞 PASS: Check name table: FONT_SUBFAMILY_NAME entries. 855 | 856 | * [com.google.fonts/check/name/subfamilyname](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/name/subfamilyname) 857 | * 🍞 **PASS** FONT_SUBFAMILY_NAME entries are all good. 858 | 859 |
860 |
861 | 🍞 PASS: Check name table: FULL_FONT_NAME entries. 862 | 863 | * [com.google.fonts/check/name/fullfontname](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/name/fullfontname) 864 | * 🍞 **PASS** FULL_FONT_NAME entries are all good. 865 | 866 |
867 |
868 | 🍞 PASS: Check name table: POSTSCRIPT_NAME entries. 869 | 870 | * [com.google.fonts/check/name/postscriptname](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/name/postscriptname) 871 | * 🍞 **PASS** POSTCRIPT_NAME entries are all good. 872 | 873 |
874 |
875 | 🍞 PASS: Check name table: TYPOGRAPHIC_FAMILY_NAME entries. 876 | 877 | * [com.google.fonts/check/name/typographicfamilyname](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/name/typographicfamilyname) 878 | * 🍞 **PASS** TYPOGRAPHIC_FAMILY_NAME entries are all good. 879 | 880 |
881 |
882 | 🍞 PASS: Check name table: TYPOGRAPHIC_SUBFAMILY_NAME entries. 883 | 884 | * [com.google.fonts/check/name/typographicsubfamilyname](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/name/typographicsubfamilyname) 885 | * 🍞 **PASS** TYPOGRAPHIC_SUBFAMILY_NAME entries are all good. 886 | 887 |
888 |
889 | 🍞 PASS: Length of copyright notice must not exceed 500 characters. 890 | 891 | * [com.google.fonts/check/name/copyright_length](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/name/copyright_length) 892 | * 🍞 **PASS** All copyright notice name entries on the 'name' table are shorter than 500 characters. 893 | 894 |
895 |
896 | 🍞 PASS: Familyname must be unique according to namecheck.fontdata.com 897 | 898 | * [com.google.fonts/check/fontdata_namecheck](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/fontdata_namecheck) 899 | * 🍞 **PASS** Font familyname seems to be unique. 900 | 901 |
902 |
903 | 🍞 PASS: Font enables smart dropout control in "prep" table instructions? 904 | 905 | * [com.google.fonts/check/smart_dropout](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/smart_dropout) 906 | * 🍞 **PASS** 'prep' table contains instructions enabling smart dropout control. 907 | 908 |
909 |
910 | 🍞 PASS: There must not be VTT Talk sources in the font. 911 | 912 | * [com.google.fonts/check/vttclean](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/vttclean) 913 | * 🍞 **PASS** There are no tables with VTT Talk sources embedded in the font. 914 | 915 |
916 |
917 | 🍞 PASS: Are there unwanted Apple tables? 918 | 919 | * [com.google.fonts/check/aat](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/aat) 920 | * 🍞 **PASS** There are no unwanted AAT tables. 921 | 922 |
923 |
924 | 🍞 PASS: Combined length of family and style must not exceed 27 characters. 925 | 926 | * [com.google.fonts/check/name/family_and_style_max_length](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/name/family_and_style_max_length) 927 | * 🍞 **PASS** All name entries are good. 928 | 929 |
930 |
931 | 🍞 PASS: Name table records must not have trailing spaces. 932 | 933 | * [com.google.fonts/check/name/trailing_spaces](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/name/trailing_spaces) 934 | * 🍞 **PASS** No trailing spaces on name table entries. 935 | 936 |
937 |
938 | 🍞 PASS: Checking OS/2 usWinAscent & usWinDescent. 939 | 940 | * [com.google.fonts/check/family/win_ascent_and_descent](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/family/win_ascent_and_descent) 941 | * 🍞 **PASS** OS/2 usWinAscent & usWinDescent values look good! 942 | 943 |
944 |
945 | 🍞 PASS: Checking OS/2 Metrics match hhea Metrics. 946 | 947 | * [com.google.fonts/check/os2_metrics_match_hhea](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/os2_metrics_match_hhea) 948 | * 🍞 **PASS** OS/2.sTypoAscender/Descender values match hhea.ascent/descent. 949 | 950 |
951 |
952 | 🍞 PASS: Checking with ots-sanitize. 953 | 954 | * [com.google.fonts/check/ots](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/ots) 955 | * 🍞 **PASS** ots-sanitize passed this file 956 | 957 |
958 |
959 | 🍞 PASS: Font contains .notdef as first glyph? 960 | 961 | * [com.google.fonts/check/mandatory_glyphs](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/mandatory_glyphs) 962 | * 🍞 **PASS** Font contains the .notdef glyph as the first glyph, it does not have a Unicode value assigned and contains a drawing. 963 | 964 |
965 |
966 | 🍞 PASS: Font contains glyphs for whitespace characters? 967 | 968 | * [com.google.fonts/check/whitespace_glyphs](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/whitespace_glyphs) 969 | * 🍞 **PASS** Font contains glyphs for whitespace characters. 970 | 971 |
972 |
973 | 🍞 PASS: Font has **proper** whitespace glyph names? 974 | 975 | * [com.google.fonts/check/whitespace_glyphnames](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/whitespace_glyphnames) 976 | * 🍞 **PASS** Font has **proper** whitespace glyph names. 977 | 978 |
979 |
980 | 🍞 PASS: Whitespace glyphs have ink? 981 | 982 | * [com.google.fonts/check/whitespace_ink](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/whitespace_ink) 983 | * 🍞 **PASS** There is no whitespace glyph with ink. 984 | 985 |
986 |
987 | 🍞 PASS: Are there unwanted tables? 988 | 989 | * [com.google.fonts/check/unwanted_tables](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/unwanted_tables) 990 | * 🍞 **PASS** There are no unwanted tables. 991 | 992 |
993 |
994 | 🍞 PASS: Glyph names are all valid? 995 | 996 | * [com.google.fonts/check/valid_glyphnames](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/valid_glyphnames) 997 | * 🍞 **PASS** Glyph names are all valid. 998 | 999 |
1000 |
1001 | 🍞 PASS: Font contains unique glyph names? 1002 | 1003 | * [com.google.fonts/check/unique_glyphnames](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/unique_glyphnames) 1004 | * 🍞 **PASS** Font contains unique glyph names. 1005 | 1006 |
1007 |
1008 | 🍞 PASS: Checking with fontTools.ttx 1009 | 1010 | * [com.google.fonts/check/ttx-roundtrip](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/ttx-roundtrip) 1011 | * 🍞 **PASS** Hey! It all looks good! 1012 | 1013 |
1014 |
1015 | 🍞 PASS: Check all glyphs have codepoints assigned. 1016 | 1017 | * [com.google.fonts/check/all_glyphs_have_codepoints](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/cmap.html#com.google.fonts/check/all_glyphs_have_codepoints) 1018 | * 🍞 **PASS** All glyphs have a codepoint value assigned. 1019 | 1020 |
1021 |
1022 | 🍞 PASS: Checking unitsPerEm value is reasonable. 1023 | 1024 | * [com.google.fonts/check/unitsperem](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/head.html#com.google.fonts/check/unitsperem) 1025 | * 🍞 **PASS** unitsPerEm value (1000) on the 'head' table is reasonable. 1026 | 1027 |
1028 |
1029 | 🍞 PASS: Checking font version fields (head and name table). 1030 | 1031 | * [com.google.fonts/check/font_version](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/head.html#com.google.fonts/check/font_version) 1032 | * 🍞 **PASS** All font version fields match. 1033 | 1034 |
1035 |
1036 | 🍞 PASS: Check if OS/2 xAvgCharWidth is correct. 1037 | 1038 | * [com.google.fonts/check/xavgcharwidth](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/os2.html#com.google.fonts/check/xavgcharwidth) 1039 | * 🍞 **PASS** OS/2 xAvgCharWidth value is correct. 1040 | 1041 |
1042 |
1043 | 🍞 PASS: Check if OS/2 fsSelection matches head macStyle bold and italic bits. 1044 | 1045 | * [com.adobe.fonts/check/fsselection_matches_macstyle](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/os2.html#com.adobe.fonts/check/fsselection_matches_macstyle) 1046 | * 🍞 **PASS** The OS/2.fsSelection and head.macStyle bold and italic settings match. 1047 | 1048 |
1049 |
1050 | 🍞 PASS: Check code page character ranges 1051 | 1052 | * [com.google.fonts/check/code_pages](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/os2.html#com.google.fonts/check/code_pages) 1053 | * 🍞 **PASS** At least one code page is defined. 1054 | 1055 |
1056 |
1057 | 🍞 PASS: Font has correct post table version (2 for TTF, 3 for OTF)? 1058 | 1059 | * [com.google.fonts/check/post_table_version](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/post.html#com.google.fonts/check/post_table_version) 1060 | * 🍞 **PASS** Font has post table version 2. 1061 | 1062 |
1063 |
1064 | 🍞 PASS: Check name table for empty records. 1065 | 1066 | * [com.adobe.fonts/check/name/empty_records](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/name.html#com.adobe.fonts/check/name/empty_records) 1067 | * 🍞 **PASS** No empty name table records found. 1068 | 1069 |
1070 |
1071 | 🍞 PASS: Description strings in the name table must not contain copyright info. 1072 | 1073 | * [com.google.fonts/check/name/no_copyright_on_description](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/name.html#com.google.fonts/check/name/no_copyright_on_description) 1074 | * 🍞 **PASS** Description strings in the name table do not contain any copyright string. 1075 | 1076 |
1077 |
1078 | 🍞 PASS: Checking correctness of monospaced metadata. 1079 | 1080 | * [com.google.fonts/check/monospace](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/name.html#com.google.fonts/check/monospace) 1081 | * 🍞 **PASS** Font is not monospaced and all related metadata look good. [code: good] 1082 | 1083 |
1084 |
1085 | 🍞 PASS: Name table entries should not contain line-breaks. 1086 | 1087 | * [com.google.fonts/check/name/line_breaks](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/name.html#com.google.fonts/check/name/line_breaks) 1088 | * 🍞 **PASS** Name table entries are all single-line (no line-breaks found). 1089 | 1090 |
1091 |
1092 | 🍞 PASS: Does full font name begin with the font family name? 1093 | 1094 | * [com.google.fonts/check/name/match_familyname_fullfont](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/name.html#com.google.fonts/check/name/match_familyname_fullfont) 1095 | * 🍞 **PASS** Full font name begins with the font family name. 1096 | 1097 |
1098 |
1099 | 🍞 PASS: Font follows the family naming recommendations? 1100 | 1101 | * [com.google.fonts/check/family_naming_recommendations](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/name.html#com.google.fonts/check/family_naming_recommendations) 1102 | * 🍞 **PASS** Font follows the family naming recommendations. 1103 | 1104 |
1105 |
1106 | 🍞 PASS: Name table strings must not contain the string 'Reserved Font Name'. 1107 | 1108 | * [com.google.fonts/check/name/rfn](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/name.html#com.google.fonts/check/name/rfn) 1109 | * 🍞 **PASS** None of the name table strings contain "Reserved Font Name". 1110 | 1111 |
1112 |
1113 | 🍞 PASS: Name table ID 6 (PostScript name) must be consistent across platforms. 1114 | 1115 | * [com.adobe.fonts/check/name/postscript_name_consistency](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/name.html#com.adobe.fonts/check/name/postscript_name_consistency) 1116 | * 🍞 **PASS** Entries in the 'name' table for ID 6 (PostScript name) are consistent. 1117 | 1118 |
1119 |
1120 | 🍞 PASS: Does the number of glyphs in the loca table match the maxp table? 1121 | 1122 | * [com.google.fonts/check/loca/maxp_num_glyphs](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/loca.html#com.google.fonts/check/loca/maxp_num_glyphs) 1123 | * 🍞 **PASS** 'loca' table matches numGlyphs in 'maxp' table. 1124 | 1125 |
1126 |
1127 | 🍞 PASS: Checking Vertical Metric Linegaps. 1128 | 1129 | * [com.google.fonts/check/linegaps](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/hhea.html#com.google.fonts/check/linegaps) 1130 | * 🍞 **PASS** OS/2 sTypoLineGap and hhea lineGap are both 0. 1131 | 1132 |
1133 |
1134 | 🍞 PASS: MaxAdvanceWidth is consistent with values in the Hmtx and Hhea tables? 1135 | 1136 | * [com.google.fonts/check/maxadvancewidth](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/hhea.html#com.google.fonts/check/maxadvancewidth) 1137 | * 🍞 **PASS** MaxAdvanceWidth is consistent with values in the Hmtx and Hhea tables. 1138 | 1139 |
1140 |
1141 | 🍞 PASS: Does the font have a DSIG table? 1142 | 1143 | * [com.google.fonts/check/dsig](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/dsig.html#com.google.fonts/check/dsig) 1144 | * 🍞 **PASS** Digital Signature (DSIG) exists. 1145 | 1146 |
1147 |
1148 | 🍞 PASS: Whitespace and non-breaking space have the same width? 1149 | 1150 | * [com.google.fonts/check/whitespace_widths](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/hmtx.html#com.google.fonts/check/whitespace_widths) 1151 | * 🍞 **PASS** Whitespace and non-breaking space have the same width. 1152 | 1153 |
1154 |
1155 | 🍞 PASS: Is there a "kern" table declared in the font? 1156 | 1157 | * [com.google.fonts/check/kern_table](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/kern.html#com.google.fonts/check/kern_table) 1158 | * 🍞 **PASS** Font does not declare an optional "kern" table. 1159 | 1160 |
1161 |
1162 | 🍞 PASS: Is there any unused data at the end of the glyf table? 1163 | 1164 | * [com.google.fonts/check/glyf_unused_data](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/glyf.html#com.google.fonts/check/glyf_unused_data) 1165 | * 🍞 **PASS** There is no unused data at the end of the glyf table. 1166 | 1167 |
1168 |
1169 | 🍞 PASS: Check for points out of bounds. 1170 | 1171 | * [com.google.fonts/check/points_out_of_bounds](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/glyf.html#com.google.fonts/check/points_out_of_bounds) 1172 | * 🍞 **PASS** All glyph paths have coordinates within bounds! 1173 | 1174 |
1175 |
1176 |
1177 | 1178 | ### Summary 1179 | 1180 | | 💔 ERROR | 🔥 FAIL | ⚠ WARN | 💤 SKIP | ℹ INFO | 🍞 PASS | 1181 | |:-----:|:----:|:----:|:----:|:----:|:----:| 1182 | | 0 | 1 | 6 | 36 | 7 | 108 | 1183 | | 0% | 1% | 4% | 23% | 4% | 68% | 1184 | -------------------------------------------------------------------------------- /samples/samples-test-4.ps: -------------------------------------------------------------------------------- 1 | %!PS-Adobe-3.0 2 | %APL_DSC_Encoding: UTF8 3 | %APLProducer: (Version 10.14.5 (Build 18F132) Quartz PS Context) 4 | %%Title: (samples-test) 5 | %%Creator: (Pages: cgpdftops CUPS filter) 6 | %%CreationDate: (Friday, July 12 2019 20:06:37 +03) 7 | %%For: (blueMix) 8 | %%DocumentData: Clean7Bit 9 | %%LanguageLevel: 2 10 | %%PageOrder: Ascend 11 | %RBINumCopies: 1 12 | %%Pages: (atend) 13 | %%BoundingBox: (atend) 14 | %%EndComments 15 | userdict/dscInfo 5 dict dup begin 16 | /Title(samples-test)def 17 | /Creator(Pages: cgpdftops CUPS filter)def 18 | /CreationDate(Friday, July 12 2019 20:06:37 +03)def 19 | /For(blueMix)def 20 | /Pages 1 def 21 | end put 22 | %%BeginProlog 23 | %%BeginFile: lw8_errorhandler-2.0 24 | /currentpacking where 25 | { pop /oldpack currentpacking def /setpacking where 26 | { 27 | pop false setpacking 28 | }if 29 | }if 30 | /$brkpage 64 dict def $brkpage begin 31 | /prnt 32 | {dup type/stringtype ne{=string cvs}if dup length 6 mul/tx exch def/ty 10 def 33 | currentpoint/toy exch def/tox exch def 1 setgray newpath 34 | tox toy 2 sub moveto 0 ty rlineto tx 0 rlineto 0 ty neg rlineto 35 | closepath fill tox toy moveto 0 setgray show}bind def 36 | /nl{currentpoint exch pop lmargin exch moveto 0 -10 rmoveto}def 37 | /=={/cp 0 def typeprint nl}def 38 | /typeprint{dup type exec}readonly def 39 | /lmargin 72 def 40 | /rmargin 72 def 41 | /tprint 42 | {dup length cp add rmargin gt{nl/cp 0 def}if 43 | dup length cp add/cp exch def prnt}readonly def 44 | /cvsprint{=string cvs tprint( )tprint}readonly def 45 | /integertype{cvsprint}readonly def 46 | /realtype{cvsprint}readonly def 47 | /booleantype{cvsprint}readonly def 48 | /operatortype{(--)tprint =string cvs tprint(-- )tprint}readonly def 49 | /marktype{pop(-mark- )tprint}readonly def 50 | /dicttype{pop(-dictionary- )tprint}readonly def 51 | /nulltype{pop(-null- )tprint}readonly def 52 | /filetype{pop(-filestream- )tprint}readonly def 53 | /savetype{pop(-savelevel- )tprint}readonly def 54 | /fonttype{pop(-fontid- )tprint}readonly def 55 | /nametype{dup xcheck not{(/)tprint}if cvsprint}readonly def 56 | /stringtype 57 | {dup rcheck{(\()tprint tprint(\))tprint}{pop(-string- )tprint}ifelse 58 | }readonly def 59 | /arraytype 60 | {dup rcheck{dup xcheck 61 | {({)tprint{typeprint}forall(})tprint} 62 | {([)tprint{typeprint}forall(])tprint}ifelse}{pop(-array- )tprint}ifelse 63 | }readonly def 64 | /packedarraytype 65 | {dup rcheck{dup xcheck 66 | {({)tprint{typeprint}forall(})tprint} 67 | {([)tprint{typeprint}forall(])tprint}ifelse}{pop(-packedarray- )tprint}ifelse 68 | }readonly def 69 | /courier/Courier findfont 10 scalefont def 70 | end %$brkpage 71 | errordict/handleerror 72 | {systemdict begin $error begin $brkpage begin newerror 73 | {/newerror false store 74 | vmstatus pop pop 0 ne{grestoreall}if initgraphics courier setfont 75 | lmargin 720 moveto(ERROR: )prnt errorname prnt 76 | nl(OFFENDING COMMAND: )prnt/command load prnt 77 | $error/ostack known{ 78 | $error/ostack get type dup/arraytype eq exch /packedarraytype eq or 79 | {nl nl(STACK:)prnt nl nl $error/ostack get aload length{==}repeat}if}if 80 | systemdict/showpage get exec(%%[ Error: )print 81 | errorname =print(; OffendingCommand: )print/command 82 | load =print( ]%%)= flush}if end end end} 83 | dup 0 systemdict put dup 4 $brkpage put bind readonly put 84 | /currentpacking where 85 | { pop /setpacking where 86 | { 87 | pop oldpack setpacking 88 | }if 89 | }if 90 | %%EndFile 91 | %%BeginFile: cg-pdf.ps 92 | %%Copyright: Copyright 2000-2004 Apple Computer Incorporated. 93 | %%Copyright: All Rights Reserved. 94 | currentpacking true setpacking 95 | /cg_md 141 dict def 96 | cg_md begin 97 | /L3? languagelevel 3 ge def 98 | /bd{bind def}bind def 99 | /ld{load def}bd 100 | /xs{exch store}bd 101 | /xd{exch def}bd 102 | /cmmtx matrix def 103 | mark 104 | /sc/setcolor 105 | /scs/setcolorspace 106 | /dr/defineresource 107 | /fr/findresource 108 | /T/true 109 | /F/false 110 | /d/setdash 111 | /w/setlinewidth 112 | /J/setlinecap 113 | /j/setlinejoin 114 | /M/setmiterlimit 115 | /i/setflat 116 | /rc/rectclip 117 | /rf/rectfill 118 | /rs/rectstroke 119 | /f/fill 120 | /f*/eofill 121 | /sf/selectfont 122 | /s/show 123 | %/as/ashow 124 | /xS/xshow 125 | /yS/yshow 126 | /xyS/xyshow 127 | /S/stroke 128 | /m/moveto 129 | /l/lineto 130 | /c/curveto 131 | /h/closepath 132 | /n/newpath 133 | /q/gsave 134 | /Q/grestore 135 | counttomark 2 idiv 136 | %dup (number of ld's = )print == flush % *** how many 137 | {ld}repeat pop 138 | /SC{ % CSname 139 | /ColorSpace fr scs 140 | }bd 141 | /sopr /setoverprint where{pop/setoverprint}{/pop}ifelse ld 142 | /soprm /setoverprintmode where{pop/setoverprintmode}{/pop}ifelse ld 143 | /cgmtx matrix def 144 | /sdmtx{cgmtx currentmatrix pop}bd 145 | /CM {cgmtx setmatrix}bd % pop the ctm: our gstate ctm on host is now identity 146 | /cm {cmmtx astore CM concat}bd % reset the matrix and then concat 147 | /W{clip newpath}bd 148 | /W*{eoclip newpath}bd 149 | 150 | statusdict begin product end dup (HP) anchorsearch{ 151 | pop pop pop % pop off the search results 152 | true 153 | }{ 154 | pop % previous search result 155 | (hp) anchorsearch{ 156 | pop pop true 157 | }{ 158 | pop false 159 | }ifelse 160 | }ifelse 161 | 162 | { % HP is the product: we use this method of stroking because of a bug in their clone printers with certain T3 fonts 163 | { 164 | { % charCode Wx Wy 165 | pop pop % charCode 166 | (0)dup 0 4 -1 roll put 167 | F charpath 168 | }cshow 169 | } 170 | }{ 171 | {F charpath} 172 | }ifelse 173 | /cply exch bd 174 | /cps {cply stroke}bd 175 | /pgsave 0 def 176 | /bp{/pgsave save store}bd 177 | /ep{pgsave restore showpage}def % dont' bind 178 | /re{4 2 roll m 1 index 0 rlineto 0 exch rlineto neg 0 rlineto h}bd 179 | 180 | /scrdict 10 dict def 181 | /scrmtx matrix def 182 | /patarray 0 def 183 | /createpat{patarray 3 1 roll put}bd 184 | /makepat{ 185 | scrmtx astore pop 186 | gsave 187 | initgraphics 188 | CM 189 | patarray exch get 190 | scrmtx 191 | makepattern 192 | grestore 193 | setpattern 194 | }bd 195 | 196 | /cg_BeginEPSF{ 197 | userdict save/cg_b4_Inc_state exch put 198 | userdict/cg_endepsf/cg_EndEPSF load put 199 | count userdict/cg_op_count 3 -1 roll put 200 | countdictstack dup array dictstack userdict/cg_dict_array 3 -1 roll put 201 | 3 sub{end}repeat 202 | /showpage {} def 203 | 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 204 | 10 setmiterlimit [] 0 setdash newpath 205 | false setstrokeadjust false setoverprint % don't use F 206 | }bd 207 | /cg_EndEPSF{ 208 | countdictstack 3 sub { end } repeat 209 | cg_dict_array 3 1 index length 3 sub getinterval 210 | {begin}forall 211 | count userdict/cg_op_count get sub{pop}repeat 212 | userdict/cg_b4_Inc_state get restore 213 | F setpacking 214 | }bd 215 | 216 | /cg_biproc{currentfile/RunLengthDecode filter}bd 217 | /cg_aiproc{currentfile/ASCII85Decode filter/RunLengthDecode filter}bd 218 | /ImageDataSource 0 def 219 | L3?{ 220 | /cg_mibiproc{pop pop/ImageDataSource{cg_biproc}def}bd 221 | /cg_miaiproc{pop pop/ImageDataSource{cg_aiproc}def}bd 222 | }{ 223 | /ImageBandMask 0 def 224 | /ImageBandData 0 def 225 | /cg_mibiproc{ 226 | string/ImageBandMask xs 227 | string/ImageBandData xs 228 | /ImageDataSource{[currentfile/RunLengthDecode filter dup ImageBandMask/readstring cvx 229 | /pop cvx dup ImageBandData/readstring cvx/pop cvx]cvx bind}bd 230 | }bd 231 | /cg_miaiproc{ 232 | string/ImageBandMask xs 233 | string/ImageBandData xs 234 | /ImageDataSource{[currentfile/ASCII85Decode filter/RunLengthDecode filter 235 | dup ImageBandMask/readstring cvx 236 | /pop cvx dup ImageBandData/readstring cvx/pop cvx]cvx bind}bd 237 | }bd 238 | }ifelse 239 | /imsave 0 def 240 | /BI{save/imsave xd mark}bd 241 | /EI{imsave restore}bd 242 | /ID{ 243 | counttomark 2 idiv 244 | dup 2 add % leave room for imagetype and imagematrix 245 | dict begin 246 | {def} repeat 247 | pop % remove mark 248 | /ImageType 1 def 249 | /ImageMatrix[Width 0 0 Height neg 0 Height]def 250 | currentdict dup/ImageMask known{ImageMask}{F}ifelse exch 251 | % currentdict on stack 252 | L3?{ 253 | dup/MaskedImage known 254 | { 255 | pop 256 | << 257 | /ImageType 3 258 | /InterleaveType 2 259 | /DataDict currentdict 260 | /MaskDict 261 | << /ImageType 1 262 | /Width Width 263 | /Height Height 264 | /ImageMatrix ImageMatrix 265 | /BitsPerComponent 1 266 | /Decode [0 1] 267 | currentdict/Interpolate known 268 | {/Interpolate Interpolate}if 269 | >> 270 | >> 271 | }if 272 | }if 273 | exch 274 | {imagemask}{image}ifelse 275 | end % pop imagedict from dict stack 276 | }bd 277 | 278 | /cguidfix{statusdict begin mark version end 279 | {cvr}stopped{cleartomark 0}{exch pop}ifelse 280 | 2012 lt{dup findfont dup length dict begin 281 | {1 index/FID ne 2 index/UniqueID ne and 282 | {def} {pop pop} ifelse}forall 283 | currentdict end definefont pop 284 | }{pop}ifelse 285 | }bd 286 | /t_array 0 def 287 | /t_i 0 def 288 | /t_c 1 string def 289 | /x_proc{ % x y 290 | exch t_array t_i get add exch moveto 291 | /t_i t_i 1 add store 292 | }bd 293 | /y_proc{ % x y 294 | t_array t_i get add moveto 295 | /t_i t_i 1 add store 296 | }bd 297 | /xy_proc{ 298 | % x y 299 | t_array t_i 2 copy 1 add get 3 1 roll get 300 | 4 -1 roll add 3 1 roll add moveto 301 | /t_i t_i 2 add store 302 | }bd 303 | /sop 0 def % don't bind sop 304 | /cp_proc/x_proc ld % default moveto proc is for xwidths only 305 | /base_charpath % string array 306 | { 307 | /t_array xs 308 | /t_i 0 def 309 | { % char 310 | t_c 0 3 -1 roll put 311 | currentpoint 312 | t_c cply sop 313 | cp_proc 314 | }forall 315 | /t_array 0 def 316 | }bd 317 | /sop/stroke ld % default sop is stroke. Done here so we don't bind in /base_charpath 318 | 319 | % default sop is stroke 320 | /nop{}def 321 | /xsp/base_charpath ld 322 | /ysp{/cp_proc/y_proc ld base_charpath/cp_proc/x_proc ld}bd 323 | /xysp{/cp_proc/xy_proc ld base_charpath/cp_proc/x_proc ld}bd 324 | /xmp{/sop/nop ld /cp_proc/x_proc ld base_charpath/sop/stroke ld}bd 325 | /ymp{/sop/nop ld /cp_proc/y_proc ld base_charpath/sop/stroke ld}bd 326 | /xymp{/sop/nop ld /cp_proc/xy_proc ld base_charpath/sop/stroke ld}bd 327 | /refnt{ % newname encoding fontname 328 | findfont dup length dict copy dup 329 | /Encoding 4 -1 roll put 330 | definefont pop 331 | }bd 332 | /renmfont{ % newname fontname 333 | findfont dup length dict copy definefont pop 334 | }bd 335 | 336 | L3? dup dup{save exch}if 337 | 338 | % languagelevel2 ONLY code goes here 339 | 340 | /Range 0 def 341 | /DataSource 0 def 342 | /val 0 def 343 | /nRange 0 def 344 | /mulRange 0 def 345 | /d0 0 def 346 | /r0 0 def 347 | /di 0 def 348 | /ri 0 def 349 | /a0 0 def 350 | /a1 0 def 351 | /r1 0 def 352 | /r2 0 def 353 | /dx 0 def 354 | /Nsteps 0 def 355 | /sh3tp 0 def 356 | /ymax 0 def 357 | /ymin 0 def 358 | /xmax 0 def 359 | /xmin 0 def 360 | 361 | /setupFunEval % funDict -- % this calculates and sets up a function dict for evaulation. 362 | { 363 | begin 364 | /nRange Range length 2 idiv store 365 | /mulRange % precompute the range data needed to map a sample value from the table to a range value 366 | % this data looks like [ range0mul range0min range1mul range1min ... rangeN-1mul rangeN-1min ] 367 | [ 368 | 0 1 nRange 1 sub 369 | { % index 370 | 2 mul/nDim2 xd % 2*dimension# we are dealing with 371 | Range nDim2 get % ymin 372 | Range nDim2 1 add get % ymin ymax 373 | 1 index sub % ymin (ymax-ymin) 374 | % xmin = 0, xmax = 255 (2^bitspersample - 1) 375 | 255 div % ymin (ymax-ymin)/(xmax - xmin) 376 | exch % (ymax-ymin)/(xmax - xmin) ymin 377 | }for 378 | ]store 379 | end 380 | }bd 381 | 382 | /FunEval % val1 fundict -> comp1 comp2 ... compN 383 | { 384 | begin 385 | % the value passed in is the base index into the table 386 | nRange mul /val xd % compute the actual index to the table 387 | % since there are nRange entries per base index 388 | 0 1 nRange 1 sub 389 | { 390 | dup 2 mul/nDim2 xd % dim 391 | val % base value to use to do our lookup 392 | add DataSource exch get % lookedupval 393 | mulRange nDim2 get mul % lookedupval*(ymax-ymin)/(xmax-xmin) 394 | mulRange nDim2 1 add get % lookedupval*(ymax-ymin)/(xmax-xmin) ymin 395 | add % interpolated result 396 | }for % comp1 comp2 ... compN 397 | end 398 | }bd 399 | 400 | /max % a b -> max(a, b) 401 | { 402 | 2 copy lt 403 | {exch pop}{pop}ifelse 404 | }bd 405 | 406 | /sh2 407 | { % emulation of shading type 2. Assumes shading dictionary is top dictionary on the dict stack 408 | /Coords load aload pop % x0 y0 x1 y1 409 | 3 index 3 index translate % origin is now at beginning point of shading 410 | % x0 y0 x1 y1 411 | 3 -1 roll sub % x0 x1 y1-y0 412 | 3 1 roll exch % y1-y0 x1 x0 413 | sub % y1-y0 x1-x0 414 | 2 copy 415 | dup mul exch dup mul add sqrt % length of segment between two points 416 | dup 417 | scale 418 | atan % atan (dy/dx) 419 | %dup (rotation angle = )print == 420 | rotate % now line between 0,0 and 1,0 is the line perpendicular to which the axial lines are drawn 421 | 422 | /Function load setupFunEval % may need to setup function dictionary by calling setupFunEval 423 | 424 | % this is now specific to axial shadings. Compute the maximum bounds to fill 425 | clippath {pathbbox}stopped {0 0 0 0}if newpath % x0 y0 x1 y1 426 | /ymax xs 427 | /xmax xs 428 | /ymin xs 429 | /xmin xs 430 | currentdict/Extend known 431 | { 432 | /Extend load 0 get 433 | { 434 | 0/Function load FunEval sc % evaluate the function to get a color and set it 435 | xmin ymin xmin abs ymax ymin sub rectfill 436 | }if 437 | }if 438 | % paint the rects. The sampling frequency is that of our table 439 | /Nsteps/Function load/Size get 0 get 1 sub store 440 | /dx 1 Nsteps div store 441 | gsave 442 | /di ymax ymin sub store 443 | /Function load 444 | % loop Nsteps + 1 times, incrementing the index by 1 each time 445 | 0 1 Nsteps 446 | { 447 | 1 index FunEval sc 448 | 0 ymin dx di rectfill 449 | dx 0 translate 450 | }for 451 | pop % pop our function 452 | grestore % origin is back to start point 453 | currentdict/Extend known 454 | { 455 | /Extend load 1 get 456 | { 457 | Nsteps/Function load FunEval sc % last element 458 | 1 ymin xmax 1 sub abs ymax ymin sub rectfill 459 | }if 460 | }if 461 | }bd 462 | 463 | /shp % this paints our shape for shading type 3 464 | { % x1 r1 x0 r0 - 465 | 4 copy 466 | 467 | % fill interior arc 468 | dup 0 gt{ 469 | 0 exch a1 a0 arc 470 | }{ 471 | pop 0 moveto 472 | }ifelse 473 | 474 | dup 0 gt{ 475 | 0 exch a0 a1 arcn 476 | }{ 477 | pop 0 lineto 478 | }ifelse 479 | 480 | fill 481 | 482 | % fill exterior arc 483 | dup 0 gt{ 484 | 0 exch a0 a1 arc 485 | }{ 486 | pop 0 moveto 487 | }ifelse 488 | 489 | dup 0 gt{ 490 | 0 exch a1 a0 arcn 491 | }{ 492 | pop 0 lineto 493 | }ifelse 494 | 495 | fill 496 | }bd 497 | 498 | /calcmaxs 499 | { % calculate maximum distance vector from origin to corner points 500 | % of bbox 501 | xmin dup mul ymin dup mul add sqrt % (xmin2 + ymin2) 502 | xmax dup mul ymin dup mul add sqrt % (xmax2 + ymin2) 503 | xmin dup mul ymax dup mul add sqrt % (xmin2 + ymax2) 504 | xmax dup mul ymax dup mul add sqrt % (xmax2 + ymax2) 505 | max max max % maximum value 506 | }bd 507 | 508 | /sh3 509 | { % emulation of shading type 3. Assumes shading dictionary is top dictionary on the dict stack 510 | /Coords load aload pop % x0 y0 r1 x1 y1 r2 511 | 5 index 5 index translate % origin is now at first circle origin 512 | 3 -1 roll 6 -1 roll sub % y0 r1 y1 r2 dx 513 | 3 -1 roll 5 -1 roll sub % r1 r2 dx dy 514 | 2 copy dup mul exch dup mul add sqrt 515 | /dx xs % r1 r2 dx dy 516 | 2 copy 0 ne exch 0 ne or 517 | { 518 | % r1 r2 dx dy 519 | exch atan rotate % we are now rotated so dy is zero and positive values of dx move us as expected 520 | }{ 521 | pop pop 522 | }ifelse 523 | % r1 r2 524 | /r2 xs 525 | /r1 xs 526 | /Function load 527 | dup/Size get 0 get 1 sub % this is the size of our table minus 1 528 | /Nsteps xs % at some point we should optimize this better so NSteps is based on needed steps for the device 529 | setupFunEval % may need to setup function dictionary by calling setupFunEval 530 | % determine the case: 531 | % case 0: circle1 inside circle2 532 | % case 1: circle 2 inside circle 1 533 | % case 2: r1 = r2 534 | % case 3: r1 != r2 535 | dx r2 add r1 lt{ 536 | % circle 2 inside of circle 1 537 | 0 538 | }{ 539 | dx r1 add r2 le 540 | { % circle 1 inside of circle 2 541 | 1 542 | }{ % circles don't contain each other 543 | r1 r2 eq 544 | { % equal 545 | 2 546 | }{ % r1 != r2 547 | 3 548 | }ifelse 549 | }ifelse 550 | }ifelse 551 | /sh3tp xs % sh3tp has the number of our different cases 552 | clippath {pathbbox}stopped {0 0 0 0}if 553 | newpath % x0 y0 x1 y1 554 | /ymax xs 555 | /xmax xs 556 | /ymin xs 557 | /xmin xs 558 | 559 | % Arc angle atan( sqrt((dx*dx + dy*dy) - dr*dr), dr) 560 | dx dup mul r2 r1 sub dup mul sub dup 0 gt 561 | { 562 | sqrt r2 r1 sub atan 563 | /a0 exch 180 exch sub store 564 | /a1 a0 neg store 565 | }{ 566 | pop 567 | /a0 0 store 568 | /a1 360 store 569 | }ifelse 570 | 571 | currentdict/Extend known 572 | { 573 | /Extend load 0 get r1 0 gt and % no need to extend if the radius of the first end is 0 574 | { 575 | 0/Function load FunEval sc % evaluate the function to get a color and set it 576 | % case 0: circle1 inside circle2 577 | % case 1: circle 2 inside circle 1 578 | % case 2: circles don't contain each other and r1 == r2 579 | % case 3: circles don't contain each other and r1 != r2 580 | { 581 | { % case 0 582 | dx 0 r1 360 0 arcn 583 | xmin ymin moveto 584 | xmax ymin lineto 585 | xmax ymax lineto 586 | xmin ymax lineto 587 | xmin ymin lineto 588 | eofill % for the bigger radius we fill everything except our circle 589 | } 590 | { % case 1 591 | r1 0 gt{0 0 r1 0 360 arc fill}if 592 | } 593 | { % case 2 594 | % r1 == r2, extend 0 595 | % r3 = r, x3 = -(abs(minx) + r), x1 = 0 596 | 597 | % x(i+1) r(i+1) x(i) r(i) shp 598 | 0 r1 xmin abs r1 add neg r1 shp 599 | } 600 | { % case 3 601 | % no containment, r1 != r2 602 | 603 | r2 r1 gt{ % the endpoint we are drawing is that with a circle of zero radius 604 | % x(i+1) r(i+1) x(i) r(i) shp 605 | 0 r1 606 | r1 neg r2 r1 sub div dx mul % this is point of beginning circle 607 | 0 % point of ending circle 608 | shp % takes x(i+1) r(i+1) x(i) r(i) 609 | }{ % the first circle is the bigger of the two 610 | % we find a circle on our line which is outside the bbox in the 611 | % negative direction 612 | % x(i+1) r(i+1) x(i) r(i) shp 613 | 0 r1 calcmaxs % 0 r1 maxs 614 | dup 615 | % calculating xs: (-(maxs+r2)*x2)/(x2-(r1-r2)) 616 | r2 add dx mul dx r1 r2 sub sub div 617 | neg % maxs xs' 618 | exch 1 index % xs' maxs xs' 619 | abs exch sub 620 | shp 621 | }ifelse 622 | } 623 | }sh3tp get exec % execute the extend at beginning proc for our shading type 624 | }if 625 | }if 626 | 627 | % now do the shading 628 | /d0 0 store 629 | /r0 r1 store 630 | /di dx Nsteps div store 631 | /ri r2 r1 sub Nsteps div store 632 | /Function load 633 | 0 1 Nsteps 634 | { % function t(i) 635 | 1 index FunEval sc 636 | d0 di add r0 ri add d0 r0 shp 637 | { 638 | % fill interior arc 639 | d0 0 r0 a1 a0 arc 640 | d0 di add 0 r0 ri add a0 a1 arcn 641 | fill 642 | 643 | % fill exterior arc 644 | d0 0 r0 a0 a1 arc 645 | d0 di add 0 r0 ri add a1 a0 arcn 646 | fill 647 | }pop 648 | 649 | % advance to next 650 | /d0 d0 di add store 651 | /r0 r0 ri add store 652 | }for 653 | pop % pop our function dict 654 | 655 | % handle Extend 656 | currentdict/Extend known 657 | { 658 | /Extend load 1 get r2 0 gt and % no need to extend if the radius of the last end is 0 659 | { 660 | Nsteps/Function load FunEval sc % last element 661 | % case 0: circle1 inside circle2 662 | % case 1: circle 2 inside circle 1 663 | % case 2: circles don't contain each other and r1 == r2 664 | % case 3: circles don't contain each other and r1 != r2 665 | { 666 | { 667 | dx 0 r2 0 360 arc fill 668 | } 669 | { 670 | dx 0 r2 360 0 arcn 671 | xmin ymin moveto 672 | xmax ymin lineto 673 | xmax ymax lineto 674 | xmin ymax lineto 675 | xmin ymin lineto 676 | eofill % for the bigger radius we fill everything except our circle 677 | } 678 | { % r1 == r2, extend 1 679 | % r3 = r, x3 = (abs(xmax) + r), x1 = dx 680 | % x(i+1) r(i+1) x(i) r(i) shp 681 | xmax abs r1 add r1 dx r1 shp 682 | } 683 | { % no containment, r1 != r2 684 | 685 | r2 r1 gt{ 686 | % we find a circle on our line which is outside the bbox in the 687 | % positive direction 688 | % x(i+1) r(i+1) x(i) r(i) shp 689 | calcmaxs dup % maxs maxs 690 | % calculating xs: ((maxs+r1)*x2)/(x2-(r2-r1)) 691 | r1 add dx mul dx r2 r1 sub sub div % maxs xs 692 | exch 1 index % xs maxs xs 693 | exch sub 694 | dx r2 695 | shp 696 | }{ % the endpoint we are drawing is that with a circle of zero radius 697 | % x(i+1) r(i+1) x(i) r(i) shp 698 | r1 neg r2 r1 sub div dx mul % this is point of ending circle 699 | 0 % radius of ending circle 700 | dx % point of starting circle 701 | r2 % radius of starting circle 702 | shp 703 | }ifelse 704 | } 705 | } 706 | sh3tp get exec % execute the extend at end proc for our shading type 707 | }if 708 | }if 709 | }bd 710 | /sh % emulation of shfill operator for type 2 and type 3 shadings based on type 0 functions 711 | { % shadingDict -- 712 | begin 713 | /ShadingType load dup dup 2 eq exch 3 eq or 714 | { % shadingtype 715 | gsave 716 | newpath 717 | /ColorSpace load scs 718 | currentdict/BBox known 719 | { 720 | /BBox load aload pop % llx lly urx ury 721 | 2 index sub % llx lly urx ury-lly 722 | 3 index % llx lly urx ury-lly llx 723 | 3 -1 roll exch sub 724 | exch rectclip 725 | }if 726 | 2 eq 727 | {sh2}{sh3}ifelse 728 | grestore 729 | }{ 730 | % shadingtype 731 | pop 732 | (DEBUG: shading type unimplemented\n)print flush 733 | }ifelse 734 | end 735 | }bd 736 | 737 | % end of language level 2 ONLY code 738 | 739 | {restore}if not dup{save exch}if 740 | % languagelevel3 ONLY code goes here 741 | L3?{ % we do these loads conditionally or else they will fail on a level 2 printer 742 | /sh/shfill ld 743 | /csq/clipsave ld 744 | /csQ/cliprestore ld 745 | }if 746 | {restore}if 747 | 748 | %currentdict dup maxlength exch length sub (number of extra slots in md = )print == flush % *** how many entries are free 749 | end 750 | setpacking 751 | % count 0 ne { pstack(***extras on stack during prolog execution***\n)print flush}if % *** BARK if anything is left on stack 752 | %%EndFile 753 | %%EndProlog 754 | %%BeginSetup 755 | % Disable CTRL-D as an end-of-file marker... 756 | userdict dup(\004)cvn{}put (\004\004)cvn{}put 757 | [{ 758 | %%BeginFeature: *ColorModel RGB 759 | <>setpagedevice 760 | %%EndFeature 761 | } stopped cleartomark 762 | [{ 763 | %%BeginFeature: *MediaType any 764 | %%EndFeature 765 | } stopped cleartomark 766 | [{ 767 | %%BeginFeature: *PageSize Letter 768 | <>setpagedevice 769 | %%EndFeature 770 | } stopped cleartomark 771 | [{ 772 | %%BeginFeature: *cupsPrintQuality Normal 773 | <>setpagedevice 774 | %%EndFeature 775 | } stopped cleartomark 776 | % x y w h ESPrc - Clip to a rectangle. 777 | userdict/ESPrc/rectclip where{pop/rectclip load} 778 | {{newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto 779 | neg 0 rlineto closepath clip newpath}bind}ifelse put 780 | % x y w h ESPrf - Fill a rectangle. 781 | userdict/ESPrf/rectfill where{pop/rectfill load} 782 | {{gsave newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto 783 | neg 0 rlineto closepath fill grestore}bind}ifelse put 784 | % x y w h ESPrs - Stroke a rectangle. 785 | userdict/ESPrs/rectstroke where{pop/rectstroke load} 786 | {{gsave newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto 787 | neg 0 rlineto closepath stroke grestore}bind}ifelse put 788 | userdict/ESPwl{}bind put 789 | %%EndSetup 790 | %%Page: 1 1 791 | %%PageBoundingBox: 0 0 612 792 792 | %%BeginPageSetup 793 | %%EndPageSetup 794 | cg_md begin 795 | bp 796 | sdmtx 797 | %RBIBeginFontSubset: IWOHBZ+Vibes-Regular 798 | %!FontType1-1.0: IWOHBZ+Vibes-Regular 000.900 %%CreationDate: 7/12/19 % Copyright 2019 Apple Inc. and its licensors, all rights reserved. 11 dict begin /FontInfo 9 dict dup begin /version (000.900) readonly def /FullName (Vibes Regular) readonly def /Weight (SnapShot) readonly def /isFixedPitch false def /UnderlinePosition -75 def /UnderlineThickness 50 def end readonly def /FontName /IWOHBZ+Vibes-Regular def /PaintType 0 def /FontType 1 def /FontMatrix [0.0010 0 0 0.0010 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 33 /space put readonly def /FontBBox {-117 -680 842 1105} readonly def currentdict end currentfile eexec D9D66F633B846A989B9974B0179FC6CC4458BB4CB99E3608702C78822367AAF89059868F63F93207640A6BD5DA214789 139C491E02A37BF3866F2964E8D690D48D9F6C4A5EC22355F8123573812483E06B968AE84B5F20A982A0E65764753516 97AB8C6EA040355C5542F297D7A3AF28AB93EA0771E0D56DBF00F7CA9CE9FB9FC2E0ECB00D04D5F5F3F24B987B546D62 74971A477DEE12C44623C180BCDBA21172627610C4736632D1A4693E79719C3BC43DF5330790A52DCD4CF455ACC213F6 B1C4BA249179DB360225568161552A16682E3A3604BFC39D571B1F8F183746CED447A512FCCED4867841CD4E73E5A263 0DE0248030AB7C1317763D6CDD07D69BFC940E412CCBB646708B671FF930312AFD7D9F1901A0B36EB57713754535193C 3AEA84F6569A6EB51B2E27DC1344CC152EA38A18C05BE3407CD6D78C0FC323B045676A365809C449323EB7FCD627D107 98B449B2E0643548310F987B92F0C46795D3FBAAB47BE5386E0BB392EA3543C341067F4EA70698E1619F3F98F4560BD1 1017E4B4F35AAD589860FC2F82267DFB082C5867A0DC8EB04543F6C67FAAC8814E495AA2A719B35F789D57437E0B5FBB A4DF7FDC2D724A20A739B0DB169DDA0AD6611EE113017976CA58E0427396A82E1D8841E4D7135A67FB57D92171D1F0CF AF20DF6F2117B818DEF8EC76F932D6E6717CB267BAE93F19B43EF76BB109382F6EBE373A1011D4528D5574EC0C2D0510 66A7ED76942FA4DE0B7D9EF4D146A9D53B0C3194CE8E4381FAFAE00B34A6953A7899D491D01F6FE9FB41978397F72701 A4AA7DB804226BD6DD3A606921EC9D97FE28975F868156AA4CC409ABB504F7C60C8DE41F7DF1CBB6FE60E5FEEA9238C2 3A9C1F66CE56116AD404C137B9973CA54E6725883ED5025BC2D45AEA2444C7421FFC7C16702EFEF584AF0A3009EA9782 1CB9AD882BB096124C071D7C20287F63F5F20AAD6E11753696A47ABC3AC7B3A3EC0E0AB40565E8E789224D54AC1B6FB2 F26E0EF852E7A59D8382B28359169E004F7AF555947150DF0B37AB0D8090A47CA63CC9DAC6B7D3459E4D357B35FC9A7F FDB3BB32C52B188361E969C0D0A8B25DA37A20999A346FA9564E4E86019E760CF0172C9405C01F9E28916700DB5045F6 64A6E8E58E5FDE0E42DC5CFED5223B24D8140A8265AB66DB853E0994DE82311A4BA38D110F7B100AB42F95FAE67F06FB 56BC9ACEDECFE596B97726545AD2BB8E28CC2E573DD62818F4B163154344D145B3C970AE75F031E4EB42A8F4D34DC2D2 0014E2E992A09645E5C2BBEBF97A1CC1C35AD0708ED830229FD98B04B60A8DB83623BA224B7C27FABEDBC22714087594 B182525B89C4C062D855AB938480E2E43BD803C3AFBAA99844376B3E4CB50967C6360CB5015184190940F1E797B50A95 0775993A1DA07A064DDF5FDD316294D126E92E39895BB267B8B359401F0D09AFB531A718980D36AF644A516196411998 74FBAB89F553F51DC189ECF411FD519205F040387C2CBD540DC221C2EF83375C1FB6F2AC2A317C5D292A24F15AF1FEBB 24E5CB26723F07409EDAD58314662999C196C90D87576EDDDDD04FB496BEAD5A0CACF9B095529CE32A39D3F13F424342 6D13322C997973ACBF4068B81D3B829065215AE294DEF0F6111DFA5905B61C280C44201FFB660D4AA016F4E3F927D150 EA11E3163B84FD38225D1AB1D29D4C011EC13DE3618C5155108EA2632CC507E6862351C8DC48F22669DE6DFF4C4FD118 42733B59102B1A6EDEFFA9875C8E444ED400797C418548E9E3ED5E65A1B4BD6A025D472F1C4CD078AFB9ADB403FA547C 46C7F19F913B4D748F1D7C96E3CFEA364E2D9992C678D4A6528AD87C932F0719CC7D00EC04018F8975AD9A71A9D9AB50 A1F7D25243842B2B20A37F94A628D550C9B719D36268B22CE443D11D19053C99040DF7F5FB62EDC3DC72AA2E70D53F46 1ABC42F10769EF11DC292E762EAF8DEFF85C2037BB77E6B6E81349B3610BF140B7EA31C8FE8094355934235309F3A104 A5D0F70410ABB56CE9967B95EFA3158A271BD92D12B9CB6944A8EE3A8E5624EA889E0BB45CBC00920E103EEA538D8773 C6B24543B1443FD738EAC6D8BCCCB9726A94FFA92A9093CCB0BADC6693C17AD635137609BCA7E9C0942408D9578F9680 65CA8F10DBD047096ED231A40D844A0E159088FCF2691814B8B50A81920DBF2C505BF329497029CB230B0C604616D910 A855E3A9C001906FD657C12F683211453C8280D5C742B0C82C1BF405757A0B3FF6B2C64553028BE24B12A741F9D0B984 0E72CA5B325E9261C6FB9CA4AC9EA9A75E56DC2C1EEDEA8D59484D7998A3F5432EF0A3330467D4B8D20F138E51B8AF8E 6207422FB47524E4C813E8380986F44355C4A04A4CB59267848A4FEA2B0441DA2A915B849F23FFA55112EB45E22CD9BE 8310B995116FBD54337E5B2623AE07E1E7911BC0C18145E3F40A917161C254CD4ED39F7C9F447EDAA34746FD2E93F37A 2AE30259501D617BB8BDEC03029B3819163FD138EF4DFDDBFC48EB72661F495928755FCC04902165CE78A8B3E32649A5 0643B07C74E6356ADD4351A6A6DC3322F82C149494BE2615979C21D4F65367CAADBB26622CF419C6A6507F539AD1F3C4 83734980F422B3484DB024C76604E67568BC8D16EB710D3F7FDBDEFB3DA0E9FED063F49A33FEE2A9EFE5D1D90C1488B8 63CBBAEEB4FD7B2F540EF00FF284B465335954912FDD559DC7DAC640E1C454D8983C43F20555E08354D3EBA08FEE0DE8 75F2B8B305F5F7DF7F5CCE58A162E3024BD826E65927D5BDA936B3E4755D801DC4965BF9EB7784D4A892331D914848C6 8AF6397F4056B1C5644ADA7ACE562B2B82C9633B5930D7F05CE5D07CC9D1CFB2C49DC1F2BBA198C0CE7368F51307B5C7 1F8BF6B674AB12F2AFCF7EBF43FD00EE7A8E94A936E7A8A1D50F0BC3713EAB70E7C860D52A89E6F1021B55ED0205C639 2D97476B0213A340DEEEDDC05E44364C7F00F68F85BF535D4591068CF44F51FA4B18F6243411E6034E8D7D66A202BB54 8DDCB810EBE80AA44C85274BF831C9F0D9B2CCAD35E88CD01E3C459382A64D0CD966093625C857E6CD4C15AAC3EEC8E5 B8B64A06CFA738016B4B2F2F88AC8B79122476B52703E9A503DADB66E3EF0BF360BB2258F6D8412DA8A93EDD76FA8A28 D39683E48AD922B16EB58C3694141D714B19821B68EE3788D164512D44FA224CB603278EBCF633F6C00B4A284ABEF951 DBEBB71EED0A9202BA04375D1B42A71F0FCECF0CCD40E705098426C27D4E9992897031381588ED4034D538677EC69C6D DA2FB2A3343207A16232C6C56FA8E6AFA52C43D38A865A6C60B472AC4F453F5B71849B94F4AA732B75A3B71812098CA9 0725F9693429452E5DA0C951D053E588A3A4D8EA3C2D26F2A4F1D33A08216D2F995710BDCC200F68531669AAF364DACB 5892C8336A67CC4CB66A7C81857F67DECE9C39B48CD6B17FF1E4368F462E591EF12852D5851173F223C7A84564186E00 6FC304410FF0CE7D79A82BE3A3DF47A065401919294EA3282C496A9CBABAC7F7FEE16F252E32E35FB690751574E3DD32 019C53B65DB80719F8504D0600936BEB94C0621D33E9358F5A32C4971AF2701529654F548FBB88FF202B87433908B64C 9A0328089DAA4342452AA56CD9D135268092854160C6743749482F0515A69564BCAFA7BC97A7917406C46A6392AF1AE3 57C6AFF952CB8EEBA83C789F45E70716201073B503F592C4E6257BA79ED0FD5EEBCE59A97E3CF9925D4504E864E11193 EF9B2DCECD871B12895985EE8FEDA11D8E89612F9E44EFB8ED31B1E91652B79977F62A074B7E5B928D8D33BDEE051E02 42C310554C8DBDD5C6EE7FB375BB069E2B7EB54EDE1E29C15EF153CEAD6A143D423B8ED7338CBA46423F63F8D9784B2E 6C2B2D985461F472950E5D1B4CFB4FFE4C2467543A7278643CCE16CECBCAE9210E4F1C907C429C4CF0ED9B9C8822BD9A 1BEFF5A2234252765D78B27760C70A8E35F37C1EDD7742CB752FDA33CC97A4D1D5A380967A3BEE0BC22B18B4A23CD195 F536ED4E4B323AF28EF27D325B74D84FFB36A35355932FEACBB40F70AF4133A1578485073ABABF9389FF4165B64A6209 BCA4E41EC9080D8D1CBE5DE4E05EE951530D4511B9EA0BEBFA265CB8923B77B38E20537846E1B74D4875C40011399BC5 E3926597E4A0AD503D0E001CFA92ADB215C61582402CEA60739D2FAEDAACAC32B1221D2C20894599B3B4F24063B877FE D65E44C8E71D5E6B77634BCE3D81942C40F5B4DB9F7797B099D53D8BAFE4D6CCBB5A9418A47B4382794DBB3FE0EA63EA F81240BFE41357BDDC7A258FF09C65AC707F99FB1DBD8F15B8A8EBDE5E015B9CE295C095B992EB532E556E8AA58414FD 633E101828FF2FADFF7925F0579AFCEAE9FC2B4132D9D199943B3B8E6FE060AF670CC01814464F5005109940CDD440D6 A697EF14C768B9A264676E21522F519EE17733C5A87269C6510445765A7E5AFEA80A31625B51ED29373485045EC41C74 564FEE23D31BFC150E0C347FCF60288DE70FA0BB1761314571E3E0CDB93739BD5DDA3A60FB8796E8C6E1760D2509B7D9 D6A2D6CC5E4422CC4C1C48A1795C23F07D985D94272EBCCDF07D53008F94BD99D36229705460F94D17C89C352E277D5C 7F304053AE7D79FBB5BCFB6B4D4E9E9C5AD174779E8B1C44252BBB4E3586405327BB5EB240B6E786D790A83C814EBCFC ECADE5B31DF3F27CEE0638434CA991EAAFC2BC24E05433D350DB4E54839C5A7C83EB37B6F3739420BAD168C16BE6763E 3932C8A8B98A8C7F3E069749F8378D60572D312CCB4BFC6A5046A97497B32CEA70FBE8DEF8B446427EAB1B19DEF47AB4 6BECB631E1C49E0E0863FC86EADD37D7CA1E6BEE8DD7B824A9C7D9766BD0B7AC1ABEE486C4A3E8EA8102301BA1E74518 08C15545ADEFA4E47B8CFE580A9DBA8EE50482833D46040B2804E2E50A78D14238D22192A84ECB204596F170062C1FF1 F77E92DE03AE0BDCB6474A8E53E78D38DA89757B9809CB3B884F03950C4A3F8F8E18F5A834CECEDCBDE7260F11ED9B99 4161C391349976A18ADE32C6CC1200FC488E5E77AFCE4CC2115785FBDAF23058C9C301AA51A51898A9F7EFE7C5A3EEC7 265044C641FF0392E5921CBEED20B50159A92073C601A7DDD50F7342098848BCE0FE85C8E4D44CAC871D95B2D296CCA7 BE1AB4F181E39AA8F75DDD64CC4AAB7A2BFE603E62DF598A6D016485F0636D69F5CC8A2E4D84D12C1C2624F5995E178C 48B2D86E5F737C6157CEFB0A4508C66F7343BFB216BFAB88AC8780C9B5AE5267FE89299685C6E509A1E82AEECC0065B6 A33C56D66CF7E7B3113FD279B760F2F749D674BC0BF7F797F9BABF6F5B0DE1B5AC3E95B4F901EDDAF968F52B21F80889 81EAD67ABCF85F040DE90D454799643C5D8CE01196A20A119493F4445291A4E23305A3A260DB5F37D780726852E423DF 8FA59F5FA88FCEEC672911CC8A1035CB909A0F995CC432D11D8F2FF9F82ED2C73275900FB50B5ABA2B6096F2B81A8627 B0A6CD8F4FED653DB93C1B2F464C6D4EBEAA0DCE38597C47FF626DF2D5A29BF2D7C2E3AEFC1F7F721F39F93A6B47D756 FCF9484CF253A889E63DBB663952C8394C9FDEA9F7C07B379351F59FE9ED738FB1C48C247F3F5A32E23877ABD8F27928 865971B7493325E0F43423EA74CD1F767FC840560C212D57B9B22E89EF4E5B3D439FA647A17BBA2F1642A82511C62715 5E29C8E9926E1834F22427BE1465017A2F3F35EA39C82C04FC4D625B18BCF1B0C2FD1D5C21F817C0E8D30E960C00E2C8 B7A89213CE1D010A1A547ED74991B35CF394A5B5ED2B0A34F0E3C7FD0C4B58C37BD4E9419AC8145C787A8D93E0C266D9 C7FA3B069C5233717FADCE5FC029BFEB1321265EAB59DB0A228C375DFE530CAE054EE5692B1D6A7AED7F4E9C0C2A0DC9 ED579785756ADAE35E3D308444ED372870B63B02F2282552678A57136EE440678C6E5808DF5E226C566622810A9DF11A BA3B1BD666C683926092BFA088FFB627815582BD599132E0EAF2533DD4BBF1E3F5A783EB77F15F1ADE5CA551FEFE465E ED6A2151987A490A3C070FC9864A4D0AD9165BE964F4FB2FF45B46F2753D4D978C360D7A8C9F18563F69BF760B6094A4 1A15BA51EBCE3BEA3A436DF25ADB92853B9F0E6FFE3EF5A1A6901547C62129829C3B03E544EBFF0237641FFC273EAFA8 12A99E58FEB40D252F63901D3928B5679B42830D0B6669C110BB8B2A4B62571A3F82C3FB4DCC07EE5C2FD46E95806780 AB634D0B943A7C32716A0FFF3FF1EA79B73BCA6AB279BB61696260E2EF29635D69F779413D579D4EC2475FB9933F52EC C83815739B30202060830CBD579A33D9802E6397C1F2B203BE7E12F01CBFFFCEB35170F7369C105E57E57E3E427965A0 99249606380E6234C9EC806EB7B4DBED77F592ABA262176558E6BDC479AB1BD92442644A4A31EF01B95478B2D32F406C 4AEA1E487C4A7FD8E85F5538E292B0F33031DDA4C445AA4A7AAB1515E5BD688943C57946B3F38229E2E31714C186BEF3 FAD940E69BEDE8D2ABC3698995D1ADCB7A285DFC5FFA523A6B30EA58A3C61576C8FC020B6439380D4D67B81F98542F5A E21AA1FAA6DB2A6122EBF91EE30DF96A07981B1328EF4FE7FE75483596849803ED12242D50BF7DCE7E4A9A81312C0639 AB37D0391FD528A99FECC4168FBFA8EC714A5D48D8F25B013E4415B57C74144E70D116A62015E0DDDBCB5F1A7E318592 71566BEDA693EB6F0A2A7C922318F6C338D091729C636EE906BFE4C3ADF22F2830B81F5EC80421CB9E2A65C238B4CF7F FE0CF5F82A5EF8C427942B3E5AE26F31459C54A92FDA9D92D64E78BF14A5B6095AFFD6711A3FEA135DF7D0D9791DA214 5EC5029EB90F45C8CBD404307645664FA04E655BEA7AF0B7FAFD035A3025E98467C7F0792F4F7B6544EEC04D94D2205A 4E34BA5A724055918F2CD55921D4999702159A3BA54215337545D66DDE992E0F7642D1E8FE12B37BF867545DBCFC6B52 E0DF9FC2EB7E50C7849BC5A753DF4764A8C52C7F0599290835D26F06FB8D763692C65190C78ACDADB18D99636EE96941 7C8A9B1FECEEDA9CD908F987A55A7A4CF0D3F9A13AFDBDF86446D5BB2C3838C8BE723B9F72352A2369BDB4D861C556CF 3019C681790616962D9D959DF2C2A6711A41BF31D8B87689DDFA7A4BC94358A3FEC7DDBA920EAFBA1915D53743B4B160 F38834A071B56A09EA389959B228163EBA27E0B61CE941AC16D9A5236425721CB99CB5187801E5955E7F827587C339BB 68C85CE49207DCDD5DF5289D4D735D567DA64E8244B682260E2C9F406E3D196491E5E7BEB3659FDE6A9579E8A9EE7603 315019BE61F359099878601AFF77C6840914F112BA0E4FAC772A61DA803427A02819CB21E834D680C21C8FF577FC2F80 8BC6658B88B79F2F35A9504FB7BBF2BB48A35BDE612528BBABAF0069F9B3D35DD2B49FD5048294B90CF4BE06B12A8630 9B723103CC2B9174832A11493EEBA04B43D8943E0F47D9A82C060DCF1D17385BD4D5F165378E60440C82A044B07A82DB 0B0C89C83BE19CE8AA4274EA5B260916B06307DB26657A40CB019ACB1D474050F8C7F7D3FAD134E4C9D741B355913C45 6D3039DC5309D34D82EB7AF37797647AA0681B6163488E883065B81AE93C45A1653933C64FF00C68840F1F52783E7C37 4ED6BAD4DE001F4C3007B1F317579651E6D6662189CC2AF9DECA37431E542990682712D1C26CE70723F961AE918F7A96 720E742BED221E2202A46E48DF5B6BD4835017FEC5C82E1B843D2ACFDF1BE018801AA89C44FDC7D33A0F913E74CF0349 6D3A0A85158A10136F2FD01D1C01DE292BA349D92F46C165F61DB13CBD714F7FE22F49079563B4216F35349A5FB3C8C6 D0FAE9F879FB2BEA9DB1FCAF091AF719EF1B555BF5CD84CB1A47B94979A1AEC07CC71172608E2FB39E500E15F5085B37 D993CCC2992E44B1AC9972DF900D97A27B71189FE811796C192CF47B15BF27F59CB0616C732CABFB60DB70E3000571E2 233F78FFA259D579D8C717B8A4C2162EBC4434CE929670D8C568BC9A81A375D899E5F8FA27100CAEB0681B90356C4BFF 6D05844285752BD616382B5A904C753C507869F78EDA9947F363576DF6589F02566ED5ED81A19B42037DCF6341471366 803D897D45942B6372F286C8089BF5B2A7A028C7804B259A79870A8C617DEDFC0E407756ED6C97A478B837A01F0734F6 FF8DBA9C1B25754B854FCE5BFE285933C806D9A1D93D138B92A2C7A859AF921143FE438A3DACA21E2285B83FFEF4250E A4B535B8998B47AAB22F6450D050B31E17B081A2C89C38B98A6C51C8495D0A22B8332C2AC30745C4A38C44AED2926AF2 E03A350058E4734F281CAC277BBACBD94FE38FB466FB1D8453D9BE74D0F6349DA031059844854CC3CE1A6C1A2888B807 0FB4E36EE5296D3A8E0D883E1DEF64E34AD2EEA4B2FDF355DE57507F00816B6FC7C12FC8755ECE0014154E7D9183F520 8625C2A44033F7477DBA41CE3A429433849B242126B365BF87011C98ED785D7573D0EC6EA6520E270E39AE705295E19A 8CF5DDAA5C9503ABA146567808035B4B6198EB61472428E958B2DC2F9F32F9EF2C7BA49F28140875EB6444E93364E6C0 9DE8E4DE8F4C0D79676BDE64BAA1D900A5296D81F5E4F9CA6B5467F1C912ED3E40B3ADA931511C21DB33BDDF4F638F02 BAC66318B21C391B35F8E4A98CAF4B6A52347B2C02708D9BE1A49EBEDF6501FAD0F0F9D4045704F063AD68D622573AF6 EEBA6AE443AAD7FE91DCF9FE4F4D8E66411FEAE4E0A2BD36939789590BF6FA7C168CE5D040B54217CA8F4F814C31D71A 4F16276A627D2A 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %RBIEndFontSubset 799 | /IWOHBZ+Vibes-Regular cguidfix 800 | /F1.1/IWOHBZ+Vibes-Regular renmfont 801 | %RBIBeginFontSubset: OWIOAH+Vibes-Regular 802 | %!FontType1-1.0: OWIOAH+Vibes-Regular 000.900 %%CreationDate: 7/12/19 % Copyright 2019 Apple Inc. and its licensors, all rights reserved. 11 dict begin /FontInfo 9 dict dup begin /version (000.900) readonly def /FullName (Vibes Regular) readonly def /Weight (SnapShot) readonly def /isFixedPitch false def /UnderlinePosition -75 def /UnderlineThickness 50 def end readonly def /FontName /OWIOAH+Vibes-Regular def /PaintType 0 def /FontType 1 def /FontMatrix [0.0010 0 0 0.0010 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 33 /uni0646 put dup 34 /uniFE8E put dup 35 /uniFE98 put dup 36 /uniFEB4 put dup 37 /uni064F put dup 38 /uniFE92 put dup 39 /uniFEDF put dup 40 /uni0627 put dup 41 /uniFEF2 put dup 42 /uniFED3 put dup 43 /uniFEAE put dup 44 /uniFEF4 put dup 45 /uniFEC4 put dup 46 /uniFEF3 put dup 47 /uni0640 put dup 48 /uni0651 put dup 49 /uniFED4 put dup 50 /uniFEDE put dup 51 /uniFEE0 put dup 52 /uniFEA4 put dup 53 /uniFEF7 put dup 54 /uni0628 put dup 55 /uniFEAC put dup 56 /uniFECB put dup 57 /uniFE84 put dup 58 /uniFE91 put dup 59 /uniFEBC put dup 60 /uniFECF put dup 61 /uniFEF0 put dup 62 /uniFEE8 put dup 63 /uniFEE7 put dup 64 /uniFEEA put dup 65 /uni0650 put dup 66 /uniFE97 put dup 67 /uniFEEE put dup 68 /uniFEA3 put dup 69 /uni0625 put dup 70 /uni0648 put dup 71 /uni062F put dup 72 /uni0631 put dup 73 /uniFEE3 put dup 74 /uni0651064F put dup 75 /uni062E put dup 76 /uniFEA8 put readonly def /FontBBox {-117 -680 842 1105} readonly def currentdict end currentfile eexec D9D66F633B846A989B9974B0179FC6CC4458BB4CB99E3608702C78822367AAF89059868F63F93207640A6BD5DA214789 139C491E02A37BF3866F2964E8D690D48D9F6C4A5EC22355F8123573812483E06B968AE84B5F20A982A0E65764753516 97AB8C6EA040355C5542F297D7A3AF28AB93EA0771E0D56DBF00F7CA9CE9FB9FC2E0ECB00D04D5F5F3F24B987B546D62 74971A477DEE12C44623C180BCDBA21172627610C4736632D1A4693E79719C3BC43DF5330790A52DCD4CF455ACC213F6 B1C4BA249179DB360225568161552A16682E3A3604BFC39D571B1F8F183746CED447A512FCCED4867841CD4E73E5A263 0DE0248030AB7C1317763D6CDD07D69BFC940E412CCBB646708B671FF930312AFD7D9F1901A0B36EB57713754535193C 3AEA84F6569A6EB51B2E27DC1344CC152EA38A18C05BE3407CD6D78C0FC323B045676A365809C449323EB7FCD627D107 98B449B2E0643548310F987B92F0C46795D3FBAAB47BE5386E0BB392EA3543C341067F4EA70698E1619F3F98F4560BD1 1017E4B4F35AAD589860FC2F82267DFB082C5867A0DC8EB04543F6C67FAAC8814E495AA2A719B35F789D57437E0B5FBB A4DF7FDC2D724A20A739B0DB169DDA0AD6611EE113017976CA58E0427396A82E1D8841E4D7135A67FB57D92171D1F0CF AF20DF6F2117B818DEF8EC76F932D6E6717CB267BAE93F19B43EF76BB109382F6EBE373A1011D4528D5574EC0C2D0510 66A7ED76942FA4DE0B7D9EF4D146A9D53B0C3194CE8E4381FAFAE00B34A6953A7899D491D01F6FE9FB41978397F72701 A4AA7DB804226BD6DD3A606921EC9D97FE28975F868156AA4CC409ABB504F7C60C8DE41F7DF1CBB6FE60E5FEEA9238C2 3A9C1F66CE56116AD404C137B9973CA54E6725883ED5025BC2D45AEA2444C7421FFC7C16702EFEF584AF0A3009EA9782 1CB9AD882BB096124C071D7C20287F63F5F20AAD6E11753696A47ABC3AC7B3A3EC0E0AB40565E8E789224D54AC1B6FB2 F26E0EF852E7A59D8382B28359169E004F7AF555947150DF0B37AB0D8090A47CA63CC9DAC6B7D3459E4D357B35FC9A7F FDB3BB32C52B188361E969C0D0A8B25DA37A20999A346FA9564E4E86019E760CF0172C9405C01F9E28916700DB5045F6 64A6E8E58E5FDE0E42DC5CFED5223B24D8140A8265AB66DB853E0994DE82311A4BA38D110F7B100AB42F95FAE67F06FB 56BC9ACEDECFE596B97726545AD2BB8E28CC2E573DD62818F4B163154344D145B3C970AE75F031E4EB42A8F4D34DC2D2 0014E2E992A09645E5C2BBEBF97A1CC1C35AD0708ED830229FD98B04B60A8DB83623BA224B7C27FABEDBC22714087594 B182525B89C4C062D855AB938480E2E43BD803C3AFBAA99844376B3E4CB50967C6360CB5015184190940F1E797B50A95 0775993A1DA07A064DDF5FDD316294D126E92E39895BB267B8B359401F0D09AFB531A718980D36AF644A516196411998 74FBAB89F553F51DC189ECF411FD519205F040387C2CBD540DC221C2EF83375C1FB6F2AC2A317C5D292A24F15AF1FEBB 24E5CB26723F07409EDAD58314662999C196C90D87576EDDDDD04FB496BEAD5A0CACF9B095529CE32A39D3F13F424342 6D13322C997973ACBF4068B81D3B829065215AE294DEF0F6111DFA5905B61C280C44201FFB660D4AA016F4E3F927D150 EA11E3163B84FD38225D1AB1D29D4C011EC13DE3618C5155108EA2632CC507E6862351C8DC48F22669DE6DFF4C4FD118 42733B59102B1A6EDEFFA9875C8E444ED400797C418548E9E3ED5E65A1B4BD6A025D472F1C4CD078AFB9ADB403FA547C 46C7F19F913B4D748F1D7C96E3CFEA364E2D9992C678D4A6528AD87C932F0719CC7D00EC04018F8975AD9A71A9D9AB50 A1F7D25243842B2B20A37F94A628D550C9B719D36268B22CE443D11D19053C99040DF7F5FB62EDC3DC72AA2E70D53F46 1ABC42F10769EF11DC292E762EAF8DEFF85C2037BB77E6B6E81349B3610BF140B7EA31C8FE8094355934235309F3A104 A5D0F70410ABB56CE9967B95EFA3158A271BD92D12B9CB6944A8EE3A8E5624EA889E0BB45CBC00920E103EEA538D8773 C6B24543B1443FD738EAC6D8BCCCB9726A94FFA92A9093CCB0BADC6693C17AD635137609BCA7E9C0942408D9578F9680 65CA8F10DBD047096ED231A40D844A0E159088FCF2691814B8B50A81920DBF2C505BF329497029CB230B0C604616D910 A855E3A9C001906FD657C12F683211453C8280D5C742B0C82C1BF405757A0B3FF6B2C64553028BE24B12A741F9D0B984 0E72CA5B325E9261C6FB9CA4AC9EA9A75E56DC2C1EEDEA8D59484D7998A3F5432EF0A3330467D4B8D20F138E51B8AF8E 6207422FB47524E4C813E8380986F44355C4A04A4CB59267848A4FEA2B0441DA2A915B849F23FFA55112EB45E22CD9BE 8310B995116FBD54337E5B2623AE07E1E7911BC0C18145E3F40A917161C254CD4ED39F7C9F447EDAA34746FD2E93F37A 2AE30259501D617BB8BDEC03029B3819163FD138EF4DFDDBFC48EB72661F495928755FCC04902165CE78A8B3E32649A5 0643B07C74E6356ADD4351A6A6DC3322F82C149494BE2615979C21D4F65367CAADBB26622CF419C6A6507F539AD1F3C4 83734980F422B3484DB024C76604E67568BC8D16EB710D3F7FDBDEFB3DA0E9FED063F49A33FEE2A9EFE5D1D90C1488B8 63CBBAEEB4FD7B2F540EF00FF284B465335954912FDD559DC7DAC640E1C454D8983C43F20555E08354D3EBA08FEE0DE8 75F2B8B305F5F7DF7F5CCE58A162E3024BD826E65927D5BDA936B3E4755D801DC4965BF9EB7784D4A892331D914848C6 8AF6397F4056B1C5644ADA7ACE562B2B82C9633B5930D7F05CE5D07CC9D1CFB2C49DC1F2BBA198C0CE7368F51307B5C7 1F8BF6B674AB12F2AFCF7EBF43FD00EE7A8E94A936E7A8A1D50F0BC3713EAB70E7C860D52A89E6F1021B55ED0205C639 2D97476B0213A340DEEEDDC05E44364C7F00F68F85BF535D4591068CF44F51FA4B18F6243411E6034E8D7D66A202BB54 8DDCB810EBE80AA44C85274BF831C9F0D9B2CCAD35E88CD01E3C459382A64D0CD966093625C857E6CD4C15AAC3EEC8E5 B8B64A06CFA738016B4B2F2F88AC8B79122476B52703E9A503DADB66E3EF0BF360BB2258F6D8412DA8A93EDD76FA8A28 D39683E48AD922B16EB58C3694141D714B19821B68EE3788D164512D44FA224CB603278EBCF633F6C00B4A284ABEF951 DBEBB71EED0A9202BA04375D1B42A71F0FCECF0CCD40E705098426C27D4E9992897031381588ED4034D538677EC69C6D DA2FB2A3343207A16232C6C56FA8E6AFA52C43D38A865A6C60B472AC4F453F5B71849B94F4AA732B75A3B71812098CA9 0725F9693429452E5DA0C951D053E588A3A4D8EA3C2D26F2A4F1D33A08216D2F995710BDCC200F68531669AAF364DACB 5892C8336A67CC4CB66A7C81857F67DECE9C39B48CD6B17FF1E4368F462E591EF12852D5851173F223C7A84564186E00 6FC304410FF0CE7D79A82BE3A3DF47A065401919294EA3282C496A9CBABAC7F7FEE16F252E32E35FB690751574E3DD32 019C53B65DB80719F8504D0600936BEB94C0621D33E9358F5A32C4971AF2701529654F548FBB88FF202B87433908B64C 9A0328089DAA4342452AA56CD9D135268092854160C6743749482F0515A69564BCAFA7BC97A7917406C46A6392AF1AE3 57C6AFF952CB8EEBA83C789F45E70716201073B503F592C4E6257BA79ED0FD5EEBCE59A97E3CF9925D4504E864E11193 EF9B2DCECD871B12895985EE8FEDA11D8E89612F9E44EFB8ED31B1E91652B79977F62A074B7E5B928D8D33BDEE051E02 42C310554C8DBDD5C6EE7FB375BB069E2B7EB54EDE1E29C15EF153CEAD6A143D423B8ED7338CBA46423F63F8D9784B2E 6C2B2D985461F472950E5D1B4CFB4FFE4C2467543A7278643CCE16CECBCAE9210E4F1C907C429C4CF0ED9B9C8822BD9A 1BEFF5A2234252765D78B27760C70A8E35F37C1EDD7742CB752FDA33CC97A4D1D5A380967A3BEE0BC22B18B4A23CD195 F536ED4E4B323AF28EF27D325B74D84FFB36A35355932FEACBB40F70AF4133A1578485073ABABF9389FF4165B64A6209 BCA4E41EC9080D8D1CBE5DE4E05EE951530D4511B9EA0BEBFA265CB8923B77B38E20537846E1B74D4875C40011399BC5 E3926597E4A0AD503D0E001CFA92ADB215C61582402CEA60739D2FAEDAACAC32B1221D2C20894599B3B4F24063B877FE D65E44C8E71D5E6B77634BCE3D81942C40F5B4DB9F7797B099D53D8BAFE4D6CCBB5A9418A47B4382794DBB3FE0EA63EA F81240BFE41357BDDC7A258FF09C65AC707F99FB1DBD8F15B8A8EBDE5E015B9CE295C095B992EB532E556E8AA58414FD 633E101828FF2FADFF7925F0579AFCEAE9FC2B4132D9D199943B3B8E6FE060AF670CC01814464F5005109940CDD440D6 A697EF14C768B9A264676E21522F519EE17733C5A87269C6510445765A7E5AFEA80A31625B51ED29373485045EC41C74 564FEE23D31BFC150E0C347FCF60288DE70FA0BB1761314571E3E0CDB93739BD5DDA3A60FB8796E8C6E1760D2509B7D9 D6A2D6CC5E4422CC4C1C48A1795C23F07D985D94272EBCCDF07D53008F94BD99D36229705460F94D17C89C352E277D5C 7F304053AE7D79FBB5BCFB6B4D4E9E9C5AD174779E8B1C44252BBB4E3586405327BB5EB240B6E786D790A83C814EBCFC ECADE5B31DF3F27CEE0638434CA991EAAFC2BC24E05433D350DB4E54839C5A7C83EB37B6F3739420BAD168C16BE6763E 3932C8A8B98A8C7F3E069749F8378D60572D312CCB4BFC6A5046A97497B32CEA70FBE8DEF8B446427EAB1B19DEF47AB4 6BECB631E1C49E0E0863FC86EADD37D7CA1E6BEE8DD7B824A9C7D9766BD0B7AC1ABEE486C4A3E8EA8102301BA1E74518 08C15545ADEFA4E47B8CFE580A9DBA8EE50482833D46040B2804E2E50A78D14238D22192A84ECB204596F170062C1FF1 F77E92DE03AE0BDCB6474A8E53E78D38DA89757B9809CB3B884F03950C4A3F8F8E18F5A834CECEDCBDE7260F11ED9B99 4161C391349976A18ADE32C6CC1200FC488E5E77AFCE4CC2115785FBDAF23058C9C301AA51A51898A9F7EFE7C5A3EEC7 265044C641FF0392E5921CBEED20B50159A92073C601A7DDD50F7342098848BCE0FE85C8E4D44CAC871D95B2D296CCA7 BE1AB4F181E39AA8F75DDD64CC4AAB7A2BFE603E62DF598A6D016485F0636D69F5CC8A2E4D84D12C1C2624F5995E178C 48B2D86E5F737C6157CEFB0A4508C66F7343BFB216BFAB88AC8780C9B5AE5267FE89299685C6E509A1E82AEECC0065B6 A33C56D66CF7E7B3113FD279B760F2F749D674BC0BF7F797F9BABF6F5B0DE1B5AC3E95B4F901EDDAF968F52B21F80889 81EAD67ABCF85F040DE90D454799643C5D8CE01196A20A119493F4445291A4E23305A3A260DB5F37D780726852E423DF 8FA59F5FA88FCEEC672911CC8A1035CB909A0F995CC432D11D8F2FF9F82ED2C73275900FB50B5ABA2B6096F2B81A8627 B0A6CD8F4FED653DB93C1B2F464C6D4EBEAA0DCE38597C47FF626DF2D5A29BF2D7C2E3AEFC1F7F721F39F93A6B47D756 FCF9484CF253A889E63DBB663952C8394C9FDEA9F7C07B379351F59FE9ED738FB1C48C247F3F5A32E23877ABD8F27928 865971B7493325E0F43423EA74CD1F767FC840560C212D57B9B22E89EF4E5B3D439FA647A17BBA2F1642A82511C62715 5E29C8E9926E1834F22427BE1465017A2F3F35EA39C82C04FC4D625B18BCF1B0C2FD1D5C21F817C0E8D30E960C00E2C8 B7A89213CE1D010A1A547ED74991B35CF394A5B5ED2B0A34F0E3C7FD0C4B58C37BD4E9419AC8145C787A8D93E0C266D9 C7FA3B069C5233717FADCE5FC029BFEB1321265EAB59DB0A228C375DFE530CAE054EE5692B1D6A7AED7F4E9C0C2A0DC9 ED579785756ADAE35E3D308444ED372870B63B02F2282552678A57136EE440678C6E5808DF5E226C566622810A9DF11A BA3B1BD666C683926092BFA088FFB627815582BD599132E0EAF2533DD4BBF1E3F5A783EB77F15F1ADE5CA551FEFE465E ED6A2151987A490A3C070FC9864A4D0AD9165BE964F4FB2FF45B46F2753D4D978C360D7A8C9F18563F69BF760B6094A4 1A15BA51EBCE3BEA3A436DF25ADB92853B9F0E6FFE3EF5A1A6901547C62129829C3B03E544EBFF0237641FFC273EAFA8 12A99E58FEB40D252F63901D3928B5679B42830D0B6669C110BB8B2A4B62571A3F82C3FB4DCC07EE5C2FD46E95806780 AB634D0B943A7C32716A0FFF3FF1EA79B73BCA6AB279BB61696260E2EF29635D69F779413D579D4EC2475FB9933F52EC C83815739B30202060830CBD579A33D9802E6397C1F2B203BE7E12F01CBFFFCEB35170F7369C105E57E57E3E427965A0 99249606380E6234C9EC806EB7B4DBED77F592ABA262176558E6BDC479AB1BD92442644A4A31EF01B95478B2D32F406C 4AEA1E487C4A7FD8E85F5538E292B0F33031DDA4C445AA4A7AAB1515E5BD688943C57946B3F38229E2E31714C186BEF3 FAD940E69BEDE8D2ABC3698995D1ADCB7A285DFC5FFA523A6B30EA58A3C61576C8FC020B6439380D4D67B81F98542F5A E21AA1FAA6DB2A6122EBF91EE30DF96A07981B1328EF4FE7FE75483596849803ED12242D50BF7DCE7E4A9A81312C0639 AB37D0391FD528A99FECC4168FBFA8EC714A5D48D8F25B013E4415B57C74144E70D116A62015E0DDDBCB5F1A7E318592 71566BEDA693EB6F0A2A7C922318F6C338D091729C636EE906BFE4C3ADF22F2830B81F5EC80421CB9E2A65C238B4CF7F FE0CF5F82A5EF8C427942B3E5AE26F31459C54A92FDA9D92D64E78BF14A5B6095AFFD6711A3FEA135DF7D0D9791DA214 5EC5029EB90F45C8CBD404307645664FA04E655BEA7AF0B7FAFD035A3025E98467C7F0792F4F7B6544EEC04D94D2205A 4E34BA5A724055918F2CD55921D4999702159A3BA54215337545D66DDE992E0F7642D1E8FE12B37BF867545DBCFC6B52 E0DF9FC2EB7E50C7849BC5A753DF4764A8C52C7F0599290835D26F06FB8D763692C65190C78ACDADB18D99636EE96941 7C8A9B1FECEEDA9CD908F987A55A7A4CF0D3F9A13AFDBDF86446D5BB2C3838C8BE723B9F72352A2369BDB4D861C556CF 3019C681790616962D9D959DF2C2A6711A41BF31D8B87689DDFA7A4BC94358A3FEC7DDBA920EAFBA1915D53743B4B160 F38834A071B56A09EA389959B228163EBA27E0B61CE941AC16D9A5236425721CB99CB5187801E5955E7F827587C339BB 68C85CE49207DCDD5DF5289D4D735D567DA64E8244B682260E2C9F406E3D196491E5E7BEB3659FDE6A9579E8A9EE7603 315019BE61F359099878601AFF77C6840914F112BA0E4FAC772A61DA803427A02819CB21E834D680C21C8FF577FC2F80 8BC6658B88B79F2F35A9504FB7BBF2BB48A35BDE612528BBABAF0069F9B3D35DD2B49FD5048294B90CF4BE06B12A8630 9B723103CC2B9174832A11493EEBA04B43D8943E0F47D9A82C060DCF1D17385BD4D5F165378E60440C82A044B07A82DB 0B0C89C83BE19CE8AA4274EA5B260916B06307DB26657A40CB019ACB1D474050F8C7F7D3FAD134E4C9D741B355913C45 6D3039DC5309D34D82EB7AF37797647AA0681B6163488E883065B81AE93C45A1653933C64FF00C68840F1F52783E7C37 4ED6BAD4DE001F4C3007B1F317579651E6D6662189CC2AF9DECA37431E542990682712D1C26CE70723F961AE918F7A96 720E742BED221E2202A46E48DF5B6BD4835017FEC5C82E1B843D2ACFDF1BE018801AA89C44FDC7D33A0F913E74CF0349 6D3A0A85158A10136F2FD01D1C01DE292BA349D92F46C165F61DB13CBD714F7FE22F49079563B4216F35349A5FB3C8C6 D0FAE9F879FB2BEA9DB1FCAF091AF719EF1B555BF5CD84CB1A47B94979A1AEC07CC71172608E2FB39E500E15F5085B37 D993CCC2992E44B1AC9972DF900D97A27B71189FE811796C192CF47B15BF27F59CB0616C732CABFB60DB70E3000571E2 233F78FFA259D579D8C717B8A4C2162EBC4434CE929670D8C568BC9A81A375D899E5F8FA27100CAEB0681B90356C4BFF 6D05844285752BD616382B5A904C753C507869F78EDA9947F363576DF6589F02566ED5ED81A19B42037DCF6341471360 FC97B526A5D87111ABD79D6D4D1D2DD2A62986737A9757704C6224EAD1505E555EC90AD1EF68CB059454475046048564 CBF74ED334D12114FD57C152BFD7E9A1CC5E615869278104AFBC612DEEAEC0F717BE314754C9AE0EDB98833B7DC067FC F29D9E0829486DFF66E7DEB5F8D326C0BE7ADAABA9A86E80B826998946B921792C44AE69E7273DB09D4BBC2BC7BA4F4E 4B9AABBA6C08D0E26B56E479DB5A8A48862A2D7C82F8C5993A0245083E7C7CA8B80C6691A02ABE0960CB162EC415B341 998BB09569ED0935C363415C6C6078AA75B9D6B6BD18CCC0E48E082FC7A4F0E8CBA94F33E5663BD634A8BB42AD22E6E5 00370E49AD3F7F290FF616331E5682B5F2C415DDDB14B001F53A58D54E8CCC346B47C80C03F65D14E1B0682FC5889DA8 49C293B273E2E9AAF6CFC0B2F3086AAC46A7E765FFFF907B0DB188C5FB84CAC91C23699251C2FAF7E6B27B1C7CABC0CC 644837D7EE3938E14063B9FE3E574FC3DE5C6AED5F6FBCF82C249F6A28C8423EA8A2955C5D048E0F3FCD26977D9975DC 69EA2A3CDEDF21A3B5F73D25C5E0DC1BA895BFA0F1D902ADB95B383E8343BA7455EE9D15146A95F00CC8DBEB633D875F 432676F2C1928FFC95741D66A617F320BC2C980C4A2C304804BFCC37440E31E2DEBBB7D657A8A481B422D2205EEEFA21 FF60E02B7DD7185BF1E013DFA800371BC9737C878F03B49E9F07EC858BB80B073683A9378530BD440DCA3A167AB24B36 091594C80B02ECAD6D6AF038B7A5DD533B4C0A076B68ED3495EA2F0E08987683A6CC6C3C82BEB11F24303E14563FB6E1 220ADFD0953D8F4E7F6A51625A718908CE4DD55DCBC095AD316041CF8529ADD93C00FD6EC9B14CCC0606A60DC423F34B B651E6270C1E15FD1401BED6CCE540D5540442568AEA20E3F0A2D636596F0BAC2338FE457885D5134BE78E4DD1D71445 A7042E2542F952780DE335F87D7585BBF1F1D2A32112562D493FCC0D2BC8768DE3DAF4BF58F24205F01FCC6768A74D2F F1DB44B59CA61D68B08BA13D3CDEC847C37A72D2DE8E599CCC8DEE2B604793D064C27CBA4F713C795CD08C57E9636D32 77FED2A01D3BD71EF750776886F25B2877A15FB376FEDDD3C36360012D56553E2E37F074AFDF48B12EA50F7B119A8B23 8A235874EEE43B67B3E553D4F81DEC9E84DF9778AEB379848356743BA9B5A0EB2E971F6A4204601961CF85EF79E2BC6E D744794EF90CC6870999BC9A3C1894B3D8854085EBE071732BB01B0404BD93A4E85B2895E04CC1DFB679CCE1D8A86B71 85FE04CCCCB851801992EFF8AEF85DD02380006355BEEF937421D08D26A5BE7EAD74C3966B9BB7F47ABCE981EA91E71F 9F394C87B205E2111EC5326DCD81117A6A622276330713BDD1FAA9C3E6B3D172FBAAF75D16AB6F584C6D189ACEF52E02 17728100E7EA006E2FA5D3B50873819FCB84BDCE97AA01D14748611E678530B3F31F5DB7A6911E889EB47ADD2BAE5B7C A1235DD1C6CECA56D7693CFAA3F754310015EEB76EA82229A92A73D0AA2846DCEA7BBE598F2BB3C58A77857710BE6066 B5DA919B1B7A3D5851DD8DD8555B4650304D4CA8199F9172570F6327B4F5C47970C14C239A8138DE52A32B5F92C69CE4 80A42DCFE726E6DC3156F4573920B0538F0D535E1164B5D9017FFDFFB597F5D5C5F638C6ED6924D3F2D66CDAD19E3CD8 ED7BE5F102BE5821CFB8DA9DEC1BD1ED1DF79AA420B8F36E6DCF5FF631274E01BCBB60CA571C16BAEC0CF8BB89EAC471 F2741B0275FE279ABB59E7486FF96A54B4CBEFC0AC46EDFE50CA499D33A33BF943478272F63FCC3F9F4DEB1AB065296F 3A6ACEDB61AE8D44DA38BC2B3002FDABDA5DD7D9DEE8BD0DD16CA58F716F06687B3E6ED8E8979218ED23537D4263FC36 FBB850CABFA12210A19429AB100A55B62C718E712EA45F9F7AEAFF7D7F64A4D4062BBFA02BE44C99D5FDEEFAA51B4F20 524D5EEA3614784AD562F43F3C10C63501B5FB9B576E9BE3CCB7D3343DC846FC7D9C4151B0B5614E0CC8FFB9A100297E 3E1B6E0C9D00C8EE30BA4D714A6930118E26590E82FB61407C3303996046D096C7145E3589B3FDF1A4F2B9AA1AA662DA 05D34C7F069B09E60BD1853C974B4430FA185F2A12E74835F58C09D1CE4EF62050DA9DD3E9A0AC8694B7CB2C12A3807D A390117FD9AF6977CDE1FBA56978CB788B801F54066B1499C830D3F56E9BDF161EB44DDF6EF389EE747AFF0DF2C1BB89 6F8C214DB8BC7D629588579DD99164FDDFDBD724C0DAEF20CA32133E9F6AAE0CDA18F2C22D402EED099A59209FD95898 7B884C57A1A492F60ACA6A49791BDAA4995937C3F26587FB5DBBE402BEB5F5290F01B6E3644C6B592608F808ABF91833 978F4D126B3C1B3514BDB0D387DB3DE1764DA070F149773C7D042F6E72C129C5492495F89093514F889C09D4638E8EB1 1C4114060FAD4E61A163504180779AB874D6ABB4B0383520B0C8011ABC90C8EF7609EDA4464AB562547DECFE03CF7215 465A3B1A8B1D1A0BAB3A23FE829A5C305891200CB7E982D98CB2342BB1C9BB92B4AEDEBA5577209910A5F85582D3B31D 5D30220C3DA136179A842357F5D29ECD0E0E0C23234C1CD35FFCABD3A83997FF0FBA2051C56B3A030ECF75A7BC3EB36F A42294AF80510A5206A31A4DB18E8344EAEB2E14B861BFB7F60FD024455C0E58187DD47CDEC445AAF47680B1FFFB270A 8FB895DCB0FDF933355EA69E1131ADB86577E8F2023E7802491CA4F8811BEAD6384D23902E3213B2FCEFC2AAC2F3B861 1787AF28FAF7401AA4B9D4CF28FC35EC7125C956D8320F4E9ABDB142862F5916F6F07A394AAC505A24BB495C99AEFFAF EBC93F265A6713DDA8C61FB8B7301C061567790E8606D988F5B23673B57494460803D2982477BD50391EA5EBA8B6D774 D07ACCC4B6EE1FCD23F8607242301586E84D2D597B4F96BB9E46CEF939418EBEA6EC0DD392ED4B803072476A8F37A7DA 9D33506B795D61686750E7205CB6CF9982DA2DE491623F02F1A4BE0FD8B89CE4AC46D19988680A049687FE5220B6547F 9033AC49E5B70281D3F42445EB551D19E1AE89004E43373AD0A6572A0653CFB58F90EFC26FC14204A14D3A0B3F7D0D2A 32DE729C9DFF4C88D933C790D19B2776E98A83A43203915C6A569E03EA0D4F69BA21B91C1A28D23630F35D8D4C7F1D49 BB1050CE9F79DF13B39C4202F1E8DDE11CFE5754A211D8F0B67EB8E1C04E16BB6A1CBFE3E408BE3AE30EF21F18B36F40 87EC89F58A5718C8DBBA85C69BB42528B4A6BF7F78C3CC2508A93F999B727D5D77CCE37011FAE4AEA69B260E374DFEF5 3470D9B0CE188EB71281F9D35D5229D9C3BFBB4080888016197EE9F836DB992F8A67E22A0EBAE828FADD773F6B91B2D5 4E7BA9DD948FE7F511E4DED652D6654A935E4C5A533CD7ED06E488A3D94BEB3333CA7EAAACB58508D5D25DA713EA9B67 1531D15718F22F6106EC1C01E87DF0C191430154A8E69F393FFEA939044D524A1279DEAE4E8CD0F8EB94966600A8B720 5C0326E645F5CC52AFD59215C6C2B087004F58FFFE21E5D7C2CDE5974357CA6836674355B186A680D49282099399A465 7C506E45578FCF919A6AD57BC42F3744DC5C1305C39DDC96C23F08649CD890FF26FF697297BDFC53B83663A328C5ABC5 5E06CC4D4B635E41D96752A63C2C675587910D7D828D674BDEDF3E5AD390CA4F07EC8A32C05A995E6543A721D2B4DAA9 18B8A7848B5B9C9F7F0BA691BD54D2E15B48D5F471E2A8CC6A0FE807EC5A51C16BF127D0DD8760F9FDA5D4ABEB35D6EB D97E5E7D8E21F2BF24C9775F3A8D6A5B498A389D0F351D3C74D0AC463B499D56D518F932605DF9025E5C4FF77D3586C1 A78D3A29780CA1C6EE54BC4DCB577D72814433A98F7DBD4726523D3C71EE3F33CCE502CCE460924521CBF765A1830AB9 FA73EC4896F8F528441D7AD4E9F16250EA2AC392ED7E744888FF5D80B9E7A0FC850B4BDA985459A2129216B6A4F90C51 7A8784FD4F17862DE5884B810C6D7184B43916ED8342A45A7990F0A2A572999FEB489FE8E0294C7C4506801D2B85142F 97E3A82E7DEF6E7B6C15AFD46CD3CBEC0C7862CCC6F7794BEEFA9CC413926B2C5000E422E3C025B267EDD79CEA9E4BCC C6E3922C68801842D104A7D0EA74087F326467B56C363940C097441BE88EBDF9050695AD143F1E09E91C29655774613B 57A5955495B92F697F7CFA4BC3A17BC1B490212808F5F904DCDCD61937EB7B498EAD6A69FA514ECA3CD7095CFD26FDAC 3184BEB392EE726EB137F2AE985622A8FC149111AB0ED356F427DC9B9CE1904B948B58467C1502668EFA517DFB1B1DB7 08865AFF618D7C1453B2944A36574A6FE5580DAA0E77C4B20CC31A4B5C06A2B6089A597FDE44C207376294727477BAB4 2E6E8946F904A796996D1563692925A1A0D41E8F9B1302947EAAE28B3F71586582C1114181F7E80124F9EA96B41EA57A AF3FC5069A841BC4F31D632035C3D3D8CB148CDC89643EF38C21348770A5DF287D904CC513CEA371ED6FBAE59143C6E1 4EDCC90CF41DE88BEDF341FC86C8EDC5153F578D8BA29D79855CBAC243B1F07E85F46103F6C60F519C06B79312E31793 B040190F11C953C3C87C6D2F4A4251EDEB21CB732116159A6FCCDAC240C011289B25B36427B800D8F89E537953F135FC 4E6BBDBEE65442BCBD677635051881F08793B4C24B55022E3C07A7BED9D926549386902DCFC74587BBF85F552AFB46E9 D7CC64BC32EDFA9F229BBBE6227CEFC29F5244F3F8BB2B55146CCFEA98EC253B24911D41C1592407E624B786EA6A1443 7E7082FE82C31361DD573D52B61A4D2B1EA79A989508FE9F1FEA401F9C83AB85E788C42C59937BD6F539358A7135A3E7 5E8879DBC17094E86EA0CDCF5111576393C4366D82FA8E929E2CE87113E69F015D31C4AE041F2B2A46C7230F329584CD B1FF1882F412DA2DF586EC270ADF2096FF0613A14AC0EA7AC63760740E35C5785236C071B9EC0E72DCA12515D1E3B0B1 3B19C7F72F3491021597414F6941F4AEE796AB40C07C28D26916DB2A62176E61F016D31EB0EBE6489E36382474EA3782 4E9D6B1E38D97D47C1152A2A1BA2E485077390500C45AA98771FFD26A6EB3841A8709414AD17EBB94471EDF42FD5AD76 BEC0482C087B5AA71385FB38E738F78976A2102905B8CCB2F69264FB2F359CED08484E21FC6042447FEEE7F8A1CA8EBA C057118C3F3C261120C74E3702A44352319AFF2DEAAB1B4D43FBC7C2501C546EA088CB6329F9E5F2AC3B6AB650D12AEE 8BBBE660D5EE5ED8B5A38C0EA681A53C38963650B7E3BFDA9C08858C016DB44F06634E51E8B26058C5C14BAA6900F4D1 6C38EB6E9DA06B9E84E3C611C5D23120A9EA4029578376864DEAB00D851B8005B296EE81772785179D43AF2BCC23A85E 1C0C7051D189549BEABBED9D81C956FA334215A678AD5615290B7E3F04D32EE0C481D9F3BEF87B9A128C4DA875BA4406 2F65F2ED7EDC451B0736044AD0677FC4F56D3D2305A221306DA775CBC749396AC95ADB8369FB51400B087F16D194E133 E7C9A1B6BD3ACC8851E1486BFFF701F3B0542A2DD70E25447918F0F8A093CDBF17693C95C9C0B9AE8E94EBF56B66AB1A 33B10A5336BD1E521D981B6A1B4835F4F88FEFF4CC7B381EEB0727FA3778C3845289E08177D26DA13D32AB8BDB75A756 6ACEDD9A92A34108A8B727D7418441DFD4A616FA38D2F57AC82AFF59816C389285D09CD0DAD5EDCB6C88A4648A9A7083 C8BEE417AF15E7B9EA6AECE8E2CDD424EF41E6CB7263A36AD011F6AB6B897656FB079E12F600B3D41ED0FD32289E48B5 49579DA7A75EB87F6C61B2213147DB0EBB78904BFB71E7B078DDAA6B27C43316A5EC169B317BC7B7E5A32D9676D320F1 2E2ECAE0F845D61210C131B78AB46D19673C54B47760769D919DF2D95A43F9BE681535D39F95BBE5BFC0BC051B4EFD78 A26BED454163319060329F36F0FBE656EC0570A9817CDFED5BA7C9D2B507EFA3CE85F1B08A15BC49EE6CDD916E20E88A B1EF01BA40EDB80B3F19B0303157409B885A17113C0D0D2B32CA8EAE2D2B1D240B30365B32B4BD9B14E1BFB8F661A4C5 7EC44371EA0C5833A9BE8373B535773B00F8CE83913B01671E272BEFF0D924AD95C954B3FB6E0B2D3B90AC7C438BD760 07A03314D56AACA79D4790850D7EAEEAB3F2395FB0B96331651E4F146E821E8CBA0A621514465A954D2600DD0229A2B3 7F5201B6DCDF879BB7724939EF2EE9ECDFC7F2B45CC9BC797D0998188294A7875E5E184A10320D4BB0A5E69A3747D02F 8BD39908146CEFFDDB9065B37DFFA1756A2A54D05F4F5DB607C845DC291EE69FA43BA7B3BAFAD051D7EE34F3631F9072 A259D11CD5B29285D8DF0EA287B092959AC060285498D168F79886CCC759D533C8D68D0696621DFCAD2BF3E07517811B D8646933933BF104C47F71D14D6C84208827BFB142F049AA41E6C0A0628762F7D2EBA9E30983D002B70C170323C92FDB 14F356E55C5B08BAAE7A2EB2D25AFC56D122158829DC4FC3FFBE2E3F6DD6E283B3427250ABF27B170A34004817B886A7 17E8BC03160A6F8084EABFC30324B6FEE390E475F9577675B93B2ADA8A2EC491824D72426194F622C668E96E823CBE66 57AA4FEDF20B3A4F4F16F8C7F3125F4A316C7E5F8C89AA93DB4B6CCC1238DC4C5902585023E26D0A81937C15D9698C55 222C69C0E7D5F75742369B02C67CBED781778A0D5208C53327F8ECD58BC29C175FBD01BF230BD65984A35ED82D123048 638755ACAE00271A023DFDFD4532B3BB35BD19D07B8D1E83565D29D956AA8866AC866B225F5217CF3463413EDD8958C9 A8676B7F7DF9525F75B01355F1969C4CF8D77BD8FBD9636BA1D54D8F744D0F9C1811E7B4263FE551B25F8CD03419B6E8 CDC1B52051D5887371433D9D5FCC371C11B25CA413256A370E02BCEBF65A29DAEC2A2804825AC81F24F6A565EA86DC24 775DFD4472CD141FDA1F68811C984031C5BE464005F9587F4C1D103AE1E167F08A2D668AB6D56CF200A142B8F716FF1A C12BA94EAE568966890BEE975DB5D8FC1F7B13FD7E0C26F389B23C0D48238F695892C2E47C3FA4345094151E53E1A67F 8D2201BB23FFECD821D1E44C6A5AF906001E43D11C83161A5EC0EADA7FEBFC4031A052E4CA3A87DADFAB36E52C867451 B0033603B41BCF0021BF388B0F6CA57CE69A2F950C7F83F95C5C6D5175419AB2F92E423C47F8C5E5FB34D5AEAE8CE09E A7FF6BF7928CC187DB4F3576446CBD3E13F6E8611D1527187283D9760964211BBA2C4AE31A3FCAB6E40E485982BD6B67 80502649C8CD156CBD7E98AB687AFE661D7023E4398F883484ACC4FA00A66FE365F49C35CFDE2C71D468F76A8F428B51 1FEB2CA4DAA4644C3D69179F4671F2A88D56055C1AD60EDCECA01725005955752429AAD63C215AAD198E97A0F616B32F AC833B0F806E6E3405BA291AAA4A195B3029021D7FC3DE6D1C702347891AC42E68937FD82A2F077EC52B9FB8D75FEA35 521E51A1D55A346414F1005FA5A3A1F9225208A1484AC963728E866D848C5061493A5EB7C06CE292912FCB82D81A11D5 DC91CEABBD7E3EE55E348F124ECA4C9B15491086CCF473CA8AA8A76B04F82EBFE92FC9E9B85D54BE8F9DA49A4A05D8BB 188E346E81C0D290DFF9BE78CF007D5B594E1D8B317F1C9602A9B7AFBC4802C04C6875DD7E4CC63E48D58D8FBBFF7342 593B8C3DF76C76D61FE2906C7CA8C470E4EE4C824CBF45EC346BAB444902C8F934F8B1E1B6CB14905BD2F6B714D53D71 5694586AB90828325BFCD977AD7BAE102B5B791521B761F8A333D97E77843AC6E7F587037D6BDFBB08490E8968CD824A FC1EDE31383D28D3FBC34547B42F273DC1477567CA856F9B74B11FCE1CFDAB85C2BA8C8AF6CB45B56BD647AFA56122D1 162FB0C3D11488CA249C03CA4CD7738C84E58B89FEAF0FA7194AE96DA954B6C199DDEA839315DDA68B313F34D6111FF2 1A333F20ECB4D1DABEE0E615052A296FD32C379E8EFC553B24C0B0D558BED7E1F3FA57777E69372CC0E84BCA8627EBBE 7D419753C4B2006CE1D192F94EF9E001151ECD7C0EB2EE422EF71DBE8B6EE310FEC1A3169AC17909A5BB2CC37B068B45 38DE832296E6F9254F41A5DC60B0FA58D80BEA00AB9F9A5156F7F64269D697DF70AA54C043A28AE94134F21C90F5445E A3A9A4DDEDE1F6E5D2C345E893EB37157313C73C39C2E0801D1135D840F1CF83F43BB57DE7EBF1562AF6D740F2A68359 FDF4FF8D176A33C3E413C99F9B949FB354657505EC3798F3F0502CC7BF643B6980782E3DF9F3027F01973F25C3AF9655 A33A196DB7CDA11D18E295FB16F599BB3371E54C25A38D0AADB1F3A84F123C8FACFBBE20D868955E97A53405ACC24CAC 244CAFAE8A69C601AED3AD5FF32C35E3ADCAFB1110848052175B461E46BDECC481231EABDC8F048785FB1EE6C0058FCB 8229C6842ECF56830EA72282E66D54A4AECCE2AD4798F4EBE9F412A891D1FB2ED0DB1BDAA0966EB823C03731DDDBFA0A 0B0115C6FDCA035ACC18B6583E0E01A665BBF5318EF7F7A3CBC6563BAA48E0BE43530A36558CD035E0B655446908ACE5 9550C8F42CF68EA659F5B850C39A9ADAE314B8CF63425058A5B7A4D2B9003E3A74E8D43CB9B11924A71BF105DC7ACC4E 13DBF26ADB03729955409E7EABF0A4DEEF7A4B7F484A55FFA53862181394945DC35EFB6BAB6714836827C4331EE49816 2D636D11232F77EAE13FC8B7F7B9C098242C75652AD737D670C54B529EBF51F28018FF9432F7640565F1062AF0728330 31DD45846E512B70BFBA394593DF8C472FC9F9908FFD7783B63FC3759FB3B77846E460D280E26E4A3D4D20580A08DCF9 F05DBF26BE1B58AD9C99F9B93C11DB5E9A6E828C6B2E05868622D14F30FAE6C7C686871B8015310B7C4DB936FCA6EF2E E5D40D79F89F2F62D11D26C3496D36652128BE4FBA73AAFD77ACBE6C496BFF92E6A19E6FE70245305FD07BF258D0FAAC B87DED60D640BB853265988CD263D5E873E027D9D95909A41BB6049C50CB3B683E2A461B5BF162D0BBA11CE2081C3715 D08DD5E456BCE6F7FC6F06C443C0D7A594121B173718093ED919470F3FB0FECCB84E7D98D23EF52E4963E84CC1A9A461 89298A117A937475D84E35599D2056E0F24525B41FB2B93006B95EB4C33FCCC8661571C6DC65AF1C2258377098F82A5C 1EE5CDD51E189B2AD54D3F9A95416AE6CC3639230E9825215FCB1EF065E0E4C8C1F2C2CB32811A60B9DCDF70F0747B99 3BABB19FFF77FED15DF4678D06F8AE230391A2E73EF93051052154DA6315 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %RBIEndFontSubset 803 | /OWIOAH+Vibes-Regular cguidfix 804 | /F2.1/OWIOAH+Vibes-Regular renmfont 805 | [ /CIEBasedABC 4 dict dup begin 806 | /WhitePoint [ 0.9505 1.0000 1.0891 ] def 807 | /DecodeABC [ 808 | { 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse 809 | 1 index 1 index ge { exch pop } { pop } ifelse < 810 | 0000000000000000000000000000000000000000000000000000000000000000 811 | 0000000000000000000000000000000000000001010101010101010101010101 812 | 0101010101010101010101010101010101010101010101020202020202020202 813 | 0202020202020202020202020202020202030303030303030303030303030303 814 | 0303030303030304040404040404040404040404040404040404050505050505 815 | 0505050505050505050506060606060606060606060606060607070707070707 816 | 0707070707070708080808080808080808080808090909090909090909090909 817 | 0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c 818 | 0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010 819 | 1010101010111111111111111112121212121212121313131313131313141414 820 | 1414141414151515151515151616161616161616171717171717171818181818 821 | 18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d 822 | 1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223 823 | 2323232323242424242425252525252526262626262727272727282828282829 824 | 292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f 825 | 2f2f303030303131313131323232323333333333343434343535353535363636 826 | 36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e 827 | 3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646 828 | 4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f 829 | 4f50505051515151525252535353535454545555555656565657575758585859 830 | 59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263 831 | 63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e 832 | 6e6e6f6f6f707070717171727273737374747475757576767677777878787979 833 | 797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585 834 | 86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292 835 | 9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f 836 | a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae 837 | aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd 838 | bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc 839 | cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd 840 | dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee 841 | eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff 842 | > dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling 843 | cvi 3 index exch get 4 -1 roll 3 -1 roll get 844 | dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind 845 | 846 | { 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse 847 | 1 index 1 index ge { exch pop } { pop } ifelse < 848 | 0000000000000000000000000000000000000000000000000000000000000000 849 | 0000000000000000000000000000000000000001010101010101010101010101 850 | 0101010101010101010101010101010101010101010101020202020202020202 851 | 0202020202020202020202020202020202030303030303030303030303030303 852 | 0303030303030304040404040404040404040404040404040404050505050505 853 | 0505050505050505050506060606060606060606060606060607070707070707 854 | 0707070707070708080808080808080808080808090909090909090909090909 855 | 0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c 856 | 0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010 857 | 1010101010111111111111111112121212121212121313131313131313141414 858 | 1414141414151515151515151616161616161616171717171717171818181818 859 | 18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d 860 | 1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223 861 | 2323232323242424242425252525252526262626262727272727282828282829 862 | 292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f 863 | 2f2f303030303131313131323232323333333333343434343535353535363636 864 | 36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e 865 | 3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646 866 | 4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f 867 | 4f50505051515151525252535353535454545555555656565657575758585859 868 | 59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263 869 | 63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e 870 | 6e6e6f6f6f707070717171727273737374747475757576767677777878787979 871 | 797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585 872 | 86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292 873 | 9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f 874 | a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae 875 | aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd 876 | bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc 877 | cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd 878 | dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee 879 | eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff 880 | > dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling 881 | cvi 3 index exch get 4 -1 roll 3 -1 roll get 882 | dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind 883 | 884 | { 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse 885 | 1 index 1 index ge { exch pop } { pop } ifelse < 886 | 0000000000000000000000000000000000000000000000000000000000000000 887 | 0000000000000000000000000000000000000001010101010101010101010101 888 | 0101010101010101010101010101010101010101010101020202020202020202 889 | 0202020202020202020202020202020202030303030303030303030303030303 890 | 0303030303030304040404040404040404040404040404040404050505050505 891 | 0505050505050505050506060606060606060606060606060607070707070707 892 | 0707070707070708080808080808080808080808090909090909090909090909 893 | 0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c 894 | 0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010 895 | 1010101010111111111111111112121212121212121313131313131313141414 896 | 1414141414151515151515151616161616161616171717171717171818181818 897 | 18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d 898 | 1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223 899 | 2323232323242424242425252525252526262626262727272727282828282829 900 | 292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f 901 | 2f2f303030303131313131323232323333333333343434343535353535363636 902 | 36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e 903 | 3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646 904 | 4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f 905 | 4f50505051515151525252535353535454545555555656565657575758585859 906 | 59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263 907 | 63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e 908 | 6e6e6f6f6f707070717171727273737374747475757576767677777878787979 909 | 797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585 910 | 86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292 911 | 9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f 912 | a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae 913 | aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd 914 | bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc 915 | cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd 916 | dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee 917 | eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff 918 | > dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling 919 | cvi 3 index exch get 4 -1 roll 3 -1 roll get 920 | dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind 921 | ] def 922 | /MatrixABC [ 0.4124 0.2126 0.0193 0.3576 0.7151 0.1192 0.1805 0.0722 0.9508 ] def 923 | /RangeLMN [ 0.0 0.9505 0.0 1.0000 0.0 1.0891 ] def 924 | end ] /Cs1 exch/ColorSpace dr pop 925 | %%EndPageSetup 926 | /Cs1 SC 927 | 1 1 1 sc 928 | q 929 | 0 0 612 792 rc 930 | 0 792 m 931 | 612 792 l 932 | 612 0 l 933 | 0 0 l 934 | h 935 | f 936 | Q 937 | 0 0 0 sc 938 | q 939 | 42.929958 72 518.63013 669.56 rc 940 | 1 0 0 1 79.68 672.08008 cm 941 | /F1.1[ 56 0 0 56 0 0]sf 942 | -16.799999 0 m 943 | (!!)[ 8.400000 0.000000 ] xS 944 | /F2.1[ 56 0 0 56 0 0]sf 945 | 0 0 m 946 | (!"#$)[ 15.064000 5.936000 9.296000 0.000000 ] xS 947 | 70.783997 -18.256001 m 948 | (%)s 949 | 71.792 0 m 950 | (&'\()[ 9.296000 4.200000 0.000000 ] xS 951 | /F1.1[ 56 0 0 56 0 0]sf 952 | 89.487999 0 m 953 | (!)s 954 | /F2.1[ 56 0 0 56 0 0]sf 955 | 97.888 0 m 956 | (\)*)[ 17.696000 0.000000 ] xS 957 | /F1.1[ 56 0 0 56 0 0]sf 958 | 142.35201 0 m 959 | (!)s 960 | /F2.1[ 56 0 0 56 0 0]sf 961 | 150.36 -21.504 m 962 | (%)s 963 | 150.752 0 m 964 | (+,-.)[ 6.832000 9.296000 34.048000 0.000000 ] xS 965 | /F1.1[ 56 0 0 56 0 0]sf 966 | 210.168 0 m 967 | (!!)[ 8.400000 0.000000 ] xS 968 | /F2.1[ 56 0 0 56 0 0]sf 969 | 226.968 0 m 970 | (!"/////0/////#////1//////'\()[ 15.064000 5.936000 2.912000 2.912000 2.912000 2.912000 2.912000 0.000000 2.912000 2.912000 2.912000 2.912000 2.912000 9.296000 2.912000 2.912000 2.912000 2.912000 28.336000 2.912000 2.912000 2.912000 2.912000 2.912000 2.912000 4.200000 0.000000 ] xS 971 | /F1.1[ 56 0 0 56 0 0]sf 972 | 352.23999 0 m 973 | (!)s 974 | /F2.1[ 56 0 0 56 0 0]sf 975 | 363.832 -31.695999 m 976 | (%)s 977 | 360.64001 0 m 978 | (2///////&3////&/////'\()[ 19.264000 2.912000 2.912000 2.912000 2.912000 2.912000 2.912000 2.912000 9.296000 6.832000 2.912000 2.912000 2.912000 2.912000 9.296000 2.912000 2.912000 2.912000 2.912000 2.912000 4.200000 0.000000 ] xS 979 | 1 0 0 1 82.480003 599.88013 cm 980 | /F1.1[ 56 0 0 56 0 0]sf 981 | -8.3999996 0 m 982 | (!)s 983 | /F2.1[ 56 0 0 56 0 0]sf 984 | 0 0 m 985 | (!"//4//'5\()[ 15.064000 5.936000 2.912000 2.912000 22.512000 2.912000 2.912000 4.200000 23.800000 0.000000 ] xS 986 | /F1.1[ 56 0 0 56 0 0]sf 987 | 87.360001 0 m 988 | (!)s 989 | /F2.1[ 56 0 0 56 0 0]sf 990 | 95.760002 0 m 991 | (67//89//:)[ 31.080000 23.072000 2.912000 2.912000 27.888000 8.456000 2.912000 2.912000 0.000000 ] xS 992 | /F1.1[ 56 0 0 56 0 0]sf 993 | 207.144 0 m 994 | (!!)[ 8.400000 0.000000 ] xS 995 | /F2.1[ 56 0 0 56 0 0]sf 996 | 223.944 0 m 997 | (!";<5\()[ 15.064000 5.936000 29.680000 27.888000 23.800000 0.000000 ] xS 998 | /F1.1[ 56 0 0 56 0 0]sf 999 | 330.51199 0 m 1000 | (!)s 1001 | /F2.1[ 56 0 0 56 0 0]sf 1002 | 338.91199 0 m 1003 | (=38)[ 14.784000 6.832000 0.000000 ] xS 1004 | /F1.1[ 56 0 0 56 0 0]sf 1005 | 388.41599 0 m 1006 | (!)s 1007 | /F2.1[ 56 0 0 56 0 0]sf 1008 | 396.81601 0 m 1009 | (=0/>//<)[ 14.784000 0.000000 2.912000 9.296000 2.912000 2.912000 0.000000 ] xS 1010 | 1 0 0 1 83.208 527.68011 cm 1011 | /F1.1[ 56 0 0 56 0 0]sf 1012 | -8.3999996 0 m 1013 | (!)s 1014 | /F2.1[ 56 0 0 56 0 0]sf 1015 | 0 0 m 1016 | (!"///?)[ 15.064000 5.936000 2.912000 2.912000 2.912000 0.000000 ] xS 1017 | 38.080002 -17.639999 m 1018 | (0)s 1019 | 38.976002 0 m 1020 | (+////'\()[ 6.832000 2.912000 2.912000 2.912000 2.912000 4.200000 0.000000 ] xS 1021 | /F1.1[ 56 0 0 56 0 0]sf 1022 | 65.856003 0 m 1023 | (!)s 1024 | /F2.1[ 56 0 0 56 0 0]sf 1025 | 74.255997 0 m 1026 | (@///)[ 28.280000 2.912000 2.912000 0.000000 ] xS 1027 | 108.08 17.528 m 1028 | (A)s 1029 | 111.272 0 m 1030 | (BC///;/:)[ 9.240000 28.112000 2.912000 2.912000 2.912000 29.680000 2.912000 0.000000 ] xS 1031 | /F1.1[ 56 0 0 56 0 0]sf 1032 | 199.192 0 m 1033 | (!!!)[ 8.400000 8.400000 0.000000 ] xS 1034 | /F2.1[ 56 0 0 56 0 0]sf 1035 | 224.392 0 m 1036 | (!"/////D+/////////*)[ 15.064000 5.936000 2.912000 2.912000 2.912000 2.912000 2.912000 23.520000 6.832000 2.912000 2.912000 2.912000 2.912000 2.912000 2.912000 2.912000 2.912000 2.912000 0.000000 ] xS 1037 | /F1.1[ 56 0 0 56 0 0]sf 1038 | 343.28 0 m 1039 | (!)s 1040 | /F2.1[ 56 0 0 56 0 0]sf 1041 | 351.67999 0 m 1042 | (\)////>///////?EF)[ 17.696000 2.912000 2.912000 2.912000 2.912000 9.296000 2.912000 2.912000 2.912000 2.912000 2.912000 2.912000 2.912000 9.240000 8.680000 0.000000 ] xS 1043 | 1 0 0 1 82.424004 455.4801 cm 1044 | /F1.1[ 56 0 0 56 0 0]sf 1045 | -8.3999996 0 m 1046 | (!)s 1047 | /F2.1[ 56 0 0 56 0 0]sf 1048 | 0 0 m 1049 | (!"/4.+/'\(F)[ 15.064000 5.936000 2.912000 22.512000 9.240000 6.832000 2.912000 4.200000 4.200000 0.000000 ] xS 1050 | /F1.1[ 56 0 0 56 0 0]sf 1051 | 101.976 0 m 1052 | (!)s 1053 | /F2.1[ 56 0 0 56 0 0]sf 1054 | 110.376 0 m 1055 | (GHC/'\(F)[ 22.456000 9.408000 28.112000 2.912000 4.200000 4.200000 0.000000 ] xS 1056 | /F1.1[ 56 0 0 56 0 0]sf 1057 | 209.832 0 m 1058 | (!!)[ 8.400000 0.000000 ] xS 1059 | /F2.1[ 56 0 0 56 0 0]sf 1060 | 226.632 0 m 1061 | (!"//I)[ 15.064000 5.936000 2.912000 2.912000 0.000000 ] xS 1062 | 281.34399 -14.672 m 1063 | (J)s 1064 | 280.84 0 m 1065 | (+///'\()[ 6.832000 2.912000 2.912000 2.912000 4.200000 0.000000 ] xS 1066 | /F1.1[ 56 0 0 56 0 0]sf 1067 | 304.80801 0 m 1068 | (!)s 1069 | /F2.1[ 56 0 0 56 0 0]sf 1070 | 313.20801 0 m 1071 | (F)s 1072 | /F1.1[ 56 0 0 56 0 0]sf 1073 | 341.37601 0 m 1074 | (!)s 1075 | /F2.1[ 56 0 0 56 0 0]sf 1076 | 360.52802 -6.4400001 m 1077 | (%)s 1078 | 349.776 0 m 1079 | (KCL//'\(F)[ 17.136000 28.112000 20.160000 2.912000 2.912000 4.200000 4.200000 0.000000 ] xS 1080 | ep 1081 | end 1082 | %%Trailer 1083 | %%Pages: 1 1084 | %%BoundingBox: 0 0 612 792 1085 | %%EOF 1086 | --------------------------------------------------------------------------------