Commit 9ac506509beb413858ad250e680e2d32a1c113d3

Authored by m-holger
Committed by GitHub
2 parents bcf81a14 f3cbaafc

Merge pull request #1240 from m-holger/i1238

Fix QPDFOutlineDocumentHelper::resolveNamedDest  (fixes #1238)
ChangeLog
  1 +2024-07-14 M Holger <m.holger@qpdf.org>
  2 +
  3 + * Bug fix: handle named destinations where the entry is a
  4 + dictionary with /D entry instead of an explicit destination.
  5 + Fixes #1238.
  6 +
1 7 2024-07-04 M Holger <m.holger@qpdf.org>
2 8  
3   - * Treat corrupt JPEG streams as unfilterable. This avoids them
  9 + * Treat corrupt JPEG streams as unfilterable. This avoids them
4 10 getting uncompressed when writing PDF files with decode level all.
5 11  
6 12 2024-07-02 Jay Berkenbilt <ejb@ql.org>
... ... @@ -24,12 +30,12 @@
24 30  
25 31 2024-06-29 M Holger <m.holger@qpdf.org>
26 32  
27   - * Bug fix: in QPDFOutlineObjectHelper detect loops in the list of
  33 + * Bug fix: in QPDFOutlineObjectHelper detect loops in the list of
28 34 direct children of an outline item.
29 35  
30 36 2024-06-27 M Holger <m.holger@qpdf.org>
31 37  
32   - * Add sanity check in QPDF xref table reconstruction to reject
  38 + * Add sanity check in QPDF xref table reconstruction to reject
33 39 objects with impossibly large object id in order to improve
34 40 handling of severely damaged PDF files.
35 41  
... ...
libqpdf/QPDFOutlineDocumentHelper.cc
... ... @@ -68,30 +68,29 @@ QPDFOutlineDocumentHelper::resolveNamedDest(QPDFObjectHandle name)
68 68 QPDFObjectHandle result;
69 69 if (name.isName()) {
70 70 if (!m->dest_dict.isInitialized()) {
71   - m->dest_dict = this->qpdf.getRoot().getKey("/Dests");
72   - }
73   - if (m->dest_dict.isDictionary()) {
74   - QTC::TC("qpdf", "QPDFOutlineDocumentHelper name named dest");
75   - result = m->dest_dict.getKey(name.getName());
  71 + m->dest_dict = qpdf.getRoot().getKey("/Dests");
76 72 }
  73 + QTC::TC("qpdf", "QPDFOutlineDocumentHelper name named dest");
  74 + result= m->dest_dict.getKeyIfDict(name.getName());
77 75 } else if (name.isString()) {
78   - if (nullptr == m->names_dest) {
79   - QPDFObjectHandle names = this->qpdf.getRoot().getKey("/Names");
80   - if (names.isDictionary()) {
81   - QPDFObjectHandle dests = names.getKey("/Dests");
82   - if (dests.isDictionary()) {
83   - m->names_dest = std::make_shared<QPDFNameTreeObjectHelper>(dests, this->qpdf);
84   - }
  76 + if (!m->names_dest) {
  77 + auto dests = qpdf.getRoot().getKey("/Names").getKeyIfDict("/Dests");
  78 + if (dests.isDictionary()) {
  79 + m->names_dest = std::make_shared<QPDFNameTreeObjectHelper>(dests, qpdf);
85 80 }
86 81 }
87   - if (m->names_dest.get()) {
  82 + if (m->names_dest) {
88 83 if (m->names_dest->findObject(name.getUTF8Value(), result)) {
89 84 QTC::TC("qpdf", "QPDFOutlineDocumentHelper string named dest");
90 85 }
91 86 }
92 87 }
93 88 if (!result.isInitialized()) {
94   - result = QPDFObjectHandle::newNull();
  89 + return QPDFObjectHandle::newNull();
  90 + }
  91 + if (result.isDictionary()) {
  92 + QTC::TC("qpdf", "QPDFOutlineDocumentHelper named dest dictionary");
  93 + return result.getKey("/D");
95 94 }
96 95 return result;
97 96 }
... ...
qpdf/qpdf.testcov
... ... @@ -356,6 +356,7 @@ QPDFOutlineObjectHelper action dest 0
356 356 QPDFOutlineObjectHelper named dest 0
357 357 QPDFOutlineDocumentHelper name named dest 0
358 358 QPDFOutlineDocumentHelper string named dest 0
  359 +QPDFOutlineDocumentHelper named dest dictionary 0
359 360 QPDFOutlineObjectHelper loop 0
360 361 QPDFObjectHandle merge top type mismatch 0
361 362 QPDFObjectHandle merge shallow copy 0
... ...
qpdf/qtest/outlines.test
... ... @@ -18,6 +18,7 @@ my @outline_files = (
18 18 'page-labels-and-outlines',
19 19 'outlines-with-actions',
20 20 'outlines-with-old-root-dests',
  21 + 'outlines-with-old-root-dests-dict',
21 22 'outlines-with-loop',
22 23 );
23 24 my $n_tests = scalar(@outline_files);
... ...
qpdf/qtest/qpdf/outlines-with-old-root-dests-dict.out 0 → 100644
  1 +page 0: •Merschqaberschq (A) 1.2.2 -> 0: /XYZ null null null -> [ 6 0 R /XYZ null null null ]
  2 +page 1: •Gabeebeebee (name) 1.2.1 -> 1: /FitR 66 714 180 770 -> [ 7 0 R /FitR 66 714 180 770 ]
  3 +page 5: •Potato 1 -> 5: /XYZ null null null -> [ 11 0 R /XYZ null null null ]
  4 +page 11: •Mern 1.1 -> 11: /Fit -> [ 17 0 R /Fit ]
  5 +page 12: •Biherbadem 1.1.1 -> 12: /FitV 100 -> [ 18 0 R /FitV 100 ]
  6 +page 12: •Gawehwehweh 1.1.2 -> 12: /XYZ null null null -> [ 18 0 R /XYZ null null null ]
  7 +page 13: •Squash ÷πʬ÷ 1.2 -> 13: /FitH 792 -> [ 19 0 R /FitH 792 ]
  8 +page 15: •Salad 2 -> 15: /XYZ 66 756 3 -> [ 21 0 R /XYZ 66 756 3 ]
  9 +page 18: •Glarpenspliel (A, name) 1.1.1.1 -> 18: /XYZ null null null -> [ 24 0 R /XYZ null null null ]
  10 +page 19: •Hagoogamagoogle 1.1.1.2 -> 19: /XYZ null null null -> [ 25 0 R /XYZ null null null ]
  11 +page 22: •Jawarnianbvarwash 1.1.2.1 -> 22: /XYZ null null null -> [ 28 0 R /XYZ null null null ]
  12 +test 49 done
... ...
qpdf/qtest/qpdf/outlines-with-old-root-dests-dict.pdf 0 → 100644
  1 +%PDF-1.3
  2 +%¿÷¢þ
  3 +%QDF-1.0
  4 +
  5 +1 0 obj
  6 +<<
  7 + /PageLabels << /Nums [ 0 << /P (0) >> 1 << /S /R >> ] >>
  8 + /Outlines 2 0 R
  9 + /PageMode /UseOutlines
  10 + /Pages 3 0 R
  11 + /Type /Catalog
  12 + /Dests 107 0 R
  13 +>>
  14 +endobj
  15 +
  16 +2 0 obj
  17 +<<
  18 + /Count 6
  19 + /First 4 0 R
  20 + /Last 5 0 R
  21 + /Type /Outlines
  22 +>>
  23 +endobj
  24 +
  25 +3 0 obj
  26 +<<
  27 + /Count 30
  28 + /Kids [
  29 + 6 0 R
  30 + 7 0 R
  31 + 8 0 R
  32 + 9 0 R
  33 + 10 0 R
  34 + 11 0 R
  35 + 12 0 R
  36 + 13 0 R
  37 + 14 0 R
  38 + 15 0 R
  39 + 16 0 R
  40 + 17 0 R
  41 + 18 0 R
  42 + 19 0 R
  43 + 20 0 R
  44 + 21 0 R
  45 + 22 0 R
  46 + 23 0 R
  47 + 24 0 R
  48 + 25 0 R
  49 + 26 0 R
  50 + 27 0 R
  51 + 28 0 R
  52 + 29 0 R
  53 + 30 0 R
  54 + 31 0 R
  55 + 32 0 R
  56 + 33 0 R
  57 + 34 0 R
  58 + 35 0 R
  59 + ]
  60 + /Type /Pages
  61 +>>
  62 +endobj
  63 +
  64 +4 0 obj
  65 +<<
  66 + /Count 4
  67 + /Dest [
  68 + 11 0 R
  69 + /XYZ
  70 + null
  71 + null
  72 + null
  73 + ]
  74 + /First 36 0 R
  75 + /Last 37 0 R
  76 + /Next 5 0 R
  77 + /Parent 2 0 R
  78 + /Title (€Potato 1 -> 5: /XYZ null null null)
  79 + /Type /Outline
  80 +>>
  81 +endobj
  82 +
  83 +5 0 obj
  84 +<<
  85 + /Dest [
  86 + 21 0 R
  87 + /XYZ
  88 + 66
  89 + 756
  90 + 3
  91 + ]
  92 + /Parent 2 0 R
  93 + /Prev 4 0 R
  94 + /Title (€Salad 2 -> 15: /XYZ 66 756 3)
  95 + /Type /Outline
  96 +>>
  97 +endobj
  98 +
  99 +%% Page 1
  100 +6 0 obj
  101 +<<
  102 + /Contents 38 0 R
  103 + /MediaBox [
  104 + 0
  105 + 0
  106 + 612
  107 + 792
  108 + ]
  109 + /Parent 3 0 R
  110 + /Resources <<
  111 + /Font <<
  112 + /F1 40 0 R
  113 + >>
  114 + /ProcSet 41 0 R
  115 + >>
  116 + /Type /Page
  117 +>>
  118 +endobj
  119 +
  120 +%% Page 2
  121 +7 0 obj
  122 +<<
  123 + /Contents 42 0 R
  124 + /MediaBox [
  125 + 0
  126 + 0
  127 + 612
  128 + 792
  129 + ]
  130 + /Parent 3 0 R
  131 + /Resources <<
  132 + /Font <<
  133 + /F1 40 0 R
  134 + >>
  135 + /ProcSet 41 0 R
  136 + >>
  137 + /Type /Page
  138 +>>
  139 +endobj
  140 +
  141 +%% Page 3
  142 +8 0 obj
  143 +<<
  144 + /Contents 44 0 R
  145 + /MediaBox [
  146 + 0
  147 + 0
  148 + 612
  149 + 792
  150 + ]
  151 + /Parent 3 0 R
  152 + /Resources <<
  153 + /Font <<
  154 + /F1 40 0 R
  155 + >>
  156 + /ProcSet 41 0 R
  157 + >>
  158 + /Type /Page
  159 +>>
  160 +endobj
  161 +
  162 +%% Page 4
  163 +9 0 obj
  164 +<<
  165 + /Contents 46 0 R
  166 + /MediaBox [
  167 + 0
  168 + 0
  169 + 612
  170 + 792
  171 + ]
  172 + /Parent 3 0 R
  173 + /Resources <<
  174 + /Font <<
  175 + /F1 40 0 R
  176 + >>
  177 + /ProcSet 41 0 R
  178 + >>
  179 + /Type /Page
  180 +>>
  181 +endobj
  182 +
  183 +%% Page 5
  184 +10 0 obj
  185 +<<
  186 + /Contents 48 0 R
  187 + /MediaBox [
  188 + 0
  189 + 0
  190 + 612
  191 + 792
  192 + ]
  193 + /Parent 3 0 R
  194 + /Resources <<
  195 + /Font <<
  196 + /F1 40 0 R
  197 + >>
  198 + /ProcSet 41 0 R
  199 + >>
  200 + /Type /Page
  201 +>>
  202 +endobj
  203 +
  204 +%% Page 6
  205 +11 0 obj
  206 +<<
  207 + /Contents 50 0 R
  208 + /MediaBox [
  209 + 0
  210 + 0
  211 + 612
  212 + 792
  213 + ]
  214 + /Parent 3 0 R
  215 + /Resources <<
  216 + /Font <<
  217 + /F1 40 0 R
  218 + >>
  219 + /ProcSet 41 0 R
  220 + >>
  221 + /Type /Page
  222 +>>
  223 +endobj
  224 +
  225 +%% Page 7
  226 +12 0 obj
  227 +<<
  228 + /Contents 52 0 R
  229 + /MediaBox [
  230 + 0
  231 + 0
  232 + 612
  233 + 792
  234 + ]
  235 + /Parent 3 0 R
  236 + /Resources <<
  237 + /Font <<
  238 + /F1 40 0 R
  239 + >>
  240 + /ProcSet 41 0 R
  241 + >>
  242 + /Type /Page
  243 +>>
  244 +endobj
  245 +
  246 +%% Page 8
  247 +13 0 obj
  248 +<<
  249 + /Contents 54 0 R
  250 + /MediaBox [
  251 + 0
  252 + 0
  253 + 612
  254 + 792
  255 + ]
  256 + /Parent 3 0 R
  257 + /Resources <<
  258 + /Font <<
  259 + /F1 40 0 R
  260 + >>
  261 + /ProcSet 41 0 R
  262 + >>
  263 + /Type /Page
  264 +>>
  265 +endobj
  266 +
  267 +%% Page 9
  268 +14 0 obj
  269 +<<
  270 + /Contents 56 0 R
  271 + /MediaBox [
  272 + 0
  273 + 0
  274 + 612
  275 + 792
  276 + ]
  277 + /Parent 3 0 R
  278 + /Resources <<
  279 + /Font <<
  280 + /F1 40 0 R
  281 + >>
  282 + /ProcSet 41 0 R
  283 + >>
  284 + /Type /Page
  285 +>>
  286 +endobj
  287 +
  288 +%% Page 10
  289 +15 0 obj
  290 +<<
  291 + /Contents 58 0 R
  292 + /MediaBox [
  293 + 0
  294 + 0
  295 + 612
  296 + 792
  297 + ]
  298 + /Parent 3 0 R
  299 + /Resources <<
  300 + /Font <<
  301 + /F1 40 0 R
  302 + >>
  303 + /ProcSet 41 0 R
  304 + >>
  305 + /Type /Page
  306 +>>
  307 +endobj
  308 +
  309 +%% Page 11
  310 +16 0 obj
  311 +<<
  312 + /Contents 60 0 R
  313 + /MediaBox [
  314 + 0
  315 + 0
  316 + 612
  317 + 792
  318 + ]
  319 + /Parent 3 0 R
  320 + /Resources <<
  321 + /Font <<
  322 + /F1 40 0 R
  323 + >>
  324 + /ProcSet 41 0 R
  325 + >>
  326 + /Type /Page
  327 +>>
  328 +endobj
  329 +
  330 +%% Page 12
  331 +17 0 obj
  332 +<<
  333 + /Contents 62 0 R
  334 + /MediaBox [
  335 + 0
  336 + 0
  337 + 612
  338 + 792
  339 + ]
  340 + /Parent 3 0 R
  341 + /Resources <<
  342 + /Font <<
  343 + /F1 40 0 R
  344 + >>
  345 + /ProcSet 41 0 R
  346 + >>
  347 + /Type /Page
  348 +>>
  349 +endobj
  350 +
  351 +%% Page 13
  352 +18 0 obj
  353 +<<
  354 + /Contents 64 0 R
  355 + /MediaBox [
  356 + 0
  357 + 0
  358 + 612
  359 + 792
  360 + ]
  361 + /Parent 3 0 R
  362 + /Resources <<
  363 + /Font <<
  364 + /F1 40 0 R
  365 + >>
  366 + /ProcSet 41 0 R
  367 + >>
  368 + /Type /Page
  369 +>>
  370 +endobj
  371 +
  372 +%% Page 14
  373 +19 0 obj
  374 +<<
  375 + /Contents 66 0 R
  376 + /MediaBox [
  377 + 0
  378 + 0
  379 + 612
  380 + 792
  381 + ]
  382 + /Parent 3 0 R
  383 + /Resources <<
  384 + /Font <<
  385 + /F1 40 0 R
  386 + >>
  387 + /ProcSet 41 0 R
  388 + >>
  389 + /Type /Page
  390 +>>
  391 +endobj
  392 +
  393 +%% Page 15
  394 +20 0 obj
  395 +<<
  396 + /Contents 68 0 R
  397 + /MediaBox [
  398 + 0
  399 + 0
  400 + 612
  401 + 792
  402 + ]
  403 + /Parent 3 0 R
  404 + /Resources <<
  405 + /Font <<
  406 + /F1 40 0 R
  407 + >>
  408 + /ProcSet 41 0 R
  409 + >>
  410 + /Type /Page
  411 +>>
  412 +endobj
  413 +
  414 +%% Page 16
  415 +21 0 obj
  416 +<<
  417 + /Contents 70 0 R
  418 + /MediaBox [
  419 + 0
  420 + 0
  421 + 612
  422 + 792
  423 + ]
  424 + /Parent 3 0 R
  425 + /Resources <<
  426 + /Font <<
  427 + /F1 40 0 R
  428 + >>
  429 + /ProcSet 41 0 R
  430 + >>
  431 + /Type /Page
  432 +>>
  433 +endobj
  434 +
  435 +%% Page 17
  436 +22 0 obj
  437 +<<
  438 + /Contents 72 0 R
  439 + /MediaBox [
  440 + 0
  441 + 0
  442 + 612
  443 + 792
  444 + ]
  445 + /Parent 3 0 R
  446 + /Resources <<
  447 + /Font <<
  448 + /F1 40 0 R
  449 + >>
  450 + /ProcSet 41 0 R
  451 + >>
  452 + /Type /Page
  453 +>>
  454 +endobj
  455 +
  456 +%% Page 18
  457 +23 0 obj
  458 +<<
  459 + /Contents 74 0 R
  460 + /MediaBox [
  461 + 0
  462 + 0
  463 + 612
  464 + 792
  465 + ]
  466 + /Parent 3 0 R
  467 + /Resources <<
  468 + /Font <<
  469 + /F1 40 0 R
  470 + >>
  471 + /ProcSet 41 0 R
  472 + >>
  473 + /Type /Page
  474 +>>
  475 +endobj
  476 +
  477 +%% Page 19
  478 +24 0 obj
  479 +<<
  480 + /Contents 76 0 R
  481 + /MediaBox [
  482 + 0
  483 + 0
  484 + 612
  485 + 792
  486 + ]
  487 + /Parent 3 0 R
  488 + /Resources <<
  489 + /Font <<
  490 + /F1 40 0 R
  491 + >>
  492 + /ProcSet 41 0 R
  493 + >>
  494 + /Type /Page
  495 +>>
  496 +endobj
  497 +
  498 +%% Page 20
  499 +25 0 obj
  500 +<<
  501 + /Contents 78 0 R
  502 + /MediaBox [
  503 + 0
  504 + 0
  505 + 612
  506 + 792
  507 + ]
  508 + /Parent 3 0 R
  509 + /Resources <<
  510 + /Font <<
  511 + /F1 40 0 R
  512 + >>
  513 + /ProcSet 41 0 R
  514 + >>
  515 + /Type /Page
  516 +>>
  517 +endobj
  518 +
  519 +%% Page 21
  520 +26 0 obj
  521 +<<
  522 + /Contents 80 0 R
  523 + /MediaBox [
  524 + 0
  525 + 0
  526 + 612
  527 + 792
  528 + ]
  529 + /Parent 3 0 R
  530 + /Resources <<
  531 + /Font <<
  532 + /F1 40 0 R
  533 + >>
  534 + /ProcSet 41 0 R
  535 + >>
  536 + /Type /Page
  537 +>>
  538 +endobj
  539 +
  540 +%% Page 22
  541 +27 0 obj
  542 +<<
  543 + /Contents 82 0 R
  544 + /MediaBox [
  545 + 0
  546 + 0
  547 + 612
  548 + 792
  549 + ]
  550 + /Parent 3 0 R
  551 + /Resources <<
  552 + /Font <<
  553 + /F1 40 0 R
  554 + >>
  555 + /ProcSet 41 0 R
  556 + >>
  557 + /Type /Page
  558 +>>
  559 +endobj
  560 +
  561 +%% Page 23
  562 +28 0 obj
  563 +<<
  564 + /Contents 84 0 R
  565 + /MediaBox [
  566 + 0
  567 + 0
  568 + 612
  569 + 792
  570 + ]
  571 + /Parent 3 0 R
  572 + /Resources <<
  573 + /Font <<
  574 + /F1 40 0 R
  575 + >>
  576 + /ProcSet 41 0 R
  577 + >>
  578 + /Type /Page
  579 +>>
  580 +endobj
  581 +
  582 +%% Page 24
  583 +29 0 obj
  584 +<<
  585 + /Contents 86 0 R
  586 + /MediaBox [
  587 + 0
  588 + 0
  589 + 612
  590 + 792
  591 + ]
  592 + /Parent 3 0 R
  593 + /Resources <<
  594 + /Font <<
  595 + /F1 40 0 R
  596 + >>
  597 + /ProcSet 41 0 R
  598 + >>
  599 + /Type /Page
  600 +>>
  601 +endobj
  602 +
  603 +%% Page 25
  604 +30 0 obj
  605 +<<
  606 + /Contents 88 0 R
  607 + /MediaBox [
  608 + 0
  609 + 0
  610 + 612
  611 + 792
  612 + ]
  613 + /Parent 3 0 R
  614 + /Resources <<
  615 + /Font <<
  616 + /F1 40 0 R
  617 + >>
  618 + /ProcSet 41 0 R
  619 + >>
  620 + /Type /Page
  621 +>>
  622 +endobj
  623 +
  624 +%% Page 26
  625 +31 0 obj
  626 +<<
  627 + /Contents 90 0 R
  628 + /MediaBox [
  629 + 0
  630 + 0
  631 + 612
  632 + 792
  633 + ]
  634 + /Parent 3 0 R
  635 + /Resources <<
  636 + /Font <<
  637 + /F1 40 0 R
  638 + >>
  639 + /ProcSet 41 0 R
  640 + >>
  641 + /Type /Page
  642 +>>
  643 +endobj
  644 +
  645 +%% Page 27
  646 +32 0 obj
  647 +<<
  648 + /Contents 92 0 R
  649 + /MediaBox [
  650 + 0
  651 + 0
  652 + 612
  653 + 792
  654 + ]
  655 + /Parent 3 0 R
  656 + /Resources <<
  657 + /Font <<
  658 + /F1 40 0 R
  659 + >>
  660 + /ProcSet 41 0 R
  661 + >>
  662 + /Type /Page
  663 +>>
  664 +endobj
  665 +
  666 +%% Page 28
  667 +33 0 obj
  668 +<<
  669 + /Contents 94 0 R
  670 + /MediaBox [
  671 + 0
  672 + 0
  673 + 612
  674 + 792
  675 + ]
  676 + /Parent 3 0 R
  677 + /Resources <<
  678 + /Font <<
  679 + /F1 40 0 R
  680 + >>
  681 + /ProcSet 41 0 R
  682 + >>
  683 + /Type /Page
  684 +>>
  685 +endobj
  686 +
  687 +%% Page 29
  688 +34 0 obj
  689 +<<
  690 + /Contents 96 0 R
  691 + /MediaBox [
  692 + 0
  693 + 0
  694 + 612
  695 + 792
  696 + ]
  697 + /Parent 3 0 R
  698 + /Resources <<
  699 + /Font <<
  700 + /F1 40 0 R
  701 + >>
  702 + /ProcSet 41 0 R
  703 + >>
  704 + /Type /Page
  705 +>>
  706 +endobj
  707 +
  708 +%% Page 30
  709 +35 0 obj
  710 +<<
  711 + /Contents 98 0 R
  712 + /MediaBox [
  713 + 0
  714 + 0
  715 + 612
  716 + 792
  717 + ]
  718 + /Parent 3 0 R
  719 + /Resources <<
  720 + /Font <<
  721 + /F1 40 0 R
  722 + >>
  723 + /ProcSet 41 0 R
  724 + >>
  725 + /Type /Page
  726 +>>
  727 +endobj
  728 +
  729 +36 0 obj
  730 +<<
  731 + /Count 3
  732 + /Dest [
  733 + 17 0 R
  734 + /Fit
  735 + ]
  736 + /First 100 0 R
  737 + /Last 101 0 R
  738 + /Next 37 0 R
  739 + /Parent 4 0 R
  740 + /Title (€Mern 1.1 -> 11: /Fit)
  741 + /Type /Outline
  742 +>>
  743 +endobj
  744 +
  745 +37 0 obj
  746 +<<
  747 + /Count 2
  748 + /Dest [
  749 + 19 0 R
  750 + /FitH
  751 + 792
  752 + ]
  753 + /First 102 0 R
  754 + /Last 103 0 R
  755 + /Parent 4 0 R
  756 + /Prev 36 0 R
  757 + /Title <feff2022005300710075006100730068002000f703c002ac00f700200031002e00320020002d003e002000310033003a0020002f00460069007400480020003700390032>
  758 + /Type /Outline
  759 +>>
  760 +endobj
  761 +
  762 +%% Contents for page 1
  763 +38 0 obj
  764 +<<
  765 + /Length 39 0 R
  766 +>>
  767 +stream
  768 +BT
  769 + /F1 24 Tf
  770 + 72 720 Td
  771 + (Soup 0) Tj
  772 +ET
  773 +endstream
  774 +endobj
  775 +
  776 +39 0 obj
  777 +44
  778 +endobj
  779 +
  780 +40 0 obj
  781 +<<
  782 + /BaseFont /Helvetica
  783 + /Encoding /WinAnsiEncoding
  784 + /Name /F1
  785 + /Subtype /Type1
  786 + /Type /Font
  787 +>>
  788 +endobj
  789 +
  790 +41 0 obj
  791 +[
  792 + /PDF
  793 + /Text
  794 +]
  795 +endobj
  796 +
  797 +%% Contents for page 2
  798 +42 0 obj
  799 +<<
  800 + /Length 43 0 R
  801 +>>
  802 +stream
  803 +BT
  804 + /F1 24 Tf
  805 + 72 720 Td
  806 + (Soup 1) Tj
  807 +ET
  808 +endstream
  809 +endobj
  810 +
  811 +43 0 obj
  812 +44
  813 +endobj
  814 +
  815 +%% Contents for page 3
  816 +44 0 obj
  817 +<<
  818 + /Length 45 0 R
  819 +>>
  820 +stream
  821 +BT
  822 + /F1 24 Tf
  823 + 72 720 Td
  824 + (Soup 2) Tj
  825 +ET
  826 +endstream
  827 +endobj
  828 +
  829 +45 0 obj
  830 +44
  831 +endobj
  832 +
  833 +%% Contents for page 4
  834 +46 0 obj
  835 +<<
  836 + /Length 47 0 R
  837 +>>
  838 +stream
  839 +BT
  840 + /F1 24 Tf
  841 + 72 720 Td
  842 + (Soup 3) Tj
  843 +ET
  844 +endstream
  845 +endobj
  846 +
  847 +47 0 obj
  848 +44
  849 +endobj
  850 +
  851 +%% Contents for page 5
  852 +48 0 obj
  853 +<<
  854 + /Length 49 0 R
  855 +>>
  856 +stream
  857 +BT
  858 + /F1 24 Tf
  859 + 72 720 Td
  860 + (Soup 4) Tj
  861 +ET
  862 +endstream
  863 +endobj
  864 +
  865 +49 0 obj
  866 +44
  867 +endobj
  868 +
  869 +%% Contents for page 6
  870 +50 0 obj
  871 +<<
  872 + /Length 51 0 R
  873 +>>
  874 +stream
  875 +BT
  876 + /F1 24 Tf
  877 + 72 720 Td
  878 + (Soup 5) Tj
  879 +ET
  880 +endstream
  881 +endobj
  882 +
  883 +51 0 obj
  884 +44
  885 +endobj
  886 +
  887 +%% Contents for page 7
  888 +52 0 obj
  889 +<<
  890 + /Length 53 0 R
  891 +>>
  892 +stream
  893 +BT
  894 + /F1 24 Tf
  895 + 72 720 Td
  896 + (Soup 6) Tj
  897 +ET
  898 +endstream
  899 +endobj
  900 +
  901 +53 0 obj
  902 +44
  903 +endobj
  904 +
  905 +%% Contents for page 8
  906 +54 0 obj
  907 +<<
  908 + /Length 55 0 R
  909 +>>
  910 +stream
  911 +BT
  912 + /F1 24 Tf
  913 + 72 720 Td
  914 + (Soup 7) Tj
  915 +ET
  916 +endstream
  917 +endobj
  918 +
  919 +55 0 obj
  920 +44
  921 +endobj
  922 +
  923 +%% Contents for page 9
  924 +56 0 obj
  925 +<<
  926 + /Length 57 0 R
  927 +>>
  928 +stream
  929 +BT
  930 + /F1 24 Tf
  931 + 72 720 Td
  932 + (Soup 8) Tj
  933 +ET
  934 +endstream
  935 +endobj
  936 +
  937 +57 0 obj
  938 +44
  939 +endobj
  940 +
  941 +%% Contents for page 10
  942 +58 0 obj
  943 +<<
  944 + /Length 59 0 R
  945 +>>
  946 +stream
  947 +BT
  948 + /F1 24 Tf
  949 + 72 720 Td
  950 + (Soup 9) Tj
  951 +ET
  952 +endstream
  953 +endobj
  954 +
  955 +59 0 obj
  956 +44
  957 +endobj
  958 +
  959 +%% Contents for page 11
  960 +60 0 obj
  961 +<<
  962 + /Length 61 0 R
  963 +>>
  964 +stream
  965 +BT
  966 + /F1 24 Tf
  967 + 72 720 Td
  968 + (Soup 10) Tj
  969 +ET
  970 +endstream
  971 +endobj
  972 +
  973 +61 0 obj
  974 +45
  975 +endobj
  976 +
  977 +%% Contents for page 12
  978 +62 0 obj
  979 +<<
  980 + /Length 63 0 R
  981 +>>
  982 +stream
  983 +BT
  984 + /F1 24 Tf
  985 + 72 720 Td
  986 + (Soup 11) Tj
  987 +ET
  988 +endstream
  989 +endobj
  990 +
  991 +63 0 obj
  992 +45
  993 +endobj
  994 +
  995 +%% Contents for page 13
  996 +64 0 obj
  997 +<<
  998 + /Length 65 0 R
  999 +>>
  1000 +stream
  1001 +BT
  1002 + /F1 24 Tf
  1003 + 72 720 Td
  1004 + (Soup 12) Tj
  1005 +ET
  1006 +endstream
  1007 +endobj
  1008 +
  1009 +65 0 obj
  1010 +45
  1011 +endobj
  1012 +
  1013 +%% Contents for page 14
  1014 +66 0 obj
  1015 +<<
  1016 + /Length 67 0 R
  1017 +>>
  1018 +stream
  1019 +BT
  1020 + /F1 24 Tf
  1021 + 72 720 Td
  1022 + (Soup 13) Tj
  1023 +ET
  1024 +endstream
  1025 +endobj
  1026 +
  1027 +67 0 obj
  1028 +45
  1029 +endobj
  1030 +
  1031 +%% Contents for page 15
  1032 +68 0 obj
  1033 +<<
  1034 + /Length 69 0 R
  1035 +>>
  1036 +stream
  1037 +BT
  1038 + /F1 24 Tf
  1039 + 72 720 Td
  1040 + (Soup 14) Tj
  1041 +ET
  1042 +endstream
  1043 +endobj
  1044 +
  1045 +69 0 obj
  1046 +45
  1047 +endobj
  1048 +
  1049 +%% Contents for page 16
  1050 +70 0 obj
  1051 +<<
  1052 + /Length 71 0 R
  1053 +>>
  1054 +stream
  1055 +BT
  1056 + /F1 24 Tf
  1057 + 72 720 Td
  1058 + (Soup 15) Tj
  1059 +ET
  1060 +endstream
  1061 +endobj
  1062 +
  1063 +71 0 obj
  1064 +45
  1065 +endobj
  1066 +
  1067 +%% Contents for page 17
  1068 +72 0 obj
  1069 +<<
  1070 + /Length 73 0 R
  1071 +>>
  1072 +stream
  1073 +BT
  1074 + /F1 24 Tf
  1075 + 72 720 Td
  1076 + (Soup 16) Tj
  1077 +ET
  1078 +endstream
  1079 +endobj
  1080 +
  1081 +73 0 obj
  1082 +45
  1083 +endobj
  1084 +
  1085 +%% Contents for page 18
  1086 +74 0 obj
  1087 +<<
  1088 + /Length 75 0 R
  1089 +>>
  1090 +stream
  1091 +BT
  1092 + /F1 24 Tf
  1093 + 72 720 Td
  1094 + (Soup 17) Tj
  1095 +ET
  1096 +endstream
  1097 +endobj
  1098 +
  1099 +75 0 obj
  1100 +45
  1101 +endobj
  1102 +
  1103 +%% Contents for page 19
  1104 +76 0 obj
  1105 +<<
  1106 + /Length 77 0 R
  1107 +>>
  1108 +stream
  1109 +BT
  1110 + /F1 24 Tf
  1111 + 72 720 Td
  1112 + (Soup 18) Tj
  1113 +ET
  1114 +endstream
  1115 +endobj
  1116 +
  1117 +77 0 obj
  1118 +45
  1119 +endobj
  1120 +
  1121 +%% Contents for page 20
  1122 +78 0 obj
  1123 +<<
  1124 + /Length 79 0 R
  1125 +>>
  1126 +stream
  1127 +BT
  1128 + /F1 24 Tf
  1129 + 72 720 Td
  1130 + (Soup 19) Tj
  1131 +ET
  1132 +endstream
  1133 +endobj
  1134 +
  1135 +79 0 obj
  1136 +45
  1137 +endobj
  1138 +
  1139 +%% Contents for page 21
  1140 +80 0 obj
  1141 +<<
  1142 + /Length 81 0 R
  1143 +>>
  1144 +stream
  1145 +BT
  1146 + /F1 24 Tf
  1147 + 72 720 Td
  1148 + (Soup 20) Tj
  1149 +ET
  1150 +endstream
  1151 +endobj
  1152 +
  1153 +81 0 obj
  1154 +45
  1155 +endobj
  1156 +
  1157 +%% Contents for page 22
  1158 +82 0 obj
  1159 +<<
  1160 + /Length 83 0 R
  1161 +>>
  1162 +stream
  1163 +BT
  1164 + /F1 24 Tf
  1165 + 72 720 Td
  1166 + (Soup 21) Tj
  1167 +ET
  1168 +endstream
  1169 +endobj
  1170 +
  1171 +83 0 obj
  1172 +45
  1173 +endobj
  1174 +
  1175 +%% Contents for page 23
  1176 +84 0 obj
  1177 +<<
  1178 + /Length 85 0 R
  1179 +>>
  1180 +stream
  1181 +BT
  1182 + /F1 24 Tf
  1183 + 72 720 Td
  1184 + (Soup 22) Tj
  1185 +ET
  1186 +endstream
  1187 +endobj
  1188 +
  1189 +85 0 obj
  1190 +45
  1191 +endobj
  1192 +
  1193 +%% Contents for page 24
  1194 +86 0 obj
  1195 +<<
  1196 + /Length 87 0 R
  1197 +>>
  1198 +stream
  1199 +BT
  1200 + /F1 24 Tf
  1201 + 72 720 Td
  1202 + (Soup 23) Tj
  1203 +ET
  1204 +endstream
  1205 +endobj
  1206 +
  1207 +87 0 obj
  1208 +45
  1209 +endobj
  1210 +
  1211 +%% Contents for page 25
  1212 +88 0 obj
  1213 +<<
  1214 + /Length 89 0 R
  1215 +>>
  1216 +stream
  1217 +BT
  1218 + /F1 24 Tf
  1219 + 72 720 Td
  1220 + (Soup 24) Tj
  1221 +ET
  1222 +endstream
  1223 +endobj
  1224 +
  1225 +89 0 obj
  1226 +45
  1227 +endobj
  1228 +
  1229 +%% Contents for page 26
  1230 +90 0 obj
  1231 +<<
  1232 + /Length 91 0 R
  1233 +>>
  1234 +stream
  1235 +BT
  1236 + /F1 24 Tf
  1237 + 72 720 Td
  1238 + (Soup 25) Tj
  1239 +ET
  1240 +endstream
  1241 +endobj
  1242 +
  1243 +91 0 obj
  1244 +45
  1245 +endobj
  1246 +
  1247 +%% Contents for page 27
  1248 +92 0 obj
  1249 +<<
  1250 + /Length 93 0 R
  1251 +>>
  1252 +stream
  1253 +BT
  1254 + /F1 24 Tf
  1255 + 72 720 Td
  1256 + (Soup 26) Tj
  1257 +ET
  1258 +endstream
  1259 +endobj
  1260 +
  1261 +93 0 obj
  1262 +45
  1263 +endobj
  1264 +
  1265 +%% Contents for page 28
  1266 +94 0 obj
  1267 +<<
  1268 + /Length 95 0 R
  1269 +>>
  1270 +stream
  1271 +BT
  1272 + /F1 24 Tf
  1273 + 72 720 Td
  1274 + (Soup 27) Tj
  1275 +ET
  1276 +endstream
  1277 +endobj
  1278 +
  1279 +95 0 obj
  1280 +45
  1281 +endobj
  1282 +
  1283 +%% Contents for page 29
  1284 +96 0 obj
  1285 +<<
  1286 + /Length 97 0 R
  1287 +>>
  1288 +stream
  1289 +BT
  1290 + /F1 24 Tf
  1291 + 72 720 Td
  1292 + (Soup 28) Tj
  1293 +ET
  1294 +endstream
  1295 +endobj
  1296 +
  1297 +97 0 obj
  1298 +45
  1299 +endobj
  1300 +
  1301 +%% Contents for page 30
  1302 +98 0 obj
  1303 +<<
  1304 + /Length 99 0 R
  1305 +>>
  1306 +stream
  1307 +BT
  1308 + /F1 24 Tf
  1309 + 72 720 Td
  1310 + (Soup 29) Tj
  1311 +ET
  1312 +endstream
  1313 +endobj
  1314 +
  1315 +99 0 obj
  1316 +45
  1317 +endobj
  1318 +
  1319 +100 0 obj
  1320 +<<
  1321 + /Count -2
  1322 + /Dest [
  1323 + 18 0 R
  1324 + /FitV
  1325 + 100
  1326 + ]
  1327 + /First 104 0 R
  1328 + /Last 105 0 R
  1329 + /Next 101 0 R
  1330 + /Parent 36 0 R
  1331 + /Title (€Biherbadem 1.1.1 -> 12: /FitV 100)
  1332 + /Type /Outline
  1333 +>>
  1334 +endobj
  1335 +
  1336 +101 0 obj
  1337 +<<
  1338 + /Count 1
  1339 + /Dest [
  1340 + 18 0 R
  1341 + /XYZ
  1342 + null
  1343 + null
  1344 + null
  1345 + ]
  1346 + /First 106 0 R
  1347 + /Last 106 0 R
  1348 + /Parent 36 0 R
  1349 + /Prev 100 0 R
  1350 + /Title (€Gawehwehweh 1.1.2 -> 12: /XYZ null null null)
  1351 + /Type /Outline
  1352 +>>
  1353 +endobj
  1354 +
  1355 +102 0 obj
  1356 +<<
  1357 + /Dest /gabeebee
  1358 + /Next 103 0 R
  1359 + /Parent 37 0 R
  1360 + /Title (€Gabeebeebee (name) 1.2.1 -> 1: /FitR 66 714 180 770)
  1361 + /Type /Outline
  1362 +>>
  1363 +endobj
  1364 +
  1365 +103 0 obj
  1366 +<<
  1367 + /A <<
  1368 + /Type /Action
  1369 + /S /GoTo
  1370 + /D [
  1371 + 6 0 R
  1372 + /XYZ
  1373 + null
  1374 + null
  1375 + null
  1376 + ]
  1377 + >>
  1378 + /Parent 37 0 R
  1379 + /Prev 102 0 R
  1380 + /Title (€Merschqaberschq (A) 1.2.2 -> 0: /XYZ null null null)
  1381 + /Type /Outline
  1382 +>>
  1383 +endobj
  1384 +
  1385 +104 0 obj
  1386 +<<
  1387 + /A <<
  1388 + /Type /Action
  1389 + /S /GoTo
  1390 + /D /glarp
  1391 + >>
  1392 + /Next 105 0 R
  1393 + /Parent 100 0 R
  1394 + /Title (€Glarpenspliel (A, name) 1.1.1.1 -> 18: /XYZ null null null)
  1395 + /Type /Outline
  1396 +>>
  1397 +endobj
  1398 +
  1399 +105 0 obj
  1400 +<<
  1401 + /Dest [
  1402 + 25 0 R
  1403 + /XYZ
  1404 + null
  1405 + null
  1406 + null
  1407 + ]
  1408 + /Parent 100 0 R
  1409 + /Prev 104 0 R
  1410 + /Title (€Hagoogamagoogle 1.1.1.2 -> 19: /XYZ null null null)
  1411 + /Type /Outline
  1412 +>>
  1413 +endobj
  1414 +
  1415 +106 0 obj
  1416 +<<
  1417 + /Dest [
  1418 + 28 0 R
  1419 + /XYZ
  1420 + null
  1421 + null
  1422 + null
  1423 + ]
  1424 + /Parent 101 0 R
  1425 + /Title (€Jawarnianbvarwash 1.1.2.1 -> 22: /XYZ null null null)
  1426 + /Type /Outline
  1427 +>>
  1428 +endobj
  1429 +
  1430 +107 0 obj
  1431 +<<
  1432 + /gabeebee [
  1433 + 7 0 R
  1434 + /FitR
  1435 + 66
  1436 + 714
  1437 + 180
  1438 + 770
  1439 + ]
  1440 + /glarp <<
  1441 + /D [
  1442 + 24 0 R
  1443 + /XYZ
  1444 + null
  1445 + null
  1446 + null
  1447 + ]
  1448 + >>
  1449 +>>
  1450 +endobj
  1451 +
  1452 +xref
  1453 +0 108
  1454 +0000000000 65535 f
  1455 +0000000025 00000 n
  1456 +0000000198 00000 n
  1457 +0000000278 00000 n
  1458 +0000000667 00000 n
  1459 +0000000886 00000 n
  1460 +0000001061 00000 n
  1461 +0000001266 00000 n
  1462 +0000001471 00000 n
  1463 +0000001676 00000 n
  1464 +0000001881 00000 n
  1465 +0000002087 00000 n
  1466 +0000002293 00000 n
  1467 +0000002499 00000 n
  1468 +0000002705 00000 n
  1469 +0000002912 00000 n
  1470 +0000003119 00000 n
  1471 +0000003326 00000 n
  1472 +0000003533 00000 n
  1473 +0000003740 00000 n
  1474 +0000003947 00000 n
  1475 +0000004154 00000 n
  1476 +0000004361 00000 n
  1477 +0000004568 00000 n
  1478 +0000004775 00000 n
  1479 +0000004982 00000 n
  1480 +0000005189 00000 n
  1481 +0000005396 00000 n
  1482 +0000005603 00000 n
  1483 +0000005810 00000 n
  1484 +0000006017 00000 n
  1485 +0000006224 00000 n
  1486 +0000006431 00000 n
  1487 +0000006638 00000 n
  1488 +0000006845 00000 n
  1489 +0000007052 00000 n
  1490 +0000007248 00000 n
  1491 +0000007430 00000 n
  1492 +0000007759 00000 n
  1493 +0000007860 00000 n
  1494 +0000007880 00000 n
  1495 +0000007999 00000 n
  1496 +0000008058 00000 n
  1497 +0000008159 00000 n
  1498 +0000008202 00000 n
  1499 +0000008303 00000 n
  1500 +0000008346 00000 n
  1501 +0000008447 00000 n
  1502 +0000008490 00000 n
  1503 +0000008591 00000 n
  1504 +0000008634 00000 n
  1505 +0000008735 00000 n
  1506 +0000008778 00000 n
  1507 +0000008879 00000 n
  1508 +0000008922 00000 n
  1509 +0000009023 00000 n
  1510 +0000009066 00000 n
  1511 +0000009167 00000 n
  1512 +0000009211 00000 n
  1513 +0000009312 00000 n
  1514 +0000009356 00000 n
  1515 +0000009458 00000 n
  1516 +0000009502 00000 n
  1517 +0000009604 00000 n
  1518 +0000009648 00000 n
  1519 +0000009750 00000 n
  1520 +0000009794 00000 n
  1521 +0000009896 00000 n
  1522 +0000009940 00000 n
  1523 +0000010042 00000 n
  1524 +0000010086 00000 n
  1525 +0000010188 00000 n
  1526 +0000010232 00000 n
  1527 +0000010334 00000 n
  1528 +0000010378 00000 n
  1529 +0000010480 00000 n
  1530 +0000010524 00000 n
  1531 +0000010626 00000 n
  1532 +0000010670 00000 n
  1533 +0000010772 00000 n
  1534 +0000010816 00000 n
  1535 +0000010918 00000 n
  1536 +0000010962 00000 n
  1537 +0000011064 00000 n
  1538 +0000011108 00000 n
  1539 +0000011210 00000 n
  1540 +0000011254 00000 n
  1541 +0000011356 00000 n
  1542 +0000011400 00000 n
  1543 +0000011502 00000 n
  1544 +0000011546 00000 n
  1545 +0000011648 00000 n
  1546 +0000011692 00000 n
  1547 +0000011794 00000 n
  1548 +0000011838 00000 n
  1549 +0000011940 00000 n
  1550 +0000011984 00000 n
  1551 +0000012086 00000 n
  1552 +0000012130 00000 n
  1553 +0000012232 00000 n
  1554 +0000012252 00000 n
  1555 +0000012460 00000 n
  1556 +0000012696 00000 n
  1557 +0000012852 00000 n
  1558 +0000013105 00000 n
  1559 +0000013309 00000 n
  1560 +0000013508 00000 n
  1561 +0000013693 00000 n
  1562 +trailer <<
  1563 + /Root 1 0 R
  1564 + /Size 108
  1565 + /ID [<d52b0c17c216506962ae6743afec260f><d52b0c17c216506962ae6743afec260f>]
  1566 +>>
  1567 +startxref
  1568 +13865
  1569 +%%EOF
... ...