diff -pruN 2.6.0-1/CHANGELOG.md 2.8.1-1/CHANGELOG.md
--- 2.6.0-1/CHANGELOG.md	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/CHANGELOG.md	2022-07-25 20:41:21.000000000 +0000
@@ -1,5 +1,81 @@
 # CHANGELOG
 
+## Version 2.8.1, 2022-07-25
+
+### Bug Fixes (BUG)
+-  u_hash in AlgV4.compute_key (#1170)
+
+### Robustness (ROB)
+-  Fix loading of file from #134 (#1167)
+-  Cope with empty DecodeParams (#1165)
+
+### Documentation (DOC)
+-  Typo in merger deprecation warning message (#1166)
+
+### Maintenance (MAINT)
+-  Package updates; solve mypy strict remarks (#1163)
+
+### Testing (TST)
+-  Add test from #325 (#1169)
+
+Full Changelog: https://github.com/py-pdf/PyPDF2/compare/2.8.0...2.8.1
+
+
+## Version 2.8.0, 2022-07-24
+
+### New Features (ENH)
+-  Add writer.add_annotation, page.annotations, and generic.AnnotationBuilder (#1120)
+
+### Bug Fixes (BUG)
+-  Set /AS for /Btn form fields in writer (#1161)
+-  Ignore if /Perms verify failed (#1157)
+
+### Robustness (ROB)
+-  Cope with utf16 character for space calculation (#1155)
+-  Cope with null params for FitH / FitV destination (#1152)
+-  Handle outlines without valid destination (#1076)
+
+### Developer Experience (DEV)
+-  Introduce _utils.logger_warning (#1148)
+
+### Maintenance (MAINT)
+-  Break up parse_to_unicode (#1162)
+-  Add diagnostic output to exception in read_from_stream (#1159)
+-  Reduce PdfReader.read complexity (#1151)
+
+### Testing (TST)
+-  Add workflow tests found by arc testing (#1154)
+-  Decrypt file which is not encrypted (#1149)
+-  Test CryptRC4 encryption class; test image extraction filters (#1147)
+
+Full Changelog: https://github.com/py-pdf/PyPDF2/compare/2.7.0...2.8.0
+
+## Version 2.7.0, 2022-07-21
+
+### New Features (ENH)
+-  Add `outline_count` property (#1129)
+
+### Bug Fixes (BUG)
+-  Make reader.get_fields also return dropdowns with options (#1114)
+-  Add deprecated EncodedStreamObject functions back until PyPDF2==3.0.0 (#1139)
+
+### Robustness (ROB)
+-  Cope with missing /W entry (#1136)
+-  Cope with invalid parent xref (#1133)
+
+### Documentation (DOC)
+-  Contributors file (#1132)
+-  Fix type in signature of PdfWriter.add_uri (#1131)
+
+### Developer Experience (DEV)
+-  Add .git-blame-ignore-revs (#1141)
+
+### Code Style (STY)
+-  Fixing typos (#1137)
+-  Re-use code via get_outlines_property in tests (#1130)
+
+Full Changelog: https://github.com/py-pdf/PyPDF2/compare/2.6.0...2.7.0
+
 ## Version 2.6.0, 2022-07-17
 
 ### New Features (ENH)
diff -pruN 2.6.0-1/CONTRIBUTORS.md 2.8.1-1/CONTRIBUTORS.md
--- 2.6.0-1/CONTRIBUTORS.md	1970-01-01 00:00:00.000000000 +0000
+++ 2.8.1-1/CONTRIBUTORS.md	2022-07-25 20:41:21.000000000 +0000
@@ -0,0 +1,50 @@
+# Contributors
+
+PyPDF2 had a lot of contributors since it started with pyPdf in 2005. We are
+a free software project without any company affiliation. We cannot pay
+contributors, but we do value their contributions. A lot of time, effort, and
+expertise went into this project. With this list, we recognize those awesome
+people 🤗
+
+The list is definitely not complete. You can find more contributors via the git
+history and [GitHubs 'Contributors' feature](https://github.com/py-pdf/PyPDF2/graphs/contributors).
+
+## Contributors to the pyPdf / PyPDF2 project
+
+* [Karvonen, Harry](https://github.com/Hatell/)
+* [KourFrost](https://github.com/KourFrost)
+* [Lightup1](https://github.com/Lightup1)
+* [Pinheiro, Arthur](https://github.com/xilopaint)
+* [pubpub-zz](https://github.com/pubpub-zz): involved in community development
+* [Thoma, Martin](https://github.com/MartinThoma): Maintainer of PyPDF2 since April 2022. I hope to build a great community with many awesome contributors. [LinkedIn](https://www.linkedin.com/in/martin-thoma/) | [StackOverflow](https://stackoverflow.com/users/562769/martin-thoma) | [Blog](https://martin-thoma.com/)
+* ztravis
+
+## Adding a new contributor
+
+Contributors are:
+
+* Anybody who has an commit in main - no matter how big/small or how many. Also if it's via co-authored-by.
+* People who opened helpful issues:
+  (1) Bugs: with complete MCVE
+  (2) Well-described feature requests
+  (3) Potentially some more.
+  The maintainers of PyPDF2 have the last call on that one.
+* Community work: This is exceptional. If the maintainers of PyPDF2 see people
+  being super helpful in answering issues / discussions or being very active on
+  Stackoverflow, we also consider them being contributors to PyPDF2.
+
+Contributors can add themselves or ask via an Github Issue to be added.
+
+Please use the following format:
+
+```
+* Last name, First name: 140-characters of text; links to linkedin / github / other profiles and personal pages are ok
+
+OR
+
+* GitHub Username: 140-characters of text; links to linkedin / github / other profiles and personal pages are ok
+```
+
+and add the entry in the alphabetical order. People who . The 140 characters are everything visible after the `Name:`.
+
+Please don't use images.
diff -pruN 2.6.0-1/debian/changelog 2.8.1-1/debian/changelog
--- 2.6.0-1/debian/changelog	2022-07-19 05:20:15.000000000 +0000
+++ 2.8.1-1/debian/changelog	2022-07-30 13:56:59.000000000 +0000
@@ -1,3 +1,9 @@
+pypdf2 (2.8.1-1) unstable; urgency=medium
+
+  * New upstream release.
+
+ -- Laszlo Boszormenyi (GCS) <gcs@debian.org>  Sat, 30 Jul 2022 15:56:59 +0200
+
 pypdf2 (2.6.0-1) unstable; urgency=medium
 
   * New upstream release (closes: #1015296).
diff -pruN 2.6.0-1/debian/patches/disable-network-tests.patch 2.8.1-1/debian/patches/disable-network-tests.patch
--- 2.6.0-1/debian/patches/disable-network-tests.patch	2022-07-19 05:20:15.000000000 +0000
+++ 2.8.1-1/debian/patches/disable-network-tests.patch	2022-07-29 23:13:24.000000000 +0000
@@ -2,12 +2,12 @@ Description: disable network test for bu
  Just return from these tests.
 Author: Laszlo Boszormenyi (GCS) <gcs@debian.org>
 Forwarded: no
-Last-Update: 2022-07-19
+Last-Update: 2022-07-29
 
 ---
 
---- pypdf2-2.6.0.orig/tests/test_cmap.py
-+++ pypdf2-2.6.0/tests/test_cmap.py
+--- pypdf2-2.8.1.orig/tests/test_cmap.py
++++ pypdf2-2.8.1/tests/test_cmap.py
 @@ -12,6 +12,7 @@ def test_compute_space_width():
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/923/923406.pdf"
      name = "tika-923406.pdf"
@@ -41,8 +41,8 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
      for page in reader.pages:
          page.extract_text()
---- pypdf2-2.6.0.orig/tests/test_filters.py
-+++ pypdf2-2.6.0/tests/test_filters.py
+--- pypdf2-2.8.1.orig/tests/test_filters.py
++++ pypdf2-2.8.1/tests/test_filters.py
 @@ -201,6 +201,8 @@ def test_CCITTFaxDecode():
  def test_decompress_zlib_error():
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/952/952445.pdf"
@@ -61,9 +61,9 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
      with pytest.raises(PdfReadError) as exc:
          for page in reader.pages:
---- pypdf2-2.6.0.orig/tests/test_generic.py
-+++ pypdf2-2.6.0/tests/test_generic.py
-@@ -410,6 +410,7 @@ def test_dict_read_from_stream():
+--- pypdf2-2.8.1.orig/tests/test_generic.py
++++ pypdf2-2.8.1/tests/test_generic.py
+@@ -412,6 +412,7 @@ def test_dict_read_from_stream():
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/984/984877.pdf"
      name = "tika-984877.pdf"
  
@@ -71,7 +71,7 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
      for page in reader.pages:
          with pytest.warns(PdfReadWarning):
-@@ -420,6 +421,7 @@ def test_parse_content_stream_peek_perce
+@@ -422,6 +423,7 @@ def test_parse_content_stream_peek_perce
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/985/985770.pdf"
      name = "tika-985770.pdf"
  
@@ -79,7 +79,7 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
      for page in reader.pages:
          page.extract_text()
-@@ -430,6 +432,7 @@ def test_read_inline_image_no_has_q():
+@@ -432,6 +434,7 @@ def test_read_inline_image_no_has_q():
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/998/998719.pdf"
      name = "tika-998719.pdf"
  
@@ -87,7 +87,7 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
      for page in reader.pages:
          page.extract_text()
-@@ -439,6 +442,7 @@ def test_read_inline_image_loc_neg_1():
+@@ -441,6 +444,7 @@ def test_read_inline_image_loc_neg_1():
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/935/935066.pdf"
      name = "tika-935066.pdf"
  
@@ -95,7 +95,7 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
      for page in reader.pages:
          page.extract_text()
-@@ -448,6 +452,7 @@ def test_text_string_write_to_stream():
+@@ -450,6 +454,7 @@ def test_text_string_write_to_stream():
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/924/924562.pdf"
      name = "tika-924562.pdf"
  
@@ -103,7 +103,7 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
      for page in reader.pages:
          page.compress_content_streams()
-@@ -457,6 +462,7 @@ def test_name_object_read_from_stream_un
+@@ -459,6 +464,7 @@ def test_name_object_read_from_stream_un
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/974/974966.pdf"
      name = "tika-974966.pdf"
  
@@ -111,7 +111,7 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
      for page in reader.pages:
          page.extract_text()
-@@ -466,6 +472,7 @@ def test_bool_repr():
+@@ -468,6 +474,7 @@ def test_bool_repr():
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/932/932449.pdf"
      name = "tika-932449.pdf"
  
@@ -119,7 +119,7 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
      with open("tmp-fields-report.txt", "w") as fp:
          fields = reader.get_fields(fileobj=fp)
-@@ -479,6 +486,7 @@ def test_issue_997():
+@@ -481,6 +488,7 @@ def test_issue_997():
      url = "https://github.com/py-pdf/PyPDF2/files/8908874/Exhibit_A-2_930_Enterprise_Zone_Tax_Credits_final.pdf"
      name = "gh-issue-997.pdf"
  
@@ -127,8 +127,8 @@ Last-Update: 2022-07-19
      merger = PdfMerger()
      merged_filename = "tmp-out.pdf"
      with pytest.warns(PdfReadWarning, match="not defined"):
---- pypdf2-2.6.0.orig/tests/test_merger.py
-+++ pypdf2-2.6.0/tests/test_merger.py
+--- pypdf2-2.8.1.orig/tests/test_merger.py
++++ pypdf2-2.8.1/tests/test_merger.py
 @@ -162,6 +162,8 @@ def test_merge_write_closed_fh():
  def test_trim_outline_list():
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/995/995175.pdf"
@@ -209,9 +209,17 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
      merger = PdfMerger()
      merger.append(reader)
---- pypdf2-2.6.0.orig/tests/test_page.py
-+++ pypdf2-2.6.0/tests/test_page.py
-@@ -66,6 +66,7 @@ def test_page_operations(pdf_path, passw
+@@ -294,5 +311,7 @@ def test_iss1145():
+     # issue with FitH destination with null param
+     url = "https://github.com/py-pdf/PyPDF2/files/9164743/file-0.pdf"
+     name = "iss1145.pdf"
++
++    return
+     merger = PdfMerger()
+     merger.append(PdfReader(BytesIO(get_pdf_from_url(url, name=name))))
+--- pypdf2-2.8.1.orig/tests/test_page.py
++++ pypdf2-2.8.1/tests/test_page.py
+@@ -74,6 +74,7 @@ def test_page_operations(pdf_path, passw
      This should be done way more thoroughly: It should be checked if the
      output is as expected.
      """
@@ -219,7 +227,7 @@ Last-Update: 2022-07-19
      if pdf_path.startswith("http"):
          pdf_path = BytesIO(get_pdf_from_url(pdf_path, pdf_path.split("/")[-1]))
      else:
-@@ -225,6 +226,8 @@ def test_multi_language():
+@@ -233,6 +234,8 @@ def test_multi_language():
  
  def test_extract_text_single_quote_op():
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/964/964029.pdf"
@@ -228,7 +236,7 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name="tika-964029.pdf")))
      for page in reader.pages:
          page.extract_text()
-@@ -246,6 +249,7 @@ def test_extract_text_single_quote_op():
+@@ -259,6 +262,7 @@ def test_extract_text_single_quote_op():
      ],
  )
  def test_extract_text_page_pdf(url, name):
@@ -236,7 +244,7 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
      for page in reader.pages:
          page.extract_text()
-@@ -254,6 +258,8 @@ def test_extract_text_page_pdf(url, name
+@@ -267,6 +271,8 @@ def test_extract_text_page_pdf(url, name
  def test_extract_text_page_pdf_impossible_decode_xform():
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/972/972962.pdf"
      name = "tika-972962.pdf"
@@ -245,7 +253,7 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
      with pytest.warns(
          PdfReadWarning, match="impossible to decode XFormObject /Meta203"
-@@ -265,6 +271,8 @@ def test_extract_text_page_pdf_impossibl
+@@ -278,6 +284,8 @@ def test_extract_text_page_pdf_impossibl
  def test_extract_text_operator_t_star():  # L1266, L1267
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/967/967943.pdf"
      name = "tika-967943.pdf"
@@ -254,9 +262,17 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
      for page in reader.pages:
          page.extract_text()
---- pypdf2-2.6.0.orig/tests/test_reader.py
-+++ pypdf2-2.6.0/tests/test_reader.py
-@@ -668,6 +668,8 @@ def test_convertToInt_deprecated():
+@@ -452,6 +460,7 @@ def test_text_extraction_issue_1091():
+ def test_empyt_password_1088():
+     url = "https://corpora.tika.apache.org/base/docs/govdocs1/941/941536.pdf"
+     name = "tika-941536.pdf"
++    return
+     stream = BytesIO(get_pdf_from_url(url, name=name))
+     reader = PdfReader(stream)
+     len(reader.pages)
+--- pypdf2-2.8.1.orig/tests/test_reader.py
++++ pypdf2-2.8.1/tests/test_reader.py
+@@ -666,6 +666,8 @@ def test_convertToInt_deprecated():
  
  def test_iss925():
      url = "https://github.com/py-pdf/PyPDF2/files/8796328/1.pdf"
@@ -265,7 +281,7 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name="iss925.pdf")))
  
      for page_sliced in reader.pages:
-@@ -719,6 +721,7 @@ def test_read_form_416():
+@@ -717,6 +719,7 @@ def test_read_form_416():
      url = (
          "https://www.fda.gov/downloads/AboutFDA/ReportsManualsForms/Forms/UCM074728.pdf"
      )
@@ -273,7 +289,7 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name="issue_416.pdf")))
      fields = reader.get_form_text_fields()
      assert len(fields) > 0
-@@ -728,6 +731,7 @@ def test_extract_text_xref_issue_2():
+@@ -726,6 +729,7 @@ def test_extract_text_xref_issue_2():
      # pdf/0264cf510015b2a4b395a15cb23c001e.pdf
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/981/981961.pdf"
      msg = r"incorrect startxref pointer\(2\)"
@@ -281,7 +297,7 @@ Last-Update: 2022-07-19
      with pytest.warns(PdfReadWarning, match=msg):
          reader = PdfReader(BytesIO(get_pdf_from_url(url, name="tika-981961.pdf")))
      for page in reader.pages:
-@@ -738,6 +742,7 @@ def test_extract_text_xref_issue_3():
+@@ -736,6 +740,7 @@ def test_extract_text_xref_issue_3():
      # pdf/0264cf510015b2a4b395a15cb23c001e.pdf
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/977/977774.pdf"
      msg = r"incorrect startxref pointer\(3\)"
@@ -289,7 +305,7 @@ Last-Update: 2022-07-19
      with pytest.warns(PdfReadWarning, match=msg):
          reader = PdfReader(BytesIO(get_pdf_from_url(url, name="tika-977774.pdf")))
      for page in reader.pages:
-@@ -747,6 +752,7 @@ def test_extract_text_xref_issue_3():
+@@ -745,6 +750,7 @@ def test_extract_text_xref_issue_3():
  def test_extract_text_pdf15():
      # pdf/0264cf510015b2a4b395a15cb23c001e.pdf
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/976/976030.pdf"
@@ -297,7 +313,7 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name="tika-976030.pdf")))
      for page in reader.pages:
          page.extract_text()
-@@ -755,6 +761,7 @@ def test_extract_text_pdf15():
+@@ -753,6 +759,7 @@ def test_extract_text_pdf15():
  def test_extract_text_xref_table_21_bytes_clrf():
      # pdf/0264cf510015b2a4b395a15cb23c001e.pdf
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/956/956939.pdf"
@@ -305,7 +321,7 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name="tika-956939.pdf")))
      for page in reader.pages:
          page.extract_text()
-@@ -763,6 +770,7 @@ def test_extract_text_xref_table_21_byte
+@@ -761,6 +768,7 @@ def test_extract_text_xref_table_21_byte
  def test_get_fields():
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/972/972486.pdf"
      name = "tika-972486.pdf"
@@ -313,15 +329,14 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
      fields = reader.get_fields()
      assert fields is not None
-@@ -773,6 +781,7 @@ def test_get_fields():
+@@ -773,12 +781,14 @@ def test_get_fields():
  def test_get_fields_read_else_block():
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/934/934771.pdf"
      name = "tika-934771.pdf"
 +    return
-     with pytest.raises(PdfReadError) as exc:
-         PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
-     assert exc.value.args[0] == "Could not find xref table at specified location"
-@@ -781,6 +790,7 @@ def test_get_fields_read_else_block():
+     PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
+ 
+ 
  def test_get_fields_read_else_block2():
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/914/914902.pdf"
      name = "tika-914902.pdf"
@@ -329,15 +344,14 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
      fields = reader.get_fields()
      assert fields is None
-@@ -789,6 +799,7 @@ def test_get_fields_read_else_block2():
+@@ -788,12 +798,14 @@ def test_get_fields_read_else_block2():
  def test_get_fields_read_else_block3():
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/957/957721.pdf"
      name = "tika-957721.pdf"
 +    return
-     with pytest.raises(PdfReadError) as exc:
-         PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
-     assert exc.value.args[0] == "Could not find xref table at specified location"
-@@ -797,6 +808,7 @@ def test_get_fields_read_else_block3():
+     PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
+ 
+ 
  def test_metadata_is_none():
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/963/963692.pdf"
      name = "tika-963692.pdf"
@@ -345,7 +359,7 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
      assert reader.metadata is None
  
-@@ -804,6 +816,7 @@ def test_metadata_is_none():
+@@ -801,6 +813,7 @@ def test_metadata_is_none():
  def test_get_fields_read_write_report():
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/909/909655.pdf"
      name = "tika-909655.pdf"
@@ -353,15 +367,7 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
      with open("tmp-fields-report.txt", "w") as fp:
          fields = reader.get_fields(fileobj=fp)
-@@ -816,6 +829,7 @@ def test_get_fields_read_write_report():
- def test_unexpected_destination():
-     url = "https://corpora.tika.apache.org/base/docs/govdocs1/913/913678.pdf"
-     name = "tika-913678.pdf"
-+    return
-     reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
-     merger = PdfMerger()
-     with pytest.raises(PdfReadError) as exc:
-@@ -838,6 +852,7 @@ def test_xfa(src):
+@@ -825,6 +838,7 @@ def test_xfa(src):
  def test_xfa_non_empty():
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/942/942050.pdf"
      name = "tika-942050.pdf"
@@ -369,7 +375,7 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
      assert list(reader.xfa.keys()) == [
          "preamble",
-@@ -865,6 +880,7 @@ def test_header(src, pdf_header):
+@@ -852,6 +866,7 @@ def test_header(src, pdf_header):
  def test_outline_color():
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/924/924546.pdf"
      name = "tika-924546.pdf"
@@ -377,7 +383,7 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
      assert reader.outlines[0].color == [0, 0, 1]
  
-@@ -872,6 +888,7 @@ def test_outline_color():
+@@ -859,6 +874,7 @@ def test_outline_color():
  def test_outline_font_format():
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/924/924546.pdf"
      name = "tika-924546.pdf"
@@ -385,9 +391,33 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
      assert reader.outlines[0].font_format == 2
  
---- pypdf2-2.6.0.orig/tests/test_workflows.py
-+++ pypdf2-2.6.0/tests/test_workflows.py
-@@ -180,6 +180,7 @@ def test_rotate_45():
+@@ -980,6 +996,7 @@ def test_outline_missing_title():
+ def test_outline_with_missing_named_destination():
+     url = "https://corpora.tika.apache.org/base/docs/govdocs1/913/913678.pdf"
+     name = "tika-913678.pdf"
++    return
+     reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
+     # outline items in document reference a named destination that is not defined
+     assert reader.outlines[1][0].title.startswith("Report for 2002AZ3B: Microbial")
+@@ -988,6 +1005,7 @@ def test_outline_with_missing_named_dest
+ def test_outline_with_empty_action():
+     url = "https://corpora.tika.apache.org/base/docs/govdocs1/924/924546.pdf"
+     name = "tika-924546.pdf"
++    return
+     reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
+     # outline (entitled Tables and Figures) utilize an empty action (/A)
+     # that has no type or destination
+@@ -1006,6 +1024,7 @@ def test_PdfReaderMultipleDefinitions():
+     # iss325
+     url = "https://github.com/py-pdf/PyPDF2/files/9176644/multipledefs.pdf"
+     name = "multipledefs.pdf"
++    return
+     reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
+     with pytest.warns(PdfReadWarning) as w:
+         reader.pages[0].extract_text()
+--- pypdf2-2.8.1.orig/tests/test_workflows.py
++++ pypdf2-2.8.1/tests/test_workflows.py
+@@ -195,6 +195,7 @@ def test_rotate_45():
      ],
  )
  def test_extract_textbench(enable, url, pages, print_result=False):
@@ -395,7 +425,7 @@ Last-Update: 2022-07-19
      if not enable:
          return
      try:
-@@ -208,6 +209,7 @@ def test_extract_textbench(enable, url,
+@@ -223,6 +224,7 @@ def test_extract_textbench(enable, url,
      ],
  )
  def test_overlay(base_path, overlay_path):
@@ -403,7 +433,7 @@ Last-Update: 2022-07-19
      if base_path.startswith("http"):
          base_path = BytesIO(get_pdf_from_url(base_path, name="tika-935981.pdf"))
      else:
-@@ -238,6 +240,7 @@ def test_overlay(base_path, overlay_path
+@@ -253,6 +255,7 @@ def test_overlay(base_path, overlay_path
      ],
  )
  def test_merge_with_warning(url, name):
@@ -411,7 +441,7 @@ Last-Update: 2022-07-19
      data = BytesIO(get_pdf_from_url(url, name=name))
      reader = PdfReader(data)
      merger = PdfMerger()
-@@ -259,6 +262,7 @@ def test_merge_with_warning(url, name):
+@@ -274,6 +277,7 @@ def test_merge_with_warning(url, name):
      ],
  )
  def test_merge(url, name):
@@ -419,7 +449,7 @@ Last-Update: 2022-07-19
      data = BytesIO(get_pdf_from_url(url, name=name))
      reader = PdfReader(data)
      merger = PdfMerger()
-@@ -279,6 +283,7 @@ def test_merge(url, name):
+@@ -294,6 +298,7 @@ def test_merge(url, name):
      ],
  )
  def test_get_metadata(url, name):
@@ -427,7 +457,7 @@ Last-Update: 2022-07-19
      data = BytesIO(get_pdf_from_url(url, name=name))
      reader = PdfReader(data)
      reader.metadata
-@@ -294,6 +299,7 @@ def test_get_metadata(url, name):
+@@ -313,6 +318,7 @@ def test_get_metadata(url, name):
      ],
  )
  def test_extract_text(url, name):
@@ -435,7 +465,7 @@ Last-Update: 2022-07-19
      data = BytesIO(get_pdf_from_url(url, name=name))
      reader = PdfReader(data)
      reader.metadata
-@@ -309,6 +315,7 @@ def test_extract_text(url, name):
+@@ -328,6 +334,7 @@ def test_extract_text(url, name):
      ],
  )
  def test_compress(url, name):
@@ -443,16 +473,23 @@ Last-Update: 2022-07-19
      data = BytesIO(get_pdf_from_url(url, name=name))
      reader = PdfReader(data)
      # TODO: which page exactly?
-@@ -322,6 +329,8 @@ def test_compress(url, name):
- def test_get_fields():
-     url = "https://corpora.tika.apache.org/base/docs/govdocs1/961/961883.pdf"
-     name = "tika-961883.pdf"
-+
+@@ -348,6 +355,7 @@ def test_compress(url, name):
+     ],
+ )
+ def test_get_fields_warns(url, name):
 +    return
      data = BytesIO(get_pdf_from_url(url, name=name))
      reader = PdfReader(data)
      with open("tmp.txt", "w") as fp:
-@@ -337,6 +346,8 @@ def test_get_fields():
+@@ -370,6 +378,7 @@ def test_get_fields_warns(url, name):
+     ],
+ )
+ def test_get_fields_no_warning(url, name):
++    return
+     data = BytesIO(get_pdf_from_url(url, name=name))
+     reader = PdfReader(data)
+     with open("tmp.txt", "w") as fp:
+@@ -384,6 +393,8 @@ def test_get_fields_no_warning(url, name
  def test_scale_rectangle_indirect_object():
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/999/999944.pdf"
      name = "tika-999944.pdf"
@@ -461,7 +498,7 @@ Last-Update: 2022-07-19
      data = BytesIO(get_pdf_from_url(url, name=name))
      reader = PdfReader(data)
  
-@@ -405,6 +416,7 @@ def test_merge_output():
+@@ -468,6 +479,7 @@ def test_merge_output():
      ],
  )
  def test_image_extraction(url, name):
@@ -469,8 +506,40 @@ Last-Update: 2022-07-19
      data = BytesIO(get_pdf_from_url(url, name=name))
      reader = PdfReader(data)
  
---- pypdf2-2.6.0.orig/tests/test_writer.py
-+++ pypdf2-2.6.0/tests/test_writer.py
+@@ -507,6 +519,7 @@ def test_image_extraction(url, name):
+     ],
+ )
+ def test_image_extraction2(url, name):
++    return
+     data = BytesIO(get_pdf_from_url(url, name=name))
+     reader = PdfReader(data)
+ 
+@@ -546,6 +559,7 @@ def test_image_extraction2(url, name):
+     ],
+ )
+ def test_get_outline(url, name):
++    return
+     data = BytesIO(get_pdf_from_url(url, name=name))
+     reader = PdfReader(data)
+     reader.outlines
+@@ -565,6 +579,7 @@ def test_get_outline(url, name):
+     ],
+ )
+ def test_get_xfa(url, name):
++    return
+     data = BytesIO(get_pdf_from_url(url, name=name))
+     reader = PdfReader(data)
+     reader.xfa
+@@ -584,6 +599,7 @@ def test_get_xfa(url, name):
+     ],
+ )
+ def test_get_fonts(url, name):
++    return
+     data = BytesIO(get_pdf_from_url(url, name=name))
+     reader = PdfReader(data)
+     for page in reader.pages:
+--- pypdf2-2.8.1.orig/tests/test_writer.py
++++ pypdf2-2.8.1/tests/test_writer.py
 @@ -485,6 +485,8 @@ def test_sweep_indirect_references_nullo
      # TODO: Check this more closely... this looks weird
      url = "https://corpora.tika.apache.org/base/docs/govdocs1/924/924666.pdf"
@@ -489,8 +558,8 @@ Last-Update: 2022-07-19
      reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
      merger = PdfMerger()
      merger.append(reader)
---- pypdf2-2.6.0.orig/tests/test_xmp.py
-+++ pypdf2-2.6.0/tests/test_xmp.py
+--- pypdf2-2.8.1.orig/tests/test_xmp.py
++++ pypdf2-2.8.1/tests/test_xmp.py
 @@ -98,6 +98,7 @@ def test_identity(x):
      ],
  )
diff -pruN 2.6.0-1/docs/conf.py 2.8.1-1/docs/conf.py
--- 2.6.0-1/docs/conf.py	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/docs/conf.py	2022-07-25 20:41:21.000000000 +0000
@@ -17,6 +17,7 @@ sys.path.insert(0, os.path.abspath("."))
 sys.path.insert(0, os.path.abspath("../"))
 
 shutil.copyfile("../CHANGELOG.md", "meta/CHANGELOG.md")
+shutil.copyfile("../CONTRIBUTORS.md", "meta/CONTRIBUTORS.md")
 
 # -- Project information -----------------------------------------------------
 
diff -pruN 2.6.0-1/docs/index.rst 2.8.1-1/docs/index.rst
--- 2.6.0-1/docs/index.rst	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/docs/index.rst	2022-07-25 20:41:21.000000000 +0000
@@ -50,6 +50,7 @@ You can contribute to `PyPDF2 on Github
    modules/RectangleObject
    modules/Field
    modules/PageRange
+   modules/AnnotationBuilder
 
 .. toctree::
    :caption: Developer Guide
@@ -67,6 +68,7 @@ You can contribute to `PyPDF2 on Github
    meta/CHANGELOG
    meta/project-governance
    meta/history
+   meta/CONTRIBUTORS
    meta/comparisons
    meta/faq
 
diff -pruN 2.6.0-1/docs/meta/project-governance.md 2.8.1-1/docs/meta/project-governance.md
--- 2.6.0-1/docs/meta/project-governance.md	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/docs/meta/project-governance.md	2022-07-25 20:41:21.000000000 +0000
@@ -71,7 +71,7 @@ as their mother tongue. We try our best
 The community can expect the following:
 
 * The **benevolent dictator** tries their best to make decisions from which the overall
-  community profits. The benevolent dictator is aware that his/her decisons can shape the
+  community profits. The benevolent dictator is aware that his/her decisions can shape the
   overall community. Once the benevolent dictator notices that she/he doesn't have the time
   to advance PyPDF2, he/she looks for a new benevolent dictator. As it is expected
   that the benevolent dictator will step down at some point of their choice
diff -pruN 2.6.0-1/docs/modules/AnnotationBuilder.rst 2.8.1-1/docs/modules/AnnotationBuilder.rst
--- 2.6.0-1/docs/modules/AnnotationBuilder.rst	1970-01-01 00:00:00.000000000 +0000
+++ 2.8.1-1/docs/modules/AnnotationBuilder.rst	2022-07-25 20:41:21.000000000 +0000
@@ -0,0 +1,7 @@
+The AnnotationBuilder Class
+---------------------------
+
+.. autoclass:: PyPDF2.generic.AnnotationBuilder
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff -pruN 2.6.0-1/docs/user/adding-pdf-annotations.md 2.8.1-1/docs/user/adding-pdf-annotations.md
--- 2.6.0-1/docs/user/adding-pdf-annotations.md	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/docs/user/adding-pdf-annotations.md	2022-07-25 20:41:21.000000000 +0000
@@ -14,3 +14,71 @@ writer.add_attachment("smile.png", data)
 with open("output.pdf", "wb") as output_stream:
     writer.write(output_stream)
 ```
+
+
+## Free Text
+
+If you want to add text in a box like this
+
+![](free-text-annotation.png)
+
+you can use the {py:class}`AnnotationBuilder <PyPDF2.generic.AnnotationBuilder>`:
+
+```python
+from PyPDF2 import PdfReader, PdfWriter
+from PyPDF2.generic import AnnotationBuilder
+
+# Fill the writer with the pages you want
+pdf_path = os.path.join(RESOURCE_ROOT, "crazyones.pdf")
+reader = PdfReader(pdf_path)
+page = reader.pages[0]
+writer = PdfWriter()
+writer.add_page(page)
+
+# Create the annotation and add it
+annotation = AnnotationBuilder.free_text(
+    "Hello World\nThis is the second line!",
+    rect=(50, 550, 200, 650),
+    font="Arial",
+    bold=True,
+    italic=True,
+    font_size="20pt",
+    font_color="00ff00",
+    border_color="0000ff",
+    bg_color="cdcdcd",
+)
+writer.add_annotation(page_number=0, annotation=annotation)
+
+# Write the annotated file to disk
+with open("annotated-pdf.pdf", "wb") as fp:
+    writer.write(fp)
+```
+
+## Line
+
+If you want to add a line like this:
+
+![](annotation-line.png)
+
+you can use the {py:class}`AnnotationBuilder <PyPDF2.generic.AnnotationBuilder>`:
+
+```python
+pdf_path = os.path.join(RESOURCE_ROOT, "crazyones.pdf")
+reader = PdfReader(pdf_path)
+page = reader.pages[0]
+writer = PdfWriter()
+writer.add_page(page)
+
+# Add the line
+annotation = AnnotationBuilder.line(
+    text="Hello World\nLine2",
+    rect=(50, 550, 200, 650),
+    p1=(50, 550),
+    p2=(200, 650),
+)
+writer.add_annotation(page_number=0, annotation=annotation)
+
+# Write the annotated file to disk
+with open("annotated-pdf.pdf", "wb") as fp:
+    writer.write(fp)
+```
Binary files 2.6.0-1/docs/user/annotation-line.png and 2.8.1-1/docs/user/annotation-line.png differ
Binary files 2.6.0-1/docs/user/free-text-annotation.png and 2.8.1-1/docs/user/free-text-annotation.png differ
diff -pruN 2.6.0-1/.git-blame-ignore-revs 2.8.1-1/.git-blame-ignore-revs
--- 2.6.0-1/.git-blame-ignore-revs	1970-01-01 00:00:00.000000000 +0000
+++ 2.8.1-1/.git-blame-ignore-revs	2022-07-25 20:41:21.000000000 +0000
@@ -0,0 +1,15 @@
+# This file helps us to ignore style / formatting / doc changes
+# in git blame. That is useful when we're trying to find the root cause of an
+# error.
+
+# Docstring formatting
+a89ff74d8c0203278a039d9496a3d8df4d134f84
+
+# STY: Apply pre-commit (black, isort) + use snake_case variables (#832)
+eef03d935dfeacaa75848b39082cf94d833d3174
+
+# STY: Apply black and isort
+baeb7d23278de0f8d00ca9f2b656bf0674f08937
+
+# STY: Documentation, Variable names (#839)
+444fca22836df061d9d23e71ffb7d68edcdfa766
diff -pruN 2.6.0-1/Makefile 2.8.1-1/Makefile
--- 2.6.0-1/Makefile	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/Makefile	2022-07-25 20:41:21.000000000 +0000
@@ -31,3 +31,6 @@ mutation-results:
 
 benchmark:
 	pytest tests/bench.py
+
+mypy:
+	mypy PyPDF2 --ignore-missing-imports --check-untyped --strict
diff -pruN 2.6.0-1/.pre-commit-config.yaml 2.8.1-1/.pre-commit-config.yaml
--- 2.6.0-1/.pre-commit-config.yaml	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/.pre-commit-config.yaml	2022-07-25 20:41:21.000000000 +0000
@@ -30,7 +30,7 @@ repos:
     hooks:
     -   id: isort
 -   repo: https://github.com/psf/black
-    rev: 22.3.0
+    rev: 22.6.0
     hooks:
     -   id: black
         args: [--target-version, py36]
@@ -40,7 +40,7 @@ repos:
     -   id: blacken-docs
         additional_dependencies: [black==22.1.0]
 -   repo: https://github.com/asottile/pyupgrade
-    rev: v2.34.0
+    rev: v2.37.2
     hooks:
     -   id: pyupgrade
         args: [--py36-plus]
diff -pruN 2.6.0-1/PyPDF2/_cmap.py 2.8.1-1/PyPDF2/_cmap.py
--- 2.6.0-1/PyPDF2/_cmap.py	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/PyPDF2/_cmap.py	2022-07-25 20:41:21.000000000 +0000
@@ -42,7 +42,11 @@ def build_char_map(
         pass
     # I conside the space_code is available on one byte
     if isinstance(space_code, str):
-        sp = space_code.encode("charmap")[0]
+        try:  # one byte
+            sp = space_code.encode("charmap")[0]
+        except Exception:
+            sp = space_code.encode("utf-16-be")
+            sp = sp[0] + 256 * sp[1]
     else:
         sp = space_code
     sp_width = compute_space_width(ft, sp, space_width)
@@ -52,12 +56,12 @@ def build_char_map(
         float(sp_width / 2),
         encoding,
         # https://github.com/python/mypy/issues/4374
-        map_dict,  # type: ignore
-    )  # type: ignore
+        map_dict,
+    )
 
 
 # used when missing data, e.g. font def missing
-unknown_char_map: Tuple[str, float, Union[str, Dict[int, str]], Dict] = (
+unknown_char_map: Tuple[str, float, Union[str, Dict[int, str]], Dict[Any, Any]] = (
     "Unknown",
     9999,
     dict(zip(range(256), ["�"] * 256)),
@@ -104,7 +108,7 @@ def parse_encoding(
     encoding: Union[str, List[str], Dict[int, str]] = []
     if "/Encoding" not in ft:
         try:
-            if "/BaseFont" in ft and ft["/BaseFont"] in charset_encoding:
+            if "/BaseFont" in ft and cast(str, ft["/BaseFont"]) in charset_encoding:
                 encoding = dict(
                     zip(range(256), charset_encoding[cast(str, ft["/BaseFont"])])
                 )
@@ -112,7 +116,7 @@ def parse_encoding(
                 encoding = "charmap"
             return encoding, _default_fonts_space_width[cast(str, ft["/BaseFont"])]
         except Exception:
-            if ft["/Subtype"] == "/Type1":
+            if cast(str, ft["/Subtype"]) == "/Type1":
                 return "charmap", space_code
             else:
                 return "", space_code
@@ -163,19 +167,31 @@ def parse_encoding(
 
 def parse_to_unicode(
     ft: DictionaryObject, space_code: int
-) -> Tuple[Dict, int, List[int]]:
-    map_dict: Dict[
-        Any, Any
-    ] = (
-        {}
-    )  # will store all translation code and map_dict[-1] we will have the number of bytes to convert
-    int_entry: List[
-        int
-    ] = []  # will provide the list of cmap keys as int to correct encoding
+) -> Tuple[Dict[Any, Any], int, List[int]]:
+    # will store all translation code
+    # and map_dict[-1] we will have the number of bytes to convert
+    map_dict: Dict[Any, Any] = {}
+
+    # will provide the list of cmap keys as int to correct encoding
+    int_entry: List[int] = []
+
     if "/ToUnicode" not in ft:
         return {}, space_code, []
     process_rg: bool = False
     process_char: bool = False
+    cm = prepare_cm(ft)
+    for l in cm.split(b"\n"):
+        process_rg, process_char = process_cm_line(
+            l.strip(b" "), process_rg, process_char, map_dict, int_entry
+        )
+
+    for a, value in map_dict.items():
+        if value == " ":
+            space_code = a
+    return map_dict, space_code, int_entry
+
+
+def prepare_cm(ft: DictionaryObject) -> bytes:
     cm: bytes = cast(DecodedStreamObject, ft["/ToUnicode"]).get_data()
     # we need to prepare cm before due to missing return line in pdf printed to pdf from word
     cm = (
@@ -204,71 +220,84 @@ def parse_to_unicode(
         .replace(b"]", b" ]\n ")
         .replace(b"\r", b"\n")
     )
+    return cm
 
-    for l in cm.split(b"\n"):
-        if l in (b"", b" ") or l[0] == 37:  # 37 = %
-            continue
-        if b"beginbfrange" in l:
-            process_rg = True
-        elif b"endbfrange" in l:
-            process_rg = False
-        elif b"beginbfchar" in l:
-            process_char = True
-        elif b"endbfchar" in l:
-            process_char = False
-        elif process_rg:
-            lst = [x for x in l.split(b" ") if x]
-            a = int(lst[0], 16)
-            b = int(lst[1], 16)
-            nbi = len(lst[0])
-            map_dict[-1] = nbi // 2
-            fmt = b"%%0%dX" % nbi
-            if lst[2] == b"[":
-                for sq in lst[3:]:
-                    if sq == b"]":
-                        break
-                    map_dict[
-                        unhexlify(fmt % a).decode(
-                            "charmap" if map_dict[-1] == 1 else "utf-16-be",
-                            "surrogatepass",
-                        )
-                    ] = unhexlify(sq).decode("utf-16-be", "surrogatepass")
-                    int_entry.append(a)
-                    a += 1
-            else:
-                c = int(lst[2], 16)
-                fmt2 = b"%%0%dX" % max(4, len(lst[2]))
-                while a <= b:
-                    map_dict[
-                        unhexlify(fmt % a).decode(
-                            "charmap" if map_dict[-1] == 1 else "utf-16-be",
-                            "surrogatepass",
-                        )
-                    ] = unhexlify(fmt2 % c).decode("utf-16-be", "surrogatepass")
-                    int_entry.append(a)
-                    a += 1
-                    c += 1
-        elif process_char:
-            lst = [x for x in l.split(b" ") if x]
-            map_dict[-1] = len(lst[0]) // 2
-            while len(lst) > 1:
-                map_to = ""
-                # placeholder (see above) means empty string
-                if lst[1] != b".":
-                    map_to = unhexlify(lst[1]).decode(
-                        "utf-16-be", "surrogatepass"
-                    )  # join is here as some cases where the code was split
-                map_dict[
-                    unhexlify(lst[0]).decode(
-                        "charmap" if map_dict[-1] == 1 else "utf-16-be", "surrogatepass"
-                    )
-                ] = map_to
-                int_entry.append(int(lst[0], 16))
-                lst = lst[2:]
-    for a, value in map_dict.items():
-        if value == " ":
-            space_code = a
-    return map_dict, space_code, int_entry
+
+def process_cm_line(
+    l: bytes,
+    process_rg: bool,
+    process_char: bool,
+    map_dict: Dict[Any, Any],
+    int_entry: List[int],
+) -> Tuple[bool, bool]:
+    if l in (b"", b" ") or l[0] == 37:  # 37 = %
+        return process_rg, process_char
+    if b"beginbfrange" in l:
+        process_rg = True
+    elif b"endbfrange" in l:
+        process_rg = False
+    elif b"beginbfchar" in l:
+        process_char = True
+    elif b"endbfchar" in l:
+        process_char = False
+    elif process_rg:
+        parse_bfrange(l, map_dict, int_entry)
+    elif process_char:
+        parse_bfchar(l, map_dict, int_entry)
+    return process_rg, process_char
+
+
+def parse_bfrange(l: bytes, map_dict: Dict[Any, Any], int_entry: List[int]) -> None:
+    lst = [x for x in l.split(b" ") if x]
+    a = int(lst[0], 16)
+    b = int(lst[1], 16)
+    nbi = len(lst[0])
+    map_dict[-1] = nbi // 2
+    fmt = b"%%0%dX" % nbi
+    if lst[2] == b"[":
+        for sq in lst[3:]:
+            if sq == b"]":
+                break
+            map_dict[
+                unhexlify(fmt % a).decode(
+                    "charmap" if map_dict[-1] == 1 else "utf-16-be",
+                    "surrogatepass",
+                )
+            ] = unhexlify(sq).decode("utf-16-be", "surrogatepass")
+            int_entry.append(a)
+            a += 1
+    else:
+        c = int(lst[2], 16)
+        fmt2 = b"%%0%dX" % max(4, len(lst[2]))
+        while a <= b:
+            map_dict[
+                unhexlify(fmt % a).decode(
+                    "charmap" if map_dict[-1] == 1 else "utf-16-be",
+                    "surrogatepass",
+                )
+            ] = unhexlify(fmt2 % c).decode("utf-16-be", "surrogatepass")
+            int_entry.append(a)
+            a += 1
+            c += 1
+
+
+def parse_bfchar(l: bytes, map_dict: Dict[Any, Any], int_entry: List[int]) -> None:
+    lst = [x for x in l.split(b" ") if x]
+    map_dict[-1] = len(lst[0]) // 2
+    while len(lst) > 1:
+        map_to = ""
+        # placeholder (see above) means empty string
+        if lst[1] != b".":
+            map_to = unhexlify(lst[1]).decode(
+                "utf-16-be", "surrogatepass"
+            )  # join is here as some cases where the code was split
+        map_dict[
+            unhexlify(lst[0]).decode(
+                "charmap" if map_dict[-1] == 1 else "utf-16-be", "surrogatepass"
+            )
+        ] = map_to
+        int_entry.append(int(lst[0], 16))
+        lst = lst[2:]
 
 
 def compute_space_width(
@@ -284,7 +313,10 @@ def compute_space_width(
             w1[-1] = cast(float, ft1["/DW"])
         except Exception:
             w1[-1] = 1000.0
-        w = list(ft1["/W"])  # type: ignore
+        if "/W" in ft1:
+            w = list(ft1["/W"])
+        else:
+            w = []
         while len(w) > 0:
             st = w[0]
             second = w[1]
diff -pruN 2.6.0-1/PyPDF2/constants.py 2.8.1-1/PyPDF2/constants.py
--- 2.6.0-1/PyPDF2/constants.py	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/PyPDF2/constants.py	2022-07-25 20:41:21.000000000 +0000
@@ -332,6 +332,22 @@ class FieldDictionaryAttributes:
         }
 
 
+class CheckboxRadioButtonAttributes:
+    """TABLE 8.76 Field flags common to all field types"""
+
+    Opt = "/Opt"  # Options, Optional
+
+    @classmethod
+    def attributes(cls) -> Tuple[str, ...]:
+        return (cls.Opt,)
+
+    @classmethod
+    def attributes_dict(cls) -> Dict[str, str]:
+        return {
+            cls.Opt: "Options",
+        }
+
+
 class FieldFlag(IntFlag):
     """TABLE 8.70 Field flags common to all field types"""
 
@@ -411,6 +427,7 @@ PDF_KEYS = (
     CatalogAttributes,
     CatalogDictionary,
     CcittFaxDecodeParameters,
+    CheckboxRadioButtonAttributes,
     ColorSpaces,
     Core,
     DocumentInformationAttributes,
diff -pruN 2.6.0-1/PyPDF2/_encryption.py 2.8.1-1/PyPDF2/_encryption.py
--- 2.6.0-1/PyPDF2/_encryption.py	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/PyPDF2/_encryption.py	2022-07-25 20:41:21.000000000 +0000
@@ -29,8 +29,9 @@ import hashlib
 import random
 import struct
 from enum import IntEnum
-from typing import Optional, Tuple, Union, cast
+from typing import Any, Dict, Optional, Tuple, Union, cast
 
+from PyPDF2._utils import logger_warning
 from PyPDF2.errors import DependencyError
 from PyPDF2.generic import (
     ArrayObject,
@@ -287,7 +288,7 @@ class AlgV4:
         u_hash.update(o_entry)
         u_hash.update(struct.pack("<I", P))
         u_hash.update(id1_entry)
-        if rev >= 3 and not metadata_encrypted:
+        if rev >= 4 and metadata_encrypted is False:
             u_hash.update(b"\xff\xff\xff\xff")
         u_hash_digest = u_hash.digest()
         length = key_size // 8
@@ -565,7 +566,7 @@ class AlgV5:
     @staticmethod
     def generate_values(
         user_pwd: bytes, owner_pwd: bytes, key: bytes, p: int, metadata_encrypted: bool
-    ) -> dict:
+    ) -> Dict[Any, Any]:
         u_value, ue_value = AlgV5.compute_U_value(user_pwd, key)
         o_value, oe_value = AlgV5.compute_O_value(owner_pwd, key, u_value)
         perms = AlgV5.compute_Perms_value(key, p, metadata_encrypted)
@@ -771,7 +772,9 @@ class Encryption:
         R = cast(int, self.entry["/R"])
         P = cast(int, self.entry["/P"])
         P = (P + 0x100000000) % 0x100000000  # maybe < 0
-        metadata_encrypted = self.entry.get("/EncryptMetadata", True)
+        # make type(metadata_encrypted) == bool
+        em = self.entry.get("/EncryptMetadata")
+        metadata_encrypted = em.value if em else True
         o_entry = cast(ByteStringObject, self.entry["/O"].get_object()).original_bytes
         u_entry = cast(ByteStringObject, self.entry["/U"].get_object()).original_bytes
 
@@ -826,7 +829,7 @@ class Encryption:
         P = (P + 0x100000000) % 0x100000000  # maybe < 0
         metadata_encrypted = self.entry.get("/EncryptMetadata", True)
         if not AlgV5.verify_perms(key, perms, P, metadata_encrypted):
-            return b"", PasswordType.NOT_DECRYPTED
+            logger_warning("ignore '/Perms' verify failed", __name__)
         return key, rc
 
     @staticmethod
diff -pruN 2.6.0-1/PyPDF2/filters.py 2.8.1-1/PyPDF2/filters.py
--- 2.6.0-1/PyPDF2/filters.py	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/PyPDF2/filters.py	2022-07-25 20:41:21.000000000 +0000
@@ -45,6 +45,8 @@ from .generic import ArrayObject, Dictio
 try:
     from typing import Literal  # type: ignore[attr-defined]
 except ImportError:
+    # PEP 586 introduced typing.Literal with Python 3.8
+    # For older Python versions, the backport typing_extensions is necessary:
     from typing_extensions import Literal  # type: ignore[misc]
 
 from ._utils import b_, deprecate_with_replacement, ord_, paeth_predictor
@@ -102,7 +104,7 @@ class FlateDecode:
                             predictor = decode_parm["/Predictor"]
                 else:
                     predictor = decode_parms.get("/Predictor", 1)
-            except AttributeError:
+            except (AttributeError, TypeError):  # Type Error is NullObject
                 pass  # Usually an array with a null object was read
         # predictor 1 == no predictor
         if predictor != 1:
diff -pruN 2.6.0-1/PyPDF2/generic.py 2.8.1-1/PyPDF2/generic.py
--- 2.6.0-1/PyPDF2/generic.py	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/PyPDF2/generic.py	2022-07-25 20:41:21.000000000 +0000
@@ -63,12 +63,13 @@ from ._utils import (
     deprecate_with_replacement,
     hex_str,
     hexencode,
+    logger_warning,
     read_non_whitespace,
     read_until_regex,
     skip_over_comment,
     str_,
 )
-from .constants import FieldDictionaryAttributes
+from .constants import CheckboxRadioButtonAttributes, FieldDictionaryAttributes
 from .constants import FilterTypes as FT
 from .constants import StreamAttributes as SA
 from .constants import TypArguments as TA
@@ -135,6 +136,9 @@ class NullObject(PdfObject):
         deprecate_with_replacement("writeToStream", "write_to_stream")
         self.write_to_stream(stream, encryption_key)
 
+    def __repr__(self) -> str:
+        return "NullObject"
+
     @staticmethod
     def readFromStream(stream: StreamType) -> "NullObject":  # pragma: no cover
         deprecate_with_replacement("readFromStream", "read_from_stream")
@@ -188,7 +192,7 @@ class BooleanObject(PdfObject):
 
 
 class ArrayObject(list, PdfObject):
-    def items(self) -> Iterable:
+    def items(self) -> Iterable[Any]:
         """
         Emulate DictionaryObject.items for a list
         (index, object)
@@ -328,7 +332,7 @@ class FloatObject(decimal.Decimal, PdfOb
             except decimal.InvalidOperation:
                 # If this isn't a valid decimal (happens in malformed PDFs)
                 # fallback to 0
-                logger.warning(f"Invalid FloatObject {value}")
+                logger_warning(f"Invalid FloatObject {value}", __name__)
                 return decimal.Decimal.__new__(cls, "0")
 
     def __repr__(self) -> str:
@@ -508,12 +512,12 @@ def read_string_from_stream(
                     tok = b""
                 else:
                     msg = rf"Unexpected escaped string: {tok.decode('utf8')}"
-                    logger.warning(msg)
+                    logger_warning(msg, __name__)
         txt += tok
     return create_string_object(txt, forced_encoding)
 
 
-class ByteStringObject(bytes, PdfObject):  # type: ignore
+class ByteStringObject(bytes, PdfObject):
     """
     Represents a string object where the text encoding could not be determined.
     This occurs quite often, as the PDF spec doesn't provide an alternate way to
@@ -646,7 +650,7 @@ class NameObject(str, PdfObject):
             # Name objects should represent irregular characters
             # with a '#' followed by the symbol's hex number
             if not pdf.strict:
-                warnings.warn("Illegal character in Name Object", PdfReadWarning)
+                logger_warning("Illegal character in Name Object", __name__)
                 return NameObject(name)
             else:
                 raise PdfReadError("Illegal character in Name Object") from e
@@ -858,7 +862,7 @@ class DictionaryObject(dict, PdfObject):
                     stream.seek(pos, 0)
                     raise PdfReadError(
                         "Unable to find 'endstream' marker after stream at byte "
-                        f"{hex_str(stream.tell())}."
+                        f"{hex_str(stream.tell())} (nd='{ndstream!r}', end='{end!r}')."
                     )
         else:
             stream.seek(pos, 0)
@@ -1162,9 +1166,17 @@ class EncodedStreamObject(StreamObject):
             self.decoded_self = decoded
             return decoded._data
 
+    def getData(self) -> Union[None, str, bytes]:  # pragma: no cover
+        deprecate_with_replacement("getData", "get_data")
+        return self.get_data()
+
     def set_data(self, data: Any) -> None:
         raise PdfReadError("Creating EncodedStreamObject is not currently supported")
 
+    def setData(self, data: Any) -> None:  # pragma: no cover
+        deprecate_with_replacement("setData", "set_data")
+        return self.set_data(data)
+
 
 class ContentStream(DecodedStreamObject):
     def __init__(
@@ -1610,8 +1622,11 @@ class Field(TreeObject):
 
     def __init__(self, data: Dict[str, Any]) -> None:
         DictionaryObject.__init__(self)
-
-        for attr in FieldDictionaryAttributes.attributes():
+        field_attributes = (
+            FieldDictionaryAttributes.attributes()
+            + CheckboxRadioButtonAttributes.attributes()
+        )
+        for attr in field_attributes:
             try:
                 self[NameObject(attr)] = data[attr]
             except KeyError:
@@ -1802,9 +1817,15 @@ class Destination(TreeObject):
                 self[NameObject(TA.TOP)],
             ) = args
         elif typ in [TF.FIT_H, TF.FIT_BH]:
-            (self[NameObject(TA.TOP)],) = args
+            try:  # Prefered to be more robust not only to null parameters
+                (self[NameObject(TA.TOP)],) = args
+            except Exception:
+                (self[NameObject(TA.TOP)],) = (NullObject(),)
         elif typ in [TF.FIT_V, TF.FIT_BV]:
-            (self[NameObject(TA.LEFT)],) = args
+            try:  # Prefered to be more robust not only to null parameters
+                (self[NameObject(TA.LEFT)],) = args
+            except Exception:
+                (self[NameObject(TA.LEFT)],) = (NullObject(),)
         elif typ in [TF.FIT, TF.FIT_B]:
             pass
         else:
@@ -1901,6 +1922,16 @@ class Destination(TreeObject):
         """Read-only property accessing the font type. 1=italic, 2=bold, 3=both"""
         return self.get("/F", 0)
 
+    @property
+    def outline_count(self) -> Optional[int]:
+        """
+        Read-only property accessing the outline count.
+        positive = expanded
+        negative = collapsed
+        absolute value = number of visible descendents at all levels
+        """
+        return self.get("/Count", None)
+
 
 class Bookmark(Destination):
     def write_to_stream(
@@ -2037,3 +2068,104 @@ def decode_pdfdocencoding(byte_array: by
             )
         retval += c
     return retval
+
+
+def hex_to_rgb(value: str) -> Tuple[float, float, float]:
+    return tuple(int(value[i : i + 2], 16) / 255.0 for i in (0, 2, 4))  # type: ignore
+
+
+class AnnotationBuilder:
+    @staticmethod
+    def free_text(
+        text: str,
+        rect: Tuple[float, float, float, float],
+        font: str = "Helvetica",
+        bold: bool = False,
+        italic: bool = False,
+        font_size: str = "14pt",
+        font_color: str = "000000",
+        border_color: str = "000000",
+        background_color: str = "ffffff",
+    ) -> DictionaryObject:
+        """Add text in a rectangle to a page."""
+        font_str = "font: "
+        if bold is True:
+            font_str = font_str + "bold "
+        if italic is True:
+            font_str = font_str + "italic "
+        font_str = font_str + font + " " + font_size
+        font_str = font_str + ";text-align:left;color:#" + font_color
+
+        bg_color_str = ""
+        for st in hex_to_rgb(border_color):
+            bg_color_str = bg_color_str + str(st) + " "
+        bg_color_str = bg_color_str + "rg"
+
+        free_text = DictionaryObject()
+        free_text.update(
+            {
+                NameObject("/Type"): NameObject("/Annot"),
+                NameObject("/Subtype"): NameObject("/FreeText"),
+                NameObject("/Rect"): RectangleObject(rect),
+                NameObject("/Contents"): TextStringObject(text),
+                # font size color
+                NameObject("/DS"): TextStringObject(font_str),
+                # border color
+                NameObject("/DA"): TextStringObject(bg_color_str),
+                # background color
+                NameObject("/C"): ArrayObject(
+                    [FloatObject(n) for n in hex_to_rgb(background_color)]
+                ),
+            }
+        )
+        return free_text
+
+    @staticmethod
+    def line(
+        p1: Tuple[float, float],
+        p2: Tuple[float, float],
+        rect: Tuple[float, float, float, float],
+        text: str = "",
+        title_bar: str = "",
+    ) -> DictionaryObject:
+        """
+        Draw a line on the PDF.
+
+        :param p1: First point
+        :param p2: Second point
+        :param rect: Rectangle
+        :param text: Text to be displayed as the line annotation
+        :param title_bar: Text to be displayed in the title bar of the
+            annotation; by convention this is the name of the author
+        """
+        line_obj = DictionaryObject(
+            {
+                NameObject("/Type"): NameObject("/Annot"),
+                NameObject("/Subtype"): NameObject("/Line"),
+                NameObject("/Rect"): RectangleObject(rect),
+                NameObject("/T"): TextStringObject(title_bar),
+                NameObject("/L"): ArrayObject(
+                    [
+                        FloatObject(p1[0]),
+                        FloatObject(p1[1]),
+                        FloatObject(p2[0]),
+                        FloatObject(p2[1]),
+                    ]
+                ),
+                NameObject("/LE"): ArrayObject(
+                    [
+                        NameObject(None),
+                        NameObject(None),
+                    ]
+                ),
+                NameObject("/IC"): ArrayObject(
+                    [
+                        FloatObject(0.5),
+                        FloatObject(0.5),
+                        FloatObject(0.5),
+                    ]
+                ),
+                NameObject("/Contents"): TextStringObject(text),
+            }
+        )
+        return line_obj
diff -pruN 2.6.0-1/PyPDF2/_merger.py 2.8.1-1/PyPDF2/_merger.py
--- 2.6.0-1/PyPDF2/_merger.py	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/PyPDF2/_merger.py	2022-07-25 20:41:21.000000000 +0000
@@ -540,8 +540,6 @@ class PdfMerger:
 
             if pageno is not None:
                 b[NameObject("/Page")] = NumberObject(pageno)
-            else:
-                raise ValueError(f"Unresolved bookmark '{b['/Title']}'")
 
     def find_bookmark(
         self,
@@ -558,7 +556,7 @@ class PdfMerger:
                 res = self.find_bookmark(bookmark, b)  # type: ignore
                 if res:
                     return [i] + res
-            elif b == bookmark or b["/Title"] == bookmark:
+            elif b == bookmark or cast(Dict[Any, Any], b["/Title"]) == bookmark:
                 # we found a leaf node
                 return [i]
 
@@ -642,7 +640,7 @@ class PdfMerger:
 
 class PdfFileMerger(PdfMerger):  # pragma: no cover
     def __init__(self, *args: Any, **kwargs: Any) -> None:
-        deprecate_with_replacement("PdfFileMerger", "PdfMerge")
+        deprecate_with_replacement("PdfFileMerger", "PdfMerger")
 
         if "strict" not in kwargs and len(args) < 1:
             kwargs["strict"] = True  # maintain the default
diff -pruN 2.6.0-1/PyPDF2/_page.py 2.8.1-1/PyPDF2/_page.py
--- 2.6.0-1/PyPDF2/_page.py	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/PyPDF2/_page.py	2022-07-25 20:41:21.000000000 +0000
@@ -506,9 +506,9 @@ class PageObject(DictionaryObject):
         # Combine /ProcSet sets.
         new_resources[NameObject(RES.PROC_SET)] = ArrayObject(
             frozenset(
-                original_resources.get(RES.PROC_SET, ArrayObject()).get_object()  # type: ignore
+                original_resources.get(RES.PROC_SET, ArrayObject()).get_object()
             ).union(
-                frozenset(page2resources.get(RES.PROC_SET, ArrayObject()).get_object())  # type: ignore
+                frozenset(page2resources.get(RES.PROC_SET, ArrayObject()).get_object())
             )
         )
 
@@ -1248,7 +1248,7 @@ class PageObject(DictionaryObject):
                         cmaps[operands[0]][2],
                         cmaps[operands[0]][3],
                         operands[0],
-                    )  # type:ignore
+                    )
                 except KeyError:  # font not found
                     _space_width = unknown_char_map[1]
                     cmap = (
@@ -1395,7 +1395,7 @@ class PageObject(DictionaryObject):
                 except IndexError:
                     pass
                 try:
-                    xobj = resources_dict["/XObject"]  # type: ignore
+                    xobj = resources_dict["/XObject"]
                     if xobj[operands[0]]["/Subtype"] != "/Image":  # type: ignore
                         # output += text
                         text = self.extract_xform_text(xobj[operands[0]], space_width)  # type: ignore
@@ -1583,6 +1583,27 @@ class PageObject(DictionaryObject):
         deprecate_with_replacement("artBox", "artbox")
         self.artbox = value
 
+    @property
+    def annotations(self) -> Optional[ArrayObject]:
+        if "/Annots" not in self:
+            return None
+        else:
+            return cast(ArrayObject, self["/Annots"])
+
+    @annotations.setter
+    def annotations(self, value: Optional[ArrayObject]) -> None:
+        """
+        Set the annotations array of the page.
+
+        Typically you don't want to set this value, but append to it.
+        If you append to it, don't forget to add the object first to the writer
+        and only add the indirect object.
+        """
+        if value is None:
+            del self[NameObject("/Annots")]
+        else:
+            self[NameObject("/Annots")] = value
+
 
 class _VirtualList:
     def __init__(
diff -pruN 2.6.0-1/PyPDF2/_reader.py 2.8.1-1/PyPDF2/_reader.py
--- 2.6.0-1/PyPDF2/_reader.py	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/PyPDF2/_reader.py	2022-07-25 20:41:21.000000000 +0000
@@ -63,6 +63,7 @@ from ._utils import (
 from .constants import CatalogAttributes as CA
 from .constants import CatalogDictionary
 from .constants import CatalogDictionary as CD
+from .constants import CheckboxRadioButtonAttributes
 from .constants import Core as CO
 from .constants import DocumentInformationAttributes as DI
 from .constants import FieldDictionaryAttributes, GoToActionArguments
@@ -478,6 +479,7 @@ class PdfReader:
             ``None`` if form data could not be located.
         """
         field_attributes = FieldDictionaryAttributes.attributes_dict()
+        field_attributes.update(CheckboxRadioButtonAttributes.attributes_dict())
         if retval is None:
             retval = {}
             catalog = cast(DictionaryObject, self.trailer[TK.ROOT])
@@ -488,7 +490,6 @@ class PdfReader:
                 return None
         if tree is None:
             return retval
-
         self._check_kids(tree, retval, fileobj)
         for attr in field_attributes:
             if attr in tree:
@@ -548,7 +549,12 @@ class PdfReader:
                 self.get_fields(kid.get_object(), retval, fileobj)
 
     def _write_field(self, fileobj: Any, field: Any, field_attributes: Any) -> None:
-        for attr in FieldDictionaryAttributes.attributes():
+        field_attributes_tuple = FieldDictionaryAttributes.attributes()
+        field_attributes_tuple = (
+            field_attributes_tuple + CheckboxRadioButtonAttributes.attributes()
+        )
+
+        for attr in field_attributes_tuple:
             if attr in (
                 FieldDictionaryAttributes.Kids,
                 FieldDictionaryAttributes.AA,
@@ -798,15 +804,26 @@ class PdfReader:
         title: str,
         array: List[Union[NumberObject, IndirectObject, NullObject, DictionaryObject]],
     ) -> Destination:
-        page, typ = array[0:2]
-        array = array[2:]
-        try:
-            return Destination(title, page, typ, *array)  # type: ignore
-        except PdfReadError:
-            warnings.warn(f"Unknown destination: {title} {array}", PdfReadWarning)
-            if self.strict:
-                raise
-            else:
+        page, typ = None, None
+        # handle outlines with missing or invalid destination
+        if (
+            isinstance(array, (type(None), NullObject))
+            or (isinstance(array, ArrayObject) and len(array) == 0)
+            or (isinstance(array, str))
+        ):
+
+            page = NullObject()
+            typ = TextStringObject("/Fit")
+            return Destination(title, page, typ)
+        else:
+            page, typ = array[0:2]  # type: ignore
+            array = array[2:]
+            try:
+                return Destination(title, page, typ, *array)  # type: ignore
+            except PdfReadError:
+                warnings.warn(f"Unknown destination: {title} {array}", PdfReadWarning)
+                if self.strict:
+                    raise
                 # create a link to first Page
                 tmp = self.pages[0].indirect_ref
                 indirect_ref = NullObject() if tmp is None else tmp
@@ -817,28 +834,49 @@ class PdfReader:
     def _build_outline(self, node: DictionaryObject) -> Optional[Destination]:
         dest, title, outline = None, None, None
 
-        if "/A" in node and "/Title" in node:
-            # Action, section 8.5 (only type GoTo supported)
+        # title required for valid outline
+        # PDF Reference 1.7: TABLE 8.4 Entries in an outline item dictionary
+        try:
             title = node["/Title"]
+        except KeyError:
+            if self.strict:
+                raise PdfReadError(f"Outline Entry Missing /Title attribute: {node!r}")
+            title = ""  # type: ignore
+
+        if "/A" in node:
+            # Action, PDFv1.7 Section 12.6 (only type GoTo supported)
             action = cast(DictionaryObject, node["/A"])
             action_type = cast(NameObject, action[GoToActionArguments.S])
             if action_type == "/GoTo":
                 dest = action[GoToActionArguments.D]
-        elif "/Dest" in node and "/Title" in node:
-            # Destination, section 8.2.1
-            title = node["/Title"]
+        elif "/Dest" in node:
+            # Destination, PDFv1.7 Section 12.3.2
             dest = node["/Dest"]
-
-        # if destination found, then create outline
-        if dest:
-            if isinstance(dest, ArrayObject):
-                outline = self._build_destination(title, dest)  # type: ignore
-            elif isinstance(dest, str) and dest in self._namedDests:
-                outline = self._build_destination(title, self._namedDests[dest].dest_array)  # type: ignore
-            else:
+            # if array was referenced in another object, will be a dict w/ key "/D"
+            if isinstance(dest, DictionaryObject) and "/D" in dest:
+                dest = dest["/D"]
+
+        if isinstance(dest, ArrayObject):
+            outline = self._build_destination(title, dest)  # type: ignore
+        elif isinstance(dest, str):
+            # named destination, addresses NameObject Issue #193
+            try:
+                outline = self._build_destination(
+                    title, self._namedDests[dest].dest_array
+                )
+            except KeyError:
+                # named destination not found in Name Dict
+                outline = self._build_destination(title, None)
+        elif isinstance(dest, type(None)):
+            # outline not required to have destination or action
+            # PDFv1.7 Table 153
+            outline = self._build_destination(title, dest)  # type: ignore
+        else:
+            if self.strict:
                 raise PdfReadError(f"Unexpected destination {dest!r}")
+            outline = self._build_destination(title, None)  # type: ignore
 
-        # if outline created, add color and format if present
+        # if outline created, add color, format, and child count if present
         if outline:
             if "/C" in node:
                 # Color of outline in (R, G, B) with values ranging 0.0-1.0
@@ -847,6 +885,10 @@ class PdfReader:
                 # specifies style characteristics bold and/or italic
                 # 1=italic, 2=bold, 3=both
                 outline[NameObject("/F")] = node["/F"]
+            if "/Count" in node:
+                # absolute value = num. visible children
+                # positive = open/unfolded, negative = closed/folded
+                outline[NameObject("/Count")] = node["/Count"]
 
         return outline
 
@@ -1005,7 +1047,7 @@ class PdfReader:
         stmnum, idx = self.xref_objStm[indirect_reference.idnum]
         obj_stm: EncodedStreamObject = IndirectObject(stmnum, 0, self).get_object()  # type: ignore
         # This is an xref to a stream, so its type better be a stream
-        assert obj_stm["/Type"] == "/ObjStm"
+        assert cast(str, obj_stm["/Type"]) == "/ObjStm"
         # /N is the number of indirect objects in the stream
         assert idx < obj_stm["/N"]
         stream_data = BytesIO(b_(obj_stm.get_data()))  # type: ignore
@@ -1209,26 +1251,8 @@ class PdfReader:
         return self.cache_indirect_object(generation, idnum, obj)
 
     def read(self, stream: StreamType) -> None:
-        # start at the end:
-        stream.seek(0, os.SEEK_END)
-        if not stream.tell():
-            raise PdfReadError("Cannot read an empty file")
-        if self.strict:
-            stream.seek(0, os.SEEK_SET)
-            header_byte = stream.read(5)
-            if header_byte != b"%PDF-":
-                raise PdfReadError(
-                    f"PDF starts with '{header_byte.decode('utf8')}', "
-                    "but '%PDF-' expected"
-                )
-            stream.seek(0, os.SEEK_END)
-        last_mb = stream.tell() - 1024 * 1024 + 1  # offset of last MB of stream
-        line = b""
-        while line[:5] != b"%%EOF":
-            if stream.tell() < last_mb:
-                raise PdfReadError("EOF marker not found")
-            line = read_previous_line(stream)
-
+        self._basic_validation(stream)
+        self._find_eof_marker(stream)
         startxref = self._find_startxref_pos(stream)
 
         # check and eventually correct the startxref only in not strict
@@ -1242,78 +1266,8 @@ class PdfReader:
                 )
 
         # read all cross reference tables and their trailers
-        self.xref: Dict[int, Dict[Any, Any]] = {}
-        self.xref_free_entry: Dict[int, Dict[Any, Any]] = {}
-        self.xref_objStm: Dict[int, Tuple[Any, Any]] = {}
-        self.trailer = DictionaryObject()
-        while True:
-            # load the xref table
-            stream.seek(startxref, 0)
-            x = stream.read(1)
-            if x == b"x":
-                self._read_standard_xref_table(stream)
-                read_non_whitespace(stream)
-                stream.seek(-1, 1)
-                new_trailer = cast(Dict[str, Any], read_object(stream, self))
-                for key, value in new_trailer.items():
-                    if key not in self.trailer:
-                        self.trailer[key] = value
-                if "/Prev" in new_trailer:
-                    startxref = new_trailer["/Prev"]
-                else:
-                    break
-            elif xref_issue_nr:
-                try:
-                    self._rebuild_xref_table(stream)
-                    break
-                except Exception:
-                    xref_issue_nr = 0
-            elif x.isdigit():
-                xrefstream = self._read_pdf15_xref_stream(stream)
+        self._read_xref_tables_and_trailers(stream, startxref, xref_issue_nr)
 
-                trailer_keys = TK.ROOT, TK.ENCRYPT, TK.INFO, TK.ID
-                for key in trailer_keys:
-                    if key in xrefstream and key not in self.trailer:
-                        self.trailer[NameObject(key)] = xrefstream.raw_get(key)
-                if "/Prev" in xrefstream:
-                    startxref = cast(int, xrefstream["/Prev"])
-                else:
-                    break
-            else:
-                # some PDFs have /Prev=0 in the trailer, instead of no /Prev
-                if startxref == 0:
-                    if self.strict:
-                        raise PdfReadError(
-                            "/Prev=0 in the trailer (try opening with strict=False)"
-                        )
-                    else:
-                        warnings.warn(
-                            "/Prev=0 in the trailer - assuming there"
-                            " is no previous xref table"
-                        )
-                        break
-                # bad xref character at startxref.  Let's see if we can find
-                # the xref table nearby, as we've observed this error with an
-                # off-by-one before.
-                stream.seek(-11, 1)
-                tmp = stream.read(20)
-                xref_loc = tmp.find(b"xref")
-                if xref_loc != -1:
-                    startxref -= 10 - xref_loc
-                    continue
-                # No explicit xref table, try finding a cross-reference stream.
-                stream.seek(startxref, 0)
-                found = False
-                for look in range(5):
-                    if stream.read(1).isdigit():
-                        # This is not a standard PDF, consider adding a warning
-                        startxref += look
-                        found = True
-                        break
-                if found:
-                    continue
-                # no xref table found at specified location
-                raise PdfReadError("Could not find xref table at specified location")
         # if not zero-indexed, verify that the table is correct; change it if necessary
         if self.xref_index and not self.strict:
             loc = stream.tell()
@@ -1333,6 +1287,29 @@ class PdfReader:
                     # non-zero-index is actually correct
             stream.seek(loc, 0)  # return to where it was
 
+    def _basic_validation(self, stream: StreamType) -> None:
+        # start at the end:
+        stream.seek(0, os.SEEK_END)
+        if not stream.tell():
+            raise PdfReadError("Cannot read an empty file")
+        if self.strict:
+            stream.seek(0, os.SEEK_SET)
+            header_byte = stream.read(5)
+            if header_byte != b"%PDF-":
+                raise PdfReadError(
+                    f"PDF starts with '{header_byte.decode('utf8')}', "
+                    "but '%PDF-' expected"
+                )
+            stream.seek(0, os.SEEK_END)
+
+    def _find_eof_marker(self, stream: StreamType) -> None:
+        last_mb = 8  # to parse whole file
+        line = b""
+        while line[:5] != b"%%EOF":
+            if stream.tell() < last_mb:
+                raise PdfReadError("EOF marker not found")
+            line = read_previous_line(stream)
+
     def _find_startxref_pos(self, stream: StreamType) -> int:
         """Find startxref entry - the location of the xref table"""
         line = read_previous_line(stream)
@@ -1425,6 +1402,100 @@ class PdfReader:
             else:
                 break
 
+    def _read_xref_tables_and_trailers(
+        self, stream: StreamType, startxref: Optional[int], xref_issue_nr: int
+    ) -> None:
+        self.xref: Dict[int, Dict[Any, Any]] = {}
+        self.xref_free_entry: Dict[int, Dict[Any, Any]] = {}
+        self.xref_objStm: Dict[int, Tuple[Any, Any]] = {}
+        self.trailer = DictionaryObject()
+        while startxref is not None:
+            # load the xref table
+            stream.seek(startxref, 0)
+            x = stream.read(1)
+            if x == b"x":
+                startxref = self._read_xref(stream)
+            elif xref_issue_nr:
+                try:
+                    self._rebuild_xref_table(stream)
+                    break
+                except Exception:
+                    xref_issue_nr = 0
+            elif x.isdigit():
+                xrefstream = self._read_pdf15_xref_stream(stream)
+
+                trailer_keys = TK.ROOT, TK.ENCRYPT, TK.INFO, TK.ID
+                for key in trailer_keys:
+                    if key in xrefstream and key not in self.trailer:
+                        self.trailer[NameObject(key)] = xrefstream.raw_get(key)
+                if "/Prev" in xrefstream:
+                    startxref = cast(int, xrefstream["/Prev"])
+                else:
+                    break
+            else:
+                startxref = self._read_xref_other_error(stream, startxref)
+
+    def _read_xref(self, stream: StreamType) -> Optional[int]:
+        self._read_standard_xref_table(stream)
+        read_non_whitespace(stream)
+        stream.seek(-1, 1)
+        new_trailer = cast(Dict[str, Any], read_object(stream, self))
+        for key, value in new_trailer.items():
+            if key not in self.trailer:
+                self.trailer[key] = value
+        if "/Prev" in new_trailer:
+            startxref = new_trailer["/Prev"]
+            return startxref
+        else:
+            return None
+
+    def _read_xref_other_error(
+        self, stream: StreamType, startxref: int
+    ) -> Optional[int]:
+        # some PDFs have /Prev=0 in the trailer, instead of no /Prev
+        if startxref == 0:
+            if self.strict:
+                raise PdfReadError(
+                    "/Prev=0 in the trailer (try opening with strict=False)"
+                )
+            else:
+                warnings.warn(
+                    "/Prev=0 in the trailer - assuming there"
+                    " is no previous xref table"
+                )
+                return None
+        # bad xref character at startxref.  Let's see if we can find
+        # the xref table nearby, as we've observed this error with an
+        # off-by-one before.
+        stream.seek(-11, 1)
+        tmp = stream.read(20)
+        xref_loc = tmp.find(b"xref")
+        if xref_loc != -1:
+            startxref -= 10 - xref_loc
+            return startxref
+        # No explicit xref table, try finding a cross-reference stream.
+        stream.seek(startxref, 0)
+        found = False
+        for look in range(5):
+            if stream.read(1).isdigit():
+                # This is not a standard PDF, consider adding a warning
+                startxref += look
+                found = True
+                break
+        if found:
+            return startxref
+        # no xref table found at specified location
+        if "/Root" in self.trailer and not self.strict:
+            # if Root has been already found, just raise warning
+            warnings.warn("Invalid parent xref., rebuild xref", PdfReadWarning)
+            try:
+                self._rebuild_xref_table(stream)
+                return None
+            except Exception:
+                raise PdfReadError("can not rebuild xref")
+            return None
+        raise PdfReadError("Could not find xref table at specified location")
+
     def _read_pdf15_xref_stream(
         self, stream: StreamType
     ) -> Union[ContentStream, EncodedStreamObject, DecodedStreamObject]:
@@ -1432,7 +1503,7 @@ class PdfReader:
         stream.seek(-1, 1)
         idnum, generation = self.read_object_header(stream)
         xrefstream = cast(ContentStream, read_object(stream, self))
-        assert xrefstream["/Type"] == "/XRef"
+        assert cast(str, xrefstream["/Type"]) == "/XRef"
         self.cache_indirect_object(generation, idnum, xrefstream)
         stream_data = BytesIO(b_(xrefstream.get_data()))
         # Index pairs specify the subsections in the dictionary. If
diff -pruN 2.6.0-1/PyPDF2/types.py 2.8.1-1/PyPDF2/types.py
--- 2.6.0-1/PyPDF2/types.py	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/PyPDF2/types.py	2022-07-25 20:41:21.000000000 +0000
@@ -12,7 +12,7 @@ try:
     # Python 3.10+: https://www.python.org/dev/peps/pep-0484/
     from typing import TypeAlias  # type: ignore[attr-defined]
 except ImportError:
-    from typing_extensions import TypeAlias  # type: ignore[misc]
+    from typing_extensions import TypeAlias
 
 from .generic import (
     ArrayObject,
diff -pruN 2.6.0-1/PyPDF2/_utils.py 2.8.1-1/PyPDF2/_utils.py
--- 2.6.0-1/PyPDF2/_utils.py	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/PyPDF2/_utils.py	2022-07-25 20:41:21.000000000 +0000
@@ -29,6 +29,7 @@
 __author__ = "Mathieu Fenniak"
 __author_email__ = "biziqe@mathieu.fenniak.net"
 
+import logging
 import warnings
 from codecs import getencoder
 from io import (
@@ -45,7 +46,7 @@ try:
     # Python 3.10+: https://www.python.org/dev/peps/pep-0484/
     from typing import TypeAlias  # type: ignore[attr-defined]
 except ImportError:
-    from typing_extensions import TypeAlias  # type: ignore[misc]
+    from typing_extensions import TypeAlias
 
 from .errors import STREAM_TRUNCATED_PREMATURELY, PdfStreamError
 
@@ -129,7 +130,7 @@ def skip_over_comment(stream: StreamType
 
 
 def read_until_regex(
-    stream: StreamType, regex: Pattern, ignore_eof: bool = False
+    stream: StreamType, regex: Pattern[bytes], ignore_eof: bool = False
 ) -> bytes:
     """
     Read until the regular expression pattern matched (ignore the match).
@@ -342,3 +343,22 @@ def deprecate_with_replacement(
 
 def deprecate_no_replacement(name: str, removed_in: str = "3.0.0") -> None:
     deprecate(DEPR_MSG_NO_REPLACEMENT.format(name, removed_in), 4)
+
+
+def logger_warning(msg: str, src: str) -> None:
+    """
+    Use this instead of logger.warning directly.
+
+    That allows people to overwrite it more easily.
+
+    ## Exception, warnings.warn, logger_warning
+    - Exceptions should be used if the user should write code that deals with
+      an error case, e.g. the PDF being completely broken.
+    - warnings.warn should be used if the user needs to fix their code, e.g.
+      DeprecationWarnings
+    - logger_warning should be used if the user needs to know that an issue was
+      handled by PyPDF2, e.g. a non-compliant PDF being read in a way that
+      PyPDF2 could apply a robustness fix to still read it. This applies mainly
+      to strict=False mode.
+    """
+    logging.getLogger(src).warning(msg)
diff -pruN 2.6.0-1/PyPDF2/_version.py 2.8.1-1/PyPDF2/_version.py
--- 2.6.0-1/PyPDF2/_version.py	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/PyPDF2/_version.py	2022-07-25 20:41:21.000000000 +0000
@@ -1 +1 @@
-__version__ = "2.6.0"
+__version__ = "2.8.1"
diff -pruN 2.6.0-1/PyPDF2/_writer.py 2.8.1-1/PyPDF2/_writer.py
--- 2.6.0-1/PyPDF2/_writer.py	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/PyPDF2/_writer.py	2022-07-25 20:41:21.000000000 +0000
@@ -195,7 +195,7 @@ class PdfWriter:
     def _add_page(
         self, page: PageObject, action: Callable[[Any, IndirectObject], None]
     ) -> None:
-        assert page[PA.TYPE] == CO.PAGE
+        assert cast(str, page[PA.TYPE]) == CO.PAGE
         if page.pdf is not None:
             other = page.pdf.pdf_header
             if isinstance(other, str):
@@ -292,7 +292,7 @@ class PdfWriter:
             raise ValueError("Please specify the page_number")
         pages = cast(Dict[str, Any], self.get_object(self._pages))
         # TODO: crude hack
-        return pages[PA.KIDS][page_number].get_object()
+        return cast(PageObject, pages[PA.KIDS][page_number].get_object())
 
     def getPage(self, pageNumber: int) -> PageObject:  # pragma: no cover
         """
@@ -610,6 +610,14 @@ class PdfWriter:
                 writer_parent_annot = writer_annot[PG.PARENT]
             for field in fields:
                 if writer_annot.get(FieldDictionaryAttributes.T) == field:
+                    if writer_annot.get(FieldDictionaryAttributes.FT) == "/Btn":
+                        writer_annot.update(
+                            {
+                                NameObject(
+                                    AnnotationDictionaryAttributes.AS
+                                ): NameObject(fields[field])
+                            }
+                        )
                     writer_annot.update(
                         {
                             NameObject(FieldDictionaryAttributes.V): TextStringObject(
@@ -1399,7 +1407,7 @@ class PdfWriter:
     def add_uri(
         self,
         pagenum: int,
-        uri: int,
+        uri: str,
         rect: RectangleObject,
         border: Optional[ArrayObject] = None,
     ) -> None:
@@ -1408,7 +1416,7 @@ class PdfWriter:
         This uses the basic structure of :meth:`add_link`
 
         :param int pagenum: index of the page on which to place the URI action.
-        :param int uri: string -- uri of resource to link to.
+        :param str uri: URI of resource to link to.
         :param rect: :class:`RectangleObject<PyPDF2.generic.RectangleObject>` or array of four
             integers specifying the clickable rectangular area
             ``[xLL, yLL, xUR, yUR]``, or string in the form ``"[ xLL yLL xUR yUR ]"``.
@@ -1466,7 +1474,7 @@ class PdfWriter:
     def addURI(
         self,
         pagenum: int,
-        uri: int,
+        uri: str,
         rect: RectangleObject,
         border: Optional[ArrayObject] = None,
     ) -> None:  # pragma: no cover
@@ -1794,6 +1802,46 @@ class PdfWriter:
         deprecate_with_replacement("pageMode", "page_mode")
         self.page_mode = mode
 
+    def add_annotation(self, page_number: int, annotation: Dict[str, Any]) -> None:
+        to_add = cast(DictionaryObject, _pdf_objectify(annotation))
+        to_add[NameObject("/P")] = self.get_object(self._pages)["/Kids"][page_number]  # type: ignore
+        page = self.pages[page_number]
+        if page.annotations is None:
+            page[NameObject("/Annots")] = ArrayObject()
+        assert page.annotations is not None
+
+        ind_obj = self._add_object(to_add)
+
+        page.annotations.append(ind_obj)
+
+
+def _pdf_objectify(obj: Union[Dict[str, Any], str, int, List[Any]]) -> PdfObject:
+    if isinstance(obj, PdfObject):
+        return obj
+    if isinstance(obj, dict):
+        to_add = DictionaryObject()
+        for key, value in obj.items():
+            name_key = NameObject(key)
+            casted_value = _pdf_objectify(value)
+            to_add[name_key] = casted_value
+        return to_add
+    elif isinstance(obj, list):
+        arr = ArrayObject()
+        for el in obj:
+            arr.append(_pdf_objectify(el))
+        return arr
+    elif isinstance(obj, str):
+        if obj.startswith("/"):
+            return NameObject(obj)
+        else:
+            return TextStringObject(obj)
+    elif isinstance(obj, (int, float)):
+        return FloatObject(obj)
+    else:
+        raise NotImplementedError(
+            f"type(obj)={type(obj)} could not be casted to PdfObject"
+        )
+
 
 class PdfFileWriter(PdfWriter):  # pragma: no cover
     def __init__(self, *args: Any, **kwargs: Any) -> None:
diff -pruN 2.6.0-1/PyPDF2/xmp.py 2.8.1-1/PyPDF2/xmp.py
--- 2.6.0-1/PyPDF2/xmp.py	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/PyPDF2/xmp.py	2022-07-25 20:41:21.000000000 +0000
@@ -16,6 +16,7 @@ from typing import (
     Optional,
     TypeVar,
     Union,
+    cast,
 )
 from xml.dom.minidom import Document
 from xml.dom.minidom import Element as XmlElement
@@ -482,7 +483,7 @@ class XmpInformation(PdfObject):
     @property
     def xmpmm_instanceId(self) -> str:  # pragma: no cover
         deprecate_with_replacement("xmpmm_instanceId", "xmpmm_instance_id")
-        return self.xmpmm_instance_id
+        return cast(str, self.xmpmm_instance_id)
 
     @xmpmm_instanceId.setter
     def xmpmm_instanceId(self, value: str) -> None:  # pragma: no cover
diff -pruN 2.6.0-1/requirements/ci.txt 2.8.1-1/requirements/ci.txt
--- 2.6.0-1/requirements/ci.txt	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/requirements/ci.txt	2022-07-25 20:41:21.000000000 +0000
@@ -15,7 +15,7 @@ flake8==4.0.1
     # via
     #   -r requirements/ci.in
     #   flake8-bugbear
-flake8-bugbear==22.4.25
+flake8-bugbear==22.7.1
     # via -r requirements/ci.in
 flake8-implicit-str-concat==0.2.0
     # via -r requirements/ci.in
@@ -30,7 +30,7 @@ mccabe==0.6.1
     # via flake8
 more-itertools==8.13.0
     # via flake8-implicit-str-concat
-mypy==0.961
+mypy==0.971
     # via -r requirements/ci.in
 mypy-extensions==0.4.3
     # via mypy
@@ -46,7 +46,7 @@ py-cpuinfo==8.0.0
     # via pytest-benchmark
 pycodestyle==2.8.0
     # via flake8
-pycryptodome==3.14.1
+pycryptodome==3.15.0
     # via -r requirements/ci.in
 pyflakes==2.4.0
     # via flake8
@@ -66,7 +66,7 @@ typed-ast==1.5.4
     # via mypy
 typeguard==2.13.3
     # via -r requirements/ci.in
-types-pillow==9.0.20
+types-pillow==9.2.0
     # via -r requirements/ci.in
 typing-extensions==4.1.1
     # via
diff -pruN 2.6.0-1/requirements/dev.txt 2.8.1-1/requirements/dev.txt
--- 2.6.0-1/requirements/dev.txt	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/requirements/dev.txt	2022-07-25 20:41:21.000000000 +0000
@@ -6,13 +6,13 @@
 #
 attrs==21.4.0
     # via pytest
-black==22.3.0
+black==22.6.0
     # via -r requirements/dev.in
 bleach==4.1.0
     # via readme-renderer
 certifi==2022.6.15
     # via requests
-cffi==1.15.0
+cffi==1.15.1
     # via cryptography
 cfgv==3.3.1
     # via pre-commit
@@ -26,11 +26,11 @@ colorama==0.4.5
     # via twine
 coverage[toml]==6.2
     # via pytest-cov
-cryptography==37.0.2
+cryptography==37.0.4
     # via secretstorage
 dataclasses==0.8
     # via black
-distlib==0.3.4
+distlib==0.3.5
     # via virtualenv
 docutils==0.18.1
     # via readme-renderer
@@ -135,11 +135,11 @@ typing-extensions==4.1.1
     # via
     #   black
     #   importlib-metadata
-urllib3==1.26.9
+urllib3==1.26.10
     # via
     #   requests
     #   twine
-virtualenv==20.14.1
+virtualenv==20.15.1
     # via pre-commit
 webencodings==0.5.1
     # via bleach
diff -pruN 2.6.0-1/requirements/docs.txt 2.8.1-1/requirements/docs.txt
--- 2.6.0-1/requirements/docs.txt	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/requirements/docs.txt	2022-07-25 20:41:21.000000000 +0000
@@ -8,9 +8,9 @@ alabaster==0.7.12
     # via sphinx
 attrs==21.4.0
     # via markdown-it-py
-babel==2.10.1
+babel==2.10.3
     # via sphinx
-certifi==2022.5.18.1
+certifi==2022.6.15
     # via requests
 charset-normalizer==2.0.12
     # via requests
@@ -21,7 +21,7 @@ docutils==0.17.1
     #   sphinx-rtd-theme
 idna==3.3
     # via requests
-imagesize==1.3.0
+imagesize==1.4.1
     # via sphinx
 importlib-metadata==4.8.3
     # via sphinx
@@ -78,7 +78,7 @@ typing-extensions==4.1.1
     # via
     #   importlib-metadata
     #   markdown-it-py
-urllib3==1.26.9
+urllib3==1.26.10
     # via requests
 zipp==3.6.0
     # via importlib-metadata
Binary files 2.6.0-1/resources/libreoffice-form.pdf and 2.8.1-1/resources/libreoffice-form.pdf differ
diff -pruN 2.6.0-1/resources/outlines-with-invalid-destinations.pdf 2.8.1-1/resources/outlines-with-invalid-destinations.pdf
--- 2.6.0-1/resources/outlines-with-invalid-destinations.pdf	1970-01-01 00:00:00.000000000 +0000
+++ 2.8.1-1/resources/outlines-with-invalid-destinations.pdf	2022-07-25 20:41:21.000000000 +0000
@@ -0,0 +1,906 @@
+%PDF-1.5
+%
+2 0 obj
+<<
+/Type /Catalog
+/Names 4 0 R
+/Pages 5 0 R
+/Metadata 6 0 R
+/Outlines 7 0 R
+/PageMode /UseOutlines
+/OpenAction 8 0 R
+>>
+endobj
+6 0 obj
+<<
+/Type /Metadata
+/Length 3046
+/Subtype /XML
+>>
+stream
+<?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.1.1">
+	<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+		<rdf:Description rdf:about=""
+				xmlns:xap="http://ns.adobe.com/xap/1.0/">
+			<xap:CreateDate>2022-04-06T13:15:41-05:00</xap:CreateDate>
+			<xap:ModifyDate>2022-07-14T15:33:30-05:00</xap:ModifyDate>
+			<xap:CreatorTool>LaTeX with hyperref</xap:CreatorTool>
+		</rdf:Description>
+		<rdf:Description rdf:about=""
+				xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
+			<pdf:Producer>pdfTeX-1.40.23</pdf:Producer>
+		</rdf:Description>
+		<rdf:Description rdf:about=""
+				xmlns:dc="http://purl.org/dc/elements/1.1/">
+			<dc:format>application/pdf</dc:format>
+			<dc:description>
+				<rdf:Alt>
+					<rdf:li xml:lang="x-default"/>
+				</rdf:Alt>
+			</dc:description>
+			<dc:title>
+				<rdf:Alt>
+					<rdf:li xml:lang="x-default"/>
+				</rdf:Alt>
+			</dc:title>
+		</rdf:Description>
+	</rdf:RDF>
+</x:xmpmeta>
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                           
+<?xpacket end="w"?>
+endstream
+endobj
+28 0 obj
+<<
+/Length 497
+>>
+stream
+BT
+/F30 14.3462 Tf 124.802 706.129 Td [(Con)31(ten)31(ts)]TJ/F31 9.9626 Tf 0 -21.918 Td [(1)-925(F)96(o)-32(o)-30616(2)]TJ 0 -21.918 Td [(2)-925(Bar)-30574(2)]TJ 0 -21.918 Td [(3)-925(Baz)-30537(2)]TJ 0 -21.917 Td [(4)-925(F)96(o)-32(o)-30616(2)]TJ 0 -21.918 Td [(5)-925(Bar)-30574(3)]TJ 0 -21.918 Td [(6)-925(Baz)-30537(3)]TJ 0 -21.918 Td [(7)-925(F)96(o)-32(o)-30616(3)]TJ 0 -21.918 Td [(8)-925(Bar)-30574(4)]TJ 0 -21.918 Td [(9)-925(Baz)-30537(4)]TJ/F20 9.9626 Tf 169.365 -418.43 Td [(1)]TJ
+ET
+
+endstream
+endobj
+30 0 obj
+<<
+/Length 7055
+>>
+stream
+BT
+/F30 14.3462 Tf 124.802 706.129 Td [(1)-1125(F)94(o)-31(o)]TJ/F20 9.9626 Tf 0 -21.821 Td [(Hello,)-490(here)-459(is)-459(some)-459(text)-459(without)-458(a)-459(meaning.)-821(This)-459(text)-459(should)-459(sho)28(w)-459(what)-459(a)]TJ 0 -11.955 Td [(prin)28(ted)-389(text)-389(will)-388(lo)-28(ok)-389(lik)28(e)-389(at)-388(this)-389(place.)-611(If)-388(y)27(ou)-388(read)-389(this)-389(text,)-402(y)27(ou)-388(will)-389(get)-389(no)]TJ 0 -11.955 Td [(information.)-427(Really?)-428(Is)-282(there)-282(no)-282(information?)-427(Is)-282(there)-282(a)-282(di\013e)-1(r)1(e)-1(n)1(c)-1(e)-282(b)-27(et)27(w)28(een)-282(this)]TJ 0 -11.956 Td [(text)-399(and)-398(some)-399(nonsense)-399(lik)28(e)-399(\134Huardest)-398(ge)-1(f)1(burn"?)-641(Kjift)-398({)-399(not)-399(at)-398(all!)-641(A)-399(blin)1(d)]TJ 0 -11.955 Td [(text)-335(lik)28(e)-336(this)-335(giv)28(es)-335(y)27(ou)-335(information)-335(ab)-28(ou)1(t)-336(the)-335(selected)-335(fon)28(t,)-336(ho)28(w)-336(th)1(e)-336(letters)-335(are)]TJ 0 -11.955 Td [(written)-276(and)-277(an)-276(impression)-277(of)-276(the)-277(lo)-27(ok.)-426(This)-276(text)-277(should)-276(con)28(tain)-277(all)-276(letters)-277(of)-276(the)]TJ 0 -11.955 Td [(alphab)-28(et)-325(and)-326(it)-325(should)-326(b)-28(e)-325(written)-326(in)-326(of)-325(the)-326(original)-325(language.)-442(There)-326(is)-325(no)-326(need)]TJ 0 -11.955 Td [(for)-363(sp)-28(ecial)-363(con)27(ten)28(t,)-370(but)-364(the)-363(length)-363(of)-363(w)27(ord)1(s)-364(should)-363(matc)28(h)-363(the)-364(language.)-363(Hello,)]TJ 0 -11.955 Td [(here)-275(is)-274(some)-275(text)-274(w)-1(it)1(hout)-275(a)-275(meaning.)-424(This)-275(text)-275(should)-274(sho)28(w)-275(what)-274(a)-275(prin)28(ted)-275(text)]TJ 0 -11.956 Td [(will)-384(lo)-28(ok)-384(l)1(ik)27(e)-384(at)-383(this)-384(place.)-596(I)-1(f)-383(y)27(ou)-383(read)-384(this)-384(text,)-397(y)28(ou)-384(will)-384(get)-384(no)-383(information.)]TJ 0 -11.955 Td [(Really?)-692(Is)-416(there)-416(n)1(o)-416(information?)-692(Is)-416(there)-416(a)-415(di\013erence)-416(b)-28(et)28(w)27(een)-415(this)-416(text)-416(and)]TJ 0 -11.955 Td [(some)-276(nonsense)-276(lik)28(e)-276(\134Huardest)-276(gefburn"?)-425(Kjift)-276({)-276(not)-276(at)-275(all!)-426(A)-275(blind)-276(text)-276(lik)28(e)-276(this)]TJ 0 -11.955 Td [(giv)28(es)-370(y)28(ou)-370(information)-369(ab)-28(out)-369(the)-370(selected)-370(fon)28(t,)-379(ho)28(w)-369(the)-370(letters)-370(are)-369(written)-370(and)]TJ 0 -11.955 Td [(an)-370(impression)-370(of)-370(the)-370(lo)-28(ok.)-554(This)-370(text)-370(should)-370(con)28(tain)-370(all)-370(letters)-370(of)-370(the)-370(alphab)-28(et)]TJ 0 -11.955 Td [(and)-281(it)-281(should)-281(b)-28(e)-281(written)-281(in)-281(of)-280(the)-281(original)-281(language.)-427(There)-281(is)-281(no)-281(need)-281(for)-281(sp)-28(ecial)]TJ 0 -11.956 Td [(con)28(ten)28(t,)-334(but)-333(the)-333(length)-334(of)-333(w)28(ords)-333(s)-1(h)1(ould)-334(matc)28(h)-333(the)-334(language.)]TJ/F30 14.3462 Tf 0 -32.946 Td [(2)-1125(Bar)]TJ/F20 9.9626 Tf 0 -21.82 Td [(Hello,)-490(here)-459(is)-459(some)-459(text)-459(without)-458(a)-459(meaning.)-821(This)-459(text)-459(should)-459(sho)28(w)-459(what)-459(a)]TJ 0 -11.956 Td [(prin)28(ted)-389(text)-389(will)-388(lo)-28(ok)-389(lik)28(e)-389(at)-388(this)-389(place.)-611(If)-388(y)27(ou)-388(read)-389(this)-389(text,)-402(y)27(ou)-388(will)-389(get)-389(no)]TJ 0 -11.955 Td [(information.)-427(Really?)-428(Is)-282(there)-282(no)-282(information?)-427(Is)-282(there)-282(a)-282(di\013e)-1(r)1(e)-1(n)1(c)-1(e)-282(b)-27(et)27(w)28(een)-282(this)]TJ 0 -11.955 Td [(text)-399(and)-398(some)-399(nonsense)-399(lik)28(e)-399(\134Huardest)-398(ge)-1(f)1(burn"?)-641(Kjift)-398({)-399(not)-399(at)-398(all!)-641(A)-399(blin)1(d)]TJ 0 -11.955 Td [(text)-335(lik)28(e)-336(this)-335(giv)28(es)-335(y)27(ou)-335(information)-335(ab)-28(ou)1(t)-336(the)-335(selected)-335(fon)28(t,)-336(ho)28(w)-336(th)1(e)-336(letters)-335(are)]TJ 0 -11.955 Td [(written)-398(and)-397(an)-398(impression)-397(of)-398(the)-397(lo)-28(ok.)-637(This)-398(text)-398(shou)1(ld)-398(con)28(tain)-398(all)-397(letters)-398(of)]TJ 0 -11.955 Td [(the)-365(alphab)-28(et)-365(and)-365(it)-365(should)-365(b)-28(e)-365(written)-365(in)-365(of)-365(the)-365(original)-365(language.)-540(There)-365(is)-365(no)]TJ 0 -11.956 Td [(need)-333(for)-334(sp)-27(ecial)-334(con)28(ten)28(t,)-334(b)1(ut)-334(the)-333(length)-333(of)-334(w)28(ords)-333(should)-333(m)-1(atc)28(h)-333(the)-333(language.)-334(7)]TJ/F30 14.3462 Tf 0 -32.946 Td [(3)-1125(Baz)]TJ/F20 9.9626 Tf 0 -21.82 Td [(Hello,)-490(here)-459(is)-459(some)-459(text)-459(without)-458(a)-459(meaning.)-821(This)-459(text)-459(should)-459(sho)28(w)-459(what)-459(a)]TJ 0 -11.956 Td [(prin)28(ted)-389(text)-389(will)-388(lo)-28(ok)-389(lik)28(e)-389(at)-388(this)-389(place.)-611(If)-388(y)27(ou)-388(read)-389(this)-389(text,)-402(y)27(ou)-388(will)-389(get)-389(no)]TJ 0 -11.955 Td [(information.)-427(Really?)-428(Is)-282(there)-282(no)-282(information?)-427(Is)-282(there)-282(a)-282(di\013e)-1(r)1(e)-1(n)1(c)-1(e)-282(b)-27(et)27(w)28(een)-282(this)]TJ 0 -11.955 Td [(text)-399(and)-398(some)-399(nonsense)-399(lik)28(e)-399(\134Huardest)-398(ge)-1(f)1(burn"?)-641(Kjift)-398({)-399(not)-399(at)-398(all!)-641(A)-399(blin)1(d)]TJ 0 -11.955 Td [(text)-335(lik)28(e)-336(this)-335(giv)28(es)-335(y)27(ou)-335(information)-335(ab)-28(ou)1(t)-336(the)-335(selected)-335(fon)28(t,)-336(ho)28(w)-336(th)1(e)-336(letters)-335(are)]TJ 0 -11.955 Td [(written)-398(and)-397(an)-398(impression)-397(of)-398(the)-397(lo)-28(ok.)-637(This)-398(text)-398(shou)1(ld)-398(con)28(tain)-398(all)-397(letters)-398(of)]TJ 0 -11.955 Td [(the)-365(alphab)-28(et)-365(and)-365(it)-365(should)-365(b)-28(e)-365(written)-365(in)-365(of)-365(the)-365(original)-365(language.)-540(There)-365(is)-365(no)]TJ 0 -11.956 Td [(need)-333(for)-334(sp)-27(ecial)-334(con)28(ten)28(t,)-334(b)1(ut)-334(the)-333(length)-333(of)-334(w)28(ords)-333(should)-333(m)-1(atc)28(h)-333(the)-333(language.)-334(5)]TJ/F30 14.3462 Tf 0 -32.946 Td [(4)-1125(F)94(o)-31(o)]TJ/F20 9.9626 Tf 0 -21.82 Td [(Hello,)-490(here)-459(is)-459(some)-459(text)-459(without)-458(a)-459(meaning.)-821(This)-459(text)-459(should)-459(sho)28(w)-459(what)-459(a)]TJ 0 -11.956 Td [(prin)28(ted)-389(text)-389(will)-388(lo)-28(ok)-389(lik)28(e)-389(at)-388(this)-389(place.)-611(If)-388(y)27(ou)-388(read)-389(this)-389(text,)-402(y)27(ou)-388(will)-389(get)-389(no)]TJ 0 -11.955 Td [(information.)-427(Really?)-428(Is)-282(there)-282(no)-282(information?)-427(Is)-282(there)-282(a)-282(di\013e)-1(r)1(e)-1(n)1(c)-1(e)-282(b)-27(et)27(w)28(een)-282(this)]TJ 0 -11.955 Td [(text)-399(and)-398(some)-399(nonsense)-399(lik)28(e)-399(\134Huardest)-398(ge)-1(f)1(burn"?)-641(Kjift)-398({)-399(not)-399(at)-398(all!)-641(A)-399(blin)1(d)]TJ 0 -11.955 Td [(text)-335(lik)28(e)-336(this)-335(giv)28(es)-335(y)27(ou)-335(information)-335(ab)-28(ou)1(t)-336(the)-335(selected)-335(fon)28(t,)-336(ho)28(w)-336(th)1(e)-336(letters)-335(are)]TJ 169.365 -35.049 Td [(2)]TJ
+ET
+
+endstream
+endobj
+32 0 obj
+<<
+/Length 7358
+>>
+stream
+BT
+/F20 9.9626 Tf 124.802 706.129 Td [(written)-276(and)-277(an)-276(impression)-277(of)-276(the)-277(lo)-27(ok.)-426(This)-276(text)-277(should)-276(con)28(tain)-277(all)-276(letters)-277(of)-276(the)]TJ 0 -11.955 Td [(alphab)-28(et)-325(and)-326(it)-325(should)-326(b)-28(e)-325(written)-326(in)-326(of)-325(the)-326(original)-325(language.)-442(There)-326(is)-325(no)-326(need)]TJ 0 -11.955 Td [(for)-363(sp)-28(ecial)-363(con)27(ten)28(t,)-370(but)-364(the)-363(length)-363(of)-363(w)27(ord)1(s)-364(should)-363(matc)28(h)-363(the)-364(language.)-363(Hello,)]TJ 0 -11.956 Td [(here)-275(is)-274(some)-275(text)-274(w)-1(it)1(hout)-275(a)-275(meaning.)-424(This)-275(text)-275(should)-274(sho)28(w)-275(what)-274(a)-275(prin)28(ted)-275(text)]TJ 0 -11.955 Td [(will)-384(lo)-28(ok)-384(l)1(ik)27(e)-384(at)-383(this)-384(place.)-596(I)-1(f)-383(y)27(ou)-383(read)-384(this)-384(text,)-397(y)28(ou)-384(will)-384(get)-384(no)-383(information.)]TJ 0 -11.955 Td [(Really?)-692(Is)-416(there)-416(n)1(o)-416(information?)-692(Is)-416(there)-416(a)-415(di\013erence)-416(b)-28(et)28(w)27(een)-415(this)-416(text)-416(and)]TJ 0 -11.955 Td [(some)-276(nonsense)-276(lik)28(e)-276(\134Huardest)-276(gefburn"?)-425(Kjift)-276({)-276(not)-276(at)-275(all!)-426(A)-275(blind)-276(text)-276(lik)28(e)-276(this)]TJ 0 -11.955 Td [(giv)28(es)-370(y)28(ou)-370(information)-369(ab)-28(out)-369(the)-370(selected)-370(fon)28(t,)-379(ho)28(w)-369(the)-370(letters)-370(are)-369(written)-370(and)]TJ 0 -11.956 Td [(an)-370(impression)-370(of)-370(the)-370(lo)-28(ok.)-554(This)-370(text)-370(should)-370(con)28(tain)-370(all)-370(letters)-370(of)-370(the)-370(alphab)-28(et)]TJ 0 -11.955 Td [(and)-281(it)-281(should)-281(b)-28(e)-281(written)-281(in)-281(of)-280(the)-281(original)-281(language.)-427(There)-281(is)-281(no)-281(need)-281(for)-281(sp)-28(ecial)]TJ 0 -11.955 Td [(con)28(ten)28(t,)-334(but)-333(the)-333(length)-334(of)-333(w)28(ords)-333(s)-1(h)1(ould)-334(matc)28(h)-333(the)-334(language.)]TJ/F30 14.3462 Tf 0 -32.946 Td [(5)-1125(Bar)]TJ/F20 9.9626 Tf 0 -21.821 Td [(Hello,)-490(here)-459(is)-459(some)-459(text)-459(without)-458(a)-459(meaning.)-821(This)-459(text)-459(should)-459(sho)28(w)-459(what)-459(a)]TJ 0 -11.955 Td [(prin)28(ted)-389(text)-389(will)-388(lo)-28(ok)-389(lik)28(e)-389(at)-388(this)-389(place.)-611(If)-388(y)27(ou)-388(read)-389(this)-389(text,)-402(y)27(ou)-388(will)-389(get)-389(no)]TJ 0 -11.955 Td [(information.)-427(Really?)-428(Is)-282(there)-282(no)-282(information?)-427(Is)-282(there)-282(a)-282(di\013e)-1(r)1(e)-1(n)1(c)-1(e)-282(b)-27(et)27(w)28(een)-282(this)]TJ 0 -11.955 Td [(text)-399(and)-398(some)-399(nonsense)-399(lik)28(e)-399(\134Huardest)-398(ge)-1(f)1(burn"?)-641(Kjift)-398({)-399(not)-399(at)-398(all!)-641(A)-399(blin)1(d)]TJ 0 -11.955 Td [(text)-335(lik)28(e)-336(this)-335(giv)28(es)-335(y)27(ou)-335(information)-335(ab)-28(ou)1(t)-336(the)-335(selected)-335(fon)28(t,)-336(ho)28(w)-336(th)1(e)-336(letters)-335(are)]TJ 0 -11.956 Td [(written)-398(and)-397(an)-398(impression)-397(of)-398(the)-397(lo)-28(ok.)-637(This)-398(text)-398(shou)1(ld)-398(con)28(tain)-398(all)-397(letters)-398(of)]TJ 0 -11.955 Td [(the)-365(alphab)-28(et)-365(and)-365(it)-365(should)-365(b)-28(e)-365(written)-365(in)-365(of)-365(the)-365(original)-365(language.)-540(There)-365(is)-365(no)]TJ 0 -11.955 Td [(need)-333(for)-334(sp)-27(ecial)-334(con)28(ten)28(t,)-334(b)1(ut)-334(the)-333(length)-333(of)-334(w)28(ords)-333(should)-333(m)-1(atc)28(h)-333(the)-333(language.)-334(7)]TJ/F30 14.3462 Tf 0 -32.946 Td [(6)-1125(Baz)]TJ/F20 9.9626 Tf 0 -21.821 Td [(Hello,)-490(here)-459(is)-459(some)-459(text)-459(without)-458(a)-459(meaning.)-821(This)-459(text)-459(should)-459(sho)28(w)-459(what)-459(a)]TJ 0 -11.955 Td [(prin)28(ted)-389(text)-389(will)-388(lo)-28(ok)-389(lik)28(e)-389(at)-388(this)-389(place.)-611(If)-388(y)27(ou)-388(read)-389(this)-389(text,)-402(y)27(ou)-388(will)-389(get)-389(no)]TJ 0 -11.955 Td [(information.)-427(Really?)-428(Is)-282(there)-282(no)-282(information?)-427(Is)-282(there)-282(a)-282(di\013e)-1(r)1(e)-1(n)1(c)-1(e)-282(b)-27(et)27(w)28(een)-282(this)]TJ 0 -11.955 Td [(text)-399(and)-398(some)-399(nonsense)-399(lik)28(e)-399(\134Huardest)-398(ge)-1(f)1(burn"?)-641(Kjift)-398({)-399(not)-399(at)-398(all!)-641(A)-399(blin)1(d)]TJ 0 -11.955 Td [(text)-335(lik)28(e)-336(this)-335(giv)28(es)-335(y)27(ou)-335(information)-335(ab)-28(ou)1(t)-336(the)-335(selected)-335(fon)28(t,)-336(ho)28(w)-336(th)1(e)-336(letters)-335(are)]TJ 0 -11.956 Td [(written)-398(and)-397(an)-398(impression)-397(of)-398(the)-397(lo)-28(ok.)-637(This)-398(text)-398(shou)1(ld)-398(con)28(tain)-398(all)-397(letters)-398(of)]TJ 0 -11.955 Td [(the)-365(alphab)-28(et)-365(and)-365(it)-365(should)-365(b)-28(e)-365(written)-365(in)-365(of)-365(the)-365(original)-365(language.)-540(There)-365(is)-365(no)]TJ 0 -11.955 Td [(need)-333(for)-334(sp)-27(ecial)-334(con)28(ten)28(t,)-334(b)1(ut)-334(the)-333(length)-333(of)-334(w)28(ords)-333(should)-333(m)-1(atc)28(h)-333(the)-333(language.)-334(5)]TJ/F30 14.3462 Tf 0 -32.946 Td [(7)-1125(F)94(o)-31(o)]TJ/F20 9.9626 Tf 0 -21.821 Td [(Hello,)-490(here)-459(is)-459(some)-459(text)-459(without)-458(a)-459(meaning.)-821(This)-459(text)-459(should)-459(sho)28(w)-459(what)-459(a)]TJ 0 -11.955 Td [(prin)28(ted)-389(text)-389(will)-388(lo)-28(ok)-389(lik)28(e)-389(at)-388(this)-389(place.)-611(If)-388(y)27(ou)-388(read)-389(this)-389(text,)-402(y)27(ou)-388(will)-389(get)-389(no)]TJ 0 -11.955 Td [(information.)-427(Really?)-428(Is)-282(there)-282(no)-282(information?)-427(Is)-282(there)-282(a)-282(di\013e)-1(r)1(e)-1(n)1(c)-1(e)-282(b)-27(et)27(w)28(een)-282(this)]TJ 0 -11.955 Td [(text)-399(and)-398(some)-399(nonsense)-399(lik)28(e)-399(\134Huardest)-398(ge)-1(f)1(burn"?)-641(Kjift)-398({)-399(not)-399(at)-398(all!)-641(A)-399(blin)1(d)]TJ 0 -11.955 Td [(text)-335(lik)28(e)-336(this)-335(giv)28(es)-335(y)27(ou)-335(information)-335(ab)-28(ou)1(t)-336(the)-335(selected)-335(fon)28(t,)-336(ho)28(w)-336(th)1(e)-336(letters)-335(are)]TJ 0 -11.956 Td [(written)-276(and)-277(an)-276(impression)-277(of)-276(the)-277(lo)-27(ok.)-426(This)-276(text)-277(should)-276(con)28(tain)-277(all)-276(letters)-277(of)-276(the)]TJ 0 -11.955 Td [(alphab)-28(et)-325(and)-326(it)-325(should)-326(b)-28(e)-325(written)-326(in)-326(of)-325(the)-326(original)-325(language.)-442(There)-326(is)-325(no)-326(need)]TJ 0 -11.955 Td [(for)-363(sp)-28(ecial)-363(con)27(ten)28(t,)-370(but)-364(the)-363(length)-363(of)-363(w)27(ord)1(s)-364(should)-363(matc)28(h)-363(the)-364(language.)-363(Hello,)]TJ 0 -11.955 Td [(here)-275(is)-274(some)-275(text)-274(w)-1(it)1(hout)-275(a)-275(meaning.)-424(This)-275(text)-275(should)-274(sho)28(w)-275(what)-274(a)-275(prin)28(ted)-275(text)]TJ 0 -11.955 Td [(will)-384(lo)-28(ok)-384(l)1(ik)27(e)-384(at)-383(this)-384(place.)-596(I)-1(f)-383(y)27(ou)-383(read)-384(this)-384(text,)-397(y)28(ou)-384(will)-384(get)-384(no)-383(information.)]TJ 0 -11.955 Td [(Really?)-692(Is)-416(there)-416(n)1(o)-416(information?)-692(Is)-416(there)-416(a)-415(di\013erence)-416(b)-28(et)28(w)27(een)-415(this)-416(text)-416(and)]TJ 0 -11.956 Td [(some)-276(nonsense)-276(lik)28(e)-276(\134Huardest)-276(gefburn"?)-425(Kjift)-276({)-276(not)-276(at)-275(all!)-426(A)-275(blind)-276(text)-276(lik)28(e)-276(this)]TJ 169.365 -32.96 Td [(3)]TJ
+ET
+
+endstream
+endobj
+34 0 obj
+<<
+/Length 3804
+>>
+stream
+BT
+/F20 9.9626 Tf 124.802 706.129 Td [(giv)28(es)-370(y)28(ou)-370(information)-369(ab)-28(out)-369(the)-370(selected)-370(fon)28(t,)-379(ho)28(w)-369(the)-370(letters)-370(are)-369(written)-370(and)]TJ 0 -11.955 Td [(an)-370(impression)-370(of)-370(the)-370(lo)-28(ok.)-554(This)-370(text)-370(should)-370(con)28(tain)-370(all)-370(letters)-370(of)-370(the)-370(alphab)-28(et)]TJ 0 -11.955 Td [(and)-281(it)-281(should)-281(b)-28(e)-281(written)-281(in)-281(of)-280(the)-281(original)-281(language.)-427(There)-281(is)-281(no)-281(need)-281(for)-281(sp)-28(ecial)]TJ 0 -11.956 Td [(con)28(ten)28(t,)-334(but)-333(the)-333(length)-334(of)-333(w)28(ords)-333(s)-1(h)1(ould)-334(matc)28(h)-333(the)-334(language.)]TJ/F30 14.3462 Tf 0 -32.945 Td [(8)-1125(Bar)]TJ/F20 9.9626 Tf 0 -21.821 Td [(Hello,)-490(here)-459(is)-459(some)-459(text)-459(without)-458(a)-459(meaning.)-821(This)-459(text)-459(should)-459(sho)28(w)-459(what)-459(a)]TJ 0 -11.956 Td [(prin)28(ted)-389(text)-389(will)-388(lo)-28(ok)-389(lik)28(e)-389(at)-388(this)-389(place.)-611(If)-388(y)27(ou)-388(read)-389(this)-389(text,)-402(y)27(ou)-388(will)-389(get)-389(no)]TJ 0 -11.955 Td [(information.)-427(Really?)-428(Is)-282(there)-282(no)-282(information?)-427(Is)-282(there)-282(a)-282(di\013e)-1(r)1(e)-1(n)1(c)-1(e)-282(b)-27(et)27(w)28(een)-282(this)]TJ 0 -11.955 Td [(text)-399(and)-398(some)-399(nonsense)-399(lik)28(e)-399(\134Huardest)-398(ge)-1(f)1(burn"?)-641(Kjift)-398({)-399(not)-399(at)-398(all!)-641(A)-399(blin)1(d)]TJ 0 -11.955 Td [(text)-335(lik)28(e)-336(this)-335(giv)28(es)-335(y)27(ou)-335(information)-335(ab)-28(ou)1(t)-336(the)-335(selected)-335(fon)28(t,)-336(ho)28(w)-336(th)1(e)-336(letters)-335(are)]TJ 0 -11.955 Td [(written)-398(and)-397(an)-398(impression)-397(of)-398(the)-397(lo)-28(ok.)-637(This)-398(text)-398(shou)1(ld)-398(con)28(tain)-398(all)-397(letters)-398(of)]TJ 0 -11.955 Td [(the)-365(alphab)-28(et)-365(and)-365(it)-365(should)-365(b)-28(e)-365(written)-365(in)-365(of)-365(the)-365(original)-365(language.)-540(There)-365(is)-365(no)]TJ 0 -11.956 Td [(need)-333(for)-334(sp)-27(ecial)-334(con)28(ten)28(t,)-334(b)1(ut)-334(the)-333(length)-333(of)-334(w)28(ords)-333(should)-333(m)-1(atc)28(h)-333(the)-333(language.)-334(7)]TJ/F30 14.3462 Tf 0 -32.945 Td [(9)-1125(Baz)]TJ/F20 9.9626 Tf 0 -21.821 Td [(Hello,)-490(here)-459(is)-459(some)-459(text)-459(without)-458(a)-459(meaning.)-821(This)-459(text)-459(should)-459(sho)28(w)-459(what)-459(a)]TJ 0 -11.956 Td [(prin)28(ted)-389(text)-389(will)-388(lo)-28(ok)-389(lik)28(e)-389(at)-388(this)-389(place.)-611(If)-388(y)27(ou)-388(read)-389(this)-389(text,)-402(y)27(ou)-388(will)-389(get)-389(no)]TJ 0 -11.955 Td [(information.)-427(Really?)-428(Is)-282(there)-282(no)-282(information?)-427(Is)-282(there)-282(a)-282(di\013e)-1(r)1(e)-1(n)1(c)-1(e)-282(b)-27(et)27(w)28(een)-282(this)]TJ 0 -11.955 Td [(text)-399(and)-398(some)-399(nonsense)-399(lik)28(e)-399(\134Huardest)-398(ge)-1(f)1(burn"?)-641(Kjift)-398({)-399(not)-399(at)-398(all!)-641(A)-399(blin)1(d)]TJ 0 -11.955 Td [(text)-335(lik)28(e)-336(this)-335(giv)28(es)-335(y)27(ou)-335(information)-335(ab)-28(ou)1(t)-336(the)-335(selected)-335(fon)28(t,)-336(ho)28(w)-336(th)1(e)-336(letters)-335(are)]TJ 0 -11.955 Td [(written)-398(and)-397(an)-398(impression)-397(of)-398(the)-397(lo)-28(ok.)-637(This)-398(text)-398(shou)1(ld)-398(con)28(tain)-398(all)-397(letters)-398(of)]TJ 0 -11.955 Td [(the)-365(alphab)-28(et)-365(and)-365(it)-365(should)-365(b)-28(e)-365(written)-365(in)-365(of)-365(the)-365(original)-365(language.)-540(There)-365(is)-365(no)]TJ 0 -11.956 Td [(need)-333(for)-334(sp)-27(ecial)-334(con)28(ten)28(t,)-334(b)1(ut)-334(the)-333(length)-333(of)-334(w)28(ords)-333(should)-333(m)-1(atc)28(h)-333(the)-333(language.)-334(5)]TJ 169.365 -302.919 Td [(4)]TJ
+ET
+
+endstream
+endobj
+64 0 obj
+<<
+/Length 1724
+>>
+stream
+%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-cmr10-builtin-0)
+%%Title: (TeX-cmr10-builtin-0 TeX cmr10-builtin 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (cmr10-builtin)
+/Supplement 0
+>> def
+/CMapName /TeX-cmr10-builtin-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <FF>
+endcodespacerange
+7 beginbfrange
+<07> <08> <03A5>
+<23> <26> <0023>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+<A8> <A9> <03A5>
+endbfrange
+78 beginbfchar
+<00> <0393>
+<01> <2206>
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<09> <03A8>
+<0A> <2126>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5D> <005D>
+<5E> <02C6>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <02DC>
+<7F> <00A8>
+<A0> <0020>
+<A1> <0393>
+<A2> <2206>
+<A3> <0398>
+<A4> <039B>
+<A5> <039E>
+<A6> <03A0>
+<A7> <03A3>
+<AA> <03A8>
+<AB> <00AD>
+<AC> <00A0>
+<AD> <2126>
+<AE> <00660066>
+<AF> <00660069>
+<B0> <0066006C>
+<B1> <006600660069>
+<B2> <00660066006C>
+<B3> <0131>
+<B4> <0237>
+<B5> <0060>
+<B6> <00B4>
+<B7> <02C7>
+<B8> <02D8>
+<B9> <00AF>
+<BA> <02DA>
+<BB> <00B8>
+<BC> <00DF>
+<BD> <00E6>
+<BE> <0153>
+<BF> <00F8>
+<C0> <00C6>
+<C1> <0152>
+<C2> <00D8>
+<C4> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+
+endstream
+endobj
+67 0 obj
+<<
+/Length 1729
+>>
+stream
+%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-cmbx12-builtin-0)
+%%Title: (TeX-cmbx12-builtin-0 TeX cmbx12-builtin 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (cmbx12-builtin)
+/Supplement 0
+>> def
+/CMapName /TeX-cmbx12-builtin-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <FF>
+endcodespacerange
+7 beginbfrange
+<07> <08> <03A5>
+<23> <26> <0023>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+<A8> <A9> <03A5>
+endbfrange
+78 beginbfchar
+<00> <0393>
+<01> <2206>
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<09> <03A8>
+<0A> <2126>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5D> <005D>
+<5E> <02C6>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <02DC>
+<7F> <00A8>
+<A0> <0020>
+<A1> <0393>
+<A2> <2206>
+<A3> <0398>
+<A4> <039B>
+<A5> <039E>
+<A6> <03A0>
+<A7> <03A3>
+<AA> <03A8>
+<AB> <00AD>
+<AC> <00A0>
+<AD> <2126>
+<AE> <00660066>
+<AF> <00660069>
+<B0> <0066006C>
+<B1> <006600660069>
+<B2> <00660066006C>
+<B3> <0131>
+<B4> <0237>
+<B5> <0060>
+<B6> <00B4>
+<B7> <02C7>
+<B8> <02D8>
+<B9> <00AF>
+<BA> <02DA>
+<BB> <00B8>
+<BC> <00DF>
+<BD> <00E6>
+<BE> <0153>
+<BF> <00F8>
+<C0> <00C6>
+<C1> <0152>
+<C2> <00D8>
+<C4> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+
+endstream
+endobj
+70 0 obj
+<<
+/Length 1729
+>>
+stream
+%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-cmbx10-builtin-0)
+%%Title: (TeX-cmbx10-builtin-0 TeX cmbx10-builtin 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (cmbx10-builtin)
+/Supplement 0
+>> def
+/CMapName /TeX-cmbx10-builtin-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <FF>
+endcodespacerange
+7 beginbfrange
+<07> <08> <03A5>
+<23> <26> <0023>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+<A8> <A9> <03A5>
+endbfrange
+78 beginbfchar
+<00> <0393>
+<01> <2206>
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<09> <03A8>
+<0A> <2126>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5D> <005D>
+<5E> <02C6>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <02DC>
+<7F> <00A8>
+<A0> <0020>
+<A1> <0393>
+<A2> <2206>
+<A3> <0398>
+<A4> <039B>
+<A5> <039E>
+<A6> <03A0>
+<A7> <03A3>
+<AA> <03A8>
+<AB> <00AD>
+<AC> <00A0>
+<AD> <2126>
+<AE> <00660066>
+<AF> <00660069>
+<B0> <0066006C>
+<B1> <006600660069>
+<B2> <00660066006C>
+<B3> <0131>
+<B4> <0237>
+<B5> <0060>
+<B6> <00B4>
+<B7> <02C7>
+<B8> <02D8>
+<B9> <00AF>
+<BA> <02DA>
+<BB> <00B8>
+<BC> <00DF>
+<BD> <00E6>
+<BE> <0153>
+<BF> <00F8>
+<C0> <00C6>
+<C1> <0152>
+<C2> <00D8>
+<C4> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+
+endstream
+endobj
+76 0 obj
+<<
+/Length 18561
+/Length1 2055
+/Length2 16506
+/Length3 0
+>>
+stream
+%!PS-AdobeFont-1.0: CMR10 003.002
+%%Title: CMR10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup
+/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /VVNDXJ+CMR10 def
+/FontBBox {-40 -250 1009 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR10.) readonly def
+/FullName (CMR10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 65 /A put
+dup 72 /H put
+dup 73 /I put
+dup 75 /K put
+dup 82 /R put
+dup 84 /T put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 44 /comma put
+dup 100 /d put
+dup 101 /e put
+dup 123 /endash put
+dup 33 /exclam put
+dup 102 /f put
+dup 11 /ff put
+dup 53 /five put
+dup 52 /four put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 49 /one put
+dup 112 /p put
+dup 46 /period put
+dup 63 /question put
+dup 92 /quotedblleft put
+dup 34 /quotedblright put
+dup 114 /r put
+dup 115 /s put
+dup 55 /seven put
+dup 116 /t put
+dup 51 /three put
+dup 50 /two put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+readonly def
+currentdict end
+currentfile eexec
+oc;jAw-=%W)-{ru)rAE(@{빴Q|_R
+ϤA	-T@|q|VkJ%qu8PwGxŪ̆Q6K-U\%b"t-*xJ+
+}3{Z2zݬT2s$Z&{BJ{x<,-.2iRnñvپ1䠕 '䓱_r"O_t3kefBݼVfj9ҳ Yh뀸{q-ɷ}W??gw1*Eh[:tWeI,v8a<{B100Z85|}Nlw]6Nbh3E`(Eޏ'Q;eԃ/.DyL5$4IG׮Ɋ\yj9.VU5Q!-赁B9dB^oVwBɎT7RsOGA	b#TBv!mWT=w,ID%'MK<|]D@2O( ݎ%#_ɷVBST#z !${l\4ĸ ;5l&!〚=(fUwAeB#30>H 'L+֓jz@=s\<=\Y$D?U	6xGQnǫi%֔!
+L2 [)!fXc <'ȲRP3E!-:'AJ.ĲCJ Jt &{76
+#VH/Fgw"F5wS$|oQ<Η`~<10|<mﴷ؜hޠ߭?`?7_̠[8xP<41=tH ;6}rKu13UC iHt}y~c%\q\4O4v![_Iﳯc0MJMY0̏v{6\ rqɚ"3=TYK.K),GK{aCZBG
+y(K'2O0V6IP$$l-[eɋK&2%gbzJ,uo~M2zu6**9Ψ?ģKc)\gt&?nTw$dN\CO@W2x8q!LdҮo~1V/B=@!0Yoz$ǀ%ĭw2]o _?IhuBmF:1ؖdy6 FLn5Sw&-ӰGz9='(IhN{O 1Lvcmi&"Mm@WՆmb%0٘*`ġߓ/fÝl%PE2:VA)SBL/<5CAl;{(#XnF"  8{RoT(_WbAK|oM_ӗWyM6^at@O1/ F3y#cMMGZ[mzόF	l"J>eVBWB}V)Si,ާRFP.Lрx_[XVQTPv
+e,prhu񐄌`+l{eQ֐_@f63HPavzU_Z1*ǍM+bp;{ݪ	Q3VV;ء͈O.Oi,88Æg=\=@"FKFTbVl(lgbҭ!Ֆ\a4Q1~ 9qV̥ s^ksdnz:Lz]rvNDMG79$ILi&Agnl6yJ	FO<K	PͤOAAvl&Y״' W&0K /i	iu	bC
+8zAH՟3
+y.[xt1AupA.[4S2bw+c tNehD̲"!~;+7p\wxYG
+^5E_ܹG(Al1`8u.u+">;,zɴ%
+oߠx0sW1Fx gmxVyѝ"]#z~pvŨ.rB9$nYCC1td@#8 kNԋK;ԓlF(،N;d*<Ʀs9<GCE`Vh%QFoP$"33P99Zs9'`rW:Nsǔ@f^W݅&24wlz$2Ww݅O9b"OW*F]/`yQ	ɔ\QF*iT^N d_M`S%TNK7+R[rYYqe}YP
+FUEKH'>ZQ@It%[)7&hnY'a¶T'Xrߙ/n_nJL(@
+К
+N{KF^kbn~`L]aU{vLܺ41$rmAsnZ*=sob@{y!CC{c.WZ0nbpgsPd$-\ԛ&L<pl|~8.Ė+fzyv_Bzʇ2?vԼׇXa!8դm
+ۇgw!
+7F	Y@yS]~loB鬓	v!0跊FEa[fPx4H|W;GY"3B5H\"ӫ[1Ιc5N9p>27JBs/g(xQ,t>[8͓GsŸ:R$9]6&my)ivjWLRB^RBalx_Y:5M/j١!}`D&WȪQX$HߧtI	.Y@nr_n܁OtAN-Ln?_^_g~Ə;`KB6eĶ
+>lQp)/;S'^:tJj@xE(0G;κQqǔkT';<qnutlLC1X 5
+qqҥ?z1CS+P1~eS23JMʄl(ӵ$eQ/mpN5K7We|)aHZӯ4uU}U !˖Y !IYӟK%cE=BI]S1 #Ӻh[QLhY-~Srya5 MPYG;9]Y @5(
+>ÃDHjsrxܖ
+.>֯kl;&#<ښe)fFz`Ƿ?Ic @SH&<evn 8F\V3aA!yy:+c!xbM։/f}3ߖ˦"G'fMsXWU}Yĵ^%j!HOH͎_;臲Jv]#
+$'Ch?5<S˰@	a-AcloWM(r #`nY{j`3|lv`'Il!P{E=pa^hOk`p8uy$ru
+f}cq+5y~!]՝U,t)i:HO(_eOFVq>u-G:zHZ\%Uv z^By%NT⸶3=X?mJ-3iH@ܐfσkR.v'm.'SDly7YCm^Gu5_G1t/
+41n_D>}p+fg9h$]@M`^ҹGK;5wIrqA3fAYiuYrD:dR At-,)aɺh9[ԧuS9KTKaX$wgɓO[xqǃyI(j5LIc}|h$zDUwY+Z:ϤŜ1le`u@|܈贚^6/y`a[Ί`ҾEwaziLa}jʰ@}xWns0n*{l?Zz>8p-L&ȣK`> `%`ݿs?v˻^\*QNbf+ۼބo"	٧U	zgga䎐uFљ<Xyݸ*g4?X2]4H͢^qLeoU~7>)ƤHnA7"{DR</2tMs妀k9IXf+٦XE짖.!"*JS7Yj&AJ+房=N$6vSTY#L4Χ? 'FdVGL,+sG^/qhZzDt@3eM@>j)<Wh`M>ע~eVDJ|X}ѧCrTAfP};"ӼK#ΑTF\^ԓ;	|R D\ĂHu6QИ'Q3b;x#3S:jb%tJ/>ʡOrVށx]>)]l5o[F;,N&'i\NQIH?T:@FNSX0<)hW4fFDh.سT)^S-nw},ZNECYRez3\
+tY5`F~_xU|'XǇG@U6I\>:V_>զ9*I0}ӵ\"{3UzuFf٤Pߨ)E8Uw)gq:dj#hqso-@
+KG7"|QЇ Zzs|}LմS:fmA3S2=[dؓJ\ܳc|tj1ƛArѮJv,K|	ϕVސ
+Q[<UX:?c+%	NBS59"ĜgT^bW(*$ w)^N!rYz<&r;AdIC`/}
+-j 6z\lK4*́K-WSPͮAG'E2HP7YW-FEM]B$ ]2%<Q~h^#{dpwф iio9rU{nz}6S]=P_T QTpQNR[OoWO6.d@!חA^KC;%tօ/S+Wb[Bk#mW/ZPW,b=i"TShlF_瘜񄅰ݾ7W`һϫtjOGGn@i4U/	IHv/s/U"^@ACpQԻI˓~>>nUӯGn=ZPrHbv[ox<I7P.RNcJjt}gy	y}U8,<'W{ ?K)UǕpCug"
+8ǵ	1?WE+K}YƼx@jzIJ$]٪3rAzq%ZcK Au'ˢAb1yԵ5'R͈K7JA׷S.Xy~$A5sdnS&Z,:P'Xb a-G!"g6C [VؙWZNz,2)`DCq^ePn-UPLJ$ΐGfdјdREl/!cڢɰ UD̂ghf2F,Za]yI>(:oœ @%ɜ7C?LPoOJZ7aaU.iPH\b} /`8jmcYX5Sl,P!
+Ӥx61S$&kB	Y7]a-1ǳoc*_=`l"lHX{V9/
+u݊hN(HOI)riVgx_YcERִf]VA1Q(צ U6V!}uNĹ~ NYɐYKRСhxyV
+-n>GUD~)\ilU+R?^&jf2~i"=0ؗyҬLϖv7B[	TKi\b#!=S^BFq%<o-FeJ!_XZG=P(.
+ׇdnAT'E)uYY6\}6m$'a
+}Ug#Oe|Qo_E
+ȭ jSCtR r*5 v-QfNVo3S|XVԤstq}e=wIk@@7\;ujշ^FVՙh">
+ ќUS`
+rp<SaL؟}9c\=LWT~	|r}02"s]Z=E[z8ќWB`K-FkD&-gZ(܀9? ?Pfǆk)fs\Y8㼬oSŌ+(~;	R8Mn
+h'aLB'L#ok+bޜiF/b =Ӥ@!MͲ<xQ˹
+cIˌzo&*]9kOdXKV_7vb<Tt\с8)tK^mMu c}>N 4=0P;V=p*Ռ(9=	BYb}6̆|F,_F}H:URCBVROĻ_bhH4 5%ih0$%'r}<:dgF"IhEz-pr]گ"AH\e*2Xq;UI(F! J?ځyĐZ>_t'ZSҶ1LpVzLwl$T'n2 vF)nɄ2P]ɥ旙.&ȯւ)L;8*3"ӟk	Cg^LzrX(Mb̔H#F#"1poo=Rٕ[sRV 6mk E'PP&haF%Ji'~vF3lv.W0#:8X4	}?s-y\=>Oo06shbRyAhO̺cԎ6GYj)|~	69r&(TX(n\g|ge$$WhLw4`M,&Ťzإ.	WLa ҋKkd[Z
+-,m\A?	tKdkԽo3!T"{Z20 ^(v>ÅC=xߓ깰%Kw}϶w"=NCX5^UwN*הZ%c!k#=$IQTax8BH~OU5Q$y*24] ֳq4 wiWIS쳻? }uk$j_W!j%DGO`Ȇ"ͥw~#4Ჱ&Miy5 C TɉD0UcD&l"\{V9+cRaeu`K0``+̾vBi^Gպϝ] L:	)wNyv0nK+-T&e󌜯L{YBh@pCc^$.UÜg-D
+xH1Gv0sY]$&p`%蟼^nK0Q1;MtwZ=ry:#c^|M	GS,~+DJq@\	iM9C6ŀ=ܦ]
+|}+L֚±%:;鄿0ߜ YحVKACz]ۚ~X,A	l]*b;A`+
+s_Ux(H9ug<
+Ƙ><=<?4044k(`Y2o_x`ySพY(ƵrlR/_?p8	G|~
++r6Yd4;bMk.=
+CdX50ޭo5Se d{$C qIuAV'#u7tNK^AT:fd|!$h-艉&ak|LB\oҜmFh
+zc?v)뒜PHH-Պ5D |!nER_Tm]̻=m+CwʕU)\wR,t6eaLvJ!Ky7WA9śGZF:Ktv&U^ÿ䗵-/ehYjH&sr@|[ME5hB	Ef H[c
+;Uy`muFx[F9%ڠ^nB74hY*{ěK/1I"QJPS3k¾I1wj::%&D2J Y02_Hfu8Q]QװZFؤ&6݀P*3}nta\CH7_y3uO ԓܗ,?r}VLY.f|-:VQw(pIPu@%]6Nuјg^.#9כY7hzӊ8.󅯟Mia((㩼 #WOɮfʄ*񙉨d~iи"s}A4H Sl`ϸ=|m_‌+F%N 'V8?Dk7֋ba^h]'2woʳShB0>c#`Ź4xXd؎]*QH?߿vɬl1_@<P4A=G8;m̽
+RI6!A:0퓇8J )Pj+-.}TU̕%lׅ<*Ȝ׹ro$p'n*4<'n2D
+;*@
+k4fyhwevi&`X-Îvъ6[*X\nj^>l
+SC'lp\c,=B'=n%,$$vQACF`Y_ @<E5$-wRR"n/-u46_#=JPm9ᘔ((5$gP
+T
+ CR(7
+m˚>ghT3+Rت4XQ^ifCTE fzǚM=tC y7¾G&<͢U6q^W13.fo@^N?ytP1_¯60^6t7?*!4TG9oZ4Ixt^#vV`z9ˑ	$q%~2;f]D,Ya.d[Ec离`9.QTj<5Mw<>&~cFNT'JW$jźBxapBbGN:[YVChY祦{['8	QrFn=ezg`n?C7ɍs<1m[ḯ	).8d<Ay'嚺^AQ}/VSއ
++ppx!#8
+4~FRGX^'2gQwj胎笪 w9F4~'b}&?ڜQ,>6P ?*xP?a	aAgNÍoԧC[r}!ZI3_@]ܸ>p2mYv-5,[ڤI\۱)4~wzΛ~8eX Jw4;"ƽ0$Ʈ-g4#GϚ|vÍi7)ঈ 3{0РI7X~FxtG9U!೛@5.klld=iKC[D)i|#N+%9aH'++=R3~&`&'Z@VŞ8 ?@l165	nď)%7~/}^
+WRN	,kԈ>-/A^"f
+pRh>mI"~դ^~P5Ѐ@;Ae<fɥ??gm!7wQ /O6A	T2@|wVJ)`:u)yEeg|?W+T4?֖}Kbѷ<a+1K-g\?{n5X-"V4A.)6Z6r/ \39hL+]pHKB;b*`LwkZǼ+_KhYs3&r#hVaFNļW	#v"G=n! #*8]wX8f<G=hFr3ŵ7.tMY(7AG$HΠ}Fʾv %8`FSjkM9N]Sst
+VOHEgђ>,5e|m>{2%qyWqXEdm,:Oj>l$Jo>x=&O1 ߺ.HBv5J8!7{iԆ0e-Mb<ቢ_)ׯW<df~jiᏁe2v2pXDM_KF׮XDxP;<J+qPtRl`$ԓZ "tD/>:H35A]ߛ=!C/É֧(r}\@)G_ccm@1YY6i GuF
+႕Fwڐ00NKUG~2 ٸʎ4.V)ܱYr)gΟu&iɾ-{Z%ofP8_w1MW4<̣QJMLI+Ԯ_e.u:ư&I-Ru=~b&ўqeucqs|6P-[Y
+S9nEQ	+јrMNĘ";.	d~Ǿ:r1usCtά9Π)]7YEUZCP,e΃i4 (א 8݂LC3* 3~Ь(xW5A׋"80~5d~Rz6\?aYJ<,!O^@D3zoEKn|/eq[.Z$OXxB&SO?WhIJOkF00ךOOwU+HV$ONϞ ;A/[.2.|p6䮈 %"Hc2EҚj Euz$xl9
+Nj`A5OLi۫m*WFoO֮d~Zn eDEFV6QwgC#NΗotxh$c`ՙٴʗ&c<~9\F[E<I[h[J厂2(kAr跩+adn3Mu5P/5Ur#1`4Su> F8,(Q2tݭޫaao\?e\$Aؐ| IJ &mfkBs2+pKf"=D;ӯGCCdS)\Mʛp,N5o%=qyBsuppoxHu}& d)/Bf[YSʤ^M7hztd+]wfly4<iV܊! -+~:SxcݛLi,J8r^j]M&~j*J~VlhUm%jt{sˮtjw!]왶Їå7vBHfw0*i`[ovOt#qwr&o̹VȓFZ>&/Da"QԶKYo]@_r8娣M{u_k^ffH
+(	R8&f= PEx`ZnakaYt6soEVcQ3BN݇pUF%9̢\G
+gf]czU)#;ZQ؎F6'~y,d4煦!}cO 7Wr(zpx{,syTP?Qz`s!{'L m3(ެ>&x#jM
+GbKxI\OϺL@	z7_s
+x0 lHQ0geES Hܽ8Ԫ9TX)+x|&rW
+2ӃcrV?`˥ oisW̢H`B^:JM*,gXKvÝ(/DrEC"0cUj;	`^5|P_SNQ&	8؎%q6͗#=p4XcN*.K\^q\y
+Ot\4<vKG[bU~5Cŀ7uRo#,A GumX7{ɧxWPxf1x ba"c'uǿWR I[quw~QoE7 k2C2]ߢ\Y_,rkFg?}|l>71[BX&v4v$*Â`JLA_7s͝
+=ʲp=cBP'jTu;^G#tpidLl%47	LyI-pzz`z~"ƼhLs.m,Q6C^a'bĜ@42ѕ?;(HhWs,>نȀil֓՟A.T+dc^ZL~M$F~KRC8j;l40=,3L>f㛻,Hk1KSWDx1r)ɨ U	C	k":ḰT;k[ yww&9n~&b#\T13hp"jȚ*681z,G^)(\%ެLS\ubO]Fp͠xGJ<xƲz%D~ŵ #X07~#6>:dFF=]4_|ppm9	[\bKWLyXҢ4R03\Xa26NԢzX/s3kwD?)9#0xJڄkteU}ULw#z*k\X"oa5k's"$e#<Tu9ob&!!T	dE+.ɤoI 27[	ؚ\2D`5A\5ɤ,lʓܴTQ/k	:~_=_qcetzǠ7Þ Dܮx:Y`s!ofwabhR	'AY	VrGel 'RpɟK@Bn+kaV*jeҐuA2ʨ_i޷=lk'{|dpAv!_ĠϜz%J&&p>;\2̘&TӲe~sz_>IZn0[JխG |P@5J{I܌ܳ}
+"F2=Cꧻc~BJw[֧:)Uqg;ϗI
+=daVqPev
+lMn	˭4|ܰe_;e)Tu7hjOwcE9	8i C3%T9$Ce}ܨf֦!=b:GEwAusI-wH"2<] `Q.DLfF;;y>hFi_j	-]GgMH}h/H˙+	yވuj21;rZdBɘd*SS;5QD&>PҮCƩLѬR%PIP{?jN݃DÌ*`1;T.:x2j``<~La/Аcr۠sw"""
+Em+dԩL&goV3Խ%Tg-=1C4:l+Jfbdi\8#tMX15pP!H%{#I2}=Ҭ-%A4
+@8X0>2r\=T=mJǇ|̀U&7J#wE(j|W>YIz_껋%$i)<lsatriVZSlW^yok&2D5/Mf%vml[,!uzJyK"A+h0Lϒ+	R=b dl(
+QNS	CX<pos#<!CPs&~ݾfBBV7܈8插J	Ñgy6ߊquT<yrPdGfP+1DwO	SyۧB$Av!e3t/֤#DH)Uxr2M'䊶]$^7 1jzҙ|TaEM;T[QAo# ir]9%Gڕ4RawYan>D:vڗ6e/ծ1@z/DbјXʿI,fwi<Hػ`wOGcia<yXs}eYae&'ZQ[qbUޔf2*:>E8bZZx{Ԅz	I_I׎X !TAv=b99VbTRbĴ0ٶXe/qO2S0Y[D*PW;Vqad}>̚]3u.wW z40l賜Z_#y8-hNQWqVq螅Rd
+dND#̔ۼ-5ڡpX
+5mFq>= /WqC֧3Pe ]MZ,YZ]sGjw]P^;ή/0vF9m^S$Qpm`-z"bw+rBCE)Qi{xLlUpU;.jψ'^728Y3"TjaKӼZ18IMC?[Rgu;ZZn=A.腎&D\5*FE?2X$7C>Z3w0H`҈v)d)@l1}	AI2T@W%H[̓'zYߝn4c{t
+MѮ3r&h+Ynq+ʴ~ :vr._[b'
+endstream
+endobj
+77 0 obj
+<<
+/Length 10587
+/Length1 1669
+/Length2 8918
+/Length3 0
+>>
+stream
+%!PS-AdobeFont-1.0: CMBX12 003.002
+%%Title: CMBX12
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMBX12.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup
+/UniqueID get 5000769 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /PHGXPC+CMBX12 def
+/FontBBox {-53 -251 1139 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMBX12.) readonly def
+/FullName (CMBX12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 66 /B put
+dup 67 /C put
+dup 70 /F put
+dup 97 /a put
+dup 101 /e put
+dup 56 /eight put
+dup 53 /five put
+dup 52 /four put
+dup 110 /n put
+dup 57 /nine put
+dup 111 /o put
+dup 49 /one put
+dup 114 /r put
+dup 115 /s put
+dup 55 /seven put
+dup 54 /six put
+dup 116 /t put
+dup 51 /three put
+dup 50 /two put
+dup 122 /z put
+readonly def
+currentdict end
+currentfile eexec
+oc;jAw-=%W)-{ru)rAE(@{빴Q|_R
+ϤA	-T@|q|VkJ%qu8PwGxŪ̆Q6K-U\%b"t-*xJ+
+}3{Z2zݬT2s$Z&{BJ{Jf^ַ>aq4!<_CцcQ%BlS71_
+sQzԜr?ktP2Òl(?69~'@2bt[{ax7}Gn[TY>T #a1h!;`WƮk>Kj̱JzNc?^<@qTud[eюj:JnK#2S[ŝBb?̬Mo7aa'gP:δѩ҈dBd|IH^wMe#DD13W.J.6׮<TM">r(N#>Zjhɵ+Uw
+$\WN.C(V\N¸3A?l_sMPyfSyֿb`9upPȐNur)L=uhՂD١Pԋ^}
+-zU*3~HwzQ:.cxv(<Z<6ؚ5KԚ+zG0)rY:ׯcB7IVՁWR]9ZZm|coɂI\mN ~n0\fLrO~펛;('f/cWD8R(\ҿ$p!"9R =7Z}ܐ]+zeV[	m-*4$ٔVDZ-WKp~TuO1!~a&74ҿ,=+˪VFc338kh_lAna嵂NԿ:[$͟d:ic֙jCM2`5rL:䳤୾~cM`	!f9_>P}F>48zeU+Jk<>,H~^U>~~)9G-_+ԇ2miΝ1 r>Z?ώ8PZm#meDPњ69v=hE_X(yN(9d5<X45!XCEJ\]Xl*:Y->p7LZC~ld1:/ g!,
+}Q+93V{ QlG7 !;yq+JA	vj/rڜZP)4f+OpX_t~ 5[RZ$<hCw4PAwhbH3iE}[mzR$[E4{pzR/W-	a_I浓mhef'[q.C0uU&,A	w-"+4$ޥ>ҹ=#e@K*WEt_-JbΣZdh>xNpsGLOh>o련 J;J+\m
+J6km9"N `D[ h6w{Ac<=ޮv}P C*|sAחfK+1!Sn~#_*]\i!Jiq˘mJ K fy*S}iGV6wa$mv<zZQ^L0NRq!*7uLO=b~_J	CI?<5Tzs}uL`M؀"7K8yO {|v`).D3K$	 ,3sÝDRTc2쑃%yD\MS9HQ՝rfG^\55#v[Yϴ)KS^~nMX,8&7ad$ݕ^t/WyϿ4QK{)= WDd>oeZpٕi-e@PLb|#p"6KLPXzbZc})%LKfO2ݮ (NԴU-eruRyTkl>'H9т-)u
+u+ld4zcLsTJ[:v?WNM*NiLffF/? ̔o_a!Bt]z\ޔR/r4M Fwe5']ZPp׶r?PaL'-
+c3G}T'ڡn#^>Ҡ'-ހFwMOTDsJQ{	T޾2VNsҎ%Bh$,>oK"Hϯ 2BU7'J(Ǜc1PIݐ.lQjF%jP
+1zb2ɮWM+mKf,"/3~į;7/7=o-R%nJB@n6A0hRF9T{(&$߅:hMj%FVڈGv?`S::JepR̶9 <Y[nȗփ8$#"e=kffPwE9$N<"jXXsMrEL"!*f+!UA,?3x76#a!=#ɕub/G# HP\\`b$r=)?/9<oBU7.5BRI 9a"V!&x1gqk=- Z1H[ﮚFaSv@ңiwy#d%s~\e](
+:a2?{G֞@:ơlsa8پGVfJܾI<`-?];-G}S$a|o׶ku'wy Fꘄpô2}I*޴BC>y?O_4:╱bEV]1Vb,"KoF0dba̟f4G^̬k({:
+]-eJbc?hs+΢_sS,atyir%F3gދ&M}ۨ3Dkh`\rud>;iA_
+oF_љckNԋn`v)2ۙ$#6{⮶\FvUWl
+%x[gj6~C"^klCy%)%nWFO/ My~ZqiI$CT*x])it4ZV ]m剁V O)g i
+%-JUƠ[fTX7/.cU,h78M4	z9:̳jmrvP#>bx_Løğy5R@/{fQC}d~r!4ѐfPo퀿M+^',6_/W{h/њjS}Jzsնj	޳~zL{qA\ Rh$):zNSJLyj^Ĕǒ)T~KZAP0JP~(>~9&åv^")X5=hN҂aNز%1v1gv?467H!NjO4پb夹tFy&{wQ[+ZJq
++@mn,jMnEfImRGUY8NK:]ĤB!N?J'A.k{<P?$/b%cRn!*98Nu_T1&*eN^&uI|+0":dS6UwO"E=F<["x0 Z{{.8'Z	_a%gd~bKWԫUzN,I ei	l>c㣆+/lB~z-NWWcr酉?V,d\$;tTR%M8DLsY{D#4D{a\j;$ndʟ'KE'pa_C1daEE4"<[ɬ}77%غk/2Ik'wb<B|;YlF{ت,9
+',>lZqq@`C,6|U[2ǩ{{_W{l[(Eㅐ&K!.0t)f7lnMwX<|w2#:|м6ޡ4Hkr~I Emvb,[xY@rL'3:`A7C~X+_显R#GAVt]Dd!	0*uzbrYN%g UX&h͈6OW2^zG iNΫyf_S">.g`B6G
+BdXXE} 텅eW_llQ6ioF<3ԙZN%Q^w݃{&E:k= BI|
+~ڛfKikx zm 3ٳ~mk
+R-rHsډZ嬪.]]<!h) |f[Hl܆3ہ[߇z/ Y,dч\6oE8 G[fy@7X[dW'6JAGJ/$~C!}MKAZ:o}̮FQ:SPhSvUi86]^Iüu*R<":.~Ι&ٵT	 LN9G~=+aνa/׆(
+
+r9hn%K~<xuyaN#Qc8n$[_­wU[MdQfеw:#&]M;*6^MyGdL6!%Kp,npL~WD+|sdWG6y1bX4KG#73-r4"nAJ;.~DKoZ;wbx!W/mʿE1tCv]
+3M+^6hž!SILT2y-hԯ.]bvr;5zO䜵m3q(+O2􌄙)]s5)LblM^[l͒a}/Xwl/"B}(Svt^VAma%]--]N﶐W9pg]mL& KMi;zGf݋wqg4գ?-3KS-%x<p`*ֹ/g?~&ʧ8n>f0ԅjYt64a;πjo@(Y`'jֵtBdp
+tt I}?q<uGž6Tmґ}?u"I{V1vp7>A{7"?H~~nkCb:ʘWH$)X<]بAoВ0~$ pEQt%%YP&W?1?l.
+ܝp~eC?Y`jFYInK]K*l9Y1|6˳ʦ0s	VSE(p17ðLTVWL3XCIG:⻇M:I<#FbNHq*Uk(X/6;t|`C.B,f8L2ud*f=}ԞkIx[ˍiŀs{HՎ: rdwFtvA`Ac]pUX^7R`Cs3Q8}&{h\F^yFdE9XQ&
+a(&93C988Q2uo.	C9ByB6\p9OFMl?.C\B|ϯ&#MP}	rftXV>Z輖HD8=|؟]AcӤ[9$+ +8i@_?ÀiNDپv'+`-@쵱I6:Ddh]~q1' oflt+'THx=Վq]se,u@׏h~7:jˀZw%V&mr3)WfHC~nΚBqcͦ{o֡mWJ`'9?RXڂ 4 -_&|tt셈,$YxrY2%'McJ[뮕֪_=﵅94礻X>[o"#iDzU[LP+9C>\4v܏60{=Z>޷jӹd-L64]<M?:C4ZnSՙ<f.xdK0#g>o퇪DIT{bd9J֠fZB]t Nqj(RzO_(\zvʷ0~8_)th	 ѳ38$ 	tׄ_ue!O6	]#cןwn/LuTK=hWs&n1&HD
+]8_og R(d֐*(;ۓ#VZ⫈e=-4.]|9':]u3E2. 6׾I}h2w"-z1,-mR39ua79y|=>DNzYd^>6tN(ːe5
+,qZ_ţ\ z0}cɛ}Sإsщ`aR:=9)_6 u`h
+߼BN%嵉R'Ŵ*yeQw-/!|w/=yt[5.'6zX{86P_p<=e6i/Ыg
+*+Fr<_܄RgGطB$tA3PiRD6۱~׃L)7)"5J{HE4o܁ВTM)/%Ϯ\5í\͡kF*nկ->oOL8ټE56n̟^O3r;1;,a2Ke~7v#uXDO]cL`c$JNӮ=[w*&v6VUSfG?A8432b1q?[ŉ*Z')<*7LlY>:79u@B[sLB6MY}xNݵCbpJ/8d}s؃ZEh~}<-$5fpījsnjq/n2kRĩI&C=xa0Qk"
+u-꿟1g&VkYӧ6H>DNj7N*$m/6ū뫬*8"L*":c@8Y|i|m/2Yx3'tGl׮XʋLn}h<hR<({ U1.̚hMԼ}#vXN}F ClշĐu$]wXb}DI3#I`Cj8除"*^;_IǻqOa탄d/|H!+6޾2ZO Ծa$lUNҽQcEX!a-%%B^7QG_Y溿0Lw'pr*<>Ǧ,B7qU Jf{̬u=fz
+g2RçC&!㶻rbvydyKXY.+uƬ4)+<:XqG	vYXLB8j=x}j[<-G6m{
+i3|;CQ=DP*p$	d&/9ݽqMibYtp<f16<gW0չE_pJ@&,^ᡋ*1k{+W{+hsȿ`ޭS1!tI8hT|pqTlޗfyλriۿkmx.Q_Jl" zx54?׸\$rSAn 6>}Ղ-؋؝UT.zƯ	QO!\7iS}fQVoZ[G(Y59y;22eMWmpgXOTaavÓTΗ f/
+lCy/PlhZ73o,5uEHG[=;UU2tY^NF$Eq:X}]c_2%fsXd,̙7Cx!\3}`a$nzIS(zlj.7)gg<'
+endstream
+endobj
+78 0 obj
+<<
+/Length 11461
+/Length1 1595
+/Length2 9866
+/Length3 0
+>>
+stream
+%!PS-AdobeFont-1.0: CMBX10 003.002
+%%Title: CMBX10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMBX10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMBX10 known{/CMBX10 findfont dup/UniqueID known{dup
+/UniqueID get 5000768 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /RDMIXZ+CMBX10 def
+/FontBBox {-56 -250 1164 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMBX10.) readonly def
+/FullName (CMBX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 66 /B put
+dup 70 /F put
+dup 97 /a put
+dup 56 /eight put
+dup 53 /five put
+dup 52 /four put
+dup 57 /nine put
+dup 111 /o put
+dup 49 /one put
+dup 114 /r put
+dup 55 /seven put
+dup 54 /six put
+dup 51 /three put
+dup 50 /two put
+dup 122 /z put
+readonly def
+currentdict end
+currentfile eexec
+oc;jAw-=%W)-{ru)rAE(@{빴Q|_R
+ϤA	-T@|q|VkJ%qu8PwGxŪ̆Q6K-U\%b"t-*xJ+
+}3{Z2zݬT2s$Z&{BJ{=מ7ڄĒKV"~Pr-=L$wcrlVcN &'{%Gf#ɨ_i#SXd+U*|:1m=⾝~6/aGLf #NOS}ERs{[.-jj|tm\:x8PbPh[_9t237,I2B8J0msUWQdX!??Q4eRH]ӊ.p_?8:o:UuDZ[m^/a4l4ȒtL<~&WwLa9gPqhQΠjv)]sqR"Яǅ#eZKPHrF<EJ;.N~멀VӰqLJ+_jӴ
+tYvK٢e\uLQq<VIAօ9a_'&FD9G#V@vkt.E|zZi;NOK/8"HA7?>"tw;*l5FFBW1S!2*`8:XlUI?[wc	&Z`ѩްsdHeF'*sЁTd9Baऋ[a$g1f\0	7aR^(Lj#!mw2#nr$|TL]{X`4.Gw|P2BgܴwbkFNfj;d?#l"+6g{*,SQ2&'n\`]Q:ݹ6ln0b9m],/ڨ\Y$6[+UE#ƸMO(ϲ.DL\*@z3'&Е62%+(k`D/k(ɒkpt`^Bձ\H~Y_˒c%~(!
+Jvs}9qw{6sΓM	&Q-p'&M&7tZ\r|5M5"*<ΕD,Lfj+ʾɝ"x0h#u[@}"փ
+dIE*	, j]v.tx	kEYl}d.-eJC=KDjnI"yXD|&k>i xbu?ѱ ,VszAcG<cl϶zSCHdL6t\]Xlgʽk]Y)r8'>7H`Ď'Ķ)r
+ҎG֯Z~C
+U.EC3}henħE!C[xxnCq##Ti.iW/i*?K`ɞ}g;ο@>Hmn91-[tj73Myz,?Z@RPBi>vVF\Ahko8*NIQv94z4m n8)Db]ٞ<U(g(`O2zb30-TV{	_H^[elB4N >>=e3Q-'0y#JW 0݈7\t53=μغ|[R>5Irxhhy!kVSȮ7IThaToɁ(WdsUI=]әM|dJ\YRGy4d(N{"l\ ]kȮ8V
+A==r V^*mx(e=\ʰ!Bb8йX֙Mاi
+p)r~1׏<;d,^6f,PpΨ|kR87>ie ^NҢ@h`[BF,L%mUBe*$nox3K V$[[fU;4Qjggo!%Uh(ԝ 2ן, O[Ј_\?Wt<ȅ/;"Rm®)E\rW1ђo y։)B̊\@gJ?m Eqqٔ84^Da97㤸{ɧZ!_`-rlُ*qٺ؊tLCg
+:nbJ	Lqrj5^9NRVJ7en%ϰYƕut4Ƹ<q"WtB\;A]fwyy|H{U~<laM s׹_Ѽ>F΋ėvQj6%c#~Oe҉'aS1e Fus^i"yw,~	C~Rƒ`,j"+ȬKkQ5IjEbT)">wv|$.4*@s?
+ip b\r	9AZ<v+LC仕+8y.xCƟ&U}\IrJg:D? (.5XR`/{9`8FD&L|_.ɬvaS;7U%k;LBB`tk}	E\HR"FX|yu~Qhkv4VӤKWΝ83Y^ؑ-N(}}Փ.Wia҄=w?~̜Z4 N>x;
+~c/Hϫ+%Bm-7S2*Eoq;ջ/6[LoTF>=8$d&#0otu[QEU!\ސswE6W׍Q8	<%xl&
+~Bh=F"2\],ӱ@re(lF*ŊY7ٍ`pS?%i|ˋt| [b<7M=7snѪw24ׅd/bD~[)g43G& /pN%;t:p}wM/ {	Ϭ0.bj!Z@<zyl)" KUmoҙ2 c})z:<ۄF	oŃGLyT7<EqW~CmY=e.d%0>;$^>,Y.Fܔ%Gj,& U&S0Sg\+h8.!ɧ?4}+dC֡;GľZ#AeqE>RL	K@$|DW/PN^Е3*0KƷ)}JMg"$58_gCs2C7,K՞?λ)效41#oIXcP~1 a^46Ӕ)jOa a^oy^&9ߗǫ%<<w=k?j@P|k4Fs}*XKjcp]~8<@3j2%97N$z~^>mLLN9y  a)U)D.? 9f4R2Xw#_RzZu)q{ 3hSߛPDŒx)8%֗Q]<ofЋ~f=qJīD!Z۾KDc(<Xǐ.H3H JP7#R+cUTT()EK^d%"S.KŪ&|7qwG؛$VNlm6q2\I Ϳ"@a3)
+N7J717Kz*E;`o%sR?&%yXWMVٰ}C˝gf&,\<\/۴X?6oG_ހmNl!(ٝRDռ]-Pf)'v4ϫEJV[9m;rr!e;x^N̙鬑j7W#ҒʳǺBVG(i[IWA<@=6?g $TG0NsL5 Lu-6g_v
+LoEƢ~I)K!3Xw LQ{te.c\-AA' 3M|ݲeps^8K1y*g/Ĩ7S <i[jȔcWvK	ۭxXX#Io7Jc:+S( pa"s]&]kSLy_j˘R׶< ̹r/gyK,o5SH#K[&׬c;<dòA'+8@yyQSuXzm3xiK!suВd=rCX?lVWdy5Jk0ShSK)lbs{:I{`& SpYg>9 rf!:wn; @AK	?gNq4 8)ďT	c ݨRSK:k4S};3<ʵ< SU^΋opf"5@A	bq]W*VOMt,Sg__]0-GXz+G|f_r]EGaqۜgm	]Mnv(D/LbdR;G??aJVTy^ۭgm~`Z2Ј|{AJcQRqnd(ۜyoD`TJCHzRaPהxƜC@Mp<[0?e;ZT+R[kgϧa"q^b	*r|::VNBOUzHbaGDH$6$4tLJb
+INIC֜qa.K,ƭ>Cy
+l7'mf&o1:i҅umeNπ@1; BB}Z(P3>f`mwyج]}L0qoJ 4VCBBLx1s_(\2ZZ.
+G?eu83p8Dq,ƾ&[3Mst/ϪT;C;]DDu0դQ[=zʥP*KCUqk .]S`^U{5KoB_VE?ytj8b4qY-s?ddI!dci8cx<Q|_gIPLɈ
+U|$]1tx$nH0fp/hYK{|-ge[Z <"XF6$|X1gnWelRv'3QM*$Lʎav6R92ݬ;)V@mF̼8}9ڞ b kg_I4Ŕ!HƦ}QçyVq'Q*vv2T6=>mL}%+
+5Z!CҤĎNE $Vs
+QOX!ql)	&;=8"־D8	r:dfX}yEduҚ"znZXDGZ pC=  o\珟hLVJ?^x>)S7wՇ2,nԐ5
+Г6rA̺$V-I**Yh[x1y=XP;^{~!ip.$뉰%)>o4tN`Gnz=u]{+0C.Ql8vw{.yRIq:YO( =.
+$L`S7ؗ^Xc E;PR<mƎxVq,d vKpit+`E`^'Si>3eT9XjaѤVTXVW_%ݐL `r<{%y2UbE7 U'0l#E{@ o韝h@h𡑳w,4AVz!uVA-R:_+;~S(Ct 0vkT=iv6f|wnf꩞9i]	h%ݷJ%mrT:nXw4	D&SqnE,,[.[2gn)kC_}!75}Q|4JƏ5j"e"Ri9nG|ˁ b&nC
+Q_	+5II]Z
+o%ӛ{bJ`_.7tM+,<(Y	x?i^cwmH&vH:4Y^OiI+0a,<myuB┅*_5#V.Ekw͗pDU![$Y`MN0@xM6;GԦio{HTo<-G|nF;?d*D<-+#H<Tx37#u..6,<<ħo\C!-bcQ/k.,ǅW'"kvIym`6^ <aUs/N8,+Ȑxf"W
+P@;P?4mZ6:ч_{i LWbz'a5CQ&nv۱dY׳e
+KL'2׀!
+Y#m5oԓ6Vz:(^]ueib1腋_>C
+96PBdʊ,`~;ߗ
+ۛY!d ]5*0uKIHl +hc#P?!5B6RNDu+P9>7k} ߅D<t)hnV,.*ȪB hP3GE46an+dYq(FǬGJFBi씼?		k6}UT_~vpu5SdoqT(B+y@OK[(DI9mwG@`=6ZDvMbo	L9oh<͒0rHnMB.G路rj,3Vj1EP{٭I"HRGKŷUsKjwdZS`NHfYA .r/7s#HET[ /|UAKG8uYVE\3;z6:vjxUpH]$l^'5=U|'߀4hTfqsr-+n [MxhM{0Mfa$"Wb5Ecmaj£]9GԥeghOp:z+iJBDB
+$QGfI{Kӓx<ہ.v]uᵇ8HU-/FMrUH.DLo?`ʝS+b2ZLxZ[d^ :jq"
+ ۸wΝRcJ刊zOو3-GQZ6N`WafEPOh|O(DP6̍&_&IR]@Grv:tڋhOs\>!JGIzzB⁴#Z^Ғд5<(<`zvKЏ w\L,U;w&zua[nvۉZOۅ0mld7Ȯ?kⶒ+Pco%#-v,R\{EݜWZ'3OAS+9WB0lmL}"XߞhhP	YJ,,<5ܻ'71 >󉷔g=<Wͻl_ovet<F*F[DyLYf<U1[kCqSBlnRRi g+?ˉEhEr6Ơ_H^:Mx?g
+4}F2CPWsPq}.ĳ]*{~g]cD@AZsv?>⤷R?ʤ @ î0 c%͉sVpԯnˬB@Šb5
+Uw e|8l&@ѵ/]Ŕ-΁lW/3	T,l҃TXfKdTy5uasl:1)$VP(?Vʇ0H^~s=k^o$ 0"V^̼D?9:鶣D~L]a .PЬ`W|!N Ai/jӨ5h`!$S=p~S3-
+Hgxld壁mjQeޫ)H H g,6َr}Z+!~7ue곟mStݙȥjN2V뗉
+V ۆRx2@GFy#IU,.\ WUiʝ*A5x%m*\: -&/4n\{%Pq{;-{q:5$lLiæ/z;^|3AY&[|9oxuK!~OI[ؼL2ֈa*ɣe
+);5TEZ4Q+g37n3 vw65F|0$AO)pot,;]̦)os	"H{FNBLLy[( @ԙH,օ~tM[fZ˜y?Um*t
+*U)zGHp'_
+	Y,@*`Zzy\Őay~e #ypI3t'Q;~?EB'#2śs<w
+d#m[?ͷP2bf
+ԙL*i=Wmsf2~#^tRͥUWxqWUmmգ7?r\@eS)i_PyʳozDd3vEMx7fpnmIc=F@)|2ZǩgocA6*r맻܉+Y'GWnkvK-4S*>P<{/umW8iPJaCU;kafjAUwt8.֛kRv!
+akװRrSq#]ҁ (O
+endstream
+endobj
+3 0 obj
+<<
+/N 71
+/Type /ObjStm
+/First 551
+/Filter [/FlateDecode]
+/Length 2638
+>>
+stream
+xY]S7}ׯP%fi}٩TٰNlY/Bm:nv=za,[HjսGWGWWh9'j+тj"S%zŉ4hC[<j*óB*uBG9O垈@HN7!("%BVTJJ-$JcP[*-IGe4/zU\kUA$Q*,Qu|T):hN1^AC4TY>a<ܤ[En`DAS剉.^Tk	=jc-j?Zyb%bU\I`5GV
+,	j=N`^NQ''N^gC$Sg/3q18'.*5!uwRsgV]l*Cj6Nu;-;}" 67r-D]:钶YyuUM)+/a?W_><ܟ
+0-
+(J.@mOesҭݽÝ9h*S(a)Tا"<1	wO닋eD/+}_HUiږ]̂`S&UٝϫCm
+LzVnN:E_*+cC~yV^U;lܤ庻[@^=bfhywi;yGُAf,.W1d]Wκ	ݚt&%i *Y9K++A~90<L8Gi]>o?ӣhSHgעVzvRa@^	>+|s}I:T|CJ3)71)75֙Tԛ4L6@2'p
+X_u~}Z!ΜۺBY%Y53/KbDU`% q12..q`{ x/Dz֣ˌ¤_ux4@4
+Ll:9tedN#2G*dLm/Td"jDS"9(DcqN.U7"7bE!*
+Nx!y(jC(*
+Db<
+EoEB#[Z.LͰfK5$S\\"e~,nC,F`b虋2VA6D]
+!s[h'k$	m,G ! 'u3+^?m2I>QHrS`ܷ|)/)Gݤi阮4m=mLAF3+L{O]pϒlsw~d5Qىk2,QE Ȋ^rjjJTi JV
+s_?ಞ6qiM!WGYbq_^gaq/zK,re2Wiӳ뷂(n泸3?bA>i.@Y}?Ft? C!Gp#8n=_Z8N.19,N)89;Nw޴:OjILV&{oz;Aͩ' !lLaҫؓKpX~r~p{Z:?IYHҘDKpDsQ$m"IKHѻud"k2ĩ!{+TVs81uFgJCClܗڕ#{&Sp4qNt5pAR֯Ơ=X;XSb䭎~)X:KTeҗd6O s,h9^<SU\O"m@o1b޲V석%UʹEyN)ꛊ3vY~gdkYT]U_ǽ6h]5pqQvˇY}vޱyuS5cXe}bٗI	_TqJ <}ޖiyy{qGx3abNYs<#cea覥R˸[q1Sgct.H$1Z C69"x3 ցYpETj5I.9JnzDmܯPɜj	|]?X枠\/%7P\EJwCݗm[7[#~j="+RHU.Y*YWR![ZF=S"PKlBE_mt6^DzU\,9&]66x=VQħ0<In*F=%RφHGJ+"h˸QܻCB'x>#$K%\M4W˄b
+}?SOWY:-C?mLU~U~s5.9Aݛ7WWݗIAŋ!74䦙_d6/kt39owl44MYe}u=Y\ǂFˬm?5-t@:G&O
+endstream
+endobj
+85 0 obj
+<<
+/W [1 3 1]
+/ID [<20C8633A70F8E4E9CCAF7E2D557EB95E> <20C8633A70F8E4E9CCAF7E2D557EB95E>]
+/Info 1 0 R
+/Root 2 0 R
+/Size 86
+/Type /XRef
+/Filter /FlateDecode
+/Length 157
+/DecodeParms <<
+/Columns 5
+/Predictor 12
+>>
+>>
+stream
+xcb LL̌LxO?KJ |^ ٟ$l-ρk>R@g@Hs'
+qUpؕǁ"í")E$1'{ >0v cA#!v G,
+endstream
+endobj
+startxref
+71177
+%%EOF
diff -pruN 2.6.0-1/resources/outline-without-title.pdf 2.8.1-1/resources/outline-without-title.pdf
--- 2.6.0-1/resources/outline-without-title.pdf	1970-01-01 00:00:00.000000000 +0000
+++ 2.8.1-1/resources/outline-without-title.pdf	2022-07-25 20:41:21.000000000 +0000
@@ -0,0 +1,1555 @@
+%PDF-1.5
+%
+1 0 obj 
+<<
+/PageMode /UseOutlines
+/OpenAction 2 0 R
+/Names 3 0 R
+/Metadata 4 0 R
+/Type /Catalog
+/Outlines 5 0 R
+/Pages 6 0 R
+>>
+endobj 
+3 0 obj 
+<<
+/Dests 7 0 R
+>>
+endobj 
+6 0 obj 
+<<
+/Kids [8 0 R 9 0 R 10 0 R 11 0 R]
+/Type /Pages
+/Count 4
+>>
+endobj 
+4 0 obj 
+<<
+/Subtype /XML
+/Length 3046
+/Type /Metadata
+>>
+stream
+<?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.1.1">
+	<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+		<rdf:Description rdf:about=""
+				xmlns:xap="http://ns.adobe.com/xap/1.0/">
+			<xap:CreateDate>2022-04-06T13:15:41-05:00</xap:CreateDate>
+			<xap:ModifyDate>2022-07-14T13:14:48-05:00</xap:ModifyDate>
+			<xap:CreatorTool>LaTeX with hyperref</xap:CreatorTool>
+		</rdf:Description>
+		<rdf:Description rdf:about=""
+				xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
+			<pdf:Producer>pdfTeX-1.40.23</pdf:Producer>
+		</rdf:Description>
+		<rdf:Description rdf:about=""
+				xmlns:dc="http://purl.org/dc/elements/1.1/">
+			<dc:format>application/pdf</dc:format>
+			<dc:description>
+				<rdf:Alt>
+					<rdf:li xml:lang="x-default"/>
+				</rdf:Alt>
+			</dc:description>
+			<dc:title>
+				<rdf:Alt>
+					<rdf:li xml:lang="x-default"/>
+				</rdf:Alt>
+			</dc:title>
+		</rdf:Description>
+	</rdf:RDF>
+</x:xmpmeta>
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                           
+<?xpacket end="w"?>
+endstream 
+endobj 
+5 0 obj 
+<<
+/Type /Outlines
+/Count 9
+/First 12 0 R
+/Last 13 0 R
+>>
+endobj 
+2 0 obj 
+<<
+/S /GoTo
+/D [8 0 R /Fit]
+>>
+endobj 
+7 0 obj 
+<<
+/Kids [14 0 R 15 0 R 16 0 R]
+/Limits [(Doc-Start) (section.9)]
+>>
+endobj 
+8 0 obj 
+<<
+/pdftk_PageNum 1
+/Contents 17 0 R
+/Type /Page
+/Resources 18 0 R
+/Annots [19 0 R 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R]
+/Parent 6 0 R
+/MediaBox [0 0 595.276 841.89]
+>>
+endobj 
+9 0 obj 
+<<
+/pdftk_PageNum 2
+/Contents 28 0 R
+/Type /Page
+/Resources 29 0 R
+/Parent 6 0 R
+/MediaBox [0 0 595.276 841.89]
+>>
+endobj 
+10 0 obj 
+<<
+/pdftk_PageNum 3
+/Contents 30 0 R
+/Type /Page
+/Resources 31 0 R
+/Parent 6 0 R
+/MediaBox [0 0 595.276 841.89]
+>>
+endobj 
+11 0 obj 
+<<
+/pdftk_PageNum 4
+/Contents 32 0 R
+/Type /Page
+/Resources 33 0 R
+/Parent 6 0 R
+/MediaBox [0 0 595.276 841.89]
+>>
+endobj 
+13 0 obj 
+<<
+/A 34 0 R
+/Title 35 0 R
+/Parent 5 0 R
+/Prev 36 0 R
+>>
+endobj 
+12 0 obj 
+<<
+/A 37 0 R
+/Next 38 0 R
+/Parent 5 0 R
+>>
+endobj 
+14 0 obj 
+<<
+/Names [(Doc-Start) 39 0 R (page.1) 40 0 R (page.2) 41 0 R (page.3) 42 0 R (page.4) 43 0 R (section*.1) 44 0 R]
+/Limits [(Doc-Start) (section*.1)]
+>>
+endobj 
+15 0 obj 
+<<
+/Names [(section.1) 45 0 R (section.2) 46 0 R (section.3) 47 0 R (section.4) 48 0 R (section.5) 49 0 R (section.6) 50 0 R]
+/Limits [(section.1) (section.6)]
+>>
+endobj 
+16 0 obj 
+<<
+/Names [(section.7) 51 0 R (section.8) 52 0 R (section.9) 53 0 R]
+/Limits [(section.7) (section.9)]
+>>
+endobj 
+19 0 obj 
+<<
+/A 
+<<
+/S /GoTo
+/D (section.1)
+>>
+/C [1 0 0]
+/Subtype /Link
+/Type /Annot
+/H /I
+/Border [0 0 1]
+/Rect [123.806 683.215 158.772 692.043]
+>>
+endobj 
+20 0 obj 
+<<
+/A 
+<<
+/S /GoTo
+/D (section.2)
+>>
+/C [1 0 0]
+/Subtype /Link
+/Type /Annot
+/H /I
+/Border [0 0 1]
+/Rect [123.806 661.297 159.18 670.125]
+>>
+endobj 
+21 0 obj 
+<<
+/A 
+<<
+/S /GoTo
+/D (section.3)
+>>
+/C [1 0 0]
+/Subtype /Link
+/Type /Annot
+/H /I
+/Border [0 0 1]
+/Rect [123.806 639.379 159.553 648.207]
+>>
+endobj 
+22 0 obj 
+<<
+/A 
+<<
+/S /GoTo
+/D (section.4)
+>>
+/C [1 0 0]
+/Subtype /Link
+/Type /Annot
+/H /I
+/Border [0 0 1]
+/Rect [123.806 617.461 158.772 626.289]
+>>
+endobj 
+23 0 obj 
+<<
+/A 
+<<
+/S /GoTo
+/D (section.5)
+>>
+/C [1 0 0]
+/Subtype /Link
+/Type /Annot
+/H /I
+/Border [0 0 1]
+/Rect [123.806 595.543 159.18 604.372]
+>>
+endobj 
+24 0 obj 
+<<
+/A 
+<<
+/S /GoTo
+/D (section.6)
+>>
+/C [1 0 0]
+/Subtype /Link
+/Type /Annot
+/H /I
+/Border [0 0 1]
+/Rect [123.806 573.626 159.553 582.454]
+>>
+endobj 
+25 0 obj 
+<<
+/A 
+<<
+/S /GoTo
+/D (section.7)
+>>
+/C [1 0 0]
+/Subtype /Link
+/Type /Annot
+/H /I
+/Border [0 0 1]
+/Rect [123.806 551.708 158.772 560.536]
+>>
+endobj 
+26 0 obj 
+<<
+/A 
+<<
+/S /GoTo
+/D (section.8)
+>>
+/C [1 0 0]
+/Subtype /Link
+/Type /Annot
+/H /I
+/Border [0 0 1]
+/Rect [123.806 529.79 159.18 538.618]
+>>
+endobj 
+27 0 obj 
+<<
+/A 
+<<
+/S /GoTo
+/D (section.9)
+>>
+/C [1 0 0]
+/Subtype /Link
+/Type /Annot
+/H /I
+/Border [0 0 1]
+/Rect [123.806 507.872 159.553 516.7]
+>>
+endobj 
+17 0 obj 
+<<
+/Length 497
+>>
+stream
+BT
+/F30 14.3462 Tf 124.802 706.129 Td [(Con)31(ten)31(ts)]TJ/F31 9.9626 Tf 0 -21.918 Td [(1)-925(F)96(o)-32(o)-30616(2)]TJ 0 -21.918 Td [(2)-925(Bar)-30574(2)]TJ 0 -21.918 Td [(3)-925(Baz)-30537(2)]TJ 0 -21.917 Td [(4)-925(F)96(o)-32(o)-30616(2)]TJ 0 -21.918 Td [(5)-925(Bar)-30574(3)]TJ 0 -21.918 Td [(6)-925(Baz)-30537(3)]TJ 0 -21.918 Td [(7)-925(F)96(o)-32(o)-30616(3)]TJ 0 -21.918 Td [(8)-925(Bar)-30574(4)]TJ 0 -21.918 Td [(9)-925(Baz)-30537(4)]TJ/F20 9.9626 Tf 169.365 -418.43 Td [(1)]TJ
+ET
+
+endstream 
+endobj 
+18 0 obj 
+<<
+/ProcSet [/PDF /Text]
+/Font 
+<<
+/F30 54 0 R
+/F20 55 0 R
+/F31 56 0 R
+>>
+>>
+endobj 
+28 0 obj 
+<<
+/Length 7055
+>>
+stream
+BT
+/F30 14.3462 Tf 124.802 706.129 Td [(1)-1125(F)94(o)-31(o)]TJ/F20 9.9626 Tf 0 -21.821 Td [(Hello,)-490(here)-459(is)-459(some)-459(text)-459(without)-458(a)-459(meaning.)-821(This)-459(text)-459(should)-459(sho)28(w)-459(what)-459(a)]TJ 0 -11.955 Td [(prin)28(ted)-389(text)-389(will)-388(lo)-28(ok)-389(lik)28(e)-389(at)-388(this)-389(place.)-611(If)-388(y)27(ou)-388(read)-389(this)-389(text,)-402(y)27(ou)-388(will)-389(get)-389(no)]TJ 0 -11.955 Td [(information.)-427(Really?)-428(Is)-282(there)-282(no)-282(information?)-427(Is)-282(there)-282(a)-282(di\013e)-1(r)1(e)-1(n)1(c)-1(e)-282(b)-27(et)27(w)28(een)-282(this)]TJ 0 -11.956 Td [(text)-399(and)-398(some)-399(nonsense)-399(lik)28(e)-399(\134Huardest)-398(ge)-1(f)1(burn"?)-641(Kjift)-398({)-399(not)-399(at)-398(all!)-641(A)-399(blin)1(d)]TJ 0 -11.955 Td [(text)-335(lik)28(e)-336(this)-335(giv)28(es)-335(y)27(ou)-335(information)-335(ab)-28(ou)1(t)-336(the)-335(selected)-335(fon)28(t,)-336(ho)28(w)-336(th)1(e)-336(letters)-335(are)]TJ 0 -11.955 Td [(written)-276(and)-277(an)-276(impression)-277(of)-276(the)-277(lo)-27(ok.)-426(This)-276(text)-277(should)-276(con)28(tain)-277(all)-276(letters)-277(of)-276(the)]TJ 0 -11.955 Td [(alphab)-28(et)-325(and)-326(it)-325(should)-326(b)-28(e)-325(written)-326(in)-326(of)-325(the)-326(original)-325(language.)-442(There)-326(is)-325(no)-326(need)]TJ 0 -11.955 Td [(for)-363(sp)-28(ecial)-363(con)27(ten)28(t,)-370(but)-364(the)-363(length)-363(of)-363(w)27(ord)1(s)-364(should)-363(matc)28(h)-363(the)-364(language.)-363(Hello,)]TJ 0 -11.955 Td [(here)-275(is)-274(some)-275(text)-274(w)-1(it)1(hout)-275(a)-275(meaning.)-424(This)-275(text)-275(should)-274(sho)28(w)-275(what)-274(a)-275(prin)28(ted)-275(text)]TJ 0 -11.956 Td [(will)-384(lo)-28(ok)-384(l)1(ik)27(e)-384(at)-383(this)-384(place.)-596(I)-1(f)-383(y)27(ou)-383(read)-384(this)-384(text,)-397(y)28(ou)-384(will)-384(get)-384(no)-383(information.)]TJ 0 -11.955 Td [(Really?)-692(Is)-416(there)-416(n)1(o)-416(information?)-692(Is)-416(there)-416(a)-415(di\013erence)-416(b)-28(et)28(w)27(een)-415(this)-416(text)-416(and)]TJ 0 -11.955 Td [(some)-276(nonsense)-276(lik)28(e)-276(\134Huardest)-276(gefburn"?)-425(Kjift)-276({)-276(not)-276(at)-275(all!)-426(A)-275(blind)-276(text)-276(lik)28(e)-276(this)]TJ 0 -11.955 Td [(giv)28(es)-370(y)28(ou)-370(information)-369(ab)-28(out)-369(the)-370(selected)-370(fon)28(t,)-379(ho)28(w)-369(the)-370(letters)-370(are)-369(written)-370(and)]TJ 0 -11.955 Td [(an)-370(impression)-370(of)-370(the)-370(lo)-28(ok.)-554(This)-370(text)-370(should)-370(con)28(tain)-370(all)-370(letters)-370(of)-370(the)-370(alphab)-28(et)]TJ 0 -11.955 Td [(and)-281(it)-281(should)-281(b)-28(e)-281(written)-281(in)-281(of)-280(the)-281(original)-281(language.)-427(There)-281(is)-281(no)-281(need)-281(for)-281(sp)-28(ecial)]TJ 0 -11.956 Td [(con)28(ten)28(t,)-334(but)-333(the)-333(length)-334(of)-333(w)28(ords)-333(s)-1(h)1(ould)-334(matc)28(h)-333(the)-334(language.)]TJ/F30 14.3462 Tf 0 -32.946 Td [(2)-1125(Bar)]TJ/F20 9.9626 Tf 0 -21.82 Td [(Hello,)-490(here)-459(is)-459(some)-459(text)-459(without)-458(a)-459(meaning.)-821(This)-459(text)-459(should)-459(sho)28(w)-459(what)-459(a)]TJ 0 -11.956 Td [(prin)28(ted)-389(text)-389(will)-388(lo)-28(ok)-389(lik)28(e)-389(at)-388(this)-389(place.)-611(If)-388(y)27(ou)-388(read)-389(this)-389(text,)-402(y)27(ou)-388(will)-389(get)-389(no)]TJ 0 -11.955 Td [(information.)-427(Really?)-428(Is)-282(there)-282(no)-282(information?)-427(Is)-282(there)-282(a)-282(di\013e)-1(r)1(e)-1(n)1(c)-1(e)-282(b)-27(et)27(w)28(een)-282(this)]TJ 0 -11.955 Td [(text)-399(and)-398(some)-399(nonsense)-399(lik)28(e)-399(\134Huardest)-398(ge)-1(f)1(burn"?)-641(Kjift)-398({)-399(not)-399(at)-398(all!)-641(A)-399(blin)1(d)]TJ 0 -11.955 Td [(text)-335(lik)28(e)-336(this)-335(giv)28(es)-335(y)27(ou)-335(information)-335(ab)-28(ou)1(t)-336(the)-335(selected)-335(fon)28(t,)-336(ho)28(w)-336(th)1(e)-336(letters)-335(are)]TJ 0 -11.955 Td [(written)-398(and)-397(an)-398(impression)-397(of)-398(the)-397(lo)-28(ok.)-637(This)-398(text)-398(shou)1(ld)-398(con)28(tain)-398(all)-397(letters)-398(of)]TJ 0 -11.955 Td [(the)-365(alphab)-28(et)-365(and)-365(it)-365(should)-365(b)-28(e)-365(written)-365(in)-365(of)-365(the)-365(original)-365(language.)-540(There)-365(is)-365(no)]TJ 0 -11.956 Td [(need)-333(for)-334(sp)-27(ecial)-334(con)28(ten)28(t,)-334(b)1(ut)-334(the)-333(length)-333(of)-334(w)28(ords)-333(should)-333(m)-1(atc)28(h)-333(the)-333(language.)-334(7)]TJ/F30 14.3462 Tf 0 -32.946 Td [(3)-1125(Baz)]TJ/F20 9.9626 Tf 0 -21.82 Td [(Hello,)-490(here)-459(is)-459(some)-459(text)-459(without)-458(a)-459(meaning.)-821(This)-459(text)-459(should)-459(sho)28(w)-459(what)-459(a)]TJ 0 -11.956 Td [(prin)28(ted)-389(text)-389(will)-388(lo)-28(ok)-389(lik)28(e)-389(at)-388(this)-389(place.)-611(If)-388(y)27(ou)-388(read)-389(this)-389(text,)-402(y)27(ou)-388(will)-389(get)-389(no)]TJ 0 -11.955 Td [(information.)-427(Really?)-428(Is)-282(there)-282(no)-282(information?)-427(Is)-282(there)-282(a)-282(di\013e)-1(r)1(e)-1(n)1(c)-1(e)-282(b)-27(et)27(w)28(een)-282(this)]TJ 0 -11.955 Td [(text)-399(and)-398(some)-399(nonsense)-399(lik)28(e)-399(\134Huardest)-398(ge)-1(f)1(burn"?)-641(Kjift)-398({)-399(not)-399(at)-398(all!)-641(A)-399(blin)1(d)]TJ 0 -11.955 Td [(text)-335(lik)28(e)-336(this)-335(giv)28(es)-335(y)27(ou)-335(information)-335(ab)-28(ou)1(t)-336(the)-335(selected)-335(fon)28(t,)-336(ho)28(w)-336(th)1(e)-336(letters)-335(are)]TJ 0 -11.955 Td [(written)-398(and)-397(an)-398(impression)-397(of)-398(the)-397(lo)-28(ok.)-637(This)-398(text)-398(shou)1(ld)-398(con)28(tain)-398(all)-397(letters)-398(of)]TJ 0 -11.955 Td [(the)-365(alphab)-28(et)-365(and)-365(it)-365(should)-365(b)-28(e)-365(written)-365(in)-365(of)-365(the)-365(original)-365(language.)-540(There)-365(is)-365(no)]TJ 0 -11.956 Td [(need)-333(for)-334(sp)-27(ecial)-334(con)28(ten)28(t,)-334(b)1(ut)-334(the)-333(length)-333(of)-334(w)28(ords)-333(should)-333(m)-1(atc)28(h)-333(the)-333(language.)-334(5)]TJ/F30 14.3462 Tf 0 -32.946 Td [(4)-1125(F)94(o)-31(o)]TJ/F20 9.9626 Tf 0 -21.82 Td [(Hello,)-490(here)-459(is)-459(some)-459(text)-459(without)-458(a)-459(meaning.)-821(This)-459(text)-459(should)-459(sho)28(w)-459(what)-459(a)]TJ 0 -11.956 Td [(prin)28(ted)-389(text)-389(will)-388(lo)-28(ok)-389(lik)28(e)-389(at)-388(this)-389(place.)-611(If)-388(y)27(ou)-388(read)-389(this)-389(text,)-402(y)27(ou)-388(will)-389(get)-389(no)]TJ 0 -11.955 Td [(information.)-427(Really?)-428(Is)-282(there)-282(no)-282(information?)-427(Is)-282(there)-282(a)-282(di\013e)-1(r)1(e)-1(n)1(c)-1(e)-282(b)-27(et)27(w)28(een)-282(this)]TJ 0 -11.955 Td [(text)-399(and)-398(some)-399(nonsense)-399(lik)28(e)-399(\134Huardest)-398(ge)-1(f)1(burn"?)-641(Kjift)-398({)-399(not)-399(at)-398(all!)-641(A)-399(blin)1(d)]TJ 0 -11.955 Td [(text)-335(lik)28(e)-336(this)-335(giv)28(es)-335(y)27(ou)-335(information)-335(ab)-28(ou)1(t)-336(the)-335(selected)-335(fon)28(t,)-336(ho)28(w)-336(th)1(e)-336(letters)-335(are)]TJ 169.365 -35.049 Td [(2)]TJ
+ET
+
+endstream 
+endobj 
+29 0 obj 
+<<
+/ProcSet [/PDF /Text]
+/Font 
+<<
+/F30 54 0 R
+/F20 55 0 R
+>>
+>>
+endobj 
+30 0 obj 
+<<
+/Length 7358
+>>
+stream
+BT
+/F20 9.9626 Tf 124.802 706.129 Td [(written)-276(and)-277(an)-276(impression)-277(of)-276(the)-277(lo)-27(ok.)-426(This)-276(text)-277(should)-276(con)28(tain)-277(all)-276(letters)-277(of)-276(the)]TJ 0 -11.955 Td [(alphab)-28(et)-325(and)-326(it)-325(should)-326(b)-28(e)-325(written)-326(in)-326(of)-325(the)-326(original)-325(language.)-442(There)-326(is)-325(no)-326(need)]TJ 0 -11.955 Td [(for)-363(sp)-28(ecial)-363(con)27(ten)28(t,)-370(but)-364(the)-363(length)-363(of)-363(w)27(ord)1(s)-364(should)-363(matc)28(h)-363(the)-364(language.)-363(Hello,)]TJ 0 -11.956 Td [(here)-275(is)-274(some)-275(text)-274(w)-1(it)1(hout)-275(a)-275(meaning.)-424(This)-275(text)-275(should)-274(sho)28(w)-275(what)-274(a)-275(prin)28(ted)-275(text)]TJ 0 -11.955 Td [(will)-384(lo)-28(ok)-384(l)1(ik)27(e)-384(at)-383(this)-384(place.)-596(I)-1(f)-383(y)27(ou)-383(read)-384(this)-384(text,)-397(y)28(ou)-384(will)-384(get)-384(no)-383(information.)]TJ 0 -11.955 Td [(Really?)-692(Is)-416(there)-416(n)1(o)-416(information?)-692(Is)-416(there)-416(a)-415(di\013erence)-416(b)-28(et)28(w)27(een)-415(this)-416(text)-416(and)]TJ 0 -11.955 Td [(some)-276(nonsense)-276(lik)28(e)-276(\134Huardest)-276(gefburn"?)-425(Kjift)-276({)-276(not)-276(at)-275(all!)-426(A)-275(blind)-276(text)-276(lik)28(e)-276(this)]TJ 0 -11.955 Td [(giv)28(es)-370(y)28(ou)-370(information)-369(ab)-28(out)-369(the)-370(selected)-370(fon)28(t,)-379(ho)28(w)-369(the)-370(letters)-370(are)-369(written)-370(and)]TJ 0 -11.956 Td [(an)-370(impression)-370(of)-370(the)-370(lo)-28(ok.)-554(This)-370(text)-370(should)-370(con)28(tain)-370(all)-370(letters)-370(of)-370(the)-370(alphab)-28(et)]TJ 0 -11.955 Td [(and)-281(it)-281(should)-281(b)-28(e)-281(written)-281(in)-281(of)-280(the)-281(original)-281(language.)-427(There)-281(is)-281(no)-281(need)-281(for)-281(sp)-28(ecial)]TJ 0 -11.955 Td [(con)28(ten)28(t,)-334(but)-333(the)-333(length)-334(of)-333(w)28(ords)-333(s)-1(h)1(ould)-334(matc)28(h)-333(the)-334(language.)]TJ/F30 14.3462 Tf 0 -32.946 Td [(5)-1125(Bar)]TJ/F20 9.9626 Tf 0 -21.821 Td [(Hello,)-490(here)-459(is)-459(some)-459(text)-459(without)-458(a)-459(meaning.)-821(This)-459(text)-459(should)-459(sho)28(w)-459(what)-459(a)]TJ 0 -11.955 Td [(prin)28(ted)-389(text)-389(will)-388(lo)-28(ok)-389(lik)28(e)-389(at)-388(this)-389(place.)-611(If)-388(y)27(ou)-388(read)-389(this)-389(text,)-402(y)27(ou)-388(will)-389(get)-389(no)]TJ 0 -11.955 Td [(information.)-427(Really?)-428(Is)-282(there)-282(no)-282(information?)-427(Is)-282(there)-282(a)-282(di\013e)-1(r)1(e)-1(n)1(c)-1(e)-282(b)-27(et)27(w)28(een)-282(this)]TJ 0 -11.955 Td [(text)-399(and)-398(some)-399(nonsense)-399(lik)28(e)-399(\134Huardest)-398(ge)-1(f)1(burn"?)-641(Kjift)-398({)-399(not)-399(at)-398(all!)-641(A)-399(blin)1(d)]TJ 0 -11.955 Td [(text)-335(lik)28(e)-336(this)-335(giv)28(es)-335(y)27(ou)-335(information)-335(ab)-28(ou)1(t)-336(the)-335(selected)-335(fon)28(t,)-336(ho)28(w)-336(th)1(e)-336(letters)-335(are)]TJ 0 -11.956 Td [(written)-398(and)-397(an)-398(impression)-397(of)-398(the)-397(lo)-28(ok.)-637(This)-398(text)-398(shou)1(ld)-398(con)28(tain)-398(all)-397(letters)-398(of)]TJ 0 -11.955 Td [(the)-365(alphab)-28(et)-365(and)-365(it)-365(should)-365(b)-28(e)-365(written)-365(in)-365(of)-365(the)-365(original)-365(language.)-540(There)-365(is)-365(no)]TJ 0 -11.955 Td [(need)-333(for)-334(sp)-27(ecial)-334(con)28(ten)28(t,)-334(b)1(ut)-334(the)-333(length)-333(of)-334(w)28(ords)-333(should)-333(m)-1(atc)28(h)-333(the)-333(language.)-334(7)]TJ/F30 14.3462 Tf 0 -32.946 Td [(6)-1125(Baz)]TJ/F20 9.9626 Tf 0 -21.821 Td [(Hello,)-490(here)-459(is)-459(some)-459(text)-459(without)-458(a)-459(meaning.)-821(This)-459(text)-459(should)-459(sho)28(w)-459(what)-459(a)]TJ 0 -11.955 Td [(prin)28(ted)-389(text)-389(will)-388(lo)-28(ok)-389(lik)28(e)-389(at)-388(this)-389(place.)-611(If)-388(y)27(ou)-388(read)-389(this)-389(text,)-402(y)27(ou)-388(will)-389(get)-389(no)]TJ 0 -11.955 Td [(information.)-427(Really?)-428(Is)-282(there)-282(no)-282(information?)-427(Is)-282(there)-282(a)-282(di\013e)-1(r)1(e)-1(n)1(c)-1(e)-282(b)-27(et)27(w)28(een)-282(this)]TJ 0 -11.955 Td [(text)-399(and)-398(some)-399(nonsense)-399(lik)28(e)-399(\134Huardest)-398(ge)-1(f)1(burn"?)-641(Kjift)-398({)-399(not)-399(at)-398(all!)-641(A)-399(blin)1(d)]TJ 0 -11.955 Td [(text)-335(lik)28(e)-336(this)-335(giv)28(es)-335(y)27(ou)-335(information)-335(ab)-28(ou)1(t)-336(the)-335(selected)-335(fon)28(t,)-336(ho)28(w)-336(th)1(e)-336(letters)-335(are)]TJ 0 -11.956 Td [(written)-398(and)-397(an)-398(impression)-397(of)-398(the)-397(lo)-28(ok.)-637(This)-398(text)-398(shou)1(ld)-398(con)28(tain)-398(all)-397(letters)-398(of)]TJ 0 -11.955 Td [(the)-365(alphab)-28(et)-365(and)-365(it)-365(should)-365(b)-28(e)-365(written)-365(in)-365(of)-365(the)-365(original)-365(language.)-540(There)-365(is)-365(no)]TJ 0 -11.955 Td [(need)-333(for)-334(sp)-27(ecial)-334(con)28(ten)28(t,)-334(b)1(ut)-334(the)-333(length)-333(of)-334(w)28(ords)-333(should)-333(m)-1(atc)28(h)-333(the)-333(language.)-334(5)]TJ/F30 14.3462 Tf 0 -32.946 Td [(7)-1125(F)94(o)-31(o)]TJ/F20 9.9626 Tf 0 -21.821 Td [(Hello,)-490(here)-459(is)-459(some)-459(text)-459(without)-458(a)-459(meaning.)-821(This)-459(text)-459(should)-459(sho)28(w)-459(what)-459(a)]TJ 0 -11.955 Td [(prin)28(ted)-389(text)-389(will)-388(lo)-28(ok)-389(lik)28(e)-389(at)-388(this)-389(place.)-611(If)-388(y)27(ou)-388(read)-389(this)-389(text,)-402(y)27(ou)-388(will)-389(get)-389(no)]TJ 0 -11.955 Td [(information.)-427(Really?)-428(Is)-282(there)-282(no)-282(information?)-427(Is)-282(there)-282(a)-282(di\013e)-1(r)1(e)-1(n)1(c)-1(e)-282(b)-27(et)27(w)28(een)-282(this)]TJ 0 -11.955 Td [(text)-399(and)-398(some)-399(nonsense)-399(lik)28(e)-399(\134Huardest)-398(ge)-1(f)1(burn"?)-641(Kjift)-398({)-399(not)-399(at)-398(all!)-641(A)-399(blin)1(d)]TJ 0 -11.955 Td [(text)-335(lik)28(e)-336(this)-335(giv)28(es)-335(y)27(ou)-335(information)-335(ab)-28(ou)1(t)-336(the)-335(selected)-335(fon)28(t,)-336(ho)28(w)-336(th)1(e)-336(letters)-335(are)]TJ 0 -11.956 Td [(written)-276(and)-277(an)-276(impression)-277(of)-276(the)-277(lo)-27(ok.)-426(This)-276(text)-277(should)-276(con)28(tain)-277(all)-276(letters)-277(of)-276(the)]TJ 0 -11.955 Td [(alphab)-28(et)-325(and)-326(it)-325(should)-326(b)-28(e)-325(written)-326(in)-326(of)-325(the)-326(original)-325(language.)-442(There)-326(is)-325(no)-326(need)]TJ 0 -11.955 Td [(for)-363(sp)-28(ecial)-363(con)27(ten)28(t,)-370(but)-364(the)-363(length)-363(of)-363(w)27(ord)1(s)-364(should)-363(matc)28(h)-363(the)-364(language.)-363(Hello,)]TJ 0 -11.955 Td [(here)-275(is)-274(some)-275(text)-274(w)-1(it)1(hout)-275(a)-275(meaning.)-424(This)-275(text)-275(should)-274(sho)28(w)-275(what)-274(a)-275(prin)28(ted)-275(text)]TJ 0 -11.955 Td [(will)-384(lo)-28(ok)-384(l)1(ik)27(e)-384(at)-383(this)-384(place.)-596(I)-1(f)-383(y)27(ou)-383(read)-384(this)-384(text,)-397(y)28(ou)-384(will)-384(get)-384(no)-383(information.)]TJ 0 -11.955 Td [(Really?)-692(Is)-416(there)-416(n)1(o)-416(information?)-692(Is)-416(there)-416(a)-415(di\013erence)-416(b)-28(et)28(w)27(een)-415(this)-416(text)-416(and)]TJ 0 -11.956 Td [(some)-276(nonsense)-276(lik)28(e)-276(\134Huardest)-276(gefburn"?)-425(Kjift)-276({)-276(not)-276(at)-275(all!)-426(A)-275(blind)-276(text)-276(lik)28(e)-276(this)]TJ 169.365 -32.96 Td [(3)]TJ
+ET
+
+endstream 
+endobj 
+31 0 obj 
+<<
+/ProcSet [/PDF /Text]
+/Font 
+<<
+/F30 54 0 R
+/F20 55 0 R
+>>
+>>
+endobj 
+32 0 obj 
+<<
+/Length 3804
+>>
+stream
+BT
+/F20 9.9626 Tf 124.802 706.129 Td [(giv)28(es)-370(y)28(ou)-370(information)-369(ab)-28(out)-369(the)-370(selected)-370(fon)28(t,)-379(ho)28(w)-369(the)-370(letters)-370(are)-369(written)-370(and)]TJ 0 -11.955 Td [(an)-370(impression)-370(of)-370(the)-370(lo)-28(ok.)-554(This)-370(text)-370(should)-370(con)28(tain)-370(all)-370(letters)-370(of)-370(the)-370(alphab)-28(et)]TJ 0 -11.955 Td [(and)-281(it)-281(should)-281(b)-28(e)-281(written)-281(in)-281(of)-280(the)-281(original)-281(language.)-427(There)-281(is)-281(no)-281(need)-281(for)-281(sp)-28(ecial)]TJ 0 -11.956 Td [(con)28(ten)28(t,)-334(but)-333(the)-333(length)-334(of)-333(w)28(ords)-333(s)-1(h)1(ould)-334(matc)28(h)-333(the)-334(language.)]TJ/F30 14.3462 Tf 0 -32.945 Td [(8)-1125(Bar)]TJ/F20 9.9626 Tf 0 -21.821 Td [(Hello,)-490(here)-459(is)-459(some)-459(text)-459(without)-458(a)-459(meaning.)-821(This)-459(text)-459(should)-459(sho)28(w)-459(what)-459(a)]TJ 0 -11.956 Td [(prin)28(ted)-389(text)-389(will)-388(lo)-28(ok)-389(lik)28(e)-389(at)-388(this)-389(place.)-611(If)-388(y)27(ou)-388(read)-389(this)-389(text,)-402(y)27(ou)-388(will)-389(get)-389(no)]TJ 0 -11.955 Td [(information.)-427(Really?)-428(Is)-282(there)-282(no)-282(information?)-427(Is)-282(there)-282(a)-282(di\013e)-1(r)1(e)-1(n)1(c)-1(e)-282(b)-27(et)27(w)28(een)-282(this)]TJ 0 -11.955 Td [(text)-399(and)-398(some)-399(nonsense)-399(lik)28(e)-399(\134Huardest)-398(ge)-1(f)1(burn"?)-641(Kjift)-398({)-399(not)-399(at)-398(all!)-641(A)-399(blin)1(d)]TJ 0 -11.955 Td [(text)-335(lik)28(e)-336(this)-335(giv)28(es)-335(y)27(ou)-335(information)-335(ab)-28(ou)1(t)-336(the)-335(selected)-335(fon)28(t,)-336(ho)28(w)-336(th)1(e)-336(letters)-335(are)]TJ 0 -11.955 Td [(written)-398(and)-397(an)-398(impression)-397(of)-398(the)-397(lo)-28(ok.)-637(This)-398(text)-398(shou)1(ld)-398(con)28(tain)-398(all)-397(letters)-398(of)]TJ 0 -11.955 Td [(the)-365(alphab)-28(et)-365(and)-365(it)-365(should)-365(b)-28(e)-365(written)-365(in)-365(of)-365(the)-365(original)-365(language.)-540(There)-365(is)-365(no)]TJ 0 -11.956 Td [(need)-333(for)-334(sp)-27(ecial)-334(con)28(ten)28(t,)-334(b)1(ut)-334(the)-333(length)-333(of)-334(w)28(ords)-333(should)-333(m)-1(atc)28(h)-333(the)-333(language.)-334(7)]TJ/F30 14.3462 Tf 0 -32.945 Td [(9)-1125(Baz)]TJ/F20 9.9626 Tf 0 -21.821 Td [(Hello,)-490(here)-459(is)-459(some)-459(text)-459(without)-458(a)-459(meaning.)-821(This)-459(text)-459(should)-459(sho)28(w)-459(what)-459(a)]TJ 0 -11.956 Td [(prin)28(ted)-389(text)-389(will)-388(lo)-28(ok)-389(lik)28(e)-389(at)-388(this)-389(place.)-611(If)-388(y)27(ou)-388(read)-389(this)-389(text,)-402(y)27(ou)-388(will)-389(get)-389(no)]TJ 0 -11.955 Td [(information.)-427(Really?)-428(Is)-282(there)-282(no)-282(information?)-427(Is)-282(there)-282(a)-282(di\013e)-1(r)1(e)-1(n)1(c)-1(e)-282(b)-27(et)27(w)28(een)-282(this)]TJ 0 -11.955 Td [(text)-399(and)-398(some)-399(nonsense)-399(lik)28(e)-399(\134Huardest)-398(ge)-1(f)1(burn"?)-641(Kjift)-398({)-399(not)-399(at)-398(all!)-641(A)-399(blin)1(d)]TJ 0 -11.955 Td [(text)-335(lik)28(e)-336(this)-335(giv)28(es)-335(y)27(ou)-335(information)-335(ab)-28(ou)1(t)-336(the)-335(selected)-335(fon)28(t,)-336(ho)28(w)-336(th)1(e)-336(letters)-335(are)]TJ 0 -11.955 Td [(written)-398(and)-397(an)-398(impression)-397(of)-398(the)-397(lo)-28(ok.)-637(This)-398(text)-398(shou)1(ld)-398(con)28(tain)-398(all)-397(letters)-398(of)]TJ 0 -11.955 Td [(the)-365(alphab)-28(et)-365(and)-365(it)-365(should)-365(b)-28(e)-365(written)-365(in)-365(of)-365(the)-365(original)-365(language.)-540(There)-365(is)-365(no)]TJ 0 -11.956 Td [(need)-333(for)-334(sp)-27(ecial)-334(con)28(ten)28(t,)-334(b)1(ut)-334(the)-333(length)-333(of)-334(w)28(ords)-333(should)-333(m)-1(atc)28(h)-333(the)-333(language.)-334(5)]TJ 169.365 -302.919 Td [(4)]TJ
+ET
+
+endstream 
+endobj 
+33 0 obj 
+<<
+/ProcSet [/PDF /Text]
+/Font 
+<<
+/F30 54 0 R
+/F20 55 0 R
+>>
+>>
+endobj 
+34 0 obj 
+<<
+/S /GoTo
+/D (section.9)
+>>
+endobj 
+36 0 obj 
+<<
+/A 57 0 R
+/Next 13 0 R
+/Title 58 0 R
+/Parent 5 0 R
+/Prev 59 0 R
+>>
+endobj 
+35 0 obj ( B a z)
+endobj 
+37 0 obj 
+<<
+/S /GoTo
+/D (section.1)
+>>
+endobj 
+38 0 obj 
+<<
+/A 60 0 R
+/Next 61 0 R
+/Title 62 0 R
+/Parent 5 0 R
+/Prev 12 0 R
+>>
+endobj 
+39 0 obj 
+<<
+/D [8 0 R /XYZ 124.802 716.092 null]
+>>
+endobj 
+40 0 obj 
+<<
+/D [8 0 R /XYZ 123.802 753.953 null]
+>>
+endobj 
+41 0 obj 
+<<
+/D [9 0 R /XYZ 124.798 753.953 null]
+>>
+endobj 
+42 0 obj 
+<<
+/D [10 0 R /XYZ 123.802 753.953 null]
+>>
+endobj 
+43 0 obj 
+<<
+/D [11 0 R /XYZ 124.798 753.953 null]
+>>
+endobj 
+44 0 obj 
+<<
+/D [8 0 R /XYZ 124.802 724.062 null]
+>>
+endobj 
+45 0 obj 
+<<
+/D [9 0 R /XYZ 124.802 716.092 null]
+>>
+endobj 
+46 0 obj 
+<<
+/D [9 0 R /XYZ 124.802 488.03 null]
+>>
+endobj 
+47 0 obj 
+<<
+/D [9 0 R /XYZ 124.802 349.577 null]
+>>
+endobj 
+48 0 obj 
+<<
+/D [9 0 R /XYZ 124.802 211.124 null]
+>>
+endobj 
+49 0 obj 
+<<
+/D [10 0 R /XYZ 124.802 569.627 null]
+>>
+endobj 
+50 0 obj 
+<<
+/D [10 0 R /XYZ 124.802 431.174 null]
+>>
+endobj 
+51 0 obj 
+<<
+/D [10 0 R /XYZ 124.802 292.721 null]
+>>
+endobj 
+52 0 obj 
+<<
+/D [11 0 R /XYZ 124.802 653.313 null]
+>>
+endobj 
+53 0 obj 
+<<
+/D [11 0 R /XYZ 124.802 514.86 null]
+>>
+endobj 
+55 0 obj 
+<<
+/Subtype /Type1
+/FirstChar 11
+/Type /Font
+/BaseFont /VVNDXJ+CMR10
+/FontDescriptor 63 0 R
+/ToUnicode 64 0 R
+/Widths 65 0 R
+/LastChar 123
+>>
+endobj 
+54 0 obj 
+<<
+/Subtype /Type1
+/FirstChar 49
+/Type /Font
+/BaseFont /PHGXPC+CMBX12
+/FontDescriptor 66 0 R
+/ToUnicode 67 0 R
+/Widths 68 0 R
+/LastChar 122
+>>
+endobj 
+56 0 obj 
+<<
+/Subtype /Type1
+/FirstChar 49
+/Type /Font
+/BaseFont /RDMIXZ+CMBX10
+/FontDescriptor 69 0 R
+/ToUnicode 70 0 R
+/Widths 71 0 R
+/LastChar 122
+>>
+endobj 
+57 0 obj 
+<<
+/S /GoTo
+/D (section.8)
+>>
+endobj 
+59 0 obj 
+<<
+/A 72 0 R
+/Next 36 0 R
+/Title 73 0 R
+/Parent 5 0 R
+/Prev 74 0 R
+>>
+endobj 
+58 0 obj ( B a r)
+endobj 
+60 0 obj 
+<<
+/S /GoTo
+/D (section.2)
+>>
+endobj 
+61 0 obj 
+<<
+/A 75 0 R
+/Next 76 0 R
+/Title 77 0 R
+/Parent 5 0 R
+/Prev 38 0 R
+>>
+endobj 
+62 0 obj ( B a r)
+endobj 
+65 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]
+endobj 
+64 0 obj 
+<<
+/Length 1724
+>>
+stream
+%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-cmr10-builtin-0)
+%%Title: (TeX-cmr10-builtin-0 TeX cmr10-builtin 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (cmr10-builtin)
+/Supplement 0
+>> def
+/CMapName /TeX-cmr10-builtin-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <FF>
+endcodespacerange
+7 beginbfrange
+<07> <08> <03A5>
+<23> <26> <0023>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+<A8> <A9> <03A5>
+endbfrange
+78 beginbfchar
+<00> <0393>
+<01> <2206>
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<09> <03A8>
+<0A> <2126>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5D> <005D>
+<5E> <02C6>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <02DC>
+<7F> <00A8>
+<A0> <0020>
+<A1> <0393>
+<A2> <2206>
+<A3> <0398>
+<A4> <039B>
+<A5> <039E>
+<A6> <03A0>
+<A7> <03A3>
+<AA> <03A8>
+<AB> <00AD>
+<AC> <00A0>
+<AD> <2126>
+<AE> <00660066>
+<AF> <00660069>
+<B0> <0066006C>
+<B1> <006600660069>
+<B2> <00660066006C>
+<B3> <0131>
+<B4> <0237>
+<B5> <0060>
+<B6> <00B4>
+<B7> <02C7>
+<B8> <02D8>
+<B9> <00AF>
+<BA> <02DA>
+<BB> <00B8>
+<BC> <00DF>
+<BD> <00E6>
+<BE> <0153>
+<BF> <00F8>
+<C0> <00C6>
+<C1> <0152>
+<C2> <00D8>
+<C4> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+
+endstream 
+endobj 
+63 0 obj 
+<<
+/Descent -194
+/CharSet (/A/H/I/K/R/T/a/b/c/comma/d/e/endash/exclam/f/ff/five/four/g/h/i/j/k/l/m/n/o/one/p/period/question/quotedblleft/quotedblright/r/s/seven/t/three/two/u/v/w/x/y)
+/CapHeight 683
+/StemV 69
+/FontFile 78 0 R
+/Type /FontDescriptor
+/Flags 4
+/XHeight 431
+/FontBBox [-40 -250 1009 750]
+/FontName /VVNDXJ+CMR10
+/ItalicAngle 0
+/Ascent 694
+>>
+endobj 
+68 0 obj [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.2 531.2 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.7 312.5 937.5 625 562.5 625 593.7 459.5 443.8 437.5 625 593.7 812.5 593.7 593.7 500]
+endobj 
+67 0 obj 
+<<
+/Length 1729
+>>
+stream
+%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-cmbx12-builtin-0)
+%%Title: (TeX-cmbx12-builtin-0 TeX cmbx12-builtin 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (cmbx12-builtin)
+/Supplement 0
+>> def
+/CMapName /TeX-cmbx12-builtin-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <FF>
+endcodespacerange
+7 beginbfrange
+<07> <08> <03A5>
+<23> <26> <0023>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+<A8> <A9> <03A5>
+endbfrange
+78 beginbfchar
+<00> <0393>
+<01> <2206>
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<09> <03A8>
+<0A> <2126>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5D> <005D>
+<5E> <02C6>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <02DC>
+<7F> <00A8>
+<A0> <0020>
+<A1> <0393>
+<A2> <2206>
+<A3> <0398>
+<A4> <039B>
+<A5> <039E>
+<A6> <03A0>
+<A7> <03A3>
+<AA> <03A8>
+<AB> <00AD>
+<AC> <00A0>
+<AD> <2126>
+<AE> <00660066>
+<AF> <00660069>
+<B0> <0066006C>
+<B1> <006600660069>
+<B2> <00660066006C>
+<B3> <0131>
+<B4> <0237>
+<B5> <0060>
+<B6> <00B4>
+<B7> <02C7>
+<B8> <02D8>
+<B9> <00AF>
+<BA> <02DA>
+<BB> <00B8>
+<BC> <00DF>
+<BD> <00E6>
+<BE> <0153>
+<BF> <00F8>
+<C0> <00C6>
+<C1> <0152>
+<C2> <00D8>
+<C4> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+
+endstream 
+endobj 
+66 0 obj 
+<<
+/Descent -194
+/CharSet (/B/C/F/a/e/eight/five/four/n/nine/o/one/r/s/seven/six/t/three/two/z)
+/CapHeight 686
+/StemV 109
+/FontFile 79 0 R
+/Type /FontDescriptor
+/Flags 4
+/XHeight 444
+/FontBBox [-53 -251 1139 750]
+/FontName /PHGXPC+CMBX12
+/ItalicAngle 0
+/Ascent 694
+>>
+endobj 
+71 0 obj [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 511.1]
+endobj 
+70 0 obj 
+<<
+/Length 1729
+>>
+stream
+%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-cmbx10-builtin-0)
+%%Title: (TeX-cmbx10-builtin-0 TeX cmbx10-builtin 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (cmbx10-builtin)
+/Supplement 0
+>> def
+/CMapName /TeX-cmbx10-builtin-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <FF>
+endcodespacerange
+7 beginbfrange
+<07> <08> <03A5>
+<23> <26> <0023>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+<A8> <A9> <03A5>
+endbfrange
+78 beginbfchar
+<00> <0393>
+<01> <2206>
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<09> <03A8>
+<0A> <2126>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5D> <005D>
+<5E> <02C6>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <02DC>
+<7F> <00A8>
+<A0> <0020>
+<A1> <0393>
+<A2> <2206>
+<A3> <0398>
+<A4> <039B>
+<A5> <039E>
+<A6> <03A0>
+<A7> <03A3>
+<AA> <03A8>
+<AB> <00AD>
+<AC> <00A0>
+<AD> <2126>
+<AE> <00660066>
+<AF> <00660069>
+<B0> <0066006C>
+<B1> <006600660069>
+<B2> <00660066006C>
+<B3> <0131>
+<B4> <0237>
+<B5> <0060>
+<B6> <00B4>
+<B7> <02C7>
+<B8> <02D8>
+<B9> <00AF>
+<BA> <02DA>
+<BB> <00B8>
+<BC> <00DF>
+<BD> <00E6>
+<BE> <0153>
+<BF> <00F8>
+<C0> <00C6>
+<C1> <0152>
+<C2> <00D8>
+<C4> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+
+endstream 
+endobj 
+69 0 obj 
+<<
+/Descent -194
+/CharSet (/B/F/a/eight/five/four/nine/o/one/r/seven/six/three/two/z)
+/CapHeight 686
+/StemV 114
+/FontFile 80 0 R
+/Type /FontDescriptor
+/Flags 4
+/XHeight 444
+/FontBBox [-56 -250 1164 750]
+/FontName /RDMIXZ+CMBX10
+/ItalicAngle 0
+/Ascent 694
+>>
+endobj 
+72 0 obj 
+<<
+/S /GoTo
+/D (section.7)
+>>
+endobj 
+74 0 obj 
+<<
+/A 81 0 R
+/Next 59 0 R
+/Title 82 0 R
+/Parent 5 0 R
+/Prev 83 0 R
+>>
+endobj 
+73 0 obj ( F o o)
+endobj 
+75 0 obj 
+<<
+/S /GoTo
+/D (section.3)
+>>
+endobj 
+76 0 obj 
+<<
+/A 84 0 R
+/Next 83 0 R
+/Title 85 0 R
+/Parent 5 0 R
+/Prev 61 0 R
+>>
+endobj 
+77 0 obj ( B a z)
+endobj 
+78 0 obj 
+<<
+/Length1 2055
+/Length2 16506
+/Length 18561
+/Length3 0
+>>
+stream
+%!PS-AdobeFont-1.0: CMR10 003.002
+%%Title: CMR10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup
+/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /VVNDXJ+CMR10 def
+/FontBBox {-40 -250 1009 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR10.) readonly def
+/FullName (CMR10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 65 /A put
+dup 72 /H put
+dup 73 /I put
+dup 75 /K put
+dup 82 /R put
+dup 84 /T put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 44 /comma put
+dup 100 /d put
+dup 101 /e put
+dup 123 /endash put
+dup 33 /exclam put
+dup 102 /f put
+dup 11 /ff put
+dup 53 /five put
+dup 52 /four put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 49 /one put
+dup 112 /p put
+dup 46 /period put
+dup 63 /question put
+dup 92 /quotedblleft put
+dup 34 /quotedblright put
+dup 114 /r put
+dup 115 /s put
+dup 55 /seven put
+dup 116 /t put
+dup 51 /three put
+dup 50 /two put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+readonly def
+currentdict end
+currentfile eexec
+oc;jAw-=%W)-{ru)rAE(@{빴Q|_R
+ϤA	-T@|q|VkJ%qu8PwGxŪ̆Q6K-U\%b"t-*xJ+
+}3{Z2zݬT2s$Z&{BJ{x<,-.2iRnñvپ1䠕 '䓱_r"O_t3kefBݼVfj9ҳ Yh뀸{q-ɷ}W??gw1*Eh[:tWeI,v8a<{B100Z85|}Nlw]6Nbh3E`(Eޏ'Q;eԃ/.DyL5$4IG׮Ɋ\yj9.VU5Q!-赁B9dB^oVwBɎT7RsOGA	b#TBv!mWT=w,ID%'MK<|]D@2O( ݎ%#_ɷVBST#z !${l\4ĸ ;5l&!〚=(fUwAeB#30>H 'L+֓jz@=s\<=\Y$D?U	6xGQnǫi%֔!
+L2 [)!fXc <'ȲRP3E!-:'AJ.ĲCJ Jt &{76
+#VH/Fgw"F5wS$|oQ<Η`~<10|<mﴷ؜hޠ߭?`?7_̠[8xP<41=tH ;6}rKu13UC iHt}y~c%\q\4O4v![_Iﳯc0MJMY0̏v{6\ rqɚ"3=TYK.K),GK{aCZBG
+y(K'2O0V6IP$$l-[eɋK&2%gbzJ,uo~M2zu6**9Ψ?ģKc)\gt&?nTw$dN\CO@W2x8q!LdҮo~1V/B=@!0Yoz$ǀ%ĭw2]o _?IhuBmF:1ؖdy6 FLn5Sw&-ӰGz9='(IhN{O 1Lvcmi&"Mm@WՆmb%0٘*`ġߓ/fÝl%PE2:VA)SBL/<5CAl;{(#XnF"  8{RoT(_WbAK|oM_ӗWyM6^at@O1/ F3y#cMMGZ[mzόF	l"J>eVBWB}V)Si,ާRFP.Lрx_[XVQTPv
+e,prhu񐄌`+l{eQ֐_@f63HPavzU_Z1*ǍM+bp;{ݪ	Q3VV;ء͈O.Oi,88Æg=\=@"FKFTbVl(lgbҭ!Ֆ\a4Q1~ 9qV̥ s^ksdnz:Lz]rvNDMG79$ILi&Agnl6yJ	FO<K	PͤOAAvl&Y״' W&0K /i	iu	bC
+8zAH՟3
+y.[xt1AupA.[4S2bw+c tNehD̲"!~;+7p\wxYG
+^5E_ܹG(Al1`8u.u+">;,zɴ%
+oߠx0sW1Fx gmxVyѝ"]#z~pvŨ.rB9$nYCC1td@#8 kNԋK;ԓlF(،N;d*<Ʀs9<GCE`Vh%QFoP$"33P99Zs9'`rW:Nsǔ@f^W݅&24wlz$2Ww݅O9b"OW*F]/`yQ	ɔ\QF*iT^N d_M`S%TNK7+R[rYYqe}YP
+FUEKH'>ZQ@It%[)7&hnY'a¶T'Xrߙ/n_nJL(@
+К
+N{KF^kbn~`L]aU{vLܺ41$rmAsnZ*=sob@{y!CC{c.WZ0nbpgsPd$-\ԛ&L<pl|~8.Ė+fzyv_Bzʇ2?vԼׇXa!8դm
+ۇgw!
+7F	Y@yS]~loB鬓	v!0跊FEa[fPx4H|W;GY"3B5H\"ӫ[1Ιc5N9p>27JBs/g(xQ,t>[8͓GsŸ:R$9]6&my)ivjWLRB^RBalx_Y:5M/j١!}`D&WȪQX$HߧtI	.Y@nr_n܁OtAN-Ln?_^_g~Ə;`KB6eĶ
+>lQp)/;S'^:tJj@xE(0G;κQqǔkT';<qnutlLC1X 5
+qqҥ?z1CS+P1~eS23JMʄl(ӵ$eQ/mpN5K7We|)aHZӯ4uU}U !˖Y !IYӟK%cE=BI]S1 #Ӻh[QLhY-~Srya5 MPYG;9]Y @5(
+>ÃDHjsrxܖ
+.>֯kl;&#<ښe)fFz`Ƿ?Ic @SH&<evn 8F\V3aA!yy:+c!xbM։/f}3ߖ˦"G'fMsXWU}Yĵ^%j!HOH͎_;臲Jv]#
+$'Ch?5<S˰@	a-AcloWM(r #`nY{j`3|lv`'Il!P{E=pa^hOk`p8uy$ru
+f}cq+5y~!]՝U,t)i:HO(_eOFVq>u-G:zHZ\%Uv z^By%NT⸶3=X?mJ-3iH@ܐfσkR.v'm.'SDly7YCm^Gu5_G1t/
+41n_D>}p+fg9h$]@M`^ҹGK;5wIrqA3fAYiuYrD:dR At-,)aɺh9[ԧuS9KTKaX$wgɓO[xqǃyI(j5LIc}|h$zDUwY+Z:ϤŜ1le`u@|܈贚^6/y`a[Ί`ҾEwaziLa}jʰ@}xWns0n*{l?Zz>8p-L&ȣK`> `%`ݿs?v˻^\*QNbf+ۼބo"	٧U	zgga䎐uFљ<Xyݸ*g4?X2]4H͢^qLeoU~7>)ƤHnA7"{DR</2tMs妀k9IXf+٦XE짖.!"*JS7Yj&AJ+房=N$6vSTY#L4Χ? 'FdVGL,+sG^/qhZzDt@3eM@>j)<Wh`M>ע~eVDJ|X}ѧCrTAfP};"ӼK#ΑTF\^ԓ;	|R D\ĂHu6QИ'Q3b;x#3S:jb%tJ/>ʡOrVށx]>)]l5o[F;,N&'i\NQIH?T:@FNSX0<)hW4fFDh.سT)^S-nw},ZNECYRez3\
+tY5`F~_xU|'XǇG@U6I\>:V_>զ9*I0}ӵ\"{3UzuFf٤Pߨ)E8Uw)gq:dj#hqso-@
+KG7"|QЇ Zzs|}LմS:fmA3S2=[dؓJ\ܳc|tj1ƛArѮJv,K|	ϕVސ
+Q[<UX:?c+%	NBS59"ĜgT^bW(*$ w)^N!rYz<&r;AdIC`/}
+-j 6z\lK4*́K-WSPͮAG'E2HP7YW-FEM]B$ ]2%<Q~h^#{dpwф iio9rU{nz}6S]=P_T QTpQNR[OoWO6.d@!חA^KC;%tօ/S+Wb[Bk#mW/ZPW,b=i"TShlF_瘜񄅰ݾ7W`һϫtjOGGn@i4U/	IHv/s/U"^@ACpQԻI˓~>>nUӯGn=ZPrHbv[ox<I7P.RNcJjt}gy	y}U8,<'W{ ?K)UǕpCug"
+8ǵ	1?WE+K}YƼx@jzIJ$]٪3rAzq%ZcK Au'ˢAb1yԵ5'R͈K7JA׷S.Xy~$A5sdnS&Z,:P'Xb a-G!"g6C [VؙWZNz,2)`DCq^ePn-UPLJ$ΐGfdјdREl/!cڢɰ UD̂ghf2F,Za]yI>(:oœ @%ɜ7C?LPoOJZ7aaU.iPH\b} /`8jmcYX5Sl,P!
+Ӥx61S$&kB	Y7]a-1ǳoc*_=`l"lHX{V9/
+u݊hN(HOI)riVgx_YcERִf]VA1Q(צ U6V!}uNĹ~ NYɐYKRСhxyV
+-n>GUD~)\ilU+R?^&jf2~i"=0ؗyҬLϖv7B[	TKi\b#!=S^BFq%<o-FeJ!_XZG=P(.
+ׇdnAT'E)uYY6\}6m$'a
+}Ug#Oe|Qo_E
+ȭ jSCtR r*5 v-QfNVo3S|XVԤstq}e=wIk@@7\;ujշ^FVՙh">
+ ќUS`
+rp<SaL؟}9c\=LWT~	|r}02"s]Z=E[z8ќWB`K-FkD&-gZ(܀9? ?Pfǆk)fs\Y8㼬oSŌ+(~;	R8Mn
+h'aLB'L#ok+bޜiF/b =Ӥ@!MͲ<xQ˹
+cIˌzo&*]9kOdXKV_7vb<Tt\с8)tK^mMu c}>N 4=0P;V=p*Ռ(9=	BYb}6̆|F,_F}H:URCBVROĻ_bhH4 5%ih0$%'r}<:dgF"IhEz-pr]گ"AH\e*2Xq;UI(F! J?ځyĐZ>_t'ZSҶ1LpVzLwl$T'n2 vF)nɄ2P]ɥ旙.&ȯւ)L;8*3"ӟk	Cg^LzrX(Mb̔H#F#"1poo=Rٕ[sRV 6mk E'PP&haF%Ji'~vF3lv.W0#:8X4	}?s-y\=>Oo06shbRyAhO̺cԎ6GYj)|~	69r&(TX(n\g|ge$$WhLw4`M,&Ťzإ.	WLa ҋKkd[Z
+-,m\A?	tKdkԽo3!T"{Z20 ^(v>ÅC=xߓ깰%Kw}϶w"=NCX5^UwN*הZ%c!k#=$IQTax8BH~OU5Q$y*24] ֳq4 wiWIS쳻? }uk$j_W!j%DGO`Ȇ"ͥw~#4Ჱ&Miy5 C TɉD0UcD&l"\{V9+cRaeu`K0``+̾vBi^Gպϝ] L:	)wNyv0nK+-T&e󌜯L{YBh@pCc^$.UÜg-D
+xH1Gv0sY]$&p`%蟼^nK0Q1;MtwZ=ry:#c^|M	GS,~+DJq@\	iM9C6ŀ=ܦ]
+|}+L֚±%:;鄿0ߜ YحVKACz]ۚ~X,A	l]*b;A`+
+s_Ux(H9ug<
+Ƙ><=<?4044k(`Y2o_x`ySพY(ƵrlR/_?p8	G|~
++r6Yd4;bMk.=
+CdX50ޭo5Se d{$C qIuAV'#u7tNK^AT:fd|!$h-艉&ak|LB\oҜmFh
+zc?v)뒜PHH-Պ5D |!nER_Tm]̻=m+CwʕU)\wR,t6eaLvJ!Ky7WA9śGZF:Ktv&U^ÿ䗵-/ehYjH&sr@|[ME5hB	Ef H[c
+;Uy`muFx[F9%ڠ^nB74hY*{ěK/1I"QJPS3k¾I1wj::%&D2J Y02_Hfu8Q]QװZFؤ&6݀P*3}nta\CH7_y3uO ԓܗ,?r}VLY.f|-:VQw(pIPu@%]6Nuјg^.#9כY7hzӊ8.󅯟Mia((㩼 #WOɮfʄ*񙉨d~iи"s}A4H Sl`ϸ=|m_‌+F%N 'V8?Dk7֋ba^h]'2woʳShB0>c#`Ź4xXd؎]*QH?߿vɬl1_@<P4A=G8;m̽
+RI6!A:0퓇8J )Pj+-.}TU̕%lׅ<*Ȝ׹ro$p'n*4<'n2D
+;*@
+k4fyhwevi&`X-Îvъ6[*X\nj^>l
+SC'lp\c,=B'=n%,$$vQACF`Y_ @<E5$-wRR"n/-u46_#=JPm9ᘔ((5$gP
+T
+ CR(7
+m˚>ghT3+Rت4XQ^ifCTE fzǚM=tC y7¾G&<͢U6q^W13.fo@^N?ytP1_¯60^6t7?*!4TG9oZ4Ixt^#vV`z9ˑ	$q%~2;f]D,Ya.d[Ec离`9.QTj<5Mw<>&~cFNT'JW$jźBxapBbGN:[YVChY祦{['8	QrFn=ezg`n?C7ɍs<1m[ḯ	).8d<Ay'嚺^AQ}/VSއ
++ppx!#8
+4~FRGX^'2gQwj胎笪 w9F4~'b}&?ڜQ,>6P ?*xP?a	aAgNÍoԧC[r}!ZI3_@]ܸ>p2mYv-5,[ڤI\۱)4~wzΛ~8eX Jw4;"ƽ0$Ʈ-g4#GϚ|vÍi7)ঈ 3{0РI7X~FxtG9U!೛@5.klld=iKC[D)i|#N+%9aH'++=R3~&`&'Z@VŞ8 ?@l165	nď)%7~/}^
+WRN	,kԈ>-/A^"f
+pRh>mI"~դ^~P5Ѐ@;Ae<fɥ??gm!7wQ /O6A	T2@|wVJ)`:u)yEeg|?W+T4?֖}Kbѷ<a+1K-g\?{n5X-"V4A.)6Z6r/ \39hL+]pHKB;b*`LwkZǼ+_KhYs3&r#hVaFNļW	#v"G=n! #*8]wX8f<G=hFr3ŵ7.tMY(7AG$HΠ}Fʾv %8`FSjkM9N]Sst
+VOHEgђ>,5e|m>{2%qyWqXEdm,:Oj>l$Jo>x=&O1 ߺ.HBv5J8!7{iԆ0e-Mb<ቢ_)ׯW<df~jiᏁe2v2pXDM_KF׮XDxP;<J+qPtRl`$ԓZ "tD/>:H35A]ߛ=!C/É֧(r}\@)G_ccm@1YY6i GuF
+႕Fwڐ00NKUG~2 ٸʎ4.V)ܱYr)gΟu&iɾ-{Z%ofP8_w1MW4<̣QJMLI+Ԯ_e.u:ư&I-Ru=~b&ўqeucqs|6P-[Y
+S9nEQ	+јrMNĘ";.	d~Ǿ:r1usCtά9Π)]7YEUZCP,e΃i4 (א 8݂LC3* 3~Ь(xW5A׋"80~5d~Rz6\?aYJ<,!O^@D3zoEKn|/eq[.Z$OXxB&SO?WhIJOkF00ךOOwU+HV$ONϞ ;A/[.2.|p6䮈 %"Hc2EҚj Euz$xl9
+Nj`A5OLi۫m*WFoO֮d~Zn eDEFV6QwgC#NΗotxh$c`ՙٴʗ&c<~9\F[E<I[h[J厂2(kAr跩+adn3Mu5P/5Ur#1`4Su> F8,(Q2tݭޫaao\?e\$Aؐ| IJ &mfkBs2+pKf"=D;ӯGCCdS)\Mʛp,N5o%=qyBsuppoxHu}& d)/Bf[YSʤ^M7hztd+]wfly4<iV܊! -+~:SxcݛLi,J8r^j]M&~j*J~VlhUm%jt{sˮtjw!]왶Їå7vBHfw0*i`[ovOt#qwr&o̹VȓFZ>&/Da"QԶKYo]@_r8娣M{u_k^ffH
+(	R8&f= PEx`ZnakaYt6soEVcQ3BN݇pUF%9̢\G
+gf]czU)#;ZQ؎F6'~y,d4煦!}cO 7Wr(zpx{,syTP?Qz`s!{'L m3(ެ>&x#jM
+GbKxI\OϺL@	z7_s
+x0 lHQ0geES Hܽ8Ԫ9TX)+x|&rW
+2ӃcrV?`˥ oisW̢H`B^:JM*,gXKvÝ(/DrEC"0cUj;	`^5|P_SNQ&	8؎%q6͗#=p4XcN*.K\^q\y
+Ot\4<vKG[bU~5Cŀ7uRo#,A GumX7{ɧxWPxf1x ba"c'uǿWR I[quw~QoE7 k2C2]ߢ\Y_,rkFg?}|l>71[BX&v4v$*Â`JLA_7s͝
+=ʲp=cBP'jTu;^G#tpidLl%47	LyI-pzz`z~"ƼhLs.m,Q6C^a'bĜ@42ѕ?;(HhWs,>نȀil֓՟A.T+dc^ZL~M$F~KRC8j;l40=,3L>f㛻,Hk1KSWDx1r)ɨ U	C	k":ḰT;k[ yww&9n~&b#\T13hp"jȚ*681z,G^)(\%ެLS\ubO]Fp͠xGJ<xƲz%D~ŵ #X07~#6>:dFF=]4_|ppm9	[\bKWLyXҢ4R03\Xa26NԢzX/s3kwD?)9#0xJڄkteU}ULw#z*k\X"oa5k's"$e#<Tu9ob&!!T	dE+.ɤoI 27[	ؚ\2D`5A\5ɤ,lʓܴTQ/k	:~_=_qcetzǠ7Þ Dܮx:Y`s!ofwabhR	'AY	VrGel 'RpɟK@Bn+kaV*jeҐuA2ʨ_i޷=lk'{|dpAv!_ĠϜz%J&&p>;\2̘&TӲe~sz_>IZn0[JխG |P@5J{I܌ܳ}
+"F2=Cꧻc~BJw[֧:)Uqg;ϗI
+=daVqPev
+lMn	˭4|ܰe_;e)Tu7hjOwcE9	8i C3%T9$Ce}ܨf֦!=b:GEwAusI-wH"2<] `Q.DLfF;;y>hFi_j	-]GgMH}h/H˙+	yވuj21;rZdBɘd*SS;5QD&>PҮCƩLѬR%PIP{?jN݃DÌ*`1;T.:x2j``<~La/Аcr۠sw"""
+Em+dԩL&goV3Խ%Tg-=1C4:l+Jfbdi\8#tMX15pP!H%{#I2}=Ҭ-%A4
+@8X0>2r\=T=mJǇ|̀U&7J#wE(j|W>YIz_껋%$i)<lsatriVZSlW^yok&2D5/Mf%vml[,!uzJyK"A+h0Lϒ+	R=b dl(
+QNS	CX<pos#<!CPs&~ݾfBBV7܈8插J	Ñgy6ߊquT<yrPdGfP+1DwO	SyۧB$Av!e3t/֤#DH)Uxr2M'䊶]$^7 1jzҙ|TaEM;T[QAo# ir]9%Gڕ4RawYan>D:vڗ6e/ծ1@z/DbјXʿI,fwi<Hػ`wOGcia<yXs}eYae&'ZQ[qbUޔf2*:>E8bZZx{Ԅz	I_I׎X !TAv=b99VbTRbĴ0ٶXe/qO2S0Y[D*PW;Vqad}>̚]3u.wW z40l賜Z_#y8-hNQWqVq螅Rd
+dND#̔ۼ-5ڡpX
+5mFq>= /WqC֧3Pe ]MZ,YZ]sGjw]P^;ή/0vF9m^S$Qpm`-z"bw+rBCE)Qi{xLlUpU;.jψ'^728Y3"TjaKӼZ18IMC?[Rgu;ZZn=A.腎&D\5*FE?2X$7C>Z3w0H`҈v)d)@l1}	AI2T@W%H[̓'zYߝn4c{t
+MѮ3r&h+Ynq+ʴ~ :vr._[b'
+endstream 
+endobj 
+79 0 obj 
+<<
+/Length1 1669
+/Length2 8918
+/Length 10587
+/Length3 0
+>>
+stream
+%!PS-AdobeFont-1.0: CMBX12 003.002
+%%Title: CMBX12
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMBX12.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup
+/UniqueID get 5000769 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /PHGXPC+CMBX12 def
+/FontBBox {-53 -251 1139 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMBX12.) readonly def
+/FullName (CMBX12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 66 /B put
+dup 67 /C put
+dup 70 /F put
+dup 97 /a put
+dup 101 /e put
+dup 56 /eight put
+dup 53 /five put
+dup 52 /four put
+dup 110 /n put
+dup 57 /nine put
+dup 111 /o put
+dup 49 /one put
+dup 114 /r put
+dup 115 /s put
+dup 55 /seven put
+dup 54 /six put
+dup 116 /t put
+dup 51 /three put
+dup 50 /two put
+dup 122 /z put
+readonly def
+currentdict end
+currentfile eexec
+oc;jAw-=%W)-{ru)rAE(@{빴Q|_R
+ϤA	-T@|q|VkJ%qu8PwGxŪ̆Q6K-U\%b"t-*xJ+
+}3{Z2zݬT2s$Z&{BJ{Jf^ַ>aq4!<_CцcQ%BlS71_
+sQzԜr?ktP2Òl(?69~'@2bt[{ax7}Gn[TY>T #a1h!;`WƮk>Kj̱JzNc?^<@qTud[eюj:JnK#2S[ŝBb?̬Mo7aa'gP:δѩ҈dBd|IH^wMe#DD13W.J.6׮<TM">r(N#>Zjhɵ+Uw
+$\WN.C(V\N¸3A?l_sMPyfSyֿb`9upPȐNur)L=uhՂD١Pԋ^}
+-zU*3~HwzQ:.cxv(<Z<6ؚ5KԚ+zG0)rY:ׯcB7IVՁWR]9ZZm|coɂI\mN ~n0\fLrO~펛;('f/cWD8R(\ҿ$p!"9R =7Z}ܐ]+zeV[	m-*4$ٔVDZ-WKp~TuO1!~a&74ҿ,=+˪VFc338kh_lAna嵂NԿ:[$͟d:ic֙jCM2`5rL:䳤୾~cM`	!f9_>P}F>48zeU+Jk<>,H~^U>~~)9G-_+ԇ2miΝ1 r>Z?ώ8PZm#meDPњ69v=hE_X(yN(9d5<X45!XCEJ\]Xl*:Y->p7LZC~ld1:/ g!,
+}Q+93V{ QlG7 !;yq+JA	vj/rڜZP)4f+OpX_t~ 5[RZ$<hCw4PAwhbH3iE}[mzR$[E4{pzR/W-	a_I浓mhef'[q.C0uU&,A	w-"+4$ޥ>ҹ=#e@K*WEt_-JbΣZdh>xNpsGLOh>o련 J;J+\m
+J6km9"N `D[ h6w{Ac<=ޮv}P C*|sAחfK+1!Sn~#_*]\i!Jiq˘mJ K fy*S}iGV6wa$mv<zZQ^L0NRq!*7uLO=b~_J	CI?<5Tzs}uL`M؀"7K8yO {|v`).D3K$	 ,3sÝDRTc2쑃%yD\MS9HQ՝rfG^\55#v[Yϴ)KS^~nMX,8&7ad$ݕ^t/WyϿ4QK{)= WDd>oeZpٕi-e@PLb|#p"6KLPXzbZc})%LKfO2ݮ (NԴU-eruRyTkl>'H9т-)u
+u+ld4zcLsTJ[:v?WNM*NiLffF/? ̔o_a!Bt]z\ޔR/r4M Fwe5']ZPp׶r?PaL'-
+c3G}T'ڡn#^>Ҡ'-ހFwMOTDsJQ{	T޾2VNsҎ%Bh$,>oK"Hϯ 2BU7'J(Ǜc1PIݐ.lQjF%jP
+1zb2ɮWM+mKf,"/3~į;7/7=o-R%nJB@n6A0hRF9T{(&$߅:hMj%FVڈGv?`S::JepR̶9 <Y[nȗփ8$#"e=kffPwE9$N<"jXXsMrEL"!*f+!UA,?3x76#a!=#ɕub/G# HP\\`b$r=)?/9<oBU7.5BRI 9a"V!&x1gqk=- Z1H[ﮚFaSv@ңiwy#d%s~\e](
+:a2?{G֞@:ơlsa8پGVfJܾI<`-?];-G}S$a|o׶ku'wy Fꘄpô2}I*޴BC>y?O_4:╱bEV]1Vb,"KoF0dba̟f4G^̬k({:
+]-eJbc?hs+΢_sS,atyir%F3gދ&M}ۨ3Dkh`\rud>;iA_
+oF_љckNԋn`v)2ۙ$#6{⮶\FvUWl
+%x[gj6~C"^klCy%)%nWFO/ My~ZqiI$CT*x])it4ZV ]m剁V O)g i
+%-JUƠ[fTX7/.cU,h78M4	z9:̳jmrvP#>bx_Løğy5R@/{fQC}d~r!4ѐfPo퀿M+^',6_/W{h/њjS}Jzsնj	޳~zL{qA\ Rh$):zNSJLyj^Ĕǒ)T~KZAP0JP~(>~9&åv^")X5=hN҂aNز%1v1gv?467H!NjO4پb夹tFy&{wQ[+ZJq
++@mn,jMnEfImRGUY8NK:]ĤB!N?J'A.k{<P?$/b%cRn!*98Nu_T1&*eN^&uI|+0":dS6UwO"E=F<["x0 Z{{.8'Z	_a%gd~bKWԫUzN,I ei	l>c㣆+/lB~z-NWWcr酉?V,d\$;tTR%M8DLsY{D#4D{a\j;$ndʟ'KE'pa_C1daEE4"<[ɬ}77%غk/2Ik'wb<B|;YlF{ت,9
+',>lZqq@`C,6|U[2ǩ{{_W{l[(Eㅐ&K!.0t)f7lnMwX<|w2#:|м6ޡ4Hkr~I Emvb,[xY@rL'3:`A7C~X+_显R#GAVt]Dd!	0*uzbrYN%g UX&h͈6OW2^zG iNΫyf_S">.g`B6G
+BdXXE} 텅eW_llQ6ioF<3ԙZN%Q^w݃{&E:k= BI|
+~ڛfKikx zm 3ٳ~mk
+R-rHsډZ嬪.]]<!h) |f[Hl܆3ہ[߇z/ Y,dч\6oE8 G[fy@7X[dW'6JAGJ/$~C!}MKAZ:o}̮FQ:SPhSvUi86]^Iüu*R<":.~Ι&ٵT	 LN9G~=+aνa/׆(
+
+r9hn%K~<xuyaN#Qc8n$[_­wU[MdQfеw:#&]M;*6^MyGdL6!%Kp,npL~WD+|sdWG6y1bX4KG#73-r4"nAJ;.~DKoZ;wbx!W/mʿE1tCv]
+3M+^6hž!SILT2y-hԯ.]bvr;5zO䜵m3q(+O2􌄙)]s5)LblM^[l͒a}/Xwl/"B}(Svt^VAma%]--]N﶐W9pg]mL& KMi;zGf݋wqg4գ?-3KS-%x<p`*ֹ/g?~&ʧ8n>f0ԅjYt64a;πjo@(Y`'jֵtBdp
+tt I}?q<uGž6Tmґ}?u"I{V1vp7>A{7"?H~~nkCb:ʘWH$)X<]بAoВ0~$ pEQt%%YP&W?1?l.
+ܝp~eC?Y`jFYInK]K*l9Y1|6˳ʦ0s	VSE(p17ðLTVWL3XCIG:⻇M:I<#FbNHq*Uk(X/6;t|`C.B,f8L2ud*f=}ԞkIx[ˍiŀs{HՎ: rdwFtvA`Ac]pUX^7R`Cs3Q8}&{h\F^yFdE9XQ&
+a(&93C988Q2uo.	C9ByB6\p9OFMl?.C\B|ϯ&#MP}	rftXV>Z輖HD8=|؟]AcӤ[9$+ +8i@_?ÀiNDپv'+`-@쵱I6:Ddh]~q1' oflt+'THx=Վq]se,u@׏h~7:jˀZw%V&mr3)WfHC~nΚBqcͦ{o֡mWJ`'9?RXڂ 4 -_&|tt셈,$YxrY2%'McJ[뮕֪_=﵅94礻X>[o"#iDzU[LP+9C>\4v܏60{=Z>޷jӹd-L64]<M?:C4ZnSՙ<f.xdK0#g>o퇪DIT{bd9J֠fZB]t Nqj(RzO_(\zvʷ0~8_)th	 ѳ38$ 	tׄ_ue!O6	]#cןwn/LuTK=hWs&n1&HD
+]8_og R(d֐*(;ۓ#VZ⫈e=-4.]|9':]u3E2. 6׾I}h2w"-z1,-mR39ua79y|=>DNzYd^>6tN(ːe5
+,qZ_ţ\ z0}cɛ}Sإsщ`aR:=9)_6 u`h
+߼BN%嵉R'Ŵ*yeQw-/!|w/=yt[5.'6zX{86P_p<=e6i/Ыg
+*+Fr<_܄RgGطB$tA3PiRD6۱~׃L)7)"5J{HE4o܁ВTM)/%Ϯ\5í\͡kF*nկ->oOL8ټE56n̟^O3r;1;,a2Ke~7v#uXDO]cL`c$JNӮ=[w*&v6VUSfG?A8432b1q?[ŉ*Z')<*7LlY>:79u@B[sLB6MY}xNݵCbpJ/8d}s؃ZEh~}<-$5fpījsnjq/n2kRĩI&C=xa0Qk"
+u-꿟1g&VkYӧ6H>DNj7N*$m/6ū뫬*8"L*":c@8Y|i|m/2Yx3'tGl׮XʋLn}h<hR<({ U1.̚hMԼ}#vXN}F ClշĐu$]wXb}DI3#I`Cj8除"*^;_IǻqOa탄d/|H!+6޾2ZO Ծa$lUNҽQcEX!a-%%B^7QG_Y溿0Lw'pr*<>Ǧ,B7qU Jf{̬u=fz
+g2RçC&!㶻rbvydyKXY.+uƬ4)+<:XqG	vYXLB8j=x}j[<-G6m{
+i3|;CQ=DP*p$	d&/9ݽqMibYtp<f16<gW0չE_pJ@&,^ᡋ*1k{+W{+hsȿ`ޭS1!tI8hT|pqTlޗfyλriۿkmx.Q_Jl" zx54?׸\$rSAn 6>}Ղ-؋؝UT.zƯ	QO!\7iS}fQVoZ[G(Y59y;22eMWmpgXOTaavÓTΗ f/
+lCy/PlhZ73o,5uEHG[=;UU2tY^NF$Eq:X}]c_2%fsXd,̙7Cx!\3}`a$nzIS(zlj.7)gg<'
+endstream 
+endobj 
+80 0 obj 
+<<
+/Length1 1595
+/Length2 9866
+/Length 11461
+/Length3 0
+>>
+stream
+%!PS-AdobeFont-1.0: CMBX10 003.002
+%%Title: CMBX10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMBX10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMBX10 known{/CMBX10 findfont dup/UniqueID known{dup
+/UniqueID get 5000768 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /RDMIXZ+CMBX10 def
+/FontBBox {-56 -250 1164 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMBX10.) readonly def
+/FullName (CMBX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 66 /B put
+dup 70 /F put
+dup 97 /a put
+dup 56 /eight put
+dup 53 /five put
+dup 52 /four put
+dup 57 /nine put
+dup 111 /o put
+dup 49 /one put
+dup 114 /r put
+dup 55 /seven put
+dup 54 /six put
+dup 51 /three put
+dup 50 /two put
+dup 122 /z put
+readonly def
+currentdict end
+currentfile eexec
+oc;jAw-=%W)-{ru)rAE(@{빴Q|_R
+ϤA	-T@|q|VkJ%qu8PwGxŪ̆Q6K-U\%b"t-*xJ+
+}3{Z2zݬT2s$Z&{BJ{=מ7ڄĒKV"~Pr-=L$wcrlVcN &'{%Gf#ɨ_i#SXd+U*|:1m=⾝~6/aGLf #NOS}ERs{[.-jj|tm\:x8PbPh[_9t237,I2B8J0msUWQdX!??Q4eRH]ӊ.p_?8:o:UuDZ[m^/a4l4ȒtL<~&WwLa9gPqhQΠjv)]sqR"Яǅ#eZKPHrF<EJ;.N~멀VӰqLJ+_jӴ
+tYvK٢e\uLQq<VIAօ9a_'&FD9G#V@vkt.E|zZi;NOK/8"HA7?>"tw;*l5FFBW1S!2*`8:XlUI?[wc	&Z`ѩްsdHeF'*sЁTd9Baऋ[a$g1f\0	7aR^(Lj#!mw2#nr$|TL]{X`4.Gw|P2BgܴwbkFNfj;d?#l"+6g{*,SQ2&'n\`]Q:ݹ6ln0b9m],/ڨ\Y$6[+UE#ƸMO(ϲ.DL\*@z3'&Е62%+(k`D/k(ɒkpt`^Bձ\H~Y_˒c%~(!
+Jvs}9qw{6sΓM	&Q-p'&M&7tZ\r|5M5"*<ΕD,Lfj+ʾɝ"x0h#u[@}"փ
+dIE*	, j]v.tx	kEYl}d.-eJC=KDjnI"yXD|&k>i xbu?ѱ ,VszAcG<cl϶zSCHdL6t\]Xlgʽk]Y)r8'>7H`Ď'Ķ)r
+ҎG֯Z~C
+U.EC3}henħE!C[xxnCq##Ti.iW/i*?K`ɞ}g;ο@>Hmn91-[tj73Myz,?Z@RPBi>vVF\Ahko8*NIQv94z4m n8)Db]ٞ<U(g(`O2zb30-TV{	_H^[elB4N >>=e3Q-'0y#JW 0݈7\t53=μغ|[R>5Irxhhy!kVSȮ7IThaToɁ(WdsUI=]әM|dJ\YRGy4d(N{"l\ ]kȮ8V
+A==r V^*mx(e=\ʰ!Bb8йX֙Mاi
+p)r~1׏<;d,^6f,PpΨ|kR87>ie ^NҢ@h`[BF,L%mUBe*$nox3K V$[[fU;4Qjggo!%Uh(ԝ 2ן, O[Ј_\?Wt<ȅ/;"Rm®)E\rW1ђo y։)B̊\@gJ?m Eqqٔ84^Da97㤸{ɧZ!_`-rlُ*qٺ؊tLCg
+:nbJ	Lqrj5^9NRVJ7en%ϰYƕut4Ƹ<q"WtB\;A]fwyy|H{U~<laM s׹_Ѽ>F΋ėvQj6%c#~Oe҉'aS1e Fus^i"yw,~	C~Rƒ`,j"+ȬKkQ5IjEbT)">wv|$.4*@s?
+ip b\r	9AZ<v+LC仕+8y.xCƟ&U}\IrJg:D? (.5XR`/{9`8FD&L|_.ɬvaS;7U%k;LBB`tk}	E\HR"FX|yu~Qhkv4VӤKWΝ83Y^ؑ-N(}}Փ.Wia҄=w?~̜Z4 N>x;
+~c/Hϫ+%Bm-7S2*Eoq;ջ/6[LoTF>=8$d&#0otu[QEU!\ސswE6W׍Q8	<%xl&
+~Bh=F"2\],ӱ@re(lF*ŊY7ٍ`pS?%i|ˋt| [b<7M=7snѪw24ׅd/bD~[)g43G& /pN%;t:p}wM/ {	Ϭ0.bj!Z@<zyl)" KUmoҙ2 c})z:<ۄF	oŃGLyT7<EqW~CmY=e.d%0>;$^>,Y.Fܔ%Gj,& U&S0Sg\+h8.!ɧ?4}+dC֡;GľZ#AeqE>RL	K@$|DW/PN^Е3*0KƷ)}JMg"$58_gCs2C7,K՞?λ)效41#oIXcP~1 a^46Ӕ)jOa a^oy^&9ߗǫ%<<w=k?j@P|k4Fs}*XKjcp]~8<@3j2%97N$z~^>mLLN9y  a)U)D.? 9f4R2Xw#_RzZu)q{ 3hSߛPDŒx)8%֗Q]<ofЋ~f=qJīD!Z۾KDc(<Xǐ.H3H JP7#R+cUTT()EK^d%"S.KŪ&|7qwG؛$VNlm6q2\I Ϳ"@a3)
+N7J717Kz*E;`o%sR?&%yXWMVٰ}C˝gf&,\<\/۴X?6oG_ހmNl!(ٝRDռ]-Pf)'v4ϫEJV[9m;rr!e;x^N̙鬑j7W#ҒʳǺBVG(i[IWA<@=6?g $TG0NsL5 Lu-6g_v
+LoEƢ~I)K!3Xw LQ{te.c\-AA' 3M|ݲeps^8K1y*g/Ĩ7S <i[jȔcWvK	ۭxXX#Io7Jc:+S( pa"s]&]kSLy_j˘R׶< ̹r/gyK,o5SH#K[&׬c;<dòA'+8@yyQSuXzm3xiK!suВd=rCX?lVWdy5Jk0ShSK)lbs{:I{`& SpYg>9 rf!:wn; @AK	?gNq4 8)ďT	c ݨRSK:k4S};3<ʵ< SU^΋opf"5@A	bq]W*VOMt,Sg__]0-GXz+G|f_r]EGaqۜgm	]Mnv(D/LbdR;G??aJVTy^ۭgm~`Z2Ј|{AJcQRqnd(ۜyoD`TJCHzRaPהxƜC@Mp<[0?e;ZT+R[kgϧa"q^b	*r|::VNBOUzHbaGDH$6$4tLJb
+INIC֜qa.K,ƭ>Cy
+l7'mf&o1:i҅umeNπ@1; BB}Z(P3>f`mwyج]}L0qoJ 4VCBBLx1s_(\2ZZ.
+G?eu83p8Dq,ƾ&[3Mst/ϪT;C;]DDu0դQ[=zʥP*KCUqk .]S`^U{5KoB_VE?ytj8b4qY-s?ddI!dci8cx<Q|_gIPLɈ
+U|$]1tx$nH0fp/hYK{|-ge[Z <"XF6$|X1gnWelRv'3QM*$Lʎav6R92ݬ;)V@mF̼8}9ڞ b kg_I4Ŕ!HƦ}QçyVq'Q*vv2T6=>mL}%+
+5Z!CҤĎNE $Vs
+QOX!ql)	&;=8"־D8	r:dfX}yEduҚ"znZXDGZ pC=  o\珟hLVJ?^x>)S7wՇ2,nԐ5
+Г6rA̺$V-I**Yh[x1y=XP;^{~!ip.$뉰%)>o4tN`Gnz=u]{+0C.Ql8vw{.yRIq:YO( =.
+$L`S7ؗ^Xc E;PR<mƎxVq,d vKpit+`E`^'Si>3eT9XjaѤVTXVW_%ݐL `r<{%y2UbE7 U'0l#E{@ o韝h@h𡑳w,4AVz!uVA-R:_+;~S(Ct 0vkT=iv6f|wnf꩞9i]	h%ݷJ%mrT:nXw4	D&SqnE,,[.[2gn)kC_}!75}Q|4JƏ5j"e"Ri9nG|ˁ b&nC
+Q_	+5II]Z
+o%ӛ{bJ`_.7tM+,<(Y	x?i^cwmH&vH:4Y^OiI+0a,<myuB┅*_5#V.Ekw͗pDU![$Y`MN0@xM6;GԦio{HTo<-G|nF;?d*D<-+#H<Tx37#u..6,<<ħo\C!-bcQ/k.,ǅW'"kvIym`6^ <aUs/N8,+Ȑxf"W
+P@;P?4mZ6:ч_{i LWbz'a5CQ&nv۱dY׳e
+KL'2׀!
+Y#m5oԓ6Vz:(^]ueib1腋_>C
+96PBdʊ,`~;ߗ
+ۛY!d ]5*0uKIHl +hc#P?!5B6RNDu+P9>7k} ߅D<t)hnV,.*ȪB hP3GE46an+dYq(FǬGJFBi씼?		k6}UT_~vpu5SdoqT(B+y@OK[(DI9mwG@`=6ZDvMbo	L9oh<͒0rHnMB.G路rj,3Vj1EP{٭I"HRGKŷUsKjwdZS`NHfYA .r/7s#HET[ /|UAKG8uYVE\3;z6:vjxUpH]$l^'5=U|'߀4hTfqsr-+n [MxhM{0Mfa$"Wb5Ecmaj£]9GԥeghOp:z+iJBDB
+$QGfI{Kӓx<ہ.v]uᵇ8HU-/FMrUH.DLo?`ʝS+b2ZLxZ[d^ :jq"
+ ۸wΝRcJ刊zOو3-GQZ6N`WafEPOh|O(DP6̍&_&IR]@Grv:tڋhOs\>!JGIzzB⁴#Z^Ғд5<(<`zvKЏ w\L,U;w&zua[nvۉZOۅ0mld7Ȯ?kⶒ+Pco%#-v,R\{EݜWZ'3OAS+9WB0lmL}"XߞhhP	YJ,,<5ܻ'71 >󉷔g=<Wͻl_ovet<F*F[DyLYf<U1[kCqSBlnRRi g+?ˉEhEr6Ơ_H^:Mx?g
+4}F2CPWsPq}.ĳ]*{~g]cD@AZsv?>⤷R?ʤ @ î0 c%͉sVpԯnˬB@Šb5
+Uw e|8l&@ѵ/]Ŕ-΁lW/3	T,l҃TXfKdTy5uasl:1)$VP(?Vʇ0H^~s=k^o$ 0"V^̼D?9:鶣D~L]a .PЬ`W|!N Ai/jӨ5h`!$S=p~S3-
+Hgxld壁mjQeޫ)H H g,6َr}Z+!~7ue곟mStݙȥjN2V뗉
+V ۆRx2@GFy#IU,.\ WUiʝ*A5x%m*\: -&/4n\{%Pq{;-{q:5$lLiæ/z;^|3AY&[|9oxuK!~OI[ؼL2ֈa*ɣe
+);5TEZ4Q+g37n3 vw65F|0$AO)pot,;]̦)os	"H{FNBLLy[( @ԙH,օ~tM[fZ˜y?Um*t
+*U)zGHp'_
+	Y,@*`Zzy\Őay~e #ypI3t'Q;~?EB'#2śs<w
+d#m[?ͷP2bf
+ԙL*i=Wmsf2~#^tRͥUWxqWUmmգ7?r\@eS)i_PyʳozDd3vEMx7fpnmIc=F@)|2ZǩgocA6*r맻܉+Y'GWnkvK-4S*>P<{/umW8iPJaCU;kafjAUwt8.֛kRv!
+akװRrSq#]ҁ (O
+endstream 
+endobj 
+81 0 obj 
+<<
+/S /GoTo
+/D (section.6)
+>>
+endobj 
+83 0 obj 
+<<
+/A 86 0 R
+/Next 74 0 R
+/Title 87 0 R
+/Parent 5 0 R
+/Prev 76 0 R
+>>
+endobj 
+82 0 obj ( B a z)
+endobj 
+84 0 obj 
+<<
+/S /GoTo
+/D (section.4)
+>>
+endobj 
+85 0 obj ( F o o)
+endobj 
+86 0 obj 
+<<
+/S /GoTo
+/D (section.5)
+>>
+endobj 
+87 0 obj ( B a r)
+endobj 
+88 0 obj 
+<<
+/Keywords ()
+/Creator (LaTeX with hyperref)
+/ModDate (D:20220714131448-05'00')
+/Trapped /False
+/CreationDate (D:20220406201541+02'00')
+/Subject ()
+/Producer (pdfTeX-1.40.23)
+/PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.23 \(TeX Live 2021\) kpathsea version 6.3.3)
+/Author ()
+/Title ()
+/PXCViewerInfo (PDF-XChange Viewer;2.5.316.0;Jan 11 2016;19:55:07;D:20220714131448-05'00')
+>>
+endobj xref
+0 89
+0000000000 65535 f 
+0000000015 00000 n 
+0000003473 00000 n 
+0000000152 00000 n 
+0000000267 00000 n 
+0000003398 00000 n 
+0000000188 00000 n 
+0000003521 00000 n 
+0000003607 00000 n 
+0000003812 00000 n 
+0000003944 00000 n 
+0000004077 00000 n 
+0000004285 00000 n 
+0000004210 00000 n 
+0000004346 00000 n 
+0000004517 00000 n 
+0000004698 00000 n 
+0000006247 00000 n 
+0000006799 00000 n 
+0000004822 00000 n 
+0000004981 00000 n 
+0000005139 00000 n 
+0000005298 00000 n 
+0000005457 00000 n 
+0000005615 00000 n 
+0000005774 00000 n 
+0000005933 00000 n 
+0000006090 00000 n 
+0000006894 00000 n 
+0000014005 00000 n 
+0000014088 00000 n 
+0000021502 00000 n 
+0000021585 00000 n 
+0000025445 00000 n 
+0000025528 00000 n 
+0000025664 00000 n 
+0000025576 00000 n 
+0000025692 00000 n 
+0000025740 00000 n 
+0000025828 00000 n 
+0000025889 00000 n 
+0000025950 00000 n 
+0000026011 00000 n 
+0000026073 00000 n 
+0000026135 00000 n 
+0000026196 00000 n 
+0000026257 00000 n 
+0000026317 00000 n 
+0000026378 00000 n 
+0000026439 00000 n 
+0000026501 00000 n 
+0000026563 00000 n 
+0000026625 00000 n 
+0000026687 00000 n 
+0000026908 00000 n 
+0000026748 00000 n 
+0000027069 00000 n 
+0000027230 00000 n 
+0000027366 00000 n 
+0000027278 00000 n 
+0000027394 00000 n 
+0000027442 00000 n 
+0000027530 00000 n 
+0000029965 00000 n 
+0000028185 00000 n 
+0000027558 00000 n 
+0000032558 00000 n 
+0000030773 00000 n 
+0000030338 00000 n 
+0000035060 00000 n 
+0000033275 00000 n 
+0000032844 00000 n 
+0000035336 00000 n 
+0000035472 00000 n 
+0000035384 00000 n 
+0000035500 00000 n 
+0000035548 00000 n 
+0000035636 00000 n 
+0000035664 00000 n 
+0000054322 00000 n 
+0000065005 00000 n 
+0000076562 00000 n 
+0000076698 00000 n 
+0000076610 00000 n 
+0000076726 00000 n 
+0000076774 00000 n 
+0000076802 00000 n 
+0000076850 00000 n 
+0000076878 00000 n 
+trailer
+
+<<
+/Info 88 0 R
+/ID [<20c8633a70f8e4e9ccaf7e2d557eb95e> <20c8633a70f8e4e9ccaf7e2d557eb95e>]
+/Root 1 0 R
+/Size 89
+>>
+startxref
+77295
+%%EOF
diff -pruN 2.6.0-1/tests/test_encryption.py 2.8.1-1/tests/test_encryption.py
--- 2.6.0-1/tests/test_encryption.py	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/tests/test_encryption.py	2022-07-25 20:41:21.000000000 +0000
@@ -3,7 +3,9 @@ import os
 import pytest
 
 import PyPDF2
-from PyPDF2.errors import DependencyError
+from PyPDF2 import PdfReader
+from PyPDF2._encryption import CryptRC4
+from PyPDF2.errors import DependencyError, PdfReadError
 
 try:
     from Crypto.Cipher import AES  # noqa: F401
@@ -139,3 +141,23 @@ def test_encryption_merge(names):
         pdf_merger.append(pdf)
     # no need to write to file
     pdf_merger.close()
+
+
+@pytest.mark.parametrize(
+    "cryptcls",
+    [
+        CryptRC4,
+    ],
+)
+def test_encrypt_decrypt_class(cryptcls):
+    message = b"Hello World"
+    key = bytes(0 for _ in range(128))  # b"secret key"
+    crypt = cryptcls(key)
+    assert crypt.decrypt(crypt.encrypt(message)) == message
+
+
+def test_decrypt_not_decrypted_pdf():
+    path = os.path.join(RESOURCE_ROOT, "crazyones.pdf")
+    with pytest.raises(PdfReadError) as exc:
+        PdfReader(path, password="nonexistant")
+    assert exc.value.args[0] == "Not encrypted file"
diff -pruN 2.6.0-1/tests/test_generic.py 2.8.1-1/tests/test_generic.py
--- 2.6.0-1/tests/test_generic.py	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/tests/test_generic.py	2022-07-25 20:41:21.000000000 +0000
@@ -7,10 +7,12 @@ from PyPDF2 import PdfMerger, PdfReader,
 from PyPDF2.constants import TypFitArguments as TF
 from PyPDF2.errors import PdfReadError, PdfReadWarning, PdfStreamError
 from PyPDF2.generic import (
+    AnnotationBuilder,
     ArrayObject,
     Bookmark,
     BooleanObject,
     ByteStringObject,
+    CheckboxRadioButtonAttributes,
     Destination,
     DictionaryObject,
     FloatObject,
@@ -491,3 +493,62 @@ def test_issue_997():
 
     # cleanup
     os.remove(merged_filename)
+
+
+def test_annotation_builder_free_text():
+    # Arrange
+    pdf_path = os.path.join(RESOURCE_ROOT, "crazyones.pdf")
+    reader = PdfReader(pdf_path)
+    page = reader.pages[0]
+    writer = PdfWriter()
+    writer.add_page(page)
+
+    # Act
+    annotation = AnnotationBuilder.free_text(
+        "Hello World\nThis is the second line!",
+        rect=(50, 550, 200, 650),
+        font="Arial",
+        bold=True,
+        italic=True,
+        font_size="20pt",
+        font_color="00ff00",
+        border_color="0000ff",
+        background_color="cdcdcd",
+    )
+    writer.add_annotation(0, annotation)
+
+    # Assert: You need to inspect the file manually
+    target = "annotated-pdf.pd"
+    with open(target, "wb") as fp:
+        writer.write(fp)
+
+    os.remove(target)  # comment this out for manual inspection
+
+
+def test_annotation_builder_line():
+    # Arrange
+    pdf_path = os.path.join(RESOURCE_ROOT, "crazyones.pdf")
+    reader = PdfReader(pdf_path)
+    page = reader.pages[0]
+    writer = PdfWriter()
+    writer.add_page(page)
+
+    # Act
+    annotation = AnnotationBuilder.line(
+        text="Hello World\nLine2",
+        rect=(50, 550, 200, 650),
+        p1=(50, 550),
+        p2=(200, 650),
+    )
+    writer.add_annotation(0, annotation)
+
+    # Assert: You need to inspect the file manually
+    target = "annotated-pdf.pd"
+    with open(target, "wb") as fp:
+        writer.write(fp)
+
+    os.remove(target)  # comment this out for manual inspection
+
+
+def test_CheckboxRadioButtonAttributes_opt():
+    assert "/Opt" in CheckboxRadioButtonAttributes.attributes_dict()
diff -pruN 2.6.0-1/tests/test_merger.py 2.8.1-1/tests/test_merger.py
--- 2.6.0-1/tests/test_merger.py	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/tests/test_merger.py	2022-07-25 20:41:21.000000000 +0000
@@ -288,3 +288,11 @@ def test_sweep_indirect_list_newobj_is_N
 
     # cleanup
     os.remove("tmp-merger-do-not-commit.pdf")
+
+
+def test_iss1145():
+    # issue with FitH destination with null param
+    url = "https://github.com/py-pdf/PyPDF2/files/9164743/file-0.pdf"
+    name = "iss1145.pdf"
+    merger = PdfMerger()
+    merger.append(PdfReader(BytesIO(get_pdf_from_url(url, name=name))))
diff -pruN 2.6.0-1/tests/test_page.py 2.8.1-1/tests/test_page.py
--- 2.6.0-1/tests/test_page.py	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/tests/test_page.py	2022-07-25 20:41:21.000000000 +0000
@@ -6,11 +6,19 @@ from pathlib import Path
 
 import pytest
 
-from PyPDF2 import PdfReader, Transformation
+from PyPDF2 import PdfReader, PdfWriter, Transformation
 from PyPDF2._page import PageObject
 from PyPDF2.constants import PageAttributes as PG
 from PyPDF2.errors import PdfReadWarning
-from PyPDF2.generic import DictionaryObject, NameObject, RectangleObject
+from PyPDF2.generic import (
+    ArrayObject,
+    DictionaryObject,
+    FloatObject,
+    IndirectObject,
+    NameObject,
+    RectangleObject,
+    TextStringObject,
+)
 
 from . import get_pdf_from_url
 
@@ -243,6 +251,11 @@ def test_extract_text_single_quote_op():
             "https://corpora.tika.apache.org/base/docs/govdocs1/932/932446.pdf",
             "tika-932446.pdf",
         ),
+        # iss 1134:
+        (
+            "https://github.com/py-pdf/PyPDF2/files/9150656/ST.2019.PDF",
+            "iss_1134.pdf",
+        ),
     ],
 )
 def test_extract_text_page_pdf(url, name):
@@ -325,6 +338,106 @@ def test_get_fonts(pdf_path, password, e
     assert (a, b) == (embedded, unembedded)
 
 
+def test_annotation_getter():
+    pdf_path = os.path.join(RESOURCE_ROOT, "commented.pdf")
+    reader = PdfReader(pdf_path)
+    annotations = reader.pages[0].annotations
+    assert annotations is not None
+    assert isinstance(annotations[0], IndirectObject)
+
+    annot_dict = dict(annotations[0].get_object())
+    assert "/P" in annot_dict
+    assert isinstance(annot_dict["/P"], IndirectObject)
+    del annot_dict["/P"]
+
+    annot_dict["/Popup"] = annot_dict["/Popup"].get_object()
+    del annot_dict["/Popup"]["/P"]
+    del annot_dict["/Popup"]["/Parent"]
+    assert annot_dict == {
+        "/Type": "/Annot",
+        "/Subtype": "/Text",
+        "/Rect": ArrayObject(
+            [
+                270.75,
+                596.25,
+                294.75,
+                620.25,
+            ]
+        ),
+        "/Contents": "Note in second paragraph",
+        "/C": ArrayObject([1, 1, 0]),
+        "/M": "D:20220406191858+02'00",
+        "/Popup": DictionaryObject(
+            {
+                "/M": "D:20220406191847+02'00",
+                "/Rect": ArrayObject([294.75, 446.25, 494.75, 596.25]),
+                "/Subtype": "/Popup",
+                "/Type": "/Annot",
+            }
+        ),
+        "/T": "moose",
+    }
+
+
+def test_annotation_setter():
+    # Arange
+    pdf_path = os.path.join(RESOURCE_ROOT, "crazyones.pdf")
+    reader = PdfReader(pdf_path)
+    page = reader.pages[0]
+    writer = PdfWriter()
+    writer.add_page(page)
+
+    # Act
+    page_number = 0
+    page_link = writer.get_object(writer._pages)["/Kids"][page_number]
+    annot_dict = {
+        NameObject("/P"): page_link,
+        NameObject("/Type"): NameObject("/Annot"),
+        NameObject("/Subtype"): NameObject("/Text"),
+        NameObject("/Rect"): ArrayObject(
+            [
+                FloatObject(270.75),
+                FloatObject(596.25),
+                FloatObject(294.75),
+                FloatObject(620.25),
+            ]
+        ),
+        NameObject("/Contents"): TextStringObject("Note in second paragraph"),
+        NameObject("/C"): ArrayObject([FloatObject(1), FloatObject(1), FloatObject(0)]),
+        NameObject("/M"): TextStringObject("D:20220406191858+02'00"),
+        NameObject("/Popup"): DictionaryObject(
+            {
+                NameObject("/M"): TextStringObject("D:20220406191847+02'00"),
+                NameObject("/Rect"): ArrayObject(
+                    [
+                        FloatObject(294.75),
+                        FloatObject(446.25),
+                        FloatObject(494.75),
+                        FloatObject(596.25),
+                    ]
+                ),
+                NameObject("/Subtype"): NameObject("/Popup"),
+                NameObject("/Type"): TextStringObject("/Annot"),
+            }
+        ),
+        NameObject("/T"): TextStringObject("moose"),
+    }
+    arr = ArrayObject()
+    page.annotations = arr
+
+    d = DictionaryObject(annot_dict)
+    ind_obj = writer._add_object(d)
+    arr.append(ind_obj)
+
+    # Assert manually
+    target = "annot-out.pdf"
+    with open(target, "wb") as fp:
+        writer.write(fp)
+
+    # Cleanup
+    os.remove(target)  # remove for testing
+
+
 @pytest.mark.xfail(reason="#1091")
 def test_text_extraction_issue_1091():
     url = "https://corpora.tika.apache.org/base/docs/govdocs1/966/966635.pdf"
@@ -336,7 +449,6 @@ def test_text_extraction_issue_1091():
         page.extract_text()
 
 
-@pytest.mark.xfail(reason="#1088")
 def test_empyt_password_1088():
     url = "https://corpora.tika.apache.org/base/docs/govdocs1/941/941536.pdf"
     name = "tika-941536.pdf"
diff -pruN 2.6.0-1/tests/test_reader.py 2.8.1-1/tests/test_reader.py
--- 2.6.0-1/tests/test_reader.py	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/tests/test_reader.py	2022-07-25 20:41:21.000000000 +0000
@@ -6,16 +6,12 @@ from pathlib import Path
 
 import pytest
 
-from PyPDF2 import PdfMerger, PdfReader
+from PyPDF2 import PdfReader
 from PyPDF2._reader import convert_to_int, convertToInt
 from PyPDF2.constants import ImageAttributes as IA
 from PyPDF2.constants import PageAttributes as PG
 from PyPDF2.constants import Ressources as RES
-from PyPDF2.errors import (
-    STREAM_TRUNCATED_PREMATURELY,
-    PdfReadError,
-    PdfReadWarning,
-)
+from PyPDF2.errors import PdfReadError, PdfReadWarning
 from PyPDF2.filters import _xobj_to_image
 from PyPDF2.generic import Destination
 
@@ -238,7 +234,7 @@ def test_get_images_raw(strict, with_pre
         pdf_data.find(b"4 0 obj"),
         pdf_data.find(b"5 0 obj"),
         b"/Prev 0 " if with_prev_0 else b"",
-        # startx_correction should be -1 due to double % at the beginning indiducing an error on startxref computation
+        # startx_correction should be -1 due to double % at the beginning inducing an error on startxref computation
         pdf_data.find(b"xref") + startx_correction,
     )
     pdf_stream = io.BytesIO(pdf_data)
@@ -396,7 +392,9 @@ def test_read_malformed_header():
 def test_read_malformed_body():
     with pytest.raises(PdfReadError) as exc:
         PdfReader(io.BytesIO(b"%PDF-"), strict=True)
-    assert exc.value.args[0] == STREAM_TRUNCATED_PREMATURELY
+    assert (
+        exc.value.args[0] == "EOF marker not found"
+    )  # used to be:STREAM_TRUNCATED_PREMATURELY
 
 
 def test_read_prev_0_trailer():
@@ -770,12 +768,12 @@ def test_get_fields():
     assert dict(fields["c1-1"]) == ({"/FT": "/Btn", "/T": "c1-1"})
 
 
+# covers also issue 1089
+@pytest.mark.filterwarnings("ignore::PyPDF2.errors.PdfReadWarning")
 def test_get_fields_read_else_block():
     url = "https://corpora.tika.apache.org/base/docs/govdocs1/934/934771.pdf"
     name = "tika-934771.pdf"
-    with pytest.raises(PdfReadError) as exc:
-        PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
-    assert exc.value.args[0] == "Could not find xref table at specified location"
+    PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
 
 
 def test_get_fields_read_else_block2():
@@ -786,12 +784,11 @@ def test_get_fields_read_else_block2():
     assert fields is None
 
 
+@pytest.mark.filterwarnings("ignore::PyPDF2.errors.PdfReadWarning")
 def test_get_fields_read_else_block3():
     url = "https://corpora.tika.apache.org/base/docs/govdocs1/957/957721.pdf"
     name = "tika-957721.pdf"
-    with pytest.raises(PdfReadError) as exc:
-        PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
-    assert exc.value.args[0] == "Could not find xref table at specified location"
+    PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
 
 
 def test_metadata_is_none():
@@ -813,16 +810,6 @@ def test_get_fields_read_write_report():
     os.remove("tmp-fields-report.txt")
 
 
-def test_unexpected_destination():
-    url = "https://corpora.tika.apache.org/base/docs/govdocs1/913/913678.pdf"
-    name = "tika-913678.pdf"
-    reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
-    merger = PdfMerger()
-    with pytest.raises(PdfReadError) as exc:
-        merger.append(reader)
-    assert exc.value.args[0] == "Unexpected destination '/1'"
-
-
 @pytest.mark.parametrize(
     "src",
     [
@@ -876,23 +863,23 @@ def test_outline_font_format():
     assert reader.outlines[0].font_format == 2
 
 
+def get_outlines_property(outlines, attribute_name: str):
+    results = []
+    if isinstance(outlines, list):
+        for outline in outlines:
+            if isinstance(outline, Destination):
+                results.append(getattr(outline, attribute_name))
+            else:
+                results.append(get_outlines_property(outline, attribute_name))
+    else:
+        raise ValueError(f"got {type(outlines)}")
+    return results
+
+
 def test_outline_title_issue_1121():
     reader = PdfReader(EXTERNAL_ROOT / "014-outlines/mistitled_outlines_example.pdf")
 
-    def get_titles_only(outlines, results=None):
-        if results is None:
-            results = []
-        if isinstance(outlines, list):
-            for outline in outlines:
-                if isinstance(outline, Destination):
-                    results.append(outline.title)
-                else:
-                    results.append(get_titles_only(outline))
-        else:
-            raise ValueError(f"got {type(outlines)}")
-        return results
-
-    assert get_titles_only(reader.outlines) == [
+    assert get_outlines_property(reader.outlines, "title") == [
         "First",
         [
             "Second",
@@ -933,3 +920,93 @@ def test_outline_title_issue_1121():
             "Twenty-seventh",
         ],
     ]
+
+
+def test_outline_count():
+    reader = PdfReader(EXTERNAL_ROOT / "014-outlines/mistitled_outlines_example.pdf")
+
+    assert get_outlines_property(reader.outlines, "outline_count") == [
+        5,
+        [
+            None,
+            None,
+            2,
+            [
+                None,
+                None,
+            ],
+            -2,
+            [
+                None,
+                None,
+            ],
+        ],
+        4,
+        [
+            None,
+            None,
+            None,
+            None,
+        ],
+        -2,
+        [
+            None,
+            None,
+        ],
+        None,
+        8,
+        [
+            None,
+            None,
+            None,
+            None,
+            None,
+            None,
+            None,
+            None,
+        ],
+    ]
+
+
+def test_outline_missing_title():
+    reader = PdfReader(
+        os.path.join(RESOURCE_ROOT, "outline-without-title.pdf"), strict=True
+    )
+    with pytest.raises(PdfReadError) as exc:
+        reader.outlines
+    assert exc.value.args[0].startswith("Outline Entry Missing /Title attribute:")
+
+
+def test_outline_with_missing_named_destination():
+    url = "https://corpora.tika.apache.org/base/docs/govdocs1/913/913678.pdf"
+    name = "tika-913678.pdf"
+    reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
+    # outline items in document reference a named destination that is not defined
+    assert reader.outlines[1][0].title.startswith("Report for 2002AZ3B: Microbial")
+
+
+def test_outline_with_empty_action():
+    url = "https://corpora.tika.apache.org/base/docs/govdocs1/924/924546.pdf"
+    name = "tika-924546.pdf"
+    reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
+    # outline (entitled Tables and Figures) utilize an empty action (/A)
+    # that has no type or destination
+    assert reader.outlines[-4].title == "Tables"
+
+
+def test_outlines_with_invalid_destinations():
+    reader = PdfReader(
+        os.path.join(RESOURCE_ROOT, "outlines-with-invalid-destinations.pdf")
+    )
+    # contains 9 outlines, 6 with invalid destinations caused by different malformations
+    assert len(reader.outlines) == 9
+
+
+def test_PdfReaderMultipleDefinitions():
+    # iss325
+    url = "https://github.com/py-pdf/PyPDF2/files/9176644/multipledefs.pdf"
+    name = "multipledefs.pdf"
+    reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
+    with pytest.warns(PdfReadWarning) as w:
+        reader.pages[0].extract_text()
+    assert len(w) == 1
diff -pruN 2.6.0-1/tests/test_workflows.py 2.8.1-1/tests/test_workflows.py
--- 2.6.0-1/tests/test_workflows.py	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/tests/test_workflows.py	2022-07-25 20:41:21.000000000 +0000
@@ -22,6 +22,13 @@ RESOURCE_ROOT = os.path.join(PROJECT_ROO
 sys.path.append(PROJECT_ROOT)
 
 
+def test_dropdown_items():
+    inputfile = os.path.join(RESOURCE_ROOT, "libreoffice-form.pdf")
+    reader = PdfReader(inputfile)
+    fields = reader.get_fields()
+    assert "/Opt" in fields["Nationality"].keys()
+
+
 def test_PdfReaderFileLoad():
     """
     Test loading and parsing of a file. Extract text of the file and compare to expected
@@ -142,6 +149,14 @@ def test_rotate_45():
         (True, "https://arxiv.org/pdf/2201.00200.pdf", [0, 1, 5, 6]),
         (True, "https://arxiv.org/pdf/2201.00022.pdf", [0, 1, 5, 10]),
         (True, "https://arxiv.org/pdf/2201.00029.pdf", [0, 1, 6, 10]),
+        # #1145
+        (True, "https://github.com/py-pdf/PyPDF2/files/9174594/2017.pdf", [0]),
+        # #1145, remaining issue (empty arguments for FlateEncoding)
+        (
+            True,
+            "https://github.com/py-pdf/PyPDF2/files/9175966/2015._pb_decode_pg0.pdf",
+            [0],
+        ),
         # 6 instead of 5: as there is an issue in page 5 (missing objects)
         # and too complex to handle the warning without hiding real regressions
         (True, "https://arxiv.org/pdf/1601.03642.pdf", [0, 1, 5, 7]),
@@ -290,7 +305,11 @@ def test_get_metadata(url, name):
         (
             "https://corpora.tika.apache.org/base/docs/govdocs1/938/938702.pdf",
             "tika-938702.pdf",
-        )
+        ),
+        (
+            "https://corpora.tika.apache.org/base/docs/govdocs1/942/942358.pdf",
+            "tika-942358.pdf",
+        ),
     ],
 )
 def test_extract_text(url, name):
@@ -319,9 +338,16 @@ def test_compress(url, name):
     assert exc.value.args[0] == "Unexpected end of stream"
 
 
-def test_get_fields():
-    url = "https://corpora.tika.apache.org/base/docs/govdocs1/961/961883.pdf"
-    name = "tika-961883.pdf"
+@pytest.mark.parametrize(
+    ("url", "name"),
+    [
+        (
+            "https://corpora.tika.apache.org/base/docs/govdocs1/961/961883.pdf",
+            "tika-961883.pdf",
+        ),
+    ],
+)
+def test_get_fields_warns(url, name):
     data = BytesIO(get_pdf_from_url(url, name=name))
     reader = PdfReader(data)
     with open("tmp.txt", "w") as fp:
@@ -334,6 +360,27 @@ def test_get_fields():
     os.remove("tmp.txt")
 
 
+@pytest.mark.parametrize(
+    ("url", "name"),
+    [
+        (
+            "https://corpora.tika.apache.org/base/docs/govdocs1/942/942050.pdf",
+            "tika-942050.pdf",
+        ),
+    ],
+)
+def test_get_fields_no_warning(url, name):
+    data = BytesIO(get_pdf_from_url(url, name=name))
+    reader = PdfReader(data)
+    with open("tmp.txt", "w") as fp:
+        retrieved_fields = reader.get_fields(fileobj=fp)
+
+    assert len(retrieved_fields) == 10
+
+    # Cleanup
+    os.remove("tmp.txt")
+
+
 def test_scale_rectangle_indirect_object():
     url = "https://corpora.tika.apache.org/base/docs/govdocs1/999/999944.pdf"
     name = "tika-999944.pdf"
@@ -402,6 +449,22 @@ def test_merge_output():
             "https://corpora.tika.apache.org/base/docs/govdocs1/959/959184.pdf",
             "tika-959184.pdf",
         ),
+        (
+            "https://corpora.tika.apache.org/base/docs/govdocs1/958/958496.pdf",
+            "tika-958496.pdf",
+        ),
+        (
+            "https://corpora.tika.apache.org/base/docs/govdocs1/972/972174.pdf",
+            "tika-972174.pdf",
+        ),
+        (
+            "https://corpora.tika.apache.org/base/docs/govdocs1/972/972243.pdf",
+            "tika-972243.pdf",
+        ),
+        (
+            "https://corpora.tika.apache.org/base/docs/govdocs1/969/969502.pdf",
+            "tika-969502.pdf",
+        ),
     ],
 )
 def test_image_extraction(url, name):
@@ -432,3 +495,96 @@ def test_image_extraction(url, name):
         for filepath in images_extracted:
             if os.path.exists(filepath):
                 os.remove(filepath)
+
+
+@pytest.mark.parametrize(
+    ("url", "name"),
+    [
+        (
+            "https://corpora.tika.apache.org/base/docs/govdocs1/977/977609.pdf",
+            "tika-977609.pdf",
+        ),
+    ],
+)
+def test_image_extraction2(url, name):
+    data = BytesIO(get_pdf_from_url(url, name=name))
+    reader = PdfReader(data)
+
+    images_extracted = []
+    root = Path("extracted-images")
+    if not root.exists():
+        os.mkdir(root)
+
+    for page in reader.pages:
+        if RES.XOBJECT in page[PG.RESOURCES]:
+            x_object = page[PG.RESOURCES][RES.XOBJECT].get_object()
+
+            for obj in x_object:
+                if x_object[obj][IA.SUBTYPE] == "/Image":
+                    extension, byte_stream = _xobj_to_image(x_object[obj])
+                    if extension is not None:
+                        filename = root / (obj[1:] + extension)
+                        with open(filename, "wb") as img:
+                            img.write(byte_stream)
+                        images_extracted.append(filename)
+
+    # Cleanup
+    do_cleanup = True  # set this to False for manual inspection
+    if do_cleanup:
+        for filepath in images_extracted:
+            if os.path.exists(filepath):
+                os.remove(filepath)
+
+
+@pytest.mark.parametrize(
+    ("url", "name"),
+    [
+        (
+            "https://corpora.tika.apache.org/base/docs/govdocs1/918/918137.pdf",
+            "tika-918137.pdf",
+        ),
+    ],
+)
+def test_get_outline(url, name):
+    data = BytesIO(get_pdf_from_url(url, name=name))
+    reader = PdfReader(data)
+    reader.outlines
+
+
+@pytest.mark.parametrize(
+    ("url", "name"),
+    [
+        (
+            "https://corpora.tika.apache.org/base/docs/govdocs1/935/935981.pdf",
+            "tika-935981.pdf",
+        ),
+        (
+            "https://corpora.tika.apache.org/base/docs/govdocs1/937/937334.pdf",
+            "tika-937334.pdf",
+        ),
+    ],
+)
+def test_get_xfa(url, name):
+    data = BytesIO(get_pdf_from_url(url, name=name))
+    reader = PdfReader(data)
+    reader.xfa
+
+
+@pytest.mark.parametrize(
+    ("url", "name"),
+    [
+        (
+            "https://corpora.tika.apache.org/base/docs/govdocs1/988/988698.pdf",
+            "tika-988698.pdf",
+        ),
+        (
+            "https://corpora.tika.apache.org/base/docs/govdocs1/914/914133.pdf",
+            "tika-988698.pdf",
+        ),
+    ],
+)
+def test_get_fonts(url, name):
+    data = BytesIO(get_pdf_from_url(url, name=name))
+    reader = PdfReader(data)
+    for page in reader.pages:
+        page._get_fonts()
diff -pruN 2.6.0-1/tests/test_writer.py 2.8.1-1/tests/test_writer.py
--- 2.6.0-1/tests/test_writer.py	2022-07-17 19:17:03.000000000 +0000
+++ 2.8.1-1/tests/test_writer.py	2022-07-25 20:41:21.000000000 +0000
@@ -203,7 +203,7 @@ def test_remove_text_all_operators(ignor
         pdf_data.find(b"4 0 obj") + startx_correction,
         pdf_data.find(b"5 0 obj") + startx_correction,
         pdf_data.find(b"6 0 obj") + startx_correction,
-        # startx_correction should be -1 due to double % at the beginning indiducing an error on startxref computation
+        # startx_correction should be -1 due to double % at the beginning inducing an error on startxref computation
         pdf_data.find(b"xref"),
     )
     print(pdf_data.decode())
@@ -529,7 +529,7 @@ def test_write_dict_stream_object():
         b"(The single quote operator) ' "
         b"ET"
     )
-    from PyPDF2.generic import NameObject, IndirectObject
+    from PyPDF2.generic import IndirectObject, NameObject
 
     stream_object = StreamObject()
     stream_object[NameObject("/Type")] = NameObject("/Text")
@@ -570,3 +570,35 @@ def test_write_dict_stream_object():
         assert k in objects_hash, "Missing %s" % v
 
     os.remove("tmp-writer-do-not-commit.pdf")
+
+
+def test_add_single_annotation():
+    pdf_path = os.path.join(RESOURCE_ROOT, "crazyones.pdf")
+    reader = PdfReader(pdf_path)
+    page = reader.pages[0]
+    writer = PdfWriter()
+    writer.add_page(page)
+
+    annot_dict = {
+        "/Type": "/Annot",
+        "/Subtype": "/Text",
+        "/Rect": [270.75, 596.25, 294.75, 620.25],
+        "/Contents": "Note in second paragraph",
+        "/C": [1, 1, 0],
+        "/M": "D:20220406191858+02'00",
+        "/Popup": {
+            "/Type": "/Annot",
+            "/Subtype": "/Popup",
+            "/Rect": [294.75, 446.25, 494.75, 596.25],
+            "/M": "D:20220406191847+02'00",
+        },
+        "/T": "moose",
+    }
+    writer.add_annotation(0, annot_dict)
+    # Assert manually
+    target = "annot-single-out.pdf"
+    with open(target, "wb") as fp:
+        writer.write(fp)
+
+    # Cleanup
+    os.remove(target)  # remove for testing
