diff options
author | Karl Berry <karl@freefriends.org> | 2009-05-31 22:45:57 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2009-05-31 22:45:57 +0000 |
commit | f8f39d108eaf89011a4e44583d73c685be0a0a96 (patch) | |
tree | e190ae2a290209db7f139853eec55259b87357bb /Master/texmf-dist | |
parent | 3e6c761e5e3bdaafc25f01981253d2f72c93fe26 (diff) |
around-the-bend is the catalogue name
git-svn-id: svn://tug.org/texlive/trunk@13544 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
3 files changed, 19100 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/around-the-bend/AroundTheBend.pdf b/Master/texmf-dist/doc/generic/around-the-bend/AroundTheBend.pdf new file mode 100644 index 00000000000..31b409d5e8b --- /dev/null +++ b/Master/texmf-dist/doc/generic/around-the-bend/AroundTheBend.pdf @@ -0,0 +1,11659 @@ +%PDF-1.4 +% +5 0 obj +<< /S /GoTo /D (section*.1) >> +endobj +8 0 obj +(Contents) +endobj +9 0 obj +<< /S /GoTo /D (chapter*.2) >> +endobj +12 0 obj +(Preface) +endobj +13 0 obj +<< /S /GoTo /D (chapter*.3) >> +endobj +16 0 obj +(Introduction) +endobj +17 0 obj +<< /S /GoTo /D (chapter.1) >> +endobj +20 0 obj +(1 Expansion) +endobj +21 0 obj +<< /S /GoTo /D (section.1.1) >> +endobj +24 0 obj +(1.1 Exercise \(hard\)) +endobj +25 0 obj +<< /S /GoTo /D (section.1.2) >> +endobj +28 0 obj +(1.2 Answers) +endobj +29 0 obj +<< /S /GoTo /D (chapter.2) >> +endobj +32 0 obj +(2 Empty argument) +endobj +33 0 obj +<< /S /GoTo /D (section.2.1) >> +endobj +36 0 obj +(2.1 Exercise \(hard\)) +endobj +37 0 obj +<< /S /GoTo /D (section.2.2) >> +endobj +40 0 obj +(2.2 Answers) +endobj +41 0 obj +<< /S /GoTo /D (chapter.3) >> +endobj +44 0 obj +(3 Discretionary) +endobj +45 0 obj +<< /S /GoTo /D (section.3.1) >> +endobj +48 0 obj +(3.1 Exercise \(fast\)) +endobj +49 0 obj +<< /S /GoTo /D (section.3.2) >> +endobj +52 0 obj +(3.2 Answers) +endobj +53 0 obj +<< /S /GoTo /D (chapter.4) >> +endobj +56 0 obj +(4 What is `best'?) +endobj +57 0 obj +<< /S /GoTo /D (section.4.1) >> +endobj +60 0 obj +(4.1 Exercise \(essay\)) +endobj +61 0 obj +<< /S /GoTo /D (section.4.2) >> +endobj +64 0 obj +(4.2 Answers) +endobj +65 0 obj +<< /S /GoTo /D (chapter.5) >> +endobj +68 0 obj +(5 `string tokens) +endobj +69 0 obj +<< /S /GoTo /D (section.5.1) >> +endobj +72 0 obj +(5.1 Exercise \(fast\)) +endobj +73 0 obj +<< /S /GoTo /D (section.5.2) >> +endobj +76 0 obj +(5.2 Answers) +endobj +77 0 obj +<< /S /GoTo /D (chapter.6) >> +endobj +80 0 obj +(6 Counting arguments) +endobj +81 0 obj +<< /S /GoTo /D (section.6.1) >> +endobj +84 0 obj +(6.1 Exercise \(hard\)) +endobj +85 0 obj +<< /S /GoTo /D (section.6.2) >> +endobj +88 0 obj +(6.2 Answers) +endobj +89 0 obj +<< /S /GoTo /D (chapter.7) >> +endobj +92 0 obj +(7 Self replication) +endobj +93 0 obj +<< /S /GoTo /D (section.7.1) >> +endobj +96 0 obj +(7.1 Exercise \(hard\)) +endobj +97 0 obj +<< /S /GoTo /D (section.7.2) >> +endobj +100 0 obj +(7.2 Answers) +endobj +101 0 obj +<< /S /GoTo /D (chapter.8) >> +endobj +104 0 obj +(8 `end too soon) +endobj +105 0 obj +<< /S /GoTo /D (section.8.1) >> +endobj +108 0 obj +(8.1 Exercise \(hard\)) +endobj +109 0 obj +<< /S /GoTo /D (section.8.2) >> +endobj +112 0 obj +(8.2 Answers) +endobj +113 0 obj +<< /S /GoTo /D (subsection.8.2.1) >> +endobj +116 0 obj +(8.2.1 Groups) +endobj +117 0 obj +<< /S /GoTo /D (subsection.8.2.2) >> +endobj +120 0 obj +(8.2.2 Conditionals) +endobj +121 0 obj +<< /S /GoTo /D (subsection.8.2.3) >> +endobj +124 0 obj +(8.2.3 Addendum) +endobj +125 0 obj +<< /S /GoTo /D (chapter.9) >> +endobj +128 0 obj +(9 \(un\)vboxes) +endobj +129 0 obj +<< /S /GoTo /D (section.9.1) >> +endobj +132 0 obj +(9.1 Exercise \(test your knowledge\)) +endobj +133 0 obj +<< /S /GoTo /D (section.9.2) >> +endobj +136 0 obj +(9.2 Answers) +endobj +137 0 obj +<< /S /GoTo /D (chapter.10) >> +endobj +140 0 obj +(10 Obfuscated TeX code) +endobj +141 0 obj +<< /S /GoTo /D (section.10.1) >> +endobj +144 0 obj +(10.1 Exercise \(hard\)) +endobj +145 0 obj +<< /S /GoTo /D (section.10.2) >> +endobj +148 0 obj +(10.2 Answers) +endobj +149 0 obj +<< /S /GoTo /D (chapter.11) >> +endobj +152 0 obj +(11 Decoding obfuscated TeX code) +endobj +153 0 obj +<< /S /GoTo /D (section.11.1) >> +endobj +156 0 obj +(11.1 Exercise \(hard\)) +endobj +157 0 obj +<< /S /GoTo /D (section.11.2) >> +endobj +160 0 obj +(11.2 Answers) +endobj +161 0 obj +<< /S /GoTo /D (subsection.11.2.1) >> +endobj +164 0 obj +(11.2.1 Part 1) +endobj +165 0 obj +<< /S /GoTo /D (subsection.11.2.2) >> +endobj +168 0 obj +(11.2.2 Part 2: Discussion) +endobj +169 0 obj +<< /S /GoTo /D (subsubsection.11.2.2.1) >> +endobj +172 0 obj +(11.2.2.1 Encoding) +endobj +173 0 obj +<< /S /GoTo /D (subsubsection.11.2.2.2) >> +endobj +176 0 obj +(11.2.2.2 Decoding) +endobj +177 0 obj +<< /S /GoTo /D (subsection.11.2.3) >> +endobj +180 0 obj +(11.2.3 Part 3) +endobj +181 0 obj +<< /S /GoTo /D (subsection.11.2.4) >> +endobj +184 0 obj +(11.2.4 Addendum 1) +endobj +185 0 obj +<< /S /GoTo /D (subsection.11.2.5) >> +endobj +188 0 obj +(11.2.5 Addendum 2) +endobj +189 0 obj +<< /S /GoTo /D (chapter.12) >> +endobj +192 0 obj +(12 Defining new control sequences) +endobj +193 0 obj +<< /S /GoTo /D (section.12.1) >> +endobj +196 0 obj +(12.1 Exercise) +endobj +197 0 obj +<< /S /GoTo /D (section.12.2) >> +endobj +200 0 obj +(12.2 Answers) +endobj +201 0 obj +<< /S /GoTo /D (section.12.3) >> +endobj +204 0 obj +(12.3 Addendum) +endobj +205 0 obj +<< /S /GoTo /D (chapter.13) >> +endobj +208 0 obj +(13 `endlinechar and `par) +endobj +209 0 obj +<< /S /GoTo /D (section.13.1) >> +endobj +212 0 obj +(13.1 Exercise \(fast\)) +endobj +213 0 obj +<< /S /GoTo /D (section.13.2) >> +endobj +216 0 obj +(13.2 Answers) +endobj +217 0 obj +<< /S /GoTo /D (chapter.14) >> +endobj +220 0 obj +(14 TeX's stomach) +endobj +221 0 obj +<< /S /GoTo /D (section.14.1) >> +endobj +224 0 obj +(14.1 Exercise) +endobj +225 0 obj +<< /S /GoTo /D (section.14.2) >> +endobj +228 0 obj +(14.2 Answers) +endobj +229 0 obj +<< /S /GoTo /D (chapter.15) >> +endobj +232 0 obj +(15 Space removal) +endobj +233 0 obj +<< /S /GoTo /D (section.15.1) >> +endobj +236 0 obj +(15.1 Exercise) +endobj +237 0 obj +<< /S /GoTo /D (section.15.2) >> +endobj +240 0 obj +(15.2 Answers) +endobj +241 0 obj +<< /S /GoTo /D (subsection.15.2.1) >> +endobj +244 0 obj +(15.2.1 Trimming a trailing space) +endobj +245 0 obj +<< /S /GoTo /D (subsection.15.2.2) >> +endobj +248 0 obj +(15.2.2 Trimming a leading space) +endobj +249 0 obj +<< /S /GoTo /D (subsection.15.2.3) >> +endobj +252 0 obj +(15.2.3 Some remarks about the domain of the problem) +endobj +253 0 obj +<< /S /GoTo /D (chapter.16) >> +endobj +256 0 obj +(16 Assorted numbers, skips, and modes) +endobj +257 0 obj +<< /S /GoTo /D (section.16.1) >> +endobj +260 0 obj +(16.1 Exercise) +endobj +261 0 obj +<< /S /GoTo /D (section.16.2) >> +endobj +264 0 obj +(16.2 Answers) +endobj +265 0 obj +<< /S /GoTo /D (chapter.17) >> +endobj +268 0 obj +(17 Missing `input file) +endobj +269 0 obj +<< /S /GoTo /D (section.17.1) >> +endobj +272 0 obj +(17.1 Exercise) +endobj +273 0 obj +<< /S /GoTo /D (section.17.2) >> +endobj +276 0 obj +(17.2 Answers) +endobj +277 0 obj +<< /S /GoTo /D (subsection.17.2.1) >> +endobj +280 0 obj +(17.2.1 Don't bother, redefine `input instead) +endobj +281 0 obj +<< /S /GoTo /D (subsection.17.2.2) >> +endobj +284 0 obj +(17.2.2 Difficulties associated with redefining `input) +endobj +285 0 obj +<< /S /GoTo /D (subsection.17.2.3) >> +endobj +288 0 obj +(17.2.3 Somebody already published some input error recovery files) +endobj +289 0 obj +<< /S /GoTo /D (subsection.17.2.4) >> +endobj +292 0 obj +(17.2.4 But what the heck, here are my slightly different ones) +endobj +293 0 obj +<< /S /GoTo /D (subsection.17.2.5) >> +endobj +296 0 obj +(17.2.5 Best final version) +endobj +297 0 obj +<< /S /GoTo /D (subsection.17.2.6) >> +endobj +300 0 obj +(17.2.6 Conclusions) +endobj +301 0 obj +<< /S /GoTo /D (chapter.18) >> +endobj +304 0 obj +(18 Page breaking) +endobj +305 0 obj +<< /S /GoTo /D (section.18.1) >> +endobj +308 0 obj +(18.1 Exercise) +endobj +309 0 obj +<< /S /GoTo /D (section.18.2) >> +endobj +312 0 obj +(18.2 Answers) +endobj +313 0 obj +<< /S /GoTo /D (subsection.18.2.1) >> +endobj +316 0 obj +(18.2.1 Some historical research) +endobj +317 0 obj +<< /S /GoTo /D (chapter.19) >> +endobj +320 0 obj +(19 Author lists) +endobj +321 0 obj +<< /S /GoTo /D (section.19.1) >> +endobj +324 0 obj +(19.1 Exercise \(hard\)) +endobj +325 0 obj +<< /S /GoTo /D (section.19.2) >> +endobj +328 0 obj +(19.2 Editor's notes) +endobj +329 0 obj +<< /S /GoTo /D (chapter.20) >> +endobj +332 0 obj +(20 Math symbols) +endobj +333 0 obj +<< /S /GoTo /D (section.20.1) >> +endobj +336 0 obj +(20.1 Exercise) +endobj +337 0 obj +<< /S /GoTo /D (section.20.2) >> +endobj +340 0 obj +(20.2 Answer) +endobj +341 0 obj +<< /S /GoTo /D (chapter.21) >> +endobj +344 0 obj +(21 Variable number of arguments) +endobj +345 0 obj +<< /S /GoTo /D (section.21.1) >> +endobj +348 0 obj +(21.1 Remarks) +endobj +349 0 obj +<< /S /GoTo /D (section.21.2) >> +endobj +352 0 obj +(21.2 Exercise) +endobj +353 0 obj +<< /S /GoTo /D (section.21.3) >> +endobj +356 0 obj +(21.3 Answers) +endobj +357 0 obj +<< /S /GoTo /D (section*.4) >> +endobj +360 0 obj +(Index) +endobj +361 0 obj +<< /S /GoTo /D [362 0 R /Fit ] >> +endobj +364 0 obj << +/Length 382 +/Filter /FlateDecode +>> +stream +xڍRN0+|L1㉗%T8@HI9Ɖ"QEl~3ows+CZb閉riP܈y6O':zK^z
P2%<A
[pAkU1[DOZAPy+cͅM + K +endstream +endobj +362 0 obj << +/Type /Page +/Contents 364 0 R +/Resources 363 0 R +/MediaBox [0 0 612 792] +/Parent 372 0 R +>> endobj +365 0 obj << +/D [362 0 R /XYZ 89.933 702.524 null] +>> endobj +366 0 obj << +/D [362 0 R /XYZ 89.933 678.614 null] +>> endobj +363 0 obj << +/Font << /F17 367 0 R /F18 368 0 R /F20 369 0 R /F19 370 0 R /F21 371 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +375 0 obj << +/Length 8 +/Filter /FlateDecode +>> +stream +x +endstream +endobj +374 0 obj << +/Type /Page +/Contents 375 0 R +/Resources 373 0 R +/MediaBox [0 0 612 792] +/Parent 372 0 R +>> endobj +376 0 obj << +/D [374 0 R /XYZ 126.795 702.524 null] +>> endobj +373 0 obj << +/ProcSet [ /PDF ] +>> endobj +412 0 obj << +/Length 807 +/Filter /FlateDecode +>> +stream +xr0} +6_VL)3de7VZOS;c;=GM(:jV_ώ^48hI
c,Uf:ʘZ(jıJ*]RNGDL +EN %!ln@RC7q~ź-{L8DP!qb@wlJv.o<JċNS +[z^4v`a/:{k$(qV@r5t`esSl݀<(ulv^Z=ЧuW60DhZt":T'Mk:xV;b@YzZd!qt!sˬMhѷ?M_FqT +A*ȐN^^"pUmPzJO=#HD|&9Y䰡6/'ʃ.ڮ<'+pg%jy4%tDM8k-6<UѲl<|勢>CL4Ft'~^Ti4z*6G{>9zWWgdUh
_N̋I$Փ"W
>&85XqC_\_lj<d*Buuywo;}SPoZ۸$нk}պ* +.m~aCTםFQp_橖?ãw/ +endstream +endobj +411 0 obj << +/Type /Page +/Contents 412 0 R +/Resources 410 0 R +/MediaBox [0 0 612 792] +/Parent 372 0 R +/Annots [ 377 0 R 378 0 R 379 0 R 380 0 R 381 0 R 382 0 R 383 0 R 384 0 R 385 0 R 386 0 R 387 0 R 388 0 R 389 0 R 390 0 R 391 0 R 392 0 R 393 0 R 394 0 R 395 0 R 396 0 R 397 0 R 398 0 R 399 0 R 400 0 R 401 0 R 402 0 R 403 0 R 404 0 R 405 0 R 406 0 R 407 0 R 408 0 R ] +>> endobj +377 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [88.936 608.876 135.707 617.787] +/Subtype /Link +/A << /S /GoTo /D (section*.1) >> +>> endobj +378 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [88.936 586.958 128.143 595.869] +/Subtype /Link +/A << /S /GoTo /D (chapter*.2) >> +>> endobj +379 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [88.936 565.04 154.095 573.951] +/Subtype /Link +/A << /S /GoTo /D (chapter*.3) >> +>> endobj +380 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [88.936 541.185 157.541 552.033] +/Subtype /Link +/A << /S /GoTo /D (chapter.1) >> +>> endobj +381 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 528.676 195.731 540.632] +/Subtype /Link +/A << /S /GoTo /D (section.1.1) >> +>> endobj +382 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 519.212 164.902 528.012] +/Subtype /Link +/A << /S /GoTo /D (section.1.2) >> +>> endobj +383 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [88.936 495.357 190.998 506.122] +/Subtype /Link +/A << /S /GoTo /D (chapter.2) >> +>> endobj +384 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 482.848 195.731 494.803] +/Subtype /Link +/A << /S /GoTo /D (section.2.1) >> +>> endobj +385 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 473.384 164.902 482.184] +/Subtype /Link +/A << /S /GoTo /D (section.2.2) >> +>> endobj +386 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [88.936 449.529 173.489 460.377] +/Subtype /Link +/A << /S /GoTo /D (chapter.3) >> +>> endobj +387 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 437.02 191.607 448.975] +/Subtype /Link +/A << /S /GoTo /D (section.3.1) >> +>> endobj +388 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 427.556 164.902 436.356] +/Subtype /Link +/A << /S /GoTo /D (section.3.2) >> +>> endobj +389 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [88.936 405.638 183.404 414.549] +/Subtype /Link +/A << /S /GoTo /D (chapter.4) >> +>> endobj +390 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 391.192 198.028 403.147] +/Subtype /Link +/A << /S /GoTo /D (section.4.1) >> +>> endobj +391 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 381.727 164.902 390.528] +/Subtype /Link +/A << /S /GoTo /D (section.4.2) >> +>> endobj +392 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [88.936 357.596 178.352 368.721] +/Subtype /Link +/A << /S /GoTo /D (chapter.5) >> +>> endobj +393 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 345.364 191.607 357.319] +/Subtype /Link +/A << /S /GoTo /D (section.5.1) >> +>> endobj +394 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 335.899 164.902 344.7] +/Subtype /Link +/A << /S /GoTo /D (section.5.2) >> +>> endobj +395 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [88.936 312.044 208.039 322.892] +/Subtype /Link +/A << /S /GoTo /D (chapter.6) >> +>> endobj +396 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 299.536 195.731 311.491] +/Subtype /Link +/A << /S /GoTo /D (section.6.1) >> +>> endobj +397 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 290.071 164.902 298.871] +/Subtype /Link +/A << /S /GoTo /D (section.6.2) >> +>> endobj +398 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [88.936 266.216 181.084 277.064] +/Subtype /Link +/A << /S /GoTo /D (chapter.7) >> +>> endobj +399 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 253.707 195.731 265.663] +/Subtype /Link +/A << /S /GoTo /D (section.7.1) >> +>> endobj +400 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 244.243 164.902 253.043] +/Subtype /Link +/A << /S /GoTo /D (section.7.2) >> +>> endobj +401 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [88.936 221.495 173.322 231.236] +/Subtype /Link +/A << /S /GoTo /D (chapter.8) >> +>> endobj +402 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 207.879 195.731 219.834] +/Subtype /Link +/A << /S /GoTo /D (section.8.1) >> +>> endobj +403 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 198.415 164.902 207.215] +/Subtype /Link +/A << /S /GoTo /D (section.8.2) >> +>> endobj +404 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [126.795 184.522 192.368 195.26] +/Subtype /Link +/A << /S /GoTo /D (subsection.8.2.1) >> +>> endobj +405 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [126.795 174.504 215.518 183.415] +/Subtype /Link +/A << /S /GoTo /D (subsection.8.2.2) >> +>> endobj +406 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [126.795 162.549 208.544 171.46] +/Subtype /Link +/A << /S /GoTo /D (subsection.8.2.3) >> +>> endobj +407 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [88.936 138.141 161.471 150.096] +/Subtype /Link +/A << /S /GoTo /D (chapter.9) >> +>> endobj +408 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 126.186 262.757 138.141] +/Subtype /Link +/A << /S /GoTo /D (section.9.1) >> +>> endobj +413 0 obj << +/D [411 0 R /XYZ 89.933 702.524 null] +>> endobj +6 0 obj << +/D [411 0 R /XYZ 89.933 631.79 null] +>> endobj +410 0 obj << +/Font << /F22 414 0 R /F23 415 0 R /F21 371 0 R /F24 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +459 0 obj << +/Length 1254 +/Filter /FlateDecode +>> +stream +xZMsFWCEo&7oRJVT9`(#Pd>=̠Eedms ~uw?<SD3LD,D٢O0Mܘ:")sʒXvd̸rDs.jtkH9Oo{Ô9R(X16+:<q)O/7g.8h)o o`KP9X(DYa|>ht'ˬ-`VۗP ,E\Oa,;v_eqyBxf /TrD)NOϷpM?#_-~YYQdiF,6˷Chei1%ȓ i04
b#DW{ +Q@x ORSRVWdП fV|
ͮm*w?7ε+[jC)y!e^dҠ_mc{jCЧawʮ1e +iډVHPURO>pےO]mɿ-rZJijq*cڐGtV-t$Gw7>5+!e +*O8P<zTGڂvSfUE~Wmзg<Bg7l_-unpY>7Te`基p
kj Wjq72 +endstream +endobj +458 0 obj << +/Type /Page +/Contents 459 0 R +/Resources 457 0 R +/MediaBox [0 0 612 792] +/Parent 372 0 R +/Annots [ 409 0 R 417 0 R 418 0 R 419 0 R 420 0 R 421 0 R 422 0 R 423 0 R 424 0 R 425 0 R 426 0 R 427 0 R 428 0 R 429 0 R 430 0 R 431 0 R 432 0 R 433 0 R 434 0 R 435 0 R 436 0 R 437 0 R 438 0 R 439 0 R 440 0 R 441 0 R 442 0 R 443 0 R 444 0 R 445 0 R 446 0 R 447 0 R 448 0 R 449 0 R 450 0 R 451 0 R 452 0 R 453 0 R 454 0 R 455 0 R ] +>> endobj +409 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [140.742 667.655 201.763 676.456] +/Subtype /Link +/A << /S /GoTo /D (section.9.2) >> +>> endobj +417 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [125.798 645.737 250.145 654.648] +/Subtype /Link +/A << /S /GoTo /D (chapter.10) >> +>> endobj +418 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [140.742 631.292 232.592 643.247] +/Subtype /Link +/A << /S /GoTo /D (section.10.1) >> +>> endobj +419 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [140.742 621.827 201.763 630.627] +/Subtype /Link +/A << /S /GoTo /D (section.10.2) >> +>> endobj +420 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [125.798 597.972 297.903 608.82] +/Subtype /Link +/A << /S /GoTo /D (chapter.11) >> +>> endobj +421 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [140.742 585.463 232.592 597.419] +/Subtype /Link +/A << /S /GoTo /D (section.11.1) >> +>> endobj +422 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [140.742 575.999 201.763 584.799] +/Subtype /Link +/A << /S /GoTo /D (section.11.2) >> +>> endobj +423 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.656 564.044 225.093 572.844] +/Subtype /Link +/A << /S /GoTo /D (subsection.11.2.1) >> +>> endobj +424 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.656 552.089 277.701 560.889] +/Subtype /Link +/A << /S /GoTo /D (subsection.11.2.2) >> +>> endobj +425 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [195.537 538.196 279.196 549.044] +/Subtype /Link +/A << /S /GoTo /D (subsubsection.11.2.2.1) >> +>> endobj +426 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [195.537 526.241 278.919 537.089] +/Subtype /Link +/A << /S /GoTo /D (subsubsection.11.2.2.2) >> +>> endobj +427 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.656 516.223 225.093 525.023] +/Subtype /Link +/A << /S /GoTo /D (subsection.11.2.3) >> +>> endobj +428 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.656 504.268 253.708 513.179] +/Subtype /Link +/A << /S /GoTo /D (subsection.11.2.4) >> +>> endobj +429 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.656 492.313 253.708 501.224] +/Subtype /Link +/A << /S /GoTo /D (subsection.11.2.5) >> +>> endobj +430 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [125.798 468.458 299.738 479.306] +/Subtype /Link +/A << /S /GoTo /D (chapter.12) >> +>> endobj +431 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [140.742 458.44 201.57 467.24] +/Subtype /Link +/A << /S /GoTo /D (section.12.1) >> +>> endobj +432 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [140.742 446.485 201.763 455.285] +/Subtype /Link +/A << /S /GoTo /D (section.12.2) >> +>> endobj +433 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [140.742 434.529 213.525 443.44] +/Subtype /Link +/A << /S /GoTo /D (section.12.3) >> +>> endobj +434 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [125.798 410.398 252.357 421.523] +/Subtype /Link +/A << /S /GoTo /D (chapter.13) >> +>> endobj +435 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [140.742 398.166 228.469 410.121] +/Subtype /Link +/A << /S /GoTo /D (section.13.1) >> +>> endobj +436 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [140.742 388.701 201.763 397.502] +/Subtype /Link +/A << /S /GoTo /D (section.13.2) >> +>> endobj +437 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [125.798 366.783 216.142 375.694] +/Subtype /Link +/A << /S /GoTo /D (chapter.14) >> +>> endobj +438 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [140.742 354.828 201.57 363.629] +/Subtype /Link +/A << /S /GoTo /D (section.14.1) >> +>> endobj +439 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [140.742 342.873 201.763 351.673] +/Subtype /Link +/A << /S /GoTo /D (section.14.2) >> +>> endobj +440 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [125.798 319.018 214.285 329.866] +/Subtype /Link +/A << /S /GoTo /D (chapter.15) >> +>> endobj +441 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [140.742 309 201.57 317.8] +/Subtype /Link +/A << /S /GoTo /D (section.15.1) >> +>> endobj +442 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [140.742 297.045 201.763 305.845] +/Subtype /Link +/A << /S /GoTo /D (section.15.2) >> +>> endobj +443 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.656 283.153 310.273 294.001] +/Subtype /Link +/A << /S /GoTo /D (subsection.15.2.1) >> +>> endobj +444 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.656 271.197 309.692 282.046] +/Subtype /Link +/A << /S /GoTo /D (subsection.15.2.2) >> +>> endobj +445 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.656 259.242 407.16 270.09] +/Subtype /Link +/A << /S /GoTo /D (subsection.15.2.3) >> +>> endobj +446 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [125.798 237.324 326.068 248.173] +/Subtype /Link +/A << /S /GoTo /D (chapter.16) >> +>> endobj +447 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [140.742 227.306 201.57 236.107] +/Subtype /Link +/A << /S /GoTo /D (section.16.1) >> +>> endobj +448 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [140.742 215.351 201.763 224.152] +/Subtype /Link +/A << /S /GoTo /D (section.16.2) >> +>> endobj +449 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [125.798 191.22 235.085 202.344] +/Subtype /Link +/A << /S /GoTo /D (chapter.17) >> +>> endobj +450 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [140.742 181.478 201.57 190.279] +/Subtype /Link +/A << /S /GoTo /D (section.17.1) >> +>> endobj +451 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [140.742 169.523 201.763 178.323] +/Subtype /Link +/A << /S /GoTo /D (section.17.2) >> +>> endobj +452 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.656 155.354 363.103 166.479] +/Subtype /Link +/A << /S /GoTo /D (subsection.17.2.1) >> +>> endobj +453 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.656 143.399 394.873 154.524] +/Subtype /Link +/A << /S /GoTo /D (subsection.17.2.2) >> +>> endobj +454 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.656 131.72 457.998 142.569] +/Subtype /Link +/A << /S /GoTo /D (subsection.17.2.3) >> +>> endobj +455 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.656 119.765 432.814 130.613] +/Subtype /Link +/A << /S /GoTo /D (subsection.17.2.4) >> +>> endobj +460 0 obj << +/D [458 0 R /XYZ 126.795 702.524 null] +>> endobj +457 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F23 415 0 R /F24 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +480 0 obj << +/Length 592 +/Filter /FlateDecode +>> +stream +x]o0s#e;1i&MM +endstream +endobj +479 0 obj << +/Type /Page +/Contents 480 0 R +/Resources 478 0 R +/MediaBox [0 0 612 792] +/Parent 372 0 R +/Annots [ 456 0 R 462 0 R 463 0 R 464 0 R 465 0 R 466 0 R 467 0 R 468 0 R 469 0 R 470 0 R 471 0 R 472 0 R 473 0 R 474 0 R 475 0 R 476 0 R 477 0 R ] +>> endobj +456 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [126.795 667.655 235.941 676.566] +/Subtype /Link +/A << /S /GoTo /D (subsection.17.2.5) >> +>> endobj +462 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [126.795 655.7 212.252 664.611] +/Subtype /Link +/A << /S /GoTo /D (subsection.17.2.6) >> +>> endobj +463 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [88.936 631.845 176.981 642.693] +/Subtype /Link +/A << /S /GoTo /D (chapter.18) >> +>> endobj +464 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 621.827 164.708 630.627] +/Subtype /Link +/A << /S /GoTo /D (section.18.1) >> +>> endobj +465 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 609.872 164.902 618.672] +/Subtype /Link +/A << /S /GoTo /D (section.18.2) >> +>> endobj +466 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [126.795 597.917 265.746 606.828] +/Subtype /Link +/A << /S /GoTo /D (subsection.18.2.1) >> +>> endobj +467 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [88.936 575.999 165.845 584.91] +/Subtype /Link +/A << /S /GoTo /D (chapter.19) >> +>> endobj +468 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 561.553 195.731 573.508] +/Subtype /Link +/A << /S /GoTo /D (section.19.1) >> +>> endobj +469 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 552.089 189.393 561] +/Subtype /Link +/A << /S /GoTo /D (section.19.2) >> +>> endobj +470 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [88.936 528.234 176.866 539.082] +/Subtype /Link +/A << /S /GoTo /D (chapter.20) >> +>> endobj +471 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 518.216 164.708 527.016] +/Subtype /Link +/A << /S /GoTo /D (section.20.1) >> +>> endobj +472 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 506.26 160.972 515.061] +/Subtype /Link +/A << /S /GoTo /D (section.20.2) >> +>> endobj +473 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [88.936 482.405 258.599 493.254] +/Subtype /Link +/A << /S /GoTo /D (chapter.21) >> +>> endobj +474 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 472.387 166.922 481.298] +/Subtype /Link +/A << /S /GoTo /D (section.21.1) >> +>> endobj +475 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 460.432 164.708 469.233] +/Subtype /Link +/A << /S /GoTo /D (section.21.2) >> +>> endobj +476 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [103.88 448.477 164.902 457.277] +/Subtype /Link +/A << /S /GoTo /D (section.21.3) >> +>> endobj +477 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [88.936 426.559 119.302 435.47] +/Subtype /Link +/A << /S /GoTo /D (section*.4) >> +>> endobj +481 0 obj << +/D [479 0 R /XYZ 89.933 702.524 null] +>> endobj +478 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F23 415 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +487 0 obj << +/Length 1697 +/Filter /FlateDecode +>> +stream +xڅˎ6[e V$=mҦuthzJE$͢?Ж7z8ΓWogMe74+.nJǕ +ݞ6iԫaM#]fIs)%"t +I 0BXgmFo"m?wf9vD3}0 +Ab_#9:bm£ǃy#ͶH݆K~yj~h4v'O&֗{:9(ưؠrV1ETYF̆Xxŀ&,&ȊNG4C1oɿۼȣe1<W
=?JK5Ʃ ;͜De?։h:$))u,a6##1vjf XwXʡp<H`,3ȦQi3Q0t> (^5X DG 5eP>sOE\,[l9Sվ>+`2`e{r^=ɚY&ўPn0Vco=}v?X|~.<,Cz#E3Iu7X}ԣ އnlL[2yOUĂC +RQDl=Br> +p +Ν߁-#U$%V "% +D DF
VJoԫe<WשLZIeN kf'^y/" {Cb +`# ~ST..d3/>p9; 5+dYTjY~GR@^n +z
3X%=fK Xh<+ 3LE[.vz}G><[B +MC zUۢ#½6:AүS+zqݓVĘV_yY#"sdc9ҿI +^E" +endstream +endobj +486 0 obj << +/Type /Page +/Contents 487 0 R +/Resources 485 0 R +/MediaBox [0 0 612 792] +/Parent 372 0 R +/Annots [ 482 0 R 483 0 R 484 0 R ] +>> endobj +482 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[0 1 1] +/Rect [451.826 592.991 522.311 603.839] +/Subtype/Link/A<</Type/Action/S/URI/URI(info/aro-bend)>> +>> endobj +483 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[0 1 1] +/Rect [288.193 568.527 416.212 580.482] +/Subtype/Link/A<</Type/Action/S/URI/URI(info/challenges/aro-bend)>> +>> endobj +484 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[0 1 1] +/Rect [326.013 425.342 396 436.467] +/Subtype/Link/A<</Type/Action/S/URI/URI(comp.text.tex)>> +>> endobj +488 0 obj << +/D [486 0 R /XYZ 126.795 702.524 null] +>> endobj +10 0 obj << +/D [486 0 R /XYZ 126.795 678.614 null] +>> endobj +485 0 obj << +/Font << /F22 414 0 R /F21 371 0 R /F26 489 0 R /F24 416 0 R /F27 490 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +493 0 obj << +/Length 2435 +/Filter /FlateDecode +>> +stream +xڕXm۸_V֊7[\\8Z-ʢCIQnC,33C{]_Qqv;\mH<MM +_mJT08Zo5Ccv +gUmM}{8|C/Mۊ hӨNtv +#TW:tGr܆ kZl2+
̠zޓ0iSӺgƦ0~IQ^ +
~6{Iܰ7B,y +F1>2 +[ڶ|G +o[l9\g(l
&='~E(2|n"s D0DV<g#XV +V<^@aG\,D1Hgi$!(x^3O' +l}҆+jg]i.M[C[j13Tte +1u.%-l9$c/8 +L*"!YHC{iS/h]-Flȥp3$h>Sj¸"æ +endstream +endobj +492 0 obj << +/Type /Page +/Contents 493 0 R +/Resources 491 0 R +/MediaBox [0 0 612 792] +/Parent 495 0 R +>> endobj +494 0 obj << +/D [492 0 R /XYZ 89.933 702.524 null] +>> endobj +14 0 obj << +/D [492 0 R /XYZ 89.933 678.614 null] +>> endobj +491 0 obj << +/Font << /F22 414 0 R /F26 489 0 R /F24 416 0 R /F21 371 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +498 0 obj << +/Length 8 +/Filter /FlateDecode +>> +stream +x +endstream +endobj +497 0 obj << +/Type /Page +/Contents 498 0 R +/Resources 496 0 R +/MediaBox [0 0 612 792] +/Parent 495 0 R +>> endobj +499 0 obj << +/D [497 0 R /XYZ 126.795 702.524 null] +>> endobj +496 0 obj << +/ProcSet [ /PDF ] +>> endobj +502 0 obj << +/Length 1652 +/Filter /FlateDecode +>> +stream +xڽXo6C>T*jV|ehla`}`$fKi HʖNa@q<^ogl"%KWdVş<K.~sh%x,Y,'94itȴ1QQuc&kݖ𥞟|/L_jUz/Smn_]Mtk <ohqx4jXW#0e$Ie17EE`-$d$b$&j2AS3P]LE"-X[(}\\.^H|ʥZ.jʥqRlOnu6ˣOUn~}5l`CvDWMFow0hG$yN$3WXwVY"lw`U$Х?UK*VCEVEk01bf>A~p_[fх̍h ػ +I883
-25QJc]e,'dvQ6C0$)IyvkaTuӻܳf;'=zvÔ1^''UI#1Y~Q_Kd,1p²=T)¸ݔ=b&W<a0h0`PVnbAЙ0|ވneC 8 T q2=qU;oQfhݬk6nyt:1~}YAѦx~]iI3I2Mxg[_ںiK"8$e +Ndn +,1ؑiMt_҆.۪@
gRNԷ!zPlq2tFe<(0ZzՀT@I5ok8YFu(VZm +ބfmn4K_*uʷ'C[G\/{ +F:7n2'َ72Yh`v7sЮTj^_l +endstream +endobj +501 0 obj << +/Type /Page +/Contents 502 0 R +/Resources 500 0 R +/MediaBox [0 0 612 792] +/Parent 495 0 R +>> endobj +503 0 obj << +/D [501 0 R /XYZ 89.933 702.524 null] +>> endobj +18 0 obj << +/D [501 0 R /XYZ 89.933 678.614 null] +>> endobj +22 0 obj << +/D [501 0 R /XYZ 89.933 627.772 null] +>> endobj +26 0 obj << +/D [501 0 R /XYZ 89.933 429.161 null] +>> endobj +500 0 obj << +/Font << /F22 414 0 R /F27 490 0 R /F26 489 0 R /F24 416 0 R /F21 371 0 R /F28 504 0 R /F23 415 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +507 0 obj << +/Length 1830 +/Filter /FlateDecode +>> +stream +xڭXm6_.ԭWCk +lhb+Pd }|svm ("P_OqGj"Mh@':ȹi =wY[UNi_di(ɛML/rԝ2Sw2]+4wx&AVr_/0Fu),NEsg7|XQΙ^i*~.Ky5# g70EtSdm +{ +~z# 4h&q1=#Ek';Ӂ^/KtS:^)D;g@ +=g+3ShmoȣjV'97kx,s2,UזU˂3BjLƬ
Mn0+&(n4MHS蚿'Ls +%3Vt +#7 +E[QЂ@Xl;mVmUe% +]Q ss8ph۰¡U-,cd&S`Nf(4PiXmbC!dUql$C `bUi5F=jU2kP0}}iO0v=KuOW__}Q0ͫwWz4*B`C5:U:8i@g!-;WYBmab&kZV8<BC5UV5^IGJۙpLmk&J #~a.Ew%9Ǎs1PM5װ2$napF].tqjҷCTW洣Vv;58,{~'MbHާ7Y|B!EQ 𪺱ʶQ}[!0ԫ^ +N=M/SrG"|(TU5ԇwv +:bg78Ɏ2Z>͙HEFeEJ;E(fDpgTtP<{CэX #|\8kgbrfLX2#8@1akG5.}3YtnoCb;tMK@_ZYNu &C؈\5Rn +l; +endstream +endobj +506 0 obj << +/Type /Page +/Contents 507 0 R +/Resources 505 0 R +/MediaBox [0 0 612 792] +/Parent 495 0 R +>> endobj +508 0 obj << +/D [506 0 R /XYZ 126.795 702.524 null] +>> endobj +30 0 obj << +/D [506 0 R /XYZ 126.795 678.614 null] +>> endobj +34 0 obj << +/D [506 0 R /XYZ 126.795 627.772 null] +>> endobj +38 0 obj << +/D [506 0 R /XYZ 126.795 190.445 null] +>> endobj +505 0 obj << +/Font << /F22 414 0 R /F27 490 0 R /F26 489 0 R /F24 416 0 R /F21 371 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +511 0 obj << +/Length 1686 +/Filter /FlateDecode +>> +stream +xڕio6{QĬC[v +{$>3_Xs1'V1XpA-[weJ@wq>[n5aw tD-s lz|[^ISmU״SːA0c
~bBGv^#| +55Jll=7b_ѡ"hVKCM/ +r,X/Wx `nأc$y]@@Ka'w9m&\|(զDix:d"7 +endstream +endobj +510 0 obj << +/Type /Page +/Contents 511 0 R +/Resources 509 0 R +/MediaBox [0 0 612 792] +/Parent 495 0 R +>> endobj +512 0 obj << +/D [510 0 R /XYZ 89.933 702.524 null] +>> endobj +509 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F28 504 0 R /F23 415 0 R /F24 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +515 0 obj << +/Length 2381 +/Filter /FlateDecode +>> +stream +xX[oܸ~ϯXX<(Q4i. b9g4%v`4[}yxxHG[zsf'a2[f*L4giJ٢1>b
t0K_4"̼(<ӮҋlDy~y:YW骩- +?3ͥ]z6b1qͷ.xL.*͕89H]j[lL{]g:!QbjYÙz95/"Ve_=Ώ7)IK:ߣh,:R< +(Ng]%;5L<1,KGdnyz%
fI:n +<4vzsltUΖړӊ"8\
~CGKc?l ͆O"5xґq+ܹ~K_ZyI)NL.m嶮-SWM{81zڹXOŪk{nQJ<=(o۶#YY]҆maHQ $E}۶6SΊ+\2Un$ӎKr^!}gT656R[# EjY:օ@N +T߀H$뎻0Gy256Iqe/#PYu#nH`#Tc겒Gͼ],+5+&2#_'iX硩c?Qqh"0'edʸzj鸌U(̴I #h
tz
dd|7%r 'Q0xDl|cVo_7IWx0j jq{1w4l#wݖ|
+(qLA +PȨ1"wn"܁\<.XM@1!նê`D;m a#Cbgy/S q<, Ra9.ҕN.)n) nBr8>rfX! +4r^e0@+vϤ=i# +봭c0;ih}-DoN/w#$s2 +WWjf +endstream +endobj +514 0 obj << +/Type /Page +/Contents 515 0 R +/Resources 513 0 R +/MediaBox [0 0 612 792] +/Parent 495 0 R +>> endobj +516 0 obj << +/D [514 0 R /XYZ 126.795 702.524 null] +>> endobj +513 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F28 504 0 R /F23 415 0 R /F24 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +519 0 obj << +/Length 2706 +/Filter /FlateDecode +>> +stream +xڭYYܸ~$(vdA<@6XbO3VK:,.=6bhūXO7O~s_*L\l.",Hf Hzԙ ^~M/s#.8T],c +2TE|r`E-NQE^e?@99ә9eRzX& +t5eX(aNT~چQQD?D +<ËEl{PRLrLgR9(EÒLϨa&sx2Β0s[=hu0lZ: v+~a_P6(rTmgYA,~?bOk4:t5LU6/r{l>,9X?8:83`Zfad bTVªn'lb]`CwCIP٩s R4`i)(?E +JV )QI8RLR)SgEQ&c70QKeOX +Ps8[N7qkq<?tmWqm5 Rt~tbU`@V]c+ôD5ZO̲bmNsz(UyhX,5gTO`jfхgx
UgP<q~~sÂ_|\m_ܺ3p=R*TSdJs+Ac1@`vsq +lkxɞbcֻ4uі]Cic| <%t!B8CWyMfE~Y3KPe)r?|M7Og`RW3qgx=6XziAiN\":r381N +u=/%ZΛzSG-[NVG1Aqas%*q1=^ϟq6ς"Anp%=%ONd'ܖ"ѩW}3иF_MDXGsLZ'9E+ + ){.C
W;{wbח;0ܟ@=r1VNL( 4芍qӳ-N:)E Эjˁ%!`@y5AQq^.:i!}=ƽo$,,+0x,{Wd>/WA{K7x`j +KTb h+Yi$UF^y ) Unk(G)O +c:LWVFxHV.ESj +J|_3*!> a[HԒ܄Y`ӓ7OȺl +endstream +endobj +518 0 obj << +/Type /Page +/Contents 519 0 R +/Resources 517 0 R +/MediaBox [0 0 612 792] +/Parent 522 0 R +>> endobj +520 0 obj << +/D [518 0 R /XYZ 89.933 702.524 null] +>> endobj +42 0 obj << +/D [518 0 R /XYZ 89.933 678.614 null] +>> endobj +46 0 obj << +/D [518 0 R /XYZ 89.933 627.772 null] +>> endobj +50 0 obj << +/D [518 0 R /XYZ 89.933 548.477 null] +>> endobj +517 0 obj << +/Font << /F22 414 0 R /F27 490 0 R /F26 489 0 R /F24 416 0 R /F21 371 0 R /F28 504 0 R /F14 521 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +525 0 obj << +/Length 423 +/Filter /FlateDecode +>> +stream +xmR +|[,.j{ٷR! fg7Yb{ycNռX'qHEfU 5"#mV)}[7%_L\N;ؽ~sk騣AD谘#*ꕺQZç}Z2a +2$4@ԌcQ (@1uy +=}%'c-6^s"y|+br+{dbY}ig 9YW?+Ez +endstream +endobj +524 0 obj << +/Type /Page +/Contents 525 0 R +/Resources 523 0 R +/MediaBox [0 0 612 792] +/Parent 522 0 R +>> endobj +526 0 obj << +/D [524 0 R /XYZ 126.795 702.524 null] +>> endobj +523 0 obj << +/Font << /F21 371 0 R /F25 461 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +529 0 obj << +/Length 2233 +/Filter /FlateDecode +>> +stream +xڭio6 MN4SvZfl8Adq&-D>'Wo0MerqwaEiYŷA<GYu:ZGߏ+@r62 nfHf@&)R\^eie`h;QPj|X&K휚YD3D*Y_qY1fD#M`7M:=Kd&XWXX!Q.o[Y#*(GHeBya
32x)(ne/Xa'h\:]f&#P{_д˦[6ofMn5EpI3Ro4bxA+?8:9δV=+S5E֞&螂VLu#Z5`e[%a3ԎޖQ5YNu([n1f8x{YAEQ(Sa#mqǘ`CɄpC^r!G4~Y(MLiY$`JPBZT X
6s߶ސ + +7ܠh|8(Gw'rVl+⩃ +ٹ'kp6-MSV=hXױ7Iӎ@F}".~9#/-Ng'ه^y[aLm:.lR{z@/-Tm|qd\c.{?i'^XU)_QcUC0+e#F_adwӎ}f?=ҭ9pC I1UpHz&!4>mN$U_!s[sBGJ-qpF2E c۶&$_EN~n 8\X)ǁ,NDфD] +O& ae%Ctm/`oOYbLgh,l4 JL*.^5utFQh;*K
9pvYqJ@GZZ,젃~ʍPp0SVF>ȘP;:6E7 1aL=x<D[σOLziY|s->. +9ZOv"C=\+!Hg>?v.rxAMJ/oi/{~ʅX(^e4!ua{"zoqY<ђO^{_ +endstream +endobj +528 0 obj << +/Type /Page +/Contents 529 0 R +/Resources 527 0 R +/MediaBox [0 0 612 792] +/Parent 522 0 R +>> endobj +530 0 obj << +/D [528 0 R /XYZ 89.933 702.524 null] +>> endobj +54 0 obj << +/D [528 0 R /XYZ 89.933 678.614 null] +>> endobj +58 0 obj << +/D [528 0 R /XYZ 89.933 631.79 null] +>> endobj +62 0 obj << +/D [528 0 R /XYZ 89.933 166.534 null] +>> endobj +527 0 obj << +/Font << /F22 414 0 R /F27 490 0 R /F26 489 0 R /F24 416 0 R /F21 371 0 R /F23 415 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +533 0 obj << +/Length 2609 +/Filter /FlateDecode +>> +stream +xڍˎ>_ѷ@۱\\4l%&F{Hiz:zQ'EVb=_?IP")OqR:(!_Q?0_q|($a/*>MxeOH/=~nmI8{ا!kf̒"!f-'OuC%tW"r;OZz;<MC3 +WTw7z8|Sm4Q8(n!~FWK;ئއ=iV;@'j4r$ +RՑڱ'}݅z|rC:;[=1q*g_t0 +΅cE&%cA8 +*!z978N]8TG7BPrn>}O$c$@J#Nq*gM}]ǵ
61ȏ7Al);g4'AEp[m,ʖs!4VhԡJNj8@ELa b)di +u%pY +1eK 7GTU68CEt(pPUP/SL% ;pi(Bi +r+^ xTlFG,K| +{Bh'F0o$+WjEj~U<x]J6̪4:7M0HU w\hzشF}Kuay<rA!06TX^YDVXYy91^dkg,w9a$uMg< +.r +oP!JBQ/}"\
s$ P)BR8j$:25ޛJ >Q +;eS錰[_? ʁ` +endstream +endobj +532 0 obj << +/Type /Page +/Contents 533 0 R +/Resources 531 0 R +/MediaBox [0 0 612 792] +/Parent 522 0 R +>> endobj +534 0 obj << +/D [532 0 R /XYZ 126.795 702.524 null] +>> endobj +531 0 obj << +/Font << /F21 371 0 R /F25 461 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +537 0 obj << +/Length 2602 +/Filter /FlateDecode +>> +stream +xڅYm۸~bie Z^ +29
_XMxx08ohoS ~D?|9h0Z$a:}q +`.AC^[Kd6iɚhcCyFY ,u&e@t%bĹLSn'hp85ΨQA&,KVP(q +vցHg;Y4_QU'=/ +]@<8\-NQYb<%2Ȣר.4 +W E;Bi [pKT!/FIջ5'gu8EV+ y] _=dq
O]ȧ&Ea"b߄xVŔO:2'kѳt`}r+,dlYHjH Zô`Z_5&d{lwC` S45Bᜓ"s1 +m̄H lJ"K$KX29oZ.lA{a%Zp$IQ .f~[ȹ&pa^!·-G +_2%]^qe/䆧8ζ֭\IY<ZH՞8Ε"cТ,h~UY͜$٪\vT;=%PGo^pK \h<$0pK@hRS\ T?t([FEU&ˏX'po|_[/FKS3(1')m9y7v;`mrpYa9X\<ܤuݗ*>om~|Xϗמ5txm|ܺ5\FU6-^$'i"SVTq?t \5ȽL>7hsgCLtg轔@p;
ajmXhI-MҊ +n[AN[AmxB1JHWf2{jFohBRq$6YTY$ؑ.:}D_ceS&7^F9Eb28!ZߚdCQp}z/y?ҪK#3o=)p{룕{hjs$}渞0,Շ;5X^z1ok? +2~}aѹ/é FD +$4@A +endstream +endobj +536 0 obj << +/Type /Page +/Contents 537 0 R +/Resources 535 0 R +/MediaBox [0 0 612 792] +/Parent 522 0 R +>> endobj +538 0 obj << +/D [536 0 R /XYZ 89.933 702.524 null] +>> endobj +539 0 obj << +/D [536 0 R /XYZ 89.933 291.067 null] +>> endobj +540 0 obj << +/D [536 0 R /XYZ 89.933 282.599 null] +>> endobj +541 0 obj << +/D [536 0 R /XYZ 89.933 269.15 null] +>> endobj +542 0 obj << +/D [536 0 R /XYZ 89.933 258.744 null] +>> endobj +543 0 obj << +/D [536 0 R /XYZ 89.933 249.723 null] +>> endobj +544 0 obj << +/D [536 0 R /XYZ 89.933 236.826 null] +>> endobj +545 0 obj << +/D [536 0 R /XYZ 89.933 225.868 null] +>> endobj +546 0 obj << +/D [536 0 R /XYZ 89.933 216.846 null] +>> endobj +547 0 obj << +/D [536 0 R /XYZ 89.933 205.887 null] +>> endobj +548 0 obj << +/D [536 0 R /XYZ 89.933 192.991 null] +>> endobj +535 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F26 489 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +551 0 obj << +/Length 2980 +/Filter /FlateDecode +>> +stream +xڕYYܸ~_1oL˺~08@@2@QƤ +|j;ÍPYheQ%N2</Llƙ +E٫8*UujUA=zҒw{Զy2Qb7n%-
3{lΆi|KdcôK"|ٴwX s+xܸ u% Ccq71HvR6|q6[ݖjpvul Ni =iF'+;vެ5#-Z3&vC#iq>y*.3t#TR).'հ=a)y&/w
`Kȇ}>Ch;H3F<j:$G +)>^zd) u [˚xXVyi4r ě{? +hL6^"l6o`>o$Iu!ؐ/QCWY +!c~ (8@ǀpV}I"Ay]!
:@c;c',shy{!4lqTdWE.x*t +_*_*`)-SJmvLDDHN&f.LC-i)uv#/]|(lW-c5ehMcAصTRd(l`D(wX |`V3:Y~ +ٻ:ʝ!5;A:~]!eXNbHc7ךVƇup +A(Ե}-Y.!?s>1'=59>hRGjV&ڰPQXJ7]d۲,qei~S[PQWUQ2bor(% ogJLM"ⵛ#arb
7MkND6$g~JuxA9Q_Ynqc{fCo#[R:hђ^&oЂLk]#ͥy2)C.s+V$=$>2a˗/8r'eD,5GBgv:hw2S|Z~0C +jDY?d6K +۬> -#-ÓG +*T
w6M"gp g(nqE#VAhx&!8-DR3s!6~Bl2+OIv%g@sumBgzKLh_?z;CGl +>`nxDEOӫ∂9GD[3B%Jۿ6(y8_$Oܟ\4Àۿ1 +ckNkfѮx1[z)u:Brx$X|i + +V]aJ8 aɾdסC0 +z-=[EOvڡl*J|I,[F@e-#a]/%, #n(Og(ZI47haνqSBJﯞ?m1
9ݡ»&k+k2N?}|-x +endstream +endobj +550 0 obj << +/Type /Page +/Contents 551 0 R +/Resources 549 0 R +/MediaBox [0 0 612 792] +/Parent 522 0 R +>> endobj +552 0 obj << +/D [550 0 R /XYZ 126.795 702.524 null] +>> endobj +549 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F23 415 0 R /F24 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +555 0 obj << +/Length 1497 +/Filter /FlateDecode +>> +stream +xڽWK6WX+>K
R =4b @i^%G7H;CR,ͦzp,]4My2[gyA!f4@Y$I7`,"cسgBڮ5]=)Ҟk>D]@iSdDf9Ohz()#& :,'$^GyA`͂t ;,^nLc5wVU4OAd]tp(5cױ^m"g1#Sl<q1E_LXrg0v<49"I=-&f. +$v">JR[릝0ږjˍY`K#4Q+5`.,'vmyNVR[0g4HIkE +,+]VzX +TOa=<nxNS,UN4×Ͷn|_x5OZnAQUn=qox GВL
1.G>s|&3jip\\R +B<tQ3h'Xe89۸pa0ymg*n֥@1ߝW^BS{Y0zrJzj4-cj #FwK6/U7aO OXA
CR}pS+?an@<gǁ1+϶~4}}qjk;Ŝ٨ dYH(;F63E~gfbLK&Rm: +endstream +endobj +554 0 obj << +/Type /Page +/Contents 555 0 R +/Resources 553 0 R +/MediaBox [0 0 612 792] +/Parent 558 0 R +>> endobj +556 0 obj << +/D [554 0 R /XYZ 89.933 702.524 null] +>> endobj +66 0 obj << +/D [554 0 R /XYZ 89.933 678.614 null] +>> endobj +70 0 obj << +/D [554 0 R /XYZ 89.933 627.198 null] +>> endobj +74 0 obj << +/D [554 0 R /XYZ 89.933 532.553 null] +>> endobj +553 0 obj << +/Font << /F22 414 0 R /F29 557 0 R /F27 490 0 R /F26 489 0 R /F24 416 0 R /F21 371 0 R /F28 504 0 R /F23 415 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +561 0 obj << +/Length 789 +/Filter /FlateDecode +>> +stream +xmUMo0W6h<_;h:`$Fm+GrDHOIօ(9H:OʬH9ɱM~1.v?!2_EJSY$)l,OU].!\*nleS%۷]]CKX+Fٳ<:廽rd,owdɐ1ZO`jgv:`)u;\1DhjM +eWI6Ogd`y3Kګ&`63MWzҍL1%7<} +QiO!Yz;tE`nv6"U{͂1Һ*2:Xd
~$XᰔƷXoɱƦ[vt<h- +
a7J6Qaq<|gG/=9A_4#(D\T;*a▄LWGMoLO.mJBp$|O_2r7z\>Ky<2;Ocw&灖A/Hh +\PoV|W?p^5 +endstream +endobj +560 0 obj << +/Type /Page +/Contents 561 0 R +/Resources 559 0 R +/MediaBox [0 0 612 792] +/Parent 558 0 R +>> endobj +562 0 obj << +/D [560 0 R /XYZ 126.795 702.524 null] +>> endobj +559 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F30 563 0 R /F24 416 0 R /F23 415 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +566 0 obj << +/Length 2695 +/Filter /FlateDecode +>> +stream +xڭYێ}WֈM;f`l]A[ 5""Z[Oݚ"5جnVWW:?i}0It|w07.&L-Hfk8kwj7Fc>OBmhHtʢ6aDM6[$p|v6AYf(E_SdE(?V6[D?nfUМA_
t6*u-?UJl~8qdq|Rٙ1Zae`㾺dDibp@5թ
3݁<}mGVGACQ݊Y]V2Qh4p#+.4[cOi]' +CwtUevϒ=)̸*̰~|9<ʦ@[~+~*T˨!X^;</%D(GBМ+F1b
2+ƲXY6r҄{4ab!.}#%#"YG5p7]sOendKO;hX 2nz@aϙם{UFY +%h!t) !/
BK>bJp]@W0u3%ֱmӉ +ؼqoA?t7'k7
{C!x|`{Ȏ'eow+ӭQ)t!
8@Ck2Ca^Sy/\dYnS +1isU`/RzMTҀwj_da2%tT"O%$`xZ&g03Vx
kW`w}w>
r#$觱FGSArǂoIKx1:Ld(t닆_{D5ElHNT [ pBT?#9yVjDAVP[)fp +&rhy]J&<ǢnE&]Oi=L6meIHc;"MA˄VGnViEd~\1'ʧꛀ8Vg|+) g̤!Z#qܽ0P [9}1
}#Uc[O=c<]dWhh,5;} `NWP9`~P ]tD2\) +ÈC\h `B"ˈ +:WF`ر%KDїܙ+`r2hXCR>(zz*C<Vތ#cd<.#t^ءo +WQJU~ԣ')
ܩZ,x;_C[PFϗ|8=}}>c +] j6
kb}{ⱞ"y*x(Ъ+NeYR߸ʑKZo?*_W??M# +endstream +endobj +565 0 obj << +/Type /Page +/Contents 566 0 R +/Resources 564 0 R +/MediaBox [0 0 612 792] +/Parent 558 0 R +>> endobj +567 0 obj << +/D [565 0 R /XYZ 89.933 702.524 null] +>> endobj +78 0 obj << +/D [565 0 R /XYZ 89.933 678.614 null] +>> endobj +82 0 obj << +/D [565 0 R /XYZ 89.933 627.772 null] +>> endobj +86 0 obj << +/D [565 0 R /XYZ 89.933 513.234 null] +>> endobj +564 0 obj << +/Font << /F22 414 0 R /F27 490 0 R /F26 489 0 R /F24 416 0 R /F21 371 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +570 0 obj << +/Length 2380 +/Filter /FlateDecode +>> +stream +xڝn}X!<r$Mn>@ +xOYkOuCQ ^vQ`|-qXH<9,qWx۶Xq}=6^;vic{`*5ztĉ(~F[ٞ_=Y"aNVEtp~I:UyʩDWdO8zf>P?2p؋8zsr^Z`>Ug|햸Y0wv+f)<=^ +[b~uQ킭+DV+\ˑl̚O,;H15h%}ư-?ph;Y4ndΎx"/{RΓԣ-_iS?i(T&L9{@݀2mt<%!+$)~XKq?@e?tm9}/>
U۠t(Y7N0Wyl5=QP]eҔ<(m`ݡ<"
~ +T˚dr=
$:ML!`
2tME,JچX$ +:BnHH?p
6Ӂa88'?kv 硉}8*A#Yٺr ױ*x.eqoq8Lh:T/8J+;r!2jӁq +S6a矶kAI +NY:pplf=E,,!Lk{(ߓCFl,%`ճ(9{RJ-4UA>2'D~Q<\DYp=-ܖ$e4J[mO-$I,m̰iKޥ0/w:w-V#Ɓ<RS*Yy#d-(BhOoN +c܀$C_g:CNJk
k|q^\5ʪ?'fj)&%f<
7JL +x $sk^ +>R|цQ`fdFzS^C@']Eoj}
-9y{s8dpV1,d1KinHFPDi2Л5YvQ@~\d[w{~t:?_:Hh2Ch@`g8u;UmA$,%$TQ0v7(nj%LqPSUa/%͆iu䭑5
%hܵTTPcy(!Sv(& +2m6)9Ƞl;T=0{ϰJYNg*HiuNл*/s]9qQ7(jl +W)W[qU,EEHvEͦEfcLjK۔0|9E*^dibŻbzsl%_?%@Ϻ%Iwٟ`֟jw{9ƏDbc~/no{>An'|8sqvjM ޝܔϲzj|8˰k(mښzMX!-ܟRs.oBL猵OԘiqP錐)4s[x1i.*Ǖ:TCŏ +endstream +endobj +569 0 obj << +/Type /Page +/Contents 570 0 R +/Resources 568 0 R +/MediaBox [0 0 612 792] +/Parent 558 0 R +>> endobj +571 0 obj << +/D [569 0 R /XYZ 126.795 702.524 null] +>> endobj +568 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F24 416 0 R /F28 504 0 R /F23 415 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +574 0 obj << +/Length 1971 +/Filter /FlateDecode +>> +stream +xڝX_6p=˖
hۀӺa:[IVfٽng)J8aOHHG(YAFnaǫ,LZAY{o;pwa-s$I +iKLA&(IY$?zs'Q
]}@c*'V>cAv0 q{({w`KFuI:Yj-6n+iu,'C_w!DieBEb[
:sɌɇlv1Lw/ΒV&]^oߩN4ZvR6$~qV,ӪZu xPp>7m3lոb{:^7 dTidgdͫ'KdfRrZmz|d+Ao(J|̲{i\we3Vo&pZ+ݭSda'b7K e}, 8e#T 'ghDJ +ke'@QsUykw0Ƒ|}Yk ) +4ФW)f@"Y!^ڝ{)0` U' -T1P/¼X=C~(LzA8$ssV9T-n2+a|&^q1$c#W+d.sbX\NUW +c,p\>Ҵ"T&6q+$QP\gFYhF"=N4$o{4X`*BQ%j"EV|$+HأЀ2u!Q`HbWD1CQD>\R9
ҀbmY
KVKZH[͋$ DX>0MR5 L
K!|Ρ~INc^Y%PjQDX3M@,w_E|! +,h%h&xXIg@eSLPáfa:y|қcg +o"FTk]>ޛRpKAf'/77⩦;3;5,>!
I#0]7o)͗_q4Ys2O?Lk~l:;E@/2ia(a#^GGk,TmV#kZؔe,-ts7^|? +endstream +endobj +573 0 obj << +/Type /Page +/Contents 574 0 R +/Resources 572 0 R +/MediaBox [0 0 612 792] +/Parent 558 0 R +>> endobj +575 0 obj << +/D [573 0 R /XYZ 89.933 702.524 null] +>> endobj +572 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F28 504 0 R /F23 415 0 R /F24 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +578 0 obj << +/Length 1641 +/Filter /FlateDecode +>> +stream +xX_6cK;֡n:`$F`w#E)w]E#EvbE"(RΖY +YAEe5Ӌқd2dEBI?r77,sO~/|4FC>K ϳ N +)q%8Gy',A{ߐIݡ9Hi9;,QWO+'SaJ};,s><g|^>ԃ}Wťޏz(>I3Am+bFId;Q ,Ιc;&vL1ca]:8߮':6l> +WpM4uךOp\p'00zii/w14v@Qriԍ[&H +VTKg{-Z"d͖hNSV_ɲsۉ#% cTga%J?<`H > {)%dqDukЀ
ĊA=@Z;+FRv;Lu
,Khn8IXyGy4`ؠĿ1920 +H ^rLfnh8ΪމIw't_raZ79jBՉ/ +D0y(8nKo +<t=[(An!4jvCVlS]
B`D?ݖ(pr@!SŭqMlHB.4`E }
uhzJtT9bh왷1 +͔r+G{kJwGbj&s4%d}[t"a1qZ'vH6o/8% +JPOa7ن3YYqv$aqYDfQ+sa-~V{i3Ƃ<egH_0EdϠW۱R6&8M]>:r}ve + +-06xq~+MM܉H1x;* 3N`^5 +endstream +endobj +577 0 obj << +/Type /Page +/Contents 578 0 R +/Resources 576 0 R +/MediaBox [0 0 612 792] +/Parent 558 0 R +>> endobj +579 0 obj << +/D [577 0 R /XYZ 126.795 702.524 null] +>> endobj +576 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F28 504 0 R /F23 415 0 R /F24 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +582 0 obj << +/Length 2042 +/Filter /FlateDecode +>> +stream +xێ۶=_a("%i@pS.p6-6I4Hi7 ~f8#YjO=rs\ݫ/(7qɃpsWȍ>>>hm\$~lqyP + āC*ʥ'>ҵv]J lC{ N(@(+){A=cJ?ab,Nz:)0u'B[ 7T +.l3RW4T\sZ+Ntr;.MYILBL#S(@XOx^04t/gxۈ0Y! +
oMCqBDagdss1)F؆mTmߓomͶؖ_na[~g</ȏs%w(++0OXyC,ɊVPd
JB,M,dtS6^rS{T>ߑI>'˹`NZ +RBtyr qIrWp]FN4Owj0JZۛ7``TNىC#>+mgIH_ʥw2R8cl$\?sUEp%%uv#$ 8FNDE8w@}je_piP;1/ +R4SeOmZ
iS+4C@rQ +A7@G ͛Q_hKMs1u)!a`ࣃ:,%D9(o>p[l&P
P:>: +K(xY&&K9daWJux(c$ +endstream +endobj +581 0 obj << +/Type /Page +/Contents 582 0 R +/Resources 580 0 R +/MediaBox [0 0 612 792] +/Parent 584 0 R +>> endobj +583 0 obj << +/D [581 0 R /XYZ 89.933 702.524 null] +>> endobj +580 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F24 416 0 R /F28 504 0 R /F23 415 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +587 0 obj << +/Length 2863 +/Filter /FlateDecode +>> +stream +xڝn_!@L }N$>ELhs ɱ,x5=W/fu躩߽zy'2^i_Q +!.6 Dvf<yL]DW4͂4JfA_W+TPǽ!`MId2/V*
u3M8/)B롨 n䢬;|y}@0U+!<N?Ao5'%qgPzCa$C+8lyc,ȧ@>z2u:4)`ʾ P|e+PKApӯeǃen}*a"^>*R42.>DB]E*thi'Z"`?8Ϩ)8DZ@ s? +jq~6Q6%LEx۶Ӷy,V$sJ!:
gv}&_*imܘQ2> +:Ƕ0`HIil ~zq48x*č)j,·H+:&'=@7f6otPVR
B>K:)StR&I3H+BckZ`ᗭ㟦2GV[ak͡*֎Lkꉂ#ɲ6`$]Χcivѥ +n5gZ5z//w؈GW;NĆu O=+55[*tN-NʓYFOs Ej<X
>p]Gp]Q?
b?x}혆u6s:<za;dJ#\\({=xHơP+L:δXD>:CppkP]%=Hs!e$De{(*,˳ +pi1b4k>j. +Xzbt/ъB,${@*g6n_¤ºS=p\o802Ľ=n|bf|YYpV6-h\olgrY +Ek,Y)^cKdlӄX0[As*KbW2tVf* +Y¦Ac* Q8;;UB7U)]2D\!=J`E ܳc<Dg{lCf4P?@~K(N2
_uC;Ͼ<Wa%V +-vZ
`n@و姚6[/s+4Z_sD/֗ x87Nl9c/2#/uI݉U!s +2#ִ4-5:axB}H@LT#(ÿp:zL9p6OW)X!,3Ae@9̀E2ia>sEU4]?XDmZZ,cOXed1hb:Sp4kfzr;E:!qyN\AOc-̻Lɢ7ܨ'T|OW#[H䩴t(GO<lo/K>g,t+[,zYz:ri,IH!R\VTxO&P? + +endstream +endobj +586 0 obj << +/Type /Page +/Contents 587 0 R +/Resources 585 0 R +/MediaBox [0 0 612 792] +/Parent 584 0 R +>> endobj +588 0 obj << +/D [586 0 R /XYZ 126.795 702.524 null] +>> endobj +589 0 obj << +/D [586 0 R /XYZ 126.795 678.614 null] +>> endobj +590 0 obj << +/D [586 0 R /XYZ 126.795 654.909 null] +>> endobj +585 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F24 416 0 R /F28 504 0 R /F14 521 0 R /F26 489 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +593 0 obj << +/Length 2356 +/Filter /FlateDecode +>> +stream +xڕY[F~?Fq*i` YH yؗ@ΚXX-I>[խXշW=xЋ%FaCSE9_<e?V FQlEf`-bZNj͉11 +l ĥڧb{ZH;-ב^}t)^<V(yO/9ǴNm^;Ԁq`%-,Ѧgr_MR˙^.-*̚etl vp`-3#BmVxZǜO?-))}yZ: +-ҫ.M{ tbJ?
RkD`qUns&xWfU_Sb8nɊ^% _UNO!WuZ_:/nFuA+lQΛ,s~%D"5f8EI9EIZZ3HG'v=8Z+H}jLI>f3' 3:z!SwCШ)EZRt<߰{LcB0|2u螛(;T| +°(7n^:/?Zw XހΗS晋 +V_.JK.^.UFJa'(5wJy=?C.^HL\" Lz&xn
x&8v/Ld:Is.'YaLXh'Pc#bJDkM:HYr3 +-ܾ)H\覧ӜLN'? L?"?pW:?T(HZAoo5e:ݰ$$@c5H%mT*fPc&J,Pφ<|3꧗
mYZ;B˝bδ +1ʌӥhzz`RweDt +r1hD\/3䡻qsfT"k ˪_xgҖ(^%%962UC#0r.4zgG=ou-ܠ_T6}÷̄ +_+V^au
gETVn23﨔ь3lfb22K->s 4?]Y,\B=?Hw~v=\G~9=fnҔɬ}{Ѻaˊz+h#6D/_w̿^Xi9f!$#&8F`K Y +ϋ"'^Ҁ
ܗ6s,淿#T(d1a&[eTyG"Յdsy{Kjcߣ㺬sz*Fj`@Y'x (x&v?(`\yӬ[.Ďr'ީtL AKHSSj$rRI" +Rw/Noں(_q%/7ieBh(0DJjlB*K3ίW],;T]˵m&G6b8lOkH>zW]g$d^kjz(ظBO8#lCEjZ\H=6¾"Z;`$ΐV10vSj +?3ék7hy`|t<><8>:V* b Bl´?A-l?#M֖@e-inZְq(שN"LD??} +endstream +endobj +592 0 obj << +/Type /Page +/Contents 593 0 R +/Resources 591 0 R +/MediaBox [0 0 612 792] +/Parent 584 0 R +>> endobj +594 0 obj << +/D [592 0 R /XYZ 89.933 702.524 null] +>> endobj +595 0 obj << +/D [592 0 R /XYZ 89.933 642.804 null] +>> endobj +596 0 obj << +/D [592 0 R /XYZ 89.933 606.939 null] +>> endobj +597 0 obj << +/D [592 0 R /XYZ 89.933 559.118 null] +>> endobj +591 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F28 504 0 R /F24 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +600 0 obj << +/Length 582 +/Filter /FlateDecode +>> +stream +xuTˎ0+ШPyfS̢۲봪Ό{m_A8kVGɼjaL<ثg@W]G-CL(ϋ0j6(S(P(KPDqEI]$
[jNlQ(xgVuV1=ֆZE+ A1{?kGLn;>kizw}z+~uؚ(.6XG4v=GMT_Q_1yX\Dz.%-F{ae`YYfcbܧJ?99Oas9YWK_G
Db^\r&%Ά<AeBB~f@w}m] Ru,}+Y%e\p6qMSL]'qF\3d/z^34yע&918<B_)Ɖ~rzYFlzV0v +endstream +endobj +599 0 obj << +/Type /Page +/Contents 600 0 R +/Resources 598 0 R +/MediaBox [0 0 612 792] +/Parent 584 0 R +>> endobj +601 0 obj << +/D [599 0 R /XYZ 126.795 702.524 null] +>> endobj +598 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F28 504 0 R /F23 415 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +604 0 obj << +/Length 2446 +/Filter /FlateDecode +>> +stream +xڽX[ܶ~XD2C )4Ez۸+qg25snhH;Gퟲ&Kj)K
槨lUGom[W
oAFy@6S.q٦iRDvF0TT;oQ\O`ީ+.Mf$7fQ UtdY0
NJtKo61KrBYܣŭx9^&8I*8>ZyEJtŵJWYuvwX
8Kf2qZ4aɪ~'XP39g3<0Ip3avq#'3=NnE·4$3~6{eWnZu\f1P+8m>4iKU^*iwz}bn*A$S]fX_N,0C+gI+gz%yZ-t(;LU3SlR*3Qd`8߅t*4<(1
<p!x, +"` I +'w\iGup)Ud ጞAaPAΖcb2-BX?x&;G; +pp_G<z)$RzY36ܝx",0;xk;C44<:epB 0~BA.
p2
$<68!,K +Y[9yͱRy&ح/lb_8dF3OJ,-VѻgFe͞]1J +"M;M?Aِtt[h +I4YKmVv +5܉v#M/&$>r +B|VJ#tR22c\?bEDɕA$(y1. +Z\I1L߄7à{Z +jre|uԗ W24AgEPW))FDwPnQ''X\E$M={3ރZ(= +mptiZjikQ1UBDtSv\WR,u|V@DɰQdžT'r#V,Yu9$<9uq!f8a Za0'!x
ki$!~Ô +pGR};A"2s\KOK'J?L̳L4tB[xc{@Q`uGkbY$D6vBxOݷm}D˵C#\ٍ|mE#P[5B +endstream +endobj +603 0 obj << +/Type /Page +/Contents 604 0 R +/Resources 602 0 R +/MediaBox [0 0 612 792] +/Parent 584 0 R +>> endobj +605 0 obj << +/D [603 0 R /XYZ 89.933 702.524 null] +>> endobj +90 0 obj << +/D [603 0 R /XYZ 89.933 678.614 null] +>> endobj +94 0 obj << +/D [603 0 R /XYZ 89.933 627.772 null] +>> endobj +98 0 obj << +/D [603 0 R /XYZ 89.933 223.377 null] +>> endobj +602 0 obj << +/Font << /F22 414 0 R /F27 490 0 R /F26 489 0 R /F24 416 0 R /F21 371 0 R /F23 415 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +608 0 obj << +/Length 2629 +/Filter /FlateDecode +>> +stream +xYYo~P +%.6Jy&%?O:vn>oeg +q1]5( l?ؕ]qXT>ġɍ_2eByD 8(瞛?&EqacB=*%jV2P(4>U%wx@]UL$Uē+L:X2qF Dplˏ
bDZ2&'@KNV{w6i~?G[ɼve~@6<Bz-Vռ2= +Th;\dA +{.3y[{XF%_j^xw#ϗj3Xx! P9z9'A)5w5;؏]07_hD.#
ܲw\4PR8" 1tmIғhpsKޞdЁ=2WCOAe!%_ވ2[Kpab^;;1;3' +hݍt$vmfgPz9{/*j9ې +t=_6{yX
F4mW#( UwvV"<0D?@V1aMASMExzWĔXV$2-%3dؙqu
UvfBp9[LDD?82_:c\@Rx=ʉ-Sj +$ph
~É +4PIAq +:?0)fj{;TVYs +kzJN(L|%є!gW<0xf>i1&u@@c2Y=.+`e]Hy5#}$ +v_0Q*D9?!3GIwmȦEnbu,l5c`;^bK;Nxo^/O*REρϋ+Xcng>_b˟$'|m@9LBd톲d0|o'oYɹD%`y*|T0no+WS-z.t!sLx3K2LG8WLcpΘ". u@rj2ߞ;--~+4=8d(ط,mX"u$*/w]KIk]c0ܨ5*j+13$XKJ&TS0 i#ދ˟xdWeƍYi
>SP˨"xW)AmaBTz0ϓоBS3娷(Wo_I8<%ςk pS @}]<@R0A%a;q(Eg$M֩0L5,{9n">4ؗj{犗i+_^cf,,"1'؈LIъ<p}}! di6ߒ%uáhk r Zj1 s?QfOyfmꙥX +)%})$ʲ }v88 +4>
n{#մp
л&K5}h2feHg$&i%>D +H,>Pv[|XJGzʱ
(+S
^up_gug"gO|o^c +endstream +endobj +607 0 obj << +/Type /Page +/Contents 608 0 R +/Resources 606 0 R +/MediaBox [0 0 612 792] +/Parent 584 0 R +>> endobj +609 0 obj << +/D [607 0 R /XYZ 126.795 702.524 null] +>> endobj +606 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F24 416 0 R /F28 504 0 R /F23 415 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +612 0 obj << +/Length 2001 +/Filter /FlateDecode +>> +stream +xڝko +pfEI[t#1{zI)2!9_LԬ.~w#*-~{bTLۧL&zw;勽,&mYq& m&ԟ8<S$R.=V~np4*TvyrMߘjqX$vtxifvػ
O/@+ж]V%O|7*'0OkVe +
sHqZd.zWsA51&:`Γ8#0xinp,uDvq'ѝC嚁č:Ky!Tg;asKd_NLY /d<t*B3:]}Kmu95b 19\Q!(d `[lCCZV(wUEb'NB<9?z]<';+ jP1]m - +endstream +endobj +611 0 obj << +/Type /Page +/Contents 612 0 R +/Resources 610 0 R +/MediaBox [0 0 612 792] +/Parent 617 0 R +>> endobj +613 0 obj << +/D [611 0 R /XYZ 89.933 702.524 null] +>> endobj +614 0 obj << +/D [611 0 R /XYZ 89.933 286.086 null] +>> endobj +615 0 obj << +/D [611 0 R /XYZ 89.933 272.194 null] +>> endobj +616 0 obj << +/D [611 0 R /XYZ 89.933 198.47 null] +>> endobj +610 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F23 415 0 R /F28 504 0 R /F24 416 0 R /F14 521 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +620 0 obj << +/Length 1457 +/Filter /FlateDecode +>> +stream +xXmkF_qŸՅH]4#B=U;I>RȇDyyN~}Eꤑ-V"'NEFclZ^kh#Mftbgiqbfio)wcG$Nۏ LJʥ%VDf%=kѢiŇ%b&*kv[Aw.a-R^jEmVVG1%fIÈ7!d]`5I3I%ى:t\J J]I %hHb|0r)I V`Vk~huBGJ|ӆw;I%˽+kKDHvrЪdkM)0{..4h+; +?aIv[p}w>˽ +endstream +endobj +619 0 obj << +/Type /Page +/Contents 620 0 R +/Resources 618 0 R +/MediaBox [0 0 612 792] +/Parent 617 0 R +>> endobj +621 0 obj << +/D [619 0 R /XYZ 126.795 702.524 null] +>> endobj +618 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F14 521 0 R /F24 416 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +624 0 obj << +/Length 869 +/Filter /FlateDecode +>> +stream +xW[k@~$`uq/ЅC" +f +h]}g11ɘn݇Ĺ99{pxi+Dq!1l +Z.ȫԂ$3 7_+Dv,ҘE#K.oHo +˫kkulБ9>|+{eſwbc'Tߖc%2W
<HKe4 QBOpwFCyG$pj6:.x962er .]=O
0/݀iY_ +H⾞]b(R 9 x5$8۽;`Y@ZhA0i}XCt"|PMj6ՆՔ +jB2:i +SvZ#b.-cJ^IJH4-҇]"<*CnU@Qްey.?PUQHU1}^-rKQ8z:Cj3a5Ns*lrRkU?>8|fg- +g{]>{=ΆzV.&vty) +endstream +endobj +623 0 obj << +/Type /Page +/Contents 624 0 R +/Resources 622 0 R +/MediaBox [0 0 612 792] +/Parent 617 0 R +>> endobj +625 0 obj << +/D [623 0 R /XYZ 89.933 702.524 null] +>> endobj +622 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F28 504 0 R /F24 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +628 0 obj << +/Length 656 +/Filter /FlateDecode +>> +stream +xڭVM0W H8cVC9TJ"&6俯 7f5xh~A1 +}ɂ$"F#;$ߔ[f3aI( +atj⟃߫sS>Eݟ~nFeKn +endstream +endobj +627 0 obj << +/Type /Page +/Contents 628 0 R +/Resources 626 0 R +/MediaBox [0 0 612 792] +/Parent 617 0 R +>> endobj +629 0 obj << +/D [627 0 R /XYZ 126.795 702.524 null] +>> endobj +626 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F28 504 0 R /F24 416 0 R /F23 415 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +632 0 obj << +/Length 2800 +/Filter /FlateDecode +>> +stream +xڽَ}Z5;5@AmӶ:4
SeG3ȋ*b.$I0ϓxSVa7JBpנ7@X *L&bOqLw, +C٦qE8:$y6I*fQM<<0vv9(`i>c ?a?m*>՝n6,e@ɒ88.qUom&svr5;La^5Xq+Gϓȕ'gs% +ˤ=U&7Ηhpg4`c?j`6 G5%!@1ϼMR/^7
]&l@:ӫ-ۺ3;8WaRLniG<,"'oyU1N3eі!}"3ȇsZCa`ṁXf<mFPRGm33
p1-IE0j5X牑?wAc2
Ozo{>/8v\=Oy@CY9]t70z?»'3-rF1 +g*<II°K#kdp3{c/chٕ + +9FĻ/LCy'P?=t#DȒZ9g<;cV*$8$ +e:6gF=MnF[>I!w+]%>bn//$LzpF6,< +E?"9bܵ5mLNH^rzQS(E_b-BVЋs! +Dv\bR&)Ti&9Q,-Ya{J*]*z`.B5{46ZER^RC߉ʛ4+Pe3pf x5A$1Yǹo1Fb +wx^[/lDgHTqo/
]p7Sbk bLCTX_~twLMlheW.P K/e=0_>q,'jGDLeR*JNV-@RdWh_yF)}˔Sټ3RD2%%$ȍV^XZ-E/w+4̎U=:co$ܟ-']}:۴
$%kRaqu!OgRA9MY] ݣSׅK +%PgؘZ䈢27ZHkD3|ъMpؼ2zUYĭ8~ˑ[HBM"7g}uٍu3/'$$ĈY ֚UbZ*BX)sɵ]7'*!Խ"',XN8H#J \lUa䛲Uʚ.d]gTa4,#4[Os3QY_W-<,Q.z>+YҴgzy8yq\Yv +KD懇7 +endstream +endobj +631 0 obj << +/Type /Page +/Contents 632 0 R +/Resources 630 0 R +/MediaBox [0 0 612 792] +/Parent 617 0 R +>> endobj +633 0 obj << +/D [631 0 R /XYZ 89.933 702.524 null] +>> endobj +102 0 obj << +/D [631 0 R /XYZ 89.933 678.614 null] +>> endobj +106 0 obj << +/D [631 0 R /XYZ 89.933 630.068 null] +>> endobj +630 0 obj << +/Font << /F22 414 0 R /F29 557 0 R /F27 490 0 R /F26 489 0 R /F24 416 0 R /F21 371 0 R /F28 504 0 R /F23 415 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +636 0 obj << +/Length 2297 +/Filter /FlateDecode +>> +stream +xڍX[ܶ~C"uKQ N@HwFZb{΅Hr^G}w(E%L2EgBJyqY_;J.t!d.2\,SQR[*tORi-"_T4^u{BiLIv{)42NFl 'J4~[,~S5`MZD4aD5y/R7I"X˷$zn,a '\q\axȆi"T +7(|~n]eUcz7WaO~!ǣ7hO46nn@*hLF4~w[ӏkki\{{7pw-%VQՁ{eP/qD?X +@ +A~z;-í]0Lt-U`4~1 +N.=Nʹ,LWqS5@>Qgr{@Ȳ|!FBс| ZsOQRYdv߽T>liZj{X0lMB'e8fo~d?1F.t1"NҲ+Y,R-K(Irc$_Z-@z;W-8\dB=gKvk`Z§S +5
i5D +x65pGi)OĎG7bm:"$hN<LbD]Ht^')췃Gn]&Jf"fG=mN$ u^1gO8,|?6֯66)oQ5H<-PSШ[tӤ)OMp9VY'D|y?,c%LC5ہyȏ2==⠍&3Hܚz< VI(ADzU[ӽ2=QUPRIeCl~F +ȾHH4@{ɜ;8jP2FL@6 ed[@`X|)"n0^_GcivvN(vfxk᳭ѓM\"З/_`Op<2`hE"O_&(KZCÙ7<8[nOS?|.\o4cxϳ5fnam;GW;]%|7D?TsF53 +endstream +endobj +635 0 obj << +/Type /Page +/Contents 636 0 R +/Resources 634 0 R +/MediaBox [0 0 612 792] +/Parent 617 0 R +>> endobj +637 0 obj << +/D [635 0 R /XYZ 126.795 702.524 null] +>> endobj +110 0 obj << +/D [635 0 R /XYZ 126.795 678.614 null] +>> endobj +114 0 obj << +/D [635 0 R /XYZ 126.795 594.983 null] +>> endobj +634 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F30 563 0 R /F27 490 0 R /F26 489 0 R /F24 416 0 R /F23 415 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +640 0 obj << +/Length 2202 +/Filter /FlateDecode +>> +stream +xڕˎܸ7W2 +{mm'1")<381Hgh# !:Ba<Ow
E*_)KcPuC7UrUCebJ.qԽI=Q)ШhԐnafR)B;Aa*$3U,-윎12INA=6fS6fx71:!y>"~z23\HR|kuh=Cg +4LֹcvęU9d߶坊}Hs:cutL!O<_tUF\Z/[)P[&XHK"ig4U~zȳ:Աx9:ּ0)U4XS<gk ݀f${3ӣ
e(d?qRWJGsG&~<v m%\M~q=mڇ%ւ s%}ydsd Ϣ{2=|Lc{Pݖ(1/aEӖ*]ezXm|H" )zw@9y:a<ڷV- +Qem+fhcjD~Vi)puèr:d G@3bqajjBvc2L1v:Y*8FL%lْ_kBEbw"s?nB5v+9t}c1}=7 j^R:Q;iI7Y- +F7BzKiZ_+RJ@|4]Ǖ']Q .{} ߳uEZBNR]" +S#B +WӪ)K-T +endstream +endobj +639 0 obj << +/Type /Page +/Contents 640 0 R +/Resources 638 0 R +/MediaBox [0 0 612 792] +/Parent 642 0 R +>> endobj +641 0 obj << +/D [639 0 R /XYZ 89.933 702.524 null] +>> endobj +638 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F28 504 0 R /F23 415 0 R /F24 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +645 0 obj << +/Length 1027 +/Filter /FlateDecode +>> +stream +xڵVY4~/t$4i;y@FIkHvniei:W6,ߦO_'aHE&v/~AHgAJƎdld.Nfu2j~E
|BWBJзpQz#nM{o|zxoP(s93qY +ux8dRy8W^? 4>uU1{(P*`,E8!=5${SF""c8)5FCBȐ1%H7A7ZOHi~
+`@i}gײEi1˵:T!Sni(E\&3 E h?qz6riݳl>a7s]yLXGieڵK7ϱTO%a?ÎS9ꍁ{罀wH3C4TӮ(dQi٨D@RB7gU%@Q#@pP6k- U
HwX|=BjS : vzAbnF>
:vIj,LvOPVs3
U 6/,3VA*2l7ɏ?LzBT˹PRx˭m#tbyUk^'4($/3, +*ds`૿eTd';r+[7l@0[+_F- +endstream +endobj +644 0 obj << +/Type /Page +/Contents 645 0 R +/Resources 643 0 R +/MediaBox [0 0 612 792] +/Parent 642 0 R +>> endobj +646 0 obj << +/D [644 0 R /XYZ 126.795 702.524 null] +>> endobj +643 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F30 563 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +649 0 obj << +/Length 2284 +/Filter /FlateDecode +>> +stream +xڕXIWe 6.U9J "bİIF{RE{8^-o__2ܤ"d>l*HA.6!vlj3]7XUal|ަKl4T(Elv::CǓM-))Tۂ@.;(oq(nN*.8]KEj| w;-C
#/ow2ѽZ/)S'<\"V#QQMc%dʧqʆY8_(RYmdc$^aA6M3<lco8hj94wnflI*Ks|ئڶ*M<,}*J}P;sꙸnZsD"?}h)0nU:ͧenE[5][0
^[XJ-E{{@{}AD&::*ۏe/EV"YiϿ+/1,9tZ NLg7fz*MUDv֖L^d*['h<QS
$Tp1-=5t+$.Lxy1HWl:k@
L60V'sZ|g^NG%Ӆپ2H2RvKbyےSYQ _?+<X%8|04mo&!R! I=ɂ^Y h\xh +2K9_!4[,$ I+ܭsOD?F8TTqQI +[;P&0$ I +"/5VJ i}#s9u-ϬB +aAkd>X"b
r=P*TY}=hxj50Ke"չFBg's<DDmQؓд%y ht8$& (sgC16wOE9n +gGorZSS L/QMq9E&*àJApk)z84 +AAx|PCj*)ЪNMgwbh9ŦuןlJň_>ɕ$R\*
-+ql~Tž'lу(vlOss .k[0!4+n`'nݞY{_ +nW{|o5Ij3MPV*@D1Sa)* ++aL +FclC pw?) +s,8_~̺]QqzІ
ۑB+α}QAJ2+R|"WL +1@'(?uy*gxD.-~tvTH?NIr{(~DcG%>sdc7y>v;{(qsf8A#د*?3\}1d&e4:u@hg<ҏv}(S|Q!^BwSm>&xh)IS7U[7xa1x`&쇦uPvmIBo(r-!_܊_]]]| +endstream +endobj +648 0 obj << +/Type /Page +/Contents 649 0 R +/Resources 647 0 R +/MediaBox [0 0 612 792] +/Parent 642 0 R +>> endobj +650 0 obj << +/D [648 0 R /XYZ 89.933 702.524 null] +>> endobj +118 0 obj << +/D [648 0 R /XYZ 89.933 632.786 null] +>> endobj +647 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F28 504 0 R /F23 415 0 R /F26 489 0 R /F24 416 0 R /F14 521 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +653 0 obj << +/Length 1615 +/Filter /FlateDecode +>> +stream +xW[wF~Wn)r-V+@B +bSkym-Ŭ8)7[rz8>7鵛=w8t1pEq0;/,^M +V5Sua玡!ņ !LJq/K( 5))9n竌%P5'Iby^Je-xWLQt&JՎte$\ +Wnw]dԋMb +9[G'x\gd~`=m +0W33
PղӨmK
~n¬g]5&NNTĞm^6GWM
?7^:W_zhn߹ܽwxt?<|'?=L_{!ȫ_Afɜ.){sEz˫9[_kvy/f#038s& aGUL
v\{`j=Iv0(y-~zcPCkMz% +¯N.6MG!*,4?m$[p$"欮oWn +qߤܧ] %vz-L^^yo~`gf8IΨ}Hj9突AO7^}{d7N #(lgtz9_ޙOg}>HM]
FKQj'Rr zQ0NԚPVm9N'I#ʶX
Bȁcxi/sa2&҂C0َ8}nt]]2`*>&WeNkLGk:3zNYF?l>6[Fh1đ7iaZӢ\kٵIQm>"Z*TLN`
֑k]N)yC@-g^tIa\oRrht,IQ,6n'5T3:(Su*Ό
3\{2ZU?git=5xK'JcLt/}xںP9+jjvͲԙ&&Sw
m+2SI?R +endstream +endobj +652 0 obj << +/Type /Page +/Contents 653 0 R +/Resources 651 0 R +/MediaBox [0 0 612 792] +/Parent 642 0 R +>> endobj +654 0 obj << +/D [652 0 R /XYZ 126.795 702.524 null] +>> endobj +122 0 obj << +/D [652 0 R /XYZ 126.795 465.414 null] +>> endobj +651 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F30 563 0 R /F28 504 0 R /F23 415 0 R /F24 416 0 R /F26 489 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +657 0 obj << +/Length 1739 +/Filter /FlateDecode +>> +stream +xڭXmo6_a"1+[7hȀaU,b%wǣ9V(X#yo|xw_9_)O"/X!"e8⯠"KQ
w7ϽjÿWl{Sh KK`q(
T[
ֺU(=w;v4z0%1SVr-}M"&e(}&\4 +zr.8=$!L۩0AE<7. +:J_w!O+So)3E9Qʢ+f,O9R9,fɪ%$y"Iijmlu<Pꠛ- +RZ_`U+bJ[Y7MG;bG%H5Î# +@Mx +Olo=A5}Gc:0&k +Ks +gЂg97 #"zɉ:UGzPvwe@t_i4 I!ԉp Ë{δKL6_4&f@TȌIIqvp+V!F9oue9wfN8z" +<Ǭ;8Vegݩ=Q96 pQK+ m֥dE2uf}swcªLMr&aogz_2m +}#U6)1i}Ǯ(9z3{T2fѧvPB=}k: zCG[=d.]-ԛ~G6_eVUۖ[5)_8!\x ʿuAoAgU١8)kfSDE_=Bm9'H^, +]guE[{^\r\zB핹L+jt<LdTKda](e/99!+E/ +&d0?ǠAS`GY=:˳ܸ|~?#V> +3L$c`}4!_ +endstream +endobj +656 0 obj << +/Type /Page +/Contents 657 0 R +/Resources 655 0 R +/MediaBox [0 0 612 792] +/Parent 642 0 R +>> endobj +658 0 obj << +/D [656 0 R /XYZ 89.933 702.524 null] +>> endobj +126 0 obj << +/D [656 0 R /XYZ 89.933 678.614 null] +>> endobj +130 0 obj << +/D [656 0 R /XYZ 89.933 626.624 null] +>> endobj +134 0 obj << +/D [656 0 R /XYZ 89.933 414.088 null] +>> endobj +655 0 obj << +/Font << /F22 414 0 R /F27 490 0 R /F26 489 0 R /F24 416 0 R /F21 371 0 R /F28 504 0 R /F14 521 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +661 0 obj << +/Length 2482 +/Filter /FlateDecode +>> +stream +xڽko @72{%~(vo@(h*KMD\=-;/J>t"gO>YnH7卧M7Qo + ߤ4RRuoߤ%VksCGJ)'7F2- hBjDckΪ:9B4]:Û^oǕ +1y-ݒuP0cHx 0F@(f?R8 +,f&dr +aQB=
Vi p>ܜpFDN M_A ԺcXc<㏠du+x,:QVsp:vB#o:;riv'7muO˝Q/ +oVۭ=W1q0H'fU12c ; +}nDTQxE/!ČƋŽH@arA>䉤/d8cSYO2n,xHѼeh"?+X9҉|a_vOѹ<1(ڂu%k[q2OQDiyozrġ@v;D*;J&Ր/dhϺ0cSr<7bL*@(XaF|da۾Q4.,h=O܄6s'#̅^_mt1JH@4_o۴<4-7ZZ_jYek`GU0Rh1q)4 pIQ!٢4 +;dK]j]c0!BjH
00BH$ +gAӵkzul<w
+ZTNI0Aؒ8RojRÁLrR`!ozJ4%FxMA,z0zH\$c\9!6{jpb3ʣqJ'Zէ+ʳ,Y6z""~rQGв7Xt8hjKK$J{]9)Y|57T~<l!kԋXQe7m;VT 'b^lۙ>ܩCV#0x6N'3^]i;ڬO=x0z9UAx),ʶ-!Y$J!\`jpzd+IѺG66קIW4d^vPpyy
y570=62+ӕbbLO*L!s/+e6WZ^5ض:+6@{[TރhbV~9^L}X(aNXk3-Tϯ>0.EܙgE'QNl3;]`E
؟"M,vT1UNqzMՠrn=Zp;k쫖}{,mۥ+JS:ftFP^Ale"`XV$[b~c>Ng*/!z
d5ԛ2{z+y66ֹU}'k
#~?R1p/j +qn#'n3<fy7K}l;]lxކO,ΎJ|;بM.^S|ɭ:woa:a+<jXk0O@GF^(
l KaεCY㩗 s^ +ԙNSwSxQTo
fL5dɴlaoґqyA3kőRQqz&Rpy˧ +endstream +endobj +660 0 obj << +/Type /Page +/Contents 661 0 R +/Resources 659 0 R +/MediaBox [0 0 612 792] +/Parent 642 0 R +>> endobj +662 0 obj << +/D [660 0 R /XYZ 126.795 702.524 null] +>> endobj +138 0 obj << +/D [660 0 R /XYZ 126.795 678.614 null] +>> endobj +142 0 obj << +/D [660 0 R /XYZ 126.795 631.79 null] +>> endobj +146 0 obj << +/D [660 0 R /XYZ 126.795 404.642 null] +>> endobj +659 0 obj << +/Font << /F22 414 0 R /F27 490 0 R /F26 489 0 R /F24 416 0 R /F28 504 0 R /F21 371 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +665 0 obj << +/Length 1254 +/Filter /FlateDecode +>> +stream +xڅVK6YQ()hEoChEC]o4'3ÏϿgŢfb[T@L%/_ OYƖ_:w^fU{{(+(EJzy2U.k& +y>>RT?VK@|L4D\$Y)O3Q+XO`X/+?M菂E +ŋ!+z"8"Y$$ћBZ[d%컾XYel4i5<~d.-tNJ + +s/MeׅGCc&IK/^{n(9CV藓\ +Ԭz萄E5:
nybwv
ی#^v)SC9gQ7 +I론,=}\t$jׇOE
"H_˛h1 +endstream +endobj +664 0 obj << +/Type /Page +/Contents 665 0 R +/Resources 663 0 R +/MediaBox [0 0 612 792] +/Parent 667 0 R +>> endobj +666 0 obj << +/D [664 0 R /XYZ 89.933 702.524 null] +>> endobj +663 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F24 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +670 0 obj << +/Length 3026 +/Filter /FlateDecode +>> +stream +xڍYKW%ejV[su'TQ,I(9ǧEjR9h6n~x.OuWw,כ]uWzS9ɲջbS%{OP4?S؛6?vebPIcW>vֻ:y]^wYaM{dYZ%Vy]fV
ropRVL}]Yɏ;wU_MΫ*O|i2 +yܞgYF'/vUrr;1>O"Жf~jGY?=#AcĜ"y,>lXZZxz n#uɋg/=&*qJ.O>-σj+Nw_,a[6,kJ5ny/dXdm +CuO~ +͐ R*(1xQ(c|Aa#*-#2l);͢UL ʕ@t-goȑ2;δBj&e;Lzpő1{fxwԎ\@L9#,sG {#O +L!!t1(
H|{Ҝ@mWW'4.23EL3Okӊcћ6pOLC
}&"6vE-Ttn+*@Y[JBѪۀT$3-71[6mx#ǐOH5otFA]Mpg\]h").`-8T=
+`؍ +N!F.,ٕ1wD\_ͩTcϱrHniaE %u.PpCR/,̠a0蹤j99R䚀ݍ +#b\
hfadcnd30\g"4V|[xE˟T?6ꞋmŎܿ&7N!A~tQL?ekk[p?V?@3!,Rgg4Yʿr82z͖TmtaH;,-H +2;I];3K&H&.ϔJ2Qˠq/߂/t#B:bG^-'kŜtqm`U$?s%ޢ[\ܤ1·]m5,]הߑXok_}BQ. +endstream +endobj +669 0 obj << +/Type /Page +/Contents 670 0 R +/Resources 668 0 R +/MediaBox [0 0 612 792] +/Parent 667 0 R +>> endobj +671 0 obj << +/D [669 0 R /XYZ 126.795 702.524 null] +>> endobj +150 0 obj << +/D [669 0 R /XYZ 126.795 678.614 null] +>> endobj +154 0 obj << +/D [669 0 R /XYZ 126.795 627.772 null] +>> endobj +668 0 obj << +/Font << /F22 414 0 R /F27 490 0 R /F26 489 0 R /F24 416 0 R /F21 371 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +674 0 obj << +/Length 2682 +/Filter /FlateDecode +>> +stream +xڭkw;"!e]r
MපR6#!Mo$ˎ8=r;;;;3;;/g{N7[M +L۶fsöMpbșF~vo;LߟY
foܢnhz~ċ1YR52gέhrM6ٛCi,tƠ]k<?~|ٿ}tl>l D%,}fw_}W??~~fl??xU2b/7!ޏɱr.5` +F/AnNيG}5{e\&$W)60?1#UGcW<Q=&ES"nU֕"G`YūJT^O[g.*d4-8嵤&^U`Lf`,q7hk2N*X+v}4 "30 U8,H1TcEQ +>QqAn>O%*T6gIdn7jaYTbE"φ뢨*fD뚅äYHype䲳^i^|P<&y6s,m2GhDhafʞ"EAiĨlM^
s>LX h[3.W*RxF&ώzU4sL9
S/Zj<t]Х䠔gF0kЊ8[){cˢuS1;
*adnȡwro*. M[his"̶cU%&e{9x/GEgHd(/&|*Ҧp7tWB%1"k6KҥfD +5N#U֕*f:ضj%0AC]o,՚vJ >_4MQeY6k:t.61Z7.5,2&<Usi`RJFK)3=3#R*YdYbtOp籥6 +$nX.Esp0lކ-x.%fp[Qd+âD>?PԮ_%aw,Ay"c\l
=!ૺL<fyI9g"ɺԼ5ȏVn(U岵Ԡ|njM'Ui<KiîM
qrv=@߈w"MZZUdWʎۖ3&TMYU}X2L{Z~l/ޥAi$2bUZjnʜ 0ﻑesD +K3u8-Gw8<yq@9rEYdg]:aZ!NDtN0ƖTz~N8`.5CU*F +3`L]G~u\Kp,K%
K<r辎s*S*xV
O +7<kP]O;WB>CZj瓺0.+y*=`NuMJx&g6ҎlglM3#pxNmC--Hr.U +Cja[[/d۾V`r\VM{xCS;]P$^)œ⚒8Ay}ꕩ,%KF-E +`H|8?AAKh{_^~P"(pݑsCm'mV@.g~XwȘ~T
osыABeL-;DC?1A=$fQMkxJwJ$Pы!/l
j֭#Va==TʶUzmV]w2}:_<<3;)8i%>"9B#>מ OC"cvjvtGSlCf(he%!Co8.R!'˽&<nA{GC۹%N,NZO`z2Tlzvtrhzo?ϟ^ӓgoMG'flzoN@=/ +endstream +endobj +673 0 obj << +/Type /Page +/Contents 674 0 R +/Resources 672 0 R +/MediaBox [0 0 612 792] +/Parent 667 0 R +>> endobj +675 0 obj << +/D [673 0 R /XYZ 89.933 702.524 null] +>> endobj +158 0 obj << +/D [673 0 R /XYZ 89.933 620.831 null] +>> endobj +162 0 obj << +/D [673 0 R /XYZ 89.933 570.52 null] +>> endobj +676 0 obj << +/D [673 0 R /XYZ 89.933 451.521 null] +>> endobj +677 0 obj << +/D [673 0 R /XYZ 89.933 439.566 null] +>> endobj +678 0 obj << +/D [673 0 R /XYZ 89.933 415.656 null] +>> endobj +672 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F28 504 0 R /F27 490 0 R /F26 489 0 R /F24 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +681 0 obj << +/Length 3143 +/Filter /FlateDecode +>> +stream +xڍkc;ih"$j\@LHO{%:R;Ig{?W]*>8_*vEtxy~ _f4T
"u1ﻳyΉ^VJܔyNue4p+Xl-<҃x!w`$n-?v|^=9;NNT~ЎG|p|r|G1+,Eٹzx}WG:z +"Ѣf"0$|FHAh{ =&^G![!#b6C4caսfBV+!ķ66/[r1iv$W#ڳ<=%E.fٴY +I^WnaUBByWBߗO>7m-(9>"K3{dS)o8|rC mxM0MSA P'8
P+vX9_-rk
A$~xz9:ߖDyv+|amЇS_Ʌ`'vfu}WIz];30 Hr@1k(mm0$1?6qK(0/B#["Z}K`ٓ)7! ;-4 +Di% ̙ˡtG. D*W?pVr]ۓs{~}.yEF_
.fEAJSaBfA,^VPYVR{"5bzfa
7֍ر݆h1C:Ri?J'xNQBdB5l`CIԞ("NJJ;Ҳ. +9r6PLYrG!*b~_k<!JKG+"V6T0cѰy[.Z[fhXn}T 0|7X6?/\v,2rl<ɚc.0Xw1]`8#mQrW<;}u36ҜcΓ
7RͰ+y+Rawk]ۇ +7=߂qKJb12`ia8*Cr#7(rU +漭֘HE" +n$2X7[)zPeN(gÆW dK3]3
F*0L2hO+{Cq@^
uL#o +$lmYEu:&jјeTNܡͻ:@w{tSTԝq<: +~%<[.F=J\"8j:|zmC'Q,E\ _.x2T~0Zlef~ND5Q/JKhAwBZmm_Ye~#w~ $Q"RP_+I9$5Eiˏ>Ib͗IqB+ݑZ]&h~
vMӽ+뢺2k;
\׆UL߹H? +endstream +endobj +680 0 obj << +/Type /Page +/Contents 681 0 R +/Resources 679 0 R +/MediaBox [0 0 612 792] +/Parent 667 0 R +>> endobj +682 0 obj << +/D [680 0 R /XYZ 126.795 702.524 null] +>> endobj +166 0 obj << +/D [680 0 R /XYZ 126.795 620.831 null] +>> endobj +170 0 obj << +/D [680 0 R /XYZ 126.795 596.921 null] +>> endobj +683 0 obj << +/D [680 0 R /XYZ 126.795 212.418 null] +>> endobj +679 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F28 504 0 R /F26 489 0 R /F27 490 0 R /F14 521 0 R /F24 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +686 0 obj << +/Length 2928 +/Filter /FlateDecode +>> +stream +xڍYyo6uFn=ڡ3.6j ŦB5::2gwQDL"~|'^xrysCWhJ{G)sVQ;/vŎiڳ_/: ONpJt"lvV!:𨫹5UVӪ,K+Z;&,"7LɐmڤYlOvn+_};V~a\b^n'+Audu_1.iLʧ ΡN~LQnDGLʊdO:Xmm@<,/p=ma5p)VU$"eusƻƠpE e+/DǞּj7u[`I̔ɑ)6n3=}ФU[ +ʶeݮۦzW6xbRx[I̙insCoyDyd\c~=|m&7M jt|sQ5>1]qZڏ|
პdz +}RGd)>&`O/ U
~S1yf +ˋqVZ}<+k:y(%\WH{[< +Cn
6`v{/ bS*LڌfSEZ'xeIENZ q[61.vg[p.M^gʺ9, UϹ$P!L=b<1\.MCR\f R !@ ϳ!l~s~nO3ԟe|6L<$Pc(#@/K43_KdyU5D5I{^i'Gd<e/͎i*t4BW7uQ0¯noL=(l5 \z +3l9$|2h`yο]zVB.ma@Aa2{Sv%~=mmI^Rfw/m(4ce3M|3]N7(GoRP$VяRZ +endstream +endobj +685 0 obj << +/Type /Page +/Contents 686 0 R +/Resources 684 0 R +/MediaBox [0 0 612 792] +/Parent 667 0 R +>> endobj +687 0 obj << +/D [685 0 R /XYZ 89.933 702.524 null] +>> endobj +688 0 obj << +/D [685 0 R /XYZ 89.933 632.786 null] +>> endobj +689 0 obj << +/D [685 0 R /XYZ 89.933 582.475 null] +>> endobj +174 0 obj << +/D [685 0 R /XYZ 89.933 500.449 null] +>> endobj +178 0 obj << +/D [685 0 R /XYZ 89.933 247.73 null] +>> endobj +684 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F24 416 0 R /F27 490 0 R /F28 504 0 R /F26 489 0 R /F23 415 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +692 0 obj << +/Length 2636 +/Filter /FlateDecode +>> +stream +xڽks{~M'=cϻ/sJ'o,wnh T:ٹؿXzn.3jFX9b;`lc/t1w]
<ُo`<9Ø}8hTC7=rtLV~vӋGCCĈCooCcbq6SO.<>5>/ +ΤDij%bYڦBl;e%ٖ=oD2I9&MȊOZ)MHV)_Z$n7|fqF3Z֝FH4;ɿ}'}z +ZK[#,A6>[#_>ָ=>J>e}NDS {88q͟[><Ik_3o~ { +l2#S$raAV~*iBqނY0wVhN4γzP"#鷱ul]
,@/FW[2ϋ|Ϻl|1O-0GTSn,I.Sեe?p}'qdwkVFWspX5f^]ٶoß3W\?۳fzR!ChڤSLr(E|BQ`PS8plg!(!LBV(,[z<%(|$l>8)$Ո7=U_!->d{ޓS,hQmFQ_8(ݓ +4QM~G%5U<YBE
+XlPQZh,i2dk?
|N@j䲙QG!9:-s=WuwJi4'-*`6գl^Qp2o#8GN배'"S$(F _YRWBs"UCp3jUmy/ty9Fh+qqW<=uIꈉHSNiGG4egNUln
.ܓ_jvDm캀]{bON2'5̋:%kD|Ss;$`T?hCکΒ$nL5/Ԫ=ॊX./Ѧ+ux*,B>kD2\236
_4i7pLY)IKP +W`e=l~9_A3}D0DzAbomh˙ +3młSu4fzY']uUJG/0!
NCadg*>GC!'D2ᶿa?K84A`&RznS +xGR;R`Ij;u-]II\g.A|ME>)F.P[`*xh(gǏ:!LW/i}FC&BʶMN4z};Ko;~Ox>,y'`AƫUZ*orW8 5XB{8B +!1ACKXnrKu_o*dWhP;:UЦ%ԺF7QEaY8w e5pл,=`3EG1٬ǑYГjMy9jI'!CG*?Qbe$cSN=bF6B@wt]S~q`{~_`tg(3OgCx<R)T&D{3"g)CfnZCֱ!xnT; n03$o`8adBE38pGGŝIwRT +endstream +endobj +691 0 obj << +/Type /Page +/Contents 692 0 R +/Resources 690 0 R +/MediaBox [0 0 612 792] +/Parent 667 0 R +>> endobj +693 0 obj << +/D [691 0 R /XYZ 126.795 702.524 null] +>> endobj +690 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F28 504 0 R /F14 521 0 R /F24 416 0 R /F26 489 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +696 0 obj << +/Length 2705 +/Filter /FlateDecode +>> +stream +xڭYY
~_ѝ`70_Ern?QUvٵ== !EGkv:(ȏWoMn74ɓ,Boe|"и;YDsw?bU8Mi4M4FJe, +NK|}LtfnDD a&"E
(Vْ&mDaT$Y.إ#;[$6n8Þw]uy`??R+C~}f삁noe2 +N +>x@E༧wl="4HWl'&z'$?p1K~XcU .&K\џST{8]9IHpG_ +Cƈ<|i<k=}y+8Jwq +G-2:Ts!jZ kEjˍX_[]f<K#X8
}K3
,2_1sZUB%
51s{X$X0ol3n?3*/hʋ!kOIN~ +_LX6VYX2;Gjvkv<RhxQI2$t +m\hͽsԝ{ܦ7fXYq.VjpKcCG{SQ'K(Uy^dA8.@eXt[cvgG`<w4cNCǟt1uDkTƅ@ +?تuK#LPllntfI=V]J03 +vvfV,X.w1OBrSoj7C@*"EhVU<v,s+zLmMp'R}-KT 4Yt$Qrک$&\8 ]řH4L +݅Qm?:O4a+h<ޭ\o:xx*{%
3a_PǨ8bT؋]~EZjsԮіmz>h7BT#BVEhŢf(_iw)U&S`'K1{O)K +2'$19D5&Ӊ ܳltYqfLVy-p{RT\8vPƇ +P>T@ +_arA4'7wgp)?e颤n;xuE1Q +jus6(vL
=k\u堠: +o#E [E wo䝣
Q2ٻo\<`*o9WHA%ڄFЬmn33ai2Y4\GoWo qE-_B)3pqx_Xzz +?~ï|N= 0L^gw +endstream +endobj +695 0 obj << +/Type /Page +/Contents 696 0 R +/Resources 694 0 R +/MediaBox [0 0 612 792] +/Parent 699 0 R +>> endobj +697 0 obj << +/D [695 0 R /XYZ 89.933 702.524 null] +>> endobj +694 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F28 504 0 R /F24 416 0 R /F26 489 0 R /F14 521 0 R /F7 698 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +702 0 obj << +/Length 1997 +/Filter /FlateDecode +>> +stream +xڵXo6b#*""msh5PrZWVZHخǮkx93o/_MB.3!C7JY䅮bv`T9x|EΪB*/oS-&K[<Vv6gij}<c!A$g~Q@NZ>:G&mmnā.ۼ)2/@$G0oҼ4lCۂfNgyjyF>}N1 ky6ʳG-oj-x[nuMpsӢڍtd?Kv
+Z<v'4+R~$n%c]O-(VЫ*G)+gi)9 +y&S֠I`XjBn8¹ZdLKY0a|VUiuf:CU ,}֟yč}16OVmdf)Lu]m2TK<gQHu}:p]k]Z3 2;T$8~{s +̛͕6-;h :~K'̿m؍O`ypF8s}I@A +]? +/_n6SCqzVȱMR_=EU92rSm^ 2jzP K1者bq>!}q4~o5~oo2$X +(p04hmp*)Zܩ"7>b2pAUEU((0<Y#h82rXCOuKwS^
#MA\D*i",4U*~x_FPw8}@~Tw(p-t$%L~Kt1M'tZ.b.ϕB$,>&%]uXhc +>
ꦧkF~>W{~rٜM؝OVC_@h[n#M9 +XLZryI +[J -wpE# ad' }uP`O44L?k
bڏ]J#j:p +SLY3QɄd3LlF#X[#/8]9Üǣ.(<\e-): ^b\Yk y+ +Orp=x3{ʍ3Xb#;l4TA{|%t/3u|ߴC$\ަ9(ݫ?|UϦ&'OWB= efNoqHqm{^yw۽ xϣ@/]C +endstream +endobj +701 0 obj << +/Type /Page +/Contents 702 0 R +/Resources 700 0 R +/MediaBox [0 0 612 792] +/Parent 699 0 R +>> endobj +703 0 obj << +/D [701 0 R /XYZ 126.795 702.524 null] +>> endobj +700 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F28 504 0 R /F24 416 0 R /F23 415 0 R /F14 521 0 R /F26 489 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +706 0 obj << +/Length 1829 +/Filter /FlateDecode +>> +stream +xڭXYs6~ϯi-MYbL&NNܴUPĄGE!{XΞjfkڠ5_FP(n%Dє^8u/hF]F??`R4G-F30N_71Ԡosodw]Nte1D<,+Y6],,P?Pߪ[$~Ű',nD2e(Cu +WF@kߐR }RP**DrRjXpRCɢQ:,kgG>K϶3kMû#Qb|_ } +7/S\(N`\te,w(/ G|mi
~a5 2mh\ƦqKwF +U$/M!J`=n~$elz<
FUL&dz=љMƣr:VORsY)ujQi<3/OTSa;mQꙤ-zǏ?sW({VA]_$)txl|(j6kZK!G& +~_0H=TF*?d JV-R2R& +25rξxv9A|RyB *٬Th+{LŧS<1o_GZS,
hѱ8(EHVSKx_LdPd-i!\~RiLeYE FIוDsy!4n-s` W(14:=8|^X,Ln0`XTw`SDm~R + +OՃuu͟K2 Cjv ɩ(a,ԃ!#Ł 6 +endstream +endobj +705 0 obj << +/Type /Page +/Contents 706 0 R +/Resources 704 0 R +/MediaBox [0 0 612 792] +/Parent 699 0 R +>> endobj +707 0 obj << +/D [705 0 R /XYZ 89.933 702.524 null] +>> endobj +182 0 obj << +/D [705 0 R /XYZ 89.933 441.503 null] +>> endobj +704 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F28 504 0 R /F26 489 0 R /F23 415 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +710 0 obj << +/Length 1735 +/Filter /FlateDecode +>> +stream +xڥWks8_A@X:&i:v&$ǖA¤o+K18$LbI\{tDUZTֹRT?+:w[m]ܜc46,Um56QqNO]M;=M;#M&|#1j3=USQ
1枴MgF͓[ȉ>R= 46LʻQ8H
W}1p|9pЏ 0ѥ͑W,tqeCd=x.,MΛ$k4knhFh#tO8P7 @+t2/O! +G̘#m5!¢#WZ9>9a8>5 +wХŬ^&u=5]y8A?g%EҚ{d$rPnh탎j#º֦{i16I. _e3'|avFq6# 0قYS"^e48狥eo{y +EUY'řىdۦ${WLcI7͇5΄?r99=>_i.2D}&bXYbGig//icbK{1\SJ&i֗EdJ'd4i$~d' Q剐hn4]yG*,+Wb]džSW@Q +Vf#i +mOMY=;.=KH-˓])4Zi$ɓ +>EfGVDV!:IB<8+Pk!n֜ZPEE!\vGRáb>Ʒlɖ4e4Q42.Y o-`*WMhڕ>.~/YF6ҪSEH2N!ITeT _Jg[廦VmK_>QN,IÄimUeʈx)iTDyvvfWQw1fjMb!`%d_ +ER!HbPD&1+TboBʳX-q_ʿ~6O쒒h^ޢ}$Cen2"wޠ;2<{X=NrpN*/ѭ_@"NSzH@vY8'LgVyWah&P2r$!͊5(?#;adj[[]*_)g)RQzpcY ,yVށƢ˹M@3TZ^C,CSj$@Yt\eЭdW٪Wʺ4e]ۖC+ +endstream +endobj +709 0 obj << +/Type /Page +/Contents 710 0 R +/Resources 708 0 R +/MediaBox [0 0 612 792] +/Parent 699 0 R +>> endobj +711 0 obj << +/D [709 0 R /XYZ 126.795 702.524 null] +>> endobj +186 0 obj << +/D [709 0 R /XYZ 126.795 501.279 null] +>> endobj +708 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F28 504 0 R /F26 489 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +714 0 obj << +/Length 1296 +/Filter /FlateDecode +>> +stream +xڝWmC6ίt؍8q +
֗Imm[:Rj;odtsӓӶn65F
hƻmzS#Ͷao6 +M[h}lmaEX}iF=F65mmH>#˗J 6K źkmS+
x8gt_XBAvp|q$$)C4UƛTj/ū= +^s) +o"MKU1"*qוm)n8l0 D!Yb%F3]pqfQ \l(2zѨl(WyB_pƐlZU)|ݪdJgeJӹjz(\kAJ"ف~O7DV@dU8i8In: q>nn`ZaAE20:^ՁP'SLROϿW_r0|?#68O~K$/cu{vqnrC^6~$d4rxgJ,X^3jRUc]E\>t獉knv{b^Up߅8S&`IYD|/G ;1a> +]ϳ߄χȲ֪"a<ND+|kFǮ&Rc@VG, +H/-#avꅫEAaCd&?Gem:ħtb~B> +vg3 V:racE\UҊá`~K(!wpv^P鬛'K!M)/^BrJWr \P`*47ѷ0ĹKwènV.L5G}twT +^EwCӰoyxʉZBy7}80#ɪH@"$Ja +endstream +endobj +713 0 obj << +/Type /Page +/Contents 714 0 R +/Resources 712 0 R +/MediaBox [0 0 612 792] +/Parent 699 0 R +>> endobj +715 0 obj << +/D [713 0 R /XYZ 89.933 702.524 null] +>> endobj +712 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +718 0 obj << +/Length 1052 +/Filter /FlateDecode +>> +stream +xڵV[6~_aXظRڇzZ(B-'f)CW]h_377h>lozȋ8<?!mS&XQiҁ&&O(F! +h=OrErEY]T yjˈ,oFEF6V ?
*.&~Ȧ~*_K~<4W|Fb\𗻖MSjKh^-W34ߗt0/2I!Fm?\X&mMXY~jg^W|T~[JRNL>0ufc6c:_D2e=GR vd!={w^|Eox1I70ZhVȲMG.g==cU[C)ZszGyjێ}(plN`mD6/DSv Kq h'pi>t " v Ь+҅t-!vb;2d +FNl +Ę̘ԘPRRRRRRRRR/ +endstream +endobj +717 0 obj << +/Type /Page +/Contents 718 0 R +/Resources 716 0 R +/MediaBox [0 0 612 792] +/Parent 699 0 R +>> endobj +719 0 obj << +/D [717 0 R /XYZ 126.795 702.524 null] +>> endobj +716 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +722 0 obj << +/Length 1293 +/Filter /FlateDecode +>> +stream +xڍW[o6~ϯysHe˗ viP`,ȶDl%R(%bQ$9΅O`v1ģfp +WrH_MQ^\yDžACxAyJn{V߳=ltK<X%\#]zFOH=I^9L@Pil]Vt{Kb>AL<zOZ*LAut|Y!&1Sz +R57D( +()hajrw4WP +'A(ReGIFLll}V/!M3w42c >
-J65Hn~'h.ep&֨+Q|bb8ޤ;K cߏw=PMfy_0LʵcC-&;{Arܕ*ᜊN&&7V
0p)f;MSaȐu1r.EpITX_iN& +1/!d!P -1CG|.FETk+E!b+HXj[~,X+v|(I0fs"A1, +#)"l05%pF4V+c_50~?+
X5n ' xTa}uhwlK!&V3&*L\D?jt:HةZ%MN+vg҇m? +u)e AYzv4YŦ8h1]4q2M0,?nulWW2ŁgBK;:uzs<اp5OYN3'"6f_YTcWݛ`(X1tQ0'6axL)N[Փ:;\WjfO `Y?!xC[ƝW߮؞;}e 4
g}WɨqSrNQ +wv?)DA3k7][Lg +BX ,xټOA#rY˻Pr0c6sQ6Rچ^bry*ޏ囦2s3~KlT}z^\sg +endstream +endobj +721 0 obj << +/Type /Page +/Contents 722 0 R +/Resources 720 0 R +/MediaBox [0 0 612 792] +/Parent 724 0 R +>> endobj +723 0 obj << +/D [721 0 R /XYZ 89.933 702.524 null] +>> endobj +720 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +727 0 obj << +/Length 807 +/Filter /FlateDecode +>> +stream +xڅVo0_VEJbT:nXKƴ"_$А4>9.B']ߊR=k9%֏" Kgk͵
B^.˙ӄۙ1c!z4Z@2be㥳B'jc͙"Ŕrh~ܹ&Q*CsH)>1IX"I[$zPU^,op!<eBj6] +R'WѕݑXI52ihݴ9K 8b(\Dن-nN(+(ʆ#o8Bٞ)S;ƔXT 75W0N)2r`ZNY7+pÍ1*YN2J;^}$JaVvƔ fI1R;x6r=G︧6k葑VVCZ 0$1kqO/ab)[p.J!rdB.r'=&ʞRр$x;NL)la?mY9Mah..Mf*x B<`:1|.xT1 &I3WLa..PbM6$ڨ;Aq8K<IqCNZzl`9}Lxrh8+kP=R{+h7H\xr;FsK +endstream +endobj +726 0 obj << +/Type /Page +/Contents 727 0 R +/Resources 725 0 R +/MediaBox [0 0 612 792] +/Parent 724 0 R +>> endobj +728 0 obj << +/D [726 0 R /XYZ 126.795 702.524 null] +>> endobj +725 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +732 0 obj << +/Length 2197 +/Filter /FlateDecode +>> +stream +xڽXMϯh F(Jf K `hn-K(Mwg=U,=,rIQWw"Lbevs)ʸL8W0W$jYTDm۬R][ӀlnaRZq)ڱXH>n%eyzaOdɧjt8DVDtZU&A(CR~*>du(=T,N)&(&2Cqz}t-\ KZ*.dqˌv%dMm#LglhV
j" jz^j
K#wCKbG@J9u[RFCyAnJ +v]7Nk^N*s^R*QkF
TUC\)G5tdqKME{t6K%B'a{eNLV[טe;)dkQ)/
nzpq\Ji&1_ϝ㷿P2.8Y[3pdYƩ*IՀi_<4c- - [{Ⴐꁍb.gb +`ʱ5=xk=u]otp9jiݒO,yv+=^%s9YeȆґ;/gAcFܓrvHaYB@]h0,pP&iHs_E66L2"2%rD{XHFav2&
aّQw:0`iӿ9ʛExUo"VtL iUk``,H4YWޅ$g|Uh_8"k,W
l(>e'F0sF<ܪwHu33QQF)/:+y`jj BHʫ*s.d=:Y +7NQ0RJ +GƦi=;$88|hn:|TV67}'@qn,.Wsd.iW6Lֻ%vYH{k=Bu㵅뫺&=?h}}|~q`g5dQox=LX"#_RmBK5fDO<0C
nz(2 +|!XP ̠ς}er'XjZ|{C݀AW@G:_B5p:AlN.lڧ3Otಢ@rESBV`DQ?:s[Ckzptw)5Ckz. +iyMNʑ)nOj9=@qY
X%k[_Й$BTUc34c,91Y2 "<W~KYc-O@I}c.aMkT +Ę_ܯ0}2up{+~<(5Ꙇ~|^]D"EtNXˇRBwz8x |Ɇ;Izso1t[SPx;-6=dhgvL +>ej`14[F.f&$h_{ +aL^^P- +endstream +endobj +731 0 obj << +/Type /Page +/Contents 732 0 R +/Resources 730 0 R +/MediaBox [0 0 612 792] +/Parent 724 0 R +/Annots [ 729 0 R ] +>> endobj +729 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [210.481 151.092 230.185 163.048] +/Subtype /Link +/A << /S /GoTo /D (table.12.1) >> +>> endobj +733 0 obj << +/D [731 0 R /XYZ 89.933 702.524 null] +>> endobj +190 0 obj << +/D [731 0 R /XYZ 89.933 678.614 null] +>> endobj +194 0 obj << +/D [731 0 R /XYZ 89.933 627.772 null] +>> endobj +198 0 obj << +/D [731 0 R /XYZ 89.933 558.066 null] +>> endobj +734 0 obj << +/D [731 0 R /XYZ 89.933 486.889 null] +>> endobj +735 0 obj << +/D [731 0 R /XYZ 89.933 474.823 null] +>> endobj +736 0 obj << +/D [731 0 R /XYZ 89.933 452.462 null] +>> endobj +730 0 obj << +/Font << /F22 414 0 R /F27 490 0 R /F26 489 0 R /F24 416 0 R /F21 371 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +742 0 obj << +/Length 1992 +/Filter /FlateDecode +>> +stream +xڥˎ6_[@%$9$HX lDDU$%[<^bXw_?QI!^v"ɋ,SB*3_/?evEIL8QiM6<cJxWw͖1wtǶ7GR[쥐і +FX63;ɷ-<~98+9d\w=Ru?h<K֦s?:iD"ʋ1Fe_iTQ +ʣ#m# +Ț?W>e|c" )S_
ਈ ýLmc;ҪOW+Zxbkj`R?`!MN{0Cfl**]^?&5= +<j6r +tyev74?u_CXUu=R}. +6YgjUٛmIx1~
_N5ko+3rgƔ߭sR9iUwg\L
Gӻx +&XB/OjpI"Ep7>»#~r>&!L;/DEFnUQz+>lH$]T$˗f}оݬ+Z.ǝ-s:tr.UX ^AG +`aTbX[ΣdQvz-KZW^P,u9XU@
b" L +endstream +endobj +741 0 obj << +/Type /Page +/Contents 742 0 R +/Resources 740 0 R +/MediaBox [0 0 612 792] +/Parent 724 0 R +/Annots [ 738 0 R 739 0 R ] +>> endobj +738 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [339.71 141.443 359.414 153.398] +/Subtype /Link +/A << /S /GoTo /D (table.12.2) >> +>> endobj +739 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [380.199 141.443 399.903 153.398] +/Subtype /Link +/A << /S /GoTo /D (table.12.3) >> +>> endobj +743 0 obj << +/D [741 0 R /XYZ 126.795 702.524 null] +>> endobj +737 0 obj << +/D [741 0 R /XYZ 278.669 680.607 null] +>> endobj +744 0 obj << +/D [741 0 R /XYZ 318.866 435.44 null] +>> endobj +740 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F24 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +748 0 obj << +/Length 2181 +/Filter /FlateDecode +>> +stream +xZ[~?[kE@OlJRʼc<3~㱰y ["5zǿ`8iU!B,xB2ɖ+#鱗y]fߧd1"A4/8fd<bllRJ!r\JY]&}ueUG<Wqb ą6+7ĿP¦|i9OZ`.d~]Az^70@Dz8)|%X燳)uVltѬ۴*V=z3dR+J-u{mբ3^ȩ}Ri&}/ ĩ˗+hpR^:T,BΔm=I^6Xc X +
;MCoDUV>\/<. H.5m䐹\AB1A,dRGcZ| $98N,q}kduۡ +=H|q}?9R0|v|DIfZ`юE\胹f|+k9E/u \^3
TkF5)⻪3j%!ÞcRgv7i!#t\xGD_4\ [WgֵwDq
S@dV~Rq=ёl
JI}/LhyoXKCEB,7Oi<|6+ +x3AÐb̀CiYYqIO)nYt?&m-Epp{i%,xlJ&c3\>Mѹ#? !o=W>m~2J 'mH1|'+pquG~VV_fxX˘? +w5+zt}Rᮬ"yBM3G8Su{gbWSQn +2ogQ$fG
uz:y|n~UMUL:pV, +/~Xg&v2s} +V.^Wu4.+ӌjWZ]YTTD?[UպlN+)<u\\ +"I|8^0>tsWH[q%e 4L'dzS-XPNZqELxMvSY">~wT
^>ӯݗb +endstream +endobj +747 0 obj << +/Type /Page +/Contents 748 0 R +/Resources 746 0 R +/MediaBox [0 0 612 792] +/Parent 724 0 R +>> endobj +749 0 obj << +/D [747 0 R /XYZ 89.933 702.524 null] +>> endobj +745 0 obj << +/D [747 0 R /XYZ 274.698 680.607 null] +>> endobj +746 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F24 416 0 R /F14 521 0 R /F26 489 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +752 0 obj << +/Length 2474 +/Filter /FlateDecode +>> +stream +xڍr_}0XeNpNR|JNjE[eaY +{9Z}gt1jF/Uu}V+?-і}T +Lٖ@=^rkѨ~OE}Sؓchl7K禶,vTV)Y yܪΒbRr +,HAߔuI??
3ѡeWbUm7g~HHڥ* +LB[[Z.נ81!WCXQ-pQSwcp}vS"^ɡfE +=PLپ=r$vϔN54MoKUM&ML7}zJYcCr &H|'m`尞 +īv]`wQOC98dWHzA[.<V:GӜyqAwSׄ7+avm#
\o8VةN)幑#;t ._*)=ĦHY8*#ZUɇ)B-#Ň@"M,;\>P<D'1s+`s|/'8bg*#]8P@ 8cBQ5f!?3f|h[,"y7P2ް3l̗>Tu+/"3RЫ ÐץP +B9aK+|ÉCB9c}IkʆZ*GackVPL7[
4:Bz͉x(8smV68 +G=HPg˺3NˣJWcX@QL4wz##GWéM{ ؚT[t"A;??Hy -}06/Cu>|Rִ֘#rBެ +:rMkǥeyd`%[svb?Y>{qO|ߺm3CzC⬭q8.aF(prC
t9TYm`31l&6uS<'o` uc$y8N;L{ͻˁl3eدrMnнQK@>HJM_kjDкf8%dI+ű@6Jl &1ּnS0tnev,cX 8M"Oi +endstream +endobj +751 0 obj << +/Type /Page +/Contents 752 0 R +/Resources 750 0 R +/MediaBox [0 0 612 792] +/Parent 724 0 R +>> endobj +753 0 obj << +/D [751 0 R /XYZ 126.795 702.524 null] +>> endobj +202 0 obj << +/D [751 0 R /XYZ 126.795 678.614 null] +>> endobj +750 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F27 490 0 R /F24 416 0 R /F28 504 0 R /F26 489 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +756 0 obj << +/Length 2148 +/Filter /FlateDecode +>> +stream +xڕXm_!誶%A\'=iaja_|>w:Gp8b!|E"\$e(,/~\^TR,MO2s*/Lj܄\Lt|Nm$jxE"B ?"d>Me|=Q7K!̴zqvj;MNa«rD1;Sb +W܁0Kmr<MS?^.E5(j +! lS GAΒER0f,0"oFk"["k?fUNmݔVU:7ՎXjoua ntQ͒h*ZO6T鑙?GfnvdXjʑaR,BvQ#Mh
rf[V%|_LtҌޠ]S0Pso={÷)Xޝ0ÂX<XـXI^o-b\/2Qpy\x#b">,q8p<zW7xq|ޡ`Xۙ N;}jr +/_oi&d~ (]dk"7}`Î"ޤx +R/XO*)uEC豤nrDRRTtWe)uhj>scjnɯ29nͭca=CPI!jTY>lDDFcڲ8!84 +ﵛlzC5(wQL<hltӻr;3pkUs:wRODMBEEAu}9I<XX=wt~D(-"(;Zgͧ%h0~$<Ƿek_*:TAff6ꂯʸe9!W=̑.PU4 +Yjd~D&5aj:Ǝٜ`6:S}O?Z^}nWQoM,*,L-Z??ô +endstream +endobj +755 0 obj << +/Type /Page +/Contents 756 0 R +/Resources 754 0 R +/MediaBox [0 0 612 792] +/Parent 758 0 R +>> endobj +757 0 obj << +/D [755 0 R /XYZ 89.933 702.524 null] +>> endobj +206 0 obj << +/D [755 0 R /XYZ 89.933 678.614 null] +>> endobj +210 0 obj << +/D [755 0 R /XYZ 89.933 627.198 null] +>> endobj +214 0 obj << +/D [755 0 R /XYZ 89.933 439.402 null] +>> endobj +754 0 obj << +/Font << /F22 414 0 R /F29 557 0 R /F27 490 0 R /F26 489 0 R /F24 416 0 R /F28 504 0 R /F21 371 0 R /F14 521 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +761 0 obj << +/Length 1899 +/Filter /FlateDecode +>> +stream +xڕXݓ8_0Yd$.[۫$UalS7۷[-ي~j/f&o EGň$Ed* +sаiu:w%wV;XJD"'$Kxǹ:]!yh+
Y~ΦD:_eZ^ȝb0ٸpUI-O9NFܸ"tj䜯 ;#@B(1 +:fG1ppy"L@!, ?8*yV~JUMvbez^ey$RZ6;]?-.*;;(G.B<=}M˹sI[ +rVi[0r"UfLO@)zY3:
7i^7výmZVV37cg|
c|QTyU+ +;]bK%$Z%[<fta*oUeJb*:EpF1YD]8|%R"C[(Y$Gն%Z/'jZ=*$?Q5,5\wt=;a<rp[ܶVh2vXY[#jn,Ck:
Cs>.$j~qI82;efcub76Dtlo0N8FrUmovLRiYL
O$D/hҨZxsKJ3"|k!S-v+
!+z?(m^i5 +_?יqJ`0]>-/BpےonljihrŤԻfYWWMb˕5 +NՅ0Eds', b\Ӗ|_'NBj%c2R;y͌LxOM1ȑ/S֗t +r͠r%\r}W&{c.OXfg5ݑT$,E_B`{@C},>̣qyϮviֆ8.^)0u{sBSPsp<QPS92+_rr,SNO'Pq%gyQr3%@zy830 -nzJҴv50kM\b1>;):]NE,r4+d}̛{G?'{ +`؍AD%%`qкq^r +endstream +endobj +760 0 obj << +/Type /Page +/Contents 761 0 R +/Resources 759 0 R +/MediaBox [0 0 612 792] +/Parent 758 0 R +>> endobj +762 0 obj << +/D [760 0 R /XYZ 126.795 702.524 null] +>> endobj +218 0 obj << +/D [760 0 R /XYZ 126.795 678.614 null] +>> endobj +222 0 obj << +/D [760 0 R /XYZ 126.795 631.79 null] +>> endobj +226 0 obj << +/D [760 0 R /XYZ 126.795 356.821 null] +>> endobj +759 0 obj << +/Font << /F22 414 0 R /F27 490 0 R /F26 489 0 R /F24 416 0 R /F28 504 0 R /F21 371 0 R /F11 763 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +766 0 obj << +/Length 723 +/Filter /FlateDecode +>> +stream +xڍU;o0+U"oJ:{k +h[%\7K~{IXQdx>7wQըTf]V9La!٦~#R*쥠Un&[|wƙU Qe6YK5\6>AOTW9wRyf,Jw!93`6ZmK,ߔD*$Y*z"O'35ښDB"%b6b$x/)xnb:E$Be%!2 c<`n{4臂.4 BAG!kyL# C3wYY]9J9z)^C +TZ#-EH#Ų&fғI$"XfRѩ:2>1CϞ%Y?n8^*7V_*ޱ'x[/N$<h*7*#\ >мøeWiV]:_5^9v}\;6Awpj8zL +sM7jtIݲr`oqjas b=;hS3W.^|n,BV℺;x3H˂6l
zM&@w4yX$3&V +1y}VG=<b$4na)kr0Y +endstream +endobj +765 0 obj << +/Type /Page +/Contents 766 0 R +/Resources 764 0 R +/MediaBox [0 0 612 792] +/Parent 758 0 R +>> endobj +767 0 obj << +/D [765 0 R /XYZ 89.933 702.524 null] +>> endobj +764 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F24 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +770 0 obj << +/Length 2925 +/Filter /FlateDecode +>> +stream +xڽYێ}߯7S&͓x +8wl<i27c3J8&Pa0Ϋ.s6ƙ*Vxo@:0FQ4[6@FBW`9bJ;Dž, + !
s-pGd:(1 +1x[3S\́AT7d5zԯ +v&FALW4oe*v(-9či<KtBշ 5S>BGy=*C'_Gx0OMRO}KnlZ,9T7X3D%r\K!IGLjvSVWL#(U[SgUӯ[vj[=MI?mT +Ͷg4|XLj.6cqOu~S"=qZ62^2H>GBl#H۩j=Oq4wbd*dz>HY$+x U87%pB !H˺zQ +W в,)qsF~ŗ& +HPi|3BH.߮;Lf +k2G,\.4vG*ZWS4fd~]w4SC@nL-g
c6I̻^E
W/I-, +[2tɖ$kYPV?|?PX\w';\h{+sZ:wOաN{42mL`ׄG#:,q8T~"]4OQM +CbJT\JB$6 /%W4}BNEO¯ +t/R+: Pzp|p7F0Wx?+o&vq 6}_%0LXMI9}~Y$cp*;[45|L`yÓ;/|i=i *-.^V4Ǝo#KT?(Hzt=,/',r~'҃$B4DԎY"}Q#2&B?Di`
gY,9stE +endstream +endobj +769 0 obj << +/Type /Page +/Contents 770 0 R +/Resources 768 0 R +/MediaBox [0 0 612 792] +/Parent 758 0 R +>> endobj +771 0 obj << +/D [769 0 R /XYZ 126.795 702.524 null] +>> endobj +230 0 obj << +/D [769 0 R /XYZ 126.795 678.614 null] +>> endobj +234 0 obj << +/D [769 0 R /XYZ 126.795 627.772 null] +>> endobj +238 0 obj << +/D [769 0 R /XYZ 126.795 415.656 null] +>> endobj +768 0 obj << +/Font << /F22 414 0 R /F27 490 0 R /F26 489 0 R /F24 416 0 R /F21 371 0 R /F28 504 0 R /F14 521 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +774 0 obj << +/Length 2359 +/Filter /FlateDecode +>> +stream +xڵ]o}2rVEIGlqv}84-jeɕ/ʒx}D!^G_/R7h~\$0EERj.pv}w~☶[sجF$tN1,V +b7)/!{UNƿmٿ +G#*7'}[n]9 "աoLNX'J+#S'@ +ܖ}omt`%ZI+TG|@e +LtH2ZmRk'x tKط 'oVhu^w.G^bw/3KҩMPd,e8m
j*/L]vi}C:Ls?P@.i d`?҄7B7iCvb6
ʮ~Z!E|̢7!#B8D|'Pq*;~bI`wh{SFaGĎ<7`anyiUadWu;mHb̗wVQݞzk18$EruzRy_lM2WG)+~ՄD0¬E].r7AZƥ=Hfq'r-+3+th 1"w%)dxPhocj42[p!_ݙk@qBb6Bm3",4-+ j&`<MopcCgmf5PV\ni#V 5a/C*g|MemԹᅲƿ]JʬSg_}σ;J́\txp,gͯLnbcI\aJBt|* *Tykf+=졹[n_f!$0N^:X+=M$yf(BȺ
zٲeT*
vYY[gÕ F<j'f^hL82m +D +fFIǠ mCV?`c#l^
WXbKCK1%״ΡLBoSxк-`MMw;arޱGC-BX)+kL9*v>2c2.s2</ ;
۟$4q#57v\:dh5&{1gK SeNE)͋/y`+mB(=nz_wY]@nP5Tjl*gH+aZJ`涨mBo&v^z<dݨO+
֝kn:D߷;}*fxaǮ
L1=upq,vfI.qIBlN鴹9 +RbxJ %ylN8%)4Ccݏ4ovG"oD7Ȕ6gxϪzC@RS_˛&;4 +l7C3XzQӀaȨINF.,fȾJΒwK&6di釆5jrmngЙC&1S߈
"hT8%e1N+A2-P<7UJ4^ٖJ81Lh +C@\UxB5op[l'tø\N9at$sh=y3c?OYA_0`86Uw4_ +C=DMe
c7|MՙQuxa쟷 +c_.=v\XvJQɾ~+zMG)x3hG;s3`Pt<uB1q"DNArAj_(HNbe"; h9xpL8;KnW/û?F#/ +endstream +endobj +773 0 obj << +/Type /Page +/Contents 774 0 R +/Resources 772 0 R +/MediaBox [0 0 612 792] +/Parent 758 0 R +>> endobj +775 0 obj << +/D [773 0 R /XYZ 89.933 702.524 null] +>> endobj +772 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F24 416 0 R /F28 504 0 R /F23 415 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +778 0 obj << +/Length 750 +/Filter /FlateDecode +>> +stream +xڥVMo0W HF+|TI+u{涻ii"&3ߗ?0r8tF uiBr4.*$m! pgj0BϏܧ+P{8 Y؉HhG I)"ra$(I$& +endstream +endobj +777 0 obj << +/Type /Page +/Contents 778 0 R +/Resources 776 0 R +/MediaBox [0 0 612 792] +/Parent 758 0 R +>> endobj +779 0 obj << +/D [777 0 R /XYZ 126.795 702.524 null] +>> endobj +776 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F28 504 0 R /F23 415 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +782 0 obj << +/Length 3249 +/Filter /FlateDecode +>> +stream +xڍYYo~_7"Q5" `LH rfF-x㿧.hY?MWC?Le7ǛIrGY}} NCy^?yn?x19)tMRx3<i"H~Aog>IZ.62B7'n* K
,ˠʃ ;N8Xut +8,szs
;K?zR3 +O/Q{7pkjpw 7LSk87zQ03q`JFA3J[СkЏYI8[,{lF+T}4a# R=yyo/qZ+h1O7mOQC-K +]]+,Yllaͼ/af^|%KMq*;hYea[Ǥn4V=iǼ~F8nmݡkay cudAQLI,!"UPN<L>0u]E8Ɋ2RyÉɏf~҈W +(w>:d_r/" B:URO@`܁=_Vh Q,Ԃ]ZXq8Xv +vi֒͞@ׄW,hbEeul6Iiyn2!Myc
*w ɐgnh]2eG +&z!}t
ʘ;0v쎹|Xb}B\*T)z"KwBcSX;#:u+7;V%T9H~xMMD +pvrpG+2M9K6b6)Ʋ!9FDJ(?NEv:اczR_ƶ*s",.A]E_;^h`.;ǒ՞n.L`߃4TͣJ-|L_)eA0P48չaPž? +' DoONBl5 1z L9ܲB!
_Vvŀ\Y +ڗv½,POк +jTUVmk=woyϝױ +YI}wf:+G2D@Q*#-(jՂ#q2 +Iw@C7bj>FYF +&jG$6Kl˳74Ӥ!WgF-[>[uWO]OذG
ۃ
kٲ(tы7TgS~4&QծEHˎ4 g$/RV+n#H@?ј̸<Lid@k)KQNT
bWZEdLS'1_~ +=qxÍ#M#(^DDvJ>3_Cz(G_#3;&$];vz%կINOM +bm@%O˯U#0BW\OJ3*ٳƈ<lϢ~\=ո.1T*bwMW ɘP3uf
}ZMSmFO?l/OCsJ)0U2_fµ~KH*̦/RD}jvDZL5_ۋja`t2幷 +3[
dO+sܪ%q +e:=4#'Zʲ:HF^_KY~'nLWA8,bV9 +9} +endstream +endobj +781 0 obj << +/Type /Page +/Contents 782 0 R +/Resources 780 0 R +/MediaBox [0 0 612 792] +/Parent 784 0 R +>> endobj +783 0 obj << +/D [781 0 R /XYZ 89.933 702.524 null] +>> endobj +242 0 obj << +/D [781 0 R /XYZ 89.933 678.614 null] +>> endobj +246 0 obj << +/D [781 0 R /XYZ 89.933 331.97 null] +>> endobj +780 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F26 489 0 R /F14 521 0 R /F24 416 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +787 0 obj << +/Length 2775 +/Filter /FlateDecode +>> +stream +xڵY[~ϯdQT֪($ )`> +l@O',\x:O]0?H|?5h|0?u7uѓk&'A/J$b,]zZy]5[(E%tX}Y[8ӹMY]tѷVX/$ā7=Hj
;,Mv/dB3}rP
)ʬ2z2dD3-0E◵48t2<nYRR]jg7
:NwN8#O bF%*ڭI,$-;zfB-
9a"|?TV*"qUE_qGlqx'}n<7@P,`/̽1ȃFG,-ۏIV<7n |~ۼmZDPp}kw4{I]wyQ˕ ?fZ$i + +x%X*@3rd&
+ ⶲAA~_xhoA;?H[NƃkC+L()xEپf4\0"q&+blyoqr@*rBrVamaF_;.n^ /!*ZS8;-TL:Q=+GB|U\Y.Xɔ/1E̝%&j;$8n#\>JNtʃ-տA0bd~iR,WŒ7-0Yviƞhy|(bƜ)%+Z$yu}c"ˋder#E=4JI£CzXNA"ĥ@bI&bRTqVsqcF,FONqe|q`ng(<LS4F>0q (12ϫ3<?pvKQd6J5}d/
0Ay21#*=]6%IX魕1k9S{n= )$Aiy1 sY^D)0<6]L.eR<#,ChLbl N0DdƌEsX77U@=o$ojzp3ѝ9^nw=_,uĦz+?v `*i|#ʾ>ft~ݛ,Pk(y|Ӿ,Wu\<`Gyz]n>!*Ka1r.BM*sD2Dxg\X)#M:=R2dl86cxvpG+R'\Ƙivo[`NCYй7NiǍiqÙ?%;Z}-MٜZ]Z<C?ȧYi510@q۔2;z <2Ys1a`EuA*U:Ԫ*y/8Qi*%~.ٕlBW['ʔnvV@+ÀWYR]ɤf&p'|-#Ljp7+U%Յ[0d25$i3eRp`ζſ-02%l-:1{ET$D㋱TcZtjȺuvٽ +]%Ȟ- pt!KKW5èUS
WARn<7
qߒikus,RKj?\4Ϣ9Ʊlc +WP<e5nc.#'ϡ Ӵ,uaàQŵŹm^ndIM?@b .)+A0N[/>7Hm.]K;_t`C#Vĵ{lX=^fCӵ<ugjc9pP]+q)Ͼ֯<"FPƀ|R6o_i. +endstream +endobj +786 0 obj << +/Type /Page +/Contents 787 0 R +/Resources 785 0 R +/MediaBox [0 0 612 792] +/Parent 784 0 R +>> endobj +788 0 obj << +/D [786 0 R /XYZ 126.795 702.524 null] +>> endobj +250 0 obj << +/D [786 0 R /XYZ 126.795 501.279 null] +>> endobj +785 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F28 504 0 R /F24 416 0 R /F14 521 0 R /F26 489 0 R /F23 415 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +791 0 obj << +/Length 2148 +/Filter /FlateDecode +>> +stream +xڥX[o~_a<D֪ + ك.hZt,-6dT.wCJrd'Chfǡ?~8[Uav*a$"CY;`YMQuqL9)0UDz9=MUa0(4hQm֛$*z6qRz8WF44Ƀۃmi$NӲH;ᭁs/C U9%Qhb!4
+L P5~@?yqGaY
cadУoa%5.
S6'tjhp&%Zp}Eӓ4+'Piă\4L~ uN5;1*6ŐQw.$.귭8r#k8x0|+[`OjnH#ʀ7
l~0*l~Y:Li^zn;p,/#8AFs`OIO8nI(y'^Yoz4m[>;Aݭ<]-&7 EIq=@pޝ*(zu--\,aYd$`+C~FXRpiȦӾ15=|X^r$_%6;9ϝZkEi`IbWvl;<jAuEKz꼁{mܸs(8?-ҼZ( КE1zی>A[6
4639O~ZŮӊ(c.[Jg㈲5k6p;Yi0Uv8 +8-`Jә+$v+D>9~ĭ +PY0%쌤|V4ݷe +@!$Y&-BC^B9\7$Ɗ;ҫǭ74L-4>Nlo +zZán!Y2J飖6d>QE:xRX +ӧx;ɱ(W%|!O-ɳ,2=oӟ#oķ/&*h«_9ى7bw`֨}[7|`/_ӏ% +˫>=3'~X1A3<5{B(z0h}<Frc3y,'?~9/ˏWo=}km6*?foO&懿~/ɖ{ +endstream +endobj +790 0 obj << +/Type /Page +/Contents 791 0 R +/Resources 789 0 R +/MediaBox [0 0 612 792] +/Parent 784 0 R +>> endobj +792 0 obj << +/D [790 0 R /XYZ 89.933 702.524 null] +>> endobj +789 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F24 416 0 R /F23 415 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +795 0 obj << +/Length 1557 +/Filter /FlateDecode +>> +stream +xڕWێ6}W(ZR +ii#~/!Q.RPJO27*H0PW/%')mݓ: +VfQ|&\E~<@Iq3iRz^.Vs%䥉ؘZ'M-#A
a(b|KAwH3H1?5hdj +,C7 +P;QT +VڈAPu,I8Cjn+c[PC{4W-5dq}+/v4hAzeӋG9i2wڇ?%@I9"{l\H<c
%\Kaޠj>Ju4iO 8:AI6 +ļxyCdVA^ %4Z۾ә"CD/vj"i;&gM%7fYbe;Ih-p`O,7DS:T< *Md^"RH}/=Pp}0{ӭ[i4ѕ7gYuPI5<HkZǯh$j?mW]ôfd*!߹O0C;Ug4p:Q >G2IOy^c iCj48]K
_@ }ݝuJ +`sӫSm|k<N<ח4'PК?[͏ş.X+;\!F
BuD&+)"Cy8W,'
ȕ$yJx>83>@!n{^(?j:9b觭2yJƓ
CW]Gi)e:h;b-yS'+3z,gxsmNՈJ)R)
hm(Z +7/ ɦ|%֬Q Q5#1$Ʌʃ Hy]u֟=C55pG&;-Zﯵ?&Xd{3VrP̥QZԉѰqS ۚ_ +Q轑dW+t0+?(ٖfvِ5=<qc/tW{8Ey|u + :B7&Ã>ݴIHfAˊH8CDk9!Tn#Ɂ{1(@*yFYjZZpF _k@y%e|7*R5֓yw1'9JiNNc@B4uU&+xλՍK +endstream +endobj +794 0 obj << +/Type /Page +/Contents 795 0 R +/Resources 793 0 R +/MediaBox [0 0 612 792] +/Parent 784 0 R +>> endobj +796 0 obj << +/D [794 0 R /XYZ 126.795 702.524 null] +>> endobj +793 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F28 504 0 R /F24 416 0 R /F23 415 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +799 0 obj << +/Length 1088 +/Filter /FlateDecode +>> +stream +xڵW]6}_Um"%t%_}٭ԪK^`c#clCm"O~6f-GdC뺣]<6usfj=}y9SiZ Q-}f=Z5˧j<]y +6j_CR==C4xɓ+A7Lf7X?D +|`z`1NpRL`F!=4. 6f +u"-1{ֱLrh;ǭTPj +5"Ra,1j8',DzK2D&j&;#DZe~oO93ĴKhGJ-LLx~1Qn9C960>4DSQlZWmWNy9!~Gŭ{-?5ɲhFm5B4>[L=Mn}sݶM+);LԱ@@A֒Kꪣ(VF{_T_=#;~-.(a2? +endstream +endobj +798 0 obj << +/Type /Page +/Contents 799 0 R +/Resources 797 0 R +/MediaBox [0 0 612 792] +/Parent 784 0 R +>> endobj +800 0 obj << +/D [798 0 R /XYZ 89.933 702.524 null] +>> endobj +797 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +803 0 obj << +/Length 1289 +/Filter /FlateDecode +>> +stream +xڝWKo6W81F~Ω@n{hi$H{GGo+45w?.m>[^7뺣?}YM7Kw</V⎻v䗄y0/ˉXNt +َ(dʄ/;gڌ櫝rׅ?ʇ {cIlNc{-{f +|tv֔|XOJ3=RD5aA
\på(\OV<T1Z-Y{?+:*f=Dcd#{Z#&W@kX%Eü#Ad:f%33"U[Pv/UuF"Ly<T +ao ǵ#@1n siDCsˬ!k?U +:jHyV*͢[`(5į==/ǫa.:Ů GeB"Gk="f˽Κ7pl*!<8e;w W^QY=4 +@R[/\ǫ /rצ<ta Ks'13N$ +D>fzFQ"=S[ +R]bOupHMO(2敢Y(XYB3kPꦈRDGٙ})lXD`u;|c:Ӓ(MJ@샯bGз|'UtW#b8iR~0iI +*<N"E|k6Fջw{ +endstream +endobj +802 0 obj << +/Type /Page +/Contents 803 0 R +/Resources 801 0 R +/MediaBox [0 0 612 792] +/Parent 784 0 R +>> endobj +804 0 obj << +/D [802 0 R /XYZ 126.795 702.524 null] +>> endobj +801 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +807 0 obj << +/Length 1030 +/Filter /FlateDecode +>> +stream +xڍW_6OSXdÆ*m^ջS>pK9YX!{$d8x7_w?%"X̣̼T{̓0>L(L_8Ns1gI][!Hԛ{^x4 N}yE78;М?W8z0
X0X$F +N@'s>OIі4~?:+QWS/#w4HmJmő<=4>kDA#7HN1lG ;sE5Ӳ:XGK~yi?(o@3(0PHctN0+KHAh\8oH1'?Z<=Q̕HM^Llٱ@G4%3G5G'mڒC^9"(!sp@R%(wݰWom$AuS@#?mC<[iXxCүFW]Çk"LX䛒R?a+DB&hGkz:nkɃ6n" SHAD7SE!nMڐD=%DZ9@`["ܦm~/zwedžpjJp[ty@6^ "%3+;Ar$ޙdTBaլRjbM +NFj*WDH͠+pp FSC>jMmn;l9@5;JmА½lF +N,#kƝk}soh$֓Z!j +endstream +endobj +806 0 obj << +/Type /Page +/Contents 807 0 R +/Resources 805 0 R +/MediaBox [0 0 612 792] +/Parent 809 0 R +>> endobj +808 0 obj << +/D [806 0 R /XYZ 89.933 702.524 null] +>> endobj +805 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +812 0 obj << +/Length 2122 +/Filter /FlateDecode +>> +stream +xڽXm۸_a Īw_Q6pr@iDCM)^^E"Ù?ܿÇH,:n!,"@,3p" +(Y#f(Kux٩DM.ed +YE:Ȓl I,͛774JI,l#TInܱhX$4\lQN=NrQ47>8ߚm%ivenԅǷNRG~v:;I-R;^fw%ݸ,~jZzmVnk|R݃kgmT]yWtsR:W_Sōezddkt`'ӳrvo9(~:/7 +ޜ8&d;?ϔ[f-kUu1],cF,
ͭCǔF#$Xa|mLzvܙX竖GH&E§]6AoR%~Ռ8HcϭA=V[vsΉb6A&I++qF!ԣlrdRhuj֟'H#^!KKDVZ]%B$4 +;($2_^:0GJ1*n]ityCG{xGK$JMa3 ,lvF # hsC9S|sDpa0PKU*n<" 0݃G]BF<Wv8kMychMÈHJa#q-S&V" 67?0ڱۚAݩj(bS+S
u! + on883*#=D>"+5`cO,Dăj-e`-M[)
[P0?bh?ރ'K"ɟdDOh{MՕ4@Twຜ8q&R:.p]*UkX!wz~¨Nd˽`\/G&U U,Ձsd/ͳer+檉wț79甏^H-m-JJYg:VkF5Zܻ +b_/_d5@~RU;M.չ+\ץsj/GړꬻWWEDR5[չyGAj:<zg[o^`7fOF
~e/G;?]gQa{'!ܛW{7_>y T҄.wpk^1^ s(FfMɾFLt:2[,;/OZa. ҧDnY2ʶ'l/ 3LZ$`~"lTԯ I~e6ߤ5Z
ӻG/b +Iޭn?<]⫓g'N__]R +endstream +endobj +811 0 obj << +/Type /Page +/Contents 812 0 R +/Resources 810 0 R +/MediaBox [0 0 612 792] +/Parent 809 0 R +>> endobj +813 0 obj << +/D [811 0 R /XYZ 126.795 702.524 null] +>> endobj +810 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F28 504 0 R /F23 415 0 R /F14 521 0 R /F26 489 0 R /F24 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +816 0 obj << +/Length 1193 +/Filter /FlateDecode +>> +stream +xڝVn6}߯0,"bb[hXAݧ@iHȒW:}E̙!Z%'+n2''L_ΖĻe$r7P&08N&sX:d"20|wGJ>0JJ-G!K W,boͤɘ]Q+8>zZo5uEaڗ^JNA=mM<3l=c5ٸM^Y1YKEv>aPg+SOx=jc>[7Ѷ}͌3WfaˤoNГ?H$WQ:+rT˘`v?vGenC0nV;g {휧Ohsqx +`[3´HŋWkR.ŕI[^Zqɾ6CJZѝJ2VXwMzQJ% +!`C<J@)Sjf#'M1@0@YLF2w5-D^wPیg1j댊mggMJzs3z-~'#xGE +*^Ds0ZCɪt[xu|80ʟO +qlǝQ3awu9kzmn1ۑn;r+Lt jS'& +endstream +endobj +815 0 obj << +/Type /Page +/Contents 816 0 R +/Resources 814 0 R +/MediaBox [0 0 612 792] +/Parent 809 0 R +>> endobj +817 0 obj << +/D [815 0 R /XYZ 89.933 702.524 null] +>> endobj +814 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F28 504 0 R /F23 415 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +820 0 obj << +/Length 1583 +/Filter /FlateDecode +>> +stream +xڝX[o6~0jH%b-a˚@ibR!)Kt{Ewoo~ܛA<_MH{<$~B&g'Ng_ +LbA2bO\:(37 |!!mD^.fnD#y72_s+Usc7UƊ°b2CS+E.o֨R=4ȟF;ycVCK<\)T%sWJ0zmcX0Έ̅lqF6bK;%ۡSyJjzs{
?jnRȹ]lV5o ˋ +-h>d@Amʱɗ4qzq<4Nm]{iKtq%j^/>A*Na^
Kp$+ͪ:.1g|t n^S{pQWx>{ +GAP#SoN +'2L#@,@áf-o+!8ywN$<<j'GE!&o^#41AL?q +endstream +endobj +819 0 obj << +/Type /Page +/Contents 820 0 R +/Resources 818 0 R +/MediaBox [0 0 612 792] +/Parent 809 0 R +>> endobj +821 0 obj << +/D [819 0 R /XYZ 126.795 702.524 null] +>> endobj +818 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F28 504 0 R /F24 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +824 0 obj << +/Length 2199 +/Filter /FlateDecode +>> +stream +xڵXݏ۸_a"1+R>4ڠm^o)KZz{~!5$|\Dۭ +&*39_ի#.`MpY"pO'Eʤ,V1Jܳ$d0Y*KZTM$2;IUx^Ҙ4<۹SkpZoP4V^Z< 8RipJLwؗ"ڪpZFϕ9n!Ӊ<NX^O<IM<),tw]߮7ч-C5.(rzvO_7dv^,©(2[㙏<NIetԪ,XE^9&9h:lUӎ~2дxdYq(8K +wZQ)h]AE.H4P2fq9) OX~g@=2ҵ H:9Y/a]@C!abL6MiAjiFZƐ+ >M>2(a%Mc UIvFkw՛6t(X1!PWX9^Uu#^Yu :7NVEZiDTiNB(H*e^-y +1@&`ʱoZbpS%@#Y ѦhPhh'Pn\8[xRFJP2vh7]H7XAjeCКƿt:4t3zg{ED56`@Ȱ@lxbZ9#/DŽ]+q;m-'CA)浣
fA,C[0hծ.c;ռ*!@صh$4=HfG +hlnQǡeK)>錒
4mQ2>myRc{S}tꀁRD~O|=
dzS~a3<RAs +>V|8O +ꘕObJ$eE$"Ƞ[_ъ}[\ +^JFM[MǠYls:ŵ2EɈ70zQH4àЇb)\FE7ԣ^$ϥ?~89Ѻ,B_`rw揫 +endstream +endobj +823 0 obj << +/Type /Page +/Contents 824 0 R +/Resources 822 0 R +/MediaBox [0 0 612 792] +/Parent 809 0 R +>> endobj +825 0 obj << +/D [823 0 R /XYZ 89.933 702.524 null] +>> endobj +822 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F24 416 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +828 0 obj << +/Length 575 +/Filter /FlateDecode +>> +stream +xڍT0W PmlCz[-Jm#9ɢIk
݆73dw! zYADK" + ^~, +d?t&db@b/9 d,kA1Q +endstream +endobj +827 0 obj << +/Type /Page +/Contents 828 0 R +/Resources 826 0 R +/MediaBox [0 0 612 792] +/Parent 809 0 R +>> endobj +829 0 obj << +/D [827 0 R /XYZ 126.795 702.524 null] +>> endobj +826 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F28 504 0 R /F23 415 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +832 0 obj << +/Length 1277 +/Filter /FlateDecode +>> +stream +xڽW[kF~ϯ0fo49pLK`hPZb$9Nw"K%@s"ffgf?O&(FKt106r9CJ4j3ϱ2/*fڤ6(EyYx]2aMјr`OMs`+o]JRDŽ`)q)>wp3v=.~+e=vqǷ6|e%lZ~ w':V!%EȭfKX[X(>`R`$ra)r"0HԘzA4PZBD,YJRQkȡI% qԷ&\}F1f6|vƙ6}n?"/:vP$;qB(gLx"q-]q̔3a|V<=Bp
+y*N;k0z ЛJebD82#5/؛to'dXG.Gjy'!UL6Z8Kę +U2ޚi\u57ZH,U{會 +EDpq0nXSI6E'#Ku;cns:AЎmtyې +HCx(2wme%hYk×NxIzjQtW^c=j^r +@IuoZCZ>| +<cg<>m%<k"|}$= j/iq̺or b>%o{9(H[GāS˩b|^&"̖ƛpU8K<yA +endstream +endobj +831 0 obj << +/Type /Page +/Contents 832 0 R +/Resources 830 0 R +/MediaBox [0 0 612 792] +/Parent 834 0 R +>> endobj +833 0 obj << +/D [831 0 R /XYZ 89.933 702.524 null] +>> endobj +254 0 obj << +/D [831 0 R /XYZ 89.933 678.614 null] +>> endobj +258 0 obj << +/D [831 0 R /XYZ 89.933 606.883 null] +>> endobj +262 0 obj << +/D [831 0 R /XYZ 89.933 261.346 null] +>> endobj +830 0 obj << +/Font << /F22 414 0 R /F27 490 0 R /F26 489 0 R /F24 416 0 R /F21 371 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +837 0 obj << +/Length 3229 +/Filter /FlateDecode +>> +stream +xڝZ[~2B7
ve'qdRIUeD-lvc 4;>}\ZxwZany(mB762Ra{?FH0N(Yw]n{{qP,8o
o[JCyr?60*-}=b&i;]V2I3~{$ั/@o̸3pKbƙF]Ȳ5RbN4C1e/ӭ +ZT6gixMMPTg9#ms'}+=;Ga%PPaaSuYvM=վU65w^y&Sg7$xjOd۔
\NSwy~꧶r-:Uxv-A@pHzb5y[jҖ$Q:|P\?)RIDfWw%&^t,B' >AzHrq©ظK_?[{,q<M^dX[<T$ M}-/wQy$vF +]Ze/@ +$:fsn~9az,:W#tGHA +]VzՉthW'#ɤwI&|*bn$jݗ؉}W8jpeDߢ瑲B̰a=+RQn%+R _$c$DA"$6jι#$Wt+̜uW:٨alz&sBML3WHq0N,yZĶG.wÕ{XX8LM{P:E% $KfQInȌ3.v
7"r}&_\y@E7RL[m`PAa<,[&*{Y(־F@ +@6 +mDa +P5['l|O9yXTrn_v4y!
Gc +:DTۺn|U&NRFhluBMZ1fL +e6=j@/;wmt@qB9_@57`wZP+C-0R!p,4y88.ܸcd +ql+rL'6" +$
983 &rofʭp`&7K]jJFP"GϪ/OUI0~E? uճK6=ldPB[5K$sQ5cf?}'N! +1$_92%PߡgF|!!JġBTkeI%z^ԝAͦe^fnF[(3{Jml;&\D|f
|}%o&%P?L8+f5GI/ׂbg/pF}Dly6 +ҷKö +<B^)eR"ϙ_yT( +endstream +endobj +836 0 obj << +/Type /Page +/Contents 837 0 R +/Resources 835 0 R +/MediaBox [0 0 612 792] +/Parent 834 0 R +>> endobj +838 0 obj << +/D [836 0 R /XYZ 126.795 702.524 null] +>> endobj +835 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F24 416 0 R /F28 504 0 R /F26 489 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +841 0 obj << +/Length 2978 +/Filter /FlateDecode +>> +stream +xڝYb{Eq2VDP\\p)+
W \Օ%WowH{YM_<~3/LgW7q|GY^3PY:ϋm߯tخ_;Xf" Ӵx]㜫#<LҒfcjq0a20́QImNӓ<MlNh2xݪs,8rA0e8
U`FmW2Բjy@ӠO7" uscafkw(xa +L*%JyPsCn2Z7?|{r3*2QV,c1JYSF0{k_vMWXIxYAO'$I_T" +^,#w;aNuJߵ̀c7~x*lm4l[G;VuV;/7ȷi
/{ÿ$/Xԏh;"6hںnQ,X }/QMϔv*4U-~ZJl7u +[Ip#O]b_ys^8KFwUcן{!ةܐx"9A_.R
d@`묌炽C?Ye2Z`!f4ۡ}xw, $\Ț%a6kI +4^JMܺF>yc:8'vܹg X훣eo/iY^hv|Nj1*PnV +{~W]bE9d6 cՀ{6jJ +6`$k[ey +h_T@5ydkS>,Jiv[$YђS5Cxj'#ۚ"t37@͡-*iݹz-8a.VǪ:;:51!W[٪I~'0_o.e +8FU91ХhlA}W$y'~$m^cPOc~"1&lq`[LM:[~ѧ?bJ!f
<K"Y+,CFa%mIat `>PꎒG+e" +={|MwyVg5mF>+@h
`{t)x +Ez~af&Fv8Ƣ#8 +p3XغgZ cyϯBEb,N%h~<\ze\!xkVReBT(@4>5Z^&~i率fkf\a&{Bax0~FDص +oyvhr$mgIԋdM%]4S
ar£4j)8]: W3]W u8HtAibio<VυLay`mkL<b~^|1k$:GJ3H_桾,9'' ez_\Lȫy>?i[iOC&qrYOItζ.sO%LcһH#:<O~Z~TZlKǞA3 r:34GV֥3Tg3|ٚ(a0IM~9tT_ͷ.Ѯ~R⊕|`MU6.6>b#pK$n| +U0Aͦ"<$V
dڧI +lhI tgпER2|EHd3A@J9A @KO%WZϾ
c~ARjF/a +endstream +endobj +840 0 obj << +/Type /Page +/Contents 841 0 R +/Resources 839 0 R +/MediaBox [0 0 612 792] +/Parent 834 0 R +>> endobj +842 0 obj << +/D [840 0 R /XYZ 89.933 702.524 null] +>> endobj +839 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F24 416 0 R /F28 504 0 R /F26 489 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +845 0 obj << +/Length 1221 +/Filter /FlateDecode +>> +stream +xڍVKo6WxOKkVٶh +4؛K˴#D
R$;9vC{曡~__tբuzPe/ʤJz[ Ij4 ɨB.WeYvJTK]cԥ,Wk}L@t*Jlm`&Y^$O_di%`Kь1P6CQYkŔϝJgIkY$ݱےMT",WJjTCaQ BTf +Qju"{H6uuf<<9I^V-HYRҸDi,ǻDMSF,thSY@V# *_a@£#j>k18\`0`:I6 +]"R!?p|$7'iv6` ]B31D6&RI]9cBTF`Vqd_oz&)ۡiL*_ݵS^:^TUpL&nC;`3v3 L9Й,E-1:b0y^Z(;L.M4G}L"SĔ'ڍk`ۮ#UXaXG:1ZG(3>.~/LLX" +Ds)ՙ,SwDioUjsROmt]=t +ϰB{θ'\4b9^Fw3FK=ss.Ec7a]bO\DA;zH&m6jͿQ اE@euYxl:{Mǯvmjoϗxk;J}Vv"@H=uࢪ&F`ӝmM|3w.k.5\\Qé1qc@8lOtX${6MAss
7$2aEљ:A{7W>k(Q_s7x1^ifƏl,n?.OfN|czȻc}^!7 +endstream +endobj +844 0 obj << +/Type /Page +/Contents 845 0 R +/Resources 843 0 R +/MediaBox [0 0 612 792] +/Parent 834 0 R +>> endobj +846 0 obj << +/D [844 0 R /XYZ 126.795 702.524 null] +>> endobj +843 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F24 416 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +850 0 obj << +/Length 2701 +/Filter /FlateDecode +>> +stream +xڭYr8dPUn9dU&fj$$!Yo%ʴvR5 F_7WGxޙQgYکEogx6zVUm6T;vdnA=N]#넖Lf{t}9&t<Q+Ub6]vabmf0NBiiqM^μj2[oѲ00ێQtvE<; T}8/Cv>%x%%I&`;UN낉YzѤ6M]n&[խR\/:p~'༵L}@N!F +TO~dݠ]jRh*[ĺUApYO )jdq૮WZZ oeK8#P1KS%դ"Z~
hy3-3-!ri`!\@P522ֆIDv{AS,*bJCy] + +N(Ê(p +=M\f#*BQtY]ќ WA]?yV=
qlꖢMgzέ8h(@.(OGR
P̠=D`zHs@ggZN_fizt\~r\QmҕbXQ.<ɺU_-Ppoۺ.3ZX%qYnyuĨq56-UTvы`Z,2Z؈kϡ- + WZofI +J
6Dbɻ{~'l|fI͓P_x#^mko-ֽNC +`|Kԭ +_y
'}C6қۊx/:RsD1v^*s.&^H{:srmB/Yn(㜺fhsLcA +.TCIZcݘ=v\us{"}6Q=~|\Gj\nogtSCssax-*q9~Q5V'r-no97 ĉ(%)]-? +endstream +endobj +849 0 obj << +/Type /Page +/Contents 850 0 R +/Resources 848 0 R +/MediaBox [0 0 612 792] +/Parent 834 0 R +/Annots [ 847 0 R ] +>> endobj +847 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[0 1 1] +/Rect [184.855 353.611 254.842 364.625] +/Subtype/Link/A<</Type/Action/S/URI/URI(comp.text.tex)>> +>> endobj +851 0 obj << +/D [849 0 R /XYZ 89.933 702.524 null] +>> endobj +266 0 obj << +/D [849 0 R /XYZ 89.933 678.614 null] +>> endobj +270 0 obj << +/D [849 0 R /XYZ 89.933 627.198 null] +>> endobj +848 0 obj << +/Font << /F22 414 0 R /F29 557 0 R /F27 490 0 R /F26 489 0 R /F24 416 0 R /F21 371 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +854 0 obj << +/Length 2864 +/Filter /FlateDecode +>> +stream +xڍYYܸ~ fd#^ĻE ;9aKizR/%y
SVR*V}՛o +<o7qEQq|A3L(LTvN\(?a#HY*vi;Uafֈb,R*X~|=TR_Z\`<~YX2
Wܚv(ԣa+,{zkAwe?
O,:/vsR)qXe9BsJC'֎L_@xăO|Q[Ɓ5r"Y}ƫD_yU:Ng.5QXi8'krMC"\~㡟'NcNk[=aW'}Y4xRefX-˸,{맶&N9Ze0Mce"3rot;|FskOo\.G<wwA_ĺyk<n(aX\!(&iXy +x$OYqnY$Ap +ICDտz${Ob435u+wn0ѓw'ItBElaJsI3f +}u)AyҜXz$h92O1?ՙ`
$JnJ
+;UXf?؎P}^C̝X2xϹ//Qtc'rFp|!RzO#R?z`{9/:<ШGg2Yɴjrfm +yU5<ŊGh63(VTGW0CNv=;BkX[6}hB +VZt3m +j[B%/9BUlz8QE?%?Yq^/@f`{!p"]x +lS-%FQX_w^rp^P?LX"/XWW$;?2<_=л4[|P!(;QPB</}E9]EO\Íepf;[# +\ EiX!H +Xum>7+oLS 4˃SE^r8+Yխ;Ck;# 8ZކVbovy=S;?R-}LfvoW;*Mbclry +e E klM`V#b1f +<͒! ~T:/㓣%rNqi^nqGk?ap03Ö%Օ_ͤ@1^xm]CZajOcmT5m& +t2W^٘ +endstream +endobj +853 0 obj << +/Type /Page +/Contents 854 0 R +/Resources 852 0 R +/MediaBox [0 0 612 792] +/Parent 834 0 R +>> endobj +855 0 obj << +/D [853 0 R /XYZ 126.795 702.524 null] +>> endobj +274 0 obj << +/D [853 0 R /XYZ 126.795 606.939 null] +>> endobj +278 0 obj << +/D [853 0 R /XYZ 126.795 477.369 null] +>> endobj +282 0 obj << +/D [853 0 R /XYZ 126.795 296.104 null] +>> endobj +852 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F30 563 0 R /F27 490 0 R /F26 489 0 R /F24 416 0 R /F31 856 0 R /F14 521 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +859 0 obj << +/Length 2437 +/Filter /FlateDecode +>> +stream +xڵY[~P+}(l@, +[tmtH`Q]4
7hcq/rrsE2ò,.V̒,xҙF?Ψb9GTnh$8葚?pi8*<nxxM{!1l0h[Ͱsg|n@SCuޢJg +y7-;;4EJt=F۽{p>fi3]Zakut˜#/QGb`/V/`1p&Z|hkZӱcL +й8K}{x̜`Kؙ +6V +ء7͆Bu3,4U~ aErrIEHEUwk-w]ˌ +|k:lg;1㈠J&t4?;!xEY{Cp
zr}$BϳCf\Wr_ +>AUֽ0Q6(L&^%R<IZVKĩvt@ + #R$b?: +lLפdJD;~@$&=5m7jbpaQ"
l%AoH0}Xk2)0$*@隩!CACg,Kx}L)?4$^wHBݱ7_PuOs J|LP3ns5+M6#8<E?"f Pl +%+f^y<O;R˓^1y=I X߷蝏?(8B~)N|#^AUܿ?N_HxqL-ӏɏzd^</JoeE +/܊_vO?mk;iY^/H F|lDw$c:芖ȟnҳpEqp
f[",y,+!6<ۉ5M5^}knȢ1 +endstream +endobj +858 0 obj << +/Type /Page +/Contents 859 0 R +/Resources 857 0 R +/MediaBox [0 0 612 792] +/Parent 861 0 R +>> endobj +860 0 obj << +/D [858 0 R /XYZ 89.933 702.524 null] +>> endobj +286 0 obj << +/D [858 0 R /XYZ 89.933 439.566 null] +>> endobj +290 0 obj << +/D [858 0 R /XYZ 89.933 367.282 null] +>> endobj +857 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F14 521 0 R /F24 416 0 R /F28 504 0 R /F26 489 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +864 0 obj << +/Length 2123 +/Filter /FlateDecode +>> +stream +xڭX[~_1(0XX.4MQ`Mt +4J˴,#sly'RQ||ۏUnBsӡQiܥQZ?i㟀3@qr0NreוwDŎĨ,
?(.cgdGJht\9a2`31"<a8əRzJdoxt/YsN KseSw|hF*(uiVy +8 Kpp]gw3,y\}Ӌ?;u +ivϧ鞲7
g5{ +rnw WJf&Nj")՝4x`}*՜$^2U~lax^,*w8M!wϺ1?ʶJXd"PTM2κӶ'{ԎG\b4v )mdD g
ucR',h6fS1S/94p*@^`:+ 8n8tD(/2FQ;Dc/Oo-w{2<\\;a-p婫l'LE@TV3jBB~8J1 g%RQI?IdWQys{|{/K +6K +m,r
99͛pBg\p +NSH@M9{q~^W
@%I:XhKH.,r0ٗt>XJ(QdTT48B#
.|k,U{b2u? + Laa!o?r] +)d9I#Ӯ/v>u*sNgk늲"0vPR\<$`²Ȍl8Fq8P~]HQ`V5`'0Qy@މnrNp( + p^md<P=/C#4ScJˆ + +B|20ҚN놨lyiSB +ڄ +xofue_}:{2V8ʆ7N 4FR +B7:LFPx`ګz%):A-,]?NJ +Ϗђ]eU2RjM]ʢ-}H6ht/&X̨vVA~nʦSb}Y7D%Q6B?*(ja9@RK1 +K#U/*y>)NHT">?bATÚ `-O/s=/p4 J%q~e[h˖'cmxΞu{Yta|'3fw^M0Y.5a +endstream +endobj +863 0 obj << +/Type /Page +/Contents 864 0 R +/Resources 862 0 R +/MediaBox [0 0 612 792] +/Parent 861 0 R +>> endobj +865 0 obj << +/D [863 0 R /XYZ 126.795 702.524 null] +>> endobj +862 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F30 563 0 R /F28 504 0 R /F24 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +868 0 obj << +/Length 2057 +/Filter /FlateDecode +>> +stream +xXmb}%ݗ6wmn#wgzM'JRIG7o즊<o7%Jq%IrsI((7
mZn &'ɪQ71+*N*$57Rj7]t{Ѭ,*uqeH@kDmmmwTc28$Z8HFt]DUR?Z/Mu۩u(>Oɋ}ڊx4O<M櫍y 1c +X|+Q)Ty<D.K[nj3wC27_#2$Jwm&/H%$7,{}Thn"6=2oaL;%6ڶ^SXC29nc'+:xu)0Zca;Mt%`WZ_h&Qҷ|c!u" +wIeUT]In#z~Va'z0=wCFV;e뾥xK<[7ry&txؾ=iHENH#yhWy{"eL4ljv2D,;n-SX*H*?5,XqTA:'`3OP
1+(ҢAѰ'yFdӝ:\%r7.ъe0tӄqw +ۚ)HjL"(>>Րj:<7;i-<2@ +:p5}q%Wzukc
dhn0ԩxpvǣ`78Rr[+i/28BǛG0#LGE\&߰r3qi3{LzړҜ@tX$Yj6ʲݡ,m6oiZ;̖RJ4e3D]e`wUq48y+WI:W5w1IU|Ld,Wr垝[!ѻԶ5?X%L\^XRaⴧ/
hB+n8ƥӐZ,5(;iGw H0YNy
hF2CႠ0a#O[J' lpz#˟O:CZ-dkb1$D輥P㹗!{'aףwɆpU<%}9 +~8mϜf6 ^[ +^%K7@
ԟ^erd.BE3W7Tg;2uȃ(RO6@h'&(KIVV d$ +/xiUYb{ +DTFF7pp!?KpZ8gZv9xˏЪHHӏQ-DRM9`͋<=v?OnzK-?FfI~&2[F~,!˕iٓ݊>@_NuOzgfOfxec4R3"a!BPC;^}!|OC<NI^Kr4D+?8-unHU?ӼŔPRe>b얹862;i?Y;ٱc"~jNOXc& #UX=Oь~@=3Z +endstream +endobj +867 0 obj << +/Type /Page +/Contents 868 0 R +/Resources 866 0 R +/MediaBox [0 0 612 792] +/Parent 861 0 R +>> endobj +869 0 obj << +/D [867 0 R /XYZ 89.933 702.524 null] +>> endobj +294 0 obj << +/D [867 0 R /XYZ 89.933 537.145 null] +>> endobj +298 0 obj << +/D [867 0 R /XYZ 89.933 164.597 null] +>> endobj +866 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F24 416 0 R /F28 504 0 R /F26 489 0 R /F14 521 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +872 0 obj << +/Length 1181 +/Filter /FlateDecode +>> +stream +x}Vˎ6W:D..Lы[fQBX +$y_Rd<Iv%(yHM#2-7&IKQ5ŦK$fm~x',<&i^lbI*UU}D'DQ:O/H\OٯrQ':]V'-ȋ;u:RSi"DNȰ^oȽ9F($oa[瑱^x=h:?~BF!ﲝ{C*$
Bɻ$MQR1UǕ +10;[r +Z^pafxIڄQ$'ÃT{NV(nu#uA.7u"Z|ԈZ*ɲЃr$UL+eQ/s<@qEݮex_EaII$ e*b(m)LNhiqc~e)7Q "p<,#߁P@S[ܠ9Rr٭>vyfr(Lr<MB10>~]#KXz᧣KJ{5i)re9KNp&#@0)3q57Ͻ9KVBԚ^"+P +U}TTQ\kyDh:|<jϤc4#ع6 +endstream +endobj +871 0 obj << +/Type /Page +/Contents 872 0 R +/Resources 870 0 R +/MediaBox [0 0 612 792] +/Parent 861 0 R +>> endobj +873 0 obj << +/D [871 0 R /XYZ 126.795 702.524 null] +>> endobj +870 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F30 563 0 R /F24 416 0 R /F14 521 0 R /F26 489 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +876 0 obj << +/Length 2888 +/Filter /FlateDecode +>> +stream +xڽYYܸ~7,Rԕ8}dX#QKS*j`y,u|U˟2ߤMB?Q0R6L"](wԇݿ T723bw+DynwRz47߂(x[ew{ߚjw z;tE+i+LK)|z'#ŕ|Ҹ3fHASd%X>.xSހ8,bG;lCHPoܒWܡw$V&JA2 +MU5;zT ^yiUSтRwEkwp9OsљM +gH"|gk&BE_C,^ +^V[M|y/(L}a@`qTie0GxlQ^ V||$ ?b'_Sg
A&a cϙb<A/@wtv=qV7bn{V~b_+;xO]S+P8V/pH`UŚGSU70/<9aLQDM +6ZޘW`nYzdvpzޅh[JKVsfk>Dzyo$3G|d
?[ZQ4D +y=AwulH TXQDW|炣Iߺ# ~dLPMaDff\nI]~ +X54S#3Z-2p+12c#~䔦vZ_[SH314ùbwQ뜮꽣Ǽ\ 0:S2M-ezڥ_5&T +{}nMӠV좳9g.G,c;mnS(bw/$/BFnϙ[|D䕍,iB}.g +4^-L$_WXwwH«5?V1,\6gcekXWX1 +G'С(nMm}?`sg85F +SCےU9os\o',q"_PAf`28=1Z3SȻ`:Z*}!\yJRbn2 +ZcA"1?G
"sdeW +/{Q
)/[#?I9lB1Es?}w4 L6amԓЗrY-{* +< J0:9aa:-ذsw0xxO!=snZD>oQ(I))H$L'tʼnz8,cK5'-%x{M.E7D:m:h0eG'{6W7$
Tk՚PѤtf"J|bb?O4p0 + +)"4m c:6,KX ξ4ouqrA[<H E-|O'=^ +endstream +endobj +875 0 obj << +/Type /Page +/Contents 876 0 R +/Resources 874 0 R +/MediaBox [0 0 612 792] +/Parent 861 0 R +>> endobj +877 0 obj << +/D [875 0 R /XYZ 89.933 702.524 null] +>> endobj +302 0 obj << +/D [875 0 R /XYZ 89.933 678.614 null] +>> endobj +306 0 obj << +/D [875 0 R /XYZ 89.933 627.772 null] +>> endobj +310 0 obj << +/D [875 0 R /XYZ 89.933 511.297 null] +>> endobj +874 0 obj << +/Font << /F22 414 0 R /F27 490 0 R /F26 489 0 R /F24 416 0 R /F21 371 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +880 0 obj << +/Length 2652 +/Filter /FlateDecode +>> +stream +xڥk +p2扢i\mQ E6J-$:|g^šg^Htu](UY0UZ}%ȣN#b&uή7ƘacUac2'z':8k4:ʂ !aPBCk'˳6ܖe=R7Y;:B%Or5}2wa +iaa֪HR~Tm +ZiTP)0(FK'7@Pײ(XpVI_xGxnDX)y/qe- e_xPw#u4G*5g:|z@<.k1䀒0؍. +1hb{S;$rM'Zv©đܨ,.D\Ĩ0{G0iA24>d/K>5S:d2mb@@31e +l# +Q_mJH\ j$*^S9\g06|W~k8gyzQob7bxjFMbYh$ZX*c<^@;QI,E.
/& +\yTS9xmXh2\Š3B /iA] V=ه%ZCG-*8a +IxꨨT\P+eCg|{TGg}Ł'&
R/=,4HfWID:Pŧ\jOc
Ga Ŧ_0iВ=gNG<X</`KqrG'r₪-èS͒@+\L*0)%8$(;Ml8G(YJR`^<#}7e?);R4M4rdxTPwK7m4(ԳVyW`W⛏7 pW2:en6pU|DU10jW?ëPIV ?d`-s[߾&.!Tq}=2$Cm֡w^`xPťzC}X빃 xM +R+p/ +"P#7AvI|g1w81L*C~Bf +nqAy>@ְ+@G%~('|sp'y#Ee1!+>ۡ<o&=a#n{jC9{c^O+ +endstream +endobj +879 0 obj << +/Type /Page +/Contents 880 0 R +/Resources 878 0 R +/MediaBox [0 0 612 792] +/Parent 861 0 R +>> endobj +881 0 obj << +/D [879 0 R /XYZ 126.795 702.524 null] +>> endobj +314 0 obj << +/D [879 0 R /XYZ 126.795 571.073 null] +>> endobj +878 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F24 416 0 R /F11 763 0 R /F14 521 0 R /F26 489 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +888 0 obj << +/Length 1735 +/Filter /FlateDecode +>> +stream +xڵXKo60P,*1#=5f],C@@ȒARN 3ʖ]b{1pQ4BeQ:%+x%1Գ?^qg]u2 +\];#DhŜNn}g&}2%8b}cBRO|`8ڪ9*F7 h+.^i^y<}nTG[eWʂ.'bR +*CqM1~e\C+ybgnk49p)Dc +endstream +endobj +887 0 obj << +/Type /Page +/Contents 888 0 R +/Resources 886 0 R +/MediaBox [0 0 612 792] +/Parent 893 0 R +/Annots [ 882 0 R 883 0 R 884 0 R 885 0 R ] +>> endobj +882 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[0 1 1] +/Rect [156.589 556.572 221.346 568.527] +/Subtype/Link/A<</Type/Action/S/URI/URI(ftp.shsu.edu)>> +>> endobj +883 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[0 1 1] +/Rect [225.61 556.572 290.367 568.527] +/Subtype/Link/A<</Type/Action/S/URI/URI(ftp.dante.de)>> +>> endobj +884 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[0 1 1] +/Rect [294.631 556.572 364.618 568.527] +/Subtype/Link/A<</Type/Action/S/URI/URI(ftp.tex.ac.uk)>> +>> endobj +885 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[0 1 1] +/Rect [88.936 545.613 222.684 556.018] +/Subtype/Link/A<</Type/Action/S/URI/URI(tex-archive/info/aro-bend)>> +>> endobj +889 0 obj << +/D [887 0 R /XYZ 89.933 702.524 null] +>> endobj +318 0 obj << +/D [887 0 R /XYZ 89.933 678.614 null] +>> endobj +322 0 obj << +/D [887 0 R /XYZ 89.933 631.79 null] +>> endobj +890 0 obj << +/D [887 0 R /XYZ 89.933 422.574 null] +>> endobj +891 0 obj << +/D [887 0 R /XYZ 89.933 183.471 null] +>> endobj +892 0 obj << +/D [887 0 R /XYZ 89.933 163.601 null] +>> endobj +886 0 obj << +/Font << /F22 414 0 R /F27 490 0 R /F26 489 0 R /F21 371 0 R /F24 416 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +896 0 obj << +/Length 2779 +/Filter /FlateDecode +>> +stream +xYKܶWMܪb'J9'UVbfPcL]8J)2@~}y?$MVy<n$*)<桾9(?34I8Kn"W(~OpK4h]K*,f*f!b20bч8U56i]$TQ=Ea*,bc
*~?&e`}'z?tkxT;Qz8N;fWE4rޚ;UȄ2̹{#{8[R,rLi
ǞxbRF#[~S0ےD%6,2
R]Myt<]:ZG***ɓj
izy6I%ܨ=W?O#Ox{ӖX@"bI&eQh&QdL-*MxjhI4`/j!UgG]#m[F[ ̶Ec +qMΠjv2'oDInfD_d̊tR$,ҵJm9[{ѣY #5Os0i0G+oJp\GZJ^|{oV[ZH»7wR_Ko}# +8nK^2فb/ ;C0\i[B-Θ[AExgz1JW*qӅ2[}$3;B]âbEȢ;%A{<5/g.Ntį=KaFxCx^ +n:J|0y'&zl'+_x]NvvERJ]-Q' xTGʻcc8y!/"~Ґ4\`aHc*"QgF<FA6R!t_}{ +RUkMkP0Yf\z7zvyoΣ&LMqUPT4"#H͵^p~4[Ue$,;}ԕ뱑Q.kg +䚻O`Ì=qTPtܳ
wN iO\n>í꧓l0M +2N*mѬQE5.|"S!d7`_ +tZf9W@E!3h!"x~Q
L<?$Pd1Bcc (G'x4 'v?5zB$<|ǤaYdW0fåj;T(jA
G$i[u2*/Y/IkrKQ#^PL"̯k4ӛ"$MVI7ƥNAT%g04
PΧr۱'B'W^'qAfYY +tf
퇖$-yU`@ꡟGǜM^:d6_yEJʏ+/ +t6:κ8.Tcma08j;z! F-MLmR_&Ηyh/qr7 + GZ)(b!(5tTau0lkY,)Pu +endstream +endobj +895 0 obj << +/Type /Page +/Contents 896 0 R +/Resources 894 0 R +/MediaBox [0 0 612 792] +/Parent 893 0 R +>> endobj +897 0 obj << +/D [895 0 R /XYZ 126.795 702.524 null] +>> endobj +898 0 obj << +/D [895 0 R /XYZ 126.795 678.614 null] +>> endobj +899 0 obj << +/D [895 0 R /XYZ 126.795 644.741 null] +>> endobj +900 0 obj << +/D [895 0 R /XYZ 126.795 608.876 null] +>> endobj +901 0 obj << +/D [895 0 R /XYZ 126.795 588.452 null] +>> endobj +902 0 obj << +/D [895 0 R /XYZ 126.795 541.185 null] +>> endobj +326 0 obj << +/D [895 0 R /XYZ 126.795 343.925 null] +>> endobj +894 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F24 416 0 R /F28 504 0 R /F27 490 0 R /F14 521 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +905 0 obj << +/Length 2007 +/Filter /FlateDecode +>> +stream +xڕXo6_@`X>xYQRHp>ڇۇ;"KWJ)o\pH֦C3p7{r'Qܭ2 +JÄqWjKsuf6]BWm BD$l#j"e2Mx 6u]Ye +M}pe:YJHUG{D,݈[HK0]4lueaꮵv5,2hz a+ur4U=ZevwG;M煁1h +LZ )btת5iZU)G;\k +&G`1h, UR5ުV:=LB|y<,l +>d,FQffQ&^`m]Jy_=`ts/Nf'{pI-u24XulVOǻyx]_08#9GVnhL+[Cxq*`!{?l!:q5qKg|,{:vϿߞ^)zgo(bhzռ=c`Eaڠ4<Ln\]zv_$E7vd1uhV{Z;ب_,{Ͻ'As&\Ž26gyH8?T< Q;x5whKuz֖/K)^D
N<75e9010KgU+{(L3w3:?O@rBw4eЍ˗Ez* 36spmZOxöHYF={vvT/Z=)I +endstream +endobj +904 0 obj << +/Type /Page +/Contents 905 0 R +/Resources 903 0 R +/MediaBox [0 0 612 792] +/Parent 893 0 R +>> endobj +906 0 obj << +/D [904 0 R /XYZ 89.933 702.524 null] +>> endobj +903 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F24 416 0 R /F28 504 0 R /F11 763 0 R /F7 698 0 R /F10 907 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +910 0 obj << +/Length 1498 +/Filter /FlateDecode +>> +stream +xXY6~ϯ0P, +h@$̍0$:b{gHJdiDR~{zyFW96+*B)]mAo +ܲ +qZ}oEqס@]j4Lڶ
lhòok7O5@A{nL4K٬wzkd0IRio:WHmZ8THOs-6>N8}bkэ%:8rs]DSO) wO:;t?%vݧ{;uމ\OuNipЁGa;5=yld]m%+yD&%2:+
>mQ?ї>E[|/ȫVEeg)'j(zޭBQMH
b +XΰPd߽ϸ,fh'ӶŧcynfCq}f|fGسfM;j1_hmhtzkXzJe~#FӾã䢗\\yaI6 p.f\ }:Ru1H
۽rm_x>:\kcN-D4[(#CH-^+ ͦۥQBl;,^M_ ++jvCޑYl۫G7gB +endstream +endobj +909 0 obj << +/Type /Page +/Contents 910 0 R +/Resources 908 0 R +/MediaBox [0 0 612 792] +/Parent 893 0 R +>> endobj +911 0 obj << +/D [909 0 R /XYZ 126.795 702.524 null] +>> endobj +908 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F28 504 0 R /F24 416 0 R /F14 521 0 R /F27 490 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +914 0 obj << +/Length 1453 +/Filter /FlateDecode +>> +stream +xXKo6W,` +/+>$QC$@+D+֎ClI6I=|3r_p$b|90|;&{fMY=9+F`p)HYetLN$ΜG1b0AT/͠t{Czwf=XSJ0U=ɳѱb+.Zt)ߡ<!K +\a60;a.ݱE"ztнDa`W/Vt`Q0JOCF;+ȤwF/9ӪKYq92FdovTNv]]7yӂ2YwŒH08J?Ptn#!蜎p +H9'BɜnOfRO /rU}Wg/ػW'pΌ3Z;g\TCv%/:S_*WF$ +ٰHB2K%C
2FY@\A*g8ݟ+ᵮtE7uR_Fi1;" +{r>2S{wfmӘT$jcK\L2(2A'w`[X_zX8Xx_D&rٝE +ͭTqٺ.PެPk@}kE,)0,u?Y0nFP`#;ϧaQs8 +0#f +aW0$vNO_B&vFD{QaSmͦr +Uz퇑)/5R {+7g|Wp؟v&#kpB!}1U9^)(ۇA g +endstream +endobj +913 0 obj << +/Type /Page +/Contents 914 0 R +/Resources 912 0 R +/MediaBox [0 0 612 792] +/Parent 893 0 R +>> endobj +915 0 obj << +/D [913 0 R /XYZ 89.933 702.524 null] +>> endobj +912 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F28 504 0 R /F24 416 0 R /F14 521 0 R /F27 490 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +918 0 obj << +/Length 2007 +/Filter /FlateDecode +>> +stream +xڭXmoF_#cE.u.PҢCe*o,ie +\Agvf˷=Mmot,77]ǘGms<qSXcKXYzSQ`%s4#Z5Xb'ʱmQ*og^Ư7eza6x݃wooƞ@:f~ +9{`RG5:#TZ홎B 0d&ܨLpܾq7<߅8q嶌`NV0K U +$JF3Pˠ:<q+IrGj
9VaY<pLTJ1G[$Arۀ>40/D>zP-"dYa.D6gZ &"ˊN]eYJk + +gO~:#1# +@Ȍ{%QIk>ᛎ5g9uinHseJѹOdA;ɷ<lςyd%遬=; cDoc^[=xxb.,wzO퇾Toeƫs&`X\5оkaEʴ֑uMc=G%jC}rMclq,'=7fWK9gIZM}Ë}\9=̝ŇjU"ifV/!oJ%ɚc}u]}Ѽ6;db>3fȚkzqh|iCI(`!YŻF+{}aGZSgQ% ]ܐsqUn}E'd-/}4fjs^dK}sTN Ia%:laBP,nٻ蓈݊9]s'FB6Znz4@Dr=oN$wuݣs6mkᰇ2ƌpT#|Z:zUMdeq4s3RzG6Ҩ8:= +*2Pq +5?Zke-Pr 㙫'L~GkAƺ0-*$dY;Pa7SW7a +*C֒BYĉBAșT'^K7!9Pș(ØJ2Jx1V襐LX$"*g`䶶$ +endstream +endobj +917 0 obj << +/Type /Page +/Contents 918 0 R +/Resources 916 0 R +/MediaBox [0 0 612 792] +/Parent 893 0 R +>> endobj +919 0 obj << +/D [917 0 R /XYZ 126.795 702.524 null] +>> endobj +330 0 obj << +/D [917 0 R /XYZ 126.795 678.614 null] +>> endobj +334 0 obj << +/D [917 0 R /XYZ 126.795 627.772 null] +>> endobj +338 0 obj << +/D [917 0 R /XYZ 126.795 332.911 null] +>> endobj +916 0 obj << +/Font << /F22 414 0 R /F27 490 0 R /F26 489 0 R /F21 371 0 R /F24 416 0 R /F28 504 0 R /F31 856 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +927 0 obj << +/Length 2826 +/Filter /FlateDecode +>> +stream +xڕY[۸~ϯF7뒇vA[ EldKJ3`|ύQ$)\s}w]]eI\~wU7qWeUcu^m"RΨN3_i4(iOǣe_}UWJd\<n(Vil"v[QQ+tçdܾ^2>87VMupMV0~ЫML=YdIsO*#FsnUpLh>{=t=X4e?W5,/=*|߄=A6ej
%Mq3L~p+`#it2!1#!?ЭxޏfYKOu +-f,NI)PVqaHtjI#p^-J.Bn˲$N\_8;U +;O 5R@f8\,ٮx'朣OAML3R˺ߪAí3i34d]$۱kyؙd<P{r6(nޏ!Z}Rne0mI #,@1H!Ӟ(z[{r d3 ֑)(,VyGH7n6jFF]8ѳ$~Rl#["6`~dMMl~UU B+yf#(QIӱPӠH Oʹ-زUu`@8ARRP}{9y2}H
+*($nDWA+ +1Gv8;-hy^v6c + +tF[4A lM!_> +<\zpk_xf^d=i @6a?Ч +$l@Pz;bNT4G{<ꑒ&p2B 9D0l8`kRҙ-Z/{n'LFVB5O)6,?+Au"Q191zCC֍[0'~*h^pGܓS! " +g˹$( +G4M~Cw?JTq[ai!gdZCNԘ
$^whjUfp.P9> +endstream +endobj +926 0 obj << +/Type /Page +/Contents 927 0 R +/Resources 925 0 R +/MediaBox [0 0 612 792] +/Parent 929 0 R +/Annots [ 920 0 R 921 0 R 922 0 R 923 0 R 924 0 R ] +>> endobj +920 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[0 1 1] +/Rect [301.019 568.527 371.006 580.482] +/Subtype/Link/A<</Type/Action/S/URI/URI(comp.text.tex)>> +>> endobj +921 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[0 1 1] +/Rect [346.97 437.569 485.45 448.694] +/Subtype/Link/A<</Type/Action/S/URI/URI(CTAN:pub/tex/info/aro-bend)>> +>> endobj +922 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[0 1 1] +/Rect [158.149 413.658 228.136 424.783] +/Subtype/Link/A<</Type/Action/S/URI/URI(comp.text.tex)>> +>> endobj +923 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[0 1 1] +/Rect [305.125 413.658 396.034 424.783] +/Subtype/Link/A<</Type/Action/S/URI/URI(groups.google.com)>> +>> endobj +924 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[0 1 1] +/Rect [352.102 222.557 422.089 233.682] +/Subtype/Link/A<</Type/Action/S/URI/URI(comp.text.tex)>> +>> endobj +928 0 obj << +/D [926 0 R /XYZ 89.933 702.524 null] +>> endobj +342 0 obj << +/D [926 0 R /XYZ 89.933 678.614 null] +>> endobj +346 0 obj << +/D [926 0 R /XYZ 89.933 627.772 null] +>> endobj +350 0 obj << +/D [926 0 R /XYZ 89.933 202.4 null] +>> endobj +925 0 obj << +/Font << /F22 414 0 R /F27 490 0 R /F26 489 0 R /F21 371 0 R /F24 416 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +933 0 obj << +/Length 2685 +/Filter /FlateDecode +>> +stream +xڝYm_q@PX44imQWsW].7Rs~w}g}vWUi^ݮTY\eA+n˫;oɤg+?/ʿ^dY:=VzYE^s^~M
gyJc\jF"8)x*mtmo\TvH ^/0nknkJEwg0bW,3x/X.QIvZF7%mωښ4<Jצ)u{mˇ#wq +sUc5">KUZ.ˮzBYTdZC#5V<ɼ 1`
hai<kg9XA
wzZwt>T> Pھ.xEgwҎ[]HX+eiE*Dp!Q:.v\"}[%wMM;: +8,Ŗt2Ė*6f%m*>θhSR !}ZBU +X| 6fN W"E AKITe +.YeZv_$@,$^IwV#KyRWhf+
+Xc +}mK|5QX +uW*FAuҗxE7%HCwkS{>!wFv;`8Rlc"zWYs:H(r+S +ۧ{YK?~Kd<?*m1Á +O2m1Meo@w4)L'Δt[[DJ熸xǑ ~;l# +kgco)Z?$tIݜ?6so?bYN:>\@_;'ۯX +endstream +endobj +932 0 obj << +/Type /Page +/Contents 933 0 R +/Resources 931 0 R +/MediaBox [0 0 612 792] +/Parent 929 0 R +/Annots [ 930 0 R ] +>> endobj +930 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[0 1 1] +/Rect [238.293 366.562 356.35 377.687] +/Subtype/Link/A<</Type/Action/S/URI/URI(<see\040acronym>@pobox.com)>> +>> endobj +934 0 obj << +/D [932 0 R /XYZ 126.795 702.524 null] +>> endobj +354 0 obj << +/D [932 0 R /XYZ 126.795 355.603 null] +>> endobj +931 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F28 504 0 R /F24 416 0 R /F26 489 0 R /F27 490 0 R /F23 415 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +938 0 obj << +/Length 2858 +/Filter /FlateDecode +>> +stream +xڝYY8~ϯhe@HY`7,f@z@[M,)z߷.rz&;/bXWEիL*$^Tꢈ0㋫:HP(Zwqտ`q<[4̲"uU,4E 4y4+&ag(4XЧav0
lv`]ƼvkoGZTʘǛ7+T0V4z@9hw]%u^7<d*wef{3J[& +ˌ$HHa0]3k(8SLi#?ikEN<W"aŇG8l +u,k+hAo\#^<8D]Yhg/@qyEk*'v8 +hq6"߶k'l#&_C{}Qh̏AQ$\r'Q
,Z?ز-{g9Ssw۹Y,mq}5\@̫,:n%mq>Eڸ/g7dh?5:/y6|_'N}2ѱRƧ^D)M(p;灌;'eW4'mS5H<FJG"qނ6c8A~nxq ZG ]aKM)㊄rl4HU2 TvL# +XkG([5[;*h8HKd@m0IrJ +Jت
T.?B'>N¨ݚk+X#"СcJ(1ܜ`Rٲp63mt0i%CހLA/CVxtT[ +wZ04kHgUnATtpB<צ,
gvYG7)y
%ns&q擖[ +TsD(W@6W&p+dkIl(&CJ%qmS6HXÔ; a +q̊\ݾRFL}VpM{݈A^'$;s2$nCHX!Sj.gWX1b僻n^xar +pD<cP7qaK5ʧ +a9d' +|:^<5,dIJ>`?$t?%4bβnQs(6vZLMjƍ%=Br8LօּNJ*pqTbфTw}ps@aHQ셌7 +^J&i2}U^E?m=HHbgGh#ec),;("QosSo%Uɻ}%7b(_ݵO\Z3
h|8fhbwS +endstream +endobj +937 0 obj << +/Type /Page +/Contents 938 0 R +/Resources 936 0 R +/MediaBox [0 0 612 792] +/Parent 929 0 R +/Annots [ 935 0 R ] +>> endobj +935 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[0 1 1] +/Rect [113.843 209.845 183.83 219.567] +/Subtype/Link/A<</Type/Action/S/URI/URI(comp.text.tex)>> +>> endobj +939 0 obj << +/D [937 0 R /XYZ 89.933 702.524 null] +>> endobj +936 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F28 504 0 R /F23 415 0 R /F26 489 0 R /F14 521 0 R /F24 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +942 0 obj << +/Length 1455 +/Filter /FlateDecode +>> +stream +xڕVM6Wj}[@l@/"$Jlv)Q){{ʶ^l"罙y3/o~~x,I-uzx,__~{vF;s7f=.WIq>/7CZF2N zoҿrGOmWQؖ8JZKR+ߋ4 q(EDN$`3zӳCW+Q)S[zN]|wڋ++'ZZ.(]+&j0&qtCSA.,ЎBVQ>5K&T6[\ +4< SWA&Ct fx$PA^8>"aQpIulH5&M.&]3{n0UL=
.P&~M nNƁ*$RߖZWdfeVzpHU͠"0#+N-ֈ@P.vD (HdxT!fXơɵ&u֧rU,紟ӻA
ɟ#++}sv+t:J +;7-=ǏO%yU kUդZZ.=!}o6>((?%h*]3u&ՇcS?dHxQX63VqǴ56=<gkiÃ9+Xs``) +O~贛مz/ϕ=J+,w;k5W+Rɚ AZk^&Q~9k8B**l4p +kݲz-H]}`Vj^CK@X7~]&͉yִ"8mljmV]zC9Eq|c'.z3Ɯyg@I6Ye-ds?D$hx7te\v&>[뮦\Tǻ_oGzǁOxnVY;if^rcQ +endstream +endobj +941 0 obj << +/Type /Page +/Contents 942 0 R +/Resources 940 0 R +/MediaBox [0 0 612 792] +/Parent 929 0 R +>> endobj +943 0 obj << +/D [941 0 R /XYZ 126.795 702.524 null] +>> endobj +940 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F24 416 0 R /F28 504 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +946 0 obj << +/Length 1074 +/Filter /FlateDecode +>> +stream +xڭVK60 lkÖr]tb@K-@"
ڍ+w(Jɢ)t3'dLXd\.|:vbZΜ`Jx1{fbv`T|iI +]E;[h0M"l4pm^{S#*1IP4Q#y >@Ⱥǒ^(ˬC)e!'I9|}`/"BmgY$ 4.d"&]l
+H؈qBl%,GH`qlഐpB z +Ao.ҺZzlI66AcFȫ]I +9!W + +rKRɁTg0da>mp +/
iR0fxo>ҕ?i2[LPKvU{_+@}ZN9<=!AS9~0=` +Lcu֘ʻexxFv +endstream +endobj +945 0 obj << +/Type /Page +/Contents 946 0 R +/Resources 944 0 R +/MediaBox [0 0 612 792] +/Parent 929 0 R +>> endobj +947 0 obj << +/D [945 0 R /XYZ 89.933 702.524 null] +>> endobj +944 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F28 504 0 R /F23 415 0 R /F26 489 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +950 0 obj << +/Length 1398 +/Filter /FlateDecode +>> +stream +xڍWmo8_Vy]Nm{_NPt&rmc @h~xgnrRF,L" #B)LKlhMPGFhlj( <TјF,ڕ}Wj#(]IPvWu3?Hc Lk<Mꬨm~5&c4`$
#<s/}T'V" +whL<dQޏQvKsp #]2H + ,j) )nuQ-sAk!#;mʶ
Iҝ0^> S9Y6pӎ(uhƥq
&HdpK\HHVQ@I9*86N|k^ZKͅrUne@, +M,nq%Qډ|v*V}:k FAͥhZmBłЄ +nUQ[+6{N,px9Nu[:6azլv++k;֞8#*Qbx#όzI`Qݹ\E[6U6lqU42 +0e
/Le%NnDe܋hhM=cfP(3N,3!T-͎gKk-TDsNB}0;ՋR1n4v3$bI}mZ{\J
kG˃MsTM,ԲgϸckZ;ÍBa%6b@ by1cؘ +Ąi +Ee٭ nFri>T5o/e}& );A坶lr&\tFMDaSV!-jDw((gv4HtHvXI +>ʊ;zj!67dƸT8ޭ@c`6Gh!\}9O^oH8<eۘ'^}\# +endstream +endobj +949 0 obj << +/Type /Page +/Contents 950 0 R +/Resources 948 0 R +/MediaBox [0 0 612 792] +/Parent 929 0 R +>> endobj +951 0 obj << +/D [949 0 R /XYZ 126.795 702.524 null] +>> endobj +948 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F28 504 0 R /F24 416 0 R /F23 415 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1104 0 obj << +/Length 1394 +/Filter /FlateDecode +>> +stream +xڵXMs8WT5HdR= L0 +{gʶ5t.}:ƈJmQ>FOFioҲlclZ[ C8C6"C/zށ<FP'A)hIs@BĹ?aޙ';\A +q@tm:JEز$9;S +KP픫bSRTUdUD/t&9v,{ +ڰs,t9Msj@ĵd +LmkLHL5fJ]HH4ޘQD[
~#^7>ilX=E%/<ͲT캣#!kSFVpukQE)z"]87wU㋓i$$ҧW8#Zy}Ȳ#
Ǥ</W[a<ׁغ('RRDȸ@t:N,uZ䶥c+Q*Sv)
u_*I\_ԿWIS](4iO$aۆG#U>Qe w"^GvsO+ki +J|)|/>LtMgNjb2n{C^4U*^J5UYyb#?.2U3P +89
,皢CV6rWϲK/5̌E@s4T
vIZťl\(8U<Ux}Ny^r#慠4upۢQg +X0#qҙ{3 +endstream +endobj +1103 0 obj << +/Type /Page +/Contents 1104 0 R +/Resources 1102 0 R +/MediaBox [0 0 612 792] +/Parent 1106 0 R +/Annots [ 952 0 R 953 0 R 954 0 R 955 0 R 956 0 R 957 0 R 958 0 R 959 0 R 960 0 R 961 0 R 962 0 R 963 0 R 964 0 R 965 0 R 966 0 R 967 0 R 968 0 R 969 0 R 970 0 R 971 0 R 972 0 R 973 0 R 974 0 R 975 0 R 976 0 R 977 0 R 978 0 R 979 0 R 980 0 R 981 0 R 982 0 R 983 0 R 984 0 R 985 0 R 986 0 R 987 0 R 988 0 R 989 0 R 990 0 R 991 0 R 992 0 R 993 0 R 994 0 R 995 0 R 996 0 R 997 0 R 998 0 R 999 0 R 1000 0 R 1001 0 R 1002 0 R 1003 0 R 1004 0 R 1005 0 R 1006 0 R 1007 0 R 1008 0 R 1009 0 R 1010 0 R 1011 0 R 1012 0 R 1013 0 R 1014 0 R 1015 0 R 1016 0 R 1017 0 R 1018 0 R 1019 0 R 1020 0 R 1021 0 R 1022 0 R 1023 0 R 1024 0 R 1025 0 R 1026 0 R 1027 0 R 1028 0 R 1029 0 R 1030 0 R 1031 0 R 1032 0 R 1033 0 R 1034 0 R 1035 0 R 1036 0 R 1037 0 R 1038 0 R 1039 0 R 1040 0 R 1041 0 R 1042 0 R 1043 0 R 1044 0 R 1045 0 R 1046 0 R 1047 0 R 1048 0 R 1049 0 R 1050 0 R 1051 0 R 1052 0 R 1053 0 R 1054 0 R 1055 0 R 1056 0 R 1057 0 R 1058 0 R 1059 0 R 1060 0 R 1061 0 R 1062 0 R 1063 0 R 1064 0 R 1065 0 R 1066 0 R 1067 0 R 1068 0 R 1069 0 R 1070 0 R 1071 0 R 1072 0 R 1073 0 R 1074 0 R 1075 0 R 1076 0 R 1077 0 R 1078 0 R 1079 0 R 1080 0 R 1081 0 R 1082 0 R 1083 0 R 1084 0 R 1085 0 R 1086 0 R 1087 0 R 1088 0 R 1089 0 R 1090 0 R 1091 0 R 1092 0 R 1093 0 R ] +>> endobj +952 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [105.485 616.901 117.441 627.749] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +953 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [136.867 604.946 148.823 615.794] +/Subtype /Link +/A << /S /GoTo /D (page.83) >> +>> endobj +954 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [131.637 592.991 138.611 603.839] +/Subtype /Link +/A << /S /GoTo /D (page.3) >> +>> endobj +955 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [121.176 581.036 133.132 591.884] +/Subtype /Link +/A << /S /GoTo /D (page.87) >> +>> endobj +956 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [115.946 569.08 127.901 579.929] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +957 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [131.997 569.08 143.952 579.929] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +958 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [157.789 557.125 169.744 567.974] +/Subtype /Link +/A << /S /GoTo /D (page.90) >> +>> endobj +959 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.019 545.17 174.974 556.018] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +960 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [179.07 545.17 191.025 556.018] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +961 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [142.098 533.215 154.053 544.063] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +962 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [136.867 521.26 143.841 532.108] +/Subtype /Link +/A << /S /GoTo /D (page.3) >> +>> endobj +963 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [105.485 499.342 117.441 510.19] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +964 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [105.485 477.424 112.459 488.272] +/Subtype /Link +/A << /S /GoTo /D (page.1) >> +>> endobj +965 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [116.555 477.424 128.51 488.272] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +966 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [178.71 465.192 190.665 476.317] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +967 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [136.867 453.514 148.823 464.362] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +968 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [152.559 441.282 164.514 452.407] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +969 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [168.609 441.282 180.565 452.407] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +970 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [184.66 441.282 196.616 452.407] +/Subtype /Link +/A << /S /GoTo /D (page.92) >> +>> endobj +971 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [131.637 429.604 143.592 440.452] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +972 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [147.688 429.604 159.643 440.452] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +973 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [115.946 417.648 127.901 428.497] +/Subtype /Link +/A << /S /GoTo /D (page.83) >> +>> endobj +974 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [131.997 417.648 143.952 428.497] +/Subtype /Link +/A << /S /GoTo /D (page.84) >> +>> endobj +975 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [148.048 417.648 160.003 428.497] +/Subtype /Link +/A << /S /GoTo /D (page.86) >> +>> endobj +976 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [126.407 405.693 138.362 416.541] +/Subtype /Link +/A << /S /GoTo /D (page.86) >> +>> endobj +977 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [142.458 405.693 154.413 416.541] +/Subtype /Link +/A << /S /GoTo /D (page.87) >> +>> endobj +978 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [136.867 393.738 148.823 404.586] +/Subtype /Link +/A << /S /GoTo /D (page.83) >> +>> endobj +979 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [152.918 393.738 164.874 404.586] +/Subtype /Link +/A << /S /GoTo /D (page.84) >> +>> endobj +980 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [121.176 381.506 133.132 392.631] +/Subtype /Link +/A << /S /GoTo /D (page.13) >> +>> endobj +981 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [137.227 381.506 149.183 392.631] +/Subtype /Link +/A << /S /GoTo /D (page.14) >> +>> endobj +982 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [153.278 381.506 165.234 392.631] +/Subtype /Link +/A << /S /GoTo /D (page.16) >> +>> endobj +983 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [168.222 381.506 180.178 392.631] +/Subtype /Link +/A << /S /GoTo /D (page.18) >> +>> endobj +984 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [172.18 369.828 179.154 380.676] +/Subtype /Link +/A << /S /GoTo /D (page.1) >> +>> endobj +985 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [182.143 369.828 189.116 380.676] +/Subtype /Link +/A << /S /GoTo /D (page.5) >> +>> endobj +986 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [192.935 369.828 204.891 380.676] +/Subtype /Link +/A << /S /GoTo /D (page.14) >> +>> endobj +987 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [208.71 369.828 220.665 380.676] +/Subtype /Link +/A << /S /GoTo /D (page.34) >> +>> endobj +988 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [224.484 369.828 236.439 380.676] +/Subtype /Link +/A << /S /GoTo /D (page.37) >> +>> endobj +989 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [240.258 369.828 252.213 380.676] +/Subtype /Link +/A << /S /GoTo /D (page.39) >> +>> endobj +990 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [256.032 369.828 267.987 380.676] +/Subtype /Link +/A << /S /GoTo /D (page.53) >> +>> endobj +991 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [128.787 357.873 140.742 368.223] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +992 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [144.838 357.873 156.793 368.223] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +993 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [160.889 357.873 172.844 368.223] +/Subtype /Link +/A << /S /GoTo /D (page.76) >> +>> endobj +994 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [176.94 357.873 188.895 368.223] +/Subtype /Link +/A << /S /GoTo /D (page.93) >> +>> endobj +995 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [131.637 345.917 143.592 356.766] +/Subtype /Link +/A << /S /GoTo /D (page.84) >> +>> endobj +996 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [105.485 324 112.459 334.848] +/Subtype /Link +/A << /S /GoTo /D (page.1) >> +>> endobj +997 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.019 311.768 174.974 322.893] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +998 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [179.07 311.768 191.025 322.893] +/Subtype /Link +/A << /S /GoTo /D (page.74) >> +>> endobj +999 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [147.328 300.089 159.283 310.937] +/Subtype /Link +/A << /S /GoTo /D (page.29) >> +>> endobj +1000 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.379 300.089 175.334 310.937] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +1001 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [165.206 276.179 177.161 287.027] +/Subtype /Link +/A << /S /GoTo /D (page.81) >> +>> endobj +1002 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [181.257 276.179 193.212 287.027] +/Subtype /Link +/A << /S /GoTo /D (page.82) >> +>> endobj +1003 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [166.756 264.224 178.711 275.072] +/Subtype /Link +/A << /S /GoTo /D (page.76) >> +>> endobj +1004 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [126.407 252.269 138.362 263.117] +/Subtype /Link +/A << /S /GoTo /D (page.28) >> +>> endobj +1005 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [152.559 240.037 164.514 251.162] +/Subtype /Link +/A << /S /GoTo /D (page.28) >> +>> endobj +1006 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [168.609 240.037 180.565 251.162] +/Subtype /Link +/A << /S /GoTo /D (page.29) >> +>> endobj +1007 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [184.66 240.037 196.616 251.162] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +1008 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [131.637 228.081 143.592 239.206] +/Subtype /Link +/A << /S /GoTo /D (page.28) >> +>> endobj +1009 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [147.688 228.081 159.643 239.206] +/Subtype /Link +/A << /S /GoTo /D (page.94) >> +>> endobj +1010 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [147.328 216.126 159.283 227.251] +/Subtype /Link +/A << /S /GoTo /D (page.29) >> +>> endobj +1011 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [121.176 204.171 133.132 215.296] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1012 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [137.227 204.171 149.183 215.296] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1013 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [168.25 192.216 180.205 203.341] +/Subtype /Link +/A << /S /GoTo /D (page.81) >> +>> endobj +1014 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [105.485 170.575 112.459 181.423] +/Subtype /Link +/A << /S /GoTo /D (page.1) >> +>> endobj +1015 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [136.867 158.343 148.823 169.468] +/Subtype /Link +/A << /S /GoTo /D (page.91) >> +>> endobj +1016 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [142.098 146.665 154.053 157.513] +/Subtype /Link +/A << /S /GoTo /D (page.23) >> +>> endobj +1017 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [200.38 134.709 212.335 145.558] +/Subtype /Link +/A << /S /GoTo /D (page.89) >> +>> endobj +1018 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [136.867 122.754 148.823 133.602] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1019 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [152.918 122.754 164.874 133.602] +/Subtype /Link +/A << /S /GoTo /D (page.73) >> +>> endobj +1020 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [335.871 616.901 347.827 627.749] +/Subtype /Link +/A << /S /GoTo /D (page.91) >> +>> endobj +1021 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [372.484 604.669 384.439 615.794] +/Subtype /Link +/A << /S /GoTo /D (page.81) >> +>> endobj +1022 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [351.562 592.991 363.518 603.839] +/Subtype /Link +/A << /S /GoTo /D (page.73) >> +>> endobj +1023 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [358.73 581.036 370.686 591.884] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1024 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [374.781 581.036 386.737 591.884] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +1025 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [390.832 581.036 402.788 591.884] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +1026 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [351.562 569.08 363.518 579.929] +/Subtype /Link +/A << /S /GoTo /D (page.86) >> +>> endobj +1027 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [362.023 556.849 373.978 567.974] +/Subtype /Link +/A << /S /GoTo /D (page.14) >> +>> endobj +1028 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [378.074 556.849 390.029 567.974] +/Subtype /Link +/A << /S /GoTo /D (page.15) >> +>> endobj +1029 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [356.793 545.17 368.748 556.018] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1030 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [346.332 533.215 358.287 544.063] +/Subtype /Link +/A << /S /GoTo /D (page.15) >> +>> endobj +1031 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [362.383 533.215 374.338 544.063] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +1032 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [377.327 533.215 389.282 544.063] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +1033 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [320.18 511.297 327.154 522.145] +/Subtype /Link +/A << /S /GoTo /D (page.1) >> +>> endobj +1034 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [377.714 499.342 389.669 510.19] +/Subtype /Link +/A << /S /GoTo /D (page.42) >> +>> endobj +1035 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [330.641 487.387 337.615 498.235] +/Subtype /Link +/A << /S /GoTo /D (page.1) >> +>> endobj +1036 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [341.711 487.387 353.666 498.235] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1037 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [357.762 487.387 369.717 498.235] +/Subtype /Link +/A << /S /GoTo /D (page.60) >> +>> endobj +1038 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [356.793 475.432 368.748 486.28] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1039 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [382.944 463.2 389.918 474.325] +/Subtype /Link +/A << /S /GoTo /D (page.5) >> +>> endobj +1040 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [414.326 451.245 426.282 462.37] +/Subtype /Link +/A << /S /GoTo /D (page.81) >> +>> endobj +1041 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [382.973 439.566 389.947 450.414] +/Subtype /Link +/A << /S /GoTo /D (page.1) >> +>> endobj +1042 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [394.042 439.566 401.016 450.414] +/Subtype /Link +/A << /S /GoTo /D (page.3) >> +>> endobj +1043 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [320.18 417.648 327.154 428.497] +/Subtype /Link +/A << /S /GoTo /D (page.1) >> +>> endobj +1044 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [335.871 405.693 342.845 416.541] +/Subtype /Link +/A << /S /GoTo /D (page.1) >> +>> endobj +1045 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [346.941 405.693 358.896 416.541] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1046 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [362.992 405.693 374.947 416.541] +/Subtype /Link +/A << /S /GoTo /D (page.60) >> +>> endobj +1047 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [379.043 405.693 390.998 416.541] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +1048 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [395.094 405.693 407.049 416.541] +/Subtype /Link +/A << /S /GoTo /D (page.73) >> +>> endobj +1049 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [381.008 393.738 392.963 404.586] +/Subtype /Link +/A << /S /GoTo /D (page.22) >> +>> endobj +1050 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [397.059 393.738 409.014 404.586] +/Subtype /Link +/A << /S /GoTo /D (page.76) >> +>> endobj +1051 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [335.871 381.783 347.827 392.631] +/Subtype /Link +/A << /S /GoTo /D (page.27) >> +>> endobj +1052 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [351.922 381.783 363.878 392.631] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +1053 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [367.973 381.783 379.928 392.631] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +1054 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [325.411 369.828 337.366 380.676] +/Subtype /Link +/A << /S /GoTo /D (page.92) >> +>> endobj +1055 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [335.871 357.596 347.827 368.721] +/Subtype /Link +/A << /S /GoTo /D (page.92) >> +>> endobj +1056 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [341.102 345.641 353.057 356.766] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +1057 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [330.641 333.962 342.596 344.81] +/Subtype /Link +/A << /S /GoTo /D (page.28) >> +>> endobj +1058 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [330.641 322.007 342.596 332.855] +/Subtype /Link +/A << /S /GoTo /D (page.27) >> +>> endobj +1059 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [346.692 322.007 358.647 332.855] +/Subtype /Link +/A << /S /GoTo /D (page.28) >> +>> endobj +1060 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [362.023 310.052 373.978 320.9] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +1061 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [378.074 310.052 390.029 320.9] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1062 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [394.125 310.052 406.08 320.9] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +1063 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [356.793 297.82 368.748 308.945] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +1064 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [372.844 297.82 384.799 308.945] +/Subtype /Link +/A << /S /GoTo /D (page.27) >> +>> endobj +1065 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [387.788 297.82 399.743 308.945] +/Subtype /Link +/A << /S /GoTo /D (page.29) >> +>> endobj +1066 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [403.839 297.82 415.794 308.945] +/Subtype /Link +/A << /S /GoTo /D (page.32) >> +>> endobj +1067 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [419.89 297.82 431.845 308.945] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +1068 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [372.484 286.141 384.439 296.99] +/Subtype /Link +/A << /S /GoTo /D (page.53) >> +>> endobj +1069 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [388.535 286.141 400.49 296.99] +/Subtype /Link +/A << /S /GoTo /D (page.75) >> +>> endobj +1070 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [404.586 286.141 416.541 296.99] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +1071 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [351.562 273.91 363.518 285.035] +/Subtype /Link +/A << /S /GoTo /D (page.22) >> +>> endobj +1072 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [367.253 261.954 379.209 273.079] +/Subtype /Link +/A << /S /GoTo /D (page.77) >> +>> endobj +1073 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [382.197 261.954 394.153 273.079] +/Subtype /Link +/A << /S /GoTo /D (page.79) >> +>> endobj +1074 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [367.253 249.999 379.209 261.124] +/Subtype /Link +/A << /S /GoTo /D (page.11) >> +>> endobj +1075 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [362.023 238.044 373.978 249.169] +/Subtype /Link +/A << /S /GoTo /D (page.22) >> +>> endobj +1076 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [356.793 226.089 368.748 237.214] +/Subtype /Link +/A << /S /GoTo /D (page.22) >> +>> endobj +1077 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [372.484 214.134 379.458 225.259] +/Subtype /Link +/A << /S /GoTo /D (page.1) >> +>> endobj +1078 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [383.553 214.134 390.527 225.259] +/Subtype /Link +/A << /S /GoTo /D (page.3) >> +>> endobj +1079 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [394.623 214.134 406.578 225.259] +/Subtype /Link +/A << /S /GoTo /D (page.59) >> +>> endobj +1080 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [335.871 192.493 347.827 203.341] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1081 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [341.102 180.538 353.057 191.386] +/Subtype /Link +/A << /S /GoTo /D (page.12) >> +>> endobj +1082 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [325.411 168.582 337.366 179.431] +/Subtype /Link +/A << /S /GoTo /D (page.27) >> +>> endobj +1083 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [341.462 168.582 353.417 179.431] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +1084 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [357.513 168.582 369.468 179.431] +/Subtype /Link +/A << /S /GoTo /D (page.32) >> +>> endobj +1085 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [373.564 168.582 385.519 179.431] +/Subtype /Link +/A << /S /GoTo /D (page.35) >> +>> endobj +1086 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [389.614 168.582 401.57 179.431] +/Subtype /Link +/A << /S /GoTo /D (page.59) >> +>> endobj +1087 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [405.665 168.582 417.621 179.431] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +1088 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [375.584 156.627 387.539 167.475] +/Subtype /Link +/A << /S /GoTo /D (page.29) >> +>> endobj +1089 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [391.635 156.627 403.59 167.475] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +1090 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [407.686 156.627 419.641 167.475] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +1091 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [356.793 144.395 368.748 155.52] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +1092 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [335.871 132.717 347.827 143.565] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1093 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [335.871 120.762 347.827 131.61] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1105 0 obj << +/D [1103 0 R /XYZ 89.933 702.524 null] +>> endobj +358 0 obj << +/D [1103 0 R /XYZ 89.933 629.797 null] +>> endobj +1102 0 obj << +/Font << /F22 414 0 R /F24 416 0 R /F21 371 0 R /F26 489 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1249 0 obj << +/Length 1402 +/Filter /FlateDecode +>> +stream +xڵYK6ϯѮcf2$@cS#lcHS4Ï}t_ zaLzc{տ(Ir%Íhe~ ?jJlmԃ,^J-mbBka/>=K7<_Ab
Fȋ e5`E"z=&ݭ- D>Af +ӵ]8~CsD`=C;YyLN*u4[["On4I=LI.\4n +(1p4v[,:)Ozh<N +-{VM%V\BNQSOF-
`'}fjV~':#SG)A?^k3TM&s +WR߷-+ۍfzUi[܀7 PSͬ܆Ao +߬m\n zէ':c@&33eT+swISnI3sV)s_'x[w<nsFPsЅ89h':j?燞HmXșӆo9dYq/zKZj&Wd@~}| +endstream +endobj +1248 0 obj << +/Type /Page +/Contents 1249 0 R +/Resources 1247 0 R +/MediaBox [0 0 612 792] +/Parent 1106 0 R +/Annots [ 1094 0 R 1095 0 R 1096 0 R 1097 0 R 1098 0 R 1099 0 R 1100 0 R 1101 0 R 1107 0 R 1108 0 R 1109 0 R 1110 0 R 1111 0 R 1112 0 R 1113 0 R 1114 0 R 1115 0 R 1116 0 R 1117 0 R 1118 0 R 1119 0 R 1120 0 R 1121 0 R 1122 0 R 1123 0 R 1124 0 R 1125 0 R 1126 0 R 1127 0 R 1128 0 R 1129 0 R 1130 0 R 1131 0 R 1132 0 R 1133 0 R 1134 0 R 1135 0 R 1136 0 R 1137 0 R 1138 0 R 1139 0 R 1140 0 R 1141 0 R 1142 0 R 1143 0 R 1144 0 R 1145 0 R 1146 0 R 1147 0 R 1148 0 R 1149 0 R 1150 0 R 1151 0 R 1152 0 R 1153 0 R 1154 0 R 1155 0 R 1156 0 R 1157 0 R 1158 0 R 1159 0 R 1160 0 R 1161 0 R 1162 0 R 1163 0 R 1164 0 R 1165 0 R 1166 0 R 1167 0 R 1168 0 R 1169 0 R 1170 0 R 1171 0 R 1172 0 R 1173 0 R 1174 0 R 1175 0 R 1176 0 R 1177 0 R 1178 0 R 1179 0 R 1180 0 R 1181 0 R 1182 0 R 1183 0 R 1184 0 R 1185 0 R 1186 0 R 1187 0 R 1188 0 R 1189 0 R 1190 0 R 1191 0 R 1192 0 R 1193 0 R 1194 0 R 1195 0 R 1196 0 R 1197 0 R 1198 0 R 1199 0 R 1200 0 R 1201 0 R 1202 0 R 1203 0 R 1204 0 R 1205 0 R 1206 0 R 1207 0 R 1208 0 R 1209 0 R 1210 0 R 1211 0 R 1212 0 R 1213 0 R 1214 0 R 1215 0 R 1216 0 R 1217 0 R 1218 0 R 1219 0 R 1220 0 R 1221 0 R 1222 0 R 1223 0 R 1224 0 R 1225 0 R 1226 0 R 1227 0 R 1228 0 R 1229 0 R 1230 0 R 1231 0 R 1232 0 R 1233 0 R 1234 0 R 1235 0 R 1236 0 R 1237 0 R 1238 0 R 1239 0 R 1240 0 R 1241 0 R 1242 0 R 1243 0 R 1244 0 R ] +>> endobj +1094 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [152.808 665.718 164.763 676.566] +/Subtype /Link +/A << /S /GoTo /D (page.13) >> +>> endobj +1095 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [168.859 665.718 180.814 676.566] +/Subtype /Link +/A << /S /GoTo /D (page.14) >> +>> endobj +1096 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [184.91 665.718 196.865 676.566] +/Subtype /Link +/A << /S /GoTo /D (page.16) >> +>> endobj +1097 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [200.961 665.718 212.916 676.566] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +1098 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [217.012 665.718 228.967 676.566] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +1099 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [233.063 665.718 245.018 676.566] +/Subtype /Link +/A << /S /GoTo /D (page.59) >> +>> endobj +1100 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [249.114 665.718 261.069 676.566] +/Subtype /Link +/A << /S /GoTo /D (page.73) >> +>> endobj +1101 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [168.499 653.763 180.454 664.611] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1107 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [178.96 641.808 190.915 652.656] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1108 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [195.011 641.808 206.966 652.656] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1109 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [184.19 629.853 196.145 640.701] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1110 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [200.241 629.853 212.196 640.701] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1111 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [216.292 629.853 228.247 640.701] +/Subtype /Link +/A << /S /GoTo /D (page.60) >> +>> endobj +1112 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [158.038 607.658 169.993 618.783] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1113 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [168.499 595.703 180.454 606.828] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +1114 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [168.499 573.785 175.473 584.91] +/Subtype /Link +/A << /S /GoTo /D (page.1) >> +>> endobj +1115 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [179.569 573.785 191.524 584.91] +/Subtype /Link +/A << /S /GoTo /D (page.14) >> +>> endobj +1116 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [195.619 573.785 207.575 584.91] +/Subtype /Link +/A << /S /GoTo /D (page.15) >> +>> endobj +1117 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [210.342 561.83 222.297 572.955] +/Subtype /Link +/A << /S /GoTo /D (page.81) >> +>> endobj +1118 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [178.96 549.875 190.915 561] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1119 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [195.011 549.875 206.966 561] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1120 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.269 538.196 175.224 549.044] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +1121 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [147.578 526.241 159.533 537.089] +/Subtype /Link +/A << /S /GoTo /D (page.42) >> +>> endobj +1122 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.269 514.009 175.224 525.134] +/Subtype /Link +/A << /S /GoTo /D (page.60) >> +>> endobj +1123 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [179.32 514.009 191.275 525.134] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +1124 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [189.42 502.054 196.394 513.179] +/Subtype /Link +/A << /S /GoTo /D (page.5) >> +>> endobj +1125 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [147.578 480.413 159.533 491.261] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +1126 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.629 480.413 175.584 491.261] +/Subtype /Link +/A << /S /GoTo /D (page.32) >> +>> endobj +1127 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [179.679 480.413 191.635 491.261] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +1128 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [195.73 480.413 207.686 491.261] +/Subtype /Link +/A << /S /GoTo /D (page.73) >> +>> endobj +1129 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.269 468.458 175.224 479.306] +/Subtype /Link +/A << /S /GoTo /D (page.55) >> +>> endobj +1130 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.269 456.503 175.224 467.351] +/Subtype /Link +/A << /S /GoTo /D (page.59) >> +>> endobj +1131 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [179.32 456.503 191.275 467.351] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +1132 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [173.729 444.547 180.703 455.396] +/Subtype /Link +/A << /S /GoTo /D (page.2) >> +>> endobj +1133 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [184.799 444.547 191.773 455.396] +/Subtype /Link +/A << /S /GoTo /D (page.4) >> +>> endobj +1134 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [195.868 444.547 207.824 455.396] +/Subtype /Link +/A << /S /GoTo /D (page.27) >> +>> endobj +1135 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [211.919 444.547 223.875 455.396] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +1136 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [227.97 444.547 239.926 455.396] +/Subtype /Link +/A << /S /GoTo /D (page.35) >> +>> endobj +1137 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [244.021 444.547 255.977 455.396] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +1138 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [189.42 432.316 196.394 443.441] +/Subtype /Link +/A << /S /GoTo /D (page.3) >> +>> endobj +1139 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.269 420.637 175.224 431.485] +/Subtype /Link +/A << /S /GoTo /D (page.59) >> +>> endobj +1140 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [179.32 420.637 191.275 431.485] +/Subtype /Link +/A << /S /GoTo /D (page.71) >> +>> endobj +1141 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [195.37 420.637 207.326 431.485] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +1142 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [194.651 408.405 206.606 419.53] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +1143 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [168.499 396.727 175.473 407.575] +/Subtype /Link +/A << /S /GoTo /D (page.2) >> +>> endobj +1144 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [179.569 396.727 191.524 407.575] +/Subtype /Link +/A << /S /GoTo /D (page.27) >> +>> endobj +1145 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [195.619 396.727 207.575 407.575] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +1146 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [173.729 384.772 185.684 395.62] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +1147 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [152.808 372.816 159.782 383.665] +/Subtype /Link +/A << /S /GoTo /D (page.4) >> +>> endobj +1148 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.878 372.816 175.833 383.665] +/Subtype /Link +/A << /S /GoTo /D (page.42) >> +>> endobj +1149 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [179.928 372.816 191.884 383.665] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +1150 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [195.979 372.816 207.935 383.665] +/Subtype /Link +/A << /S /GoTo /D (page.73) >> +>> endobj +1151 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [199.881 360.585 211.836 371.709] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +1152 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [215.932 360.585 227.887 371.709] +/Subtype /Link +/A << /S /GoTo /D (page.60) >> +>> endobj +1153 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [184.19 348.906 196.145 359.754] +/Subtype /Link +/A << /S /GoTo /D (page.23) >> +>> endobj +1154 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [168.499 336.951 180.454 347.799] +/Subtype /Link +/A << /S /GoTo /D (page.73) >> +>> endobj +1155 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.269 324.719 175.224 335.844] +/Subtype /Link +/A << /S /GoTo /D (page.75) >> +>> endobj +1156 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [178.213 324.719 190.168 335.844] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +1157 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [194.651 312.764 206.606 323.889] +/Subtype /Link +/A << /S /GoTo /D (page.76) >> +>> endobj +1158 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [220.802 300.809 232.758 311.934] +/Subtype /Link +/A << /S /GoTo /D (page.81) >> +>> endobj +1159 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [173.729 289.13 185.684 299.978] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1160 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [173.729 266.936 185.684 278.061] +/Subtype /Link +/A << /S /GoTo /D (page.76) >> +>> endobj +1161 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [199.356 245.295 211.311 256.143] +/Subtype /Link +/A << /S /GoTo /D (page.89) >> +>> endobj +1162 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [215.407 245.295 227.362 256.143] +/Subtype /Link +/A << /S /GoTo /D (page.90) >> +>> endobj +1163 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [197.336 233.34 204.31 244.188] +/Subtype /Link +/A << /S /GoTo /D (page.4) >> +>> endobj +1164 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [208.405 233.34 220.361 244.188] +/Subtype /Link +/A << /S /GoTo /D (page.27) >> +>> endobj +1165 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [173.729 211.422 185.684 222.27] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +1166 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [173.729 199.19 185.684 210.315] +/Subtype /Link +/A << /S /GoTo /D (page.84) >> +>> endobj +1167 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [188.673 199.19 200.628 210.315] +/Subtype /Link +/A << /S /GoTo /D (page.86) >> +>> endobj +1168 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [178.96 187.235 190.915 198.36] +/Subtype /Link +/A << /S /GoTo /D (page.73) >> +>> endobj +1169 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [168.499 175.556 180.454 186.404] +/Subtype /Link +/A << /S /GoTo /D (page.41) >> +>> endobj +1170 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [168.499 163.601 180.454 174.449] +/Subtype /Link +/A << /S /GoTo /D (page.60) >> +>> endobj +1171 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [173.729 151.646 185.684 162.494] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +1172 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [152.808 139.691 164.763 150.539] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1173 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [168.859 139.691 180.814 150.539] +/Subtype /Link +/A << /S /GoTo /D (page.55) >> +>> endobj +1174 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [178.96 127.459 190.915 138.584] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +1175 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [195.011 127.459 206.966 138.584] +/Subtype /Link +/A << /S /GoTo /D (page.74) >> +>> endobj +1176 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [205.111 115.504 217.066 126.629] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +1177 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [419.806 665.441 431.761 676.566] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1178 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [435.857 665.441 447.812 676.566] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1179 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [404.115 653.486 416.07 664.611] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1180 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [420.166 653.486 432.121 664.611] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1181 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [425.037 641.531 436.992 652.656] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1182 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [441.087 641.531 453.043 652.656] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1183 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [372.733 629.576 384.688 640.701] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1184 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [388.784 629.576 400.739 640.701] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1185 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [398.885 617.897 410.84 628.746] +/Subtype /Link +/A << /S /GoTo /D (page.40) >> +>> endobj +1186 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [414.936 617.897 426.891 628.746] +/Subtype /Link +/A << /S /GoTo /D (page.41) >> +>> endobj +1187 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [430.987 617.897 442.942 628.746] +/Subtype /Link +/A << /S /GoTo /D (page.54) >> +>> endobj +1188 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [447.038 617.897 458.993 628.746] +/Subtype /Link +/A << /S /GoTo /D (page.55) >> +>> endobj +1189 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [409.678 605.942 421.633 616.79] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1190 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [367.503 583.748 379.458 594.873] +/Subtype /Link +/A << /S /GoTo /D (page.71) >> +>> endobj +1191 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [383.554 583.748 395.509 594.873] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +1192 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [414.576 572.069 426.531 582.917] +/Subtype /Link +/A << /S /GoTo /D (page.85) >> +>> endobj +1193 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [409.346 560.114 421.301 570.962] +/Subtype /Link +/A << /S /GoTo /D (page.85) >> +>> endobj +1194 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [372.733 548.159 384.688 559.007] +/Subtype /Link +/A << /S /GoTo /D (page.60) >> +>> endobj +1195 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [409.346 536.204 421.301 547.052] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1196 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [425.396 536.204 437.352 547.052] +/Subtype /Link +/A << /S /GoTo /D (page.73) >> +>> endobj +1197 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [398.885 524.249 410.84 535.097] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1198 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [414.936 524.249 426.891 535.097] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1199 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [383.194 512.293 395.149 523.142] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1200 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [399.245 512.293 411.2 523.142] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1201 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [408.488 488.383 420.443 499.121] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +1202 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [424.539 488.383 436.494 499.121] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +1203 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [388.424 476.151 400.379 487.276] +/Subtype /Link +/A << /S /GoTo /D (page.13) >> +>> endobj +1204 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [403.368 476.151 415.323 487.276] +/Subtype /Link +/A << /S /GoTo /D (page.18) >> +>> endobj +1205 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [419.419 476.151 431.374 487.276] +/Subtype /Link +/A << /S /GoTo /D (page.23) >> +>> endobj +1206 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [435.47 476.151 447.425 487.276] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +1207 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [451.521 476.151 463.476 487.276] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +1208 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [467.572 476.151 479.527 487.276] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +1209 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [388.424 464.196 395.398 475.321] +/Subtype /Link +/A << /S /GoTo /D (page.4) >> +>> endobj +1210 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [399.494 464.196 411.449 475.321] +/Subtype /Link +/A << /S /GoTo /D (page.11) >> +>> endobj +1211 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [415.545 464.196 427.5 475.321] +/Subtype /Link +/A << /S /GoTo /D (page.23) >> +>> endobj +1212 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [431.596 464.196 443.551 475.321] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +1213 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [383.194 452.241 395.149 463.366] +/Subtype /Link +/A << /S /GoTo /D (page.84) >> +>> endobj +1214 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [399.245 452.241 411.2 463.366] +/Subtype /Link +/A << /S /GoTo /D (page.86) >> +>> endobj +1215 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [425.065 440.562 437.02 451.411] +/Subtype /Link +/A << /S /GoTo /D (page.77) >> +>> endobj +1216 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [430.267 428.33 442.222 439.455] +/Subtype /Link +/A << /S /GoTo /D (page.94) >> +>> endobj +1217 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [398.885 416.375 410.84 427.5] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1218 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [414.936 416.375 426.891 427.5] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1219 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [398.885 404.42 410.84 415.545] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1220 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [383.194 382.779 395.149 393.627] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1221 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [393.654 370.824 405.61 381.672] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1222 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [393.654 358.869 405.61 369.717] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1223 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [383.194 346.914 395.149 357.762] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1224 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [388.424 334.682 400.379 345.807] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1225 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [377.963 323.003 389.919 333.851] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1226 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [398.885 311.048 410.84 321.896] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1227 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [393.654 299.093 405.61 309.941] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +1228 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [409.346 286.861 421.301 297.986] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1229 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [398.885 274.906 410.84 286.031] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1230 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [388.424 263.227 400.379 274.076] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1231 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [388.424 250.996 400.379 262.12] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1232 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [388.424 239.317 400.379 250.165] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1233 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [393.654 227.362 405.61 238.21] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1234 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [383.194 215.407 395.149 226.255] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1235 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [372.733 203.452 384.688 214.3] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1236 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [388.784 203.452 400.739 214.3] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1237 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [393.654 191.22 400.628 202.345] +/Subtype /Link +/A << /S /GoTo /D (page.1) >> +>> endobj +1238 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [404.724 191.22 416.679 202.345] +/Subtype /Link +/A << /S /GoTo /D (page.23) >> +>> endobj +1239 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [367.503 179.541 379.458 190.389] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1240 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [417.178 157.623 429.133 168.472] +/Subtype /Link +/A << /S /GoTo /D (page.91) >> +>> endobj +1241 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [398.885 145.392 410.84 156.516] +/Subtype /Link +/A << /S /GoTo /D (page.41) >> +>> endobj +1242 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [383.194 133.436 395.149 144.561] +/Subtype /Link +/A << /S /GoTo /D (page.76) >> +>> endobj +1243 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [383.194 121.481 395.149 132.606] +/Subtype /Link +/A << /S /GoTo /D (page.85) >> +>> endobj +1244 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [399.245 121.481 411.2 132.606] +/Subtype /Link +/A << /S /GoTo /D (page.86) >> +>> endobj +1250 0 obj << +/D [1248 0 R /XYZ 126.795 702.524 null] +>> endobj +1247 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F24 416 0 R /F26 489 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1387 0 obj << +/Length 1240 +/Filter /FlateDecode +>> +stream +xڵYˎ6+Z"wFh{v8c!zUҖ8cKWX+9}ݏ0[@r0? YD!B]kKݯF]A"d+Z(Lv#BV
"a&,;5Bd
CB0{a ^`77*\(HB֬B⍫ + %?Z⅝Jmf*A97~GN0$Tq<@ԫsM,J螿o*r#Oqlsyĭ{/S;yR:_M}pTs;KKu" +endstream +endobj +1386 0 obj << +/Type /Page +/Contents 1387 0 R +/Resources 1385 0 R +/MediaBox [0 0 612 792] +/Parent 1106 0 R +/Annots [ 1245 0 R 1246 0 R 1251 0 R 1252 0 R 1253 0 R 1254 0 R 1255 0 R 1256 0 R 1257 0 R 1258 0 R 1259 0 R 1260 0 R 1261 0 R 1262 0 R 1263 0 R 1264 0 R 1265 0 R 1266 0 R 1267 0 R 1268 0 R 1269 0 R 1270 0 R 1271 0 R 1272 0 R 1273 0 R 1274 0 R 1275 0 R 1276 0 R 1277 0 R 1278 0 R 1279 0 R 1280 0 R 1281 0 R 1282 0 R 1283 0 R 1284 0 R 1285 0 R 1286 0 R 1287 0 R 1288 0 R 1289 0 R 1290 0 R 1291 0 R 1292 0 R 1293 0 R 1294 0 R 1295 0 R 1296 0 R 1297 0 R 1298 0 R 1299 0 R 1300 0 R 1301 0 R 1302 0 R 1303 0 R 1304 0 R 1305 0 R 1306 0 R 1307 0 R 1308 0 R 1309 0 R 1310 0 R 1311 0 R 1312 0 R 1313 0 R 1314 0 R 1315 0 R 1316 0 R 1317 0 R 1318 0 R 1319 0 R 1320 0 R 1321 0 R 1322 0 R 1323 0 R 1324 0 R 1325 0 R 1326 0 R 1327 0 R 1328 0 R 1329 0 R 1330 0 R 1331 0 R 1332 0 R 1333 0 R 1334 0 R 1335 0 R 1336 0 R 1337 0 R 1338 0 R 1339 0 R 1340 0 R 1341 0 R 1342 0 R 1343 0 R 1344 0 R 1345 0 R 1346 0 R 1347 0 R 1348 0 R 1349 0 R 1350 0 R 1351 0 R 1352 0 R 1353 0 R 1354 0 R 1355 0 R 1356 0 R 1357 0 R 1358 0 R 1359 0 R 1360 0 R 1361 0 R 1362 0 R 1363 0 R 1364 0 R 1365 0 R 1366 0 R 1367 0 R 1368 0 R 1369 0 R 1370 0 R 1371 0 R 1372 0 R 1373 0 R 1374 0 R 1375 0 R 1376 0 R 1377 0 R 1378 0 R 1379 0 R 1380 0 R 1381 0 R ] +>> endobj +1245 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [126.407 665.718 138.362 676.566] +/Subtype /Link +/A << /S /GoTo /D (page.13) >> +>> endobj +1246 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [173.48 653.486 185.435 664.611] +/Subtype /Link +/A << /S /GoTo /D (page.41) >> +>> endobj +1251 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [168.25 641.531 180.205 652.656] +/Subtype /Link +/A << /S /GoTo /D (page.81) >> +>> endobj +1252 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [184.3 641.531 196.256 652.656] +/Subtype /Link +/A << /S /GoTo /D (page.82) >> +>> endobj +1253 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [110.716 619.613 122.671 630.738] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +1254 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [157.789 607.658 169.744 618.783] +/Subtype /Link +/A << /S /GoTo /D (page.81) >> +>> endobj +1255 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [147.328 595.703 159.283 606.828] +/Subtype /Link +/A << /S /GoTo /D (page.81) >> +>> endobj +1256 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.379 595.703 175.334 606.828] +/Subtype /Link +/A << /S /GoTo /D (page.82) >> +>> endobj +1257 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [136.867 583.748 148.823 594.873] +/Subtype /Link +/A << /S /GoTo /D (page.84) >> +>> endobj +1258 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [152.918 583.748 164.874 594.873] +/Subtype /Link +/A << /S /GoTo /D (page.86) >> +>> endobj +1259 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [115.946 571.793 127.901 582.917] +/Subtype /Link +/A << /S /GoTo /D (page.53) >> +>> endobj +1260 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [131.997 571.793 143.952 582.917] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +1261 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [148.048 571.793 160.003 582.917] +/Subtype /Link +/A << /S /GoTo /D (page.73) >> +>> endobj +1262 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [142.098 559.837 154.053 570.962] +/Subtype /Link +/A << /S /GoTo /D (page.79) >> +>> endobj +1263 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [126.407 547.882 138.362 559.007] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1264 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [136.867 535.927 148.823 547.052] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1265 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [152.918 535.927 164.874 547.052] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1266 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [136.867 523.972 148.823 535.097] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1267 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [152.918 523.972 164.874 535.097] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1268 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [131.637 512.017 143.592 523.142] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1269 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [131.637 500.062 143.592 511.186] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1270 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [147.328 488.106 159.283 499.231] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +1271 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [131.637 476.151 143.592 487.276] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1272 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [147.328 464.196 159.283 475.321] +/Subtype /Link +/A << /S /GoTo /D (page.90) >> +>> endobj +1273 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.019 452.241 174.974 463.366] +/Subtype /Link +/A << /S /GoTo /D (page.90) >> +>> endobj +1274 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.019 440.286 174.974 451.411] +/Subtype /Link +/A << /S /GoTo /D (page.90) >> +>> endobj +1275 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [157.789 428.33 169.744 439.455] +/Subtype /Link +/A << /S /GoTo /D (page.90) >> +>> endobj +1276 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [136.867 416.375 148.823 427.5] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +1277 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [152.918 416.375 164.874 427.5] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +1278 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [183.941 394.734 195.896 405.582] +/Subtype /Link +/A << /S /GoTo /D (page.41) >> +>> endobj +1279 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [121.176 372.816 133.132 383.665] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1280 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [137.227 372.816 149.183 383.665] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1281 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [157.596 360.861 169.551 371.709] +/Subtype /Link +/A << /S /GoTo /D (page.89) >> +>> endobj +1282 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [173.647 360.861 185.602 371.709] +/Subtype /Link +/A << /S /GoTo /D (page.90) >> +>> endobj +1283 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [126.407 348.906 138.362 359.754] +/Subtype /Link +/A << /S /GoTo /D (page.15) >> +>> endobj +1284 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [142.458 348.906 154.413 359.754] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +1285 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [158.509 348.906 170.464 359.754] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +1286 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [174.56 348.906 186.515 359.754] +/Subtype /Link +/A << /S /GoTo /D (page.71) >> +>> endobj +1287 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [190.611 348.906 202.566 359.754] +/Subtype /Link +/A << /S /GoTo /D (page.73) >> +>> endobj +1288 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [206.662 348.906 218.617 359.754] +/Subtype /Link +/A << /S /GoTo /D (page.74) >> +>> endobj +1289 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [131.637 336.951 143.592 347.799] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1290 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [110.716 324.719 122.671 335.844] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1291 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [126.767 324.719 138.722 335.844] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1292 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [136.867 303.078 148.823 313.926] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1293 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [131.637 291.123 143.592 301.971] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1294 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [152.559 279.168 164.514 290.016] +/Subtype /Link +/A << /S /GoTo /D (page.60) >> +>> endobj +1295 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [160.575 267.212 167.549 278.061] +/Subtype /Link +/A << /S /GoTo /D (page.1) >> +>> endobj +1296 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [172.789 267.212 179.763 278.061] +/Subtype /Link +/A << /S /GoTo /D (page.4) >> +>> endobj +1297 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [185.002 267.212 191.976 278.061] +/Subtype /Link +/A << /S /GoTo /D (page.5) >> +>> endobj +1298 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [197.216 267.212 204.189 278.061] +/Subtype /Link +/A << /S /GoTo /D (page.7) >> +>> endobj +1299 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [209.429 267.212 216.403 278.061] +/Subtype /Link +/A << /S /GoTo /D (page.9) >> +>> endobj +1300 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [221.642 267.212 233.598 278.061] +/Subtype /Link +/A << /S /GoTo /D (page.11) >> +>> endobj +1301 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [238.837 267.212 250.792 278.061] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +1302 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [256.032 267.212 267.987 278.061] +/Subtype /Link +/A << /S /GoTo /D (page.23) >> +>> endobj +1303 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [128.787 255.257 140.742 265.607] +/Subtype /Link +/A << /S /GoTo /D (page.28) >> +>> endobj +1304 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [144.838 255.257 156.793 265.607] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +1305 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [160.889 255.257 172.844 265.607] +/Subtype /Link +/A << /S /GoTo /D (page.34) >> +>> endobj +1306 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [176.94 255.257 188.895 265.607] +/Subtype /Link +/A << /S /GoTo /D (page.37) >> +>> endobj +1307 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [192.991 255.257 204.946 265.607] +/Subtype /Link +/A << /S /GoTo /D (page.42) >> +>> endobj +1308 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [209.042 255.257 220.997 265.607] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1309 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [225.093 255.257 237.048 265.607] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +1310 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [241.144 255.257 253.099 265.607] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +1311 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [152.559 243.302 164.514 254.15] +/Subtype /Link +/A << /S /GoTo /D (page.79) >> +>> endobj +1312 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [136.867 231.347 148.823 242.195] +/Subtype /Link +/A << /S /GoTo /D (page.91) >> +>> endobj +1313 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [142.098 219.115 154.053 230.24] +/Subtype /Link +/A << /S /GoTo /D (page.22) >> +>> endobj +1314 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [131.637 207.437 143.592 218.285] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +1315 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [131.637 195.481 143.592 206.33] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1316 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [136.867 183.526 148.823 194.375] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1317 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [152.918 183.526 164.874 194.375] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1318 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [136.867 171.294 148.823 182.419] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +1319 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [136.867 159.339 148.823 170.464] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1320 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [142.098 147.384 154.053 158.509] +/Subtype /Link +/A << /S /GoTo /D (page.42) >> +>> endobj +1321 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [136.867 135.429 148.823 146.554] +/Subtype /Link +/A << /S /GoTo /D (page.42) >> +>> endobj +1322 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [126.407 123.75 138.362 134.599] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1323 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [142.458 123.75 154.413 134.599] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1324 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [398.635 665.718 410.591 676.566] +/Subtype /Link +/A << /S /GoTo /D (page.41) >> +>> endobj +1325 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [341.102 653.486 353.057 664.611] +/Subtype /Link +/A << /S /GoTo /D (page.23) >> +>> endobj +1326 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [335.871 641.531 342.845 652.656] +/Subtype /Link +/A << /S /GoTo /D (page.1) >> +>> endobj +1327 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [346.332 629.576 358.287 640.701] +/Subtype /Link +/A << /S /GoTo /D (page.11) >> +>> endobj +1328 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [362.383 629.576 374.338 640.701] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +1329 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [335.871 617.897 347.827 628.746] +/Subtype /Link +/A << /S /GoTo /D (page.88) >> +>> endobj +1330 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [320.18 595.98 332.136 606.828] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1331 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [336.231 595.98 348.186 606.828] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1332 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [351.562 583.748 363.518 594.873] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +1333 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [335.871 572.069 347.827 582.917] +/Subtype /Link +/A << /S /GoTo /D (page.11) >> +>> endobj +1334 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [335.871 560.114 347.827 570.962] +/Subtype /Link +/A << /S /GoTo /D (page.11) >> +>> endobj +1335 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [362.023 548.159 373.978 559.007] +/Subtype /Link +/A << /S /GoTo /D (page.87) >> +>> endobj +1336 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [372.484 536.204 384.439 547.052] +/Subtype /Link +/A << /S /GoTo /D (page.86) >> +>> endobj +1337 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [335.871 524.249 347.827 535.097] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +1338 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [330.641 512.293 337.615 523.142] +/Subtype /Link +/A << /S /GoTo /D (page.1) >> +>> endobj +1339 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [341.711 512.293 353.666 523.142] +/Subtype /Link +/A << /S /GoTo /D (page.22) >> +>> endobj +1340 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [357.762 512.293 369.717 523.142] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +1341 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [335.871 500.338 342.845 511.186] +/Subtype /Link +/A << /S /GoTo /D (page.3) >> +>> endobj +1342 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [341.102 488.383 353.057 499.231] +/Subtype /Link +/A << /S /GoTo /D (page.60) >> +>> endobj +1343 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [335.871 476.428 347.827 487.276] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +1344 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [351.562 464.473 363.518 475.321] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1345 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [351.562 452.241 363.518 463.366] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +1346 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [335.871 440.562 347.827 451.411] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +1347 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [335.871 428.607 347.827 439.455] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +1348 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [393.405 416.375 405.36 427.5] +/Subtype /Link +/A << /S /GoTo /D (page.54) >> +>> endobj +1349 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [409.456 416.375 421.411 427.5] +/Subtype /Link +/A << /S /GoTo /D (page.55) >> +>> endobj +1350 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [377.714 404.42 389.669 415.545] +/Subtype /Link +/A << /S /GoTo /D (page.10) >> +>> endobj +1351 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [335.871 392.742 347.827 403.59] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +1352 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [356.793 380.787 368.748 391.635] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +1353 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [362.023 368.831 373.978 379.68] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +1354 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [356.793 356.876 368.748 367.724] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +1355 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [362.023 344.921 373.978 355.769] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +1356 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [362.023 332.689 373.978 343.814] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +1357 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [367.253 320.734 379.209 331.859] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +1358 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [362.023 308.779 373.978 319.904] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +1359 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [362.023 296.824 373.978 307.949] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +1360 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [362.023 284.868 373.978 295.993] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +1361 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [378.074 284.868 390.029 295.993] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +1362 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [367.253 272.913 379.209 284.038] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +1363 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [367.253 260.958 379.209 272.083] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +1364 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [383.304 260.958 395.26 272.083] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +1365 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [399.355 260.958 411.311 272.083] +/Subtype /Link +/A << /S /GoTo /D (page.60) >> +>> endobj +1366 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [414.299 260.958 426.255 272.083] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +1367 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [430.35 260.958 442.305 272.083] +/Subtype /Link +/A << /S /GoTo /D (page.68) >> +>> endobj +1368 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [446.401 260.958 458.356 272.083] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +1369 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [341.102 249.28 353.057 260.128] +/Subtype /Link +/A << /S /GoTo /D (page.60) >> +>> endobj +1370 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [335.871 237.325 347.827 248.173] +/Subtype /Link +/A << /S /GoTo /D (page.12) >> +>> endobj +1371 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [325.411 225.369 337.366 236.218] +/Subtype /Link +/A << /S /GoTo /D (page.24) >> +>> endobj +1372 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [351.562 213.137 363.518 224.262] +/Subtype /Link +/A << /S /GoTo /D (page.14) >> +>> endobj +1373 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [362.023 201.459 373.978 212.307] +/Subtype /Link +/A << /S /GoTo /D (page.91) >> +>> endobj +1374 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [346.332 179.264 358.287 190.389] +/Subtype /Link +/A << /S /GoTo /D (page.53) >> +>> endobj +1375 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [362.383 179.264 374.338 190.389] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +1376 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [378.434 179.264 390.389 190.389] +/Subtype /Link +/A << /S /GoTo /D (page.60) >> +>> endobj +1377 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [346.332 167.586 358.287 178.434] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +1378 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [362.023 155.354 373.978 166.479] +/Subtype /Link +/A << /S /GoTo /D (page.54) >> +>> endobj +1379 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [378.074 155.354 390.029 166.479] +/Subtype /Link +/A << /S /GoTo /D (page.55) >> +>> endobj +1380 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [346.332 133.436 353.306 144.561] +/Subtype /Link +/A << /S /GoTo /D (page.1) >> +>> endobj +1381 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [356.793 121.758 368.748 132.606] +/Subtype /Link +/A << /S /GoTo /D (page.76) >> +>> endobj +1388 0 obj << +/D [1386 0 R /XYZ 89.933 702.524 null] +>> endobj +1385 0 obj << +/Font << /F25 461 0 R /F21 371 0 R /F24 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1412 0 obj << +/Length 380 +/Filter /FlateDecode +>> +stream +xڕOO@!eo&x#MJYn{x{3ov +} +endstream +endobj +1411 0 obj << +/Type /Page +/Contents 1412 0 R +/Resources 1410 0 R +/MediaBox [0 0 612 792] +/Parent 1106 0 R +/Annots [ 1382 0 R 1383 0 R 1384 0 R 1389 0 R 1390 0 R 1391 0 R 1392 0 R 1393 0 R 1394 0 R 1395 0 R 1396 0 R 1397 0 R 1398 0 R 1399 0 R 1400 0 R 1401 0 R 1402 0 R 1403 0 R 1404 0 R 1405 0 R 1406 0 R 1407 0 R 1408 0 R 1409 0 R ] +>> endobj +1382 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [184.19 665.718 196.145 676.566] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1383 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [200.241 665.718 212.196 676.566] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1384 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.269 653.763 175.224 664.611] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +1389 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [178.96 641.531 190.915 652.656] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1390 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [195.011 641.531 206.966 652.656] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1391 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.269 629.853 175.224 640.701] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +1392 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.269 617.897 175.224 628.746] +/Subtype /Link +/A << /S /GoTo /D (page.81) >> +>> endobj +1393 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [158.038 595.98 165.012 606.828] +/Subtype /Link +/A << /S /GoTo /D (page.4) >> +>> endobj +1394 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [158.038 584.024 165.012 594.873] +/Subtype /Link +/A << /S /GoTo /D (page.4) >> +>> endobj +1395 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [201.708 572.069 208.682 582.917] +/Subtype /Link +/A << /S /GoTo /D (page.4) >> +>> endobj +1396 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [199.881 559.837 211.836 570.962] +/Subtype /Link +/A << /S /GoTo /D (page.81) >> +>> endobj +1397 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.269 548.159 175.224 559.007] +/Subtype /Link +/A << /S /GoTo /D (page.23) >> +>> endobj +1398 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [179.32 548.159 191.275 559.007] +/Subtype /Link +/A << /S /GoTo /D (page.35) >> +>> endobj +1399 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [195.37 548.159 207.326 559.007] +/Subtype /Link +/A << /S /GoTo /D (page.40) >> +>> endobj +1400 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [142.347 526.241 154.302 537.089] +/Subtype /Link +/A << /S /GoTo /D (page.68) >> +>> endobj +1401 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [158.398 526.241 170.353 537.089] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +1402 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [158.038 514.286 169.993 525.134] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1403 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [174.089 514.286 186.044 525.134] +/Subtype /Link +/A << /S /GoTo /D (page.73) >> +>> endobj +1404 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [152.808 502.331 164.763 513.179] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +1405 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [142.347 480.136 154.302 491.261] +/Subtype /Link +/A << /S /GoTo /D (page.68) >> +>> endobj +1406 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [147.578 458.495 159.533 469.343] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +1407 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [163.629 458.495 175.584 469.343] +/Subtype /Link +/A << /S /GoTo /D (page.74) >> +>> endobj +1408 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [168.499 446.263 180.454 457.388] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +1409 0 obj << +/Type /Annot +/Border[0 0 1]/H/I/C[1 0 0] +/Rect [184.55 446.263 196.505 457.388] +/Subtype /Link +/A << /S /GoTo /D (page.74) >> +>> endobj +1413 0 obj << +/D [1411 0 R /XYZ 126.795 702.524 null] +>> endobj +1410 0 obj << +/Font << /F21 371 0 R /F25 461 0 R /F24 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1414 0 obj +[404.2 472.7 607.3 361.3 1013.7 706.2] +endobj +1415 0 obj +[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] +endobj +1416 0 obj +[277.8 277.8 777.8 500 777.8 500 530.9 750 758.5 714.7 827.9 738.2 643.1 786.3 831.3 439.6 554.5 849.3 680.6 970.1 803.5 762.8 642 790.6 759.3 613.2 584.4 682.8 583.3 944.4 828.5 580.6 682.6 388.9 388.9 388.9 1000 1000 416.7 528.6 429.2 432.8 520.5 465.6 489.6 477 576.2 344.5 411.8 520.6 298.4 878 600.2] +endobj +1417 0 obj +[569.5 569.5] +endobj +1418 0 obj +[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] +endobj +1419 0 obj +[514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6] +endobj +1420 0 obj +[777.8 277.8 777.8 500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 762 689.7 1200.9 820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9] +endobj +1421 0 obj +[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] +endobj +1422 0 obj +[319.4 436.1 436.1 552.8 844.4 319.4 377.8 319.4 552.8 552.8 552.8 552.8 552.8 552.8 552.8 552.8 552.8 552.8 552.8 319.4 319.4 844.4 844.4 844.4 523.6 844.4 813.9 770.8 786.1 829.2 741.7 712.5 851.4 813.9 405.6 566.7 843.1 683.3 988.9 813.9 844.4 741.7 844.4 800 611.1 786.1 813.9 813.9 1105.5 813.9 813.9 669.4 319.4 552.8 319.4 552.8 319.4 319.4 613.3 580 591.1 624.4 557.8 535.6 641.1 613.3 302.2 424.4 635.6 513.3 746.7 613.3 635.6 557.8 635.6 602.2 457.8 591.1 613.3 613.3 835.6 613.3 613.3] +endobj +1423 0 obj +[613.3 562.2 587.8 881.7 894.4 306.7 332.2 511.1 511.1 511.1 511.1 511.1 831.3 460 536.7 715.6 715.6 511.1 882.8 985 766.7 255.6 306.7 514.4 817.8 769.1 817.8 766.7 306.7 408.9 408.9 511.1 766.7 306.7 357.8 306.7 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 306.7 306.7 306.7 766.7 511.1 511.1 766.7 743.3 703.9 715.6 755 678.3 652.8 773.6 743.3 385.6 525 768.9 627.2 896.7 743.3 766.7 678.3 766.7 729.4 562.2 715.6 743.3 743.3 998.9 743.3 743.3 613.3 306.7 514.4 306.7 511.1 306.7 306.7 511.1 460 460 511.1 460 306.7 460 511.1 306.7 306.7 460 255.6 817.8 562.2 511.1 511.1 460 421.7 408.9 332.2 536.7 460 664.4 463.9 485.6 408.9] +endobj +1424 0 obj +[555.6 555.6 833.3 833.3 277.8 305.6 500 500 500 500 500 808.6 444.4 500 722.2 777.8 500 902.8 1013.9 777.8 277.8 277.8 500 833.3 500 833.3 777.8 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8 500 277.8 277.8 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8] +endobj +1425 0 obj +[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] +endobj +1426 0 obj +[638.9 638.9 958.3 958.3 319.4 351.4 575 575 575 575 575 869.4 511.1 597.2 830.6 894.4 575 1041.7 1169.4 894.4 319.4 350 602.8 958.3 575 958.3 894.4 319.4 447.2 447.2 575 894.4 319.4 383.3 319.4 575 575 575 575 575 575 575 575 575 575 575 319.4 319.4 350 894.4 543.1 543.1 894.4 869.4 818.1 830.6 881.9 755.6 723.6 904.2 900 436.1 594.4 901.4 691.7 1091.7 900 863.9 786.1 863.9 862.5 638.9 800 884.7 869.4 1188.9 869.4 869.4 702.8 319.4 602.8 319.4 575 319.4 319.4 559 638.9 511.1 638.9 527.1 351.4 575 638.9 319.4 351.4 606.9 319.4 958.3 638.9 575 638.9 606.9 473.6 453.6 447.2 638.9 606.9 830.6 606.9 606.9] +endobj +1427 0 obj +[625 625 937.5 937.5 312.5 343.7 562.5 562.5 562.5 562.5 562.5 849.5 500 574.1 812.5 875 562.5 1018.5 1143.5 875 312.5 342.6 581 937.5 562.5 937.5 875 312.5 437.5 437.5 562.5 875 312.5 375 312.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 312.5 312.5 342.6 875 531.3 531.3 875 849.5 799.8 812.5 862.3 738.4 707.2 884.3 879.6 419 581 880.8 675.9 1067.1 879.6 844.9 768.5 844.9 839.1 625 782.4 864.6 849.5 1162 849.5 849.5 687.5 312.5 581 312.5 562.5 312.5 312.5 546.9 625 500 625 513.3 343.7 562.5 625 312.5 343.7 593.8 312.5 937.5 625 562.5 625 593.8 459.5 443.8 437.5 625 593.8 812.5 593.8 593.8] +endobj +1428 0 obj +[583.3 555.6 555.6 833.3 833.3 277.8 305.6 500 500 500 500 500 750 444.4 500 722.2 777.8 500 902.8 1013.9 777.8 277.8 277.8 500 833.3 500 833.3 777.8 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8 500 277.8 277.8 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8 444.4 500 1000] +endobj +1429 0 obj +[734 693.4 707.2 747.8 666.2 639 768.3 734 353.2 503 761.2 611.8 897.2 734 761.6 666.2 761.6 720.6 544 707.2 734 734 1006 734 734 598.4 272 489.6 272 489.6 272 272 489.6 544 435.2 544 435.2 299.2 489.6 544 272 299.2 516.8 272 816 544 489.6 544 516.8 380.8 386.2 380.8] +endobj +1430 0 obj +[726.9 688.4 700 738.4 663.4 638.4 756.7 726.9 376.9 513.4 751.9 613.4 876.9 726.9 750 663.4 750 713.4 550 700 726.9 726.9 976.9 726.9 726.9 600 300 500 300 500 300 300 500 450 450 500 450 300 450 500 300 300 450 250 800 550 500 500 450 412.5 400 325 525 450 650 450 475] +endobj +1431 0 obj +[2000] +endobj +1432 0 obj +[693.3 654.3 667.6 706.6 628.2 602.1 726.3 693.3 327.6 471.5 719.4 576 850 693.3 719.8 628.2 719.8 680.5 510.9 667.6 693.3] +endobj +1433 0 obj << +/Length1 744 +/Length2 1486 +/Length3 0 +/Length 2039 +/Filter /FlateDecode +>> +stream +xڅRy<k9%NP٦e220kxyg!"Js0LHR_i3D"[$ZZ(()Sw~?}s_s߷ !O٬`Fx(*oia΅@A( " b +v-Zq,/2IYۚ;]+lШT=tҵ:0쫵gtJ<h|ω{Q.NQ,2~HWro)'o|u`zABm1epo_97.iǟ=ϖ[:̤tޮL'S,0-תSkNcMF{}sэI(!=-\|+>Y9rkd)̧Uqhwpql|>f"eN/bSH,[nHI\h,M3*38]VNEʗy8
TXb_s$)^ [tEvn8wt[\i
T̔FLWZ+m ]pzÛ&Q-?`$PXGkKקԏ}o*?a$"Nu=4 +k/AS~o*DoMq&Vv/#/cO{hyzloOޑK m8,4p`8\5![H毹*ՙIXizUe%=ǵq,MW%Naqs:I
ڻCߌ7їқސ-4{U7q5Vjb汨v Ѡv./N!oaŽGWzduu6ۀxNNc +vFC%Qf?4Ϧڶ{DLs$ַͦ2=799tE=-
&8"CM[Fw.'m< gĪ&dy|=vGO"0Q9oRl`v!7ǘ(U1c{2Lk[#c:+Yaʠ66eRS^1'טZWWu6ۍy|ɣ
NJ=FzxaN]-I{i9Szisd541yrھN{kjeI6a"!5R=O#&O;_דcVsq"m)VQ~2OuͮgS +_L<lQ%8 NQ +OZIE-ʧVX Õ1IH&e?Jyڿ^ +endstream +endobj +1434 0 obj << +/Type /FontDescriptor +/FontName /UIGWDD+WebOMintsGD +/Flags 4 +/FontBBox [-49 -269 2000 855] +/Ascent 749 +/CapHeight 766 +/Descent -248 +/ItalicAngle 0 +/StemV 20 +/XHeight 774 +/CharSet (/four) +/FontFile 1433 0 R +>> endobj +1435 0 obj << +/Length1 1717 +/Length2 11952 +/Length3 0 +/Length 12900 +/Filter /FlateDecode +>> +stream +xڭcx&iĶض9Acil;ilhl۶m}n9_+0Ͻ֬kHi
"V4 +8kFA̐H`oa:K0_UĤL)ofjD;vf. +
KOQI=ɏAz}UQUa֕VKյo(7 +iUvГfWȶ!I[x +eĿIgoO7L#C]F>7T%&m;\?0ۄB)Gr
ev^bTXm> +wz7-gv.8I9ϴ&-nSh}Y ˥dd?p*>Geg)՝IfHIľ-YKڝqٸ5D^M̈́nor%RߓaWop-\>2vo7@3SFK0sԛq
h>)JD/L;x:s~x*Q+]rKV:
+#KF>#9ƞ2ʀ\<Z!zODR(Qb$`?71Dc}:@.$ߴS~tF!Z@U\6DKB:f[nfvёi!9Lͭ/< +]0e6\>:\.($os_\-ͧZ/6f(kŅ3Τj
4Sͳj]([Da.p&R' +V,[q<H 派c5#sfEdtSz2b]FKA.g6+!PׇtPڝQUay66F d!G-AnbS<~nXxvmF7-z#(0^ONՉrCgU"elYz5˰mr+Cm_G +[퉾XK1,?gzpKJj/vM;4Tl>|EGrGu^z\Y*8ONh + +a!?Y3Hc{WxrJ\Rpn_HUU4]*\TfOJK$y-pJkt{?~R[ +WƿW%ydk(SD7D19n%L0LZznGE)%
/7@Ϩ3.a>Q}x쌗ieHAIc.,IFk
yj?8KR~p +aNH?jsL.;-t +\` +wK_ ]\^ve#@C Pb:\l5aYcؾ#hh1"$\,)^UUJw>!Og0|ϓzߎ60J>H=;X&R3aEilyC( _
Cte +^f3]y +9,~.?"R,BJRHe +𣝧iɻqk$J{Ghzܤ|sJNf>:q]q*)GsPavf!\ooVb#<6aDE +#[i7p f4Y,zt| "?0U31Va3ViXm==tD&b
6C%wHiwF<0Y&lGb6.ԛ6<VeHKtP"Wy˩%OLs֜o*r[ ]~r{|}gxϳUllV]lXΏ_bX2"_-WBҟo=ƑZٍ̆AG[Q`;V/sP:vK3^k&98IYebVWYcdUq1< ۆ@<{/ޚfRXC6((.zż,+"L憽i2sL~[B8$-?o)c>lmEc-'eN!ݻyVj>i1\HM35ڳ0Cl*:t(RwQܪާ9$TCiBȜCb)5ge'},NVo#qX$\pMKox:byvwAZqAjg<lɦn(H&o+BZzdF~Ep65LheIY +p#`>KN~2hP<,rEv6= +XyoPY/W_֍gWnQθC56;<Q~:Y(|3/vʝ6'}2wl%O_6'W+iP+{'`F&ghGaGf[,WM:L{ղ]Ia\[Uz~"H; +Y&{uD7cvF
sv&Ml[Qzyd!ߖ:)WQy+kYBѯΐk,jOwp\C@3J/d5E:d!SBT0WCU<GsW/7
x~i-.O<Ԙx`nXpL44*$ GJgl̛;0>["3f9JsHfS#|W
6FŒ.荜42lDlzb~t
S= ALNK:l w<wP휳b¥"^WToz0$
>CALɹFD +XK{R{yj2.qR_o].0g~a9hrUy +G^F"-hp?VS*F#b⤩bT7 /-R<~8m9MD09OHEXJ*z~҈tc5~PCCPMYl)ȼUxgz9PNa~;rK':=2.7kdcŮAN^O^ +Ѱ)e۶6b̻68Ѝ'k{v(̢o% BM"+{-OJ +l[ZBilF"l=;]GP}St9FZOkR&aj +7X`9v5E4]xfȝ]&hx1dF1Usf53:<,߭6yTo +sc2$]ag3!m8.Vև0F_tf~rdȑGl1bi}l7=Ebm|9]T_|Kx~0 +ǀ'>(L0Jsr +=y|+wxOӫ; +{+%!,AS,9)Q3x:hv'c"羈 L6SwAZQAd#!M
yJ )cQ%RdA2=XࡨΔ<9s~A04) ,?9ӗA=]}b-cL/ c/Nj'ȴ;SmVYlh4X;W+BL`{0R$AjcyBqAoT0 +AL߮wHTN\ +~yȪBQ?ߖVmȶǬ&ݿ.-brP#=/B!:l +sՠ?XP3C<:'6.Ff2jhw8̽#_A +Ԝ1ʼnޱD5ϼZ:'^D/=ǣM>&,䠪cI5sˊT
+*'+ggSڄ/)Oy/0F.=Ow'wuv?.gqَ*7^kف]Xw]_͵iVe=C/u%dk$ߟcta$xDw۰,?>#Ep$W%t8A&a̶sgnS31Q
7 i
ˑ| +
N*?;(d/"Oze TZm0~y><Wy +}6cNkE5k+0ZUrVF_~Z;eDjMyq\gpJK57Bn{d| @nAk*cQms1=C:}^rĎ\ +qNO3=|7Sp} +^]ݗ_7/sM%9l9V-h(s6֧NQnzBxRdٖ1_>;p"0}3Eydq>p)#Ծt{AF*KKr<ʳ%8xXig_u^n3rJF_7jm9'Tj ߘ[.gy*M400Ao@I([#jt/`WysJkNN;X2mH^W
O;\~AG[K[afelyEd#UElZp2U,"^ŲGm18}`\cAF <f=bՋЮx2ozrOR`7SRѰ)v6TOO w*3' +Mu $. 1oK/*7' t9CetLlYC4ac9exv_3IK{[c|bIy/EwP/ȟw5> .O/ec8R]ڛ, +2"vDQTpRIzMa'7ɳfZmI +0zBul}7ރ'0ƐIdrn09+ͯ(dx7׃rCީ=R`lz["k]aDM +&hNJnEI +6hou&!Rk
OYT 6Gu
^DA-s +CX۞ta`3ي~wBIeh\5?ҸS +endstream +endobj +1436 0 obj << +/Type /FontDescriptor +/FontName /ESVHMR+CMBX10 +/Flags 4 +/FontBBox [-301 -250 1164 946] +/Ascent 694 +/CapHeight 686 +/Descent -194 +/ItalicAngle 0 +/StemV 114 +/XHeight 444 +/CharSet (/A/B/C/D/E/F/G/I/J/K/M/O/P/R/S/T/V/W/X/a/b/c/comma/d/e/eight/f/fi/five/four/g/h/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/q/question/quoteleft/quoteright/r/s/seven/six/slash/t/three/two/u/v/w/x/y/zero) +/FontFile 1435 0 R +>> endobj +1437 0 obj << +/Length1 1576 +/Length2 9061 +/Length3 0 +/Length 9940 +/Filter /FlateDecode +>> +stream +xڭe\ַiN;$;[ZJIiA:O97_kgS+2$@ @T^D +2C. ?Ap1ڃAU[e?r5,$yIt{)
pu.n%@B6Bdu쿚C{ rgػ{1C. +3;Ddso<\l>h1,A7YBd0goUJSHx2xhXNq6_eVӱww;%NcSgv\
w=[=(~no<VZ-M.:D'L7#7Dzhp
+FcigFb<dU(Rҙ}]Rn鸆qڦ]5VM\4d63L`ݴ.ŪB[E$B2O2<hmP4~+: +I +XJ>7y;ZoFnRi~WeS=p/?V6:֢YIU`P(Qn0K68MZ @~oQ(qʿiJ3ܺL<CFH;tQ!-M|NVN{9\V^ +/;1-XGNS>H +UeV8JKD5~Qvp#2:^.)*ִ;yG%{ӯɌxПu{FV1HLﻚ4+[/"lS;ؘ;(JPT"cB)<Uwlq $l\E6ԎƺAQTGtAz. WnRZq4bN5J !rvؑg/TR5bEx!DsYpwu+!'?V(Oxa[NZdJ5a;!Fڈ-_>[:TE{_\_g7(2-Ob^8; +,w_r`~T3=@e7#qӂZW^U@G__l|%V!i'. +NZ!`ZW 00#:խ0)8s=x4,J$=JutnX+#=y 8WaSW9uV9ASJr$3˩ln9edSΠc":EaLbZ4:<R^RGݢ.h~S9pc(( +7d^;%ZN1i>N|%"XVsB.:IŪL
x0THP +\ۈDSSeS]USNyT=&0QĠ(0Al @v@RxYlWj6Ps~.g{+蠣5m %|x>L4̯sqsc8r=+Oʉ~ۚ{BZp|C?gz
vٗ>vt2
5qH-#sgZ* +C)ǰ)5G* "Y]r2W!=`+o(%mQ3C1_CI]0}.v1hn\Od8t,P|tdX2h M:є/LYu̅C!&=Mǧ%3ѳ=. =2w>oufC-ԕBr3ͪ$R0$]Z~TK>4qHO7;ɐc~v*{yT
n6w;?#CžRk&|E 'rˉOu2D-)Xbp {V&7%Q&3s3QoTqYyfp7/ubtTkv&Caf8S|O`n/#zwʰȑ钎a?~,yyk#kʍV +YƐ|q +PK7:ɝ#Qԧ:Rk̂|Pf[*lzwaL]tF;6>Lo!a"JK]71Z?zwIdm ݿ}UI7?3vorRBo7$.A|tL2|5eukjcA<.4xdt|x|}.E@ckպ`|μ;M6a5{}du-6}j +O+,MW4`+W>osp{Bn^ngu| +&۫+pB7ی} +Xb"cSE[/:0އh*3n뾉ZI×{bc,wMr_%m\ɮ>jӯ)"R H$1YrA)06+IbxL:aޅ\'^D&Dz@u4;DqG${YL'̚; +rc:#OmFn<<'_w70-Uء1a
;x +x>lh~K[ +)=bN%3!N*vqrZ +j.RH0ړNZ_:߄ͼ3>[?YFVck5dľpZ)3E/b<F-JG"M.OVyoXXMыY]-|ѵ
`7UGDmxto,7p{\O>YB
D\[ZF)'|g̗:φ2baPPZOcWV +^7d꺪1^_ +ÛF^TD/ٕ/ev1/X
mC)?:w
z7fͪR/ݱLeQ̇3K> ++Pw6-\zP4}8Yʪt%bp6Sj)I942gDeXE2ٝ"H4㥠$S^ͿF;Ъ"LrjS\.)A_K{rƫw3GZv%gT"b)tWɴJ\1{'"c^SLdßct9νOH}??IR;V
ύP)vAQ^xv" :V3oÙ[ɦn9YmRq\6-%m1ihRfq{gjye +_KC;L$} NͤPU߀4|j/߃oEmvWX5Gne*A*HA_t'""DR:WgީN.:GpNpj +-&8rP8{0P[WyA<u +2hcdV. +MZGjwPYu5q?C|Ky,,95)Ќ?3DkQ#nXДyƭKAtn:3a<KHRf KnNC5|.J6iwhn9g(-X TA"SU<}TG~?H6WCZq)>aW/2)/1MtA:M?Z%F`(I'KKhSE.Il rdMq"g
hjBcq3O݁hwa;+{اY֞`sM( #i
s/WU4#o :*riTn?_x('n;'ucVt9Х 0xޒU,&<^o0#Un_ʝPe%z]~ޅOHT'P8c#YZ4:&ȏ>;0k5*OmHa+lhBM5Bm-[շA4e:6;zHADA&z]92n)ͅk iF?$63$dʽϒiAE|ǫVJO^jYtVن.,{lyfԩG*`.uJIͽA7v L*I1 T
WrzXmJT:%#I/uۜX)0DM'+g^/dB%P~MIZSV}{`S5FR;)mƥ>~<Ϛɟ"c2dQq_oPԶ#7x?h+h +V+NeYfc>>
~=i,W]FFX
9|wۆbļPT(A))*u2:We;[ݨmv6ˀk16SWo*|({[5ǒ+ykNNlsLs;ܷqoB
zX#,V{TUfpG鱓 +nD*>uT3G^g=dso3"5sJSBYgW'a7P76QNJ&A-Irxzɭ=>Ŭ"/@N79Jb<1}%/:vI31[9ݼ+}$C`+چ &{@c}iab&xc'JMt(3n7K,c[ޅ<h&\÷<Mne|
lk.hĤ[` +6n3Uˑ^<8}'nroٰT$E9hSxT4IS'z+t-?Ю"@
g줮e-&} +l3rrёf&Eʀ9XGӦW#q"L9hVJP^7c.V +)_ _Dؐ..WF;]Rpu2|%酫h:6S@[Bo-RUZr~WF9~.8@㎊|_O
56ۼ4oV=Y [D =?.=nҫe`?psJ ڡܕj'*{uϊ5xEkZ<q֦ы} GhQynz_8gr*Ǵ|/.LPZ*/L[5tvZʾd'o!ɳ%3*
mx( \,$p&)xS}ⵃՓ+jMXx4e!~ ==lh!y"[TWu19'&0&W!Ai :{/{YEtN4a_B|D<_'b b5<5g=w Y9T|=G
>6v%g4uz}c=#q[4Ƨ~[ܵCw׃+]xՕNWc:8?yde
lV4ܿTzFYUh7(p К=:H$NO +䭥fLZF-\~sKM:(EI mK.iPrͪ"!`\>|8(fΎ h"$/ GQM[
mm1˷'K&dVU~m߮n\Ͼre}ETNKڬ=`e~ajǨG)AH?"Ɋ횟 +P ^k$k +endstream +endobj +1438 0 obj << +/Type /FontDescriptor +/FontName /ASHACA+CMBX12 +/Flags 4 +/FontBBox [-53 -251 1139 750] +/Ascent 694 +/CapHeight 686 +/Descent -194 +/ItalicAngle 0 +/StemV 109 +/XHeight 444 +/CharSet (/A/C/D/E/I/M/O/P/S/T/V/W/X/a/b/c/comma/d/e/eight/f/fi/five/four/g/h/i/k/l/m/n/nine/o/one/p/parenleft/parenright/q/question/quoteleft/quoteright/r/s/seven/six/t/three/two/u/v/w/x/y/zero) +/FontFile 1437 0 R +>> endobj +1439 0 obj << +/Length1 1480 +/Length2 8623 +/Length3 0 +/Length 9476 +/Filter /FlateDecode +>> +stream +xڭeXܺi$;f.af.FnN))R̷?={7Yk54Z3+;(V֒r\P* + n +@++jae$E{s7oC]` +XN]0ݮ$|pa0G3nXySRTJ6;7L +d~&`"Fv'Cr2Two=aCAbÌ+Eit*bh\̞c\'>a~ɕeBRcLS8oA"D4NނsbɴS@j0;J[x=x|$lh"b?nяĕ*y:E ?5&ޢIcл\sS8g<{=d*U"}VZ~S1;~NWK]SXRx`>6y4 iP1./*aGv8IENqͲD-:開>p&8-ҞxG)7vCfO܌=2}O(
Jr, +]7QfT9#rY~Aޕ4aa٢vWK=~8Dֿ͋,\ԉq3'x_R9H y!JcpcqkF35 +,~X9IWqç//lnz:,_q\>UKp6g3ȭ]˦mH|Qb4;MQL;.mL#,j +tO*!czW+Op"msQbF"ЍddۓپT="ƚeɂz09?})g]9N7D@¾7jaM/Z \wQdžrzs0q[8 +]c7kwxB+;&ݤA9^+Xqo4F[iP($*sۧf:#/
5B.M0Y<OJ%Ӭ#L ^i2Q=fӤ g| ?E' +ue8faՕ|G8TN5صp%a㽮u{8>
T&rM?r\5Qp~W|Cb: <i);>s3Oh:s'Qt`sںix"EXa҄DȆ;L;pE7NH!>u)u:caժi9m_;ͨ(rb$D߂?8YXΔ76raWvu~ +hF#6~d~LObj +4ʡ}VD蓖DIƵ~HłpR"#~.:Ci
M^."<7<#V*R"6?`s~oGċ4V +yF)4ԣV.bjB9,:p1L5RAݸ;0*3*;^et=woc4Kcjc JeȴrЍM}!O^;(ykZՔr*LxF=n1"СW1(4oijkehp +u#_wzHZ +&hVg,hMsEx~&~0'܌1L9y819~کȲ/XxE_E ԟc%niaד*Ŷrԧ)fBM7XQYZ{ĸ|8&-3(
xYfNz(~f=7jX%1v=%n ۋ.=w5 hOjwqk[} v)C'ྗ, +LJD#.8na7js諝a7xs26Kԇ ~Oض$lŹ.)0o)xjV)[YfUfjhqI줭y#L?Û^x.#T2' pu2W'HOwmk0/Ėf.Nfztm\!sD
tJ}L:%"Kxyj?L2PjJW&эM|ͻ$@~0qL4克_eOʬuvEbQI.^KP!N`IEm9:PqCoC|J[oƧlk0K(ФYpPV_2C*;ٛྲY(TiuO9hեٿ$^95ʯL!^|uXm +,pZ^xִ/!4b%Jt+wAZy(*TYc,)'|4Tr~R]YG%jP>cξ/Fg0~b68i?*.a#}Oik:̘
<9NҲn$&Wǥ7Y o%\TYQb㕏~4pZJDŽ=M<˲8QʉI>:7)^E.>fx\;g|$H0Ƌhi xBSgm!*L/
nV$tq]~?bYEZie&)}8Atծsu:)7i}淪Xln&"S RlM*J[PI̋E~9Xj +sHBu_YP縰ImDٱwBMkT]- C|5sk7zÅ@^1$Mz*b$=~d0rDxLs$-Ga^]0Ac%ogCx_ꋄZ߇|fJeqv,вƲj`5쟿z^?c_S 3"]% X'$ hzOՃʣVd7"*FIdxᘍS)mwqC{- _@+XtUk{Jrّ|;#0!Tg~M.[}`'?ǒ.&\zy0*Q<⊅^mFg(rmS5 +nMOD{g?4|'bw +'ݢsv1xe`{'4Y5$Q!vNqM2ߗ|m0xW^pWK*'b +Ub+2|@74cnWk0CNon +L`vD}U=yF;){]믽T!-ϭ:UA#f6`Y7P~zUrE㧠Wo{8[_Jmri ↶8jKa*2EGC"qZnQ/RNS7Cev\3^'rhL8/L8sClW[1@DOg&طb QԳwO&XZm #J4'Vpߜf16'I&DV7J&7oYޤ w8,WNPp hks,5=꯶]+ISٙIJfpVD4Fţy(^5#W}Li^XxM#ᗭK2*kTJdx8W>Q/_qs,O;`/5<)T'/cFwH>P>d)锾 g5E@!_S;Nf-#̶w?ȕf6#Ʋ۳fD6IM&
lx[J̰ݏ,1b{724P-s5a.'CF=t.[l=:<1&8ISR0[C +BW5y$V:)5|[
ũ
t%Z>
=FjHXq04uF^8TRyBjMo`5TZ""<_vZ^ǗTa6]0a㧾}w;a1e: +U[$ e]\߄&>=&eySgSr4ǔƾh}/-8[NF7[8 +: +kOV5jc9k8
jt\+/ª\Feq!5D.ЛfbҤ r ;Z +5dM/jCu(^
L6n+^ijqu0tx]S.37RM"kh`-anK#,FguT^zש
bjP%`Ԉ}`C9 +n9guʘmln;1Dg:Ї[
) o#fI2Сg4
{ZMU((Ųe +n]8+Ɋd6XZF7F/\k5rnAt +o6JC;U8_kLF!?κI|R{d3^H\nw@mqMEX^jQ.-$rH^ Z!LcяkZ(qϲyQch5 +]ߏftrWгhW؉8PE;_ ^Y<㛥As2QW//RK#I+
.`jsً2Djs0y>$n +Uj[_J^}Y[_F@z|Pw,&1"qoʧZq (|"W#B^(͐'j=~CPԻ.oU)Cu9C\G <5lѸkɼU4NgθсI yp=tjn$vߞHM^vntrS?_]7#}ڪ|* 4\$IݑmuDTwjecR$JsHBUꂁev万 MsJ[IaOʻ}<XJ\aG/뤣nEj8V +xζ@%{%CYlK>p:[@ɦ8"ʚIUxN~Dv,&>JSͽz +"BeN7N~S'tp{uխΆ}ƭ + +^eZ5LPd:D<:zK`m-#->nP8c_8)7B'd6U"|![{U38Hg\7Œ b#υ^mSqDbvQnQ)tY\.d\w_$A罪&/2=Nv/Ktĝ̞j젅??kos|W;pTW7pK_̑kƏ/o[ug=}p}<D+=櫶L"A\#⨃"q i1[#aD^Znu_~ +endstream +endobj +1440 0 obj << +/Type /FontDescriptor +/FontName /DETZVP+CMCSC10 +/Flags 4 +/FontBBox [14 -250 1077 750] +/Ascent 514 +/CapHeight 683 +/Descent 0 +/ItalicAngle 0 +/StemV 72 +/XHeight 431 +/CharSet (/A/B/C/D/E/F/G/H/I/J/P/W/a/c/d/e/eight/f/five/four/g/h/i/k/l/m/n/nine/o/one/p/parenleft/parenright/period/quoteright/r/s/seven/six/t/three/two/u/v/w/x/y/zero) +/FontFile 1439 0 R +>> endobj +1441 0 obj << +/Length1 872 +/Length2 2375 +/Length3 0 +/Length 2962 +/Filter /FlateDecode +>> +stream +xڭy<m'Y2*dFٲVhed+TcaX,PDd"z-ٲ;s~9KR^OID<PFVVH +%]ydKLЃQu,I8Hz'7Hp( 8 +pt&N$@gOSä4'<E@?fXX$$O*$$<H&)3ǟY# +֝#:<R3NF@<@ +UD~_"Źyc]~D^7Tq7d
7TP
@PCu +שEEDF[g)-ߟqD+g4aneyTR Nl\JLNkhbDt$ЀvfsS0;gӀtvN"vXzsnDh9l+טkaקZL~}AEDա5Xp;TS|PgR?&7v
iuO`W(i=iT`_;} 3֥*JCQ0~OҐ!Y7MH-Ctp6NR|җH%厾KX]kƕo%H"tN<3?2"va3cN[{eSKOߩ}fbY=sOy )jCmeVB]V[ לjpG}[wCFF:>1g/sậIh5Ce.qe`e>=Go9:K6o_.2ypOaW/>8y<746]%|<Q_~m~Rm~O[g_7+@?1T24,&.+c@ +krlImeAХDng%!Cfsώ%Vt9L}{^|WppTMI,u'!j1yhy2,8#~NǕ/7Hykj[)~w]^,m(f9֨D02Ϟ`0=ҵA='$v}pCŦ1?υOb;jL.,@K/9;>EU.I. +o"q,&i*.?_ۤ8,7wG\:J5\S˫?{ɄCa +JsOzikwu6DzW3!VY-S+ Wu__p +`+ c;r])κ%wy骵*ַ#+ڷmL.:>-|UdN(]LR.ya$Qdڦ4,~sV_vrpJ[]!
hML:Uz=
Yr(=Mߘ D䀖
mR;fmoM<O,[JZe60zygq>'q jV)>%J?!?Usm3^< +[gB̬odv͎7|t%9UwɬAevxTLY>&"͔<%)f'%l!iZyIRy{?ָD~VtP½_ZPkhyE@h(a~JQD@T51EG]3َGggHD)gm +|n O68=N+{]ͼR}()ZS!odRqO[x9/0oGKa֨( µ +endstream +endobj +1442 0 obj << +/Type /FontDescriptor +/FontName /LZKSKN+CMITT10 +/Flags 4 +/FontBBox [11 -233 669 696] +/Ascent 611 +/CapHeight 611 +/Descent -222 +/ItalicAngle -14 +/StemV 69 +/XHeight 431 +/CharSet (/backslash/e/i/n/p/r/t/u/v) +/FontFile 1441 0 R +>> endobj +1443 0 obj << +/Length1 852 +/Length2 2021 +/Length3 0 +/Length 2605 +/Filter /FlateDecode +>> +stream +xڭRy<k9l^hb
hHB}R̼ƌf4Ie$$YáhZLJe) 9}ο繮zzq4@[q$g,o)mp@#M. +8S8t%A0O +Y\aȆ~si.ת=dPP&6c73"l<P@ DՉ4yۭv^F;_t0 ??KCb3x@ +Pl +!]")" +&ٮ +H2cSNʏ?HXUeq/ל_Z8'h*it=95H/u4IzbJHC#QFi]#ltᝇ+چv\Z=.|!h{3=Z u%S؈T)Li~8oXSn&ɷ#yImia)#6ZO璙z]U\xmC51Aa/x A)䔤(aq\T.:5voHbg*\g4Wc52+wt%y<U=7)fϯ+cVw~Ζ*|ԢdWojfj:r<**:E3_͗$>/_q}4=#l\6p>+*po%f&{^2TUwٚFndfWyfxڴS^aSsΎ=gfVqNj8ꃃ9zVsG߹Tpu\y1H!\7WS~_8۠@"n-ȩƛ@'Ʒ~캵3iAoL><ћ-S;
On>TT85&eV.['-+`W<-I.}<ښʾ'C)zmkpMX5ݩakV3*\y*ÔK{ʡnKAƸ I
uUX +endstream +endobj +1444 0 obj << +/Type /FontDescriptor +/FontName /FDGTQU+CMMI10 +/Flags 4 +/FontBBox [-32 -250 1048 750] +/Ascent 694 +/CapHeight 683 +/Descent -194 +/ItalicAngle -14 +/StemV 72 +/XHeight 431 +/CharSet (/E/comma/greater/i/less/n/period) +/FontFile 1443 0 R +>> endobj +1445 0 obj << +/Length1 759 +/Length2 1351 +/Length3 0 +/Length 1887 +/Filter /FlateDecode +>> +stream +xڭ{<TCaSuB\04MSaTdYX̬5{f\ʧu*{7s\lN5$Q'كgy<{_91p? X%@- +PE +6'rR"
dB!U{1Ȱ? fXb +A3c +GgE4PҐUe5eM}*w0p'TERk= ^+(w8ePX9As٘O%{Vĕ%i3{zyw߅v6h&MSvE7"3^Wk̛>?GꚄVEOɓk4%^ho:9VF+Z;fyL<Ɗ%-uyTt h61=ԐƑy%"gpG
DS]ƼFӎp1C_suNR~O^;eKNd#aǹhnJjܭ/>^+\(y<FX%{&bMCc"ԷB.rtǁMzRok&MŮ-1q5f9eG،Ľ>ICwGUW33Iݵ
[ +mjg&ؼ쳣(&Յo٫]^R{s\e0yơCسdIOTC )ynރzUO8cY{0)wncPPztJ#q ¹:o62^
]]|sr&ݟ1/3bOPϭjSL~RKy\ +VJRƜ٣2u0C0Z ~SE)Dp#~βC_+)]Lg/3V[ +Wpfh7+uwGEzQff]X&&I.G5kyƟk9P +hwr!gHaWz_UO+ms<Ҡ 7 K&G2H;`jX
Y/;_ZĽ;zOmv1=?~0e< 贚ڡZ2M]dcYvTi_"}9l<5fmo5:!ݪaOK{|r0WIJ 5Z`ڷ+2><mҥ5Ylderv0S"5ОT_TMNCZS4"hlV~[gd͡}w>s u)2Z<eչP$)K<F6|,7v3m=ZǣC4_% +endstream +endobj +1446 0 obj << +/Type /FontDescriptor +/FontName /JVGYNU+CMMI7 +/Flags 4 +/FontBBox [0 -250 1171 750] +/Ascent 694 +/CapHeight 683 +/Descent -194 +/ItalicAngle -14 +/StemV 81 +/XHeight 431 +/CharSet (/i/n) +/FontFile 1445 0 R +>> endobj +1447 0 obj << +/Length1 2262 +/Length2 17037 +/Length3 0 +/Length 18241 +/Filter /FlateDecode +>> +stream +xڬeT\ݲqN-Hиw4I.A\9_{F?5kVfZ
%( wadeb) +P:܀fL +b)[ٻ{:UV^7Ƿd_$MAfV +MzӢiQCoZTЛ?EiQCoZ4Л?EiCoZt!7-m?6ƦoM[Z9),c?1ә8 +}$p%f[?zXB +!RA V$y4'AEh"WS(DAQ)X7ыLwN]?;2;Iv\+e6Qh0Ɖ+_ef6T@liAn<1T>#, u&U;H;)o|Ɲp ) +V\ӼJWC7۱u&Y(hLhb$>Z琼Dg9L#&43CnxCpF'NԘi/~0p= *&U+<P~>Kͩn6K'a>6k%f)ަpj8G'_*מL8SM<I#NyFUz~fkRv!8ԙtQS +]xf!i
jk6{
JD+h箛 mqExt/qLxro f +>r]N0˛ +ʖEoxs$Fg2yVk$,hu<>2ۮ05
=לyfwk! i">۴<3paKnAn\DTpg7x>SsC--PD o̧ӛ>G]OI9Wz?b|zi21{8zD5
cJe8!s2 Fr|IgJ([
W#1m/_DDZ:-̃!7(|B("
d5p(SG-Q1O̩;)3I}5 S<t'@ #NcdwڷԸ@}1[>I +XIT//4f#pZ+id}ehŊ 9,l +|bˈ; 갮9`%BO$4ALU|cଦ{h^13=ӧJW%{)TMvTs'sy+y-^ӈ]!
x
u[D3F63sҤSqD|ўعO|5PT%q67 ymޖFG-*ݞTpz5dcddt3^ 6od0ӕ<-hbeZd6^{P+4Wym&ϘekRߑ_PzAd~<Tnr:,'0YTknSr/qA-bh.xR!eCZJ] +㦩SB_deMOݯ̲LQ*gBaS,lɯvG]X5> 7G!$2 |]δO#7Q(E+
Y"ްa~*
zrܬ尟_=vlbV94
dP':' +:ы\B=R̞ғ)$*&\*7/ЦDj3VOWl)Z-dm=bL`27)&Ii^?D~3^4Zu偷{|):#:)3,PArﱂ6;$Cz듟PZKx+ZW9 +i]J稻 +bm2y@&"CQE;6vY-ƾJt"pfcTe?̘g"W|87G--IZjC0}U8܅]}w8V!D/Z?q47`]Wڍ=]P4%,tP
85nruty/ҿ1H o^.$p͉NJHif<tdGNrAQTBZXi_)n82M
|fB&fsCinMvNϊ3+(sj09YMMsIi\I`czժlp9xF#4
1Qi\-~e~ =b٠eE$PSK(v-(|g|00v@0@W֎F{76UY
fIX.fYy,ا>e2> +y4|RC?YBzP1AEN
1L/P;j +7^4y 6;j@VQqAqNۢ݊m[Adw +2;}U6٬ +0$}]&e +i+5Җ;"dUI]0t͙Aľf%Gzj\}O#v0_* +#Rp_֔WD`vZkE\Ud?"GYZ(~zw[LAtX!%g{YK]YQ佚ʧM?zgxJ}^$ +˴ p/b"ٛN2uվ[KAJYjR,nyrfpmg8Sj''܄EKo~s@[29>d@{g"Cn+Zq?rniV[zgc9V.'D;9cUA-AE/e +^tr*YvdD,N5Iw +v=_fT}ZU<:YqQ>@iq>yɌ)ժg.WwkoD4Bk9f~]\XJs_`wv՟H8,ݪ~pWA)!'q&?4ek⃕GUQ=vH
!%d׀kbzGok2*=4N)
7/s*I'* +|Ujg(W:pyrt(l6$z̾ryFm1GM%`_9K'[KΛT5H\TJ(tl&^?*f8\pb0'^S2Y*WM7%bF{ݷ+V7{#DMS.yqdd-w]ksߊ.3+n}+'*>SlS৶
&Qk;O*NʠD9lޏ5
s3_ +w<Ul =jk>ҌRuF~>Uc!vw;Yk@5v><H=Zy92 +U1FqM1W=\L +x\kF>
Ͷ旽â_
C|,w8f3U$
7e)25]g>
fGfsqcVnvh5,5I7(-B*E{,kn2!RQ11.J}oT~P]WQkwa*aa/ + +^V}V}+0O?l"$ R>eL4)5{iңcS]CrM;<>'Ng!I?A{vamk\vAe踎tW\X Og;.US
_G.Yl90yy]FWjFi2̴JhZMB@\#zfVw9g w^!Mr_!|۷u#-Wxe''0F84J(YESqkޣ"L.tNHJeѝڅh.=U텳85Fl[[bzI|J(VmuJE/U3Yˬ2ϴ/LF&{QQ<_G8 +,vvVӒ)okzJt4hƼa9:wO;REƊ&&&>Q(N1Hs 71_5b;Np{w U9η|842<Jus/+>&[+td[Q%Jd/&,A'ce$_aI yX>/v +Ib*R*y0I*(EcSQɝz^-/} +8>{EL^ŏARYɖ0.OYyi9\pjrYlfd[qP4[R"@SB`ǃ}ꐒ}q/rvo' ǂ}<M]s4+R:woKJB`:s 5襛lCQqSbDV,<&H/J#3wfJ +P2b/I"CodzHOCSg֝Uޯ.q)10I +LA7oD$Qv>Sۂ?vȹUYbU\'8 +-ثܹRvhʼn\q'͵EQCK9ë[ZjWR>BSpE
W#뻤ӊ0H[@pq
OlaQ7S/> "\|G+aQA'>KzJBM띢bGi]]8^>D~@[L,SlLy +jfTQͲPrm5AkCvkߞ0ԷHSgVп(\J1`1u"ϡIB,1|y7[G7Iҟ 3YEg[FD$Z/Kw{/zEdu9@[Q.AYk=>fiM1q;0^idߢvXd#'.A{VI~W,mO(;~ +iY < +z*a<"2Xj|⤜Tӑv"aw6Z\mSWw vVݯ;Rߢ#`E=
dsȟPfg[J=Q
_Msc/LEȇF ā%gAh;ԩv$#rN?>2pkT䔒7ձn蘦bysrxmx><pt\3*Wv@qvS"Z\╁fi쬫 +U@R md鹘7ZO
ۘmSբa +!.)sk>RSĕ
UTY0sA#sc>W<1 +pfQ )#<7R<ז]fnQZRq )"IدâUyy
B6mV|E4he$JI;p!E'4k䏸\O~`)a<9_iD5K7>TB`E}`g7|jn ٦ҡt2jQ[~|v6Jz$uQeՖ{)pVќuq{B +9^,X+wf;Wqs@ }5Jh`%3a5nɤ+I +?g:UDv +t"XV|OK= +쥍ꓺq*)O40ݩ|5Vwp$b:,t$f,lU.Is>,:g4kh8G'
ʩ` rnHN<xNQNhokO#Q&}` +]y9&*h|bPB@c5xgw\iRQSwx9P_C7IΙw 5(K+Rq+ً,zEj6+eɻ=Ii+iA<4eQo0ƃ4wd\(IYԿJ~`p-Y05 yL?m9~M +$+Q)ϻO4L[},vUA'ƃm2Ah. }j{j!Etލg +kZJ
@EUGApIT[mAk𮕾`h]{Kbh0~qH.x,skoBm +zbЮsϸ0&)1R}2G+qq]Y
\w7[!ք-=yLXaq."MR-55̣ئJS'r)Nf,hZC6 +S1J :ܵ.zkM:mTqz\)ZUBS%J~[wgerksu0? +v\4\GA+ +#DǍsRFQ%F9f<4Z]>DE۩ĮTX3.1s8;S$ش'<:}*rϦKPzn}=N+nR,+|@]oEkbyW*|@KA"J>d$LlF\viӄed2E\C*hDwpf@,ʮmpve +LϷw)VzH10O~l\2 +=K|k~Hv^ց]F"Kc*tbϏ@VF#}ș.k|"~GaWHgW,6 {&sn mg#3fF1*:lh?EpRkYUQLN̅A#?yJJ)#cy,?# azG w~$Bjc#\foȄ^!0 +[2;ݾʝΈN\b-m7p6A4VXHs= + %
FLt˗60@Z)%!BD)sF<{ ~zxjvt[/*MnXyu}S2={AUwtPώ^Vޑ +擊Md
9ԹK}؎fe
JЂ0QUݧp4<HeS˜,eb>gmҙXs \qszHkX-Y1bE
EObh(%M=_.DFp<W]o6;vmH8cY\جR0~ꪓdGGɟHs._1qc/7wo{Kњrh; bwlĖ֨{"o*IX*w'/4!"TS /A$O~ePL!q 'ڍ#}ź +9Np+xRN4 +!M
E ȸ-:SqaPӜԠ/\<!HNO3@%CU5Zw~,.v=]}*lk㦐o49P<tHD<FكjyuKBGXE蘳UY'^BoqX]LElj~者Xt+iɫtag`&|K`ʢծ4%<eh|Lw!4UFrbsbl؍?ka:tڊhN)0.,hѴ<nsd N.\,DBjǐ1nxܶux u[C^`9Buel$1z}lI +TĝmXUuJ%ϛEke-h!8+?F +Ꝕ.V:;|g;j)g6FG@ٖWRphM#\oJMw6^<3ydag/Ưd^\bqlb/ZS䝞z>TwZ땞f:YApmbe9V۵z)SCzU>ɹ(H/ѧ|D1#l(W4 +_[Pܓgssi%$g7AG/|8#(K,UQRKu3ExrTL^_0,[>Zcҕ.<[N2L][c M[" +Zo5Q6_y휛wi.Á4GG〔@c<o3.9`~ + +.^Wdl9';R_uPE#3Fw=ĴZ?yy>cn%rR`!E$eT~-]Y:<D:1ضD_qmNV;fE3-,`ӟ2_ģ,i$ޅ8@BI71;;aӆ +$_{
q6A#&a04~50p.Jkx0O2Pޝ/Uu_WlDJX~K|h:}N4$:-I!7Cupi]xn-V>4ltWrFE8-Ψ/NuwMxf`O62n&l{=Ohxa6!%GKo?z@NʖGp9#AJ(( +dmЕ7<Aenr\4~ڑ"WƒKp%Q9Ħbvu/kH1XMXVUѲKt@'-># +vE*SdOFEFmmzȥe7Z<&߂^_0-u7N?]e>aoΤlhbJ8UVH|fxL!J-ec?CyOCEfIR}DVnX^MCc +ɜKPI;Wbr/[RhfP>?`%}w%N,0iw{9}脬EWj fU`BDoЂK(uQ/zrݚv.uGc\e7^.O} L,25=X*϶ޘvIyu +R8m`Iq"|*FGB0{S|P$eEԧ|A3BMa-brn"rY5jTDJf#ضit{9`7CGUwKA7/vTxvG5B,FY">'_q<2*b,.Nt9&>H>J;xo-p~Y/|4 +CXJعɒ*Z>,@'yY0G̬SF*CDT-8}0.Zt2sF#9ѯ
[oHg?~xcV(-1#Vb9(z.Ė6VȢytR}q_BoqS +endstream +endobj +1448 0 obj << +/Type /FontDescriptor +/FontName /MZVFXC+CMR10 +/Flags 4 +/FontBBox [-251 -250 1009 969] +/Ascent 694 +/CapHeight 683 +/Descent -194 +/ItalicAngle 0 +/StemV 69 +/XHeight 431 +/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/a/acute/asterisk/at/b/bracketleft/bracketright/c/colon/comma/d/e/eight/emdash/endash/equal/exclam/f/ff/ffi/ffl/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/numbersign/o/one/p/parenleft/parenright/percent/period/plus/q/question/quotedblleft/quotedblright/quoteleft/quoteright/r/s/semicolon/seven/six/slash/suppress/t/three/two/u/v/w/x/y/z/zero) +/FontFile 1447 0 R +>> endobj +1449 0 obj << +/Length1 1023 +/Length2 4141 +/Length3 0 +/Length 4788 +/Filter /FlateDecode +>> +stream +xڭe\[af!f!FJr@PQ)Vd萐PTAw/渥oħ +n0O=@PN07=0Ba(4? +¼`>0(? +CyzLwp&E(0.wԿU]]u!n57+n('<.5M{;0@KQN;C@m@Jz>@VU0;p?J_@@WY*{$
XxzB$(HnI $` +/)P6@`;ڛn`oC8K~OܙY,P +TG^y/yecLrcQGs8{,)PhN)>P+oEG*^ge/N[gׯ,ߦ믛/+ˤmJ1+@6V2QJע1]j۪Sc'Cz>Aopet㐹l3Tm!"TOV<10!R s/ZX%F\KƣܮjO\?GoU/Ouoˌ03Ƒ|VklmT+-YٗѯUaXL.ݳ)
H7'M<!y $ժEVwpW=K<|9e:rt6Π2OM&.Y'u}?I#XKa7;V@snKRgԞOdv+hܞ:=[&Sa!hw\r$COOï]QKE(w^:K^<ULhEgq]iF,qr;%h +R'쭟}HNs*1+Cm$9pl%xz^i}3L9:j[kr2J:WV>_6?^46-uWwXlW=MJŰ'n:P-EhNx{nCBq9b73J'[##OK.VR$Ɗ|Qی42&_kؚD]FpyƮW͞e2e0a|ײ,)ax#J|4|,DR+S <~TxŐh`XE_Q!Ɨٓ߮L0ҕ:*U2f4*R%Q^9prHOTP:ŗ/!0u:fvuI"5xsrޝB =߱&<*hQXbE +=cbb˩UZhbJh$TjkܲjȒ3VL2tRq8+wTm"v2mbG+QҿlN2W96qP)$_! +g'>h7㩲nkmzT4h`>TG*4+YR:Gj R5|4vQiZ"=[9A=Jfvcэbwψ5T:hB_W>mW$~_ޑ/@B%lP^Ed<fIx%.;mU6qpgJ#v1Gg01c_~6BŻ3Wh}Y1CM48=.\k?Λ߅Ҷ:d +M (k8ij +6rߕRCmiNj_\FX +KVsfj$<.S22Qj,hctú,jFW%dN3KhVl՜k!U2YsH]Lw6~w[-\aT*q98Wn<&?p +endstream +endobj +1450 0 obj << +/Type /FontDescriptor +/FontName /NVRXCO+CMR12 +/Flags 4 +/FontBBox [-34 -251 988 750] +/Ascent 694 +/CapHeight 683 +/Descent -194 +/ItalicAngle 0 +/StemV 65 +/XHeight 431 +/CharSet (/A/C/D/E/H/I/L/M/N/O/P/S/W/e/i/l/n/o/r/s/t) +/FontFile 1449 0 R +>> endobj +1451 0 obj << +/Length1 861 +/Length2 2562 +/Length3 0 +/Length 3146 +/Filter /FlateDecode +>> +stream +xڭgTS +GܔHQ =M
B!HQA8J"]E +ҋ" JE:PQ9{=37o
6Ɠ/(2*
#]\ BP] +$=,Dp8Ms +w
ӛ '<~RDNBٟ!7 T+%z? ~X[mO珜9@Z{S1c:`'+#+g'zpd<x + +@ +IL@SQi$E +Jp4 +$QMfgcg o80`I1Tƚ5?:L߁+=cj ߯QugQWbSv|.LݾT-xn嶉=tYXg^mLs =iav>O)*C&ZE\+=)'Jʻ.1˕w74-2ƽ͖qklj1#rxaAD )1'#YfWOFJl;)
h0sܹ><&QԲ.aӺVc:Ս4`E;#5بTL0Bɑ["3w$g՞f5EA*M+H5kEFybu蓣O+&-$$y(
(#x3w +)W&P ļ{ ]@,iP£{6S\ptv1īkasn2$V_#C/5_`&-9(QtD\"d>QxxehZ(-,i@DVȮ՞PT2gW%{U]tXF +Kr[ZE \P@gb|U;s܁EOݗy(Bvalb_rodo~WL3+fKQ"A}"37H8)LoJʫ<e9C5AL`ۑO2vTEk>DW}fsъz.V)w5*Y7x+^jV-A;}8(V`?L
/^ةΈDOw=vr +TD]3H
`Gr8ųJ}[8Ԍg%҄T'ٔ+{i^ԺD#쏉n8W˿
U[ߴNq+`"Ruc>WvE +#RgEJT?Je]kXFHb!H$5n
:ѭy;nؐqJ8pr<lao}X!]RqX䑻*{`ǟ*[:*ur\p,pRuzfE",h%!k +m[JZ`2W^6O[xScz3{BJԽD: +ƭׂ˞Z#ƨ2qY"%1,e7?J +-H>*{G]ntڟUC +/cgoDۋtCdgUzΑ+䙕M*:!y+)AxjBR +UK:N]s48D-rSLg8߶Qi0Ude(=dyuYQ]$J7:۶:VrY>?B>y*bL2nSV̺z,>$B[TGPZ~M
-뽮HoViǖvro#͗Rzg U>'R2t= b/h`.6_="x<r"92sWLb_~INjś҅N+սKL
悘F^N>E;GW byl\
Dx&V]J,^XzFkPYa͒̓Ny9+˭ +yn<raqH^hܮj#+jAwVL07N>}2&aї>7WNc +endstream +endobj +1452 0 obj << +/Type /FontDescriptor +/FontName /LSIMKY+CMR17 +/Flags 4 +/FontBBox [-33 -250 945 749] +/Ascent 694 +/CapHeight 683 +/Descent -195 +/ItalicAngle 0 +/StemV 53 +/XHeight 430 +/CharSet (/A/B/D/E/H/N/O/R/T/U) +/FontFile 1451 0 R +>> endobj +1453 0 obj << +/Length1 751 +/Length2 1203 +/Length3 0 +/Length 1734 +/Filter /FlateDecode +>> +stream +xڭRiXSWQ#uVYFB$henLr!@ҀbXF*LkXAQFQ\@t.8<Cs{糳l[Gb "Fב d2@\F_qQd- 1\2" r _9x ㊁?DXW!<B-I J$# 8?q,|i'*$af`X(|(G@ ,P͵2ByD E! GDP +}ah!r0[' +:$/46o +g399Oq.OO9<&cH`A"HdLOo\>,Ɓ WC4`1H%X$i >+c dM>>l: +`B2Bt)<Dqca,GA<܃{C)8$ytO/y˲zulNt +.SGX̬Lwuļ=##_WMOl'Ff\R^pUW۟FnGrMI=gW&xbI5/Ÿ⾶tAeGUYGf#^spFX?2AM;ZYGO0CБn<BTo+>ϥF'| |->d;jVbwb=cg/fP}bEɝsxXVX0Q|ia/5~ui0ΡUGY5sN$Lw(wƭ^y'rPV +yc&w?UZL+cwifדZ-#A`Vcsƶ5f{nF +GM7^ڍbfdeygU\fkٶB/H +:Ⱥ +jULaYGCw +t`hND\$*B)}v!{I{6u +%"[(QH5:u,
RM>[r_R4vV%ѣ@[KlꥂfMWôEVkOWOŬfT{Rj[N[zi/ǒް^'jv<eÚ{oC`Ydԡ3Sk1vdg
$wOYBt '*gbi'E/[+a=aаnLA[㟾^Qz"kaswQU&:fgZ=N"îInoEoQ{}>/O}K"$Vox{X +8s\|g<b^5;[bV~&Pwkfԍ\lGھW + +}AKINKޞ<v)ie#M~_.ƺ +endstream +endobj +1454 0 obj << +/Type /FontDescriptor +/FontName /FYGEPU+CMR7 +/Flags 4 +/FontBBox [-27 -250 1122 750] +/Ascent 694 +/CapHeight 683 +/Descent -194 +/ItalicAngle 0 +/StemV 79 +/XHeight 431 +/CharSet (/one/two) +/FontFile 1453 0 R +>> endobj +1455 0 obj << +/Length1 1542 +/Length2 10445 +/Length3 0 +/Length 11331 +/Filter /FlateDecode +>> +stream +xڭUX\ͶKЄCFw
<;!wk꓾kQj5绷*L ){WTW +CXQ$p{Cn 'g( +h C: C;w>yJw+[\ڻlALcQ%_ +ڟ/U +z0~P(⯕cJlvM"4wV@J^;GUʔZk;]"\Y:Ѷh`q9zT|kXR!@A`B5t4)Ms:|[4djN &ؔ&me/9GUIXˢWkGk@TsD-B>Z?RR(r6|a7+~~6#g4{ +k)^̈́G$l>VOQb5[z2$`.^,K伿^ƃfSoH ?T+cr[Ƌ==AՋ^p2՟v(3$},)Sxt. +!owQQ
EdB +`aQY Z&g|Tb¾o_l(qKSRY侈[s$3\{@ohT_P(ĦfJ8#ޝֹDm:f=a"gY}k.05ojI\>b,F]lF]4XD3 bG~dP-m(q$X0\':y!ζ8(g'ugK#ǶDBzǞlE~(Eֆh&,$+`U\i┒2[EzLu&QEKu +B.9se/+#~=Ln+HhIJ8VJHJ4Dn6ǘb_||Ǭ.Sss_Pdl_ӌ@UEYkG<xn +^4((G̬;OSܗd(7h SG]:TTXd}8DtDH3Jxc^aOcs˧kӉ +<=*\կ_wۤPf[%٪},b(L7rJ-3>u0gnVь.]D=+]y}Ddhl8y_xߞ.Y1?u%ߩ-5?yje+C/'"Y
INyΧhiGG("hn<olo1ڭ{F#cyP!=ΙD-aB;:K+V$+}5I BRmČօۛ;:Ŋ$F
/_7{`% :2E]Lf2v'>CzQ` wiU?չhW;Ds"g,xM³E(>W-UjnRL7y"WJ\ á/rC-xLl֜|"+KC:+Ygcr#A~Z +Qh
F(+uE~u]i +0A1_I*QDeW +ư
xށHSJ<$À(ͅjC,G
ѱѩJw6y8sJЏ6ݒM,ܟ:nx@[^#xHoV)PF_#iLַgc0[HX܅Y}{'/k.#m_x]͖7Wr;{BXΐBd|]͠if߷$;8̦g}3_(fqM!-#mARrp8AH'vX,y VW}m}iPZ's6bG-nJ7)ȼBDy#Q>&yb ;D4_gK6mx_fކJїԨ" _
9|;
biTAij=F齅C4~Syƈ]fDGYM: e9Ts9ۉOT +#so8ْJ lʎsנ1m^x\@K82<`FUPoO- +])%8shCX*cҀP=kI#E0ЕAN3 A瑊HFD:#qZ ;LdbC$b +V0{GuϧLE{
wI8!r"LNU(0OD}Odj>Xh%!g"~Ķޒ'D!QzA"uOW]((,HJHᗆ_y[տm +ľ1
Y2KOΰ>#czu}?zP:W%<ڝ+*etϠ@DН/Vm<ي5EL"KmGzRchǟXEj]-XlZ~^F8ǽKtG/ŦfʔLBŶNJ>ڙ-DZ=$LApRtguwIKzx@
MxR6ٕq=㟣J<fJEt
2 ++3}$}@?xgm^0r6-lH.}fYi.='B aSޮiO@ۛبz=WJ*{aO`=@Yfܖ5&8wD|9=_cL8/< :/CHٛ"U`,Gp`_Q}3ANu;,xmm7f1m?d³>K+MĽΚG~6U0DgU8&T>G_ĸ&M)=olTg+Yp>=A
굱m+G-U<~C˙+kk,W] +Di[EeHGG$2La[z*$5j,Ȧ<ҍMO/}r;O;i2Lz<TyUeo=`pJkOP[۾ZNLr^\66IY%$]ᥣʫ˭K!KAr +Uh̴F* LYJYhjKN{"Ay+lI#FZOִ>= +O&%T,1Cde8lkQgU<O*#K(j$moZߝN$TWTxztb92ࠪNYqq"ڴO'GEO4Al;;Zp (G65Xm3&Ӄ:! +܋?Ic>WSBȢi"D\PczXԍuΚuDA&n'bD#ZG4`ĠhӯS@,`lXE|@4^-%0b~]t=IkN/-מ.D5Yͩſw²\E ])rW3"25ĸ*xӓ-QVVq`s_-QѬ0QXGѮj738Y)EvqGSY pX?~K(ٹg +'@3s2=9Ҥ +E{*]Ė.!+wiϟ+GQV2C "ۏ +I +5*D)؈c4-Q XQ+
|1Ե_?)>sf8Q"xg"ڔiWBG$XW^ +ä=qŤk*uKBծ"aH9 +5TPSP< +|˸gNMa?^chg$8zqx4
~k#
U\1X)6YKQͫUO |@pÂI<tѸRden,jY91)mY\f +`+K~ %ޔ,ݘ{eky +RXi}X~PF-J]~K?p؊V=o){^"snӃF)CVlPHÝ/sd\6XNS
f*u;*a2.X#-vG38w+6sH2J{"6wq+#^Y+l~}0cnq$/9%U-8s0ٚx揳@2c@6\3%].oF{|
Ftѳ*+ޟ[az5Edvt2C /]xV`aԧV,X1R>[)DS۫tg$ +φX
1f$v'g=S-aQRN[$p'E+<v2Cx9=}7}:i!A؝O}' +}]_N\gE + 54WdŲ
z q*&z*BQE>˵"ZibdF/Ys2vx\D}Rbtj:Z#/0۳_܄4ɏmH WlXX&НrݳF\@q`/ӤfT'K%П@=DFŊJV]0TΤQzmz +H鶌 e3ֺ<"Udʖ=ao㌫WIy(
ߔ
^{HaRV㛮ұ2LGՋo7qrtIgx\sڀNحWQ( lٕ!E^nEa("Z7&ʆz2 X` +3Ƞ3AoJUDm؏IzGʏI]S=*"[M竁| +ٌnK͗]WhxZi\^1_tЬnhy6ϨZӮrT]a~~r=MD\*r3lAUaӁj)A-o_igEz_x=%NK!!tm+5~KCvZl
b(G/:l,fS9xxaKߺOI7UU"K7zG(%(/93)GX=,p/.E4\B?sC#Y\)f_t:m6BMW1Y-$p{Z̔9Ų +7qF6ɯiW;_9Sg#hUYl֝;)x`Bg]x(Tcx?D2n=#/8YOt@0{b7mVD©`Q]qCz|4UIӴZ~/t*D6D+ɪDR,&g }p\OF`wAOJ +s4H{SmrMZe + +VNK| >QfaL2=۶$3g%}@^ln.,oCg4Ù_|^tҒ;KTnE=z3t`"6rr˼}UejLڂNJYeQ`lT?mC^sedMiPU<>g`Fk.ȯ3ck*rt︓ 9E8M};K|=[{&=c#Hssq> d$Q'oXJ9_zJGNE#/u_^M6-M2p7.LG[so*;v]pv[~zx{֘B t:* +
|hv$0ܰmԘDї==IXj25-DPl;;IlSƀ{ kSᡓ6C8\ +endstream +endobj +1456 0 obj << +/Type /FontDescriptor +/FontName /APFNAQ+CMSL10 +/Flags 4 +/FontBBox [-62 -250 1123 750] +/Ascent 694 +/CapHeight 683 +/Descent -194 +/ItalicAngle -9 +/StemV 79 +/XHeight 431 +/CharSet (/A/C/D/E/I/M/P/S/T/V/W/X/a/b/c/comma/d/e/eight/f/fi/five/four/g/h/i/k/l/m/n/nine/o/one/p/period/q/question/quoteleft/quoteright/r/s/seven/six/t/three/two/u/v/w/x/y/zero) +/FontFile 1455 0 R +>> endobj +1457 0 obj << +/Length1 905 +/Length2 2634 +/Length3 0 +/Length 3239 +/Filter /FlateDecode +>> +stream +xڭy<kǓ$$kǖ}>mN22c4f[$B$[P){%KN|w_ܒ +H,
4!h +p(\0D[988T")iH14<d +`(?qD< ΰ4љ`L| + Sb3'?ݮ
ebs𤞹CMiNQTZTH%>34DRs60r'gS*pJ"vZ*rvYvjqN8Enu.sAp0ӍA +UIh;91'1V&v'!+GKIIR+1^wEWbTz ]=DPcDͫR}+'s̗49d*`Őα#sj2~|'ňױĊ$S1Yqwr|S~/Ko`vA6,<A;qV}$粔bKX +WڋT3ylQҸ6>::dcӒMN26=27.!_VVtR/j|Y)?+nzt94vw[<_56yx'yZ$tczDrcPb~Y8t-WLo[T}1fyF?X'Uld{WT/&^NJR +ͯ$)kX>6@z_1ڊKhNqFl5lvgE ((; .ń:=?b$%|wϸ<":鳙D65!x_ҽ5f%6m('Tr=k^~Y*^xݺen,}GY}kLjAX s4{<FQb>$tJY`V=:TWVe9B~Çbʧa˺z>8rXkXj:dH558<- Vd7;yAްdc.&sǝovuHv·摂oj*{$21CanFO=:Q2p4s+8Oh}h1H}a]HDO^3lć93W-t
ލ9^AD|X_&FK$l0U-yYwPsтsMoW>:(tkh|t{16ۥcpX}Q)那 +pgS?[3m;D.֪9lP={}ź9fdLS*cI.tm4c@:VҸ:Q[v7T{̨ɘCh8?^(E`Uj-&,s<\ܮM# b%,FJEl}EC4O3Tj
[rSc='b +endstream +endobj +1458 0 obj << +/Type /FontDescriptor +/FontName /PKJTJE+CMSLTT10 +/Flags 4 +/FontBBox [-20 -233 617 696] +/Ascent 611 +/CapHeight 611 +/Descent -222 +/ItalicAngle -9 +/StemV 69 +/XHeight 431 +/CharSet (/backslash/d/e/g/i/n/p/r/s/t/u) +/FontFile 1457 0 R +>> endobj +1459 0 obj << +/Length1 895 +/Length2 1488 +/Length3 0 +/Length 2083 +/Filter /FlateDecode +>> +stream +xڭR{<TyvȶeV\0P0.d3f͜
+R +]-$[BѫFhєKʦӮ<=ʋnbT$ +A D #) +r CQ +6+BE(`*@%0O@6@g˩<Y??pI0|a +G=wqr2d +f&9̾}΄P4Z[>qFdzS$KFdFD >^45B3A1LaYe +bδ\1PRV_{bIޫ8Hޫӊ:˶02E%:)_r/N?\LJeZ^;XNOZc,[װ$Kix]O>WZպUb%/ZG+71;]Tf1sL0;#~6"jkG Չ[sqYB5)w{j`owW8W鹯h5~m0e!ͻ_s/oq)qZ{69#zѻ_"Ż
xwNM!m2S҉ +n +$p~:àJðoH>Vˈ]9vd_J+|{|si'"mƄ±U5Y42~ᮢmuюvv㋧~LwYcF@`o飵ݙg<~nG|[*uuj^31W%az6Z슄lq~OGV.oaVwkU>*k7X18`I
s}@,2i6r#
!]w[n=`+;ڼnT%p{/\\2˖g`dIXcRxXeue!C(aHӼCe\pvdOo{y%%O_韡H[j#vku8&W_"[" !ϖGEr`lЋѩifhĮ-?4ܽ7JzBłtè{m[K
fRAjfZqrLj1Vc$V7SFhgNqwBT:l0վV|Fcu_҈Pe؍bl\'zÂdOcZL{Ү5G[E'[ޖYOvM05bv:;0 JُyCPSN]GZ[DVvɂR#Nc{b*E/rz +_#eyk$-͆)Y:]FO^ +YgfMg|b]ga`E`K\cU/`Eq>g%Ux8|~{#S+QGoz9M2 +endstream +endobj +1460 0 obj << +/Type /FontDescriptor +/FontName /EYOAQV+CMSY10 +/Flags 4 +/FontBBox [-29 -960 1116 775] +/Ascent 750 +/CapHeight 683 +/Descent -194 +/ItalicAngle -14 +/StemV 85 +/XHeight 431 +/CharSet (/angbracketleft/angbracketright/asteriskmath/braceleft/braceright/bullet/minus) +/FontFile 1459 0 R +>> endobj +1461 0 obj << +/Length1 1674 +/Length2 13378 +/Length3 0 +/Length 14327 +/Filter /FlateDecode +>> +stream +xڭeTݲ.w ݝ]4w}N~~Vժ5ݫXA^(fgL
Udf0301 ;
-lE +ttzLjH;[k Q]?7;{g#@hߩXwTXgfc`b;D`jh:俕/r22s +*Z:xL$Gw6ӻNۙXؚX9 +jEJʙt)&n2c" "u^2̅h&;`hbvõ3g>Y$d˵| ^ +.M&v7x*nW`T4qۻ6c9 +$1tk9ӊhI#[M21ðB"gIC +%:g,)0LpJHl
c}b9dA<V(ng'ßL#H&u,l1yDzfXLڗX
cp0)*BG]Kِbi?f8{aCQT'8{vU]H"|n>=+m "|Hw?vϒOaa|BfDOv\y:ȴɔ +&\P<mb%~
ahwg|~G^AQ;y@&.jUҵeg&PT3$;kgn|%PL،h×F z$M֑]abՉqNfQyTYGumZs`W^dχE4;˰GR
jĽ3y3'VcKW'<˅R~<"9ٵg]L)L+?f0j{Ub<9yJi!qLq!G8u,|~ð6ZwUTfd[= 7܉Qa1/o%1W ҳw"r +P9&q*W(#1g6j$#U
&D +:Tuam>b4G%w!vS8J\)VϠ3?c{&$R ǀڐSJsD?-x:v~zrR0UJ|%TUǎY~v~Յѓ$ ]!mWaE + +h_@5{&P:bՐ* +5xmn~W<T[50&^s-ț/N[+GsP'a҂ױEV/ +bHisꏘ/SAmsbr<*DcOʨ:Q?Ko$rU8L_uO<o4˃(L*LTH*ܼS%R' /R4;^4>EZFJzE::Ţlq1[uw0Ùq0@J47A[B+Vba7~ +>Wu Ň<7dZpIPOA#zʬ2}`cg|kiF\B1f42H_5چ#[#Ƶ6aR~juaZ:Clp2hs5*WDXĥh>~̶oGByi()~xNĵu,>ҬU +6:m㺂`]Na?UXjxd%@c+;:BK)֕R)1k놲ґ!6:?`8J̌R~&794s1/*?Z-gO`|]ѤⳐ.Xۮ[0oΠbט3T7JXs?<6Eh O@NؽHOzi615<yKEڇ\j5XxǛx81ndS\Qmxƙ9zr +1&11gL*Z>$^+w.F9J*O`5&iD{He- X^N +t|ސ;<{1;&ykXXKY|y%+onJ'Ofhv) Ӄ+G*1Gvu`LSmioPB0`FuhhǗΉ<}!rR-ո>M߃.6F3NxBf!]U+0
+5*CCe`{OJ}R$g lK%X0dm(óod,7aAפ+bPM.|rk6VS{v;Rӈ y~~(ox-t|Ѕ $m 7bLЄHu $dDADu")\DBS{mQ3?a%e(N'o}(֔3{
7^-(HwrGbsd[`ބf+TEyly}\2j=_vD倈f\쁰}vLG
Ƹ +nJ6ȾZ+!2ZȚ_>D`ԏ`&ѣg"թPo[CܭWLF3f|fiAlj܃Ij +i>ڣdjR$*!l>kt㙺LqBU1E$-wϷm!Z
Hb
;ʥm~ylڎ;`)ebjvjy8㒧2|J +)0g3Z W3σƽ\C!dIb.a*rewQ{>v>Th-ZGr:bq߾>3EMY\+R7u1mo_sEf~H'P"s<nѦ@ 8:W|<Uv
DpPʦLCfZW=I+->7XgF4]};G~qoFbg,~ޮ%^f O0QbZ0c2DqX>~Fk[4* +QY4f8`ԟOY +5TC#>nKk٫sHHd67ɉb2k<!I +"73G
DeVco2ijVd>1/ѷT:V3a諄Ep@[٧'26=!Ņ(I23TNİP
I_^<Bp}2ݲxu-<SHqc*tB$m$mbRjluKْۄG^d=kN(h˅iFe}يBsz _2=*pYd_hTׇћ=6PR6 >NU9RjsƼeVD:wٓ¿T@|;V8:m3Ή<vl~|}$Ym-2m
Ƽ)9_àB`VkiJdovۙ8
%\1!'{F=b21]'"(Gx#C5B^}AKOVB/\Qeʂ.[gSAɈHb2LqIv/c k"1Cr&XCm`p`䪍~\"OuXnc2$05wƔdHA{IC
JњZAlgG`>K23ʁ&@I^t}k@!WL)=@|F6wZї`<vS6Sd]IsNc[wT"%pl`Yo}V|~'Rź?#dOJB,>Ԧk%!](3/Qʇba%Qve1r<pN@=%ޫOl= >Cs$cQҏiI(&nQE1@~Y𪼖Akxf1q +z2Q}]Xwn^Gl$;<HnS ~lJX%͒],ӡvdo<4ʅ3J
uSVXZ=ni?[:!`碇-:! + ioo?=al.YW͟ʱLezKGMꩾ&rdL5zyb7Wrk#MTjIҚД̖dZzb)rz۩S#5:z zbM;)f\h[5d0m`<3w2Mn[hDsx l6ӵ]5P&Gv.&V}Z6NLɳ!Ydʼn~DJg3~k4-^סm0OcV8[Rؑ=鋚s3qr֍}q`u1q9O#Y"_`'Ƙ̅40OWo!mFELUBܹyб#"YY}xIx8H3Xi3H4W#w!^`t
+LfeWyhD5)n}Ake>nP'Mpɚ9vAS,N`aJnB߬? +l)24|c7G|snl@ +f(
WЖaBp+;.ϒK5d{)lUc3λ1Y|^|D!KAx_`eTPhpԙw"l:T0c[xwլ#TJՈdM/9!T*rA!C˿97>,Z'}՝ t)`y0UOjI!*8@"R+q~c]TȺDQM,f2J*Bym +DI ^6&cj!/Ps,GO[jxŸank?Unbק%To4.F;䢎_zK=֯H!t>Chx'k5bzYuJ#K՟DY]H(*[y(ֵAވ+tv~Zj*^fOokI+1뼁368KǼCGECac|Wk ++If``3֦4̭p5˪t_ت5ƤS +)'-Gb #;3
ӽ٘)I:CYss |&G']}VBUpHW ++B (Ђ;19~
j&X.1kZ't~gZ
_ j.
]p@9rڷ,¦+&7j6G?41&1T7L[Lÿ#7C)I.C0rF"Iٱ%(4; g'3ǻb2CB:;4<Y5Giy.Y"u+1xoTuҺJIFIAťSyB?28F|#st) 4sUG*J搽!Rob{HntzI!+sk +_UAy!QLT`vpr!h4̴LdLm4#:.r%-$Bxd͋#>rV<9+Rn(a?`C +t7J"ܯ +{>TXΥj[ӎfS7,9V!KzbN +ShTa+ΑU"{xUc &6ɚ7@ݯm#b_ѹuwe"f]N=
B^>HFgµ01U_ѕ khΕW* + +F(/!IIհe@N iCKAҨZmYu]hŏ'/
njcZVL{ƘMDZC%Z-w+ a|yFC\VWmiǮ=X;+tx+|Ey]"De{zaH &_V&
"Hq4yY8dJñJs-O'caXڈBncQyJ(~vNFěc¯VYH͔Nf'o _ȋBΌ? Il?t* +\~s15A0 +EZ4)X#!鵸E! ֚w
:A945+O89&bՄTCzFkwy餈?3+QS]a8wS>F7h36OEO|;=iC<-WHdk76ռjV9SC,6o1"y&/i' &&Hs^$i]; L{ڏU㝄V?tpb~ͫ[L%gd8~1qvUҕo1&z|m?8<7:OQDzڣ_=|Enk!Q.:y? "J-rC7O֊}%;{ۨ?U>2Tj +4Jc)t)^ii=38 +NI QAWl݊,J2*@L1N&};QҔ9ʧK&Hphh[3oމdQ[U%;4۴&/ +9БvIT=+1YP' +!S>pJ0P?&BUI;r/eص_1<#)Q\b0NhFWR
+g% +#9W*u\-§o$+'?.][Q!__JꍓhZq.0|2.}[&HqnPnw)![d%-#$qa'wb#1Jݳtȴ5< FSrA<B|B +eWeҹYħl+BaT2jbѪZAR\}
IS1`Zytc95@S
/5/O|MRkL n!W/Bcy.fʌJ +$on,'M_oɱ~kyEJ9{b:KR#*Zu\7zVnVz|]O7VNv7JLb^P&oLM^\Mde~b'L9c3Avax@wԄ ɑV%5
9^ln#GJ rfE"B,#]Tv;42rg &.;CL;h@%`{<:Qe>}I1~5,AH= +#/TءݶV{WfF 6?H
AkAeLL/&z
`cWZ-7e-beF !H:a_P:~-)ܷ[ϴ*x$ۧ`&t%=`zوo
ْ.0 + c~|
3V2@ +J(Ct.P>k:WmĻ=82&PhE/Uf y +%܇l_$Jj +0Jo!_BBl::NecFaM54UH r$P?-Ms\V2+#2緺#8wL?Ș!bOdc"N+*H +o8l0/r[V6Id"\Dƙ
ea?/zѺ*" +S{y=W{"eHJWh=is< !Dh@J֢x*(=2.t'&FϿ=nuQeL3-UL'ɔ ;49j;T+>>.Ry]i^r1ۨ龫KgzZ 2'0n̊X,oyN3bqq,6HP`ԠoFi;8]-N}Ч*68C]']w}x(DjaʼnCwya$@ JCWHPhVZQ [AG2N9f櫛d=ʣںޢE=_@*u=+̡<x[Ehړ9Ya`7IZG,R578O5A60`*Uw^d}kFvp72CBN^|4'{(_bt5 *)zU$OS8da!W2TEN W\F8b)ZQЧo\h;WK>!p9$!f0iIܙ5V$ΝF +_RHM͋8gec%6ZeulҵPG|,\ ?<Z-v}qvC$y\^oU(JhhUe.><zG0< +D%zٟM4bn<с52 }Cئ.lFWrWԘSd +yCQY=YH]ZKaZi⪜O|5s.n;?Ƞ㬣uDOY&_SW-C<;N_.ifMg:NB܍ِJvfbwvoJ(ړ<SAStΫ>=!M]{?rl
y]m`?m0c葢ᛊ!"%Fm@tN)<`dwv +!1Ygd2bf/.#\߆g%%g3?~+\[6~3]=(R>C<8k_9MT +g G^YA|">qnL\`M4 ƞ.2EcCF1(hrKV|gs|[ +Dh%Щ'?7]sѫĆI:HxeW/V^p9bJi~WLkғ.0wQJxquw7.lԍس˙G +Ij*ܭжc~/ْPd5H
qܢL:jɊq|wIqW!+Ē:\Or!*]JdޮHAGz<DV@ +endstream +endobj +1462 0 obj << +/Type /FontDescriptor +/FontName /NLLGKO+CMTI10 +/Flags 4 +/FontBBox [-163 -250 1146 969] +/Ascent 694 +/CapHeight 683 +/Descent -194 +/ItalicAngle -14 +/StemV 68 +/XHeight 431 +/CharSet (/A/B/C/D/E/F/G/I/L/M/O/P/S/T/X/a/b/c/colon/comma/d/e/eight/f/ff/ffi/fi/five/four/g/h/i/k/l/m/n/nine/o/one/p/parenleft/parenright/period/q/quoteright/r/s/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) +/FontFile 1461 0 R +>> endobj +1463 0 obj << +/Length1 1008 +/Length2 4411 +/Length3 0 +/Length 5060 +/Filter /FlateDecode +>> +stream +xڭw<eG"+$>::G7uq88 +YY!٣lJV!#[$jd{w^z=1@8Dh]׃Hq >>Ma +<5)ZDఘ +`/8666Z%Mah +OL!X@RF +ӜoR +}H$ffW]qSh!gV٭,%%qq:nG[U`JfI#/5}Y|AoGn2(3}AQc+dߊ#<r=thq>Aa:&y`SW)hwxk~5]B#:5;=wMɾ̽浪_SE/nmS:erIDzwH9QuK-RN`=f͉3k^V#悼4vכLzW#"$^5)VJ#Z@rBK&]K1qsJ,&䲕n$DEJ$GSjb4(u1hН=-'{-S]vN + m STUǾJdPd㷐i= :swW:<$,NhZ +*T> +>4iWHY߽4tx턖_pFU5f-4,GϡĤFeeYD9!/DoZ+
-8$䲈a'G#<ZCAf֥Ƀ6sP]٤>46Q%HJqr2D&$%ŒɡĄjn9y1҇||Wfk/"40-T'uZØ'?36~Xv/ +GG/mS=6P;rVL?a -'~{ +jg\M;EvlBYCOE!BO_~{|53f +}ndE'Y!)^1ib@e)VwCZG"_=T;Cio*6EDQ(>@DYpjY6RjFR5"<O+sQeeB5×#|9sf>-(ΤQPE8K}ž|NcNi"ގyN@vZdFqc zpbGĥafTZcՓcK۴$vKUЏt /"`fv3$ve x'ZB8K畝< +۬bf +* +RWE1GY>k`0:vO|c~T.|[pX]2C 4cԓwQZ
|p=BZneĬұkFr5^tԇ[ƖTb`ɘm.fiBC7Ri瓜#XowC#.4(c{$sCq/$6*?f'pDCu#=|Yk
'Ktm"2ǫ{˻Fe+t&osy~D}RwΝ>z9mη&Z{c8R%E}i#ɭm!zC@"m$g#5֙4*
wKU$[to鉆!sO-U!_FYz&w˂L$[77|,z!Y(D@4}*L$@]V[,X;2`=}5W*s}Շ3u;Q%Fw|S3Z!RT)(ɀ(>u^Hi!=tFJ[YRFIIZ:ſVקM7u9[2:3úZRmJ,pĔ&T~=jׯPO6д1PQ8dBYEB8{rָtAҾLCO@bge
sQkYYOVz߯x<(*q
g`a6N/Ͳ@lPfҥ$:J")b_]C8Rr z%(uG*ZݘtPx(kT +mf{Wy[d:3אwr/3Bf_ٕڪ]B +S!,om&VR=bήvX92JJ7ڕ~+uA9v8{
oe,YG˾O k,@G5qd;ukw9.;+FBPqg>ȝ*Fx.T^JTSn),A--IN.ɩHޡlBvR\r=ϘRJJ`]ҧ٬39/&.B7<?1y/M&Bp$
W\lC19gn*{!amV8DL}(J )Iv> +Grrh0ҡ' wtRsYK~/۠/Q$&Y/ӻE9<_ mch.\7A\dmLn,Q9ƾētLlDΎkUQeLo^ɢYU([QʩgOoq Kߢ3xJm*G"gl3ʂg +Z;tUT24}hѮq1An]CM2w9?lVtP11z9@rYR:K6ZU-A 0+TM-rcLJܜ[1&u{_4 -bΚM7"FV
NoyݎaR{q@]V: +_W4<K0UOYWVɯYpS3*R簅[i~=95iƱ!#tC/]A*/T +$}pdZ,)Az +e|-;5dΟbIk⯁F;*5*rxUޣuq\vLՓhf*;SA˜Y%d(gT9r7cv%ǧ<V?V",1HY7o {;_\}yPтT7 "e:C?;YJ +p.NRsc0bыg䀳NGWlk륮|$CM,?
-~p*W +I'q =TlvvNԙZ|5ky·WwUʪ +AAJXظ4aUCiƠ~ yث@o=TKj'^~s 52<RHEmcsmGr+'vDznRkx=-j/̌vcdK,{;B(G)߾M~qC)/{"̡r]1ƈ@Q'W7--4!Y=oB!!~41GfG9ł;J")g)H_gɜ>%.\{}>:ٹϒu6u2مOZz}(s!͓:Kip!Ii1T?VMg.=՝/뎞w>;>Os +endstream +endobj +1464 0 obj << +/Type /FontDescriptor +/FontName /SFOFNL+CMTI12 +/Flags 4 +/FontBBox [-36 -251 1103 750] +/Ascent 694 +/CapHeight 683 +/Descent -194 +/ItalicAngle -14 +/StemV 63 +/XHeight 431 +/CharSet (/A/C/T/X/a/b/c/d/e/f/g/h/i/l/n/o/s/t/y) +/FontFile 1463 0 R +>> endobj +1465 0 obj << +/Length1 2233 +/Length2 14502 +/Length3 0 +/Length 15711 +/Filter /FlateDecode +>> +stream +xڭUXͲ5gb=@p &wNpw{[p{%kFuuQ\II$igWPScc1!QS;-l?9l|| +F p
5@hr`Z[TP9]A&Hll +rtK& +lMsR"?E%#[g5T'_heN_-
0rt4@q +])A`>?̧ pOiA`> q3lW< 39-,@W&?~g;nhdmdW);A S\mOU@ +~vx:\`n`pQ />T?<AV~ܽ8L`zW|?nM-_BDZ +Y4HOC5*wlG\.s_z,OF
3SDq3Թ߮=[.<v)4^sA~Y-M.:8UJѭНͣ%n\\#ա43t
#1fm22a®1[«k +Oh6 +n0VI$\~V<F"GO&Uqy90lsE{DEDC;ƕuN[%h
HT]v9ě3MOoKU(ŜVhY6#˺d[H$1Q՝wԇX.Kso#\B@L1CQJ)h cZ<!٘QJRv-wîz?Wq\yy~cÊ(/ZUAMhY=]پE:IpC(E61Gڰ'q7pT34`b%y'wO%|m]EdBPT~e EvR#Hu"f:&{l~9~q
qS GX+*hbMqH31:;ADzN.'60p-Q$:p40̯(a;)Ruڿi.-(DNWJ6\I<h{ +_H>, +8P?&ηDh+Sߍ~˼{5)Vwٞن% kj[6Q1Ftuǣl!oBV F;'t1GcO?,f|6nlIX8 nG-=dhbz&F`Fpo;.s~T +힟y5X7BP{@ypa@dAh!U~H+ȍʮ]݈>$A.^(8t+Nj; |ӖWƥ
4A0O;k.x$54h$O=Easw%E?]0?ǔBr@dо;:Ey&_^`hŔSoHK"*Hi:FKUXvw*vZ>n'DFJiGxW_wUUiqn]#Z&^jx2ښ(&-xO#k1ۤjf
X2)ƱjhBwP77> +8yTNu>w鎍 <k,56]TX@O@wLu"H-'-\|F%!EK%O<?Ӓo:֬}7հ@A_;|&0>cFR7a"%vj9<vs^lARE<Y:v5<5Nu$uSr Nik>F?z1Q\--]?b/ȭQÝ +Zh8??њ^_ +l{Lcgh*mòPϔY#zQyF:d/QY"oWH.p8`*?^~pk##/5h6Vwne1~'6\[ICN/m^7]vTQt3֥Lbh<-~25gC*3.fW)W(ޘeǨUz(99)RO[Ɣt f::KWicCj)sw3-8Bx5d8+ٵߏxeȞ4d9rT73aB1EDhXbg9[M'.dbٟ%s#JIoNT
prBtx5U0Le]<yɻ3,
;Ze`VU/N_iiNl7O+lDYK~N¿a +<6/lEGpVC.;2۲ 6IT1q̽Om+*w=ݤ&ص:-m-9be.rWXkA]uaZ] +55
s" ++X2ԌL{ЋxJ +[z=܃6[J9 +D%ȖCɴ_qsJ{Jg&vu=hNvξޒBm&k#ǡr]o,B=#3Oqd +eG
!^NhO)ڡf犆|a#N +gCh9pw|XOo9.T"%mچ@:|<;N!:g̊<̄"iwU:ЌN"T ^Wa +62y7hβfcEL
nzYĂѾ3N^B~{V$^g$nC*s.֯h(Wsu"h% +DF +)뀰X͍-%MUaKWq|Clk[&8EMulϧB¶ԣTSs>sccԚ ڎ[o\0 +k#3+~Q6&G̊uEc| +J#
@o7r+ASO"TCG7s
uxND21, +(~#t.BFm ϺM],(7\f1Tr:AԿ]м_iUC֜v +9x՞nax>lWM3ᴵxOtY:_Ȳ->aU-+^P0y%qEt`0R_kHS6nKgc'5¿#ܹ.♁tۀ3;v֫8b!ګ)b?~B4L.7/|
EA68wPcW[̝7ntyob1i+UT<7^KJv@<zrlg?? H(#3]]i*kZW\Au+38H6$L!rҏ&tKF>.
/*zD ZXͦ`K{&zT]EwjsSH>C=}TC5Q6*N.92O_!C by&NRv^AWM+^L
Z%I)sBw6t&_Q3z!?\hdH)Gfn9[twP%7:%VlO;m*_CEdt.0YzROO)x@rrKOƌȊX
d_HjIifc\Q#{.w>_ryd"͜5thuEf,*0nEz|)ŭ0Q {c?8MqEj@C;5ili)TiZ4:b0(~23_^$h|"e;n+͜LPMgy|TV4AF ZB-˞RPQ;ϥofq'D%ʉ̩tutׯ/h25٦c4J.?]Vek%gv |d2 aXx['Uar#à%RR Y* enjQ ޏGN8LP8q>q*s7rXAy;yH_l8~bq7I%x&z
Lh?+jgn< +e1)bNf_γ1<tX<ip8_'BpXVRk +}JWh)&1*֔yhizƋ;ۑՉnm!)XM8<jrgm%f|.hSj^Te6=8 +oaN|qDR*$[ȋb3dWE9=<)GDqJ#T
}=ϋtwtuU )E/$OQ!ޖU1A(!)-$EsH\:BIghtKs^ C)FrwErP;oβsbkOs`L4ڐ_!f^lOQyi"!!~nD>ɮ$`oy~WuI*@ztʵ3^6jW1{8:j)х
K':u@i vvQ c&,=_e KvᏋ%ZV`ObY*133n/U4`TP/v<yBi:'oJ5F>Z71M/MG?y? +d[k>n#ΔUz:%o'DY䀖@ʯ9.ds +#'G}p]={@9.٣q3EbDKs(cĨl Gd?8"n3p-RյB/Ȫz['8J3A^0:V"!Bu]R7lk*ݛMiкA(xӶfByP>OjuB--r2(Ñh&O0Qz+[6ƅiėj&n{&^%/|V;bs!60?
S0(xkpS[ICx܇N:GFEGkqlbL㽄eMbhbH\[N섍^:4.i}gǪtCdJF7&5^p%;֭VJhlCuʎ.˗.NmxOII
|czu;/ J'O +
n#m2 +I366;
(bj.%F%(96rcvh/Nfғ4u03͢{<|ri~D>qÈlJ ++]dV%#NvPxk3A5`ɳlΓs@(4YI~ƟLTjE1>~Myu
Q>ZX"@l+SkFhԧ],6MN eU;$,,6Gݥ6JϧF~Vg[YR5Qv +tg}.DsزGiXO(/w\Լs @_'dz=&fNAX8" + bC%8u.I!aX,+-Ŗi",QA$ʹeJx_U=${nE +shSUt,·rI;=Qdx`mP;鞊O^'$kȺhȟM{/MХ0̣|Oe5b(Wp6&H|6l!6xك*7wIrR$ز#2)+F" o6_8ҪHtҝ2ʔ)S0AGf|":5Jÿ{|GF{&!9.>oYP?}X,*yEG=1^77^2,pV*#g8SK]ׁ~-se#b Zw&Z"VEpNBTosb}zJ8Hܲ5u-7L2swQ1URV@X\ '_ߊRP+=܌UԗQ[lTfɓ:^autGolݘ`cʰm;<W;uF$*cc3E*3iJ:`&nLܧ}fW/Kn}79~mtxP3eB6%vwi&1C:CtAX
q +ʫdIucm(I#:nnr +L!Q3^JKD`:Wa0F53- ) #wd +cA,f
ϕXwϫjoHG] +<Gl >ʚf\"̋P&tHQppVɵ=5x*
|UIAu`=Z#c]_Ʌx\C
!9',j};]*X.O\fq֫Al5j^k(+ͅBL͖ZaUwse~!y + +G}\v$OP۞ͽWk<o1>z-AvAhf6GC2;RoϽ9d2$F2b!ǣ1Sa^3ISzK kP"'',XjKieMGx+Uє!YU!̈́
gK?]WDa(ˆlgdݵn@܉Ϲ!Ko{VOH_{b<<?-(Y` <BEꑇxr#<#B'OZO_;G^G~%T2Cs:ħ{8
c)%BX|khއ&a5
#huY@6 +AF%Op)%O!oqu.f-lUUh
d4b(oHF`*S>ag/[ %tA,]ڻ+5ӱo{Y,ߺڣMaEnUHc_O|-TשɟkcuȄxbju>*T4CY <vjuֺ0E16D5$I+'.r+:L<כ+
S-6 +eȏF/L(^8\`õQ>LVފY*bWyzE,^9yM>6$EgP* +oȉ=ܦhc?c.S%bDd[WN^rYںKZa;"b~2E5edFU8BU;]ͧ"BW'euow./ր+k/zhh8~3X'S%CwM<jMe
Rލ~]dj~/L ̶R͠kU-ܬr岒OԍưHJaT8t>oa^uv\b +9.V%JJEFe#ow0KJ9[O +Tlx<r=ə{^qSL@.} +
f5<F*K?'N<|FVa;:`}!mTÕPPjK5PAmw^>TT*OҮ} +ϯmLH#ԷտOAi; AoA!<>+viF?ƖEQk, +˅ʥkpj<wQI'9yy/P[C7yKD"0
.v$@ڋ)C_'̫@t:B-$XʫT|e,AdVׅ9E\]И3W +8x*PQN>Oiny@*fRgm4 +;lKFetA~@qݮwןkGBIÑay.5; +=nm +@v$J8Zw̒#5.̼YQ@3f$5b#h<8uk.70Q i>KlefFch*VnKK+$R +;Tp/: Q͜1YmWF6J1%6ђ<l$uD*usػ*BKnjHHV\ +2]8\> +H:eGИ]cqG)4nQgq#^SI՚R`UR0rL'-vT%R 8B4Ki-!S春B5(hFNP'Aڱ$Pd/1fIfI9P0fTK'`,qY~R$+~, +_3lA+i@bʷ/W) c@r.#g,U(ś//F*,{Q7,w6rYA(h{ ~Bt<B_;]6"aǓCk-`'V2ч&c`hϙU!`ց}pt24v +endstream +endobj +1466 0 obj << +/Type /FontDescriptor +/FontName /EUPUZS+CMTT10 +/Flags 4 +/FontBBox [-4 -235 731 800] +/Ascent 611 +/CapHeight 611 +/Descent -222 +/ItalicAngle 0 +/StemV 69 +/XHeight 431 +/CharSet (/A/B/C/D/E/F/G/H/I/J/L/M/N/O/Q/R/S/T/U/W/X/Y/a/ampersand/asciicircum/asciitilde/at/b/backslash/bar/braceleft/braceright/bracketleft/bracketright/c/colon/comma/d/dollar/e/eight/equal/exclam/f/five/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/numbersign/o/one/p/parenleft/parenright/percent/period/plus/q/question/quotedbl/quoteleft/quoteright/r/s/semicolon/seven/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) +/FontFile 1465 0 R +>> endobj +1467 0 obj << +/Length1 952 +/Length2 3137 +/Length3 0 +/Length 3761 +/Filter /FlateDecode +>> +stream +xڭy<1Y[dga呒}0Kɓ-5k,!]Ȓ} HXzsn{s{[b@#$P@hfVV% +P`H82 +Dt 4R +sjxo.~$:WQwR[GHua:Dޔ5Da9yl(W<:B>!N*gx3&5Ŭu=I2fXz\ N莜7Z4$'|x>/|zĤZ|EֺNyv:8S~wAF]Z0SanAA#vԵnj`RX<J>vGSQfAZ?=NMP6=*,wbX}M(>B٦'ϼ^DX="-vwS테] +{owlTF7krh!we@L7f*F ު6PgŮ;@T2T6^.R·b%`c}=-{p>,Bf:*s"CX4< +)|@d uT3%llKޮhQ3xxEg5ԥz>V\*oއ^i? un9}!HWjOE1p,phr\4kYޝd(ֶ~^O<;ov{w(yNXnEW 9jeY-oG˽V&Δt>D,vkndfmw(ykYj$ˬYHxZ+I_N'IG~9(#MI2cdq7g=R䄎unyFG>9a#]zKd28t͞ڢ#"v7^+Rnj(j#e]ڌT'PDvff3ݟ=zm^7h_ku榯VaP)397h[ߧc&^b$ &LڗC8^쪔=9eٕ>{\(X2VmFm3ؚ:=߽>qHF 9|;JhUJֈC:\xj5TL|L[&oL)MaٌuoQJ +!% ?ܑ?&_w}M'ek0.s]78CHs.SGǴ.MPFkmkGW[Rb_/&Vz3ۙvUo=|kb!AmvkO~RWHj#9n&v' +q2#C6xPЉPD.h BI_$XSTΞٳD`tTY=ba8ys|urݯPsY32 T#qЦO +e15yO +08!^u.fc XN3{G<Bхy +jqxX.EfT +
,9|l*0ɩgZRSi%c*)t^ye;Ů˴Kp!iEoQ@(,OlWUp,S +>d"5[M[
]K2u=!'gܴr$s߶OuTl-55x~@ׁb<bC,J<t/Н;7';EUCE\҈GDcM"P#n{nr|T(Mj<╦me&qg"DZ1*#i,uo)B;j|Ѷ,{=);W_\8noRXjCwF=-LC=;:5Z~3JZZq)Z +N8,~vAZ's-O`c;TO4-ֈ-#Ԗg0%~uajqն5KX%q9=t'4S:Vlʅ..\^j_Բ2nchxe̶S
Q\̺^wwoMʅvJzݬ9֤I>N_
j{@q,q`W>.0įaYW$^ wE>Uk} 9zsmlZgHF$:l"b[pZ)u s-|w_I[ +endstream +endobj +1468 0 obj << +/Type /FontDescriptor +/FontName /PIATSP+CMTT12 +/Flags 4 +/FontBBox [-1 -234 524 695] +/Ascent 611 +/CapHeight 611 +/Descent -222 +/ItalicAngle 0 +/StemV 65 +/XHeight 431 +/CharSet (/a/backslash/c/d/e/g/h/i/l/n/p/r/s/t/u) +/FontFile 1467 0 R +>> endobj +1469 0 obj << +/Length1 2303 +/Length2 14242 +/Length3 0 +/Length 15483 +/Filter /FlateDecode +>> +stream +xڭeX\]5wCk݂;_gf̼]jCI(j`rwedeb+XX))ŝƮVƮ@> +YP +f@g
2ƶV@ + +x+ eoe;ɟ+/JiPNVu|sj8;kA@[hW(lVo3 +bV3noMjnxgSAaN0(_T/gP&o911OF. +3us
_oas+S¯,9X6KT@ӁY)6w!-s۬~@>> x&pU).m û@*Ckߑ>y\ins<Ih(i2!:)X{c_fTFxh=;*jSyGjRtu8l+ڥCS!l^!أ 6o-ւĴSF +9:1+yYK&ofBPc1bPwSK[N>4*D_{g@xFiw/i5 Ah{KR*LMA|(z0-OEzhN]x33Si74̆?&Kt=dU'R8oVtu5>ʫ`,jo҅Ra8Ї6 A^" +U84"R("zQ.Զqm7D?}=zʥoANn(~oBLLK7̈[-Qx[Qw:,_K,7>wptZ{Vlb_yw-2>&+6:HoxlXF ksƀ'm4ùЉ/B>o3CGW<|\~/qsDZDO|S@BE;a삶;'l$yu!|Nso=%qޝt t(-P +O#4|4Va +RTYE:TAJ쬤` +Ȍurlqd[Nw:x#/+k8z+l筽kgR2)~:F}ـ!Uėv"{>USH[58,%xć^k?x}~#=n!.6RzGD"D/XSM͌jjEABIAЬ.H.W;٠% V!ŗf_ӑUs8lR@$%ژ^XgR3BEyn8EiB3h>cۉqKANmQKWTe dӾ>0-]>(ջG0o(fq:
`5v=:2<<9-;]mi.o.I/̏ס( oܢ/Ȝ4ukݏ٦ce8J^Ǣ~\DX7n"?ܾZKxJD1P2OƛDmB`b(F|WB? +BA3Ⱥ'tXVx .,>Di(ՠ,=ьLDgvi6Dח@ػ?-(,lh͵ES;@SW`"'29A?^9_#]jnX3s%F9o"8ea~P}8F(_h 8~;E1ýafN-+8&k8[zPD9R-9*]X2HQbs8@].,%z8GlvRfMizzJ/Dq\[n+?˒?_#%`EЛvsm/QD<G{r!x*%G)7!PaчW{78i|x'=~3h} EVZ +a6V +g6#LmeDN2},2X,Zc?°|1<֤**rizRQݦV
u=S[~VQ +7\w>}6菑zKrUlx< J!5Kf{\$Z{̀4\in֒#)/-;N^"vu;tdk$ƟXy뫔yыbҒ<9V
isQZEBTa.̆No/464*o/]2uuV(<4'K5/H@}`"a_\#x6Ϝ+ԅ[nA| +&&%)[|mo9.I6%zUKjV%OB"a1-'V0eK"r*7L'Ѫ"xGvvǩlcG&CQ|lD_66v9zde #naKnFE
UDU[ȧ\&zPq`J3'kwkw~ ,u+#e4Y@cDg>*fH "d4B$<-V7.?q/</F^me`Uؓ/nyVdi`~^BR6K|T?崄YF7O5gjܻ|z7w'uԿn4Cs|ݎ>8@)SWgN
z q%4",xG萁f|3uڟP?}'ɖ^
BwJLí$B]a`Qz~Ks1HP[h +hLbQb1:3X;.d<@k/0cȒs +~(of -sGqRjzj +`UOl'4/GG8>Y|!m-BԘ&_\}ta{j{L_At-m< +h-j,*Kk[Y~fs +ޓ{)3!`)vЄ3:$w[1Y[._e_dsuM +M"zEDŽ'S$2eNe+jkT|1:4:>LPZ*6K+<I*+#{{[ 匪Zn[{2"$*YDYf*ʍ]6A+:aE +)}mbj3Qi-:,ڑ1rp"^Υ]_Ⱦ\|*Bi9kuTn44aDق4&$S}]\[~HH~>1%hG,w&ed5n YI yPbEν*:F;tgJcDYs5 7,gS9o{^j3zQr=FmǀDRwhδvpS^8c +Vk*]ԑ ǔtRgټ\/6 .jv6U53|y'JFi֣G<]} +͍mR4U= w(|c Sp#2鐨H=Wob}{8mL:(x6Xnky4: _eYB;:cInEeUP``l$lbDYJfG
ƺqZ;NPMaѝa˽"iJ>4ey +nE(O >$`Yh7CpFZ"ñŋW{ߪ4d>&6S&[SG$9l|43m]E;c2事UEo}d2I~7d݊oeLPB6#RZ9-Üy$6k"=vix#Iʁ%eS?7j*N3ۤPe, +k^J"0/Dt'copдH$(1]FnQAg"Uh*]%d)_Zv3ݺǖ}A1 QVV}i >L,!t&Bw0E;m0H|`pXƆlC'\12h' F2%WgV\5?!fxUڜ @Aʅ鏛:R^ʖ׃ܓLv\,_
fkMAј'8!OISiwı@.Mw3\ab"J2-|/+As_tidy笗 .|!"R>ՃYiA~fwdy8Ǔ綞O@~'o58̏capAv0'04XZ&ܒq mĜɯK$s~8Vf%G_Gg>QIh.e)9A2в!CTzlh}:nؔvr+;unYŭ:WLbtiuJUûJXgf+dFInfaf[![V-֣dM\B=G;Oa
`.70.^BN?N^GK,,-C cd>?sL4A؇*ĸ8뤱)e2l̮Jpr(u312A٦JRAV,V6&Z21=2T)1wQ>\%T:>mWQ +ެKCvq=-r
z!+3*@űoNU!<DG1IjF0*Q/t}UP$iL@~)Ugy:,WvG:o-0{%bUVDrf咻sfboW#A6Hfn'6PQE~⪇ +J\[F>$q:[{A?جOvbPKyqsLfIZ#|jB=Ȉ፳ٱqd|Wc3nnp~?_mK4?=GFHblb>4!ra?A1.q +Na%=
Se<dg^V@{յJ}HX\jͻV/ F5h&Iǔ;ř©Ϋ"y2kvR9vySGat)Fl7*ѝ(}͑nU7;ӊ$o`rs IX!=8nY/mKh +wOeh+c@[ed}=FOf(UGn8!_cl6jkZ隹x`sHnD Z|K +I_?lTpGlFh﮵s>^F5T4ӛ/tlTK+&9;hi?@Ч!+\Q"&JOK:#`f}N0}`Aac^TiIt/ܛEnZzBt[uE)kpzÅ$mBg,ӫHnEid+YSGa<mZO?=K+]k.);?
Bફބ% =Yw`D@ޤDFH2|b +v!N<hM{Eoa#V3Pƫ=a]$H_y䃧Z[Tڄ+34'/QD㵍E@j,)'&ѵc8}[UwlK?D\{s0`5D<*i](eWv[\iRbX^ ŗ_)OCʆ%
d
ϙ<tN1Lհv]H=`מedG5;U3f[eqPnZt{{NUʳ]2Yxxa.;w4lQz~$ (M'>0>YZРKE! CS^F"
CdL +s +,A%7|<Xo;c7rR zm|O0ǿ (.!}.Z^'{<G`HzA6P3M}wo;+QUҽYƒV맂9ġ8/
F +=Jtd"^nrJΩPtKmb@
kܫ`W9vϭ$@=Q,8=hmdec#ɿe]>qSGSr*_9ۍ\"3WL?>w]ɹ RɚwP:y2-cs}3IƇ)gߋ* +
s2J׆In<V@ˇPHqTǼm8TC[;sVܢZB;#c}swLս/B揬CZᜬ_Eϭ6lcO6 +* #}p5dx|9Yp]e2&LX{wT^U!Sǣo'?MδM[܊3_YIF <EPb~\ +w
Uwwi6%_p:4x0i*v +,wMa7-Շ(UR=تi52$rCq1gXiH"]jX'ZTcOs6CN $B@'` +f8Skr۪fS/%,PH\Pb%}"f;*S} + Eػ]7Sa0qȍ7`yimaaVNRw;^]L ϓ۵AlyF֣8.QTĤSpR qr"ոL/1^l``o/qPMh:Fx>q5ohoMtx\zȍS +4zP#bth[Ϟ#U|o=9e^pt+MK؇Kfrg:9ԣP*.?+rĸ;! _?afbT*"qџpI#x>kV='C5^nov8$1-؏ +3N:wx,AlЌcr'7z{/DVwDF?P8j +endstream +endobj +1470 0 obj << +/Type /FontDescriptor +/FontName /RQLRQN+CMTT9 +/Flags 4 +/FontBBox [-6 -233 542 698] +/Ascent 611 +/CapHeight 611 +/Descent -222 +/ItalicAngle 0 +/StemV 74 +/XHeight 431 +/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/a/ampersand/asciicircum/asciitilde/asterisk/at/b/backslash/bar/braceleft/braceright/bracketleft/bracketright/c/colon/comma/d/dollar/e/eight/equal/exclam/f/five/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/numbersign/o/one/p/parenleft/parenright/percent/period/plus/q/question/quotedbl/quoteleft/quoteright/r/s/semicolon/seven/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) +/FontFile 1469 0 R +>> endobj +368 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /UIGWDD+WebOMintsGD +/FontDescriptor 1434 0 R +/FirstChar 52 +/LastChar 52 +/Widths 1431 0 R +>> endobj +415 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /ESVHMR+CMBX10 +/FontDescriptor 1436 0 R +/FirstChar 12 +/LastChar 121 +/Widths 1426 0 R +>> endobj +414 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /ASHACA+CMBX12 +/FontDescriptor 1438 0 R +/FirstChar 12 +/LastChar 121 +/Widths 1427 0 R +>> endobj +490 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /DETZVP+CMCSC10 +/FontDescriptor 1440 0 R +/FirstChar 39 +/LastChar 121 +/Widths 1422 0 R +>> endobj +856 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /LZKSKN+CMITT10 +/FontDescriptor 1442 0 R +/FirstChar 92 +/LastChar 118 +/Widths 1415 0 R +>> endobj +763 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /FDGTQU+CMMI10 +/FontDescriptor 1444 0 R +/FirstChar 58 +/LastChar 110 +/Widths 1416 0 R +>> endobj +907 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /JVGYNU+CMMI7 +/FontDescriptor 1446 0 R +/FirstChar 105 +/LastChar 110 +/Widths 1414 0 R +>> endobj +371 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /MZVFXC+CMR10 +/FontDescriptor 1448 0 R +/FirstChar 11 +/LastChar 124 +/Widths 1428 0 R +>> endobj +370 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /NVRXCO+CMR12 +/FontDescriptor 1450 0 R +/FirstChar 65 +/LastChar 116 +/Widths 1429 0 R +>> endobj +367 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /LSIMKY+CMR17 +/FontDescriptor 1452 0 R +/FirstChar 65 +/LastChar 85 +/Widths 1432 0 R +>> endobj +698 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /FYGEPU+CMR7 +/FontDescriptor 1454 0 R +/FirstChar 49 +/LastChar 50 +/Widths 1417 0 R +>> endobj +461 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /APFNAQ+CMSL10 +/FontDescriptor 1456 0 R +/FirstChar 12 +/LastChar 121 +/Widths 1424 0 R +>> endobj +563 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /PKJTJE+CMSLTT10 +/FontDescriptor 1458 0 R +/FirstChar 92 +/LastChar 117 +/Widths 1418 0 R +>> endobj +521 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /EYOAQV+CMSY10 +/FontDescriptor 1460 0 R +/FirstChar 0 +/LastChar 105 +/Widths 1420 0 R +>> endobj +489 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /NLLGKO+CMTI10 +/FontDescriptor 1462 0 R +/FirstChar 11 +/LastChar 122 +/Widths 1423 0 R +>> endobj +369 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /SFOFNL+CMTI12 +/FontDescriptor 1464 0 R +/FirstChar 65 +/LastChar 121 +/Widths 1430 0 R +>> endobj +416 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /EUPUZS+CMTT10 +/FontDescriptor 1466 0 R +/FirstChar 33 +/LastChar 126 +/Widths 1425 0 R +>> endobj +557 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /PIATSP+CMTT12 +/FontDescriptor 1468 0 R +/FirstChar 92 +/LastChar 117 +/Widths 1419 0 R +>> endobj +504 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /RQLRQN+CMTT9 +/FontDescriptor 1470 0 R +/FirstChar 33 +/LastChar 126 +/Widths 1421 0 R +>> endobj +372 0 obj << +/Type /Pages +/Count 6 +/Parent 1471 0 R +/Kids [362 0 R 374 0 R 411 0 R 458 0 R 479 0 R 486 0 R] +>> endobj +495 0 obj << +/Type /Pages +/Count 6 +/Parent 1471 0 R +/Kids [492 0 R 497 0 R 501 0 R 506 0 R 510 0 R 514 0 R] +>> endobj +522 0 obj << +/Type /Pages +/Count 6 +/Parent 1471 0 R +/Kids [518 0 R 524 0 R 528 0 R 532 0 R 536 0 R 550 0 R] +>> endobj +558 0 obj << +/Type /Pages +/Count 6 +/Parent 1471 0 R +/Kids [554 0 R 560 0 R 565 0 R 569 0 R 573 0 R 577 0 R] +>> endobj +584 0 obj << +/Type /Pages +/Count 6 +/Parent 1471 0 R +/Kids [581 0 R 586 0 R 592 0 R 599 0 R 603 0 R 607 0 R] +>> endobj +617 0 obj << +/Type /Pages +/Count 6 +/Parent 1471 0 R +/Kids [611 0 R 619 0 R 623 0 R 627 0 R 631 0 R 635 0 R] +>> endobj +642 0 obj << +/Type /Pages +/Count 6 +/Parent 1472 0 R +/Kids [639 0 R 644 0 R 648 0 R 652 0 R 656 0 R 660 0 R] +>> endobj +667 0 obj << +/Type /Pages +/Count 6 +/Parent 1472 0 R +/Kids [664 0 R 669 0 R 673 0 R 680 0 R 685 0 R 691 0 R] +>> endobj +699 0 obj << +/Type /Pages +/Count 6 +/Parent 1472 0 R +/Kids [695 0 R 701 0 R 705 0 R 709 0 R 713 0 R 717 0 R] +>> endobj +724 0 obj << +/Type /Pages +/Count 6 +/Parent 1472 0 R +/Kids [721 0 R 726 0 R 731 0 R 741 0 R 747 0 R 751 0 R] +>> endobj +758 0 obj << +/Type /Pages +/Count 6 +/Parent 1472 0 R +/Kids [755 0 R 760 0 R 765 0 R 769 0 R 773 0 R 777 0 R] +>> endobj +784 0 obj << +/Type /Pages +/Count 6 +/Parent 1472 0 R +/Kids [781 0 R 786 0 R 790 0 R 794 0 R 798 0 R 802 0 R] +>> endobj +809 0 obj << +/Type /Pages +/Count 6 +/Parent 1473 0 R +/Kids [806 0 R 811 0 R 815 0 R 819 0 R 823 0 R 827 0 R] +>> endobj +834 0 obj << +/Type /Pages +/Count 6 +/Parent 1473 0 R +/Kids [831 0 R 836 0 R 840 0 R 844 0 R 849 0 R 853 0 R] +>> endobj +861 0 obj << +/Type /Pages +/Count 6 +/Parent 1473 0 R +/Kids [858 0 R 863 0 R 867 0 R 871 0 R 875 0 R 879 0 R] +>> endobj +893 0 obj << +/Type /Pages +/Count 6 +/Parent 1473 0 R +/Kids [887 0 R 895 0 R 904 0 R 909 0 R 913 0 R 917 0 R] +>> endobj +929 0 obj << +/Type /Pages +/Count 6 +/Parent 1473 0 R +/Kids [926 0 R 932 0 R 937 0 R 941 0 R 945 0 R 949 0 R] +>> endobj +1106 0 obj << +/Type /Pages +/Count 4 +/Parent 1473 0 R +/Kids [1103 0 R 1248 0 R 1386 0 R 1411 0 R] +>> endobj +1471 0 obj << +/Type /Pages +/Count 36 +/Parent 1474 0 R +/Kids [372 0 R 495 0 R 522 0 R 558 0 R 584 0 R 617 0 R] +>> endobj +1472 0 obj << +/Type /Pages +/Count 36 +/Parent 1474 0 R +/Kids [642 0 R 667 0 R 699 0 R 724 0 R 758 0 R 784 0 R] +>> endobj +1473 0 obj << +/Type /Pages +/Count 34 +/Parent 1474 0 R +/Kids [809 0 R 834 0 R 861 0 R 893 0 R 929 0 R 1106 0 R] +>> endobj +1474 0 obj << +/Type /Pages +/Count 106 +/Kids [1471 0 R 1472 0 R 1473 0 R] +>> endobj +1475 0 obj << +/Type /Outlines +/First 7 0 R +/Last 359 0 R +/Count 25 +>> endobj +359 0 obj << +/Title 360 0 R +/A 357 0 R +/Parent 1475 0 R +/Prev 343 0 R +>> endobj +355 0 obj << +/Title 356 0 R +/A 353 0 R +/Parent 343 0 R +/Prev 351 0 R +>> endobj +351 0 obj << +/Title 352 0 R +/A 349 0 R +/Parent 343 0 R +/Prev 347 0 R +/Next 355 0 R +>> endobj +347 0 obj << +/Title 348 0 R +/A 345 0 R +/Parent 343 0 R +/Next 351 0 R +>> endobj +343 0 obj << +/Title 344 0 R +/A 341 0 R +/Parent 1475 0 R +/Prev 331 0 R +/Next 359 0 R +/First 347 0 R +/Last 355 0 R +/Count -3 +>> endobj +339 0 obj << +/Title 340 0 R +/A 337 0 R +/Parent 331 0 R +/Prev 335 0 R +>> endobj +335 0 obj << +/Title 336 0 R +/A 333 0 R +/Parent 331 0 R +/Next 339 0 R +>> endobj +331 0 obj << +/Title 332 0 R +/A 329 0 R +/Parent 1475 0 R +/Prev 319 0 R +/Next 343 0 R +/First 335 0 R +/Last 339 0 R +/Count -2 +>> endobj +327 0 obj << +/Title 328 0 R +/A 325 0 R +/Parent 319 0 R +/Prev 323 0 R +>> endobj +323 0 obj << +/Title 324 0 R +/A 321 0 R +/Parent 319 0 R +/Next 327 0 R +>> endobj +319 0 obj << +/Title 320 0 R +/A 317 0 R +/Parent 1475 0 R +/Prev 303 0 R +/Next 331 0 R +/First 323 0 R +/Last 327 0 R +/Count -2 +>> endobj +315 0 obj << +/Title 316 0 R +/A 313 0 R +/Parent 311 0 R +>> endobj +311 0 obj << +/Title 312 0 R +/A 309 0 R +/Parent 303 0 R +/Prev 307 0 R +/First 315 0 R +/Last 315 0 R +/Count -1 +>> endobj +307 0 obj << +/Title 308 0 R +/A 305 0 R +/Parent 303 0 R +/Next 311 0 R +>> endobj +303 0 obj << +/Title 304 0 R +/A 301 0 R +/Parent 1475 0 R +/Prev 267 0 R +/Next 319 0 R +/First 307 0 R +/Last 311 0 R +/Count -2 +>> endobj +299 0 obj << +/Title 300 0 R +/A 297 0 R +/Parent 275 0 R +/Prev 295 0 R +>> endobj +295 0 obj << +/Title 296 0 R +/A 293 0 R +/Parent 275 0 R +/Prev 291 0 R +/Next 299 0 R +>> endobj +291 0 obj << +/Title 292 0 R +/A 289 0 R +/Parent 275 0 R +/Prev 287 0 R +/Next 295 0 R +>> endobj +287 0 obj << +/Title 288 0 R +/A 285 0 R +/Parent 275 0 R +/Prev 283 0 R +/Next 291 0 R +>> endobj +283 0 obj << +/Title 284 0 R +/A 281 0 R +/Parent 275 0 R +/Prev 279 0 R +/Next 287 0 R +>> endobj +279 0 obj << +/Title 280 0 R +/A 277 0 R +/Parent 275 0 R +/Next 283 0 R +>> endobj +275 0 obj << +/Title 276 0 R +/A 273 0 R +/Parent 267 0 R +/Prev 271 0 R +/First 279 0 R +/Last 299 0 R +/Count -6 +>> endobj +271 0 obj << +/Title 272 0 R +/A 269 0 R +/Parent 267 0 R +/Next 275 0 R +>> endobj +267 0 obj << +/Title 268 0 R +/A 265 0 R +/Parent 1475 0 R +/Prev 255 0 R +/Next 303 0 R +/First 271 0 R +/Last 275 0 R +/Count -2 +>> endobj +263 0 obj << +/Title 264 0 R +/A 261 0 R +/Parent 255 0 R +/Prev 259 0 R +>> endobj +259 0 obj << +/Title 260 0 R +/A 257 0 R +/Parent 255 0 R +/Next 263 0 R +>> endobj +255 0 obj << +/Title 256 0 R +/A 253 0 R +/Parent 1475 0 R +/Prev 231 0 R +/Next 267 0 R +/First 259 0 R +/Last 263 0 R +/Count -2 +>> endobj +251 0 obj << +/Title 252 0 R +/A 249 0 R +/Parent 239 0 R +/Prev 247 0 R +>> endobj +247 0 obj << +/Title 248 0 R +/A 245 0 R +/Parent 239 0 R +/Prev 243 0 R +/Next 251 0 R +>> endobj +243 0 obj << +/Title 244 0 R +/A 241 0 R +/Parent 239 0 R +/Next 247 0 R +>> endobj +239 0 obj << +/Title 240 0 R +/A 237 0 R +/Parent 231 0 R +/Prev 235 0 R +/First 243 0 R +/Last 251 0 R +/Count -3 +>> endobj +235 0 obj << +/Title 236 0 R +/A 233 0 R +/Parent 231 0 R +/Next 239 0 R +>> endobj +231 0 obj << +/Title 232 0 R +/A 229 0 R +/Parent 1475 0 R +/Prev 219 0 R +/Next 255 0 R +/First 235 0 R +/Last 239 0 R +/Count -2 +>> endobj +227 0 obj << +/Title 228 0 R +/A 225 0 R +/Parent 219 0 R +/Prev 223 0 R +>> endobj +223 0 obj << +/Title 224 0 R +/A 221 0 R +/Parent 219 0 R +/Next 227 0 R +>> endobj +219 0 obj << +/Title 220 0 R +/A 217 0 R +/Parent 1475 0 R +/Prev 207 0 R +/Next 231 0 R +/First 223 0 R +/Last 227 0 R +/Count -2 +>> endobj +215 0 obj << +/Title 216 0 R +/A 213 0 R +/Parent 207 0 R +/Prev 211 0 R +>> endobj +211 0 obj << +/Title 212 0 R +/A 209 0 R +/Parent 207 0 R +/Next 215 0 R +>> endobj +207 0 obj << +/Title 208 0 R +/A 205 0 R +/Parent 1475 0 R +/Prev 191 0 R +/Next 219 0 R +/First 211 0 R +/Last 215 0 R +/Count -2 +>> endobj +203 0 obj << +/Title 204 0 R +/A 201 0 R +/Parent 191 0 R +/Prev 199 0 R +>> endobj +199 0 obj << +/Title 200 0 R +/A 197 0 R +/Parent 191 0 R +/Prev 195 0 R +/Next 203 0 R +>> endobj +195 0 obj << +/Title 196 0 R +/A 193 0 R +/Parent 191 0 R +/Next 199 0 R +>> endobj +191 0 obj << +/Title 192 0 R +/A 189 0 R +/Parent 1475 0 R +/Prev 151 0 R +/Next 207 0 R +/First 195 0 R +/Last 203 0 R +/Count -3 +>> endobj +187 0 obj << +/Title 188 0 R +/A 185 0 R +/Parent 159 0 R +/Prev 183 0 R +>> endobj +183 0 obj << +/Title 184 0 R +/A 181 0 R +/Parent 159 0 R +/Prev 179 0 R +/Next 187 0 R +>> endobj +179 0 obj << +/Title 180 0 R +/A 177 0 R +/Parent 159 0 R +/Prev 167 0 R +/Next 183 0 R +>> endobj +175 0 obj << +/Title 176 0 R +/A 173 0 R +/Parent 167 0 R +/Prev 171 0 R +>> endobj +171 0 obj << +/Title 172 0 R +/A 169 0 R +/Parent 167 0 R +/Next 175 0 R +>> endobj +167 0 obj << +/Title 168 0 R +/A 165 0 R +/Parent 159 0 R +/Prev 163 0 R +/Next 179 0 R +/First 171 0 R +/Last 175 0 R +/Count -2 +>> endobj +163 0 obj << +/Title 164 0 R +/A 161 0 R +/Parent 159 0 R +/Next 167 0 R +>> endobj +159 0 obj << +/Title 160 0 R +/A 157 0 R +/Parent 151 0 R +/Prev 155 0 R +/First 163 0 R +/Last 187 0 R +/Count -5 +>> endobj +155 0 obj << +/Title 156 0 R +/A 153 0 R +/Parent 151 0 R +/Next 159 0 R +>> endobj +151 0 obj << +/Title 152 0 R +/A 149 0 R +/Parent 1475 0 R +/Prev 139 0 R +/Next 191 0 R +/First 155 0 R +/Last 159 0 R +/Count -2 +>> endobj +147 0 obj << +/Title 148 0 R +/A 145 0 R +/Parent 139 0 R +/Prev 143 0 R +>> endobj +143 0 obj << +/Title 144 0 R +/A 141 0 R +/Parent 139 0 R +/Next 147 0 R +>> endobj +139 0 obj << +/Title 140 0 R +/A 137 0 R +/Parent 1475 0 R +/Prev 127 0 R +/Next 151 0 R +/First 143 0 R +/Last 147 0 R +/Count -2 +>> endobj +135 0 obj << +/Title 136 0 R +/A 133 0 R +/Parent 127 0 R +/Prev 131 0 R +>> endobj +131 0 obj << +/Title 132 0 R +/A 129 0 R +/Parent 127 0 R +/Next 135 0 R +>> endobj +127 0 obj << +/Title 128 0 R +/A 125 0 R +/Parent 1475 0 R +/Prev 103 0 R +/Next 139 0 R +/First 131 0 R +/Last 135 0 R +/Count -2 +>> endobj +123 0 obj << +/Title 124 0 R +/A 121 0 R +/Parent 111 0 R +/Prev 119 0 R +>> endobj +119 0 obj << +/Title 120 0 R +/A 117 0 R +/Parent 111 0 R +/Prev 115 0 R +/Next 123 0 R +>> endobj +115 0 obj << +/Title 116 0 R +/A 113 0 R +/Parent 111 0 R +/Next 119 0 R +>> endobj +111 0 obj << +/Title 112 0 R +/A 109 0 R +/Parent 103 0 R +/Prev 107 0 R +/First 115 0 R +/Last 123 0 R +/Count -3 +>> endobj +107 0 obj << +/Title 108 0 R +/A 105 0 R +/Parent 103 0 R +/Next 111 0 R +>> endobj +103 0 obj << +/Title 104 0 R +/A 101 0 R +/Parent 1475 0 R +/Prev 91 0 R +/Next 127 0 R +/First 107 0 R +/Last 111 0 R +/Count -2 +>> endobj +99 0 obj << +/Title 100 0 R +/A 97 0 R +/Parent 91 0 R +/Prev 95 0 R +>> endobj +95 0 obj << +/Title 96 0 R +/A 93 0 R +/Parent 91 0 R +/Next 99 0 R +>> endobj +91 0 obj << +/Title 92 0 R +/A 89 0 R +/Parent 1475 0 R +/Prev 79 0 R +/Next 103 0 R +/First 95 0 R +/Last 99 0 R +/Count -2 +>> endobj +87 0 obj << +/Title 88 0 R +/A 85 0 R +/Parent 79 0 R +/Prev 83 0 R +>> endobj +83 0 obj << +/Title 84 0 R +/A 81 0 R +/Parent 79 0 R +/Next 87 0 R +>> endobj +79 0 obj << +/Title 80 0 R +/A 77 0 R +/Parent 1475 0 R +/Prev 67 0 R +/Next 91 0 R +/First 83 0 R +/Last 87 0 R +/Count -2 +>> endobj +75 0 obj << +/Title 76 0 R +/A 73 0 R +/Parent 67 0 R +/Prev 71 0 R +>> endobj +71 0 obj << +/Title 72 0 R +/A 69 0 R +/Parent 67 0 R +/Next 75 0 R +>> endobj +67 0 obj << +/Title 68 0 R +/A 65 0 R +/Parent 1475 0 R +/Prev 55 0 R +/Next 79 0 R +/First 71 0 R +/Last 75 0 R +/Count -2 +>> endobj +63 0 obj << +/Title 64 0 R +/A 61 0 R +/Parent 55 0 R +/Prev 59 0 R +>> endobj +59 0 obj << +/Title 60 0 R +/A 57 0 R +/Parent 55 0 R +/Next 63 0 R +>> endobj +55 0 obj << +/Title 56 0 R +/A 53 0 R +/Parent 1475 0 R +/Prev 43 0 R +/Next 67 0 R +/First 59 0 R +/Last 63 0 R +/Count -2 +>> endobj +51 0 obj << +/Title 52 0 R +/A 49 0 R +/Parent 43 0 R +/Prev 47 0 R +>> endobj +47 0 obj << +/Title 48 0 R +/A 45 0 R +/Parent 43 0 R +/Next 51 0 R +>> endobj +43 0 obj << +/Title 44 0 R +/A 41 0 R +/Parent 1475 0 R +/Prev 31 0 R +/Next 55 0 R +/First 47 0 R +/Last 51 0 R +/Count -2 +>> endobj +39 0 obj << +/Title 40 0 R +/A 37 0 R +/Parent 31 0 R +/Prev 35 0 R +>> endobj +35 0 obj << +/Title 36 0 R +/A 33 0 R +/Parent 31 0 R +/Next 39 0 R +>> endobj +31 0 obj << +/Title 32 0 R +/A 29 0 R +/Parent 1475 0 R +/Prev 19 0 R +/Next 43 0 R +/First 35 0 R +/Last 39 0 R +/Count -2 +>> endobj +27 0 obj << +/Title 28 0 R +/A 25 0 R +/Parent 19 0 R +/Prev 23 0 R +>> endobj +23 0 obj << +/Title 24 0 R +/A 21 0 R +/Parent 19 0 R +/Next 27 0 R +>> endobj +19 0 obj << +/Title 20 0 R +/A 17 0 R +/Parent 1475 0 R +/Prev 15 0 R +/Next 31 0 R +/First 23 0 R +/Last 27 0 R +/Count -2 +>> endobj +15 0 obj << +/Title 16 0 R +/A 13 0 R +/Parent 1475 0 R +/Prev 11 0 R +/Next 19 0 R +>> endobj +11 0 obj << +/Title 12 0 R +/A 9 0 R +/Parent 1475 0 R +/Prev 7 0 R +/Next 15 0 R +>> endobj +7 0 obj << +/Title 8 0 R +/A 5 0 R +/Parent 1475 0 R +/Next 11 0 R +>> endobj +1476 0 obj << +/Names [(Doc-Start) 366 0 R (Item.1) 539 0 R (Item.10) 548 0 R (Item.11) 589 0 R (Item.12) 590 0 R (Item.13) 595 0 R] +/Limits [(Doc-Start) (Item.13)] +>> endobj +1477 0 obj << +/Names [(Item.14) 596 0 R (Item.15) 597 0 R (Item.16) 614 0 R (Item.17) 615 0 R (Item.18) 616 0 R (Item.19) 676 0 R] +/Limits [(Item.14) (Item.19)] +>> endobj +1478 0 obj << +/Names [(Item.2) 540 0 R (Item.20) 677 0 R (Item.21) 678 0 R (Item.22) 683 0 R (Item.23) 688 0 R (Item.24) 689 0 R] +/Limits [(Item.2) (Item.24)] +>> endobj +1479 0 obj << +/Names [(Item.25) 734 0 R (Item.26) 735 0 R (Item.27) 736 0 R (Item.28) 890 0 R (Item.29) 891 0 R (Item.3) 541 0 R] +/Limits [(Item.25) (Item.3)] +>> endobj +1480 0 obj << +/Names [(Item.30) 892 0 R (Item.31) 898 0 R (Item.32) 899 0 R (Item.33) 900 0 R (Item.34) 901 0 R (Item.35) 902 0 R] +/Limits [(Item.30) (Item.35)] +>> endobj +1481 0 obj << +/Names [(Item.4) 542 0 R (Item.5) 543 0 R (Item.6) 544 0 R (Item.7) 545 0 R (Item.8) 546 0 R (Item.9) 547 0 R] +/Limits [(Item.4) (Item.9)] +>> endobj +1482 0 obj << +/Names [(chapter*.2) 10 0 R (chapter*.3) 14 0 R (chapter.1) 18 0 R (chapter.10) 138 0 R (chapter.11) 150 0 R (chapter.12) 190 0 R] +/Limits [(chapter*.2) (chapter.12)] +>> endobj +1483 0 obj << +/Names [(chapter.13) 206 0 R (chapter.14) 218 0 R (chapter.15) 230 0 R (chapter.16) 254 0 R (chapter.17) 266 0 R (chapter.18) 302 0 R] +/Limits [(chapter.13) (chapter.18)] +>> endobj +1484 0 obj << +/Names [(chapter.19) 318 0 R (chapter.2) 30 0 R (chapter.20) 330 0 R (chapter.21) 342 0 R (chapter.3) 42 0 R (chapter.4) 54 0 R] +/Limits [(chapter.19) (chapter.4)] +>> endobj +1485 0 obj << +/Names [(chapter.5) 66 0 R (chapter.6) 78 0 R (chapter.7) 90 0 R (chapter.8) 102 0 R (chapter.9) 126 0 R (page.1) 503 0 R] +/Limits [(chapter.5) (page.1)] +>> endobj +1486 0 obj << +/Names [(page.10) 552 0 R (page.11) 556 0 R (page.12) 562 0 R (page.13) 567 0 R (page.14) 571 0 R (page.15) 575 0 R] +/Limits [(page.10) (page.15)] +>> endobj +1487 0 obj << +/Names [(page.16) 579 0 R (page.17) 583 0 R (page.18) 588 0 R (page.19) 594 0 R (page.2) 508 0 R (page.20) 601 0 R] +/Limits [(page.16) (page.20)] +>> endobj +1488 0 obj << +/Names [(page.21) 605 0 R (page.22) 609 0 R (page.23) 613 0 R (page.24) 621 0 R (page.25) 625 0 R (page.26) 629 0 R] +/Limits [(page.21) (page.26)] +>> endobj +1489 0 obj << +/Names [(page.27) 633 0 R (page.28) 637 0 R (page.29) 641 0 R (page.3) 512 0 R (page.30) 646 0 R (page.31) 650 0 R] +/Limits [(page.27) (page.31)] +>> endobj +1490 0 obj << +/Names [(page.32) 654 0 R (page.33) 658 0 R (page.34) 662 0 R (page.35) 666 0 R (page.36) 671 0 R (page.37) 675 0 R] +/Limits [(page.32) (page.37)] +>> endobj +1491 0 obj << +/Names [(page.38) 682 0 R (page.39) 687 0 R (page.4) 516 0 R (page.40) 693 0 R (page.41) 697 0 R (page.42) 703 0 R] +/Limits [(page.38) (page.42)] +>> endobj +1492 0 obj << +/Names [(page.43) 707 0 R (page.44) 711 0 R (page.45) 715 0 R (page.46) 719 0 R (page.47) 723 0 R (page.48) 728 0 R] +/Limits [(page.43) (page.48)] +>> endobj +1493 0 obj << +/Names [(page.49) 733 0 R (page.5) 520 0 R (page.50) 743 0 R (page.51) 749 0 R (page.52) 753 0 R (page.53) 757 0 R] +/Limits [(page.49) (page.53)] +>> endobj +1494 0 obj << +/Names [(page.54) 762 0 R (page.55) 767 0 R (page.56) 771 0 R (page.57) 775 0 R (page.58) 779 0 R (page.59) 783 0 R] +/Limits [(page.54) (page.59)] +>> endobj +1495 0 obj << +/Names [(page.6) 526 0 R (page.60) 788 0 R (page.61) 792 0 R (page.62) 796 0 R (page.63) 800 0 R (page.64) 804 0 R] +/Limits [(page.6) (page.64)] +>> endobj +1496 0 obj << +/Names [(page.65) 808 0 R (page.66) 813 0 R (page.67) 817 0 R (page.68) 821 0 R (page.69) 825 0 R (page.7) 530 0 R] +/Limits [(page.65) (page.7)] +>> endobj +1497 0 obj << +/Names [(page.70) 829 0 R (page.71) 833 0 R (page.72) 838 0 R (page.73) 842 0 R (page.74) 846 0 R (page.75) 851 0 R] +/Limits [(page.70) (page.75)] +>> endobj +1498 0 obj << +/Names [(page.76) 855 0 R (page.77) 860 0 R (page.78) 865 0 R (page.79) 869 0 R (page.8) 534 0 R (page.80) 873 0 R] +/Limits [(page.76) (page.80)] +>> endobj +1499 0 obj << +/Names [(page.81) 877 0 R (page.82) 881 0 R (page.83) 889 0 R (page.84) 897 0 R (page.85) 906 0 R (page.86) 911 0 R] +/Limits [(page.81) (page.86)] +>> endobj +1500 0 obj << +/Names [(page.87) 915 0 R (page.88) 919 0 R (page.89) 928 0 R (page.9) 538 0 R (page.90) 934 0 R (page.91) 939 0 R] +/Limits [(page.87) (page.91)] +>> endobj +1501 0 obj << +/Names [(page.92) 943 0 R (page.93) 947 0 R (page.94) 951 0 R (page.95) 1105 0 R (page.96) 1250 0 R (page.97) 1388 0 R] +/Limits [(page.92) (page.97)] +>> endobj +1502 0 obj << +/Names [(page.98) 1413 0 R (page.i) 365 0 R (page.ii) 376 0 R (page.iii) 413 0 R (page.iv) 460 0 R (page.v) 481 0 R] +/Limits [(page.98) (page.v)] +>> endobj +1503 0 obj << +/Names [(page.vi) 488 0 R (page.vii) 494 0 R (page.viii) 499 0 R (section*.1) 6 0 R (section*.4) 358 0 R (section.1.1) 22 0 R] +/Limits [(page.vi) (section.1.1)] +>> endobj +1504 0 obj << +/Names [(section.1.2) 26 0 R (section.10.1) 142 0 R (section.10.2) 146 0 R (section.11.1) 154 0 R (section.11.2) 158 0 R (section.12.1) 194 0 R] +/Limits [(section.1.2) (section.12.1)] +>> endobj +1505 0 obj << +/Names [(section.12.2) 198 0 R (section.12.3) 202 0 R (section.13.1) 210 0 R (section.13.2) 214 0 R (section.14.1) 222 0 R (section.14.2) 226 0 R] +/Limits [(section.12.2) (section.14.2)] +>> endobj +1506 0 obj << +/Names [(section.15.1) 234 0 R (section.15.2) 238 0 R (section.16.1) 258 0 R (section.16.2) 262 0 R (section.17.1) 270 0 R (section.17.2) 274 0 R] +/Limits [(section.15.1) (section.17.2)] +>> endobj +1507 0 obj << +/Names [(section.18.1) 306 0 R (section.18.2) 310 0 R (section.19.1) 322 0 R (section.19.2) 326 0 R (section.2.1) 34 0 R (section.2.2) 38 0 R] +/Limits [(section.18.1) (section.2.2)] +>> endobj +1508 0 obj << +/Names [(section.20.1) 334 0 R (section.20.2) 338 0 R (section.21.1) 346 0 R (section.21.2) 350 0 R (section.21.3) 354 0 R (section.3.1) 46 0 R] +/Limits [(section.20.1) (section.3.1)] +>> endobj +1509 0 obj << +/Names [(section.3.2) 50 0 R (section.4.1) 58 0 R (section.4.2) 62 0 R (section.5.1) 70 0 R (section.5.2) 74 0 R (section.6.1) 82 0 R] +/Limits [(section.3.2) (section.6.1)] +>> endobj +1510 0 obj << +/Names [(section.6.2) 86 0 R (section.7.1) 94 0 R (section.7.2) 98 0 R (section.8.1) 106 0 R (section.8.2) 110 0 R (section.9.1) 130 0 R] +/Limits [(section.6.2) (section.9.1)] +>> endobj +1511 0 obj << +/Names [(section.9.2) 134 0 R (subsection.11.2.1) 162 0 R (subsection.11.2.2) 166 0 R (subsection.11.2.3) 178 0 R (subsection.11.2.4) 182 0 R (subsection.11.2.5) 186 0 R] +/Limits [(section.9.2) (subsection.11.2.5)] +>> endobj +1512 0 obj << +/Names [(subsection.15.2.1) 242 0 R (subsection.15.2.2) 246 0 R (subsection.15.2.3) 250 0 R (subsection.17.2.1) 278 0 R (subsection.17.2.2) 282 0 R (subsection.17.2.3) 286 0 R] +/Limits [(subsection.15.2.1) (subsection.17.2.3)] +>> endobj +1513 0 obj << +/Names [(subsection.17.2.4) 290 0 R (subsection.17.2.5) 294 0 R (subsection.17.2.6) 298 0 R (subsection.18.2.1) 314 0 R (subsection.8.2.1) 114 0 R (subsection.8.2.2) 118 0 R] +/Limits [(subsection.17.2.4) (subsection.8.2.2)] +>> endobj +1514 0 obj << +/Names [(subsection.8.2.3) 122 0 R (subsubsection.11.2.2.1) 170 0 R (subsubsection.11.2.2.2) 174 0 R (table.12.1) 737 0 R (table.12.2) 744 0 R (table.12.3) 745 0 R] +/Limits [(subsection.8.2.3) (table.12.3)] +>> endobj +1515 0 obj << +/Kids [1476 0 R 1477 0 R 1478 0 R 1479 0 R 1480 0 R 1481 0 R] +/Limits [(Doc-Start) (Item.9)] +>> endobj +1516 0 obj << +/Kids [1482 0 R 1483 0 R 1484 0 R 1485 0 R 1486 0 R 1487 0 R] +/Limits [(chapter*.2) (page.20)] +>> endobj +1517 0 obj << +/Kids [1488 0 R 1489 0 R 1490 0 R 1491 0 R 1492 0 R 1493 0 R] +/Limits [(page.21) (page.53)] +>> endobj +1518 0 obj << +/Kids [1494 0 R 1495 0 R 1496 0 R 1497 0 R 1498 0 R 1499 0 R] +/Limits [(page.54) (page.86)] +>> endobj +1519 0 obj << +/Kids [1500 0 R 1501 0 R 1502 0 R 1503 0 R 1504 0 R 1505 0 R] +/Limits [(page.87) (section.14.2)] +>> endobj +1520 0 obj << +/Kids [1506 0 R 1507 0 R 1508 0 R 1509 0 R 1510 0 R 1511 0 R] +/Limits [(section.15.1) (subsection.11.2.5)] +>> endobj +1521 0 obj << +/Kids [1512 0 R 1513 0 R 1514 0 R] +/Limits [(subsection.15.2.1) (table.12.3)] +>> endobj +1522 0 obj << +/Kids [1515 0 R 1516 0 R 1517 0 R 1518 0 R 1519 0 R 1520 0 R] +/Limits [(Doc-Start) (subsection.11.2.5)] +>> endobj +1523 0 obj << +/Kids [1521 0 R] +/Limits [(subsection.15.2.1) (table.12.3)] +>> endobj +1524 0 obj << +/Kids [1522 0 R 1523 0 R] +/Limits [(Doc-Start) (table.12.3)] +>> endobj +1525 0 obj << +/Dests 1524 0 R +>> endobj +1526 0 obj << +/Type /Catalog +/Pages 1474 0 R +/Outlines 1475 0 R +/Names 1525 0 R +/PageMode/UseOutlines/PageLabels << /Nums [0 << /S /r >> 8 << /S /D >> ] >> +/OpenAction 361 0 R +>> endobj +1527 0 obj << +/Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.3)/Keywords() +/CreationDate (D:20080725183809-04'00') +/ModDate (D:20080725183809-04'00') +/Trapped /False +/PTEX.Fullbanner (This is pdfTeX, Version 3.141592-1.40.3-2.2 (Web2C 7.5.6) kpathsea version 3.5.6) +>> endobj +xref +0 1528 +0000000001 65535 f +0000000002 00000 f +0000000003 00000 f +0000000004 00000 f +0000000000 00000 f +0000000015 00000 n +0000015315 00000 n +0000513050 00000 n +0000000061 00000 n +0000000087 00000 n +0000029867 00000 n +0000512963 00000 n +0000000133 00000 n +0000000159 00000 n +0000032741 00000 n +0000512874 00000 n +0000000206 00000 n +0000000237 00000 n +0000035122 00000 n +0000512748 00000 n +0000000283 00000 n +0000000313 00000 n +0000035182 00000 n +0000512674 00000 n +0000000361 00000 n +0000000401 00000 n +0000035242 00000 n +0000512600 00000 n +0000000449 00000 n +0000000479 00000 n +0000037537 00000 n +0000512474 00000 n +0000000525 00000 n +0000000560 00000 n +0000037598 00000 n +0000512400 00000 n +0000000608 00000 n +0000000648 00000 n +0000037659 00000 n +0000512326 00000 n +0000000696 00000 n +0000000726 00000 n +0000045641 00000 n +0000512200 00000 n +0000000772 00000 n +0000000806 00000 n +0000045701 00000 n +0000512126 00000 n +0000000854 00000 n +0000000894 00000 n +0000045761 00000 n +0000512052 00000 n +0000000942 00000 n +0000000972 00000 n +0000049221 00000 n +0000511926 00000 n +0000001018 00000 n +0000001054 00000 n +0000049281 00000 n +0000511852 00000 n +0000001102 00000 n +0000001143 00000 n +0000049340 00000 n +0000511778 00000 n +0000001191 00000 n +0000001221 00000 n +0000061159 00000 n +0000511652 00000 n +0000001267 00000 n +0000001302 00000 n +0000061219 00000 n +0000511578 00000 n +0000001350 00000 n +0000001390 00000 n +0000061279 00000 n +0000511504 00000 n +0000001438 00000 n +0000001468 00000 n +0000065619 00000 n +0000511378 00000 n +0000001514 00000 n +0000001553 00000 n +0000065679 00000 n +0000511304 00000 n +0000001601 00000 n +0000001641 00000 n +0000065739 00000 n +0000511230 00000 n +0000001689 00000 n +0000001719 00000 n +0000085415 00000 n +0000511103 00000 n +0000001765 00000 n +0000001802 00000 n +0000085475 00000 n +0000511029 00000 n +0000001850 00000 n +0000001890 00000 n +0000085535 00000 n +0000510954 00000 n +0000001938 00000 n +0000001969 00000 n +0000098473 00000 n +0000510822 00000 n +0000002016 00000 n +0000002051 00000 n +0000098534 00000 n +0000510743 00000 n +0000002100 00000 n +0000002141 00000 n +0000101310 00000 n +0000510625 00000 n +0000002190 00000 n +0000002221 00000 n +0000101372 00000 n +0000510546 00000 n +0000002275 00000 n +0000002307 00000 n +0000108108 00000 n +0000510453 00000 n +0000002361 00000 n +0000002399 00000 n +0000110189 00000 n +0000510374 00000 n +0000002453 00000 n +0000002487 00000 n +0000112394 00000 n +0000510241 00000 n +0000002534 00000 n +0000002568 00000 n +0000112455 00000 n +0000510162 00000 n +0000002617 00000 n +0000002673 00000 n +0000112516 00000 n +0000510083 00000 n +0000002722 00000 n +0000002753 00000 n +0000115464 00000 n +0000509950 00000 n +0000002801 00000 n +0000002843 00000 n +0000115526 00000 n +0000509871 00000 n +0000002893 00000 n +0000002935 00000 n +0000115587 00000 n +0000509792 00000 n +0000002985 00000 n +0000003017 00000 n +0000120673 00000 n +0000509659 00000 n +0000003065 00000 n +0000003116 00000 n +0000120735 00000 n +0000509580 00000 n +0000003166 00000 n +0000003208 00000 n +0000123857 00000 n +0000509462 00000 n +0000003258 00000 n +0000003290 00000 n +0000123918 00000 n +0000509383 00000 n +0000003345 00000 n +0000003378 00000 n +0000127696 00000 n +0000509251 00000 n +0000003433 00000 n +0000003478 00000 n +0000127758 00000 n +0000509172 00000 n +0000003538 00000 n +0000003575 00000 n +0000131336 00000 n +0000509093 00000 n +0000003635 00000 n +0000003672 00000 n +0000131397 00000 n +0000509000 00000 n +0000003727 00000 n +0000003760 00000 n +0000142228 00000 n +0000508907 00000 n +0000003815 00000 n +0000003852 00000 n +0000144403 00000 n +0000508828 00000 n +0000003907 00000 n +0000003944 00000 n +0000153058 00000 n +0000508695 00000 n +0000003992 00000 n +0000004045 00000 n +0000153119 00000 n +0000508616 00000 n +0000004095 00000 n +0000004128 00000 n +0000153180 00000 n +0000508523 00000 n +0000004178 00000 n +0000004210 00000 n +0000161712 00000 n +0000508444 00000 n +0000004260 00000 n +0000004293 00000 n +0000164313 00000 n +0000508311 00000 n +0000004341 00000 n +0000004385 00000 n +0000164374 00000 n +0000508232 00000 n +0000004435 00000 n +0000004477 00000 n +0000164435 00000 n +0000508153 00000 n +0000004527 00000 n +0000004559 00000 n +0000166813 00000 n +0000508020 00000 n +0000004607 00000 n +0000004643 00000 n +0000166875 00000 n +0000507941 00000 n +0000004693 00000 n +0000004726 00000 n +0000166936 00000 n +0000507862 00000 n +0000004776 00000 n +0000004808 00000 n +0000171403 00000 n +0000507729 00000 n +0000004856 00000 n +0000004892 00000 n +0000171465 00000 n +0000507650 00000 n +0000004942 00000 n +0000004975 00000 n +0000171527 00000 n +0000507532 00000 n +0000005025 00000 n +0000005057 00000 n +0000179095 00000 n +0000507453 00000 n +0000005112 00000 n +0000005164 00000 n +0000179156 00000 n +0000507360 00000 n +0000005219 00000 n +0000005270 00000 n +0000182383 00000 n +0000507281 00000 n +0000005325 00000 n +0000005396 00000 n +0000202591 00000 n +0000507148 00000 n +0000005444 00000 n +0000005501 00000 n +0000202652 00000 n +0000507069 00000 n +0000005551 00000 n +0000005584 00000 n +0000202713 00000 n +0000506990 00000 n +0000005634 00000 n +0000005666 00000 n +0000214598 00000 n +0000506857 00000 n +0000005714 00000 n +0000005756 00000 n +0000214659 00000 n +0000506778 00000 n +0000005806 00000 n +0000005839 00000 n +0000217989 00000 n +0000506660 00000 n +0000005889 00000 n +0000005921 00000 n +0000218051 00000 n +0000506581 00000 n +0000005976 00000 n +0000006040 00000 n +0000218113 00000 n +0000506488 00000 n +0000006095 00000 n +0000006168 00000 n +0000221042 00000 n +0000506395 00000 n +0000006223 00000 n +0000006308 00000 n +0000221103 00000 n +0000506302 00000 n +0000006363 00000 n +0000006444 00000 n +0000226114 00000 n +0000506209 00000 n +0000006499 00000 n +0000006544 00000 n +0000226175 00000 n +0000506130 00000 n +0000006599 00000 n +0000006637 00000 n +0000231088 00000 n +0000505997 00000 n +0000006685 00000 n +0000006721 00000 n +0000231149 00000 n +0000505918 00000 n +0000006771 00000 n +0000006804 00000 n +0000231210 00000 n +0000505800 00000 n +0000006854 00000 n +0000006886 00000 n +0000234315 00000 n +0000505735 00000 n +0000006941 00000 n +0000006992 00000 n +0000237199 00000 n +0000505602 00000 n +0000007040 00000 n +0000007075 00000 n +0000237260 00000 n +0000505523 00000 n +0000007125 00000 n +0000007167 00000 n +0000240984 00000 n +0000505444 00000 n +0000007217 00000 n +0000007256 00000 n +0000249589 00000 n +0000505311 00000 n +0000007304 00000 n +0000007339 00000 n +0000249651 00000 n +0000505232 00000 n +0000007389 00000 n +0000007422 00000 n +0000249713 00000 n +0000505153 00000 n +0000007472 00000 n +0000007503 00000 n +0000253877 00000 n +0000505020 00000 n +0000007551 00000 n +0000007602 00000 n +0000253938 00000 n +0000504941 00000 n +0000007652 00000 n +0000007684 00000 n +0000253999 00000 n +0000504848 00000 n +0000007734 00000 n +0000007767 00000 n +0000257328 00000 n +0000504769 00000 n +0000007817 00000 n +0000007849 00000 n +0000290253 00000 n +0000504689 00000 n +0000007897 00000 n +0000007922 00000 n +0000008437 00000 n +0000008671 00000 n +0000007974 00000 n +0000008549 00000 n +0000008610 00000 n +0000500600 00000 n +0000499282 00000 n +0000501472 00000 n +0000500455 00000 n +0000500310 00000 n +0000502055 00000 n +0000009058 00000 n +0000008884 00000 n +0000008795 00000 n +0000008996 00000 n +0000010367 00000 n +0000010519 00000 n +0000010671 00000 n +0000010822 00000 n +0000010973 00000 n +0000011126 00000 n +0000011279 00000 n +0000011430 00000 n +0000011583 00000 n +0000011736 00000 n +0000011887 00000 n +0000012039 00000 n +0000012192 00000 n +0000012343 00000 n +0000012496 00000 n +0000012649 00000 n +0000012800 00000 n +0000012953 00000 n +0000013104 00000 n +0000013255 00000 n +0000013408 00000 n +0000013561 00000 n +0000013712 00000 n +0000013865 00000 n +0000014018 00000 n +0000014169 00000 n +0000014322 00000 n +0000014475 00000 n +0000014633 00000 n +0000014792 00000 n +0000014950 00000 n +0000015101 00000 n +0000017263 00000 n +0000015373 00000 n +0000009987 00000 n +0000009099 00000 n +0000015254 00000 n +0000499578 00000 n +0000499432 00000 n +0000501618 00000 n +0000017417 00000 n +0000017570 00000 n +0000017725 00000 n +0000017880 00000 n +0000018032 00000 n +0000018187 00000 n +0000018342 00000 n +0000018502 00000 n +0000018662 00000 n +0000018827 00000 n +0000018992 00000 n +0000019152 00000 n +0000019312 00000 n +0000019472 00000 n +0000019625 00000 n +0000019777 00000 n +0000019932 00000 n +0000020086 00000 n +0000020239 00000 n +0000020394 00000 n +0000020549 00000 n +0000020702 00000 n +0000020856 00000 n +0000021011 00000 n +0000021164 00000 n +0000021312 00000 n +0000021467 00000 n +0000021627 00000 n +0000021787 00000 n +0000021945 00000 n +0000022098 00000 n +0000022252 00000 n +0000022407 00000 n +0000022559 00000 n +0000022713 00000 n +0000022868 00000 n +0000023028 00000 n +0000023188 00000 n +0000023347 00000 n +0000024613 00000 n +0000023569 00000 n +0000016819 00000 n +0000015484 00000 n +0000023507 00000 n +0000500887 00000 n +0000024773 00000 n +0000024931 00000 n +0000025083 00000 n +0000025237 00000 n +0000025391 00000 n +0000025551 00000 n +0000025702 00000 n +0000025856 00000 n +0000026006 00000 n +0000026158 00000 n +0000026312 00000 n +0000026465 00000 n +0000026617 00000 n +0000026771 00000 n +0000026925 00000 n +0000027079 00000 n +0000027291 00000 n +0000024353 00000 n +0000023680 00000 n +0000027230 00000 n +0000029315 00000 n +0000029476 00000 n +0000029648 00000 n +0000029928 00000 n +0000029167 00000 n +0000027389 00000 n +0000029805 00000 n +0000501326 00000 n +0000499724 00000 n +0000032801 00000 n +0000032568 00000 n +0000030052 00000 n +0000032680 00000 n +0000502173 00000 n +0000033175 00000 n +0000033001 00000 n +0000032912 00000 n +0000033113 00000 n +0000035302 00000 n +0000034949 00000 n +0000033216 00000 n +0000035061 00000 n +0000501910 00000 n +0000037720 00000 n +0000037363 00000 n +0000035452 00000 n +0000037475 00000 n +0000039797 00000 n +0000039624 00000 n +0000037857 00000 n +0000039736 00000 n +0000042557 00000 n +0000042383 00000 n +0000039921 00000 n +0000042495 00000 n +0000045821 00000 n +0000045468 00000 n +0000042681 00000 n +0000045580 00000 n +0000501181 00000 n +0000502291 00000 n +0000046649 00000 n +0000046475 00000 n +0000045971 00000 n +0000046587 00000 n +0000049400 00000 n +0000049048 00000 n +0000046734 00000 n +0000049160 00000 n +0000052414 00000 n +0000052240 00000 n +0000049550 00000 n +0000052352 00000 n +0000055964 00000 n +0000055182 00000 n +0000052499 00000 n +0000055294 00000 n +0000055355 00000 n +0000055416 00000 n +0000055477 00000 n +0000055537 00000 n +0000055598 00000 n +0000055659 00000 n +0000055720 00000 n +0000055781 00000 n +0000055842 00000 n +0000055903 00000 n +0000059297 00000 n +0000059123 00000 n +0000056062 00000 n +0000059235 00000 n +0000061339 00000 n +0000060986 00000 n +0000059408 00000 n +0000061098 00000 n +0000501764 00000 n +0000502409 00000 n +0000062546 00000 n +0000062372 00000 n +0000061502 00000 n +0000062484 00000 n +0000501033 00000 n +0000065799 00000 n +0000065446 00000 n +0000062670 00000 n +0000065558 00000 n +0000068571 00000 n +0000068397 00000 n +0000065936 00000 n +0000068509 00000 n +0000070920 00000 n +0000070747 00000 n +0000068695 00000 n +0000070859 00000 n +0000072940 00000 n +0000072766 00000 n +0000071044 00000 n +0000072878 00000 n +0000075360 00000 n +0000075187 00000 n +0000073064 00000 n +0000075299 00000 n +0000502527 00000 n +0000078726 00000 n +0000078428 00000 n +0000075484 00000 n +0000078540 00000 n +0000078602 00000 n +0000078664 00000 n +0000081656 00000 n +0000081300 00000 n +0000078863 00000 n +0000081412 00000 n +0000081473 00000 n +0000081534 00000 n +0000081595 00000 n +0000082604 00000 n +0000082430 00000 n +0000081767 00000 n +0000082542 00000 n +0000085595 00000 n +0000085242 00000 n +0000082715 00000 n +0000085354 00000 n +0000088616 00000 n +0000088442 00000 n +0000085732 00000 n +0000088554 00000 n +0000091177 00000 n +0000090822 00000 n +0000088740 00000 n +0000090934 00000 n +0000090995 00000 n +0000091056 00000 n +0000091117 00000 n +0000502645 00000 n +0000093026 00000 n +0000092852 00000 n +0000091314 00000 n +0000092964 00000 n +0000094273 00000 n +0000094100 00000 n +0000093150 00000 n +0000094212 00000 n +0000095295 00000 n +0000095121 00000 n +0000094384 00000 n +0000095233 00000 n +0000098595 00000 n +0000098300 00000 n +0000095419 00000 n +0000098412 00000 n +0000101434 00000 n +0000101136 00000 n +0000098758 00000 n +0000101248 00000 n +0000104053 00000 n +0000103880 00000 n +0000101597 00000 n +0000103992 00000 n +0000502763 00000 n +0000105459 00000 n +0000105285 00000 n +0000104177 00000 n +0000105397 00000 n +0000108169 00000 n +0000107935 00000 n +0000105570 00000 n +0000108047 00000 n +0000110251 00000 n +0000110015 00000 n +0000108319 00000 n +0000110127 00000 n +0000112577 00000 n +0000112221 00000 n +0000110401 00000 n +0000112333 00000 n +0000115649 00000 n +0000115290 00000 n +0000112727 00000 n +0000115402 00000 n +0000117294 00000 n +0000117121 00000 n +0000115786 00000 n +0000117233 00000 n +0000502881 00000 n +0000120797 00000 n +0000120499 00000 n +0000117392 00000 n +0000120611 00000 n +0000124161 00000 n +0000123684 00000 n +0000120921 00000 n +0000123796 00000 n +0000123978 00000 n +0000124039 00000 n +0000124100 00000 n +0000127882 00000 n +0000127522 00000 n +0000124298 00000 n +0000127634 00000 n +0000127820 00000 n +0000131457 00000 n +0000131041 00000 n +0000128032 00000 n +0000131153 00000 n +0000131214 00000 n +0000131275 00000 n +0000134498 00000 n +0000134324 00000 n +0000131607 00000 n +0000134436 00000 n +0000137594 00000 n +0000137421 00000 n +0000134635 00000 n +0000137533 00000 n +0000500744 00000 n +0000502999 00000 n +0000139995 00000 n +0000139821 00000 n +0000137743 00000 n +0000139933 00000 n +0000142289 00000 n +0000142055 00000 n +0000140145 00000 n +0000142167 00000 n +0000144465 00000 n +0000144229 00000 n +0000142413 00000 n +0000144341 00000 n +0000146126 00000 n +0000145953 00000 n +0000144576 00000 n +0000146065 00000 n +0000147531 00000 n +0000147357 00000 n +0000146224 00000 n +0000147469 00000 n +0000149176 00000 n +0000149003 00000 n +0000147629 00000 n +0000149115 00000 n +0000503117 00000 n +0000150336 00000 n +0000150162 00000 n +0000149274 00000 n +0000150274 00000 n +0000152844 00000 n +0000153424 00000 n +0000152712 00000 n +0000150434 00000 n +0000152997 00000 n +0000153241 00000 n +0000153302 00000 n +0000153363 00000 n +0000156141 00000 n +0000155774 00000 n +0000155926 00000 n +0000156264 00000 n +0000155634 00000 n +0000153561 00000 n +0000156079 00000 n +0000156203 00000 n +0000158797 00000 n +0000158859 00000 n +0000158624 00000 n +0000156362 00000 n +0000158736 00000 n +0000161774 00000 n +0000161538 00000 n +0000158983 00000 n +0000161650 00000 n +0000164496 00000 n +0000164140 00000 n +0000161911 00000 n +0000164252 00000 n +0000503235 00000 n +0000166998 00000 n +0000166639 00000 n +0000164659 00000 n +0000166751 00000 n +0000500018 00000 n +0000168125 00000 n +0000167952 00000 n +0000167148 00000 n +0000168064 00000 n +0000171589 00000 n +0000171229 00000 n +0000168223 00000 n +0000171341 00000 n +0000174352 00000 n +0000174179 00000 n +0000171739 00000 n +0000174291 00000 n +0000175481 00000 n +0000175307 00000 n +0000174476 00000 n +0000175419 00000 n +0000179216 00000 n +0000178922 00000 n +0000175592 00000 n +0000179034 00000 n +0000503353 00000 n +0000182445 00000 n +0000182209 00000 n +0000179353 00000 n +0000182321 00000 n +0000184997 00000 n +0000184824 00000 n +0000182595 00000 n +0000184936 00000 n +0000186933 00000 n +0000186759 00000 n +0000185121 00000 n +0000186871 00000 n +0000188399 00000 n +0000188226 00000 n +0000187057 00000 n +0000188338 00000 n +0000190041 00000 n +0000189867 00000 n +0000188497 00000 n +0000189979 00000 n +0000191423 00000 n +0000191250 00000 n +0000190139 00000 n +0000191362 00000 n +0000503471 00000 n +0000193898 00000 n +0000193724 00000 n +0000191521 00000 n +0000193836 00000 n +0000195495 00000 n +0000195322 00000 n +0000194048 00000 n +0000195434 00000 n +0000197444 00000 n +0000197270 00000 n +0000195606 00000 n +0000197382 00000 n +0000200008 00000 n +0000199835 00000 n +0000197555 00000 n +0000199947 00000 n +0000200949 00000 n +0000200775 00000 n +0000200119 00000 n +0000200887 00000 n +0000202774 00000 n +0000202418 00000 n +0000201060 00000 n +0000202530 00000 n +0000503589 00000 n +0000206395 00000 n +0000206221 00000 n +0000202911 00000 n +0000206333 00000 n +0000209751 00000 n +0000209578 00000 n +0000206519 00000 n +0000209690 00000 n +0000211351 00000 n +0000211177 00000 n +0000209875 00000 n +0000211289 00000 n +0000214376 00000 n +0000214720 00000 n +0000214244 00000 n +0000211462 00000 n +0000214537 00000 n +0000218175 00000 n +0000217815 00000 n +0000214870 00000 n +0000217927 00000 n +0000499871 00000 n +0000221164 00000 n +0000220869 00000 n +0000218351 00000 n +0000220981 00000 n +0000503707 00000 n +0000223679 00000 n +0000223505 00000 n +0000221301 00000 n +0000223617 00000 n +0000226236 00000 n +0000225941 00000 n +0000223803 00000 n +0000226053 00000 n +0000227809 00000 n +0000227635 00000 n +0000226373 00000 n +0000227747 00000 n +0000231271 00000 n +0000230915 00000 n +0000227946 00000 n +0000231027 00000 n +0000234377 00000 n +0000234141 00000 n +0000231408 00000 n +0000234253 00000 n +0000236486 00000 n +0000236646 00000 n +0000236805 00000 n +0000236966 00000 n +0000237503 00000 n +0000236330 00000 n +0000234514 00000 n +0000237138 00000 n +0000237320 00000 n +0000237381 00000 n +0000237442 00000 n +0000503825 00000 n +0000241046 00000 n +0000240500 00000 n +0000237640 00000 n +0000240612 00000 n +0000240674 00000 n +0000240736 00000 n +0000240798 00000 n +0000240860 00000 n +0000240922 00000 n +0000243444 00000 n +0000243271 00000 n +0000241183 00000 n +0000243383 00000 n +0000500164 00000 n +0000245346 00000 n +0000245172 00000 n +0000243593 00000 n +0000245284 00000 n +0000247190 00000 n +0000247017 00000 n +0000245483 00000 n +0000247129 00000 n +0000249775 00000 n +0000249415 00000 n +0000247327 00000 n +0000249527 00000 n +0000252996 00000 n +0000253157 00000 n +0000253329 00000 n +0000253490 00000 n +0000253655 00000 n +0000254058 00000 n +0000252832 00000 n +0000249925 00000 n +0000253816 00000 n +0000503943 00000 n +0000257093 00000 n +0000257390 00000 n +0000256961 00000 n +0000254195 00000 n +0000257266 00000 n +0000260611 00000 n +0000260832 00000 n +0000260479 00000 n +0000257540 00000 n +0000260771 00000 n +0000262692 00000 n +0000262518 00000 n +0000260982 00000 n +0000262630 00000 n +0000264131 00000 n +0000263958 00000 n +0000262803 00000 n +0000264070 00000 n +0000265908 00000 n +0000265734 00000 n +0000264255 00000 n +0000265846 00000 n +0000268866 00000 n +0000269016 00000 n +0000269166 00000 n +0000269315 00000 n +0000269465 00000 n +0000269614 00000 n +0000269763 00000 n +0000269913 00000 n +0000270062 00000 n +0000270210 00000 n +0000270360 00000 n +0000270508 00000 n +0000270657 00000 n +0000270806 00000 n +0000270955 00000 n +0000271104 00000 n +0000271254 00000 n +0000271404 00000 n +0000271554 00000 n +0000271703 00000 n +0000271853 00000 n +0000272003 00000 n +0000272153 00000 n +0000272303 00000 n +0000272453 00000 n +0000272603 00000 n +0000272753 00000 n +0000272903 00000 n +0000273053 00000 n +0000273203 00000 n +0000273353 00000 n +0000273503 00000 n +0000273653 00000 n +0000273801 00000 n +0000273950 00000 n +0000274100 00000 n +0000274249 00000 n +0000274399 00000 n +0000274549 00000 n +0000274699 00000 n +0000274849 00000 n +0000274999 00000 n +0000275149 00000 n +0000275298 00000 n +0000275448 00000 n +0000275593 00000 n +0000275743 00000 n +0000275892 00000 n +0000276042 00000 n +0000276193 00000 n +0000276344 00000 n +0000276495 00000 n +0000276646 00000 n +0000276797 00000 n +0000276948 00000 n +0000277099 00000 n +0000277249 00000 n +0000277400 00000 n +0000277551 00000 n +0000277702 00000 n +0000277853 00000 n +0000278004 00000 n +0000278154 00000 n +0000278304 00000 n +0000278455 00000 n +0000278606 00000 n +0000278756 00000 n +0000278907 00000 n +0000279058 00000 n +0000279209 00000 n +0000279360 00000 n +0000279511 00000 n +0000279661 00000 n +0000279812 00000 n +0000279963 00000 n +0000280113 00000 n +0000280264 00000 n +0000280415 00000 n +0000280565 00000 n +0000280716 00000 n +0000280867 00000 n +0000281018 00000 n +0000281167 00000 n +0000281317 00000 n +0000281467 00000 n +0000281618 00000 n +0000281769 00000 n +0000281919 00000 n +0000282067 00000 n +0000282217 00000 n +0000282367 00000 n +0000282517 00000 n +0000282666 00000 n +0000282816 00000 n +0000282967 00000 n +0000283118 00000 n +0000283269 00000 n +0000283420 00000 n +0000283571 00000 n +0000283722 00000 n +0000283873 00000 n +0000284024 00000 n +0000284175 00000 n +0000284326 00000 n +0000284477 00000 n +0000284628 00000 n +0000284778 00000 n +0000284929 00000 n +0000285080 00000 n +0000285229 00000 n +0000285378 00000 n +0000285526 00000 n +0000285676 00000 n +0000285826 00000 n +0000285976 00000 n +0000286126 00000 n +0000286275 00000 n +0000286425 00000 n +0000286574 00000 n +0000286724 00000 n +0000286874 00000 n +0000287025 00000 n +0000287176 00000 n +0000287327 00000 n +0000287478 00000 n +0000287629 00000 n +0000287779 00000 n +0000287929 00000 n +0000288080 00000 n +0000288231 00000 n +0000288382 00000 n +0000288533 00000 n +0000288684 00000 n +0000288835 00000 n +0000288986 00000 n +0000289136 00000 n +0000289287 00000 n +0000289438 00000 n +0000289588 00000 n +0000289739 00000 n +0000289889 00000 n +0000290040 00000 n +0000293353 00000 n +0000293504 00000 n +0000293655 00000 n +0000293805 00000 n +0000293956 00000 n +0000294107 00000 n +0000294258 00000 n +0000294409 00000 n +0000290315 00000 n +0000267508 00000 n +0000266032 00000 n +0000290190 00000 n +0000504061 00000 n +0000294560 00000 n +0000294710 00000 n +0000294861 00000 n +0000295011 00000 n +0000295162 00000 n +0000295313 00000 n +0000295464 00000 n +0000295615 00000 n +0000295764 00000 n +0000295914 00000 n +0000296064 00000 n +0000296214 00000 n +0000296360 00000 n +0000296507 00000 n +0000296658 00000 n +0000296809 00000 n +0000296960 00000 n +0000297110 00000 n +0000297259 00000 n +0000297410 00000 n +0000297561 00000 n +0000297712 00000 n +0000297862 00000 n +0000298013 00000 n +0000298164 00000 n +0000298314 00000 n +0000298464 00000 n +0000298614 00000 n +0000298765 00000 n +0000298916 00000 n +0000299066 00000 n +0000299217 00000 n +0000299366 00000 n +0000299517 00000 n +0000299667 00000 n +0000299817 00000 n +0000299967 00000 n +0000300117 00000 n +0000300268 00000 n +0000300419 00000 n +0000300569 00000 n +0000300719 00000 n +0000300870 00000 n +0000301021 00000 n +0000301172 00000 n +0000301323 00000 n +0000301474 00000 n +0000301624 00000 n +0000301775 00000 n +0000301926 00000 n +0000302077 00000 n +0000302228 00000 n +0000302379 00000 n +0000302529 00000 n +0000302680 00000 n +0000302831 00000 n +0000302982 00000 n +0000303130 00000 n +0000303280 00000 n +0000303430 00000 n +0000303580 00000 n +0000303730 00000 n +0000303879 00000 n +0000304030 00000 n +0000304181 00000 n +0000304332 00000 n +0000304483 00000 n +0000304634 00000 n +0000304784 00000 n +0000304935 00000 n +0000305086 00000 n +0000305237 00000 n +0000305388 00000 n +0000305538 00000 n +0000305689 00000 n +0000305840 00000 n +0000305991 00000 n +0000306142 00000 n +0000306293 00000 n +0000306443 00000 n +0000306594 00000 n +0000306745 00000 n +0000306896 00000 n +0000307046 00000 n +0000307197 00000 n +0000307348 00000 n +0000307499 00000 n +0000307650 00000 n +0000307801 00000 n +0000307952 00000 n +0000308103 00000 n +0000308253 00000 n +0000308404 00000 n +0000308555 00000 n +0000308704 00000 n +0000308855 00000 n +0000309006 00000 n +0000309157 00000 n +0000309308 00000 n +0000309459 00000 n +0000309609 00000 n +0000309760 00000 n +0000309911 00000 n +0000310061 00000 n +0000310212 00000 n +0000310361 00000 n +0000310512 00000 n +0000310663 00000 n +0000310812 00000 n +0000310962 00000 n +0000311112 00000 n +0000311260 00000 n +0000311409 00000 n +0000311558 00000 n +0000311709 00000 n +0000311859 00000 n +0000312009 00000 n +0000312160 00000 n +0000312311 00000 n +0000312462 00000 n +0000312612 00000 n +0000312762 00000 n +0000312913 00000 n +0000313063 00000 n +0000313214 00000 n +0000313364 00000 n +0000313515 00000 n +0000313664 00000 n +0000313815 00000 n +0000313964 00000 n +0000314113 00000 n +0000314262 00000 n +0000314412 00000 n +0000314563 00000 n +0000314714 00000 n +0000314864 00000 n +0000315015 00000 n +0000315166 00000 n +0000318138 00000 n +0000318289 00000 n +0000315379 00000 n +0000291911 00000 n +0000290427 00000 n +0000315315 00000 n +0000318439 00000 n +0000318589 00000 n +0000318738 00000 n +0000318889 00000 n +0000319040 00000 n +0000319191 00000 n +0000319342 00000 n +0000319493 00000 n +0000319644 00000 n +0000319795 00000 n +0000319946 00000 n +0000320097 00000 n +0000320248 00000 n +0000320399 00000 n +0000320550 00000 n +0000320701 00000 n +0000320852 00000 n +0000321003 00000 n +0000321154 00000 n +0000321305 00000 n +0000321456 00000 n +0000321607 00000 n +0000321758 00000 n +0000321909 00000 n +0000322060 00000 n +0000322210 00000 n +0000322359 00000 n +0000322508 00000 n +0000322659 00000 n +0000322810 00000 n +0000322961 00000 n +0000323112 00000 n +0000323263 00000 n +0000323414 00000 n +0000323565 00000 n +0000323716 00000 n +0000323866 00000 n +0000324017 00000 n +0000324168 00000 n +0000324319 00000 n +0000324470 00000 n +0000324621 00000 n +0000324772 00000 n +0000324923 00000 n +0000325074 00000 n +0000325224 00000 n +0000325374 00000 n +0000325524 00000 n +0000325674 00000 n +0000325824 00000 n +0000325975 00000 n +0000326126 00000 n +0000326277 00000 n +0000326428 00000 n +0000326579 00000 n +0000326730 00000 n +0000326880 00000 n +0000327031 00000 n +0000327182 00000 n +0000327333 00000 n +0000327484 00000 n +0000327634 00000 n +0000327785 00000 n +0000327935 00000 n +0000328086 00000 n +0000328236 00000 n +0000328387 00000 n +0000328538 00000 n +0000328689 00000 n +0000328840 00000 n +0000328991 00000 n +0000329142 00000 n +0000329292 00000 n +0000329442 00000 n +0000329593 00000 n +0000329744 00000 n +0000329894 00000 n +0000330045 00000 n +0000330196 00000 n +0000330347 00000 n +0000330496 00000 n +0000330646 00000 n +0000330797 00000 n +0000330948 00000 n +0000331099 00000 n +0000331250 00000 n +0000331401 00000 n +0000331552 00000 n +0000331702 00000 n +0000331853 00000 n +0000332004 00000 n +0000332154 00000 n +0000332305 00000 n +0000332456 00000 n +0000332607 00000 n +0000332758 00000 n +0000332909 00000 n +0000333060 00000 n +0000333208 00000 n +0000333357 00000 n +0000333507 00000 n +0000333657 00000 n +0000333808 00000 n +0000333958 00000 n +0000334109 00000 n +0000334260 00000 n +0000334411 00000 n +0000334562 00000 n +0000334713 00000 n +0000334864 00000 n +0000335015 00000 n +0000335166 00000 n +0000335317 00000 n +0000335468 00000 n +0000335618 00000 n +0000335769 00000 n +0000335920 00000 n +0000336070 00000 n +0000336221 00000 n +0000336371 00000 n +0000336522 00000 n +0000336673 00000 n +0000336824 00000 n +0000336975 00000 n +0000337126 00000 n +0000337277 00000 n +0000337428 00000 n +0000337579 00000 n +0000337730 00000 n +0000337881 00000 n +0000338031 00000 n +0000339150 00000 n +0000339300 00000 n +0000339451 00000 n +0000338245 00000 n +0000316813 00000 n +0000315491 00000 n +0000338182 00000 n +0000339602 00000 n +0000339752 00000 n +0000339903 00000 n +0000340054 00000 n +0000340205 00000 n +0000340354 00000 n +0000340504 00000 n +0000340654 00000 n +0000340805 00000 n +0000340956 00000 n +0000341106 00000 n +0000341256 00000 n +0000341407 00000 n +0000341558 00000 n +0000341709 00000 n +0000341860 00000 n +0000342011 00000 n +0000342162 00000 n +0000342313 00000 n +0000342464 00000 n +0000342615 00000 n +0000342829 00000 n +0000338806 00000 n +0000338344 00000 n +0000342765 00000 n +0000342928 00000 n +0000342985 00000 n +0000343113 00000 n +0000343437 00000 n +0000343469 00000 n +0000343593 00000 n +0000343769 00000 n +0000344382 00000 n +0000344778 00000 n +0000345293 00000 n +0000345963 00000 n +0000346577 00000 n +0000346973 00000 n +0000347601 00000 n +0000348239 00000 n +0000348872 00000 n +0000349159 00000 n +0000349449 00000 n +0000349474 00000 n +0000349616 00000 n +0000351775 00000 n +0000352005 00000 n +0000365027 00000 n +0000365460 00000 n +0000375521 00000 n +0000375926 00000 n +0000385523 00000 n +0000385897 00000 n +0000388979 00000 n +0000389226 00000 n +0000391951 00000 n +0000392205 00000 n +0000394212 00000 n +0000394435 00000 n +0000412798 00000 n +0000413412 00000 n +0000418321 00000 n +0000418581 00000 n +0000421847 00000 n +0000422085 00000 n +0000423939 00000 n +0000424165 00000 n +0000435618 00000 n +0000436007 00000 n +0000439366 00000 n +0000439618 00000 n +0000441821 00000 n +0000442121 00000 n +0000456570 00000 n +0000456990 00000 n +0000462171 00000 n +0000462431 00000 n +0000478264 00000 n +0000478894 00000 n +0000482775 00000 n +0000483031 00000 n +0000498636 00000 n +0000504168 00000 n +0000504288 00000 n +0000504408 00000 n +0000504529 00000 n +0000504612 00000 n +0000513123 00000 n +0000513297 00000 n +0000513468 00000 n +0000513637 00000 n +0000513806 00000 n +0000513977 00000 n +0000514140 00000 n +0000514331 00000 n +0000514526 00000 n +0000514714 00000 n +0000514892 00000 n +0000515063 00000 n +0000515233 00000 n +0000515404 00000 n +0000515574 00000 n +0000515745 00000 n +0000515915 00000 n +0000516086 00000 n +0000516256 00000 n +0000516427 00000 n +0000516596 00000 n +0000516765 00000 n +0000516936 00000 n +0000517106 00000 n +0000517277 00000 n +0000517447 00000 n +0000517621 00000 n +0000517791 00000 n +0000517976 00000 n +0000518184 00000 n +0000518395 00000 n +0000518606 00000 n +0000518812 00000 n +0000519020 00000 n +0000519217 00000 n +0000519417 00000 n +0000519656 00000 n +0000519907 00000 n +0000520155 00000 n +0000520386 00000 n +0000520503 00000 n +0000520622 00000 n +0000520738 00000 n +0000520854 00000 n +0000520975 00000 n +0000521106 00000 n +0000521208 00000 n +0000521336 00000 n +0000521420 00000 n +0000521505 00000 n +0000521545 00000 n +0000521731 00000 n +trailer +<< /Size 1528 +/Root 1526 0 R +/Info 1527 0 R +/ID [<E0789ACF52753BCDECC1B019F2CE1B74> <E0789ACF52753BCDECC1B019F2CE1B74>] >> +startxref +522046 +%%EOF diff --git a/Master/texmf-dist/doc/generic/around-the-bend/AroundTheBend.tex b/Master/texmf-dist/doc/generic/around-the-bend/AroundTheBend.tex new file mode 100644 index 00000000000..ac01d718075 --- /dev/null +++ b/Master/texmf-dist/doc/generic/around-the-bend/AroundTheBend.tex @@ -0,0 +1,7419 @@ +% AroundTheBend.tex concatenation of Around The Bend + +\begin{filecontents}{bend.ist} +% MakeIndex style file bend.ist for use with AroundTheBend.tex + +% @ may be a valid character in the index, use ? instead +actual '?' + +\end{filecontents} + +%\documentclass[draft,openany]{memoir} +\documentclass[openany]{memoir} +\usepackage{comment} +\usepackage{url} +\ifpdf + \usepackage[pdftex, + plainpages=false, + pdfpagelabels, + bookmarksnumbered + ]{hyperref} +\else + \usepackage[%pdf, + plainpages=false, + pdfpagelabels, + bookmarksnumbered + ]{hyperref} +\fi +\usepackage{graphicx} + +\settrimmedsize{11in}{210mm}{*}% min letterpaper/A4 sizes +\setlength{\trimtop}{0pt} +\setlength{\trimedge}{\stockwidth} +\addtolength{\trimedge}{-\paperwidth} +\settypeblocksize{7.75in}{33pc}{*} +\setulmargins{4cm}{*}{*} +\setlrmargins{1.25in}{*}{*} +\setmarginnotes{17pt}{51pt}{\onelineskip} +\setheadfoot{\onelineskip}{2\onelineskip} +\setheaderspaces{*}{2\onelineskip}{*} +\checkandfixthelayout + +%\addtolength{\textwidth}{1in} +%\addtolength{\oddsidemargin}{-0.5in} +%\addtolength{\evensidemargin}{-0.5in} + +\newcommand{\ed}[1]{\emph{(Ed: #1)}} +\newcommand*{\oposted}[1]{Originally posted on #1} +\newcommand*{\arch}[1]{Archived as {\normalfont \ttfamily #1}} +\newenvironment{solution}[1]{% + \begin{description} + \item[#1]\mbox{}}% +% {\par\noindent\textbf{End solution}\end{description}} + {\end{description}\vspace{-0.5\onelineskip}\textbf{End solution}} +\newcommand*{\pfile}[1]{\texttt{#1}}% print a file name +\newfixedcaption{\freetabcaption}{table} +\renewcommand*{\chaptername}{QA} +\renewcommand*{\chaptername}{} + +% \piif{if...} print and index \if... +\newcommand*{\piif}[1]{\cs{#1}\index{#1?\cs{#1}}} +\makeatletter +\newcommand*{\zeroseps}{% + \topsep\z@ + \partopsep\z@ + \parskip\z@} +\newlength{\gparindent} \gparindent 0.5\parindent +\newenvironment{lcode}{\zeroseps + \renewcommand{\verbatim@startline}% + {\verbatim@line{\hskip\gparindent}}% + \small\setlength{\baselineskip}{\onelineskip}\verbatim}% + {\endverbatim + \vspace{-\baselineskip}\noindent} +\makeatother + +\nouppercaseheads +\headstyles{bringhurst} +%\setlength{\beforechapskip}{2\onelineskip} +\chapterstyle{section} +\setlength{\beforechapskip}{2\onelineskip} +\setlength{\beforechapskip}{0pt} +\setlength{\afterchapskip}{1\onelineskip} +\settocdepth{subsubsection} +\setsecnumdepth{subsubsection} + +\makeindex + +%\title{Around The Bend} +%\author{Michael Downes \\ +%(edited by Peter Wilson)} +%\date{} +\newlength{\drop} +\providecommand*{\wb}[2]{\fontsize{#1}{#2}\usefont{U}{webo}{xl}{n}} +\newcommand*{\titleAB}{\begingroup +\drop=4\baselineskip +\centering +\vspace*{\drop} +{\Huge AROUND THE BEND}\\[\drop] +{\hspace*{1.5em}\scalebox{8}[1]{{\wb{10}{12}4}}}\\[\drop] +{\Large\itshape A Collection of TeX Challenges by}\\[\baselineskip] +{\Large MICHAEL DOWNES}\\[\baselineskip] +{\wb{10}{12}4}\\[\baselineskip] +{\Large\itshape edited by}\\[\baselineskip] +{\Large Peter Wilson}\par +\vfill +{\hspace*{1.5em}\scalebox{8}[1]{{\wb{10}{12}4}}}\\[\drop] +{\large The Herries Press}\\ +{July 2008}\par +\vspace*{\drop} +\endgroup} +%% normally \parindent = 1.5em, but 0pt in \titleAB + +\begin{document} +\tightlists +\raggedbottom + +\frontmatter + +%\maketitle +\thispagestyle{empty} +\titleAB +\cleardoublepage +\tableofcontents + +\chapter{Preface} + + In the early 90's the late and much missed Michael Downes (1958--2003) +ran a column in the INFO-TeX mailing list +called \emph{Around The Bend} where he proposed macro-related problems and +then posted +submitted solutions. Although it was archived on CTAN in \url{info/aro-bend} +it is not well known which is a shame as it provides +answers to many problems that keep cropping up. (The archive is now +at \url{info/challenges/aro-bend}). This is an attempt to +make his work more accessible by providing the collection as a single +document. + + As much as possible what follows is what Michael wrote; I have tried to +limit myself to marking up the original ASCII text emails but I have not +repeated administrative elements such as email headers. + + In some cases the +original TeX code was replete with comments explaining what was going on. +Where the comments were long with respect to the code I have set them in +the regular body type so as to make the actual code more obvious; this has a +side effect of slightly decreasing the amount of paper required to +print the document. If you +want to use the code solutions I suggest that you cut and paste them +from the original archived versions. + + I thought that there were eighteen Around the Bends as that is all that +are archived on CTAN. However I googled the Google Groups \url{comp.text.tex} +group +and found three more, nos.~19, 20 and~21. I have included what I could find +of these, but answers to no.~19 appear to be missing, which is a pity as +I think that I could have put them to use. Perhaps some of you might be +willing to take up the challenge on this, or on any of the others. + + + +{\raggedleft \textsc{PW}\\ July, 2008 \par} + +\chapter{Introduction} + +\ed{This is Michael's introduction to his scheme, originally posted on +1991/10/10 as the initial portion of exercise~1.} + + +%%[Exercises 1,2,3 were originally posted together on 10 Oct 91] +\begin{verbatim} +Date: Thu 10 Oct 91 09:51:32-EST +From: Michael Downes <MJD@MATH.AMS.COM> +Subject: Around the bend +To: info-tex@shsu.edu +\end{verbatim} + +Proposal for a regular feature: + + AROUND THE BEND + +With the encouragement of George Greenwade (the INFO-TeX list owner), I +would like to propose a regular department for INFO-TeX, called `Around +the bend'. It will consist of macro-writing challenges on the level of +the dangerous-bend exercises in the \emph{TeXbook}, with interested parties +invited to collaborate and/or compete to find the best solution. My +motivation for doing this is partly selfish: to get more feedback from +other macro writers about some of the interesting macro-writing +problems that I run into. + +I originally approached George for advice about setting up a separate +mailing list, but he thought that INFO-TeX and comp.text.tex readers +would be interested. Since INFO-TeX mail is also channeled to +comp.text.tex, readers of the latter should let me know if they don't +want the extra traffic (although I don't expect it to be that much). I +don't currently have access to read comp.text.tex directly, although +George has been investigating the possibility of piping it through the +INFO-TeX mailing list. So if you object by posting to comp.text.tex, I +may not see your objection; send me mail, instead. + +The sample below should give a pretty good idea of what `Around the +bend' would be like. Solutions should be sent to me instead of to +INFO-TeX or comp.text.tex, on the premise that people usually won't want +to read others' solutions until they've had a chance to try their own +hand. A summary of the results would then be posted to the INFO-TeX +list after two or three weeks; to those who submit solutions before the +deadline, I could forward without delay solutions submitted by other +people, for comparison. + +I will try to keep the difficulty of the exercises down to something +reasonable, let's say, on the level of a homework assignment which a +university student must complete in two weeks, finding time in the +normal way from the usual busy schedule of other homework, class +attendance, sports, and social life. However, be warned that the +challenges will be hard. I'm planning to follow a `hard and fast' +format: one or two hard questions, followed by one or two fast +questions, where if you don't know the answer off the top of your head, +you can either look it up in the \emph{TeXbook} or find it by running a quick +test. + + +\mainmatter + + +\chapter{Expansion} + +\section{Exercise (hard)} + +%%\input{ex001.tex} +% ex001.tex + +\begin{comment} + +(Originally posted on 1991/10/10) + +[Exercises 1,2,3 were originally posted together on 10 Oct 91] +Date: Thu 10 Oct 91 09:51:32-EST +From: Michael Downes <MJD@MATH.AMS.COM> +Subject: Around the bend +To: info-tex@shsu.edu + +Proposal for a regular feature: + + AROUND THE BEND + +With the encouragement of George Greenwade (the INFO-TeX list owner), I +would like to propose a regular department for INFO-TeX, called `Around +the bend'. It will consist of macro-writing challenges on the level of +the dangerous-bend exercises in the TeXbook, with interested parties +invited to collaborate and/or compete to find the best solution. My +motivation for doing this is partly selfish: to get more feedback from +other macro writers about some of the interesting macro-writing +problems that I run into. + +I originally approached George for advice about setting up a separate +mailing list, but he thought that INFO-TeX and comp.text.tex readers +would be interested. Since INFO-TeX mail is also channeled to +comp.text.tex, readers of the latter should let me know if they don't +want the extra traffic (although I don't expect it to be that much). I +don't currently have access to read comp.text.tex directly, although +George has been investigating the possibility of piping it through the +INFO-TeX mailing list. So if you object by posting to comp.text.tex, I +may not see your objection; send me mail, instead. + +The sample below should give a pretty good idea of what `Around the +bend' would be like. Solutions should be sent to me instead of to +INFO-TeX or comp.text.tex, on the premise that people usually won't want +to read others' solutions until they've had a chance to try their own +hand. A summary of the results would then be posted to the INFO-TeX +list after two or three weeks; to those who submit solutions before the +deadline, I could forward without delay solutions submitted by other +people, for comparison. + +I will try to keep the difficulty of the exercises down to something +reasonable, let's say, on the level of a homework assignment which a +university student must complete in two weeks, finding time in the +normal way from the usual busy schedule of other homework, class +attendance, sports, and social life. However, be warned that the +challenges will be hard. I'm planning to follow a `hard and fast' +format: one or two hard questions, followed by one or two fast +questions, where if you don't know the answer off the top of your head, +you can either look it up in the TeXbook or find it by running a quick +test. + +All right, here are the first three. + +\end{comment} + +%********************************************************************** +%*** Exercise 1 (hard): + +\ed{\oposted{1991/10/10}. \arch{exercise.001}.}\\%[0.5\baselineskip] + +Given arbitrary \cmd{\b}, \cmd{\c}, \cmd{\d} (macros without arguments), for example +\begin{lcode} + \def\b{\c\c} \def\c{*} \def\d{\b\c} +\end{lcode} +figure out how to define \cmd{\a} so that its replacement text consists +of \cmd{\b} fully expanded plus \cmd{\c} not expanded plus \cmd{\d} expanded +exactly once. +I.e., with the above definitions the replacement text of \cmd{\a} +should be +\begin{lcode} + **\c\b\c +\end{lcode} +You may not use \cmd{\the} or \cmd{\noexpand} in your solution. This is Exercise +20.16 in the \emph{TeXbook}, except that there's an added restriction: your +answer must also not use the \cmd{\halign}\texttt{\ldots}\cmd{\span} method given in the +answer to 20.16. (Yes, that means you can't use \cmd{\valign} either!) + +Why would anyone want to do such a hard exercise? Answer: advanced +macro writing requires a thorough knowledge of expansion control +principles. + +\begin{comment} +[Exercise 2 moved to exercise.002] + +[Exercise 3 moved to exercise.003] + +Send answers to: + +Michael Downes mjd@math.ams.com (Internet) + +A summary will be posted Friday, October 25, 1991. +\end{comment} + +%%\endinput + + +\section{Answers} + +%%\input{ans001.tex} +% ans001.tex + +\ed{\oposted{1991/10/25}. \arch{answer.001}.}\\ + + +\begin{comment} +[Solutions for exercises 1,2,3 were originally posted together on 25 Oct 91] +Date: Fri 25 Oct 91 15:19:44-EST +From: Michael Downes <MJD@MATH.AMS.COM> +Subject: `Around the bend' #1 solutions +To: info-tex@shsu.edu + +Solutions to the exercises of `Around the bend' #1. + +"*** Exercise 1 (hard): +"Given arbitrary \b, \c, \d (macros without arguments), for example +" +" \def\b{\c\c} \def\c{*} \def\d{\b\c} +" +"figure out how to define \a so that its replacement text consists +"of \b fully expanded plus \c not expanded plus \d expanded exactly once. +"I.e., with the above definitions the replacement text of \a +"should be +" +" **\c\b\c +" +"You may not use \the or \noexpand in your solution. This is Exercise +"20.16 in the TeXbook, except that there's an added restriction: your +"answer must also not use the \halign ... \span method given in the +"answer to 20.16. (Yes, that means you can't use \valign either!) +\end{comment} + +The restrictions leave us with (essentially) three expansion-control +commands: \\ + \cmd{\expandafter}, \cmd{\edef} and \cmd{\def}. + +%\begin{description} +%\item[Solution 1 {[Peter Schmitt]}] \mbox{} +\begin{solution}{Solution 1 (Peter Schmitt)}\index{Schmitt, Peter} +\begin{lcode} + \edef\B{\b} + \def\defA#1{\def\defa##1##2{\def\a{#1##2##1}}} + \expandafter\defA\expandafter{\B} + \expandafter\defa\expandafter{\d}{\c} +\end{lcode} +\end{solution} + +%%>>EndSolution + +%\item[Solution 2 {[Donald Arseneau]}] \mbox{} +\begin{solution}{Solution 2 (Donald Arseneau)}\index{Arseneau, Donald} +\begin{lcode} +\edef\e{\b} +\expandafter \expandafter \expandafter \def\expandafter \expandafter +\expandafter \a\expandafter \expandafter \expandafter {\expandafter +\e\expandafter \c\d} +\end{lcode} +\end{solution} +%%>>EndSolution + +%\item[Solution 3 {[mine]}] \mbox{} +\begin{solution}{Solution 3 (mine)}\index{Downes, Michael} +\begin{lcode} +\edef\a{\b} +\expandafter\expandafter\expandafter\def +\expandafter\expandafter\expandafter\a +\expandafter\expandafter\expandafter{\expandafter\a\expandafter\c\d} +\end{lcode} +\end{solution} +%%>>EndSolution +%\end{description} + +My solution differed from Arseneau's only in using \cmd{\a} rather than \cmd{\e} +in the first step. + +\begin{comment} +[Solution for exercise 2 moved to answer.002] +[Solution for exercise 3 moved to answer.003] + +Michael Downes mjd@math.ams.com (Internet) + +\end{comment} + +%%\endinput + + +\chapter{Empty argument} + +\section{Exercise (hard)} + +%%\input{ex002.tex} +% ex002.tex + +\begin{comment} + +[Posted to info-tex on 10 Oct 91; see exercise.001] +********************************************************************** +*** Exercise 2 (hard): +\end{comment} + +\ed{\oposted{1991/10/10}. \arch{exercise.002}.}\\ + +Define an `ifempty' macro that takes one argument and resolves +essentially to \piif{iftrue} if the argument is empty, and \piif{iffalse} +otherwise. This is useful for handling arguments given by +users to commands defined in a macro package. + +Plain TeX or LaTeX-style solutions are both acceptable, that +is, +\begin{lcode} + \ifempty{...}TRUE CASE\else FALSE CASE\fi +\end{lcode} +or +\begin{lcode} + \ifempty{...}{TRUE CASE}{FALSE CASE} +\end{lcode} + +(In the former case you will need to do something to avoid problems +in the situation +\begin{lcode} + \iffalse ... \ifempty{...} ... \fi ... \fi +\end{lcode} +there +are different possibilities here, so I will refrain from +indicating any particular one.) + +Use the following test suite to verify the robustness of your +solution: + +\begin{lcode} +\long\def\test#1{\begingroup \toks0{[#1]}% + \newlinechar`\/\message{/\the\toks0: +% LaTeX-style solution; modify the following line according +% to the syntax of your solution. + \ifempty{#1}{EMPTY}{NOT empty}% +}\endgroup} + + \test{} \test{ } + \test{aabc} \test{-} + \test{$} \test{\empty} + \test{\endinput} \test{\iftrue a\else b\fi} + \test{\else} \test{#} + \test{\par} \halign{#\cr\test{&}\cr} + \test{\relax} \test{\relax\relax\relax} + \expandafter\iffalse\test{x}\fi \test{{}} +\end{lcode} +%$ + +The two tests on the first line should produce a message `EMPTY' and +the remaining ones, `NOT empty'. The reason for saying that the second +test should return `EMPTY' is that (1) this is the ideal behavior for +the applications I've encountered so far; (2) at least one other person +working independently arrived before me at a solution essentially +identical to mine, including this behavior. The details and credit to +the other guy will be given at solution time. + +%%\endinput + + +\section{Answers} + +%%\input{ans002.tex} +% ans002.tex + +\begin{comment} + +[Posted to info-tex on 25 Oct 91; see answer.001] +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +"*** Exercise 2 (hard): +"Define an "ifempty" macro that takes one argument and resolves +"essentially to \iftrue if the argument is empty, and \iffalse +"otherwise. This is useful for handling arguments given by +"users to commands defined in a macro package such as LaTeX. +" +"Plain TeX or LaTeX-style solutions are both acceptable, that +"is, +" +" \ifempty{...}TRUE CASE\else FALSE CASE\fi +" +"or +" +" \ifempty{...}{TRUE CASE}{FALSE CASE} +\end{comment} + +\ed{\oposted{1991/10/25}. \arch{answer.002}.}\\ + +The LaTeX-style solution that I had prepared was, I thought, pretty +good, but Donald Arseneau\index{Arseneau, Donald} +observed that it fails the test +\begin{lcode} +\test{{\iftrue a\else b\fi}} +\end{lcode} +which was not in my list of tests. + +%\begin{description} +%\item[Solution 1 {[mine]}] \mbox{} +\begin{solution}{Solution 1 (mine)}\index{Downes, Michael} +\begin{lcode} +\catcode`\@=11 +% \@car is actually already defined in latex.tex, but for +% maximum robustness it needs to have the \long prefix: +\long\def\@car#1#2\@nil{#1} +\long\def\@first#1#2{#1} +\long\def\@second#1#2{#2} +\long\def\ifempty#1{\expandafter\ifx\@car#1@\@nil @\@empty + \expandafter\@first\else\expandafter\@second\fi} +\catcode`\@=12 + +\long\def\test#1{\begingroup \toks0{[#1]}% + \newlinechar`\/\message{/\the\toks0: + \ifempty{#1}{EMPTY}{NOT empty}% +}\endgroup} +\end{lcode} +\end{solution} +%%>>EndSolution + +The advantage of using the auxiliary macros \cmd{\@first} and \cmd{\@second}, +together with the \cmd{\expandafter}'s, is that it allows the true and/or +false cases to end with arbitrary things, even macros that require +arguments that have not yet been read (any number of arguments, even +delimited arguments). + +From here it is easy to implement an \piif{ifnotempty} test that has a +null false case. This is often useful in dealing with user-supplied +arguments: `If \#1 is empty, do nothing; otherwise, do the following +with \#1: ...' +\begin{lcode} +\long\def\ifnotempty#1{\ifempty{#1}{}} +\end{lcode} + + +%\item[Solution 2 {[Donald Arseneau]}] +\begin{solution}{Solution 2 (Donald Arseneau)}\index{Arseneau, Donald} +Don Arseneau came up with a plain TeX style solution, using an +ingenious device with \cmd{\then} to pass the test case +\begin{lcode} +\expandafter\iffalse\test{x}\fi +\end{lcode} + The comments in the solution are his. + +\begin{lcode} +% \ifblank{...}\then Test if a parameter is blank (null or spaces). +% Use the inaccessable "letter" @ to separate parameters. The two cases are: +% _text_is_not_blank_ _text_is_blank_ +% #1<- whatever #1<-@ +% #2<- whatever (possibly null) #2<- +% #3<- @ #3<-. +% #4<- .. #4<-. +% \if @.. {false} \if .. {true} +% In the {false} case, the extra period is skipped so it doesn't hurt. + +\catcode`\@=11 % as in plain.tex +\let\then\iftrue +\long\def\ifblank#1\then{\Ifbl@nk#1@@..\then}% +\long\def\Ifbl@nk#1#2@#3#4\then{\if#3#4} +\catcode`\@=12 + +\long\def\test#1{\begingroup \toks0{[#1]}% + \newlinechar`\/\message{/\the\toks0: + \ifblank{#1}\then EMPTY\else NOT empty\fi% +}\endgroup} +\end{lcode} +\end{solution} +%%>>EndSolution + +The good thing about this solution is that it doesn't subject any part +of the user-supplied argument to the \piif{ifx} test. Using @ with category +code of 11 as a delimiter for the user-supplied text is extremely safe +because even in internal code @ doesn't appear by itself, only as part +of control sequence names. In a partial solution, +Peter Schmitt\index{Schmitt, Peter} pushed +the idea a little further by using space with category code 3 as the +delimiter. + +There is another way of handling the problematic \piif{iffalse} test, in a +plain-TeX style solution, by using a suggestion of Donald Knuth that +appeared in TeXhax a while ago, in reply to a query of Stephan von +Bechtolsheim (texhax89, \#38 (post from svb, 17 Apr 89)). + +%\item[Solution 3 {[Arseneau/Knuth]}] \mbox{} +\begin{solution}{Solution 3 (Arseneau/Knuth)}\index{Arseneau, Donald}\index{Knuth, Donald} +\begin{lcode} +% Usage: \if\blank{#1}...\else...\fi + +\catcode`\@=11 % as in plain.tex +\long\def\blank#1{\bl@nk#1@@..\bl@nk}% +\long\def\bl@nk#1#2@#3#4\bl@nk{#3#4} +\catcode`\@=12 + +\long\def\test#1{\begingroup \toks0{[#1]}% + \newlinechar`\/\message{/\the\toks0: + \if\blank{#1}EMPTY\else NOT empty\fi% +}\endgroup} +\end{lcode} +\end{solution} + +%>>EndSolution + +At the end of Exercise 2 I wrote: +\begin{quote} +The two tests on the first line should produce a message `EMPTY' and +the remaining ones, `NOT empty'. The reason for saying that the second +test should return `EMPTY' is that (1) this is the ideal behavior for +the applications I've encountered so far; (2) at least one other person +working independently arrived before me at a solution essentially +identical to mine, including this behavior. The details and credit to +the other guy will be given at solution time. +\end{quote} + +The name of the `other guy' is Michael Wester\index{Wester, Michael}; +a listing of his macros +was published in the preprints for the July 1991 TUG meeting in Dedham, +Massachusetts (`Form Letter in LaTeX with 3-across Mailing Labels +Capability', joint paper with Jackie Damrau). In rereading the preprint +recently, it seems to me the presentation is more different from +Exercise 2 and its solutions than I had previously imagined, but the +essential ideas are there. See \cmd{\wcar}, \cmd{\wcdr} and related macros. + +By the way, if anyone came up with a fully expandable test (suitable +for use inside a \cmd{\message}) for which \verb?\test{ }? came up +false instead of +true, I would be interested to hear about it. I didn't mean to +eliminate that possibility in my original statement of the problem. + +%%\endinput + + +\chapter{Discretionary} + +\section{Exercise (fast)} + +%%\input{ex003.tex} +% ex003.tex + +\ed{\oposted{1991/10/10}. \arch{exercise.003}.}\\ + +\begin{comment} + +[Posted to info-tex on 10 Oct 91; see exercise.001] +********************************************************************** +*** Exercise 3 (fast): +\end{comment} + +What's the most important difference between \cs{-} and +\begin{lcode} +\discretionary{-}{}{} ? +\end{lcode} + +%%********************************************************************** +%%\endinput + + +\section{Answers} + +%%\input{ans003.tex} +% ans003.tex + +\ed{\oposted{1991/10/25}. \arch{answer.003}.}\\ + +\begin{comment} + +[Posted to info-tex on 25 Oct 91; see answer.001] +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +"*** Exercise 3 (fast): +"What's the most important difference between \- and +"\discretionary{-}{}{}? +\end{comment} + +The most important difference between \cs{-} and \cmd{\discretionary}\verb?{-}{}{}? +is that the latter always puts in the character from font position 45 +("2D, '55) of the current font when a word must be broken at the end of +a line; \cs{-} puts in the character from font position \cmd{\hyphenchar} of the +current font, which is NOT NECESSARILY position 45. It would be rather +unusual for \cmd{\hyphenchar} to be something other than 45; in certain +special applications, however (possibly in some foreign languages as +well?) a variant value of \cmd{\hyphenchar} can be useful. I have an idea for +using this in a future exercise\ldots + +Credit to Donald Arseneau\index{Arseneau, Donald} for a correct answer. +Thanks to Peter Schmitt\index{Schmitt, Peter} +for providing the perfect opening for another point I wanted to make: +\begin{quotation} + The \emph{TeXbook} states explicitly: \\ + \cs{-} is equivalent to \verb?\discretionary{-}{}{}? \\ + and both are internal. + + I do not see where to the question aims: +\begin{itemize} +\item control symbol : control sequence +\item no paramaters : three parameters +\item two characters : 21 characters to type +\item ??? +\end{itemize} +\end{quotation} + +Schmitt is quoting from the last page of Chapter 25; the point is, +that in newer versions of the \emph{TeXbook} that sentence has been revised. +I'm not sure what the latest printing says, since I don't have a copy, +but I think it simply refers the reader to Appendix H, where the +significance of \cmd{\hyphenchar} is explained. \cmd{\hyphenchar} is a feature that +was added late in the development of TeX82 (\pfile{TeX82.bug} reveals that is +was not added until May 25, 1983). Even if the source files for the +\emph{TeXbook} were immediately updated by Knuth at that time, the changes did +not appear in the published version being sold to the general public +until some time later when the first revised edition was published, +which was no earlier than October 1984, the date of the \emph{TeXbook} copy +that I have on hand, and probably later. + +The statement of purpose in `Around the bend' \#1 said something +about finding the `best solution', but conspicuously failed to define +what `best' should mean in this context. It was my intention to address +this question in future exercises; for now, let me just say that I +don't intend to arbitrarily rule out of consideration answers such as +Schmitt's `two characters : 21 characters to type', since depending on +how you look at it, it could be argued that this is much more +significant than dumb old \cmd{\hyphenchar} minutiae. I promised that these +exercises would be challenging; that means, among other things, that +they won't always be well-defined, well-bounded, or well-behaved, and +part of the job of finding the `best solution' will be to decide what +parts of the problem need to be specified further, and to examine the +ramifications of alternatives. + +%%\endinput + + +\chapter{What is `best'?} + +\section{Exercise (essay)} + +%%\input{ex004} +% ex004.tex + +\begin{comment} +[Exercises 4,5,6,7 were originally posted together on 4 Nov 91] +Date: Mon 4 Nov 91 16:42:44-EST +From: Michael Downes <MJD@MATH.AMS.COM> +Subject: Around the bend #2 +To: info-tex@shsu.edu +\end{comment} + +\ed{\oposted{1991/11/04}. \arch{exercise.004}.} + +The statement of purpose in `Around the bend' \#1 said something about +finding the `best solution', but failed to define what `best' should +mean when comparing pieces of TeX code. I'll start by throwing out +a few ideas. + +\begin{description} +\item[Simplicity] A good solution gets hold of the essential idea of the +problem and attacks it directly, rather than beating around the bush +and resorting to separate clauses to handle troublesome subcases. + +\item[Economy] If two solutions compare equal in other respects, then the +better solution is the one that uses less of TeX's resources (main +memory, hash table, string pool, and so forth). Therefore I +(immodestly) say that my solution to Exercise 1 was ever so slightly +better than the other two given, because it avoided introducing any +auxiliary macros that were not included in the original statement of +the problem. + +\item[Robustness] If a solution only works under limited friendly +circumstances, and otherwise blows up with an error message, that's not +good. My solution to Exercise 2 was flawed in this respect, since D.A. +found a test case that caused it to go wrong. +\end{description} + +%%*********************************************************************** +*** Exercise 4 (essay): + +What should `best' mean when comparing solutions to an `Around the +bend' exercise? What qualities of a good solution are most important? +Why? How can they be objectively measured? (Or can they?) On the +negative side, what qualities indicate an inferior solution? + +%%*********************************************************************** + +\begin{comment} + +[Exercise 5 moved to exercise.005] +[Exercise 6 moved to exercise.006] +[Exercise 7 moved to exercise.007] + +Send answers to: + +Michael Downes mjd@math.ams.com (Internet) + +A summary will be posted Tuesday, December 4, 1991. However, because of +the difficulty of E7, I will probably procrastinate on posting the +solutions for that exercise until the first or second week of December. +\end{comment} + +Table of special characters, to verify accurate transmission: + +\begin{lcode} +ASCII 33: ! exclamation point ASCII 60: < left elbow +ASCII 34: " double quote ASCII 61: = equals sign +ASCII 35: # number/pound sign ASCII 62: > right elbow +ASCII 36: $ dollar sign ASCII 63: ? question mark +ASCII 37: % percent sign ASCII 64: @ at sign +ASCII 38: & ampersand ASCII 91: [ left square bracket +ASCII 39: ' right quote/apostrophe ASCII 92: \ backslash +ASCII 40: ( left parenthesis ASCII 93: ] right square bracket +ASCII 41: ) right parenthesis ASCII 94: ^ circumflex/hat/caret +ASCII 42: * star/asterisk ASCII 95: _ underscore +ASCII 45: - hyphen ASCII 96: ` left quote +ASCII 47: / slash ASCII 123: { left curly brace +ASCII 58: : colon ASCII 124: | vert bar +ASCII 59: ; semicolon ASCII 125: } right curly brace + ASCII 126: ~ tilde +\end{lcode} +%$ + +%%\endinput + + +\section{Answers} + +%%\input{ans004} +% ans004.tex + +\ed{\oposted{1991/12/10}. \arch{answer.004}.} + +\begin{comment} +[Solutions for exercises 4,5 were originally posted together on 5 Dec 91] +Date: Thu 5 Dec 91 10:26:58-EST +From: Michael Downes <MJD@MATH.AMS.COM> +Subject: `Around the bend' #2 solutions (4,5) +To: info-tex@shsu.edu + +Answers to exercises 4 and 5 of `Around the bend' #2. Discussion of E6 +will follow in a separate post because it is rather lengthy. Discussion +of E7 will follow in another couple of weeks (I'm going to be on +vacation next week.) + +"*********************************************************************** +"*** Exercise 4 (essay): +" +"What should `best' mean when comparing solutions to an `Around the +"bend' exercise? What qualities of a good solution are most important? +"Why? How can they be objectively measured? (Or can they?) On the +"negative side, what qualities indicate an inferior solution? +\end{comment} + +Peter Schmitt\index{Schmitt, Peter} writes: +\begin{quotation} + What is to be rated as `best' clearly depends on the function used to + measure quality. And therefore the question makes sense only with + respect to some particular rating function. Seemingly nothing is gained + by this statement: Instead of discussing what qualities are required + for a good solution one has to discuss how the rating system should be + defined. But nevertheless this shifted point of view has an important + an important advantage. It makes clear that there is no unique answer: + Quality is not an absolute notion but a notion relative to some + (agreed) measure. This measure is not independent of the context --- + under different conditions different rating functions may be used. + + One further important point must not be forgotten: If matters of + personal taste are to be excluded than the measuring function has to be + precisely defined --- demanding simplicity, without giving this notion + a precise (formal) meaning, is not sufficient. + + Therefore I would like to split the original question into two seperate + questions: + + (a) What (formal and informal) rating functions are likely to be + useful, and under what circumstances? + + (b) With respect to some formal rating function, is there always a best + solution? + + Some answers to the first questions are the following (no completeness + claimed or even intended): + + (1) the first solution: + + If some special effect is needed for a single application then the + best solution is the first solution (the solution that can be + realized with the least effort). This is, however, a purely + individual criterion that cannot be formalized. + + (2) the most economic (in some sense) solution: + + Economic considerations are important if a code is used frequently, + Depending on the nature of the applications running time, memory + usage, and others, may be relevant. But the time spent for finding + a good solution still cannot be neglected in a real world + situation. Of course, for theoretical investigations the time spent + for research does not matter. + + (3) the more robust solution: + + If some set of macros is used by a large number of people who not + always know how to use them correctly (or even do not care to know) + then it is certainly an advantage if they are robust, i.e. work in + as many cases (even strange ones) as possible. But again, one has + to decide what price (in terms of resources) is acceptable for this + robustness. (In many cases the item (4) below will be more + important.) + + (4) ease-of-use: + + If a set of macros is used frequently (by one or more persons) then + ease-of-use is certainly a mark of quality: easy to remember + syntax, short commands, natural and good readable embedding into + the surrounding text, and similar criteria, decide about this. + + (5) simplicity: + + Simple solutions certainly have a strong appeal --- but what is a + simple solution? Again this is hard to formalize, since simplicity + basically is an aesthetic value, closely related to the concepts of + elegance and beauty. (This is similar to the situation in + mathematics.) But be careful: Simple is not equivalent to short! + + (6) the shortest solution: + + This may seem to be an easy rating function, but is it? Should + length be measured by the number of characters (probably not!), or + by the number of tokens, or by the number of control sequences? Or + by something else? + + Most of the measures mentioned are difficult to formalize, or cannot be + formalized at all. Only the resources used (in (2)) and the length of a + code (in (6)) can be precisely defined. Therefore, with respect to one + of these cases two solutions of the same problem can be compared. + Furthermore, in many cases it will be possible to proof that an optimal + solution exists. (For instance, since the length of a code (in any + interpretation) is a positive integer, there must exist one or more + solutions with minimal length, provided there is at least one + solution.) But unfortunately this does not imply that one is able to + construct an optimal solution, or to decide whether a given piece of + code is an optimal solution (or at least near to one). And in some + cases it may happen that no optimal solution exists, e.g. if to every + solution there is better --- but longer! --- one. + + What is the conclusion of all this? That there may be a best solution + relative to some side conditions. But that there is no globally best + solution. This statement is, of course, not very satisfying. One + would rather prefer to have at least some notion (even a tentative one) + of a best solution than none at all. I propose therefore the following + informal definition (often subject to personal taste): If some code is + optimal or near-optimal in more than one category then it is probably + as near to a globally optimal solution as this is possible. +\end{quotation} + + +My comments: + +I propose the following list, based on (1) [my interpretation of] +Knuth's ideas about good macro writing as demonstrated in the \emph{TeXbook} +and plain.tex, (2) various articles in TUGboat, (3) Schmitt's comments, +(4) discussions I've had in the past with other macro writers, and so +forth. + +The characteristics of a good solution to an `Around the bend' exercise +are (in order of decreasing importance): + +\begin{enumerate} +\item Robustness +\item Brevity (= minimal usage of TeX's main memory)3 +\item Simplicity +\item Ease of use +\item Suitable commentary +\item Speed +\item Minimal hash table load +\item Minimal save stack load +\item Minimal load in other categories of TeX's memory +\item Comprehensive test suite (when applicable) +\end{enumerate} +Schmitt's\index{Schmitt, Peter} point about 'first solution' is well taken +but does not apply +to `Around the bend' exercises, because of the stated goal of finding a +'best' solution, with the presumption that normally more than one +solution will be found. + +Measurement of these qualities is not too difficult, I think, +except for 3 and 5. Here's how I see the measurements: + +\begin{description} +\item[1. Robustness] A solution is robust if no one who reads it offers a +counterexample that causes it to fail. If two solutions both fail, the +one with more counterexamples is less robust; if two solutions have +different counterexamples, the solution whose counterexample is more +likely to occur in normal use is the less robust solution. + +\item[2. Brevity] Of two different solutions, the one that is +briefer/shorter/more compact is the one that uses less of TeX's main +memory as measured by \cmd{\tracingstats}. + +\item[3. Simplicity] Of two different solutions, the shorter one (in the +sense of the previous item) is usually the simpler one, but not always. +A solution that condenses all the necessary operations into a dense, +incomprehensible Gordian knot is less simple than a longer solution +that lays out the operations in a series of easily comprehended steps. +A solution that relies on arcane dirty tricks is less simple than a +solution that uses better-known techniques in a straightforward +approach. + +\item[4. Ease of use] I believe this will not be extremely hard to measure in +the context of the particular application; it can't sensibly be +discussed out of context. + +\item[5. Suitable commentary] The commentary surrounding a solution should +explicitly mention any necessary assumptions. If the code is complex, +the commentary should give an outline or overview of the intended +algorithm. It should explain the operation of any macro if its +operation is not evident from the code. If an unusual construction is +used where a different construction would normally be expected, the +commentary should give the reason. + +\item[6. Speed] Of two solutions, the speedier one is the one that runs +faster on common computer systems. If one solution runs faster and +slower than another, depending on the system \ldots well, let's not cross +that bridge unless it turns out to be real. + +\item[7,8,9. Minimal hash table load, save stack load, etc.] These can be +measured by \\ +\cmd{\tracingstats}. + +\item[10. Comprehensive test suite] If two solutions are equal in other +respects, the one whose accompanying test suite covers more distinct +cases than the other's is better by that much. +\end{description} + +It may be argued that I have not sufficiently answered the question of +subjectivity. For example, who's to decide what's an 'arcane dirty +trick' and what's not? What does 'suitable' mean in number 5? The +answer is that I will say that something is an 'arcane dirty trick' if +I think so, and anyone else can do the same. In most cases I believe +that there will be general agreement on such a question; if not, and an +ensuing discussion fails to reach a clear settlement, then each of the +solutions in question will be decreed 'subjectively just as good as the +others'. + +Other qualities of a good solution can be expressed in terms of the +ones listed above. For example, self-sufficiency may be considered an +aspect of robustness---if a solution is not entirely self-sufficient, +it can easily be shown to be not robust by giving a counterexample that +exploits the assumption that makes the solution non-self-sufficient. +Elegance? If a solution is simple and easy to use, then I say it is +elegant. A solution doesn't necessarily have to be robust in order to +be elegant, nor even short (although of two solutions that are +otherwise equal, the shorter one is undoubtedly more elegant). + +\begin{comment} + +[Solution for exercise 5 moved to answer.005] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Table of special characters (ASCII): + +33: ! exclamation point; 59: ; semicolon; +34: " double quote; 60: < left elbow; +35: # number/pound sign; 61: = equals sign; +36: $ dollar sign; 62: > right elbow; +37: % percent sign; 63: ? question mark; +38: & ampersand; 64: @ at sign; +39: ' right quote/apostrophe; 91: [ left square bracket; +40: ( left parenthesis; 92: \ backslash; +41: ) right parenthesis; 93: ] right square bracket; +42: * star/asterisk; 94: ^ circumflex/hat/caret; +43: + plus sign; 95: _ underscore; +44: , comma; 96: ` left quote; +45: - hyphen; 123: { left curly brace; +46: . period/dot/point; 124: | vert bar; +47: / slash; 125: } right curly brace; +58: : colon; 126: ~ tilde +%$ +Michael Downes mjd@math.ams.com (Internet) + +\end{comment} + +%%\endinput + + +\chapter{\cs{string} tokens} + +\section{Exercise (fast)} + +%%\input{ex005} +% ex005.tex + +\ed{\oposted{1991/11/04}. \arch{exercise.005}.} + +\begin{comment} + +[Posted to info-tex on 4 Nov 91; see exercise.004] +*********************************************************************** +*** Exercise 5 (fast): +\end{comment} + +Assuming a normal value for \cmd{\escapechar} +\begin{lcode} + \string\a +\end{lcode} +produces two character tokens. What is the category code of the second? +Write an experiment (as short as possible) to demonstrate the +correctness of your answer. + +%%%********************************************************************** + +%%\endinput + + +\section{Answers} + +%%\input{ans005} +% ans005.tex + +\ed{\oposted{1991/12/05}. \arch{answer.005}.} + +\begin{comment} + +[Posted to info-tex on 5 Dec 91; see answer.004] +"*********************************************************************** +"*** Exercise 5 (fast): +" +"Assuming a normal value for \escapechar, +" +" \string\a +" +"produces two character tokens. What is the category code of the second? +"Write an experiment (as short as possible) to demonstrate the +"correctness of your answer. +\end{comment} + +The category of the 'a' token is 12. All tokens produced by \cmd{\string} +have category 12, except for space tokens, which have category 10. + +\begin{solution}{Solution 1 (mine)} +\begin{lcode} +\def\answercheck#1#2{\message{#2: \ifcat0#2\else NOT \fi Category 12}} +\expandafter\answercheck\string\a +\answercheck bb +\end{lcode} +This produces on screen the following message: +\begin{lcode} +a: Category 12 b: NOT Category 12 +\end{lcode} +\end{solution} +%%>>EndSolution + +%%>>Solution 2 [Peter Schmitt]: +\begin{solution}{Solution 2 (Peter Schmitt)}\index{Schmitt, Peter} +\begin{lcode} +\def\test#1#2#3{% + \message{\ifcat#2#3 #2 and #3 have the same category code + \else #2 and #3 have not the same category code + \fi}} + +\def\Test#1#2#3{% + \ifcat#2#3 \message{#2 and #3 have the same category code} + \else \message{#2 and #3 have not the same category code} + \fi} + +\catcode`\A12 +\test 1aA +\Test 1aA +\expandafter\test\string\a A +\expandafter\Test\string\a A +\end{lcode} + +Comment: \\ +I have given two essentially equivalent Tests --- \cmd{\test} and \cmd{\Test}. + +(i) \cmd{\test} is slightly more simple because it contains only one \cmd{\message} +command, but I think that \cmd{\Test} is more adequate because it avoids to +perform the test inside the \cmd{\message} --- there might be some side +effect one is not aware off. + +(ii) Both tests are not as short as possible --- the \piif{true} and \piif{false} +cases could be much shorter, e.g. a T (for true) and a F (for false) +would suffice --- the result could be checked in the dvi-file. (I +regard this difference as inessential.) + +Furthermore, setting the catcode of the model character to 12 could +easily be omitted (use some character that is known to be an `other +character'), but I think it should be included: It makes the test +independent of any assumption on the format running. This makes the +solution more closed and selfsufficient, and therefore also simpler and +more elegant (if I may say so). +\end{solution} +%%>>EndSolution +%%\endinput + + +\chapter{Counting arguments} + +\section{Exercise (hard)} + +%%\input{ex006} +\begin{comment} +[Posted to info-tex on 4 Nov 91; see exercise.004] +********************************************************************** +*** Exercise 6 (hard): +\end{comment} + +\ed{\oposted{1991/11/04}. \arch{exercise.006}.} + +Define a macro \cmd{\args} that can be used to fill in the proper number +in the following sentence no matter how \cmd{\foo} is defined (except +you may assume it is not \cmd{\outer}). + + The macro \verb?\tt\string\foo? has \verb?\args\foo? arguments. + +Is it possible to solve this if \cmd{\foo} is \cmd{\outer} also? Is it possible +to make \cmd{\args} fully expandable, so that it could be used in a +message: +\begin{lcode} + \message{The macro \noexpand\foo has \args\foo\space arguments.} +\end{lcode} + +%%********************************************************************** +%%\endinput + +\section{Answers} + +%%\input{ans006} +% ans006.tex +\begin{comment} +Date: Mon 23 Dec 91 11:46:33-EST +From: Michael Downes <MJD@MATH.AMS.COM> +Subject: Answers to 'Around the bend' #2 Exercise 6 +To: info-tex@shsu.edu +X-ListName: TeX-Related Network Discussion List <INFO-TeX@SHSU.edu> + +"*** Exercise 6 (hard): +" +"Define a macro \args that can be used to fill in the proper number +"in the following sentence no matter how \foo is defined (except +"you may assume it is not \outer). +" +" The macro {\tt\string\foo} has {\args\foo} arguments. +" +"Is it possible to solve this if \foo is \outer also? Is it possible +"to make \args fully expandable, so that it could be used in a +"message: +" +" \message{The macro \noexpand\foo has \args\foo\space arguments.} +\end{comment} + +\ed{\oposted{1991/12/23}. \arch{answer.006}.} + +This was a tough one. All who sent in answers to this exercise +(counting myself) used the approach of applying \cmd{\meaning} to \cmd{\foo} and +analyzing the resulting string. There are some drawbacks to this. + +(1) In a \cmd{\meaning} string, all characters (other than spaces) have +catcode 12. This means that all occurrences in a \cmd{\meaning} string of +the character \# are indistinguishable, regardless of their true +significance in the parameter text or replacement text of the macro +in question. Consequently, an occurrence of a \# character, not +category 6, followed by a number, in the parameter text of \cmd{\foo} can +potentially make \cmd{\args} report an incorrect number of arguments. For +example, in the following definitions \cmd{\foo} has no arguments, only +delimiter text, in all three cases, but the \cmd{\meaning} string would +appear to show that \cmd{\foo} has one argument: +\begin{lcode} + \def\foo\#1{} + \expandafter\def\expandafter\foo\string #1{} + \catcode`\#=12 \def\foo#1{} +\end{lcode} + +(2) The following two examples produce identical \cmd{\meaning} strings: +\begin{lcode} + \def\foo&1{} % no arguments + \catcode`\&=6 \def\foo&1{} % one argument +\end{lcode} + +(The string is \verb?"macro:&1->"?.) I.e., characters other than \# can +be used to create parameter markers in a macro definition, and +such a parameter marker cannot be distinguished in a \cmd{\meaning} +string from a normal use of the character in question. + +(3) There is no completely general way to isolate the parameter text +of an arbitrary macro from the replacement text. The best you can do +is remove the tail of the \cmd{\meaning} string---everything after the last +occurrence of \verb?->? in the string---and say 'This is not part of the +parameter text'. Likewise, anything preceding the first occurrence of +\verb?->? is certainly part of the parameter text. If there are two or more +occurrences of \verb?->? in the string, however, you cannot say for sure +whether anything between the first and last occurrences is parameter +text or replacement text. This raises a slight additional possibility +that pseudo 'parameter markers' in the replacement text could cause +\cmd{\args} to give an incorrrect result. For example: +\begin{lcode} + \edef\foo #1{\string#2->} +\end{lcode} +defining \cmd{\foo} with one argument, produces a \cmd{\meaning} string of +\begin{lcode} + macro:#1->#2-> +\end{lcode} +which is exactly the same as the \cmd{\meaning} string for +\begin{lcode} + \def\foo#1->#2{} +\end{lcode} +where \cmd{\foo} has two arguments. + + +Speaking practically, however, rather than theoretically, using +\cmd{\meaning} to analyze the number of arguments of an arbitrary macro +works fine. Donald Arseneau's solution, below, is admirably +brief and demonstrates an easy way of handling an outer argument +that I had never seen before. + +\begin{solution}{Solution 1 (Donald Arseneau)}\index{Arseneau, Donald} + +Here is my solution for counting arguments. It is totally expandable, +and relies on the fact that the parameter numbers must be in +increasing order, that they are only single digits, and that there is +no parameter zero. Also important is that \cmd{\meaning} of a macro defined +by \verb?\def\x#{...}? reports a syntax of \verb?{? rather than \#. +\begin{lcode} +{\catcode`\*=6 \catcode`\#=12 % use * for macro parameters while # is "other" +% +\gdef\args{\expandafter\Args\noexpand}% get rid of \outerness +% +\long\gdef\Args*1{\expandafter\countargs \meaning*1:->{}\end}% +% ... \meaning will display the parameter syntax (as "other" characters). +% +\gdef\countargs*1:*2->*3\end{\twoargs#0*2#0}% get just the parameter syntax +% ... in format #0junk#1junk...#njunk#0. \twoargs processes the list to +% ... give "n", the last number before #0. +\end{lcode} + + Here's what tests the parameter numbers, two at a time. (Thus, the two + \verb?#0?'s in \cmd{\countargs}, so there are always at least two +\verb?#n?'s detected.) + When the second number of a comparison isn't zero, \cmd{\twoargs} re-executes + itself to test the next pair; when the second \verb?n? is 0, the first +\verb?n? is the + highest parameter number, so it is output. +\begin{lcode} +\gdef\twoargs*1#*2*3#*4{\ifnum0=*4 *2\else % note the space to end the number + \expandafter\twoargs\expandafter#\expandafter*4\fi} +} +\end{lcode} + +Here is my test suite. The character ``:'' works in a funny way: it +confuses how \cmd{\countargs} reads its parameter list, and another colon +gets into the supposed syntax. But it works because there are no +parameters. The primitive \cmd{\halign} is reported to have no parameters +because it is not a macro. This could be confusing to someone. The +same confusion could arise with \cmd{\args} itself because it doesn't read +the parameter right away. +\begin{lcode} +\def\test#1#{nothing} +\def\Test[#1]#2:{\##1,#2##} +\def\#{haha} + +\show\test \show\Test +\end{lcode} + +(I condensed this test suite---MJD) +\begin{lcode} +\long\def\msg#1{\message{The object \string#1 has \args#1 arguments.}} + +\msg\mathpalette \msg\mathhexbox \msg\par \msg\halign \msg\args +\msg\relax \msg # \msg\# \msg\test \msg\Test \msg : \msg\: \msg\csname +\msg t \msg ~ \msg $ \msg ^ +\end{lcode} + +(Outer macros---MJD) +\begin{lcode} +\message{The object \string\bye\space has \args\bye\space arguments.} +\message{The object \string\newhelp\space has \args\newhelp\space + arguments.} + +\bye % -- Donald Arseneau +\end{lcode} +\end{solution} +%%>>EndSolution + +Although the problem statement only mentioned `macros' Arseneau +earned some thoroughness points by including primitives \cmd{\halign}, +\cmd{\relax}, and \cmd{\csname}, as well as characters \verb?# : t $ ^? +in his tests. +This is of some interest because of the difference in \cmd{\meaning} +strings between macros and non-macros. + +In my solution for this exercise, I amused myself by trying to pack +everything into as few control sequences as possible. Although I got +it down to two, that's really only one less than Arseneau's four, +because one control sequence in his solution is expended to +handle outer macros, something my solution didn't attempt to do. + +%>>Solution 2 (mine) +\begin{solution}{Solution 2 (mine)} +\begin{lcode} +% Use & instead of # temporarily. +\catcode`\&=6 \catcode`\#=12 + +\long\def\args &1{\expandafter\countargs\meaning &1#\args->\countargs 0} +\end{lcode} + + Analysis is restricted to the parameter text by chopping off everything + after \verb?->? in the meaning string (this will leave possibly only part + of the parameter text). + + Then we look in the parameter text for \# followed by a number + (checking to make sure that the thing after \# is a number handles a + few extra possibilities, such as \verb?\#? followed by non-number in the + parameter text). If we find \# plus a number, we pass the number + onward to the next invocation of \cmd{\countargs}, where it will end up as + the returned value (argument \#5) if the next \cmd{\countargs} determines + that the remaining parameter text contains no more parameter markers. +\begin{lcode} +\def\countargs &1#&2&3->&4\countargs &5{% + \ifx\args&2&5% + \else + \ifodd0&21 % Then &2 is a number, carry forward. + \countargs&3#\args->\countargs&2% + \else % &2 not a number---ignore, carry forward last number instead + \countargs&3#\args->\countargs&5% + \fi + \fi} + +\catcode`\#=6 + +\def\test{\message{The macro \noexpand\foo has \args\foo\space + arguments (\meaning\foo).}} + +%\tracingmacros=2 \tracingcommands=2 +% Success: +\def\foo{No args}\test +\def\foo#1{One arg}\test +\def\foo#1#2{Two args}\test +\def\foo./{No args, delimited}\test +\def\foo#1#2#3#4#5#6#7#8#9{Nine args}\test +\def\foo//#1#2#3#4#5#6#7#8#9//{Nine args, delimited}\test +\def\foo#{Weird}\test +\def\foo#1#{Weird, one arg}\test +\def\foo#1#2#3#4#5#6#7#8#9#{Weird, nine args}\test +\def\foo#1 {One arg, space delimited}\test +\def\foo#1 #2 #3 #4 #5 #6 #7 #8 #9 {Nine args, space delimited}\test +\def\foo/{\def\foo} +\foo/ #1{Interesting}\test + +\edef\foo#1#2{\string #3\string #4}\test +\edef\foo{\string #}\test +\expandafter\edef\expandafter\foo + \csname 0\string #\string #\endcsname#1#2{#1#2}\test + +% Failure: +\def\foo->#1->#2->#3->#4->#5->#6->#7->#8->#9->{Nine args, devious + delimiter}\test +\expandafter\edef\expandafter\foo + \csname 0\string #1\string #2\endcsname{...}\test +\let\foo=\bye \test % \outer bomb +\end{lcode} +\end{solution} +%%>>EndSolution + +When I originally posed this problem, I had seen far enough ahead to +suspect that the drawbacks of \cmd{\meaning} mentioned above would be +impossible to overcome. But \cmd{\meaning} is the only way to analyze a +macro that has a nonsimple parameter text---that is, one containing +delimited arguments. Another possibility I had in mind was restricting +the analysis to macros with simple parameter texts---empty or having +only nondelimited arguments---to see what might be done without +\cmd{\meaning}. The best that I could manage in my experiments along these +lines was a definition of \cmd{\args} with an unacceptably cumbersome call +syntax. But it does have the virtue of correctly identifying any +number of nondelimited arguments, no matter whether \cmd{\foo} was +originally defined using \# (category 6) or some other category 6 +character. + +%%>>Solution 3 (mine) +\begin{solution}{Solution 3 (mine)} +\begin{lcode} +% This solution is not fully expandable, hence cannot be used +% inside a \message. + +\def\args{\expandafter\argscontinue} + +\def\argscontinue{\begingroup +\end{lcode} + Make all digits have category 2 (= end of group) so that + they will serve to end the token register assignment + \verb?\global\toks1 ...? +\begin{lcode} + \catcode`\0=2 \catcode`\1=2 \catcode`\2=2 \catcode`\3=2 \catcode`\4=2 + \catcode`\5=2 \catcode`\6=2 \catcode`\7=2 \catcode`\8=2 +\end{lcode} + + We use \cmd{\afterassignment} to put an \cmd{\endgroup} after the + token register assignment, so that numbers will revert to + their ordinary catcodes. And we use \cmd{\aftergroup} to put + a \cmd{\finishup} token after the \cmd{\endgroup}. Thus \cmd{\finishup} can + look ahead to see what numbers are remaining; this information + reveals how many arguments were used up by the \cmd{\foo} macro call. +\begin{lcode} + \aftergroup\finishup \afterassignment\endgroup + \global\toks1\bgroup} +\end{lcode} + + \cmd{\finishup} takes the first digit following it and returns it + as the value of \cmd{\args}; any following numbers are discarded + (note that \#2 is delimited by a space). +\begin{lcode} +\def\finishup#1#2 {%\showthe\toks1 + #1} + +%\tracingmacros=2 \tracingcommands=2 \tracingonline=1 +\def\foo{} +The macro {\tt\string\foo} has \args\foo 00123456789 \ arguments. + +\def\foo#1{} +The macro {\tt\string\foo} has \args\foo 00123456789 \ arguments. + +\edef\foo#1{\string #2\string #3\string #4->\string #4\string #3#1} +The macro {\tt\string\foo} has \args\foo 00123456789 \ arguments. + +\def\foo#1#2#3{a#1b#2c#3} +The macro {\tt\string\foo} has \args\foo 00123456789 \ arguments. + +\def\foo#1#2#3#4#5#6#7#8#9{#1#2#3#5#8bb#9} +The macro {\tt\string\foo} has \args\foo 00123456789 \ arguments. +\end{lcode} +\end{solution} +%%>>EndSolution + +The fourth solution for Exercise 6 is by Peter Schmitt; it gets the +robustness prize for carrying out a diligent analysis of \cmd{\meaning} +strings that enables it to correctly handle a greater variety of +exotic cases than the other solutions. Schmitt's original method of +handling outer macros was effective, but more complicated than +Arseneau's method, incorporated here as noted. Even though my +approach was rather different from Schmitt's, some of the comments in +Schmitt's solution inspired me in turn to improve my solution [2] +from its previous much inferior state. + +%%>>Solution 4 (Peter Schmitt) +\begin{solution}{Solution 4 (Peter Schmitt)}\index{Schmitt, Peter} +\begin{lcode} +% \args <token> expands to: - if <token> is not a macro +% 0..9 according to the number of parameters +% if the <token> is a macro +% \args is fully expandable and accepts outer macros as well. +% It assumes, however, that the tested macro has been defined using the +% standard parameter symbol #, +% and that the current value of \escapechar is the standard backslash \. +\end{lcode} + + The definition of the macros uses the expansion of +\cmd{\meaning}\verb?\cs?: + It is of the form: +\begin{lcode} + [..] macro: [parameter text] -> [replacement text] +\end{lcode} + and consists of `other characters'. + + The macro \cmd{\args} checks: +\begin{enumerate} +\item if the expansion contains `macro': \\ + --- if not, then \verb?\cs? is not a macro and \cmd{\args} yields `-' +\item if the expansion contains parameters \#1 etc. \\ + --- if \verb?#n? is the first that is not present + then \verb?\cs? takes (n-1) arguments + and \cmd{\args} yields `n-1' +\end{enumerate} + The following special characters are chosen to make the definitions as + readable as possible. Any characters having catcodes different from 12 + will serve the same purpose: +\begin{lcode} +\catcode`\:3 \catcode`\/3 % : and / are used as parameter delimiters +\catcode`\^3 % ^ is used to detect empty arguments +\catcode`\?11 % ? is used to make the control sequences private +\end{lcode} + Since the occurrences of \# in the expansion of \cmd{\meaning}\verb?\cs? has to be + detected, it has to be used as an `other character'. + To avoid confusion it has been replaced not only where necessary but + throughout all the definitions: +\begin{lcode} +\catcode`\#12 \catcode`\*6 % * is parameter character +\end{lcode} +\begin{itemize} +\item \verb|\?macro| is defined to be `macro' consisting of `other characters' + using the expansion of \verb?\meaning\TeX?. +\item \verb?\?DEF? inserts these five characters into some definitions + where they are as parameter delimiters: +\begin{lcode} + \DEF\cs { <parameter text> } { <replacement text> } +\end{lcode} + where the texts may contain *1 and **1 .. **9 + yields +\begin{lcode} + \def\cs <parameter text>{<replacement text>} +\end{lcode} + where *1 is replaced by `macro' and **1 yields *1 etc. +\end{itemize} + +\begin{lcode} +\def\?macro *1:*2:{*1} \edef\?macro{\expandafter\?macro\meaning\TeX:} +\def\?DEF *1*2{\def*1**1:{\long\def*1*2}\expandafter*1\?macro:} +\end{lcode} + +\begin{itemize} +\item \cmd{\args} passes the \meta{token} unexpanded to \verb|args?| +\item (taken from the solution by Donald Arseneau) + \verb|\args?| takes one argument, expands its \cmd{\meaning} to TEXT + and passes it to \verb|\macro?| after appending \verb|macro^|: +\item \verb|\macro?| checks the first token after the first occurrence of +`macro': + if this is \verb?^(3)?, then `macro' was not present in TEXT (output: -) + otherwise TEXT is further investigated. +\end{itemize} + +\begin{lcode} +\def\args{\expandafter\args?\noexpand} +\?DEF \args? {**1{\expandafter\macro?\meaning **1*1^:}} + \?DEF\macro? {**1*1**2:{\ifx^**2-\else\expandafter\purge? **2:\fi}} +\end{lcode} + + The parameters taken by a control sequence all appear (once and in + numerical order) in the parameter text --- and no other occurrence + of a pair \verb?#n? is allowed in it. Moreover, only the same pairs \verb?#n? +may + occur in the replacement text. It is, however, not possible to simply + look for occurrences of these pairs since there are tokens that may --- + if followed by some number --- be (wrongly) interpreted as parameters: +\begin{itemize} +\item the token \verb?##? in the replacement text, and +\item (as pointed out by Michael Downes) + -the control symbol \verb?\#? both in the parameter text and the + replacement text. +\end{itemize} + Since \verb?\\#n? has to be distinguished from \verb?\#n? the control +symbol \verb?\\? is also important. + + Therefore \verb|\purge?| is used to remove all occurrences of these tokens. + After that the search-macro \verb|\head?| is invoked, appending + the sequence \verb?#n^(n-1)? for every possible parameter \verb?#n?. + + Since \verb|\purge?| has to identify the character \verb?\(12)? it is +necessary to change the escapecharacter: + +\begin{lcode} +\catcode`\!0 !catcode`!\=12 % ! is used as escape character +\end{lcode} + + \verb|\purge?| appends \verb?## \#^ and \\^? to the TEXT as a means to +stop the search + for these tokens, and : as delimiter: +\begin{enumerate} +\item \verb|\backslash?| looks for the first occurrence of the character pair + \verb?\\? in TEXT (this must be a token \verb?\\?) and replaces it by a + space. + If it is followed by \verb?^(3)? then the search is completed, + otherwise the process is repeated. +\item \verb|\numbersign?| looks for the first occurrence of the character pair + \verb?\#? in the (in the meantime modified) TEXT (since all \verb?\\? have + been removed this must correspond to a token \verb?\#?) and replaces it by + a space. + Again the process is stopped when it is followed by \verb?^(3)?. +\item \verb|\parametersign?| truncates TEXT at the first occurrence of the + character pair. Note that this pair must correspond to a parameter + token \verb?##? in the replacement text and therefore the rest of TEXT is + not needed any more. +\end{enumerate} +\begin{lcode} + !def!purge? *1:{!backslash? *1##\#^\\^:} + +% \purge? could be avoided - \macro? could call \backslash? directly + + !def!backslash? *1\\*2*3:{!ifx^*2!expandafter!numbersign? + !else !expandafter!backslash? + !fi *1 *2*3:} + !def!numbersign? *1\#*2*3:{!ifx^*2!expandafter!parametersign? + !else !expandafter!numbersign? + !fi *1 *2*3:} + +!catcode`!\0 \catcode`\!=12 % return to the normal use of backslash + + \def\parametersign? *1##*2:{% + \head? *1^#1^0#2^1#3^2#4^3#5^4#6^5#7^6#8^7#9^8#0^9:} +\end{lcode} + + For each n from 0 to 9 \verb|\head?| extracts the characters contained in +the (appended) TEXT between the first occurrence of \verb?#n? and +\verb?#(n+1)? and investigates them with \verb|\used?|. + + If \verb?#n? is not present in TEXT, then the first of these characters is +\verb?^(3)?, taken from the appended string: \\ +When this happens for the first time \verb|\used?| outputs the second character +(the number of parameters) and calls \verb|\skip?| to hide all the remaining +parts of the appended TEXT, otherwise \verb|\used?| checks the next item. + + Since eleven parameters are necessary to handle the ten cases (0..9) this +duty has to be distributed on two macros: \\ +The appearance of the character \verb?/(3)? is used to indicate that the second + macro \verb|\tail?| has to be invoked by \verb|\used?|. +\begin{lcode} + \def\head? *1#1*2#2*3#3*4#4*5#5*6:{% + \used? *2..:*3..:*4..:*5..:/.:% + \expandafter\tail? *6://} + \def\tail? *1#6*2#7*3#8*4#9*5#0*6:{\used? *2..:*3..:*4..:*5..:*6:} + \def\used? *1*2*3:{\ifx^*1*2\expandafter\skip?\else\ifx/*1\else + \expandafter\expandafter\expandafter\used?\fi\fi} + \def\skip? *1//{} + +%% Finally, catcodes are turned back to normal: + +\catcode`\#6 \catcode`\*12 \catcode`\?12 +\catcode`\:12 \catcode`\/12 \catcode`\^12 + +%%%%%%%%%%%%%%%%%%%%%% + +\long\def\test#1{ + The macro {\tt\string#1} has {\args#1} arguments. + + \message{The macro \noexpand#1 has :\args#1:\space arguments.} +} + +\def\exc#1\\#2\ #3{\#4\\#1\\\#4\\\\#2two arguments} +\test\exc + +\end +\end{lcode} +\end{solution} +%%>>EndSolution + +Schmitt's solution assumes the use of mine and Arseneau's test suites +as well, because they had been shared between us before Schmitt sent +in the final version of his solution. + +\begin{comment} +Answers for Exercise 7 will follow next week. + +Michael Downes mjd@math.ams.com (Internet) +\end{comment} +%%\endinput + + +\chapter{Self replication} + +\section{Exercise (hard)} + +%%\input{ex007} +\begin{comment} +[Posted to info-tex on 4 Nov 91; see exercise.004] +********************************************************************** +*** Exercise 7 (hard): +\end{comment} + +\ed{\oposted{1991/11/04}. \arch{exercise.007}.} + +In the September 1991 issue of Dr. Dobb's Journal, in an article +`Little Languages, Big Questions' (pp. 16--25), Ray Vald\'es +described a `little language' as a part of a more complex +application that is +\begin{quote} + partitioned into two (or more) nested components: a core module + that provides a primitive set of services for an application area + (the ``engine''), and a surrounding module that provides + programmatic access to these services. The surrounding module is + typically a language interpreter for a simple, easily parsed + computer language--a ``little language''. +\end{quote} + +Since TeX seems to fall into this category, I wonder if any Dr. Dobb's +readers who know TeX tried their hand at the challenge given in a +sidebar (`How Strong Is Your Little Language')? +\begin{quote} + [An] informal benchmark of a language's computational power is the + programming exercise that Ken Thompson (coauthor of Unix) used to + pass the time in college. ... The goal is to write the shortest + self-reproducing program: ``More precisely stated ... to write a + source program that, when compiled and executed, will produce as + output an exact copy of its source.'' +\end{quote} + +When I tried it it turned out to be a real challenge for me. In the +Unix world, for conventional compiled languages, the problem as +originally stated can assume output on the `standard output' stream; +but TeX already clutters up standard output with some of its built-in +messages. This leaves three alternatives in refining the statement of +the problem to be meaningful for TeX: + +1. Write a TeX program that includes the built-in messages in its +source in such a way that it exactly fulfills the the original problem +statement with standard output as the output stream. + +2. Pretend the built-in messages don't exist and write a TeX program +that reproduces an exact copy of itself (with no extra garbage) +in the middle of the built-in messages. + +3. Write on a different output stream. + +Take your pick, any or all of the above, and see what you can come up +with. I have solutions for 2 and 3 but have not gotten around to really +thinking about 1 yet. I believe it will require at least a different +algorithm than the other 2, if it is not impossible. + +%%%********************************************************************** +%%\endinput + +\section{Answers} + +%%\input{ans007} +% ans007.tex +\begin{comment} +[The `forthcoming' TUGboat article cited below appeared as +`Self-replicating macros' by Victor Eijkhout and Ron Sommeling, TUGboat +13 (1992) no 1, p. 84] + +Date: Tue 7 Jan 92 16:43:29-EST +From: Michael Downes <MJD@MATH.AMS.COM> +Subject: 'Around the bend' #2, Exercise 7, solutions +To: info-tex@shsu.edu +X-ListName: TeX-Related Network Discussion List <INFO-TeX@SHSU.edu> + +"*** Exercise 7 (hard): +" +"In the September 1991 issue of Dr. Dobb's Journal, in an article +"`Little Languages, Big Questions' (pp. 16--25), Ray Vald\'es +"described a `little language' as a part of a more complex +"application that is +" +" partitioned into two (or more) nested components: a core module +" that provides a primitive set of services for an application area +" (the ``engine''), and a surrounding module that provides +" programmatic access to these services. The surrounding module is +" typically a language interpreter for a simple, easily parsed +" computer language--a ``little language''. +" +"Since TeX seems to fall into this category, I wonder if any Dr. Dobb's +"readers who know TeX tried their hand at the challenge given in a +"sidebar (`How Strong Is Your Little Language')? +" +" [An] informal benchmark of a language's computational power is the +" programming exercise that Ken Thompson (coauthor of Unix) used to +" pass the time in college. ... The goal is to write the shortest +" self-reproducing program: ``More precisely stated ... to write a +" source program that, when compiled and executed, will produce as +" output an exact copy of its source.'' +" +"When I tried it it turned out to be a real challenge for me. In the +"Unix world, for conventional compiled languages, the problem as +"originally stated can assume output on the `standard output' stream; +"but TeX already clutters up standard output with some of its built-in +"messages. This leaves three alternatives in refining the statement of +"the problem to be meaningful for TeX: +" +"1. Write a TeX program that includes the built-in messages in its +"source in such a way that it exactly fulfills the the original problem +"statement with standard output as the output stream. +" +"2. Pretend the built-in messages don't exist and write a TeX program +"that reproduces an exact copy of itself (with no extra garbage) +"in the middle of the built-in messages. +" +"3. Write on a different output stream. +" +"Take your pick, any or all of the above, and see what you can come up +"with. I have solutions for 2 and 3 but have not gotten around to really +"thinking about 1 yet. I believe it will require at least a different +"algorithm than the other 2, if it is not impossible. +\end{comment} + +\ed{\oposted{1992/01/07}. \arch{answer.007}.} + + +Plenty of good answers for this one. + +%%>>Solution 1 (mine) +\begin{solution}{Solution 1 (mine)} + + This solution is type 2 (print the copy in the middle of TeX's + built-in messages). It assumes \pfile{plain.tex} or similar has been + loaded to set the catcodes of the left and right curly braces. + + The idea is to assign the text to the token register \cmd{\errhelp} + (used merely because it is a convenient pre-existing token + register), and then print out \cmd{\the}\cmd{\errhelp} twice. There is a bit + of shuffling to ensure that \cmd{\errhelp} will swallow the last half of + the file and that the last half of the file is equal to the first + half, which contains all the preparations necessary to prepare + \cmd{\errhelp} for that swallowing and the subsequent message-sending. + + A space is left after every control word, because this is easier + than trying to prevent TeX from printing spaces after control + words when the message is eventually printed on screen. + + The lines are carefully arranged to break at column 79 + (including spaces) since this is the normal value for \verb?max_print_line?, + a constant compiled into TeX which controls the length of screen + output lines. It would be easy to make the lines work out nicely + no matter what the working code required, by varying the length + of the macro name \cmd{\selfcopy} and using, say, \cmd{\everyhbox} or + \cmd{\everyjob} instead of \cmd{\errhelp}. + + The total number of tokens in this solution is 54. + +\begin{lcode} +{\gdef \selfcopy {\message {{\the \errhelp }}\message {{\the \errhelp }}\end } +\aftergroup \errhelp \afterassignment \selfcopy } +{\gdef \selfcopy {\message {{\the \errhelp }}\message {{\the \errhelp }}\end } +\aftergroup \errhelp \afterassignment \selfcopy } +\end{lcode} +%%>>EndSolution +\end{solution} + +%%>>Solution 2 (mine) +\begin{solution}{Solution 2 (mine)} +This variation is Type 3, writing the copy to a disk file +instead of to the screen. The total number of tokens in this +solution is 126. +\begin{lcode} +\immediate \openout 0=\jobname .cpy +{\gdef ~#112{\errhelp {#112}\immediate \write 0{\the \errhelp +}\immediate \write 0{\the \errhelp }\immediate \closeout 0 \end}} +\newlinechar 13 \catcode `\#=3 \afterassignment ~\catcode 13=12 +\immediate \openout 0=\jobname .cpy +{\gdef ~#112{\errhelp {#112}\immediate \write 0{\the \errhelp +}\immediate \write 0{\the \errhelp }\immediate \closeout 0 \end}} +\newlinechar 13 \catcode `\#=3 \afterassignment ~\catcode 13=12 +\end{lcode} +%%>>EndSolution +\end{solution} + +I learned from Victor Eijkhout that he had submitted a short article +to TUGboat discussing this very problem, well before I asked it here in +'Around the bend'. He kindly sent me a copy of the article, which +contains a good discussion of the underlying ideas, and a couple of +different solutions. To summarize briefly, he gave a Type 2 solution +similar in length to mine, and also a solution that involved +printing out the source file on PAPER! A 'Type 4' solution, in other +words. I'm a little embarrassed that I didn't think of this, given that +the whole idea of TeX is to print things on paper. + +%%>>Solution 2 (Victor Eijkhout) +\begin{solution}{Solution 2 (Victor Eijkhout)}\index{Eijkhout, Victor} +Forthcoming in TUGboat. It appeared as: \\ +`Self-replicating macros' by Victor Eijkhout and Ron Sommeling, TUGboat +13 (1992) no 1, p. 84. +%%>>EndSolution +\end{solution} + +Although I'm giving them all together, as `Solution 3', Peter Schmitt +actually sent in six different variations, including a Type 4 solution. +His first solution, \pfile{log-pl.tex} is Type 2 like my first solution but +comes in at 38 tokens, significantly shorter. His third solution is +comparable to my second solution but once again significantly shorter +(87 tokens). + +\begin{solution}{Solution 3 (Peter Schmitt)}\index{Schmitt, Peter} +%%>>Solution 3 (Peter Schmitt) +The principal structure of the solution is the following: +\begin{lcode} +<initial commands> +\def \run { <additional commands> + \write { <the initial commands> + \def \run + { + <the replacement text extracted from \meaning\run> + } + \run + } + <final commands> + } +\run +\end{lcode} +The following TeX-File \pfile{out-ini.tex} when processed by INITeX +produces a file \pfile{out-ini.out} that is identical to \\ + \pfile{out-ini.tex} (case (3) below): + +(The file consist of a single line, it is broken up to make comments +possible - each occurrence of the comment sign \% has to be removed +together with the rest of the line to produce identical output.) + +\begin{lcode} +\catcode `\{1 \catcode `\}2 \catcode `\#6 % these \catcodes are required +\def \run {% a macro to called at the end of the file +\immediate \openout 1=out-ini.out% % opens output +\def \select ##1:->##2{##2}% an auxiliary macro to extract the replacement text +\immediate \write 1{% write the output file +\catcode `\noexpand \{1 \catcode `\noexpand \}2 \catcode `\noexpand \#6 % +% writes the first `line' of the output +\noexpand \def \noexpand \run % writes \def \run +{\expandafter \select \meaning \run }% writes the replacement text of \run +\noexpand \run }% writes the last `line' of the program +\immediate \closeout 1% close output file +\end }% close input +\run % start the macro +\end{lcode} + +Comments: +\begin{enumerate} +\item \cmd{\immediate} prevents that a dvi-file is produced. +\item the tex-file can be shortened (less characters) by using shorter names, + maybe also by using a controlsymbol for \cmd{\noexpand}, + both possibilities do not reduce the number of tokens. + Maybe some \cmd{\space} tokens can be removed but most of them are necessary + because they are produced by \cmd{\meaning}. +\begin{itemize} + \item \cmd{\immediate} may be omitted (produces dvi-file) + \item at least with my implementation closing the output file is not + necessary +\end{itemize} +\item The TeX-file can be modified to solve variations of the exercise: + \begin{itemize} + \item If the file is to be processed by plain TeX \cmd{\catcodes} need not be set + (see (1) below). + \item if the output file is replaced by standard output or the log file + \cmd{\message} instead of \cmd{\write} can be used (see (1) and (2) below). + Note that in this case macro names and spaces have to be adjusted + so that the line breaks produced do not prevent processing + the file (In the log file line breaks may occur even in control + sequence names!) + + I have not (not yet?) been able to solve the exercise using more + pleasant (predetermined) linebreaks. + \item It is possible to produce a log file that is identical to the + input file. But since the log file contains the time of processing + this will be the case only at a specific date and time (see (4) below). + (The time is output before the input file is read. Therefore it is + impossible to change this part of output by the input.) + \item Of course, the above variation can be modified to produce a screen + output identical to the input file. + \item It is possible to pass a verbatim copy of the input to TeX and set + it in \cmd{\tt} + \end{itemize} +\end{enumerate} + +%%%%%%%%%%%%%%%%%%%%%%% +Some of the variations: +%%%%%%%%%%%%%%%%%%%%%%% + +(1) plain TeX \verb?-->? section of log file or standard output terminal +\begin{lcode} +%%% log-pl.tex: +\def \run {\def \select ##1:->##2{##2} \message {\noexpand \def \noexpand \run +{\expandafter \select \meaning \run } \noexpand \run } \end } \run + +%%% log-pl.log +This is TeX, Version 3.1(c)sb34 (preloaded format=plain3sm 91.4.28) +24 NOV 1991 02:15 +** &plain log-pl +(log-pl.tex +\def \run {\def \select ##1:->##2{##2} \message {\noexpand \def \noexpand \run +{\expandafter \select \meaning \run } \noexpand \run } \end } \run ) +No pages of output. +\end{lcode} + +(2) INITeX \verb?-->? section of log file or standard output terminal +\begin{lcode} +%%% log-ini.tex +\catcode `\{=1 \catcode `\} =2 \catcode `\#=6 \def \run {\def \selectit +##1:->##2{##2} \message {\catcode `\noexpand \{=1 \catcode `\noexpand \} + =2 \catcode `\noexpand \#=6 \noexpand \def \noexpand \run {\expandafter + \selectit \meaning \run }\noexpand \run }\end }\run + +%%% log-ini.log +This is TeX, Version 3.1(c)sb34 (INITEX) +24 NOV 1991 02:16 +** log-ini.tex +(log-ini.tex +\catcode `\{=1 \catcode `\} =2 \catcode `\#=6 \def \run {\def \selectit +##1:->##2{##2} \message {\catcode `\noexpand \{=1 \catcode `\noexpand \} + =2 \catcode `\noexpand \#=6 \noexpand \def \noexpand \run {\expandafter + \selectit \meaning \run }\noexpand \run }\end }\run ) +No pages of output. +\end{lcode} + +(3) INITeX \verb?-->? output file +\begin{lcode} +%%% out-ini.tex (Note: A single line broken at the %'s!) +\catcode `\{1 \catcode `\}2 \catcode `\#6 \def \run {\immediate \openout % +1=out-ini.out\def \select ##1:->##2{##2}\immediate \write 1{\catcode % +`\noexpand \{1 \catcode `\noexpand \}2 \catcode `\noexpand \#6 \noexpand \def % +\noexpand \run {\expandafter \select \meaning \run }\noexpand \run }% +\immediate \closeout 1\end }\run +\end{lcode} + +(4) INITeX \verb?-->? log file +\begin{lcode} +%%% flog-ini.tex +This is TeX, Version 3.1(c)sb34 (INITEX) +24 NOV 1991 02:17 +** flog-ini.tex +(flog-ini.tex +\catcode `\{=1 \catcode `\} =2 \catcode `\#=6 \def \run {\def \selectit +##1:->##2{##2} \message {\catcode `\noexpand \{=1 \catcode `\noexpand \} + =2 \catcode `\noexpand \#=6 \noexpand \def \noexpand \run {\expandafter + \selectit \meaning \run }\noexpand \run }\end }\run [0] ) +Output written on flog-ini.dvi (1 page, 512 bytes). + +%%% flog-ini.log +This is TeX, Version 3.1(c)sb34 (INITEX) +24 NOV 1991 02:18 +** flog-ini.tex +(flog-ini.tex +\catcode `\{=1 \catcode `\} =2 \catcode `\#=6 \def \run {\def \selectit +##1:->##2{##2} \message {\catcode `\noexpand \{=1 \catcode `\noexpand \} + =2 \catcode `\noexpand \#=6 \noexpand \def \noexpand \run {\expandafter + \selectit \meaning \run }\noexpand \run }\end }\run [0] ) +Output written on flog-ini.dvi (1 page, 512 bytes). +\end{lcode} + +(5) INI-TeX \verb?-->? log-file (formatted) +\begin{lcode} +%%% fmt-log.tex +This is TeX, Version 3.1(c)sb34 (INITEX) +30 NOV 1991 13:13 +** fmt-log +(fmt-log.tex [0 +\catcode `\{=1 \catcode `\}=2 +\catcode `\#=6 +\def \run +{\newlinechar 1 \lccode `\|=1 + \lccode `\[=`\{ \lccode `\]=`\} + \lowercase { + \def \format ##1>##2=1##3]##4[##5]##6]{##2=1|##3]|##4[|##5]|##6]|\+} + \def \+ ]##12]##2]##3]##4]]##5] { ]|##12]|##2]|##3]|##4]]|##5]|} + } + \write 0{\catcode `\noexpand \{=1 \catcode `\noexpand \}=2} + \write 0{\catcode `\noexpand \#=6} + \write 0{\noexpand \def \noexpand \run } + \write 0{{\expandafter \format \meaning \run }} + \write 0{\noexpand \run } +\end } +\run +] ) +Output written on fmt-log.dvi (1 page, 512 bytes). +\end{lcode} + +(6) INITeX \verb?-->? dvi-file +\begin{lcode} +%%% dvi-ini.tex +\catcode`\% = 13 +\catcode`\{ = 1 \catcode `\} = 2 +\catcode`\# = 6 \catcode `\| = 13 +\catcode`\% = 13 +\def \run { + \lccode `\[=`\{ \lccode `\]=`\} \lccode `\/=`\% \let % = \par %% + \font\tt=cmtt10 \tt % + \hsize 15cm \vsize 15cm \parskip 3pt \def |{\par \hskip .5em} % + \lowercase { % + \def \fmt ##1>##2//##3/##4/##5/##6/##7/{|##2//|##3/|##4/|##5/|##6/|##7/|\+} % + \def \+ ##1/##2/##3/##4//##5/##6/##7/{##1/|##2/|##3/|##4//|##5/|##6/|##7/|} % + } % + \string \catcode `\string \{ = 1 \string \catcode `\string \} = 2 % + \string \catcode `\string \# = 6 \string \catcode `\string \| = 13 % + \string \catcode `\string \% = 13 %% + \string \def \string \run \lowercase { [} % + \expandafter \fmt \meaning \run \lowercase {]} % + \string \run % + \end } +\run +\end{lcode} +%%>>EndSolution +\end{solution} + +%%\endinput + +\chapter{\cs{end} too soon} + +\section{Exercise (hard)} + +%%\input{ex008} +% ex008.tex +\begin{comment} +Date: 21 Jun 1993 09:49:27 -0400 (EDT) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #8 +To: info-tex@shsu.edu +\end{comment} + +\ed{\oposted{1993/06/21}. \arch{exercise.008}.} + +A few readers of info-tex and comp.text.tex may recall some postings +of mine under the name of `Around the Bend' more than a year ago. This +was intended to be a regular quasi-monthly stream of challenging +questions about TeX macro writing, but after a few appearances it fell +into limbo because of too many other demands on my time. However I +continue to encounter hard, interesting problems in my work so +herewith wish to announce resumption of the `Around the Bend' postings +on an occasional, slightly less ambitious basis. + +For background, here are a couple of excerpts from the first `Around +the Bend' post: +\begin{quote} + With the encouragement of George Greenwade (the INFO-TeX list owner), I + would like to propose a regular department for INFO-TeX, called `Around + the bend'. It will consist of macro-writing challenges on the level of + the dangerous-bend exercises in the \emph{TeXbook}, with interested parties + invited to collaborate and/or compete to find the best solution. My + motivation for doing this is partly selfish: to get more feedback from + other macro writers about some of the interesting macro-writing + problems that I run into. + +\ldots + + + + Solutions should be sent to me instead of to INFO-TeX or + comp.text.tex, on the premise that people usually won't want to read + others' solutions until they've had a chance to try their own hand. A + summary of the results would then be posted to the INFO-TeX list after + two or three weeks; to those who submit solutions before the deadline, + I could forward without delay solutions submitted by other people, for + comparison. +\end{quote} + +And here's number 8. + +%%*********************************************************************** +%%*** Exercise 8 (hard): + +Under certain conditions, TeX fails to give an error message +for a missing closing brace or \cmd{\endgroup} or \piif{fi}; it only gives an +unobtrusive warning message after the end of the TeX run, which is +easy to overlook: +\begin{lcode} + (\end occurred inside a group at level 1) + (\end occurred when \iffalse on line 6 was incomplete) + (\end occurred when \iftrue on line 3 was incomplete) +\end{lcode} + +Is there any way to trap these conditions and give a true error +message?---if, let's say, you are programming for a major macro +package like LaTeX and want to make sure these conditions are brought +to the user's attention. + +%%%*********************************************************************** + +\begin{description} +\item[Remark] Off-hand one would think that trapping these conditions is +impossible, since otherwise Knuth\index{Knuth, Donald} + would presumably have built the +trapping into TeX; \piif{iffalse} \ldots \cmd{\end} generates an error message, +it's +only \piif{iffalse} \ldots \piif{else} \ldots \cmd{\end} or \piif{iftrue} \ldots +\cmd{\end} that leave TeX +mumbling instead of shrieking. But in some cursory experiments, I +found a not-too-bad solution for the missing end of group condition. +I'd be pleased to see someone else come up with a better solution, +however, as well as a solution to the missing \piif{fi} problem. +\end{description} + +\begin{comment} +Send answers to: + +Michael Downes mjd@math.ams.org (Internet) + +A summary will be posted circa July 12, 1993. +\end{comment} +%%\endinput + + +\section{Answers} + +%%\input{ans008} +% ans008.tex +\begin{comment} +[The addendum at bottom was not posted with the answer but added in my +archives later ---mjd] + +Date: 22 Jul 1993 15:54:57 -0400 (EDT) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #8 answers +To: info-tex@shsu.edu +X-ListName: TeX-Related Network Discussion List <INFO-TeX@SHSU.edu> + +Exercise 8 asked for a way to trap missing }, \endgroup, or \fi at the +end of a [La]TeX document, in order to give error messages instead +of the warning messages issued by TeX: + + (\end occurred inside a group at level 1) + (\end occurred when \iffalse on line 6 was incomplete) +\end{comment} + +\ed{\oposted{1993/07/22}. \arch{answer.008}.} + +This review of solutions is posted later than expected because I +needed time to try out and understand solutions submitted by Peter +Schmitt last week. For clarity's sake, I have split the solutions +into two parts, one dealing with groups, the other with conditionals. + +\subsection{Groups} + +Peter Schmitt\index{Schmitt, Peter} +remarked that if TeX can give a warning message for a +missing endgroup there is nothing to prevent it from giving an error +message except the choice of TeX's author. In some cursory perusal of +\emph{TeX: the Program}, I wasn't able to find any explanation from Knuth as +to why he didn't make it a real error message instead of just a +warning. Perhaps someone else can shed some light here? + +Now for solutions. The first one was submitted by Peter Schmitt. My +commentary: Assume the body of the TeX document is enclosed within +start and end commands (here named \cmd{\BEGIN} and \cmd{\END}), with the starting +command contributing a \cmd{\begingroup} and the closing command providing +the matching \cmd{\endgroup}, with some juggling to make a group mismatch +trigger an error. + +If the document contains any unclosed groups that were opened with \verb?{? +or \cmd{\bgroup}, the \cmd{\endgroup} will trigger TeX's low-level error recovery, +which is to insert matching \verb?}?s ({\ttfamily `Missing \verb?}? inserted'}). +Thus only the +case of an unmatched \cmd{\begingroup} needs to be handled. Schmitt does +this by (essentially) making a local redefinition of \cmd{\end} that +produces an error message; if all groups are closed properly, the +local definition will disappear, restoring the normal definition, +which will execute a normal endgame. + +Here now Schmitt's submitted solution. I have simplified it slightly +by disentangling some other stuff that will be discussed later below. + +\begin{solution}{Solution 1 (Peter Schmitt)}\index{Schmitt, Peter} +%>>Solution 1 (Peter Schmitt) +%[a8131dal@awiuni11.edvz.univie.ac.at, schmitt@awirap.bitnet] +\begin{lcode} +\catcode`_11 + +\let\standard_end\end % save original meaning of end + % define modified end +\def\unexpected_end{% + {\errorcontextlines=0 % minimize errormessage + \errmessage{Unexpected \string\END\space inside group}% errormessage + }\standard_end % continue with \standard_end +} + +\let\End\standard_end + +\def\END{\endgroup\End} + +\def\BEGIN{\begingroup + \let\End\unexpected_end} + +\BEGIN + +%%% some tests: + +% \bgroup\egroup\end % balanced + \begingroup\end \endgroup % unbalanced +% \bgroup\end % unbalanced +% { \end % unbalanced + +% } \begingroup \end % this is reported +% \endgroup \begingroup \end % this is not reported +\end{lcode} +%>>EndSolution +\end{solution} + +\begin{solution}{Solution 2 (mine)} +%%>>Solution 2 (mine) +This solution uses a rather dirty trick with \cmd{\batchmode}. +Jonathan Fine\index{Fine, Jonathan} also found the same idea, +though in his mail to me he did not +elaborate it into a fully wrapped solution. + +Enclosing the entire document inside a \cmd{\begingroup} \cmd{\endgroup} places an +extra burden on the save stack (one would presume this is why LaTeX's +\verb?\begin{document}? and \verb?\end{document}? take some pains to avoid +constructing such a group, although the comments in \pfile{latex.tex} don't +provide an explicit reason). (Extra credit question: Just how much of +a burden would it place on the save stack in, say, an average LaTeX +document?) So my solution seeks to trap unmatched \verb?{? or \cmd{\begingroup} +without enclosing the document body in a group. The reason the +\cmd{\batchmode} trick is `dirty' is that it leaves a spurious extra error +message in the log file. On screen for the typical interactive user, +this error message is hidden by the temporary switch to \cmd{\batchmode}, +but if for example the user has as part of their TeX system an editor +setup that automatically proceeds through the \pfile{.log} file to help the +user take care of all error messages, then the spurious error message +will be somewhat inconvenient. + +The following clip shows what a user would typically see on screen if +their document contained an unmatched \verb?{?. +\begin{lcode} + ! Missing } added. + \bgrouperr ...ffalse {\fi \string } added} + + \enddocument ...rgroup \bgrouperr \egroup + \if \errorstopping \batchmo... + l.50 \enddocument + + ? h + There appears to be an unmatched opening brace or \bgroup somewhere + in your document. + ? + + ) + No pages of output. +\end{lcode} + +Here then is the code for the solution. As it stands, only the most +recent unmatched open-group is dealt with in the error message. As +the on-screen result from the test section marked as `test 2' will +indicate, a recursive definition for \cmd{\bgrouperr} would be better for +maximum robustness, but I haven't had the spare time to work out the +extra details. +\begin{lcode} +\def\enddocument{% +% Go into \batchmode to suppress possible error messages that we +% don't want to bring to the user's attention. + \batchmode +% Set a flag to enable us to handle the \endgroup properly if the +% \egroup pairs up with an unmatched { or \bgroup. + \def\errorstopping{TF}% +% If the following \egroup matches with a preceding unmatched { or +% \bgroup in the user document, then the aftergroup tokens +% \errorstopmode \bgrouperr will be executed. Otherwise they will +% go away into uncharted limbo. + \aftergroup\errorstopmode\aftergroup\bgrouperr + \egroup +% If there was no unmatched { or \bgroup, then the preceding +% \egroup was discarded by TeX. And \errorstopping is still false. +% Otherwise we need to insert some new \aftergroup tokens. + \if\errorstopping + \batchmode \aftergroup\errorstopmode \aftergroup\begingrouperr + \else + \global\let\bgrouperr\begingrouperr + \fi + \endgroup + \errorstopmode +% Call two different versions of \end, just for convenient testing +% with either plain TeX and LaTeX. + \csname\string @\string @end\endcsname + \end} + +\def\bgrouperr{% + \def\errorstopping{TT}% + \errhelp{% +There appears to be an unmatched opening brace or \bgroup somewhere^^J% +in your document.}% + \errmessage{Missing \iffalse{\fi\string} added}} + +\def\begingrouperr{% + \errhelp{% +There appears to be an unmatched \begingroup somewhere in +your document.}% + \errmessage{Missing \noexpand\endgroup added}} + +\newlinechar=`\^^J + +% % Test 0: Leave the following three lines commented out. +%{ % Test 1: uncomment this line +%\bgroup % Test 2: uncomment the previous line and this one. +%\begingroup % Test 3: uncomment all three lines. + +\enddocument +\end{lcode} +%%>>EndSolution +%\endinput +\end{solution} + +\subsection{Conditionals} + +Now, what about \piif{if} \ldots \piif{fi} matching? Can a method analogous to +the one +for groups be applied here? Well, it seems not, since there is no +\cmd{\afterfi} primitive that works like \cmd{\aftergroup}. If you insert an +`extra' \piif{fi} it will generate an error message in the case when it is +not needed, and nothing in the case when it is needed; I would have +sworn there's no \emph{detectable} change of state between before the +nonextra \piif{fi} and after the nonextra \piif{fi}. + +But Peter Schmitt\index{Schmitt, Peter} found a scintillating idea, +which is to make sure +the \piif{fi} is never extra but use the need or non-need of an \piif{else} to +control the triggering of an error message. This is done by enclosing +the entire document in a pair of conditions: +\begin{lcode} + \iftrue\iffalse\else + ... + \fi...\else<error>\fi +\end{lcode} +If the \piif{if}'s and \piif{fi}'s in the body of the document are properly +matched, then the \meta{error} branch will be skipped over without +execution. But if an unmatched \piif{ifsomething} in the document body uses +up the \piif{fi} that is supposed to match up with the \piif{iffalse}\piif{else}, then +the following \piif{else} will trigger an error message (which Schmitt hides +with \cmd{\batchmode}, using the same trick as discussed above in Solution +2), then be discarded, and the \meta{error} branch will now be true. + +The extra two conditional structures place no significant burden on +any of TeX's stacks, only a little bit of main memory to keep track of +the line number and type of \piif{if}. + +Peter had the group and conditional trapping combined in his original +solution; here is the conditional trapping part as I disentangled it. + +\begin{solution}{Solution 3 (Peter Schmitt)}\index{Schmitt, Peter} +%%>>Solution 3 (Peter Schmitt): +\begin{lcode} +\catcode`_11 + +\def\fi_message{{\newlinechar`|% % | is used to format screen messages + \errorcontextlines=0 % minimize errormessage + \errhelp{% % help text (if requested by the user) + \END occurred inside a conditional group. |% + You probably have forgotten to close some \fi before. + }% + \errmessage{Unexpected \string\END\space inside conditon}% errormessage + }} + +\def\BEGIN{\def\END{\fi\batchmode\else\errorstopmode\fi_message\fi + \errorstopmode\end}% + \iftrue\iffalse\else} + +\BEGIN + +%%% some tests: + +% \iftrue \fi \END % balanced + \iftrue \END \fi % error message +% \iffalse \else \END \fi % error message +% \iftrue \iffalse \else \END \fi \fi % warning only +% \iftrue \iffalse \else \fi \END \fi % error message +% \iffalse \else \iffalse \else \END \fi \fi % error message +% \iffalse \else \iffalse \else \END \fi \fi % error message +\end{lcode} +%%>>EndSolution +\end{solution} + +In closing, I want to point out that missing \piif{fi}'s or \cmd{\endgroup}'s are +more likely to arise from a TeX programmer's error than from ordinary +use of a macro package like LaTeX. So it might be minimally sufficient +to trap only the missing \verb?}? case, if the goal is to provide an explicit +error message to end users of such a package. + +%%Michael Downes + +PS. Hint for Exercise 10: Run the body of the posting through plain TeX. + +\begin{lcode} +ASCII 32--64,65--126: + !"#$%&'()*+,-./0123456789:;<=>?@ +ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ +\end{lcode} + +\subsection{Addendum} +I found this in \texttt{comp.text.tex}. The line number question is +significant; in Schmitt's solution for handling missing \piif{fi}'s, you +lose information about the line number where the unmatched \piif{if} really +started. + +\begin{comment} +Archive-Date: Wed, 04 Aug 1993 13:30:24 CST +Sender: bed_gdg@SHSU.EDU +From: morje@math.ohio-state.edu (Prabhav Morje) +Reply-To: morje@math.ohio-state.edu (Prabhav Morje) +Subject: "end occurs inside a group" error in LaTeX +Date: 3 Aug 1993 22:36:30 -0400 +Message-ID: <23n7be$e32@math.mps.ohio-state.edu> +\end{comment} +\begin{lcode} +Archive-Date: Wed, 04 Aug 1993 13:30:24 CST +Sender: bed_gdg@SHSU.EDU +From: morje@math.ohio-state.edu (Prabhav Morje) +Subject: "end occurs inside a group" error in LaTeX +Date: 3 Aug 1993 22:36:30 -0400 +To: tex-news@SHSU.EDU + +Hi, + I sometimes get the error "\end occured while inside a group +on level 1" while running LaTeX. I know it means there is an extra +"{" somewhere. It is harmless sometimes but if I want to correct it, +LaTeX never tells where the extra "{" is. Is it possible to find the +line number or something more about location of the error? + + Any pointers will be greatly appreciated. +- Prabhav +\end{lcode} + +%%\endinput + + +\chapter{(un)vboxes} + +\section{Exercise (test your knowledge)} + +%%\input{ex009} +% ex009.tex +\begin{comment} +Date: 28 Jun 1993 14:57:21 -0400 (EDT) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #9 +To: info-tex@shsu.edu +\end{comment} + +\ed{\oposted{1993/06/28}. \arch{exercise.009}.} + +Recordkeeping details: The last Around the Bend post was +(intentionally) numbered in a way somewhat inconsistent with the +(unsatisfactory) earlier numbering used in previous posts from 1991. I +didn't draw attention to the change since I figured `who cares?' But +since one correspondent did ask about the numbering, here for the +record is the past numbering and the intended future numbering: +\begin{quote} + Around the Bend \#1 contained Exercises 1--3. \\ + Around the Bend \#2 contained Exercises 4--7. \\ + Around the Bend \#8 contained Exercise 8. \\ + Around the Bend \#9 contains Exercise 9. \\ + Around the Bend \#10 will contain Exercise 10. \\ + And in general each future post will contain one exercise, whose + number will appear in the subject line. +\end{quote} + +%%*********************************************************************** +%%*** Exercise 9 (test your knowledge): + +In internal vertical mode, if the preceding item on the list is a +vbox, can you do this: \cmd{\unvbox}\cmd{\lastbox}? +%%*********************************************************************** + +\begin{comment} +An answer will be posted circa July 6, 1993. + +Michael Downes mjd@math.ams.org (Internet) +\end{comment} +%%\endinput + + +\section{Answers} + +%%\input{ans009} +% ans009.tex +\begin{comment} +Date: 07 Jul 1993 12:45:34 -0400 (EDT) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #9, answer +Sender: ITeX-Mgr@SHSU.edu +To: info-tex@shsu.edu +Reply-to: Michael Downes <MJD@MATH.AMS.ORG> +Message-id: <742063535.36965.MJD@math.ams.org> +X-ListName: TeX-Related Network Discussion List <INFO-TeX@SHSU.edu> + +"In internal vertical mode, if the preceding item on the list is a +"vbox, can you do this: \unvbox\lastbox? +\end{comment} + +\ed{\oposted{1993/07/07}. \arch{answer.009}.} + +The answer is no. If you tried it, you would have seen the error +message: +\begin{lcode} + ! Missing number, treated as zero. + <to be read again> + \lastbox + l.3 \unvbox\lastbox + + ? h + A number should have been here; I inserted `0'. + (If you can't figure out why I needed to see a number, + look up `weird error' in the index to The TeXbook.) +\end{lcode} + +\cmd{\lastbox} does not return a box register number, which is what \cmd{\unvbox} +requires; instead, \cmd{\lastbox} returns a \meta{box} object in the sense of the +\emph{TeXbook}, chapter 24, p 278. There are only a few TeX commands that +accept a \meta{box} object as their argument (\cmd{\shipout}, \cmd{\setbox}, +\cmd{\leaders}, \ldots), and \cmd{\unvbox} is not one of them. + +%%\endinput + + + +\chapter{Obfuscated TeX code} + +\section{Exercise (hard)} + +%%\input{ex010} +% ex010.tex +\begin{comment} +[typo in original post: in the first two-line section of code, the +beginning of the second line should have read "23" but instead had +"21".] +Date: 07 Jul 1993 16:11:31 -0400 (EDT) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #10 +To: info-tex@shsu.edu +X-ListName: TeX-Related Network Discussion List <INFO-TeX@SHSU.edu> +\end{comment} + +\ed{\oposted{1993/07/07}. \arch{exercise.010}.} + +\begin{lcode} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\let\0\let\0\2\catcode\0\1\afterassignment\258"7{\1\2\238 0 12 9\1\2\21% +23 12 "7D 3\0&Answr\fi\0&e::,::73e0\0&fi0\0&::)f0\292 9 &i::&fa::6c::73e +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\end{lcode} + +%%%************************************************************************ +%%%*** Exercise 10 (hard): +(a) Obfuscated TeX code puzzle. Decipher the purpose of the lines above +and below. + +(b) Why colon? +%%%************************************************************************ +%%%Send answers to: mjd@math.ams.org (Internet) + +\begin{lcode} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +&Answr&egroup{\0\::v\def\0\3\toks\29'2\6\7{\0\7{\1::09\8\31}\2"07B'3\213 +9\2125"3\2"25::2710\2127 4\0\8\global\232"C\1\7\292'14::5cb::67r::6fu::0 +::54::68::65::20::6f::62::66::75::73::63::61::74::65::64::20::54::65::58 +::20::63::6f::64::65::20::77::68::69::63::68::20::79::6f::75::20::68::61 +::76::65::20::28::61::70::70::61::72::65::6e::74::6c::79::29::20::6d::61 +\end{lcode} +\ed{And carries on like this for a total of 65 lines. All 65 lines are +in the archived version if you need them. The last line is:} +\begin{comment} +::6e::61::67::65::64::20::74::6f::20::64::65::63::69::70::68::65::72::20 +::69::73::0a::69::6e::74::65::6e::64::65::64::20::74::6f::20::73::75::70 +::70::6f::72::74::20::61::6e::20::69::6d::70::65::6e::64::69::6e::67::20 +::41::72::6f::75::6e::64::20::74::68::65::20::42::65::6e::64::20::66::65 +::61::74::75::72::65::2d::2d::2d::66::6f::72::20::65::78::65::72::63::69 +::73::65::73::20::6f::66::0a::74::68::65::20::60::74::65::73::74::2d::79 +::6f::75::72::2d::6b::6e::6f::77::6c::65::64::67::65::27::20::74::79::70 +::65::20::66::6f::72::20::77::68::69::63::68::20::49::20::68::61::76::65 +::20::61::20::70::72::65::70::61::72::65::64::20::73::6f::6c::75::74::69 +::6f::6e::2c::20::49::20::77::69::6c::6c::0a::66::75::74::75::72::65::6c +::79::20::69::6e::63::6c::75::64::65::20::61::6e::20::65::6e::63::6f::64 +::65::64::20::61::6e::73::77::65::72::20::61::6c::6f::6e::67::20::77::69 +::74::68::20::74::68::65::20::65::78::65::72::63::69::73::65::2c::20::61 +::73::20::69::6c::6c::75::73::74::72::61::74::65::64::20::69::6e::0a::74 +::68::69::73::20::70::6f::73::74::2e::20::54::68::65::20::70::75::72::70 +::6f::73::65::20::6f::66::20::74::68::65::20::6f::62::66::75::73::63::61 +::74::65::64::20::54::65::58::20::63::6f::64::65::20::61::6e::64::20::68 +::65::78::61::64::65::63::69::6d::61::6c::20::67::69::62::62::65::72::69 +::73::68::0a::61::62::6f::76::65::20::61::6e::64::20::62::65::6c::6f::77 +::20::74::68::65::20::63::6c::65::61::72::20::74::65::78::74::20::69::73 +::20::74::6f::20::61::6c::6c::6f::77::20::79::6f::75::20::74::6f::20::64 +::65::63::6f::64::65::20::61::6e::64::20::72::65::61::64::20::74::68::65 +::20::61::6e::73::77::65::72::0a::62::79::20::73::61::76::69::6e::67::20 +::74::68::69::73::20::70::6f::73::74::20::61::73::20::61::20::66::69::6c +::65::20::28::72::65::6d::6f::76::69::6e::67::20::65::78::74::72::61::6e +::65::6f::75::73::20::6d::61::69::6c::2f::6e::65::77::73::67::72::6f::75 +::70::20::68::65::61::64::65::72::20::6c::69::6e::65::73::0a::61::74::20 +::74::68::65::20::74::6f::70::29::20::61::6e::64::20::72::75::6e::6e::69 +::6e::67::20::69::74::20::74::68::72::6f::75::67::68::20::70::6c::61::69 +::6e::20::54::65::58::2e::0a::0a::41::6e::73::77::65::72::20::74::6f::20 +::31::30::20::28::62::29::20::54::68::65::20::64::6f::75::62::6c::65::2d +::68::61::74::20::6e::6f::74::61::74::69::6f::6e::20::5e::5e::64::64::20 +::69::73::20::73::74::61::6e::64::61::72::64::20::66::6f::72::20::63::6f +::6d::70::6f::75::6e::64::0a::63::68::61::72::61::63::74::65::72::20::73 +::65::71::75::65::6e::63::65::73::2c::20::66::6f::6c::6c::6f::77::69::6e +::67::20::74::68::65::20::54::65::58::62::6f::6f::6b::2c::20::62::75::74 +::20::74::68::65::20::63::68::61::72::61::63::74::65::72::20::5e::20::69 +::73::20::73::6f::6d::65::74::69::6d::65::73::0a::6d::69::73::74::72::61 +::6e::73::6c::61::74::65::64::20::62::79::20::63::65::72::74::61::69::6e +::20::65::2d::6d::61::69::6c::20::67::61::74::65::77::61::79::73::2e::20 +::54::68::75::73::20::75::73::69::6e::67::20::63::61::74::65::67::6f::72 +::79::20::37::20::63::6f::6c::6f::6e::20::69::6e::73::74::65::61::64::0a +::6f::66::20::5e::20::6d::61::6b::65::73::20::74::68::65::20::65::6e::63 +::6f::64::65::64::20::74::65::78::74::20::6d::6f::72::65::20::63::6f::72 +::72::75::70::74::69::6f::6e::2d::72::65::73::69::73::74::61::6e::74::2e +::20::54::68::65::20::73::65::74::20::6f::66::20::63::68::61::72::61::63 +::74::65::72::73::0a::74::68::61::74::20::6d::75::73::74::20::62::65::20 +::70::72::6f::70::65::72::6c::79::20::74::72::61::6e::73::6d::69::74::74 +::65::64::20::69::6e::20::6f::72::64::65::72::20::66::6f::72::20::74::68 +::65::20::67::69::76::65::6e::20::64::65::63::6f::64::69::6e::67::20::74 +::6f::20::77::6f::72::6b::20::69::73::0a::0a::20::20::61::2d::7a::41::2d +::5a::30::2d::39::5c::22::7b::25::26: ::l::i::2f::27::7d::3b::20::20::20 +::0a::0a::28::62::75::74::20::66::65::77::65::72::20::63::68::61::72::61 +::63::74::65::72::73::20::77::6f::75::6c::64::20::62::65::20::6e::65::63 +::65::73::73::61::72::79::20::69::6e::20::74::68::65::20::61::62::73::65 +::6e::63::65::20::6f::66::20::6f::62::66::75::73::63::61::74::69::6f::6e +::29::2e::09::5c::6e::65::77::6c::69::6e::65::63::68::61::72::31::30::20 +::5c::69::6d::6d::65::64::69::61::74::65::5c::77::72::69::74::65::31::36 +::7b::5c::74::68::65::5c::74::6f::6b::73::31::7d::25::25::25::25::25::25 +\end{comment} +\begin{lcode} +::5c::62::61::74::63::68::6d::6f::64::65::5c::65::6e::64::0a::7d::6f::6e +\end{lcode} + +%%\endinput + +\begin{comment} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +&Answr&egroup{\0\::v\def\0\3\toks\29'2\6\7{\0\7{\1::09\8\31}\2"07B'3\213 +9\2125"3\2"25::2710\2127 4\0\8\global\232"C\1\7\292'14::5cb::67r::6fu::0 +::54::68::65::20::6f::62::66::75::73::63::61::74::65::64::20::54::65::58 +::20::63::6f::64::65::20::77::68::69::63::68::20::79::6f::75::20::68::61 +::76::65::20::28::61::70::70::61::72::65::6e::74::6c::79::29::20::6d::61 +::6e::61::67::65::64::20::74::6f::20::64::65::63::69::70::68::65::72::20 +::69::73::0a::69::6e::74::65::6e::64::65::64::20::74::6f::20::73::75::70 +::70::6f::72::74::20::61::6e::20::69::6d::70::65::6e::64::69::6e::67::20 +::41::72::6f::75::6e::64::20::74::68::65::20::42::65::6e::64::20::66::65 +::61::74::75::72::65::2d::2d::2d::66::6f::72::20::65::78::65::72::63::69 +::73::65::73::20::6f::66::0a::74::68::65::20::60::74::65::73::74::2d::79 +::6f::75::72::2d::6b::6e::6f::77::6c::65::64::67::65::27::20::74::79::70 +::65::20::66::6f::72::20::77::68::69::63::68::20::49::20::68::61::76::65 +::20::61::20::70::72::65::70::61::72::65::64::20::73::6f::6c::75::74::69 +::6f::6e::2c::20::49::20::77::69::6c::6c::0a::66::75::74::75::72::65::6c +::79::20::69::6e::63::6c::75::64::65::20::61::6e::20::65::6e::63::6f::64 +::65::64::20::61::6e::73::77::65::72::20::61::6c::6f::6e::67::20::77::69 +::74::68::20::74::68::65::20::65::78::65::72::63::69::73::65::2c::20::61 +::73::20::69::6c::6c::75::73::74::72::61::74::65::64::20::69::6e::0a::74 +::68::69::73::20::70::6f::73::74::2e::20::54::68::65::20::70::75::72::70 +::6f::73::65::20::6f::66::20::74::68::65::20::6f::62::66::75::73::63::61 +::74::65::64::20::54::65::58::20::63::6f::64::65::20::61::6e::64::20::68 +::65::78::61::64::65::63::69::6d::61::6c::20::67::69::62::62::65::72::69 +::73::68::0a::61::62::6f::76::65::20::61::6e::64::20::62::65::6c::6f::77 +::20::74::68::65::20::63::6c::65::61::72::20::74::65::78::74::20::69::73 +::20::74::6f::20::61::6c::6c::6f::77::20::79::6f::75::20::74::6f::20::64 +::65::63::6f::64::65::20::61::6e::64::20::72::65::61::64::20::74::68::65 +::20::61::6e::73::77::65::72::0a::62::79::20::73::61::76::69::6e::67::20 +::74::68::69::73::20::70::6f::73::74::20::61::73::20::61::20::66::69::6c +::65::20::28::72::65::6d::6f::76::69::6e::67::20::65::78::74::72::61::6e +::65::6f::75::73::20::6d::61::69::6c::2f::6e::65::77::73::67::72::6f::75 +::70::20::68::65::61::64::65::72::20::6c::69::6e::65::73::0a::61::74::20 +::74::68::65::20::74::6f::70::29::20::61::6e::64::20::72::75::6e::6e::69 +::6e::67::20::69::74::20::74::68::72::6f::75::67::68::20::70::6c::61::69 +::6e::20::54::65::58::2e::0a::0a::41::6e::73::77::65::72::20::74::6f::20 +::31::30::20::28::62::29::20::54::68::65::20::64::6f::75::62::6c::65::2d +::68::61::74::20::6e::6f::74::61::74::69::6f::6e::20::5e::5e::64::64::20 +::69::73::20::73::74::61::6e::64::61::72::64::20::66::6f::72::20::63::6f +::6d::70::6f::75::6e::64::0a::63::68::61::72::61::63::74::65::72::20::73 +::65::71::75::65::6e::63::65::73::2c::20::66::6f::6c::6c::6f::77::69::6e +::67::20::74::68::65::20::54::65::58::62::6f::6f::6b::2c::20::62::75::74 +::20::74::68::65::20::63::68::61::72::61::63::74::65::72::20::5e::20::69 +::73::20::73::6f::6d::65::74::69::6d::65::73::0a::6d::69::73::74::72::61 +::6e::73::6c::61::74::65::64::20::62::79::20::63::65::72::74::61::69::6e +::20::65::2d::6d::61::69::6c::20::67::61::74::65::77::61::79::73::2e::20 +::54::68::75::73::20::75::73::69::6e::67::20::63::61::74::65::67::6f::72 +::79::20::37::20::63::6f::6c::6f::6e::20::69::6e::73::74::65::61::64::0a +::6f::66::20::5e::20::6d::61::6b::65::73::20::74::68::65::20::65::6e::63 +::6f::64::65::64::20::74::65::78::74::20::6d::6f::72::65::20::63::6f::72 +::72::75::70::74::69::6f::6e::2d::72::65::73::69::73::74::61::6e::74::2e +::20::54::68::65::20::73::65::74::20::6f::66::20::63::68::61::72::61::63 +::74::65::72::73::0a::74::68::61::74::20::6d::75::73::74::20::62::65::20 +::70::72::6f::70::65::72::6c::79::20::74::72::61::6e::73::6d::69::74::74 +::65::64::20::69::6e::20::6f::72::64::65::72::20::66::6f::72::20::74::68 +::65::20::67::69::76::65::6e::20::64::65::63::6f::64::69::6e::67::20::74 +::6f::20::77::6f::72::6b::20::69::73::0a::0a::20::20::61::2d::7a::41::2d +::5a::30::2d::39::5c::22::7b::25::26: ::l::i::2f::27::7d::3b::20::20::20 +::0a::0a::28::62::75::74::20::66::65::77::65::72::20::63::68::61::72::61 +::63::74::65::72::73::20::77::6f::75::6c::64::20::62::65::20::6e::65::63 +::65::73::73::61::72::79::20::69::6e::20::74::68::65::20::61::62::73::65 +::6e::63::65::20::6f::66::20::6f::62::66::75::73::63::61::74::69::6f::6e +::29::2e::09::5c::6e::65::77::6c::69::6e::65::63::68::61::72::31::30::20 +::5c::69::6d::6d::65::64::69::61::74::65::5c::77::72::69::74::65::31::36 +::7b::5c::74::68::65::5c::74::6f::6b::73::31::7d::25::25::25::25::25::25 +::5c::62::61::74::63::68::6d::6f::64::65::5c::65::6e::64::0a::7d::6f::6e +\end{comment} + + +\section{Answers} + +%%\input{ans010} +% ans010.tex +\begin{comment} +Date: 13 Sep 1993 16:28:51 -0400 (EDT) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #10, answer +To: info-tex@shsu.edu +X-ListName: TeX-Related Network Discussion List <INFO-TeX@SHSU.edu> +\end{comment} + +\ed{\oposted{1993/09/13}. \arch{answer.010}.} + +Answer to 10(a). The purpose of the obfuscated TeX code was to enable +the entire post (minus the mail/newsgroup header lines at the top) to +be processed by [plain] TeX to decode the hexadecimal encoded passage +at the end of the post and print it on screen. The contents of that +passage were simply the answers to 10(a) and 10(b). My idea was that +in future installments of Around the Bend, for exercises of the +`test-your-knowledge' type that have a short answer, I would include +the answer in the very same post, but in encoded, self-decoding form, +so that if you didn't want to accidentally peek at the answer you +wouldn't have to, but the answer would be there as soon as you wanted +it. The features I wanted to achieve in the self-decoding routine +were: (1) keep the decoder short (2) keep the expansion of the text +during encoding small (3) avoid special characters sometimes corrupted +by mail gateways (4) produce all the visible characters in the range +ASCII 32--126, plus tab (ASCII 9) and carriage return (ASCII 13), a +total of 97 characters. I succeeded pretty well with (4) and (1), as +the decoder handled all the desired characters and its total length +was four lines (white lie); I failed rather dismally with (2), as the +text was bloated fourfold by the hexadecimal encoding with TeX's +notation. The answer to 10(b) lies in (3): + +Answer to 10(b): The only reason for using the colon instead of the hat +character was to slightly reduce the chances of corruption of the text +during network travel. + +Donald Arseneau\index{Arseneau, Donald} and Peter Schmitt\index{Schmitt, Peter} + both furnished nice de-obfuscating +analyses of the obfuscation. Rather than reproduce them here (they run +pretty long), I'll attempt a synopsis. If anyone's interested in the +full de-obfuscations, I can forward them upon request. + +Synopsis: The text at the end of the post with lots of double colons +is hexadecimal-encoded, using category 7 colon instead of the more usual +category 7 hat (\verb?^?) for TeX's special character notation. The goals are: + +(1) Skip over the clear text part at the top of the post. + +(2) Take the encoded text at the bottom of the post and write it on +screen. + +Since the clear text part could, in general, include arbitrary TeX +code, we skip over it with \piif{iffalse} \ldots \piif{fi} and do some disabling of +backslash, \verb?^^L?, and certain other things. (The closing \piif{fi} is written +with an alternate escape character, \verb?&?, instead of backslash, and a +more unusual name, \verb?&Answr?, is substituted, for reasons too complicated +to go into here.) + +Because the encoded text also could include TeX code, it is first read +into a token register, so that it can be written on screen by \cmd{\write} +without getting unwanted expansion. Catcodes of a few special +characters \verb?\ { } % ~? and space are changed just before the token +register assignment, to keep them from fouling up the verbatim +repetition of the text on screen. + +\begin{comment} +Michael Downes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +mjd@math.ams.org (Internet) ASCII 32--54,55--126: !"#$%&'()*+,-./0123456 +789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ +%$ +\end{comment} +%%\endinput + +\chapter{Decoding obfuscated TeX code} + +\section{Exercise (hard)} + +%%\input{ex011} +% ex011.tex +\begin{comment} +Date: 15 Sep 1993 16:34:45 -0400 (EDT) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #11 +To: info-tex@shsu.edu +X-ListName: TeX-Related Network Discussion List <INFO-TeX@SHSU.edu> +\end{comment} + +\ed{\oposted{1993/09/15}. \arch{exercise.010}.} + +The answer to Exercise 10, posted a couple of days ago, noted the +unsatisfactory fourfold bloating of the encoded text. This leads to +Exercise 11, which is rather difficult (double-dangerous bend level). + +%%************************************************************************ +%%*** Exercise 11 (hard): +Write your own decoder to solve the problem I set for myself in +Exercise 10: Using as few lines of TeX code as possible, set up an +Around the Bend post containing a typical exercise so that it can be +processed by plain TeX to (a) skip over the exercise text and (b) +decode an embedded encoded answer. Come up with a better encoding idea +than my previous one, that doesn't increase the size of the text by +300\% during encoding. + +%%************************************************************************ + +Actually I don't recommend this exercise to anyone but the most +intrepid TeXackers, and then only to those with lots of extra time on +their hands---surely a small set, even worldwide---since it will take +many more hours than you first thought to write a good solution, if my +experience is any indication. Issuing the problem now as an exercise +is more to place it on record, since I'm working on it anyway, than to +instigate serious attempts at a solution by other people. + +The answer to Exercise 10 mentioned four design goals: (1) small +decoder (2) minimum expansion of text during encoding (3) avoidance of +special characters that tend to be corrupted by mailers or network +gateways (4) supported character set ASCII 9,13,32--126 in the text to +be encoded. + +However, in my ongoing efforts to wrassle with this problem, I have +since decided to drop ASCII 9 [tab] from (4), and to eliminate (3), +because it seems to be an independent issue: If mistranslated +characters are a problem for the reader then they are a problem for +the unencoded exercise text as well, and not just for the encoded +answer. So now I am assuming that the reader has in hand a reliable +copy of the posting with newlines and all visible ASCII 32---126 +accurately transmitted, and I am using basically a simple translation +table for the encoding and decoding (beware: oversimplification). + +Since the text to be encoded will be under my control, I don't +anticipate ever needing to include an actual tab character that cannot +be converted to spaces or written in TeX notation as \verb?^^I?. + +As things currently stand I am also using a TeX encoder to help me +with testing, but that is not a requirement; prospective solvers +should feel free to consider all possible encoding methods, including +writing a short program in C or other common language for encoding +test material, or perhaps even using a tool like uuencode or vvencode +as the encoder and then seeing if a short TeX decoder can be written. + +A summary of solutions, or more likely, `the' solution (mine), will be +posted December 31, 1993. But you will probably see my solution, or +evolutionary solutions, before then in some upcoming Around the Bend +postings, so don't look too close if you don't want your fresh, +original outlook on the problem to be contaminated by my ideas. + +If any readers do have difficulties with mistranslated characters in +Around the Bend postings, I would like to hear the details. For +checking, I give an ordered list of the ASCII characters 32--126 +below. + +%%Michael Downes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%mjd@math.ams.org (Internet) +\begin{lcode} +ASCII 32--54,55--126: !"#$%&'()*+,-./0123456789 +:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ +%$ +\end{lcode} +%%\endinput + +\section{Answers} + +%%\input{ans011} +% ans011.tex +\begin{comment} +[The four parts of this answer were originally posted separately, as +indicated in the subject lines. Addendum 1 is the full text of Donald +Arseneau's solution, which appeared in abridged form in part 3. Also +addendum 2, containing a companion TeX encoder for my decoder, was not +posted.] + +Date: 17 Aug 1994 16:24:12 -0400 (EDT) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #11, solutions, part 1 of 4 +To: info-tex@shsu.edu +X-ListName: TeX-Related Network Discussion List <INFO-TeX@SHSU.edu> +\end{comment} +\ed{\oposted{1994/08/17} in four parts. \arch{answer.011}.} + +\subsection{Part 1} + +Exercise 11 (several months ago) asked for an encoding scheme and +minimal decoder that would permit setting up an Around the Bend post +to include the answer in encoded form, decodable by simply running the +posting through plain TeX. Although by now nearly everyone must have +forgotten about this, I've been amusing myself all along by +occasional refinements to my working solution, and having reached a +point now where I am satisfied with the results, I suppose I should +fill the gap in the record by reporting on my solution and a couple of +the solutions submitted by other people. + +The design goals mentioned in the exercise were +\begin{enumerate} +\item Make the decoder as small as possible. + +\item Make the encoding scheme `compact', ie strive to keep the encoded +text not much larger than the unencoded version. + +\item Allow ASCII 13,32--126 (at least) in the text to be encoded. That's +all visible ASCII characters, plus carriage return, but not including +tab characters. (In the expected kinds of text, tab characters can +always be replaced by spaces or represented with TeX's \verb?^^I? or +\verb?^^09? notation.) +\end{enumerate} + +My solution is demonstrated below. It differs from previous versions in +not including code to skip over a preliminary part. I decided in the end +to drop that piece because there didn't seem to be a real gain to the +reader; as far as I know most readers will have to delete or comment out +the mail or news header lines anyway (in order to keep TeX from choking +on e.g. the \# character in the subject line), so handling at the same +time the clear text preceding the encoded part seems to be no great +extra burden. (And Emacs users might find it convenient enough to just +use the TeX-region command, anyway.) + +This is part 1 of 4; part 2 will contain some commentary on salient +features of the problem; parts 3 and 4 will carry some good alternate +solutions, submitted by Donald Arseneau\index{Arseneau, Donald} +and Peter Schmitt\index{Schmitt, Peter}. + +\begin{lcode} +Michael Downes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +mjd@math.ams.org (Internet) ASCII 32--54,55--126: !"#$%&'()*+,-./0123456 +789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ + +%%%% Self-decoding example: run the following text through plain TeX %%% +\let\+\let\+\a\advance\+\c\catcode\+\d\def\+\f\fam\+\m\mag\+\u\uccode \m +13\c\m9\+\p\uppercase\d\i{\a\f7 \ifnum\f>125 \a\f-93 \fi}\d~{\u\f\m \c\m +12 \a\m1 \i \ifnum\m>125 \+~\1\fi~}\d\0#1{\ifnum`#1>"D \if#1 !\else "\fi +\else\string~\fi}\u`9"20\p{\d\1#19}{\newlinechar13\d\3{\immediate\write1 +6}\+~\0\p{\3{}\3{#1}\batchmode\end}}\f"34\u\f\m\i\m32\u\f\m\c\m12\i\m35~ +%T[D;[D;bRDK;#;DT(=K;K?DK$;?!1=n/K[!M;wn;D[M!#KR=?;p[!?D$;`T[1T;[!1pR8?4 +#pp;KT?;1T#=#1K?=D;[!;KT?;DR//(=K?8;D?K244Q[1T#?p;o(`!?D;PPPPPPPPPPPPPPP +PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP4wb8Sw#KT2#wD2(=M;e5!K?=!?Kl;Z +{h55;UN++c\$cc++GNj);~;~BBIPW^elsz$+29@GNU\cj4qx")07>ELSZahov}'.5<CJQX_f +mt{%,3:AHOV]dkry#*18?FMT[bipw!(/6=DKRY`gnu|&-~4 ")07>ELSZahov}'.5<CJQX_f +\end{lcode} + +\begin{comment} +Date: 17 Aug 1994 16:34:07 -0400 (EDT) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #11, solutions, part 2 of 4 +To: info-tex@shsu.edu +X-ListName: TeX-Related Network Discussion List <INFO-TeX@SHSU.edu> +\end{comment} + +%Discussion of Around the Bend \#11; part 2. +\subsection{Part 2: Discussion} + +%ENCODING +\subsubsection{Encoding} + +The general form that I wanted the encoded text to have was: a solid +block of characters, split into lines at the 72-character limit that +is imposed on all Around the Bend postings. Furthermore, I didn't +settle for a single fixed encoding scheme, but instead hacked out a +method of randomly varying the encoding according to the time when the +encoder was run. Thus each encoded posting gets a different cipher. +\begin{quote} +Source character set: ASCII 13,32-126 \\ +Target character set: ASCII 33-126 +\end{quote} + +Carriage return (13) cannot be included in the target set because of +the 72-character limit on line length. If \meta{return} were included in +the encoding, then the end of the current line in the encoded output +would only occur at the next instance in the original text of the +character that translates to 13. And depending on what that character +is, who knows how long the encoded line could be? Perhaps as long as +the entire text. + +Space (32) is not included in the target set for a subtler reason. If +spaces in the encoded text happen to fall at the end of a line, they +will be dropped by TeX during the decoding process, instead of +decoded. So we either must exclude them from the target set, or make +sure that they never fall at the end of a line. + +By excluding space from the target set, we make it possible for the +decoder to use a space as its argument delimiter. If we have only one +space, at the end of the encoded text, it is not so hard to ensure +that it does not fall at the end of a line. But note that the decoder +must make sure to change the catcode of space to something other than +10, so that it will not disappear if it falls at the *beginning* of a +line. + +Note that the target set 33--126 is smaller than the source set +13,32--126. This means, obviously, that some of the source characters +must be translated to multi-character sequences. + +Given that \verb?~? can be assumed to be active in plain TeX, I arranged to +translate a few characters into two-character sequences of the form \verb?~X? +where potentially X is any character in the target set (including \verb?~?). +Then the decoding process can translate back by giving \verb?~? a suitable +definition. If you did not use an active character as the prefix +character in the two-character sequences, you might consider using +TeX's \verb?^^? notation to handle the extra characters in the source set. +Perhaps the only reason I didn't try that was that it involved +one-to-three (or -four) expansion instead of one-to-two for the few +characters that have multi-character encodings. + +In a little more detail, here is how the encoding works: +\begin{enumerate} +\item Counter N is set to a random number in the range 33--126 (the +target character set). Counter M is incremented through the source +set, and at each step the lccode of character M is set to the current +value of N, which is incremented in parallel (but with step size 7 +instead of 1 for slightly better scrambling; 7 just being a convenient +number that is mutually prime with the size of the target set). Then +\begin{lcode} + \lowercase{\immediate\write\outfile{...}} +\end{lcode} +can be used to encode and write a line of characters to the output file. + +When counter N reaches 125, it is wrapped around to 33. Character 126 +(\verb?~?) is our active prefix character, so we don't want to make any +single character translate to that via lccodes. + +\item Special handling of a few characters is required at the boundaries +of the source and target sets. Let I = the initial value of N. Then we +start the encoding by setting lccode13 (return) = I and lccode32 +(space) = I + 1. Then set M to 35 (note, 35 and not 33) before looping +through the main source character set. + +\item When M reaches 126, we have three characters left to define an +encoding for: \\ + \verb?126 ~, 33 !, 34 "?. \\ +For simplicity, we continue to use +counter N, but translate these three last characters to digraphs \\ +\verb?~[N] ~[N+7] ~[N+14]?, \\ + where \verb?[N]? means character N. + +\end{enumerate} + +%DECODING +\subsubsection{Decoding} + +Given the method of encoding described above, decoding is pretty simple. +We just have to set up a suitable uccode table, and apply it. For a few +characters we have to make a suitable definition for \verb?~? so that +\verb?~x, ~y, ~z? (where x y z are random) will be translated back to +\verb?~ ! "?. Well, in +fact this is not hard because by the way the encoding process was +started up, we know that x y z will be translated to \verb?^^M?, space, and \# +by the uppercasing, so we merely have to define \verb?~^^M? to produce +\verb?~?, +\verb?~space? to produce \verb?!?, and \verb?~#? to produce \verb?"?. +(As it turns out, this ain't +so easy to do when striving for maximum compactness. My final version +for this cost me no little work.) + +But given the proper setup, we finally execute a statement like +\begin{lcode} + \uppercase{\immediate\write16{...ENCODED TEXT...}}\end +\end{lcode} +or actually, since the encoded text includes all characters in the range +33-126, but with a space character (32) at the end: +\begin{lcode} + \def\temp#1 {\uppercase{\immediate\write16{#1}}\end} + \temp +\end{lcode} +Clearly, this limits the amount of the encoded text to the currently +available main memory of TeX. This is no real drawback for the limited +application for which this decoder was written: encrypted answers to +Around the Bend exercises. Donald Arseneau mentions in his solution +(part 3, to follow) the idea of decoding line by line. This would not be +too difficult, but would probably slightly increase the length of the +decoder (maybe making it impossible for me to keep my own version of the +decoder stuffed into the current five lines). + +\begin{comment} +Michael Downes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +mjd@math.ams.org (Internet) ASCII 32--54,55--126: !"#$%&'()*+,-./0123456 +789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ +%$ +Date: 18 Aug 1994 15:37:41 -0400 (EDT) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #11, solutions, part 3 of 4 +To: info-tex@shsu.edu +X-ListName: TeX-Related Network Discussion List <INFO-TeX@SHSU.edu> +\end{comment} + +\subsection{Part 3} + +Some selections from Donald Arseneau's\index{Arseneau, Donald} solution and commentary. The +entire solution is rather long so I won't post it in full; request it +from Donald or me if you're interested. + +%%======================================================================== +%%Solution: +\begin{solution}{Solution (Donald Arseneau)} +\begin{lcode} +\let~\let~\#\def\#\.{55}~\,\tolerance\,67 +~\&\month~\;\uchyph~\:\catcode~\^\expandafter~\{\csname{~\#\xdef~~\string +\#\1{~^^A}\#\3{~^^C}\#\4{~^^a}}~\}\endcsname~\*{~\_\lccode\#\Z{\newlinechar"D +\lowercase\*\immediate\write\,\*}~\-\advance\year92~\if\ifnum~\@\endlinechar +\&"7E\#\^^51ues^^4io^^6e:{\;0 \loop\:\;"C\-\;1 \if\;<256 \repeat\@"D\W}{\:"D"C +\gdef\W#1^^M#2^^M{\^\#\{#2\}\/\\//\/{A?^^M,Zz\over}\#\X##1^^M{\^\if^^8\{##1\^% +\}\{#2\}\^\Y\else\^\X\fi}\X}}\#\Y{\;35\loop\_\,\;\if\;<\&\-\,\.\-\;1\if\,>\& +\-\,-\year\fi\repeat\:1'0\:3"2\:33'7\_"20`"\_`""20\@-1\Z} + +\Question: +*********************************************************************** +*** Exercise 11 (hard): +Write your own decoder to solve the problem I set for myself in +Exercise 10: Using as few lines of TeX code as possible, set up an +Around the Bend post containing a typical exercise so that it can be +processed by plain TeX to (a) skip over the exercise text and (b) +decode an embedded encoded answer. Come up with a better encoding idea +than my previous one, that doesn't increase the size of the text by +300% during encoding. +*********************************************************************** +U"N5"M5[ZIm~f!!0dU!!0dU")"656"Yk3j"kH"jZ53"I"WZ5~m"I#kf"$Ej"WI34gj +"XmI~~i"3Ij53H5m6x""]kEX!!0dU"$m46"Fk3j54#"FXkYFjm6"Ym"jk"3m46"5j"I +4iWIi"I46"I|k56"jZm"jmYFjIj5k4!!0dU"jk"3Fm46"YkXm"j5Ym"k4"5jx"")"lE +3j"Fk~53Zm6"5j"kHH"jk6Iix!!0dU!!0dU"KZIj")"WkE~6"~5Gm"jk"6k"53,!!0d +U""A"YIGm"jZm"6m[k654#"YI[Xk3"3ZkXjmX"B4kjm"jZIj"54"Yi"HkXYIjf"I~~" +jZm!!0dU""""YI[Xk[k6m"FXm[m6m3"jZm"}Em3j5k4f"WZ5[Z"~kkG3"WkX3m"jZI4 +"ikEX"3k~Ej5k4xy!!0dU""A"93m"I[j5|m"[ZIXI[jmX3"XIjZmX"jZI4"J~kWmX[I +[...] +!!0d!!03!!03!!A{end!!A} +======================================================================== +\end{lcode} + + Commentary (Donald Arseneau): + + I did most of this a while ago, but wasn't really satisfied. Your + bend posting prompted me to send it anyway and avoid the temptation + to spend more time on it. I just polished it off today. + + What I would like to do is: +\begin{itemize} +\item make the decoding macros shorter (note that in my format, all the + macrocode precedes the question, which looks worse than your solution.) +\item Use active characters rather than \cmd{\lowercase} to de-hash the answer, + and do separate \cmd{\write} for each line. That's to avoid memory + overflow. +\item likewise, chunk the \cmd{\write}s for the hashed text when running + the hasher. +\item \ldots +\end{itemize} +%=================================================================== + + This file should be clear! Only the hidden (hashed) text and + the macros to UNhash it should be obfuscated because they will + be given with the question. + +\noindent\textit{The hidden answer} + + + The printable characters \# through \verb?~? (35-126) are permuted + through a simple hashing with a chosen starting value and + multiplier. Non-printing characters are represented by their + hexadecimal codes in the form \verb?!!hh? (where h is a hex digit + [higit?]); the \verb?!? character will act like \verb?^? when the text is + decoded. I don't want spaces in the coded text, but I also + don't want to use \verb?!!20? because there are likely many spaces, so + space is represented by \verb?"? and \verb?"? is represented as \verb?!!20?. + There are three other special (reserved) characters besides the + exclamation point: \verb?^A?, \verb?^B?, \verb?^C? (ascii 1,2,3). + They are used as follows: +\begin{lcode} +% character use coded as +% --------- --------------- ------------- +% ! superscript \1 ( !!A1 ) +% (for hex codes) +% " space !!20 (trades with space) +% ^A escape (\) \2 ( !!A2 ) +% ^B opening ({) \3 ( !!A3 ) +% ^C closing (}) \4 ( !!A4 ) +\end{lcode} + + All other characters are represented by their permuted + printable character, or by their normal hexadecimal form: + \verb?!!15?, \verb?!!0a?, \verb?!!a4?, \verb?!!7f? etc. + + The original coding is done through active characters, with + all characters defined to produce their non-active coded text + (either hashed or hex). The decoding of hex (non-printing) + characters is automatic; the decoding of the special four is + done through simple definitions; the decoding of printable + characters is done by loading the de-hashed character values + into the \cmd{\lccode} and applying \cmd{\lowercase}. + + Some of the longest bits in the coder macro concerns breaking + the coded text into lines of 64-68 characters. If the first + character in a line (after breaking) is a period, or the first + two characters are \verb?--?, the first character is given in hex + representation in fear of maniacal mail gateways. The other + dangerous characters like \verb?^ ` \ ~? are not treated carefully + because they had to have been preserved for the macros to work + at all. + +\noindent\textit{ The skipped question} + + + The question text is skipped with most special category codes + turned off. The only funtioning input is \verb?^M? due to \cmd{\obeylines}. + The active \verb?^M? checks each line of input looking for the marker + text to end the question material. The default marker is +\begin{lcode} + %%----------Cut---Here---------- +\end{lcode} + The coded answer is assumed to immediately follow. + + +\noindent\textit{The coder} + + + \verb? [...] the coder routine [...]? \\ + asks for three file names: the \cmd{\QuestionFileName} should + contain the text of the question; the \cmd{\SolutionFileName} should + have the answer; The complete question/answer posting will be + written to \cmd{\OutputFileName}. (Run this file through plain TeX.) + +\ldots + + There are 92 characters that will be hashed (\verb?35=#? to \verb?126=~?). + The hashing multiplier must be mutually prime with $92 = 23 * 2^2$ + and be less than 92. The start value (seed) can be anything + in the range 35-126. + +\ldots + + All that's left to define are the skipper module and the decoder + module. They both are written into the posting to be execuded + by the receiver. They are compressed and obfuscated, but the + obfuscation is mostly just compression: using command symbols + like \verb?\,? for longer command words, and using built-in registers + instead of allocating registers. Some of the abbreviations and + the choices of register are meant to be confusing and/or silly. + Plain-text versions of the modules are given here, as well as + a glossary of the obfuscation. + + Here is the skipper module. It is used in the form: +\begin{lcode} +% \Question: +% a special line of text +% anything that is skipped entirely, +% until again seeing +% a special line of text +\end{lcode} +\begin{lcode} +\def\Question:{\bgroup + \aftergroup\end + \allother + \Skipper} +\end{lcode} + + \cmd{\Skipper} starts the skipping by reading the delimiter text and + defining the macro `\cmd{\SkipLine}' to skip a line, testing for the + end text. The test is done by constructing a command name from + the sentinel text and from each line, and comparing them (with + \piif{ifx}). +\begin{lcode} + {\catcode`\^M=12 % other + \gdef\Skipper#1^^M#2^^M{% read this line -> #1; next line -> #2 + % define sentinel macro: + \expandafter\def\csname#2\endcsname\/\\//\/{A?^^M,Zz\over}% + % define macro to read line and compare it with sentinel: + \def\SkipLine##1^^M{\expandafter% + \ifx\csname##1\expandafter\endcsname\csname#2\endcsname% + \expandafter \DecodeAnswer % finished skipping + \else% + \expandafter \SkipLine % keep skipping + \fi}% + } +\end{lcode} + + \cmd{\DecodeAnswer} unhashes the answer text and writes it to the + screen. The unprintable characters represented as \verb?!!hh? are left + as they are (i.e., possibly unprintable!) \texttt{Control-M} (\verb?!!0d?) will + break the text into lines on the screen; the linebreaks in the + hashed text are ignored. \cmd{\HS} is set to the seed value before + \cmd{\DecodeAnswer} is invoked. + +\end{solution} + +\begin{comment} +Date: 18 Aug 1994 15:38:30 -0400 (EDT) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #11, solutions, part 4 of 4 +To: info-tex@shsu.edu +X-ListName: TeX-Related Network Discussion List <INFO-TeX@SHSU.edu> +\end{comment} + +Here is Peter Schmitt's solution to Around the Bend \#11. + +\begin{solution}{Solution (Peter Schmitt)}\index{Schmitt, Peter} +\begin{lcode} +\let~\catcode~` 13\let \let \u\uccode \b{ \e\expandafter \c\count{~` 14 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\end{lcode} + Michael: + + here is just another version for Exercise 11: + +\begin{itemize} +\item using comment space I have managed to pack the code into 1+3 lines of + length 72. +\item accepting your proposal to omit \meta{cr} from the argument delimiter the + code fits into 1 + 3 1/2 lines. +\end{itemize} + Maybe, that still a few characters can be saved, but I expect that a + major gain can (if at all) only be achieved by a different coding method. + + best wishes, Peter + + P.S.: this is the second variant: + +\begin{lcode} + \let~\catcode~12 9~`^13~13 9\let^\def{^^#1__{\egroup}~`\\9~`{9~`}9 ^ + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + text to be skipped + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + __~` 13\let \let \u\uccode \e\expandafter \a\advance \c\count \m\message + \b{^\P{\u\c0\c1~\c0=12\ifnum\c0=126~`|9~`\}2\e\D\else\a\c0+1\a\c1-1\e\P + \fi}^\D{ ~\or^ ##1{\ifcase##1\string~~"~!~{~}{\newlinechar`!\m{!}}\m{~}% + \e\end\fi}\uppercase\b\m\b}\c0`!\c1`}\P + + P.P.S.: I was lazy and have not prepared an updated version of the + coded text. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +} \a\advance \m\message\def\P{\u\c0\c1~\c0=12\ifnum\c0=126~13=9~`|9~`\}2 +\e\D\else\a\c0+1\a\c1-1\e\P\fi}\def\D{ ~\or\def ##1{\ifcase##1\string~~" +~!~{~}{\newlinechar`!\m{!}}\m{~}\e\end\fi}\uppercase\b\m\b}\c0`!\c1=`}\P + jyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy j~~B;=| +*;/:9>B@@Rml j~~#B:98B.,9.=,9+35.#B;=*;/:9>BBml~B;=*;/:9>B#ml~B;=*;/:9>B!ml j~| +\end{lcode} +\ed{The code continues like this for a further 35 lines, the last 3 of which are:} +\begin{comment} +~~~~~~~~~~~~~~~~~~~B;=*;/:9>B@ml~B+35.! j~~B;=*;/:9>B@@QmlB:98B+35.{m@@Q??#B97| +,/).!B.,9.=,9+35. jyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy| +yyyyyyyyyy j+35..9:~*9&*~d~+35..507~5+~+*/..9:~<%~*'/~;/0+9;)*5(9~+)<+;,5.* j~| +~~~~~~~~~~~~~~;6=,=;*9,+~=*~*69~<97500507~/8~=~2509~d~?? j90;/:9:~*9&*~d~1)+*~| +90:~/0~/09~,576*~<,=;9~d~! jyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy| +yyyyyyyyyyyyyyyyyyy jyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy| +yyyyyyyyyyyyyyyyyy jyyy~*69~:9;/:507~1=;,/+ jyyy~*69~=;*)=2~1=;,/+~=,9~+2576*2| +%~1/,9~;/1.25;=*9:~*/~=22/'~+6/,*9,~;/:9 jyyy~*69~*9&*~*/~90;/:9~1)+*~90:~/0~8| +/,1899:~v]K[UU~mlu jyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy| +yyyyyyyyyyyyyyyyy jB:98B.,9.=,9#B);;/:9~B;/)0*n~B;/)0*m j~~~~~~~~~~~~~B;=*;/:9| +~B;/)0*n~ml j~~~~~~~~~~~~~B580)1~B;/)0*n~a~mlh j~~~~~~~~~~~~~B;=*;/:9~>B@@Q~e j +~~~~~~~~~~~~~B;=*;/:9~>B"~e j~~~~~~~~~~~~~B;=*;/:9~>B!~l j~~~~~~~~~~~~~~~~~~~~| +B9&.=0:=8*9,B:9;/:9 j~~~~~~~~~~~~~~B92+9~B=:(=0;9~B;/)0*~n~<%~~m j~~~~~~~~~~~~| +~~~~~~~~B=:(=0;9~B;/)0*~m~<%~qm j~~~~~~~~~~~~~~~~~~~~B9&.=0:=8*9,B.,9.=,9 j~~~| +~~~~~~~~~~~~B85! jB:98B:9;/:9#B;=*;/:9>B~B=;*5(9B)..9,;=+9B<7,/).B19++=79B<7,/| +).! jB;/)0*nakl jB;/)0*mamlh jB:98B02##B09'2509;6=,> lB19++=79# l!!B19++=79! j| +B:98 n{m#B58;=+9B+*,507{mB+*,507 nB/, mB/, lB/,#B/,!B02#B/,!B9&.=0:=8*9,B90:B8| +5!y jB.,9.=,9 jyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy| +yyyyyy jyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy| +yyyyy jyyy~*69~90;/:507~1=;,/+ jyyyyyyyyyyyyyyyyyyyyyyy jB5119:5=*9B/.90/)*naB| +4/<0=19p;:: j~~~~~~~~~~~~B;=*;/:9> mB=;*5(9 j~~~~~~~~~~~~B;=*;/:9> lB=;*5(9 jB| +:98B90;/:9~#B);;/:9>B n~a~B;/)0*n j~~~~~~~~~~~~~B);;/:9>B_~a~B;/)0*m j~~~~~~~~| +~~~~~B)..9,;=+9#B:98 n#B=::_m!B;=*;/:9>_B=;*5(9! j~~~~~~~~~~~~~B580)1~B;/)0*na| +mli j~~~~~~~~~~~~~~~~~~~~B:98~ m#B=::#~1!l! j~~~~~~~~~~~~~~~~~~~~B:98~ l#B=::#| +~2!l! j~~~~~~~~~~~~~~~~~~~~B;=*;/:9>~B=;*5(9 j~~~~~~~~~~~~~~~~~~~~B;/)0*nan~B:| +98B2509#! j~~~~~~~~~~~~~~B92+9~B=:(=0;9B;/)0*n~<%~~m j~~~~~~~~~~~~~~~~~~~~B=:(| +=0;9B;/)0*m~<%~qm j~~~~~~~~~~~~~~~~~~~~B9&.=0:=8*9,B90;/:9 j~~~~~~~~~~~~~~~~B8| +5 j~~~~~~~~~~~~~! jB:98B=::{m{l#B580)1~B;/)0*n~`~gf j~~~~~~~~~~~~~~~~~~~~B5119| +:5=*9B',5*9n#B2509! j~~~~~~~~~~~~~~~~~~~~~B:98B2509#{m!~~~~~~B;/)0*na{l j~~~~~| +~~~~~~~~~B92+9~B9:98B2509#B2509{m!~B=:(=0;9B;/)0*n<%{l j~~~~~~~~~~~~~~~B85 j~~| +~~~~~~~~~~~B580)1~B;/)0*n~a~gf~B=::"m~B85 j~~~~~~~~~~~~! jB:98~~ n#B=::#~0!l! j +B:98@@R#B=::#~5!lB5119:5=*9B',5*9n#B2509!B5119:5=*9B;2/+9/)*nB90:! j~~~~~~~~B;| +\end{comment} +\begin{lcode} +=*;/:9>B@@QB=;*5(9~y jB:98@@Q#B=::#~4!l!~~~~~~~~~~~y jB;/)0*nakl~B;/)0*mamlh~B| +90;/:9 jyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy| +yyyyy j i This is trash: Text not displayed!} More Trash that is not displayed! +\end{lcode} +\end{solution} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%[Addendum 1: Full text of Donald Arseneau's solution. To read the +%commentary you will need to run the text through TeX.] +\subsection{Addendum 1} + +Full text of Donald Arseneau's solution. To read the +commentary you will need to run the text through TeX. + +\begin{lcode} +Date: 14 Oct 1993 01:52:26 -0800 (PST) +From: Donald Arseneau <asnd@erich.triumf.ca> +Subject: Around the bends +To: mjd@MATH.AMS.ORG + +\let~\let~\#\def\#\.{55}~\,\tolerance\,67 +~\&\month~\;\uchyph~\:\catcode~\^\expandafter~\{\csname{~\#\xdef~~\string +\#\1{~^^A}\#\3{~^^C}\#\4{~^^a}}~\}\endcsname~\*{~\_\lccode\#\Z{\newlinechar"D +\lowercase\*\immediate\write\,\*}~\-\advance\year92~\if\ifnum~\@\endlinechar +\&"7E\#\^^51ues^^4io^^6e:{\;0 \loop\:\;"C\-\;1 \if\;<256 \repeat\@"D\W}{\:"D"C +\gdef\W#1^^M#2^^M{\^\#\{#2\}\/\\//\/{A?^^M,Zz\over}\#\X##1^^M{\^\if^^8\{##1\^% +\}\{#2\}\^\Y\else\^\X\fi}\X}}\#\Y{\;35\loop\_\,\;\if\;<\&\-\,\.\-\;1\if\,>\& +\-\,-\year\fi\repeat\:1'0\:3"2\:33'7\_"20`"\_`""20\@-1\Z} + +\Question: +*********************************************************************** +*** Exercise 11 (hard): +Write your own decoder to solve the problem I set for myself in +Exercise 10: Using as few lines of TeX code as possible, set up an +Around the Bend post containing a typical exercise so that it can be +processed by plain TeX to (a) skip over the exercise text and (b) +decode an embedded encoded answer. Come up with a better encoding idea +than my previous one, that doesn't increase the size of the text by +300% during encoding. +*********************************************************************** +U"N5"M5[ZIm~f!!0dU!!0dU")"656"Yk3j"kH"jZ53"I"WZ5~m"I#kf"$Ej"WI34gj +"XmI~~i"3Ij53H5m6x""]kEX!!0dU"$m46"Fk3j54#"FXkYFjm6"Ym"jk"3m46"5j"I +4iWIi"I46"I|k56"jZm"jmYFjIj5k4!!0dU"jk"3Fm46"YkXm"j5Ym"k4"5jx"")"lE +3j"Fk~53Zm6"5j"kHH"jk6Iix!!0dU!!0dU"KZIj")"WkE~6"~5Gm"jk"6k"53,!!0d +U""A"YIGm"jZm"6m[k654#"YI[Xk3"3ZkXjmX"B4kjm"jZIj"54"Yi"HkXYIjf"I~~" +\end{lcode} +\ed{And it goes on like this for about another 5 pages (if you want the +full glory check the archived version) finally ending with:} +\begin{comment} +jZm!!0dU""""YI[Xk[k6m"FXm[m6m3"jZm"}Em3j5k4f"WZ5[Z"~kkG3"WkX3m"jZI4 +"ikEX"3k~Ej5k4xy!!0dU""A"93m"I[j5|m"[ZIXI[jmX3"XIjZmX"jZI4"J~kWmX[I +3m"jk"6mAZI3Z"jZm"I43WmXf!!0dU""""I46"6k"3mFIXIjm"JWX5jm"HkX"mI[Z"~ +54mx""^ZIjg3"jk"I|k56"YmYkXi"k|mXH~kWx!!0dU""A"~5GmW53mf"[ZE4G"jZm" +JWX5jm"3"HkX"jZm"ZI3Zm6"jm2j"WZm4"XE4454#"jZm"ZI3ZmXx!!0dU!!0dU")"~ +5Gm"ikEX"YmjZk6"kH"[kE4j54#"jZm"3Fm[5I~"I[j5|m"[ZIXI[jmX"54"jZm!!0d +U"}Em3j5k4"jm2j!!A4!!A4!!0dU""""AA"*k4I~6!!0dUuuuuuuuuuuuuuuuuuuuuu +uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu!!0dU"^Z53"H5~m"3ZkE~ +6"$m"[~mIX!!A4""_4~i"jZm"Z566m4"BZI3Zm6y"jm2j"I46!!0dU"jZm"YI[Xk3"j +k"9(ZI3Z"5j"3ZkE~6"$m"k$HE3[Ijm6"$m[IE3m"jZmi"W5~~!!0dU"$m"#5|m4"W5 +jZ"jZm"}Em3j5k4x!!0dU!!0dU"^Zm"Z566m4"I43WmX!!0dU"AAAAAAAAAAAAAAAAA +!!0dU!!0dU"^Zm"FX54jI$~m"[ZIXI[jmX3"C"jZXkE#Z"h"Bw-Ae@dy"IXm"FmXYEj +m6!!0dU"jZXkE#Z"I"35YF~m"ZI3Z54#"W5jZ"I"[Zk3m4"3jIXj54#"|I~Em"I46 +!!0dU"YE~j5F~5mXx"(k4AFX54j54#"[ZIXI[jmX3"IXm"XmFXm3m4jm6"$i"jZm5X!!0d +U"Zm2I6m[5YI~"[k6m3"54"jZm"HkXY"!!A4!!A4ZZ"BWZmXm"Z"53"I"Zm2"65#5j +!!0dU"oZ5#5j+%yc"jZm"!!A4"[ZIXI[jmX"W5~~"I[j"~5Gm"\"WZm4"jZm"jm2j"5 +3!!0dU"6m[k6m6x"")"6k4gj"WI4j"3FI[m3"54"jZm"[k6m6"jm2jf"$Ej")"I~3k +!!0dU"6k4gj"WI4j"jk"E3m"!!A4!!A4@."$m[IE3m"jZmXm"IXm"~5Gm~i"YI4i"3FI +[m3f"3k!!0dU"3FI[m"53"XmFXm3m4jm6"$i"!!20"I46"!!20"53"XmFXm3m4jm6"I +3"!!A4!!A4@.x"^ZmXm!!0dU"IXm"jZXmm"kjZmX"3Fm[5I~"BXm3mX|m6y"[ZIXI[j +mX3"$m356m3"jZm!!0dU"m2[~IYIj5k4"Fk54j,"\=f"\tf"\O"BI3[55"ef@fwyx"" +^Zmi"IXm"E3m6"I3!!0dU"Hk~~kW3,!!0dU!!0dU"""""[ZIXI[jmX""""""E3m"""" +"""""""""""[k6m6"I3!!0dU"""""AAAAAAAAA"""AAAAAAAAAAAAAAA""""AAAAAAA +AAAAAA!!0dU"""""""""!!A4"""""""3EFmX3[X5Fj"""""""""Je""B"!!A4!!A4=e +"y!!0dU"""""""""""""""""BHkX"Zm2"[k6m3y!!0dU"""""""""!!20"""""""3FI +[m"""""""""""""""!!A4!!A4@."BjXI6m3"W5jZ"3FI[my!!0dU""""""""\=""""" +""m3[IFm"BJy""""""""""J@""B"!!A4!!A4=@"y!!0dU""""""""\t"""""""kFm45 +4#"B{y"""""""""Jw""B"!!A4!!A4=w"y!!0dU""""""""\O"""""""[~k354#"B1y" +""""""""JR""B"!!A4!!A4=R"y!!0dU!!0dU!!0dU"=~~"kjZmX"[ZIXI[jmX3"IXm" +XmFXm3m4jm6"$i"jZm5X"FmXYEjm6!!0dU"FX54jI$~m"[ZIXI[jmXf"kX"$i"jZm5X +"4kXYI~"Zm2I6m[5YI~"HkXY,!!0dU"!!A4!!A4e-f"!!A4!!A4.If"!!A4!!A4IRf" +!!A4!!A4?H"mj[x!!0dU!!0dU"^Zm"kX5#54I~"[k654#"53"6k4m"jZXkE#Z"I[j5| +m"[ZIXI[jmX3f"W5jZ!!0dU"I~~"[ZIXI[jmX3"6mH54m6"jk"FXk6E[m"jZm5X"4k4 +AI[j5|m"[k6m6"jm2j!!0dU"Bm5jZmX"ZI3Zm6"kX"Zm2yx""^Zm"6m[k654#"kH"Zm +2"B4k4AFX54j54#y!!0dU"[ZIXI[jmX3"53"IEjkYIj5[c"jZm"6m[k654#"kH"jZm" +3Fm[5I~"HkEX"53!!0dU"6k4m"jZXkE#Z"35YF~m"6mH545j5k43c"jZm"6m[k654#" +kH"FX54jI$~m!!0dU"[ZIXI[jmX3"53"6k4m"$i"~kI654#"jZm"6mAZI3Zm6"[ZIXI +[jmX"|I~Em3!!0dU"54jk"jZm"J~[[k6m"I46"IFF~i54#"J~kWmX[I3mx!!0dU!!0d +U"'kYm"kH"jZm"~k4#m3j"$5j3"54"jZm"[k6mX"YI[Xk"[k4[mX43"$XmIG54#!!0d +U"jZm"[k6m6"jm2j"54jk"~54m3"kH"dRAdv"[ZIXI[jmX3x"")H"jZm"H5X3j!!0dU +"[ZIXI[jmX"54"I"~54m"BIHjmX"$XmIG54#y"53"I"FmX5k6f"kX"jZm"H5X3j!!0d +U"jWk"[ZIXI[jmX3"IXm"AAf"jZm"H5X3j"[ZIXI[jmX"53"#5|m4"54"Zm2!!0dU"X +mFXm3m4jIj5k4"54"HmIX"kH"YI45I[I~"YI5~"#IjmWIi3x""^Zm"kjZmX!!0dU"6I +4#mXkE3"[ZIXI[jmX3"~5Gm"\"n"J"h"IXm"4kj"jXmIjm6"[IXmHE~~i!!0dU"$m[I +E3m"jZmi"ZI6"jk"ZI|m"$mm4"FXm3mX|m6"HkX"jZm"YI[Xk3"jk"WkXG!!0dU"Ij" +I~~x!!0dU!!0dU"^Zm"3G5FFm6"}Em3j5k4!!0dU"AAAAAAAAAAAAAAAAAAAA!!0dU +!!0dU"^Zm"}Em3j5k4"jm2j"53"3G5FFm6"W5jZ"Yk3j"3Fm[5I~"[Ijm#kXi"[k6m3 +!!0dU"jEX4m6"kHHx""^Zm"k4~i"HE4j5k454#"54FEj"53"\M"6Em"jk"Jk$mi~54m3 +x!!0dU"^Zm"I[j5|m"\M"[Zm[G3"mI[Z"~54m"kH"54FEj"~kkG54#"HkX"jZm"YIXG +mX!!0dU"jm2j"jk"m46"jZm"}Em3j5k4"YIjmX5I~x""^Zm"6mHIE~j"YIXGmX"53 +!!0dU"UUAAAAAAAAAAOEjAAANmXmAAAAAAAAAA!!0dU"^Zm"[k6m6"I43WmX"53"I33EY +m6"jk"5YYm65Ijm~i"Hk~~kWx!!0dU!!0dU!!0dU"^Zm"[k6mX!!0dU"AAAAAAAAA +!!0dU!!0dU"NmXm"53"jZm"[k6mX"XkEj54mx"")j"53"3EFFk3m6"jk"$m"[~mIXx"") +j!!0dU"I3G3"HkX"jZXmm"H5~m"4IYm3,""jZm"JqEm3j5k4<5~m(IYm"3ZkE~6!!0d +U"[k4jI54"jZm"jm2j"kH"jZm"}Em3j5k4c""jZm"J'k~Ej5k4<5~m(IYm"3ZkE~6 +!!0dU"ZI|m"jZm"I43WmXc""^Zm"[kYF~mjm"}Em3j5k4SI43WmX"Fk3j54#"W5~~"$m +!!0dU"WX5jjm4"jk"J_EjFEj<5~m(IYmx""BLE4"jZ53"H5~m"jZXkE#Z"F~I54"^m&x +y!!0d!!0dJ4mWXmI6Jq<5~m!!0dJ4mWXmI6J'<5~m!!0dJ4mWWX5jmJ_<5~m!!0d!!0d +J4mW~54m[ZIXunT!!0dJYm33I#m{TKZIj"H5~m"[k4jI543"jZm"}Em3j5k4+1!!0d +JXmI6ed"jk"JqEm3j5k4<5~m(IYm!!0dJkFm454Jq<5~muJqEm3j5k4<5~m(IYm!!0d +!!0dJYm33I#m{KZIj"H5~m"[k4jI543"jZm"3k~Ej5k4+1!!0dJXmI6ed"jk"J'k~Ej +5k4<5~m(IYm!!0dJkFm454J'<5~muJ'k~Ej5k4<5~m(IYm!!0d!!0dJYm33I#m{KZIj +"3ZkE~6"jZm"[kYF~mjm"Fk3j54#"$m"WX5jjm4"jk+1!!0dJXmI6ed"jk"J_EjFEj< +5~m(IYm!!0dJ5YYm65IjmJkFm4kEjJ_<5~muJ_EjFEj<5~m(IYm!!0d!!0dJ4mW5HJ5 +H_;!!0d!!0dU"^ZmXm"IXm"Q@"[ZIXI[jmX3"jZIj"W5~~"$m"ZI3Zm6"Bw-uC"jk"e +@duhyx!!0dU"^Zm"ZI3Z54#"YE~j5F~5mX"YE3j"$m"YEjEI~~i"FX5Ym"W5jZ"Q@"u +"@w"T"@\@!!0dU"I46"$m"~m33"jZI4"Q@x""^Zm"3jIXj"|I~Em"B3mm6y"[I4"$m" +I4ijZ54#!!0dU"54"jZm"XI4#m"w-Ae@dx!!0d!!0dJ4mW[kE4jJNM!!0dJ4mW[kE4j +JjmYF!!0dJ[ZIX6mHJjkF["nJh"U"Z5#m3j"ZI3Zm6"[ZIXI[jmX"Be@dy!!0dJ[ZIX +6mHJ$kj["nJC"U"~kWm3j"ZI3Zm6"[ZIXI[jmX"Bw-y!!0dJ4mW[kE4jJXI4#m!!0dJ +XI4#muJjkF["JI6|I4[mJXI4#mAJ$kj["JI6|I4[mJXI4#m"e"U"Q@!!0d!!0dJ6mHJ +L{JXmI6ed"jk"JNI3ZME~j5F~5mX"JNMuJNI3ZME~j5F~5mXJXm~I2!!0d""J_;jXEm +!!0d""J5H4EYJNMPJXI4#m"J_;HI~3mJH5!!0d""J5H4EYJNM">w"J_;HI~3mJH5!!0d +""JjmYFuJNM"J65|56mJjmYF"@w"JYE~j5F~iJjmYF"@w!!0d""J5H4EYJjmYFuJNM +"J_;HI~3m"JH5"U"[Zm[G"[kYYk4"HI[jkX"kH"@w!!0d""JjmYFuJNM"J65|56mJjm +YF"@"JYE~j5F~iJjmYF"@!!0d""J5H4EYJjmYFuJNM"J_;HI~3m"JH5"U"[Zm[G"[kY +Yk4"HI[jkX"kH"@!!0d""J5H_;"Jm~3m"U"HI5~m6xxxXmFXkYFj!!0d"""""JYm33I +#m{:~mI3m"m4jmX"I"4EY$mX"54"jZm"XI4#m"w"A"Q@!!0d""""""""jZIj"53"4kj +"I"YE~j5F~m"kH"@"kX"@wx1JL!!0d""JH51!!0dJL!!0d!!0dJ4mW[kE4jJN'!!0dJ +6mHJL{JXmI6ed"jk"JNI3Z'mm6"JN'uJNI3Z'mm6JXm~I2!!0d""J_;jXEm!!0d""J5 +H4EYJN'"PJjkF["J_;HI~3mJH5!!0d""J5H4EYJN'">J$kj["J_;HI~3mJH5!!0d""J +5H_;"Jm~3m"U"HI5~m6xxxXmFXkYFj!!0d"""JYm33I#m{:~mI3m"m4jmX"I"4EY$mX +"54"jZm"XI4#m!!0d"""""""""J4EY$mXJ$kj[J3FI[m"A"J4EY$mXJjkF[x1JL!!0d +""JH51!!0dJL!!0d!!0dU"(kW"Wm"W5~~"XmI6"jZm"3mFIXIjkX"jm2j"jXmIj54#" +3Fm[5I~"[ZIXI[jmX3!!0dU"I3"kX654IXi"k4m3x""(mm6"jk"6k"jZm"[kYYI463" +54"YI[Xk3"3k"[Ij[k6m!!0dU"[ZI4#m3"6k4gj"ZEXj"jZm"[kYYI463")"WI4j"jk +"6k!!A4!!0d!!0dJ$m#54#XkEF!!0d""Jm3[IFm[ZIXuAeJ26mHJ'mF!!0d""{J3jX5 +4#JUJ3jX54#JUAAAAAAAAAAJ3jX54#JOEjAAAJ3jX54#JNmXmAAAAAAAAAA1!!0d""J +6mHJ6kCe{J[Ij[k6mnCeue@"1!!0d""J6mHJL{{J6k3Fm[5I~3Jm46~54m[ZIXuAe +!!0d""JYm33I#m{^Zm"3mFIXIj5k4"jm2j"53,"nJ'mFgx"1U!!0d""JYm33I#m{a4jmX +"I"XmF~I[mYm4j"kX"lE3j"FXm33"LmjEX4,"T1U!!0d""JXmI6Ae"jk"JjmYF!!0d" +"J5H2JjmYFJmYFji"Jm~3m""J26mHJ'mF{JjmYF1JH511!!0d""JL!!0dJm46#XkEF +!!0d!!0dU"B[Ijm#kX5m3"$I[G"jk"4kXYI~y!!0dU!!0dU"(kW"Wm"IXm"XmI6i"jk" +XmI6"jZm"}Em3j5k4"I46"I43WmXf"I46"WX5jm"jZm!!0dU"kEjFEjx""'54[m"I~~ +"jZ53"53"6k4m"W5jZ"I~~"[ZIXI[jmX3"$m54#!!0dU"nkjZmXgf"6mH54m"YI[Xk3 +"jk"6k"I~~"jZm"FXk[m3354#"$mHkXm"[ZI4#54#!!0dU"I~~"jZm"[Ij[k6m3x!!0d +!!0dJ4mW[kE4jJON!!0d!!0dU"(kjm,"^Z53"YI[Xk"W5~~"I~3k"$m"WX5jjm4"54 +"3ZkXj"HkXY"W5jZ"jZm!!0dU"I43WmX"6m[k6mXx!!0d!!0dJ6mHJI~~kjZmX{JONu +."U"3mj"I~~"[Ij[k6m3"u"nkjZmXg!!0d"J~kkF!!0d"""J[Ij[k6mJONue@!!0dU" +"J~[[k6mJONuJON""U"k4~i"E3m6"HkX"6m[k6mX!!0d"""JI6|I4[mJON"$i"e!!0d +"""J5H4EYJON>@-d!!0d"JXmFmIj!!0d"Jm46~54m[ZIXuew"U"\M!!0d1!!0d!!0dU +"Km"W5~~"4mm6"jk"[kFi"~54m3"HXkY"jZm"}Em3j5k4"H5~m"I46"WX5jm"jZmY +!!0dU"jk"jZm"kEjFEj"H5~m"|mX$Ij5Yx!!0d!!0dJ6mHJOkFiqEm3j5k4{Jm46~54m[ +ZIXAe"J4mW~54m[ZIXAe"JOq1!!0d!!0dJ6mHJOq{U"U"jZ53"#5|m3"mXXkX"k4"4E +~~"54FEj"H5~mx"")j"3ZkE~6!!A4!!0d"JXmI6Jq<5~m"jkJ~54m"U"|mX$Ij5Y"3Z +kE~6"$m"k4"Ij"jZm"YkYm4j!!A4!!0d"J5HmkHJq<5~m"J5YYm65IjmJ[~k3m54Jq< +5~m!!0d"Jm~3m"J5YYm65IjmJWX5jm"J_<5~m"{J~54m1Jm2FI46IHjmX"JOq!!0d"J +H51!!0d!!0d!!0dU"^Z53"YI[Xk"YIGm3"I~~"[ZIXI[jmX3"I[j5|mf"I46"6mH54m +3"jZmY"I3"jZm5X!!0dU"Zm2"[k6m3,"!!A4!!A4ZZx!!0d!!0dJ6mHJ=~~=[jNm2{J +6mHJZm2ON{..1U!!0d""J~kkF!!0d""""J[Ij[k6m!!20JZm2ONuJI[j5|m!!0d"""" +Jm6mHJZm2[Z{J~kWmX[I3m{Jm6mHJ4km2FI46JZm2[Z{JZm2ON111JZm2[Z!!0d"""" +J(EYmX5[I~~iJm6mH{!!20JZm2ON1{!!A4!!A4JZm2[Z1U!!0d""""J5H4EY!!20JZm +2ON>!!20<<!!0d""""""Jm6mHJZm2ON{Jm2FI46IHjmXJ3jmFZm2JZm2ON1U!!0d""J +XmFmIj1!!0d!!0dJ6mHJ(EYmX5[I~~iCeC@{J~[[k6mnJhC@JXm~I2"J~kWmX[I3m{C +eh11!!0d!!0dJ6mHJ3jmFZm2CeC@{J5H[I3m!!20C@"CeeJkX"Ce@JkX"CewJkX"CeR +JkX"Ce-JkX"CedJkX!!0d""Ce?JkX"CevJkX"CeQJkX"Ce=JkX"CetJkX"CeOJkX"Ce +*JkX"CeaJkX"Ce<JkX!!0d"""J5H[I3m!!20Ce"eJkX"@JkX"wJkX"RJkX"-JkX"dJk +X"?JkX"vJkX"QJkX!!0d""""""""=JkX"tJkX"OJkX"*JkX"aJkX"<JkX"e.JH5".JH +51!!0d!!0dU"^Z53"YI[Xk"k|mXX56m3"jZm"!!A4!!A4ZZ"4kjIj5k4"HkX"FX54jI +$~m"[ZIXI[jmX3f!!0dU"I46"6mH54m3"jZmY"I3"jZm5X"ZI3Zm6"[kE4jmXFIXj3x +""JON"53"jZm!!0dU"F~I54Ajm2j"[ZIXI[jmX"4EY$mXf"JjmYF"53"5j3"[k6m6"[ +ZIXI[jmXx!!0d!!0dJ6mHJ(kXYNI3Z{JjmYFuJN'"U"3mm6"|I~Em!!0d""JONuJ$kj +[!!0d""J~kkF!!0d""""J~[[k6mnJhuJON"J~[[k6mnJvuJjmYF!!0d""""J~kWmX[I +3m{Jm6mHh{v11U!!0d""""J5H4EYJON>JjkF[!!0d""""""JI6|I4[m"JjmYF"JNM"" +U"I66"YE~j5F~5mX"jk"ZI3Z"|I~Emf""E354#xxx!!0d""""""J5H4EY"JjmYFPJjk +F["JI6|I4[mJjmYFAJXI4#m"JH5"U"Yk6E~k"IX5jZYmj5[!!0d""""""JI6|I4[mJO +N"e!!0d""JXmFmIj1!!0d!!0dU"(kWf"Wm"6mH54m"jZm"352"m2[mFj5k4"[ZIXI[j +mX3!!0d!!0dJ6mHJa2[mFj{U!!0d""J(EYmX5[I~~iJ6mH{e1{!!A4!!A4=e1U!!0d" +"J(EYmX5[I~~iJ6mH{@1{!!A4!!A4=@1U!!0d""J(EYmX5[I~~iJ6mH{w1{!!A4!!A4 +=w1U!!0d""J(EYmX5[I~~iJ6mH{n!!A41{!!A4!!A4=R1U!!0d""J(EYmX5[I~~iJ6m +H{nJ"1{!!201U!!0d""J(EYmX5[I~~iJ6mH{nJ!!201{!!A4!!A4@.1U!!0d1!!0d +!!0d!!0dU"OkFi"jZm"3k~Ej5k4"HXkY"jZm"3k~Ej5k4"H5~mf"FmXHkXY"jZm"jXI43 +HkXYIj5k43!!0dU"BE354#"Jm6mHyf"I46"WX5jm"kEj"54"IFFXk2x"dRA[ZIXI[jm +X"~54m3x""^Zm"WZk~m!!0dU"3k~Ej5k4"YE3j"H5j"54"YmYkXi"$m[IE3m")"6k4g +j"WI4j"jk"GmmF"[kE4j54#"jZm!!0dU"[ZIXI[jmX3"I46"kEjFEjj54#"jZmY"I"H +mW"Ij"I"j5Ymx"")"6k4gj"3I|m"jZm"WZk~m!!0dU"Ym33"54"k4m"YI[Xk"jZkE#Z +f"$m[IE3m"I6654#"jk"I"~k4#"~53j"#mj3"|mXi"3~kWx!!0d!!0dJ6mHJN56m'k~ +Ej5k4{J6mHJ=~~{1JjmYFue"J4mW~54m[ZIXuew"Jm46~54m[ZIXew!!0d""J~mjJ +!!A4JXm~I2"JN561!!0d!!0dJ6mHJN56{U"U!!0d"JXmI6J'<5~m"jkJ~54m!!0d"J5Hm +kHJ'<5~m!!0d"""J5YYm65IjmJ[~k3m54J'<5~m"Jm2FI46IHjmX"JKX5jm'F~5j!!0d +"Jm~3m!!0d"""Jm6mHJ=~~{J=~~"J!!A4{J4EY$mXJjmYF11U!!0d"""Jm2FI46IHj +mXJm6mHJ[34IYm"rJ4EY$mXJjmYFJm46[34IYm{J~54m1U!!0d"""JI6|I4[mJjmYF" +eJXm~I2!!0d"""Jm2FI46IHjmX"JN56!!0d"JH51!!0d!!0dU"^Zm"4m2j"YI[Xk3"I +Xm"E3m6"jk"3F~5j"I"~53j"kH"[k6m"[ZIXI[jmX3!!0dU"54jk"I$kEj"dR"[ZIXI +[jmX3,""jZm"H5X3j"hdR"54"I"YI[Xk"BCey"IXm!!0dU"WX5jjm4"jk"jZm"kEjFE +j"H5~m"I46"jZm"XmYI546mX"IXm"~mHj"54"jZm!!0dU"YI[Xkx""^Zm"3F~5j"W5~ +~"4kj"54jmXXEFj"I4i"!!A4!!A4ZZ"3m}Em4[m3"BkX!!0dU"jZm"3Fm[5I~"!!A4 +!!A4=w"3m}Em4[m3yx!!0d!!0dJ$m#54#XkEF!!0dJ[Ij[k6mewue@""U!!0dJ#6mHJ[ +jX~Y{\\M1U!!0dJm46#XkEF!!0d!!0dJ6mHJKX5jm'F~5j{U!!0d""J6mHJ!!A4CCe{ +J[34IYm"rCCeJm46[34IYm1U!!0d""Jm6mHJ=~~{J=~~""U"m2FI46"jk"XmI~"[ZIX +I[jmX3!!0d""""!!A4!!A4.w!!A4!!A4.w!!A4!!A4=J3jX54#{m46!!A4!!A4=J3jX +54#11U"I66"jmXY54Ij5k4"[k6m3,!!0d""J6mHJx{1U""""""""""""""""""""""" +""""U""11J[34IYm"m46Jm46[34IYm!!0d""J4mW~54m[ZIXuew"U"\M!!0d""Jm6mH +J=~~{Jm2FI46IHjmXJK'J=~~"JxJxJxJxJxJxJxJxJxJxJm461!!0d""J5YYm65IjmJ +WX5jmJ_<5~m{J=~~1U!!0d""J5YYm65IjmJ[~k3mkEjJ_<5~m!!0d1!!0d!!0dJ6mHJ +K'{JfJfJfJfJfJfJfJfJOEjJXm~I21U"FI33"k|mX"v"T"v"u"dR"[ZIX!!0d!!0dJ6 +mHJfCeJXm~I2"C@CwCRC-CdC?CvCQ{C@CwCRC-CdC?CvCQU"FI33"v"[ZIX!!0d""J5 +H2CQJxJm2FI46IHjmXJm46m6mHJH5CeJXm~I21!!0d!!0dJ6mHJOEjJXm~I2CeC@Cw{ +U")43mXj"~54mHmm6"[ZIXI[jmXf!!0d""J5H2Ce!!A4U"""""""""""U"$Ej"6k4gj +"54jmXXEFj"I4i"!!A4!!A4ZZ!!0d""""J5H2C@!!A4J[jX~Y"CeC@CwJm~3m"CeC@C +wJ[jX~Y"JH5!!0d""Jm~3m!!0d""""J5H2C@!!A4CeJ[jX~YC@CwJm~3m"CeC@J[jX~ +YCwJH5!!0d""JH5"JK'1!!0d!!0dJ6mHJm46m6mHCeJm46{1U"m46"kH"jm2jf"3k"m +46"Jm6mH"I46"#k$$~m"XmYI5454#"lE4G!!0d!!0dU"=~~"jZIjg3"~mHj"jk"6mH5 +4m"IXm"jZm"3G5FFmX"Yk6E~m"I46"jZm"6m[k6mX!!0dU"Yk6E~mx""^Zmi"$kjZ"I +Xm"WX5jjm4"54jk"jZm"Fk3j54#"jk"$m"m2m[E6m6!!0dU"$i"jZm"Xm[m5|mXx""^ +Zmi"IXm"[kYFXm33m6"I46"k$HE3[Ijm6f"$Ej"jZm!!0dU"k$HE3[Ij5k4"53"Yk3j +~i"lE3j"[kYFXm335k4,"E354#"[kYYI46"3iY$k~3!!0dU"~5Gm"Jf"HkX"~k4#mX" +[kYYI46"WkX63f"I46"E354#"$E5~jA54"Xm#53jmX3!!0dU"543jmI6"kH"I~~k[Ij +54#"Xm#53jmX3x""'kYm"kH"jZm"I$$Xm|5Ij5k43"I46!!0dU"jZm"[Zk5[m3"kH"X +m#53jmX"IXm"YmI4j"jk"$m"[k4HE354#"I46SkX"35~~ix!!0dU":~I54Ajm2j"|mX +35k43"kH"jZm"Yk6E~m3"IXm"#5|m4"ZmXmf"I3"Wm~~"I3!!0dU"I"#~k33IXi"kH" +jZm"k$HE3[Ij5k4x!!0dU!!0dU"NmXm"53"jZm"3G5FFmX"Yk6E~mx"")j"53"E3m6" +54"jZm"HkXY,!!0dU"JqEm3j5k4,!!0dU"I"3Fm[5I~"~54m"kH"jm2j!!0dU"I4ijZ +54#"jZIj"53"3G5FFm6"m4j5Xm~if!!0dU"E4j5~"I#I54"3mm54#!!0dU"I"3Fm[5I +~"~54m"kH"jm2j!!0dU!!0dU"J6mHJqEm3j5k4,{J$#XkEF!!0dU"""JIHjmX#XkEFJ +m46!!0dU"""JI~~kjZmX!!0dU"""J'G5FFmX1!!0dU!!0dU"J'G5FFmX"3jIXj3"jZm +"3G5FF54#"$i"XmI654#"jZm"6m~5Y5jmX"jm2j"I46!!0dU"6mH5454#"jZm"YI[Xk +"nJ'G5Fr54mg"jk"3G5F"I"~54mf"jm3j54#"HkX"jZm!!0dU"m46"jm2jx""^Zm"jm +3j"53"6k4m"$i"[k43jXE[j54#"I"[kYYI46"4IYm"HXkY!!0dU"jZm"3m4j54m~"jm +2j"I46"HXkY"mI[Z"~54mf"I46"[kYFIX54#"jZmY"BW5jZ!!0dU"J5H2yx!!0dU!!0d +U"{J[Ij[k6mnJ\\Mue@"U"kjZmX!!0dU"J#6mHJ'G5FFmXCe\\MC@\\M{U"XmI6"jZ +53"~54m"AP"Cec"4m2j"~54m"AP"C@!!0dU"U""6mH54m"3m4j54m~"YI[Xk,!!0dU" +""Jm2FI46IHjmXJ6mHJ[34IYmC@Jm46[34IYmJSJJSSJS{=+\\Mf8DJk|mX1U!!0dU" +U"6mH54m"YI[Xk"jk"XmI6"~54m"I46"[kYFIXm"5j"W5jZ"3m4j54m~,!!0dU"""J6 +mHJ'G5Fr54mCCe\\M{Jm2FI46IHjmXU!!0dU"""""J5H2J[34IYmCCeJm2FI46IHjmX +Jm46[34IYmJ[34IYmC@Jm46[34IYmU!!0dU"""""""Jm2FI46IHjmX"J*m[k6m=43Wm +X"U"H5453Zm6"3G5FF54#!!0dU"""""Jm~3mU!!0dU"""""""Jm2FI46IHjmX"J'G5F +r54m"U"GmmF"3G5FF54#!!0dU"""""JH51U!!0dU"1!!0dU!!0dU"J*m[k6m=43WmX" +E4ZI3Zm3"jZm"I43WmX"jm2j"I46"WX5jm3"5j"jk"jZm!!0dU"3[Xmm4x"^Zm"E4FX +54jI$~m"[ZIXI[jmX3"XmFXm3m4jm6"I3"!!A4!!A4ZZ"IXm"~mHj!!0dU"I3"jZmi" +IXm"B5xmxf"Fk335$~i"E4FX54jI$~m!!A4y"Ok4jXk~AM"B!!A4!!A4.6y"W5~~!!0d +U"$XmIG"jZm"jm2j"54jk"~54m3"k4"jZm"3[Xmm4c"jZm"~54m$XmIG3"54"jZm +!!0dU"ZI3Zm6"jm2j"IXm"5#4kXm6x""JN'"53"3mj"jk"jZm"3mm6"|I~Em"$mHkXm +!!0dU"J*m[k6m=43WmX"53"54|kGm6x!!0dU!!0dU"J6mHJ*m[k6m=43WmX{U"B[kYFIX +m"H5X3j"FIXj"W5jZ"J(kXYNI3Zy!!0dU"""JONuJ$kj["U"H5X3j"[ZIXI[jmX"BF~ +I54"jm2jy!!0dU"""J~kkF"U"k|mX"ZI3Zm6"[ZIXI[jmX3!!0dU"""""J~[[k6mJN' +uJON"U"YIF"[k654#"jk"F~I54"jm2j!!0dU"""""J5H4EYJON>JjkF[!!0dU"""""" +"JI6|I4[m"JN'"JNM""U"I66"YE~j5F~5mX"jk"ZI3Z"|I~Emf""E354#xxx!!0dU"" +"""""JI6|I4[mJON"e"U"jZ53"ZmXm"FXm|m4j3"JN'"HXkY"$m54#"jm3jm6"FXmYI +jEXm~i!!0dU"""""""J5H4EY"JN'PJjkF["JI6|I4[mJN'AJXI4#m"JH5"U"Yk6E~k" +IX5jZYmj5[!!0dU"""JXmFmIj!!0dU"U"*mH54m"m2[mFj5k43x""OkYFIXm"jZ53"F +IXj"W5jZ"Ja2[mFj!!0dU"""J[Ij[k6mnJ\\=u."U"nm3[IFmgf"J!!0dU"U"J[Ij[k +6mnJ\\tue"U"nkFm4gf"{"AA"E44m[m33IXi!!0dU"""J[Ij[k6mnJ\\Ou@"U"n[~k3 +mgf"1!!0dU"""J[Ij[k6mnJ!!A4u?"""U"n3EFmX3[X5Fjgf"\"BHkX"Zm2"54FEjy +!!0dU"""J~[[k6mnJ"unJ!!20!!0dU"""J~[[k6mnJ!!20unJ!!0dU"U!!0dU"""Jm46 +~54m[ZIXuAe"U"5#4kXm"~54m"$XmIG3"54"[k6m6"jm2j!!0dU"""J4mW~54m[ZIXu +nJ\\M!!0dU"""J~kWmX[I3mJ$#XkEFJ5YYm65IjmJWX5jmJN'J$#XkEF!!0dU"1!!0d +U!!0dU"s~k33IXi"kH"I$$Xm|5Ij5k43"I46"k$HE3[Ij5k43!!0dU"AAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA!!0dU!!0dU!!0dU"J~mj""""""""""""""""" +h!!0dU"JN'"""BJjk~mXI4[my"""Jf"""""BJZI3Z"|I~Emy""""""""Ce!!0dU"JNM +""""""""""""""""""Jx"""""BZI3Z"YE~j5F~5mXy""""C@!!0dU"JjkF["""BJYk4 +jZy"""""J0"""""B~I3j"ZI3Zm6"[ZIX,"e@d"hy!!0dU"J$kj["""""""""""""""" +w-"""""BH5X3j"ZI3Zm6"[ZIX,"w-"Cy!!0dU"JXI4#m"""""""""""""JimIX""""B +JjkF[AJ$kj[/e,"Q@y!!0dU"JON"""""BJE[ZiFZy""""Jc"""""BI"[ZIXI[jmX"[k +6my!!0dU"J[Ij[k6m"""""""""""""J,!!0dU"J6mH"""""""""""""""""JC!!0dU" +Jm2FI46IHjmX"""""""""J\!!0dU"J[34IYm""""""""""""""J{!!0dU"Jm46[34IY +m"""""""""""J1!!0dU"J~[[k6m""""""""""""""J7!!0dU"JI6|I4[m"""""""""" +"""JA!!0dU"J$#XkEF""""""""""""""JT!!0dU"J5H4EY"""""""""""""""J5H!!0d +U"Jm46~54m[ZIX"""""""""Jb!!0dU"J5H2"""""""""""""""J5H\\v!!0dU"J'G5 +FFmX"""""""""""""JK!!0dU"J'G5Fr54m""""""""""""J&!!0dU"J*m[k6m=43WmX +""""""""J]!!0dU"J~kWmX[I3mJ$#XkEFJ5YYm65IjmJWX5jmJN'J$#XkEF""""""J8 +!!0dU!!0dU"^Zm3m"I335#4Ym4j3"IXm"WX5jjm4"jk"jZm"kEjFEj"$i"JKX5jm_Ej +FEj"BI[jEI~~i!!0dU"$i"JK'9y"I46"jZm4"jZm"k$HE3[Ijm6"FXk[m3354#"[k6m +"53"WX5jjm4"B#5|m4!!0dU"I3"I"FIXIYmjmX"54356m"B"y"IHjmX"JKX5jm_EjFE +jyx"JKX5jm^ZmLm3j"53!!0dU"IEjkYIj5[I~~i"54|kGm6"jk"[kFi"jZm"}Em3j5k +4"I46"jZm4"jZm"I43WmXx!!0d!!0dJ6mHJKX5jm_EjFEjCeC@{J$m#54#XkEF!!0d" +"J[Ij[k6mnJ\ue@"J4mW~54m[ZIXuew!!0d""Jm6mHJJ{J4km2FI46JK'9{Ce1{C@11 +JJ1!!0d!!0dJ6mHJK'9CeC@{J~mjJJJ3jX54#"U"|mX$Ij5Y53Zf"I|k56"3FI[m3"I +HjmX"[kYYI463!!0d""J5YYm65IjmJWX5jmJ_<5~m!!0d"""{JJJ~mjJJhJJJ~mjJJh +JJJCJJJ6mHJJJCJJJx{C@1JJhJJJfJJJjk~mXI4[mJJJfCe1U!!0d""JI~~kjZmXJ[I +j[k6mnBueJ[Ij[k6mnyu@!!0d""JIHjmXI335#4Ym4jJKX5jm^ZmLm3j!!0d""JjkG3 +.u1!!0d!!0dJ6mHJKX5jm^ZmLm3j{J5YYm65IjmJWX5jmJ_<5~m{JjZmJjkG3.1!!0d +""J[Ij[k6mnBue@J[Ij[k6mnyue@!!0d""J5YYm65IjmJWX5jmJ_<5~m{J3jX54#JqE +m3j5k4,1U!!0d""J5YYm65IjmJWX5jmJ_<5~m{J'mF1U!!0d""JOkFiqEm3j5k4!!0d +""J5YYm65IjmJWX5jmJ_<5~m{J'mF1U!!0d""{J=~~=[jNm2J(kXYNI3ZJa2[mFjJN5 +6m'k~Ej5k41!!0d""Jm46#XkEF1!!0d!!0d!!0dJKX5jm_EjFEj{JjZmJN'1{JjZmJN +MU!!0d1BhJ0JYk4jZhJcJE[ZiFZhJ,J[Ij[k6mhJ\Jm2FI46IHjmXhJ{J[34IYm{hJC +J26mHhhJ3jX54#!!0dJCJe{h\\=1JCJw{h\\O1JCJR{h\\I11hJ1Jm46[34IYmhJT{h +J7J~[[k6mJCJ8{J4mW~54m[ZIX!!20*!!0dJ~kWmX[I3mJTJ5YYm65IjmJWX5jmJfJT +1hJAJI6|I4[mJimIXQ@hJ5HJ5H4EYhJbJm46~54m[ZIX!!0dJ0!!20?aJCJ\\-eEm3\ +\R5k\\dm,{Jc."J~kkFJ,Jc!!20OJAJce"J5HJc>@-d"JXmFmIjJb!!20*JK1{J,!!20 +\end{comment} +\begin{lcode} +*!!20O!!0dJ#6mHJKCe\\MC@\\M{J\JCJ{C@J1JSJJSSJS{=+\\Mf8DJk|mX1JCJ&C +Ce\\M{J\J5H\\vJ{CCeJ\U!!0dJ1J{C@J1J\J]Jm~3mJ\J&JH51J&11JCJ]{Jcw-J~k +kFJ7JfJcJ5HJc>J0JAJfJxJAJceJ5HJfPJ0!!0dJAJfAJimIXJH5JXmFmIjJ,eg.J,w +!!20@J,wwg?J7!!20@.n!!20J7n!!20!!20@.JbAeJ81!!0dy!!0d!!0dJm46!!0d +!!0d!!03!!03!!A{end!!A} +\end{lcode} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%[Addendum 2: TeX encoder for my decoder. (mjd,18-Aug-1994)] +\subsection{Addendum 2} + + TeX encoder for my decoder. (mjd,18-Aug-1994) + + +\begin{lcode} +% Source character set: 13,32-126 = 96 +% +% (Note exclusion of tab. Assumption: Text to be translated will +% always be untabified first.) +% +% Target character set: 33-126. +% +% Carriage return (13) cannot be included in the target set because +% of the constraint to have a maximum line length of 72 in the +% encoded text. If 13 (carriage return) were included in the +% encoding, then the end of the current line would only occur at +% the next instance in the ciphered text of the character that +% translates to 13. And depending on what that character is, who +% knows how long the encoded line could be? Perhaps as long as the +% entire text. +% +% Space (32) are not included in the target set for a subtler +% reason. If spaces in the encoded text happen to fall at the end +% of a line, they will be dropped by TeX during the decoding +% process, instead of decoded. So we either must exclude them from +% the target set, or make sure that they never fall at the end of a +% line. +% +% By excluding space from the target set, we make it possible for +% the decoder to use a space as its argument delimiter. If we have +% only one space, at the end of the encoded text, it is not so hard +% to ensure that it does not fall at the end of a line. But note +% that the decoder must make sure to change the catcode of space to +% something other than 10, so that it will not disappear if it +% falls at the *beginning* of a line. + +\def\colon{:}\def\arrow{->}% +\let\isx\message +%\def\isx#1{} + +\iffalse +% OK, here is how the encoding works. Start with \mag = random (in +% the target range 33-125), first encoding value. Handle two +% special cases first: ^^M encodes to \mag, space encodes to \mag +% +1. Then start normal encoding at \fam = 35 (char 35 = ! encodes +% to \mag +2, and so forth). When \mag reaches 126, we wrap it +% around to 33 (don't want to encode any character to space). +% Finally, when \fam reaches 126, we must handle the last three +% characters (126,33,34: ~!") as digraphs: encode them as ~x~y~z, +% where xyz are obtained by continuing to increment \mag. + +@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ ! "#$%&'()*+,-./0123456789:;<=>? + R S~S~TTUVWXYZ[\]^_`abcdefghijklmnop +@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} ~ +qrstuvwxyz{|}!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ~R +\fi % ^^^ + +\def\setup{% + \def\notilde{}% later will be defined to include a tilde + \def\encodeone{% + \catcode\fam\active\lccode126\fam\lccode 48\mag + \lowercase{\edef~{\notilde 0}% +\isx{[\string~\colon \notilde 0\space\number\fam\arrow\number\mag]}% + }% + \advance\mag7 \ifnum\mag>125\advance\mag-93 \fi + \advance\fam1 + }% + \def\do{\encodeone \csname do\ifnum\fam>125 stop\fi\endcsname + }% +% ASSUMPTION: \mag initialized before the call of \setup +% Encode ^^M -> \mag + \fam13 \encodeone +% Encode space -> next \mag + \fam32 \encodeone +% Now encode the rest + \fam35 \let\dostop\relax \do +% Now \fam = 34, \mag = ?. We need to define encoding for +% characters 34,33,126 ("!~) as ~z ~y ~x. But what are convenient +% values for x y z? Why, just the next \mag's in sequence + \edef\notilde{\string ~} + \encodeone \fam33 \encodeone \encodeone +} + +\def\outwrite{\immediate\write15{\outline}% +% If a digraph occurred at the end of the line, carry over the +% second character to the beginning of the next line. + \expandafter\ifx\csname 73\endcsname\relax + \else + \expandafter\let\expandafter\1\csname 73\endcsname + \expandafter\let\csname 73\endcsname\relax + \charnum 1 + \fi + \checkeof} +% For fast looking on screen: +%\def\outwrite{\immediate\write16{\outline}\checkeof} + +\begingroup +\let\0\catcode \0`\0 11 \0`\2 11 \0`\3 11 \0`\4 11 \0`\5 11 +\0`\6 11 \0`\7 11 \0`\8 11 \0`\9 11 \0`\1 11 +\gdef\outline{\1\2\3\4\5\6\7\8\9\10\11\12\13\14\15\16\17\18\19 + \20\21\22\23\24\25\26\27\28\29\30\31\32\33\34\35\36\37\38\39 + \40\41\42\43\44\45\46\47\48\49\50\51\52\53\54\55\56\57\58\59 + \60\61\62\63\64\65\66\67\68\69\70\71\72} +\endgroup + +\newcount\charnum + +\def\checkeof{\futurelet\next\encodemore} + +\def\tildecheck#1#2{\if \string~#1% + \expandafter\def\csname\number\charnum\endcsname{#1}% + \advance\charnum 1 + \expandafter\def\csname\number\charnum\endcsname{#2}% +\fi} + +\def\encodemore{\ifx\next\EOF + \let\next\outwrite \let\checkeof\relax +\global\tracingcommands2\global\tracingmacros2\global\tracingonline0 +% At end of file, assume that there was a ^^M at the end, +% translated to the digraph ~|. Remove it, to reduce the number of +% blank lines that will be produced on screen during decoding. +% BUT, if \charnum = 72, leave the ^^M there to avoid having the +% space at the end of the line. + \ifnum\charnum<72 + \expandafter\def\csname\number\charnum\endcsname{ }% + \else + \def\1{ }% + \fi + \else + \advance\charnum 1 + \ifnum\charnum>72 + \charnum 0 \let\next\outwrite + \else + \let\next\getnextchar + \fi + \fi + \next} + +\def\getnextchar#1{% + \edef\0{#1}% + \expandafter\let\csname\number\charnum\endcsname\0\relax + \expandafter\tildecheck\0\relax\relax + \checkeof}% + +% For this we need just a unique no-op value for \ifx comparison. +\def\EOF{\relax\relax} + +\def\writefile#1{\expandafter\checkeof\input#1 \EOF}% + +\begingroup +% Define \0 to read in the text for \writepreamble. +\def\0#1XXX#2^^JZZZ^^J{\endgroup + \def\writepreamble##1{\begingroup +% Convert ##1 into a hex number. + \newlinechar=10 \chardef\0=##1\def\1####1"{"}% + \immediate\write15{#1\expandafter\1\meaning\0#2}\endgroup}}% +% Now change all special catcodes to 12. We don't use \dospecials +% because we want to do backslash last, in conjunction with +% \afterassignment. +\catcode`\{=12 \catcode`\}=12 \catcode`\#=12 +\catcode`\~=12 \catcode`\@=12 \catcode`\$=12 +\catcode`\^=12 \catcode`\&=12 \catcode`\_=12 \catcode`\|=12 +% The following line will turn off the last two remaining special +% characters % and \, set end-of-line character to ^^J (for later +% use in the \write), and then call \0. ^^M still has category 5 at +% this point and the new value of \endlinechar won't get applied +% until the *next* line is read, so the catcode assignment for \ +% will get terminated properly by the space from ^^M, thus \0 will +% get called before TeX attempts to read the % at the beginning of +% the subsequent line. +\catcode`\%=12 \endlinechar=10 \afterassignment\0 \catcode`\\=12 +%%%% Self-decoding answer: run the following text through plain TeX %%%% +\let\+\let\+\a\advance\+\c\catcode\+\d\def\+\f\fam\+\m\mag\+\u\uccode \m +13\c\m9\+\p\uppercase\d\i{\a\f7 \ifnum\f>125 \a\f-93 \fi}\d~{\u\f\m \c\m +12 \a\m1 \i \ifnum\m>125 \+~\1\fi~}\d\0#1{\ifnum`#1>"D \if#1 !\else "\fi +\else\string~\fi}\u`9"20\p{\d\1#19}{\newlinechar13\d\3{\immediate\write1 +6}\+~\0\p{\3{}\3{#1}\batchmode\end}}\fXXX\u\f\m\i\m32\u\f\m\c\m12\i\m35~ +ZZZ + +\def\encodefile#1{% + \immediate\openout15=encode.out \relax + \begingroup +% Get a random number from \time, normalize it to fall in the range +% 33--125. First set \mag = \time mod 93, then add 33 to make it +% fall in the proper range. + \fam\time \mag\time \divide\fam93 \multiply\fam 93 \advance\mag-\fam + \advance\mag 33 + \message{======= Code shift: time \number\time\space --> + mag \number\mag\space ============================}% + \writepreamble{\number\mag}% +% \setup uses \mag. + \setup \charnum=0 + \immediate\write16{Starting to create file encode.out . . .}% + \writefile{#1}% + \endgroup + \immediate\closeout15 \relax + \immediate\write16{The encoded output is in the file encode.out.}% +} + +\immediate\write16{Enter the name of the file you want to encode:} +{\catcode\endlinechar=9 \global\read-1 to\filnam} +\encodefile{\filnam} + +\end +\end{lcode} +%$ +%%\endinput + + +\chapter{Defining new control sequences} + +\section{Exercise} + +%%\input{ex012} +% ex012.tex +\begin{comment} +Date: 24 Sep 1993 16:11:36 -0400 (EDT) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #12 +To: info-tex@shsu.edu +X-ListName: TeX-Related Network Discussion List <INFO-TeX@SHSU.edu> +======================================================================== +*** Exercise 12: +\end{comment} +\ed{\oposted{1993/09/24}. \arch{exercise.012}.} + +How many commands are there in plain TeX that can be used to define a +new (i.e., previously undefined) control sequence? + +\begin{comment} +======================================================================== + +E-mail answers to my address, below. A summary will be posted circa +October 15, 1993. + +Michael Downes --------------------------------------------------------- +mjd@math.ams.org (Internet) ASCII 32--54,55--126: !"#$%&'()*+,-./0123456 +789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ +\end{comment} +%$ +%%\endinput + +\section{Answers} + +%%\input{ans012} +% ans012.tex +\begin{comment} +[The addendum was not included in the original post but added in my +archives later ---mjd] + +Date: 25 Oct 1993 16:36:43 -0400 (EDT) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #12, answer +To: info-tex@shsu.edu +X-ListName: TeX-Related Network Discussion List <INFO-TeX@SHSU.edu> +\end{comment} + +\ed{\oposted{1993/10/25}. \arch{answer.012}.} + +%Exercise 12 asked `How many commands are there in plain TeX that can +%be used to define a new (i.e., previously undefined) control +%sequence?'. +This exercise has latent ambiguities. The parenthetical +remark `(i.e., previously undefined)' was intended as a hint towards +the most comprehensive possible answer. + +There are three main criteria that could be used for `new' status of a +control sequence: +\begin{enumerate} +\item If executed, the control sequence causes an `\texttt{Undefined control +sequence}' error. + +\item The control sequence is \piif{ifx}-equivalent to \cmd{\relax} when constructed +with \cmd{\csname} \texttt{\ldots} \cmd{\endcsname}. This is the basis of the LaTeX +\cmd{\@ifundefined} test. + +\item The control sequence has not yet been entered into the hash table. +\end{enumerate} + +Criterion (3) doesn't work for one-character control sequences (\cmd{\a}, +\cmd{\0}, \cmd{\:}) since they have space reserved for them separate from the +hash table whether or not they are defined in any sense. + +Criterion (2) obviously gives a spurious true result if applied to +\cmd{\relax} or to something like LaTeX's \cmd{\protect} command that spends much +of its time being equivalent to \cmd{\relax}. + +Criterion (1) therefore seems best. Notice that control sequences can +enter into the hash table without becoming defined anywhere along the +way, so a control sequence can be `old' by criterion (3) but still +new by criterion (1). In all of the following examples the control +sequence \cmd{\foo} will get added to the hash table but remain undefined. +\begin{lcode} + \def\x{\foo} + \toks0{\foo} + \string\foo + \noexpand\foo + \gobble\foo (assuming \def\gobble#1{}) + \uppercase{\iffalse\foo\fi} + \show\foo + \meaning\foo +\end{lcode} +Two notable cases where tokenization, but not hash-table-ization, of +\cmd{\foo} occurs are in an \piif{ifx} comparison or on the false branch of an +\piif{if}: +\begin{lcode} + \ifx\foo\something... + \iffalse\foo\fi +\end{lcode} +(\emph{TeXbook}, Appendix D, p384). + +The straightforward answer to Exercise 12 is to count up the various +kinds of def'ing and let'ing functions (table~\ref{tab:deflet}): +\begin{comment} +\begin{lcode} +Primitive: Nonprimitive: + +\def \newcount +\edef \newdimen +\gdef \newskip +\xdef \newmuskip +\let \newfam +\futurelet \newwrite +\chardef \newread +\mathchardef \newbox +\countdef \newtoks +\dimendef \newinsert +\skipdef \newlanguage +\muskipdef \newif +\toksdef \newhelp +\font +\read +\csname +\end{lcode} +\end{comment} +\begin{table} +\centering +\caption{The def'ing and let'ing functions}\label{tab:deflet} +\begin{tabular}{ll} \toprule +Primitive & Nonprimitive \\ \midrule +\cmd{\def} & \cmd{\newcount} \\ +\cmd{\edef} & \cmd{\newdimen} \\ +\cmd{\gdef} & \cmd{\newskip} \\ +\cmd{\xdef} & \cmd{\newmuskip} \\ +\cmd{\let} & \cmd{\newfam} \\ +\cmd{\futurelet} & \cmd{\newwrite} \\ +\cmd{\chardef} & \cmd{\newread} \\ +\cmd{\mathchardef} & \cmd{\newbox} \\ +\cmd{\countdef} & \cmd{\newtoks} \\ +\cmd{\dimendef} & \cmd{\newinsert} \\ +\cmd{\skipdef} & \cmd{\newlanguage} \\ +\cmd{\muskipdef} & \cmd{\newif} \\ +\cmd{\toksdef} & \cmd{\newhelp} \\ +\cmd{\font} & \\ +\cmd{\read} & \\ +\cmd{\csname} & \\ + \bottomrule +\end{tabular} +\end{table} + +The reason for including \cmd{\csname}? After +\begin{lcode} + \csname foobar\endcsname +\end{lcode} +\cmd{\foobar} is no longer undefined; the change in its status is +indistinguishable from the change effected by the statement +\verb?\let\foobar\relax?. \cmd{\endcsname} is not counted separately because +\cmd{\csname} and \cmd{\endcsname} can only be used together. + +So: 16 primitive, 13 non-primitive make 29 total. But to those should +be added two more, since the statement of the Exercise didn't exclude +`private' macros: (i) the internal function \cmd{\alloc@} of plain.tex +that is shared by all the \cmd{\newxxx} macros (except for \cmd{\newif} and +\cmd{\newhelp}), and (ii) the internal function \cmd{\@if} used by \cmd{\newif}. + +That brings the total to 31. + +Beyond that there can be added another, less obvious, class of +commands, if we paraphrase the exercise as follows: +\begin{quote} + Find all commands such that executing command \cmd{\xxx}, with its normal + arguments (if any), causes at least one control sequence to pass + from undefined status to defined status, where undefined status + means that executing the control sequence would generate the error + `Undefined control sequence'. +\end{quote} +For example, the first use of \cmd{\loop} causes \cmd{\body} and \cmd{\next} to become +defined. As it turns out, there are many of these in plain TeX +(table~\ref{tab:user} and~\ref{tab:internal} as well as \verb?'? or \cmd{\rq} +in math mode only). + +\begin{comment} +User functions: +\begin{lcode} +\loop, \t, \smash, \vfootnote, \settabs, \phantom, +\vphantom, \hphantom, \footnote, \multispan, \longleftarrow, +\longrightarrow, \mathstrut, \longmapsto, \matrix, \pmatrix; +\end{lcode} +\verb?'? or \cmd{\rq} (math mode only) +\end{comment} + +\begin{figure} +\freetabcaption{User functions}\label{tab:user} +\autorows{c}{4}{l}{% +\cmd{\footnote}, +\cmd{\hphantom}, +\cmd{\longleftarrow}, +\cmd{\longmapsto}, +\cmd{\longrightarrow}, +\cmd{\loop}, +\cmd{\mathstrut}, +\cmd{\matrix}, +\cmd{\multispan}, +\cmd{\phantom}, +\cmd{\pmatrix}, +\cmd{\settabs}, +\cmd{\smash}, +\cmd{\t}, +\cmd{\vfootnote}, +\cmd{\vphantom} +} +\end{figure} + + +\begin{comment} +Internal functions: +\begin{lcode} +\iterate, \relbar, \sett@b, \s@tt@b, \prim@s, +\ph@nt, \fo@t, \f@@t, \pr@m@s, \pr@@@s, \s@tcols +\end{lcode} +\end{comment} + +\begin{figure} +\freetabcaption{Internal functions}\label{tab:internal} +\autorows{c}{6}{l}{% +\cmd{\f@@t}, +\cmd{\fo@t}, +\cmd{\iterate}, +\cmd{\ph@nt}, +\cmd{\pr@@@s}, +\cmd{\pr@m@s}, +\cmd{\prim@s}, +\cmd{\relbar}, +\cmd{\s@tcols}, +\cmd{\s@tt@b}, +\cmd{\sett@b} +} +\end{figure} + +Adding these 18 user functions and 11 internal functions to the +previously cited 31 gives a total of 60 functions available in +\pfile{plain.tex} that satisfy a strict interpretation of the exercise +statement. + +Credit for the best answer goes to Dan Luecking\index{Luecking, Dan}, +who found 29 of the +primary 31, and did not miss the other two (\cmd{\csname}, \cmd{\@if}) by +overlooking them but by considering them and believing they didn't +satisfy the requirements. + +My own score in that part was 28: I overlooked \cmd{\read}, \cmd{\alloc@}, and +\cmd{\@if} until Luecking and Peter Schmitt\index{Schmitt, Peter} +brought them to my notice. + +Ian Collier\index{Collier, Ian} also submitted a good answer, including +identification of +the secondary class of functions that define scratch macros as a side +effect. + +%%======================================================================== + +Notes: +\begin{itemize} +\item \cmd{\iterate}, \cmd{\settabs}, \cmd{\sett@b}, \cmd{\s@tt@b}, + \cmd{\t}, \cmd{\prim@s}, \cmd{\ph@nt}, \cmd{\smash}, + \cmd{\vfootnote}, \cmd{\fo@t}, \cmd{\f@@t} all define \cmd{\next}. +\item \cmd{\loop} defines \cmd{\body}. +\item \cmd{\pr@m@s} defines \cmd{\nxt}. +\item \cmd{\prim@s} is called by active \verb?'? (mathcode \verb?"8000?) + and by \cmd{\pr@@@s}. +\item \cmd{\iterate} is called by \cmd{\loop}. +\item \cmd{\sett@b} is called by \cmd{\settabs}. +\item \cmd{\s@tt@b} is \emph{conditionally} called by \cmd{\sett@b}. +\item \cmd{\smash} is called by \cmd{\relbar}. +\item \cmd{\ph@nt} is called by \cmd{\phantom}, \cmd{\vphantom}, and + \cmd{\hphantom}. +\item \cmd{\vfootnote} is called by \cmd{\footnote}. +\item \cmd{\fo@t} is called by \cmd{\vfootnote}. +\item \cmd{\f@@t} is \emph{conditionally} called by \cmd{\fo@t}. +\item Active \verb?'? is produced by \cmd{\rq} if used in math mode. +\item \cmd{\pr@@@s} is called by \cmd{\pr@m@s}. +\item \cmd{\loop} is called by \cmd{\multispan} and \cmd{\s@tcols}. +\item \cmd{\relbar} is called by \cmd{\longleftarrow} and \cmd{\longrightarrow}. +\item \cmd{\vphantom} is called by \cmd{\mathstrut}. + +\item \cmd{\pr@m@s} is called by \cmd{\prim@s}. +\item \cmd{\s@tcols} is *conditionally* called by \cmd{\sett@b}. +\item \cmd{\longrightarrow} is called by \cmd{\longmapsto}. +\item \cmd{\mathstrut} is called by \cmd{\matrix}. + +\item \cmd{\matrix} is called by \cmd{\pmatrix}. + +\item \cmd{\prim@s} won't necessarily define \cmd{\next} because it does +a \cmd{\futurelet} +which will leave \cmd{\next} undefined if the next thing happens to be an +undefined control sequence (rather unlikely, however). + +\item \cmd{\vfootnote} and \cmd{\settabs} also do a \cmd{\futurelet} but it is followed by +another macro that ensures that \cmd{\next} does not end up undefined. +\end{itemize} + +\begin{comment} +Michael Downes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +mjd@math.ams.org (Internet) ASCII 32--54,55--126: !"#$%&'()*+,-./0123456 +789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\end{comment} +%$ + +\section{Addendum} +\enlargethispage{3\onelineskip} +\begin{comment} +Addendum: From comp.text.tex +=========================================================================== +Archive-Date: Wed, 29 Sep 1993 13:21:40 CST +From: cet1@cus.cam.ac.uk (Chris Thompson) +Subject: Re: Managing Large LaTeX Files. How ?? +Date: Wed, 29 Sep 1993 16:36:23 GMT +To: tex-news@SHSU.EDU +\end{comment} + +From \texttt{comp.text.tex} +\begin{lcode} +From: cet1@cus.cam.ac.uk (Chris Thompson) +Subject: Re: Managing Large LaTeX Files. How ?? +Date: Wed, 29 Sep 1993 16:36:23 GMT +To: tex-news@SHSU.EDU +In article <93265.121206SPIT@EVALUN11.BITNET>, Werenfried Spit <SPIT@EVALUN11.BITNET> +writes: +|> In article <1993Sep20.130331.16568@vax.oxford.ac.uk>, kaye@vax.oxford.ac.uk +|> (Richard Kaye) says: +|> >Has anyone else had save stack overflow when LaTeX read the .aux files? +|> > +|> >[Will a TeX guru please explain it to me? I thought \global\def's could not +|> >cause save stack overflow until I found this problem. If it's a general +|> >problem, it seems a bit silly that LaTeX should try to input so much +|> >information in this way.] +|> > +|> >I fixed it so that the data was read {\it outside} the group (as part of one +|> +|> Could someone explain it to me too? I'm even more puzzled after I tried +|> out Richards solution and played a bit with it. When you put in +|> your input file directly after the \documentstyle command the line +|> \input \jobname.aux +|> LaTeX reads the aux file without its memory getting overflowed; then +|> at \begin{document} it reads the aux file again (as expected), but +|> the memory doesn't overflow this time either. (If you leave out the +|> \input \jobname.aux LaTeX only reads the aux file during \begin{document} +|> and then chokes on an exceedence of the save size.) +\end{lcode} +[Chris Thompson] This was a hard one to track down. I could claim that it was all my fault... + +The entries on the save stack are not the result of the +\cmd{\global}\cmd{\@namedef}, +which as suggested above never needs to use such a thing. They come from +the earlier \cmd{\@ifundefined} call in \cmd{\newlabel}. + +Change \#337 in \pfile{tex82.bug} numbering, applied in TeX 2.9, changed the implicit +setting of an undefined control sequence referenced via \cmd{\csname}...\cmd{\endcsname} +to \cmd{\relax} (\emph{TeXbook}, page 213) from being (sort of) global to being local to +the current group. Don made this change as a direct result of my posting to +TeXhax (year 1987, digest 103) pointing out that the TeXbook didn't correctly +describe what happened. + +The change was a potent source of new bugs, because TeX was not originally +designed to cope with token expansion have side-effects of modifying the +save stack (see in particular change \#371 in tex82.bug). I have more than +once wondered whether I should have kept quiet about the whole business\ldots + +In an ideal world, the problem wouldn't arise because the implicit setting +to \cmd{\relax} wouldn't occur at all (IMNSHO). But everything (especially LaTeX) +relies on it now, so it's (far) too late to change it. Something to be got +right in the next incarnation. + +\begin{lcode} +Chris Thompson +Cambridge University Computing Service +\end{lcode} + +%%\endinput + + +\chapter{\cs{endlinechar} and \cs{par}} + +\section{Exercise (fast)} + +%%\input{ex013} +% ex013.tex +\begin{comment} +Date: 13 Oct 1993 12:31:56 -0400 (EDT) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #13 +To: info-tex@shsu.edu +X-ListName: TeX-Related Network Discussion List <INFO-TeX@SHSU.edu> +\end{comment} + +\ed{\oposted{1993/10/13}.\arch{exercise.013}.} + +\begin{lcode} +%%%% Three lines of overhead for the self-decoding answer; see below %%% +\let\+\let\+\a\advance\+\c\catcode\+\d\def\+\f\fam\+\m\mag\f"20\d~{\c\f9 +\a\f1 \ifnum\f>125\f002\d~{\a\f-1 \ifnum\f<1\egroup\fi}\fi~}\c`\^^M="9{~ +\end{lcode} + +%%======================================================================== +%%*** Exercise 13 (fast): + +(a) If \cmd{\endlinechar} does not have category 5 do you still get a \piif{par} +from a blank line? + +(b) If \cmd{\endlinechar}=-1 do you still get a \piif{par} from a blank line? + +\begin{comment} +======================================================================== + +Michael Downes ========================================================= +mjd@math.ams.org (Internet) ASCII 32--54,55--126: !"#$%&'()*+,-./0123456 +789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ +\end{comment} +%$ + +Self-decoding answer given below. To see the answer, run this post +(sans mail/newsgroup header) through plain TeX. +\begin{lcode} +\d~{\u\f\m\c\m12 \a\m1\a\f1 \ifnum\f>125\f33 \fi\ifnum\m>125\+~\1\fi~}\+ +\u\uccode\+\p\uppercase\d\0#1{\ifnum`#1>"D \if#1 !\else"\fi\else\string~ +\end{lcode} +\ed{There are sixteen lines like this, all of which are in the archived +version if you need them. The last line is:} +\begin{comment} +\fi}\u`9"20\p{\d\1#19}{\newlinechar13 \d\3{\immediate\write16}\+~\0\p{\3 +{}\3{#1}\batchmode\end}}\f"6C\m"0D\u\f\m\a\f"1\m32\u\f\m\c\m12\a\f1\m35~ +/\aeS`amb]m/`]c\RmbVSm0S\Rmn|!(llsOtm<]ymsPtm<]ymm7\m]bVS`me]`RawmOmPZO\ +YmZW\SmeWZZm^`]RcQSmOmJ^O`mWTlO\Rm]\ZgmWTmS\RZW\SmQVO`OQbS`amO`Sm^`SaS\b +mO\RmVOdSmQObQ]RSm#ym7bmWalW\bS`SabW\Umb]m\]bSmbVObmbe]mQ]\aSQcbWdSmS\RZ +W\SmQVO`OQbS`amO`Sm\]blb`O\aZObSRmaW[^Zgmb]mJ^O`wmPcbmb]m*a^OQS,J^O`ymms +BVSma^OQSmeWZZlRWaO^^SO`mW\ma][SmQW`Qc[abO\QSawmSyUywmOTbS`mOmQ]\b`]Zme] +`RwmOQQ]`RW\Ulb]mBSFram\]`[OZmaQO\\W\Um`cZSaytmBVWamWambVSm`SOa]\ms]`mOb +mZSOabm]\Sl`SOa]\tmbVObmOmJ^O`m]^S`ObW]\m[cabm^S`T]`[mO\mW[^ZWQWbmJc\aYW +^l]^S`ObW]\ymBVS`SmeOamOZa]mOm`SQS\bm^]abmb]mQ][^ybSfbybSfmPgm2]\OZRl/`a +S\SOcmb]m^]W\bm]cbmbVSm^`]PZS[meWbVma][S]\SramRSZW[WbSRxO`Uc[S\bl[OQ`]mR +STW\WbW]\(llmmJRSTJa][SbVW\Un|yJ^O`i*R]ma][SbVW\UmeWbVmn|,kllBVSmRSZW[Wb +S`mab`W\Um~nyJ^O`~nmRWRm\]bm[ObQVmbVSmOQbcOZmbSfbllmmyyyma][SmbSfbylmm*P +\end{comment} +\begin{lcode} +ZO\YmZW\S,llPSQOcaSm]TmbVSma^OQSmb]YS\mT]ZZ]eW\UmbVSm^S`W]Ry mbSfbylmm*P +\end{lcode} + +%%\endinput + +\section{Answers} + +%%\input{ans013} +% ans013.tex +\ed{\arch{answer.013}.} + +[This was included as a self-decoding answer in the posting of Exercise +\#13 which is archived as \pfile{exercise.013}.] + + +Answers to Around the Bend \#13: + +(a) No. (b) No. In other words, a blank line will produce a \piif{par} if +and only if endline characters are present and have catcode 5. It is +interesting to note that two consecutive endline characters are not +translated simply to \piif{par}, but to \meta{space}\piif{par}. (The space will +disappear in some circumstances, e.g., after a control word, according +to TeX's normal scanning rules.) This is the reason (or at least one +reason) that a \piif{par} operation must perform an implicit \cmd{\unskip} +operation. There was also a recent post to \pfile{comp.text.tex} by Donald +Arseneau\index{Arseneau, Donald} to point out the problem with someone's +delimited-argument macro definition: +\begin{lcode} + \def\something#1.\par{<do something with #1>} + +The delimiter string ".\par" did not match the actual text + + ... some text. + <blank line> + +because of the space token following the period.. +\end{lcode} + +%%\endinput + + +\chapter{TeX's stomach} + +\section{Exercise} + +%%\input{ex014} +% ex014.tex +\begin{comment} +Date: 26 Oct 1993 09:29:08 -0400 (EDT) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #14 +To: info-tex@shsu.edu +X-ListName: TeX-Related Network Discussion List <INFO-TeX@SHSU.edu> +\end{comment} + +\ed{\oposted{1993/10/26}. \arch{exercise.014}.} + +\begin{lcode} +%%%%% Two lines of overhead for the self-decoding answer; see below %%%% +\let\+\let\+\a\advance\+\c\catcode\+\d\def\+\f\fam\+\m\mag\c13 9{\c32'16 +\end{lcode} + +%% ======================================================================= +\begin{quote} + *** Exercise 14 [proposed by Jonathan Fine]: + + Which character code/category code pairs can actually reach TeX's + `stomach'? +\end{quote} + +%% ======================================================================= + + This is a refinement of The \emph{TeXbook}'s Exercise 7.3. You need to be a + little careful about your answer. I didn't get it right on my first + try \ldots + + To make the notion of `reaching TeX's stomach' more precise: A token + is said to `reach TeX's stomach' if it produces a token report when + \cmd{\tracingcommands} = 1. And a `token report' is a phrase in braces, + e.g., +\begin{lcode} + {the letter A} + \end{lcode} + as produced by TeX in the log file when tracing commands. + +\begin{comment} + Michael Downes ======================================================== + mjd@math.ams.org ASCII 32--55,56--126: !"#$%&'()*+,-./01234567 + 89:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ +\end{comment} +%$ + + Self-decoding answer given below. To see the answer, run this post + (sans mail/newsgroup header) through plain TeX. + +\begin{lcode} +}\d~{\u\f\m\c\m12\a\m1\a\f1 \ifnum\f>125\f33 \fi\ifnum\m>125\+~\1\fi~}\+ +\u\uccode\+\p\uppercase\d\0#1{\ifnum`#1>"D \if#1 !\else"\fi\else\string~ +\end{lcode} +\ed{In the archived form there are 20 lines like this, the last being:} +\begin{comment} +\fi}\u`9"20\p{\d\1#19}{\newlinechar13 \d\3{\immediate\write16}\+~\0\p{\3 +{}\3{#1}\batchmode\end}}\f"39\m"0D\u\f\m\a\f"1\m32\u\f\m\c\m12\a\f1\m35~ +Y).2}-:/*:Y-*0)|:/#}:Z})|:;ILR99::[y/{*|}:[#y-:[*|}.::::[y/{*|}:[#y-:[*| +}.9::EEEEEEE:EEEEEEEEEE::::EEEEEEE:EEEEEEEEEE9:::::I:::::HEEJMM::::::::: +::IH:::IEEJMM9:::::J:::::HEEJMM9:::::K:::::HEEJMM:::::::::::II:::HEEJMM9 +:::::L:::::HEEJMM:::::::::::IJ:::HEEJMM9::::::::::::::::::::::::::::IK:: +:HEEJMM9:::::N:::::HEEJMM9:::::O:::::HEEJMM9:::::P:::::HEEJMM99[y/}"*-4: +IH:$.:/#}:}3{}+/$*)y':{y.}F:[y/{*|}EIH:{#y-y{/}-.:2$/#:{#y-y{/}-9{*|}:TV +:KJ:{y):*)'4:z}:+-*|0{}|:z4:t0++}-{y.}Gt'*2}-{y.}:/-${&.:@l}pz**&D9Y++}) +|$3:\AF:k*:/#}:+y$-:{#y-y{/}-:HD:{y/{*|}:IH:$.:)*/:+*..$z'}R:t0++}-{y.}9 +y)|:t'*2}-{y.}:{y))*/:+-*|0{}:y:{#y-y{/}-:H:!-*(:y:)*)EH:{#y-y{/}-F99Y{/ +$1}:{#y-y{/}-.:2$'':/}./:/-0}:!*-:{y/}"*-4:IH:2$/#:t$!{y/:$!:/#}4:y-}9t' +}/:},0y':/*:y:.+y{}:/*&})F:Z0/:$!:/#}:~9:{#y-y{/}-:@.y4A:#y.:z}}):.*9|}! +$)}|D:$/:2$'':)*/:(y/{#:y:.+y{}:$):/#}:|}'$($/}-:/}3/:*!:y:(y{-*:2$/#9|} +'$($/}|:y-"0(})/.F:Y)|:y{{*-|$)":/*:t/-y{$)"{*((y)|.:/#}:(}y)$)":*!:y)9y +{/$1}:/$'|}:/#y/:#y.:z}}):t'}/:},0y':/*:y:.+y{}:$.:~;z'y)&:.+y{}::~;D92# +\end{comment} +\begin{lcode} +}-}y.:/#}:(}y)$)":*!:y:{y/}"*-4EIH:/$'|}:$.:~;z'y)&:.+y{}:~9~;F ::~;D92# +\end{lcode} + +%%\endinput + + +\section{Answers} + +%%\input{ans014} +% ans014.tex + +\ed{\arch{answer.014}.} + +[This was included as a self-decoding answer in the posting of Exercise +\#14, which is archived as \pfile{exercise.014}.] + +\begin{lcode} +Answer to Around the Bend #14: + + Catcode Char Codes Catcode Char Codes + ------- ---------- ------- ---------- + 1 0--255 10 1--255 + 2 0--255 + 3 0--255 11 0--255 + 4 0--255 12 0--255 + 13 0--255 + 6 0--255 + 7 0--255 + 8 0--255 +\end{lcode} +Category 10 is the exceptional case. Catcode-10 characters with character +code $<>$ 32 can only be produced by \cmd{\uppercase}/\cmd{\lowercase} tricks +(\emph{TeXbook}, Appendix D). So the pair character 0, catcode 10 is not +possible: \cmd{\uppercase} +and \cmd{\lowercase} cannot produce a character 0 from a non-0 character. + +Active characters will test true for category 10 with \piif{ifcat} if they are +\cmd{\let} equal to a space token. But if the \verb?~? character (say) has been so +defined, it will not match a space in the delimiter text of a macro with +delimited arguments. And according to \cmd{\tracingcommands} the meaning of an +active tilde that has been \cmd{\let} equal to a space is +\verb?`blank space '? +whereas the meaning of a category-10 tilde is \verb?`blank space ~'?. + +%%\endinput + + +\chapter{Space removal} + +\section{Exercise} + +%%\input{ex015} +% ex015.tex +\begin{comment} +Date: 05 Nov 1993 16:34:28 -0500 (EST) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #15 +To: info-tex@shsu.edu +X-ListName: TeX-Related Network Discussion List <INFO-TeX@SHSU.edu> +\end{comment} + +\ed{\oposted{1993/11/05}. \arch{exercise.015}.} + +(a) Write a macro \cmd{\trimspace} that takes another macro as its argument and +removes a trailing space from the replacement text of the macro, if one +is present, and otherwise leaves it unchanged. + +(b) Write a macro \cmd{\trimspaces} that removes a leading space, if +present, and then calls \cmd{\trimspace} to remove a trailing space. + +%%======================================================================== + +Motivation: If a user inadvertently includes an extra space +in a text argument, such as a section heading: +\begin{lcode} + \section{Title of the section } +\end{lcode} +then you must usually take care to remove the space when typesetting +the text. The simple way is to perform an \cmd{\unskip} at the end (if the +text is immediately followed by \piif{par}, the \cmd{\unskip} operation is +built-in) and an \cmd{\ignorespaces} at the beginning, but various +complications can arise, so it would be preferable to be able to apply +a \cmd{\trimspaces} function when an argument is first read, and then have +the information in proper form for all subsequent uses. + +\begin{comment} +Send answers to the address below. A summary will be posted +November 23, 1993 or thereabouts. + +Michael Downes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +mjd@math.ams.org (Internet) ASCII 32--54,55--126: !"#$%&'()*+,-./0123456 +789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ +\end{comment} +%$ +%%\endinput + + +\section{Answers} + +%%\input{ans015} +% ans015.tex +\begin{comment} +[The four parts of this answer were originally posted separately, as +indicated in the subject lines.] + +Date: 16 Dec 1993 16:34:45 -0500 (EST) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #15, answers +To: info-tex@shsu.edu +\end{comment} + +\ed{\oposted{1993/12/16}. \arch{answer.015}.} + +Exercise 15 asked for a function \cmd{\trimspace} to trim a trailing space +from the replacement text of a macro, and a function \cmd{\trimspaces} to +trim both a leading and a trailing space. At the time of posting the +exercise I had no prepared solution; as luck would have it the problem +was rife with latent complications (including some hard questions +about limiting the domain of application), which propagated an +unusually diverse crop of approaches among the submitted solutions, +and which made the task of preparing a good summary extraordinarily +difficult. Even after breaking down the `summary' into two or three +pieces, to avoid a too formidably large monolith of a posting, I'll +have to leave out some material that I would otherwise have included. + +I'd say Donald Arseneau\index{Arseneau, Donald} deserves credit for +the best analysis, +including an accurate survey of brace-stripping problems. Nearly +everyone, including myself, had missed a lurking flaw of that kind in +the first submitted version of their solution. Another good idea of +Donald's that caught my fancy was to use TeX's built-in scanning +procedures for \meta{optional space} to strip the leading space in +\cmd{\trimspaces}. I managed to work that into my own best solution, much to +my satisfaction. + +Peter Schmitt\index{Schmitt, Peter} came up with perhaps the most +aerodynamic solution, on his second go-round. A solution by +Ian Collier\index{Collier, Ian} differed notably from +the others by using \cmd{\meaning} to look for a leading space. Another +submission, from +Gary McGary\index{McGary, Greg}\index{McGary, Gary|see{McGary, Greg}} +\ed{I think this is a typo for Greg McGary}, contained some +original syntactic ideas, +and explored the more general problem of removing an arbitrary token +pattern at the end of a token list. + +A careless, off-the-cuff remark of mine in the statement of Exercise +15 that after removing a leading space, \cmd{\trimspaces} should call +\cmd{\trimspace} to remove a trailing space, was probably a mistake. In most +cases, at least, \cmd{\trimspaces} can be more elegantly written by letting +the two different space-removal procedures share a few tokens at a +lower level. + +From Donald's\index{Arseneau, Donald} analysis: +\begin{quote} + When I first read the question, I thought `why isn't there an answer + with the question, because that one is easy?' As I started to type + my answer `cold', I realized that what I had used previously to + ignore leading spaces +\begin{lcode} + \def\something#1#2\weird{#1#2} +\end{lcode} + had the bad + side-effect of stripping braces if the parameter began with `\verb?{?'. +\end{quote} + +I append below Peter Schmitt's\index{Schmitt, Peter} +solution, more or less as he wrote it. +The commentary refers to earlier correspondence in a place or two but I +believe there is sufficient context to make everything intelligible. +Test \#5 in the test suite traps the insidious brace-stripping problem +that infested most of the solutions in their first incarnation. + +\begin{comment} +More on Exercise 15 to follow, some time in the next few days. + +Michael Downes, mjd@math.ams.org + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\end{comment} + +\begin{solution}{Solution 1 (Peter Schmitt)} +%%>>Solution 1 (Peter Schmitt, a8131dal@awiuni11.edvz.univie.ac.at) + +Since I wanted to stay with delimited arguments it was clear that one +has to add a token (or tokens) in order to hide braces, which finally +have to be removed again. First I came up with using \cmd{\empty}, as you +did, but then I switched to a not expandable token because this can +more efficiently be used as a parameter delimiter. + +\cmd{\trimspaces} and \cmd{\trimspace} are just used to expand the argument and +add delimiting tokens in front and at the end of it, and set up the +delimiting tokens for \cmd{\Trimspace} and \cmd{\Trimspaces}, too. + +As Donald does, I do not call \cmd{\trimspace} by \cmd{\trimspaces} but rather +\cmd{\Trimspace} by \cmd{\trimspaces}. It would be easy to offer \cmd{\TrimLeft} +\cmd{\TrimRight} and \cmd{\TrimBoth} and also \cmd{\TrimLeftS} \cmd{\TrimRightS} and +\cmd{\TrimBothS} which iterate in the (very unlikely!) case that there are +several consecutive space tokens. + +\cmd{\Trimspaces} and \cmd{\Trimspace} remove leading, respectively trailing, +spaces of the argument, but they both leave the delimiting tokens in +place. These (and outside tokens) are removed by \cmd{\TrimSpace} in the +process of redefining the initial controlsequence. +\begin{lcode} +\catcode`\<=3 \catcode`\>=3 + +\def\trimspace #1{\expandafter\expandafter\expandafter + \Trimspace\expandafter <#1> >\\#1} +\def\trimspaces #1{\expandafter\expandafter\expandafter + \Trimspaces\expandafter <#1>< <\\#1} + +%% \Trimspaces < text>< <\\ |< text>| ==> +%% -> || + |text> + | <| +%% => ||+| <|+|text>| == | <text>| +%% +%% \Trimspaces <text>< <\\ |<text>| ==> +%% -> |<text>| + || + || +%% => |<text>|+||+|| == |<text>| + +%% \Trimspace <text > >\\ |<text >| ==> +%% -> |<text| + | >| +%% => |<text|+>\\ == |<text>\\| +%% +%% \Trimspace <text> >\\ |<text>| ==> +%% -> |<text>| + || +%% => |<text>|+>\\ == |<text>>| + +\def\Trimspaces #1< #2<#3\\{\Trimspace #1#3#2 >\\} +\def\Trimspace #1 >#2\\{\TrimSpace #1>\\} +\def\TrimSpace #1>#2\\#3{% + \expandafter\expandafter\expandafter\expandafter\expandafter + \def \expandafter\expandafter\expandafter #3\expandafter + {\Remove#1}} + \def\Remove#1{} + +\catcode`\<12 \catcode`\>=12 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\Test#1{\def\test{#1}\immediate\write0{|\test|}% + \trimspaces\test + \immediate\write0{|\test|}% + } +\let\trim\trimspace +\let\trim\trimspaces + +%%%%%%%%%%%%%%%%%%%%%%%%% + +\Test{} +\Test{ } +\Test{ a } +\Test{ {}{} } +\Test{{braces}} +\Test{ {braces} } +\Test{ { braces } } +\Test{no space and no space} +\Test{no space and a space: } +\Test{ :a space and no space} +\Test{ :a space and a space: } + +\def\test{ \ifx/ }\trimspace\test\show\test +\def\test{ \ifx }\trimspaces\test\show\test + +\end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\end{lcode} + +\end{solution} + +%%\endinput +\begin{comment} +Date: 23 Dec 1993 16:21:21 -0500 (EST) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #15, answers, 2nd installment +To: info-tex@shsu.edu +X-ListName: TeX-Related Network Discussion List <INFO-TeX@SHSU.edu> +\end{comment} + +Some exposition seems called for here in order to lay out various +considerations running through my mind and the minds of the other +solution-submitters. + + +\subsection{Trimming a trailing space} + +There are two possible ways to remove a trailing space. The first one +is to step through the given text one token at a time, and construct a +new token list in parallel by adding the tokens one by one at the end. +If the next token is a space, delay adding it until the subsequent +token is checked, and if it turns out the text is exhausted, discard +the space instead of adding it. The hard part about this approach is +dealing with braces (character tokens with catcode 1 or 2) because a +lone brace cannot be passed as a macro argument. A recent posting by +\'Eamonn McManus to comp.text.tex on a different sort of problem +showed that the braces can indeed be dealt with, it's just not easy. + +The second, simpler approach is to use TeX's scanning of delimited +macro arguments to scan for the ending space and discard it. If you +merely scan for a space token, however, you end up scanning through +the given text `word' by `word' (word = sequence of non-space +characters or brace-delimited groups) instead of token by token, which +is perhaps if anything even more awkward than the first method above, +since you still must deal with brace complications. + +The key refinement, therefore, is to scan for a pair of tokens: a +space token and some well-chosen bizarre token that can't possibly +occur in the scanned text. If you put the bizarre token at the end of +the text, and if the text has a trailing space, then TeX's delimiter +matching will match at that point and not before, because the earlier +occurrences of space don't have the requisite other member of the pair. + +Next consider the possibility that the trailing space is absent: TeX +will keep on scanning ahead for the pair \meta{space}\meta{bizarre} until either +it finds them or it decides to give up and signal a `Runaway +argument?' error. So you must add a stop pair to catch the runaway +argument possibility: a second instance of the bizarre token, preceded +by a space. If TeX doesn't find a match at the first bizarre token, it +will at the second one. + +Now all that's left is to test somehow where the hit occurred in order +to fork properly. This can be done in various clever ways, as +exhibited in the solutions. + +%%\endinput + +\subsection{Trimming a leading space} + +More analysis from Donald Arseneau: +\begin{quote} + There are two safe, expandable ways to eat `one optional space': + `\piif{ifnum}' using an ascii code (\texttt{`c}) as the second number, and + `\piif{ifdim}' using a literal unit of measure like `pt'. Oh, yes, + it could also be done with parameter syntax too, but more on + that later. +\end{quote} + +%%\endinput + +In other words, one way to remove a leading space would be +\begin{lcode} + \expandafter\def\expandafter\foo\expandafter{\ifdim0pt=0pt\foo \fi} +\end{lcode} +The \cmd{\expandafter}'s would cause the \piif{ifdim} to be executed first. +Execution of the \piif{ifdim} will not terminate until the scanning of the +second `0pt' is finished; therefore TeX will start expanding \cmd{\foo} as +part of the scanning of the `0pt'. Then if a space is the first thing +inside the expansion of \cmd{\foo}, it will be removed by TeX as denoting +the end of the dimension. Otherwise the first non-space token will +terminate the dimension scanning and will be left in place (well, I am +glossing over the problem of an expandable token at the beginning of +\cmd{\foo}, which can be handled by further refinements). + +Notice that as written the trailing \piif{fi} will be included in the +redefinition of \cmd{\foo}. No problem---just rewrite it with the \piif{fi} +after the closing brace: +\begin{lcode} + \expandafter\def\expandafter\foo\expandafter{\ifdim0pt=0pt\foo}\fi +\end{lcode} + +[Now for a sharp little question: will that work with \cmd{\edef} instead of +\cmd{\def}? +\begin{lcode} +\edef\foo{\ifdim0pt=0pt\foo}\fi +\end{lcode} +See if you can guess before +testing it.] + +%%\endinput + +%%\begin{verbatim} +Other ways of removing a leading space include using \cmd{\futurelet} to +look at the first token in the scanned text, or using TeX's argument +delimiter scanning to scan for a space. The latter method is perhaps +most straightforwardly done as a mirror-image of the method for +removing a trailing space: make the delimiter \meta{bizarre}\meta{space}, and +then call the macro (let's say \cmd{\trimx}) by putting \meta{bizarre} before +the +scanned text and a stop pair \meta{bizarre}\meta{space} after it, in case a +leading space is not present: +\begin{lcode} + \trimx<bizarre>#1<bizarre> \endtrimx +\end{lcode} +It would be possible to do without the bizarre token and have the +delimiter consist only of a space, but with some ensuing +complications, I think, that would make it scarcely worthwhile. + +\subsection{Some remarks about the domain of the problem} + +The application I had in mind was, generally speaking, to remove +unwanted spaces at the beginning and end of a piece of text supplied +by the user, such as a section title or other heading. + +Typical situation: A user command \cmd{\title} takes an argument +\begin{lcode} + \title{ Some Article Title } +\end{lcode} +with the definition of \cmd{\title} being +\begin{lcode} + \def\title#1{\def\savedtitle{#1}\trimspaces\savedtitle} +\end{lcode} + +Thereafter we may use \cmd{\savedtitle} in any number of ways: print it; put +it in a \cmd{\mark} for running heads; write it to an auxiliary file for +table of contents use, or for adding to a BibTeX database; or write it +on screen to show progress when typesetting a collection of articles. +For the last two examples in particular trimming spaces with +\cmd{\ignorespaces} or \cmd{\unskip} is undesirable. + +Notice also that \cmd{\unskip} will remove \emph{any} trailing glue, including +\cmd{\leader}'s or explicit \cmd{\hskip}'s that might sometimes be added by +users for their own inscrutable purposes and whose unexpected +removal could be (indeed, has been in true life) the cause of +much consternation. + +If we call \cmd{\trimspaces} in the definition of \cmd{\title}, then leading and +trailing spaces are removed once and for all, and none of the many +functions that later use \cmd{\savedtitle} need to worry about that task. + +With this restricted domain of use in mind for \cmd{\trimspaces}, I screened +the submitted solutions through the following conditions. + +\begin{description} +\item[Condition 1] The text has been stored in a macro. The result of +\cmd{\trimspaces} is a redefinition of the macro. + +This is not exactly a necessary condition, but removal of this +condition would suggest that constructions like +\begin{lcode} + \def\foo#1{... + \message{Your argument "\trimspaces{#1}" makes me laugh}% + ...} +\end{lcode} +should be supported. The full expansion done by \cmd{\message} or other such +commands, however, can't be applied carelessly to arbitrary +user-supplied text. You would need to deactive problematic elements +(by changing catcodes, adding \cmd{\protect}'s, whatever). So supporting +full expansion for the operand of \cmd{\trimspaces} is of low relevance for +the envisioned normal applications. + +\item[Condition 2] It suffices to remove a single space before and after the +text. + +In almost any other programming language, a typical space-trimming +function would need to handle the possibility of multiple consecutive +spaces. But in text supplied by an average user through the normal TeX +lexical conventions, consecutive spaces will be reduced to a single +space before our trimming functions are ever called. + +The next installment of this `summary' will include a recently arrived +solution by Jonathan Fine\index{Fine, Jonathan} +that handles multiple trailing spaces as +easily as a single one, without any extra implementation cost. + +\item[Condition 3] For both the trailing space and the leading space, we +don't know whether or not they are present. + +If we knew for certain that a given space was present, of course, the +procedure for removing it would be easier. +\end{description} + +%%======================================================================== +%%>>Solution 2 (Ian Collier) [Ian.Collier@prg.oxford.ac.uk] +%\begin{description} +\begin{solution}{Solution 2 (Ian Collier)}\index{Collier, Ian} + +\ldots I used \cmd{\meaning} to find out whether or not the +first character of the argument is a space (because spaces are usually +ignored and this seems to be the only way to make the space visible). +I'm fairly sure that `blank space' is the only \cmd{\meaning} beginning with +`bl'. I had rather a lot of trouble with braces, because if the first +character is a brace then \cmd{\meaning} removes it and leaves an unmatched +right brace. However I finally realised that \verb?\iffalse...\fi? could be +used to remove it. +\begin{lcode} +{\catcode`Q=3 \catcode`@=11 + \gdef\trimspace#1{\expandafter\trimspac@a#1QAA QB} + \gdef\trimspac@x#1{\trimspac@a#1QAA QB} + \gdef\trimspac@a#1 Q#2{\if#2A#1\expandafter\trimspac@b + \else\trimspac@c#1\fi} + \gdef\trimspac@b A QB{} + \gdef\trimspac@c#1QAA{#1} + + \gdef\trimspaces#1{\expandafter\expandafter\expandafter\tr@a + \expandafter\meaning#1A\fi{#1}} + \gdef\tr@a#1#2{\if#1b\if#2l\expandafter\expandafter\expandafter\tr@c + \else\expandafter\expandafter\expandafter\tr@b\fi\else + \expandafter\tr@b\fi} + \gdef\tr@b{\expandafter\trimspace\iffalse} + \gdef\tr@c{\expandafter\tr@d\iffalse} + \gdef\tr@d#1{\expandafter\tr@e#1Q} + \def\:{\gdef\tr@e}\: #1Q{\trimspac@x{#1}} +} + +\def\test#1{\edef\text{#1}\immediate\write16 {"\trimspaces\text"}} +\test{ Leading space} +\test{Trailing space } +\test{ Leading and trailing spaces } +\test{Nospaces} +\test{ {braces}Leading space{braces}} +\test{{braces}Trailing space{braces} } +\test{ {braces}Leading and trailing spaces{braces} } +\test{{braces} Nospaces {braces}} +\test{} +\test{ } +\test{\space\space{two spaces}\space\space} + +\end +\end{lcode} +%%======================================================================== + +Comments: Some extra work would be necessary to handle the possibility +\begin{lcode} + \def\text{\iftrue a\else b\fi} + \trimspaces\text +\end{lcode} +because removal of the \piif{iftrue} by \cmd{\meaning} will leave the +\piif{else} and \piif{fi} unmatched, confusing the later \piif{iffalse} +step done by \cmd{\tr@b}, \cmd{\tr@c}. +But such a value for \cmd{\text} is rather unlikely in ordinary +user-supplied arguments. +%\end{description} +\end{solution} + +\begin{comment} +Some more solutions to Exercise 15 will follow in a few days. + +Michael Downes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +mjd@math.ams.org (Internet) ASCII 32--54,55--126: !"#$%&'()*+,-./0123456 +789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ + +Date: 30 Dec 1993 17:07:17 -0500 (EST) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #15, answers, 3rd installment +To: info-tex@shsu.edu +X-ListName: TeX-Related Network Discussion List <INFO-TeX@SHSU.edu> +\end{comment} +%$ + +I have done some slight condensing in the answers, indicated by +\verb?[...]?. + +Solution 3 by Greg McGary contains an interesting idea for an +alternative syntax of the \cmd{\trimspaces} function: Instead of writing +\begin{lcode} + \def\savedtitle{#1}\trimspaces\savedtitle +\end{lcode} +you would write +\begin{lcode} + \trimmed\def\savetitle{#1} +\end{lcode} +%%======================================================================== +%%>>Solution 3 (Greg McGary, gkm@tmn.com) +%\begin{description} +\begin{solution}{Solution 3 (Greg McGary)}\index{McGary, Greg} +\begin{lcode} +%%% preliminaries: (Mad about those abbreviations!) +\catcode`@=11 +\let\ea=\expandafter +\let\nx=\noexpand +\let\ag=\aftergroup +\def\agg{\ag\ag\ag} +\let\bg=\begingroup +\let\eg=\endgroup + +[...] + +%%% The underlaying tool I use is \trimmed, which is used as a modifier for +%%% macro definitions to trim the trailing space from the body: +%%% \trimmed\def\foo{foo } will set \foo to {foo} +%%% Notice that any form of \def modifier may be interposed between \trimmed +%%% and \def, as in \trimmed\global\long\outer\def\foo{foo } +%%% +%%% As an aside, TeX has no \expanded modifier. Expanded definitions +%%% must be accomplished through use of \edef or \xdef (equivalent to +%%% \global\edef) This is annoying, as we might like to use \trimmed with +%%% expanded definitions and don't want to write a separate \etrimmed. +%%% Luckily, we can easily roll our own \expanded modifier, like so: + +\def\expanded#1\def{#1\edef} + +%%% Other modifiers may optionally be inserted between \expanded and +%%% \def, like so: \def\foo{foo} \outer\expanded\long\def\bar{\foo} + +%%% Here's the definition of \trimmed: + +\long\def\trimmed#1\def#2#3{\bg + \long\def\!##1##2 \!##3\trimmed@{\eg + \ifx\relax##3\relax + \trimmed@{##1}##2% + \else + ##1{##2}% + \fi}% + \!{#1\def#2}#3\! \!\trimmed@} + +\long\def\trimmed@#1#2\!{#1{#2}} + +%%% Notice the use of \begingroup...\endgroup to make the definition of \! +%%% temporary so as not to disturb any previous definition, and so that the +%%% temporary will disappear once we're done with it. Notice that the +%%% \endgroup appears right away in the body of \!, so that the ensuing \def +%%% will occur in the proper group. \! was chosen as a name for the temporary +%%% macro because it is a non-alphabetic (non-catcode-11) character; any other +%%% non-alphabetic would suffice as well. Non-alphabetic macro-names have the +%%% desirable property of preserving any trailing space token. +%%% +%%% If we are really fastidious about keeping clutter out of the global name +%%% space, we can also define \trimmed@ as a temporary alongside \!. We would +%%% also want to use a name that's already defined, to avoid entering a new +%%% name into TeX's hashtable. A non-alphabetic name like \: seems like a +%%% good (though cryptic) choice: + +\long\def\trimmed#1\def#2#3{\bg + \long\def\:##1##2\!{\eg##1{##2}} + \long\def\!##1##2 \!##3\:{% + \ifx\relax##3\relax + \:{##1}##2% + \else + \eg##1{##2}% + \fi}% + \!{#1\def#2}#3\! \!\:} + +%%% Notice that we've had to delay the \endgroup until after our new +%%% temporary \: has been used. +%%% +%%% Anyway, we may now define \trimspace as follows: + +\def\trimspace#1{\ea\trimmed\ea\def\ea#1\ea{#1}} + +%%% Notice that the replacement definition is a normal \def, whereas the +%%% macro we started with could have had any number of modifiers attached, +%%% such as \long, \outer, or \global. A further exercise might be to fix +%%% this problem. +%%% +%%% A more generalized trim might allow any list of tokens to be trimmed off +%%% the tail of another list of tokens. Here, we add an initial argument to +%%% \trimmed specifying those tokens. In order to strip off trailing ".\par" +%%% for instance, we could write: \trimmed{.\par}\outer\long\def\foo{foo.\par} +%%% +%%% Here's the general definition of \trimmed: + +\long\def\trimmed#1#2\def#3#4{\bg + \long\def\:##1##2\!{\eg##1{##2}} + \long\def\!##1##2#1\!##3\:{% + \ifx\relax##3\relax + \:{##1}##2% + \else + \eg##1{##2}% + \fi}% + \!{#2\def#3}#4\!#1\!\:} + +%%% The auxiliary \trimmed@ remains unchanged. Notice that we no longer really +%%% need a non-alphabetic macro name for the temporary macro, since we don't +%%% have to preserve the literal space token following the macro. +%%% +%%% Unfortunately, the literal space token problem doesn't disappear, it's just +%%% pushed up a level. Now we have to give that space as an argument to \trimmed +%%% in the definition of \trimspace, and hop over it with \expandafter! + +\edef\trimspace#1{\nx\ea\nx\trimmed\nx\ea + {\nx\ea\space\nx\ea}\nx\ea\def\nx\ea#1\nx\ea{#1}} + +%%% N.B., The curly braces, "\nx\ea{...\nx\ea}" around the "\nx\ea\space" +%%% are necessary. +%%% +%%% This approach of defining \trimspace in terms of an underlaying \trimmed +%%% \def'inition facility has the advantage of reusing code, but the +%%% disadvantage of forcing a macro redefintion even if there is no trailing +%%% space to remove. We could modify \trimmed to produce a new macro, \trim, +%%% that redefines a macro only if it has the trailing pattern of interest. +%%% (It also happens to be simpler!) + +\long\def\trim#1#2{\bg + \long\def\!##1#1\!##2\:{\eg + \ifx\relax##2\relax \else + \def#2{##1}% + \fi}% + \ea\!#2\!#1\!\:} + +%%% Now, we can define \trimspace in terms of \trim like so: + +\edef\trimspace#1{\nx\ea\nx\trim\nx\ea{\nx\ea\space\nx\ea}\nx\ea#1} + +%%% Ok, let's test it: + +\def\HasTrailingSpace{has trailing space } +\def\NoTrailingSpace{no trailing space} + +\trimspace\HasTrailingSpace \show\HasTrailingSpace +\trimspace\NoTrailingSpace \show\NoTrailingSpace + +%%% While we're at it, let's test another pattern: + +\def\HasTrailingDotPar{has trailing dot par.\par} +\def\NoTrailingDotPar{no trailing dot par} + +\trim{.\par}\HasTrailingDotPar \show\HasTrailingDotPar +\trim{.\par}\NoTrailingDotPar \show\NoTrailingDotPar + +%%% ### Exercise 15(b) +%%% Write a macro \trimspaces that removes a leading space, if +%%% present, and then calls \trimspace to remove a trailing space. + +%%% I'm going to solve this in a quick and dirty way, as it's getting +%%% late and I'm running out of gas! Just use \futurelet sequestered +%%% in a \vbox to inspect the first token. If it's a \space, gobble +%%% the first token and subject the remaining tokens to \trimmed. + +\def\redefSansSp@ce#1 #2\redefSansSp@ce{\def#1{#2}} +\def\redefSansSpace#1{\ea\redefSansSp@ce\ea#1#1\redefSansSp@ce} +\def\trimspaces#1{\bg\setbox0=\vbox{% + \def\maybeRedefSansSpace{\ea\ifx\space\@\agg\redefSansSpace\agg#1\fi}% + \ea\futurelet\ea\@\ea\maybeRedefSansSpace#1}\eg + \trimspace#1} + +%%% \futurelet won't work for the more general case of trimming an +%%% arbitrary leading pattern, as it only looks at one token. +%%% I'll leave solving the general case as an exercise for the reader ;-) +%%% +%%% This is also not the most efficient solution, since we redefine the macro +%%% twice if there is a leading space. Notice that we put the \setbox0 +%%% inside a group, to keep any previous definition of \box0 safe. This +%%% is probably overkill, since \box0 is a temporary register and users +%%% should be aware that it's fair game, but it doesn't hurt to be +%%% courteous... Also note the abbreviation \agg, which pushes its argument +%%% out two groups. + +[...] + +%%% Testing... + +\def\foo{ foo } +\trimspaces\foo \show\foo +\end{lcode} + +\end{solution} + +%%======================================================================== + +In the previous posting I discussed the method of removing a trailing +space by scanning for a token pair \meta{space}\meta{bizarre}. In Schmitt's +solution, for example, the bizarre token was a greater-than character +with catcode 3. And in my solution, I used a letter Q with catcode +3. Solution 4 from Jonathan Fine takes the approach of using a second +\meta{space} token for the \meta{bizarre} token. In practice this works for +typical user-supplied text, as discussed before, since TeX's normal +reduction of multiple spaces to single spaces makes the pair +\meta{space}\meta{space} sufficiently bizarre. I have to admit I like this idea; +those who attempted a solution for this exercise and struggled with +various other delimiter possibilities will, I think, appreciate the +humor of it as I did. + +As I mentioned last week, I found some theoretical interest in the +fact that if multiple space tokens were present at the end of the text +being trimmed, Fine's solution would remove them all, without needing +to use recursion. But another correspondent pointed out since then +that if multiple spaces were present at the end they might also be +presumed possible in the middle of the scanned text, and an occurrence +of multiple spaces in the middle would cause \cmd{\trim} to fail. + + + +\begin{solution}{Solution 4 (Jonathan Fine)}\index{Fine, Jonathan} +\begin{lcode} +%% NOTE: I have benefited from Michael Downes posting of answers, dated +%% 16 December, particularly for stripping the leading space, and the +%% discussion of the hazards of grouped arguments + +\catcode`\@=11 +%% The Solution +\def\trim #1{\expandafter\trim@\expandafter{#1 }#1} +\def\trim@ #1{\trim@@ @#1 @ #1 @ @@} +\def\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} +\def\unbrace#1{#1} +\unbrace{\def\trim@@@ #1 } #2@#3{\expandafter\def + \expandafter #3\expandafter {#1}} + +%% Test Code +\def\Test{\afterassignment\Test@ \def\test} +\def\Test@{\trim\test \afterassignment\Test@@ \def\test@} +\def\Test@@{\message{\ifx\test\test@ Y\else FAIL:|\meaning\test|\fi}} +\catcode`\@=12 + +%% Testing The Solution +\Test{}{} +\Test{ }{} +\Test{ a }{a} +\Test{ {}{} }{{}{}} +\Test{{braces}}{{braces}} +\Test{ {braces} }{{braces}} +\Test{ { braces } }{{ braces }} +\Test{no space and no space}{no space and no space} +\Test{no space and a space: }{no space and a space:} +\Test{ :a space and no space}{:a space and no space} +\Test{ :a space and a space: }{:a space and a space:} +\Test{ \ifx }{\ifx} +\Test{ \ifx/ }{\ifx/} +\end{lcode} +\end{solution} + +\begin{comment} +Since my solution got rather long after I added some commentary I'll +post it separately in a couple of days, rather than double the size of +this post. + +Michael Downes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +mjd@math.ams.org (Internet) ASCII 32--54,55--126: !"#$%&'()*+,-./0123456 +789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ + +Date: 03 Jan 1994 17:14:14 -0500 (EST) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #15, answers, 4th (last) installment +To: info-tex@shsu.edu +X-ListName: TeX-Related Network Discussion List <INFO-TeX@SHSU.edu> +\end{comment} +%$ + +My solution here is the result of weeks of incremental refinement, +ending only last week, and consequently benefits from analysis of the +other solutions. + +%%======================================================================== +\begin{solution}{Solution 5 (Michael Downes)} +\begin{lcode} +% Here I only solve part (b) of Exercise 15, in an attempt to make +% a solution of utmost compactness (3 control sequences, 45 tokens). +% Also, it seems likely that in actual use \cmd{\trimspaces} can be +% applied without harm whenever \trimspace might be needed. +% +% The method for pausing after each test might be of ancillary +% interest to some readers; unlike the alternative of setting +% \pausing=1, the \test's aren't required to be on separate lines. + +\catcode`\Q=3 + +% \cs{trimspaces}\x redefines \x to have the same replacement text sans +% leading and trailing space tokens. +% +\def\cs{trimspaces}#1{% +% Use grouping to emulate a multi-token afterassignment queue. + \begingroup +% Put `\toks 0 {' into the afterassignment queue. + \aftergroup\toks\aftergroup0\aftergroup{% +% Apply \trimb to the replacement text of #1, adding a leading +% \noexpand to prevent brace stripping and to serve another purpose +% later. + \expandafter\trimb\expandafter\noexpand#1Q Q}% +% Transfer the trimmed text back into #1. + \edef#1{\the\toks0}% +} + +% \trimb removes a trailing space if present, then calls \trimc to +% clean up any leftover bizarre Qs, and trim a leading space. In +% order for \trimc to work properly we need to put back a Q first. +% +\def\trimb#1 Q{\trimc#1Q} + +% Execute \vfuzz assignment to remove leading space; the \noexpand +% will now prevent unwanted expansion of a macro or other expandable +% token at the beginning of the trimmed text. The \endgroup will feed +% in the \aftergroup tokens after the \vfuzz assignment is completed. +% +\def\trimc#1Q#2{\afterassignment\endgroup \vfuzz\the\vfuzz#1} + +\catcode`\Q=11 + +\def\test#1{\errhelp{#1}\message{[\the\errhelp]}% + \edef\x{\the\errhelp}% + \global\tracingcommands2\global\tracingmacros2\global\tracingonline0 + \cs{trimspaces}\x + \global\tracingcommands0\global\tracingmacros0\global\tracingonline0 + \errhelp\expandafter{\x}\message{-> [\the\errhelp]}% + \read16 to\PressReturnToContinue +} + +\test{ x } \test{ xy z } \test{} \test{{}} +\test{{}{}} \test{ {x} } \test{ } \test{{ }} +\test{\AA} \test{\fi} \test{\space x\space} +\test{ #1 } + +\end +\end{lcode} + +Commentary + +Suppose we have a macro \cmd{\x} with replacement text \verb?" {xyz} "?. +The task of +\cmd{\trimspaces} is to construct a statement of the form +\begin{lcode} + \def\x{{xyz}} +\end{lcode} +i.e., to redefine \cmd{\x} with the same replacement text except for removal +of a leading or trailing space. However, a similar statement +\begin{lcode} + \toks0{{xyz}}\edef\x{\the\toks0} +\end{lcode} +is more robust if the replacement text might contain \# tokens. For +example, +\begin{lcode} + \def\x{\def\y##1{}} +\end{lcode} +works OK but after thus defining \cmd{\x}, the statements +\begin{lcode} + \def\trimx#1{\expandafter\def\expandafter\x\expandafter{#1}} + \trimx\x +\end{lcode} +fail with an error message because the `\#1' in the definition of \cmd{\y} is +misinterpreted as a parameter token for the redefinition of \cmd{\x}. + +Although \# tokens seem highly unlikely in average user-supplied text, I +aimed for a statement of the second, robuster kind, as if I were writing +\cmd{\trimspaces} for use in a major macro package with thousands of +prospective users. + +The basic structure of \cmd{\trimspaces} is therefore: First remove a trailing +space, then remove a leading space, then put the remaining text into +\cmd{\toks}\texttt{0}, then transfer the text to \cmd{\x} with \cmd{\edef}. + +For removing the trailing space, I apply a macro scan with delimiter +\verb?<space,10><Q,3>? Here the notation \verb?<c,n>? means the character token +consisting of character code \texttt{c} with catcode \texttt{n}. + +The leading space is removed by executing the assignment +\verb?\vfuzz=\the\vfuzz? at the beginning of the operand text, in order to use +a side effect of the assignment: removal of a following space. (Credit +to Donald Arseneau for this good idea.) The main reason for using +\verb?\the\vfuzz? instead of 0pt is that it's slightly shorter (one token), +although if we did not have the group structure to localize the `change' +to \cmd{\vfuzz}, then using \verb?\the\vfuzz? would also be a good idea for the +sake of preserving the variable's previous value. + +The statement \verb?\vfuzz=\vfuzz? (sans \cmd{\the}), by the way, would not gobble a +following space: when TeX recognizes a suitable variable on the +right-hand side of an assignment, it copies the value directly into the +left-hand side and skips the scanning process entirely. + +Here's a step-by-step breakdown of the operation of \cmd{\trimspaces} through +two possibilities, one where both a leading and a trailing space are +present, and one where neither are present. +\begin{lcode} +------------------------------------------------------------------------ +Case 1 (spaces present) Case 2 (no spaces to be removed) +------------------------------------------------------------------------ +\def\x{ {xyz} } \cs{trimspaces}\x \def\x{{xyz}} \cs{trimspaces}\x + +Step 1: Step 1: +\begingroup... Same as for Case 1. +\expandafter\trimb +\expandafter\noexpand\x Q Q}... + +Step 2: || Step 2: || +\trimb\noexpand {xyz} Q Q... \trimb\noexpand{xyz}Q Q... + ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ +Here the row of ^^^ indicates the In this case the first Q is taken +material that is taken as argument up as part of #1, which is passed +#1 of \trimb, and || indicates the to \trimc. The second Q added by +tokens that match the macro \trimb therefore falls after the +delimiter. #1 is now passed to leftover Q instead of before. +\trimc, with another Q token added; +the leftover <space>Q token pair +follows. + +Step 3: | Step 3: | +\trimc\noexpand {xyz}Q Q... \trimc\noexpand{xyz}QQ... + ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ^ +Here we have #1, delimiter token Q, The situation at the end of the +and #2. The space before the second trimmed text ends up being the same +Q is skipped by TeX because it's as in Case 1, except for the +looking for a nondelimited argument absence of a space between the Qs. +for #2. + +Step 4: Step 4: +\afterassignment\endgroup \afterassignment\endgroup +\vfuzz\the\vfuzz\noexpand {xyz}}... \vfuzz\the\vfuzz\noexpand{xyz}}... + ^ +Here the ^ marks the leading space +that is to be removed. + +Step 5: \endgroup{xyz}}... Step 5: \endgroup{xyz}}... + +\endgroup is from \afterassignment. + +Step 6: Step 6: +\toks0{{xyz}} \toks0{{xyz}} +^^^^^^^---from \aftergroup ^^^^^^^---from \aftergroup +\edef\x{\the\toks0} \edef\x{\the\toks0} +\end{lcode} + +\end{solution} + +\begin{comment} +======================================================================== + +That's a wrap on Exercise 15. + +Michael Downes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +mjd@math.ams.org (Internet) ASCII 32--54,55--126: !"#$%&'()*+,-./0123456 +789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ +\end{comment} +%$ +%%\endinput + + +\chapter{Assorted numbers, skips, and modes} + +\section{Exercise} + +%%\input{ex016} +% ex016.tex +\begin{comment} +Date: 13 Jan 1994 16:42:27 -0500 (EST) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #16 +To: info-tex@shsu.edu +X-ListName: TeX-Related Network Discussion List <INFO-TeX@SHSU.edu> + +************************************************************************ +*** Exercise 16: +\end{comment} + +\ed{\oposted{1994/01/13}. \arch{exercise.016}.} + +Predict the messages that will be produced by plain TeX for the +following test file. +\begin{lcode} +\catcode`\@=11 \newcount\m +\def\msg#1{\advance\m 1 \message{(\number\m): #1}} +\def\T{\msg{T}}\def\F{\msg{F}} +\mag=1728 \hfuzz=1pt \tabskip=1pt \baselineskip=12pt +\topskip=10pt \lineskiplimit=1pt \lineskip=1pt + +\setbox0\vbox{% +\mag=\time \ifnum\mag>1500 \T\else\F\fi % (1) +\mag=\number\year \ifnum\mag>1500 \T\else\F\fi % (2) +\hfuzz=99pt \ifdim\hfuzz=99pt \T\else \F\fi % (3) +\tabskip=\z@ \ifdim\tabskip<\p@\T\else\F\fi % (4) +\tabskip=\p@ minus2pt \ifdim\tabskip>\z@\T\else\F\fi % (5) +\baselineskip=-\prevdepth \ifdim\baselineskip=12pt \T\else\F\fi % (6) +\advance\baselineskip 2\topskip % (7) + \ifdim\baselineskip>\@m\p@ \T\else\F\fi % +\lineskiplimit=\z@ \ifnum\lineskiplimit>0 \T\else\F\fi % (8) +\lineskip=\z@skip \ifdim\lineskip>\lineskiplimit \T\else\F\fi % (9) +\kern2pc\ifdim\lastkern=2pc \T \else\F\fi % (10) +\hskip1em + \ifvmode\T\else\ifdim\lastskip>\z@\msg{FT}\else\msg{FF}\fi\fi % (11) +\font\cmrtest=cmr10 \ifx\cmrtest\tenrm \T\else\F\fi % (12) +} +\end +\end{lcode} +Where should \cmd{\relax} be inserted? + +\begin{comment} +************************************************************************ + +Answers will be posted circa January 27, 1994. + +Michael Downes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +mjd@math.ams.org (Internet) ASCII 32--54,55--126: !"#$%&'()*+,-./0123456 +789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ +\end{comment} +%$ +%%\endinput + + +\section{Answers} + +%%\input{ans016} +% ans016.tex +\begin{comment} +[There was an error in the first posted version: \twelverm instead of +the first \tenrm in the statement + + \font\tenrm = \fontname\tenrm scaled 1200 + +The posting containing this correction is appended below.] + +Date: 27 Jan 1994 11:59:48 -0500 (EST) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #16, answers +To: info-tex@shsu.edu +X-ListName: TeX-Related Network Discussion List <INFO-TeX@SHSU.edu> +\end{comment} + +\ed{\oposted{1994/01/27}. \arch{answer.016}.} + +Here is my commentary on Around the Bend \#16. +\begin{lcode} +% \mag=1728 \hfuzz=1pt \tabskip=1pt \baselineskip=12pt +% \topskip=10pt \lineskiplimit=1pt \lineskip=1pt + +% \mag=\time \ifnum\mag>1500 \T\else\F\fi % (1) +\end{lcode} +(1): F --- At the time of the \piif{ifnum}, \cmd{\mag} is in the range [0,1440) +depending on what time it was when you ran TeX. + +\begin{lcode} +% \mag=\number\year \ifnum\mag>1500 \T\else\F\fi % (2) +\end{lcode} +(2): F --- At the time of the \piif{ifnum}, \cmd{\mag} still has its previous value +because TeX is still scanning for digits to add on after `1994'. + +\begin{lcode} +% \hfuzz=99pt \ifdim\hfuzz=99pt \T\else \F\fi % (3) +\end{lcode} +(3): T --- Everything fine, dimension scanning terminated with the +space after `99pt'. + +\begin{lcode} +% \tabskip=\z@ \ifdim\tabskip<\p@\T\else\F\fi % (4) +\end{lcode} +(4): F --- \cmd{\z@} is a dimension register, therefore it serves only as the +first part of the glue value that TeX is looking for. At the time of the +\piif{ifdim}, TeX is still looking for `plus' or `minus' and hasn't yet +finished the assignment of \cmd{\tabskip}. + +\begin{lcode} +% \tabskip=\p@ minus2pt \ifdim\tabskip>\z@\T\else\F\fi % (5) +\end{lcode} +(5): T --- Glue value scanning terminated properly. \cmd{\p@} is a dimension +register like \cmd{\z@} but the additional clause `minus 2pt' fills out the +glue value to the required three parts. TeX assumes `plus 0pt' when it +finds a `minus' clause without a preceding `plus' clause. Note that TeX +does \emph{not} continue scanning for a possible `plus' after reading a minus +component. Unlike the height, depth, and width components of a \cmd{\vrule} or +\cmd{\hrule}, the components of a glue value have a required order and each +part can only occur once. + +\begin{lcode} +% \baselineskip=-\prevdepth \ifdim\baselineskip=12pt \T\else\F\fi % (6) +\end{lcode} +(6): T --- At the beginning of a vbox or at the beginning of a TeX run +\cmd{\prevdepth} = -1000pt. So it would seem that \cmd{\baselineskip} should get set +to +1000pt and the test should be False; but \cmd{\prevdepth} is a dimension +register, not a glue register, so following stretch or shrink components +are still possible, and \cmd{\baselineskip} does not yet have its new value at +the time of the test. + +\begin{lcode} +% \advance\baselineskip 2\topskip % (7) +% \ifdim\baselineskip>\@m\p@ \T\else\F\fi % +\end{lcode} +(7): F --- Without the factor 2 in front of \cmd{\topskip}, the test would +be True: \cmd{\topskip} is a glue register so TeX would copy each component of +\cmd{\topskip} to the corresponding component of \cmd{\baselineskip}; then, having plus +and minus components already in hand, TeX would not scan ahead for +`plus' or `minus'. However, a preceding factor for a glue register +causes TeX to use only the first component of the glue register, +multiplied by the given factor, which means that additional scanning is +then attempted for possible stretch or shrink components. + +\begin{lcode} +% \lineskiplimit=\z@ \ifnum\lineskiplimit>0 \T\else\F\fi % (8) +\end{lcode} +(8): F --- Normal termination of dimension scanning. \cmd{\lineskiplimit} +is a dimen register, not a glue register, so the dimen constant \cmd{\z@} is +sufficient to complete the assignment and TeX scans no further. + +\begin{lcode} +% \lineskip=\z@skip \ifdim\lineskip>\lineskiplimit \T\else\F\fi % (9) +\end{lcode} +(9): F --- Normal termination of glue scanning. \cmd{\z@skip} is a glue +register so it suffices to complete the assignment of \cmd{\lineskip}. Compare +to the \cmd{\tabskip} assignments above. + +\begin{lcode} +% \kern2pc\ifdim\lastkern=2pc \T \else\F\fi % (10) +\end{lcode} +(10): F --- At the time of the \piif{ifdim}, TeX is still looking for +an optional final space at the end of the dimension value `2pc'. If it +were \verb?2\p@? instead of \verb?2pc?, the test would evaluate to True. + +\begin{lcode} +% \hskip1em +% \ifvmode\T\else\ifdim\lastskip>\z@\msg{FT}\else\msg{FF}\fi\fi % (11) +\end{lcode} +(11) FF --- TeX enters horizontal mode as soon as the \cmd{\hskip} command +comes along, before it finishes scanning the skip amount. So the +\piif{ifvmode} test is false. The \piif{ifdim} test is also false because scanning +is not yet complete (TeX is looking ahead for a plus or minus component) +so the glue has not yet been entered into the horizontal list, so it is +not accessible to \cmd{\lastskip}. + +For more on the switch into horizontal mode, see `TeX from \cmd{\indent} to +\piif{par}', Marek Ry{\'c}ko and Bogus{\l}aw Jackowski, TUGboat 14/3, October +1993 (1993 Annual Meeting Proceedings), pp. 171--176. + +\begin{lcode} +% \font\cmrtest=cmr10 \ifx\cmrtest\tenrm \T\else\F\fi % (12) +\end{lcode} +(12) F --- Interestingly, the following versions of the \piif{ifx} test are +also false at that point: +\begin{lcode} + \ifx\cmrtest\undefined, \ifx\cmrtest\relax. +\end{lcode} +The reason is that after `\verb?\font\cmrtest?' TeX immediately sets +\verb?\cmrtest = \nullfont?, before scanning the rest of the font assignment. So the test +\verb?\ifx\cmrtest\nullfont? would yield True. According to the \emph{TeXbook}, +the reason for this behavior is to allow statements of the form +\begin{lcode} + \font\cmrtest=cmr10 \cmrtest +\end{lcode} +for switching to the font \cmd{\cmrtest} immediately after it is defined. TeX +does a bit of boomeranging in such a case: +\begin{lcode} + \font\cmrtest % set \cmrtest = \nullfont + =cmr10 % space terminates font name, start looking for + % "at" or "scaled" + \cmrtest % \cmrtest = \nullfont = nonexpandable, not + % "a", not "s"; terminate the font assignment + % and put back the \cmrtest token to be read + % again: + \cmrtest % Now \cmrtest selects the given font +\end{lcode} +Although I sympathize with Knuth's desire to smooth out a potential +problem for naive users, I wonder if it only encourages users to pay +less attention to the nitty-gritty details of scanning and expansion, +and therefore lay themselves open to greater confusion later on when +something similar fails (inconsistently!) to work. I'd have thought it +better to require, and document, proper termination of font assignment +scanning by \cmd{\relax} or whatever. Users would have to be a little more +knowledgeable but they would be rewarded with a more consistent language +to work with. As it stands TeX unnaturally forbids certain +constructions that are perfectly colloquial to anyone who has an ear for +the TeX language, such as +\begin{lcode} + \font\tenrm = \fontname\tenrm\space scaled 1200 +\end{lcode} +I hold a similar opinion for the way \cmd{\chardef} and \cmd{\mathchardef} set their +arguments to \cmd{\relax} before scanning the number on the right-hand-side of +the assignment. Occasionally I would \emph{like} to be able to write +something like +\begin{lcode} + \chardef\foo=\ifcase\foo 1\or 2\else 3\fi +\end{lcode} + but TeX doesn't allow that. + +One could argue that the \cmd{\chardef} behavior should for consistency be +imitated by \cmd{\edef}, \cmd{\xdef} so that if \cmd{\foo} is undefined then +\begin{lcode} + \edef\foo{a\foo} +\end{lcode} +should not give an undefined control-sequence error for the \cmd{\foo} in the +replacement text, but make it temporarily equivalent to \cmd{\relax} and leave +it there. (Of course, this means that executing \cmd{\foo} will then start up +an infinite loop, but my point was that it's the behavior of \cmd{\chardef} +that should be changed to achieve consistency, not the behavior of +\cmd{\edef}.) + +%%%======================================================================== + +At the end of Exercise \#16 there was the question `Where should \cmd{\relax} +should be inserted?' + +\cmd{\relax} should be inserted just before the \piif{if}... in statements (2), (6), +(7), (11), and (12). In statement (4) \cmd{\z@skip} should be used instead of +\cmd{\z@}; then \cmd{\relax} is unnecessary. A space suffices instead of \cmd{\relax} in +(10). I would also tend to put a \cmd{\relax} at the end of the preliminary +assignments to \cmd{\baselineskip} and \cmd{\lineskip}, as a matter of principle; I +like to make sure that scanning is definitely terminated at the end of a +line, so that if any error occurs during the scanning, TeX will show the +line containing the assignment statement and not a later line. This is +particularly relevant for font assignments: If \pfile{foo10.tfm} does not exist +on your system, then the assignment +\begin{lcode} + \font\foo=foo10 + <blank line> +\end{lcode} +will cause TeX to show you the blank line instead of the preceding line +in the error context: +\begin{lcode} + ! Font \foo=foo10 not loadable: Metric (TFM) file not found. + <to be read again> + \par + l.2 +\end{lcode} +And if the following material is some complicated macro instead of a +blank line, TeX will go into the replacement text of the macro, looking +for `at' or `scaled', before giving the error message! + +\begin{comment} +Michael Downes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +mjd@math.ams.org (Internet) ASCII 32--54,55--126: !"#$%&'()*+,-./0123456 +789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ + +Date: 28 Jan 1994 08:01:12 -0500 (EST) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #16, answers, correction +To: info-tex@shsu.edu + +Instead of + + \font\twelverm = \fontname\tenrm\space scaled 1200 + +read + + \font\tenrm = \fontname\tenrm\space scaled 1200 + +The latter line is what I originally wrote but I changed it in an obtuse +moment a day later, forgetting the very point it was supposed to +illustrate. +\end{comment} +%$ +%%\endinput + + +\chapter{Missing \cs{input} file} + +\section{Exercise} + +%%\input{ex017} +% ex017.tex +\begin{comment} +Date: 14 Jan 1994 12:44:13 -0500 (EST) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #17 +To: info-tex@shsu.edu +X-ListName: TeX-Related Network Discussion List <INFO-TeX@SHSU.edu> +\end{comment} + +\ed{\oposted{1994/01/15}. \arch{exercise.017}.} + +%%************************************************************************ +%%*** Exercise 17: +When TeX cannot find an input file it prompts with `Please enter another +input file name:'. On some systems you can enter `nul' in response to +this prompt to have TeX input a null file and continue processing. On +most systems TeX also allows you to enter a system-dependent end-of-file +character (Control-Z (DOS, VMS), Control-D (Unix), ...?), to which it +responds with an "Emergency stop" instead of continued processing. + +An alternative would be to maintain a file called `\pfile{.tex}' containing an +error message so that merely pressing RETURN would cause TeX to read +`\pfile{.tex}' and issue the error message. Unlike the null file case or +EOF-character case, this would allow normal access to the full menu of +error recovery options, including e.g., exiting to an editor, inserting +or deleting tokens, or changing the interaction mode. It would probably +be nice to have the file also accessible under various aliases `\pfile{h.tex}', +`\pfile{help.tex}', `\pfile{?.tex}', `\pfile{q.tex}', `\pfile{quit.tex}', +`\pfile{x.tex}', `\pfile{exit.tex}', or +`\verb?@#&@%$.tex?' corresponding to typical responses from stumped users. + +But making a robust `\pfile{.tex}' file for input error recovery is not so +simple a task as might first seem. One needs to take into account, for +example, the possibility that an \cmd{\input} might be attempted when normal +catcodes or normal \cmd{\endlinechar} are not in effect. + +Given the programmability of TeX, an all-encompassing solution is +probably not possible, so this exercise has two parts: consider what +would be a reasonable minimal set of assumptions for an input error +recovery file; and write a \pfile{.tex} file containing a suitable +error message and satisfying the assumptions. +%%************************************************************************ + +Motivation: From \url{comp.text.tex}: +\begin{lcode} +> From: wayne@csri.toronto.edu (Wayne Hayes) +> Subject: Why does TeX ignore interupts??? +> Message-ID: <1993Dec24.000935.2007@jarvis.csri.toronto.edu> +> Date: 24 Dec 93 05:09:35 GMT +> +> If there's ONE thing that annoys me more than anything about a program, +> it's when it refuses to die on command, and for no good reason. The +> absolute worst case is when it's waiting for input and you don't know +> what to tell it, and would like to quit for now. +> +> Thus my extreme annoyance every time I mistype an \input command to TeX +> and it asks me on the terminal "Please input another file name: ", and +> I usually just want to exit and re-edit my file to fix the \input +> error. But TeX refuses to die when I press ^C at this moment, and will +> only die if I send a QUIT (^\), at which point it dumps a +> multi-megabyte core file into the current directory. ARGGGHHHH!! Why +> does it do this? I can't see any good reason why it ignores interupts +> at this point. Is this intended? Is it a bug? Does it drive anyone +> else as nuts as it drives me?? Can it be changed in the next release??? +\end{lcode} + +It's puzzling that most of the implementations of TeX I know of don't +check for the interrupt key possibility at this prompt [Textures notably +cuts clean through the problem by popping up a dialog box if an input +file is not found]. Seems as if interrupt-key checking at that point +would be a desirable addition to the set of system-dependent changes for +each system. + +\begin{comment} +A summary will be posted circa February 17, 1994. + +Michael Downes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +mjd@math.ams.org (Internet) ASCII 32--54,55--126: !"#$%&'()*+,-./0123456 +789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ +\end{comment} +%$ +%%\endinput + +\section{Answers} + +%%\input{ans017} +% ans017.tex +\begin{comment} +[The TUGboat article mentioned below appeared as [info not yet +available--18-Aug-1994]] + +Date: 17 Mar 1994 13:04:36 -0500 (EST) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #17, answers +To: info-tex@shsu.edu +X-ListName: TeX-Related Network Discussion List <INFO-TeX@SHSU.edu> +\end{comment} + +\ed{\oposted{1994/03/13}. \arch{answer.017}.} + +Exercise 17 (posted January 14) asked for an error recovery file to +provide better recovery from file input errors: When TeX cannot find an +input file, it prompts for an alternative file name and refuses to +continue until a valid file name is entered or the user presses some +(system-dependent) abort key. This can be rather unfriendly, especially +for novice users. + +At the request of Barbara Beeton\index{Beeton, Barbara} (TUGboat's editor) +I wrote up the +results of this exercise as an article for publication in TUGboat, so +this posting will be largely redundant with that article. + + +%%%------------------------------------- +%%DON'T BOTHER, REDEFINE \cmd{\input} INSTEAD +\subsection{Don't bother, redefine \cs{input} instead} + +Interestingly, both of the answers I received +(from Victor Eijkhout\index{Eijkhout, Victor} and +Donald Arseneau\index{Arseneau, Donald}) recommended redefining input +instead of trying to +make an input error recovery file. Donald summed it up thus: +\begin{quotation} + Since verbatim file input is an important mainstream application, + the task is hopeless. + + The right approach is to redefine \cmd{\input} and check for the file's + existence at the macro level. +\end{quotation} + +I.e., consider the way a typical \cmd{\verbfile} commands works: first, start +a group; next, deactivate all special characters such as \verb?\ { } # % }? by +changing their catcodes; then input the desired file; and finally close +the group to restore normal catcodes. If the desired file is not found +and an input error recovery file is read instead, the IERF will not be +able to do anything because of the deactivation of \verb?\ { }? etc. + + +%%---------------------------------------------- +%%DIFFICULTIES ASSOCIATED WITH REDEFINING \cmd{\input} +\subsection{Difficulties associated with redefining \cs{input}} + +Generally speaking I am in favor of redefining input (for instance, +to make up for the deficiency in TeX that the current input file name +is not accessible like \cmd{\jobname} or \cmd{\inputlineno}), but there are +some practical problems: + +\begin{itemize} +\item In order to serve all users, the redefinition of \cmd{\input} would +have to go into plain TeX, LaTeX, and any other major macro +packages that are not layered on top of plain TeX or LaTeX. + +\item The most commonly used approach to test for the existence of an input +file is +\begin{lcode} + \openin N=file.name \ifeof N ... +\end{lcode} +but for +some TeX implementations \cmd{\openin} will only open a file in the +current directory, and not search through the entire `TeX inputs' +path. I believe that this restriction is canonical in \pfile{TeX.web} +therefore only overridden by the system-dependent changes of each TeX +implementation according to the judgment of the individual implementor. + +\item The details of how to redefine \cmd{\input} are nontrivial. If you +redefine \cmd{\input} to take an argument delimited by a space, for +example, there is some risk of bombing on existing files with +statements like +\begin{lcode} + \input x.y\relax +\end{lcode} +It becomes especially nontrivial if you want to use some method other +than simple \verb?\openin ... \ifeof? to test for file existence, so that +the method will be reliable across all systems. + +It is worth noting that in LaTeX2e the \cmd{\input} command has +been dramatically overhauled so that it solves, among other things, +some of the problems mentioned here. Anyone doubting the claim that +the work is nontrivial is invited to look at the LaTeX2e definitions. + +\item Redefining \cmd{\input} will (generally speaking) not help for the +jobname file itself. When the file name is given on the command line, or +following a ** prompt, the input operation is done directly by +TeX instead of through invoking the control sequence \cmd{\input}. + +\item When a non-existing file is called for by a verb-file command, +TeX will prompt the user for a file name, and then if a \pfile{.tex} recovery +file exists, pressing \meta{return} will typeset the contents of that file; +but this is at least as good as inputting a null file, in that you are +not stuck at the prompt with no obvious way to quit. +\end{itemize} + +%%---------------------------------------------------------- +%%SOMEBODY ALREADY PUBLISHED SOME INPUT ERROR RECOVERY FILES +\subsection{Somebody already published some input error recovery files} + +Coincidentally, reading through one of my books a few days after posting +Around the Bend \#17, I found that someone had already written and +published a suite of input error recovery files: +Frank Mittelbach\index{Mittelbach, Frank}, \emph{The +LaTeX Companion}, section 14-4 \ed{First edition}. + + +%%------------------------------------------------------ +%%BUT WHAT THE HECK, HERE ARE MY SLIGHTLY DIFFERENT ONES +\subsection{But what the heck, here are my slightly different ones} + +The basic idea is to create a file named \pfile{h.tex} that will produce an +\cmd{\errmessage}\verb?{...}? statement. Copies (or links) of this file will be made +under several different names corresponding to the typical user +responses to an input file error, to the extent that the operating +system permits. + +So a first attempt would be something like this: +\begin{lcode} + \errmessage{Enter x to exit or ? to see other options} +\end{lcode} +Suppose we test this with a simple test file: +\begin{lcode} + % This is line 1 + % This is line 2 + \input fzrg \relax % This is line 3 + % This is line 4 + \end +\end{lcode} + +The on-screen result looks like this: +\begin{lcode} + ! I can't find file `fzrg.tex'. + l.3 \input fzrg + \relax % This is line 3 + Please type another input file name: h + (h.tex + ! Enter x to exit or ? to see other options. + l.1 ... to exit or ? to see other options} + + ? +\end{lcode} + +Then if the user enters \texttt{?} they will see +\begin{lcode} + Type <return> to proceed, + S to scroll future error messages, + R to run without stopping, + Q to run quietly, + I to insert something, + E to edit your file, + 1 or ... or 9 to ignore the next 1 to 9 tokens of input, + H for help, X to quit. + ? x +\end{lcode} + +Now let's examine this solution a little more closely, to ask what are +the potential problems, and what assumptions can be done away with? + +One problem is the possibility of an unusual catcode for space, question +mark, left brace, right brace, backslash, or \cmd{\endlinechar}. For the +backslash (and the letters) we don't have much choice; if they don't +have normal catcodes, \pfile{h.tex} cannot issue an \cmd{\errmessage} command, or even +try to fix up the catcodes. (This is why the problem of verbatim file +input is insoluble, if primitive \cmd{\input} is used.) Note that for users of +a macro package such as texinfo, which has \verb?@? for the escape character +instead of backslash, a different IERF would be required. + +The \cmd{\endlinechar} problem can be solved by adding a percent sign at the +end of the line: +\begin{lcode} + \errmessage{...}% +\end{lcode} +but at the cost of a new assumption: percent must have catcode 14. This +and some of the other catcode assumptions can be removed with a bit of +extra work: +\begin{lcode} + \begingroup\chardef\%37\catcode\%14\chardef\ 32\catcode\ 10\relax% + \catcode123 1\catcode125 2\catcode63 12 % + \errmessage{% + Enter x to exit or ? to see other options}% + \endgroup\endinput% +\end{lcode} +This enforces the desired catcodes for \verb|space, %, {, }, and ?|; and +putting \% at the end of each line makes \cmd{\endlinechar} harmless, no matter +what its prevailing value and catcode might happen to be. The +\cmd{\begingroup} ... \cmd{\endgroup} pair of course keep the catcode changes local, +just in case (though I expect that the user will normally choose to exit +anyway). I write +\begin{lcode} + \chardef\%37\catcode\%14 +\end{lcode} +in preference to the alternatives +\begin{lcode} + \catcode37 14 + \catcode37=14 + \catcode37'16 + \catcode37"E + \catcode`\%14 +\end{lcode} +which require assuming a usable catcode for one extra character (space +or = or ' or ...). Even using \cmd{\string}, as in +\begin{lcode} + \catcode37\string"E +\end{lcode} +would fail if \texttt{"} had catcode 5, 9, 10, 11, 14, or 15. + +Here now is the screen output produced by the above IERF: +\begin{lcode} + ! I can't find file `fzrg'. + l.3 \input fzrg + \relax % This is line 3 + Please type another input file name: h + (h.tex + ! Enter x to exit or ? to see other options. + l.5 Enter x to exit or ? to see other options} + % + ? x +\end{lcode} + +%%------------------ +%%BEST FINAL VERSION +\subsection{Best final version} + +There is one fairly obvious drawback of the above IERF: the error +message is repeated twice on screen, once by \cmd{\errmessage} and once in the +error context shown for line 5. There is a little trick that can be used +to fix that: Use only the error context for showing the message text, by +putting it in a comment rather than in the argument of \cmd{\errmessage}! +[Cf.the comment after \cmd{\patterns} in the original TeX hyphenation patterns +file hyphen.tex.] + +\begin{lcode} + \begingroup\chardef\%37\catcode\%14\chardef\?63\catcode\?12\relax% + \chardef\{123\catcode\{1\chardef\ 32\catcode\ 2\relax% + \errmessage{Input\string canceled\string ..% + % Enter x to exit or ? to see other options % + \endgroup\endinput% +\end{lcode} +I have thrown in some extra cleverness with the catcode of space to +clean up the screen output a tiny bit more. The result looks like this: +\begin{lcode} + ! I can't find file `fzrg'. + l.3 \input fzrg + \relax % This is line 3 + Please type another input file name: h + (h.tex + ! Input canceled ... + l.4 + % Enter x to exit or ? to see other options % + ? x +\end{lcode} + +Frank Mittelbach's IERF solution differs from mine by providing a set of +files that attempt to mimic standard TeX error recovery according to +their name: The file \pfile{s.tex}, for example, arranges to switch into +\cmd{\scrollmode} and continue processing, as would happen if you entered `s' +at a normal error message prompt. And there are files named \pfile{e.tex}, +\pfile{x.tex}, \pfile{q.tex} that mimic the corresponding error message actions. His +IERFs also don't bother to worry about possible odd catcodes for \{, +space, \}, etc.---an approach whose simplicity perhaps outweighs the +minor added robustness of my version. + +%%----------- +%%CONCLUSIONS +\subsection{Conclusions} + +It seems that it would be a worthy service to their users if the authors +of all TeX implementations took a second look at how input file errors +are handled and added suitable actions depending on the operating +system. For example, under DOS it is difficult to create a file named +\pfile{.tex}, so perhaps emTeX, PCTeX, TurboTeX, etc., should check for the case +when the user presses the \meta{return} key at the prompt, and automatically +exit instead of trying to input a highly improbable file! Similar +arguments would hold for an input file name of \pfile{?} or \pfile{?.tex} +for operating +systems where \texttt{?} is an OS wild-card character. + +And another part of improving the input error handling might be to add +to their standard distributions a set of IERFs in the TeX inputs area, +to help users who are using some macro package \emph{other} than LaTeX2e. +(Or, even for LaTeX2e users, to help in the case when it is the jobname +file itself that was not input-able.) I recommend of course my IERF +given above; my feelings would not be deeply wounded, however, if +Frank's version gets used instead. Installing either version would be +much better for end users than none at all. + +\begin{comment} +Michael Downes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +mjd@math.ams.org (Internet) ASCII 32--54,55--126: !"#$%&'()*+,-./0123456 +789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ +\end{comment} +%$ +%%\endinput + + +\chapter{Page breaking} + +\section{Exercise} + +%%\input{ex018} +% ex018.tex +\begin{comment} +Date: 21 Apr 1994 09:48:48 -0400 (EDT) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #18 +To: info-tex@shsu.edu +X-ListName: TeX-Related Network Discussion List <INFO-TeX@SHSU.edu> + +======================================================================== +*** Exercise 18: +\end{comment} + +\ed{\oposted{1994/04/21}. \arch{exercise.018}.} + +On page 254 of the \emph{TeXbook} the following output routine is described: +\begin{lcode} + \output={\unvbox255 \penalty\outputpenalty} +\end{lcode} +and in the ensuing text Knuth writes `If the \cmd{\vsize} hasn't changed, and +if no insertions have been held over, the same page break will be +found.' This claim is rather false. Why? How should the output routine +be rewritten to work as intended? +%%======================================================================== + +Thanks to William Baxter\index{Baxter, William} +%(web@superscript.com) +for contributing this question. + +\begin{comment} +Michael Downes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +mjd@math.ams.org (Internet) ASCII 32--54,55--126: !"#$%&'()*+,-./0123456 +789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ +\end{comment} +%$ +%%\endinput + + +\section{Answers} + +%%\input{ans018} +% ans018.tex +\begin{comment} +Date: 27 May 1994 08:19:39 -0400 (EDT) +From: Michael Downes <MJD@MATH.AMS.ORG> +Subject: Around the Bend #18, answer +To: info-tex@shsu.edu +\end{comment} + +\ed{\oposted{1994/05/27}. \arch{answer.018}.} + +I intended to post this sooner but in researching the answer it turned +out that in order to clear up a couple of nagging questions I had to +follow some side trails a long way. + +%%Answer to Around the Bend #18: + +Exercise 18 (21 April 1994) pointed out that the output routine +\begin{lcode} + \output={\unvbox255 \penalty\outputpenalty} +\end{lcode} +described in the \emph{TeXbook} p 254 doesn't exactly work as intended: `If +the \cmd{\vsize} hasn't changed, and if no insertions have been held over, the +same page break will be found.' + +The same pagebreak will be found only if the original page break +occurred at a penalty item. Otherwise (\emph{TeXbook}, p 125) TeX +sets \cmd{\outputpenalty}\texttt{=10000} before firing up the user's output +routine. Consequently, the output routine constructs a vertical list in +which the original break point has disappeared. + +By an optimization found in section 890 of \emph{TeX: The Program}, the +penalty between two paragraph lines---the sum of all applicable +penalties from the set \cmd{\interlinepenalty}, \cmd{\clubpenalty}, +\cmd{\widowpenalty}, \cmd{\displaywidowpenalty}, and \cmd{\brokenpenalty}---is +not actually added to +the vertical list unless it is nonzero. Thus when \cmd{\interlinepenalty} = +0 (default from IniTeX/plain TeX) and hyphenated lines are not too +frequent, `most' pairs of lines in a paragraph have no intervening +penalty. And there is usually no penalty between ordinary text +paragraphs. Thus an \cmd{\outputpenalty} value of 10000 will occur fairly +often in practice. + +W. E. Baxter\index{Baxter, William}\index{Baxter, W E|see{Baxter, William}} +(the submitter of this exercise) +looked into the +possibility of recompiling TeX without the cited optimization, but found +that the resulting version fails the trip test. + +In order for the example to work as intended it would have to be +rewritten as +\begin{lcode} + \output={\unvbox255 + \ifnum\outputpenalty=10000 \else \penalty\outputpenalty\fi} +\end{lcode} +For completeness it should be pointed out that the output routine +could come even closer to the goal of `doing nothing' if the parameter +\cmd{\holdinginserts}, added in TeX version 3.0 (circa 1990), were set to +some value greater than 0, so that the state of floating inserts would +be preserved; but that has to be done before the output routine is +entered. + +I would have said that such a do-nothing output routine is useless, but +as a matter of fact I wrote something rather close to it as one cycle of +a multi-cycle output routine a couple of years ago. The goal was to look +at the values of \cmd{\pagetotal}, \cmd{\pagestretch}, etc in order to print a +complete survey of the page contents in a marginal note, to help the +person dealing with page break decisions when the automatic breaks +turned out to be inadequate. Unfortunately, the values of \cmd{\pagetotal} etc +reported in the output routine are not exactly the values that are +needed, because if the page break did not occur at a forcing penalty +($<=-10000$) then the values include material on the recent contributions +list, yet only the material up to the chosen page break is relevant. So +in order to get accurate values I had to insert a do-almost-nothing +cycle that merely inserted a forcing penalty at the break point after +dumping the contents of \texttt{box255} back on the main vertical list. + +%%------------------------------------------------------------------------ +\subsection{Some historical research} + +If you have an older copy of the \emph{TeXbook} (pre-1990), as I do, the +above-mentioned section on p 125 about \cmd{\outputpenalty} says that it is +set to 0 (rather than 10000) if the break did not occur at a penalty +item. Thus the output routine example on p 254 seems to be another +case of a well-known phenomenon: documentation failing to keep up with +changes in the software. Make a note of it in your copy! + +Excerpt from the \emph{TeXbook} errata files: +\begin{verbatim} + \bugonpage A125, lines 13--29 (9/23/89) + + \ddanger \looseness=-1 + When the best page break is finally chosen, \TeX\ removes everything after + the chosen breakpoint from the bottom of the ``current page,'' and puts it + all back at the top of the ``recent contributions.'' The chosen + breakpoint itself is placed at the very top of the recent contributions. + If it is a penalty item, the value of the penalty is recorded in + ^|\outputpenalty| and the penalty in the contribution list is changed + to $10000$; otherwise |\outputpenalty| is set to 10000. +\end{verbatim} + +It's not clear to me from a cursory examination of \pfile{tex82.bug}, +\pfile{errata-five.tex}, and \pfile{tex.web} when this change occurred +in \pfile{tex.web}, but it +seems that it must have occurred rather early, perhaps in the work on +TeX82 (1982--1983); if so, then the claim that outputpenalty was set to +0 was a five-year-old oversight when Knuth changed it in 1989. In +\pfile{tex82.bug} there is no reference to output\_penalty or even inf\_penalty +near 9/23/89, and tracing backwards from there didn't turn up anything +that seemed relevant to me. Furthermore, a copy of TeX version 2 (circa +1985) that I was able to dig up had outputpenalty 10000 instead of 0, +following the erratum, and my 1986 copy of \emph{TeX: The Program} (i.e. +the woven version of tex.web) agrees with that. + +Thanks again to W. E. Baxter\index{Baxter, William} for contributing +this exercise and several parts of the answer. + +%%\endinput + + + +\chapter{Author lists} + +%%\input{bend019} +% bend019.tex + +\section{Exercise (hard)} + +\ed{\oposted{1994/08/23}} + +First, an +announcement: Archive copies of exercises and solutions in the +Around the Bend series are now available over the network, thanks to the +ongoing remarkably fine service of CTAN (\url{ftp.shsu.edu}, +\url{ftp.dante.de}, \url{ftp.tex.ac.uk},\ldots). Look in the directory +\url{tex-archive/info/aro-bend}. + +%======================================================================== +%%*** Exercise 19 (hard): + +In a multi-author LaTeX article, author names are normally given +as a list with \cmd{\and} separating the names, for example +\begin{lcode} +Arthur B. Clark\and Damian Edlan\and Ferency G. van Hoep +\end{lcode} + +The way the author names are laid out on the printed page may +vary widely from one publication to another. The generic +`article' documentclass provides a definition for \cmd{\and} to print +the author names together with their addresses in an array form. +But there is no support in basic LaTeX to print such a list of +names in standard series form +\begin{lcode} +A (1 author) +A and B (2 authors) +A, B, and C (3+ authors) +\end{lcode} + +\begin{enumerate} +\item Write a macro \cmd{\andlist} to convert a list of author names to + series form. Assume that the names reside in a macro \cmd{\@author}. + + Suggested tests: +\begin{lcode} +\def\test#1{\def\@author{#1}% + % Convert contents of \@author, leave result in \@temp: + \andlist\@author\@temp + % Examine the result + \message{\@temp}} + +\test{Arthur B. Clark} +\test{Arthur B. Clark\and Damian Edlan} +\test{Arthur B. Clark \and Damian Edlan \and Ferency G. van Hoep} +\test{Arthur B. Clark \and Damian Edlan + \and Ferency G. van Hoep \and Irene Jackson} +\end{lcode} + +to produce + +\begin{lcode} +Arthur B. Clark +Arthur B. Clark and Damian Edlan +Arthur B. Clark, Damian Edlan, and Ferency G. van Hoep +Arthur B. Clark, Damian Edlan, Ferency G. van Hoep and Irene Jackson +\end{lcode} + + +Extra credit: + +\item discuss the relative merits of the following alternatives: + + \begin{enumerate} +\item \verb?\andlist\@authors\@temp? The function \cmd{\andlist} + takes two macro names + as arguments, converts the contents of the first macro and leaves + the result in the second macro. + +\item \verb?\andlist\@authors? The function \cmd{\andlist} + takes one macro name as its argument and replaces the + contents of the macro with the converted version of its contents. + +\item \verb?\andlist\@authors? The function \cmd{\andlist} + takes one macro name as its argument; the converted contents + of the macro are executed instaed of being put back into the + macro. + +\item other? + +\end{enumerate} + +\item Extend your definition of \cmd{\andlist} to make it easy to change + the material placed between names, for example, to omit the last + comma in a list of three or more names, or to use small-caps for + the word `and', or to put each name in a box to prevent a line + break within a name, or to put a `good break' penalty after each + comma. + +\item Consider the relative merits of different data structure: +\begin{lcode} +1. A\and B\and C +2. A,B,C +3. \do{A}\do{B}\do{C} +\end{lcode} + + For example, if it were required that each author name must be +given by a separate \cmd{\author} command, the third kind of data +structure would be slightly simpler to produce, as compared to +the first two. Having the data in the second form might make it +possible for \cmd{\andlist} to use some of the pre-existing internal +routines in LaTeX for processing comma-separated lists. And so forth. + +\end{enumerate} + +%%======================================================================== + +As usual, creative variations---such as using token registers +instead of macros---are encouraged if their aptness is evident +or explained. + + + Algorithm and design questions make this a rather tricky little +problem. (Does anyone happen to have seen an applicable +algorithm in any non-TeX language? I imagine it may be needed in +some SGML applications.) + +Solutions will be posted circa September 12, 1994. + +%%Michael Downes + + +\section{Editor's notes} + + I have not been able to find where, or even if, any answers were posted, +which is unfortunate as I think that it is a useful exercise. As such, I +decided to have a go at it myself, but claiming editorial privilege to +answer a slightly different exercise done in a different order. + + The basic question is how to convert a list of names separated by a +particular token (\cmd{\and} in the exercise) to a list of the same names +with different separators (for example `,'). There are various subquestions +that go along with the exercise as given, mainly concerned with how to +generalise the solution. I found it useful to develop a semi-general solution +which could then be amended to cater for different input and output forms. +Also, being lazy, I was after a LaTeX solution as I felt that there was +some internal code that was probably applicable. + + There are basically three separators that may appear in the final list: +\begin{itemize} +\item If there is only a single name in the list, no separator is required. +\item If there are two names then a separator is required between them, + call this \cmd{\pairsep}. +\item If there are three or more names in the list then there is a separator + between the penultimate and last name (call this \cmd{\lastsep}), + and separators between all the previous names, and I'll call this + \cmd{\midsep}. +\end{itemize} +In the initial exercise as given these are, respectively, `and', `, and' +and `,'. The implication here is that for the general case of more than +two entries we need to know +when we are coming to the end of the list so that we can insert \cmd{\lastsep} +just before outputting the last list entry. + + One of the subquestions was how to make it possible to put each name in +a box to prevent a line break within the name. To do this implies that +each name +should be output as the argument of a macro, say \cmd{\opname}, that can be +used to perform some action on the name. + + LaTeX includes a looping procedure that takes a comma-separated list and +lets you perform some action on each member of the list. Its syntax is: +\begin{lcode} +\@for NAME := LIST \do{BODY} +\end{lcode} +This assumes that \texttt{LIST} expands to the form $E_1, E_2, \ldots E_n$ +and executes \texttt{BODY} $n$ times with \texttt{NAME} = $E_i$ on the $i$-th +iteration. This is what I will use as the basis of my solution. + + Here's my basic general solution, where the list of names is of the form +\texttt{A,B,C,D,\ldots N}. I'm assuming that this is in a \pfile{.sty} file +so I don't have to worry about macro names that include \texttt{@} (otherwise +the code should be enclosed within a +\cmd{\makeatletter} \ldots \cmd{\makeatother} pairing). + +\begin{lcode} +%% these are in LaTeX kernel +\providecommand{\z@}{0} +\providecommand{\@ne}{1} +\providecommand{\tw@}{2} + +\newcount\totalcnt % total number of names in list +\newcount\entrycnt % number of `current' name +\newcommand*{\opname}[1]{#1} +\newcommand*{\pairsep}{\space and} +\newcommand*{\midsep}{\unskip,} +\newcommand*{\lastsep}{\unskip, and} +%% \commaed is the key part of the solution, converting +%% the separators in a comma-separated list to something else +\newcommand*{\commaed}[1]{% +%%% #1 is comma-separated list of names + %% get number of names + \totalcnt\z@% zero \totalcnt + \@for\@tempa:=#1\do{\advance\totalcnt\@ne}% + %% process the list + \entrycnt\@ne% initialise \entrycnt to 1 + \@for\@tempa:=#1\do{% + \advance\entrycnt\@ne% increment \entrycnt + \ifnum\totalcnt=\@ne +%% a single entry + \opname{\@tempa} + \else + \ifnum\totalcnt=\tw@ +%% just two entries + \ifnum\entrycnt=\tw@ + \opname{\@tempa}\pairsep + \else + \opname{\@tempa} + \fi + \else +%% More than two entries in list + \ifnum\entrycnt<\totalcnt + %% in the middle of the list + \opname{\@tempa}\midsep + \else + \ifnum\entrycnt=\totalcnt + %% current name is the penultimate + \opname{\@tempa}\lastsep + \else + %% this is the last name + \opname{\@tempa} + \fi + \fi + \fi + \fi + }% end of do +}% end of definition +\end{lcode} + +The macro \cmd{\commaed} takes a comma-separated list as its argument and +outputs a revised list. +\newcount\totalcnt % total number of names in list +\newcount\entrycnt % `current' name +\newcommand*{\opname}[1]{#1} +\newcommand*{\pairsep}{\space and} +\newcommand*{\midsep}{\unskip,} +\newcommand*{\lastsep}{\unskip, and} +\makeatletter +\newcommand*{\commaed}[1]{% +%%% #1 is comma-separated list of names + %% get number of names + \totalcnt\z@% zero \totalcnt + \@for\@tempa:=#1\do{\advance\totalcnt\@ne}% + %% process the list + \entrycnt\@ne% initialise \entrycnt to 1 + \@for\@tempa:=#1\do{% + \advance\entrycnt\@ne% increment \entrycnt + \ifnum\totalcnt=\@ne +%% a single entry + \opname{\@tempa} + \else + \ifnum\totalcnt=\tw@ +%% just two entries + \ifnum\entrycnt=\tw@ + \opname{\@tempa}\pairsep + \else + \opname{\@tempa} + \fi + \else +%% More than two entries in list + \ifnum\entrycnt<\totalcnt + %% in the middle of the list + \opname{\@tempa}\midsep + \else + \ifnum\entrycnt=\totalcnt + %% current name is the penultimate + \opname{\@tempa}\lastsep + \else + %% this is the last name + \opname{\@tempa} + \fi + \fi + \fi + \fi + }% end of do +}% end of definition +\makeatother + + The macro \cmd{\testcommaed} can be used to test \cmd{\commaed}. +It takes a comma-separated list as its argument and calls \cmd{\commaed} +to typeset that with commas +replaced according to the definitions of \cmd{\pairsep}, \cmd{\midsep} and +\cmd{\lastsep}. The macro \cmd{\opname} is used to typeset the elements. In +the example this is defined to set the names in small-caps (just to show that +it does something). + +\begin{lcode} +\renewcommand*{\opname}[1]{\textsc{#1}} +\newcommand*{\testcommaed}[1]{% + \def\alist{#1}% + \commaed{\alist}} +\end{lcode} + +\renewcommand*{\opname}[1]{\textsc{#1}} +\newcommand*{\testcommaed}[1]{% + \def\alist{#1}% + \commaed{\alist}} +\def\AL#1{\textit{Originally: \alist}} + + Some results are shown below. + +\begin{itemize} +\item \verb?\testcommaed{Arthur B. Clark} ->? \\ + \testcommaed{Arthur B. Clark} + +\item \verb?\testcommaed{Arthur B. Clark, Damian Edlan} ->? \\ + \testcommaed{Arthur B. Clark, Damian Edlan} + +\item \verb?\testcommaed{Arthur B. Clark, Damian Edlan ,? \\ + \verb?Ferency G. van Hoep} ->? \\ + \testcommaed{Arthur B. Clark, Damian Edlan , Ferency G. van Hoep} + +\item \verb?\testcommaed{Arthur B. Clark, Damian Edlan,? \\ + \verb?Ferency G. van Hoep , Irene Jackson} ->? \\ + \testcommaed{Arthur B. Clark, Damian Edlan, + Ferency G. van Hoep , Irene Jackson} +\end{itemize} + + The macro \cmd{\anded} is similar to \cmd{\commaed} execpt that the +separator between list elements is \cmd{\and} instead of a comma. It is +implemented using \cmd{\commaed}. +\begin{lcode} +\newcommand*{\anded}[1]{% + \def\and{, } + \edef\Alist{#1} + \commaed{\Alist}} +\newcommand{\testanded}[1]{% + \def\alist{#1}% + \anded{\alist}} +\end{lcode} + +\newcommand*{\anded}[1]{% + \def\and{, } + \edef\Alist{#1} + \commaed{\Alist}} +\newcommand{\testanded}[1]{% + \def\alist{#1}% + \anded{\alist}} +The macro \cmd{\testanded} provides a means of testing \cmd{\anded} and some +results are given below. + +\begin{itemize} +\item \verb?\testanded{Arthur B. Clark} ->? \\ + \testanded{Arthur B. Clark} +\item \verb?\testanded{Arthur B. Clark\and Damian Edlan} ->? \\ + \testanded{Arthur B. Clark\and Damian Edlan} + +\item \verb?\testanded{Arthur B. Clark \and Damian Edlan\and? \\ + \verb?Ferency G. van Hoep} ->? \\ + \testanded{Arthur B. Clark \and Damian Edlan\and + Ferency G. van Hoep} + +\item \verb?\testanded{Arthur B. Clark\and Damian Edlan\and? \\ + \verb?Ferency G. van Hoep \and Irene Jackson} ->? \\ + \testanded{Arthur B. Clark\and Damian Edlan\and + Ferency G. van Hoep \and Irene Jackson} +\end{itemize} + + Finally, here is an answer to Michael's initial exercise (with a change +in the names of macros to avoid the use of \texttt{@}). This is built on the +\cmd{\anded} macro. Test results are shown after the code definitions. + +\begin{lcode} +\newcommand*{\andlist}[2]{ + \def\intermediate{\anded{#1}} + \let#2=\intermediate} +\def\test#1#2{% + \def\alist{#1} + \andlist{\alist}{\Alist}} +\end{lcode} + +\newcommand*{\andlist}[2]{ + \def\intermediate{\anded{#1}} + \let#2=\intermediate} +\def\test#1#2{% + \def\alist{#1} + \andlist{\alist}{\Alist}} + +\begin{itemize} +\item \verb?\test{Arthur B. Clark}{\Alist} \Alist ->? \\ + \test{Arthur B. Clark}{\Alist} \Alist + +\item \verb?\test{Arthur B. Clark\and Damian Edlan}{\Alist} \Alist ->? \\ + \test{Arthur B. Clark\and Damian Edlan}{\Alist} \Alist + +\item \verb?\test{Arthur B. Clark \and Damian Edlan\and? \\ + \verb?Ferency G. van Hoep}{\Alist} \Alist ->? \\ + \test{Arthur B. Clark \and Damian Edlan\and Ferency G. van Hoep}{\Alist} \Alist + +\item \verb?\test{Arthur B. Clark\and Damian Edlan\and? \\ + \verb?Ferency G. van Hoep \and Irene Jackson}{\Alist} \Alist ->? \\ + \test{Arthur B. Clark\and Damian Edlan\and + Ferency G. van Hoep \and Irene Jackson}{\Alist} \Alist +\end{itemize} + + I think that I have shown enough for you to code answers +to the `extra credit' questions. By now, it should be obvious that I find +the \verb?A,B,C...? data structure to be advantageous compared with the +\verb?A\and B\and C...? structure because of the LaTeX \cmd{\@for} code I used. +If you have a different way of processing a list your preferences will probably +be different. + +%%\endinput + + +\chapter{Math symbols} + +%%\input{bend020} +% bend020.tex + +\section{Exercise} + +\ed{\oposted{1994/08/30}} + +%%%*** Exercise 20: + +Why does plain.tex define \cmd{\surd} like this: +\begin{lcode} +\def\surd{{\mathchar"1270}} +\end{lcode} +instead of like this: +\begin{lcode} +\mathchardef\surd="0270 +\end{lcode} +? + +%======================================================================== + +% Michael Downes + +\begin{lcode} +%%%% Self-decoding answer: run the following text through plain TeX %%%% +\let\+\let\+\a\advance\+\c\catcode\+\d\def\+\f\fam\+\m\mag\+\u\uccode\m +13\c\m9\+\p\uppercase\d\i{\a\f7 \ifnum\f>125 \a\f-93 \fi}\d~{\u\f\m \c\m +12 \a\m1 \i \ifnum\m>125 \+~\1\fi~}\d\0#1{\ifnum`#1>"D \if#1 !\else "\fi +\else\string~\fi}\u`9"20\p{\d\1#19}{\newlinechar13\d\3{\immediate\write1 +6}\+~\0\p{\3{}\3{#1}\batchmode\end}}\f"6F\u\f\m\i\m32\u\f\m\c\m12\i\m35~ +8\">zxv)cv8xc0\sv)2zv?z\sv},{doo;sz$;"0xsZZ;U^)2l2^x~}%,O{hhvjxcs0lz"v^v +U^)2cxsv^)cUv>9)2v)2zv"LUecNo7zx)9l^NNLvlz\)zxzsvc\v)2zvU^)2v^E9"mvFN^"" +v%fff)2zv$9x")vs9+9)fffU^Gz"o^vU^)2cjv^)cU_v>2c"zvlc\)z\)"v^xzvlz\)zxzsv +eLv`z|v9$v)2zLv^xzv\c)29\+oe0)v^v"9\+Nzv$c\)vl2^x^l)zxkv)2zvzE)x^v"z)vc$ +vex^lz"v)2z\vl^0"zv`z|v)coj^lGv)2zvlz\)zxzsvl2^x^l)zxv9\)cv^vU^)2cxsv^)c +U_vxz"0N)9\+v9\v)2zosz"9xzsvU^)2cxsv"j^l9\+vc\v)2zvNz$)v^\svx9+2)mv=\v)2 +zvc)2zxv2^\so;U^)2l2^xsz$;"0xsy~}{,O{_v>29Nzv")9NNvjxcs0l9\+v^vU^)2cxsv^ +)cU_v>c0NsoL9zNsv^vxz^NNLv9\)zxz")9\+vjc"9)9c\vc$v)2zv"LUecNvCjxce^eNLv\ +c)v>2^)vLc0o>c0Nsv+0z""kv)xLv9)v^\sv"zzJmvF$mvR0Nzv%%v9\v8jjz\s9Evbvc$v` +2zv`z|eccGm >c0Nsv+0z""kv)xLv9)v^\sv"zzJmvF$mvR0Nzv%%v9\v8jjz\s9Evbvc$v` +\end{lcode} + +\section{Answer} + +\begin{comment} +%%%% the result of TeXing the above +This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6) + %&-line parsing enabled. +entering extended mode +(./codeans20.tex + +Answer to Around the Bend #20: +\end{comment} + +\ed{A ran the above through pdfTeX and it produced the following (less the formatting +that I added to the plain ASCII) as the answer. I suspect, though, that the command +\cs{ver} below is a typo and should not be there.} + +\begin{lcode} +\def\surd{{\mathchar"1270}} +\end{lcode} + produces a mathord atom with the symbol +vertically centered on the math axis. Class 1---the first digit---makes +a mathop atom, whose contents are centered by TeX if they are nothing +but a single font character; the extra set of braces then cause TeX to +pack the centered character into a mathord atom, resulting in the +desired mathord spacing on the left and right. On the other hand +\begin{lcode} +\ver\mathchardef\surd="0270 +\end{lcode} + while still producing a mathord atom, would +yield a really interesting position of the symbol (probably not what you +would guess; try it and see). Cf. Rule 11 in Appendix G of \emph{The TeXbook}. + +%%\endinput + + +\chapter{Variable number of arguments} + +%%\input{bend021} +% bend021.tex +\begin{comment} +\documentclass{memoir} +\usepackage{bend} +\usepackage{comment} +\usepackage{url} + +\begin{document} +\end{comment} + +\section{Remarks} + +\ed{\oposted{2002/09/13}} + +Back in the days when +there existed an INFO-TeX mail list whose postings were +automatically piped (by suitable arrangements) into +\url{comp.text.tex}, I launched a thing called `Around the Bend' +with the following explanation: +\begin{quote} +[Date: Thu 10 Oct 91] + +I would like to propose a regular department for INFO-TeX, +called `Around the Bend'. +It will +consist of macro-writing challenges on the level of the +dangerous-bend exercises +in the \emph{TeXbook}, +with interested parties invited to +collaborate and/or compete to find the best solution. My +motivation for doing this is partly selfish: to get more +feedback from other macro writers about some of the interesting +macro-writing problems that I run into. +\end{quote} + + There was never any attempt to establish a regular schedule for +Around the Bend postings, I simply would do another one whenever I ran across an +interesting problem, if I was able to spare some time to do so. The +series is archived at \url{CTAN:pub/tex/info/aro-bend} +for anyone who has an interest in looking at it. I also noticed that the +exercises and answers are available in \url{comp.text.tex} archives +through \url{groups.google.com}. + + In response to a question on July 24, 2002 from Antoine +Chambert-Loir\index{Chambert-Loir, Antoine} (with apologies for the delay in answering): +\begin{quote} + \ldots why did 'Around the Bend' stop? +There were nice challenges proposed there. +\end{quote} + +I am tempted to say `Well, actually they didn't stop, there was +just an unusually large gap in the aperiodic schedule'. + +But what I also wanted to say is that there are others quite as +capable as I am of devising good Around the Bend +exercises---I am thinking of a recent post by David Kastrup\index{Kastrup, David} +about a completely expandable string comparison macro---and it +occurred to me it might be better to invite interested parties +to sign up for an informal `editorial board' to issue further +exercises, so that other demands on my time do not have such a +dampening effect on the rate of output. I don't have any desire +to put restrictions on what goes out in continuation of the +series apart from a (fairly crucial) one of striving for high +quality and creativity. Send e-mail if you are interested, to +the address below. There are only some obvious questions of +coordination to address, such as trying (I think) to avoid two +different people posting different exercises at the same time. + +Turning now to the next exercise, prompted by a recent +\url{comp.text.tex} question from David Reitter\index{Reitter, David}: + +%======================================================================== + +%%*** Exercise 21: +\section{Exercise} + + Define a macro that takes a variable number +of arguments. Do it in the best way possible. For the sake of +concreteness, consider this somewhat contrived example as a test +case that your solution should be able to handle, though +possibly using a different syntax: +\begin{lcode} +\printdate -> today's date in preferred form +\printdate[Tuesday] -> Tuesday +\printdate[Tuesday][17] -> Tuesday the 17th +\printdate[Tuesday][17][9] -> Tuesday, September 17th +\printdate[Tuesday][17][9][2002] -> and so on +\printdate[Tuesday][17][9][2002][Gregorian calendar] -> and so forth +\end{lcode} + + The lines above illustrate six different ways of calling the +\cmd{\printdate} macro. The macro should print something appropriate +in each case, but the exact form of the output is a matter of +taste, it need not follow exactly what I have given here. + + Part of a good solution will be a good analysis of why one way +might be better than another. The solution that I came up with +is based on the question from David Reitter\index{Reitter, David} that originally +inspired this exercise, thus it assumes the context is LaTeX and +tries to solve the problem in a way that is natural for LaTeX. + + A straightforward solution based on existing examples of +multiple-option commands in the LaTeX kernel would qualify as +natural, but definitely not elegant since that would require +defining a separate macro to handle each stage of the multiple +option scanning. Non-LaTeX solutions are also considered to be +of interest. + +%======================================================================== + + I suggest posting your answers directly to comp.text.tex instead +of mailing them to me (as was done in the past), though +depending on how late you stayed up working on this entertaining +exercise instead of writing your thesis or balancing your +checkbook as you \emph{ought} to have been doing, you might want to +beware of posting in haste and wait until you have had some +sleep and a chance to reread what you wrote, to avoid +embarrassing oversights [\ldots said he, speaking from experience]. + + Please e-mail a copy in addition (or instead, if you like) to the +Around the Bend Editorial Board ... hmm, that gives me an idea \ldots [pausing to +consult the dictionary] make that the Supremely Honorable, +Ingenious and, in Special Honor of Knuth, Around the Bend Editorial +Board---whose size will not long remain one I dare say, +especially after the establishment of this glamorous name---at +\url{<see acronym>@pobox.com} + +%%Regards, Michael Downes + +\begin{comment} + target=_parent>...</A>@ams.org (Michael J Downes) writes: + <P> + <DIV class=qt id=qhide_741198 style="DISPLAY: block">> + ======================================================================== + > *** Exercise 21: > Define a macro that takes a + variable number of arguments. Do it in the > best way + possible. For the sake of concreteness, consider this somewhat + > contrived example as a test case that your solution should + be able to > handle, though possibly using a different + syntax: + <P>> \printdate + -> today's date in + preferred form > \printdate[Tuesday] + -> "Tuesday" > + \printdate[Tuesday][17] + -> "Tuesday the 17th" > + \printdate[Tuesday][17][9] -> + "Tuesday, September 17th" > + \printdate[Tuesday][17][9][2002] -> and so on > + \printdate[Tuesday][17][9][2002][Gregorian calendar] -> + and so forth + +\end{comment} + +\section{Answers} + + +%\textbf{David Kastrup (2002/09/14)} +\begin{solution}{Solution 1 (David Kastrup)}\index{Kastrup, David} + +\ed{\oposted{2002/09/14}} + +\begin{lcode} +\def\printdate{\count@\z@\toks@{}\printdate@a} +\def\printdate@a{\@ifnextchar[{\printdate@b}{\printdate@c}} +\def\printdate@b[#1]{\toks@\expandafter{\the\toks@{#1}}% + \advance\count@\@ne\printdate@a} +\def\printdate@c{\csname printdate@@\romannumeral\count@ + \expandafter\endcsname\the\toks@} +\end{lcode} + + You can now define the one-argument macro \cmd{\printdate@@i}, the +5-argument macro \cmd{\printdate@@v} and so on. + + \cmd{\printdate@c} might also contain other stuff. For testing, +we just define it as +\begin{lcode} +\def\printdate@c{\message{\number\count@\space arguments: \the\toks@}} +\end{lcode} + + This needs the LaTeX macro \cmd{\@ifnextchar}, of course. + + If you want to have various defaults in sequence and just want to +call \cmd{\printdate@@v}, you could write something like +\begin{lcode} +\def\printdate@c{\let\gobble@x\relax\expandafter\newcommand + \expandafter\gobble@x\expandafter[\number\count@]{}% + \edef\next{{Tuesday}{17}{9}{2002}{Gregorian calendar}% + \the\toks@}\expandafter\expandafter\expandafter + \printdate@@v\expandafter\gobble@x\next} +\end{lcode} + + Ok, this latter proposal is ugly. Better ideas? +% -- David Kastrup, Kriemhildstr. 15, 44793 Bochum Email: +\end{solution} + + +\begin{solution}{Solution 2 (mine)} + +\ed{\oposted{2002/09/20}} + +%\textbf{Michael J Downes (Sep 20, 2002)} + +Define a macro that takes a variable number of arguments. +and gave the following example application: +\begin{lcode} +\printdate -> today's date in preferred form +\printdate[Tuesday] -> Tuesday +\printdate[Tuesday][17] -> Tuesday the 17th +\printdate[Tuesday][17][9] -> Tuesday, September 17th +\printdate[Tuesday][17][9][2002] -> and so on +\end{lcode} + +My solution (see below), written with LaTeX in mind, has the + following characteristics: +\begin{itemize} +\item The kernel of the solution is not specific to a particular + user-level command; for each user-level command, only two + command-specific macros are needed: the top-level one invoked by + the user, and the internal one that handles all the arguments. + By contrast, the standard LaTeX method of handling multiple + options requires a separate command-specific macro for each step + of the argument scanning. +\item The number of optional arguments is quasi-limited. The number + of default values that you give in a command's definition + becomes an upper limit on the number of arguments that will be + scanned for. And if you supply twenty default values, the code + that ends up handling them will have to be more than a simple + TeX macro since macro arguments only go up to 9. +\item Commands defined with this method can be nested, because the + delimiters for the optional arguments are regular curly braces \verb?{ }?, + not square brackets [ ]. + +\end{itemize} + +The choice of square brackets in LaTeX for optional arguments is + OK for arguments whose values are suitably restricted, but when + used for arguments that may contain arbitrary text---in + particular, other commands with optional arguments---it becomes + a pitfall that many users have fallen into over the years, and + generally costing them an amount of lost time in inverse + proportion to their understanding of catcodes. (I.e., its worst + effects are on the kind of users that LaTeX was intended to + serve in the first place.) The most common examples in practice + are perhaps \cmd{\twocolumn}\verb?[...]? and \verb?\begin{thm}[...]?, but it could + also happen in the optional arguments of \cmd{\section}, \cmd{\caption}, or + \cmd{\cite}. + +The chief argument against using braces for optional arguments + came out coincidentally in another thread only a couple of days + ago, as stated by Heiko Oberdiek\index{Oberdiek, Heiko} on \url{comp.text.tex} +\begin{comment} +(<am6mb5$a1<A + href="http://groups.google.com/groups/unlock?msg=b6e2e27a4e4413f7&_done=/group/comp.text.tex/browse_thread/thread/cd0bd09362b1ac6c/b6e2e27a4e4413f7%3Flnk%3Dgst%26q%3Daround%2Bthe%2Bbend" + target=_parent>...</A>@n.ruf.uni-freiburg.de> comp.text.tex 17 + Sep 2002): +\end{comment} +%$ +\begin{quote} +How do you want to distinguish between a parameter and a +group, both enclosed in \verb?"{}"? Example: +\begin{lcode} +\foo{bar}{\bfseries bla} +\end{lcode} +\end{quote} + +But in practice it seems to me that this is not a significant + drawback. Savvy users would normally use the \verb?\textbf{...}? form + anyway (I hope). + +In fact the \verb?"{\whatever ...}"? form (called a \emph{declaration} in the + LaTeX book) is, in a certain sense, quite unnatural for a linear + language like TeX where the macro expansion works by simple + left-to-right substitution. At least, if used at document level + such a syntax makes it unnecessarily difficult to remap the + functions involved and therefore is a stumbling block in many + special applications. For example, it becomes feasible to add + italic corrections automatically only when we use the \cmd{\emph}\verb?{...}? + form rather than the \verb?{?\cmd{\em}\verb?...}? form. (There is an +\cmd{\aftergroup} + trick that would sort of do the job but only by placing some + assumptions on the usage that do not hold in the real world.) + + +%%%Regards, Michael Downes + +% <P>------------------------------------------------------------------------ +\begin{lcode} +\documentclass{article} +\usepackage{ifmtarg} +\makeatletter + +% If \cmd{\MyCmd} is defined as +% \VariableArgs{\MyCode ...}{{Default1}{Default2}} +% then +% \MyCmd -> \MyCode...{Default1}{Default2} +% \MyCmd{aaa} -> \MyCode...{aaa}{Default2} +% \MyCmd{a}{bc} -> \MyCode...{a}{bc} +% In other words, \VariableArgs takes two arguments <code> and <defaults> +% and if the invocation via \MyCmd finds $n$ actual arguments, the first +% $n$ default values are replaced by the actual arguments. +% +% In principle the number of optional arguments is "whatever \MyCode is +% able to handle" but if the number of defaults is $d$ then scanning +% will stop as soon as $d$ arguments have been read, if not before. +% In practice things will begin to get unwieldy after a dozen or so +% arguments, because the process of scanning one more +% actual argument involves rescanning the whole list of arguments +% each time (actual arguments read previously plus any remaining defaults). + +\newcommand{\VariableArgs}[2]{% + \toks@{#1}% + \@ifnextchar\bgroup{\AddArg #2{}@}{#1#2}} + +\def\AddArg#1#2@#3{% + \toks@\expandafter{\the\toks@{#3}}% + \edef\RunIt{\the\toks@}% + \@ifnextchar\bgroup{% + \ifx @#2@% + \begingroup + \def\AddArg{\endgroup \expandafter\RunIt\@gobble}% + \fi + \AddArg #2@% + }{% + \RunIt #2% + }% + } + +\newcommand{\printdate}{% + % If zero args, use \today. + \VariableArgs{\PrintDateFive}{{\today}{}{}{}{}}} + +% This example is slightly more complicated than necessary because it +% behaves differently depending on the number of arguments. +\newcommand{\PrintDateFive}[5]{% + % Always print #1, which might be \today (from the default value). + #1% + \@ifnotmtarg{#2#3#4#5}{% + % If only #1 & #2 are given, use a slightly different form. + \@ifmtarg{#3#4#5}{ the}{,}% + % Args 2,3,4,5: Print each one if nonempty, but rearranging the + % order slightly. + \@ifnotmtarg{#3}{ \MonthName{#3}}% + \@ifnotmtarg{#2}{ \OrdinalDay{#2}}% + \@ifnotmtarg{#4}{, #4}% + \@ifnotmtarg{#5}{ (#5)}% + }} + +\def\MonthName#1{% + \ifcase 0#1 \number\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December% + \else Thirteen's Month\fi} + +% If #2 is not a digit, use #1 +\def\LastDigit#1#2{% + \ifodd 0#21 \else #1\expandafter\@gobbletwo\fi\LastDigit #2} + +\def\OrdinalDay#1{#1% + \ifcase\LastDigit #1\space th\or st\or nd\or rd\else th\fi} + +\begin{document} +\noindent Testing: +\begin{enumerate}\setcounter{enumi}{-1} +\item \printdate +\item \printdate{Tuesday} +\item \printdate{Tuesday}{17} +\item \printdate{Tuesday}{17}{9} +\item \printdate{Tuesday}{17}{9}{2002} +\item \printdate{Tuesday}{17}{9}{2002}{Gregorian calendar} +\end{enumerate} +\end{document} +\end{lcode} + +\end{solution} + + +\begin{solution}{Solution 3 (Donald Arseneau)}\index{Arseneau, Donald} +%%\textbf{Donald Arseneau (2002/09/24)} + +\ed{\oposted{2002/09/24}} + +*** Exercise 21: \\ +Define a macro that takes a variable number of arguments. +\begin{lcode} +\printdate[Tuesday][17][9][2002][Gregorian calendar] -> and so forth +\end{lcode} + +I did it (acually before MD posed the challenge) +using \verb?{ }?, not \verb?[ ]?, and this answer does not match the challenge +in other ways. But I haven't got around to working it in the last week or so. + + Two features notably missing are: error checking for a bad +number when specifying the number of arguments, and provision +of default values for omitted arguments (they are all null +here). +(I also think I could make do with one fewer +\cmd{\MultiArgCollect} macros.) + + I think \verb?{}? delimiters really are the `best way' in regards to +nesting macros. The one problem is confusion with +non-explicit \verb?{?, and so I handle the most common case of \cmd{\bgroup}. + +\begin{lcode} +\makeatletter +\let\MultiArgBgroup={ + +\def\MultiArg#1#2{\begingroup + \let\bgroup\begingroup \let\egroup\endgroup + \expandafter\MultiArgCollect\romannumeral\number#1001\delimiter{#2}} + +\def\MultiArgCollect#1{\csname MultiArgCollect#1\endcsname} +\def\MultiArgCollectm#1\delimiter#2{% + \@ifnextchar\MultiArgBgroup + {\MultiArgCollectA#1\delimiter{#2}}% + {\MultiArgCollect#1\delimiter{#2{}}}} + +\def\MultiArgCollectA#1\delimiter#2#3{% + \MultiArgCollect#1\delimiter{#2{#3}}}} + +\def\MultiArgCollecti#1\delimiter#2{\endgroup#2} + +\newcommand\DeclareMultiArgCommand[2]{\expandafter + \Declare@MultiArg@ \csname MA\string_\string#1\endcsname{#1}{#2}} +\def\Declare@MultiArg@#1#2#3{% + \DeclareRobustCommand{#2}{\MultiArg{#3}{#1}} + \newcommand{#1}[#3]} + +\DeclareMultiArgCommand {\printdate}{6}{...} +\end{lcode} + +\end{solution} + +%%\endinput + +\indexintoc +\printindex + +\end{document} + + diff --git a/Master/texmf-dist/doc/generic/around-the-bend/README b/Master/texmf-dist/doc/generic/around-the-bend/README new file mode 100644 index 00000000000..2ba98edf0c7 --- /dev/null +++ b/Master/texmf-dist/doc/generic/around-the-bend/README @@ -0,0 +1,22 @@ + For several years in the early nineties the late Michael Downes presented +a series of TeX macro programming challenges he called Around the Bend. These +were archived on CTAN in info/aro-bend, but are now in info/challenges/aro-bend, +as 36 files called exercise.* and answer.*, but in general Around the Bend +is not well known even though it illuminates some of the essential, but +possibly more arcane, aspects of TeX. + + I have been presumptuous and taken the liberty of putting them all into +a single document, AroundTheBend.pdf, which might be more accessible than +the individual postings that form the original archive. I have also included +three challenges, namely 19, 20, and 21, that have not made it into the +CTAN archive. + + If Michael was still with us I imagine that he would have put no +restrictions on his work. With this in mind, the files comprising +AroundTheBend.tex, which is the basis for AroundTheBend.pdf, are under +the LPPL. + +Peter Wilson +25 July 2008 + + |