From 5d9239a1edede8693c69119e282017d965d2c326 Mon Sep 17 00:00:00 2001 From: Yury Melnichek Date: Sat, 5 Mar 2011 23:12:21 +0100 Subject: [PATCH] Add sloynik to omim!! Yea! --- 3party_sloynik/3party_sloynik.pro | 7 + 3party_sloynik/bzip2/CHANGES | 319 + 3party_sloynik/bzip2/LICENSE | 42 + 3party_sloynik/bzip2/Makefile-libbz2_so | 59 + 3party_sloynik/bzip2/README | 210 + .../bzip2/README.COMPILATION.PROBLEMS | 58 + 3party_sloynik/bzip2/README.XML.STUFF | 45 + 3party_sloynik/bzip2/blocksort.c | 1094 + 3party_sloynik/bzip2/blocksort.o | Bin 0 -> 22928 bytes 3party_sloynik/bzip2/bz-common.xsl | 39 + 3party_sloynik/bzip2/bz-fo.xsl | 276 + 3party_sloynik/bzip2/bz-html.xsl | 20 + 3party_sloynik/bzip2/bzdiff | 76 + 3party_sloynik/bzip2/bzdiff.1 | 47 + 3party_sloynik/bzip2/bzgrep | 75 + 3party_sloynik/bzip2/bzgrep.1 | 56 + 3party_sloynik/bzip2/bzip.css | 74 + 3party_sloynik/bzip2/bzip2.1 | 454 + 3party_sloynik/bzip2/bzip2.1.preformatted | 399 + 3party_sloynik/bzip2/bzip2.c | 2034 + 3party_sloynik/bzip2/bzip2.pro | 18 + 3party_sloynik/bzip2/bzip2.txt | 391 + 3party_sloynik/bzip2/bzip2recover.c | 514 + 3party_sloynik/bzip2/bzlib.c | 1576 + 3party_sloynik/bzip2/bzlib.h | 282 + 3party_sloynik/bzip2/bzlib.o | Bin 0 -> 41732 bytes 3party_sloynik/bzip2/bzlib_private.h | 509 + 3party_sloynik/bzip2/bzmore | 61 + 3party_sloynik/bzip2/bzmore.1 | 152 + 3party_sloynik/bzip2/compress.c | 672 + 3party_sloynik/bzip2/compress.o | Bin 0 -> 29968 bytes 3party_sloynik/bzip2/crctable.c | 104 + 3party_sloynik/bzip2/crctable.o | Bin 0 -> 4156 bytes 3party_sloynik/bzip2/decompress.c | 626 + 3party_sloynik/bzip2/decompress.o | Bin 0 -> 29720 bytes 3party_sloynik/bzip2/dlltest.c | 175 + 3party_sloynik/bzip2/dlltest.dsp | 93 + 3party_sloynik/bzip2/entities.xml | 9 + 3party_sloynik/bzip2/format.pl | 68 + 3party_sloynik/bzip2/huffman.c | 205 + 3party_sloynik/bzip2/huffman.o | Bin 0 -> 6492 bytes 3party_sloynik/bzip2/impure.c | 18 + 3party_sloynik/bzip2/libbz2.def | 27 + 3party_sloynik/bzip2/libbz2.dsp | 130 + 3party_sloynik/bzip2/makefile.msc | 63 + 3party_sloynik/bzip2/manual.html | 2540 + 3party_sloynik/bzip2/manual.pdf | Bin 0 -> 288137 bytes 3party_sloynik/bzip2/manual.ps | 82900 ++++++++++++++++ 3party_sloynik/bzip2/manual.xml | 2964 + 3party_sloynik/bzip2/mk251.c | 31 + 3party_sloynik/bzip2/randtable.c | 84 + 3party_sloynik/bzip2/randtable.o | Bin 0 -> 5172 bytes 3party_sloynik/bzip2/sample1.bz2 | Bin 0 -> 32348 bytes 3party_sloynik/bzip2/sample1.ref | Bin 0 -> 98696 bytes 3party_sloynik/bzip2/sample2.bz2 | Bin 0 -> 73732 bytes 3party_sloynik/bzip2/sample2.ref | Bin 0 -> 212340 bytes 3party_sloynik/bzip2/sample3.bz2 | Bin 0 -> 235 bytes 3party_sloynik/bzip2/sample3.ref | 30007 ++++++ 3party_sloynik/bzip2/spewG.c | 54 + 3party_sloynik/bzip2/unzcrash.c | 141 + 3party_sloynik/bzip2/words0 | 9 + 3party_sloynik/bzip2/words1 | 4 + 3party_sloynik/bzip2/words2 | 5 + 3party_sloynik/bzip2/words3 | 30 + 3party_sloynik/bzip2/xmlproc.sh | 114 + 3party_sloynik/jansson/CHANGES | 198 + 3party_sloynik/jansson/LICENSE | 19 + 3party_sloynik/jansson/README.rst | 59 + 3party_sloynik/jansson/jansson.pro | 22 + 3party_sloynik/jansson/myjansson.hpp | 69 + 3party_sloynik/jansson/src/config.h | 45 + 3party_sloynik/jansson/src/dump.c | 460 + 3party_sloynik/jansson/src/hashtable.c | 375 + 3party_sloynik/jansson/src/hashtable.h | 207 + 3party_sloynik/jansson/src/jansson.h | 191 + 3party_sloynik/jansson/src/jansson_private.h | 60 + 3party_sloynik/jansson/src/load.c | 879 + 3party_sloynik/jansson/src/strbuffer.c | 95 + 3party_sloynik/jansson/src/strbuffer.h | 31 + 3party_sloynik/jansson/src/utf.c | 190 + 3party_sloynik/jansson/src/utf.h | 28 + 3party_sloynik/jansson/src/util.h | 13 + 3party_sloynik/jansson/src/value.c | 976 + 3party_sloynik/protobuf/CHANGES.txt | 388 + 3party_sloynik/protobuf/CONTRIBUTORS.txt | 84 + 3party_sloynik/protobuf/COPYING.txt | 33 + 3party_sloynik/protobuf/INSTALL.txt | 237 + 3party_sloynik/protobuf/README.txt | 152 + 3party_sloynik/protobuf/config.h | 148 + 3party_sloynik/protobuf/protobuf.pro | 49 + .../src/google/protobuf/extension_set.cc | 1452 + .../src/google/protobuf/extension_set.h | 902 + .../google/protobuf/generated_message_util.cc | 53 + .../google/protobuf/generated_message_util.h | 77 + .../src/google/protobuf/io/coded_stream.cc | 830 + .../src/google/protobuf/io/coded_stream.h | 1091 + .../src/google/protobuf/io/coded_stream_inl.h | 64 + .../google/protobuf/io/zero_copy_stream.cc | 48 + .../src/google/protobuf/io/zero_copy_stream.h | 238 + .../protobuf/io/zero_copy_stream_impl_lite.cc | 393 + .../protobuf/io/zero_copy_stream_impl_lite.h | 340 + .../src/google/protobuf/message_lite.cc | 334 + .../src/google/protobuf/message_lite.h | 239 + .../src/google/protobuf/repeated_field.cc | 95 + .../src/google/protobuf/repeated_field.h | 1248 + .../src/google/protobuf/stubs/common.cc | 366 + .../src/google/protobuf/stubs/common.h | 1155 + .../src/google/protobuf/stubs/hash.cc | 41 + .../protobuf/src/google/protobuf/stubs/hash.h | 220 + .../src/google/protobuf/stubs/map-util.h | 119 + .../src/google/protobuf/stubs/once.cc | 88 + .../protobuf/src/google/protobuf/stubs/once.h | 123 + .../src/google/protobuf/stubs/stl_util-inl.h | 121 + .../src/google/protobuf/wire_format_lite.cc | 359 + .../src/google/protobuf/wire_format_lite.h | 620 + .../google/protobuf/wire_format_lite_inl.h | 747 + 3party_sloynik/zlib/adler32.c | 169 + 3party_sloynik/zlib/compress.c | 80 + 3party_sloynik/zlib/crc32.c | 442 + 3party_sloynik/zlib/crc32.h | 441 + 3party_sloynik/zlib/deflate.c | 1834 + 3party_sloynik/zlib/deflate.h | 342 + 3party_sloynik/zlib/example.c | 565 + 3party_sloynik/zlib/gzclose.c | 25 + 3party_sloynik/zlib/gzguts.h | 132 + 3party_sloynik/zlib/gzlib.c | 537 + 3party_sloynik/zlib/gzread.c | 653 + 3party_sloynik/zlib/gzwrite.c | 531 + 3party_sloynik/zlib/infback.c | 632 + 3party_sloynik/zlib/inffast.c | 340 + 3party_sloynik/zlib/inffast.h | 11 + 3party_sloynik/zlib/inffixed.h | 94 + 3party_sloynik/zlib/inflate.c | 1480 + 3party_sloynik/zlib/inflate.h | 122 + 3party_sloynik/zlib/inftrees.c | 330 + 3party_sloynik/zlib/inftrees.h | 62 + 3party_sloynik/zlib/trees.c | 1244 + 3party_sloynik/zlib/trees.h | 128 + 3party_sloynik/zlib/uncompr.c | 59 + 3party_sloynik/zlib/zconf.h | 428 + 3party_sloynik/zlib/zlib.h | 1613 + 3party_sloynik/zlib/zlib.pro | 38 + 3party_sloynik/zlib/zutil.c | 318 + 3party_sloynik/zlib/zutil.h | 274 + bada_sloynik/Sloynik/.badaprj | 17 + bada_sloynik/Sloynik/.cproject | 1516 + bada_sloynik/Sloynik/.project | 110 + bada_sloynik/Sloynik/Home/index.dup.idx | Bin 0 -> 4 bytes bada_sloynik/Sloynik/Home/index.stamp.idx | Bin 0 -> 24 bytes bada_sloynik/Sloynik/Home/index.uni.idx | Bin 0 -> 547880 bytes bada_sloynik/Sloynik/Home/wordnet.slf | Bin 0 -> 10255193 bytes bada_sloynik/Sloynik/Icons/Sloynik.png | Bin 0 -> 15642 bytes .../Sloynik/Res/480x800/IDF_SEARCHFORM.xml | 30 + bada_sloynik/Sloynik/Res/eng-GB.xml | 5 + bada_sloynik/Sloynik/application.xml | 20 + bada_sloynik/Sloynik/inc/ArticleForm.h | 39 + bada_sloynik/Sloynik/inc/SearchForm.h | 64 + bada_sloynik/Sloynik/inc/Sloynik.h | 60 + bada_sloynik/Sloynik/manifest.xml | 29 + bada_sloynik/Sloynik/src/ArticleForm.cpp | 53 + bada_sloynik/Sloynik/src/SearchForm.cpp | 240 + bada_sloynik/Sloynik/src/Sloynik.cpp | 116 + bada_sloynik/Sloynik/src/SloynikEntry.cpp | 45 + .../Sloynik_Simulator-Debug.zip | Bin 0 -> 9841786 bytes bugs_sloynik.txt | 2 + coding_sloynik/bzip2_compressor.cpp | 41 + coding_sloynik/bzip2_compressor.hpp | 17 + coding_sloynik/coder.hpp | 5 + coding_sloynik/coder_util.hpp | 30 + coding_sloynik/coding_sloynik.pro | 21 + .../coding_sloynik_tests/bzip2_test.cpp | 27 + .../coding_sloynik_tests/coder_test.hpp | 20 + .../coding_sloynik_tests/coder_util_test.cpp | 32 + .../coding_sloynik_tests.pro | 18 + .../coding_sloynik_tests/gzip_test.cpp | 27 + coding_sloynik/gzip_compressor.cpp | 39 + coding_sloynik/gzip_compressor.hpp | 17 + coding_sloynik/polymorph_reader.hpp | 40 + coding_sloynik/timsort/timsort.c | 1309 + coding_sloynik/timsort/timsort.h | 11 + console_sloynik/console_sloynik.pro | 13 + console_sloynik/main.cpp | 39 + iphone_sloynik/Images/Icon-72.png | Bin 0 -> 629 bytes iphone_sloynik/Images/Icon.png | Bin 0 -> 500 bytes iphone_sloynik/Images/back.png | Bin 0 -> 2970 bytes iphone_sloynik/Images/forw.png | Bin 0 -> 2976 bytes iphone_sloynik/Images/menu-20.png | Bin 0 -> 200 bytes iphone_sloynik/Shared/AppDelegate.h | 14 + iphone_sloynik/Shared/AppDelegate.mm | 88 + iphone_sloynik/Shared/ArticleVC.h | 35 + iphone_sloynik/Shared/ArticleVC.mm | 292 + iphone_sloynik/Shared/PerfCount.h | 11 + iphone_sloynik/Shared/PerfCount.mm | 23 + iphone_sloynik/Shared/SearchVC.h | 26 + iphone_sloynik/Shared/SearchVC.mm | 239 + iphone_sloynik/Shared/global.hpp | 17 + iphone_sloynik/Shared/global.mm | 75 + iphone_sloynik/Shared/main.m | 21 + iphone_sloynik/Sloynik-Info.plist | 45 + .../Sloynik.xcodeproj/project.pbxproj | 546 + iphone_sloynik/Sloynik_Prefix.pch | 8 + iphone_sloynik_old/Classes/PerfCount.h | 19 + iphone_sloynik_old/Classes/PerfCount.mm | 31 + .../Classes/RootViewController.h | 26 + .../Classes/RootViewController.m | 165 + .../Classes/SloynikAppDelegate.h | 19 + .../Classes/SloynikAppDelegate.m | 50 + .../Classes/SuggestDataSource.h | 18 + .../Classes/SuggestDataSource.m | 44 + iphone_sloynik_old/MainWindow.xib | 300 + iphone_sloynik_old/RootViewController.xib | 555 + iphone_sloynik_old/Sloynik-Info.plist | 32 + .../Sloynik.xcodeproj/melnichek.perspectivev3 | 1466 + .../Sloynik.xcodeproj/project.pbxproj | 277 + iphone_sloynik_old/Sloynik_Prefix.pch | 14 + iphone_sloynik_old/main.m | 19 + publisher/aard_dictionary.cpp | 225 + publisher/aard_dictionary.hpp | 28 + publisher/main.cpp | 57 + publisher/publisher.pro | 18 + publisher/publisher_tests/publisher_tests.pro | 14 + .../publisher_tests/slof_indexer_test.cpp | 86 + publisher/slof_indexer.cpp | 188 + publisher/slof_indexer.hpp | 49 + sloynik.pro | 14 + sloynik_common.pri | 3 + tools_sloynik/mac/proto_compile.sh | 3 + tools_sloynik/mac/protoc | Bin 0 -> 2166448 bytes utils/dummy_utils.cpp | 3 + utils/utils.pro | 17 + utils/utils_tests/dummy_utils_test.cpp | 5 + utils/utils_tests/utils_tests.pro | 15 + words/common.hpp | 21 + words/dictionary.hpp | 34 + words/slof.hpp | 43 + words/slof_dictionary.cpp | 99 + words/slof_dictionary.hpp | 32 + words/sloynik_engine.cpp | 72 + words/sloynik_engine.hpp | 62 + words/sloynik_index.cpp | 220 + words/sloynik_index.hpp | 75 + words/words.pro | 26 + words/words_tests/dictionary_mock.hpp | 27 + words/words_tests/sorted_index_test.cpp | 125 + words/words_tests/words_tests.pro | 15 + 245 files changed, 169358 insertions(+) create mode 100644 3party_sloynik/3party_sloynik.pro create mode 100644 3party_sloynik/bzip2/CHANGES create mode 100644 3party_sloynik/bzip2/LICENSE create mode 100644 3party_sloynik/bzip2/Makefile-libbz2_so create mode 100644 3party_sloynik/bzip2/README create mode 100644 3party_sloynik/bzip2/README.COMPILATION.PROBLEMS create mode 100644 3party_sloynik/bzip2/README.XML.STUFF create mode 100644 3party_sloynik/bzip2/blocksort.c create mode 100644 3party_sloynik/bzip2/blocksort.o create mode 100644 3party_sloynik/bzip2/bz-common.xsl create mode 100644 3party_sloynik/bzip2/bz-fo.xsl create mode 100644 3party_sloynik/bzip2/bz-html.xsl create mode 100644 3party_sloynik/bzip2/bzdiff create mode 100644 3party_sloynik/bzip2/bzdiff.1 create mode 100644 3party_sloynik/bzip2/bzgrep create mode 100644 3party_sloynik/bzip2/bzgrep.1 create mode 100644 3party_sloynik/bzip2/bzip.css create mode 100644 3party_sloynik/bzip2/bzip2.1 create mode 100644 3party_sloynik/bzip2/bzip2.1.preformatted create mode 100644 3party_sloynik/bzip2/bzip2.c create mode 100644 3party_sloynik/bzip2/bzip2.pro create mode 100644 3party_sloynik/bzip2/bzip2.txt create mode 100644 3party_sloynik/bzip2/bzip2recover.c create mode 100644 3party_sloynik/bzip2/bzlib.c create mode 100644 3party_sloynik/bzip2/bzlib.h create mode 100644 3party_sloynik/bzip2/bzlib.o create mode 100644 3party_sloynik/bzip2/bzlib_private.h create mode 100644 3party_sloynik/bzip2/bzmore create mode 100644 3party_sloynik/bzip2/bzmore.1 create mode 100644 3party_sloynik/bzip2/compress.c create mode 100644 3party_sloynik/bzip2/compress.o create mode 100644 3party_sloynik/bzip2/crctable.c create mode 100644 3party_sloynik/bzip2/crctable.o create mode 100644 3party_sloynik/bzip2/decompress.c create mode 100644 3party_sloynik/bzip2/decompress.o create mode 100644 3party_sloynik/bzip2/dlltest.c create mode 100644 3party_sloynik/bzip2/dlltest.dsp create mode 100644 3party_sloynik/bzip2/entities.xml create mode 100644 3party_sloynik/bzip2/format.pl create mode 100644 3party_sloynik/bzip2/huffman.c create mode 100644 3party_sloynik/bzip2/huffman.o create mode 100644 3party_sloynik/bzip2/impure.c create mode 100644 3party_sloynik/bzip2/libbz2.def create mode 100644 3party_sloynik/bzip2/libbz2.dsp create mode 100644 3party_sloynik/bzip2/makefile.msc create mode 100644 3party_sloynik/bzip2/manual.html create mode 100644 3party_sloynik/bzip2/manual.pdf create mode 100644 3party_sloynik/bzip2/manual.ps create mode 100644 3party_sloynik/bzip2/manual.xml create mode 100644 3party_sloynik/bzip2/mk251.c create mode 100644 3party_sloynik/bzip2/randtable.c create mode 100644 3party_sloynik/bzip2/randtable.o create mode 100644 3party_sloynik/bzip2/sample1.bz2 create mode 100644 3party_sloynik/bzip2/sample1.ref create mode 100644 3party_sloynik/bzip2/sample2.bz2 create mode 100644 3party_sloynik/bzip2/sample2.ref create mode 100644 3party_sloynik/bzip2/sample3.bz2 create mode 100644 3party_sloynik/bzip2/sample3.ref create mode 100644 3party_sloynik/bzip2/spewG.c create mode 100644 3party_sloynik/bzip2/unzcrash.c create mode 100644 3party_sloynik/bzip2/words0 create mode 100644 3party_sloynik/bzip2/words1 create mode 100644 3party_sloynik/bzip2/words2 create mode 100644 3party_sloynik/bzip2/words3 create mode 100644 3party_sloynik/bzip2/xmlproc.sh create mode 100644 3party_sloynik/jansson/CHANGES create mode 100644 3party_sloynik/jansson/LICENSE create mode 100644 3party_sloynik/jansson/README.rst create mode 100644 3party_sloynik/jansson/jansson.pro create mode 100644 3party_sloynik/jansson/myjansson.hpp create mode 100644 3party_sloynik/jansson/src/config.h create mode 100644 3party_sloynik/jansson/src/dump.c create mode 100644 3party_sloynik/jansson/src/hashtable.c create mode 100644 3party_sloynik/jansson/src/hashtable.h create mode 100644 3party_sloynik/jansson/src/jansson.h create mode 100644 3party_sloynik/jansson/src/jansson_private.h create mode 100644 3party_sloynik/jansson/src/load.c create mode 100644 3party_sloynik/jansson/src/strbuffer.c create mode 100644 3party_sloynik/jansson/src/strbuffer.h create mode 100644 3party_sloynik/jansson/src/utf.c create mode 100644 3party_sloynik/jansson/src/utf.h create mode 100644 3party_sloynik/jansson/src/util.h create mode 100644 3party_sloynik/jansson/src/value.c create mode 100644 3party_sloynik/protobuf/CHANGES.txt create mode 100644 3party_sloynik/protobuf/CONTRIBUTORS.txt create mode 100644 3party_sloynik/protobuf/COPYING.txt create mode 100644 3party_sloynik/protobuf/INSTALL.txt create mode 100644 3party_sloynik/protobuf/README.txt create mode 100644 3party_sloynik/protobuf/config.h create mode 100644 3party_sloynik/protobuf/protobuf.pro create mode 100644 3party_sloynik/protobuf/src/google/protobuf/extension_set.cc create mode 100644 3party_sloynik/protobuf/src/google/protobuf/extension_set.h create mode 100644 3party_sloynik/protobuf/src/google/protobuf/generated_message_util.cc create mode 100644 3party_sloynik/protobuf/src/google/protobuf/generated_message_util.h create mode 100644 3party_sloynik/protobuf/src/google/protobuf/io/coded_stream.cc create mode 100644 3party_sloynik/protobuf/src/google/protobuf/io/coded_stream.h create mode 100644 3party_sloynik/protobuf/src/google/protobuf/io/coded_stream_inl.h create mode 100644 3party_sloynik/protobuf/src/google/protobuf/io/zero_copy_stream.cc create mode 100644 3party_sloynik/protobuf/src/google/protobuf/io/zero_copy_stream.h create mode 100644 3party_sloynik/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.cc create mode 100644 3party_sloynik/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h create mode 100644 3party_sloynik/protobuf/src/google/protobuf/message_lite.cc create mode 100644 3party_sloynik/protobuf/src/google/protobuf/message_lite.h create mode 100644 3party_sloynik/protobuf/src/google/protobuf/repeated_field.cc create mode 100644 3party_sloynik/protobuf/src/google/protobuf/repeated_field.h create mode 100644 3party_sloynik/protobuf/src/google/protobuf/stubs/common.cc create mode 100644 3party_sloynik/protobuf/src/google/protobuf/stubs/common.h create mode 100644 3party_sloynik/protobuf/src/google/protobuf/stubs/hash.cc create mode 100644 3party_sloynik/protobuf/src/google/protobuf/stubs/hash.h create mode 100644 3party_sloynik/protobuf/src/google/protobuf/stubs/map-util.h create mode 100644 3party_sloynik/protobuf/src/google/protobuf/stubs/once.cc create mode 100644 3party_sloynik/protobuf/src/google/protobuf/stubs/once.h create mode 100644 3party_sloynik/protobuf/src/google/protobuf/stubs/stl_util-inl.h create mode 100644 3party_sloynik/protobuf/src/google/protobuf/wire_format_lite.cc create mode 100644 3party_sloynik/protobuf/src/google/protobuf/wire_format_lite.h create mode 100644 3party_sloynik/protobuf/src/google/protobuf/wire_format_lite_inl.h create mode 100644 3party_sloynik/zlib/adler32.c create mode 100644 3party_sloynik/zlib/compress.c create mode 100644 3party_sloynik/zlib/crc32.c create mode 100644 3party_sloynik/zlib/crc32.h create mode 100644 3party_sloynik/zlib/deflate.c create mode 100644 3party_sloynik/zlib/deflate.h create mode 100644 3party_sloynik/zlib/example.c create mode 100644 3party_sloynik/zlib/gzclose.c create mode 100644 3party_sloynik/zlib/gzguts.h create mode 100644 3party_sloynik/zlib/gzlib.c create mode 100644 3party_sloynik/zlib/gzread.c create mode 100644 3party_sloynik/zlib/gzwrite.c create mode 100644 3party_sloynik/zlib/infback.c create mode 100644 3party_sloynik/zlib/inffast.c create mode 100644 3party_sloynik/zlib/inffast.h create mode 100644 3party_sloynik/zlib/inffixed.h create mode 100644 3party_sloynik/zlib/inflate.c create mode 100644 3party_sloynik/zlib/inflate.h create mode 100644 3party_sloynik/zlib/inftrees.c create mode 100644 3party_sloynik/zlib/inftrees.h create mode 100644 3party_sloynik/zlib/trees.c create mode 100644 3party_sloynik/zlib/trees.h create mode 100644 3party_sloynik/zlib/uncompr.c create mode 100644 3party_sloynik/zlib/zconf.h create mode 100644 3party_sloynik/zlib/zlib.h create mode 100644 3party_sloynik/zlib/zlib.pro create mode 100644 3party_sloynik/zlib/zutil.c create mode 100644 3party_sloynik/zlib/zutil.h create mode 100644 bada_sloynik/Sloynik/.badaprj create mode 100644 bada_sloynik/Sloynik/.cproject create mode 100644 bada_sloynik/Sloynik/.project create mode 100644 bada_sloynik/Sloynik/Home/index.dup.idx create mode 100644 bada_sloynik/Sloynik/Home/index.stamp.idx create mode 100644 bada_sloynik/Sloynik/Home/index.uni.idx create mode 100644 bada_sloynik/Sloynik/Home/wordnet.slf create mode 100644 bada_sloynik/Sloynik/Icons/Sloynik.png create mode 100644 bada_sloynik/Sloynik/Res/480x800/IDF_SEARCHFORM.xml create mode 100644 bada_sloynik/Sloynik/Res/eng-GB.xml create mode 100644 bada_sloynik/Sloynik/application.xml create mode 100644 bada_sloynik/Sloynik/inc/ArticleForm.h create mode 100644 bada_sloynik/Sloynik/inc/SearchForm.h create mode 100644 bada_sloynik/Sloynik/inc/Sloynik.h create mode 100644 bada_sloynik/Sloynik/manifest.xml create mode 100644 bada_sloynik/Sloynik/src/ArticleForm.cpp create mode 100644 bada_sloynik/Sloynik/src/SearchForm.cpp create mode 100644 bada_sloynik/Sloynik/src/Sloynik.cpp create mode 100644 bada_sloynik/Sloynik/src/SloynikEntry.cpp create mode 100644 bada_sloynik/releases/bada_challenge_2010/Sloynik_Simulator-Debug.zip create mode 100644 bugs_sloynik.txt create mode 100644 coding_sloynik/bzip2_compressor.cpp create mode 100644 coding_sloynik/bzip2_compressor.hpp create mode 100644 coding_sloynik/coder.hpp create mode 100644 coding_sloynik/coder_util.hpp create mode 100644 coding_sloynik/coding_sloynik.pro create mode 100644 coding_sloynik/coding_sloynik_tests/bzip2_test.cpp create mode 100644 coding_sloynik/coding_sloynik_tests/coder_test.hpp create mode 100644 coding_sloynik/coding_sloynik_tests/coder_util_test.cpp create mode 100644 coding_sloynik/coding_sloynik_tests/coding_sloynik_tests.pro create mode 100644 coding_sloynik/coding_sloynik_tests/gzip_test.cpp create mode 100644 coding_sloynik/gzip_compressor.cpp create mode 100644 coding_sloynik/gzip_compressor.hpp create mode 100644 coding_sloynik/polymorph_reader.hpp create mode 100644 coding_sloynik/timsort/timsort.c create mode 100644 coding_sloynik/timsort/timsort.h create mode 100644 console_sloynik/console_sloynik.pro create mode 100644 console_sloynik/main.cpp create mode 100644 iphone_sloynik/Images/Icon-72.png create mode 100644 iphone_sloynik/Images/Icon.png create mode 100644 iphone_sloynik/Images/back.png create mode 100644 iphone_sloynik/Images/forw.png create mode 100644 iphone_sloynik/Images/menu-20.png create mode 100644 iphone_sloynik/Shared/AppDelegate.h create mode 100644 iphone_sloynik/Shared/AppDelegate.mm create mode 100644 iphone_sloynik/Shared/ArticleVC.h create mode 100644 iphone_sloynik/Shared/ArticleVC.mm create mode 100644 iphone_sloynik/Shared/PerfCount.h create mode 100644 iphone_sloynik/Shared/PerfCount.mm create mode 100644 iphone_sloynik/Shared/SearchVC.h create mode 100644 iphone_sloynik/Shared/SearchVC.mm create mode 100644 iphone_sloynik/Shared/global.hpp create mode 100644 iphone_sloynik/Shared/global.mm create mode 100644 iphone_sloynik/Shared/main.m create mode 100644 iphone_sloynik/Sloynik-Info.plist create mode 100755 iphone_sloynik/Sloynik.xcodeproj/project.pbxproj create mode 100644 iphone_sloynik/Sloynik_Prefix.pch create mode 100644 iphone_sloynik_old/Classes/PerfCount.h create mode 100644 iphone_sloynik_old/Classes/PerfCount.mm create mode 100644 iphone_sloynik_old/Classes/RootViewController.h create mode 100644 iphone_sloynik_old/Classes/RootViewController.m create mode 100644 iphone_sloynik_old/Classes/SloynikAppDelegate.h create mode 100644 iphone_sloynik_old/Classes/SloynikAppDelegate.m create mode 100644 iphone_sloynik_old/Classes/SuggestDataSource.h create mode 100644 iphone_sloynik_old/Classes/SuggestDataSource.m create mode 100644 iphone_sloynik_old/MainWindow.xib create mode 100644 iphone_sloynik_old/RootViewController.xib create mode 100644 iphone_sloynik_old/Sloynik-Info.plist create mode 100644 iphone_sloynik_old/Sloynik.xcodeproj/melnichek.perspectivev3 create mode 100644 iphone_sloynik_old/Sloynik.xcodeproj/project.pbxproj create mode 100644 iphone_sloynik_old/Sloynik_Prefix.pch create mode 100644 iphone_sloynik_old/main.m create mode 100644 publisher/aard_dictionary.cpp create mode 100644 publisher/aard_dictionary.hpp create mode 100644 publisher/main.cpp create mode 100644 publisher/publisher.pro create mode 100644 publisher/publisher_tests/publisher_tests.pro create mode 100644 publisher/publisher_tests/slof_indexer_test.cpp create mode 100644 publisher/slof_indexer.cpp create mode 100644 publisher/slof_indexer.hpp create mode 100644 sloynik.pro create mode 100644 sloynik_common.pri create mode 100755 tools_sloynik/mac/proto_compile.sh create mode 100755 tools_sloynik/mac/protoc create mode 100644 utils/dummy_utils.cpp create mode 100644 utils/utils.pro create mode 100644 utils/utils_tests/dummy_utils_test.cpp create mode 100644 utils/utils_tests/utils_tests.pro create mode 100644 words/common.hpp create mode 100644 words/dictionary.hpp create mode 100644 words/slof.hpp create mode 100644 words/slof_dictionary.cpp create mode 100644 words/slof_dictionary.hpp create mode 100644 words/sloynik_engine.cpp create mode 100644 words/sloynik_engine.hpp create mode 100644 words/sloynik_index.cpp create mode 100644 words/sloynik_index.hpp create mode 100644 words/words.pro create mode 100644 words/words_tests/dictionary_mock.hpp create mode 100644 words/words_tests/sorted_index_test.cpp create mode 100644 words/words_tests/words_tests.pro diff --git a/3party_sloynik/3party_sloynik.pro b/3party_sloynik/3party_sloynik.pro new file mode 100644 index 0000000000..55d7d49c0e --- /dev/null +++ b/3party_sloynik/3party_sloynik.pro @@ -0,0 +1,7 @@ +TEMPLATE = subdirs + +SUBDIRS = \ + bzip2 \ + zlib \ + protobuf \ + jansson \ diff --git a/3party_sloynik/bzip2/CHANGES b/3party_sloynik/bzip2/CHANGES new file mode 100644 index 0000000000..6e4f65e2e0 --- /dev/null +++ b/3party_sloynik/bzip2/CHANGES @@ -0,0 +1,319 @@ + ------------------------------------------------------------------ + This file is part of bzip2/libbzip2, a program and library for + lossless, block-sorting data compression. + + bzip2/libbzip2 version 1.0.5 of 10 December 2007 + Copyright (C) 1996-2007 Julian Seward + + Please read the WARNING, DISCLAIMER and PATENTS sections in the + README file. + + This program is released under the terms of the license contained + in the file LICENSE. + ------------------------------------------------------------------ + + +0.9.0 +~~~~~ +First version. + + +0.9.0a +~~~~~~ +Removed 'ranlib' from Makefile, since most modern Unix-es +don't need it, or even know about it. + + +0.9.0b +~~~~~~ +Fixed a problem with error reporting in bzip2.c. This does not effect +the library in any way. Problem is: versions 0.9.0 and 0.9.0a (of the +program proper) compress and decompress correctly, but give misleading +error messages (internal panics) when an I/O error occurs, instead of +reporting the problem correctly. This shouldn't give any data loss +(as far as I can see), but is confusing. + +Made the inline declarations disappear for non-GCC compilers. + + +0.9.0c +~~~~~~ +Fixed some problems in the library pertaining to some boundary cases. +This makes the library behave more correctly in those situations. The +fixes apply only to features (calls and parameters) not used by +bzip2.c, so the non-fixedness of them in previous versions has no +effect on reliability of bzip2.c. + +In bzlib.c: + * made zero-length BZ_FLUSH work correctly in bzCompress(). + * fixed bzWrite/bzRead to ignore zero-length requests. + * fixed bzread to correctly handle read requests after EOF. + * wrong parameter order in call to bzDecompressInit in + bzBuffToBuffDecompress. Fixed. + +In compress.c: + * changed setting of nGroups in sendMTFValues() so as to + do a bit better on small files. This _does_ effect + bzip2.c. + + +0.9.5a +~~~~~~ +Major change: add a fallback sorting algorithm (blocksort.c) +to give reasonable behaviour even for very repetitive inputs. +Nuked --repetitive-best and --repetitive-fast since they are +no longer useful. + +Minor changes: mostly a whole bunch of small changes/ +bugfixes in the driver (bzip2.c). Changes pertaining to the +user interface are: + + allow decompression of symlink'd files to stdout + decompress/test files even without .bz2 extension + give more accurate error messages for I/O errors + when compressing/decompressing to stdout, don't catch control-C + read flags from BZIP2 and BZIP environment variables + decline to break hard links to a file unless forced with -f + allow -c flag even with no filenames + preserve file ownerships as far as possible + make -s -1 give the expected block size (100k) + add a flag -q --quiet to suppress nonessential warnings + stop decoding flags after --, so files beginning in - can be handled + resolved inconsistent naming: bzcat or bz2cat ? + bzip2 --help now returns 0 + +Programming-level changes are: + + fixed syntax error in GET_LL4 for Borland C++ 5.02 + let bzBuffToBuffDecompress return BZ_DATA_ERROR{_MAGIC} + fix overshoot of mode-string end in bzopen_or_bzdopen + wrapped bzlib.h in #ifdef __cplusplus ... extern "C" { ... } + close file handles under all error conditions + added minor mods so it compiles with DJGPP out of the box + fixed Makefile so it doesn't give problems with BSD make + fix uninitialised memory reads in dlltest.c + +0.9.5b +~~~~~~ +Open stdin/stdout in binary mode for DJGPP. + +0.9.5c +~~~~~~ +Changed BZ_N_OVERSHOOT to be ... + 2 instead of ... + 1. The + 1 +version could cause the sorted order to be wrong in some extremely +obscure cases. Also changed setting of quadrant in blocksort.c. + +0.9.5d +~~~~~~ +The only functional change is to make bzlibVersion() in the library +return the correct string. This has no effect whatsoever on the +functioning of the bzip2 program or library. Added a couple of casts +so the library compiles without warnings at level 3 in MS Visual +Studio 6.0. Included a Y2K statement in the file Y2K_INFO. All other +changes are minor documentation changes. + +1.0 +~~~ +Several minor bugfixes and enhancements: + +* Large file support. The library uses 64-bit counters to + count the volume of data passing through it. bzip2.c + is now compiled with -D_FILE_OFFSET_BITS=64 to get large + file support from the C library. -v correctly prints out + file sizes greater than 4 gigabytes. All these changes have + been made without assuming a 64-bit platform or a C compiler + which supports 64-bit ints, so, except for the C library + aspect, they are fully portable. + +* Decompression robustness. The library/program should be + robust to any corruption of compressed data, detecting and + handling _all_ corruption, instead of merely relying on + the CRCs. What this means is that the program should + never crash, given corrupted data, and the library should + always return BZ_DATA_ERROR. + +* Fixed an obscure race-condition bug only ever observed on + Solaris, in which, if you were very unlucky and issued + control-C at exactly the wrong time, both input and output + files would be deleted. + +* Don't run out of file handles on test/decompression when + large numbers of files have invalid magic numbers. + +* Avoid library namespace pollution. Prefix all exported + symbols with BZ2_. + +* Minor sorting enhancements from my DCC2000 paper. + +* Advance the version number to 1.0, so as to counteract the + (false-in-this-case) impression some people have that programs + with version numbers less than 1.0 are in some way, experimental, + pre-release versions. + +* Create an initial Makefile-libbz2_so to build a shared library. + Yes, I know I should really use libtool et al ... + +* Make the program exit with 2 instead of 0 when decompression + fails due to a bad magic number (ie, an invalid bzip2 header). + Also exit with 1 (as the manual claims :-) whenever a diagnostic + message would have been printed AND the corresponding operation + is aborted, for example + bzip2: Output file xx already exists. + When a diagnostic message is printed but the operation is not + aborted, for example + bzip2: Can't guess original name for wurble -- using wurble.out + then the exit value 0 is returned, unless some other problem is + also detected. + + I think it corresponds more closely to what the manual claims now. + + +1.0.1 +~~~~~ +* Modified dlltest.c so it uses the new BZ2_ naming scheme. +* Modified makefile-msc to fix minor build probs on Win2k. +* Updated README.COMPILATION.PROBLEMS. + +There are no functionality changes or bug fixes relative to version +1.0.0. This is just a documentation update + a fix for minor Win32 +build problems. For almost everyone, upgrading from 1.0.0 to 1.0.1 is +utterly pointless. Don't bother. + + +1.0.2 +~~~~~ +A bug fix release, addressing various minor issues which have appeared +in the 18 or so months since 1.0.1 was released. Most of the fixes +are to do with file-handling or documentation bugs. To the best of my +knowledge, there have been no data-loss-causing bugs reported in the +compression/decompression engine of 1.0.0 or 1.0.1. + +Note that this release does not improve the rather crude build system +for Unix platforms. The general plan here is to autoconfiscate/ +libtoolise 1.0.2 soon after release, and release the result as 1.1.0 +or perhaps 1.2.0. That, however, is still just a plan at this point. + +Here are the changes in 1.0.2. Bug-reporters and/or patch-senders in +parentheses. + +* Fix an infinite segfault loop in 1.0.1 when a directory is + encountered in -f (force) mode. + (Trond Eivind Glomsrod, Nicholas Nethercote, Volker Schmidt) + +* Avoid double fclose() of output file on certain I/O error paths. + (Solar Designer) + +* Don't fail with internal error 1007 when fed a long stream (> 48MB) + of byte 251. Also print useful message suggesting that 1007s may be + caused by bad memory. + (noticed by Juan Pedro Vallejo, fixed by me) + +* Fix uninitialised variable silly bug in demo prog dlltest.c. + (Jorj Bauer) + +* Remove 512-MB limitation on recovered file size for bzip2recover + on selected platforms which support 64-bit ints. At the moment + all GCC supported platforms, and Win32. + (me, Alson van der Meulen) + +* Hard-code header byte values, to give correct operation on platforms + using EBCDIC as their native character set (IBM's OS/390). + (Leland Lucius) + +* Copy file access times correctly. + (Marty Leisner) + +* Add distclean and check targets to Makefile. + (Michael Carmack) + +* Parameterise use of ar and ranlib in Makefile. Also add $(LDFLAGS). + (Rich Ireland, Bo Thorsen) + +* Pass -p (create parent dirs as needed) to mkdir during make install. + (Jeremy Fusco) + +* Dereference symlinks when copying file permissions in -f mode. + (Volker Schmidt) + +* Majorly simplify implementation of uInt64_qrm10. + (Bo Lindbergh) + +* Check the input file still exists before deleting the output one, + when aborting in cleanUpAndFail(). + (Joerg Prante, Robert Linden, Matthias Krings) + +Also a bunch of patches courtesy of Philippe Troin, the Debian maintainer +of bzip2: + +* Wrapper scripts (with manpages): bzdiff, bzgrep, bzmore. + +* Spelling changes and minor enhancements in bzip2.1. + +* Avoid race condition between creating the output file and setting its + interim permissions safely, by using fopen_output_safely(). + No changes to bzip2recover since there is no issue with file + permissions there. + +* do not print senseless report with -v when compressing an empty + file. + +* bzcat -f works on non-bzip2 files. + +* do not try to escape shell meta-characters on unix (the shell takes + care of these). + +* added --fast and --best aliases for -1 -9 for gzip compatibility. + + +1.0.3 (15 Feb 05) +~~~~~~~~~~~~~~~~~ +Fixes some minor bugs since the last version, 1.0.2. + +* Further robustification against corrupted compressed data. + There are currently no known bitstreams which can cause the + decompressor to crash, loop or access memory which does not + belong to it. If you are using bzip2 or the library to + decompress bitstreams from untrusted sources, an upgrade + to 1.0.3 is recommended. This fixes CAN-2005-1260. + +* The documentation has been converted to XML, from which html + and pdf can be derived. + +* Various minor bugs in the documentation have been fixed. + +* Fixes for various compilation warnings with newer versions of + gcc, and on 64-bit platforms. + +* The BZ_NO_STDIO cpp symbol was not properly observed in 1.0.2. + This has been fixed. + + +1.0.4 (20 Dec 06) +~~~~~~~~~~~~~~~~~ +Fixes some minor bugs since the last version, 1.0.3. + +* Fix file permissions race problem (CAN-2005-0953). + +* Avoid possible segfault in BZ2_bzclose. From Coverity's NetBSD + scan. + +* 'const'/prototype cleanups in the C code. + +* Change default install location to /usr/local, and handle multiple + 'make install's without error. + +* Sanitise file names more carefully in bzgrep. Fixes CAN-2005-0758 + to the extent that applies to bzgrep. + +* Use 'mktemp' rather than 'tempfile' in bzdiff. + +* Tighten up a couple of assertions in blocksort.c following automated + analysis. + +* Fix minor doc/comment bugs. + + +1.0.5 (10 Dec 07) +~~~~~~~~~~~~~~~~~ +Security fix only. Fixes CERT-FI 20469 as it applies to bzip2. + diff --git a/3party_sloynik/bzip2/LICENSE b/3party_sloynik/bzip2/LICENSE new file mode 100644 index 0000000000..f420cffb67 --- /dev/null +++ b/3party_sloynik/bzip2/LICENSE @@ -0,0 +1,42 @@ + +-------------------------------------------------------------------------- + +This program, "bzip2", the associated library "libbzip2", and all +documentation, are copyright (C) 1996-2007 Julian R Seward. All +rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + +3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + +4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Julian Seward, jseward@bzip.org +bzip2/libbzip2 version 1.0.5 of 10 December 2007 + +-------------------------------------------------------------------------- diff --git a/3party_sloynik/bzip2/Makefile-libbz2_so b/3party_sloynik/bzip2/Makefile-libbz2_so new file mode 100644 index 0000000000..9a13c77e48 --- /dev/null +++ b/3party_sloynik/bzip2/Makefile-libbz2_so @@ -0,0 +1,59 @@ + +# This Makefile builds a shared version of the library, +# libbz2.so.1.0.4, with soname libbz2.so.1.0, +# at least on x86-Linux (RedHat 7.2), +# with gcc-2.96 20000731 (Red Hat Linux 7.1 2.96-98). +# Please see the README file for some important info +# about building the library like this. + +# ------------------------------------------------------------------ +# This file is part of bzip2/libbzip2, a program and library for +# lossless, block-sorting data compression. +# +# bzip2/libbzip2 version 1.0.5 of 10 December 2007 +# Copyright (C) 1996-2007 Julian Seward +# +# Please read the WARNING, DISCLAIMER and PATENTS sections in the +# README file. +# +# This program is released under the terms of the license contained +# in the file LICENSE. +# ------------------------------------------------------------------ + + +SHELL=/bin/sh +CC=gcc +BIGFILES=-D_FILE_OFFSET_BITS=64 +CFLAGS=-fpic -fPIC -Wall -Winline -O2 -g $(BIGFILES) + +OBJS= blocksort.o \ + huffman.o \ + crctable.o \ + randtable.o \ + compress.o \ + decompress.o \ + bzlib.o + +all: $(OBJS) + $(CC) -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.4 $(OBJS) + $(CC) $(CFLAGS) -o bzip2-shared bzip2.c libbz2.so.1.0.4 + rm -f libbz2.so.1.0 + ln -s libbz2.so.1.0.4 libbz2.so.1.0 + +clean: + rm -f $(OBJS) bzip2.o libbz2.so.1.0.4 libbz2.so.1.0 bzip2-shared + +blocksort.o: blocksort.c + $(CC) $(CFLAGS) -c blocksort.c +huffman.o: huffman.c + $(CC) $(CFLAGS) -c huffman.c +crctable.o: crctable.c + $(CC) $(CFLAGS) -c crctable.c +randtable.o: randtable.c + $(CC) $(CFLAGS) -c randtable.c +compress.o: compress.c + $(CC) $(CFLAGS) -c compress.c +decompress.o: decompress.c + $(CC) $(CFLAGS) -c decompress.c +bzlib.o: bzlib.c + $(CC) $(CFLAGS) -c bzlib.c diff --git a/3party_sloynik/bzip2/README b/3party_sloynik/bzip2/README new file mode 100644 index 0000000000..e17a84e049 --- /dev/null +++ b/3party_sloynik/bzip2/README @@ -0,0 +1,210 @@ + +This is the README for bzip2/libzip2. +This version is fully compatible with the previous public releases. + +------------------------------------------------------------------ +This file is part of bzip2/libbzip2, a program and library for +lossless, block-sorting data compression. + +bzip2/libbzip2 version 1.0.5 of 10 December 2007 +Copyright (C) 1996-2007 Julian Seward + +Please read the WARNING, DISCLAIMER and PATENTS sections in this file. + +This program is released under the terms of the license contained +in the file LICENSE. +------------------------------------------------------------------ + +Complete documentation is available in Postscript form (manual.ps), +PDF (manual.pdf) or html (manual.html). A plain-text version of the +manual page is available as bzip2.txt. + + +HOW TO BUILD -- UNIX + +Type 'make'. This builds the library libbz2.a and then the programs +bzip2 and bzip2recover. Six self-tests are run. If the self-tests +complete ok, carry on to installation: + +To install in /usr/local/bin, /usr/local/lib, /usr/local/man and +/usr/local/include, type + + make install + +To install somewhere else, eg, /xxx/yyy/{bin,lib,man,include}, type + + make install PREFIX=/xxx/yyy + +If you are (justifiably) paranoid and want to see what 'make install' +is going to do, you can first do + + make -n install or + make -n install PREFIX=/xxx/yyy respectively. + +The -n instructs make to show the commands it would execute, but not +actually execute them. + + +HOW TO BUILD -- UNIX, shared library libbz2.so. + +Do 'make -f Makefile-libbz2_so'. This Makefile seems to work for +Linux-ELF (RedHat 7.2 on an x86 box), with gcc. I make no claims +that it works for any other platform, though I suspect it probably +will work for most platforms employing both ELF and gcc. + +bzip2-shared, a client of the shared library, is also built, but not +self-tested. So I suggest you also build using the normal Makefile, +since that conducts a self-test. A second reason to prefer the +version statically linked to the library is that, on x86 platforms, +building shared objects makes a valuable register (%ebx) unavailable +to gcc, resulting in a slowdown of 10%-20%, at least for bzip2. + +Important note for people upgrading .so's from 0.9.0/0.9.5 to version +1.0.X. All the functions in the library have been renamed, from (eg) +bzCompress to BZ2_bzCompress, to avoid namespace pollution. +Unfortunately this means that the libbz2.so created by +Makefile-libbz2_so will not work with any program which used an older +version of the library. I do encourage library clients to make the +effort to upgrade to use version 1.0, since it is both faster and more +robust than previous versions. + + +HOW TO BUILD -- Windows 95, NT, DOS, Mac, etc. + +It's difficult for me to support compilation on all these platforms. +My approach is to collect binaries for these platforms, and put them +on the master web site (http://www.bzip.org). Look there. However +(FWIW), bzip2-1.0.X is very standard ANSI C and should compile +unmodified with MS Visual C. If you have difficulties building, you +might want to read README.COMPILATION.PROBLEMS. + +At least using MS Visual C++ 6, you can build from the unmodified +sources by issuing, in a command shell: + + nmake -f makefile.msc + +(you may need to first run the MSVC-provided script VCVARS32.BAT + so as to set up paths to the MSVC tools correctly). + + +VALIDATION + +Correct operation, in the sense that a compressed file can always be +decompressed to reproduce the original, is obviously of paramount +importance. To validate bzip2, I used a modified version of Mark +Nelson's churn program. Churn is an automated test driver which +recursively traverses a directory structure, using bzip2 to compress +and then decompress each file it encounters, and checking that the +decompressed data is the same as the original. + + + +Please read and be aware of the following: + +WARNING: + + This program and library (attempts to) compress data by + performing several non-trivial transformations on it. + Unless you are 100% familiar with *all* the algorithms + contained herein, and with the consequences of modifying them, + you should NOT meddle with the compression or decompression + machinery. Incorrect changes can and very likely *will* + lead to disastrous loss of data. + + +DISCLAIMER: + + I TAKE NO RESPONSIBILITY FOR ANY LOSS OF DATA ARISING FROM THE + USE OF THIS PROGRAM/LIBRARY, HOWSOEVER CAUSED. + + Every compression of a file implies an assumption that the + compressed file can be decompressed to reproduce the original. + Great efforts in design, coding and testing have been made to + ensure that this program works correctly. However, the complexity + of the algorithms, and, in particular, the presence of various + special cases in the code which occur with very low but non-zero + probability make it impossible to rule out the possibility of bugs + remaining in the program. DO NOT COMPRESS ANY DATA WITH THIS + PROGRAM UNLESS YOU ARE PREPARED TO ACCEPT THE POSSIBILITY, HOWEVER + SMALL, THAT THE DATA WILL NOT BE RECOVERABLE. + + That is not to say this program is inherently unreliable. + Indeed, I very much hope the opposite is true. bzip2/libbzip2 + has been carefully constructed and extensively tested. + + +PATENTS: + + To the best of my knowledge, bzip2/libbzip2 does not use any + patented algorithms. However, I do not have the resources + to carry out a patent search. Therefore I cannot give any + guarantee of the above statement. + + + +WHAT'S NEW IN 0.9.0 (as compared to 0.1pl2) ? + + * Approx 10% faster compression, 30% faster decompression + * -t (test mode) is a lot quicker + * Can decompress concatenated compressed files + * Programming interface, so programs can directly read/write .bz2 files + * Less restrictive (BSD-style) licensing + * Flag handling more compatible with GNU gzip + * Much more documentation, i.e., a proper user manual + * Hopefully, improved portability (at least of the library) + +WHAT'S NEW IN 0.9.5 ? + + * Compression speed is much less sensitive to the input + data than in previous versions. Specifically, the very + slow performance caused by repetitive data is fixed. + * Many small improvements in file and flag handling. + * A Y2K statement. + +WHAT'S NEW IN 1.0.0 ? + + See the CHANGES file. + +WHAT'S NEW IN 1.0.2 ? + + See the CHANGES file. + +WHAT'S NEW IN 1.0.3 ? + + See the CHANGES file. + +WHAT'S NEW IN 1.0.4 ? + + See the CHANGES file. + +WHAT'S NEW IN 1.0.5 ? + + See the CHANGES file. + + +I hope you find bzip2 useful. Feel free to contact me at + jseward@bzip.org +if you have any suggestions or queries. Many people mailed me with +comments, suggestions and patches after the releases of bzip-0.15, +bzip-0.21, and bzip2 versions 0.1pl2, 0.9.0, 0.9.5, 1.0.0, 1.0.1, +1.0.2 and 1.0.3, and the changes in bzip2 are largely a result of this +feedback. I thank you for your comments. + +bzip2's "home" is http://www.bzip.org/ + +Julian Seward +jseward@bzip.org +Cambridge, UK. + +18 July 1996 (version 0.15) +25 August 1996 (version 0.21) + 7 August 1997 (bzip2, version 0.1) +29 August 1997 (bzip2, version 0.1pl2) +23 August 1998 (bzip2, version 0.9.0) + 8 June 1999 (bzip2, version 0.9.5) + 4 Sept 1999 (bzip2, version 0.9.5d) + 5 May 2000 (bzip2, version 1.0pre8) +30 December 2001 (bzip2, version 1.0.2pre1) +15 February 2005 (bzip2, version 1.0.3) +20 December 2006 (bzip2, version 1.0.4) +10 December 2007 (bzip2, version 1.0.5) diff --git a/3party_sloynik/bzip2/README.COMPILATION.PROBLEMS b/3party_sloynik/bzip2/README.COMPILATION.PROBLEMS new file mode 100644 index 0000000000..22b95c6cb6 --- /dev/null +++ b/3party_sloynik/bzip2/README.COMPILATION.PROBLEMS @@ -0,0 +1,58 @@ +------------------------------------------------------------------ +This file is part of bzip2/libbzip2, a program and library for +lossless, block-sorting data compression. + +bzip2/libbzip2 version 1.0.5 of 10 December 2007 +Copyright (C) 1996-2007 Julian Seward + +Please read the WARNING, DISCLAIMER and PATENTS sections in the +README file. + +This program is released under the terms of the license contained +in the file LICENSE. +------------------------------------------------------------------ + +bzip2-1.0.5 should compile without problems on the vast majority of +platforms. Using the supplied Makefile, I've built and tested it +myself for x86-linux and amd64-linux. With makefile.msc, Visual C++ +6.0 and nmake, you can build a native Win32 version too. Large file +support seems to work correctly on at least on amd64-linux. + +When I say "large file" I mean a file of size 2,147,483,648 (2^31) +bytes or above. Many older OSs can't handle files above this size, +but many newer ones can. Large files are pretty huge -- most files +you'll encounter are not Large Files. + +Early versions of bzip2 (0.1, 0.9.0, 0.9.5) compiled on a wide variety +of platforms without difficulty, and I hope this version will continue +in that tradition. However, in order to support large files, I've had +to include the define -D_FILE_OFFSET_BITS=64 in the Makefile. This +can cause problems. + +The technique of adding -D_FILE_OFFSET_BITS=64 to get large file +support is, as far as I know, the Recommended Way to get correct large +file support. For more details, see the Large File Support +Specification, published by the Large File Summit, at + + http://ftp.sas.com/standards/large.file + +As a general comment, if you get compilation errors which you think +are related to large file support, try removing the above define from +the Makefile, ie, delete the line + + BIGFILES=-D_FILE_OFFSET_BITS=64 + +from the Makefile, and do 'make clean ; make'. This will give you a +version of bzip2 without large file support, which, for most +applications, is probably not a problem. + +Alternatively, try some of the platform-specific hints listed below. + +You can use the spewG.c program to generate huge files to test bzip2's +large file support, if you are feeling paranoid. Be aware though that +any compilation problems which affect bzip2 will also affect spewG.c, +alas. + +AIX: I have reports that for large file support, you need to specify +-D_LARGE_FILES rather than -D_FILE_OFFSET_BITS=64. I have not tested +this myself. diff --git a/3party_sloynik/bzip2/README.XML.STUFF b/3party_sloynik/bzip2/README.XML.STUFF new file mode 100644 index 0000000000..1a5b4c55a5 --- /dev/null +++ b/3party_sloynik/bzip2/README.XML.STUFF @@ -0,0 +1,45 @@ + ---------------------------------------------------------------- + This file is part of bzip2/libbzip2, a program and library for + lossless, block-sorting data compression. + + bzip2/libbzip2 version 1.0.5 of 10 December 2007 + Copyright (C) 1996-2007 Julian Seward + + Please read the WARNING, DISCLAIMER and PATENTS sections in the + README file. + + This program is released under the terms of the license contained + in the file LICENSE. + ---------------------------------------------------------------- + +The script xmlproc.sh takes an xml file as input, +and processes it to create .pdf, .html or .ps output. +It uses format.pl, a perl script to format
 blocks nicely,
+ and add CDATA tags so writers do not have to use eg. < 
+
+The file "entities.xml" must be edited to reflect current
+version, year, etc.
+
+
+Usage:
+
+  ./xmlproc.sh -v manual.xml
+  Validates an xml file to ensure no dtd-compliance errors
+
+  ./xmlproc.sh -html manual.xml
+  Output: manual.html
+
+  ./xmlproc.sh -pdf manual.xml
+  Output: manual.pdf
+
+  ./xmlproc.sh -ps manual.xml
+  Output: manual.ps
+
+
+Notum bene: 
+- pdfxmltex barfs if given a filename with an underscore in it
+
+- xmltex won't work yet - there's a bug in passivetex
+    which we are all waiting for Sebastian to fix.
+  So we are going the xml -> pdf -> ps route for the time being,
+    using pdfxmltex.
diff --git a/3party_sloynik/bzip2/blocksort.c b/3party_sloynik/bzip2/blocksort.c
new file mode 100644
index 0000000000..8773377bbc
--- /dev/null
+++ b/3party_sloynik/bzip2/blocksort.c
@@ -0,0 +1,1094 @@
+
+/*-------------------------------------------------------------*/
+/*--- Block sorting machinery                               ---*/
+/*---                                           blocksort.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.5 of 10 December 2007
+   Copyright (C) 1996-2007 Julian Seward 
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+#include "bzlib_private.h"
+
+/*---------------------------------------------*/
+/*--- Fallback O(N log(N)^2) sorting        ---*/
+/*--- algorithm, for repetitive blocks      ---*/
+/*---------------------------------------------*/
+
+/*---------------------------------------------*/
+static 
+__inline__
+void fallbackSimpleSort ( UInt32* fmap, 
+                          UInt32* eclass, 
+                          Int32   lo, 
+                          Int32   hi )
+{
+   Int32 i, j, tmp;
+   UInt32 ec_tmp;
+
+   if (lo == hi) return;
+
+   if (hi - lo > 3) {
+      for ( i = hi-4; i >= lo; i-- ) {
+         tmp = fmap[i];
+         ec_tmp = eclass[tmp];
+         for ( j = i+4; j <= hi && ec_tmp > eclass[fmap[j]]; j += 4 )
+            fmap[j-4] = fmap[j];
+         fmap[j-4] = tmp;
+      }
+   }
+
+   for ( i = hi-1; i >= lo; i-- ) {
+      tmp = fmap[i];
+      ec_tmp = eclass[tmp];
+      for ( j = i+1; j <= hi && ec_tmp > eclass[fmap[j]]; j++ )
+         fmap[j-1] = fmap[j];
+      fmap[j-1] = tmp;
+   }
+}
+
+
+/*---------------------------------------------*/
+#define fswap(zz1, zz2) \
+   { Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; }
+
+#define fvswap(zzp1, zzp2, zzn)       \
+{                                     \
+   Int32 yyp1 = (zzp1);               \
+   Int32 yyp2 = (zzp2);               \
+   Int32 yyn  = (zzn);                \
+   while (yyn > 0) {                  \
+      fswap(fmap[yyp1], fmap[yyp2]);  \
+      yyp1++; yyp2++; yyn--;          \
+   }                                  \
+}
+
+
+#define fmin(a,b) ((a) < (b)) ? (a) : (b)
+
+#define fpush(lz,hz) { stackLo[sp] = lz; \
+                       stackHi[sp] = hz; \
+                       sp++; }
+
+#define fpop(lz,hz) { sp--;              \
+                      lz = stackLo[sp];  \
+                      hz = stackHi[sp]; }
+
+#define FALLBACK_QSORT_SMALL_THRESH 10
+#define FALLBACK_QSORT_STACK_SIZE   100
+
+
+static
+void fallbackQSort3 ( UInt32* fmap, 
+                      UInt32* eclass,
+                      Int32   loSt, 
+                      Int32   hiSt )
+{
+   Int32 unLo, unHi, ltLo, gtHi, n, m;
+   Int32 sp, lo, hi;
+   UInt32 med, r, r3;
+   Int32 stackLo[FALLBACK_QSORT_STACK_SIZE];
+   Int32 stackHi[FALLBACK_QSORT_STACK_SIZE];
+
+   r = 0;
+
+   sp = 0;
+   fpush ( loSt, hiSt );
+
+   while (sp > 0) {
+
+      AssertH ( sp < FALLBACK_QSORT_STACK_SIZE - 1, 1004 );
+
+      fpop ( lo, hi );
+      if (hi - lo < FALLBACK_QSORT_SMALL_THRESH) {
+         fallbackSimpleSort ( fmap, eclass, lo, hi );
+         continue;
+      }
+
+      /* Random partitioning.  Median of 3 sometimes fails to
+         avoid bad cases.  Median of 9 seems to help but 
+         looks rather expensive.  This too seems to work but
+         is cheaper.  Guidance for the magic constants 
+         7621 and 32768 is taken from Sedgewick's algorithms
+         book, chapter 35.
+      */
+      r = ((r * 7621) + 1) % 32768;
+      r3 = r % 3;
+      if (r3 == 0) med = eclass[fmap[lo]]; else
+      if (r3 == 1) med = eclass[fmap[(lo+hi)>>1]]; else
+                   med = eclass[fmap[hi]];
+
+      unLo = ltLo = lo;
+      unHi = gtHi = hi;
+
+      while (1) {
+         while (1) {
+            if (unLo > unHi) break;
+            n = (Int32)eclass[fmap[unLo]] - (Int32)med;
+            if (n == 0) { 
+               fswap(fmap[unLo], fmap[ltLo]); 
+               ltLo++; unLo++; 
+               continue; 
+            };
+            if (n > 0) break;
+            unLo++;
+         }
+         while (1) {
+            if (unLo > unHi) break;
+            n = (Int32)eclass[fmap[unHi]] - (Int32)med;
+            if (n == 0) { 
+               fswap(fmap[unHi], fmap[gtHi]); 
+               gtHi--; unHi--; 
+               continue; 
+            };
+            if (n < 0) break;
+            unHi--;
+         }
+         if (unLo > unHi) break;
+         fswap(fmap[unLo], fmap[unHi]); unLo++; unHi--;
+      }
+
+      AssertD ( unHi == unLo-1, "fallbackQSort3(2)" );
+
+      if (gtHi < ltLo) continue;
+
+      n = fmin(ltLo-lo, unLo-ltLo); fvswap(lo, unLo-n, n);
+      m = fmin(hi-gtHi, gtHi-unHi); fvswap(unLo, hi-m+1, m);
+
+      n = lo + unLo - ltLo - 1;
+      m = hi - (gtHi - unHi) + 1;
+
+      if (n - lo > hi - m) {
+         fpush ( lo, n );
+         fpush ( m, hi );
+      } else {
+         fpush ( m, hi );
+         fpush ( lo, n );
+      }
+   }
+}
+
+#undef fmin
+#undef fpush
+#undef fpop
+#undef fswap
+#undef fvswap
+#undef FALLBACK_QSORT_SMALL_THRESH
+#undef FALLBACK_QSORT_STACK_SIZE
+
+
+/*---------------------------------------------*/
+/* Pre:
+      nblock > 0
+      eclass exists for [0 .. nblock-1]
+      ((UChar*)eclass) [0 .. nblock-1] holds block
+      ptr exists for [0 .. nblock-1]
+
+   Post:
+      ((UChar*)eclass) [0 .. nblock-1] holds block
+      All other areas of eclass destroyed
+      fmap [0 .. nblock-1] holds sorted order
+      bhtab [ 0 .. 2+(nblock/32) ] destroyed
+*/
+
+#define       SET_BH(zz)  bhtab[(zz) >> 5] |= (1 << ((zz) & 31))
+#define     CLEAR_BH(zz)  bhtab[(zz) >> 5] &= ~(1 << ((zz) & 31))
+#define     ISSET_BH(zz)  (bhtab[(zz) >> 5] & (1 << ((zz) & 31)))
+#define      WORD_BH(zz)  bhtab[(zz) >> 5]
+#define UNALIGNED_BH(zz)  ((zz) & 0x01f)
+
+static
+void fallbackSort ( UInt32* fmap, 
+                    UInt32* eclass, 
+                    UInt32* bhtab,
+                    Int32   nblock,
+                    Int32   verb )
+{
+   Int32 ftab[257];
+   Int32 ftabCopy[256];
+   Int32 H, i, j, k, l, r, cc, cc1;
+   Int32 nNotDone;
+   Int32 nBhtab;
+   UChar* eclass8 = (UChar*)eclass;
+
+   /*--
+      Initial 1-char radix sort to generate
+      initial fmap and initial BH bits.
+   --*/
+   if (verb >= 4)
+      VPrintf0 ( "        bucket sorting ...\n" );
+   for (i = 0; i < 257;    i++) ftab[i] = 0;
+   for (i = 0; i < nblock; i++) ftab[eclass8[i]]++;
+   for (i = 0; i < 256;    i++) ftabCopy[i] = ftab[i];
+   for (i = 1; i < 257;    i++) ftab[i] += ftab[i-1];
+
+   for (i = 0; i < nblock; i++) {
+      j = eclass8[i];
+      k = ftab[j] - 1;
+      ftab[j] = k;
+      fmap[k] = i;
+   }
+
+   nBhtab = 2 + (nblock / 32);
+   for (i = 0; i < nBhtab; i++) bhtab[i] = 0;
+   for (i = 0; i < 256; i++) SET_BH(ftab[i]);
+
+   /*--
+      Inductively refine the buckets.  Kind-of an
+      "exponential radix sort" (!), inspired by the
+      Manber-Myers suffix array construction algorithm.
+   --*/
+
+   /*-- set sentinel bits for block-end detection --*/
+   for (i = 0; i < 32; i++) { 
+      SET_BH(nblock + 2*i);
+      CLEAR_BH(nblock + 2*i + 1);
+   }
+
+   /*-- the log(N) loop --*/
+   H = 1;
+   while (1) {
+
+      if (verb >= 4)
+         VPrintf1 ( "        depth %6d has ", H );
+
+      j = 0;
+      for (i = 0; i < nblock; i++) {
+         if (ISSET_BH(i)) j = i;
+         k = fmap[i] - H; if (k < 0) k += nblock;
+         eclass[k] = j;
+      }
+
+      nNotDone = 0;
+      r = -1;
+      while (1) {
+
+	 /*-- find the next non-singleton bucket --*/
+         k = r + 1;
+         while (ISSET_BH(k) && UNALIGNED_BH(k)) k++;
+         if (ISSET_BH(k)) {
+            while (WORD_BH(k) == 0xffffffff) k += 32;
+            while (ISSET_BH(k)) k++;
+         }
+         l = k - 1;
+         if (l >= nblock) break;
+         while (!ISSET_BH(k) && UNALIGNED_BH(k)) k++;
+         if (!ISSET_BH(k)) {
+            while (WORD_BH(k) == 0x00000000) k += 32;
+            while (!ISSET_BH(k)) k++;
+         }
+         r = k - 1;
+         if (r >= nblock) break;
+
+         /*-- now [l, r] bracket current bucket --*/
+         if (r > l) {
+            nNotDone += (r - l + 1);
+            fallbackQSort3 ( fmap, eclass, l, r );
+
+            /*-- scan bucket and generate header bits-- */
+            cc = -1;
+            for (i = l; i <= r; i++) {
+               cc1 = eclass[fmap[i]];
+               if (cc != cc1) { SET_BH(i); cc = cc1; };
+            }
+         }
+      }
+
+      if (verb >= 4) 
+         VPrintf1 ( "%6d unresolved strings\n", nNotDone );
+
+      H *= 2;
+      if (H > nblock || nNotDone == 0) break;
+   }
+
+   /*-- 
+      Reconstruct the original block in
+      eclass8 [0 .. nblock-1], since the
+      previous phase destroyed it.
+   --*/
+   if (verb >= 4)
+      VPrintf0 ( "        reconstructing block ...\n" );
+   j = 0;
+   for (i = 0; i < nblock; i++) {
+      while (ftabCopy[j] == 0) j++;
+      ftabCopy[j]--;
+      eclass8[fmap[i]] = (UChar)j;
+   }
+   AssertH ( j < 256, 1005 );
+}
+
+#undef       SET_BH
+#undef     CLEAR_BH
+#undef     ISSET_BH
+#undef      WORD_BH
+#undef UNALIGNED_BH
+
+
+/*---------------------------------------------*/
+/*--- The main, O(N^2 log(N)) sorting       ---*/
+/*--- algorithm.  Faster for "normal"       ---*/
+/*--- non-repetitive blocks.                ---*/
+/*---------------------------------------------*/
+
+/*---------------------------------------------*/
+static
+__inline__
+Bool mainGtU ( UInt32  i1, 
+               UInt32  i2,
+               UChar*  block, 
+               UInt16* quadrant,
+               UInt32  nblock,
+               Int32*  budget )
+{
+   Int32  k;
+   UChar  c1, c2;
+   UInt16 s1, s2;
+
+   AssertD ( i1 != i2, "mainGtU" );
+   /* 1 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 2 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 3 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 4 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 5 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 6 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 7 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 8 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 9 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 10 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 11 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 12 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+
+   k = nblock + 8;
+
+   do {
+      /* 1 */
+      c1 = block[i1]; c2 = block[i2];
+      if (c1 != c2) return (c1 > c2);
+      s1 = quadrant[i1]; s2 = quadrant[i2];
+      if (s1 != s2) return (s1 > s2);
+      i1++; i2++;
+      /* 2 */
+      c1 = block[i1]; c2 = block[i2];
+      if (c1 != c2) return (c1 > c2);
+      s1 = quadrant[i1]; s2 = quadrant[i2];
+      if (s1 != s2) return (s1 > s2);
+      i1++; i2++;
+      /* 3 */
+      c1 = block[i1]; c2 = block[i2];
+      if (c1 != c2) return (c1 > c2);
+      s1 = quadrant[i1]; s2 = quadrant[i2];
+      if (s1 != s2) return (s1 > s2);
+      i1++; i2++;
+      /* 4 */
+      c1 = block[i1]; c2 = block[i2];
+      if (c1 != c2) return (c1 > c2);
+      s1 = quadrant[i1]; s2 = quadrant[i2];
+      if (s1 != s2) return (s1 > s2);
+      i1++; i2++;
+      /* 5 */
+      c1 = block[i1]; c2 = block[i2];
+      if (c1 != c2) return (c1 > c2);
+      s1 = quadrant[i1]; s2 = quadrant[i2];
+      if (s1 != s2) return (s1 > s2);
+      i1++; i2++;
+      /* 6 */
+      c1 = block[i1]; c2 = block[i2];
+      if (c1 != c2) return (c1 > c2);
+      s1 = quadrant[i1]; s2 = quadrant[i2];
+      if (s1 != s2) return (s1 > s2);
+      i1++; i2++;
+      /* 7 */
+      c1 = block[i1]; c2 = block[i2];
+      if (c1 != c2) return (c1 > c2);
+      s1 = quadrant[i1]; s2 = quadrant[i2];
+      if (s1 != s2) return (s1 > s2);
+      i1++; i2++;
+      /* 8 */
+      c1 = block[i1]; c2 = block[i2];
+      if (c1 != c2) return (c1 > c2);
+      s1 = quadrant[i1]; s2 = quadrant[i2];
+      if (s1 != s2) return (s1 > s2);
+      i1++; i2++;
+
+      if (i1 >= nblock) i1 -= nblock;
+      if (i2 >= nblock) i2 -= nblock;
+
+      k -= 8;
+      (*budget)--;
+   }
+      while (k >= 0);
+
+   return False;
+}
+
+
+/*---------------------------------------------*/
+/*--
+   Knuth's increments seem to work better
+   than Incerpi-Sedgewick here.  Possibly
+   because the number of elems to sort is
+   usually small, typically <= 20.
+--*/
+static
+Int32 incs[14] = { 1, 4, 13, 40, 121, 364, 1093, 3280,
+                   9841, 29524, 88573, 265720,
+                   797161, 2391484 };
+
+static
+void mainSimpleSort ( UInt32* ptr,
+                      UChar*  block,
+                      UInt16* quadrant,
+                      Int32   nblock,
+                      Int32   lo, 
+                      Int32   hi, 
+                      Int32   d,
+                      Int32*  budget )
+{
+   Int32 i, j, h, bigN, hp;
+   UInt32 v;
+
+   bigN = hi - lo + 1;
+   if (bigN < 2) return;
+
+   hp = 0;
+   while (incs[hp] < bigN) hp++;
+   hp--;
+
+   for (; hp >= 0; hp--) {
+      h = incs[hp];
+
+      i = lo + h;
+      while (True) {
+
+         /*-- copy 1 --*/
+         if (i > hi) break;
+         v = ptr[i];
+         j = i;
+         while ( mainGtU ( 
+                    ptr[j-h]+d, v+d, block, quadrant, nblock, budget 
+                 ) ) {
+            ptr[j] = ptr[j-h];
+            j = j - h;
+            if (j <= (lo + h - 1)) break;
+         }
+         ptr[j] = v;
+         i++;
+
+         /*-- copy 2 --*/
+         if (i > hi) break;
+         v = ptr[i];
+         j = i;
+         while ( mainGtU ( 
+                    ptr[j-h]+d, v+d, block, quadrant, nblock, budget 
+                 ) ) {
+            ptr[j] = ptr[j-h];
+            j = j - h;
+            if (j <= (lo + h - 1)) break;
+         }
+         ptr[j] = v;
+         i++;
+
+         /*-- copy 3 --*/
+         if (i > hi) break;
+         v = ptr[i];
+         j = i;
+         while ( mainGtU ( 
+                    ptr[j-h]+d, v+d, block, quadrant, nblock, budget 
+                 ) ) {
+            ptr[j] = ptr[j-h];
+            j = j - h;
+            if (j <= (lo + h - 1)) break;
+         }
+         ptr[j] = v;
+         i++;
+
+         if (*budget < 0) return;
+      }
+   }
+}
+
+
+/*---------------------------------------------*/
+/*--
+   The following is an implementation of
+   an elegant 3-way quicksort for strings,
+   described in a paper "Fast Algorithms for
+   Sorting and Searching Strings", by Robert
+   Sedgewick and Jon L. Bentley.
+--*/
+
+#define mswap(zz1, zz2) \
+   { Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; }
+
+#define mvswap(zzp1, zzp2, zzn)       \
+{                                     \
+   Int32 yyp1 = (zzp1);               \
+   Int32 yyp2 = (zzp2);               \
+   Int32 yyn  = (zzn);                \
+   while (yyn > 0) {                  \
+      mswap(ptr[yyp1], ptr[yyp2]);    \
+      yyp1++; yyp2++; yyn--;          \
+   }                                  \
+}
+
+static 
+__inline__
+UChar mmed3 ( UChar a, UChar b, UChar c )
+{
+   UChar t;
+   if (a > b) { t = a; a = b; b = t; };
+   if (b > c) { 
+      b = c;
+      if (a > b) b = a;
+   }
+   return b;
+}
+
+#define mmin(a,b) ((a) < (b)) ? (a) : (b)
+
+#define mpush(lz,hz,dz) { stackLo[sp] = lz; \
+                          stackHi[sp] = hz; \
+                          stackD [sp] = dz; \
+                          sp++; }
+
+#define mpop(lz,hz,dz) { sp--;             \
+                         lz = stackLo[sp]; \
+                         hz = stackHi[sp]; \
+                         dz = stackD [sp]; }
+
+
+#define mnextsize(az) (nextHi[az]-nextLo[az])
+
+#define mnextswap(az,bz)                                        \
+   { Int32 tz;                                                  \
+     tz = nextLo[az]; nextLo[az] = nextLo[bz]; nextLo[bz] = tz; \
+     tz = nextHi[az]; nextHi[az] = nextHi[bz]; nextHi[bz] = tz; \
+     tz = nextD [az]; nextD [az] = nextD [bz]; nextD [bz] = tz; }
+
+
+#define MAIN_QSORT_SMALL_THRESH 20
+#define MAIN_QSORT_DEPTH_THRESH (BZ_N_RADIX + BZ_N_QSORT)
+#define MAIN_QSORT_STACK_SIZE 100
+
+static
+void mainQSort3 ( UInt32* ptr,
+                  UChar*  block,
+                  UInt16* quadrant,
+                  Int32   nblock,
+                  Int32   loSt, 
+                  Int32   hiSt, 
+                  Int32   dSt,
+                  Int32*  budget )
+{
+   Int32 unLo, unHi, ltLo, gtHi, n, m, med;
+   Int32 sp, lo, hi, d;
+
+   Int32 stackLo[MAIN_QSORT_STACK_SIZE];
+   Int32 stackHi[MAIN_QSORT_STACK_SIZE];
+   Int32 stackD [MAIN_QSORT_STACK_SIZE];
+
+   Int32 nextLo[3];
+   Int32 nextHi[3];
+   Int32 nextD [3];
+
+   sp = 0;
+   mpush ( loSt, hiSt, dSt );
+
+   while (sp > 0) {
+
+      AssertH ( sp < MAIN_QSORT_STACK_SIZE - 2, 1001 );
+
+      mpop ( lo, hi, d );
+      if (hi - lo < MAIN_QSORT_SMALL_THRESH || 
+          d > MAIN_QSORT_DEPTH_THRESH) {
+         mainSimpleSort ( ptr, block, quadrant, nblock, lo, hi, d, budget );
+         if (*budget < 0) return;
+         continue;
+      }
+
+      med = (Int32) 
+            mmed3 ( block[ptr[ lo         ]+d],
+                    block[ptr[ hi         ]+d],
+                    block[ptr[ (lo+hi)>>1 ]+d] );
+
+      unLo = ltLo = lo;
+      unHi = gtHi = hi;
+
+      while (True) {
+         while (True) {
+            if (unLo > unHi) break;
+            n = ((Int32)block[ptr[unLo]+d]) - med;
+            if (n == 0) { 
+               mswap(ptr[unLo], ptr[ltLo]); 
+               ltLo++; unLo++; continue; 
+            };
+            if (n >  0) break;
+            unLo++;
+         }
+         while (True) {
+            if (unLo > unHi) break;
+            n = ((Int32)block[ptr[unHi]+d]) - med;
+            if (n == 0) { 
+               mswap(ptr[unHi], ptr[gtHi]); 
+               gtHi--; unHi--; continue; 
+            };
+            if (n <  0) break;
+            unHi--;
+         }
+         if (unLo > unHi) break;
+         mswap(ptr[unLo], ptr[unHi]); unLo++; unHi--;
+      }
+
+      AssertD ( unHi == unLo-1, "mainQSort3(2)" );
+
+      if (gtHi < ltLo) {
+         mpush(lo, hi, d+1 );
+         continue;
+      }
+
+      n = mmin(ltLo-lo, unLo-ltLo); mvswap(lo, unLo-n, n);
+      m = mmin(hi-gtHi, gtHi-unHi); mvswap(unLo, hi-m+1, m);
+
+      n = lo + unLo - ltLo - 1;
+      m = hi - (gtHi - unHi) + 1;
+
+      nextLo[0] = lo;  nextHi[0] = n;   nextD[0] = d;
+      nextLo[1] = m;   nextHi[1] = hi;  nextD[1] = d;
+      nextLo[2] = n+1; nextHi[2] = m-1; nextD[2] = d+1;
+
+      if (mnextsize(0) < mnextsize(1)) mnextswap(0,1);
+      if (mnextsize(1) < mnextsize(2)) mnextswap(1,2);
+      if (mnextsize(0) < mnextsize(1)) mnextswap(0,1);
+
+      AssertD (mnextsize(0) >= mnextsize(1), "mainQSort3(8)" );
+      AssertD (mnextsize(1) >= mnextsize(2), "mainQSort3(9)" );
+
+      mpush (nextLo[0], nextHi[0], nextD[0]);
+      mpush (nextLo[1], nextHi[1], nextD[1]);
+      mpush (nextLo[2], nextHi[2], nextD[2]);
+   }
+}
+
+#undef mswap
+#undef mvswap
+#undef mpush
+#undef mpop
+#undef mmin
+#undef mnextsize
+#undef mnextswap
+#undef MAIN_QSORT_SMALL_THRESH
+#undef MAIN_QSORT_DEPTH_THRESH
+#undef MAIN_QSORT_STACK_SIZE
+
+
+/*---------------------------------------------*/
+/* Pre:
+      nblock > N_OVERSHOOT
+      block32 exists for [0 .. nblock-1 +N_OVERSHOOT]
+      ((UChar*)block32) [0 .. nblock-1] holds block
+      ptr exists for [0 .. nblock-1]
+
+   Post:
+      ((UChar*)block32) [0 .. nblock-1] holds block
+      All other areas of block32 destroyed
+      ftab [0 .. 65536 ] destroyed
+      ptr [0 .. nblock-1] holds sorted order
+      if (*budget < 0), sorting was abandoned
+*/
+
+#define BIGFREQ(b) (ftab[((b)+1) << 8] - ftab[(b) << 8])
+#define SETMASK (1 << 21)
+#define CLEARMASK (~(SETMASK))
+
+static
+void mainSort ( UInt32* ptr, 
+                UChar*  block,
+                UInt16* quadrant, 
+                UInt32* ftab,
+                Int32   nblock,
+                Int32   verb,
+                Int32*  budget )
+{
+   Int32  i, j, k, ss, sb;
+   Int32  runningOrder[256];
+   Bool   bigDone[256];
+   Int32  copyStart[256];
+   Int32  copyEnd  [256];
+   UChar  c1;
+   Int32  numQSorted;
+   UInt16 s;
+   if (verb >= 4) VPrintf0 ( "        main sort initialise ...\n" );
+
+   /*-- set up the 2-byte frequency table --*/
+   for (i = 65536; i >= 0; i--) ftab[i] = 0;
+
+   j = block[0] << 8;
+   i = nblock-1;
+   for (; i >= 3; i -= 4) {
+      quadrant[i] = 0;
+      j = (j >> 8) | ( ((UInt16)block[i]) << 8);
+      ftab[j]++;
+      quadrant[i-1] = 0;
+      j = (j >> 8) | ( ((UInt16)block[i-1]) << 8);
+      ftab[j]++;
+      quadrant[i-2] = 0;
+      j = (j >> 8) | ( ((UInt16)block[i-2]) << 8);
+      ftab[j]++;
+      quadrant[i-3] = 0;
+      j = (j >> 8) | ( ((UInt16)block[i-3]) << 8);
+      ftab[j]++;
+   }
+   for (; i >= 0; i--) {
+      quadrant[i] = 0;
+      j = (j >> 8) | ( ((UInt16)block[i]) << 8);
+      ftab[j]++;
+   }
+
+   /*-- (emphasises close relationship of block & quadrant) --*/
+   for (i = 0; i < BZ_N_OVERSHOOT; i++) {
+      block   [nblock+i] = block[i];
+      quadrant[nblock+i] = 0;
+   }
+
+   if (verb >= 4) VPrintf0 ( "        bucket sorting ...\n" );
+
+   /*-- Complete the initial radix sort --*/
+   for (i = 1; i <= 65536; i++) ftab[i] += ftab[i-1];
+
+   s = block[0] << 8;
+   i = nblock-1;
+   for (; i >= 3; i -= 4) {
+      s = (s >> 8) | (block[i] << 8);
+      j = ftab[s] -1;
+      ftab[s] = j;
+      ptr[j] = i;
+      s = (s >> 8) | (block[i-1] << 8);
+      j = ftab[s] -1;
+      ftab[s] = j;
+      ptr[j] = i-1;
+      s = (s >> 8) | (block[i-2] << 8);
+      j = ftab[s] -1;
+      ftab[s] = j;
+      ptr[j] = i-2;
+      s = (s >> 8) | (block[i-3] << 8);
+      j = ftab[s] -1;
+      ftab[s] = j;
+      ptr[j] = i-3;
+   }
+   for (; i >= 0; i--) {
+      s = (s >> 8) | (block[i] << 8);
+      j = ftab[s] -1;
+      ftab[s] = j;
+      ptr[j] = i;
+   }
+
+   /*--
+      Now ftab contains the first loc of every small bucket.
+      Calculate the running order, from smallest to largest
+      big bucket.
+   --*/
+   for (i = 0; i <= 255; i++) {
+      bigDone     [i] = False;
+      runningOrder[i] = i;
+   }
+
+   {
+      Int32 vv;
+      Int32 h = 1;
+      do h = 3 * h + 1; while (h <= 256);
+      do {
+         h = h / 3;
+         for (i = h; i <= 255; i++) {
+            vv = runningOrder[i];
+            j = i;
+            while ( BIGFREQ(runningOrder[j-h]) > BIGFREQ(vv) ) {
+               runningOrder[j] = runningOrder[j-h];
+               j = j - h;
+               if (j <= (h - 1)) goto zero;
+            }
+            zero:
+            runningOrder[j] = vv;
+         }
+      } while (h != 1);
+   }
+
+   /*--
+      The main sorting loop.
+   --*/
+
+   numQSorted = 0;
+
+   for (i = 0; i <= 255; i++) {
+
+      /*--
+         Process big buckets, starting with the least full.
+         Basically this is a 3-step process in which we call
+         mainQSort3 to sort the small buckets [ss, j], but
+         also make a big effort to avoid the calls if we can.
+      --*/
+      ss = runningOrder[i];
+
+      /*--
+         Step 1:
+         Complete the big bucket [ss] by quicksorting
+         any unsorted small buckets [ss, j], for j != ss.  
+         Hopefully previous pointer-scanning phases have already
+         completed many of the small buckets [ss, j], so
+         we don't have to sort them at all.
+      --*/
+      for (j = 0; j <= 255; j++) {
+         if (j != ss) {
+            sb = (ss << 8) + j;
+            if ( ! (ftab[sb] & SETMASK) ) {
+               Int32 lo = ftab[sb]   & CLEARMASK;
+               Int32 hi = (ftab[sb+1] & CLEARMASK) - 1;
+               if (hi > lo) {
+                  if (verb >= 4)
+                     VPrintf4 ( "        qsort [0x%x, 0x%x]   "
+                                "done %d   this %d\n",
+                                ss, j, numQSorted, hi - lo + 1 );
+                  mainQSort3 ( 
+                     ptr, block, quadrant, nblock, 
+                     lo, hi, BZ_N_RADIX, budget 
+                  );   
+                  numQSorted += (hi - lo + 1);
+                  if (*budget < 0) return;
+               }
+            }
+            ftab[sb] |= SETMASK;
+         }
+      }
+
+      AssertH ( !bigDone[ss], 1006 );
+
+      /*--
+         Step 2:
+         Now scan this big bucket [ss] so as to synthesise the
+         sorted order for small buckets [t, ss] for all t,
+         including, magically, the bucket [ss,ss] too.
+         This will avoid doing Real Work in subsequent Step 1's.
+      --*/
+      {
+         for (j = 0; j <= 255; j++) {
+            copyStart[j] =  ftab[(j << 8) + ss]     & CLEARMASK;
+            copyEnd  [j] = (ftab[(j << 8) + ss + 1] & CLEARMASK) - 1;
+         }
+         for (j = ftab[ss << 8] & CLEARMASK; j < copyStart[ss]; j++) {
+            k = ptr[j]-1; if (k < 0) k += nblock;
+            c1 = block[k];
+            if (!bigDone[c1])
+               ptr[ copyStart[c1]++ ] = k;
+         }
+         for (j = (ftab[(ss+1) << 8] & CLEARMASK) - 1; j > copyEnd[ss]; j--) {
+            k = ptr[j]-1; if (k < 0) k += nblock;
+            c1 = block[k];
+            if (!bigDone[c1]) 
+               ptr[ copyEnd[c1]-- ] = k;
+         }
+      }
+
+      AssertH ( (copyStart[ss]-1 == copyEnd[ss])
+                || 
+                /* Extremely rare case missing in bzip2-1.0.0 and 1.0.1.
+                   Necessity for this case is demonstrated by compressing 
+                   a sequence of approximately 48.5 million of character 
+                   251; 1.0.0/1.0.1 will then die here. */
+                (copyStart[ss] == 0 && copyEnd[ss] == nblock-1),
+                1007 )
+
+      for (j = 0; j <= 255; j++) ftab[(j << 8) + ss] |= SETMASK;
+
+      /*--
+         Step 3:
+         The [ss] big bucket is now done.  Record this fact,
+         and update the quadrant descriptors.  Remember to
+         update quadrants in the overshoot area too, if
+         necessary.  The "if (i < 255)" test merely skips
+         this updating for the last bucket processed, since
+         updating for the last bucket is pointless.
+
+         The quadrant array provides a way to incrementally
+         cache sort orderings, as they appear, so as to 
+         make subsequent comparisons in fullGtU() complete
+         faster.  For repetitive blocks this makes a big
+         difference (but not big enough to be able to avoid
+         the fallback sorting mechanism, exponential radix sort).
+
+         The precise meaning is: at all times:
+
+            for 0 <= i < nblock and 0 <= j <= nblock
+
+            if block[i] != block[j], 
+
+               then the relative values of quadrant[i] and 
+                    quadrant[j] are meaningless.
+
+               else {
+                  if quadrant[i] < quadrant[j]
+                     then the string starting at i lexicographically
+                     precedes the string starting at j
+
+                  else if quadrant[i] > quadrant[j]
+                     then the string starting at j lexicographically
+                     precedes the string starting at i
+
+                  else
+                     the relative ordering of the strings starting
+                     at i and j has not yet been determined.
+               }
+      --*/
+      bigDone[ss] = True;
+
+      if (i < 255) {
+         Int32 bbStart  = ftab[ss << 8] & CLEARMASK;
+         Int32 bbSize   = (ftab[(ss+1) << 8] & CLEARMASK) - bbStart;
+         Int32 shifts   = 0;
+
+         while ((bbSize >> shifts) > 65534) shifts++;
+
+         for (j = bbSize-1; j >= 0; j--) {
+            Int32 a2update     = ptr[bbStart + j];
+            UInt16 qVal        = (UInt16)(j >> shifts);
+            quadrant[a2update] = qVal;
+            if (a2update < BZ_N_OVERSHOOT)
+               quadrant[a2update + nblock] = qVal;
+         }
+         AssertH ( ((bbSize-1) >> shifts) <= 65535, 1002 );
+      }
+
+   }
+
+   if (verb >= 4)
+      VPrintf3 ( "        %d pointers, %d sorted, %d scanned\n",
+                 nblock, numQSorted, nblock - numQSorted );
+}
+
+#undef BIGFREQ
+#undef SETMASK
+#undef CLEARMASK
+
+
+/*---------------------------------------------*/
+/* Pre:
+      nblock > 0
+      arr2 exists for [0 .. nblock-1 +N_OVERSHOOT]
+      ((UChar*)arr2)  [0 .. nblock-1] holds block
+      arr1 exists for [0 .. nblock-1]
+
+   Post:
+      ((UChar*)arr2) [0 .. nblock-1] holds block
+      All other areas of block destroyed
+      ftab [ 0 .. 65536 ] destroyed
+      arr1 [0 .. nblock-1] holds sorted order
+*/
+void BZ2_blockSort ( EState* s )
+{
+   UInt32* ptr    = s->ptr; 
+   UChar*  block  = s->block;
+   UInt32* ftab   = s->ftab;
+   Int32   nblock = s->nblock;
+   Int32   verb   = s->verbosity;
+   Int32   wfact  = s->workFactor;
+   UInt16* quadrant;
+   Int32   budget;
+   Int32   budgetInit;
+   Int32   i;
+
+   if (nblock < 10000) {
+      fallbackSort ( s->arr1, s->arr2, ftab, nblock, verb );
+   } else {
+      /* Calculate the location for quadrant, remembering to get
+         the alignment right.  Assumes that &(block[0]) is at least
+         2-byte aligned -- this should be ok since block is really
+         the first section of arr2.
+      */
+      i = nblock+BZ_N_OVERSHOOT;
+      if (i & 1) i++;
+      quadrant = (UInt16*)(&(block[i]));
+
+      /* (wfact-1) / 3 puts the default-factor-30
+         transition point at very roughly the same place as 
+         with v0.1 and v0.9.0.  
+         Not that it particularly matters any more, since the
+         resulting compressed stream is now the same regardless
+         of whether or not we use the main sort or fallback sort.
+      */
+      if (wfact < 1  ) wfact = 1;
+      if (wfact > 100) wfact = 100;
+      budgetInit = nblock * ((wfact-1) / 3);
+      budget = budgetInit;
+
+      mainSort ( ptr, block, quadrant, ftab, nblock, verb, &budget );
+      if (verb >= 3) 
+         VPrintf3 ( "      %d work, %d block, ratio %5.2f\n",
+                    budgetInit - budget,
+                    nblock, 
+                    (float)(budgetInit - budget) /
+                    (float)(nblock==0 ? 1 : nblock) ); 
+      if (budget < 0) {
+         if (verb >= 2)
+            VPrintf0 ( "    too repetitive; using fallback"
+                       " sorting algorithm\n" );
+         fallbackSort ( s->arr1, s->arr2, ftab, nblock, verb );
+      }
+   }
+
+   s->origPtr = -1;
+   for (i = 0; i < s->nblock; i++)
+      if (ptr[i] == 0)
+         { s->origPtr = i; break; };
+
+   AssertH( s->origPtr != -1, 1003 );
+}
+
+
+/*-------------------------------------------------------------*/
+/*--- end                                       blocksort.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/3party_sloynik/bzip2/blocksort.o b/3party_sloynik/bzip2/blocksort.o
new file mode 100644
index 0000000000000000000000000000000000000000..22b3a7bb282d708c99a6aed71a5c75bc7fca1797
GIT binary patch
literal 22928
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 
+
+
+
+ 
+
+
+
+ 
+ 
+   
+    
+      
+     
+  
+
+
+
+
+set       toc,title
+book      toc,title,figure,table,example,equation
+chapter   toc,title
+section   toc
+sect1     toc
+sect2     toc
+sect3     toc
+sect4     nop
+sect5     nop
+qandaset  toc
+qandadiv  nop
+appendix  toc,title
+article/appendix  nop
+article   toc,title
+preface   toc,title
+reference toc,title
+
+
+
diff --git a/3party_sloynik/bzip2/bz-fo.xsl b/3party_sloynik/bzip2/bz-fo.xsl
new file mode 100644
index 0000000000..ba3e30123f
--- /dev/null
+++ b/3party_sloynik/bzip2/bz-fo.xsl
@@ -0,0 +1,276 @@
+ 
+
+
+
+
+
+
+
+
+
+
+
+
+      
+     
+   
+
+
+
+
+ 
+
+
+
+
+
+
+  
+
+
+
+
+  blue
+
+
+
+
+  
+    
+  
+
+
+
+  
+    
+  
+
+
+
+
+  
+  
+  
+    
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+        
+      
+    
+    
+          
+    
+  
+  
+    
+      
+        
+      
+    
+    
+      
+        
+      
+    
+  
+
+
+
+
+  
+  
+  
+    
+      
+        
+      
+    
+    
+          
+    
+  
+  
+    
+      
+        
+      
+    
+    
+      
+        
+      
+    
+  
+
+
+
+
+
+  
+    
+  
+    
+  
+  
+    
+      
+    
+  
+
+
+
+
+
+  
+  
+  
+  
+    
+      0pt
+    
+  
+  
+    
+      
+      
+      
+        
+          
+            baseline
+             
+               
+            
+          
+          
+            baseline
+            
+              
+                
+                
+                
+                
+              
+            
+          
+        
+      
+    
+  
+  
+  
+    
+      
+    
+    
+      
+    
+    
+      
+    
+  
+
+
+
+
+
+  
+  
+  
+  
+    
+      0pt
+    
+  
+  
+    
+      
+        
+        
+        
+      
+      
+      
+      
+        
+          
+            baseline
+            
+               
+            
+          
+          
+            baseline
+            
+              
+                
+                
+                
+                
+              
+            
+          
+        
+      
+    
+  
+  
+  
+    
+      
+    
+    
+      
+    
+    
+      
+    
+  
+
+
+
+
+
+
+  always
+  
+    
+  
+  
+    
+    pt
+  
+  
+    
+    pt
+  
+  false
+
+
+
+
diff --git a/3party_sloynik/bzip2/bz-html.xsl b/3party_sloynik/bzip2/bz-html.xsl
new file mode 100644
index 0000000000..1785fffbc9
--- /dev/null
+++ b/3party_sloynik/bzip2/bz-html.xsl
@@ -0,0 +1,20 @@
+ 
+ ]>
+
+
+
+
+
+
+
+
+
+
+  
+  
+
+
+
diff --git a/3party_sloynik/bzip2/bzdiff b/3party_sloynik/bzip2/bzdiff
new file mode 100644
index 0000000000..6fc38f92d2
--- /dev/null
+++ b/3party_sloynik/bzip2/bzdiff
@@ -0,0 +1,76 @@
+#!/bin/sh
+# sh is buggy on RS/6000 AIX 3.2. Replace above line with #!/bin/ksh
+
+# Bzcmp/diff wrapped for bzip2, 
+# adapted from zdiff by Philippe Troin  for Debian GNU/Linux.
+
+# Bzcmp and bzdiff are used to invoke the cmp or the  diff  pro-
+# gram  on compressed files.  All options specified are passed
+# directly to cmp or diff.  If only 1 file is specified,  then
+# the  files  compared  are file1 and an uncompressed file1.gz.
+# If two files are specified, then they are  uncompressed  (if
+# necessary) and fed to cmp or diff.  The exit status from cmp
+# or diff is preserved.
+
+PATH="/usr/bin:/bin:$PATH"; export PATH
+prog=`echo $0 | sed 's|.*/||'`
+case "$prog" in
+  *cmp) comp=${CMP-cmp}   ;;
+  *)    comp=${DIFF-diff} ;;
+esac
+
+OPTIONS=
+FILES=
+for ARG
+do
+    case "$ARG" in
+    -*)	OPTIONS="$OPTIONS $ARG";;
+     *)	if test -f "$ARG"; then
+            FILES="$FILES $ARG"
+        else
+            echo "${prog}: $ARG not found or not a regular file"
+	    exit 1
+        fi ;;
+    esac
+done
+if test -z "$FILES"; then
+	echo "Usage: $prog [${comp}_options] file [file]"
+	exit 1
+fi
+tmp=`mktemp ${TMPDIR:-/tmp}/bzdiff.XXXXXXXXXX` || {
+      echo 'cannot create a temporary file' >&2
+      exit 1
+}
+set $FILES
+if test $# -eq 1; then
+	FILE=`echo "$1" | sed 's/.bz2$//'`
+	bzip2 -cd "$FILE.bz2" | $comp $OPTIONS - "$FILE"
+	STAT="$?"
+
+elif test $# -eq 2; then
+	case "$1" in
+        *.bz2)
+                case "$2" in
+	        *.bz2)
+			F=`echo "$2" | sed 's|.*/||;s|.bz2$||'`
+                        bzip2 -cdfq "$2" > $tmp
+                        bzip2 -cdfq "$1" | $comp $OPTIONS - $tmp
+                        STAT="$?"
+			/bin/rm -f $tmp;;
+
+                *)      bzip2 -cdfq "$1" | $comp $OPTIONS - "$2"
+                        STAT="$?";;
+                esac;;
+        *)      case "$2" in
+	        *.bz2)
+                        bzip2 -cdfq "$2" | $comp $OPTIONS "$1" -
+                        STAT="$?";;
+                *)      $comp $OPTIONS "$1" "$2"
+                        STAT="$?";;
+                esac;;
+	esac
+        exit "$STAT"
+else
+	echo "Usage: $prog [${comp}_options] file [file]"
+	exit 1
+fi
diff --git a/3party_sloynik/bzip2/bzdiff.1 b/3party_sloynik/bzip2/bzdiff.1
new file mode 100644
index 0000000000..adb7a8e724
--- /dev/null
+++ b/3party_sloynik/bzip2/bzdiff.1
@@ -0,0 +1,47 @@
+\"Shamelessly copied from zmore.1 by Philippe Troin 
+\"for Debian GNU/Linux
+.TH BZDIFF 1
+.SH NAME
+bzcmp, bzdiff \- compare bzip2 compressed files
+.SH SYNOPSIS
+.B bzcmp
+[ cmp_options ] file1
+[ file2 ]
+.br
+.B bzdiff
+[ diff_options ] file1
+[ file2 ]
+.SH DESCRIPTION
+.I  Bzcmp
+and 
+.I bzdiff
+are used to invoke the
+.I cmp
+or the
+.I diff
+program on bzip2 compressed files.  All options specified are passed
+directly to
+.I cmp
+or
+.IR diff "."
+If only 1 file is specified, then the files compared are
+.I file1
+and an uncompressed
+.IR file1 ".bz2."
+If two files are specified, then they are uncompressed if necessary and fed to
+.I cmp
+or
+.IR diff "."
+The exit status from 
+.I cmp
+or
+.I diff
+is preserved.
+.SH "SEE ALSO"
+cmp(1), diff(1), bzmore(1), bzless(1), bzgrep(1), bzip2(1)
+.SH BUGS
+Messages from the
+.I cmp
+or
+.I diff
+programs refer to temporary filenames instead of those specified.
diff --git a/3party_sloynik/bzip2/bzgrep b/3party_sloynik/bzip2/bzgrep
new file mode 100644
index 0000000000..9a04b8337d
--- /dev/null
+++ b/3party_sloynik/bzip2/bzgrep
@@ -0,0 +1,75 @@
+#!/bin/sh
+
+# Bzgrep wrapped for bzip2, 
+# adapted from zgrep by Philippe Troin  for Debian GNU/Linux.
+## zgrep notice:
+## zgrep -- a wrapper around a grep program that decompresses files as needed
+## Adapted from a version sent by Charles Levert 
+
+PATH="/usr/bin:$PATH"; export PATH
+
+prog=`echo $0 | sed 's|.*/||'`
+case "$prog" in
+	*egrep)	grep=${EGREP-egrep}	;;
+	*fgrep)	grep=${FGREP-fgrep}	;;
+	*)	grep=${GREP-grep}	;;
+esac
+pat=""
+while test $# -ne 0; do
+  case "$1" in
+  -e | -f) opt="$opt $1"; shift; pat="$1"
+           if test "$grep" = grep; then  # grep is buggy with -e on SVR4
+             grep=egrep
+           fi;;
+  -A | -B) opt="$opt $1 $2"; shift;;
+  -*)	   opt="$opt $1";;
+   *)      if test -z "$pat"; then
+	     pat="$1"
+	   else
+	     break;
+           fi;;
+  esac
+  shift
+done
+
+if test -z "$pat"; then
+  echo "grep through bzip2 files"
+  echo "usage: $prog [grep_options] pattern [files]"
+  exit 1
+fi
+
+list=0
+silent=0
+op=`echo "$opt" | sed -e 's/ //g' -e 's/-//g'`
+case "$op" in
+  *l*) list=1
+esac
+case "$op" in
+  *h*) silent=1
+esac
+
+if test $# -eq 0; then
+  bzip2 -cdfq | $grep $opt "$pat"
+  exit $?
+fi
+
+res=0
+for i do
+  if test -f "$i"; then :; else if test -f "$i.bz2"; then i="$i.bz2"; fi; fi
+  if test $list -eq 1; then
+    bzip2 -cdfq "$i" | $grep $opt "$pat" 2>&1 > /dev/null && echo $i
+    r=$?
+  elif test $# -eq 1 -o $silent -eq 1; then
+    bzip2 -cdfq "$i" | $grep $opt "$pat"
+    r=$?
+  else
+    j=${i//\\/\\\\}
+    j=${j//|/\\|}
+    j=${j//&/\\&}
+    j=`printf "%s" "$j" | tr '\n' ' '`
+    bzip2 -cdfq "$i" | $grep $opt "$pat" | sed "s|^|${j}:|"
+    r=$?
+  fi
+  test "$r" -ne 0 && res="$r"
+done
+exit $res
diff --git a/3party_sloynik/bzip2/bzgrep.1 b/3party_sloynik/bzip2/bzgrep.1
new file mode 100644
index 0000000000..930af8c7fc
--- /dev/null
+++ b/3party_sloynik/bzip2/bzgrep.1
@@ -0,0 +1,56 @@
+\"Shamelessly copied from zmore.1 by Philippe Troin 
+\"for Debian GNU/Linux
+.TH BZGREP 1
+.SH NAME
+bzgrep, bzfgrep, bzegrep \- search possibly bzip2 compressed files for a regular expression
+.SH SYNOPSIS
+.B bzgrep
+[ grep_options ]
+.BI  [\ -e\ ] " pattern"
+.IR filename ".\|.\|."
+.br
+.B bzegrep
+[ egrep_options ]
+.BI  [\ -e\ ] " pattern"
+.IR filename ".\|.\|."
+.br
+.B bzfgrep
+[ fgrep_options ]
+.BI  [\ -e\ ] " pattern"
+.IR filename ".\|.\|."
+.SH DESCRIPTION
+.IR  Bzgrep
+is used to invoke the
+.I grep
+on bzip2-compressed files. All options specified are passed directly to
+.I grep.
+If no file is specified, then the standard input is decompressed
+if necessary and fed to grep.
+Otherwise the given files are uncompressed if necessary and fed to
+.I grep.
+.PP
+If
+.I bzgrep
+is invoked as
+.I bzegrep
+or
+.I bzfgrep
+then
+.I egrep
+or
+.I fgrep
+is used instead of
+.I grep.
+If the GREP environment variable is set,
+.I bzgrep
+uses it as the
+.I grep
+program to be invoked. For example:
+
+    for sh:  GREP=fgrep  bzgrep string files
+    for csh: (setenv GREP fgrep; bzgrep string files)
+.SH AUTHOR
+Charles Levert (charles@comm.polymtl.ca). Adapted to bzip2 by Philippe
+Troin  for Debian GNU/Linux.
+.SH "SEE ALSO"
+grep(1), egrep(1), fgrep(1), bzdiff(1), bzmore(1), bzless(1), bzip2(1)
diff --git a/3party_sloynik/bzip2/bzip.css b/3party_sloynik/bzip2/bzip.css
new file mode 100644
index 0000000000..43193d8db0
--- /dev/null
+++ b/3party_sloynik/bzip2/bzip.css
@@ -0,0 +1,74 @@
+/* Colours:
+#74240f  dark brown      h1, h2, h3, h4
+#336699  medium blue     links
+#339999  turquoise       link hover colour
+#202020  almost black    general text
+#761596  purple          md5sum text
+#626262  dark gray       pre border
+#eeeeee  very light gray pre background
+#f2f2f9  very light blue nav table background
+#3366cc  medium blue     nav table border
+*/
+
+a, a:link, a:visited, a:active { color: #336699; }
+a:hover { color: #339999; }
+
+body { font: 80%/126% sans-serif; }
+h1, h2, h3, h4 { color: #74240f; }
+
+dt { color: #336699; font-weight: bold }
+dd { 
+ margin-left: 1.5em; 
+ padding-bottom: 0.8em;
+}
+
+/* -- ruler -- */
+div.hr_blue { 
+  height:  3px; 
+  background:#ffffff url("/images/hr_blue.png") repeat-x; }
+div.hr_blue hr { display:none; }
+
+/* release styles */
+#release p { margin-top: 0.4em; }
+#release .md5sum { color: #761596; }
+
+
+/* ------ styles for docs|manuals|howto ------ */
+/* -- lists -- */
+ul  { 
+ margin:     0px 4px 16px 16px;
+ padding:    0px;
+ list-style: url("/images/li-blue.png"); 
+}
+ul li { 
+ margin-bottom: 10px;
+}
+ul ul	{ 
+ list-style-type:  none; 
+ list-style-image: none; 
+ margin-left:      0px; 
+}
+
+/* header / footer nav tables */
+table.nav {
+ border:     solid 1px #3366cc;
+ background: #f2f2f9;
+ background-color: #f2f2f9;
+ margin-bottom: 0.5em;
+}
+/* don't have underlined links in chunked nav menus */
+table.nav a { text-decoration: none; }
+table.nav a:hover { text-decoration: underline; }
+table.nav td { font-size: 85%; }
+
+code, tt, pre { font-size: 120%; }
+code, tt { color: #761596; }
+
+div.literallayout, pre.programlisting, pre.screen {
+ color:      #000000;
+ padding:    0.5em;
+ background: #eeeeee;
+ border:     1px solid #626262;
+ background-color: #eeeeee;
+ margin: 4px 0px 4px 0px; 
+}
diff --git a/3party_sloynik/bzip2/bzip2.1 b/3party_sloynik/bzip2/bzip2.1
new file mode 100644
index 0000000000..a313f2d5be
--- /dev/null
+++ b/3party_sloynik/bzip2/bzip2.1
@@ -0,0 +1,454 @@
+.PU
+.TH bzip2 1
+.SH NAME
+bzip2, bunzip2 \- a block-sorting file compressor, v1.0.4
+.br
+bzcat \- decompresses files to stdout
+.br
+bzip2recover \- recovers data from damaged bzip2 files
+
+.SH SYNOPSIS
+.ll +8
+.B bzip2
+.RB [ " \-cdfkqstvzVL123456789 " ]
+[
+.I "filenames \&..."
+]
+.ll -8
+.br
+.B bunzip2
+.RB [ " \-fkvsVL " ]
+[ 
+.I "filenames \&..."
+]
+.br
+.B bzcat
+.RB [ " \-s " ]
+[ 
+.I "filenames \&..."
+]
+.br
+.B bzip2recover
+.I "filename"
+
+.SH DESCRIPTION
+.I bzip2
+compresses files using the Burrows-Wheeler block sorting
+text compression algorithm, and Huffman coding.  Compression is
+generally considerably better than that achieved by more conventional
+LZ77/LZ78-based compressors, and approaches the performance of the PPM
+family of statistical compressors.
+
+The command-line options are deliberately very similar to 
+those of 
+.I GNU gzip, 
+but they are not identical.
+
+.I bzip2
+expects a list of file names to accompany the
+command-line flags.  Each file is replaced by a compressed version of
+itself, with the name "original_name.bz2".  
+Each compressed file
+has the same modification date, permissions, and, when possible,
+ownership as the corresponding original, so that these properties can
+be correctly restored at decompression time.  File name handling is
+naive in the sense that there is no mechanism for preserving original
+file names, permissions, ownerships or dates in filesystems which lack
+these concepts, or have serious file name length restrictions, such as
+MS-DOS.
+
+.I bzip2
+and
+.I bunzip2
+will by default not overwrite existing
+files.  If you want this to happen, specify the \-f flag.
+
+If no file names are specified,
+.I bzip2
+compresses from standard
+input to standard output.  In this case,
+.I bzip2
+will decline to
+write compressed output to a terminal, as this would be entirely
+incomprehensible and therefore pointless.
+
+.I bunzip2
+(or
+.I bzip2 \-d) 
+decompresses all
+specified files.  Files which were not created by 
+.I bzip2
+will be detected and ignored, and a warning issued.  
+.I bzip2
+attempts to guess the filename for the decompressed file 
+from that of the compressed file as follows:
+
+       filename.bz2    becomes   filename
+       filename.bz     becomes   filename
+       filename.tbz2   becomes   filename.tar
+       filename.tbz    becomes   filename.tar
+       anyothername    becomes   anyothername.out
+
+If the file does not end in one of the recognised endings, 
+.I .bz2, 
+.I .bz, 
+.I .tbz2
+or
+.I .tbz, 
+.I bzip2 
+complains that it cannot
+guess the name of the original file, and uses the original name
+with
+.I .out
+appended.
+
+As with compression, supplying no
+filenames causes decompression from 
+standard input to standard output.
+
+.I bunzip2 
+will correctly decompress a file which is the
+concatenation of two or more compressed files.  The result is the
+concatenation of the corresponding uncompressed files.  Integrity
+testing (\-t) 
+of concatenated 
+compressed files is also supported.
+
+You can also compress or decompress files to the standard output by
+giving the \-c flag.  Multiple files may be compressed and
+decompressed like this.  The resulting outputs are fed sequentially to
+stdout.  Compression of multiple files 
+in this manner generates a stream
+containing multiple compressed file representations.  Such a stream
+can be decompressed correctly only by
+.I bzip2 
+version 0.9.0 or
+later.  Earlier versions of
+.I bzip2
+will stop after decompressing
+the first file in the stream.
+
+.I bzcat
+(or
+.I bzip2 -dc) 
+decompresses all specified files to
+the standard output.
+
+.I bzip2
+will read arguments from the environment variables
+.I BZIP2
+and
+.I BZIP,
+in that order, and will process them
+before any arguments read from the command line.  This gives a 
+convenient way to supply default arguments.
+
+Compression is always performed, even if the compressed 
+file is slightly
+larger than the original.  Files of less than about one hundred bytes
+tend to get larger, since the compression mechanism has a constant
+overhead in the region of 50 bytes.  Random data (including the output
+of most file compressors) is coded at about 8.05 bits per byte, giving
+an expansion of around 0.5%.
+
+As a self-check for your protection, 
+.I 
+bzip2
+uses 32-bit CRCs to
+make sure that the decompressed version of a file is identical to the
+original.  This guards against corruption of the compressed data, and
+against undetected bugs in
+.I bzip2
+(hopefully very unlikely).  The
+chances of data corruption going undetected is microscopic, about one
+chance in four billion for each file processed.  Be aware, though, that
+the check occurs upon decompression, so it can only tell you that
+something is wrong.  It can't help you 
+recover the original uncompressed
+data.  You can use 
+.I bzip2recover
+to try to recover data from
+damaged files.
+
+Return values: 0 for a normal exit, 1 for environmental problems (file
+not found, invalid flags, I/O errors, &c), 2 to indicate a corrupt
+compressed file, 3 for an internal consistency error (eg, bug) which
+caused
+.I bzip2
+to panic.
+
+.SH OPTIONS
+.TP
+.B \-c --stdout
+Compress or decompress to standard output.
+.TP
+.B \-d --decompress
+Force decompression.  
+.I bzip2, 
+.I bunzip2 
+and
+.I bzcat 
+are
+really the same program, and the decision about what actions to take is
+done on the basis of which name is used.  This flag overrides that
+mechanism, and forces 
+.I bzip2
+to decompress.
+.TP
+.B \-z --compress
+The complement to \-d: forces compression, regardless of the
+invocation name.
+.TP
+.B \-t --test
+Check integrity of the specified file(s), but don't decompress them.
+This really performs a trial decompression and throws away the result.
+.TP
+.B \-f --force
+Force overwrite of output files.  Normally,
+.I bzip2 
+will not overwrite
+existing output files.  Also forces 
+.I bzip2 
+to break hard links
+to files, which it otherwise wouldn't do.
+
+bzip2 normally declines to decompress files which don't have the
+correct magic header bytes.  If forced (-f), however, it will pass
+such files through unmodified.  This is how GNU gzip behaves.
+.TP
+.B \-k --keep
+Keep (don't delete) input files during compression
+or decompression.
+.TP
+.B \-s --small
+Reduce memory usage, for compression, decompression and testing.  Files
+are decompressed and tested using a modified algorithm which only
+requires 2.5 bytes per block byte.  This means any file can be
+decompressed in 2300k of memory, albeit at about half the normal speed.
+
+During compression, \-s selects a block size of 200k, which limits
+memory use to around the same figure, at the expense of your compression
+ratio.  In short, if your machine is low on memory (8 megabytes or
+less), use \-s for everything.  See MEMORY MANAGEMENT below.
+.TP
+.B \-q --quiet
+Suppress non-essential warning messages.  Messages pertaining to
+I/O errors and other critical events will not be suppressed.
+.TP
+.B \-v --verbose
+Verbose mode -- show the compression ratio for each file processed.
+Further \-v's increase the verbosity level, spewing out lots of
+information which is primarily of interest for diagnostic purposes.
+.TP
+.B \-L --license -V --version
+Display the software version, license terms and conditions.
+.TP
+.B \-1 (or \-\-fast) to \-9 (or \-\-best)
+Set the block size to 100 k, 200 k ..  900 k when compressing.  Has no
+effect when decompressing.  See MEMORY MANAGEMENT below.
+The \-\-fast and \-\-best aliases are primarily for GNU gzip 
+compatibility.  In particular, \-\-fast doesn't make things
+significantly faster.  
+And \-\-best merely selects the default behaviour.
+.TP
+.B \--
+Treats all subsequent arguments as file names, even if they start
+with a dash.  This is so you can handle files with names beginning
+with a dash, for example: bzip2 \-- \-myfilename.
+.TP
+.B \--repetitive-fast --repetitive-best
+These flags are redundant in versions 0.9.5 and above.  They provided
+some coarse control over the behaviour of the sorting algorithm in
+earlier versions, which was sometimes useful.  0.9.5 and above have an
+improved algorithm which renders these flags irrelevant.
+
+.SH MEMORY MANAGEMENT
+.I bzip2 
+compresses large files in blocks.  The block size affects
+both the compression ratio achieved, and the amount of memory needed for
+compression and decompression.  The flags \-1 through \-9
+specify the block size to be 100,000 bytes through 900,000 bytes (the
+default) respectively.  At decompression time, the block size used for
+compression is read from the header of the compressed file, and
+.I bunzip2
+then allocates itself just enough memory to decompress
+the file.  Since block sizes are stored in compressed files, it follows
+that the flags \-1 to \-9 are irrelevant to and so ignored
+during decompression.
+
+Compression and decompression requirements, 
+in bytes, can be estimated as:
+
+       Compression:   400k + ( 8 x block size )
+
+       Decompression: 100k + ( 4 x block size ), or
+                      100k + ( 2.5 x block size )
+
+Larger block sizes give rapidly diminishing marginal returns.  Most of
+the compression comes from the first two or three hundred k of block
+size, a fact worth bearing in mind when using
+.I bzip2
+on small machines.
+It is also important to appreciate that the decompression memory
+requirement is set at compression time by the choice of block size.
+
+For files compressed with the default 900k block size,
+.I bunzip2
+will require about 3700 kbytes to decompress.  To support decompression
+of any file on a 4 megabyte machine, 
+.I bunzip2
+has an option to
+decompress using approximately half this amount of memory, about 2300
+kbytes.  Decompression speed is also halved, so you should use this
+option only where necessary.  The relevant flag is -s.
+
+In general, try and use the largest block size memory constraints allow,
+since that maximises the compression achieved.  Compression and
+decompression speed are virtually unaffected by block size.
+
+Another significant point applies to files which fit in a single block
+-- that means most files you'd encounter using a large block size.  The
+amount of real memory touched is proportional to the size of the file,
+since the file is smaller than a block.  For example, compressing a file
+20,000 bytes long with the flag -9 will cause the compressor to
+allocate around 7600k of memory, but only touch 400k + 20000 * 8 = 560
+kbytes of it.  Similarly, the decompressor will allocate 3700k but only
+touch 100k + 20000 * 4 = 180 kbytes.
+
+Here is a table which summarises the maximum memory usage for different
+block sizes.  Also recorded is the total compressed size for 14 files of
+the Calgary Text Compression Corpus totalling 3,141,622 bytes.  This
+column gives some feel for how compression varies with block size.
+These figures tend to understate the advantage of larger block sizes for
+larger files, since the Corpus is dominated by smaller files.
+
+           Compress   Decompress   Decompress   Corpus
+    Flag     usage      usage       -s usage     Size
+
+     -1      1200k       500k         350k      914704
+     -2      2000k       900k         600k      877703
+     -3      2800k      1300k         850k      860338
+     -4      3600k      1700k        1100k      846899
+     -5      4400k      2100k        1350k      845160
+     -6      5200k      2500k        1600k      838626
+     -7      6100k      2900k        1850k      834096
+     -8      6800k      3300k        2100k      828642
+     -9      7600k      3700k        2350k      828642
+
+.SH RECOVERING DATA FROM DAMAGED FILES
+.I bzip2
+compresses files in blocks, usually 900kbytes long.  Each
+block is handled independently.  If a media or transmission error causes
+a multi-block .bz2
+file to become damaged, it may be possible to
+recover data from the undamaged blocks in the file.
+
+The compressed representation of each block is delimited by a 48-bit
+pattern, which makes it possible to find the block boundaries with
+reasonable certainty.  Each block also carries its own 32-bit CRC, so
+damaged blocks can be distinguished from undamaged ones.
+
+.I bzip2recover
+is a simple program whose purpose is to search for
+blocks in .bz2 files, and write each block out into its own .bz2 
+file.  You can then use
+.I bzip2 
+\-t
+to test the
+integrity of the resulting files, and decompress those which are
+undamaged.
+
+.I bzip2recover
+takes a single argument, the name of the damaged file, 
+and writes a number of files "rec00001file.bz2",
+"rec00002file.bz2", etc, containing the  extracted  blocks.
+The  output  filenames  are  designed  so  that the use of
+wildcards in subsequent processing -- for example,  
+"bzip2 -dc  rec*file.bz2 > recovered_data" -- processes the files in
+the correct order.
+
+.I bzip2recover
+should be of most use dealing with large .bz2
+files,  as  these will contain many blocks.  It is clearly
+futile to use it on damaged single-block  files,  since  a
+damaged  block  cannot  be recovered.  If you wish to minimise 
+any potential data loss through media  or  transmission errors, 
+you might consider compressing with a smaller
+block size.
+
+.SH PERFORMANCE NOTES
+The sorting phase of compression gathers together similar strings in the
+file.  Because of this, files containing very long runs of repeated
+symbols, like "aabaabaabaab ..."  (repeated several hundred times) may
+compress more slowly than normal.  Versions 0.9.5 and above fare much
+better than previous versions in this respect.  The ratio between
+worst-case and average-case compression time is in the region of 10:1.
+For previous versions, this figure was more like 100:1.  You can use the
+\-vvvv option to monitor progress in great detail, if you want.
+
+Decompression speed is unaffected by these phenomena.
+
+.I bzip2
+usually allocates several megabytes of memory to operate
+in, and then charges all over it in a fairly random fashion.  This means
+that performance, both for compressing and decompressing, is largely
+determined by the speed at which your machine can service cache misses.
+Because of this, small changes to the code to reduce the miss rate have
+been observed to give disproportionately large performance improvements.
+I imagine 
+.I bzip2
+will perform best on machines with very large caches.
+
+.SH CAVEATS
+I/O error messages are not as helpful as they could be.
+.I bzip2
+tries hard to detect I/O errors and exit cleanly, but the details of
+what the problem is sometimes seem rather misleading.
+
+This manual page pertains to version 1.0.4 of
+.I bzip2.  
+Compressed data created by this version is entirely forwards and
+backwards compatible with the previous public releases, versions
+0.1pl2, 0.9.0, 0.9.5, 1.0.0, 1.0.1, 1.0.2 and 1.0.3, but with the following
+exception: 0.9.0 and above can correctly decompress multiple
+concatenated compressed files.  0.1pl2 cannot do this; it will stop
+after decompressing just the first file in the stream.
+
+.I bzip2recover
+versions prior to 1.0.2 used 32-bit integers to represent
+bit positions in compressed files, so they could not handle compressed
+files more than 512 megabytes long.  Versions 1.0.2 and above use
+64-bit ints on some platforms which support them (GNU supported
+targets, and Windows).  To establish whether or not bzip2recover was
+built with such a limitation, run it without arguments.  In any event
+you can build yourself an unlimited version if you can recompile it
+with MaybeUInt64 set to be an unsigned 64-bit integer.
+
+
+
+.SH AUTHOR
+Julian Seward, jsewardbzip.org.
+
+http://www.bzip.org
+
+The ideas embodied in
+.I bzip2
+are due to (at least) the following
+people: Michael Burrows and David Wheeler (for the block sorting
+transformation), David Wheeler (again, for the Huffman coder), Peter
+Fenwick (for the structured coding model in the original
+.I bzip,
+and many refinements), and Alistair Moffat, Radford Neal and Ian Witten
+(for the arithmetic coder in the original
+.I bzip).  
+I am much
+indebted for their help, support and advice.  See the manual in the
+source distribution for pointers to sources of documentation.  Christian
+von Roques encouraged me to look for faster sorting algorithms, so as to
+speed up compression.  Bela Lubkin encouraged me to improve the
+worst-case compression performance.  
+Donna Robinson XMLised the documentation.
+The bz* scripts are derived from those of GNU gzip.
+Many people sent patches, helped
+with portability problems, lent machines, gave advice and were generally
+helpful.
diff --git a/3party_sloynik/bzip2/bzip2.1.preformatted b/3party_sloynik/bzip2/bzip2.1.preformatted
new file mode 100644
index 0000000000..15e16e50ab
--- /dev/null
+++ b/3party_sloynik/bzip2/bzip2.1.preformatted
@@ -0,0 +1,399 @@
+bzip2(1)                                                 bzip2(1)
+
+
+
+NNAAMMEE
+       bzip2, bunzip2 − a blockâ€sorting file compressor, v1.0.4
+       bzcat − decompresses files to stdout
+       bzip2recover − recovers data from damaged bzip2 files
+
+
+SSYYNNOOPPSSIISS
+       bbzziipp22 [ −−ccddffkkqqssttvvzzVVLL112233445566778899 ] [ _f_i_l_e_n_a_m_e_s _._._.  ]
+       bbuunnzziipp22 [ −−ffkkvvssVVLL ] [ _f_i_l_e_n_a_m_e_s _._._.  ]
+       bbzzccaatt [ −−ss ] [ _f_i_l_e_n_a_m_e_s _._._.  ]
+       bbzziipp22rreeccoovveerr _f_i_l_e_n_a_m_e
+
+
+DDEESSCCRRIIPPTTIIOONN
+       _b_z_i_p_2  compresses  files  using  the Burrowsâ€Wheeler block
+       sorting text compression algorithm,  and  Huffman  coding.
+       Compression  is  generally  considerably  better than that
+       achieved by more conventional LZ77/LZ78â€based compressors,
+       and  approaches  the performance of the PPM family of sta­
+       tistical compressors.
+
+       The commandâ€line options are deliberately very similar  to
+       those of _G_N_U _g_z_i_p_, but they are not identical.
+
+       _b_z_i_p_2  expects  a list of file names to accompany the com­
+       mandâ€line flags.  Each file is replaced  by  a  compressed
+       version  of  itself,  with  the  name "original_name.bz2".
+       Each compressed file has the same modification date,  per­
+       missions, and, when possible, ownership as the correspond­
+       ing original, so that these properties  can  be  correctly
+       restored  at  decompression  time.   File name handling is
+       naive in the sense that there is no mechanism for preserv­
+       ing  original file names, permissions, ownerships or dates
+       in filesystems which lack these concepts, or have  serious
+       file name length restrictions, such as MSâ€DOS.
+
+       _b_z_i_p_2  and  _b_u_n_z_i_p_2 will by default not overwrite existing
+       files.  If you want this to happen, specify the −f flag.
+
+       If no file names  are  specified,  _b_z_i_p_2  compresses  from
+       standard  input  to  standard output.  In this case, _b_z_i_p_2
+       will decline to write compressed output to a terminal,  as
+       this  would  be  entirely  incomprehensible  and therefore
+       pointless.
+
+       _b_u_n_z_i_p_2 (or _b_z_i_p_2 _−_d_) decompresses  all  specified  files.
+       Files which were not created by _b_z_i_p_2 will be detected and
+       ignored, and a warning issued.  _b_z_i_p_2  attempts  to  guess
+       the  filename  for  the decompressed file from that of the
+       compressed file as follows:
+
+              filename.bz2    becomes   filename
+              filename.bz     becomes   filename
+              filename.tbz2   becomes   filename.tar
+              filename.tbz    becomes   filename.tar
+              anyothername    becomes   anyothername.out
+
+       If the file does not end in one of the recognised endings,
+       _._b_z_2_,  _._b_z_,  _._t_b_z_2 or _._t_b_z_, _b_z_i_p_2 complains that it cannot
+       guess the name of the original file, and uses the original
+       name with _._o_u_t appended.
+
+       As  with compression, supplying no filenames causes decom­
+       pression from standard input to standard output.
+
+       _b_u_n_z_i_p_2 will correctly decompress a file which is the con­
+       catenation of two or more compressed files.  The result is
+       the concatenation of the corresponding uncompressed files.
+       Integrity testing (−t) of concatenated compressed files is
+       also supported.
+
+       You can also compress or decompress files to the  standard
+       output  by giving the −c flag.  Multiple files may be com­
+       pressed and decompressed like this.  The resulting outputs
+       are  fed  sequentially to stdout.  Compression of multiple
+       files in this manner generates a stream containing  multi­
+       ple compressed file representations.  Such a stream can be
+       decompressed correctly only  by  _b_z_i_p_2  version  0.9.0  or
+       later.   Earlier  versions of _b_z_i_p_2 will stop after decom­
+       pressing the first file in the stream.
+
+       _b_z_c_a_t (or _b_z_i_p_2 _â€_d_c_) decompresses all specified  files  to
+       the standard output.
+
+       _b_z_i_p_2  will  read arguments from the environment variables
+       _B_Z_I_P_2 and _B_Z_I_P_, in  that  order,  and  will  process  them
+       before  any  arguments  read  from the command line.  This
+       gives a convenient way to supply default arguments.
+
+       Compression is always performed, even  if  the  compressed
+       file  is slightly larger than the original.  Files of less
+       than about one hundred bytes tend to get larger, since the
+       compression  mechanism  has  a  constant  overhead  in the
+       region of 50 bytes.  Random data (including the output  of
+       most  file  compressors)  is  coded at about 8.05 bits per
+       byte, giving an expansion of around 0.5%.
+
+       As a selfâ€check for your  protection,  _b_z_i_p_2  uses  32â€bit
+       CRCs  to make sure that the decompressed version of a file
+       is identical to the original.  This guards against corrup­
+       tion  of  the compressed data, and against undetected bugs
+       in _b_z_i_p_2 (hopefully very unlikely).  The chances  of  data
+       corruption  going  undetected  is  microscopic,  about one
+       chance in four billion for each file processed.  Be aware,
+       though,  that  the  check occurs upon decompression, so it
+       can only tell you that something is wrong.  It can’t  help
+       you  recover  the original uncompressed data.  You can use
+       _b_z_i_p_2_r_e_c_o_v_e_r to try to recover data from damaged files.
+
+       Return values: 0 for a normal exit,  1  for  environmental
+       problems  (file not found, invalid flags, I/O errors, &c),
+       2 to indicate a corrupt compressed file, 3 for an internal
+       consistency error (eg, bug) which caused _b_z_i_p_2 to panic.
+
+
+OOPPTTIIOONNSS
+       −−cc â€â€â€â€ssttddoouutt
+              Compress or decompress to standard output.
+
+       −−dd â€â€â€â€ddeeccoommpprreessss
+              Force  decompression.  _b_z_i_p_2_, _b_u_n_z_i_p_2 and _b_z_c_a_t are
+              really the same program,  and  the  decision  about
+              what  actions to take is done on the basis of which
+              name is used.  This flag overrides that  mechanism,
+              and forces _b_z_i_p_2 to decompress.
+
+       −−zz â€â€â€â€ccoommpprreessss
+              The   complement   to   −d:   forces   compression,
+              regardless of the invocation name.
+
+       −−tt â€â€â€â€tteesstt
+              Check integrity of the specified file(s), but don’t
+              decompress  them.   This  really  performs  a trial
+              decompression and throws away the result.
+
+       −−ff â€â€â€â€ffoorrccee
+              Force overwrite of output files.   Normally,  _b_z_i_p_2
+              will  not  overwrite  existing  output files.  Also
+              forces _b_z_i_p_2 to break hard links to files, which it
+              otherwise wouldn’t do.
+
+              bzip2  normally  declines to decompress files which
+              don’t have the  correct  magic  header  bytes.   If
+              forced  (â€f),  however,  it  will  pass  such files
+              through unmodified.  This is how GNU gzip  behaves.
+
+       −−kk â€â€â€â€kkeeeepp
+              Keep  (don’t delete) input files during compression
+              or decompression.
+
+       −−ss â€â€â€â€ssmmaallll
+              Reduce memory usage, for compression, decompression
+              and  testing.   Files  are  decompressed and tested
+              using a modified algorithm which only requires  2.5
+              bytes  per  block byte.  This means any file can be
+              decompressed in 2300k of memory,  albeit  at  about
+              half the normal speed.
+
+              During  compression,  −s  selects  a  block size of
+              200k, which limits memory use to  around  the  same
+              figure,  at  the expense of your compression ratio.
+              In short, if your  machine  is  low  on  memory  (8
+              megabytes  or  less),  use  −s for everything.  See
+              MEMORY MANAGEMENT below.
+
+       −−qq â€â€â€â€qquuiieett
+              Suppress nonâ€essential warning messages.   Messages
+              pertaining  to I/O errors and other critical events
+              will not be suppressed.
+
+       −−vv â€â€â€â€vveerrbboossee
+              Verbose mode â€â€ show the compression ratio for each
+              file  processed.   Further  −v’s  increase the ver­
+              bosity level, spewing out lots of information which
+              is primarily of interest for diagnostic purposes.
+
+       −−LL â€â€â€â€lliicceennssee â€â€VV â€â€â€â€vveerrssiioonn
+              Display  the  software  version,  license terms and
+              conditions.
+
+       −−11 ((oorr −−−−ffaasstt)) ttoo −−99 ((oorr −−−−bbeesstt))
+              Set the block size to 100 k, 200 k ..  900  k  when
+              compressing.   Has  no  effect  when decompressing.
+              See MEMORY MANAGEMENT below.  The −−fast and −−best
+              aliases  are  primarily for GNU gzip compatibility.
+              In particular, −−fast doesn’t make things  signifi­
+              cantly  faster.   And  −−best  merely  selects  the
+              default behaviour.
+
+       −−     Treats all subsequent arguments as file names, even
+              if they start with a dash.  This is so you can han­
+              dle files with names beginning  with  a  dash,  for
+              example: bzip2 −†−myfilename.
+
+       −−â€â€rreeppeettiittiivveeâ€â€ffaasstt â€â€â€â€rreeppeettiittiivveeâ€â€bbeesstt
+              These  flags  are  redundant  in versions 0.9.5 and
+              above.  They provided some coarse control over  the
+              behaviour  of the sorting algorithm in earlier ver­
+              sions, which was sometimes useful.  0.9.5 and above
+              have  an  improved  algorithm  which  renders these
+              flags irrelevant.
+
+
+MMEEMMOORRYY MMAANNAAGGEEMMEENNTT
+       _b_z_i_p_2 compresses large files in blocks.   The  block  size
+       affects  both  the  compression  ratio  achieved,  and the
+       amount of memory needed for compression and decompression.
+       The  flags  −1  through  −9  specify  the block size to be
+       100,000 bytes through 900,000 bytes (the default)  respec­
+       tively.   At  decompression  time, the block size used for
+       compression is read from  the  header  of  the  compressed
+       file, and _b_u_n_z_i_p_2 then allocates itself just enough memory
+       to decompress the file.  Since block sizes are  stored  in
+       compressed  files,  it follows that the flags −1 to −9 are
+       irrelevant to and so ignored during decompression.
+
+       Compression and decompression requirements, in bytes,  can
+       be estimated as:
+
+              Compression:   400k + ( 8 x block size )
+
+              Decompression: 100k + ( 4 x block size ), or
+                             100k + ( 2.5 x block size )
+
+       Larger  block  sizes  give  rapidly  diminishing  marginal
+       returns.  Most of the compression comes from the first two
+       or  three hundred k of block size, a fact worth bearing in
+       mind when using _b_z_i_p_2  on  small  machines.   It  is  also
+       important  to  appreciate  that  the  decompression memory
+       requirement is set at compression time by  the  choice  of
+       block size.
+
+       For  files  compressed  with  the default 900k block size,
+       _b_u_n_z_i_p_2 will require about 3700 kbytes to decompress.   To
+       support decompression of any file on a 4 megabyte machine,
+       _b_u_n_z_i_p_2 has an option to  decompress  using  approximately
+       half this amount of memory, about 2300 kbytes.  Decompres­
+       sion speed is also halved, so you should use  this  option
+       only where necessary.  The relevant flag is â€s.
+
+       In general, try and use the largest block size memory con­
+       straints  allow,  since  that  maximises  the  compression
+       achieved.   Compression and decompression speed are virtu­
+       ally unaffected by block size.
+
+       Another significant point applies to files which fit in  a
+       single  block  â€â€  that  means  most files you’d encounter
+       using a large block  size.   The  amount  of  real  memory
+       touched is proportional to the size of the file, since the
+       file is smaller than a block.  For example, compressing  a
+       file  20,000  bytes  long  with the flag â€9 will cause the
+       compressor to allocate around 7600k of  memory,  but  only
+       touch 400k + 20000 * 8 = 560 kbytes of it.  Similarly, the
+       decompressor will allocate 3700k but  only  touch  100k  +
+       20000 * 4 = 180 kbytes.
+
+       Here  is a table which summarises the maximum memory usage
+       for different block sizes.  Also  recorded  is  the  total
+       compressed  size for 14 files of the Calgary Text Compres­
+       sion Corpus totalling 3,141,622 bytes.  This column  gives
+       some  feel  for  how  compression  varies with block size.
+       These figures tend to understate the advantage  of  larger
+       block  sizes  for  larger files, since the Corpus is domi­
+       nated by smaller files.
+
+                  Compress   Decompress   Decompress   Corpus
+           Flag     usage      usage       â€s usage     Size
+
+            â€1      1200k       500k         350k      914704
+            â€2      2000k       900k         600k      877703
+            â€3      2800k      1300k         850k      860338
+            â€4      3600k      1700k        1100k      846899
+            â€5      4400k      2100k        1350k      845160
+            â€6      5200k      2500k        1600k      838626
+            â€7      6100k      2900k        1850k      834096
+            â€8      6800k      3300k        2100k      828642
+            â€9      7600k      3700k        2350k      828642
+
+
+RREECCOOVVEERRIINNGG DDAATTAA FFRROOMM DDAAMMAAGGEEDD FFIILLEESS
+       _b_z_i_p_2 compresses files in blocks, usually 900kbytes  long.
+       Each block is handled independently.  If a media or trans­
+       mission error causes a multiâ€block  .bz2  file  to  become
+       damaged,  it  may  be  possible  to  recover data from the
+       undamaged blocks in the file.
+
+       The compressed representation of each block  is  delimited
+       by  a  48â€bit pattern, which makes it possible to find the
+       block boundaries with reasonable  certainty.   Each  block
+       also  carries its own 32â€bit CRC, so damaged blocks can be
+       distinguished from undamaged ones.
+
+       _b_z_i_p_2_r_e_c_o_v_e_r is a  simple  program  whose  purpose  is  to
+       search  for blocks in .bz2 files, and write each block out
+       into its own .bz2 file.  You can then use _b_z_i_p_2 −t to test
+       the integrity of the resulting files, and decompress those
+       which are undamaged.
+
+       _b_z_i_p_2_r_e_c_o_v_e_r takes a single argument, the name of the dam­
+       aged    file,    and    writes    a    number   of   files
+       "rec00001file.bz2",  "rec00002file.bz2",  etc,  containing
+       the   extracted   blocks.   The   output   filenames   are
+       designed  so  that the use of wildcards in subsequent pro­
+       cessing  â€â€ for example, "bzip2 â€dc  rec*file.bz2 > recov­
+       ered_data" â€â€ processes the files in the correct order.
+
+       _b_z_i_p_2_r_e_c_o_v_e_r should be of most use dealing with large .bz2
+       files,  as  these will contain many blocks.  It is clearly
+       futile to use it on damaged singleâ€block  files,  since  a
+       damaged  block  cannot  be recovered.  If you wish to min­
+       imise any potential data loss through media  or  transmis­
+       sion errors, you might consider compressing with a smaller
+       block size.
+
+
+PPEERRFFOORRMMAANNCCEE NNOOTTEESS
+       The sorting phase of compression gathers together  similar
+       strings  in  the  file.  Because of this, files containing
+       very long runs of  repeated  symbols,  like  "aabaabaabaab
+       ..."   (repeated  several hundred times) may compress more
+       slowly than normal.  Versions 0.9.5 and  above  fare  much
+       better  than previous versions in this respect.  The ratio
+       between worstâ€case and averageâ€case compression time is in
+       the  region  of  10:1.  For previous versions, this figure
+       was more like 100:1.  You can use the −vvvv option to mon­
+       itor progress in great detail, if you want.
+
+       Decompression speed is unaffected by these phenomena.
+
+       _b_z_i_p_2  usually  allocates  several  megabytes of memory to
+       operate in, and then charges all over it in a fairly  ran­
+       dom  fashion.   This means that performance, both for com­
+       pressing and decompressing, is largely determined  by  the
+       speed  at  which  your  machine  can service cache misses.
+       Because of this, small changes to the code to  reduce  the
+       miss  rate  have  been observed to give disproportionately
+       large performance improvements.  I imagine _b_z_i_p_2 will per­
+       form best on machines with very large caches.
+
+
+CCAAVVEEAATTSS
+       I/O  error  messages  are not as helpful as they could be.
+       _b_z_i_p_2 tries hard to detect I/O errors  and  exit  cleanly,
+       but  the  details  of  what  the problem is sometimes seem
+       rather misleading.
+
+       This manual page pertains to version 1.0.4 of _b_z_i_p_2_.  Com­
+       pressed  data created by this version is entirely forwards
+       and  backwards  compatible  with   the   previous   public
+       releases,  versions  0.1pl2,  0.9.0,  0.9.5, 1.0.0, 1.0.1, 
+       1.0.2 and 1.0.3, but with the  following  exception: 0.9.0
+       and above can  correctly decompress  multiple concatenated
+       compressed files.  0.1pl2  cannot do this;  it  will  stop 
+       after  decompressing just the first file in the stream.
+
+       _b_z_i_p_2_r_e_c_o_v_e_r  versions prior to 1.0.2 used 32â€bit integers
+       to represent bit positions in compressed  files,  so  they
+       could  not handle compressed files more than 512 megabytes
+       long.  Versions 1.0.2 and above use 64â€bit  ints  on  some
+       platforms  which  support them (GNU supported targets, and
+       Windows).  To establish whether or  not  bzip2recover  was
+       built  with  such  a limitation, run it without arguments.
+       In any event you can build yourself an  unlimited  version
+       if  you  can  recompile  it  with MaybeUInt64 set to be an
+       unsigned 64â€bit integer.
+
+
+
+
+AAUUTTHHOORR
+       Julian Seward, jsewardbzip.org.
+
+       http://www.bzip.org
+
+       The ideas embodied in _b_z_i_p_2 are due to (at least) the fol­
+       lowing  people: Michael Burrows and David Wheeler (for the
+       block sorting transformation), David Wheeler  (again,  for
+       the Huffman coder), Peter Fenwick (for the structured cod­
+       ing model in the original _b_z_i_p_, and many refinements), and
+       Alistair  Moffat,  Radford  Neal  and  Ian Witten (for the
+       arithmetic  coder  in  the  original  _b_z_i_p_)_.   I  am  much
+       indebted for their help, support and advice.  See the man­
+       ual in the source distribution for pointers to sources  of
+       documentation.  Christian von Roques encouraged me to look
+       for faster sorting algorithms, so as to speed up  compres­
+       sion.  Bela Lubkin encouraged me to improve the worstâ€case
+       compression performance.  Donna Robinson XMLised the docu­
+       mentation.   The bz* scripts are derived from those of GNU
+       gzip.  Many people sent patches, helped  with  portability
+       problems,  lent  machines,  gave advice and were generally
+       helpful.
+
+
+
+                                                         bzip2(1)
diff --git a/3party_sloynik/bzip2/bzip2.c b/3party_sloynik/bzip2/bzip2.c
new file mode 100644
index 0000000000..390410735b
--- /dev/null
+++ b/3party_sloynik/bzip2/bzip2.c
@@ -0,0 +1,2034 @@
+
+/*-----------------------------------------------------------*/
+/*--- A block-sorting, lossless compressor        bzip2.c ---*/
+/*-----------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.5 of 10 December 2007
+   Copyright (C) 1996-2007 Julian Seward 
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+/* Place a 1 beside your platform, and 0 elsewhere.
+   Generic 32-bit Unix.
+   Also works on 64-bit Unix boxes.
+   This is the default.
+*/
+#define BZ_UNIX      1
+
+/*--
+  Win32, as seen by Jacob Navia's excellent
+  port of (Chris Fraser & David Hanson)'s excellent
+  lcc compiler.  Or with MS Visual C.
+  This is selected automatically if compiled by a compiler which
+  defines _WIN32, not including the Cygwin GCC.
+--*/
+#define BZ_LCCWIN32  0
+
+#if defined(_WIN32) && !defined(__CYGWIN__)
+#undef  BZ_LCCWIN32
+#define BZ_LCCWIN32 1
+#undef  BZ_UNIX
+#define BZ_UNIX 0
+#endif
+
+
+/*---------------------------------------------*/
+/*--
+  Some stuff for all platforms.
+--*/
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include "bzlib.h"
+
+#define ERROR_IF_EOF(i)       { if ((i) == EOF)  ioError(); }
+#define ERROR_IF_NOT_ZERO(i)  { if ((i) != 0)    ioError(); }
+#define ERROR_IF_MINUS_ONE(i) { if ((i) == (-1)) ioError(); }
+
+
+/*---------------------------------------------*/
+/*--
+   Platform-specific stuff.
+--*/
+
+#if BZ_UNIX
+#   include 
+#   include 
+#   include 
+#   include 
+#   include 
+#   include 
+
+#   define PATH_SEP    '/'
+#   define MY_LSTAT    lstat
+#   define MY_STAT     stat
+#   define MY_S_ISREG  S_ISREG
+#   define MY_S_ISDIR  S_ISDIR
+
+#   define APPEND_FILESPEC(root, name) \
+      root=snocString((root), (name))
+
+#   define APPEND_FLAG(root, name) \
+      root=snocString((root), (name))
+
+#   define SET_BINARY_MODE(fd) /**/
+
+#   ifdef __GNUC__
+#      define NORETURN __attribute__ ((noreturn))
+#   else
+#      define NORETURN /**/
+#   endif
+
+#   ifdef __DJGPP__
+#     include 
+#     include 
+#     undef MY_LSTAT
+#     undef MY_STAT
+#     define MY_LSTAT stat
+#     define MY_STAT stat
+#     undef SET_BINARY_MODE
+#     define SET_BINARY_MODE(fd)                        \
+        do {                                            \
+           int retVal = setmode ( fileno ( fd ),        \
+                                  O_BINARY );           \
+           ERROR_IF_MINUS_ONE ( retVal );               \
+        } while ( 0 )
+#   endif
+
+#   ifdef __CYGWIN__
+#     include 
+#     include 
+#     undef SET_BINARY_MODE
+#     define SET_BINARY_MODE(fd)                        \
+        do {                                            \
+           int retVal = setmode ( fileno ( fd ),        \
+                                  O_BINARY );           \
+           ERROR_IF_MINUS_ONE ( retVal );               \
+        } while ( 0 )
+#   endif
+#endif /* BZ_UNIX */
+
+
+
+#if BZ_LCCWIN32
+#   include 
+#   include 
+#   include 
+
+#   define NORETURN       /**/
+#   define PATH_SEP       '\\'
+#   define MY_LSTAT       _stat
+#   define MY_STAT        _stat
+#   define MY_S_ISREG(x)  ((x) & _S_IFREG)
+#   define MY_S_ISDIR(x)  ((x) & _S_IFDIR)
+
+#   define APPEND_FLAG(root, name) \
+      root=snocString((root), (name))
+
+#   define APPEND_FILESPEC(root, name)                \
+      root = snocString ((root), (name))
+
+#   define SET_BINARY_MODE(fd)                        \
+      do {                                            \
+         int retVal = setmode ( fileno ( fd ),        \
+                                O_BINARY );           \
+         ERROR_IF_MINUS_ONE ( retVal );               \
+      } while ( 0 )
+
+#endif /* BZ_LCCWIN32 */
+
+
+/*---------------------------------------------*/
+/*--
+  Some more stuff for all platforms :-)
+--*/
+
+typedef char            Char;
+typedef unsigned char   Bool;
+typedef unsigned char   UChar;
+typedef int             Int32;
+typedef unsigned int    UInt32;
+typedef short           Int16;
+typedef unsigned short  UInt16;
+                                       
+#define True  ((Bool)1)
+#define False ((Bool)0)
+
+/*--
+  IntNative is your platform's `native' int size.
+  Only here to avoid probs with 64-bit platforms.
+--*/
+typedef int IntNative;
+
+
+/*---------------------------------------------------*/
+/*--- Misc (file handling) data decls             ---*/
+/*---------------------------------------------------*/
+
+Int32   verbosity;
+Bool    keepInputFiles, smallMode, deleteOutputOnInterrupt;
+Bool    forceOverwrite, testFailsExist, unzFailsExist, noisy;
+Int32   numFileNames, numFilesProcessed, blockSize100k;
+Int32   exitValue;
+
+/*-- source modes; F==file, I==stdin, O==stdout --*/
+#define SM_I2O           1
+#define SM_F2O           2
+#define SM_F2F           3
+
+/*-- operation modes --*/
+#define OM_Z             1
+#define OM_UNZ           2
+#define OM_TEST          3
+
+Int32   opMode;
+Int32   srcMode;
+
+#define FILE_NAME_LEN 1034
+
+Int32   longestFileName;
+Char    inName [FILE_NAME_LEN];
+Char    outName[FILE_NAME_LEN];
+Char    tmpName[FILE_NAME_LEN];
+Char    *progName;
+Char    progNameReally[FILE_NAME_LEN];
+FILE    *outputHandleJustInCase;
+Int32   workFactor;
+
+static void    panic                 ( const Char* ) NORETURN;
+static void    ioError               ( void )        NORETURN;
+static void    outOfMemory           ( void )        NORETURN;
+static void    configError           ( void )        NORETURN;
+static void    crcError              ( void )        NORETURN;
+static void    cleanUpAndFail        ( Int32 )       NORETURN;
+static void    compressedStreamEOF   ( void )        NORETURN;
+
+static void    copyFileName ( Char*, Char* );
+static void*   myMalloc     ( Int32 );
+static void    applySavedFileAttrToOutputFile ( IntNative fd );
+
+
+
+/*---------------------------------------------------*/
+/*--- An implementation of 64-bit ints.  Sigh.    ---*/
+/*--- Roll on widespread deployment of ANSI C9X ! ---*/
+/*---------------------------------------------------*/
+
+typedef
+   struct { UChar b[8]; } 
+   UInt64;
+
+
+static
+void uInt64_from_UInt32s ( UInt64* n, UInt32 lo32, UInt32 hi32 )
+{
+   n->b[7] = (UChar)((hi32 >> 24) & 0xFF);
+   n->b[6] = (UChar)((hi32 >> 16) & 0xFF);
+   n->b[5] = (UChar)((hi32 >> 8)  & 0xFF);
+   n->b[4] = (UChar) (hi32        & 0xFF);
+   n->b[3] = (UChar)((lo32 >> 24) & 0xFF);
+   n->b[2] = (UChar)((lo32 >> 16) & 0xFF);
+   n->b[1] = (UChar)((lo32 >> 8)  & 0xFF);
+   n->b[0] = (UChar) (lo32        & 0xFF);
+}
+
+
+static
+double uInt64_to_double ( UInt64* n )
+{
+   Int32  i;
+   double base = 1.0;
+   double sum  = 0.0;
+   for (i = 0; i < 8; i++) {
+      sum  += base * (double)(n->b[i]);
+      base *= 256.0;
+   }
+   return sum;
+}
+
+
+static
+Bool uInt64_isZero ( UInt64* n )
+{
+   Int32 i;
+   for (i = 0; i < 8; i++)
+      if (n->b[i] != 0) return 0;
+   return 1;
+}
+
+
+/* Divide *n by 10, and return the remainder.  */
+static 
+Int32 uInt64_qrm10 ( UInt64* n )
+{
+   UInt32 rem, tmp;
+   Int32  i;
+   rem = 0;
+   for (i = 7; i >= 0; i--) {
+      tmp = rem * 256 + n->b[i];
+      n->b[i] = tmp / 10;
+      rem = tmp % 10;
+   }
+   return rem;
+}
+
+
+/* ... and the Whole Entire Point of all this UInt64 stuff is
+   so that we can supply the following function.
+*/
+static
+void uInt64_toAscii ( char* outbuf, UInt64* n )
+{
+   Int32  i, q;
+   UChar  buf[32];
+   Int32  nBuf   = 0;
+   UInt64 n_copy = *n;
+   do {
+      q = uInt64_qrm10 ( &n_copy );
+      buf[nBuf] = q + '0';
+      nBuf++;
+   } while (!uInt64_isZero(&n_copy));
+   outbuf[nBuf] = 0;
+   for (i = 0; i < nBuf; i++) 
+      outbuf[i] = buf[nBuf-i-1];
+}
+
+
+/*---------------------------------------------------*/
+/*--- Processing of complete files and streams    ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------*/
+static 
+Bool myfeof ( FILE* f )
+{
+   Int32 c = fgetc ( f );
+   if (c == EOF) return True;
+   ungetc ( c, f );
+   return False;
+}
+
+
+/*---------------------------------------------*/
+static 
+void compressStream ( FILE *stream, FILE *zStream )
+{
+   BZFILE* bzf = NULL;
+   UChar   ibuf[5000];
+   Int32   nIbuf;
+   UInt32  nbytes_in_lo32, nbytes_in_hi32;
+   UInt32  nbytes_out_lo32, nbytes_out_hi32;
+   Int32   bzerr, bzerr_dummy, ret;
+
+   SET_BINARY_MODE(stream);
+   SET_BINARY_MODE(zStream);
+
+   if (ferror(stream)) goto errhandler_io;
+   if (ferror(zStream)) goto errhandler_io;
+
+   bzf = BZ2_bzWriteOpen ( &bzerr, zStream, 
+                           blockSize100k, verbosity, workFactor );   
+   if (bzerr != BZ_OK) goto errhandler;
+
+   if (verbosity >= 2) fprintf ( stderr, "\n" );
+
+   while (True) {
+
+      if (myfeof(stream)) break;
+      nIbuf = fread ( ibuf, sizeof(UChar), 5000, stream );
+      if (ferror(stream)) goto errhandler_io;
+      if (nIbuf > 0) BZ2_bzWrite ( &bzerr, bzf, (void*)ibuf, nIbuf );
+      if (bzerr != BZ_OK) goto errhandler;
+
+   }
+
+   BZ2_bzWriteClose64 ( &bzerr, bzf, 0, 
+                        &nbytes_in_lo32, &nbytes_in_hi32,
+                        &nbytes_out_lo32, &nbytes_out_hi32 );
+   if (bzerr != BZ_OK) goto errhandler;
+
+   if (ferror(zStream)) goto errhandler_io;
+   ret = fflush ( zStream );
+   if (ret == EOF) goto errhandler_io;
+   if (zStream != stdout) {
+      Int32 fd = fileno ( zStream );
+      if (fd < 0) goto errhandler_io;
+      applySavedFileAttrToOutputFile ( fd );
+      ret = fclose ( zStream );
+      outputHandleJustInCase = NULL;
+      if (ret == EOF) goto errhandler_io;
+   }
+   outputHandleJustInCase = NULL;
+   if (ferror(stream)) goto errhandler_io;
+   ret = fclose ( stream );
+   if (ret == EOF) goto errhandler_io;
+
+   if (verbosity >= 1) {
+      if (nbytes_in_lo32 == 0 && nbytes_in_hi32 == 0) {
+	 fprintf ( stderr, " no data compressed.\n");
+      } else {
+	 Char   buf_nin[32], buf_nout[32];
+	 UInt64 nbytes_in,   nbytes_out;
+	 double nbytes_in_d, nbytes_out_d;
+	 uInt64_from_UInt32s ( &nbytes_in, 
+			       nbytes_in_lo32, nbytes_in_hi32 );
+	 uInt64_from_UInt32s ( &nbytes_out, 
+			       nbytes_out_lo32, nbytes_out_hi32 );
+	 nbytes_in_d  = uInt64_to_double ( &nbytes_in );
+	 nbytes_out_d = uInt64_to_double ( &nbytes_out );
+	 uInt64_toAscii ( buf_nin, &nbytes_in );
+	 uInt64_toAscii ( buf_nout, &nbytes_out );
+	 fprintf ( stderr, "%6.3f:1, %6.3f bits/byte, "
+		   "%5.2f%% saved, %s in, %s out.\n",
+		   nbytes_in_d / nbytes_out_d,
+		   (8.0 * nbytes_out_d) / nbytes_in_d,
+		   100.0 * (1.0 - nbytes_out_d / nbytes_in_d),
+		   buf_nin,
+		   buf_nout
+		 );
+      }
+   }
+
+   return;
+
+   errhandler:
+   BZ2_bzWriteClose64 ( &bzerr_dummy, bzf, 1, 
+                        &nbytes_in_lo32, &nbytes_in_hi32,
+                        &nbytes_out_lo32, &nbytes_out_hi32 );
+   switch (bzerr) {
+      case BZ_CONFIG_ERROR:
+         configError(); break;
+      case BZ_MEM_ERROR:
+         outOfMemory (); break;
+      case BZ_IO_ERROR:
+         errhandler_io:
+         ioError(); break;
+      default:
+         panic ( "compress:unexpected error" );
+   }
+
+   panic ( "compress:end" );
+   /*notreached*/
+}
+
+
+
+/*---------------------------------------------*/
+static 
+Bool uncompressStream ( FILE *zStream, FILE *stream )
+{
+   BZFILE* bzf = NULL;
+   Int32   bzerr, bzerr_dummy, ret, nread, streamNo, i;
+   UChar   obuf[5000];
+   UChar   unused[BZ_MAX_UNUSED];
+   Int32   nUnused;
+   void*   unusedTmpV;
+   UChar*  unusedTmp;
+
+   nUnused = 0;
+   streamNo = 0;
+
+   SET_BINARY_MODE(stream);
+   SET_BINARY_MODE(zStream);
+
+   if (ferror(stream)) goto errhandler_io;
+   if (ferror(zStream)) goto errhandler_io;
+
+   while (True) {
+
+      bzf = BZ2_bzReadOpen ( 
+               &bzerr, zStream, verbosity, 
+               (int)smallMode, unused, nUnused
+            );
+      if (bzf == NULL || bzerr != BZ_OK) goto errhandler;
+      streamNo++;
+
+      while (bzerr == BZ_OK) {
+         nread = BZ2_bzRead ( &bzerr, bzf, obuf, 5000 );
+         if (bzerr == BZ_DATA_ERROR_MAGIC) goto trycat;
+         if ((bzerr == BZ_OK || bzerr == BZ_STREAM_END) && nread > 0)
+            fwrite ( obuf, sizeof(UChar), nread, stream );
+         if (ferror(stream)) goto errhandler_io;
+      }
+      if (bzerr != BZ_STREAM_END) goto errhandler;
+
+      BZ2_bzReadGetUnused ( &bzerr, bzf, &unusedTmpV, &nUnused );
+      if (bzerr != BZ_OK) panic ( "decompress:bzReadGetUnused" );
+
+      unusedTmp = (UChar*)unusedTmpV;
+      for (i = 0; i < nUnused; i++) unused[i] = unusedTmp[i];
+
+      BZ2_bzReadClose ( &bzerr, bzf );
+      if (bzerr != BZ_OK) panic ( "decompress:bzReadGetUnused" );
+
+      if (nUnused == 0 && myfeof(zStream)) break;
+   }
+
+   closeok:
+   if (ferror(zStream)) goto errhandler_io;
+   if (stream != stdout) {
+      Int32 fd = fileno ( stream );
+      if (fd < 0) goto errhandler_io;
+      applySavedFileAttrToOutputFile ( fd );
+   }
+   ret = fclose ( zStream );
+   if (ret == EOF) goto errhandler_io;
+
+   if (ferror(stream)) goto errhandler_io;
+   ret = fflush ( stream );
+   if (ret != 0) goto errhandler_io;
+   if (stream != stdout) {
+      ret = fclose ( stream );
+      outputHandleJustInCase = NULL;
+      if (ret == EOF) goto errhandler_io;
+   }
+   outputHandleJustInCase = NULL;
+   if (verbosity >= 2) fprintf ( stderr, "\n    " );
+   return True;
+
+   trycat: 
+   if (forceOverwrite) {
+      rewind(zStream);
+      while (True) {
+      	 if (myfeof(zStream)) break;
+      	 nread = fread ( obuf, sizeof(UChar), 5000, zStream );
+      	 if (ferror(zStream)) goto errhandler_io;
+      	 if (nread > 0) fwrite ( obuf, sizeof(UChar), nread, stream );
+      	 if (ferror(stream)) goto errhandler_io;
+      }
+      goto closeok;
+   }
+  
+   errhandler:
+   BZ2_bzReadClose ( &bzerr_dummy, bzf );
+   switch (bzerr) {
+      case BZ_CONFIG_ERROR:
+         configError(); break;
+      case BZ_IO_ERROR:
+         errhandler_io:
+         ioError(); break;
+      case BZ_DATA_ERROR:
+         crcError();
+      case BZ_MEM_ERROR:
+         outOfMemory();
+      case BZ_UNEXPECTED_EOF:
+         compressedStreamEOF();
+      case BZ_DATA_ERROR_MAGIC:
+         if (zStream != stdin) fclose(zStream);
+         if (stream != stdout) fclose(stream);
+         if (streamNo == 1) {
+            return False;
+         } else {
+            if (noisy)
+            fprintf ( stderr, 
+                      "\n%s: %s: trailing garbage after EOF ignored\n",
+                      progName, inName );
+            return True;       
+         }
+      default:
+         panic ( "decompress:unexpected error" );
+   }
+
+   panic ( "decompress:end" );
+   return True; /*notreached*/
+}
+
+
+/*---------------------------------------------*/
+static 
+Bool testStream ( FILE *zStream )
+{
+   BZFILE* bzf = NULL;
+   Int32   bzerr, bzerr_dummy, ret, nread, streamNo, i;
+   UChar   obuf[5000];
+   UChar   unused[BZ_MAX_UNUSED];
+   Int32   nUnused;
+   void*   unusedTmpV;
+   UChar*  unusedTmp;
+
+   nUnused = 0;
+   streamNo = 0;
+
+   SET_BINARY_MODE(zStream);
+   if (ferror(zStream)) goto errhandler_io;
+
+   while (True) {
+
+      bzf = BZ2_bzReadOpen ( 
+               &bzerr, zStream, verbosity, 
+               (int)smallMode, unused, nUnused
+            );
+      if (bzf == NULL || bzerr != BZ_OK) goto errhandler;
+      streamNo++;
+
+      while (bzerr == BZ_OK) {
+         nread = BZ2_bzRead ( &bzerr, bzf, obuf, 5000 );
+         if (bzerr == BZ_DATA_ERROR_MAGIC) goto errhandler;
+      }
+      if (bzerr != BZ_STREAM_END) goto errhandler;
+
+      BZ2_bzReadGetUnused ( &bzerr, bzf, &unusedTmpV, &nUnused );
+      if (bzerr != BZ_OK) panic ( "test:bzReadGetUnused" );
+
+      unusedTmp = (UChar*)unusedTmpV;
+      for (i = 0; i < nUnused; i++) unused[i] = unusedTmp[i];
+
+      BZ2_bzReadClose ( &bzerr, bzf );
+      if (bzerr != BZ_OK) panic ( "test:bzReadGetUnused" );
+      if (nUnused == 0 && myfeof(zStream)) break;
+
+   }
+
+   if (ferror(zStream)) goto errhandler_io;
+   ret = fclose ( zStream );
+   if (ret == EOF) goto errhandler_io;
+
+   if (verbosity >= 2) fprintf ( stderr, "\n    " );
+   return True;
+
+   errhandler:
+   BZ2_bzReadClose ( &bzerr_dummy, bzf );
+   if (verbosity == 0) 
+      fprintf ( stderr, "%s: %s: ", progName, inName );
+   switch (bzerr) {
+      case BZ_CONFIG_ERROR:
+         configError(); break;
+      case BZ_IO_ERROR:
+         errhandler_io:
+         ioError(); break;
+      case BZ_DATA_ERROR:
+         fprintf ( stderr,
+                   "data integrity (CRC) error in data\n" );
+         return False;
+      case BZ_MEM_ERROR:
+         outOfMemory();
+      case BZ_UNEXPECTED_EOF:
+         fprintf ( stderr,
+                   "file ends unexpectedly\n" );
+         return False;
+      case BZ_DATA_ERROR_MAGIC:
+         if (zStream != stdin) fclose(zStream);
+         if (streamNo == 1) {
+          fprintf ( stderr, 
+                    "bad magic number (file not created by bzip2)\n" );
+            return False;
+         } else {
+            if (noisy)
+            fprintf ( stderr, 
+                      "trailing garbage after EOF ignored\n" );
+            return True;       
+         }
+      default:
+         panic ( "test:unexpected error" );
+   }
+
+   panic ( "test:end" );
+   return True; /*notreached*/
+}
+
+
+/*---------------------------------------------------*/
+/*--- Error [non-] handling grunge                ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------*/
+static
+void setExit ( Int32 v )
+{
+   if (v > exitValue) exitValue = v;
+}
+
+
+/*---------------------------------------------*/
+static 
+void cadvise ( void )
+{
+   if (noisy)
+   fprintf (
+      stderr,
+      "\nIt is possible that the compressed file(s) have become corrupted.\n"
+        "You can use the -tvv option to test integrity of such files.\n\n"
+        "You can use the `bzip2recover' program to attempt to recover\n"
+        "data from undamaged sections of corrupted files.\n\n"
+    );
+}
+
+
+/*---------------------------------------------*/
+static 
+void showFileNames ( void )
+{
+   if (noisy)
+   fprintf (
+      stderr,
+      "\tInput file = %s, output file = %s\n",
+      inName, outName 
+   );
+}
+
+
+/*---------------------------------------------*/
+static 
+void cleanUpAndFail ( Int32 ec )
+{
+   IntNative      retVal;
+   struct MY_STAT statBuf;
+
+   if ( srcMode == SM_F2F 
+        && opMode != OM_TEST
+        && deleteOutputOnInterrupt ) {
+
+      /* Check whether input file still exists.  Delete output file
+         only if input exists to avoid loss of data.  Joerg Prante, 5
+         January 2002.  (JRS 06-Jan-2002: other changes in 1.0.2 mean
+         this is less likely to happen.  But to be ultra-paranoid, we
+         do the check anyway.)  */
+      retVal = MY_STAT ( inName, &statBuf );
+      if (retVal == 0) {
+         if (noisy)
+            fprintf ( stderr, 
+                      "%s: Deleting output file %s, if it exists.\n",
+                      progName, outName );
+         if (outputHandleJustInCase != NULL)
+            fclose ( outputHandleJustInCase );
+         retVal = remove ( outName );
+         if (retVal != 0)
+            fprintf ( stderr,
+                      "%s: WARNING: deletion of output file "
+                      "(apparently) failed.\n",
+                      progName );
+      } else {
+         fprintf ( stderr,
+                   "%s: WARNING: deletion of output file suppressed\n",
+                    progName );
+         fprintf ( stderr,
+                   "%s:    since input file no longer exists.  Output file\n",
+                   progName );
+         fprintf ( stderr,
+                   "%s:    `%s' may be incomplete.\n",
+                   progName, outName );
+         fprintf ( stderr, 
+                   "%s:    I suggest doing an integrity test (bzip2 -tv)"
+                   " of it.\n",
+                   progName );
+      }
+   }
+
+   if (noisy && numFileNames > 0 && numFilesProcessed < numFileNames) {
+      fprintf ( stderr, 
+                "%s: WARNING: some files have not been processed:\n"
+                "%s:    %d specified on command line, %d not processed yet.\n\n",
+                progName, progName,
+                numFileNames, numFileNames - numFilesProcessed );
+   }
+   setExit(ec);
+   exit(exitValue);
+}
+
+
+/*---------------------------------------------*/
+static 
+void panic ( const Char* s )
+{
+   fprintf ( stderr,
+             "\n%s: PANIC -- internal consistency error:\n"
+             "\t%s\n"
+             "\tThis is a BUG.  Please report it to me at:\n"
+             "\tjseward@bzip.org\n",
+             progName, s );
+   showFileNames();
+   cleanUpAndFail( 3 );
+}
+
+
+/*---------------------------------------------*/
+static 
+void crcError ( void )
+{
+   fprintf ( stderr,
+             "\n%s: Data integrity error when decompressing.\n",
+             progName );
+   showFileNames();
+   cadvise();
+   cleanUpAndFail( 2 );
+}
+
+
+/*---------------------------------------------*/
+static 
+void compressedStreamEOF ( void )
+{
+  if (noisy) {
+    fprintf ( stderr,
+	      "\n%s: Compressed file ends unexpectedly;\n\t"
+	      "perhaps it is corrupted?  *Possible* reason follows.\n",
+	      progName );
+    perror ( progName );
+    showFileNames();
+    cadvise();
+  }
+  cleanUpAndFail( 2 );
+}
+
+
+/*---------------------------------------------*/
+static 
+void ioError ( void )
+{
+   fprintf ( stderr,
+             "\n%s: I/O or other error, bailing out.  "
+             "Possible reason follows.\n",
+             progName );
+   perror ( progName );
+   showFileNames();
+   cleanUpAndFail( 1 );
+}
+
+
+/*---------------------------------------------*/
+static 
+void mySignalCatcher ( IntNative n )
+{
+   fprintf ( stderr,
+             "\n%s: Control-C or similar caught, quitting.\n",
+             progName );
+   cleanUpAndFail(1);
+}
+
+
+/*---------------------------------------------*/
+static 
+void mySIGSEGVorSIGBUScatcher ( IntNative n )
+{
+   if (opMode == OM_Z)
+      fprintf ( 
+      stderr,
+      "\n%s: Caught a SIGSEGV or SIGBUS whilst compressing.\n"
+      "\n"
+      "   Possible causes are (most likely first):\n"
+      "   (1) This computer has unreliable memory or cache hardware\n"
+      "       (a surprisingly common problem; try a different machine.)\n"
+      "   (2) A bug in the compiler used to create this executable\n"
+      "       (unlikely, if you didn't compile bzip2 yourself.)\n"
+      "   (3) A real bug in bzip2 -- I hope this should never be the case.\n"
+      "   The user's manual, Section 4.3, has more info on (1) and (2).\n"
+      "   \n"
+      "   If you suspect this is a bug in bzip2, or are unsure about (1)\n"
+      "   or (2), feel free to report it to me at: jseward@bzip.org.\n"
+      "   Section 4.3 of the user's manual describes the info a useful\n"
+      "   bug report should have.  If the manual is available on your\n"
+      "   system, please try and read it before mailing me.  If you don't\n"
+      "   have the manual or can't be bothered to read it, mail me anyway.\n"
+      "\n",
+      progName );
+      else
+      fprintf ( 
+      stderr,
+      "\n%s: Caught a SIGSEGV or SIGBUS whilst decompressing.\n"
+      "\n"
+      "   Possible causes are (most likely first):\n"
+      "   (1) The compressed data is corrupted, and bzip2's usual checks\n"
+      "       failed to detect this.  Try bzip2 -tvv my_file.bz2.\n"
+      "   (2) This computer has unreliable memory or cache hardware\n"
+      "       (a surprisingly common problem; try a different machine.)\n"
+      "   (3) A bug in the compiler used to create this executable\n"
+      "       (unlikely, if you didn't compile bzip2 yourself.)\n"
+      "   (4) A real bug in bzip2 -- I hope this should never be the case.\n"
+      "   The user's manual, Section 4.3, has more info on (2) and (3).\n"
+      "   \n"
+      "   If you suspect this is a bug in bzip2, or are unsure about (2)\n"
+      "   or (3), feel free to report it to me at: jseward@bzip.org.\n"
+      "   Section 4.3 of the user's manual describes the info a useful\n"
+      "   bug report should have.  If the manual is available on your\n"
+      "   system, please try and read it before mailing me.  If you don't\n"
+      "   have the manual or can't be bothered to read it, mail me anyway.\n"
+      "\n",
+      progName );
+
+   showFileNames();
+   if (opMode == OM_Z)
+      cleanUpAndFail( 3 ); else
+      { cadvise(); cleanUpAndFail( 2 ); }
+}
+
+
+/*---------------------------------------------*/
+static 
+void outOfMemory ( void )
+{
+   fprintf ( stderr,
+             "\n%s: couldn't allocate enough memory\n",
+             progName );
+   showFileNames();
+   cleanUpAndFail(1);
+}
+
+
+/*---------------------------------------------*/
+static 
+void configError ( void )
+{
+   fprintf ( stderr,
+             "bzip2: I'm not configured correctly for this platform!\n"
+             "\tI require Int32, Int16 and Char to have sizes\n"
+             "\tof 4, 2 and 1 bytes to run properly, and they don't.\n"
+             "\tProbably you can fix this by defining them correctly,\n"
+             "\tand recompiling.  Bye!\n" );
+   setExit(3);
+   exit(exitValue);
+}
+
+
+/*---------------------------------------------------*/
+/*--- The main driver machinery                   ---*/
+/*---------------------------------------------------*/
+
+/* All rather crufty.  The main problem is that input files
+   are stat()d multiple times before use.  This should be
+   cleaned up. 
+*/
+
+/*---------------------------------------------*/
+static 
+void pad ( Char *s )
+{
+   Int32 i;
+   if ( (Int32)strlen(s) >= longestFileName ) return;
+   for (i = 1; i <= longestFileName - (Int32)strlen(s); i++)
+      fprintf ( stderr, " " );
+}
+
+
+/*---------------------------------------------*/
+static 
+void copyFileName ( Char* to, Char* from ) 
+{
+   if ( strlen(from) > FILE_NAME_LEN-10 )  {
+      fprintf (
+         stderr,
+         "bzip2: file name\n`%s'\n"
+         "is suspiciously (more than %d chars) long.\n"
+         "Try using a reasonable file name instead.  Sorry! :-)\n",
+         from, FILE_NAME_LEN-10
+      );
+      setExit(1);
+      exit(exitValue);
+   }
+
+  strncpy(to,from,FILE_NAME_LEN-10);
+  to[FILE_NAME_LEN-10]='\0';
+}
+
+
+/*---------------------------------------------*/
+static 
+Bool fileExists ( Char* name )
+{
+   FILE *tmp   = fopen ( name, "rb" );
+   Bool exists = (tmp != NULL);
+   if (tmp != NULL) fclose ( tmp );
+   return exists;
+}
+
+
+/*---------------------------------------------*/
+/* Open an output file safely with O_EXCL and good permissions.
+   This avoids a race condition in versions < 1.0.2, in which
+   the file was first opened and then had its interim permissions
+   set safely.  We instead use open() to create the file with
+   the interim permissions required. (--- --- rw-).
+
+   For non-Unix platforms, if we are not worrying about
+   security issues, simple this simply behaves like fopen.
+*/
+static
+FILE* fopen_output_safely ( Char* name, const char* mode )
+{
+#  if BZ_UNIX
+   FILE*     fp;
+   IntNative fh;
+   fh = open(name, O_WRONLY|O_CREAT|O_EXCL, S_IWUSR|S_IRUSR);
+   if (fh == -1) return NULL;
+   fp = fdopen(fh, mode);
+   if (fp == NULL) close(fh);
+   return fp;
+#  else
+   return fopen(name, mode);
+#  endif
+}
+
+
+/*---------------------------------------------*/
+/*--
+  if in doubt, return True
+--*/
+static 
+Bool notAStandardFile ( Char* name )
+{
+   IntNative      i;
+   struct MY_STAT statBuf;
+
+   i = MY_LSTAT ( name, &statBuf );
+   if (i != 0) return True;
+   if (MY_S_ISREG(statBuf.st_mode)) return False;
+   return True;
+}
+
+
+/*---------------------------------------------*/
+/*--
+  rac 11/21/98 see if file has hard links to it
+--*/
+static 
+Int32 countHardLinks ( Char* name )
+{  
+   IntNative      i;
+   struct MY_STAT statBuf;
+
+   i = MY_LSTAT ( name, &statBuf );
+   if (i != 0) return 0;
+   return (statBuf.st_nlink - 1);
+}
+
+
+/*---------------------------------------------*/
+/* Copy modification date, access date, permissions and owner from the
+   source to destination file.  We have to copy this meta-info off
+   into fileMetaInfo before starting to compress / decompress it,
+   because doing it afterwards means we get the wrong access time.
+
+   To complicate matters, in compress() and decompress() below, the
+   sequence of tests preceding the call to saveInputFileMetaInfo()
+   involves calling fileExists(), which in turn establishes its result
+   by attempting to fopen() the file, and if successful, immediately
+   fclose()ing it again.  So we have to assume that the fopen() call
+   does not cause the access time field to be updated.
+
+   Reading of the man page for stat() (man 2 stat) on RedHat 7.2 seems
+   to imply that merely doing open() will not affect the access time.
+   Therefore we merely need to hope that the C library only does
+   open() as a result of fopen(), and not any kind of read()-ahead
+   cleverness.
+
+   It sounds pretty fragile to me.  Whether this carries across
+   robustly to arbitrary Unix-like platforms (or even works robustly
+   on this one, RedHat 7.2) is unknown to me.  Nevertheless ...  
+*/
+#if BZ_UNIX
+static 
+struct MY_STAT fileMetaInfo;
+#endif
+
+static 
+void saveInputFileMetaInfo ( Char *srcName )
+{
+#  if BZ_UNIX
+   IntNative retVal;
+   /* Note use of stat here, not lstat. */
+   retVal = MY_STAT( srcName, &fileMetaInfo );
+   ERROR_IF_NOT_ZERO ( retVal );
+#  endif
+}
+
+
+static 
+void applySavedTimeInfoToOutputFile ( Char *dstName )
+{
+#  if BZ_UNIX
+   IntNative      retVal;
+   struct utimbuf uTimBuf;
+
+   uTimBuf.actime = fileMetaInfo.st_atime;
+   uTimBuf.modtime = fileMetaInfo.st_mtime;
+
+   retVal = utime ( dstName, &uTimBuf );
+   ERROR_IF_NOT_ZERO ( retVal );
+#  endif
+}
+
+static 
+void applySavedFileAttrToOutputFile ( IntNative fd )
+{
+#  if BZ_UNIX
+   IntNative retVal;
+
+   retVal = fchmod ( fd, fileMetaInfo.st_mode );
+   ERROR_IF_NOT_ZERO ( retVal );
+
+   (void) fchown ( fd, fileMetaInfo.st_uid, fileMetaInfo.st_gid );
+   /* chown() will in many cases return with EPERM, which can
+      be safely ignored.
+   */
+#  endif
+}
+
+
+/*---------------------------------------------*/
+static 
+Bool containsDubiousChars ( Char* name )
+{
+#  if BZ_UNIX
+   /* On unix, files can contain any characters and the file expansion
+    * is performed by the shell.
+    */
+   return False;
+#  else /* ! BZ_UNIX */
+   /* On non-unix (Win* platforms), wildcard characters are not allowed in 
+    * filenames.
+    */
+   for (; *name != '\0'; name++)
+      if (*name == '?' || *name == '*') return True;
+   return False;
+#  endif /* BZ_UNIX */
+}
+
+
+/*---------------------------------------------*/
+#define BZ_N_SUFFIX_PAIRS 4
+
+const Char* zSuffix[BZ_N_SUFFIX_PAIRS] 
+   = { ".bz2", ".bz", ".tbz2", ".tbz" };
+const Char* unzSuffix[BZ_N_SUFFIX_PAIRS] 
+   = { "", "", ".tar", ".tar" };
+
+static 
+Bool hasSuffix ( Char* s, const Char* suffix )
+{
+   Int32 ns = strlen(s);
+   Int32 nx = strlen(suffix);
+   if (ns < nx) return False;
+   if (strcmp(s + ns - nx, suffix) == 0) return True;
+   return False;
+}
+
+static 
+Bool mapSuffix ( Char* name, 
+                 const Char* oldSuffix, 
+                 const Char* newSuffix )
+{
+   if (!hasSuffix(name,oldSuffix)) return False;
+   name[strlen(name)-strlen(oldSuffix)] = 0;
+   strcat ( name, newSuffix );
+   return True;
+}
+
+
+/*---------------------------------------------*/
+static 
+void compress ( Char *name )
+{
+   FILE  *inStr;
+   FILE  *outStr;
+   Int32 n, i;
+   struct MY_STAT statBuf;
+
+   deleteOutputOnInterrupt = False;
+
+   if (name == NULL && srcMode != SM_I2O)
+      panic ( "compress: bad modes\n" );
+
+   switch (srcMode) {
+      case SM_I2O: 
+         copyFileName ( inName, (Char*)"(stdin)" );
+         copyFileName ( outName, (Char*)"(stdout)" ); 
+         break;
+      case SM_F2F: 
+         copyFileName ( inName, name );
+         copyFileName ( outName, name );
+         strcat ( outName, ".bz2" ); 
+         break;
+      case SM_F2O: 
+         copyFileName ( inName, name );
+         copyFileName ( outName, (Char*)"(stdout)" ); 
+         break;
+   }
+
+   if ( srcMode != SM_I2O && containsDubiousChars ( inName ) ) {
+      if (noisy)
+      fprintf ( stderr, "%s: There are no files matching `%s'.\n",
+                progName, inName );
+      setExit(1);
+      return;
+   }
+   if ( srcMode != SM_I2O && !fileExists ( inName ) ) {
+      fprintf ( stderr, "%s: Can't open input file %s: %s.\n",
+                progName, inName, strerror(errno) );
+      setExit(1);
+      return;
+   }
+   for (i = 0; i < BZ_N_SUFFIX_PAIRS; i++) {
+      if (hasSuffix(inName, zSuffix[i])) {
+         if (noisy)
+         fprintf ( stderr, 
+                   "%s: Input file %s already has %s suffix.\n",
+                   progName, inName, zSuffix[i] );
+         setExit(1);
+         return;
+      }
+   }
+   if ( srcMode == SM_F2F || srcMode == SM_F2O ) {
+      MY_STAT(inName, &statBuf);
+      if ( MY_S_ISDIR(statBuf.st_mode) ) {
+         fprintf( stderr,
+                  "%s: Input file %s is a directory.\n",
+                  progName,inName);
+         setExit(1);
+         return;
+      }
+   }
+   if ( srcMode == SM_F2F && !forceOverwrite && notAStandardFile ( inName )) {
+      if (noisy)
+      fprintf ( stderr, "%s: Input file %s is not a normal file.\n",
+                progName, inName );
+      setExit(1);
+      return;
+   }
+   if ( srcMode == SM_F2F && fileExists ( outName ) ) {
+      if (forceOverwrite) {
+	 remove(outName);
+      } else {
+	 fprintf ( stderr, "%s: Output file %s already exists.\n",
+		   progName, outName );
+	 setExit(1);
+	 return;
+      }
+   }
+   if ( srcMode == SM_F2F && !forceOverwrite &&
+        (n=countHardLinks ( inName )) > 0) {
+      fprintf ( stderr, "%s: Input file %s has %d other link%s.\n",
+                progName, inName, n, n > 1 ? "s" : "" );
+      setExit(1);
+      return;
+   }
+
+   if ( srcMode == SM_F2F ) {
+      /* Save the file's meta-info before we open it.  Doing it later
+         means we mess up the access times. */
+      saveInputFileMetaInfo ( inName );
+   }
+
+   switch ( srcMode ) {
+
+      case SM_I2O:
+         inStr = stdin;
+         outStr = stdout;
+         if ( isatty ( fileno ( stdout ) ) ) {
+            fprintf ( stderr,
+                      "%s: I won't write compressed data to a terminal.\n",
+                      progName );
+            fprintf ( stderr, "%s: For help, type: `%s --help'.\n",
+                              progName, progName );
+            setExit(1);
+            return;
+         };
+         break;
+
+      case SM_F2O:
+         inStr = fopen ( inName, "rb" );
+         outStr = stdout;
+         if ( isatty ( fileno ( stdout ) ) ) {
+            fprintf ( stderr,
+                      "%s: I won't write compressed data to a terminal.\n",
+                      progName );
+            fprintf ( stderr, "%s: For help, type: `%s --help'.\n",
+                              progName, progName );
+            if ( inStr != NULL ) fclose ( inStr );
+            setExit(1);
+            return;
+         };
+         if ( inStr == NULL ) {
+            fprintf ( stderr, "%s: Can't open input file %s: %s.\n",
+                      progName, inName, strerror(errno) );
+            setExit(1);
+            return;
+         };
+         break;
+
+      case SM_F2F:
+         inStr = fopen ( inName, "rb" );
+         outStr = fopen_output_safely ( outName, "wb" );
+         if ( outStr == NULL) {
+            fprintf ( stderr, "%s: Can't create output file %s: %s.\n",
+                      progName, outName, strerror(errno) );
+            if ( inStr != NULL ) fclose ( inStr );
+            setExit(1);
+            return;
+         }
+         if ( inStr == NULL ) {
+            fprintf ( stderr, "%s: Can't open input file %s: %s.\n",
+                      progName, inName, strerror(errno) );
+            if ( outStr != NULL ) fclose ( outStr );
+            setExit(1);
+            return;
+         };
+         break;
+
+      default:
+         panic ( "compress: bad srcMode" );
+         break;
+   }
+
+   if (verbosity >= 1) {
+      fprintf ( stderr,  "  %s: ", inName );
+      pad ( inName );
+      fflush ( stderr );
+   }
+
+   /*--- Now the input and output handles are sane.  Do the Biz. ---*/
+   outputHandleJustInCase = outStr;
+   deleteOutputOnInterrupt = True;
+   compressStream ( inStr, outStr );
+   outputHandleJustInCase = NULL;
+
+   /*--- If there was an I/O error, we won't get here. ---*/
+   if ( srcMode == SM_F2F ) {
+      applySavedTimeInfoToOutputFile ( outName );
+      deleteOutputOnInterrupt = False;
+      if ( !keepInputFiles ) {
+         IntNative retVal = remove ( inName );
+         ERROR_IF_NOT_ZERO ( retVal );
+      }
+   }
+
+   deleteOutputOnInterrupt = False;
+}
+
+
+/*---------------------------------------------*/
+static 
+void uncompress ( Char *name )
+{
+   FILE  *inStr;
+   FILE  *outStr;
+   Int32 n, i;
+   Bool  magicNumberOK;
+   Bool  cantGuess;
+   struct MY_STAT statBuf;
+
+   deleteOutputOnInterrupt = False;
+
+   if (name == NULL && srcMode != SM_I2O)
+      panic ( "uncompress: bad modes\n" );
+
+   cantGuess = False;
+   switch (srcMode) {
+      case SM_I2O: 
+         copyFileName ( inName, (Char*)"(stdin)" );
+         copyFileName ( outName, (Char*)"(stdout)" ); 
+         break;
+      case SM_F2F: 
+         copyFileName ( inName, name );
+         copyFileName ( outName, name );
+         for (i = 0; i < BZ_N_SUFFIX_PAIRS; i++)
+            if (mapSuffix(outName,zSuffix[i],unzSuffix[i]))
+               goto zzz; 
+         cantGuess = True;
+         strcat ( outName, ".out" );
+         break;
+      case SM_F2O: 
+         copyFileName ( inName, name );
+         copyFileName ( outName, (Char*)"(stdout)" ); 
+         break;
+   }
+
+   zzz:
+   if ( srcMode != SM_I2O && containsDubiousChars ( inName ) ) {
+      if (noisy)
+      fprintf ( stderr, "%s: There are no files matching `%s'.\n",
+                progName, inName );
+      setExit(1);
+      return;
+   }
+   if ( srcMode != SM_I2O && !fileExists ( inName ) ) {
+      fprintf ( stderr, "%s: Can't open input file %s: %s.\n",
+                progName, inName, strerror(errno) );
+      setExit(1);
+      return;
+   }
+   if ( srcMode == SM_F2F || srcMode == SM_F2O ) {
+      MY_STAT(inName, &statBuf);
+      if ( MY_S_ISDIR(statBuf.st_mode) ) {
+         fprintf( stderr,
+                  "%s: Input file %s is a directory.\n",
+                  progName,inName);
+         setExit(1);
+         return;
+      }
+   }
+   if ( srcMode == SM_F2F && !forceOverwrite && notAStandardFile ( inName )) {
+      if (noisy)
+      fprintf ( stderr, "%s: Input file %s is not a normal file.\n",
+                progName, inName );
+      setExit(1);
+      return;
+   }
+   if ( /* srcMode == SM_F2F implied && */ cantGuess ) {
+      if (noisy)
+      fprintf ( stderr, 
+                "%s: Can't guess original name for %s -- using %s\n",
+                progName, inName, outName );
+      /* just a warning, no return */
+   }   
+   if ( srcMode == SM_F2F && fileExists ( outName ) ) {
+      if (forceOverwrite) {
+	remove(outName);
+      } else {
+        fprintf ( stderr, "%s: Output file %s already exists.\n",
+                  progName, outName );
+        setExit(1);
+        return;
+      }
+   }
+   if ( srcMode == SM_F2F && !forceOverwrite &&
+        (n=countHardLinks ( inName ) ) > 0) {
+      fprintf ( stderr, "%s: Input file %s has %d other link%s.\n",
+                progName, inName, n, n > 1 ? "s" : "" );
+      setExit(1);
+      return;
+   }
+
+   if ( srcMode == SM_F2F ) {
+      /* Save the file's meta-info before we open it.  Doing it later
+         means we mess up the access times. */
+      saveInputFileMetaInfo ( inName );
+   }
+
+   switch ( srcMode ) {
+
+      case SM_I2O:
+         inStr = stdin;
+         outStr = stdout;
+         if ( isatty ( fileno ( stdin ) ) ) {
+            fprintf ( stderr,
+                      "%s: I won't read compressed data from a terminal.\n",
+                      progName );
+            fprintf ( stderr, "%s: For help, type: `%s --help'.\n",
+                              progName, progName );
+            setExit(1);
+            return;
+         };
+         break;
+
+      case SM_F2O:
+         inStr = fopen ( inName, "rb" );
+         outStr = stdout;
+         if ( inStr == NULL ) {
+            fprintf ( stderr, "%s: Can't open input file %s:%s.\n",
+                      progName, inName, strerror(errno) );
+            if ( inStr != NULL ) fclose ( inStr );
+            setExit(1);
+            return;
+         };
+         break;
+
+      case SM_F2F:
+         inStr = fopen ( inName, "rb" );
+         outStr = fopen_output_safely ( outName, "wb" );
+         if ( outStr == NULL) {
+            fprintf ( stderr, "%s: Can't create output file %s: %s.\n",
+                      progName, outName, strerror(errno) );
+            if ( inStr != NULL ) fclose ( inStr );
+            setExit(1);
+            return;
+         }
+         if ( inStr == NULL ) {
+            fprintf ( stderr, "%s: Can't open input file %s: %s.\n",
+                      progName, inName, strerror(errno) );
+            if ( outStr != NULL ) fclose ( outStr );
+            setExit(1);
+            return;
+         };
+         break;
+
+      default:
+         panic ( "uncompress: bad srcMode" );
+         break;
+   }
+
+   if (verbosity >= 1) {
+      fprintf ( stderr, "  %s: ", inName );
+      pad ( inName );
+      fflush ( stderr );
+   }
+
+   /*--- Now the input and output handles are sane.  Do the Biz. ---*/
+   outputHandleJustInCase = outStr;
+   deleteOutputOnInterrupt = True;
+   magicNumberOK = uncompressStream ( inStr, outStr );
+   outputHandleJustInCase = NULL;
+
+   /*--- If there was an I/O error, we won't get here. ---*/
+   if ( magicNumberOK ) {
+      if ( srcMode == SM_F2F ) {
+         applySavedTimeInfoToOutputFile ( outName );
+         deleteOutputOnInterrupt = False;
+         if ( !keepInputFiles ) {
+            IntNative retVal = remove ( inName );
+            ERROR_IF_NOT_ZERO ( retVal );
+         }
+      }
+   } else {
+      unzFailsExist = True;
+      deleteOutputOnInterrupt = False;
+      if ( srcMode == SM_F2F ) {
+         IntNative retVal = remove ( outName );
+         ERROR_IF_NOT_ZERO ( retVal );
+      }
+   }
+   deleteOutputOnInterrupt = False;
+
+   if ( magicNumberOK ) {
+      if (verbosity >= 1)
+         fprintf ( stderr, "done\n" );
+   } else {
+      setExit(2);
+      if (verbosity >= 1)
+         fprintf ( stderr, "not a bzip2 file.\n" ); else
+         fprintf ( stderr,
+                   "%s: %s is not a bzip2 file.\n",
+                   progName, inName );
+   }
+
+}
+
+
+/*---------------------------------------------*/
+static 
+void testf ( Char *name )
+{
+   FILE *inStr;
+   Bool allOK;
+   struct MY_STAT statBuf;
+
+   deleteOutputOnInterrupt = False;
+
+   if (name == NULL && srcMode != SM_I2O)
+      panic ( "testf: bad modes\n" );
+
+   copyFileName ( outName, (Char*)"(none)" );
+   switch (srcMode) {
+      case SM_I2O: copyFileName ( inName, (Char*)"(stdin)" ); break;
+      case SM_F2F: copyFileName ( inName, name ); break;
+      case SM_F2O: copyFileName ( inName, name ); break;
+   }
+
+   if ( srcMode != SM_I2O && containsDubiousChars ( inName ) ) {
+      if (noisy)
+      fprintf ( stderr, "%s: There are no files matching `%s'.\n",
+                progName, inName );
+      setExit(1);
+      return;
+   }
+   if ( srcMode != SM_I2O && !fileExists ( inName ) ) {
+      fprintf ( stderr, "%s: Can't open input %s: %s.\n",
+                progName, inName, strerror(errno) );
+      setExit(1);
+      return;
+   }
+   if ( srcMode != SM_I2O ) {
+      MY_STAT(inName, &statBuf);
+      if ( MY_S_ISDIR(statBuf.st_mode) ) {
+         fprintf( stderr,
+                  "%s: Input file %s is a directory.\n",
+                  progName,inName);
+         setExit(1);
+         return;
+      }
+   }
+
+   switch ( srcMode ) {
+
+      case SM_I2O:
+         if ( isatty ( fileno ( stdin ) ) ) {
+            fprintf ( stderr,
+                      "%s: I won't read compressed data from a terminal.\n",
+                      progName );
+            fprintf ( stderr, "%s: For help, type: `%s --help'.\n",
+                              progName, progName );
+            setExit(1);
+            return;
+         };
+         inStr = stdin;
+         break;
+
+      case SM_F2O: case SM_F2F:
+         inStr = fopen ( inName, "rb" );
+         if ( inStr == NULL ) {
+            fprintf ( stderr, "%s: Can't open input file %s:%s.\n",
+                      progName, inName, strerror(errno) );
+            setExit(1);
+            return;
+         };
+         break;
+
+      default:
+         panic ( "testf: bad srcMode" );
+         break;
+   }
+
+   if (verbosity >= 1) {
+      fprintf ( stderr, "  %s: ", inName );
+      pad ( inName );
+      fflush ( stderr );
+   }
+
+   /*--- Now the input handle is sane.  Do the Biz. ---*/
+   outputHandleJustInCase = NULL;
+   allOK = testStream ( inStr );
+
+   if (allOK && verbosity >= 1) fprintf ( stderr, "ok\n" );
+   if (!allOK) testFailsExist = True;
+}
+
+
+/*---------------------------------------------*/
+static 
+void license ( void )
+{
+   fprintf ( stderr,
+
+    "bzip2, a block-sorting file compressor.  "
+    "Version %s.\n"
+    "   \n"
+    "   Copyright (C) 1996-2007 by Julian Seward.\n"
+    "   \n"
+    "   This program is free software; you can redistribute it and/or modify\n"
+    "   it under the terms set out in the LICENSE file, which is included\n"
+    "   in the bzip2-1.0.5 source distribution.\n"
+    "   \n"
+    "   This program is distributed in the hope that it will be useful,\n"
+    "   but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+    "   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+    "   LICENSE file for more details.\n"
+    "   \n",
+    BZ2_bzlibVersion()
+   );
+}
+
+
+/*---------------------------------------------*/
+static 
+void usage ( Char *fullProgName )
+{
+   fprintf (
+      stderr,
+      "bzip2, a block-sorting file compressor.  "
+      "Version %s.\n"
+      "\n   usage: %s [flags and input files in any order]\n"
+      "\n"
+      "   -h --help           print this message\n"
+      "   -d --decompress     force decompression\n"
+      "   -z --compress       force compression\n"
+      "   -k --keep           keep (don't delete) input files\n"
+      "   -f --force          overwrite existing output files\n"
+      "   -t --test           test compressed file integrity\n"
+      "   -c --stdout         output to standard out\n"
+      "   -q --quiet          suppress noncritical error messages\n"
+      "   -v --verbose        be verbose (a 2nd -v gives more)\n"
+      "   -L --license        display software version & license\n"
+      "   -V --version        display software version & license\n"
+      "   -s --small          use less memory (at most 2500k)\n"
+      "   -1 .. -9            set block size to 100k .. 900k\n"
+      "   --fast              alias for -1\n"
+      "   --best              alias for -9\n"
+      "\n"
+      "   If invoked as `bzip2', default action is to compress.\n"
+      "              as `bunzip2',  default action is to decompress.\n"
+      "              as `bzcat', default action is to decompress to stdout.\n"
+      "\n"
+      "   If no file names are given, bzip2 compresses or decompresses\n"
+      "   from standard input to standard output.  You can combine\n"
+      "   short flags, so `-v -4' means the same as -v4 or -4v, &c.\n"
+#     if BZ_UNIX
+      "\n"
+#     endif
+      ,
+
+      BZ2_bzlibVersion(),
+      fullProgName
+   );
+}
+
+
+/*---------------------------------------------*/
+static 
+void redundant ( Char* flag )
+{
+   fprintf ( 
+      stderr, 
+      "%s: %s is redundant in versions 0.9.5 and above\n",
+      progName, flag );
+}
+
+
+/*---------------------------------------------*/
+/*--
+  All the garbage from here to main() is purely to
+  implement a linked list of command-line arguments,
+  into which main() copies argv[1 .. argc-1].
+
+  The purpose of this exercise is to facilitate 
+  the expansion of wildcard characters * and ? in 
+  filenames for OSs which don't know how to do it
+  themselves, like MSDOS, Windows 95 and NT.
+
+  The actual Dirty Work is done by the platform-
+  specific macro APPEND_FILESPEC.
+--*/
+
+typedef
+   struct zzzz {
+      Char        *name;
+      struct zzzz *link;
+   }
+   Cell;
+
+
+/*---------------------------------------------*/
+static 
+void *myMalloc ( Int32 n )
+{
+   void* p;
+
+   p = malloc ( (size_t)n );
+   if (p == NULL) outOfMemory ();
+   return p;
+}
+
+
+/*---------------------------------------------*/
+static 
+Cell *mkCell ( void )
+{
+   Cell *c;
+
+   c = (Cell*) myMalloc ( sizeof ( Cell ) );
+   c->name = NULL;
+   c->link = NULL;
+   return c;
+}
+
+
+/*---------------------------------------------*/
+static 
+Cell *snocString ( Cell *root, Char *name )
+{
+   if (root == NULL) {
+      Cell *tmp = mkCell();
+      tmp->name = (Char*) myMalloc ( 5 + strlen(name) );
+      strcpy ( tmp->name, name );
+      return tmp;
+   } else {
+      Cell *tmp = root;
+      while (tmp->link != NULL) tmp = tmp->link;
+      tmp->link = snocString ( tmp->link, name );
+      return root;
+   }
+}
+
+
+/*---------------------------------------------*/
+static 
+void addFlagsFromEnvVar ( Cell** argList, Char* varName ) 
+{
+   Int32 i, j, k;
+   Char *envbase, *p;
+
+   envbase = getenv(varName);
+   if (envbase != NULL) {
+      p = envbase;
+      i = 0;
+      while (True) {
+         if (p[i] == 0) break;
+         p += i;
+         i = 0;
+         while (isspace((Int32)(p[0]))) p++;
+         while (p[i] != 0 && !isspace((Int32)(p[i]))) i++;
+         if (i > 0) {
+            k = i; if (k > FILE_NAME_LEN-10) k = FILE_NAME_LEN-10;
+            for (j = 0; j < k; j++) tmpName[j] = p[j];
+            tmpName[k] = 0;
+            APPEND_FLAG(*argList, tmpName);
+         }
+      }
+   }
+}
+
+
+/*---------------------------------------------*/
+#define ISFLAG(s) (strcmp(aa->name, (s))==0)
+
+IntNative main ( IntNative argc, Char *argv[] )
+{
+   Int32  i, j;
+   Char   *tmp;
+   Cell   *argList;
+   Cell   *aa;
+   Bool   decode;
+
+   /*-- Be really really really paranoid :-) --*/
+   if (sizeof(Int32) != 4 || sizeof(UInt32) != 4  ||
+       sizeof(Int16) != 2 || sizeof(UInt16) != 2  ||
+       sizeof(Char)  != 1 || sizeof(UChar)  != 1)
+      configError();
+
+   /*-- Initialise --*/
+   outputHandleJustInCase  = NULL;
+   smallMode               = False;
+   keepInputFiles          = False;
+   forceOverwrite          = False;
+   noisy                   = True;
+   verbosity               = 0;
+   blockSize100k           = 9;
+   testFailsExist          = False;
+   unzFailsExist           = False;
+   numFileNames            = 0;
+   numFilesProcessed       = 0;
+   workFactor              = 30;
+   deleteOutputOnInterrupt = False;
+   exitValue               = 0;
+   i = j = 0; /* avoid bogus warning from egcs-1.1.X */
+
+   /*-- Set up signal handlers for mem access errors --*/
+   signal (SIGSEGV, mySIGSEGVorSIGBUScatcher);
+#  if BZ_UNIX
+#  ifndef __DJGPP__
+   signal (SIGBUS,  mySIGSEGVorSIGBUScatcher);
+#  endif
+#  endif
+
+   copyFileName ( inName,  (Char*)"(none)" );
+   copyFileName ( outName, (Char*)"(none)" );
+
+   copyFileName ( progNameReally, argv[0] );
+   progName = &progNameReally[0];
+   for (tmp = &progNameReally[0]; *tmp != '\0'; tmp++)
+      if (*tmp == PATH_SEP) progName = tmp + 1;
+
+
+   /*-- Copy flags from env var BZIP2, and 
+        expand filename wildcards in arg list.
+   --*/
+   argList = NULL;
+   addFlagsFromEnvVar ( &argList,  (Char*)"BZIP2" );
+   addFlagsFromEnvVar ( &argList,  (Char*)"BZIP" );
+   for (i = 1; i <= argc-1; i++)
+      APPEND_FILESPEC(argList, argv[i]);
+
+
+   /*-- Find the length of the longest filename --*/
+   longestFileName = 7;
+   numFileNames    = 0;
+   decode          = True;
+   for (aa = argList; aa != NULL; aa = aa->link) {
+      if (ISFLAG("--")) { decode = False; continue; }
+      if (aa->name[0] == '-' && decode) continue;
+      numFileNames++;
+      if (longestFileName < (Int32)strlen(aa->name) )
+         longestFileName = (Int32)strlen(aa->name);
+   }
+
+
+   /*-- Determine source modes; flag handling may change this too. --*/
+   if (numFileNames == 0)
+      srcMode = SM_I2O; else srcMode = SM_F2F;
+
+
+   /*-- Determine what to do (compress/uncompress/test/cat). --*/
+   /*-- Note that subsequent flag handling may change this. --*/
+   opMode = OM_Z;
+
+   if ( (strstr ( progName, "unzip" ) != 0) ||
+        (strstr ( progName, "UNZIP" ) != 0) )
+      opMode = OM_UNZ;
+
+   if ( (strstr ( progName, "z2cat" ) != 0) ||
+        (strstr ( progName, "Z2CAT" ) != 0) ||
+        (strstr ( progName, "zcat" ) != 0)  ||
+        (strstr ( progName, "ZCAT" ) != 0) )  {
+      opMode = OM_UNZ;
+      srcMode = (numFileNames == 0) ? SM_I2O : SM_F2O;
+   }
+
+
+   /*-- Look at the flags. --*/
+   for (aa = argList; aa != NULL; aa = aa->link) {
+      if (ISFLAG("--")) break;
+      if (aa->name[0] == '-' && aa->name[1] != '-') {
+         for (j = 1; aa->name[j] != '\0'; j++) {
+            switch (aa->name[j]) {
+               case 'c': srcMode          = SM_F2O; break;
+               case 'd': opMode           = OM_UNZ; break;
+               case 'z': opMode           = OM_Z; break;
+               case 'f': forceOverwrite   = True; break;
+               case 't': opMode           = OM_TEST; break;
+               case 'k': keepInputFiles   = True; break;
+               case 's': smallMode        = True; break;
+               case 'q': noisy            = False; break;
+               case '1': blockSize100k    = 1; break;
+               case '2': blockSize100k    = 2; break;
+               case '3': blockSize100k    = 3; break;
+               case '4': blockSize100k    = 4; break;
+               case '5': blockSize100k    = 5; break;
+               case '6': blockSize100k    = 6; break;
+               case '7': blockSize100k    = 7; break;
+               case '8': blockSize100k    = 8; break;
+               case '9': blockSize100k    = 9; break;
+               case 'V':
+               case 'L': license();            break;
+               case 'v': verbosity++; break;
+               case 'h': usage ( progName );
+                         exit ( 0 );
+                         break;
+               default:  fprintf ( stderr, "%s: Bad flag `%s'\n",
+                                   progName, aa->name );
+                         usage ( progName );
+                         exit ( 1 );
+                         break;
+            }
+         }
+      }
+   }
+   
+   /*-- And again ... --*/
+   for (aa = argList; aa != NULL; aa = aa->link) {
+      if (ISFLAG("--")) break;
+      if (ISFLAG("--stdout"))            srcMode          = SM_F2O;  else
+      if (ISFLAG("--decompress"))        opMode           = OM_UNZ;  else
+      if (ISFLAG("--compress"))          opMode           = OM_Z;    else
+      if (ISFLAG("--force"))             forceOverwrite   = True;    else
+      if (ISFLAG("--test"))              opMode           = OM_TEST; else
+      if (ISFLAG("--keep"))              keepInputFiles   = True;    else
+      if (ISFLAG("--small"))             smallMode        = True;    else
+      if (ISFLAG("--quiet"))             noisy            = False;   else
+      if (ISFLAG("--version"))           license();                  else
+      if (ISFLAG("--license"))           license();                  else
+      if (ISFLAG("--exponential"))       workFactor = 1;             else 
+      if (ISFLAG("--repetitive-best"))   redundant(aa->name);        else
+      if (ISFLAG("--repetitive-fast"))   redundant(aa->name);        else
+      if (ISFLAG("--fast"))              blockSize100k = 1;          else
+      if (ISFLAG("--best"))              blockSize100k = 9;          else
+      if (ISFLAG("--verbose"))           verbosity++;                else
+      if (ISFLAG("--help"))              { usage ( progName ); exit ( 0 ); }
+         else
+         if (strncmp ( aa->name, "--", 2) == 0) {
+            fprintf ( stderr, "%s: Bad flag `%s'\n", progName, aa->name );
+            usage ( progName );
+            exit ( 1 );
+         }
+   }
+
+   if (verbosity > 4) verbosity = 4;
+   if (opMode == OM_Z && smallMode && blockSize100k > 2) 
+      blockSize100k = 2;
+
+   if (opMode == OM_TEST && srcMode == SM_F2O) {
+      fprintf ( stderr, "%s: -c and -t cannot be used together.\n",
+                progName );
+      exit ( 1 );
+   }
+
+   if (srcMode == SM_F2O && numFileNames == 0)
+      srcMode = SM_I2O;
+
+   if (opMode != OM_Z) blockSize100k = 0;
+
+   if (srcMode == SM_F2F) {
+      signal (SIGINT,  mySignalCatcher);
+      signal (SIGTERM, mySignalCatcher);
+#     if BZ_UNIX
+      signal (SIGHUP,  mySignalCatcher);
+#     endif
+   }
+
+   if (opMode == OM_Z) {
+     if (srcMode == SM_I2O) {
+        compress ( NULL );
+     } else {
+        decode = True;
+        for (aa = argList; aa != NULL; aa = aa->link) {
+           if (ISFLAG("--")) { decode = False; continue; }
+           if (aa->name[0] == '-' && decode) continue;
+           numFilesProcessed++;
+           compress ( aa->name );
+        }
+     }
+   } 
+   else
+
+   if (opMode == OM_UNZ) {
+      unzFailsExist = False;
+      if (srcMode == SM_I2O) {
+         uncompress ( NULL );
+      } else {
+         decode = True;
+         for (aa = argList; aa != NULL; aa = aa->link) {
+            if (ISFLAG("--")) { decode = False; continue; }
+            if (aa->name[0] == '-' && decode) continue;
+            numFilesProcessed++;
+            uncompress ( aa->name );
+         }      
+      }
+      if (unzFailsExist) { 
+         setExit(2); 
+         exit(exitValue);
+      }
+   } 
+
+   else {
+      testFailsExist = False;
+      if (srcMode == SM_I2O) {
+         testf ( NULL );
+      } else {
+         decode = True;
+         for (aa = argList; aa != NULL; aa = aa->link) {
+	    if (ISFLAG("--")) { decode = False; continue; }
+            if (aa->name[0] == '-' && decode) continue;
+            numFilesProcessed++;
+            testf ( aa->name );
+	 }
+      }
+      if (testFailsExist && noisy) {
+         fprintf ( stderr,
+           "\n"
+           "You can use the `bzip2recover' program to attempt to recover\n"
+           "data from undamaged sections of corrupted files.\n\n"
+         );
+         setExit(2);
+         exit(exitValue);
+      }
+   }
+
+   /* Free the argument list memory to mollify leak detectors 
+      (eg) Purify, Checker.  Serves no other useful purpose.
+   */
+   aa = argList;
+   while (aa != NULL) {
+      Cell* aa2 = aa->link;
+      if (aa->name != NULL) free(aa->name);
+      free(aa);
+      aa = aa2;
+   }
+
+   return exitValue;
+}
+
+
+/*-----------------------------------------------------------*/
+/*--- end                                         bzip2.c ---*/
+/*-----------------------------------------------------------*/
diff --git a/3party_sloynik/bzip2/bzip2.pro b/3party_sloynik/bzip2/bzip2.pro
new file mode 100644
index 0000000000..4dca6b80cd
--- /dev/null
+++ b/3party_sloynik/bzip2/bzip2.pro
@@ -0,0 +1,18 @@
+TARGET = bzip2
+SLOYNIK_DIR = ../..
+include($$SLOYNIK_DIR/sloynik_common.pri)
+
+TEMPLATE = lib
+CONFIG += staticlib
+SOURCES += \
+    blocksort.c \
+    bzlib.c \
+    compress.c \
+    crctable.c \
+    decompress.c \
+    huffman.c \
+    randtable.c \
+
+HEADERS += \
+    bzlib.h \
+    bzlib_private.h \
diff --git a/3party_sloynik/bzip2/bzip2.txt b/3party_sloynik/bzip2/bzip2.txt
new file mode 100644
index 0000000000..4fb9c7435e
--- /dev/null
+++ b/3party_sloynik/bzip2/bzip2.txt
@@ -0,0 +1,391 @@
+
+NAME
+       bzip2, bunzip2 - a block-sorting file compressor, v1.0.4
+       bzcat - decompresses files to stdout
+       bzip2recover - recovers data from damaged bzip2 files
+
+
+SYNOPSIS
+       bzip2 [ -cdfkqstvzVL123456789 ] [ filenames ...  ]
+       bunzip2 [ -fkvsVL ] [ filenames ...  ]
+       bzcat [ -s ] [ filenames ...  ]
+       bzip2recover filename
+
+
+DESCRIPTION
+       bzip2  compresses  files  using  the Burrows-Wheeler block
+       sorting text compression algorithm,  and  Huffman  coding.
+       Compression  is  generally  considerably  better than that
+       achieved by more conventional LZ77/LZ78-based compressors,
+       and  approaches  the performance of the PPM family of sta-
+       tistical compressors.
+
+       The command-line options are deliberately very similar  to
+       those of GNU gzip, but they are not identical.
+
+       bzip2  expects  a list of file names to accompany the com-
+       mand-line flags.  Each file is replaced  by  a  compressed
+       version  of  itself,  with  the  name "original_name.bz2".
+       Each compressed file has the same modification date,  per-
+       missions, and, when possible, ownership as the correspond-
+       ing original, so that these properties  can  be  correctly
+       restored  at  decompression  time.   File name handling is
+       naive in the sense that there is no mechanism for preserv-
+       ing  original file names, permissions, ownerships or dates
+       in filesystems which lack these concepts, or have  serious
+       file name length restrictions, such as MS-DOS.
+
+       bzip2  and  bunzip2 will by default not overwrite existing
+       files.  If you want this to happen, specify the -f flag.
+
+       If no file names  are  specified,  bzip2  compresses  from
+       standard  input  to  standard output.  In this case, bzip2
+       will decline to write compressed output to a terminal,  as
+       this  would  be  entirely  incomprehensible  and therefore
+       pointless.
+
+       bunzip2 (or bzip2 -d) decompresses  all  specified  files.
+       Files which were not created by bzip2 will be detected and
+       ignored, and a warning issued.  bzip2  attempts  to  guess
+       the  filename  for  the decompressed file from that of the
+       compressed file as follows:
+
+              filename.bz2    becomes   filename
+              filename.bz     becomes   filename
+              filename.tbz2   becomes   filename.tar
+              filename.tbz    becomes   filename.tar
+              anyothername    becomes   anyothername.out
+
+       If the file does not end in one of the recognised endings,
+       .bz2,  .bz,  .tbz2 or .tbz, bzip2 complains that it cannot
+       guess the name of the original file, and uses the original
+       name with .out appended.
+
+       As  with compression, supplying no filenames causes decom-
+       pression from standard input to standard output.
+
+       bunzip2 will correctly decompress a file which is the con-
+       catenation of two or more compressed files.  The result is
+       the concatenation of the corresponding uncompressed files.
+       Integrity testing (-t) of concatenated compressed files is
+       also supported.
+
+       You can also compress or decompress files to the  standard
+       output  by giving the -c flag.  Multiple files may be com-
+       pressed and decompressed like this.  The resulting outputs
+       are  fed  sequentially to stdout.  Compression of multiple
+       files in this manner generates a stream containing  multi-
+       ple compressed file representations.  Such a stream can be
+       decompressed correctly only  by  bzip2  version  0.9.0  or
+       later.   Earlier  versions of bzip2 will stop after decom-
+       pressing the first file in the stream.
+
+       bzcat (or bzip2 -dc) decompresses all specified  files  to
+       the standard output.
+
+       bzip2  will  read arguments from the environment variables
+       BZIP2 and BZIP, in  that  order,  and  will  process  them
+       before  any  arguments  read  from the command line.  This
+       gives a convenient way to supply default arguments.
+
+       Compression is always performed, even  if  the  compressed
+       file  is slightly larger than the original.  Files of less
+       than about one hundred bytes tend to get larger, since the
+       compression  mechanism  has  a  constant  overhead  in the
+       region of 50 bytes.  Random data (including the output  of
+       most  file  compressors)  is  coded at about 8.05 bits per
+       byte, giving an expansion of around 0.5%.
+
+       As a self-check for your  protection,  bzip2  uses  32-bit
+       CRCs  to make sure that the decompressed version of a file
+       is identical to the original.  This guards against corrup-
+       tion  of  the compressed data, and against undetected bugs
+       in bzip2 (hopefully very unlikely).  The chances  of  data
+       corruption  going  undetected  is  microscopic,  about one
+       chance in four billion for each file processed.  Be aware,
+       though,  that  the  check occurs upon decompression, so it
+       can only tell you that something is wrong.  It can't  help
+       you  recover  the original uncompressed data.  You can use
+       bzip2recover to try to recover data from damaged files.
+
+       Return values: 0 for a normal exit,  1  for  environmental
+       problems  (file not found, invalid flags, I/O errors, &c),
+       2 to indicate a corrupt compressed file, 3 for an internal
+       consistency error (eg, bug) which caused bzip2 to panic.
+
+
+OPTIONS
+       -c --stdout
+              Compress or decompress to standard output.
+
+       -d --decompress
+              Force  decompression.  bzip2, bunzip2 and bzcat are
+              really the same program,  and  the  decision  about
+              what  actions to take is done on the basis of which
+              name is used.  This flag overrides that  mechanism,
+              and forces bzip2 to decompress.
+
+       -z --compress
+              The   complement   to   -d:   forces   compression,
+              regardless of the invocation name.
+
+       -t --test
+              Check integrity of the specified file(s), but don't
+              decompress  them.   This  really  performs  a trial
+              decompression and throws away the result.
+
+       -f --force
+              Force overwrite of output files.   Normally,  bzip2
+              will  not  overwrite  existing  output files.  Also
+              forces bzip2 to break hard links to files, which it
+              otherwise wouldn't do.
+
+              bzip2  normally  declines to decompress files which
+              don't have the  correct  magic  header  bytes.   If
+              forced  (-f),  however,  it  will  pass  such files
+              through unmodified.  This is how GNU gzip  behaves.
+
+       -k --keep
+              Keep  (don't delete) input files during compression
+              or decompression.
+
+       -s --small
+              Reduce memory usage, for compression, decompression
+              and  testing.   Files  are  decompressed and tested
+              using a modified algorithm which only requires  2.5
+              bytes  per  block byte.  This means any file can be
+              decompressed in 2300k of memory,  albeit  at  about
+              half the normal speed.
+
+              During  compression,  -s  selects  a  block size of
+              200k, which limits memory use to  around  the  same
+              figure,  at  the expense of your compression ratio.
+              In short, if your  machine  is  low  on  memory  (8
+              megabytes  or  less),  use  -s for everything.  See
+              MEMORY MANAGEMENT below.
+
+       -q --quiet
+              Suppress non-essential warning messages.   Messages
+              pertaining  to I/O errors and other critical events
+              will not be suppressed.
+
+       -v --verbose
+              Verbose mode -- show the compression ratio for each
+              file  processed.   Further  -v's  increase the ver-
+              bosity level, spewing out lots of information which
+              is primarily of interest for diagnostic purposes.
+
+       -L --license -V --version
+              Display  the  software  version,  license terms and
+              conditions.
+
+       -1 (or --fast) to -9 (or --best)
+              Set the block size to 100 k, 200 k ..  900  k  when
+              compressing.   Has  no  effect  when decompressing.
+              See MEMORY MANAGEMENT below.  The --fast and --best
+              aliases  are  primarily for GNU gzip compatibility.
+              In particular, --fast doesn't make things  signifi-
+              cantly  faster.   And  --best  merely  selects  the
+              default behaviour.
+
+       --     Treats all subsequent arguments as file names, even
+              if they start with a dash.  This is so you can han-
+              dle files with names beginning  with  a  dash,  for
+              example: bzip2 -- -myfilename.
+
+       --repetitive-fast --repetitive-best
+              These  flags  are  redundant  in versions 0.9.5 and
+              above.  They provided some coarse control over  the
+              behaviour  of the sorting algorithm in earlier ver-
+              sions, which was sometimes useful.  0.9.5 and above
+              have  an  improved  algorithm  which  renders these
+              flags irrelevant.
+
+
+MEMORY MANAGEMENT
+       bzip2 compresses large files in blocks.   The  block  size
+       affects  both  the  compression  ratio  achieved,  and the
+       amount of memory needed for compression and decompression.
+       The  flags  -1  through  -9  specify  the block size to be
+       100,000 bytes through 900,000 bytes (the default)  respec-
+       tively.   At  decompression  time, the block size used for
+       compression is read from  the  header  of  the  compressed
+       file, and bunzip2 then allocates itself just enough memory
+       to decompress the file.  Since block sizes are  stored  in
+       compressed  files,  it follows that the flags -1 to -9 are
+       irrelevant to and so ignored during decompression.
+
+       Compression and decompression requirements, in bytes,  can
+       be estimated as:
+
+              Compression:   400k + ( 8 x block size )
+
+              Decompression: 100k + ( 4 x block size ), or
+                             100k + ( 2.5 x block size )
+
+       Larger  block  sizes  give  rapidly  diminishing  marginal
+       returns.  Most of the compression comes from the first two
+       or  three hundred k of block size, a fact worth bearing in
+       mind when using bzip2  on  small  machines.   It  is  also
+       important  to  appreciate  that  the  decompression memory
+       requirement is set at compression time by  the  choice  of
+       block size.
+
+       For  files  compressed  with  the default 900k block size,
+       bunzip2 will require about 3700 kbytes to decompress.   To
+       support decompression of any file on a 4 megabyte machine,
+       bunzip2 has an option to  decompress  using  approximately
+       half this amount of memory, about 2300 kbytes.  Decompres-
+       sion speed is also halved, so you should use  this  option
+       only where necessary.  The relevant flag is -s.
+
+       In general, try and use the largest block size memory con-
+       straints  allow,  since  that  maximises  the  compression
+       achieved.   Compression and decompression speed are virtu-
+       ally unaffected by block size.
+
+       Another significant point applies to files which fit in  a
+       single  block  --  that  means  most files you'd encounter
+       using a large block  size.   The  amount  of  real  memory
+       touched is proportional to the size of the file, since the
+       file is smaller than a block.  For example, compressing  a
+       file  20,000  bytes  long  with the flag -9 will cause the
+       compressor to allocate around 7600k of  memory,  but  only
+       touch 400k + 20000 * 8 = 560 kbytes of it.  Similarly, the
+       decompressor will allocate 3700k but  only  touch  100k  +
+       20000 * 4 = 180 kbytes.
+
+       Here  is a table which summarises the maximum memory usage
+       for different block sizes.  Also  recorded  is  the  total
+       compressed  size for 14 files of the Calgary Text Compres-
+       sion Corpus totalling 3,141,622 bytes.  This column  gives
+       some  feel  for  how  compression  varies with block size.
+       These figures tend to understate the advantage  of  larger
+       block  sizes  for  larger files, since the Corpus is domi-
+       nated by smaller files.
+
+                  Compress   Decompress   Decompress   Corpus
+           Flag     usage      usage       -s usage     Size
+
+            -1      1200k       500k         350k      914704
+            -2      2000k       900k         600k      877703
+            -3      2800k      1300k         850k      860338
+            -4      3600k      1700k        1100k      846899
+            -5      4400k      2100k        1350k      845160
+            -6      5200k      2500k        1600k      838626
+            -7      6100k      2900k        1850k      834096
+            -8      6800k      3300k        2100k      828642
+            -9      7600k      3700k        2350k      828642
+
+
+RECOVERING DATA FROM DAMAGED FILES
+       bzip2 compresses files in blocks, usually 900kbytes  long.
+       Each block is handled independently.  If a media or trans-
+       mission error causes a multi-block  .bz2  file  to  become
+       damaged,  it  may  be  possible  to  recover data from the
+       undamaged blocks in the file.
+
+       The compressed representation of each block  is  delimited
+       by  a  48-bit pattern, which makes it possible to find the
+       block boundaries with reasonable  certainty.   Each  block
+       also  carries its own 32-bit CRC, so damaged blocks can be
+       distinguished from undamaged ones.
+
+       bzip2recover is a  simple  program  whose  purpose  is  to
+       search  for blocks in .bz2 files, and write each block out
+       into its own .bz2 file.  You can then use bzip2 -t to test
+       the integrity of the resulting files, and decompress those
+       which are undamaged.
+
+       bzip2recover takes a single argument, the name of the dam-
+       aged    file,    and    writes    a    number   of   files
+       "rec00001file.bz2",  "rec00002file.bz2",  etc,  containing
+       the   extracted   blocks.   The   output   filenames   are
+       designed  so  that the use of wildcards in subsequent pro-
+       cessing  -- for example, "bzip2 -dc  rec*file.bz2 > recov-
+       ered_data" -- processes the files in the correct order.
+
+       bzip2recover should be of most use dealing with large .bz2
+       files,  as  these will contain many blocks.  It is clearly
+       futile to use it on damaged single-block  files,  since  a
+       damaged  block  cannot  be recovered.  If you wish to min-
+       imise any potential data loss through media  or  transmis-
+       sion errors, you might consider compressing with a smaller
+       block size.
+
+
+PERFORMANCE NOTES
+       The sorting phase of compression gathers together  similar
+       strings  in  the  file.  Because of this, files containing
+       very long runs of  repeated  symbols,  like  "aabaabaabaab
+       ..."   (repeated  several hundred times) may compress more
+       slowly than normal.  Versions 0.9.5 and  above  fare  much
+       better  than previous versions in this respect.  The ratio
+       between worst-case and average-case compression time is in
+       the  region  of  10:1.  For previous versions, this figure
+       was more like 100:1.  You can use the -vvvv option to mon-
+       itor progress in great detail, if you want.
+
+       Decompression speed is unaffected by these phenomena.
+
+       bzip2  usually  allocates  several  megabytes of memory to
+       operate in, and then charges all over it in a fairly  ran-
+       dom  fashion.   This means that performance, both for com-
+       pressing and decompressing, is largely determined  by  the
+       speed  at  which  your  machine  can service cache misses.
+       Because of this, small changes to the code to  reduce  the
+       miss  rate  have  been observed to give disproportionately
+       large performance improvements.  I imagine bzip2 will per-
+       form best on machines with very large caches.
+
+
+CAVEATS
+       I/O  error  messages  are not as helpful as they could be.
+       bzip2 tries hard to detect I/O errors  and  exit  cleanly,
+       but  the  details  of  what  the problem is sometimes seem
+       rather misleading.
+
+       This manual page pertains to version 1.0.4 of bzip2.  Com-
+       pressed  data created by this version is entirely forwards
+       and  backwards  compatible  with   the   previous   public
+       releases,  versions  0.1pl2,  0.9.0,  0.9.5, 1.0.0, 1.0.1,
+       1.0.2 and 1.0.3, but with the  following  exception: 0.9.0
+       and above can  correctly decompress  multiple concatenated
+       compressed files.  0.1pl2  cannot do this;  it  will  stop
+       after  decompressing just the first file in the stream.
+
+       bzip2recover  versions prior to 1.0.2 used 32-bit integers
+       to represent bit positions in compressed  files,  so  they
+       could  not handle compressed files more than 512 megabytes
+       long.  Versions 1.0.2 and above use 64-bit  ints  on  some
+       platforms  which  support them (GNU supported targets, and
+       Windows).  To establish whether or  not  bzip2recover  was
+       built  with  such  a limitation, run it without arguments.
+       In any event you can build yourself an  unlimited  version
+       if  you  can  recompile  it  with MaybeUInt64 set to be an
+       unsigned 64-bit integer.
+
+
+AUTHOR
+       Julian Seward, jsewardbzip.org.
+
+       http://www.bzip.org
+
+       The ideas embodied in bzip2 are due to (at least) the fol-
+       lowing  people: Michael Burrows and David Wheeler (for the
+       block sorting transformation), David Wheeler  (again,  for
+       the Huffman coder), Peter Fenwick (for the structured cod-
+       ing model in the original bzip, and many refinements), and
+       Alistair  Moffat,  Radford  Neal  and  Ian Witten (for the
+       arithmetic  coder  in  the  original  bzip).   I  am  much
+       indebted for their help, support and advice.  See the man-
+       ual in the source distribution for pointers to sources  of
+       documentation.  Christian von Roques encouraged me to look
+       for faster sorting algorithms, so as to speed up  compres-
+       sion.  Bela Lubkin encouraged me to improve the worst-case
+       compression performance.  Donna Robinson XMLised the docu-
+       mentation.   The bz* scripts are derived from those of GNU
+       gzip.  Many people sent patches, helped  with  portability
+       problems,  lent  machines,  gave advice and were generally
+       helpful.
+
diff --git a/3party_sloynik/bzip2/bzip2recover.c b/3party_sloynik/bzip2/bzip2recover.c
new file mode 100644
index 0000000000..5f6d621809
--- /dev/null
+++ b/3party_sloynik/bzip2/bzip2recover.c
@@ -0,0 +1,514 @@
+/*-----------------------------------------------------------*/
+/*--- Block recoverer program for bzip2                   ---*/
+/*---                                      bzip2recover.c ---*/
+/*-----------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.5 of 10 December 2007
+   Copyright (C) 1996-2007 Julian Seward 
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+/* This program is a complete hack and should be rewritten properly.
+	 It isn't very complicated. */
+
+#include 
+#include 
+#include 
+#include 
+
+
+/* This program records bit locations in the file to be recovered.
+   That means that if 64-bit ints are not supported, we will not
+   be able to recover .bz2 files over 512MB (2^32 bits) long.
+   On GNU supported platforms, we take advantage of the 64-bit
+   int support to circumvent this problem.  Ditto MSVC.
+
+   This change occurred in version 1.0.2; all prior versions have
+   the 512MB limitation.
+*/
+#ifdef __GNUC__
+   typedef  unsigned long long int  MaybeUInt64;
+#  define MaybeUInt64_FMT "%Lu"
+#else
+#ifdef _MSC_VER
+   typedef  unsigned __int64  MaybeUInt64;
+#  define MaybeUInt64_FMT "%I64u"
+#else
+   typedef  unsigned int   MaybeUInt64;
+#  define MaybeUInt64_FMT "%u"
+#endif
+#endif
+
+typedef  unsigned int   UInt32;
+typedef  int            Int32;
+typedef  unsigned char  UChar;
+typedef  char           Char;
+typedef  unsigned char  Bool;
+#define True    ((Bool)1)
+#define False   ((Bool)0)
+
+
+#define BZ_MAX_FILENAME 2000
+
+Char inFileName[BZ_MAX_FILENAME];
+Char outFileName[BZ_MAX_FILENAME];
+Char progName[BZ_MAX_FILENAME];
+
+MaybeUInt64 bytesOut = 0;
+MaybeUInt64 bytesIn  = 0;
+
+
+/*---------------------------------------------------*/
+/*--- Header bytes                                ---*/
+/*---------------------------------------------------*/
+
+#define BZ_HDR_B 0x42                         /* 'B' */
+#define BZ_HDR_Z 0x5a                         /* 'Z' */
+#define BZ_HDR_h 0x68                         /* 'h' */
+#define BZ_HDR_0 0x30                         /* '0' */
+ 
+
+/*---------------------------------------------------*/
+/*--- I/O errors                                  ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------*/
+static void readError ( void )
+{
+   fprintf ( stderr,
+             "%s: I/O error reading `%s', possible reason follows.\n",
+            progName, inFileName );
+   perror ( progName );
+   fprintf ( stderr, "%s: warning: output file(s) may be incomplete.\n",
+             progName );
+   exit ( 1 );
+}
+
+
+/*---------------------------------------------*/
+static void writeError ( void )
+{
+   fprintf ( stderr,
+             "%s: I/O error reading `%s', possible reason follows.\n",
+            progName, inFileName );
+   perror ( progName );
+   fprintf ( stderr, "%s: warning: output file(s) may be incomplete.\n",
+             progName );
+   exit ( 1 );
+}
+
+
+/*---------------------------------------------*/
+static void mallocFail ( Int32 n )
+{
+   fprintf ( stderr,
+             "%s: malloc failed on request for %d bytes.\n",
+            progName, n );
+   fprintf ( stderr, "%s: warning: output file(s) may be incomplete.\n",
+             progName );
+   exit ( 1 );
+}
+
+
+/*---------------------------------------------*/
+static void tooManyBlocks ( Int32 max_handled_blocks )
+{
+   fprintf ( stderr,
+             "%s: `%s' appears to contain more than %d blocks\n",
+            progName, inFileName, max_handled_blocks );
+   fprintf ( stderr,
+             "%s: and cannot be handled.  To fix, increase\n",
+             progName );
+   fprintf ( stderr, 
+             "%s: BZ_MAX_HANDLED_BLOCKS in bzip2recover.c, and recompile.\n",
+             progName );
+   exit ( 1 );
+}
+
+
+
+/*---------------------------------------------------*/
+/*--- Bit stream I/O                              ---*/
+/*---------------------------------------------------*/
+
+typedef
+   struct {
+      FILE*  handle;
+      Int32  buffer;
+      Int32  buffLive;
+      Char   mode;
+   }
+   BitStream;
+
+
+/*---------------------------------------------*/
+static BitStream* bsOpenReadStream ( FILE* stream )
+{
+   BitStream *bs = malloc ( sizeof(BitStream) );
+   if (bs == NULL) mallocFail ( sizeof(BitStream) );
+   bs->handle = stream;
+   bs->buffer = 0;
+   bs->buffLive = 0;
+   bs->mode = 'r';
+   return bs;
+}
+
+
+/*---------------------------------------------*/
+static BitStream* bsOpenWriteStream ( FILE* stream )
+{
+   BitStream *bs = malloc ( sizeof(BitStream) );
+   if (bs == NULL) mallocFail ( sizeof(BitStream) );
+   bs->handle = stream;
+   bs->buffer = 0;
+   bs->buffLive = 0;
+   bs->mode = 'w';
+   return bs;
+}
+
+
+/*---------------------------------------------*/
+static void bsPutBit ( BitStream* bs, Int32 bit )
+{
+   if (bs->buffLive == 8) {
+      Int32 retVal = putc ( (UChar) bs->buffer, bs->handle );
+      if (retVal == EOF) writeError();
+      bytesOut++;
+      bs->buffLive = 1;
+      bs->buffer = bit & 0x1;
+   } else {
+      bs->buffer = ( (bs->buffer << 1) | (bit & 0x1) );
+      bs->buffLive++;
+   };
+}
+
+
+/*---------------------------------------------*/
+/*--
+   Returns 0 or 1, or 2 to indicate EOF.
+--*/
+static Int32 bsGetBit ( BitStream* bs )
+{
+   if (bs->buffLive > 0) {
+      bs->buffLive --;
+      return ( ((bs->buffer) >> (bs->buffLive)) & 0x1 );
+   } else {
+      Int32 retVal = getc ( bs->handle );
+      if ( retVal == EOF ) {
+         if (errno != 0) readError();
+         return 2;
+      }
+      bs->buffLive = 7;
+      bs->buffer = retVal;
+      return ( ((bs->buffer) >> 7) & 0x1 );
+   }
+}
+
+
+/*---------------------------------------------*/
+static void bsClose ( BitStream* bs )
+{
+   Int32 retVal;
+
+   if ( bs->mode == 'w' ) {
+      while ( bs->buffLive < 8 ) {
+         bs->buffLive++;
+         bs->buffer <<= 1;
+      };
+      retVal = putc ( (UChar) (bs->buffer), bs->handle );
+      if (retVal == EOF) writeError();
+      bytesOut++;
+      retVal = fflush ( bs->handle );
+      if (retVal == EOF) writeError();
+   }
+   retVal = fclose ( bs->handle );
+   if (retVal == EOF) {
+      if (bs->mode == 'w') writeError(); else readError();
+   }
+   free ( bs );
+}
+
+
+/*---------------------------------------------*/
+static void bsPutUChar ( BitStream* bs, UChar c )
+{
+   Int32 i;
+   for (i = 7; i >= 0; i--)
+      bsPutBit ( bs, (((UInt32) c) >> i) & 0x1 );
+}
+
+
+/*---------------------------------------------*/
+static void bsPutUInt32 ( BitStream* bs, UInt32 c )
+{
+   Int32 i;
+
+   for (i = 31; i >= 0; i--)
+      bsPutBit ( bs, (c >> i) & 0x1 );
+}
+
+
+/*---------------------------------------------*/
+static Bool endsInBz2 ( Char* name )
+{
+   Int32 n = strlen ( name );
+   if (n <= 4) return False;
+   return
+      (name[n-4] == '.' &&
+       name[n-3] == 'b' &&
+       name[n-2] == 'z' &&
+       name[n-1] == '2');
+}
+
+
+/*---------------------------------------------------*/
+/*---                                             ---*/
+/*---------------------------------------------------*/
+
+/* This logic isn't really right when it comes to Cygwin. */
+#ifdef _WIN32
+#  define  BZ_SPLIT_SYM  '\\'  /* path splitter on Windows platform */
+#else
+#  define  BZ_SPLIT_SYM  '/'   /* path splitter on Unix platform */
+#endif
+
+#define BLOCK_HEADER_HI  0x00003141UL
+#define BLOCK_HEADER_LO  0x59265359UL
+
+#define BLOCK_ENDMARK_HI 0x00001772UL
+#define BLOCK_ENDMARK_LO 0x45385090UL
+
+/* Increase if necessary.  However, a .bz2 file with > 50000 blocks
+   would have an uncompressed size of at least 40GB, so the chances
+   are low you'll need to up this.
+*/
+#define BZ_MAX_HANDLED_BLOCKS 50000
+
+MaybeUInt64 bStart [BZ_MAX_HANDLED_BLOCKS];
+MaybeUInt64 bEnd   [BZ_MAX_HANDLED_BLOCKS];
+MaybeUInt64 rbStart[BZ_MAX_HANDLED_BLOCKS];
+MaybeUInt64 rbEnd  [BZ_MAX_HANDLED_BLOCKS];
+
+Int32 main ( Int32 argc, Char** argv )
+{
+   FILE*       inFile;
+   FILE*       outFile;
+   BitStream*  bsIn, *bsWr;
+   Int32       b, wrBlock, currBlock, rbCtr;
+   MaybeUInt64 bitsRead;
+
+   UInt32      buffHi, buffLo, blockCRC;
+   Char*       p;
+
+   strcpy ( progName, argv[0] );
+   inFileName[0] = outFileName[0] = 0;
+
+   fprintf ( stderr, 
+             "bzip2recover 1.0.5: extracts blocks from damaged .bz2 files.\n" );
+
+   if (argc != 2) {
+      fprintf ( stderr, "%s: usage is `%s damaged_file_name'.\n",
+                        progName, progName );
+      switch (sizeof(MaybeUInt64)) {
+         case 8:
+            fprintf(stderr, 
+                    "\trestrictions on size of recovered file: None\n");
+            break;
+         case 4:
+            fprintf(stderr, 
+                    "\trestrictions on size of recovered file: 512 MB\n");
+            fprintf(stderr, 
+                    "\tto circumvent, recompile with MaybeUInt64 as an\n"
+                    "\tunsigned 64-bit int.\n");
+            break;
+         default:
+            fprintf(stderr, 
+                    "\tsizeof(MaybeUInt64) is not 4 or 8 -- "
+                    "configuration error.\n");
+            break;
+      }
+      exit(1);
+   }
+
+   if (strlen(argv[1]) >= BZ_MAX_FILENAME-20) {
+      fprintf ( stderr, 
+                "%s: supplied filename is suspiciously (>= %d chars) long.  Bye!\n",
+                progName, (int)strlen(argv[1]) );
+      exit(1);
+   }
+
+   strcpy ( inFileName, argv[1] );
+
+   inFile = fopen ( inFileName, "rb" );
+   if (inFile == NULL) {
+      fprintf ( stderr, "%s: can't read `%s'\n", progName, inFileName );
+      exit(1);
+   }
+
+   bsIn = bsOpenReadStream ( inFile );
+   fprintf ( stderr, "%s: searching for block boundaries ...\n", progName );
+
+   bitsRead = 0;
+   buffHi = buffLo = 0;
+   currBlock = 0;
+   bStart[currBlock] = 0;
+
+   rbCtr = 0;
+
+   while (True) {
+      b = bsGetBit ( bsIn );
+      bitsRead++;
+      if (b == 2) {
+         if (bitsRead >= bStart[currBlock] &&
+            (bitsRead - bStart[currBlock]) >= 40) {
+            bEnd[currBlock] = bitsRead-1;
+            if (currBlock > 0)
+               fprintf ( stderr, "   block %d runs from " MaybeUInt64_FMT 
+                                 " to " MaybeUInt64_FMT " (incomplete)\n",
+                         currBlock,  bStart[currBlock], bEnd[currBlock] );
+         } else
+            currBlock--;
+         break;
+      }
+      buffHi = (buffHi << 1) | (buffLo >> 31);
+      buffLo = (buffLo << 1) | (b & 1);
+      if ( ( (buffHi & 0x0000ffff) == BLOCK_HEADER_HI 
+             && buffLo == BLOCK_HEADER_LO)
+           || 
+           ( (buffHi & 0x0000ffff) == BLOCK_ENDMARK_HI 
+             && buffLo == BLOCK_ENDMARK_LO)
+         ) {
+         if (bitsRead > 49) {
+            bEnd[currBlock] = bitsRead-49;
+         } else {
+            bEnd[currBlock] = 0;
+         }
+         if (currBlock > 0 &&
+	     (bEnd[currBlock] - bStart[currBlock]) >= 130) {
+            fprintf ( stderr, "   block %d runs from " MaybeUInt64_FMT 
+                              " to " MaybeUInt64_FMT "\n",
+                      rbCtr+1,  bStart[currBlock], bEnd[currBlock] );
+            rbStart[rbCtr] = bStart[currBlock];
+            rbEnd[rbCtr] = bEnd[currBlock];
+            rbCtr++;
+         }
+         if (currBlock >= BZ_MAX_HANDLED_BLOCKS)
+            tooManyBlocks(BZ_MAX_HANDLED_BLOCKS);
+         currBlock++;
+
+         bStart[currBlock] = bitsRead;
+      }
+   }
+
+   bsClose ( bsIn );
+
+   /*-- identified blocks run from 1 to rbCtr inclusive. --*/
+
+   if (rbCtr < 1) {
+      fprintf ( stderr,
+                "%s: sorry, I couldn't find any block boundaries.\n",
+                progName );
+      exit(1);
+   };
+
+   fprintf ( stderr, "%s: splitting into blocks\n", progName );
+
+   inFile = fopen ( inFileName, "rb" );
+   if (inFile == NULL) {
+      fprintf ( stderr, "%s: can't open `%s'\n", progName, inFileName );
+      exit(1);
+   }
+   bsIn = bsOpenReadStream ( inFile );
+
+   /*-- placate gcc's dataflow analyser --*/
+   blockCRC = 0; bsWr = 0;
+
+   bitsRead = 0;
+   outFile = NULL;
+   wrBlock = 0;
+   while (True) {
+      b = bsGetBit(bsIn);
+      if (b == 2) break;
+      buffHi = (buffHi << 1) | (buffLo >> 31);
+      buffLo = (buffLo << 1) | (b & 1);
+      if (bitsRead == 47+rbStart[wrBlock]) 
+         blockCRC = (buffHi << 16) | (buffLo >> 16);
+
+      if (outFile != NULL && bitsRead >= rbStart[wrBlock]
+                          && bitsRead <= rbEnd[wrBlock]) {
+         bsPutBit ( bsWr, b );
+      }
+
+      bitsRead++;
+
+      if (bitsRead == rbEnd[wrBlock]+1) {
+         if (outFile != NULL) {
+            bsPutUChar ( bsWr, 0x17 ); bsPutUChar ( bsWr, 0x72 );
+            bsPutUChar ( bsWr, 0x45 ); bsPutUChar ( bsWr, 0x38 );
+            bsPutUChar ( bsWr, 0x50 ); bsPutUChar ( bsWr, 0x90 );
+            bsPutUInt32 ( bsWr, blockCRC );
+            bsClose ( bsWr );
+         }
+         if (wrBlock >= rbCtr) break;
+         wrBlock++;
+      } else
+      if (bitsRead == rbStart[wrBlock]) {
+         /* Create the output file name, correctly handling leading paths. 
+            (31.10.2001 by Sergey E. Kusikov) */
+         Char* split;
+         Int32 ofs, k;
+         for (k = 0; k < BZ_MAX_FILENAME; k++) 
+            outFileName[k] = 0;
+         strcpy (outFileName, inFileName);
+         split = strrchr (outFileName, BZ_SPLIT_SYM);
+         if (split == NULL) {
+            split = outFileName;
+         } else {
+            ++split;
+	 }
+	 /* Now split points to the start of the basename. */
+         ofs  = split - outFileName;
+         sprintf (split, "rec%5d", wrBlock+1);
+         for (p = split; *p != 0; p++) if (*p == ' ') *p = '0';
+         strcat (outFileName, inFileName + ofs);
+
+         if ( !endsInBz2(outFileName)) strcat ( outFileName, ".bz2" );
+
+         fprintf ( stderr, "   writing block %d to `%s' ...\n",
+                           wrBlock+1, outFileName );
+
+         outFile = fopen ( outFileName, "wb" );
+         if (outFile == NULL) {
+            fprintf ( stderr, "%s: can't write `%s'\n",
+                      progName, outFileName );
+            exit(1);
+         }
+         bsWr = bsOpenWriteStream ( outFile );
+         bsPutUChar ( bsWr, BZ_HDR_B );    
+         bsPutUChar ( bsWr, BZ_HDR_Z );    
+         bsPutUChar ( bsWr, BZ_HDR_h );    
+         bsPutUChar ( bsWr, BZ_HDR_0 + 9 );
+         bsPutUChar ( bsWr, 0x31 ); bsPutUChar ( bsWr, 0x41 );
+         bsPutUChar ( bsWr, 0x59 ); bsPutUChar ( bsWr, 0x26 );
+         bsPutUChar ( bsWr, 0x53 ); bsPutUChar ( bsWr, 0x59 );
+      }
+   }
+
+   fprintf ( stderr, "%s: finished\n", progName );
+   return 0;
+}
+
+
+
+/*-----------------------------------------------------------*/
+/*--- end                                  bzip2recover.c ---*/
+/*-----------------------------------------------------------*/
diff --git a/3party_sloynik/bzip2/bzlib.c b/3party_sloynik/bzip2/bzlib.c
new file mode 100644
index 0000000000..a91c9d47f8
--- /dev/null
+++ b/3party_sloynik/bzip2/bzlib.c
@@ -0,0 +1,1576 @@
+
+/*-------------------------------------------------------------*/
+/*--- Library top-level functions.                          ---*/
+/*---                                               bzlib.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.5 of 10 December 2007
+   Copyright (C) 1996-2007 Julian Seward 
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+/* CHANGES
+   0.9.0    -- original version.
+   0.9.0a/b -- no changes in this file.
+   0.9.0c   -- made zero-length BZ_FLUSH work correctly in bzCompress().
+     fixed bzWrite/bzRead to ignore zero-length requests.
+     fixed bzread to correctly handle read requests after EOF.
+     wrong parameter order in call to bzDecompressInit in
+     bzBuffToBuffDecompress.  Fixed.
+*/
+
+#include "bzlib_private.h"
+
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-Wunused-parameter"
+#endif
+
+
+/*---------------------------------------------------*/
+/*--- Compression stuff                           ---*/
+/*---------------------------------------------------*/
+
+
+/*---------------------------------------------------*/
+#ifndef BZ_NO_STDIO
+void BZ2_bz__AssertH__fail ( int errcode )
+{
+   fprintf(stderr,
+      "\n\nbzip2/libbzip2: internal error number %d.\n"
+      "This is a bug in bzip2/libbzip2, %s.\n"
+      "Please report it to me at: jseward@bzip.org.  If this happened\n"
+      "when you were using some program which uses libbzip2 as a\n"
+      "component, you should also report this bug to the author(s)\n"
+      "of that program.  Please make an effort to report this bug;\n"
+      "timely and accurate bug reports eventually lead to higher\n"
+      "quality software.  Thanks.  Julian Seward, 10 December 2007.\n\n",
+      errcode,
+      BZ2_bzlibVersion()
+   );
+
+   if (errcode == 1007) {
+   fprintf(stderr,
+      "\n*** A special note about internal error number 1007 ***\n"
+      "\n"
+      "Experience suggests that a common cause of i.e. 1007\n"
+      "is unreliable memory or other hardware.  The 1007 assertion\n"
+      "just happens to cross-check the results of huge numbers of\n"
+      "memory reads/writes, and so acts (unintendedly) as a stress\n"
+      "test of your memory system.\n"
+      "\n"
+      "I suggest the following: try compressing the file again,\n"
+      "possibly monitoring progress in detail with the -vv flag.\n"
+      "\n"
+      "* If the error cannot be reproduced, and/or happens at different\n"
+      "  points in compression, you may have a flaky memory system.\n"
+      "  Try a memory-test program.  I have used Memtest86\n"
+      "  (www.memtest86.com).  At the time of writing it is free (GPLd).\n"
+      "  Memtest86 tests memory much more thorougly than your BIOSs\n"
+      "  power-on test, and may find failures that the BIOS doesn't.\n"
+      "\n"
+      "* If the error can be repeatably reproduced, this is a bug in\n"
+      "  bzip2, and I would very much like to hear about it.  Please\n"
+      "  let me know, and, ideally, save a copy of the file causing the\n"
+      "  problem -- without which I will be unable to investigate it.\n"
+      "\n"
+   );
+   }
+
+   exit(3);
+}
+#endif
+
+
+/*---------------------------------------------------*/
+static
+int bz_config_ok ( void )
+{
+   if (sizeof(int)   != 4) return 0;
+   if (sizeof(short) != 2) return 0;
+   if (sizeof(char)  != 1) return 0;
+   return 1;
+}
+
+
+/*---------------------------------------------------*/
+static
+void* default_bzalloc ( void* opaque, Int32 items, Int32 size )
+{
+   void* v = malloc ( items * size );
+   return v;
+}
+
+static
+void default_bzfree ( void* opaque, void* addr )
+{
+   if (addr != NULL) free ( addr );
+}
+
+
+/*---------------------------------------------------*/
+static
+void prepare_new_block ( EState* s )
+{
+   Int32 i;
+   s->nblock = 0;
+   s->numZ = 0;
+   s->state_out_pos = 0;
+   BZ_INITIALISE_CRC ( s->blockCRC );
+   for (i = 0; i < 256; i++) s->inUse[i] = False;
+   s->blockNo++;
+}
+
+
+/*---------------------------------------------------*/
+static
+void init_RL ( EState* s )
+{
+   s->state_in_ch  = 256;
+   s->state_in_len = 0;
+}
+
+
+static
+Bool isempty_RL ( EState* s )
+{
+   if (s->state_in_ch < 256 && s->state_in_len > 0)
+      return False; else
+      return True;
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzCompressInit)
+                    ( bz_stream* strm,
+                     int        blockSize100k,
+                     int        verbosity,
+                     int        workFactor )
+{
+   Int32   n;
+   EState* s;
+
+   if (!bz_config_ok()) return BZ_CONFIG_ERROR;
+
+   if (strm == NULL ||
+       blockSize100k < 1 || blockSize100k > 9 ||
+       workFactor < 0 || workFactor > 250)
+     return BZ_PARAM_ERROR;
+
+   if (workFactor == 0) workFactor = 30;
+   if (strm->bzalloc == NULL) strm->bzalloc = default_bzalloc;
+   if (strm->bzfree == NULL) strm->bzfree = default_bzfree;
+
+   s = BZALLOC( sizeof(EState) );
+   if (s == NULL) return BZ_MEM_ERROR;
+   s->strm = strm;
+
+   s->arr1 = NULL;
+   s->arr2 = NULL;
+   s->ftab = NULL;
+
+   n       = 100000 * blockSize100k;
+   s->arr1 = BZALLOC( n                  * sizeof(UInt32) );
+   s->arr2 = BZALLOC( (n+BZ_N_OVERSHOOT) * sizeof(UInt32) );
+   s->ftab = BZALLOC( 65537              * sizeof(UInt32) );
+
+   if (s->arr1 == NULL || s->arr2 == NULL || s->ftab == NULL) {
+      if (s->arr1 != NULL) BZFREE(s->arr1);
+      if (s->arr2 != NULL) BZFREE(s->arr2);
+      if (s->ftab != NULL) BZFREE(s->ftab);
+      if (s       != NULL) BZFREE(s);
+      return BZ_MEM_ERROR;
+   }
+
+   s->blockNo           = 0;
+   s->state             = BZ_S_INPUT;
+   s->mode              = BZ_M_RUNNING;
+   s->combinedCRC       = 0;
+   s->blockSize100k     = blockSize100k;
+   s->nblockMAX         = 100000 * blockSize100k - 19;
+   s->verbosity         = verbosity;
+   s->workFactor        = workFactor;
+
+   s->block             = (UChar*)s->arr2;
+   s->mtfv              = (UInt16*)s->arr1;
+   s->zbits             = NULL;
+   s->ptr               = (UInt32*)s->arr1;
+
+   strm->state          = s;
+   strm->total_in_lo32  = 0;
+   strm->total_in_hi32  = 0;
+   strm->total_out_lo32 = 0;
+   strm->total_out_hi32 = 0;
+   init_RL ( s );
+   prepare_new_block ( s );
+   return BZ_OK;
+}
+
+
+/*---------------------------------------------------*/
+static
+void add_pair_to_block ( EState* s )
+{
+   Int32 i;
+   UChar ch = (UChar)(s->state_in_ch);
+   for (i = 0; i < s->state_in_len; i++) {
+      BZ_UPDATE_CRC( s->blockCRC, ch );
+   }
+   s->inUse[s->state_in_ch] = True;
+   switch (s->state_in_len) {
+      case 1:
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         break;
+      case 2:
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         break;
+      case 3:
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         break;
+      default:
+         s->inUse[s->state_in_len-4] = True;
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         s->block[s->nblock] = ((UChar)(s->state_in_len-4));
+         s->nblock++;
+         break;
+   }
+}
+
+
+/*---------------------------------------------------*/
+static
+void flush_RL ( EState* s )
+{
+   if (s->state_in_ch < 256) add_pair_to_block ( s );
+   init_RL ( s );
+}
+
+
+/*---------------------------------------------------*/
+#define ADD_CHAR_TO_BLOCK(zs,zchh0)               \
+{                                                 \
+   UInt32 zchh = (UInt32)(zchh0);                 \
+   /*-- fast track the common case --*/           \
+   if (zchh != zs->state_in_ch &&                 \
+       zs->state_in_len == 1) {                   \
+      UChar ch = (UChar)(zs->state_in_ch);        \
+      BZ_UPDATE_CRC( zs->blockCRC, ch );          \
+      zs->inUse[zs->state_in_ch] = True;          \
+      zs->block[zs->nblock] = (UChar)ch;          \
+      zs->nblock++;                               \
+      zs->state_in_ch = zchh;                     \
+   }                                              \
+   else                                           \
+   /*-- general, uncommon cases --*/              \
+   if (zchh != zs->state_in_ch ||                 \
+      zs->state_in_len == 255) {                  \
+      if (zs->state_in_ch < 256)                  \
+         add_pair_to_block ( zs );                \
+      zs->state_in_ch = zchh;                     \
+      zs->state_in_len = 1;                       \
+   } else {                                       \
+      zs->state_in_len++;                         \
+   }                                              \
+}
+
+
+/*---------------------------------------------------*/
+static
+Bool copy_input_until_stop ( EState* s )
+{
+   Bool progress_in = False;
+
+   if (s->mode == BZ_M_RUNNING) {
+
+      /*-- fast track the common case --*/
+      while (True) {
+         /*-- block full? --*/
+         if (s->nblock >= s->nblockMAX) break;
+         /*-- no input? --*/
+         if (s->strm->avail_in == 0) break;
+         progress_in = True;
+         ADD_CHAR_TO_BLOCK ( s, (UInt32)(*((UChar*)(s->strm->next_in))) );
+         s->strm->next_in++;
+         s->strm->avail_in--;
+         s->strm->total_in_lo32++;
+         if (s->strm->total_in_lo32 == 0) s->strm->total_in_hi32++;
+      }
+
+   } else {
+
+      /*-- general, uncommon case --*/
+      while (True) {
+         /*-- block full? --*/
+         if (s->nblock >= s->nblockMAX) break;
+         /*-- no input? --*/
+         if (s->strm->avail_in == 0) break;
+         /*-- flush/finish end? --*/
+         if (s->avail_in_expect == 0) break;
+         progress_in = True;
+         ADD_CHAR_TO_BLOCK ( s, (UInt32)(*((UChar*)(s->strm->next_in))) );
+         s->strm->next_in++;
+         s->strm->avail_in--;
+         s->strm->total_in_lo32++;
+         if (s->strm->total_in_lo32 == 0) s->strm->total_in_hi32++;
+         s->avail_in_expect--;
+      }
+   }
+   return progress_in;
+}
+
+
+/*---------------------------------------------------*/
+static
+Bool copy_output_until_stop ( EState* s )
+{
+   Bool progress_out = False;
+
+   while (True) {
+
+      /*-- no output space? --*/
+      if (s->strm->avail_out == 0) break;
+
+      /*-- block done? --*/
+      if (s->state_out_pos >= s->numZ) break;
+
+      progress_out = True;
+      *(s->strm->next_out) = s->zbits[s->state_out_pos];
+      s->state_out_pos++;
+      s->strm->avail_out--;
+      s->strm->next_out++;
+      s->strm->total_out_lo32++;
+      if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++;
+   }
+
+   return progress_out;
+}
+
+
+/*---------------------------------------------------*/
+static
+Bool handle_compress ( bz_stream* strm )
+{
+   Bool progress_in  = False;
+   Bool progress_out = False;
+   EState* s = strm->state;
+
+   while (True) {
+
+      if (s->state == BZ_S_OUTPUT) {
+         progress_out |= copy_output_until_stop ( s );
+         if (s->state_out_pos < s->numZ) break;
+         if (s->mode == BZ_M_FINISHING &&
+             s->avail_in_expect == 0 &&
+             isempty_RL(s)) break;
+         prepare_new_block ( s );
+         s->state = BZ_S_INPUT;
+         if (s->mode == BZ_M_FLUSHING &&
+             s->avail_in_expect == 0 &&
+             isempty_RL(s)) break;
+      }
+
+      if (s->state == BZ_S_INPUT) {
+         progress_in |= copy_input_until_stop ( s );
+         if (s->mode != BZ_M_RUNNING && s->avail_in_expect == 0) {
+            flush_RL ( s );
+            BZ2_compressBlock ( s, (Bool)(s->mode == BZ_M_FINISHING) );
+            s->state = BZ_S_OUTPUT;
+         }
+         else
+         if (s->nblock >= s->nblockMAX) {
+            BZ2_compressBlock ( s, False );
+            s->state = BZ_S_OUTPUT;
+         }
+         else
+         if (s->strm->avail_in == 0) {
+            break;
+         }
+      }
+
+   }
+
+   return progress_in || progress_out;
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzCompress) ( bz_stream *strm, int action )
+{
+   Bool progress;
+   EState* s;
+   if (strm == NULL) return BZ_PARAM_ERROR;
+   s = strm->state;
+   if (s == NULL) return BZ_PARAM_ERROR;
+   if (s->strm != strm) return BZ_PARAM_ERROR;
+
+   preswitch:
+   switch (s->mode) {
+
+      case BZ_M_IDLE:
+         return BZ_SEQUENCE_ERROR;
+
+      case BZ_M_RUNNING:
+         if (action == BZ_RUN) {
+            progress = handle_compress ( strm );
+            return progress ? BZ_RUN_OK : BZ_PARAM_ERROR;
+         }
+         else
+   if (action == BZ_FLUSH) {
+            s->avail_in_expect = strm->avail_in;
+            s->mode = BZ_M_FLUSHING;
+            goto preswitch;
+         }
+         else
+         if (action == BZ_FINISH) {
+            s->avail_in_expect = strm->avail_in;
+            s->mode = BZ_M_FINISHING;
+            goto preswitch;
+         }
+         else
+            return BZ_PARAM_ERROR;
+
+      case BZ_M_FLUSHING:
+         if (action != BZ_FLUSH) return BZ_SEQUENCE_ERROR;
+         if (s->avail_in_expect != s->strm->avail_in)
+            return BZ_SEQUENCE_ERROR;
+         progress = handle_compress ( strm );
+         if (s->avail_in_expect > 0 || !isempty_RL(s) ||
+             s->state_out_pos < s->numZ) return BZ_FLUSH_OK;
+         s->mode = BZ_M_RUNNING;
+         return BZ_RUN_OK;
+
+      case BZ_M_FINISHING:
+         if (action != BZ_FINISH) return BZ_SEQUENCE_ERROR;
+         if (s->avail_in_expect != s->strm->avail_in)
+            return BZ_SEQUENCE_ERROR;
+         progress = handle_compress ( strm );
+         if (!progress) return BZ_SEQUENCE_ERROR;
+         if (s->avail_in_expect > 0 || !isempty_RL(s) ||
+             s->state_out_pos < s->numZ) return BZ_FINISH_OK;
+         s->mode = BZ_M_IDLE;
+         return BZ_STREAM_END;
+   }
+   return BZ_OK; /*--not reached--*/
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzCompressEnd)  ( bz_stream *strm )
+{
+   EState* s;
+   if (strm == NULL) return BZ_PARAM_ERROR;
+   s = strm->state;
+   if (s == NULL) return BZ_PARAM_ERROR;
+   if (s->strm != strm) return BZ_PARAM_ERROR;
+
+   if (s->arr1 != NULL) BZFREE(s->arr1);
+   if (s->arr2 != NULL) BZFREE(s->arr2);
+   if (s->ftab != NULL) BZFREE(s->ftab);
+   BZFREE(strm->state);
+
+   strm->state = NULL;
+
+   return BZ_OK;
+}
+
+
+/*---------------------------------------------------*/
+/*--- Decompression stuff                         ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzDecompressInit)
+                     ( bz_stream* strm,
+                       int        verbosity,
+                       int        small )
+{
+   DState* s;
+
+   if (!bz_config_ok()) return BZ_CONFIG_ERROR;
+
+   if (strm == NULL) return BZ_PARAM_ERROR;
+   if (small != 0 && small != 1) return BZ_PARAM_ERROR;
+   if (verbosity < 0 || verbosity > 4) return BZ_PARAM_ERROR;
+
+   if (strm->bzalloc == NULL) strm->bzalloc = default_bzalloc;
+   if (strm->bzfree == NULL) strm->bzfree = default_bzfree;
+
+   s = BZALLOC( sizeof(DState) );
+   if (s == NULL) return BZ_MEM_ERROR;
+   s->strm                  = strm;
+   strm->state              = s;
+   s->state                 = BZ_X_MAGIC_1;
+   s->bsLive                = 0;
+   s->bsBuff                = 0;
+   s->calculatedCombinedCRC = 0;
+   strm->total_in_lo32      = 0;
+   strm->total_in_hi32      = 0;
+   strm->total_out_lo32     = 0;
+   strm->total_out_hi32     = 0;
+   s->smallDecompress       = (Bool)small;
+   s->ll4                   = NULL;
+   s->ll16                  = NULL;
+   s->tt                    = NULL;
+   s->currBlockNo           = 0;
+   s->verbosity             = verbosity;
+
+   return BZ_OK;
+}
+
+
+/*---------------------------------------------------*/
+/* Return  True iff data corruption is discovered.
+   Returns False if there is no problem.
+*/
+static
+Bool unRLE_obuf_to_output_FAST ( DState* s )
+{
+   UChar k1;
+
+   if (s->blockRandomised) {
+
+      while (True) {
+         /* try to finish existing run */
+         while (True) {
+            if (s->strm->avail_out == 0) return False;
+            if (s->state_out_len == 0) break;
+            *( (UChar*)(s->strm->next_out) ) = s->state_out_ch;
+            BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch );
+            s->state_out_len--;
+            s->strm->next_out++;
+            s->strm->avail_out--;
+            s->strm->total_out_lo32++;
+            if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++;
+         }
+
+         /* can a new run be started? */
+         if (s->nblock_used == s->save_nblock+1) return False;
+
+         /* Only caused by corrupt data stream? */
+         if (s->nblock_used > s->save_nblock+1)
+            return True;
+
+         s->state_out_len = 1;
+         s->state_out_ch = s->k0;
+         BZ_GET_FAST(k1); BZ_RAND_UPD_MASK;
+         k1 ^= BZ_RAND_MASK; s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+
+         s->state_out_len = 2;
+         BZ_GET_FAST(k1); BZ_RAND_UPD_MASK;
+         k1 ^= BZ_RAND_MASK; s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+
+         s->state_out_len = 3;
+         BZ_GET_FAST(k1); BZ_RAND_UPD_MASK;
+         k1 ^= BZ_RAND_MASK; s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+
+         BZ_GET_FAST(k1); BZ_RAND_UPD_MASK;
+         k1 ^= BZ_RAND_MASK; s->nblock_used++;
+         s->state_out_len = ((Int32)k1) + 4;
+         BZ_GET_FAST(s->k0); BZ_RAND_UPD_MASK;
+         s->k0 ^= BZ_RAND_MASK; s->nblock_used++;
+      }
+
+   } else {
+
+      /* restore */
+      UInt32        c_calculatedBlockCRC = s->calculatedBlockCRC;
+      UChar         c_state_out_ch       = s->state_out_ch;
+      Int32         c_state_out_len      = s->state_out_len;
+      Int32         c_nblock_used        = s->nblock_used;
+      Int32         c_k0                 = s->k0;
+      UInt32*       c_tt                 = s->tt;
+      UInt32        c_tPos               = s->tPos;
+      char*         cs_next_out          = s->strm->next_out;
+      unsigned int  cs_avail_out         = s->strm->avail_out;
+      Int32         ro_blockSize100k     = s->blockSize100k;
+      /* end restore */
+
+      UInt32       avail_out_INIT = cs_avail_out;
+      Int32        s_save_nblockPP = s->save_nblock+1;
+      unsigned int total_out_lo32_old;
+
+      while (True) {
+
+         /* try to finish existing run */
+         if (c_state_out_len > 0) {
+            while (True) {
+               if (cs_avail_out == 0) goto return_notr;
+               if (c_state_out_len == 1) break;
+               *( (UChar*)(cs_next_out) ) = c_state_out_ch;
+               BZ_UPDATE_CRC ( c_calculatedBlockCRC, c_state_out_ch );
+               c_state_out_len--;
+               cs_next_out++;
+               cs_avail_out--;
+            }
+            s_state_out_len_eq_one:
+            {
+               if (cs_avail_out == 0) {
+                  c_state_out_len = 1; goto return_notr;
+               };
+               *( (UChar*)(cs_next_out) ) = c_state_out_ch;
+               BZ_UPDATE_CRC ( c_calculatedBlockCRC, c_state_out_ch );
+               cs_next_out++;
+               cs_avail_out--;
+            }
+         }
+         /* Only caused by corrupt data stream? */
+         if (c_nblock_used > s_save_nblockPP)
+            return True;
+
+         /* can a new run be started? */
+         if (c_nblock_used == s_save_nblockPP) {
+            c_state_out_len = 0; goto return_notr;
+         };
+         c_state_out_ch = c_k0;
+         BZ_GET_FAST_C(k1); c_nblock_used++;
+         if (k1 != c_k0) {
+            c_k0 = k1; goto s_state_out_len_eq_one;
+         };
+         if (c_nblock_used == s_save_nblockPP)
+            goto s_state_out_len_eq_one;
+
+         c_state_out_len = 2;
+         BZ_GET_FAST_C(k1); c_nblock_used++;
+         if (c_nblock_used == s_save_nblockPP) continue;
+         if (k1 != c_k0) { c_k0 = k1; continue; };
+
+         c_state_out_len = 3;
+         BZ_GET_FAST_C(k1); c_nblock_used++;
+         if (c_nblock_used == s_save_nblockPP) continue;
+         if (k1 != c_k0) { c_k0 = k1; continue; };
+
+         BZ_GET_FAST_C(k1); c_nblock_used++;
+         c_state_out_len = ((Int32)k1) + 4;
+         BZ_GET_FAST_C(c_k0); c_nblock_used++;
+      }
+
+      return_notr:
+      total_out_lo32_old = s->strm->total_out_lo32;
+      s->strm->total_out_lo32 += (avail_out_INIT - cs_avail_out);
+      if (s->strm->total_out_lo32 < total_out_lo32_old)
+         s->strm->total_out_hi32++;
+
+      /* save */
+      s->calculatedBlockCRC = c_calculatedBlockCRC;
+      s->state_out_ch       = c_state_out_ch;
+      s->state_out_len      = c_state_out_len;
+      s->nblock_used        = c_nblock_used;
+      s->k0                 = c_k0;
+      s->tt                 = c_tt;
+      s->tPos               = c_tPos;
+      s->strm->next_out     = cs_next_out;
+      s->strm->avail_out    = cs_avail_out;
+      /* end save */
+   }
+   return False;
+}
+
+
+
+/*---------------------------------------------------*/
+__inline__ Int32 BZ2_indexIntoF ( Int32 indx, Int32 *cftab )
+{
+   Int32 nb, na, mid;
+   nb = 0;
+   na = 256;
+   do {
+      mid = (nb + na) >> 1;
+      if (indx >= cftab[mid]) nb = mid; else na = mid;
+   }
+   while (na - nb != 1);
+   return nb;
+}
+
+
+/*---------------------------------------------------*/
+/* Return  True iff data corruption is discovered.
+   Returns False if there is no problem.
+*/
+static
+Bool unRLE_obuf_to_output_SMALL ( DState* s )
+{
+   UChar k1;
+
+   if (s->blockRandomised) {
+
+      while (True) {
+         /* try to finish existing run */
+         while (True) {
+            if (s->strm->avail_out == 0) return False;
+            if (s->state_out_len == 0) break;
+            *( (UChar*)(s->strm->next_out) ) = s->state_out_ch;
+            BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch );
+            s->state_out_len--;
+            s->strm->next_out++;
+            s->strm->avail_out--;
+            s->strm->total_out_lo32++;
+            if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++;
+         }
+
+         /* can a new run be started? */
+         if (s->nblock_used == s->save_nblock+1) return False;
+
+         /* Only caused by corrupt data stream? */
+         if (s->nblock_used > s->save_nblock+1)
+            return True;
+
+         s->state_out_len = 1;
+         s->state_out_ch = s->k0;
+         BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK;
+         k1 ^= BZ_RAND_MASK; s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+
+         s->state_out_len = 2;
+         BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK;
+         k1 ^= BZ_RAND_MASK; s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+
+         s->state_out_len = 3;
+         BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK;
+         k1 ^= BZ_RAND_MASK; s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+
+         BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK;
+         k1 ^= BZ_RAND_MASK; s->nblock_used++;
+         s->state_out_len = ((Int32)k1) + 4;
+         BZ_GET_SMALL(s->k0); BZ_RAND_UPD_MASK;
+         s->k0 ^= BZ_RAND_MASK; s->nblock_used++;
+      }
+
+   } else {
+
+      while (True) {
+         /* try to finish existing run */
+         while (True) {
+            if (s->strm->avail_out == 0) return False;
+            if (s->state_out_len == 0) break;
+            *( (UChar*)(s->strm->next_out) ) = s->state_out_ch;
+            BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch );
+            s->state_out_len--;
+            s->strm->next_out++;
+            s->strm->avail_out--;
+            s->strm->total_out_lo32++;
+            if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++;
+         }
+
+         /* can a new run be started? */
+         if (s->nblock_used == s->save_nblock+1) return False;
+
+         /* Only caused by corrupt data stream? */
+         if (s->nblock_used > s->save_nblock+1)
+            return True;
+
+         s->state_out_len = 1;
+         s->state_out_ch = s->k0;
+         BZ_GET_SMALL(k1); s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+
+         s->state_out_len = 2;
+         BZ_GET_SMALL(k1); s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+
+         s->state_out_len = 3;
+         BZ_GET_SMALL(k1); s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+
+         BZ_GET_SMALL(k1); s->nblock_used++;
+         s->state_out_len = ((Int32)k1) + 4;
+         BZ_GET_SMALL(s->k0); s->nblock_used++;
+      }
+
+   }
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzDecompress) ( bz_stream *strm )
+{
+   Bool    corrupt;
+   DState* s;
+   if (strm == NULL) return BZ_PARAM_ERROR;
+   s = strm->state;
+   if (s == NULL) return BZ_PARAM_ERROR;
+   if (s->strm != strm) return BZ_PARAM_ERROR;
+
+   while (True) {
+      if (s->state == BZ_X_IDLE) return BZ_SEQUENCE_ERROR;
+      if (s->state == BZ_X_OUTPUT) {
+         if (s->smallDecompress)
+            corrupt = unRLE_obuf_to_output_SMALL ( s ); else
+            corrupt = unRLE_obuf_to_output_FAST  ( s );
+         if (corrupt) return BZ_DATA_ERROR;
+         if (s->nblock_used == s->save_nblock+1 && s->state_out_len == 0) {
+            BZ_FINALISE_CRC ( s->calculatedBlockCRC );
+            if (s->verbosity >= 3)
+               VPrintf2 ( " {0x%08x, 0x%08x}", s->storedBlockCRC,
+                          s->calculatedBlockCRC );
+            if (s->verbosity >= 2) VPrintf0 ( "]" );
+            if (s->calculatedBlockCRC != s->storedBlockCRC)
+               return BZ_DATA_ERROR;
+            s->calculatedCombinedCRC
+               = (s->calculatedCombinedCRC << 1) |
+                    (s->calculatedCombinedCRC >> 31);
+            s->calculatedCombinedCRC ^= s->calculatedBlockCRC;
+            s->state = BZ_X_BLKHDR_1;
+         } else {
+            return BZ_OK;
+         }
+      }
+      if (s->state >= BZ_X_MAGIC_1) {
+         Int32 r = BZ2_decompress ( s );
+         if (r == BZ_STREAM_END) {
+            if (s->verbosity >= 3)
+               VPrintf2 ( "\n    combined CRCs: stored = 0x%08x, computed = 0x%08x",
+                          s->storedCombinedCRC, s->calculatedCombinedCRC );
+            if (s->calculatedCombinedCRC != s->storedCombinedCRC)
+               return BZ_DATA_ERROR;
+            return r;
+         }
+         if (s->state != BZ_X_OUTPUT) return r;
+      }
+   }
+
+   AssertH ( 0, 6001 );
+
+   return 0;  /*NOTREACHED*/
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzDecompressEnd)  ( bz_stream *strm )
+{
+   DState* s;
+   if (strm == NULL) return BZ_PARAM_ERROR;
+   s = strm->state;
+   if (s == NULL) return BZ_PARAM_ERROR;
+   if (s->strm != strm) return BZ_PARAM_ERROR;
+
+   if (s->tt   != NULL) BZFREE(s->tt);
+   if (s->ll16 != NULL) BZFREE(s->ll16);
+   if (s->ll4  != NULL) BZFREE(s->ll4);
+
+   BZFREE(strm->state);
+   strm->state = NULL;
+
+   return BZ_OK;
+}
+
+
+#ifndef BZ_NO_STDIO
+/*---------------------------------------------------*/
+/*--- File I/O stuff                              ---*/
+/*---------------------------------------------------*/
+
+#define BZ_SETERR(eee)                    \
+{                                         \
+   if (bzerror != NULL) *bzerror = eee;   \
+   if (bzf != NULL) bzf->lastErr = eee;   \
+}
+
+typedef
+   struct {
+      FILE*     handle;
+      Char      buf[BZ_MAX_UNUSED];
+      Int32     bufN;
+      Bool      writing;
+      bz_stream strm;
+      Int32     lastErr;
+      Bool      initialisedOk;
+   }
+   bzFile;
+
+
+/*---------------------------------------------*/
+static Bool myfeof ( FILE* f )
+{
+   Int32 c = fgetc ( f );
+   if (c == EOF) return True;
+   ungetc ( c, f );
+   return False;
+}
+
+
+/*---------------------------------------------------*/
+BZFILE* BZ_API(BZ2_bzWriteOpen)
+                    ( int*  bzerror,
+                      FILE* f,
+                      int   blockSize100k,
+                      int   verbosity,
+                      int   workFactor )
+{
+   Int32   ret;
+   bzFile* bzf = NULL;
+
+   BZ_SETERR(BZ_OK);
+
+   if (f == NULL ||
+       (blockSize100k < 1 || blockSize100k > 9) ||
+       (workFactor < 0 || workFactor > 250) ||
+       (verbosity < 0 || verbosity > 4))
+      { BZ_SETERR(BZ_PARAM_ERROR); return NULL; };
+
+   if (ferror(f))
+      { BZ_SETERR(BZ_IO_ERROR); return NULL; };
+
+   bzf = malloc ( sizeof(bzFile) );
+   if (bzf == NULL)
+      { BZ_SETERR(BZ_MEM_ERROR); return NULL; };
+
+   BZ_SETERR(BZ_OK);
+   bzf->initialisedOk = False;
+   bzf->bufN          = 0;
+   bzf->handle        = f;
+   bzf->writing       = True;
+   bzf->strm.bzalloc  = NULL;
+   bzf->strm.bzfree   = NULL;
+   bzf->strm.opaque   = NULL;
+
+   if (workFactor == 0) workFactor = 30;
+   ret = BZ2_bzCompressInit ( &(bzf->strm), blockSize100k,
+                              verbosity, workFactor );
+   if (ret != BZ_OK)
+      { BZ_SETERR(ret); free(bzf); return NULL; };
+
+   bzf->strm.avail_in = 0;
+   bzf->initialisedOk = True;
+   return bzf;
+}
+
+
+
+/*---------------------------------------------------*/
+void BZ_API(BZ2_bzWrite)
+             ( int*    bzerror,
+               BZFILE* b,
+               void*   buf,
+               int     len )
+{
+   Int32 n, n2, ret;
+   bzFile* bzf = (bzFile*)b;
+
+   BZ_SETERR(BZ_OK);
+   if (bzf == NULL || buf == NULL || len < 0)
+      { BZ_SETERR(BZ_PARAM_ERROR); return; };
+   if (!(bzf->writing))
+      { BZ_SETERR(BZ_SEQUENCE_ERROR); return; };
+   if (ferror(bzf->handle))
+      { BZ_SETERR(BZ_IO_ERROR); return; };
+
+   if (len == 0)
+      { BZ_SETERR(BZ_OK); return; };
+
+   bzf->strm.avail_in = len;
+   bzf->strm.next_in  = buf;
+
+   while (True) {
+      bzf->strm.avail_out = BZ_MAX_UNUSED;
+      bzf->strm.next_out = bzf->buf;
+      ret = BZ2_bzCompress ( &(bzf->strm), BZ_RUN );
+      if (ret != BZ_RUN_OK)
+         { BZ_SETERR(ret); return; };
+
+      if (bzf->strm.avail_out < BZ_MAX_UNUSED) {
+         n = BZ_MAX_UNUSED - bzf->strm.avail_out;
+         n2 = fwrite ( (void*)(bzf->buf), sizeof(UChar),
+                       n, bzf->handle );
+         if (n != n2 || ferror(bzf->handle))
+            { BZ_SETERR(BZ_IO_ERROR); return; };
+      }
+
+      if (bzf->strm.avail_in == 0)
+         { BZ_SETERR(BZ_OK); return; };
+   }
+}
+
+
+/*---------------------------------------------------*/
+void BZ_API(BZ2_bzWriteClose)
+                  ( int*          bzerror,
+                    BZFILE*       b,
+                    int           abandon,
+                    unsigned int* nbytes_in,
+                    unsigned int* nbytes_out )
+{
+   BZ2_bzWriteClose64 ( bzerror, b, abandon,
+                        nbytes_in, NULL, nbytes_out, NULL );
+}
+
+
+void BZ_API(BZ2_bzWriteClose64)
+                  ( int*          bzerror,
+                    BZFILE*       b,
+                    int           abandon,
+                    unsigned int* nbytes_in_lo32,
+                    unsigned int* nbytes_in_hi32,
+                    unsigned int* nbytes_out_lo32,
+                    unsigned int* nbytes_out_hi32 )
+{
+   Int32   n, n2, ret;
+   bzFile* bzf = (bzFile*)b;
+
+   if (bzf == NULL)
+      { BZ_SETERR(BZ_OK); return; };
+   if (!(bzf->writing))
+      { BZ_SETERR(BZ_SEQUENCE_ERROR); return; };
+   if (ferror(bzf->handle))
+      { BZ_SETERR(BZ_IO_ERROR); return; };
+
+   if (nbytes_in_lo32 != NULL) *nbytes_in_lo32 = 0;
+   if (nbytes_in_hi32 != NULL) *nbytes_in_hi32 = 0;
+   if (nbytes_out_lo32 != NULL) *nbytes_out_lo32 = 0;
+   if (nbytes_out_hi32 != NULL) *nbytes_out_hi32 = 0;
+
+   if ((!abandon) && bzf->lastErr == BZ_OK) {
+      while (True) {
+         bzf->strm.avail_out = BZ_MAX_UNUSED;
+         bzf->strm.next_out = bzf->buf;
+         ret = BZ2_bzCompress ( &(bzf->strm), BZ_FINISH );
+         if (ret != BZ_FINISH_OK && ret != BZ_STREAM_END)
+            { BZ_SETERR(ret); return; };
+
+         if (bzf->strm.avail_out < BZ_MAX_UNUSED) {
+            n = BZ_MAX_UNUSED - bzf->strm.avail_out;
+            n2 = fwrite ( (void*)(bzf->buf), sizeof(UChar),
+                          n, bzf->handle );
+            if (n != n2 || ferror(bzf->handle))
+               { BZ_SETERR(BZ_IO_ERROR); return; };
+         }
+
+         if (ret == BZ_STREAM_END) break;
+      }
+   }
+
+   if ( !abandon && !ferror ( bzf->handle ) ) {
+      fflush ( bzf->handle );
+      if (ferror(bzf->handle))
+         { BZ_SETERR(BZ_IO_ERROR); return; };
+   }
+
+   if (nbytes_in_lo32 != NULL)
+      *nbytes_in_lo32 = bzf->strm.total_in_lo32;
+   if (nbytes_in_hi32 != NULL)
+      *nbytes_in_hi32 = bzf->strm.total_in_hi32;
+   if (nbytes_out_lo32 != NULL)
+      *nbytes_out_lo32 = bzf->strm.total_out_lo32;
+   if (nbytes_out_hi32 != NULL)
+      *nbytes_out_hi32 = bzf->strm.total_out_hi32;
+
+   BZ_SETERR(BZ_OK);
+   BZ2_bzCompressEnd ( &(bzf->strm) );
+   free ( bzf );
+}
+
+
+/*---------------------------------------------------*/
+BZFILE* BZ_API(BZ2_bzReadOpen)
+                   ( int*  bzerror,
+                     FILE* f,
+                     int   verbosity,
+                     int   small,
+                     void* unused,
+                     int   nUnused )
+{
+   bzFile* bzf = NULL;
+   int     ret;
+
+   BZ_SETERR(BZ_OK);
+
+   if (f == NULL ||
+       (small != 0 && small != 1) ||
+       (verbosity < 0 || verbosity > 4) ||
+       (unused == NULL && nUnused != 0) ||
+       (unused != NULL && (nUnused < 0 || nUnused > BZ_MAX_UNUSED)))
+      { BZ_SETERR(BZ_PARAM_ERROR); return NULL; };
+
+   if (ferror(f))
+      { BZ_SETERR(BZ_IO_ERROR); return NULL; };
+
+   bzf = malloc ( sizeof(bzFile) );
+   if (bzf == NULL)
+      { BZ_SETERR(BZ_MEM_ERROR); return NULL; };
+
+   BZ_SETERR(BZ_OK);
+
+   bzf->initialisedOk = False;
+   bzf->handle        = f;
+   bzf->bufN          = 0;
+   bzf->writing       = False;
+   bzf->strm.bzalloc  = NULL;
+   bzf->strm.bzfree   = NULL;
+   bzf->strm.opaque   = NULL;
+
+   while (nUnused > 0) {
+      bzf->buf[bzf->bufN] = *((UChar*)(unused)); bzf->bufN++;
+      unused = ((void*)( 1 + ((UChar*)(unused))  ));
+      nUnused--;
+   }
+
+   ret = BZ2_bzDecompressInit ( &(bzf->strm), verbosity, small );
+   if (ret != BZ_OK)
+      { BZ_SETERR(ret); free(bzf); return NULL; };
+
+   bzf->strm.avail_in = bzf->bufN;
+   bzf->strm.next_in  = bzf->buf;
+
+   bzf->initialisedOk = True;
+   return bzf;
+}
+
+
+/*---------------------------------------------------*/
+void BZ_API(BZ2_bzReadClose) ( int *bzerror, BZFILE *b )
+{
+   bzFile* bzf = (bzFile*)b;
+
+   BZ_SETERR(BZ_OK);
+   if (bzf == NULL)
+      { BZ_SETERR(BZ_OK); return; };
+
+   if (bzf->writing)
+      { BZ_SETERR(BZ_SEQUENCE_ERROR); return; };
+
+   if (bzf->initialisedOk)
+      (void)BZ2_bzDecompressEnd ( &(bzf->strm) );
+   free ( bzf );
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzRead)
+           ( int*    bzerror,
+             BZFILE* b,
+             void*   buf,
+             int     len )
+{
+   Int32   n, ret;
+   bzFile* bzf = (bzFile*)b;
+
+   BZ_SETERR(BZ_OK);
+
+   if (bzf == NULL || buf == NULL || len < 0)
+      { BZ_SETERR(BZ_PARAM_ERROR); return 0; };
+
+   if (bzf->writing)
+      { BZ_SETERR(BZ_SEQUENCE_ERROR); return 0; };
+
+   if (len == 0)
+      { BZ_SETERR(BZ_OK); return 0; };
+
+   bzf->strm.avail_out = len;
+   bzf->strm.next_out = buf;
+
+   while (True) {
+
+      if (ferror(bzf->handle))
+         { BZ_SETERR(BZ_IO_ERROR); return 0; };
+
+      if (bzf->strm.avail_in == 0 && !myfeof(bzf->handle)) {
+         n = fread ( bzf->buf, sizeof(UChar),
+                     BZ_MAX_UNUSED, bzf->handle );
+         if (ferror(bzf->handle))
+            { BZ_SETERR(BZ_IO_ERROR); return 0; };
+         bzf->bufN = n;
+         bzf->strm.avail_in = bzf->bufN;
+         bzf->strm.next_in = bzf->buf;
+      }
+
+      ret = BZ2_bzDecompress ( &(bzf->strm) );
+
+      if (ret != BZ_OK && ret != BZ_STREAM_END)
+         { BZ_SETERR(ret); return 0; };
+
+      if (ret == BZ_OK && myfeof(bzf->handle) &&
+          bzf->strm.avail_in == 0 && bzf->strm.avail_out > 0)
+         { BZ_SETERR(BZ_UNEXPECTED_EOF); return 0; };
+
+      if (ret == BZ_STREAM_END)
+         { BZ_SETERR(BZ_STREAM_END);
+           return len - bzf->strm.avail_out; };
+      if (bzf->strm.avail_out == 0)
+         { BZ_SETERR(BZ_OK); return len; };
+
+   }
+
+   return 0; /*not reached*/
+}
+
+
+/*---------------------------------------------------*/
+void BZ_API(BZ2_bzReadGetUnused)
+                     ( int*    bzerror,
+                       BZFILE* b,
+                       void**  unused,
+                       int*    nUnused )
+{
+   bzFile* bzf = (bzFile*)b;
+   if (bzf == NULL)
+      { BZ_SETERR(BZ_PARAM_ERROR); return; };
+   if (bzf->lastErr != BZ_STREAM_END)
+      { BZ_SETERR(BZ_SEQUENCE_ERROR); return; };
+   if (unused == NULL || nUnused == NULL)
+      { BZ_SETERR(BZ_PARAM_ERROR); return; };
+
+   BZ_SETERR(BZ_OK);
+   *nUnused = bzf->strm.avail_in;
+   *unused = bzf->strm.next_in;
+}
+#endif
+
+
+/*---------------------------------------------------*/
+/*--- Misc convenience stuff                      ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzBuffToBuffCompress)
+                         ( char*         dest,
+                           unsigned int* destLen,
+                           char*         source,
+                           unsigned int  sourceLen,
+                           int           blockSize100k,
+                           int           verbosity,
+                           int           workFactor )
+{
+   bz_stream strm;
+   int ret;
+
+   if (dest == NULL || destLen == NULL ||
+       source == NULL ||
+       blockSize100k < 1 || blockSize100k > 9 ||
+       verbosity < 0 || verbosity > 4 ||
+       workFactor < 0 || workFactor > 250)
+      return BZ_PARAM_ERROR;
+
+   if (workFactor == 0) workFactor = 30;
+   strm.bzalloc = NULL;
+   strm.bzfree = NULL;
+   strm.opaque = NULL;
+   ret = BZ2_bzCompressInit ( &strm, blockSize100k,
+                              verbosity, workFactor );
+   if (ret != BZ_OK) return ret;
+
+   strm.next_in = source;
+   strm.next_out = dest;
+   strm.avail_in = sourceLen;
+   strm.avail_out = *destLen;
+
+   ret = BZ2_bzCompress ( &strm, BZ_FINISH );
+   if (ret == BZ_FINISH_OK) goto output_overflow;
+   if (ret != BZ_STREAM_END) goto errhandler;
+
+   /* normal termination */
+   *destLen -= strm.avail_out;
+   BZ2_bzCompressEnd ( &strm );
+   return BZ_OK;
+
+   output_overflow:
+   BZ2_bzCompressEnd ( &strm );
+   return BZ_OUTBUFF_FULL;
+
+   errhandler:
+   BZ2_bzCompressEnd ( &strm );
+   return ret;
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzBuffToBuffDecompress)
+                           ( char*         dest,
+                             unsigned int* destLen,
+                             char*         source,
+                             unsigned int  sourceLen,
+                             int           small,
+                             int           verbosity )
+{
+   bz_stream strm;
+   int ret;
+
+   if (dest == NULL || destLen == NULL ||
+       source == NULL ||
+       (small != 0 && small != 1) ||
+       verbosity < 0 || verbosity > 4)
+          return BZ_PARAM_ERROR;
+
+   strm.bzalloc = NULL;
+   strm.bzfree = NULL;
+   strm.opaque = NULL;
+   ret = BZ2_bzDecompressInit ( &strm, verbosity, small );
+   if (ret != BZ_OK) return ret;
+
+   strm.next_in = source;
+   strm.next_out = dest;
+   strm.avail_in = sourceLen;
+   strm.avail_out = *destLen;
+
+   ret = BZ2_bzDecompress ( &strm );
+   if (ret == BZ_OK) goto output_overflow_or_eof;
+   if (ret != BZ_STREAM_END) goto errhandler;
+
+   /* normal termination */
+   *destLen -= strm.avail_out;
+   BZ2_bzDecompressEnd ( &strm );
+   return BZ_OK;
+
+   output_overflow_or_eof:
+   if (strm.avail_out > 0) {
+      BZ2_bzDecompressEnd ( &strm );
+      return BZ_UNEXPECTED_EOF;
+   } else {
+      BZ2_bzDecompressEnd ( &strm );
+      return BZ_OUTBUFF_FULL;
+   };
+
+   errhandler:
+   BZ2_bzDecompressEnd ( &strm );
+   return ret;
+}
+
+
+/*---------------------------------------------------*/
+/*--
+   Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp)
+   to support better zlib compatibility.
+   This code is not _officially_ part of libbzip2 (yet);
+   I haven't tested it, documented it, or considered the
+   threading-safeness of it.
+   If this code breaks, please contact both Yoshioka and me.
+--*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------------*/
+/*--
+   return version like "0.9.5d, 4-Sept-1999".
+--*/
+const char * BZ_API(BZ2_bzlibVersion)(void)
+{
+   return BZ_VERSION;
+}
+
+
+#ifndef BZ_NO_STDIO
+/*---------------------------------------------------*/
+
+#if (defined(_WIN32) || defined(OS2) || defined(MSDOS)) && !defined(OMIM_OS_BADA)
+#   include 
+#   include 
+#   define SET_BINARY_MODE(file) setmode(fileno(file),O_BINARY)
+#else
+#   define SET_BINARY_MODE(file)
+#endif
+static
+BZFILE * bzopen_or_bzdopen
+               ( const char *path,   /* no use when bzdopen */
+                 int fd,             /* no use when bzdopen */
+                 const char *mode,
+                 int open_mode)      /* bzopen: 0, bzdopen:1 */
+{
+   int    bzerr;
+   char   unused[BZ_MAX_UNUSED];
+   int    blockSize100k = 9;
+   int    writing       = 0;
+   char   mode2[10]     = "";
+   FILE   *fp           = NULL;
+   BZFILE *bzfp         = NULL;
+   int    verbosity     = 0;
+   int    workFactor    = 30;
+   int    smallMode     = 0;
+   int    nUnused       = 0;
+
+   if (mode == NULL) return NULL;
+   while (*mode) {
+      switch (*mode) {
+      case 'r':
+         writing = 0; break;
+      case 'w':
+         writing = 1; break;
+      case 's':
+         smallMode = 1; break;
+      default:
+         if (isdigit((int)(*mode))) {
+            blockSize100k = *mode-BZ_HDR_0;
+         }
+      }
+      mode++;
+   }
+   strcat(mode2, writing ? "w" : "r" );
+   strcat(mode2,"b");   /* binary mode */
+
+   if (open_mode==0) {
+      if (path==NULL || strcmp(path,"")==0) {
+        fp = (writing ? stdout : stdin);
+        SET_BINARY_MODE(fp);
+      } else {
+        fp = fopen(path,mode2);
+      }
+   } else {
+#ifdef BZ_STRICT_ANSI
+      fp = NULL;
+#else
+      fp = fdopen(fd,mode2);
+#endif
+   }
+   if (fp == NULL) return NULL;
+
+   if (writing) {
+      /* Guard against total chaos and anarchy -- JRS */
+      if (blockSize100k < 1) blockSize100k = 1;
+      if (blockSize100k > 9) blockSize100k = 9;
+      bzfp = BZ2_bzWriteOpen(&bzerr,fp,blockSize100k,
+                             verbosity,workFactor);
+   } else {
+      bzfp = BZ2_bzReadOpen(&bzerr,fp,verbosity,smallMode,
+                            unused,nUnused);
+   }
+   if (bzfp == NULL) {
+      if (fp != stdin && fp != stdout) fclose(fp);
+      return NULL;
+   }
+   return bzfp;
+}
+
+
+/*---------------------------------------------------*/
+/*--
+   open file for read or write.
+      ex) bzopen("file","w9")
+      case path="" or NULL => use stdin or stdout.
+--*/
+BZFILE * BZ_API(BZ2_bzopen)
+               ( const char *path,
+                 const char *mode )
+{
+   return bzopen_or_bzdopen(path,-1,mode,/*bzopen*/0);
+}
+
+
+/*---------------------------------------------------*/
+BZFILE * BZ_API(BZ2_bzdopen)
+               ( int fd,
+                 const char *mode )
+{
+   return bzopen_or_bzdopen(NULL,fd,mode,/*bzdopen*/1);
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzread) (BZFILE* b, void* buf, int len )
+{
+   int bzerr, nread;
+   if (((bzFile*)b)->lastErr == BZ_STREAM_END) return 0;
+   nread = BZ2_bzRead(&bzerr,b,buf,len);
+   if (bzerr == BZ_OK || bzerr == BZ_STREAM_END) {
+      return nread;
+   } else {
+      return -1;
+   }
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzwrite) (BZFILE* b, void* buf, int len )
+{
+   int bzerr;
+
+   BZ2_bzWrite(&bzerr,b,buf,len);
+   if(bzerr == BZ_OK){
+      return len;
+   }else{
+      return -1;
+   }
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzflush) (BZFILE *b)
+{
+   /* do nothing now... */
+   return 0;
+}
+
+
+/*---------------------------------------------------*/
+void BZ_API(BZ2_bzclose) (BZFILE* b)
+{
+   int bzerr;
+   FILE *fp;
+
+   if (b==NULL) {return;}
+   fp = ((bzFile *)b)->handle;
+   if(((bzFile*)b)->writing){
+      BZ2_bzWriteClose(&bzerr,b,0,NULL,NULL);
+      if(bzerr != BZ_OK){
+         BZ2_bzWriteClose(NULL,b,1,NULL,NULL);
+      }
+   }else{
+      BZ2_bzReadClose(&bzerr,b);
+   }
+   if(fp!=stdin && fp!=stdout){
+      fclose(fp);
+   }
+}
+
+
+/*---------------------------------------------------*/
+/*--
+   return last error code
+--*/
+static const char *bzerrorstrings[] = {
+       "OK"
+      ,"SEQUENCE_ERROR"
+      ,"PARAM_ERROR"
+      ,"MEM_ERROR"
+      ,"DATA_ERROR"
+      ,"DATA_ERROR_MAGIC"
+      ,"IO_ERROR"
+      ,"UNEXPECTED_EOF"
+      ,"OUTBUFF_FULL"
+      ,"CONFIG_ERROR"
+      ,"???"   /* for future */
+      ,"???"   /* for future */
+      ,"???"   /* for future */
+      ,"???"   /* for future */
+      ,"???"   /* for future */
+      ,"???"   /* for future */
+};
+
+
+const char * BZ_API(BZ2_bzerror) (BZFILE *b, int *errnum)
+{
+   int err = ((bzFile *)b)->lastErr;
+
+   if(err>0) err = 0;
+   *errnum = err;
+   return bzerrorstrings[err*-1];
+}
+#endif
+
+
+/*-------------------------------------------------------------*/
+/*--- end                                           bzlib.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/3party_sloynik/bzip2/bzlib.h b/3party_sloynik/bzip2/bzlib.h
new file mode 100644
index 0000000000..8a9dac2d88
--- /dev/null
+++ b/3party_sloynik/bzip2/bzlib.h
@@ -0,0 +1,282 @@
+
+/*-------------------------------------------------------------*/
+/*--- Public header file for the library.                   ---*/
+/*---                                               bzlib.h ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.5 of 10 December 2007
+   Copyright (C) 1996-2007 Julian Seward 
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+#ifndef _BZLIB_H
+#define _BZLIB_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define BZ_RUN               0
+#define BZ_FLUSH             1
+#define BZ_FINISH            2
+
+#define BZ_OK                0
+#define BZ_RUN_OK            1
+#define BZ_FLUSH_OK          2
+#define BZ_FINISH_OK         3
+#define BZ_STREAM_END        4
+#define BZ_SEQUENCE_ERROR    (-1)
+#define BZ_PARAM_ERROR       (-2)
+#define BZ_MEM_ERROR         (-3)
+#define BZ_DATA_ERROR        (-4)
+#define BZ_DATA_ERROR_MAGIC  (-5)
+#define BZ_IO_ERROR          (-6)
+#define BZ_UNEXPECTED_EOF    (-7)
+#define BZ_OUTBUFF_FULL      (-8)
+#define BZ_CONFIG_ERROR      (-9)
+
+typedef 
+   struct {
+      char *next_in;
+      unsigned int avail_in;
+      unsigned int total_in_lo32;
+      unsigned int total_in_hi32;
+
+      char *next_out;
+      unsigned int avail_out;
+      unsigned int total_out_lo32;
+      unsigned int total_out_hi32;
+
+      void *state;
+
+      void *(*bzalloc)(void *,int,int);
+      void (*bzfree)(void *,void *);
+      void *opaque;
+   } 
+   bz_stream;
+
+
+#ifndef BZ_IMPORT
+#define BZ_EXPORT
+#endif
+
+#ifndef BZ_NO_STDIO
+/* Need a definitition for FILE */
+#include 
+#endif
+
+#if defined(_WIN32) && !defined(OMIM_OS_BADA)
+#   include 
+#   ifdef small
+      /* windows.h define small to char */
+#      undef small
+#   endif
+#   ifdef BZ_EXPORT
+#   define BZ_API(func) WINAPI func
+#   define BZ_EXTERN extern
+#   else
+   /* import windows dll dynamically */
+#   define BZ_API(func) (WINAPI * func)
+#   define BZ_EXTERN
+#   endif
+#else
+#   define BZ_API(func) func
+#   define BZ_EXTERN extern
+#endif
+
+
+/*-- Core (low-level) library functions --*/
+
+BZ_EXTERN int BZ_API(BZ2_bzCompressInit) ( 
+      bz_stream* strm, 
+      int        blockSize100k, 
+      int        verbosity, 
+      int        workFactor 
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzCompress) ( 
+      bz_stream* strm, 
+      int action 
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) ( 
+      bz_stream* strm 
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) ( 
+      bz_stream *strm, 
+      int       verbosity, 
+      int       small
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzDecompress) ( 
+      bz_stream* strm 
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) ( 
+      bz_stream *strm 
+   );
+
+
+
+/*-- High(er) level library functions --*/
+
+#ifndef BZ_NO_STDIO
+#define BZ_MAX_UNUSED 5000
+
+typedef void BZFILE;
+
+BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) ( 
+      int*  bzerror,   
+      FILE* f, 
+      int   verbosity, 
+      int   small,
+      void* unused,    
+      int   nUnused 
+   );
+
+BZ_EXTERN void BZ_API(BZ2_bzReadClose) ( 
+      int*    bzerror, 
+      BZFILE* b 
+   );
+
+BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) ( 
+      int*    bzerror, 
+      BZFILE* b, 
+      void**  unused,  
+      int*    nUnused 
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzRead) ( 
+      int*    bzerror, 
+      BZFILE* b, 
+      void*   buf, 
+      int     len 
+   );
+
+BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) ( 
+      int*  bzerror,      
+      FILE* f, 
+      int   blockSize100k, 
+      int   verbosity, 
+      int   workFactor 
+   );
+
+BZ_EXTERN void BZ_API(BZ2_bzWrite) ( 
+      int*    bzerror, 
+      BZFILE* b, 
+      void*   buf, 
+      int     len 
+   );
+
+BZ_EXTERN void BZ_API(BZ2_bzWriteClose) ( 
+      int*          bzerror, 
+      BZFILE*       b, 
+      int           abandon, 
+      unsigned int* nbytes_in, 
+      unsigned int* nbytes_out 
+   );
+
+BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) ( 
+      int*          bzerror, 
+      BZFILE*       b, 
+      int           abandon, 
+      unsigned int* nbytes_in_lo32, 
+      unsigned int* nbytes_in_hi32, 
+      unsigned int* nbytes_out_lo32, 
+      unsigned int* nbytes_out_hi32
+   );
+#endif
+
+
+/*-- Utility functions --*/
+
+BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) ( 
+      char*         dest, 
+      unsigned int* destLen,
+      char*         source, 
+      unsigned int  sourceLen,
+      int           blockSize100k, 
+      int           verbosity, 
+      int           workFactor 
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) ( 
+      char*         dest, 
+      unsigned int* destLen,
+      char*         source, 
+      unsigned int  sourceLen,
+      int           small, 
+      int           verbosity 
+   );
+
+
+/*--
+   Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp)
+   to support better zlib compatibility.
+   This code is not _officially_ part of libbzip2 (yet);
+   I haven't tested it, documented it, or considered the
+   threading-safeness of it.
+   If this code breaks, please contact both Yoshioka and me.
+--*/
+
+BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) (
+      void
+   );
+
+#ifndef BZ_NO_STDIO
+BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) (
+      const char *path,
+      const char *mode
+   );
+
+BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) (
+      int        fd,
+      const char *mode
+   );
+         
+BZ_EXTERN int BZ_API(BZ2_bzread) (
+      BZFILE* b, 
+      void* buf, 
+      int len 
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzwrite) (
+      BZFILE* b, 
+      void*   buf, 
+      int     len 
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzflush) (
+      BZFILE* b
+   );
+
+BZ_EXTERN void BZ_API(BZ2_bzclose) (
+      BZFILE* b
+   );
+
+BZ_EXTERN const char * BZ_API(BZ2_bzerror) (
+      BZFILE *b, 
+      int    *errnum
+   );
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/*-------------------------------------------------------------*/
+/*--- end                                           bzlib.h ---*/
+/*-------------------------------------------------------------*/
diff --git a/3party_sloynik/bzip2/bzlib.o b/3party_sloynik/bzip2/bzlib.o
new file mode 100644
index 0000000000000000000000000000000000000000..1b676d999f25e116975bc2a7dd17b55f6d2d1a0b
GIT binary patch
literal 41732
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
bdu|8S^&uzv)jd7}nOF}7#^z!iaq52o+U)u!

literal 0
HcmV?d00001

diff --git a/3party_sloynik/bzip2/bzlib_private.h b/3party_sloynik/bzip2/bzlib_private.h
new file mode 100644
index 0000000000..23427879b1
--- /dev/null
+++ b/3party_sloynik/bzip2/bzlib_private.h
@@ -0,0 +1,509 @@
+
+/*-------------------------------------------------------------*/
+/*--- Private header file for the library.                  ---*/
+/*---                                       bzlib_private.h ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.5 of 10 December 2007
+   Copyright (C) 1996-2007 Julian Seward 
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+#ifndef _BZLIB_PRIVATE_H
+#define _BZLIB_PRIVATE_H
+
+#include 
+
+#ifndef BZ_NO_STDIO
+#include 
+#include 
+#include 
+#endif
+
+#include "bzlib.h"
+
+
+
+/*-- General stuff. --*/
+
+#define BZ_VERSION  "1.0.5, 10-Dec-2007"
+
+typedef char            Char;
+typedef unsigned char   Bool;
+typedef unsigned char   UChar;
+typedef int             Int32;
+typedef unsigned int    UInt32;
+typedef short           Int16;
+typedef unsigned short  UInt16;
+
+#define True  ((Bool)1)
+#define False ((Bool)0)
+
+#ifndef __GNUC__
+#define __inline__  /* */
+#endif 
+
+#ifndef BZ_NO_STDIO
+
+extern void BZ2_bz__AssertH__fail ( int errcode );
+#define AssertH(cond,errcode) \
+   { if (!(cond)) BZ2_bz__AssertH__fail ( errcode ); }
+
+#if BZ_DEBUG
+#define AssertD(cond,msg) \
+   { if (!(cond)) {       \
+      fprintf ( stderr,   \
+        "\n\nlibbzip2(debug build): internal error\n\t%s\n", msg );\
+      exit(1); \
+   }}
+#else
+#define AssertD(cond,msg) /* */
+#endif
+
+#define VPrintf0(zf) \
+   fprintf(stderr,zf)
+#define VPrintf1(zf,za1) \
+   fprintf(stderr,zf,za1)
+#define VPrintf2(zf,za1,za2) \
+   fprintf(stderr,zf,za1,za2)
+#define VPrintf3(zf,za1,za2,za3) \
+   fprintf(stderr,zf,za1,za2,za3)
+#define VPrintf4(zf,za1,za2,za3,za4) \
+   fprintf(stderr,zf,za1,za2,za3,za4)
+#define VPrintf5(zf,za1,za2,za3,za4,za5) \
+   fprintf(stderr,zf,za1,za2,za3,za4,za5)
+
+#else
+
+extern void bz_internal_error ( int errcode );
+#define AssertH(cond,errcode) \
+   { if (!(cond)) bz_internal_error ( errcode ); }
+#define AssertD(cond,msg)                do { } while (0)
+#define VPrintf0(zf)                     do { } while (0)
+#define VPrintf1(zf,za1)                 do { } while (0)
+#define VPrintf2(zf,za1,za2)             do { } while (0)
+#define VPrintf3(zf,za1,za2,za3)         do { } while (0)
+#define VPrintf4(zf,za1,za2,za3,za4)     do { } while (0)
+#define VPrintf5(zf,za1,za2,za3,za4,za5) do { } while (0)
+
+#endif
+
+
+#define BZALLOC(nnn) (strm->bzalloc)(strm->opaque,(nnn),1)
+#define BZFREE(ppp)  (strm->bzfree)(strm->opaque,(ppp))
+
+
+/*-- Header bytes. --*/
+
+#define BZ_HDR_B 0x42   /* 'B' */
+#define BZ_HDR_Z 0x5a   /* 'Z' */
+#define BZ_HDR_h 0x68   /* 'h' */
+#define BZ_HDR_0 0x30   /* '0' */
+  
+/*-- Constants for the back end. --*/
+
+#define BZ_MAX_ALPHA_SIZE 258
+#define BZ_MAX_CODE_LEN    23
+
+#define BZ_RUNA 0
+#define BZ_RUNB 1
+
+#define BZ_N_GROUPS 6
+#define BZ_G_SIZE   50
+#define BZ_N_ITERS  4
+
+#define BZ_MAX_SELECTORS (2 + (900000 / BZ_G_SIZE))
+
+
+
+/*-- Stuff for randomising repetitive blocks. --*/
+
+extern Int32 BZ2_rNums[512];
+
+#define BZ_RAND_DECLS                          \
+   Int32 rNToGo;                               \
+   Int32 rTPos                                 \
+
+#define BZ_RAND_INIT_MASK                      \
+   s->rNToGo = 0;                              \
+   s->rTPos  = 0                               \
+
+#define BZ_RAND_MASK ((s->rNToGo == 1) ? 1 : 0)
+
+#define BZ_RAND_UPD_MASK                       \
+   if (s->rNToGo == 0) {                       \
+      s->rNToGo = BZ2_rNums[s->rTPos];         \
+      s->rTPos++;                              \
+      if (s->rTPos == 512) s->rTPos = 0;       \
+   }                                           \
+   s->rNToGo--;
+
+
+
+/*-- Stuff for doing CRCs. --*/
+
+extern UInt32 BZ2_crc32Table[256];
+
+#define BZ_INITIALISE_CRC(crcVar)              \
+{                                              \
+   crcVar = 0xffffffffL;                       \
+}
+
+#define BZ_FINALISE_CRC(crcVar)                \
+{                                              \
+   crcVar = ~(crcVar);                         \
+}
+
+#define BZ_UPDATE_CRC(crcVar,cha)              \
+{                                              \
+   crcVar = (crcVar << 8) ^                    \
+            BZ2_crc32Table[(crcVar >> 24) ^    \
+                           ((UChar)cha)];      \
+}
+
+
+
+/*-- States and modes for compression. --*/
+
+#define BZ_M_IDLE      1
+#define BZ_M_RUNNING   2
+#define BZ_M_FLUSHING  3
+#define BZ_M_FINISHING 4
+
+#define BZ_S_OUTPUT    1
+#define BZ_S_INPUT     2
+
+#define BZ_N_RADIX 2
+#define BZ_N_QSORT 12
+#define BZ_N_SHELL 18
+#define BZ_N_OVERSHOOT (BZ_N_RADIX + BZ_N_QSORT + BZ_N_SHELL + 2)
+
+
+
+
+/*-- Structure holding all the compression-side stuff. --*/
+
+typedef
+   struct {
+      /* pointer back to the struct bz_stream */
+      bz_stream* strm;
+
+      /* mode this stream is in, and whether inputting */
+      /* or outputting data */
+      Int32    mode;
+      Int32    state;
+
+      /* remembers avail_in when flush/finish requested */
+      UInt32   avail_in_expect;
+
+      /* for doing the block sorting */
+      UInt32*  arr1;
+      UInt32*  arr2;
+      UInt32*  ftab;
+      Int32    origPtr;
+
+      /* aliases for arr1 and arr2 */
+      UInt32*  ptr;
+      UChar*   block;
+      UInt16*  mtfv;
+      UChar*   zbits;
+
+      /* for deciding when to use the fallback sorting algorithm */
+      Int32    workFactor;
+
+      /* run-length-encoding of the input */
+      UInt32   state_in_ch;
+      Int32    state_in_len;
+      BZ_RAND_DECLS;
+
+      /* input and output limits and current posns */
+      Int32    nblock;
+      Int32    nblockMAX;
+      Int32    numZ;
+      Int32    state_out_pos;
+
+      /* map of bytes used in block */
+      Int32    nInUse;
+      Bool     inUse[256];
+      UChar    unseqToSeq[256];
+
+      /* the buffer for bit stream creation */
+      UInt32   bsBuff;
+      Int32    bsLive;
+
+      /* block and combined CRCs */
+      UInt32   blockCRC;
+      UInt32   combinedCRC;
+
+      /* misc administratium */
+      Int32    verbosity;
+      Int32    blockNo;
+      Int32    blockSize100k;
+
+      /* stuff for coding the MTF values */
+      Int32    nMTF;
+      Int32    mtfFreq    [BZ_MAX_ALPHA_SIZE];
+      UChar    selector   [BZ_MAX_SELECTORS];
+      UChar    selectorMtf[BZ_MAX_SELECTORS];
+
+      UChar    len     [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+      Int32    code    [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+      Int32    rfreq   [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+      /* second dimension: only 3 needed; 4 makes index calculations faster */
+      UInt32   len_pack[BZ_MAX_ALPHA_SIZE][4];
+
+   }
+   EState;
+
+
+
+/*-- externs for compression. --*/
+
+extern void 
+BZ2_blockSort ( EState* );
+
+extern void 
+BZ2_compressBlock ( EState*, Bool );
+
+extern void 
+BZ2_bsInitWrite ( EState* );
+
+extern void 
+BZ2_hbAssignCodes ( Int32*, UChar*, Int32, Int32, Int32 );
+
+extern void 
+BZ2_hbMakeCodeLengths ( UChar*, Int32*, Int32, Int32 );
+
+
+
+/*-- states for decompression. --*/
+
+#define BZ_X_IDLE        1
+#define BZ_X_OUTPUT      2
+
+#define BZ_X_MAGIC_1     10
+#define BZ_X_MAGIC_2     11
+#define BZ_X_MAGIC_3     12
+#define BZ_X_MAGIC_4     13
+#define BZ_X_BLKHDR_1    14
+#define BZ_X_BLKHDR_2    15
+#define BZ_X_BLKHDR_3    16
+#define BZ_X_BLKHDR_4    17
+#define BZ_X_BLKHDR_5    18
+#define BZ_X_BLKHDR_6    19
+#define BZ_X_BCRC_1      20
+#define BZ_X_BCRC_2      21
+#define BZ_X_BCRC_3      22
+#define BZ_X_BCRC_4      23
+#define BZ_X_RANDBIT     24
+#define BZ_X_ORIGPTR_1   25
+#define BZ_X_ORIGPTR_2   26
+#define BZ_X_ORIGPTR_3   27
+#define BZ_X_MAPPING_1   28
+#define BZ_X_MAPPING_2   29
+#define BZ_X_SELECTOR_1  30
+#define BZ_X_SELECTOR_2  31
+#define BZ_X_SELECTOR_3  32
+#define BZ_X_CODING_1    33
+#define BZ_X_CODING_2    34
+#define BZ_X_CODING_3    35
+#define BZ_X_MTF_1       36
+#define BZ_X_MTF_2       37
+#define BZ_X_MTF_3       38
+#define BZ_X_MTF_4       39
+#define BZ_X_MTF_5       40
+#define BZ_X_MTF_6       41
+#define BZ_X_ENDHDR_2    42
+#define BZ_X_ENDHDR_3    43
+#define BZ_X_ENDHDR_4    44
+#define BZ_X_ENDHDR_5    45
+#define BZ_X_ENDHDR_6    46
+#define BZ_X_CCRC_1      47
+#define BZ_X_CCRC_2      48
+#define BZ_X_CCRC_3      49
+#define BZ_X_CCRC_4      50
+
+
+
+/*-- Constants for the fast MTF decoder. --*/
+
+#define MTFA_SIZE 4096
+#define MTFL_SIZE 16
+
+
+
+/*-- Structure holding all the decompression-side stuff. --*/
+
+typedef
+   struct {
+      /* pointer back to the struct bz_stream */
+      bz_stream* strm;
+
+      /* state indicator for this stream */
+      Int32    state;
+
+      /* for doing the final run-length decoding */
+      UChar    state_out_ch;
+      Int32    state_out_len;
+      Bool     blockRandomised;
+      BZ_RAND_DECLS;
+
+      /* the buffer for bit stream reading */
+      UInt32   bsBuff;
+      Int32    bsLive;
+
+      /* misc administratium */
+      Int32    blockSize100k;
+      Bool     smallDecompress;
+      Int32    currBlockNo;
+      Int32    verbosity;
+
+      /* for undoing the Burrows-Wheeler transform */
+      Int32    origPtr;
+      UInt32   tPos;
+      Int32    k0;
+      Int32    unzftab[256];
+      Int32    nblock_used;
+      Int32    cftab[257];
+      Int32    cftabCopy[257];
+
+      /* for undoing the Burrows-Wheeler transform (FAST) */
+      UInt32   *tt;
+
+      /* for undoing the Burrows-Wheeler transform (SMALL) */
+      UInt16   *ll16;
+      UChar    *ll4;
+
+      /* stored and calculated CRCs */
+      UInt32   storedBlockCRC;
+      UInt32   storedCombinedCRC;
+      UInt32   calculatedBlockCRC;
+      UInt32   calculatedCombinedCRC;
+
+      /* map of bytes used in block */
+      Int32    nInUse;
+      Bool     inUse[256];
+      Bool     inUse16[16];
+      UChar    seqToUnseq[256];
+
+      /* for decoding the MTF values */
+      UChar    mtfa   [MTFA_SIZE];
+      Int32    mtfbase[256 / MTFL_SIZE];
+      UChar    selector   [BZ_MAX_SELECTORS];
+      UChar    selectorMtf[BZ_MAX_SELECTORS];
+      UChar    len  [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+
+      Int32    limit  [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+      Int32    base   [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+      Int32    perm   [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+      Int32    minLens[BZ_N_GROUPS];
+
+      /* save area for scalars in the main decompress code */
+      Int32    save_i;
+      Int32    save_j;
+      Int32    save_t;
+      Int32    save_alphaSize;
+      Int32    save_nGroups;
+      Int32    save_nSelectors;
+      Int32    save_EOB;
+      Int32    save_groupNo;
+      Int32    save_groupPos;
+      Int32    save_nextSym;
+      Int32    save_nblockMAX;
+      Int32    save_nblock;
+      Int32    save_es;
+      Int32    save_N;
+      Int32    save_curr;
+      Int32    save_zt;
+      Int32    save_zn; 
+      Int32    save_zvec;
+      Int32    save_zj;
+      Int32    save_gSel;
+      Int32    save_gMinlen;
+      Int32*   save_gLimit;
+      Int32*   save_gBase;
+      Int32*   save_gPerm;
+
+   }
+   DState;
+
+
+
+/*-- Macros for decompression. --*/
+
+#define BZ_GET_FAST(cccc)                     \
+    /* c_tPos is unsigned, hence test < 0 is pointless. */ \
+    if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \
+    s->tPos = s->tt[s->tPos];                 \
+    cccc = (UChar)(s->tPos & 0xff);           \
+    s->tPos >>= 8;
+
+#define BZ_GET_FAST_C(cccc)                   \
+    /* c_tPos is unsigned, hence test < 0 is pointless. */ \
+    if (c_tPos >= (UInt32)100000 * (UInt32)ro_blockSize100k) return True; \
+    c_tPos = c_tt[c_tPos];                    \
+    cccc = (UChar)(c_tPos & 0xff);            \
+    c_tPos >>= 8;
+
+#define SET_LL4(i,n)                                          \
+   { if (((i) & 0x1) == 0)                                    \
+        s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0xf0) | (n); else    \
+        s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0x0f) | ((n) << 4);  \
+   }
+
+#define GET_LL4(i)                             \
+   ((((UInt32)(s->ll4[(i) >> 1])) >> (((i) << 2) & 0x4)) & 0xF)
+
+#define SET_LL(i,n)                          \
+   { s->ll16[i] = (UInt16)(n & 0x0000ffff);  \
+     SET_LL4(i, n >> 16);                    \
+   }
+
+#define GET_LL(i) \
+   (((UInt32)s->ll16[i]) | (GET_LL4(i) << 16))
+
+#define BZ_GET_SMALL(cccc)                            \
+    /* c_tPos is unsigned, hence test < 0 is pointless. */ \
+    if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \
+    cccc = BZ2_indexIntoF ( s->tPos, s->cftab );    \
+    s->tPos = GET_LL(s->tPos);
+
+
+/*-- externs for decompression. --*/
+
+extern Int32 
+BZ2_indexIntoF ( Int32, Int32* );
+
+extern Int32 
+BZ2_decompress ( DState* );
+
+extern void 
+BZ2_hbCreateDecodeTables ( Int32*, Int32*, Int32*, UChar*,
+                           Int32,  Int32, Int32 );
+
+
+#endif
+
+
+/*-- BZ_NO_STDIO seems to make NULL disappear on some platforms. --*/
+
+#ifdef BZ_NO_STDIO
+#ifndef NULL
+#define NULL 0
+#endif
+#endif
+
+
+/*-------------------------------------------------------------*/
+/*--- end                                   bzlib_private.h ---*/
+/*-------------------------------------------------------------*/
diff --git a/3party_sloynik/bzip2/bzmore b/3party_sloynik/bzip2/bzmore
new file mode 100644
index 0000000000..d314043404
--- /dev/null
+++ b/3party_sloynik/bzip2/bzmore
@@ -0,0 +1,61 @@
+#!/bin/sh
+
+# Bzmore wrapped for bzip2, 
+# adapted from zmore by Philippe Troin  for Debian GNU/Linux.
+
+PATH="/usr/bin:$PATH"; export PATH
+
+prog=`echo $0 | sed 's|.*/||'`
+case "$prog" in
+	*less)	more=less	;;
+	*)	more=more       ;;
+esac
+
+if test "`echo -n a`" = "-n a"; then
+  # looks like a SysV system:
+  n1=''; n2='\c'
+else
+  n1='-n'; n2=''
+fi
+oldtty=`stty -g 2>/dev/null`
+if stty -cbreak 2>/dev/null; then
+  cb='cbreak'; ncb='-cbreak'
+else
+  # 'stty min 1' resets eof to ^a on both SunOS and SysV!
+  cb='min 1 -icanon'; ncb='icanon eof ^d'
+fi
+if test $? -eq 0 -a -n "$oldtty"; then
+   trap 'stty $oldtty 2>/dev/null; exit' 0 2 3 5 10 13 15
+else
+   trap 'stty $ncb echo 2>/dev/null; exit' 0 2 3 5 10 13 15
+fi
+
+if test $# = 0; then
+    if test -t 0; then
+	echo usage: $prog files...
+    else
+	bzip2 -cdfq | eval $more
+    fi
+else
+    FIRST=1
+    for FILE
+    do
+	if test $FIRST -eq 0; then
+		echo $n1 "--More--(Next file: $FILE)$n2"
+		stty $cb -echo 2>/dev/null
+		ANS=`dd bs=1 count=1 2>/dev/null` 
+		stty $ncb echo 2>/dev/null
+		echo " "
+		if test "$ANS" = 'e' -o "$ANS" = 'q'; then
+			exit
+		fi
+	fi
+	if test "$ANS" != 's'; then
+		echo "------> $FILE <------"
+		bzip2 -cdfq "$FILE" | eval $more
+	fi
+	if test -t; then
+		FIRST=0
+	fi
+    done
+fi
diff --git a/3party_sloynik/bzip2/bzmore.1 b/3party_sloynik/bzip2/bzmore.1
new file mode 100644
index 0000000000..b437d3b031
--- /dev/null
+++ b/3party_sloynik/bzip2/bzmore.1
@@ -0,0 +1,152 @@
+.\"Shamelessly copied from zmore.1 by Philippe Troin 
+.\"for Debian GNU/Linux
+.TH BZMORE 1
+.SH NAME
+bzmore, bzless \- file perusal filter for crt viewing of bzip2 compressed text
+.SH SYNOPSIS
+.B bzmore
+[ name ...  ]
+.br
+.B bzless
+[ name ...  ]
+.SH NOTE
+In the following description,
+.I bzless
+and
+.I less
+can be used interchangeably with
+.I bzmore
+and
+.I more.
+.SH DESCRIPTION
+.I  Bzmore
+is a filter which allows examination of compressed or plain text files
+one screenful at a time on a soft-copy terminal.
+.I bzmore
+works on files compressed with
+.I bzip2
+and also on uncompressed files.
+If a file does not exist,
+.I bzmore
+looks for a file of the same name with the addition of a .bz2 suffix.
+.PP
+.I Bzmore
+normally pauses after each screenful, printing --More--
+at the bottom of the screen.
+If the user then types a carriage return, one more line is displayed.
+If the user hits a space,
+another screenful is displayed.  Other possibilities are enumerated later.
+.PP
+.I Bzmore
+looks in the file
+.I /etc/termcap
+to determine terminal characteristics,
+and to determine the default window size.
+On a terminal capable of displaying 24 lines,
+the default window size is 22 lines.
+Other sequences which may be typed when
+.I bzmore
+pauses, and their effects, are as follows (\fIi\fP is an optional integer
+argument, defaulting to 1) :
+.PP
+.IP \fIi\|\fP
+display
+.I i
+more lines, (or another screenful if no argument is given)
+.PP
+.IP ^D
+display 11 more lines (a ``scroll'').
+If
+.I i
+is given, then the scroll size is set to \fIi\|\fP.
+.PP
+.IP d
+same as ^D (control-D)
+.PP
+.IP \fIi\|\fPz
+same as typing a space except that \fIi\|\fP, if present, becomes the new
+window size.  Note that the window size reverts back to the default at the
+end of the current file.
+.PP
+.IP \fIi\|\fPs
+skip \fIi\|\fP lines and print a screenful of lines
+.PP
+.IP \fIi\|\fPf
+skip \fIi\fP screenfuls and print a screenful of lines
+.PP
+.IP "q or Q"
+quit reading the current file; go on to the next (if any)
+.PP
+.IP "e or q"
+When the prompt --More--(Next file: 
+.IR file )
+is printed, this command causes bzmore to exit.
+.PP
+.IP s
+When the prompt --More--(Next file: 
+.IR file )
+is printed, this command causes bzmore to skip the next file and continue.
+.PP 
+.IP =
+Display the current line number.
+.PP
+.IP \fIi\|\fP/expr
+search for the \fIi\|\fP-th occurrence of the regular expression \fIexpr.\fP
+If the pattern is not found,
+.I bzmore
+goes on to the next file (if any).
+Otherwise, a screenful is displayed, starting two lines before the place
+where the expression was found.
+The user's erase and kill characters may be used to edit the regular
+expression.
+Erasing back past the first column cancels the search command.
+.PP
+.IP \fIi\|\fPn
+search for the \fIi\|\fP-th occurrence of the last regular expression entered.
+.PP
+.IP !command
+invoke a shell with \fIcommand\|\fP. 
+The character `!' in "command" are replaced with the
+previous shell command.  The sequence "\\!" is replaced by "!".
+.PP
+.IP ":q or :Q"
+quit reading the current file; go on to the next (if any)
+(same as q or Q).
+.PP
+.IP .
+(dot) repeat the previous command.
+.PP
+The commands take effect immediately, i.e., it is not necessary to
+type a carriage return.
+Up to the time when the command character itself is given,
+the user may hit the line kill character to cancel the numerical
+argument being formed.
+In addition, the user may hit the erase character to redisplay the
+--More-- message.
+.PP
+At any time when output is being sent to the terminal, the user can
+hit the quit key (normally control\-\\).
+.I Bzmore
+will stop sending output, and will display the usual --More--
+prompt.
+The user may then enter one of the above commands in the normal manner.
+Unfortunately, some output is lost when this is done, due to the
+fact that any characters waiting in the terminal's output queue
+are flushed when the quit signal occurs.
+.PP
+The terminal is set to
+.I noecho
+mode by this program so that the output can be continuous.
+What you type will thus not show on your terminal, except for the / and !
+commands.
+.PP
+If the standard output is not a teletype, then
+.I bzmore
+acts just like
+.I bzcat,
+except that a header is printed before each file.
+.SH FILES
+.DT
+/etc/termcap		Terminal data base
+.SH "SEE ALSO"
+more(1), less(1), bzip2(1), bzdiff(1), bzgrep(1)
diff --git a/3party_sloynik/bzip2/compress.c b/3party_sloynik/bzip2/compress.c
new file mode 100644
index 0000000000..8c80a07970
--- /dev/null
+++ b/3party_sloynik/bzip2/compress.c
@@ -0,0 +1,672 @@
+
+/*-------------------------------------------------------------*/
+/*--- Compression machinery (not incl block sorting)        ---*/
+/*---                                            compress.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.5 of 10 December 2007
+   Copyright (C) 1996-2007 Julian Seward 
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+/* CHANGES
+    0.9.0    -- original version.
+    0.9.0a/b -- no changes in this file.
+    0.9.0c   -- changed setting of nGroups in sendMTFValues() 
+                so as to do a bit better on small files
+*/
+
+#include "bzlib_private.h"
+
+
+/*---------------------------------------------------*/
+/*--- Bit stream I/O                              ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------------*/
+void BZ2_bsInitWrite ( EState* s )
+{
+   s->bsLive = 0;
+   s->bsBuff = 0;
+}
+
+
+/*---------------------------------------------------*/
+static
+void bsFinishWrite ( EState* s )
+{
+   while (s->bsLive > 0) {
+      s->zbits[s->numZ] = (UChar)(s->bsBuff >> 24);
+      s->numZ++;
+      s->bsBuff <<= 8;
+      s->bsLive -= 8;
+   }
+}
+
+
+/*---------------------------------------------------*/
+#define bsNEEDW(nz)                           \
+{                                             \
+   while (s->bsLive >= 8) {                   \
+      s->zbits[s->numZ]                       \
+         = (UChar)(s->bsBuff >> 24);          \
+      s->numZ++;                              \
+      s->bsBuff <<= 8;                        \
+      s->bsLive -= 8;                         \
+   }                                          \
+}
+
+
+/*---------------------------------------------------*/
+static
+__inline__
+void bsW ( EState* s, Int32 n, UInt32 v )
+{
+   bsNEEDW ( n );
+   s->bsBuff |= (v << (32 - s->bsLive - n));
+   s->bsLive += n;
+}
+
+
+/*---------------------------------------------------*/
+static
+void bsPutUInt32 ( EState* s, UInt32 u )
+{
+   bsW ( s, 8, (u >> 24) & 0xffL );
+   bsW ( s, 8, (u >> 16) & 0xffL );
+   bsW ( s, 8, (u >>  8) & 0xffL );
+   bsW ( s, 8,  u        & 0xffL );
+}
+
+
+/*---------------------------------------------------*/
+static
+void bsPutUChar ( EState* s, UChar c )
+{
+   bsW( s, 8, (UInt32)c );
+}
+
+
+/*---------------------------------------------------*/
+/*--- The back end proper                         ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------------*/
+static
+void makeMaps_e ( EState* s )
+{
+   Int32 i;
+   s->nInUse = 0;
+   for (i = 0; i < 256; i++)
+      if (s->inUse[i]) {
+         s->unseqToSeq[i] = s->nInUse;
+         s->nInUse++;
+      }
+}
+
+
+/*---------------------------------------------------*/
+static
+void generateMTFValues ( EState* s )
+{
+   UChar   yy[256];
+   Int32   i, j;
+   Int32   zPend;
+   Int32   wr;
+   Int32   EOB;
+
+   /* 
+      After sorting (eg, here),
+         s->arr1 [ 0 .. s->nblock-1 ] holds sorted order,
+         and
+         ((UChar*)s->arr2) [ 0 .. s->nblock-1 ] 
+         holds the original block data.
+
+      The first thing to do is generate the MTF values,
+      and put them in
+         ((UInt16*)s->arr1) [ 0 .. s->nblock-1 ].
+      Because there are strictly fewer or equal MTF values
+      than block values, ptr values in this area are overwritten
+      with MTF values only when they are no longer needed.
+
+      The final compressed bitstream is generated into the
+      area starting at
+         (UChar*) (&((UChar*)s->arr2)[s->nblock])
+
+      These storage aliases are set up in bzCompressInit(),
+      except for the last one, which is arranged in 
+      compressBlock().
+   */
+   UInt32* ptr   = s->ptr;
+   UChar* block  = s->block;
+   UInt16* mtfv  = s->mtfv;
+
+   makeMaps_e ( s );
+   EOB = s->nInUse+1;
+
+   for (i = 0; i <= EOB; i++) s->mtfFreq[i] = 0;
+
+   wr = 0;
+   zPend = 0;
+   for (i = 0; i < s->nInUse; i++) yy[i] = (UChar) i;
+
+   for (i = 0; i < s->nblock; i++) {
+      UChar ll_i;
+      AssertD ( wr <= i, "generateMTFValues(1)" );
+      j = ptr[i]-1; if (j < 0) j += s->nblock;
+      ll_i = s->unseqToSeq[block[j]];
+      AssertD ( ll_i < s->nInUse, "generateMTFValues(2a)" );
+
+      if (yy[0] == ll_i) { 
+         zPend++;
+      } else {
+
+         if (zPend > 0) {
+            zPend--;
+            while (True) {
+               if (zPend & 1) {
+                  mtfv[wr] = BZ_RUNB; wr++; 
+                  s->mtfFreq[BZ_RUNB]++; 
+               } else {
+                  mtfv[wr] = BZ_RUNA; wr++; 
+                  s->mtfFreq[BZ_RUNA]++; 
+               }
+               if (zPend < 2) break;
+               zPend = (zPend - 2) / 2;
+            };
+            zPend = 0;
+         }
+         {
+            register UChar  rtmp;
+            register UChar* ryy_j;
+            register UChar  rll_i;
+            rtmp  = yy[1];
+            yy[1] = yy[0];
+            ryy_j = &(yy[1]);
+            rll_i = ll_i;
+            while ( rll_i != rtmp ) {
+               register UChar rtmp2;
+               ryy_j++;
+               rtmp2  = rtmp;
+               rtmp   = *ryy_j;
+               *ryy_j = rtmp2;
+            };
+            yy[0] = rtmp;
+            j = ryy_j - &(yy[0]);
+            mtfv[wr] = j+1; wr++; s->mtfFreq[j+1]++;
+         }
+
+      }
+   }
+
+   if (zPend > 0) {
+      zPend--;
+      while (True) {
+         if (zPend & 1) {
+            mtfv[wr] = BZ_RUNB; wr++; 
+            s->mtfFreq[BZ_RUNB]++; 
+         } else {
+            mtfv[wr] = BZ_RUNA; wr++; 
+            s->mtfFreq[BZ_RUNA]++; 
+         }
+         if (zPend < 2) break;
+         zPend = (zPend - 2) / 2;
+      };
+      zPend = 0;
+   }
+
+   mtfv[wr] = EOB; wr++; s->mtfFreq[EOB]++;
+
+   s->nMTF = wr;
+}
+
+
+/*---------------------------------------------------*/
+#define BZ_LESSER_ICOST  0
+#define BZ_GREATER_ICOST 15
+
+static
+void sendMTFValues ( EState* s )
+{
+   Int32 v, t, i, j, gs, ge, totc, bt, bc, iter;
+   Int32 nSelectors, alphaSize, minLen, maxLen, selCtr;
+   Int32 nGroups, nBytes;
+
+   /*--
+   UChar  len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+   is a global since the decoder also needs it.
+
+   Int32  code[BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+   Int32  rfreq[BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+   are also globals only used in this proc.
+   Made global to keep stack frame size small.
+   --*/
+
+
+   UInt16 cost[BZ_N_GROUPS];
+   Int32  fave[BZ_N_GROUPS];
+
+   UInt16* mtfv = s->mtfv;
+
+   if (s->verbosity >= 3)
+      VPrintf3( "      %d in block, %d after MTF & 1-2 coding, "
+                "%d+2 syms in use\n", 
+                s->nblock, s->nMTF, s->nInUse );
+
+   alphaSize = s->nInUse+2;
+   for (t = 0; t < BZ_N_GROUPS; t++)
+      for (v = 0; v < alphaSize; v++)
+         s->len[t][v] = BZ_GREATER_ICOST;
+
+   /*--- Decide how many coding tables to use ---*/
+   AssertH ( s->nMTF > 0, 3001 );
+   if (s->nMTF < 200)  nGroups = 2; else
+   if (s->nMTF < 600)  nGroups = 3; else
+   if (s->nMTF < 1200) nGroups = 4; else
+   if (s->nMTF < 2400) nGroups = 5; else
+                       nGroups = 6;
+
+   /*--- Generate an initial set of coding tables ---*/
+   { 
+      Int32 nPart, remF, tFreq, aFreq;
+
+      nPart = nGroups;
+      remF  = s->nMTF;
+      gs = 0;
+      while (nPart > 0) {
+         tFreq = remF / nPart;
+         ge = gs-1;
+         aFreq = 0;
+         while (aFreq < tFreq && ge < alphaSize-1) {
+            ge++;
+            aFreq += s->mtfFreq[ge];
+         }
+
+         if (ge > gs 
+             && nPart != nGroups && nPart != 1 
+             && ((nGroups-nPart) % 2 == 1)) {
+            aFreq -= s->mtfFreq[ge];
+            ge--;
+         }
+
+         if (s->verbosity >= 3)
+            VPrintf5( "      initial group %d, [%d .. %d], "
+                      "has %d syms (%4.1f%%)\n",
+                      nPart, gs, ge, aFreq, 
+                      (100.0 * (float)aFreq) / (float)(s->nMTF) );
+ 
+         for (v = 0; v < alphaSize; v++)
+            if (v >= gs && v <= ge) 
+               s->len[nPart-1][v] = BZ_LESSER_ICOST; else
+               s->len[nPart-1][v] = BZ_GREATER_ICOST;
+ 
+         nPart--;
+         gs = ge+1;
+         remF -= aFreq;
+      }
+   }
+
+   /*--- 
+      Iterate up to BZ_N_ITERS times to improve the tables.
+   ---*/
+   for (iter = 0; iter < BZ_N_ITERS; iter++) {
+
+      for (t = 0; t < nGroups; t++) fave[t] = 0;
+
+      for (t = 0; t < nGroups; t++)
+         for (v = 0; v < alphaSize; v++)
+            s->rfreq[t][v] = 0;
+
+      /*---
+        Set up an auxiliary length table which is used to fast-track
+	the common case (nGroups == 6). 
+      ---*/
+      if (nGroups == 6) {
+         for (v = 0; v < alphaSize; v++) {
+            s->len_pack[v][0] = (s->len[1][v] << 16) | s->len[0][v];
+            s->len_pack[v][1] = (s->len[3][v] << 16) | s->len[2][v];
+            s->len_pack[v][2] = (s->len[5][v] << 16) | s->len[4][v];
+	 }
+      }
+
+      nSelectors = 0;
+      totc = 0;
+      gs = 0;
+      while (True) {
+
+         /*--- Set group start & end marks. --*/
+         if (gs >= s->nMTF) break;
+         ge = gs + BZ_G_SIZE - 1; 
+         if (ge >= s->nMTF) ge = s->nMTF-1;
+
+         /*-- 
+            Calculate the cost of this group as coded
+            by each of the coding tables.
+         --*/
+         for (t = 0; t < nGroups; t++) cost[t] = 0;
+
+         if (nGroups == 6 && 50 == ge-gs+1) {
+            /*--- fast track the common case ---*/
+            register UInt32 cost01, cost23, cost45;
+            register UInt16 icv;
+            cost01 = cost23 = cost45 = 0;
+
+#           define BZ_ITER(nn)                \
+               icv = mtfv[gs+(nn)];           \
+               cost01 += s->len_pack[icv][0]; \
+               cost23 += s->len_pack[icv][1]; \
+               cost45 += s->len_pack[icv][2]; \
+
+            BZ_ITER(0);  BZ_ITER(1);  BZ_ITER(2);  BZ_ITER(3);  BZ_ITER(4);
+            BZ_ITER(5);  BZ_ITER(6);  BZ_ITER(7);  BZ_ITER(8);  BZ_ITER(9);
+            BZ_ITER(10); BZ_ITER(11); BZ_ITER(12); BZ_ITER(13); BZ_ITER(14);
+            BZ_ITER(15); BZ_ITER(16); BZ_ITER(17); BZ_ITER(18); BZ_ITER(19);
+            BZ_ITER(20); BZ_ITER(21); BZ_ITER(22); BZ_ITER(23); BZ_ITER(24);
+            BZ_ITER(25); BZ_ITER(26); BZ_ITER(27); BZ_ITER(28); BZ_ITER(29);
+            BZ_ITER(30); BZ_ITER(31); BZ_ITER(32); BZ_ITER(33); BZ_ITER(34);
+            BZ_ITER(35); BZ_ITER(36); BZ_ITER(37); BZ_ITER(38); BZ_ITER(39);
+            BZ_ITER(40); BZ_ITER(41); BZ_ITER(42); BZ_ITER(43); BZ_ITER(44);
+            BZ_ITER(45); BZ_ITER(46); BZ_ITER(47); BZ_ITER(48); BZ_ITER(49);
+
+#           undef BZ_ITER
+
+            cost[0] = cost01 & 0xffff; cost[1] = cost01 >> 16;
+            cost[2] = cost23 & 0xffff; cost[3] = cost23 >> 16;
+            cost[4] = cost45 & 0xffff; cost[5] = cost45 >> 16;
+
+         } else {
+	    /*--- slow version which correctly handles all situations ---*/
+            for (i = gs; i <= ge; i++) { 
+               UInt16 icv = mtfv[i];
+               for (t = 0; t < nGroups; t++) cost[t] += s->len[t][icv];
+            }
+         }
+ 
+         /*-- 
+            Find the coding table which is best for this group,
+            and record its identity in the selector table.
+         --*/
+         bc = 999999999; bt = -1;
+         for (t = 0; t < nGroups; t++)
+            if (cost[t] < bc) { bc = cost[t]; bt = t; };
+         totc += bc;
+         fave[bt]++;
+         s->selector[nSelectors] = bt;
+         nSelectors++;
+
+         /*-- 
+            Increment the symbol frequencies for the selected table.
+          --*/
+         if (nGroups == 6 && 50 == ge-gs+1) {
+            /*--- fast track the common case ---*/
+
+#           define BZ_ITUR(nn) s->rfreq[bt][ mtfv[gs+(nn)] ]++
+
+            BZ_ITUR(0);  BZ_ITUR(1);  BZ_ITUR(2);  BZ_ITUR(3);  BZ_ITUR(4);
+            BZ_ITUR(5);  BZ_ITUR(6);  BZ_ITUR(7);  BZ_ITUR(8);  BZ_ITUR(9);
+            BZ_ITUR(10); BZ_ITUR(11); BZ_ITUR(12); BZ_ITUR(13); BZ_ITUR(14);
+            BZ_ITUR(15); BZ_ITUR(16); BZ_ITUR(17); BZ_ITUR(18); BZ_ITUR(19);
+            BZ_ITUR(20); BZ_ITUR(21); BZ_ITUR(22); BZ_ITUR(23); BZ_ITUR(24);
+            BZ_ITUR(25); BZ_ITUR(26); BZ_ITUR(27); BZ_ITUR(28); BZ_ITUR(29);
+            BZ_ITUR(30); BZ_ITUR(31); BZ_ITUR(32); BZ_ITUR(33); BZ_ITUR(34);
+            BZ_ITUR(35); BZ_ITUR(36); BZ_ITUR(37); BZ_ITUR(38); BZ_ITUR(39);
+            BZ_ITUR(40); BZ_ITUR(41); BZ_ITUR(42); BZ_ITUR(43); BZ_ITUR(44);
+            BZ_ITUR(45); BZ_ITUR(46); BZ_ITUR(47); BZ_ITUR(48); BZ_ITUR(49);
+
+#           undef BZ_ITUR
+
+         } else {
+	    /*--- slow version which correctly handles all situations ---*/
+            for (i = gs; i <= ge; i++)
+               s->rfreq[bt][ mtfv[i] ]++;
+         }
+
+         gs = ge+1;
+      }
+      if (s->verbosity >= 3) {
+         VPrintf2 ( "      pass %d: size is %d, grp uses are ", 
+                   iter+1, totc/8 );
+         for (t = 0; t < nGroups; t++)
+            VPrintf1 ( "%d ", fave[t] );
+         VPrintf0 ( "\n" );
+      }
+
+      /*--
+        Recompute the tables based on the accumulated frequencies.
+      --*/
+      /* maxLen was changed from 20 to 17 in bzip2-1.0.3.  See 
+         comment in huffman.c for details. */
+      for (t = 0; t < nGroups; t++)
+         BZ2_hbMakeCodeLengths ( &(s->len[t][0]), &(s->rfreq[t][0]), 
+                                 alphaSize, 17 /*20*/ );
+   }
+
+
+   AssertH( nGroups < 8, 3002 );
+   AssertH( nSelectors < 32768 &&
+            nSelectors <= (2 + (900000 / BZ_G_SIZE)),
+            3003 );
+
+
+   /*--- Compute MTF values for the selectors. ---*/
+   {
+      UChar pos[BZ_N_GROUPS], ll_i, tmp2, tmp;
+      for (i = 0; i < nGroups; i++) pos[i] = i;
+      for (i = 0; i < nSelectors; i++) {
+         ll_i = s->selector[i];
+         j = 0;
+         tmp = pos[j];
+         while ( ll_i != tmp ) {
+            j++;
+            tmp2 = tmp;
+            tmp = pos[j];
+            pos[j] = tmp2;
+         };
+         pos[0] = tmp;
+         s->selectorMtf[i] = j;
+      }
+   };
+
+   /*--- Assign actual codes for the tables. --*/
+   for (t = 0; t < nGroups; t++) {
+      minLen = 32;
+      maxLen = 0;
+      for (i = 0; i < alphaSize; i++) {
+         if (s->len[t][i] > maxLen) maxLen = s->len[t][i];
+         if (s->len[t][i] < minLen) minLen = s->len[t][i];
+      }
+      AssertH ( !(maxLen > 17 /*20*/ ), 3004 );
+      AssertH ( !(minLen < 1),  3005 );
+      BZ2_hbAssignCodes ( &(s->code[t][0]), &(s->len[t][0]), 
+                          minLen, maxLen, alphaSize );
+   }
+
+   /*--- Transmit the mapping table. ---*/
+   { 
+      Bool inUse16[16];
+      for (i = 0; i < 16; i++) {
+          inUse16[i] = False;
+          for (j = 0; j < 16; j++)
+             if (s->inUse[i * 16 + j]) inUse16[i] = True;
+      }
+     
+      nBytes = s->numZ;
+      for (i = 0; i < 16; i++)
+         if (inUse16[i]) bsW(s,1,1); else bsW(s,1,0);
+
+      for (i = 0; i < 16; i++)
+         if (inUse16[i])
+            for (j = 0; j < 16; j++) {
+               if (s->inUse[i * 16 + j]) bsW(s,1,1); else bsW(s,1,0);
+            }
+
+      if (s->verbosity >= 3) 
+         VPrintf1( "      bytes: mapping %d, ", s->numZ-nBytes );
+   }
+
+   /*--- Now the selectors. ---*/
+   nBytes = s->numZ;
+   bsW ( s, 3, nGroups );
+   bsW ( s, 15, nSelectors );
+   for (i = 0; i < nSelectors; i++) { 
+      for (j = 0; j < s->selectorMtf[i]; j++) bsW(s,1,1);
+      bsW(s,1,0);
+   }
+   if (s->verbosity >= 3)
+      VPrintf1( "selectors %d, ", s->numZ-nBytes );
+
+   /*--- Now the coding tables. ---*/
+   nBytes = s->numZ;
+
+   for (t = 0; t < nGroups; t++) {
+      Int32 curr = s->len[t][0];
+      bsW ( s, 5, curr );
+      for (i = 0; i < alphaSize; i++) {
+         while (curr < s->len[t][i]) { bsW(s,2,2); curr++; /* 10 */ };
+         while (curr > s->len[t][i]) { bsW(s,2,3); curr--; /* 11 */ };
+         bsW ( s, 1, 0 );
+      }
+   }
+
+   if (s->verbosity >= 3)
+      VPrintf1 ( "code lengths %d, ", s->numZ-nBytes );
+
+   /*--- And finally, the block data proper ---*/
+   nBytes = s->numZ;
+   selCtr = 0;
+   gs = 0;
+   while (True) {
+      if (gs >= s->nMTF) break;
+      ge = gs + BZ_G_SIZE - 1; 
+      if (ge >= s->nMTF) ge = s->nMTF-1;
+      AssertH ( s->selector[selCtr] < nGroups, 3006 );
+
+      if (nGroups == 6 && 50 == ge-gs+1) {
+            /*--- fast track the common case ---*/
+            UInt16 mtfv_i;
+            UChar* s_len_sel_selCtr 
+               = &(s->len[s->selector[selCtr]][0]);
+            Int32* s_code_sel_selCtr
+               = &(s->code[s->selector[selCtr]][0]);
+
+#           define BZ_ITAH(nn)                      \
+               mtfv_i = mtfv[gs+(nn)];              \
+               bsW ( s,                             \
+                     s_len_sel_selCtr[mtfv_i],      \
+                     s_code_sel_selCtr[mtfv_i] )
+
+            BZ_ITAH(0);  BZ_ITAH(1);  BZ_ITAH(2);  BZ_ITAH(3);  BZ_ITAH(4);
+            BZ_ITAH(5);  BZ_ITAH(6);  BZ_ITAH(7);  BZ_ITAH(8);  BZ_ITAH(9);
+            BZ_ITAH(10); BZ_ITAH(11); BZ_ITAH(12); BZ_ITAH(13); BZ_ITAH(14);
+            BZ_ITAH(15); BZ_ITAH(16); BZ_ITAH(17); BZ_ITAH(18); BZ_ITAH(19);
+            BZ_ITAH(20); BZ_ITAH(21); BZ_ITAH(22); BZ_ITAH(23); BZ_ITAH(24);
+            BZ_ITAH(25); BZ_ITAH(26); BZ_ITAH(27); BZ_ITAH(28); BZ_ITAH(29);
+            BZ_ITAH(30); BZ_ITAH(31); BZ_ITAH(32); BZ_ITAH(33); BZ_ITAH(34);
+            BZ_ITAH(35); BZ_ITAH(36); BZ_ITAH(37); BZ_ITAH(38); BZ_ITAH(39);
+            BZ_ITAH(40); BZ_ITAH(41); BZ_ITAH(42); BZ_ITAH(43); BZ_ITAH(44);
+            BZ_ITAH(45); BZ_ITAH(46); BZ_ITAH(47); BZ_ITAH(48); BZ_ITAH(49);
+
+#           undef BZ_ITAH
+
+      } else {
+	 /*--- slow version which correctly handles all situations ---*/
+         for (i = gs; i <= ge; i++) {
+            bsW ( s, 
+                  s->len  [s->selector[selCtr]] [mtfv[i]],
+                  s->code [s->selector[selCtr]] [mtfv[i]] );
+         }
+      }
+
+
+      gs = ge+1;
+      selCtr++;
+   }
+   AssertH( selCtr == nSelectors, 3007 );
+
+   if (s->verbosity >= 3)
+      VPrintf1( "codes %d\n", s->numZ-nBytes );
+}
+
+
+/*---------------------------------------------------*/
+void BZ2_compressBlock ( EState* s, Bool is_last_block )
+{
+   if (s->nblock > 0) {
+
+      BZ_FINALISE_CRC ( s->blockCRC );
+      s->combinedCRC = (s->combinedCRC << 1) | (s->combinedCRC >> 31);
+      s->combinedCRC ^= s->blockCRC;
+      if (s->blockNo > 1) s->numZ = 0;
+
+      if (s->verbosity >= 2)
+         VPrintf4( "    block %d: crc = 0x%08x, "
+                   "combined CRC = 0x%08x, size = %d\n",
+                   s->blockNo, s->blockCRC, s->combinedCRC, s->nblock );
+
+      BZ2_blockSort ( s );
+   }
+
+   s->zbits = (UChar*) (&((UChar*)s->arr2)[s->nblock]);
+
+   /*-- If this is the first block, create the stream header. --*/
+   if (s->blockNo == 1) {
+      BZ2_bsInitWrite ( s );
+      bsPutUChar ( s, BZ_HDR_B );
+      bsPutUChar ( s, BZ_HDR_Z );
+      bsPutUChar ( s, BZ_HDR_h );
+      bsPutUChar ( s, (UChar)(BZ_HDR_0 + s->blockSize100k) );
+   }
+
+   if (s->nblock > 0) {
+
+      bsPutUChar ( s, 0x31 ); bsPutUChar ( s, 0x41 );
+      bsPutUChar ( s, 0x59 ); bsPutUChar ( s, 0x26 );
+      bsPutUChar ( s, 0x53 ); bsPutUChar ( s, 0x59 );
+
+      /*-- Now the block's CRC, so it is in a known place. --*/
+      bsPutUInt32 ( s, s->blockCRC );
+
+      /*-- 
+         Now a single bit indicating (non-)randomisation. 
+         As of version 0.9.5, we use a better sorting algorithm
+         which makes randomisation unnecessary.  So always set
+         the randomised bit to 'no'.  Of course, the decoder
+         still needs to be able to handle randomised blocks
+         so as to maintain backwards compatibility with
+         older versions of bzip2.
+      --*/
+      bsW(s,1,0);
+
+      bsW ( s, 24, s->origPtr );
+      generateMTFValues ( s );
+      sendMTFValues ( s );
+   }
+
+
+   /*-- If this is the last block, add the stream trailer. --*/
+   if (is_last_block) {
+
+      bsPutUChar ( s, 0x17 ); bsPutUChar ( s, 0x72 );
+      bsPutUChar ( s, 0x45 ); bsPutUChar ( s, 0x38 );
+      bsPutUChar ( s, 0x50 ); bsPutUChar ( s, 0x90 );
+      bsPutUInt32 ( s, s->combinedCRC );
+      if (s->verbosity >= 2)
+         VPrintf1( "    final combined CRC = 0x%08x\n   ", s->combinedCRC );
+      bsFinishWrite ( s );
+   }
+}
+
+
+/*-------------------------------------------------------------*/
+/*--- end                                        compress.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/3party_sloynik/bzip2/compress.o b/3party_sloynik/bzip2/compress.o
new file mode 100644
index 0000000000000000000000000000000000000000..6d377d87ff536a7a4030dbdca064eb3cafc1d3dd
GIT binary patch
literal 29968
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

literal 0
HcmV?d00001

diff --git a/3party_sloynik/bzip2/crctable.c b/3party_sloynik/bzip2/crctable.c
new file mode 100644
index 0000000000..215687b2c0
--- /dev/null
+++ b/3party_sloynik/bzip2/crctable.c
@@ -0,0 +1,104 @@
+
+/*-------------------------------------------------------------*/
+/*--- Table for doing CRCs                                  ---*/
+/*---                                            crctable.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.5 of 10 December 2007
+   Copyright (C) 1996-2007 Julian Seward 
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+#include "bzlib_private.h"
+
+/*--
+  I think this is an implementation of the AUTODIN-II,
+  Ethernet & FDDI 32-bit CRC standard.  Vaguely derived
+  from code by Rob Warnock, in Section 51 of the
+  comp.compression FAQ.
+--*/
+
+UInt32 BZ2_crc32Table[256] = {
+
+   /*-- Ugly, innit? --*/
+
+   0x00000000L, 0x04c11db7L, 0x09823b6eL, 0x0d4326d9L,
+   0x130476dcL, 0x17c56b6bL, 0x1a864db2L, 0x1e475005L,
+   0x2608edb8L, 0x22c9f00fL, 0x2f8ad6d6L, 0x2b4bcb61L,
+   0x350c9b64L, 0x31cd86d3L, 0x3c8ea00aL, 0x384fbdbdL,
+   0x4c11db70L, 0x48d0c6c7L, 0x4593e01eL, 0x4152fda9L,
+   0x5f15adacL, 0x5bd4b01bL, 0x569796c2L, 0x52568b75L,
+   0x6a1936c8L, 0x6ed82b7fL, 0x639b0da6L, 0x675a1011L,
+   0x791d4014L, 0x7ddc5da3L, 0x709f7b7aL, 0x745e66cdL,
+   0x9823b6e0L, 0x9ce2ab57L, 0x91a18d8eL, 0x95609039L,
+   0x8b27c03cL, 0x8fe6dd8bL, 0x82a5fb52L, 0x8664e6e5L,
+   0xbe2b5b58L, 0xbaea46efL, 0xb7a96036L, 0xb3687d81L,
+   0xad2f2d84L, 0xa9ee3033L, 0xa4ad16eaL, 0xa06c0b5dL,
+   0xd4326d90L, 0xd0f37027L, 0xddb056feL, 0xd9714b49L,
+   0xc7361b4cL, 0xc3f706fbL, 0xceb42022L, 0xca753d95L,
+   0xf23a8028L, 0xf6fb9d9fL, 0xfbb8bb46L, 0xff79a6f1L,
+   0xe13ef6f4L, 0xe5ffeb43L, 0xe8bccd9aL, 0xec7dd02dL,
+   0x34867077L, 0x30476dc0L, 0x3d044b19L, 0x39c556aeL,
+   0x278206abL, 0x23431b1cL, 0x2e003dc5L, 0x2ac12072L,
+   0x128e9dcfL, 0x164f8078L, 0x1b0ca6a1L, 0x1fcdbb16L,
+   0x018aeb13L, 0x054bf6a4L, 0x0808d07dL, 0x0cc9cdcaL,
+   0x7897ab07L, 0x7c56b6b0L, 0x71159069L, 0x75d48ddeL,
+   0x6b93dddbL, 0x6f52c06cL, 0x6211e6b5L, 0x66d0fb02L,
+   0x5e9f46bfL, 0x5a5e5b08L, 0x571d7dd1L, 0x53dc6066L,
+   0x4d9b3063L, 0x495a2dd4L, 0x44190b0dL, 0x40d816baL,
+   0xaca5c697L, 0xa864db20L, 0xa527fdf9L, 0xa1e6e04eL,
+   0xbfa1b04bL, 0xbb60adfcL, 0xb6238b25L, 0xb2e29692L,
+   0x8aad2b2fL, 0x8e6c3698L, 0x832f1041L, 0x87ee0df6L,
+   0x99a95df3L, 0x9d684044L, 0x902b669dL, 0x94ea7b2aL,
+   0xe0b41de7L, 0xe4750050L, 0xe9362689L, 0xedf73b3eL,
+   0xf3b06b3bL, 0xf771768cL, 0xfa325055L, 0xfef34de2L,
+   0xc6bcf05fL, 0xc27dede8L, 0xcf3ecb31L, 0xcbffd686L,
+   0xd5b88683L, 0xd1799b34L, 0xdc3abdedL, 0xd8fba05aL,
+   0x690ce0eeL, 0x6dcdfd59L, 0x608edb80L, 0x644fc637L,
+   0x7a089632L, 0x7ec98b85L, 0x738aad5cL, 0x774bb0ebL,
+   0x4f040d56L, 0x4bc510e1L, 0x46863638L, 0x42472b8fL,
+   0x5c007b8aL, 0x58c1663dL, 0x558240e4L, 0x51435d53L,
+   0x251d3b9eL, 0x21dc2629L, 0x2c9f00f0L, 0x285e1d47L,
+   0x36194d42L, 0x32d850f5L, 0x3f9b762cL, 0x3b5a6b9bL,
+   0x0315d626L, 0x07d4cb91L, 0x0a97ed48L, 0x0e56f0ffL,
+   0x1011a0faL, 0x14d0bd4dL, 0x19939b94L, 0x1d528623L,
+   0xf12f560eL, 0xf5ee4bb9L, 0xf8ad6d60L, 0xfc6c70d7L,
+   0xe22b20d2L, 0xe6ea3d65L, 0xeba91bbcL, 0xef68060bL,
+   0xd727bbb6L, 0xd3e6a601L, 0xdea580d8L, 0xda649d6fL,
+   0xc423cd6aL, 0xc0e2d0ddL, 0xcda1f604L, 0xc960ebb3L,
+   0xbd3e8d7eL, 0xb9ff90c9L, 0xb4bcb610L, 0xb07daba7L,
+   0xae3afba2L, 0xaafbe615L, 0xa7b8c0ccL, 0xa379dd7bL,
+   0x9b3660c6L, 0x9ff77d71L, 0x92b45ba8L, 0x9675461fL,
+   0x8832161aL, 0x8cf30badL, 0x81b02d74L, 0x857130c3L,
+   0x5d8a9099L, 0x594b8d2eL, 0x5408abf7L, 0x50c9b640L,
+   0x4e8ee645L, 0x4a4ffbf2L, 0x470cdd2bL, 0x43cdc09cL,
+   0x7b827d21L, 0x7f436096L, 0x7200464fL, 0x76c15bf8L,
+   0x68860bfdL, 0x6c47164aL, 0x61043093L, 0x65c52d24L,
+   0x119b4be9L, 0x155a565eL, 0x18197087L, 0x1cd86d30L,
+   0x029f3d35L, 0x065e2082L, 0x0b1d065bL, 0x0fdc1becL,
+   0x3793a651L, 0x3352bbe6L, 0x3e119d3fL, 0x3ad08088L,
+   0x2497d08dL, 0x2056cd3aL, 0x2d15ebe3L, 0x29d4f654L,
+   0xc5a92679L, 0xc1683bceL, 0xcc2b1d17L, 0xc8ea00a0L,
+   0xd6ad50a5L, 0xd26c4d12L, 0xdf2f6bcbL, 0xdbee767cL,
+   0xe3a1cbc1L, 0xe760d676L, 0xea23f0afL, 0xeee2ed18L,
+   0xf0a5bd1dL, 0xf464a0aaL, 0xf9278673L, 0xfde69bc4L,
+   0x89b8fd09L, 0x8d79e0beL, 0x803ac667L, 0x84fbdbd0L,
+   0x9abc8bd5L, 0x9e7d9662L, 0x933eb0bbL, 0x97ffad0cL,
+   0xafb010b1L, 0xab710d06L, 0xa6322bdfL, 0xa2f33668L,
+   0xbcb4666dL, 0xb8757bdaL, 0xb5365d03L, 0xb1f740b4L
+};
+
+
+/*-------------------------------------------------------------*/
+/*--- end                                        crctable.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/3party_sloynik/bzip2/crctable.o b/3party_sloynik/bzip2/crctable.o
new file mode 100644
index 0000000000000000000000000000000000000000..b1382143e34b17124148c456a73d930d21648fe9
GIT binary patch
literal 4156
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
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+#include "bzlib_private.h"
+
+
+/*---------------------------------------------------*/
+static
+void makeMaps_d ( DState* s )
+{
+   Int32 i;
+   s->nInUse = 0;
+   for (i = 0; i < 256; i++)
+      if (s->inUse[i]) {
+         s->seqToUnseq[s->nInUse] = i;
+         s->nInUse++;
+      }
+}
+
+
+/*---------------------------------------------------*/
+#define RETURN(rrr)                               \
+   { retVal = rrr; goto save_state_and_return; };
+
+#define GET_BITS(lll,vvv,nnn)                     \
+   case lll: s->state = lll;                      \
+   while (True) {                                 \
+      if (s->bsLive >= nnn) {                     \
+         UInt32 v;                                \
+         v = (s->bsBuff >>                        \
+             (s->bsLive-nnn)) & ((1 << nnn)-1);   \
+         s->bsLive -= nnn;                        \
+         vvv = v;                                 \
+         break;                                   \
+      }                                           \
+      if (s->strm->avail_in == 0) RETURN(BZ_OK);  \
+      s->bsBuff                                   \
+         = (s->bsBuff << 8) |                     \
+           ((UInt32)                              \
+              (*((UChar*)(s->strm->next_in))));   \
+      s->bsLive += 8;                             \
+      s->strm->next_in++;                         \
+      s->strm->avail_in--;                        \
+      s->strm->total_in_lo32++;                   \
+      if (s->strm->total_in_lo32 == 0)            \
+         s->strm->total_in_hi32++;                \
+   }
+
+#define GET_UCHAR(lll,uuu)                        \
+   GET_BITS(lll,uuu,8)
+
+#define GET_BIT(lll,uuu)                          \
+   GET_BITS(lll,uuu,1)
+
+/*---------------------------------------------------*/
+#define GET_MTF_VAL(label1,label2,lval)           \
+{                                                 \
+   if (groupPos == 0) {                           \
+      groupNo++;                                  \
+      if (groupNo >= nSelectors)                  \
+         RETURN(BZ_DATA_ERROR);                   \
+      groupPos = BZ_G_SIZE;                       \
+      gSel = s->selector[groupNo];                \
+      gMinlen = s->minLens[gSel];                 \
+      gLimit = &(s->limit[gSel][0]);              \
+      gPerm = &(s->perm[gSel][0]);                \
+      gBase = &(s->base[gSel][0]);                \
+   }                                              \
+   groupPos--;                                    \
+   zn = gMinlen;                                  \
+   GET_BITS(label1, zvec, zn);                    \
+   while (1) {                                    \
+      if (zn > 20 /* the longest code */)         \
+         RETURN(BZ_DATA_ERROR);                   \
+      if (zvec <= gLimit[zn]) break;              \
+      zn++;                                       \
+      GET_BIT(label2, zj);                        \
+      zvec = (zvec << 1) | zj;                    \
+   };                                             \
+   if (zvec - gBase[zn] < 0                       \
+       || zvec - gBase[zn] >= BZ_MAX_ALPHA_SIZE)  \
+      RETURN(BZ_DATA_ERROR);                      \
+   lval = gPerm[zvec - gBase[zn]];                \
+}
+
+
+/*---------------------------------------------------*/
+Int32 BZ2_decompress ( DState* s )
+{
+   UChar      uc;
+   Int32      retVal;
+   Int32      minLen, maxLen;
+   bz_stream* strm = s->strm;
+
+   /* stuff that needs to be saved/restored */
+   Int32  i;
+   Int32  j;
+   Int32  t;
+   Int32  alphaSize;
+   Int32  nGroups;
+   Int32  nSelectors;
+   Int32  EOB;
+   Int32  groupNo;
+   Int32  groupPos;
+   Int32  nextSym;
+   Int32  nblockMAX;
+   Int32  nblock;
+   Int32  es;
+   Int32  N;
+   Int32  curr;
+   Int32  zt;
+   Int32  zn; 
+   Int32  zvec;
+   Int32  zj;
+   Int32  gSel;
+   Int32  gMinlen;
+   Int32* gLimit;
+   Int32* gBase;
+   Int32* gPerm;
+
+   if (s->state == BZ_X_MAGIC_1) {
+      /*initialise the save area*/
+      s->save_i           = 0;
+      s->save_j           = 0;
+      s->save_t           = 0;
+      s->save_alphaSize   = 0;
+      s->save_nGroups     = 0;
+      s->save_nSelectors  = 0;
+      s->save_EOB         = 0;
+      s->save_groupNo     = 0;
+      s->save_groupPos    = 0;
+      s->save_nextSym     = 0;
+      s->save_nblockMAX   = 0;
+      s->save_nblock      = 0;
+      s->save_es          = 0;
+      s->save_N           = 0;
+      s->save_curr        = 0;
+      s->save_zt          = 0;
+      s->save_zn          = 0;
+      s->save_zvec        = 0;
+      s->save_zj          = 0;
+      s->save_gSel        = 0;
+      s->save_gMinlen     = 0;
+      s->save_gLimit      = NULL;
+      s->save_gBase       = NULL;
+      s->save_gPerm       = NULL;
+   }
+
+   /*restore from the save area*/
+   i           = s->save_i;
+   j           = s->save_j;
+   t           = s->save_t;
+   alphaSize   = s->save_alphaSize;
+   nGroups     = s->save_nGroups;
+   nSelectors  = s->save_nSelectors;
+   EOB         = s->save_EOB;
+   groupNo     = s->save_groupNo;
+   groupPos    = s->save_groupPos;
+   nextSym     = s->save_nextSym;
+   nblockMAX   = s->save_nblockMAX;
+   nblock      = s->save_nblock;
+   es          = s->save_es;
+   N           = s->save_N;
+   curr        = s->save_curr;
+   zt          = s->save_zt;
+   zn          = s->save_zn; 
+   zvec        = s->save_zvec;
+   zj          = s->save_zj;
+   gSel        = s->save_gSel;
+   gMinlen     = s->save_gMinlen;
+   gLimit      = s->save_gLimit;
+   gBase       = s->save_gBase;
+   gPerm       = s->save_gPerm;
+
+   retVal = BZ_OK;
+
+   switch (s->state) {
+
+      GET_UCHAR(BZ_X_MAGIC_1, uc);
+      if (uc != BZ_HDR_B) RETURN(BZ_DATA_ERROR_MAGIC);
+
+      GET_UCHAR(BZ_X_MAGIC_2, uc);
+      if (uc != BZ_HDR_Z) RETURN(BZ_DATA_ERROR_MAGIC);
+
+      GET_UCHAR(BZ_X_MAGIC_3, uc)
+      if (uc != BZ_HDR_h) RETURN(BZ_DATA_ERROR_MAGIC);
+
+      GET_BITS(BZ_X_MAGIC_4, s->blockSize100k, 8)
+      if (s->blockSize100k < (BZ_HDR_0 + 1) || 
+          s->blockSize100k > (BZ_HDR_0 + 9)) RETURN(BZ_DATA_ERROR_MAGIC);
+      s->blockSize100k -= BZ_HDR_0;
+
+      if (s->smallDecompress) {
+         s->ll16 = BZALLOC( s->blockSize100k * 100000 * sizeof(UInt16) );
+         s->ll4  = BZALLOC( 
+                      ((1 + s->blockSize100k * 100000) >> 1) * sizeof(UChar) 
+                   );
+         if (s->ll16 == NULL || s->ll4 == NULL) RETURN(BZ_MEM_ERROR);
+      } else {
+         s->tt  = BZALLOC( s->blockSize100k * 100000 * sizeof(Int32) );
+         if (s->tt == NULL) RETURN(BZ_MEM_ERROR);
+      }
+
+      GET_UCHAR(BZ_X_BLKHDR_1, uc);
+
+      if (uc == 0x17) goto endhdr_2;
+      if (uc != 0x31) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_BLKHDR_2, uc);
+      if (uc != 0x41) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_BLKHDR_3, uc);
+      if (uc != 0x59) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_BLKHDR_4, uc);
+      if (uc != 0x26) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_BLKHDR_5, uc);
+      if (uc != 0x53) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_BLKHDR_6, uc);
+      if (uc != 0x59) RETURN(BZ_DATA_ERROR);
+
+      s->currBlockNo++;
+      if (s->verbosity >= 2)
+         VPrintf1 ( "\n    [%d: huff+mtf ", s->currBlockNo );
+ 
+      s->storedBlockCRC = 0;
+      GET_UCHAR(BZ_X_BCRC_1, uc);
+      s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
+      GET_UCHAR(BZ_X_BCRC_2, uc);
+      s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
+      GET_UCHAR(BZ_X_BCRC_3, uc);
+      s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
+      GET_UCHAR(BZ_X_BCRC_4, uc);
+      s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
+
+      GET_BITS(BZ_X_RANDBIT, s->blockRandomised, 1);
+
+      s->origPtr = 0;
+      GET_UCHAR(BZ_X_ORIGPTR_1, uc);
+      s->origPtr = (s->origPtr << 8) | ((Int32)uc);
+      GET_UCHAR(BZ_X_ORIGPTR_2, uc);
+      s->origPtr = (s->origPtr << 8) | ((Int32)uc);
+      GET_UCHAR(BZ_X_ORIGPTR_3, uc);
+      s->origPtr = (s->origPtr << 8) | ((Int32)uc);
+
+      if (s->origPtr < 0)
+         RETURN(BZ_DATA_ERROR);
+      if (s->origPtr > 10 + 100000*s->blockSize100k) 
+         RETURN(BZ_DATA_ERROR);
+
+      /*--- Receive the mapping table ---*/
+      for (i = 0; i < 16; i++) {
+         GET_BIT(BZ_X_MAPPING_1, uc);
+         if (uc == 1) 
+            s->inUse16[i] = True; else 
+            s->inUse16[i] = False;
+      }
+
+      for (i = 0; i < 256; i++) s->inUse[i] = False;
+
+      for (i = 0; i < 16; i++)
+         if (s->inUse16[i])
+            for (j = 0; j < 16; j++) {
+               GET_BIT(BZ_X_MAPPING_2, uc);
+               if (uc == 1) s->inUse[i * 16 + j] = True;
+            }
+      makeMaps_d ( s );
+      if (s->nInUse == 0) RETURN(BZ_DATA_ERROR);
+      alphaSize = s->nInUse+2;
+
+      /*--- Now the selectors ---*/
+      GET_BITS(BZ_X_SELECTOR_1, nGroups, 3);
+      if (nGroups < 2 || nGroups > 6) RETURN(BZ_DATA_ERROR);
+      GET_BITS(BZ_X_SELECTOR_2, nSelectors, 15);
+      if (nSelectors < 1) RETURN(BZ_DATA_ERROR);
+      for (i = 0; i < nSelectors; i++) {
+         j = 0;
+         while (True) {
+            GET_BIT(BZ_X_SELECTOR_3, uc);
+            if (uc == 0) break;
+            j++;
+            if (j >= nGroups) RETURN(BZ_DATA_ERROR);
+         }
+         s->selectorMtf[i] = j;
+      }
+
+      /*--- Undo the MTF values for the selectors. ---*/
+      {
+         UChar pos[BZ_N_GROUPS], tmp, v;
+         for (v = 0; v < nGroups; v++) pos[v] = v;
+   
+         for (i = 0; i < nSelectors; i++) {
+            v = s->selectorMtf[i];
+            tmp = pos[v];
+            while (v > 0) { pos[v] = pos[v-1]; v--; }
+            pos[0] = tmp;
+            s->selector[i] = tmp;
+         }
+      }
+
+      /*--- Now the coding tables ---*/
+      for (t = 0; t < nGroups; t++) {
+         GET_BITS(BZ_X_CODING_1, curr, 5);
+         for (i = 0; i < alphaSize; i++) {
+            while (True) {
+               if (curr < 1 || curr > 20) RETURN(BZ_DATA_ERROR);
+               GET_BIT(BZ_X_CODING_2, uc);
+               if (uc == 0) break;
+               GET_BIT(BZ_X_CODING_3, uc);
+               if (uc == 0) curr++; else curr--;
+            }
+            s->len[t][i] = curr;
+         }
+      }
+
+      /*--- Create the Huffman decoding tables ---*/
+      for (t = 0; t < nGroups; t++) {
+         minLen = 32;
+         maxLen = 0;
+         for (i = 0; i < alphaSize; i++) {
+            if (s->len[t][i] > maxLen) maxLen = s->len[t][i];
+            if (s->len[t][i] < minLen) minLen = s->len[t][i];
+         }
+         BZ2_hbCreateDecodeTables ( 
+            &(s->limit[t][0]), 
+            &(s->base[t][0]), 
+            &(s->perm[t][0]), 
+            &(s->len[t][0]),
+            minLen, maxLen, alphaSize
+         );
+         s->minLens[t] = minLen;
+      }
+
+      /*--- Now the MTF values ---*/
+
+      EOB      = s->nInUse+1;
+      nblockMAX = 100000 * s->blockSize100k;
+      groupNo  = -1;
+      groupPos = 0;
+
+      for (i = 0; i <= 255; i++) s->unzftab[i] = 0;
+
+      /*-- MTF init --*/
+      {
+         Int32 ii, jj, kk;
+         kk = MTFA_SIZE-1;
+         for (ii = 256 / MTFL_SIZE - 1; ii >= 0; ii--) {
+            for (jj = MTFL_SIZE-1; jj >= 0; jj--) {
+               s->mtfa[kk] = (UChar)(ii * MTFL_SIZE + jj);
+               kk--;
+            }
+            s->mtfbase[ii] = kk + 1;
+         }
+      }
+      /*-- end MTF init --*/
+
+      nblock = 0;
+      GET_MTF_VAL(BZ_X_MTF_1, BZ_X_MTF_2, nextSym);
+
+      while (True) {
+
+         if (nextSym == EOB) break;
+
+         if (nextSym == BZ_RUNA || nextSym == BZ_RUNB) {
+
+            es = -1;
+            N = 1;
+            do {
+               if (nextSym == BZ_RUNA) es = es + (0+1) * N; else
+               if (nextSym == BZ_RUNB) es = es + (1+1) * N;
+               N = N * 2;
+               GET_MTF_VAL(BZ_X_MTF_3, BZ_X_MTF_4, nextSym);
+            }
+               while (nextSym == BZ_RUNA || nextSym == BZ_RUNB);
+
+            es++;
+            uc = s->seqToUnseq[ s->mtfa[s->mtfbase[0]] ];
+            s->unzftab[uc] += es;
+
+            if (s->smallDecompress)
+               while (es > 0) {
+                  if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR);
+                  s->ll16[nblock] = (UInt16)uc;
+                  nblock++;
+                  es--;
+               }
+            else
+               while (es > 0) {
+                  if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR);
+                  s->tt[nblock] = (UInt32)uc;
+                  nblock++;
+                  es--;
+               };
+
+            continue;
+
+         } else {
+
+            if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR);
+
+            /*-- uc = MTF ( nextSym-1 ) --*/
+            {
+               Int32 ii, jj, kk, pp, lno, off;
+               UInt32 nn;
+               nn = (UInt32)(nextSym - 1);
+
+               if (nn < MTFL_SIZE) {
+                  /* avoid general-case expense */
+                  pp = s->mtfbase[0];
+                  uc = s->mtfa[pp+nn];
+                  while (nn > 3) {
+                     Int32 z = pp+nn;
+                     s->mtfa[(z)  ] = s->mtfa[(z)-1];
+                     s->mtfa[(z)-1] = s->mtfa[(z)-2];
+                     s->mtfa[(z)-2] = s->mtfa[(z)-3];
+                     s->mtfa[(z)-3] = s->mtfa[(z)-4];
+                     nn -= 4;
+                  }
+                  while (nn > 0) { 
+                     s->mtfa[(pp+nn)] = s->mtfa[(pp+nn)-1]; nn--; 
+                  };
+                  s->mtfa[pp] = uc;
+               } else { 
+                  /* general case */
+                  lno = nn / MTFL_SIZE;
+                  off = nn % MTFL_SIZE;
+                  pp = s->mtfbase[lno] + off;
+                  uc = s->mtfa[pp];
+                  while (pp > s->mtfbase[lno]) { 
+                     s->mtfa[pp] = s->mtfa[pp-1]; pp--; 
+                  };
+                  s->mtfbase[lno]++;
+                  while (lno > 0) {
+                     s->mtfbase[lno]--;
+                     s->mtfa[s->mtfbase[lno]] 
+                        = s->mtfa[s->mtfbase[lno-1] + MTFL_SIZE - 1];
+                     lno--;
+                  }
+                  s->mtfbase[0]--;
+                  s->mtfa[s->mtfbase[0]] = uc;
+                  if (s->mtfbase[0] == 0) {
+                     kk = MTFA_SIZE-1;
+                     for (ii = 256 / MTFL_SIZE-1; ii >= 0; ii--) {
+                        for (jj = MTFL_SIZE-1; jj >= 0; jj--) {
+                           s->mtfa[kk] = s->mtfa[s->mtfbase[ii] + jj];
+                           kk--;
+                        }
+                        s->mtfbase[ii] = kk + 1;
+                     }
+                  }
+               }
+            }
+            /*-- end uc = MTF ( nextSym-1 ) --*/
+
+            s->unzftab[s->seqToUnseq[uc]]++;
+            if (s->smallDecompress)
+               s->ll16[nblock] = (UInt16)(s->seqToUnseq[uc]); else
+               s->tt[nblock]   = (UInt32)(s->seqToUnseq[uc]);
+            nblock++;
+
+            GET_MTF_VAL(BZ_X_MTF_5, BZ_X_MTF_6, nextSym);
+            continue;
+         }
+      }
+
+      /* Now we know what nblock is, we can do a better sanity
+         check on s->origPtr.
+      */
+      if (s->origPtr < 0 || s->origPtr >= nblock)
+         RETURN(BZ_DATA_ERROR);
+
+      /*-- Set up cftab to facilitate generation of T^(-1) --*/
+      s->cftab[0] = 0;
+      for (i = 1; i <= 256; i++) s->cftab[i] = s->unzftab[i-1];
+      for (i = 1; i <= 256; i++) s->cftab[i] += s->cftab[i-1];
+      for (i = 0; i <= 256; i++) {
+         if (s->cftab[i] < 0 || s->cftab[i] > nblock) {
+            /* s->cftab[i] can legitimately be == nblock */
+            RETURN(BZ_DATA_ERROR);
+         }
+      }
+
+      s->state_out_len = 0;
+      s->state_out_ch  = 0;
+      BZ_INITIALISE_CRC ( s->calculatedBlockCRC );
+      s->state = BZ_X_OUTPUT;
+      if (s->verbosity >= 2) VPrintf0 ( "rt+rld" );
+
+      if (s->smallDecompress) {
+
+         /*-- Make a copy of cftab, used in generation of T --*/
+         for (i = 0; i <= 256; i++) s->cftabCopy[i] = s->cftab[i];
+
+         /*-- compute the T vector --*/
+         for (i = 0; i < nblock; i++) {
+            uc = (UChar)(s->ll16[i]);
+            SET_LL(i, s->cftabCopy[uc]);
+            s->cftabCopy[uc]++;
+         }
+
+         /*-- Compute T^(-1) by pointer reversal on T --*/
+         i = s->origPtr;
+         j = GET_LL(i);
+         do {
+            Int32 tmp = GET_LL(j);
+            SET_LL(j, i);
+            i = j;
+            j = tmp;
+         }
+            while (i != s->origPtr);
+
+         s->tPos = s->origPtr;
+         s->nblock_used = 0;
+         if (s->blockRandomised) {
+            BZ_RAND_INIT_MASK;
+            BZ_GET_SMALL(s->k0); s->nblock_used++;
+            BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK; 
+         } else {
+            BZ_GET_SMALL(s->k0); s->nblock_used++;
+         }
+
+      } else {
+
+         /*-- compute the T^(-1) vector --*/
+         for (i = 0; i < nblock; i++) {
+            uc = (UChar)(s->tt[i] & 0xff);
+            s->tt[s->cftab[uc]] |= (i << 8);
+            s->cftab[uc]++;
+         }
+
+         s->tPos = s->tt[s->origPtr] >> 8;
+         s->nblock_used = 0;
+         if (s->blockRandomised) {
+            BZ_RAND_INIT_MASK;
+            BZ_GET_FAST(s->k0); s->nblock_used++;
+            BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK; 
+         } else {
+            BZ_GET_FAST(s->k0); s->nblock_used++;
+         }
+
+      }
+
+      RETURN(BZ_OK);
+
+
+
+    endhdr_2:
+
+      GET_UCHAR(BZ_X_ENDHDR_2, uc);
+      if (uc != 0x72) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_ENDHDR_3, uc);
+      if (uc != 0x45) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_ENDHDR_4, uc);
+      if (uc != 0x38) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_ENDHDR_5, uc);
+      if (uc != 0x50) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_ENDHDR_6, uc);
+      if (uc != 0x90) RETURN(BZ_DATA_ERROR);
+
+      s->storedCombinedCRC = 0;
+      GET_UCHAR(BZ_X_CCRC_1, uc);
+      s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
+      GET_UCHAR(BZ_X_CCRC_2, uc);
+      s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
+      GET_UCHAR(BZ_X_CCRC_3, uc);
+      s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
+      GET_UCHAR(BZ_X_CCRC_4, uc);
+      s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
+
+      s->state = BZ_X_IDLE;
+      RETURN(BZ_STREAM_END);
+
+      default: AssertH ( False, 4001 );
+   }
+
+   AssertH ( False, 4002 );
+
+   save_state_and_return:
+
+   s->save_i           = i;
+   s->save_j           = j;
+   s->save_t           = t;
+   s->save_alphaSize   = alphaSize;
+   s->save_nGroups     = nGroups;
+   s->save_nSelectors  = nSelectors;
+   s->save_EOB         = EOB;
+   s->save_groupNo     = groupNo;
+   s->save_groupPos    = groupPos;
+   s->save_nextSym     = nextSym;
+   s->save_nblockMAX   = nblockMAX;
+   s->save_nblock      = nblock;
+   s->save_es          = es;
+   s->save_N           = N;
+   s->save_curr        = curr;
+   s->save_zt          = zt;
+   s->save_zn          = zn;
+   s->save_zvec        = zvec;
+   s->save_zj          = zj;
+   s->save_gSel        = gSel;
+   s->save_gMinlen     = gMinlen;
+   s->save_gLimit      = gLimit;
+   s->save_gBase       = gBase;
+   s->save_gPerm       = gPerm;
+
+   return retVal;   
+}
+
+
+/*-------------------------------------------------------------*/
+/*--- end                                      decompress.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/3party_sloynik/bzip2/decompress.o b/3party_sloynik/bzip2/decompress.o
new file mode 100644
index 0000000000000000000000000000000000000000..49ea251b1f915f45597d322a4b41ae79261e2bf9
GIT binary patch
literal 29720
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≤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
+#include 
+#include "bzlib.h"
+#ifdef _WIN32
+#include 
+#endif
+
+
+#ifdef _WIN32
+
+#define BZ2_LIBNAME "libbz2-1.0.2.DLL" 
+
+#include 
+static int BZ2DLLLoaded = 0;
+static HINSTANCE BZ2DLLhLib;
+int BZ2DLLLoadLibrary(void)
+{
+   HINSTANCE hLib;
+
+   if(BZ2DLLLoaded==1){return 0;}
+   hLib=LoadLibrary(BZ2_LIBNAME);
+   if(hLib == NULL){
+      fprintf(stderr,"Can't load %s\n",BZ2_LIBNAME);
+      return -1;
+   }
+   BZ2_bzlibVersion=GetProcAddress(hLib,"BZ2_bzlibVersion");
+   BZ2_bzopen=GetProcAddress(hLib,"BZ2_bzopen");
+   BZ2_bzdopen=GetProcAddress(hLib,"BZ2_bzdopen");
+   BZ2_bzread=GetProcAddress(hLib,"BZ2_bzread");
+   BZ2_bzwrite=GetProcAddress(hLib,"BZ2_bzwrite");
+   BZ2_bzflush=GetProcAddress(hLib,"BZ2_bzflush");
+   BZ2_bzclose=GetProcAddress(hLib,"BZ2_bzclose");
+   BZ2_bzerror=GetProcAddress(hLib,"BZ2_bzerror");
+
+   if (!BZ2_bzlibVersion || !BZ2_bzopen || !BZ2_bzdopen
+       || !BZ2_bzread || !BZ2_bzwrite || !BZ2_bzflush
+       || !BZ2_bzclose || !BZ2_bzerror) {
+      fprintf(stderr,"GetProcAddress failed.\n");
+      return -1;
+   }
+   BZ2DLLLoaded=1;
+   BZ2DLLhLib=hLib;
+   return 0;
+
+}
+int BZ2DLLFreeLibrary(void)
+{
+   if(BZ2DLLLoaded==0){return 0;}
+   FreeLibrary(BZ2DLLhLib);
+   BZ2DLLLoaded=0;
+}
+#endif /* WIN32 */
+
+void usage(void)
+{
+   puts("usage: minibz2 [-d] [-{1,2,..9}] [[srcfilename] destfilename]");
+}
+
+int main(int argc,char *argv[])
+{
+   int decompress = 0;
+   int level = 9;
+   char *fn_r = NULL;
+   char *fn_w = NULL;
+
+#ifdef _WIN32
+   if(BZ2DLLLoadLibrary()<0){
+      fprintf(stderr,"Loading of %s failed.  Giving up.\n", BZ2_LIBNAME);
+      exit(1);
+   }
+   printf("Loading of %s succeeded.  Library version is %s.\n",
+          BZ2_LIBNAME, BZ2_bzlibVersion() );
+#endif
+   while(++argv,--argc){
+      if(**argv =='-' || **argv=='/'){
+         char *p;
+
+         for(p=*argv+1;*p;p++){
+            if(*p=='d'){
+               decompress = 1;
+            }else if('1'<=*p && *p<='9'){
+               level = *p - '0';
+            }else{
+               usage();
+               exit(1);
+            }
+         }
+      }else{
+         break;
+      }
+   }
+   if(argc>=1){
+      fn_r = *argv;
+      argc--;argv++;
+   }else{
+      fn_r = NULL;
+   }
+   if(argc>=1){
+      fn_w = *argv;
+      argc--;argv++;
+   }else{
+      fn_w = NULL;
+   }
+   {
+      int len;
+      char buff[0x1000];
+      char mode[10];
+
+      if(decompress){
+         BZFILE *BZ2fp_r = NULL;
+         FILE *fp_w = NULL;
+
+         if(fn_w){
+            if((fp_w = fopen(fn_w,"wb"))==NULL){
+               printf("can't open [%s]\n",fn_w);
+               perror("reason:");
+               exit(1);
+            }
+         }else{
+            fp_w = stdout;
+         }
+         if((fn_r == NULL && (BZ2fp_r = BZ2_bzdopen(fileno(stdin),"rb"))==NULL)
+            || (fn_r != NULL && (BZ2fp_r = BZ2_bzopen(fn_r,"rb"))==NULL)){
+            printf("can't bz2openstream\n");
+            exit(1);
+         }
+         while((len=BZ2_bzread(BZ2fp_r,buff,0x1000))>0){
+            fwrite(buff,1,len,fp_w);
+         }
+         BZ2_bzclose(BZ2fp_r);
+         if(fp_w != stdout) fclose(fp_w);
+      }else{
+         BZFILE *BZ2fp_w = NULL;
+         FILE *fp_r = NULL;
+
+         if(fn_r){
+            if((fp_r = fopen(fn_r,"rb"))==NULL){
+               printf("can't open [%s]\n",fn_r);
+               perror("reason:");
+               exit(1);
+            }
+         }else{
+            fp_r = stdin;
+         }
+         mode[0]='w';
+         mode[1] = '0' + level;
+         mode[2] = '\0';
+
+         if((fn_w == NULL && (BZ2fp_w = BZ2_bzdopen(fileno(stdout),mode))==NULL)
+            || (fn_w !=NULL && (BZ2fp_w = BZ2_bzopen(fn_w,mode))==NULL)){
+            printf("can't bz2openstream\n");
+            exit(1);
+         }
+         while((len=fread(buff,1,0x1000,fp_r))>0){
+            BZ2_bzwrite(BZ2fp_w,buff,len);
+         }
+         BZ2_bzclose(BZ2fp_w);
+         if(fp_r!=stdin)fclose(fp_r);
+      }
+   }
+#ifdef _WIN32
+   BZ2DLLFreeLibrary();
+#endif
+   return 0;
+}
diff --git a/3party_sloynik/bzip2/dlltest.dsp b/3party_sloynik/bzip2/dlltest.dsp
new file mode 100644
index 0000000000..04819a4956
--- /dev/null
+++ b/3party_sloynik/bzip2/dlltest.dsp
@@ -0,0 +1,93 @@
+# Microsoft Developer Studio Project File - Name="dlltest" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# ** •ÒW‚µ‚È‚¢‚Å‚­‚¾‚³‚¢ **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=dlltest - Win32 Debug
+!MESSAGE ‚±‚ê‚Í—LŒø‚ÈÒ²¸Ì§²Ù‚Å‚Í‚ ‚è‚Ü‚¹‚ñB ‚±‚ÌÌßÛ¼Þª¸Ä‚ðËÞÙÄÞ‚·‚邽‚ß‚É‚Í NMAKE ‚ðŽg—p‚µ‚Ä‚­‚¾‚³‚¢B
+!MESSAGE [Ò²¸Ì§²Ù‚Ì´¸½Îß°Ä] ºÏÝÄÞ‚ðŽg—p‚µ‚ÄŽÀs‚µ‚Ä‚­‚¾‚³‚¢
+!MESSAGE 
+!MESSAGE NMAKE /f "dlltest.mak".
+!MESSAGE 
+!MESSAGE NMAKE ‚ÌŽÀsŽž‚É\¬‚ðŽw’è‚Å‚«‚Ü‚·
+!MESSAGE ºÏÝÄÞ ×²Ýã‚ÅϸۂÌÝ’è‚ð’è‹`‚µ‚Ü‚·B—á:
+!MESSAGE 
+!MESSAGE NMAKE /f "dlltest.mak" CFG="dlltest - Win32 Debug"
+!MESSAGE 
+!MESSAGE ‘I‘ð‰Â”\‚ÈËÞÙÄÞ Ó°ÄÞ:
+!MESSAGE 
+!MESSAGE "dlltest - Win32 Release" ("Win32 (x86) Console Application" —p)
+!MESSAGE "dlltest - Win32 Debug" ("Win32 (x86) Console Application" —p)
+!MESSAGE 
+
+# Begin Project
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "dlltest - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x411 /d "NDEBUG"
+# ADD RSC /l 0x411 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"minibz2.exe"
+
+!ELSEIF  "$(CFG)" == "dlltest - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "dlltest_"
+# PROP BASE Intermediate_Dir "dlltest_"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "dlltest_"
+# PROP Intermediate_Dir "dlltest_"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x411 /d "_DEBUG"
+# ADD RSC /l 0x411 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"minibz2.exe" /pdbtype:sept
+
+!ENDIF 
+
+# Begin Target
+
+# Name "dlltest - Win32 Release"
+# Name "dlltest - Win32 Debug"
+# Begin Source File
+
+SOURCE=.\bzlib.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\dlltest.c
+# End Source File
+# End Target
+# End Project
diff --git a/3party_sloynik/bzip2/entities.xml b/3party_sloynik/bzip2/entities.xml
new file mode 100644
index 0000000000..e9e0553b7d
--- /dev/null
+++ b/3party_sloynik/bzip2/entities.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/3party_sloynik/bzip2/format.pl b/3party_sloynik/bzip2/format.pl
new file mode 100644
index 0000000000..1928d15739
--- /dev/null
+++ b/3party_sloynik/bzip2/format.pl
@@ -0,0 +1,68 @@
+#!/usr/bin/perl -w
+#
+# ------------------------------------------------------------------
+# This file is part of bzip2/libbzip2, a program and library for
+# lossless, block-sorting data compression.
+#
+# bzip2/libbzip2 version 1.0.5 of 10 December 2007
+# Copyright (C) 1996-2007 Julian Seward 
+#
+# Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+# README file.
+#
+# This program is released under the terms of the license contained
+# in the file LICENSE.
+# ------------------------------------------------------------------
+#
+use strict;
+
+# get command line values:
+if ( $#ARGV !=1 ) {
+    die "Usage:  $0 xml_infile xml_outfile\n";
+}
+
+my $infile = shift;
+# check infile exists
+die "Can't find file \"$infile\""
+  unless -f $infile;
+# check we can read infile
+if (! -r $infile) {
+    die "Can't read input $infile\n";
+}
+# check we can open infile
+open( INFILE,"<$infile" ) or 
+    die "Can't input $infile $!";
+
+#my $outfile = 'fmt-manual.xml';
+my $outfile = shift;
+#print "Infile: $infile, Outfile: $outfile\n";
+# check we can write to outfile
+open( OUTFILE,">$outfile" ) or 
+    die "Can't output $outfile $! for writing";
+
+my ($prev, $curr, $str);
+$prev = ''; $curr = '';
+while (  ) {
+
+		print OUTFILE $prev;
+    $prev = $curr;
+    $curr = $_;
+    $str = '';
+
+    if ( $prev =~ /$|$/ ) {
+        chomp $prev;
+        $curr = join( '', $prev, "|<\/screen>/ ) {
+        chomp $prev;
+        $curr = join( '', $prev, "]]>", $curr );
+				$prev = '';
+        next;
+    }
+}
+print OUTFILE $curr;
+close INFILE;
+close OUTFILE;
+exit;
diff --git a/3party_sloynik/bzip2/huffman.c b/3party_sloynik/bzip2/huffman.c
new file mode 100644
index 0000000000..87e79e38af
--- /dev/null
+++ b/3party_sloynik/bzip2/huffman.c
@@ -0,0 +1,205 @@
+
+/*-------------------------------------------------------------*/
+/*--- Huffman coding low-level stuff                        ---*/
+/*---                                             huffman.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.5 of 10 December 2007
+   Copyright (C) 1996-2007 Julian Seward 
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+#include "bzlib_private.h"
+
+/*---------------------------------------------------*/
+#define WEIGHTOF(zz0)  ((zz0) & 0xffffff00)
+#define DEPTHOF(zz1)   ((zz1) & 0x000000ff)
+#define MYMAX(zz2,zz3) ((zz2) > (zz3) ? (zz2) : (zz3))
+
+#define ADDWEIGHTS(zw1,zw2)                           \
+   (WEIGHTOF(zw1)+WEIGHTOF(zw2)) |                    \
+   (1 + MYMAX(DEPTHOF(zw1),DEPTHOF(zw2)))
+
+#define UPHEAP(z)                                     \
+{                                                     \
+   Int32 zz, tmp;                                     \
+   zz = z; tmp = heap[zz];                            \
+   while (weight[tmp] < weight[heap[zz >> 1]]) {      \
+      heap[zz] = heap[zz >> 1];                       \
+      zz >>= 1;                                       \
+   }                                                  \
+   heap[zz] = tmp;                                    \
+}
+
+#define DOWNHEAP(z)                                   \
+{                                                     \
+   Int32 zz, yy, tmp;                                 \
+   zz = z; tmp = heap[zz];                            \
+   while (True) {                                     \
+      yy = zz << 1;                                   \
+      if (yy > nHeap) break;                          \
+      if (yy < nHeap &&                               \
+          weight[heap[yy+1]] < weight[heap[yy]])      \
+         yy++;                                        \
+      if (weight[tmp] < weight[heap[yy]]) break;      \
+      heap[zz] = heap[yy];                            \
+      zz = yy;                                        \
+   }                                                  \
+   heap[zz] = tmp;                                    \
+}
+
+
+/*---------------------------------------------------*/
+void BZ2_hbMakeCodeLengths ( UChar *len, 
+                             Int32 *freq,
+                             Int32 alphaSize,
+                             Int32 maxLen )
+{
+   /*--
+      Nodes and heap entries run from 1.  Entry 0
+      for both the heap and nodes is a sentinel.
+   --*/
+   Int32 nNodes, nHeap, n1, n2, i, j, k;
+   Bool  tooLong;
+
+   Int32 heap   [ BZ_MAX_ALPHA_SIZE + 2 ];
+   Int32 weight [ BZ_MAX_ALPHA_SIZE * 2 ];
+   Int32 parent [ BZ_MAX_ALPHA_SIZE * 2 ]; 
+
+   for (i = 0; i < alphaSize; i++)
+      weight[i+1] = (freq[i] == 0 ? 1 : freq[i]) << 8;
+
+   while (True) {
+
+      nNodes = alphaSize;
+      nHeap = 0;
+
+      heap[0] = 0;
+      weight[0] = 0;
+      parent[0] = -2;
+
+      for (i = 1; i <= alphaSize; i++) {
+         parent[i] = -1;
+         nHeap++;
+         heap[nHeap] = i;
+         UPHEAP(nHeap);
+      }
+
+      AssertH( nHeap < (BZ_MAX_ALPHA_SIZE+2), 2001 );
+   
+      while (nHeap > 1) {
+         n1 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1);
+         n2 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1);
+         nNodes++;
+         parent[n1] = parent[n2] = nNodes;
+         weight[nNodes] = ADDWEIGHTS(weight[n1], weight[n2]);
+         parent[nNodes] = -1;
+         nHeap++;
+         heap[nHeap] = nNodes;
+         UPHEAP(nHeap);
+      }
+
+      AssertH( nNodes < (BZ_MAX_ALPHA_SIZE * 2), 2002 );
+
+      tooLong = False;
+      for (i = 1; i <= alphaSize; i++) {
+         j = 0;
+         k = i;
+         while (parent[k] >= 0) { k = parent[k]; j++; }
+         len[i-1] = j;
+         if (j > maxLen) tooLong = True;
+      }
+      
+      if (! tooLong) break;
+
+      /* 17 Oct 04: keep-going condition for the following loop used
+         to be 'i < alphaSize', which missed the last element,
+         theoretically leading to the possibility of the compressor
+         looping.  However, this count-scaling step is only needed if
+         one of the generated Huffman code words is longer than
+         maxLen, which up to and including version 1.0.2 was 20 bits,
+         which is extremely unlikely.  In version 1.0.3 maxLen was
+         changed to 17 bits, which has minimal effect on compression
+         ratio, but does mean this scaling step is used from time to
+         time, enough to verify that it works.
+
+         This means that bzip2-1.0.3 and later will only produce
+         Huffman codes with a maximum length of 17 bits.  However, in
+         order to preserve backwards compatibility with bitstreams
+         produced by versions pre-1.0.3, the decompressor must still
+         handle lengths of up to 20. */
+
+      for (i = 1; i <= alphaSize; i++) {
+         j = weight[i] >> 8;
+         j = 1 + (j / 2);
+         weight[i] = j << 8;
+      }
+   }
+}
+
+
+/*---------------------------------------------------*/
+void BZ2_hbAssignCodes ( Int32 *code,
+                         UChar *length,
+                         Int32 minLen,
+                         Int32 maxLen,
+                         Int32 alphaSize )
+{
+   Int32 n, vec, i;
+
+   vec = 0;
+   for (n = minLen; n <= maxLen; n++) {
+      for (i = 0; i < alphaSize; i++)
+         if (length[i] == n) { code[i] = vec; vec++; };
+      vec <<= 1;
+   }
+}
+
+
+/*---------------------------------------------------*/
+void BZ2_hbCreateDecodeTables ( Int32 *limit,
+                                Int32 *base,
+                                Int32 *perm,
+                                UChar *length,
+                                Int32 minLen,
+                                Int32 maxLen,
+                                Int32 alphaSize )
+{
+   Int32 pp, i, j, vec;
+
+   pp = 0;
+   for (i = minLen; i <= maxLen; i++)
+      for (j = 0; j < alphaSize; j++)
+         if (length[j] == i) { perm[pp] = j; pp++; };
+
+   for (i = 0; i < BZ_MAX_CODE_LEN; i++) base[i] = 0;
+   for (i = 0; i < alphaSize; i++) base[length[i]+1]++;
+
+   for (i = 1; i < BZ_MAX_CODE_LEN; i++) base[i] += base[i-1];
+
+   for (i = 0; i < BZ_MAX_CODE_LEN; i++) limit[i] = 0;
+   vec = 0;
+
+   for (i = minLen; i <= maxLen; i++) {
+      vec += (base[i+1] - base[i]);
+      limit[i] = vec-1;
+      vec <<= 1;
+   }
+   for (i = minLen + 1; i <= maxLen; i++)
+      base[i] = ((limit[i-1] + 1) << 1) - base[i];
+}
+
+
+/*-------------------------------------------------------------*/
+/*--- end                                         huffman.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/3party_sloynik/bzip2/huffman.o b/3party_sloynik/bzip2/huffman.o
new file mode 100644
index 0000000000000000000000000000000000000000..655ef10f662edc8a9839a560b0ed6a576ce44983
GIT binary patch
literal 6492
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

literal 0
HcmV?d00001

diff --git a/3party_sloynik/bzip2/impure.c b/3party_sloynik/bzip2/impure.c
new file mode 100644
index 0000000000..a51529f308
--- /dev/null
+++ b/3party_sloynik/bzip2/impure.c
@@ -0,0 +1,18 @@
+#ifdef OMIM_OS_BADA
+
+#include 
+
+/* Note that there is a copy of this in sys/reent.h.  */
+#ifndef __ATTRIBUTE_IMPURE_PTR__
+#define __ATTRIBUTE_IMPURE_PTR__
+#endif
+
+#ifndef __ATTRIBUTE_IMPURE_DATA__
+#define __ATTRIBUTE_IMPURE_DATA__
+#endif
+
+struct _reent __ATTRIBUTE_IMPURE_DATA__ _impure_data = _REENT_INIT(_impure_data);
+struct _reent *__ATTRIBUTE_IMPURE_PTR__ _impure_ptr = &_impure_data;
+struct _reent *_CONST __ATTRIBUTE_IMPURE_PTR__ _global_impure_ptr = &_impure_data;
+
+#endif
\ No newline at end of file
diff --git a/3party_sloynik/bzip2/libbz2.def b/3party_sloynik/bzip2/libbz2.def
new file mode 100644
index 0000000000..4f83fcc610
--- /dev/null
+++ b/3party_sloynik/bzip2/libbz2.def
@@ -0,0 +1,27 @@
+LIBRARY			LIBBZ2
+DESCRIPTION		"libbzip2: library for data compression"
+EXPORTS
+	BZ2_bzCompressInit
+	BZ2_bzCompress
+	BZ2_bzCompressEnd
+	BZ2_bzDecompressInit
+	BZ2_bzDecompress
+	BZ2_bzDecompressEnd
+	BZ2_bzReadOpen
+	BZ2_bzReadClose
+	BZ2_bzReadGetUnused
+	BZ2_bzRead
+	BZ2_bzWriteOpen
+	BZ2_bzWrite
+	BZ2_bzWriteClose
+	BZ2_bzWriteClose64
+	BZ2_bzBuffToBuffCompress
+	BZ2_bzBuffToBuffDecompress
+	BZ2_bzlibVersion
+	BZ2_bzopen
+	BZ2_bzdopen
+	BZ2_bzread
+	BZ2_bzwrite
+	BZ2_bzflush
+	BZ2_bzclose
+	BZ2_bzerror
diff --git a/3party_sloynik/bzip2/libbz2.dsp b/3party_sloynik/bzip2/libbz2.dsp
new file mode 100644
index 0000000000..06c1d37625
--- /dev/null
+++ b/3party_sloynik/bzip2/libbz2.dsp
@@ -0,0 +1,130 @@
+# Microsoft Developer Studio Project File - Name="libbz2" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# ** •ÒW‚µ‚È‚¢‚Å‚­‚¾‚³‚¢ **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=libbz2 - Win32 Debug
+!MESSAGE ‚±‚ê‚Í—LŒø‚ÈÒ²¸Ì§²Ù‚Å‚Í‚ ‚è‚Ü‚¹‚ñB ‚±‚ÌÌßÛ¼Þª¸Ä‚ðËÞÙÄÞ‚·‚邽‚ß‚É‚Í NMAKE ‚ðŽg—p‚µ‚Ä‚­‚¾‚³‚¢B
+!MESSAGE [Ò²¸Ì§²Ù‚Ì´¸½Îß°Ä] ºÏÝÄÞ‚ðŽg—p‚µ‚ÄŽÀs‚µ‚Ä‚­‚¾‚³‚¢
+!MESSAGE 
+!MESSAGE NMAKE /f "libbz2.mak".
+!MESSAGE 
+!MESSAGE NMAKE ‚ÌŽÀsŽž‚É\¬‚ðŽw’è‚Å‚«‚Ü‚·
+!MESSAGE ºÏÝÄÞ ×²Ýã‚ÅϸۂÌÝ’è‚ð’è‹`‚µ‚Ü‚·B—á:
+!MESSAGE 
+!MESSAGE NMAKE /f "libbz2.mak" CFG="libbz2 - Win32 Debug"
+!MESSAGE 
+!MESSAGE ‘I‘ð‰Â”\‚ÈËÞÙÄÞ Ó°ÄÞ:
+!MESSAGE 
+!MESSAGE "libbz2 - Win32 Release" ("Win32 (x86) Dynamic-Link Library" —p)
+!MESSAGE "libbz2 - Win32 Debug" ("Win32 (x86) Dynamic-Link Library" —p)
+!MESSAGE 
+
+# Begin Project
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "libbz2 - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
+# ADD BASE RSC /l 0x411 /d "NDEBUG"
+# ADD RSC /l 0x411 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 /out:"libbz2.dll"
+
+!ELSEIF  "$(CFG)" == "libbz2 - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
+# ADD BASE RSC /l 0x411 /d "_DEBUG"
+# ADD RSC /l 0x411 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"libbz2.dll" /pdbtype:sept
+
+!ENDIF 
+
+# Begin Target
+
+# Name "libbz2 - Win32 Release"
+# Name "libbz2 - Win32 Debug"
+# Begin Source File
+
+SOURCE=.\blocksort.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\bzlib.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\bzlib.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\bzlib_private.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\compress.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\crctable.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\decompress.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\huffman.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\libbz2.def
+# End Source File
+# Begin Source File
+
+SOURCE=.\randtable.c
+# End Source File
+# End Target
+# End Project
diff --git a/3party_sloynik/bzip2/makefile.msc b/3party_sloynik/bzip2/makefile.msc
new file mode 100644
index 0000000000..6a628a753a
--- /dev/null
+++ b/3party_sloynik/bzip2/makefile.msc
@@ -0,0 +1,63 @@
+# Makefile for Microsoft Visual C++ 6.0
+# usage: nmake -f makefile.msc
+# K.M. Syring (syring@gsf.de)
+# Fixed up by JRS for bzip2-0.9.5d release.
+
+CC=cl
+CFLAGS= -DWIN32 -MD -Ox -D_FILE_OFFSET_BITS=64 -nologo
+
+OBJS= blocksort.obj  \
+      huffman.obj    \
+      crctable.obj   \
+      randtable.obj  \
+      compress.obj   \
+      decompress.obj \
+      bzlib.obj
+
+all: lib bzip2 test
+
+bzip2: lib
+	$(CC) $(CFLAGS) -o bzip2 bzip2.c libbz2.lib setargv.obj
+	$(CC) $(CFLAGS) -o bzip2recover bzip2recover.c
+
+lib: $(OBJS)
+	lib /out:libbz2.lib $(OBJS)
+
+test: bzip2
+	type words1
+	.\\bzip2 -1  < sample1.ref > sample1.rb2
+	.\\bzip2 -2  < sample2.ref > sample2.rb2
+	.\\bzip2 -3  < sample3.ref > sample3.rb2
+	.\\bzip2 -d  < sample1.bz2 > sample1.tst
+	.\\bzip2 -d  < sample2.bz2 > sample2.tst
+	.\\bzip2 -ds < sample3.bz2 > sample3.tst
+	@echo All six of the fc's should find no differences.
+	@echo If fc finds an error on sample3.bz2, this could be
+	@echo because WinZip's 'TAR file smart CR/LF conversion'
+	@echo is too clever for its own good.  Disable this option.
+	@echo The correct size for sample3.ref is 120,244.  If it
+	@echo is 150,251, WinZip has messed it up.
+	fc sample1.bz2 sample1.rb2 
+	fc sample2.bz2 sample2.rb2
+	fc sample3.bz2 sample3.rb2
+	fc sample1.tst sample1.ref
+	fc sample2.tst sample2.ref
+	fc sample3.tst sample3.ref
+
+
+
+clean: 
+	del *.obj
+	del libbz2.lib 
+	del bzip2.exe
+	del bzip2recover.exe
+	del sample1.rb2 
+	del sample2.rb2 
+	del sample3.rb2
+	del sample1.tst 
+	del sample2.tst
+	del sample3.tst
+
+.c.obj: 
+	$(CC) $(CFLAGS) -c $*.c -o $*.obj
+
diff --git a/3party_sloynik/bzip2/manual.html b/3party_sloynik/bzip2/manual.html
new file mode 100644
index 0000000000..bd9eac8591
--- /dev/null
+++ b/3party_sloynik/bzip2/manual.html
@@ -0,0 +1,2540 @@
+
+
+
+bzip2 and libbzip2, version 1.0.5
+
+
+
+
+
+
+

+bzip2 and libbzip2, version 1.0.5

+

A program and library for data compression

+
+

+Julian Seward +

+
http://www.bzip.org
+
+

Version 1.0.5 of 10 December 2007

+
+
+

This program, bzip2, the + associated library libbzip2, and + all documentation, are copyright © 1996-2007 Julian Seward. + All rights reserved.

+

Redistribution and use in source and binary forms, with + or without modification, are permitted provided that the + following conditions are met:

+
    +
  • Redistributions of source code must retain the + above copyright notice, this list of conditions and the + following disclaimer.

  • +
  • The origin of this software must not be + misrepresented; you must not claim that you wrote the original + software. If you use this software in a product, an + acknowledgment in the product documentation would be + appreciated but is not required.

  • +
  • Altered source versions must be plainly marked + as such, and must not be misrepresented as being the original + software.

  • +
  • The name of the author may not be used to + endorse or promote products derived from this software without + specific prior written permission.

  • +
+

THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE.

+

PATENTS: To the best of my knowledge, + bzip2 and + libbzip2 do not use any patented + algorithms. However, I do not have the resources to carry + out a patent search. Therefore I cannot give any guarantee of + the above statement. +

+
+
+
+
+ +
+

+1. Introduction

+

bzip2 compresses files +using the Burrows-Wheeler block-sorting text compression +algorithm, and Huffman coding. Compression is generally +considerably better than that achieved by more conventional +LZ77/LZ78-based compressors, and approaches the performance of +the PPM family of statistical compressors.

+

bzip2 is built on top of +libbzip2, a flexible library for +handling compressed data in the +bzip2 format. This manual +describes both how to use the program and how to work with the +library interface. Most of the manual is devoted to this +library, not the program, which is good news if your interest is +only in the program.

+
    +
  • How to use bzip2 describes how to use + bzip2; this is the only part + you need to read if you just want to know how to operate the + program.

  • +
  • Programming with libbzip2 describes the + programming interfaces in detail, and

  • +
  • Miscellanea records some + miscellaneous notes which I thought ought to be recorded + somewhere.

  • +
+
+
+

+2. How to use bzip2

+ +

This chapter contains a copy of the +bzip2 man page, and nothing +else.

+
+

+2.1. NAME

+
    +
  • bzip2, + bunzip2 - a block-sorting file + compressor, v1.0.4

  • +
  • bzcat - + decompresses files to stdout

  • +
  • bzip2recover - + recovers data from damaged bzip2 files

  • +
+
+
+

+2.2. SYNOPSIS

+
    +
  • bzip2 [ + -cdfkqstvzVL123456789 ] [ filenames ... ]

  • +
  • bunzip2 [ + -fkvsVL ] [ filenames ... ]

  • +
  • bzcat [ -s ] [ + filenames ... ]

  • +
  • bzip2recover + filename

  • +
+
+
+

+2.3. DESCRIPTION

+

bzip2 compresses files +using the Burrows-Wheeler block sorting text compression +algorithm, and Huffman coding. Compression is generally +considerably better than that achieved by more conventional +LZ77/LZ78-based compressors, and approaches the performance of +the PPM family of statistical compressors.

+

The command-line options are deliberately very similar to +those of GNU gzip, but they are +not identical.

+

bzip2 expects a list of +file names to accompany the command-line flags. Each file is +replaced by a compressed version of itself, with the name +original_name.bz2. Each +compressed file has the same modification date, permissions, and, +when possible, ownership as the corresponding original, so that +these properties can be correctly restored at decompression time. +File name handling is naive in the sense that there is no +mechanism for preserving original file names, permissions, +ownerships or dates in filesystems which lack these concepts, or +have serious file name length restrictions, such as +MS-DOS.

+

bzip2 and +bunzip2 will by default not +overwrite existing files. If you want this to happen, specify +the -f flag.

+

If no file names are specified, +bzip2 compresses from standard +input to standard output. In this case, +bzip2 will decline to write +compressed output to a terminal, as this would be entirely +incomprehensible and therefore pointless.

+

bunzip2 (or +bzip2 -d) decompresses all +specified files. Files which were not created by +bzip2 will be detected and +ignored, and a warning issued. +bzip2 attempts to guess the +filename for the decompressed file from that of the compressed +file as follows:

+
    +
  • filename.bz2 + becomes + filename

  • +
  • filename.bz + becomes + filename

  • +
  • filename.tbz2 + becomes + filename.tar

  • +
  • filename.tbz + becomes + filename.tar

  • +
  • anyothername + becomes + anyothername.out

  • +
+

If the file does not end in one of the recognised endings, +.bz2, +.bz, +.tbz2 or +.tbz, +bzip2 complains that it cannot +guess the name of the original file, and uses the original name +with .out appended.

+

As with compression, supplying no filenames causes +decompression from standard input to standard output.

+

bunzip2 will correctly +decompress a file which is the concatenation of two or more +compressed files. The result is the concatenation of the +corresponding uncompressed files. Integrity testing +(-t) of concatenated compressed +files is also supported.

+

You can also compress or decompress files to the standard +output by giving the -c flag. +Multiple files may be compressed and decompressed like this. The +resulting outputs are fed sequentially to stdout. Compression of +multiple files in this manner generates a stream containing +multiple compressed file representations. Such a stream can be +decompressed correctly only by +bzip2 version 0.9.0 or later. +Earlier versions of bzip2 will +stop after decompressing the first file in the stream.

+

bzcat (or +bzip2 -dc) decompresses all +specified files to the standard output.

+

bzip2 will read arguments +from the environment variables +BZIP2 and +BZIP, in that order, and will +process them before any arguments read from the command line. +This gives a convenient way to supply default arguments.

+

Compression is always performed, even if the compressed +file is slightly larger than the original. Files of less than +about one hundred bytes tend to get larger, since the compression +mechanism has a constant overhead in the region of 50 bytes. +Random data (including the output of most file compressors) is +coded at about 8.05 bits per byte, giving an expansion of around +0.5%.

+

As a self-check for your protection, +bzip2 uses 32-bit CRCs to make +sure that the decompressed version of a file is identical to the +original. This guards against corruption of the compressed data, +and against undetected bugs in +bzip2 (hopefully very unlikely). +The chances of data corruption going undetected is microscopic, +about one chance in four billion for each file processed. Be +aware, though, that the check occurs upon decompression, so it +can only tell you that something is wrong. It can't help you +recover the original uncompressed data. You can use +bzip2recover to try to recover +data from damaged files.

+

Return values: 0 for a normal exit, 1 for environmental +problems (file not found, invalid flags, I/O errors, etc.), 2 +to indicate a corrupt compressed file, 3 for an internal +consistency error (eg, bug) which caused +bzip2 to panic.

+
+
+

+2.4. OPTIONS

+
+
-c --stdout
+

Compress or decompress to standard + output.

+
-d --decompress
+

Force decompression. + bzip2, + bunzip2 and + bzcat are really the same + program, and the decision about what actions to take is done on + the basis of which name is used. This flag overrides that + mechanism, and forces bzip2 to decompress.

+
-z --compress
+

The complement to + -d: forces compression, + regardless of the invokation name.

+
-t --test
+

Check integrity of the specified file(s), but + don't decompress them. This really performs a trial + decompression and throws away the result.

+
-f --force
+
+

Force overwrite of output files. Normally, + bzip2 will not overwrite + existing output files. Also forces + bzip2 to break hard links to + files, which it otherwise wouldn't do.

+

bzip2 normally declines + to decompress files which don't have the correct magic header + bytes. If forced (-f), + however, it will pass such files through unmodified. This is + how GNU gzip behaves.

+
+
-k --keep
+

Keep (don't delete) input files during + compression or decompression.

+
-s --small
+
+

Reduce memory usage, for compression, + decompression and testing. Files are decompressed and tested + using a modified algorithm which only requires 2.5 bytes per + block byte. This means any file can be decompressed in 2300k + of memory, albeit at about half the normal speed.

+

During compression, -s + selects a block size of 200k, which limits memory use to around + the same figure, at the expense of your compression ratio. In + short, if your machine is low on memory (8 megabytes or less), + use -s for everything. See + MEMORY MANAGEMENT below.

+
+
-q --quiet
+

Suppress non-essential warning messages. + Messages pertaining to I/O errors and other critical events + will not be suppressed.

+
-v --verbose
+

Verbose mode -- show the compression ratio for + each file processed. Further + -v's increase the verbosity + level, spewing out lots of information which is primarily of + interest for diagnostic purposes.

+
-L --license -V --version
+

Display the software version, license terms and + conditions.

+
-1 (or + --fast) to + -9 (or + -best)
+

Set the block size to 100 k, 200 k ... 900 k + when compressing. Has no effect when decompressing. See MEMORY MANAGEMENT below. The + --fast and + --best aliases are primarily + for GNU gzip compatibility. + In particular, --fast doesn't + make things significantly faster. And + --best merely selects the + default behaviour.

+
--
+

Treats all subsequent arguments as file names, + even if they start with a dash. This is so you can handle + files with names beginning with a dash, for example: + bzip2 -- + -myfilename.

+
+--repetitive-fast, --repetitive-best +
+

These flags are redundant in versions 0.9.5 and + above. They provided some coarse control over the behaviour of + the sorting algorithm in earlier versions, which was sometimes + useful. 0.9.5 and above have an improved algorithm which + renders these flags irrelevant.

+
+
+
+

+2.5. MEMORY MANAGEMENT

+

bzip2 compresses large +files in blocks. The block size affects both the compression +ratio achieved, and the amount of memory needed for compression +and decompression. The flags -1 +through -9 specify the block +size to be 100,000 bytes through 900,000 bytes (the default) +respectively. At decompression time, the block size used for +compression is read from the header of the compressed file, and +bunzip2 then allocates itself +just enough memory to decompress the file. Since block sizes are +stored in compressed files, it follows that the flags +-1 to +-9 are irrelevant to and so +ignored during decompression.

+

Compression and decompression requirements, in bytes, can be +estimated as:

+
Compression:   400k + ( 8 x block size )
+
+Decompression: 100k + ( 4 x block size ), or
+               100k + ( 2.5 x block size )
+

Larger block sizes give rapidly diminishing marginal +returns. Most of the compression comes from the first two or +three hundred k of block size, a fact worth bearing in mind when +using bzip2 on small machines. +It is also important to appreciate that the decompression memory +requirement is set at compression time by the choice of block +size.

+

For files compressed with the default 900k block size, +bunzip2 will require about 3700 +kbytes to decompress. To support decompression of any file on a +4 megabyte machine, bunzip2 has +an option to decompress using approximately half this amount of +memory, about 2300 kbytes. Decompression speed is also halved, +so you should use this option only where necessary. The relevant +flag is -s.

+

In general, try and use the largest block size memory +constraints allow, since that maximises the compression achieved. +Compression and decompression speed are virtually unaffected by +block size.

+

Another significant point applies to files which fit in a +single block -- that means most files you'd encounter using a +large block size. The amount of real memory touched is +proportional to the size of the file, since the file is smaller +than a block. For example, compressing a file 20,000 bytes long +with the flag -9 will cause the +compressor to allocate around 7600k of memory, but only touch +400k + 20000 * 8 = 560 kbytes of it. Similarly, the decompressor +will allocate 3700k but only touch 100k + 20000 * 4 = 180 +kbytes.

+

Here is a table which summarises the maximum memory usage +for different block sizes. Also recorded is the total compressed +size for 14 files of the Calgary Text Compression Corpus +totalling 3,141,622 bytes. This column gives some feel for how +compression varies with block size. These figures tend to +understate the advantage of larger block sizes for larger files, +since the Corpus is dominated by smaller files.

+
        Compress   Decompress   Decompress   Corpus
+Flag     usage      usage       -s usage     Size
+
+ -1      1200k       500k         350k      914704
+ -2      2000k       900k         600k      877703
+ -3      2800k      1300k         850k      860338
+ -4      3600k      1700k        1100k      846899
+ -5      4400k      2100k        1350k      845160
+ -6      5200k      2500k        1600k      838626
+ -7      6100k      2900k        1850k      834096
+ -8      6800k      3300k        2100k      828642
+ -9      7600k      3700k        2350k      828642
+
+
+

+2.6. RECOVERING DATA FROM DAMAGED FILES

+

bzip2 compresses files in +blocks, usually 900kbytes long. Each block is handled +independently. If a media or transmission error causes a +multi-block .bz2 file to become +damaged, it may be possible to recover data from the undamaged +blocks in the file.

+

The compressed representation of each block is delimited by +a 48-bit pattern, which makes it possible to find the block +boundaries with reasonable certainty. Each block also carries +its own 32-bit CRC, so damaged blocks can be distinguished from +undamaged ones.

+

bzip2recover is a simple +program whose purpose is to search for blocks in +.bz2 files, and write each block +out into its own .bz2 file. You +can then use bzip2 -t to test +the integrity of the resulting files, and decompress those which +are undamaged.

+

bzip2recover takes a +single argument, the name of the damaged file, and writes a +number of files rec0001file.bz2, +rec0002file.bz2, etc, containing +the extracted blocks. The output filenames are designed so that +the use of wildcards in subsequent processing -- for example, +bzip2 -dc rec*file.bz2 > +recovered_data -- lists the files in the correct +order.

+

bzip2recover should be of +most use dealing with large .bz2 +files, as these will contain many blocks. It is clearly futile +to use it on damaged single-block files, since a damaged block +cannot be recovered. If you wish to minimise any potential data +loss through media or transmission errors, you might consider +compressing with a smaller block size.

+
+
+

+2.7. PERFORMANCE NOTES

+

The sorting phase of compression gathers together similar +strings in the file. Because of this, files containing very long +runs of repeated symbols, like "aabaabaabaab ..." (repeated +several hundred times) may compress more slowly than normal. +Versions 0.9.5 and above fare much better than previous versions +in this respect. The ratio between worst-case and average-case +compression time is in the region of 10:1. For previous +versions, this figure was more like 100:1. You can use the +-vvvv option to monitor progress +in great detail, if you want.

+

Decompression speed is unaffected by these +phenomena.

+

bzip2 usually allocates +several megabytes of memory to operate in, and then charges all +over it in a fairly random fashion. This means that performance, +both for compressing and decompressing, is largely determined by +the speed at which your machine can service cache misses. +Because of this, small changes to the code to reduce the miss +rate have been observed to give disproportionately large +performance improvements. I imagine +bzip2 will perform best on +machines with very large caches.

+
+
+

+2.8. CAVEATS

+

I/O error messages are not as helpful as they could be. +bzip2 tries hard to detect I/O +errors and exit cleanly, but the details of what the problem is +sometimes seem rather misleading.

+

This manual page pertains to version 1.0.5 of +bzip2. Compressed data created by +this version is entirely forwards and backwards compatible with the +previous public releases, versions 0.1pl2, 0.9.0 and 0.9.5, 1.0.0, +1.0.1, 1.0.2 and 1.0.3, but with the following exception: 0.9.0 and +above can correctly decompress multiple concatenated compressed files. +0.1pl2 cannot do this; it will stop after decompressing just the first +file in the stream.

+

bzip2recover versions +prior to 1.0.2 used 32-bit integers to represent bit positions in +compressed files, so it could not handle compressed files more +than 512 megabytes long. Versions 1.0.2 and above use 64-bit ints +on some platforms which support them (GNU supported targets, and +Windows). To establish whether or not +bzip2recover was built with such +a limitation, run it without arguments. In any event you can +build yourself an unlimited version if you can recompile it with +MaybeUInt64 set to be an +unsigned 64-bit integer.

+
+
+

+2.9. AUTHOR

+

Julian Seward, +jseward@bzip.org

+

The ideas embodied in +bzip2 are due to (at least) the +following people: Michael Burrows and David Wheeler (for the +block sorting transformation), David Wheeler (again, for the +Huffman coder), Peter Fenwick (for the structured coding model in +the original bzip, and many +refinements), and Alistair Moffat, Radford Neal and Ian Witten +(for the arithmetic coder in the original +bzip). I am much indebted for +their help, support and advice. See the manual in the source +distribution for pointers to sources of documentation. Christian +von Roques encouraged me to look for faster sorting algorithms, +so as to speed up compression. Bela Lubkin encouraged me to +improve the worst-case compression performance. +Donna Robinson XMLised the documentation. +Many people sent +patches, helped with portability problems, lent machines, gave +advice and were generally helpful.

+
+
+
+

+3.  +Programming with libbzip2 +

+ +

This chapter describes the programming interface to +libbzip2.

+

For general background information, particularly about +memory use and performance aspects, you'd be well advised to read +How to use bzip2 as well.

+
+

+3.1. Top-level structure

+

libbzip2 is a flexible +library for compressing and decompressing data in the +bzip2 data format. Although +packaged as a single entity, it helps to regard the library as +three separate parts: the low level interface, and the high level +interface, and some utility functions.

+

The structure of +libbzip2's interfaces is similar +to that of Jean-loup Gailly's and Mark Adler's excellent +zlib library.

+

All externally visible symbols have names beginning +BZ2_. This is new in version +1.0. The intention is to minimise pollution of the namespaces of +library clients.

+

To use any part of the library, you need to +#include <bzlib.h> +into your sources.

+
+

+3.1.1. Low-level summary

+

This interface provides services for compressing and +decompressing data in memory. There's no provision for dealing +with files, streams or any other I/O mechanisms, just straight +memory-to-memory work. In fact, this part of the library can be +compiled without inclusion of +stdio.h, which may be helpful +for embedded applications.

+

The low-level part of the library has no global variables +and is therefore thread-safe.

+

Six routines make up the low level interface: +BZ2_bzCompressInit, +BZ2_bzCompress, and +BZ2_bzCompressEnd for +compression, and a corresponding trio +BZ2_bzDecompressInit, +BZ2_bzDecompress and +BZ2_bzDecompressEnd for +decompression. The *Init +functions allocate memory for compression/decompression and do +other initialisations, whilst the +*End functions close down +operations and release memory.

+

The real work is done by +BZ2_bzCompress and +BZ2_bzDecompress. These +compress and decompress data from a user-supplied input buffer to +a user-supplied output buffer. These buffers can be any size; +arbitrary quantities of data are handled by making repeated calls +to these functions. This is a flexible mechanism allowing a +consumer-pull style of activity, or producer-push, or a mixture +of both.

+
+
+

+3.1.2. High-level summary

+

This interface provides some handy wrappers around the +low-level interface to facilitate reading and writing +bzip2 format files +(.bz2 files). The routines +provide hooks to facilitate reading files in which the +bzip2 data stream is embedded +within some larger-scale file structure, or where there are +multiple bzip2 data streams +concatenated end-to-end.

+

For reading files, +BZ2_bzReadOpen, +BZ2_bzRead, +BZ2_bzReadClose and +BZ2_bzReadGetUnused are +supplied. For writing files, +BZ2_bzWriteOpen, +BZ2_bzWrite and +BZ2_bzWriteFinish are +available.

+

As with the low-level library, no global variables are used +so the library is per se thread-safe. However, if I/O errors +occur whilst reading or writing the underlying compressed files, +you may have to consult errno to +determine the cause of the error. In that case, you'd need a C +library which correctly supports +errno in a multithreaded +environment.

+

To make the library a little simpler and more portable, +BZ2_bzReadOpen and +BZ2_bzWriteOpen require you to +pass them file handles (FILE*s) +which have previously been opened for reading or writing +respectively. That avoids portability problems associated with +file operations and file attributes, whilst not being much of an +imposition on the programmer.

+
+
+

+3.1.3. Utility functions summary

+

For very simple needs, +BZ2_bzBuffToBuffCompress and +BZ2_bzBuffToBuffDecompress are +provided. These compress data in memory from one buffer to +another buffer in a single function call. You should assess +whether these functions fulfill your memory-to-memory +compression/decompression requirements before investing effort in +understanding the more general but more complex low-level +interface.

+

Yoshioka Tsuneo +(tsuneo@rr.iij4u.or.jp) has +contributed some functions to give better +zlib compatibility. These +functions are BZ2_bzopen, +BZ2_bzread, +BZ2_bzwrite, +BZ2_bzflush, +BZ2_bzclose, +BZ2_bzerror and +BZ2_bzlibVersion. You may find +these functions more convenient for simple file reading and +writing, than those in the high-level interface. These functions +are not (yet) officially part of the library, and are minimally +documented here. If they break, you get to keep all the pieces. +I hope to document them properly when time permits.

+

Yoshioka also contributed modifications to allow the +library to be built as a Windows DLL.

+
+
+
+

+3.2. Error handling

+

The library is designed to recover cleanly in all +situations, including the worst-case situation of decompressing +random data. I'm not 100% sure that it can always do this, so +you might want to add a signal handler to catch segmentation +violations during decompression if you are feeling especially +paranoid. I would be interested in hearing more about the +robustness of the library to corrupted compressed data.

+

Version 1.0.3 more robust in this respect than any +previous version. Investigations with Valgrind (a tool for detecting +problems with memory management) indicate +that, at least for the few files I tested, all single-bit errors +in the decompressed data are caught properly, with no +segmentation faults, no uses of uninitialised data, no out of +range reads or writes, and no infinite looping in the decompressor. +So it's certainly pretty robust, although +I wouldn't claim it to be totally bombproof.

+

The file bzlib.h contains +all definitions needed to use the library. In particular, you +should definitely not include +bzlib_private.h.

+

In bzlib.h, the various +return values are defined. The following list is not intended as +an exhaustive description of the circumstances in which a given +value may be returned -- those descriptions are given later. +Rather, it is intended to convey the rough meaning of each return +value. The first five actions are normal and not intended to +denote an error situation.

+
+
BZ_OK
+

The requested action was completed + successfully.

+
BZ_RUN_OK, BZ_FLUSH_OK, + BZ_FINISH_OK
+

In + BZ2_bzCompress, the requested + flush/finish/nothing-special action was completed + successfully.

+
BZ_STREAM_END
+

Compression of data was completed, or the + logical stream end was detected during + decompression.

+
+

The following return values indicate an error of some +kind.

+
+
BZ_CONFIG_ERROR
+

Indicates that the library has been improperly + compiled on your platform -- a major configuration error. + Specifically, it means that + sizeof(char), + sizeof(short) and + sizeof(int) are not 1, 2 and + 4 respectively, as they should be. Note that the library + should still work properly on 64-bit platforms which follow + the LP64 programming model -- that is, where + sizeof(long) and + sizeof(void*) are 8. Under + LP64, sizeof(int) is still 4, + so libbzip2, which doesn't + use the long type, is + OK.

+
BZ_SEQUENCE_ERROR
+

When using the library, it is important to call + the functions in the correct sequence and with data structures + (buffers etc) in the correct states. + libbzip2 checks as much as it + can to ensure this is happening, and returns + BZ_SEQUENCE_ERROR if not. + Code which complies precisely with the function semantics, as + detailed below, should never receive this value; such an event + denotes buggy code which you should + investigate.

+
BZ_PARAM_ERROR
+

Returned when a parameter to a function call is + out of range or otherwise manifestly incorrect. As with + BZ_SEQUENCE_ERROR, this + denotes a bug in the client code. The distinction between + BZ_PARAM_ERROR and + BZ_SEQUENCE_ERROR is a bit + hazy, but still worth making.

+
BZ_MEM_ERROR
+

Returned when a request to allocate memory + failed. Note that the quantity of memory needed to decompress + a stream cannot be determined until the stream's header has + been read. So + BZ2_bzDecompress and + BZ2_bzRead may return + BZ_MEM_ERROR even though some + of the compressed data has been read. The same is not true + for compression; once + BZ2_bzCompressInit or + BZ2_bzWriteOpen have + successfully completed, + BZ_MEM_ERROR cannot + occur.

+
BZ_DATA_ERROR
+

Returned when a data integrity error is + detected during decompression. Most importantly, this means + when stored and computed CRCs for the data do not match. This + value is also returned upon detection of any other anomaly in + the compressed data.

+
BZ_DATA_ERROR_MAGIC
+

As a special case of + BZ_DATA_ERROR, it is + sometimes useful to know when the compressed stream does not + start with the correct magic bytes ('B' 'Z' + 'h').

+
BZ_IO_ERROR
+

Returned by + BZ2_bzRead and + BZ2_bzWrite when there is an + error reading or writing in the compressed file, and by + BZ2_bzReadOpen and + BZ2_bzWriteOpen for attempts + to use a file for which the error indicator (viz, + ferror(f)) is set. On + receipt of BZ_IO_ERROR, the + caller should consult errno + and/or perror to acquire + operating-system specific information about the + problem.

+
BZ_UNEXPECTED_EOF
+

Returned by + BZ2_bzRead when the + compressed file finishes before the logical end of stream is + detected.

+
BZ_OUTBUFF_FULL
+

Returned by + BZ2_bzBuffToBuffCompress and + BZ2_bzBuffToBuffDecompress to + indicate that the output data will not fit into the output + buffer provided.

+
+
+
+

+3.3. Low-level interface

+
+

+3.3.1. BZ2_bzCompressInit

+
typedef struct {
+  char *next_in;
+  unsigned int avail_in;
+  unsigned int total_in_lo32;
+  unsigned int total_in_hi32;
+
+  char *next_out;
+  unsigned int avail_out;
+  unsigned int total_out_lo32;
+  unsigned int total_out_hi32;
+
+  void *state;
+
+  void *(*bzalloc)(void *,int,int);
+  void (*bzfree)(void *,void *);
+  void *opaque;
+} bz_stream;
+
+int BZ2_bzCompressInit ( bz_stream *strm, 
+                         int blockSize100k, 
+                         int verbosity,
+                         int workFactor );
+

Prepares for compression. The +bz_stream structure holds all +data pertaining to the compression activity. A +bz_stream structure should be +allocated and initialised prior to the call. The fields of +bz_stream comprise the entirety +of the user-visible data. state +is a pointer to the private data structures required for +compression.

+

Custom memory allocators are supported, via fields +bzalloc, +bzfree, and +opaque. The value +opaque is passed to as the first +argument to all calls to bzalloc +and bzfree, but is otherwise +ignored by the library. The call bzalloc ( +opaque, n, m ) is expected to return a pointer +p to n * +m bytes of memory, and bzfree ( +opaque, p ) should free that memory.

+

If you don't want to use a custom memory allocator, set +bzalloc, +bzfree and +opaque to +NULL, and the library will then +use the standard malloc / +free routines.

+

Before calling +BZ2_bzCompressInit, fields +bzalloc, +bzfree and +opaque should be filled +appropriately, as just described. Upon return, the internal +state will have been allocated and initialised, and +total_in_lo32, +total_in_hi32, +total_out_lo32 and +total_out_hi32 will have been +set to zero. These four fields are used by the library to inform +the caller of the total amount of data passed into and out of the +library, respectively. You should not try to change them. As of +version 1.0, 64-bit counts are maintained, even on 32-bit +platforms, using the _hi32 +fields to store the upper 32 bits of the count. So, for example, +the total amount of data in is (total_in_hi32 +<< 32) + total_in_lo32.

+

Parameter blockSize100k +specifies the block size to be used for compression. It should +be a value between 1 and 9 inclusive, and the actual block size +used is 100000 x this figure. 9 gives the best compression but +takes most memory.

+

Parameter verbosity should +be set to a number between 0 and 4 inclusive. 0 is silent, and +greater numbers give increasingly verbose monitoring/debugging +output. If the library has been compiled with +-DBZ_NO_STDIO, no such output +will appear for any verbosity setting.

+

Parameter workFactor +controls how the compression phase behaves when presented with +worst case, highly repetitive, input data. If compression runs +into difficulties caused by repetitive data, the library switches +from the standard sorting algorithm to a fallback algorithm. The +fallback is slower than the standard algorithm by perhaps a +factor of three, but always behaves reasonably, no matter how bad +the input.

+

Lower values of workFactor +reduce the amount of effort the standard algorithm will expend +before resorting to the fallback. You should set this parameter +carefully; too low, and many inputs will be handled by the +fallback algorithm and so compress rather slowly, too high, and +your average-to-worst case compression times can become very +large. The default value of 30 gives reasonable behaviour over a +wide range of circumstances.

+

Allowable values range from 0 to 250 inclusive. 0 is a +special case, equivalent to using the default value of 30.

+

Note that the compressed output generated is the same +regardless of whether or not the fallback algorithm is +used.

+

Be aware also that this parameter may disappear entirely in +future versions of the library. In principle it should be +possible to devise a good way to automatically choose which +algorithm to use. Such a mechanism would render the parameter +obsolete.

+

Possible return values:

+
BZ_CONFIG_ERROR
+  if the library has been mis-compiled
+BZ_PARAM_ERROR
+  if strm is NULL 
+  or blockSize < 1 or blockSize > 9
+  or verbosity < 0 or verbosity > 4
+  or workFactor < 0 or workFactor > 250
+BZ_MEM_ERROR 
+  if not enough memory is available
+BZ_OK 
+  otherwise
+

Allowable next actions:

+
BZ2_bzCompress
+  if BZ_OK is returned
+  no specific action needed in case of error
+
+
+

+3.3.2. BZ2_bzCompress

+
int BZ2_bzCompress ( bz_stream *strm, int action );
+

Provides more input and/or output buffer space for the +library. The caller maintains input and output buffers, and +calls BZ2_bzCompress to transfer +data between them.

+

Before each call to +BZ2_bzCompress, +next_in should point at the data +to be compressed, and avail_in +should indicate how many bytes the library may read. +BZ2_bzCompress updates +next_in, +avail_in and +total_in to reflect the number +of bytes it has read.

+

Similarly, next_out should +point to a buffer in which the compressed data is to be placed, +with avail_out indicating how +much output space is available. +BZ2_bzCompress updates +next_out, +avail_out and +total_out to reflect the number +of bytes output.

+

You may provide and remove as little or as much data as you +like on each call of +BZ2_bzCompress. In the limit, +it is acceptable to supply and remove data one byte at a time, +although this would be terribly inefficient. You should always +ensure that at least one byte of output space is available at +each call.

+

A second purpose of +BZ2_bzCompress is to request a +change of mode of the compressed stream.

+

Conceptually, a compressed stream can be in one of four +states: IDLE, RUNNING, FLUSHING and FINISHING. Before +initialisation +(BZ2_bzCompressInit) and after +termination (BZ2_bzCompressEnd), +a stream is regarded as IDLE.

+

Upon initialisation +(BZ2_bzCompressInit), the stream +is placed in the RUNNING state. Subsequent calls to +BZ2_bzCompress should pass +BZ_RUN as the requested action; +other actions are illegal and will result in +BZ_SEQUENCE_ERROR.

+

At some point, the calling program will have provided all +the input data it wants to. It will then want to finish up -- in +effect, asking the library to process any data it might have +buffered internally. In this state, +BZ2_bzCompress will no longer +attempt to read data from +next_in, but it will want to +write data to next_out. Because +the output buffer supplied by the user can be arbitrarily small, +the finishing-up operation cannot necessarily be done with a +single call of +BZ2_bzCompress.

+

Instead, the calling program passes +BZ_FINISH as an action to +BZ2_bzCompress. This changes +the stream's state to FINISHING. Any remaining input (ie, +next_in[0 .. avail_in-1]) is +compressed and transferred to the output buffer. To do this, +BZ2_bzCompress must be called +repeatedly until all the output has been consumed. At that +point, BZ2_bzCompress returns +BZ_STREAM_END, and the stream's +state is set back to IDLE. +BZ2_bzCompressEnd should then be +called.

+

Just to make sure the calling program does not cheat, the +library makes a note of avail_in +at the time of the first call to +BZ2_bzCompress which has +BZ_FINISH as an action (ie, at +the time the program has announced its intention to not supply +any more input). By comparing this value with that of +avail_in over subsequent calls +to BZ2_bzCompress, the library +can detect any attempts to slip in more data to compress. Any +calls for which this is detected will return +BZ_SEQUENCE_ERROR. This +indicates a programming mistake which should be corrected.

+

Instead of asking to finish, the calling program may ask +BZ2_bzCompress to take all the +remaining input, compress it and terminate the current +(Burrows-Wheeler) compression block. This could be useful for +error control purposes. The mechanism is analogous to that for +finishing: call BZ2_bzCompress +with an action of BZ_FLUSH, +remove output data, and persist with the +BZ_FLUSH action until the value +BZ_RUN is returned. As with +finishing, BZ2_bzCompress +detects any attempt to provide more input data once the flush has +begun.

+

Once the flush is complete, the stream returns to the +normal RUNNING state.

+

This all sounds pretty complex, but isn't really. Here's a +table which shows which actions are allowable in each state, what +action will be taken, what the next state is, and what the +non-error return values are. Note that you can't explicitly ask +what state the stream is in, but nor do you need to -- it can be +inferred from the values returned by +BZ2_bzCompress.

+
IDLE/any
+  Illegal.  IDLE state only exists after BZ2_bzCompressEnd or
+  before BZ2_bzCompressInit.
+  Return value = BZ_SEQUENCE_ERROR
+
+RUNNING/BZ_RUN
+  Compress from next_in to next_out as much as possible.
+  Next state = RUNNING
+  Return value = BZ_RUN_OK
+
+RUNNING/BZ_FLUSH
+  Remember current value of next_in. Compress from next_in
+  to next_out as much as possible, but do not accept any more input.
+  Next state = FLUSHING
+  Return value = BZ_FLUSH_OK
+
+RUNNING/BZ_FINISH
+  Remember current value of next_in. Compress from next_in
+  to next_out as much as possible, but do not accept any more input.
+  Next state = FINISHING
+  Return value = BZ_FINISH_OK
+
+FLUSHING/BZ_FLUSH
+  Compress from next_in to next_out as much as possible, 
+  but do not accept any more input.
+  If all the existing input has been used up and all compressed
+  output has been removed
+    Next state = RUNNING; Return value = BZ_RUN_OK
+  else
+    Next state = FLUSHING; Return value = BZ_FLUSH_OK
+
+FLUSHING/other     
+  Illegal.
+  Return value = BZ_SEQUENCE_ERROR
+
+FINISHING/BZ_FINISH
+  Compress from next_in to next_out as much as possible,
+  but to not accept any more input.  
+  If all the existing input has been used up and all compressed
+  output has been removed
+    Next state = IDLE; Return value = BZ_STREAM_END
+  else
+    Next state = FINISHING; Return value = BZ_FINISH_OK
+
+FINISHING/other
+  Illegal.
+  Return value = BZ_SEQUENCE_ERROR
+

That still looks complicated? Well, fair enough. The +usual sequence of calls for compressing a load of data is:

+
    +
  1. Get started with + BZ2_bzCompressInit.

  2. +
  3. Shovel data in and shlurp out its compressed form + using zero or more calls of + BZ2_bzCompress with action = + BZ_RUN.

  4. +
  5. Finish up. Repeatedly call + BZ2_bzCompress with action = + BZ_FINISH, copying out the + compressed output, until + BZ_STREAM_END is + returned.

  6. +
  7. Close up and go home. Call + BZ2_bzCompressEnd.

  8. +
+

If the data you want to compress fits into your input +buffer all at once, you can skip the calls of +BZ2_bzCompress ( ..., BZ_RUN ) +and just do the BZ2_bzCompress ( ..., BZ_FINISH +) calls.

+

All required memory is allocated by +BZ2_bzCompressInit. The +compression library can accept any data at all (obviously). So +you shouldn't get any error return values from the +BZ2_bzCompress calls. If you +do, they will be +BZ_SEQUENCE_ERROR, and indicate +a bug in your programming.

+

Trivial other possible return values:

+
BZ_PARAM_ERROR
+  if strm is NULL, or strm->s is NULL
+
+
+

+3.3.3. BZ2_bzCompressEnd

+
int BZ2_bzCompressEnd ( bz_stream *strm );
+

Releases all memory associated with a compression +stream.

+

Possible return values:

+
BZ_PARAM_ERROR  if strm is NULL or strm->s is NULL
+BZ_OK           otherwise
+
+
+

+3.3.4. BZ2_bzDecompressInit

+
int BZ2_bzDecompressInit ( bz_stream *strm, int verbosity, int small );
+

Prepares for decompression. As with +BZ2_bzCompressInit, a +bz_stream record should be +allocated and initialised before the call. Fields +bzalloc, +bzfree and +opaque should be set if a custom +memory allocator is required, or made +NULL for the normal +malloc / +free routines. Upon return, the +internal state will have been initialised, and +total_in and +total_out will be zero.

+

For the meaning of parameter +verbosity, see +BZ2_bzCompressInit.

+

If small is nonzero, the +library will use an alternative decompression algorithm which +uses less memory but at the cost of decompressing more slowly +(roughly speaking, half the speed, but the maximum memory +requirement drops to around 2300k). See How to use bzip2 +for more information on memory management.

+

Note that the amount of memory needed to decompress a +stream cannot be determined until the stream's header has been +read, so even if +BZ2_bzDecompressInit succeeds, a +subsequent BZ2_bzDecompress +could fail with +BZ_MEM_ERROR.

+

Possible return values:

+
BZ_CONFIG_ERROR
+  if the library has been mis-compiled
+BZ_PARAM_ERROR
+  if ( small != 0 && small != 1 )
+  or (verbosity <; 0 || verbosity > 4)
+BZ_MEM_ERROR
+  if insufficient memory is available
+

Allowable next actions:

+
BZ2_bzDecompress
+  if BZ_OK was returned
+  no specific action required in case of error
+
+
+

+3.3.5. BZ2_bzDecompress

+
int BZ2_bzDecompress ( bz_stream *strm );
+

Provides more input and/out output buffer space for the +library. The caller maintains input and output buffers, and uses +BZ2_bzDecompress to transfer +data between them.

+

Before each call to +BZ2_bzDecompress, +next_in should point at the +compressed data, and avail_in +should indicate how many bytes the library may read. +BZ2_bzDecompress updates +next_in, +avail_in and +total_in to reflect the number +of bytes it has read.

+

Similarly, next_out should +point to a buffer in which the uncompressed output is to be +placed, with avail_out +indicating how much output space is available. +BZ2_bzCompress updates +next_out, +avail_out and +total_out to reflect the number +of bytes output.

+

You may provide and remove as little or as much data as you +like on each call of +BZ2_bzDecompress. In the limit, +it is acceptable to supply and remove data one byte at a time, +although this would be terribly inefficient. You should always +ensure that at least one byte of output space is available at +each call.

+

Use of BZ2_bzDecompress is +simpler than +BZ2_bzCompress.

+

You should provide input and remove output as described +above, and repeatedly call +BZ2_bzDecompress until +BZ_STREAM_END is returned. +Appearance of BZ_STREAM_END +denotes that BZ2_bzDecompress +has detected the logical end of the compressed stream. +BZ2_bzDecompress will not +produce BZ_STREAM_END until all +output data has been placed into the output buffer, so once +BZ_STREAM_END appears, you are +guaranteed to have available all the decompressed output, and +BZ2_bzDecompressEnd can safely +be called.

+

If case of an error return value, you should call +BZ2_bzDecompressEnd to clean up +and release memory.

+

Possible return values:

+
BZ_PARAM_ERROR
+  if strm is NULL or strm->s is NULL
+  or strm->avail_out < 1
+BZ_DATA_ERROR
+  if a data integrity error is detected in the compressed stream
+BZ_DATA_ERROR_MAGIC
+  if the compressed stream doesn't begin with the right magic bytes
+BZ_MEM_ERROR
+  if there wasn't enough memory available
+BZ_STREAM_END
+  if the logical end of the data stream was detected and all
+  output in has been consumed, eg s-->avail_out > 0
+BZ_OK
+  otherwise
+

Allowable next actions:

+
BZ2_bzDecompress
+  if BZ_OK was returned
+BZ2_bzDecompressEnd
+  otherwise
+
+
+

+3.3.6. BZ2_bzDecompressEnd

+
int BZ2_bzDecompressEnd ( bz_stream *strm );
+

Releases all memory associated with a decompression +stream.

+

Possible return values:

+
BZ_PARAM_ERROR
+  if strm is NULL or strm->s is NULL
+BZ_OK
+  otherwise
+

Allowable next actions:

+
  None.
+
+
+
+

+3.4. High-level interface

+

This interface provides functions for reading and writing +bzip2 format files. First, some +general points.

+
    +
  • All of the functions take an + int* first argument, + bzerror. After each call, + bzerror should be consulted + first to determine the outcome of the call. If + bzerror is + BZ_OK, the call completed + successfully, and only then should the return value of the + function (if any) be consulted. If + bzerror is + BZ_IO_ERROR, there was an + error reading/writing the underlying compressed file, and you + should then consult errno / + perror to determine the cause + of the difficulty. bzerror + may also be set to various other values; precise details are + given on a per-function basis below.

  • +
  • If bzerror indicates + an error (ie, anything except + BZ_OK and + BZ_STREAM_END), you should + immediately call + BZ2_bzReadClose (or + BZ2_bzWriteClose, depending on + whether you are attempting to read or to write) to free up all + resources associated with the stream. Once an error has been + indicated, behaviour of all calls except + BZ2_bzReadClose + (BZ2_bzWriteClose) is + undefined. The implication is that (1) + bzerror should be checked + after each call, and (2) if + bzerror indicates an error, + BZ2_bzReadClose + (BZ2_bzWriteClose) should then + be called to clean up.

  • +
  • The FILE* arguments + passed to BZ2_bzReadOpen / + BZ2_bzWriteOpen should be set + to binary mode. Most Unix systems will do this by default, but + other platforms, including Windows and Mac, will not. If you + omit this, you may encounter problems when moving code to new + platforms.

  • +
  • Memory allocation requests are handled by + malloc / + free. At present there is no + facility for user-defined memory allocators in the file I/O + functions (could easily be added, though).

  • +
+
+

+3.4.1. BZ2_bzReadOpen

+
typedef void BZFILE;
+
+BZFILE *BZ2_bzReadOpen( int *bzerror, FILE *f, 
+                        int verbosity, int small,
+                        void *unused, int nUnused );
+

Prepare to read compressed data from file handle +f. +f should refer to a file which +has been opened for reading, and for which the error indicator +(ferror(f))is not set. If +small is 1, the library will try +to decompress using less memory, at the expense of speed.

+

For reasons explained below, +BZ2_bzRead will decompress the +nUnused bytes starting at +unused, before starting to read +from the file f. At most +BZ_MAX_UNUSED bytes may be +supplied like this. If this facility is not required, you should +pass NULL and +0 for +unused and +nUnused respectively.

+

For the meaning of parameters +small and +verbosity, see +BZ2_bzDecompressInit.

+

The amount of memory needed to decompress a file cannot be +determined until the file's header has been read. So it is +possible that BZ2_bzReadOpen +returns BZ_OK but a subsequent +call of BZ2_bzRead will return +BZ_MEM_ERROR.

+

Possible assignments to +bzerror:

+
BZ_CONFIG_ERROR
+  if the library has been mis-compiled
+BZ_PARAM_ERROR
+  if f is NULL
+  or small is neither 0 nor 1
+  or ( unused == NULL && nUnused != 0 )
+  or ( unused != NULL && !(0 <= nUnused <= BZ_MAX_UNUSED) )
+BZ_IO_ERROR
+  if ferror(f) is nonzero
+BZ_MEM_ERROR
+  if insufficient memory is available
+BZ_OK
+  otherwise.
+

Possible return values:

+
Pointer to an abstract BZFILE
+  if bzerror is BZ_OK
+NULL
+  otherwise
+

Allowable next actions:

+
BZ2_bzRead
+  if bzerror is BZ_OK
+BZ2_bzClose
+  otherwise
+
+
+

+3.4.2. BZ2_bzRead

+
int BZ2_bzRead ( int *bzerror, BZFILE *b, void *buf, int len );
+

Reads up to len +(uncompressed) bytes from the compressed file +b into the buffer +buf. If the read was +successful, bzerror is set to +BZ_OK and the number of bytes +read is returned. If the logical end-of-stream was detected, +bzerror will be set to +BZ_STREAM_END, and the number of +bytes read is returned. All other +bzerror values denote an +error.

+

BZ2_bzRead will supply +len bytes, unless the logical +stream end is detected or an error occurs. Because of this, it +is possible to detect the stream end by observing when the number +of bytes returned is less than the number requested. +Nevertheless, this is regarded as inadvisable; you should instead +check bzerror after every call +and watch out for +BZ_STREAM_END.

+

Internally, BZ2_bzRead +copies data from the compressed file in chunks of size +BZ_MAX_UNUSED bytes before +decompressing it. If the file contains more bytes than strictly +needed to reach the logical end-of-stream, +BZ2_bzRead will almost certainly +read some of the trailing data before signalling +BZ_SEQUENCE_END. To collect the +read but unused data once +BZ_SEQUENCE_END has appeared, +call BZ2_bzReadGetUnused +immediately before +BZ2_bzReadClose.

+

Possible assignments to +bzerror:

+
BZ_PARAM_ERROR
+  if b is NULL or buf is NULL or len < 0
+BZ_SEQUENCE_ERROR
+  if b was opened with BZ2_bzWriteOpen
+BZ_IO_ERROR
+  if there is an error reading from the compressed file
+BZ_UNEXPECTED_EOF
+  if the compressed file ended before 
+  the logical end-of-stream was detected
+BZ_DATA_ERROR
+  if a data integrity error was detected in the compressed stream
+BZ_DATA_ERROR_MAGIC
+  if the stream does not begin with the requisite header bytes 
+  (ie, is not a bzip2 data file).  This is really 
+  a special case of BZ_DATA_ERROR.
+BZ_MEM_ERROR
+  if insufficient memory was available
+BZ_STREAM_END
+  if the logical end of stream was detected.
+BZ_OK
+  otherwise.
+

Possible return values:

+
number of bytes read
+  if bzerror is BZ_OK or BZ_STREAM_END
+undefined
+  otherwise
+

Allowable next actions:

+
collect data from buf, then BZ2_bzRead or BZ2_bzReadClose
+  if bzerror is BZ_OK
+collect data from buf, then BZ2_bzReadClose or BZ2_bzReadGetUnused
+  if bzerror is BZ_SEQUENCE_END
+BZ2_bzReadClose
+  otherwise
+
+
+

+3.4.3. BZ2_bzReadGetUnused

+
void BZ2_bzReadGetUnused( int* bzerror, BZFILE *b, 
+                          void** unused, int* nUnused );
+

Returns data which was read from the compressed file but +was not needed to get to the logical end-of-stream. +*unused is set to the address of +the data, and *nUnused to the +number of bytes. *nUnused will +be set to a value between 0 and +BZ_MAX_UNUSED inclusive.

+

This function may only be called once +BZ2_bzRead has signalled +BZ_STREAM_END but before +BZ2_bzReadClose.

+

Possible assignments to +bzerror:

+
BZ_PARAM_ERROR
+  if b is NULL
+  or unused is NULL or nUnused is NULL
+BZ_SEQUENCE_ERROR
+  if BZ_STREAM_END has not been signalled
+  or if b was opened with BZ2_bzWriteOpen
+BZ_OK
+  otherwise
+

Allowable next actions:

+
BZ2_bzReadClose
+
+
+

+3.4.4. BZ2_bzReadClose

+
void BZ2_bzReadClose ( int *bzerror, BZFILE *b );
+

Releases all memory pertaining to the compressed file +b. +BZ2_bzReadClose does not call +fclose on the underlying file +handle, so you should do that yourself if appropriate. +BZ2_bzReadClose should be called +to clean up after all error situations.

+

Possible assignments to +bzerror:

+
BZ_SEQUENCE_ERROR
+  if b was opened with BZ2_bzOpenWrite
+BZ_OK
+  otherwise
+

Allowable next actions:

+
none
+
+
+

+3.4.5. BZ2_bzWriteOpen

+
BZFILE *BZ2_bzWriteOpen( int *bzerror, FILE *f, 
+                         int blockSize100k, int verbosity,
+                         int workFactor );
+

Prepare to write compressed data to file handle +f. +f should refer to a file which +has been opened for writing, and for which the error indicator +(ferror(f))is not set.

+

For the meaning of parameters +blockSize100k, +verbosity and +workFactor, see +BZ2_bzCompressInit.

+

All required memory is allocated at this stage, so if the +call completes successfully, +BZ_MEM_ERROR cannot be signalled +by a subsequent call to +BZ2_bzWrite.

+

Possible assignments to +bzerror:

+
BZ_CONFIG_ERROR
+  if the library has been mis-compiled
+BZ_PARAM_ERROR
+  if f is NULL
+  or blockSize100k < 1 or blockSize100k > 9
+BZ_IO_ERROR
+  if ferror(f) is nonzero
+BZ_MEM_ERROR
+  if insufficient memory is available
+BZ_OK
+  otherwise
+

Possible return values:

+
Pointer to an abstract BZFILE
+  if bzerror is BZ_OK
+NULL
+  otherwise
+

Allowable next actions:

+
BZ2_bzWrite
+  if bzerror is BZ_OK
+  (you could go directly to BZ2_bzWriteClose, but this would be pretty pointless)
+BZ2_bzWriteClose
+  otherwise
+
+
+

+3.4.6. BZ2_bzWrite

+
void BZ2_bzWrite ( int *bzerror, BZFILE *b, void *buf, int len );
+

Absorbs len bytes from the +buffer buf, eventually to be +compressed and written to the file.

+

Possible assignments to +bzerror:

+
BZ_PARAM_ERROR
+  if b is NULL or buf is NULL or len < 0
+BZ_SEQUENCE_ERROR
+  if b was opened with BZ2_bzReadOpen
+BZ_IO_ERROR
+  if there is an error writing the compressed file.
+BZ_OK
+  otherwise
+
+
+

+3.4.7. BZ2_bzWriteClose

+
void BZ2_bzWriteClose( int *bzerror, BZFILE* f,
+                       int abandon,
+                       unsigned int* nbytes_in,
+                       unsigned int* nbytes_out );
+
+void BZ2_bzWriteClose64( int *bzerror, BZFILE* f,
+                         int abandon,
+                         unsigned int* nbytes_in_lo32,
+                         unsigned int* nbytes_in_hi32,
+                         unsigned int* nbytes_out_lo32,
+                         unsigned int* nbytes_out_hi32 );
+

Compresses and flushes to the compressed file all data so +far supplied by BZ2_bzWrite. +The logical end-of-stream markers are also written, so subsequent +calls to BZ2_bzWrite are +illegal. All memory associated with the compressed file +b is released. +fflush is called on the +compressed file, but it is not +fclose'd.

+

If BZ2_bzWriteClose is +called to clean up after an error, the only action is to release +the memory. The library records the error codes issued by +previous calls, so this situation will be detected automatically. +There is no attempt to complete the compression operation, nor to +fflush the compressed file. You +can force this behaviour to happen even in the case of no error, +by passing a nonzero value to +abandon.

+

If nbytes_in is non-null, +*nbytes_in will be set to be the +total volume of uncompressed data handled. Similarly, +nbytes_out will be set to the +total volume of compressed data written. For compatibility with +older versions of the library, +BZ2_bzWriteClose only yields the +lower 32 bits of these counts. Use +BZ2_bzWriteClose64 if you want +the full 64 bit counts. These two functions are otherwise +absolutely identical.

+

Possible assignments to +bzerror:

+
BZ_SEQUENCE_ERROR
+  if b was opened with BZ2_bzReadOpen
+BZ_IO_ERROR
+  if there is an error writing the compressed file
+BZ_OK
+  otherwise
+
+
+

+3.4.8. Handling embedded compressed data streams

+

The high-level library facilitates use of +bzip2 data streams which form +some part of a surrounding, larger data stream.

+
    +
  • For writing, the library takes an open file handle, + writes compressed data to it, + fflushes it but does not + fclose it. The calling + application can write its own data before and after the + compressed data stream, using that same file handle.

  • +
  • Reading is more complex, and the facilities are not as + general as they could be since generality is hard to reconcile + with efficiency. BZ2_bzRead + reads from the compressed file in blocks of size + BZ_MAX_UNUSED bytes, and in + doing so probably will overshoot the logical end of compressed + stream. To recover this data once decompression has ended, + call BZ2_bzReadGetUnused after + the last call of BZ2_bzRead + (the one returning + BZ_STREAM_END) but before + calling + BZ2_bzReadClose.

  • +
+

This mechanism makes it easy to decompress multiple +bzip2 streams placed end-to-end. +As the end of one stream, when +BZ2_bzRead returns +BZ_STREAM_END, call +BZ2_bzReadGetUnused to collect +the unused data (copy it into your own buffer somewhere). That +data forms the start of the next compressed stream. To start +uncompressing that next stream, call +BZ2_bzReadOpen again, feeding in +the unused data via the unused / +nUnused parameters. Keep doing +this until BZ_STREAM_END return +coincides with the physical end of file +(feof(f)). In this situation +BZ2_bzReadGetUnused will of +course return no data.

+

This should give some feel for how the high-level interface +can be used. If you require extra flexibility, you'll have to +bite the bullet and get to grips with the low-level +interface.

+
+
+

+3.4.9. Standard file-reading/writing code

+

Here's how you'd write data to a compressed file:

+
FILE*   f;
+BZFILE* b;
+int     nBuf;
+char    buf[ /* whatever size you like */ ];
+int     bzerror;
+int     nWritten;
+
+f = fopen ( "myfile.bz2", "w" );
+if ( !f ) {
+ /* handle error */
+}
+b = BZ2_bzWriteOpen( &bzerror, f, 9 );
+if (bzerror != BZ_OK) {
+ BZ2_bzWriteClose ( b );
+ /* handle error */
+}
+
+while ( /* condition */ ) {
+ /* get data to write into buf, and set nBuf appropriately */
+ nWritten = BZ2_bzWrite ( &bzerror, b, buf, nBuf );
+ if (bzerror == BZ_IO_ERROR) { 
+   BZ2_bzWriteClose ( &bzerror, b );
+   /* handle error */
+ }
+}
+
+BZ2_bzWriteClose( &bzerror, b );
+if (bzerror == BZ_IO_ERROR) {
+ /* handle error */
+}
+

And to read from a compressed file:

+
FILE*   f;
+BZFILE* b;
+int     nBuf;
+char    buf[ /* whatever size you like */ ];
+int     bzerror;
+int     nWritten;
+
+f = fopen ( "myfile.bz2", "r" );
+if ( !f ) {
+  /* handle error */
+}
+b = BZ2_bzReadOpen ( &bzerror, f, 0, NULL, 0 );
+if ( bzerror != BZ_OK ) {
+  BZ2_bzReadClose ( &bzerror, b );
+  /* handle error */
+}
+
+bzerror = BZ_OK;
+while ( bzerror == BZ_OK && /* arbitrary other conditions */) {
+  nBuf = BZ2_bzRead ( &bzerror, b, buf, /* size of buf */ );
+  if ( bzerror == BZ_OK ) {
+    /* do something with buf[0 .. nBuf-1] */
+  }
+}
+if ( bzerror != BZ_STREAM_END ) {
+   BZ2_bzReadClose ( &bzerror, b );
+   /* handle error */
+} else {
+   BZ2_bzReadClose ( &bzerror, b );
+}
+
+
+
+

+3.5. Utility functions

+
+

+3.5.1. BZ2_bzBuffToBuffCompress

+
int BZ2_bzBuffToBuffCompress( char*         dest,
+                              unsigned int* destLen,
+                              char*         source,
+                              unsigned int  sourceLen,
+                              int           blockSize100k,
+                              int           verbosity,
+                              int           workFactor );
+

Attempts to compress the data in source[0 +.. sourceLen-1] into the destination buffer, +dest[0 .. *destLen-1]. If the +destination buffer is big enough, +*destLen is set to the size of +the compressed data, and BZ_OK +is returned. If the compressed data won't fit, +*destLen is unchanged, and +BZ_OUTBUFF_FULL is +returned.

+

Compression in this manner is a one-shot event, done with a +single call to this function. The resulting compressed data is a +complete bzip2 format data +stream. There is no mechanism for making additional calls to +provide extra input data. If you want that kind of mechanism, +use the low-level interface.

+

For the meaning of parameters +blockSize100k, +verbosity and +workFactor, see +BZ2_bzCompressInit.

+

To guarantee that the compressed data will fit in its +buffer, allocate an output buffer of size 1% larger than the +uncompressed data, plus six hundred extra bytes.

+

BZ2_bzBuffToBuffDecompress +will not write data at or beyond +dest[*destLen], even in case of +buffer overflow.

+

Possible return values:

+
BZ_CONFIG_ERROR
+  if the library has been mis-compiled
+BZ_PARAM_ERROR
+  if dest is NULL or destLen is NULL
+  or blockSize100k < 1 or blockSize100k > 9
+  or verbosity < 0 or verbosity > 4
+  or workFactor < 0 or workFactor > 250
+BZ_MEM_ERROR
+  if insufficient memory is available 
+BZ_OUTBUFF_FULL
+  if the size of the compressed data exceeds *destLen
+BZ_OK
+  otherwise
+
+
+

+3.5.2. BZ2_bzBuffToBuffDecompress

+
int BZ2_bzBuffToBuffDecompress( char*         dest,
+                                unsigned int* destLen,
+                                char*         source,
+                                unsigned int  sourceLen,
+                                int           small,
+                                int           verbosity );
+

Attempts to decompress the data in source[0 +.. sourceLen-1] into the destination buffer, +dest[0 .. *destLen-1]. If the +destination buffer is big enough, +*destLen is set to the size of +the uncompressed data, and BZ_OK +is returned. If the compressed data won't fit, +*destLen is unchanged, and +BZ_OUTBUFF_FULL is +returned.

+

source is assumed to hold +a complete bzip2 format data +stream. +BZ2_bzBuffToBuffDecompress tries +to decompress the entirety of the stream into the output +buffer.

+

For the meaning of parameters +small and +verbosity, see +BZ2_bzDecompressInit.

+

Because the compression ratio of the compressed data cannot +be known in advance, there is no easy way to guarantee that the +output buffer will be big enough. You may of course make +arrangements in your code to record the size of the uncompressed +data, but such a mechanism is beyond the scope of this +library.

+

BZ2_bzBuffToBuffDecompress +will not write data at or beyond +dest[*destLen], even in case of +buffer overflow.

+

Possible return values:

+
BZ_CONFIG_ERROR
+  if the library has been mis-compiled
+BZ_PARAM_ERROR
+  if dest is NULL or destLen is NULL
+  or small != 0 && small != 1
+  or verbosity < 0 or verbosity > 4
+BZ_MEM_ERROR
+  if insufficient memory is available 
+BZ_OUTBUFF_FULL
+  if the size of the compressed data exceeds *destLen
+BZ_DATA_ERROR
+  if a data integrity error was detected in the compressed data
+BZ_DATA_ERROR_MAGIC
+  if the compressed data doesn't begin with the right magic bytes
+BZ_UNEXPECTED_EOF
+  if the compressed data ends unexpectedly
+BZ_OK
+  otherwise
+
+
+
+

+3.6. zlib compatibility functions

+

Yoshioka Tsuneo has contributed some functions to give +better zlib compatibility. +These functions are BZ2_bzopen, +BZ2_bzread, +BZ2_bzwrite, +BZ2_bzflush, +BZ2_bzclose, +BZ2_bzerror and +BZ2_bzlibVersion. These +functions are not (yet) officially part of the library. If they +break, you get to keep all the pieces. Nevertheless, I think +they work ok.

+
typedef void BZFILE;
+
+const char * BZ2_bzlibVersion ( void );
+

Returns a string indicating the library version.

+
BZFILE * BZ2_bzopen  ( const char *path, const char *mode );
+BZFILE * BZ2_bzdopen ( int        fd,    const char *mode );
+

Opens a .bz2 file for +reading or writing, using either its name or a pre-existing file +descriptor. Analogous to fopen +and fdopen.

+
int BZ2_bzread  ( BZFILE* b, void* buf, int len );
+int BZ2_bzwrite ( BZFILE* b, void* buf, int len );
+

Reads/writes data from/to a previously opened +BZFILE. Analogous to +fread and +fwrite.

+
int  BZ2_bzflush ( BZFILE* b );
+void BZ2_bzclose ( BZFILE* b );
+

Flushes/closes a BZFILE. +BZ2_bzflush doesn't actually do +anything. Analogous to fflush +and fclose.

+
const char * BZ2_bzerror ( BZFILE *b, int *errnum )
+

Returns a string describing the more recent error status of +b, and also sets +*errnum to its numerical +value.

+
+
+

+3.7. Using the library in a stdio-free environment

+
+

+3.7.1. Getting rid of stdio

+

In a deeply embedded application, you might want to use +just the memory-to-memory functions. You can do this +conveniently by compiling the library with preprocessor symbol +BZ_NO_STDIO defined. Doing this +gives you a library containing only the following eight +functions:

+

BZ2_bzCompressInit, +BZ2_bzCompress, +BZ2_bzCompressEnd +BZ2_bzDecompressInit, +BZ2_bzDecompress, +BZ2_bzDecompressEnd +BZ2_bzBuffToBuffCompress, +BZ2_bzBuffToBuffDecompress

+

When compiled like this, all functions will ignore +verbosity settings.

+
+
+

+3.7.2. Critical error handling

+

libbzip2 contains a number +of internal assertion checks which should, needless to say, never +be activated. Nevertheless, if an assertion should fail, +behaviour depends on whether or not the library was compiled with +BZ_NO_STDIO set.

+

For a normal compile, an assertion failure yields the +message:

+
+

bzip2/libbzip2: internal error number N.

+

This is a bug in bzip2/libbzip2, 1.0.5 of 10 December 2007. +Please report it to me at: jseward@bzip.org. If this happened +when you were using some program which uses libbzip2 as a +component, you should also report this bug to the author(s) +of that program. Please make an effort to report this bug; +timely and accurate bug reports eventually lead to higher +quality software. Thanks. Julian Seward, 10 December 2007. +

+
+

where N is some error code +number. If N == 1007, it also +prints some extra text advising the reader that unreliable memory +is often associated with internal error 1007. (This is a +frequently-observed-phenomenon with versions 1.0.0/1.0.1).

+

exit(3) is then +called.

+

For a stdio-free library, +assertion failures result in a call to a function declared +as:

+
extern void bz_internal_error ( int errcode );
+

The relevant code is passed as a parameter. You should +supply such a function.

+

In either case, once an assertion failure has occurred, any +bz_stream records involved can +be regarded as invalid. You should not attempt to resume normal +operation with them.

+

You may, of course, change critical error handling to suit +your needs. As I said above, critical errors indicate bugs in +the library and should not occur. All "normal" error situations +are indicated via error return codes from functions, and can be +recovered from.

+
+
+
+

+3.8. Making a Windows DLL

+

Everything related to Windows has been contributed by +Yoshioka Tsuneo +(tsuneo@rr.iij4u.or.jp), so +you should send your queries to him (but perhaps Cc: me, +jseward@bzip.org).

+

My vague understanding of what to do is: using Visual C++ +5.0, open the project file +libbz2.dsp, and build. That's +all.

+

If you can't open the project file for some reason, make a +new one, naming these files: +blocksort.c, +bzlib.c, +compress.c, +crctable.c, +decompress.c, +huffman.c, +randtable.c and +libbz2.def. You will also need +to name the header files bzlib.h +and bzlib_private.h.

+

If you don't use VC++, you may need to define the +proprocessor symbol +_WIN32.

+

Finally, dlltest.c is a +sample program using the DLL. It has a project file, +dlltest.dsp.

+

If you just want a makefile for Visual C, have a look at +makefile.msc.

+

Be aware that if you compile +bzip2 itself on Win32, you must +set BZ_UNIX to 0 and +BZ_LCCWIN32 to 1, in the file +bzip2.c, before compiling. +Otherwise the resulting binary won't work correctly.

+

I haven't tried any of this stuff myself, but it all looks +plausible.

+
+
+
+

+4. Miscellanea

+ +

These are just some random thoughts of mine. Your mileage +may vary.

+
+

+4.1. Limitations of the compressed file format

+

bzip2-1.0.X, +0.9.5 and +0.9.0 use exactly the same file +format as the original version, +bzip2-0.1. This decision was +made in the interests of stability. Creating yet another +incompatible compressed file format would create further +confusion and disruption for users.

+

Nevertheless, this is not a painless decision. Development +work since the release of +bzip2-0.1 in August 1997 has +shown complexities in the file format which slow down +decompression and, in retrospect, are unnecessary. These +are:

+
    +
  • The run-length encoder, which is the first of the + compression transformations, is entirely irrelevant. The + original purpose was to protect the sorting algorithm from the + very worst case input: a string of repeated symbols. But + algorithm steps Q6a and Q6b in the original Burrows-Wheeler + technical report (SRC-124) show how repeats can be handled + without difficulty in block sorting.

  • +
  • +

    The randomisation mechanism doesn't really need to be + there. Udi Manber and Gene Myers published a suffix array + construction algorithm a few years back, which can be employed + to sort any block, no matter how repetitive, in O(N log N) + time. Subsequent work by Kunihiko Sadakane has produced a + derivative O(N (log N)^2) algorithm which usually outperforms + the Manber-Myers algorithm.

    +

    I could have changed to Sadakane's algorithm, but I find + it to be slower than bzip2's + existing algorithm for most inputs, and the randomisation + mechanism protects adequately against bad cases. I didn't + think it was a good tradeoff to make. Partly this is due to + the fact that I was not flooded with email complaints about + bzip2-0.1's performance on + repetitive data, so perhaps it isn't a problem for real + inputs.

    +

    Probably the best long-term solution, and the one I have + incorporated into 0.9.5 and above, is to use the existing + sorting algorithm initially, and fall back to a O(N (log N)^2) + algorithm if the standard algorithm gets into + difficulties.

    +
  • +
  • The compressed file format was never designed to be + handled by a library, and I have had to jump though some hoops + to produce an efficient implementation of decompression. It's + a bit hairy. Try passing + decompress.c through the C + preprocessor and you'll see what I mean. Much of this + complexity could have been avoided if the compressed size of + each block of data was recorded in the data stream.

  • +
  • An Adler-32 checksum, rather than a CRC32 checksum, + would be faster to compute.

  • +
+

It would be fair to say that the +bzip2 format was frozen before I +properly and fully understood the performance consequences of +doing so.

+

Improvements which I was able to incorporate into 0.9.0, +despite using the same file format, are:

+
    +
  • Single array implementation of the inverse BWT. This + significantly speeds up decompression, presumably because it + reduces the number of cache misses.

  • +
  • Faster inverse MTF transform for large MTF values. + The new implementation is based on the notion of sliding blocks + of values.

  • +
  • bzip2-0.9.0 now reads + and writes files with fread + and fwrite; version 0.1 used + putc and + getc. Duh! Well, you live + and learn.

  • +
+

Further ahead, it would be nice to be able to do random +access into files. This will require some careful design of +compressed file formats.

+
+
+

+4.2. Portability issues

+

After some consideration, I have decided not to use GNU +autoconf to configure 0.9.5 or +1.0.

+

autoconf, admirable and +wonderful though it is, mainly assists with portability problems +between Unix-like platforms. But +bzip2 doesn't have much in the +way of portability problems on Unix; most of the difficulties +appear when porting to the Mac, or to Microsoft's operating +systems. autoconf doesn't help +in those cases, and brings in a whole load of new +complexity.

+

Most people should be able to compile the library and +program under Unix straight out-of-the-box, so to speak, +especially if you have a version of GNU C available.

+

There are a couple of +__inline__ directives in the +code. GNU C (gcc) should be +able to handle them. If you're not using GNU C, your C compiler +shouldn't see them at all. If your compiler does, for some +reason, see them and doesn't like them, just +#define +__inline__ to be +/* */. One easy way to do this +is to compile with the flag +-D__inline__=, which should be +understood by most Unix compilers.

+

If you still have difficulties, try compiling with the +macro BZ_STRICT_ANSI defined. +This should enable you to build the library in a strictly ANSI +compliant environment. Building the program itself like this is +dangerous and not supported, since you remove +bzip2's checks against +compressing directories, symbolic links, devices, and other +not-really-a-file entities. This could cause filesystem +corruption!

+

One other thing: if you create a +bzip2 binary for public distribution, +please consider linking it statically (gcc +-static). This avoids all sorts of library-version +issues that others may encounter later on.

+

If you build bzip2 on +Win32, you must set BZ_UNIX to 0 +and BZ_LCCWIN32 to 1, in the +file bzip2.c, before compiling. +Otherwise the resulting binary won't work correctly.

+
+
+

+4.3. Reporting bugs

+

I tried pretty hard to make sure +bzip2 is bug free, both by +design and by testing. Hopefully you'll never need to read this +section for real.

+

Nevertheless, if bzip2 dies +with a segmentation fault, a bus error or an internal assertion +failure, it will ask you to email me a bug report. Experience from +years of feedback of bzip2 users indicates that almost all these +problems can be traced to either compiler bugs or hardware +problems.

+
    +
  • +

    Recompile the program with no optimisation, and + see if it works. And/or try a different compiler. I heard all + sorts of stories about various flavours of GNU C (and other + compilers) generating bad code for + bzip2, and I've run across two + such examples myself.

    +

    2.7.X versions of GNU C are known to generate bad code + from time to time, at high optimisation levels. If you get + problems, try using the flags + -O2 + -fomit-frame-pointer + -fno-strength-reduce. You + should specifically not use + -funroll-loops.

    +

    You may notice that the Makefile runs six tests as part + of the build process. If the program passes all of these, it's + a pretty good (but not 100%) indication that the compiler has + done its job correctly.

    +
  • +
  • +

    If bzip2 + crashes randomly, and the crashes are not repeatable, you may + have a flaky memory subsystem. + bzip2 really hammers your + memory hierarchy, and if it's a bit marginal, you may get these + problems. Ditto if your disk or I/O subsystem is slowly + failing. Yup, this really does happen.

    +

    Try using a different machine of the same type, and see + if you can repeat the problem.

    +
  • +
  • This isn't really a bug, but ... If + bzip2 tells you your file is + corrupted on decompression, and you obtained the file via FTP, + there is a possibility that you forgot to tell FTP to do a + binary mode transfer. That absolutely will cause the file to + be non-decompressible. You'll have to transfer it + again.

  • +
+

If you've incorporated +libbzip2 into your own program +and are getting problems, please, please, please, check that the +parameters you are passing in calls to the library, are correct, +and in accordance with what the documentation says is allowable. +I have tried to make the library robust against such problems, +but I'm sure I haven't succeeded.

+

Finally, if the above comments don't help, you'll have to +send me a bug report. Now, it's just amazing how many people +will send me a bug report saying something like:

+
bzip2 crashed with segmentation fault on my machine
+

and absolutely nothing else. Needless to say, a such a +report is totally, utterly, completely and +comprehensively 100% useless; a waste of your time, my time, and +net bandwidth. With no details at all, there's no way +I can possibly begin to figure out what the problem is.

+

The rules of the game are: facts, facts, facts. Don't omit +them because "oh, they won't be relevant". At the bare +minimum:

+
Machine type.  Operating system version.  
+Exact version of bzip2 (do bzip2 -V).  
+Exact version of the compiler used.  
+Flags passed to the compiler.
+

However, the most important single thing that will help me +is the file that you were trying to compress or decompress at the +time the problem happened. Without that, my ability to do +anything more than speculate about the cause, is limited.

+
+
+

+4.4. Did you get the right package?

+

bzip2 is a resource hog. +It soaks up large amounts of CPU cycles and memory. Also, it +gives very large latencies. In the worst case, you can feed many +megabytes of uncompressed data into the library before getting +any compressed output, so this probably rules out applications +requiring interactive behaviour.

+

These aren't faults of my implementation, I hope, but more +an intrinsic property of the Burrows-Wheeler transform +(unfortunately). Maybe this isn't what you want.

+

If you want a compressor and/or library which is faster, +uses less memory but gets pretty good compression, and has +minimal latency, consider Jean-loup Gailly's and Mark Adler's +work, zlib-1.2.1 and +gzip-1.2.4. Look for them at +http://www.zlib.org and +http://www.gzip.org +respectively.

+

For something faster and lighter still, you might try Markus F +X J Oberhumer's LZO real-time +compression/decompression library, at +http://www.oberhumer.com/opensource.

+
+
+

+4.5. Further Reading

+

bzip2 is not research +work, in the sense that it doesn't present any new ideas. +Rather, it's an engineering exercise based on existing +ideas.

+

Four documents describe essentially all the ideas behind +bzip2:

+

Michael Burrows and D. J. Wheeler:
+  "A block-sorting lossless data compression algorithm"
+   10th May 1994. 
+   Digital SRC Research Report 124.
+   ftp://ftp.digital.com/pub/DEC/SRC/research-reports/SRC-124.ps.gz
+   If you have trouble finding it, try searching at the
+   New Zealand Digital Library, http://www.nzdl.org.
+
+Daniel S. Hirschberg and Debra A. LeLewer
+  "Efficient Decoding of Prefix Codes"
+   Communications of the ACM, April 1990, Vol 33, Number 4.
+   You might be able to get an electronic copy of this
+   from the ACM Digital Library.
+
+David J. Wheeler
+   Program bred3.c and accompanying document bred3.ps.
+   This contains the idea behind the multi-table Huffman coding scheme.
+   ftp://ftp.cl.cam.ac.uk/users/djw3/
+
+Jon L. Bentley and Robert Sedgewick
+  "Fast Algorithms for Sorting and Searching Strings"
+   Available from Sedgewick's web page,
+   www.cs.princeton.edu/~rs
+

+

The following paper gives valuable additional insights into +the algorithm, but is not immediately the basis of any code used +in bzip2.

+

Peter Fenwick:
+   Block Sorting Text Compression
+   Proceedings of the 19th Australasian Computer Science Conference,
+     Melbourne, Australia.  Jan 31 - Feb 2, 1996.
+   ftp://ftp.cs.auckland.ac.nz/pub/peter-f/ACSC96paper.ps

+

Kunihiko Sadakane's sorting algorithm, mentioned above, is +available from:

+

http://naomi.is.s.u-tokyo.ac.jp/~sada/papers/Sada98b.ps.gz
+

+

The Manber-Myers suffix array construction algorithm is +described in a paper available from:

+

http://www.cs.arizona.edu/people/gene/PAPERS/suffix.ps
+

+

Finally, the following papers document some +investigations I made into the performance of sorting +and decompression algorithms:

+

Julian Seward
+   On the Performance of BWT Sorting Algorithms
+   Proceedings of the IEEE Data Compression Conference 2000
+     Snowbird, Utah.  28-30 March 2000.
+
+Julian Seward
+   Space-time Tradeoffs in the Inverse B-W Transform
+   Proceedings of the IEEE Data Compression Conference 2001
+     Snowbird, Utah.  27-29 March 2001.
+

+
+
+
+ diff --git a/3party_sloynik/bzip2/manual.pdf b/3party_sloynik/bzip2/manual.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fe71a4c5e55970560df52899d2a74ab9bb437c82 GIT binary patch literal 288137 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 aV9~j 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
C8| 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

s{j*vJp55?!=q=Zj~Bx6i=tPH42x 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 &g7c=jJei)Cu<^5rMqw*7!ou<3C?C;7UD=6oVj zAt3H#umVv|@c=7*-tA&E8)u`Uk(X4tNE^A(n(U)Boi)N`eQmbYx^wA^QQiGB=r>&J zR~c~OhxYVKQQU2Q%wCxj1dC!Cq2AF`=laRiLGn-O>$%()*|#;Nsl;sC^inF1&txBg z>aJ{#r@(1@wO`*-ejU7XD}dhHb~!CBMwfIO7a8YtTjX?M-5fJ1AxdH;qxCWHxt&{M z;HdvlF?{GW{$;(x<$A_v2hC3Uu(T*@WQKmKaw_*Cf02`EYHl z2$$uOgKVXOQR6`HRJo#_Y-OHn#;EF(s%q{@mqdKifN#}yog>zpdtQhB#eLH^tfufi z%x_EN)>7+z!>7+fgVyJAN@BGaSDtq4s{OY!VIAr0!ik#Gi0i{5TR6T6sg;Vt*hkq& znGNSW@O49ay{w5)!?j(R^9Iw#-o&|TQUU`+m?H&&k5~f z7BjPuI+N6x%;k^LHI!ktIW`Gi%prW4QNN;3pqfS@ex=C4siYgRYjkEw!9sP09T1@) zDqnj(A)Mz+C{=OAycuS1a7Eftv?7zf6kCHM-x+x<{1Q7T0MxN5_<U7?AR4KxPe+SG<<#zG9acPb3}ohIn|W2n-gBTBZG98`!HV~orc;VV zD5(n3dGy|H1%^zN!J3G3cKun32dgT)4@W~|X(h{-6BQ8;8#4GS#maAGVco&c(zVF+ z-sLcP4LAh#j<*6mLyzU5o`pZQ{n}c-U-GbXl&XkG$f8^qw+r8#R{L7u+-f-nJmkzJ z&?kqoPOD;;>20b}yY=w+Ah9{bFa8ydZ|oE10|{n9Q#}|dRW`Up-WQy})8pj7i86+N zMGOBq-~BI{vj0dU{!gZi`HRN-wyswP|tt2{Mo@jTsX&H{Pllw;r}nD?7s~7PX$K9@WqsUZRtNi@Gm|0e?!Wc7{655 z7i9ev56h1KMYR3TGVEVqm${vt)!*@6f9LA`Q&at|F8)tV_16r2eLYC6KhX3aUGmT6 zU+?`}qp-64bpZZM$=}E9e?guxv;0k-{d))TnOXmx3dh3!A7N(rEF6Ct|H-5={EHs{ zGv*&%#K6k%HEI7AM(kg80sgH17iGl3!piW!R7MqTMqgllGb#33lg*mzU{kBnUoV=n z!n2eIn-V0KZ@YY6?%4JG{Mx2tSccljs=}-`onm-~2+35H^Uzou*;o^5z*}aRnCP$J zDb!an+BwJ9fcKA*CaJZF-?nw4NXafsi}o0*4NkR z_l5HxV6$aaQIlzfl`Y3G7aAIzKPjGvgGN?v`I!B9vMQ+ogpvL9)+emban2?HX#EI2 zs&P~%CPKBTCqpMHttUf;{m3mPsKgN!Bq)C(NTdT!WJX$tA?rlhR7!{LS4d9)OqnhS zA3n$mH+}NLr>y`>SAI}TrtQ!r*D%E)#MK9;g)Qo_F~K1*h4?9doy1IKT~(*1{IPND_ZTz|1cTs&omzv*MA5kBckQ4|tyY(~N z5b<+resFH&AZKMt)o)Sw;n0sp=3GYmlj2yft()Gjkyca{z>E-$2`K$#Ocl1QhqJ>inkotoOn3Ir<35tkJNsGzs_t)oYKaZ#UmL%@FRqXb+^-rJa z>|Xse-m9@Iv@<8ICo%L>H9m%z9iFk)`XB-NpQdxgfhW$xQqw+Y*j!wm;IcB(=DRV4 z@24l^KV|wx7I5`XC5$aiVf%mTU*510BP@R6j6;9=5P!1CzikO#`9XDl+Uz=L^vu9yqbO}=bA!XK& zB_T9BE$q1aNSUTm+8W@qA^UxclF9$rPv(P8;!`q9K}c6cQ!((N`(nXQgW}_0Q)F>| z$IkGx9@)cd{?p|NTu69eGjJs1;}WLO%;11{_X#UDB5n2Y6aHL}e&W+3na$Cm?goGE zS&I?rwj1&@XWB3O?gJ{4y=P$aE=NPbfdMG>1E>0v9~xG6$h{TF2%|18;1G zarm}m-sxa{=T!d3p}8SIe{vn)t|4ro8xh& zgOUBG74uJ=r)>gS8(nT@j%qA)ZV_jHBiyRoCe21SVisXjD(nlL^%aw9g8MWM9_QY#;9ITK6=YoF4+;im<#K5bbLJ$yfI(MVtQM=ruhTPFXk z5Bsuhm#~2?3*_}fA+xbV8)(1iaOBFllQ&44@Er^t1S zbjV=vV#&{&->lAV&|X}m#-jc4IjN8=Xp2ETPKs}0u~rAdm9I=m*tyqMhqWHWtxJM{01=FRnMj4O^=r(itu z94Mp)l|Mc32ZU$r2ZlZdt`)8W5>t;Yjkos7-rja68X60c*@B>P?243HV!heaQ5>g; zf^;!9@@&-Rk~0Dciu=q|nZgzvPq?Bk8~`uIiPDGs8`JRBo9dW`M>bib$~Y?%mjVh! zv%e+w>+Z;GfI4!M@91KV?DT7qVgS1ZgzYEa6dcJK>STAOQH)+#oe3}cD_DBg8yULG z?AKcas`zlEL{T*8TJ|RA&_eEX=~p4|m51~s#GvQ5M@~k;=#&#Os3-aG?KE7Vc#<3w zrb--c$^i~8$$x;*;5g*1>N9TG%K%i|NK08Q*MO|wkT3|$+oC;ddfR@x`Wd?c*BuM z$R#Je!S4!6Al$+;8nBP;BAM-y8gC)vHGmP`?L(g=gfD^Xdd;4yJnQ=^bu)o!{E9XB z&Ip%C6L;&JfHjxB)M9q<>Ai9__EeE*yY5_394QZ}ds&uq=3s!@*$tepp+qXL6|_#m zb34eKDHEwE6tTC?MjywWl{eL%uW2-OvPwm9qwSH5B}gVseKZaQOSz;l+r$9xYY)*7 z-a}+0gI&ME-%CT-V3Ggsk~Z3=5YwHJ+;NB>Ld`9faq$@x9B)y1ji?_+3MRDJvMfsG zx7ZsxqvF$VIlEjxL0C(Ow|wYw8bxptj{&DJ^RZToDt~N&ADdmGq%p}JjzNX&2TUpyKNV1dCP^e zkoemb!oRtGB5?*JOUhbX1|0c>!!BurVB=l&<|8?_Xx`LNgurbP^F`8N_ zqqQ2h{wMU^3Q{#538Wtkdch%U5r!Y+Pg6I1c_>jbg$+9hvPSPc^ZeQ?mQS@VirS9E z>0vFW2Dv0?cvgtBz?*@-nV!q0vn6J4pb#RLyR?E)Jw(@w{1?TCqtv$Qk1bQNfW*pv z{JPOVAqy25zMniDM?+Ai1*% zAv#Ak+OWDuDI{Ul*3gR~B5e!D64;61t(h7i3u%G&o~Z|>VIenhHiqX%sNx4-I=P&g zA8v&gRKt!Y({~fAT96;R3m5vKtppg`EjXUvPF}?G^*FY@+$4J} z&yK{La?^vqxcW?jZ~y+8A<5D+xY|qzCn^6%p2$($UTV?EQZIFrRp2aRFE#wG->yQT zXde*VJ+=;YD%@llyXEFTI8I+|U5^HIi z*EbJw&PqvsZv1E=&H^fn3}!=s2f(wX4Nbc;<_6utnS%}u`uXHUjZD>f$?VZ%u`0L5 zqb@Y=As=}d+?hM-LcUol#_dewqJ@|TzlB3m)%MeGEWVh*md9Wyo1xg!+xI{3sVv(V zzKtT1oUIfyUZkjV z*$hakW?2x6uevZmw!P;+75m`+)(?h7HAv|A47$+g?{|OqbGOO$;6UD3-HqEkzU$iv z%Q@n(jYC{j1K=!QIU{{qoiP~KzBmouX+~^Qw^n?|O zpK&}HTk#h-lto`Z<*ftY@!-O`$dcoDO#>G2OnhiS1_5QjM@rChQXWFlD~A#On#F6~ zB>B!@xRYaC<03>qu7U#mUA;!sQBw=xT>vFBL*gewhVjmsH;!j8EqVm)?4o?8iHF9l zt6Y1*sGuO(X%HNC6*a5jY_q$C;wNemLckKV^B&CHVl44TsnxJ*dNPL*RV4KT*)`I2 ztQ!OSP6Ymrr8P&)+>}4)?jh84B78fuZVVKF=2Rlr34Q?=1d_Oz$IJdipL})y(oRfI zvq;LE9c`UelZC>Bo5iroR#1LOP881Ek7m4O!C`CnvFOUI-K?2w=~9fPb1mptb0$#f zAl6=7%T|MC7_7ECKSj&k*oSRH`XURDdyv0Xz|K%QvM)VS#&>KFdvDwGqU$-U5G*oS}=RGjKy z;>Q~T(|JPBiP};4mU!<5w<;g37IpW%b4}s>!U*Mpk}P0S5~C`tuKf!SLVzfmgtx~O z94kr;gUx%z#|-H+q^r#v=_4LjADa<3`#tqqllArvW({Mqo)p9JfG?U}HJ9X}X*?&{ zmad{Kc(!PcKnZ9q-RPO7BGJ(SxbUvWZDF0K$prY&VZ91BEeqUiqzy5Q8c*K*8#mrC zl?>xyJr;aH6XXVy^$$n+nUnP(IJ%qtO-Z>r5Gtoyy^kJ{f`CqtsyT4T%1FZ%vn8Ck zfVY5PjNkPiN$^Zf9HZRML=X>VRu}r^1T)MRG~M58IE8EMTH|V{^Ce+-RtUy676_Le zl|5MuB;X1rgiAmN&&Yh|^_BN+g7Saf#EAH5La~>0oTh%K*>ouWD%PG|4XR$~%)7J?|@e+vLhn7PU(&=z{TI9sa zy!+CH$0@ZIu!ep9x<^x1#>-0b#c9}w_Froq>GIi>U9la*xt~Yo)SZfmxd@$}qs#1~ z*<`_)lkdyW8ffQT1jrUwCn-m#prEDe?BeKWBEB0+2p4hm(`!Fth*K-PN1w<#oB*W% z5~P6LEuV8|)(Kc$KG|&FDD_QOxvNiyCgD7F-lD}Ds^V;YJm8GJhKbNlNhr+UQO58M zX!4FPhPuyZHS0!2*bBDIQ*A4WQzZuW@PSl&b!)1Ytb-S@0`M8HYmlovdL~>tNF67t zHHRzCtee6VYrmAgE5VDee-;tky)VvdjpQ<&X{gDk7}zwFZOdd`G8K++$}*kZ7>*-} zgtt_tHS#Kp-j+q6)5*a**lwEONKn}uwG$bau!k;*9^Ez6^M6OhxP<3MavIVSv&pr* zH5&DiDS*4(%Ar%fjUZRn=gdf@@G!^_eoNqY0Sph2ukxwNYGGr108(lCnZ~c~E4u#Mo z(ffv7Qt&nQyMcHa{`VhVs>A6s=fOoNE+G+|TxNQ%+k-hVK4AMmeK~X8p^t=@jctrq z6!c+rDzvQV!Uh!+L`w6q8(59;s{tFey?NQA8P>=`;Kmwv?`v&?)vxYkIihhW>F>1( z8!OB9nJrNKNcio-SAYgXAj+QpueuBWmWmw7TLyLw2x0c zN45uayHF^3yDKWNxn`o3q5F8PlOX?us@h!$rO?~!Q-V@2HH_3?KdlUTe|w#-hjAfm zC%WxgzW<2kcvcO!PgV;kwzdAKu4nvk%pkU9kQGSkkVtD`FfU|bwB5%a*zhp_`~Zlj zmQ>t1b!5yCt+6WKe7fgR7U#z5>Nc*$LBm zSK5u$B*UyOSON3wF2$<3U@wRW8ahrB&F=5P*9qm?yq-2I2c%v}T#1w-;{GPK`C+{2 ze(n_93=F#tx}Q_x#!#!5*ba2TTZn?CZMW0vma(C$HDRnvnaYP)Z{FZX+*_2(SEw~S z&iR{Qd`_a;bK1s;LhBbR1fF)udZG2Y5b*lN*Z)zT{J{Ph!hw~$F`7jn>`}q%Y_F~a zhV2d-UYCnWU=fwygUqnG3UAxD_>7d4{A3u!vX3`R=vzxPU-Z`vLZ#9Z4|mj&GV)O_ z+~X{^bZ4nl+k@b=!*Nm~E)B~w1G)Q?;oi>J)B*A=!vHDAdg-UDb%o-fGbo{iud2=R z$q63?7R9T!jl^@WELFq#emuwgTari8l+Vj&XeOo;zkTZKQy9kcLinXbvOGh2(mBe! zm>@h_S#1Tm5`NpA8upT0_N1sh8Cf1Sb!kJx(gj+2Hw^X^%?Gb5+>jkp%^)80d}{>w zWdJEs_*&CRFC>|F4|z%%e}p|6n1HSxFCyf=@x?_$U#(E`u}T}%ru=j-c|VWFnE!RI z@Uq6!i@qC$QKPrxLs{*YjK{9t&VLHUv*{vNF-8Y(U!UXYhA?(Oro=QhG5>OojKjv% zn8rC{Y&soh!#9|@K4TMfT7QK@&%>r&wip zu;0P&>+#tDW^h|#7@bzOwLGH_3`flS6NbK%+P`k8V;CSHFDL)70g`%d&I6BfI~gq^ z(bnWGmK$?J?_j`+qPOB(a`Pk|K=kZq5BrEwntY@=qh5jsV*m-7RyLX;6sClGqmkbr zR-6eD5HMy?{VSLX2@iqZP|4yJUe^J`es7O3Nt3VBcFXQd^yH7Oh>F3X0Puqmgv`Z5 zkEl8QC}-_c3!f)IB&U2^}O< z9wTReSTV79QI(xc>A=@XR~j%$TS??`QG{Km1A$qX9Nq1w<35rENbpevD|~?KVSKqK zP7sIPTd4q>I`8*BOe`Cl&|Jvw6VMPzX$$G0d)t(fNvu#3dy*}PKbk?#w>`n?7m41OgrxkEzAX3_1 z2ifvM@|fbd-4$d>aL?iKlF-uRU8`5MV&hbxDqZ>vL+qI5As-7cJI^w!=?0I7<++RB zGW0)*rc{65yaI%CQ*rVJQFVK}FO6h96ya|2dmWU{N(mC=5HSFX5sSCT(Do1i!30zY}*)nkd>zeP5>M~@0epZ zISR1vLNGWwyc8OUW+o_Iy4UL0wg{H^Ogm!6Ix2-$rLqGvv}l;rBXk8Aeia;$#^aGA z7f-^fIftum<43zzA<}m9@xD#X%bu@7LMitdu8jAO!e9$H%8J2B+Q?z8Ne*JP;4yXI3F|IPl%DSj+>#c_kT zvxR~8K?k6X$7xc$6H?!{Ac!ktU5#K7px;F@QXp;#QAn}eqGjdFkZLt=&uh}HB&c3S9^pBEJFM08jPzg3@I*XkPJ~BE;IQ#sH-{=ZE+VobX1PK z`?_uLjJhPF56ijkeu1Re|e`!Yt zjr|I|$;b0~bJ8*@XHjSp073-_`N@GHLm<-?XORLv{kCHdeZ;+<3&ff$RJwZOLdO)` z=5`C{XC&dtr!2$yi`VS_*fMzqIvr%oqUVTKhtNI%W`ECZzR}yfQM)v9lL0}JLJUb7vqR*h>#`<;Fws|kK zqWx$8W80e=t_eEa0YC+!upm=C{U=rPgF>xeBn$^~oYVB;=)i%h+bn;$$h&s)g3+km z23UFCLpniybEvY-bk)M)@O|wwGPH#O8SFMO>ruVSdU%`D{CxY`9r7bJvJw1>!S)cd zRm@vHxSrZB4T@IFiXqk(NJ3;dB69Jnq}tD?IY#lPP>7fNjRa4s9woG_rn>Ce_$Csq z?=gu3Z|bavixDx02=)O4(CUrU!(g$?Ki9pfG{cN;P_AxLc=aYKD*%?o3pac3>7HYZ zT-Pt0m`LegN0=5s;{!_h#uO@uN^TIrhVgP+6tVOR$gg&pn}WQus%+*Wy%%2wDP;)MYik}&GQnA$6Xkb2Me zN5^jz%z1{@Dv=7ux#N*SW`Hdd>>7SID~Sc94(3!kaq!~?a3hpq_W2561tE69YS9k60wU+L05>Y&S*#4Y-7R<+hQBwCHFZLJ z%XHUqU2ED|Lm$?)%q=JOHICrcorI<9PAA7{r@#R*>knZH1Dis-i<#cn;>(w+?U z@Z-hW-V|oUy@o*_(7C8t(zG6PQWLCI&YF-E-^}>_mlnYj zIxs^fJ$7NIf8emN*tkJ@(A`}=O{P?Ma@{lPk~A2`kGZ;McTR?hGc(EM89CPB`S?zY zbK|CwZ)^3nAOMSn*-JH0@0?07XA6kB$e01qtUU&p9R>}|!k9#fr=FW-yt*DAUb?8e zJ6^EQdi11FdC;Ix&Ob|XcZS*puoKtYJ=(8m7K#VPhfb9N3=b%wPEy~<_UCo5A%AMq zZdUqALS%p={!ShAI6K`iH#NNV#%j03T4zHA3Eju_PhF4a5 z2jqq_nxE(t<4Hio8uHwW(?uu3!FuOv3`_UWYY$Vf-h?JM(84hkE%!!B42fn?cm5eu zoz7-30#)^Tbt4?~QIS(1eh{zzu1%9HswW=9(FmZ*~d$O4P5)8+avoo2|yI;={ zci7=RT)u0UJYfKyJCdVA$actxA+)KYlhD91m`Iz}D9*o(kM)cb9v@PTu!d5RY^)zS z+`pQR8oFPmHN{;?s)3(zSq>##>FX~CG=ElTqV8o4?FI)9D(>yvCX(=nnekAk0wrfbUzxQshc?1ff@x)! z{%;T2$i~Aq{T~88q=CP~>P@Ua&GiROLDsqboF#EI=;}Ke_U{4;*qjSOj0kN9%jwpf z@I?CYKXEN6+hhmg$IGJY7eBK*}aTcYSK8?%9M<9!TR*woV+68Ukjg z6Y>fkP@_~edqM>NPTD&|Y$yz6m?X?aJ+*AiWuL8qi(i`N6H76IHr|oB7cs4pmWDEI z;e87WHG7s@V@~^!>i#3_F$jiDhme37uwbFzSv`zi<$CmymN%XVb1A*|)hBi`Pey^P z7zZ9Zc3M}H8RvZFIt@P_&hsrJ)em`$yC2|b$cBj9-IsD6M#^noO1nE4yS-iBAWAL3 z^(!6z#w>d@6zgx;{*p)KT6{~Hxcwn^=q#<|lt3~R2H5km>ij)s2L7Z3sm(;g>5UZY zBvw)CML`n8rgM8)b^J9^NC#521kJ3YkBDD{UV%RvidH+ADQs+bMubkw-{Cd zKp@*tv!ojwygwgSoThSDVTNqYvcOW+;+8R9^Sr^XJ-J3=}7u&LW=9nQ;J(0xrM z6+NkkbZRp=`7U`HO!lTbAYN$epv{wqLW&i&nRDDt9$`9|OwQbr2CHo-iHu*)xMPH8 zWzzv}j5<(<`SU~t47!&F%$LYZkc7Qit_$Yu(EHa$ip#Hp4JjX%(H5DBQ+oC$+7*k& zzvM~>F0y$(_%Nu)8*1pJHs#QD7Au(zF#Q!1U-JM^&g|H)IJN5p1v(|c_>)aHmYu`3 z@@aN;v$013Sq-KY8jM$RfJSv?jbhB(&1;#54nWLu7Nf6RffdS$SPUyn$qo?mtL?2+ z3;g+*?no6k!JHb|RqPbmr$l8d5acS|?>K&cQ*6qz%bu27j;>{#Qwy7)VPETn*yP3{ z#b)4W-?2SBAiNEqQlXFP^)RvO$fx(uqpA5I9vy>i@RF1|>=B(ja>NREEG<2(#qBzcWfBDXPJ`s+OLuAR!!?z^Q zjX;aFCSB`L`yNyY!7yYq=V3`k8bYWSwcqRm390c-YGNyP&YgEMb=4I!YdEa)O$4Q zDXsEb`4g2l9~r7q+GJkXIc~a7cn=RVQz8`uE7f3^jB7sUN-lYBi_hrzq-Dz?!O27O z-3#~OLp|Ie0LeuUcL`G1UOo?{PQuAk|7cX$FI#`F-TS6qXMqAdV-+42#0}qDn z)+OIFbRbl1Y**sLi#f^S_LjMIDpi;1yG+i#s?XCFz94exxGgxuwC^xRB|o|OcH5Wd{9ZhD&zLt z19b8TYMF#v2jvkN`>NF$RIGr-jjC=Q$kB{Q`kRa+8N<^QutrhY)1Ruq%Vs#=Af+uy zVD?iUa)1D)DQ5e3rsz4g?76T{!d+Bep2kkAYsXu$hnsPmJ|L@wibM!Y9QAGr=)Hd1 zGYjFatFB61UZWLbKdL|_ieJF?%6cD!1XOpBeynVrOFnf=K!r!D2N6}L8xfu56e}#s zsZpQEoy`|#=>pTk-Y}k4S{2m~ZRe}^T&jErOT~b&03@62N}U}at_n|Fq8*@-GuK<- zmTHJ1C%1mLdm}#PqW0qQ-Ar=dHl%CyqnyOe(NV;8W%cF(;^Pag!p_k$qrf`u%`J$J z_v0!ECiQN>SaD0syjvgrtPN4|bU7mGdy5N`)bZ?}PT>kpv9W2nwcV}#$N%R0pzW9ln4)uvqt=z*8-Kl)RV@lOiq|upm zymHLIK5ZC>7}vKEN8ZwB1{jPD^{Nd)UsxS1Oidc~Q;K+L?Q1Z7e2`L?r}srSn~M3q zrI|<1xD&jif@}_18vIrb$F8Ubg^D9Z1J-ZWhI{&nY{qITC`bwV zsn`=?q(JZXHBjE7@!Tk-qsuhIHC)?sG~m(EkYqF6s9dPNUnD+z%@LoA!2OZ`q}oW1 z!0{U2*7W_@)E3kb==|e%3t+0u)}hShZd^98OdVI3()(as4Bzxdm@=fTpdanse$^#i zm%fRkS44}*#U&k8KlmuTa&*b5tgXNz1D%{ds~Te0Z%42qlgAGySgF$GdYueI$`YI4 zd9ucY*6u$>>ifAP3U1Dcdp>Q7AbF)%>80WYe?Z(tgu3p^O;G{$SNa~$ie&{idObFg zE4$2rzKIs?7^TY6KiwCo!IeTLb>Fl+bKu&ps7=~{@ptwOwva;fLS**j7_(M+dvUW% zcHmb%P2)dt?#?#)wlJNO301X5szK4QL$wWAPTgB(l$4~1^x8YqBHHS)cSNL-L{#0} zAh*gU=%>$PSAO44TbW<7ABeNM_k8)G0wbfJ-?dHB4Rwd|i#A|AqMnU^*8^L_7%HE; zK9fArOFCWpB1r5udxGu?978r`+%gNbdmo;pZ2IhB1IdCz31N+R%3de2#fC<}un0NR zoH_N8zxx<%3=ijrUYrFjuS6f`YBz;3U@)DVSno=b>7=nHz z6N&-eOhJXd*G~%#YXS=_Ertu;O4iw&@^(H{wazYpX5%NqTe?w#cZ?K%UvyTsww(gp z)}1gf3At;F{8mj}DY1Z%w6jKPT}pjgLgi{79@L3L&$)h;lnu;p?MR}u#=;sZ_Z z-aheFUZQb4ggx#Y6_MT(yYf;+(XknlUCAlh6_ZZDKr|cp8La=CX;y$o6?)LpftK;J zPw9%YOHGc=ofcJPk@Ww^+dT(a60D1&Z=2J$jn%fMd!}vMwr$(CyQgj2wr$()H~Z|f z&)w&pcO%}5cya%!m6cgpxiX_xL`BB>ejmavlM4K=5ZOCXAat^~VpYNX!)HQ~Bbh`o zDLTT*eYVh3_?XjRobq$f!7GfucEW`p?uuT|+XXy+14XYHVBF^DEzD z5Gc#t#I@E#kLXiS8^lD;@!mZ<+%c|$VIE2x8J8nrZi8;|UH*+{v-XfakPGq0y0uqO z{pB_KYNGw3%)B}h7I7@2<78qYHk}?w9>wQ#+WoQ|Y^(M+RwsR6OJZK$XAj8Ej2A4a zU9JcB=L^NPE;cwq-)LygmP53(I}#A!Yc1wi4{*!Z)fcszq)_MTmWAM;rh{wqAQpmv zVb~Uod6+Z#S{i$$mZ6i_aH~S%FHImULf2ndm&pirPe^MElR~j6MNTPT%|}e-%@%GK zneb{4T09H%E3UaA9^p(qm3yd*#Jlh6H@zUv%(UY9sPZj-r`j)Boz`eoo@LZZTs+lA z?7-T)-w(PnS0U&5ZBoMl2XEal)zPg7m`4%y0?i{c%~Tred-{%dgJU8(9o z({;Nk=H_O8g4@qKgBZr$Lp`EiXjN*Kn)b)LTw1dtZG`<-lmHP<;)|Y7EMAGJJRGuh z{~$h*llXWG11)SHP>N-|a;}tyGDrjGVP=S4AJsC2vgqp6Y1gnSAzW2cC%5N-8uj_b zvn^X)^CxQG7wV-F>30emlK5GGg9MJAc#0w&K_p7qVz|wzN*(WSd=zwb#yvs@t3N^qjWC7r=|m?W1Q1bT?RUrfka~l1KL`98|lIqfz=zq!hkKU1;Yb zJSYQokW}Ih*4vD@8hgVzCi+MCd*y^T@N;Cji_~od)l09#zwemTfXN8}ND9j57#iei7W)I}fqOu4T7)U@i}H!*vJUIMbQbNL}CR*N@L8HExum*q&zMU1`7! z8?QS8bhDFji+p-+M!!c;W>+g2h#&Sutb;)ZKOn*YT(oK|pGWBhNA}Zz3&>7>NW7jm zbhoqWxL^zF&Zzr%$TqGXAZUBS6AYFIIP*$t1g`EwbA;sAgi7$5nFcel|m2I zM%qbs#(@1=7I~;zo+ZSK7`RZC>XQN6S6*Oada6Dv z5kb>M)}IG4dmYuVjWi3w8HVb2(Jt+-E7FSXgc3)n$7e+amMhrH+WjuT| z3LzUgsjzdyOK6vKW6J&o3vHij_unt%0N)a3Bh7{&eiF(RkwTUua7k=C6Ll?p&Z7uF zF~Kcl1SwH5SvUuq#b}T3O=Vc$)*Ul2pyeKwjyj&?!83fa<97jU6In zV(89r4Q+8rZfcE2!fp>sous>)K2bsc7j_KIe=3rjKPQhK%2pWogS;8*XH{MhoC`zz z;tQMBZW$~TFho1MQKuu|o%$8qYrzXSWmSM3_@ZU*8$ylVOp*|ky*wFLo~n`9bo$Uw z<)ev*U>Yck`sSN=(T}{Jme|pdy-G03#TJb4Vn5aAw5oe;MI%m8i80_*E{DD=i)I+ZG+Y#w=2Rq)r%GBj$m`97 z?VSde*9k`3x1Q@oc^KzL%@8 zkmU{UST32;GCCkh&I?5l^$1%WckV;vj>8+Q3L10k%9H`@2b^GJJ5*Qs?g$GYjRT}n7O22^gA zEADT)$a;jTffCd0B-(NIY7ZAFJr;})=I5^}8hAGcZqQrooi8x)2l9Vnt$%prdE5>Z zs6%J>vz35(0g&U%*_-FrLV1SaaOf+v{a`IxSP%)`d9w+eaQJm$Deo}+%?D=F5V0Yk znBh^t0&YyCr2f#_bi#Zspu_%FJjsaI6ySrI9g}C~%%S_~q#!~P`e^rH{R7ghk!NT> zeSk)gUTJU=d`A5Aovei(gdBw5x#TrlKi~DM$D}5wK{Z+oZ zGdyG%6j-1K#${2Wp9|uo^lV$_2y;VhwSj>JgsAQo2{&({OZ#l%HJ#`wJ(8WrDfEF1 z%xR3yyalLPgT@%gPE!tOPVq3i!^@BZ;mN729d-}Q6p~!s=*j92ic@Z=%TLqNfu0C{b~e)3ya3#5;k{s%2V#cW zUm|ck?;@`=)~O&K?+bK}(O?OfkZuGeN}ybW{g(q^x5iavld(rYs-yZ5Qh~g^I728M zxxF%1Uht}VMR>dI?MsuvbkDY=TF(eHy2o<+Md!yj7^H~xs1cCLcCOpLj5!0u8R2%- zmlhtJkGCFwvPg|yjN!*o{>tu>eLN0Z8*N?EBpt&@cTL7x{wKHo=t{fl^o!}1(onQl z6o~fc9D3~BxHxBHv^$Ch1O9mibW5X=;*0d#j+kjbKkhDXM07NQf-tOw%99gn@;!rc+e0 zqB?{6wPQY4Ta-M@_iI3H$L_l5l+yfScZGC&_1FEUeceUpbzS?E0^{(ai@i8hL@Y}W zO5=5gK=D=8%(%@~gw`~WNYNUKZ*0KpBm$^no^T&nR~Z5hk~4ri(?ziU(K+=~t%DOB6%abR7HX5OBzlo3Dts($@nN%ZG;nLwY3bx%6=yYf-Lr} z#-N$XB%O)q9t>Z8)v6ZM4btV}31$y(2n;D!4m}Y=y8lT5c&s!4-96vf9$VLGo{`%zjOLMfcOmCtBhe|Z+b z(pMOofyXxXwXp@JR{VLn?KTe63mhfrG!uuw>xVun|HidebZ_!CbfuUJUg-?yr1e|+ zXQp|8)ygy-`Wc4lFxq5w|HaVJ{^{zjO~T}@y>*2` zCG_}y;($11woNbS6E~t8L+I-3-)SK!tmBSfbn($`ZbP2dD6nr7IXM&?C!h|DU-Y-S z%mNRaIc7^%EA`XI@#lxkcU4}E#wQGkjO;mVb#>pLNj*$P48{@E5n2)#PRMLkV1Yf#LB4;4^DGkQHu3M;8ynFj6E=$P(nc0RtxDmB;p8L6-gdGN|5BZk8tpfOH5~gq#j|&f z+;{8eyb^Ofo3w*Cwi99n@4y@89pn%e8+wJnf2~iVK)})fKXNr4d54p)Q4QC{==#FW ziZG68yr!6xomrFJRTF&sqgJVqk@kd_ml({i`go= zbJZn{QD@z1=j06cZD)cyc|mx&4YLV~x9MZD^aaW#Y+@DR)k%{~IJ=kK?b?X*={In*}Nh5H+%xKo{ zuZD~c0APO!!fPpIDQfoi8&lZ;$W%OgkkJ;)#7DSfT=h#Q|XZ25k=Ow+aco+ zdzq!~Ctg`j00RX668jx;f{g6%8zMkDT=14a`va{~nXEQ41V$Jd;V4xJp~nbyXey~$ z;}M_52fae2)8ospjYHFLBxA}*me!{xwbQ=A9Ss@}`i=DEiucQbKA)joEZKi=AJ42= zH`nIlAqXfKawbXV;9M4#<~)i`dg5PZVO zLg2(EbBlu-=pivvaNA`CFBB;6rZ=IlccL>+g;RkzjnMW9fBcgvfi&uTW@(DaCfn4s zd*6W12~WKF55X=LAkH3wrv<|v*VKuQqzm1fl8&TL^^#25k2H!t!=e&~c(raL(lF!o zCq+517ga6HPDqoCsa?;M1Xg0Vxj$wq!-mjh+H_pRQ$*J_$}nI=ft9txo|DH>E?6)X z+|Rw=w|o#x14Jnz470MrYvc46#qaV)wzKe1j{?-J@Zhs$aopNy-e&CUaWjc1Spr9} z@ZQ{Z`xqa{mgymP5>oq&&e%f(a;2xgnYQ<@)SUTX>Wl>%914ON(xWjnMb%PiBZLzIznl_djDWY@*K>>F z7iV_34LpI<`bcxJG((4(ClWw6RZATe;l(JNtT{5XPB)|P9la^xIH}<+;I=qKQ}L~Z zxucI~B@W`>d>S;izh!|UL5IgD#wJGS&tj4Buu`B_>zXqce?Mi##o8Li)EiwF+O`Na zmABU`3+gcxX=_Bf5TnU=iE9-I*!an%*Y5+)biA6nx=!D~$MDMJs2Z z%aw#Epe_19hno{)kJle(BQn2e57Xs2b3?-dvlf_!KuRWuqh{6943VLpEX1^&e*g76 zf0`dUe^+}_y_lh!j9bbR&q~u%72Q@}spYRYoh2Hx`deGWR;K2?#(OV;RES|GS<2rU zs5#s~nvT{JADdho3e%Dm2G0facEId8*&2!tW6A3h4=W?mIA=KNj`uOJ`j=?0)Doez zY+*3cDq`?kxH!Mv+U{$EOQ0VC>sk^bFO}_exN1N~HAf-l@LPapGz}9G^rC?AjZ8fBSr1EwGS&kxf{MZyMU}#~mX^(PTFDk_ zr&|VQw_}gGjj(U%aSREOFv8h4!JC|t}GHmQUH*h*{Ns{SGigPp5JkcKpy z)WLZrSaji+_A3t)C+^dro1TRfOzdgGQ2zAsN2%XXxCBRO9g^!7fk&vtfB5Vrmsmb|5S2Wod;KtZ2mkgoA7*3@0? zS4KPucSF9FPFQ~yeDV415ge_reIBv+F=SY!uZ#0rwHLRg#L>Qo1*YEMZQ4acGJ5^k zI#1aBVC7t&z|+%Phib|3k3U-{LWUpK)q~rXF5;lSYFscI^He##yF#{K zYlly_D(+905!1dXo944-CKwYJqW4`&V73~UU}680`VJ2i30l`hE!sCo3^6yMTt9#U z;*F@pZ9{y>wfpRMq&d>Qp9cYL*TbtlvsjeW=q{dbZ=R0~&>C+)f;9 z;voQrTyjf>Fkqv(=0pT_&7$S4SZzOm`Q?6{&spxygptJxQr0-v;w&m6rw077I4gn^ zlI`Iqfyv|F9hhHL5EXbjhI&1zE@hHxF^MDQS@?cjtrt3tr5Lf2>x7Bg{%q^|2I6+NMaT&w=_%B!uEfrC=8oz^1X1WA4=CQKX?z%Y4x{RVf)yH_pe zuaUwEU6A4_v&0~*LsJ2;{a4+*rq>;JzNs{HJgd;VW5)xm%N1+{+3&~{ww>w~1p?sG zG+dWU%RW+0O5^i&i>z(y!qnbz)9`l*i18q4mzvy(R!rana;G3){MVvxL?k<;jOo(Q zQRDr0JaoZ1b_H>MOhZou?r82#5H>FnT3WOA0MU;%x()TB9}+aujh=SEL zo+%-?6^9vMQ#$vz*>mf>`_E^{M%{xW5hH=&B%x~#4Q};MMDIDW&xGS4>EY6x6Tvc+ zERaPYTdSA-53645sB3*3P&MX9Ki^-+pe3vX%y)*uqx5qX6nOP;>%wh123kBy#mNrs z6&iR?Ja+R~&S+o9LboeQ+iA#+5yK__zJuR&LpoF9olw_K2I%2bVyrtK!!DB9%n)q# z1ob79F(rG@Zv^r#DUwL%T>F@J%D+H0A8y)NYuQ_4Ib~QlxyIk0Ih`OU0~+Xhl4IR# ztmq7H(R%}S7T5xJd0$dpO){78uTI^9Yi68K&mnht;?)9g7FMR@(tNkydyo~g)Lln$ zRzm4>nM|3uMhCasOFLL8r(rntzZ@M9YNU)*afN=LZ$_YrV;!3L7=0?X6kF1z2>-Dd z6y<35sbLHN5boU{OIJ&>+f+7B_uB z+mB@1I5$^g>Xcy_f|-gzeq#3*4}+>41az5M^Rc88+fm%x?^8Nm<4Mz2Kp+C5+PJL6 zu&5p#@6y9{u@^D!EG23OknE3%rlGG|;|19%SJV(s2Ww2`F z6i}%Jt`F31ge8O(_*C3-1I;k7_i9mc7}rfThuT=F8DR+ZLLRupPSEcis;^q?zF9=k zwy*1_+5G|~K3rWk0BuQWlVz@~8yj!UQq8Seed!+%ODK=(V3o#-{Ej~fvcI1&&QrB_ zYI4j>V&$sqqye2w6_qhaU)XX-Cel6NO2|~MUr@h~M z=ADd9(qT~ZWKlZEWwG3!QKj~aAS1?T(>2}v_{{{h)tS!Ly(raQipM4~9Y>4h6(#A% zbI_+gz=DJ}Z-7u{)(7!nd0R(xSon*3Bu&jqx-eaN9W3lRZVnRp2 zwdT6(=w#c`X}~3_E{G(kEGD(wef$j8oBjy9F`BYk)t|(I$GGsxE}GAVF99}hXz!1t zRc`SslW4R_nA$%%frf=xe#RYZuGK7v`jVggY0u_9D6)n(hKnw%lQ}zC{5bbjv1!MY zr?dIo%O6TE3n0`v@4_;urjDTWZ&8szLgm>38eg23DOM%Y4_gQjAp%E97Jz~YYY%V) z<4L%8)6|?6pl0k%p8E{lzITLtF`T|Bs83WL;KK8O#rHx{FDF7_XQzP%i-irFd2}Q! zIW!W`=4X_80n0-CeYLL+TA6@Y^nq$KYz~If}`9;Z)dKc@09&K~*K3gU@LSXS`DLT@<7LMC|}6 zXkjY^@WzweWXmgt8p-1>&AfGR0?J+YUFT%q?k#4oGaK^Qlx6(F8%5ngsFydOQH52C z=yoCk?fby0hhgBb2$$}wdHC7W-LB#3;qR4$cfX>~4XJ56+;-*5_}Z5 zG?oYzxMZwu-hKM?ynz){uPG(nK8W}L`3&dHdin%?B8G1@399|xzNrXw)0^$g;YOG&^V9Zy(j=pj1U)*}H(oUm#cD&Xm<&ziU$w{P8 zOI5arJ@UteW;y@-HyeLmD`k59mooOtYBw>?g*A5?p*$SnW$EIZCXf!qamoCw+ zB$9w;S6N(^#Fs|CFhlcBt^DVYn+)^ewwtQ(H|BF+!)n8!$4G&!^JH&7hXe}6jU_Rr z@9C3o$PX2uDI3jRZ&@3enjFYaAE0NFZRr0=;W4xP4_56T5bystpP2a{0-BzKqmZed zJt5;iRN()z@HqeP7M_ZfqL_%vzx%}UMkY@G;fh-?M+rMq1Cxh!F6<8~NXLy#MlvS^k|T{+DwsC}`tKs6og04;YV` zosjJ>j>p0Hzu}3ETn#MstN?aSHjYMy`j!A|Co6p;dj~TUYk;2BUnS2$&)V>xt^Wz< z>De1uTN)WV0&M?L`e)_eH8rv~bFcu|S~@uZ3~a2d^Z=%Awx&kb|0&l294z%5Oabmj z_BH?;Ya_rvP-I6_dm|%&v5k{Gz}U>$2;gAm3UDxT{@cgM%*50YU~TsILIWF18|%N- zR%ZV!SsFPw0F3OM^eh1;_C|VthXv?40)GCNuq+G^0f_!pmc;=Q07-xpK>Dw@EDMnP zYc4DNhq|l`Pywg{)c)Gb`u2JT7DkT$F_r%;|8p|`8TmH;b&HNXa7 z3$O#&0~`R304IPmzy;t6a09si$9;|dc~?FAf1dqokqpet9L+2Zjs6=u_#b%Re`g2( z@i6{V98bF%;AC;a~eO*1jDu`~R?u;$2LD=$9R?a`e@#Vh zG$qURvXv*5>G!A8`F+pLe~5|}krsf7pw=hsj7ZU+Y05JLQ&5z~Cg+mlqQgDlvGp~K z_IC1h^>Ow4iFryO>8(ItV`_RMBY}8+!BgnYO~k=d0`$IIGhl=uED#Kgz?htzoO&Zb zea=t#(dfoUQ@#Xc;%A8q3oQQt6~S~5ZVA%6v!&6En}F`R`KtshxIJ)kEAMqezb!~iU5W@oT-ck~Ud^x$G^86eiUfT@6souh%y zeF%VtoSVqezY~vsJ!44BKvUh59b#!I6Zwu>&z05y!rTgBI zjotB!qA6iehqY(wp}Ht6t9G29>{H?y;OK9D0wEk&i~AZ_w1j`rYj& zsI~OZqF}%1-EBcw3PxC$+%W&3`dZGOg_$>-=`S*sMpj@hb&VB}Z~OP^CJ<9BEX=P6 z>A{V@m9Zy+AFAJ#AZzI#%P?PakJTTiK?8~4XhEgl?66Nd!7x6My=sH~UpCg?1=wnT zv-i2ZKnjbFOyTYP9v>M3&NbT8{qXqyA|DtXxV!g3xziDd{7WjbIyyJlLYjV8X87Ie zEPlsa^UJh-g9|S#txO%{%*r{lHL$*NTYW3s#H_6h&fWq>ztw?!%D-anyN~dp93ip$ zE9h6T93a(-jf%OK^^OpvLQTJ~j6T>pzlsLFH(WyO6t+e)b&5O{Mns%bf4G2^yjq;yoTY| z1YSwiW9^OVEvQ)qrNLicBhve7LsqXJT_f!0E;5~L{z?s3dbIz^S?h{-rW)Lk8h0-j zEpi9D((ALm<)-Rg@TA^4;U8G3Twp($s`)0W!u!T07>r;kHPqP#jP6qJVs#gpJ zK{%Lxo5cR23JF!?1J4pDLz8J<15((?BowbY2&>b)H7@IzG3QOzLDAlPQg}m8YL+8y zJ(3&@MpyDznY~|LZW(nWBQNO(!mZaJ$h60dN*_JR*nE6Ub4WP}tsM6zAbP_db}Qq> zMOPB57>!rZEy~-u9EO0sVD=QbXjn{M0ml_Ubnw_nMRUgQ;M`=7Ep9ewf5ue*-@?_% zUt60&PBUrB9yv6`IfZj6x}f##R_5wY$SgJSM!pJ zEkx3Ie7C+7ZGT&?$*{R?h!HDpItR6GhY+eCeBm+ZD*D>`_1yA1@`*+q^@@TI)IvzG z&dI@$g-WkwGg%mqJQrC;gD72FY+oJFpzYprAl#?+OUf=&RT@C&{_5qxe-K&y%KJt8 ziqAyq4u&(&`tx`F`YyH`GzC661_}CgFA?cl!3-nOJN@f?UPc{B%)y{7h;l6>ouR~? zxa7JQV^;$BN^Q_`IGjC?DRJ?69sb1n`%cpoU%Z`#30<+vCgePVox?JhHo~;3ubh)G zH&4w7B}?FwT=R)9Qbc=zebflNW4SAO1lrvNQpMcpQ3~ z2(Is3Ne&+3R50k5Yl?*}bT6}6B;V9Kr9|<}WFB^hR>|H1nQP}A0WBwGxkA43vz9X= zdW&c(NbHSj_9E0#T`G|QHZ(f~qL3L+a%JZh4Z#lKB%wfmP|}r^TD5^$G7v4>aGg0* zs}sy;Cp1~AUYz9*)wgLzfPXyp_G9U!#+x+ohBbe23-XR&1(+MeCWL_U`=A!4k=D@?x))qa%g@(sOJ(!n1 zzhYhdtBXn&%~{VO;o_jLfz>b%%gqHUU;f+f*hH- z;ii9wM$eFGmgk&8nrO#YB%PO@S1uM8(LVlsKQ#K@s_)svfi;5 z?f%Q``ajh+nrf`YjbuI#+?-nYR!X`OhJgpgQ*~A%kivL!;s|#zvk==<@sw?Yw`tR| zn1=a@noOS(hfw`Aab(f=M1LA6wwa%OVXA>7jCUWPtPz4=j^wizMH*mwG)zGB|&U<(? zHvaG*9`0Hm2|QENx*>}*_pER*0W`;nf&jk<=UsSSXHUd5d_V@-(P>suz>ldSC`XtD zBes~opp1k=lU)zgtE(?>xT&p^DHq#5^Xu2~j>O21O0u4JNpd;u=kC7^v+6_DeCQ4T zWZFZ#&QV#mv%ZgPr&f7SJ1ttiv|BGaJpOf=0cM`Lt}KSA-(gmLmU!>bV06voesCGg zp!-O1N7xN3$2cJ4%}rd*KL}}ij|jyT)+_E`qJ^5T`f8HSyqx83 z0bcHx#wo&DW;>NcepaG-BzfAo;4r|k5_p#L0iPB-^K>C~Ib3?y?=e}2N40`Vleg~I ze_;yb-57UWNnAi4nDGT$f2HYY%Xbx3R*tPufU5H4j80khFlOS97z%CBwx_+_ac{cF zEkq11ZudP!5rbHcU%v)jhK|i&g$q8s^{k3)u%!gCvZm)jLYELs-_uu6z)L;1d!gT7 z+=s|;2uB!!Y3d)z(M+=>k+Hm=R@m~9LvTBzore2zz3T9=WI_u?Fj_O^GXt}yFWtGr z`8bo{s<(&x?EW3OHw+sM^{Qd6jY7m+pHR{M{e@>$y>%s-I%W^4Xng(*In;|2Mf zgXzF=X^5zL1>!(vaTI1EB@Ar<=5WaA0re9c;mA|>^knvWua-Hwim8SlT{$Urus%d0 zpk)X_NH78$IWa$wC(btFD0b`wU#7F3p>@;H{!moBVU&v~Ln6$oxJD}#9{!``tnuVA z8cI+|W9(_F6CuEML_UBiAMYWBuwK(pIt#jw9J%H1->hP4Wf+;1l+I}_%2k61kv;=c zuP`T+ryAo6>uRY;O_0qKIKd zlJ$rj(DJFYou()|i-x&IW7;(xJbo|_F4E{1@_S3skXak53ZyB6|3nfJ(-h z-Rbv*-DA*-Bwn`o~19vy8c37i({U$*-nhQIa6&~fBdE-(;J$=gx$*$qqLtw>D5 z4a07A6`McHgsE^x!+?+)bQNL@n#|@}?aqOwfrxsIF|I{+qm=Ee3qNZYX~* z?Q!`R5v0O}SX0mC+#Q(%AKkP~hSb#rfzED4^YRWNqXzljqQad;i!>8`Km#UdtQbEz zLBC=G+ziWs7a~(PZ^?zgh^N;nI;ZfK%x(y1;)NaA8WbzOwAz8byK^he#c)tbp?p2) z2>k}Q7TLrJT;5a%X3i~sDfp^4nC}NN&=@%NxRMS{K-bn*l3ClV?Vpoxh>~AZoxvpI zlnA9s`>TBtE|WoSC_J76 z`ES#h!^cZ4(HfqeFynk{en4zIvX^@Gd&NkokS>|JIh<9oeyRCLcuMfY&hS+C*%4p5 z*?K^^bdJP{NHv9>78vypJtHtCCeBivC{Eopi(KAaMNgY?Zbis?)t>**1A_8psrQtP&vZSWy^5_x9SaThrc;jdHSp(|2O1azzZiB!RZ6U5A zxB8|I#%_>ZyQSu9QI!554?_;EImp5NjjZa4BLs8#BF^yi>id3VAWjKn%1_?GubZP% z5_`gHWZ34@GG?|<0nJ$*(iHDZ$>z|&?Rxr0m2=IE!Gk?P7U z^nyW3%0*y1U#2puLcns_-#%Ua zgrm{q6`M!Byr@5IST=P!rweBj((7p9UCn&F@%z%-p8#~Uk#5%w0e4RAq9miz&s>It zQdPyLdh?d!K|$*C^tgwy3(0*f?5)2xX7N10^O|2(@(`b{ztSHUq={Vj!|~xa*VNmh z2!q%=A*zE@`xMA>E#;YYN{nYl2i#H>5ytNe9^1oyCgS@oR2?4pSOL`SjSGPprrp}v zb3&1qjEv_L71v}~m(aOm3=x1+L1IM~7Vum1*%d@6DYGcm=XXwA%Ff=&Bxzh7v%0VU zg=?!?rk*0z#a3 zGf&z((aLeG%&T2S$=;^8^G7v(JH9Lcw zFfsce`d8r1@O;->cjSf+_lU77e{08kM5Y@O-)-STU73w@L&*FH8M??eB}$>a^P(Os zHBmt^gMShw3Vcdwsn2tjm?rt(G*c)u^3E_JqO8qp$K!=)j7n`!ZiR!RLb6nv;8gyU z4j3}*BVd(O7D#X#AU9+D=9<+jinF!E#fDob%*nWcuv6< z5WLuY0Xf0uwaL2&%Y+Myo|5R8Rm?*j*8KtUop<>DObvp#^^0I!h;Mp~G~ICueoliI zEm`zF3!XL0`o14G6(@zFPb+LFo`yM|OOaLxwy(RvbsU*v2p;RE*J zBIGh|h}Rd}Z_cVkFp@1wrj2WPoe9o(3e4k#bQk99c%q*6AhpW1irVtu&Y0w)!b*|z zwosR0q&F;dQ!R&QbQs5}3*iZl8{=3Wag6YnO+S58V|mEIioUslYaMxx)a@iz7zi{? zO$WLi=bJCZjOl6k%~$j{r5ns7@byrsD(OibOd?3co~#tY@ixv?&Ec->uBgkn?ue;% zIEBnXT@yLG6SXJ?Eov5jUeE6rYwjte^=F&6w?ak(+>5D!U!uK(u+?F4YRD_j5khx? zOxUZz>4rO0o0Nwahl24MOI5tyhm6gRwO~1JZ5A`l_4Nk1>Nq)7D)w=$oP%X|?*-US!EA9ufnVc0*`XOLqj^2|%I{)$qP&o75 zbfJI(7P|S2Jz_NQLrHoSG8 zspSeR>*^ixJ~I z_GYeMA&%+jHw}rt7n;cNvJH`SN20;?80CKGA!*-+SS`^dl*X!ZTKv8FVF&yDrArbCzTI&jrXFw zyI!(}w(*zaJUbjrV!rM3z+@US$UbVL0=Y@MsjPx`9?gy7h~(YHpeOS~|K?|ByL+-{rjFY)%qNFs}|?)z6GVr4GN#tEHa! z?_0u#g=ymHk5cr;i$FQx{feJSTfcxPk@W25&0O*b^?rlb-dM?BYNkx;Il^FbyYY$s zz;IO?heMMT`$4%NLw0$MKll>DH7(ob%oPD?hI>AX z)!XKw)Vk6ai8@lPv*rP;H(#Kvi*6yXX}L!{Jtux>v~$V0a7Iw>dHg~8gOTD!TR*r4 z`zuW|`j!y2y6W+8lq|qq+aE{!a1K z^IDWErg&ijVK?JhxAH-0R#~t2zgeDOhNNA{^%?Y65 z0E{yj6AeQ<;!6%@vO@&t65Ae?HS-@}7xg)r|BCFS)w_)p@C^tqT377l`v~4^>U*vc zpFp~Jo8-fZ4N&?!(R^T+Ph-x!2dGvA`8jg;DCf|BXBmULZ0h=eQUwQ>>uYJmB0#eo>fdY7) zp@xAp1&2&x<7JTFQ#5aQ^QdpY@4%=9eR1|fo0W*H#-Sza?$v9XRa{P=j22YUj5)~x zKh5cd5Kr-zd_+9qBdP~*8skJe=P}0&y1fj8Bv^HDh)Z& zz%AKB*SRlesyVPNm?bZM$21O$9=p^fuSnAm*4o7tUJ%Uh5?#E_+q*bp^<+%BJ3@{e z<#m7hs2_bU2?viYdsuRh2JJc!CS!I)xvmh??ubR?{c9Ev8Yg%E2uk<}{!UYnQ~WAzBDA=tKKxai-*H)YTLfJWn>6PJ z)o_?3kK3&Sa=FRx(~PO5P>U#_S!;)>3nvU0(YVQvC~?7tvd^n|Z9XgF|4 zuq;(Crtm1q2k(CFzM;RUb7H9d3fNfBZp?F6P#+h8hRwtGH<`TP-wmg@-u>lTd21fY zfbG?lS!ZkCi_{3MrqO9X@HJx8ADAS<5Cq4DM6V6AIAhRM3}^mlt#M!*9jm@sG&M`*vCxu1riEh!}~Vh*RHw; zHklN~@P8h)_E-9kI&`I+p))7_8pvXF`XlBQe7 z3(arH4P26u2>$)_8IYl>2IhA?7Z#0StYTk2cv;&^GTsrN`#0;H;$>A(uR=c(xXJFg z%Yzm~XB<(G?h4x9eO%5VqS%GuOfSGagN_EUfd;KuO6g8&naEP-*1o3vlWA~b%^H3* zW5)FmJO&qR7B}dp07jUp6hjo1z>LG%oh~VV4gGr}pZeA=W^y=Rvfb_H*t}HX@1^p- zY=KN}S5eT)s?3;gtJXX=SIFDT#?JZ42kikqA)aV*K8LDO4||xh-vX`V1jNC(lIn0- z%Vk**%FJLX&X?AFZS5_``hrZ1#hd&Uwz~UwNwGw#_oIHsZz4cXvb%kU89u!`QQ};C zV@}lO*-Sr<>Kb0IB1}dfwfYjB%Uhz;;$HGqIzI}|;iDUx(id#XmoIi^?Q9#Co4u`S z=gp2MQD3VXgI5lvAxn10p-+GR&+HPM#S`m6)K;9{Axu}j;&5Va~KNlR&2lOx=sJYg({=h z$r)k2-v!H%QEN!^&_3v~OEXB%1U6|wPZyeM1-g6GbQ@(2jA2cg^+m+5vX21lD`mp}g~b66~? zZ?}&hSSqP!tfOn(E()hBZjJNy|hfB2hXS z3SEb{6;fQ!mQ!`W_aXc;zOP0;0jEt^R^hNd*~!6SI|;ro<;eT71+!(@A;K1}9Xr97 zKwz>vrK<{1vX~gnD>23d_{YU}yea}~%mYXt5IsG$$wqRFzk0iBuhUyh& zqITpFVO#H-iMTI8DL9H|L|b!(e-WXC!F|x{%(y9i9j$UBO92j2g_%pRf*G?qMu0;k z@|E-oKG{o8=+)vvz?QtBdT=a-tU}|NpKt$}Lyg(-Y{d7mfa5e(u!?nvBgU^8_OT2O z;6ovp_P+Cb=Q)Pntf=t&2;YxTs;|4~ZLmq54yoEpt)&;ThpwOLisLY5NKY%geN4Za*zO z$?HxD;v^hxOG}oqOWtf^$b<}TG}{;S>duED5s;+$lUHmyXrM2ALp_{Zk_87`zTl&=3;O;Fpn$v3rNKJ4vU(J|^OziPla*cN>)7)gKGPQ6X5# zBq>CL&W*9npksLbaBruzO9aALnh-7THKOfE=^3p@Kkwt-&zTTW)$qHpnIl73H(Ky_ zZlt=fwU0InMyT?^Gz8W``3eW$vHoRjRzxy8mp8 zSj4BQFl#p+2vNSNG{RZ1|AgERS`KFOaS@%9^yAioMlY5lKSYAQp7r6r(6HLzq5$I}0n%m*~j-BQ7a zdJM}ql?-DBovPcn9q$S2#36#qZvM<=6oYuh6QC;b8lN@V{MPyDGKI7mk3~j2>$XDD zwqAzykYuwm{9q~1;I&AD|kOs=7zHud@30&2{T z$D%*fy8x*vlVJ345~eY0{b0k0fsfZ1o zpM9W6p1FG#!$l*?ue@JucS}c;{l={tI{E6Sf6BRrbnuL#6YAP1N(MK}I?1++yen7XxGe`SxBh~gj2NO-$pIL;g6>71)yU2Tm+YT(bs+jf z7MX{Fm9{P=P3mus%{0`Pm(_ST0%LHJ)_s7Kf6)I?{1E}%N1#)Y##05&QZSi4V92st zIBY+pOX%-3|3L96dAW}Lf|b-^&~0!K?`yxd$A zJED3(%Xi)FWY=_%_c954HYQm~$m*Wa%6^Rf91;W#nh%FVd@>GkqNRLO`N(XG9^$&f zGPSmB@(agy0(N)#OFsu{aCpNl(Em%L6`V@*Y86vZ=mh7eF`R^Fa<~ZD1d=n-PRK0& zM;`uo=nPr%hag9i5*3n~`kcrpmJ+Bz3B|+a;0YR6T(+3z%msHlhn=EBmBDz$JjtsD z9{deh3T;lwP zU{g#qLqj!mcv8l-^{>m5vvChhrPE>GHCcG+kRkMS6FPG?{svNyOG%2MLnR{Z3MZ7; zp!jmz4Gb@9qr;w_)LP0LqrwUagiJn*@y@}7l$RN${yR3>JH44KQe45k*|ghol68ik z9rJvK?f{S(3PX09dyOZC$Mwnsi$7(OQwl;BC({viKj{+qHmO=$Ssj9PXZgdbsQaZy-Fe@FtNe-jIp? zm}EI!c}7Pqtg@;;KiYnkY1AquQ%1Bi>v;uAc++>mTNaLy!>*Q^0wAl1qguW}+bL|y zRsful$7W+iP8a9vJk?UhIKc5fedDos+dMqH*HWVoz0}LJje)adl@mu50wx?=-fVaI zg#0zEaXa*W-sy7{JGuOE2gG!H@yW|%5j1AZN6WNqylr1L$?cfy{P z#2CN)vLKtAkg}FCbca`Vm8UvxuSi-wtV!2VKjzJLNIL)A&Ia?xJOqXAXV`%Lm)oBF zv*zX>8PfGcG<1_-^}`L7Hwh0mbEIGD-K*EYB?XRq`AxzbO!Yq?2+v8&z~Q&t{3DDm z=c>j4FW3FXY2Ozm?HDT1iAn?Fc~Q z$Y?3~Ki`&FjNY0PExd<_1D^>Jh^Dg`2zW!;BA_hb|H|sGbQA1l34b4Yc5+#fvh4qW zn9WVy0V+F4InjF&2sQHm5Cl2w=ZPi-QvDJR8KL35|5JOQ@zDGB%fM(voAo!N0BN8^ z2W31+)CHLP-34o|6>)5M7(E^OJokM@Eod^ubYEMmwI(j=KoLR2{dgy<;DHVFiFhp5 z?OkLiKiiZK-Old59^l4>WZq~eWV!h89M^t{&C6s*Kx0VJF}hmtz#inuH$T+u)$&DO zvhmkak9(=l-33wzG4If4AN^QV0RZ4g#cu&Ag=O4TyM<jxK)Xf1XALoxg#&*V3VTMjWm(O#)Ea~nIS#<&Ri z$H`V^kQR(9Hb@8ebD+Gy&kQ_NGi`CBU}4spCk}zcfoF0acg?X79*jJ&hcddG?nz9(ZXNCHF;`djck{{t1i#&(7_E zad8Gne93&@_@Zhvsf-bDo|xNSRr&$p*AY>(7_?}?Eu5pc;vr-g0rPY7v|{`fi5Boi zsr!&t(K`8O5np0^^v~9Mp#IoV0j*#)?4pffsQHye%`&Z@itxR*xgxZ_92{cRU~q@S za&G`m9y%e}CLr4^+%(j~lgFhH3g z3uzC*n4lU&sLyOky}LG=HAr!J`OZ#Zfdm{GAY}4O{KSNP+{8WgFZO!Ve5|wqRoB@jRa6j9_)aqTAnre+KAd0-*i=FzYJ*vH z!thyvz+oU-FFW5(MJa6;{{E zjbKzhR3OTAYs|_P2t}lyMItSc*nhEJ*sX$w8{ObAgE8JX<7FM)3LUKnjksb;9p<(x zay;zSaM#w;Qn+u8tnR3QTAUG4vFAr>gZRS<8I4(F=K(nB`P0R(T&Wz_;#wMv{cfll znz>T#7^8CuCcT3%KxLaQ4UvQ_J1e0CLnmrxP#c_X=7c$bK-Zk0+3h|kn%?elFIAkw z0{S_jETBrRdt63F#ZgWGRKedKYI7PLQJ&9;V!L+$P0b#6^Aocf694wln9hx687T?j zM8qmkK&05h_q_D}G*gG<_LnaRhX=&vcunnz=Dl3tKwsD_O`fZ^v_h zpmeGEc(dEGO{4q?Y37FT$W`c_e-krZBm-4NTQ?>dLebCUaz$WLqZDf(>JC0tf9Z}~ zR^8>h$w1bNZ$BQl8~S-X)nI7znVl&zQZDYn^aY3i#I?{6w5wtU9BQ_8_0B;cEC@2E zENfdW;8`x^+h8MsA@%)o35+M!Cxn?Ll-J}!rVY*AJxn7#LfFRoBy`L`b!_hFqH_u$ z5z2u2^vbyT(&+om3tN{?T2eaajLcndb6BI-$%V*1vE-UovdQt@& zfz)0t!&=f`P1cc>7!vR5;OrmI?uFW)wh+*O)kcMm;>MEBj8Ti{T4hKO1rG&+)qH%J z_uCr4hxez?UYQJKF5SKqIaFCaAJx`^S?k2VbY{&bDw&cGUSV<;Ago!5jib8(g3qXm z)#1RaiLVc$N_|k`CIeXL{)phoI46}*22g$Z{O)&zbN}hJGM|cSVv&F8MTGWjG7?1i zSmLW9$queD!B_ra&j{;yu21XUk-7LJ68W)|ZwRh997tc;2)tFUd^RF8HFxOb3SSeG zE=?nM1=Pr0POAA49d!*`=m6|D3QA7!Hbkdl;Di4IQ4vNq?6ADyfNR_4BqXv4bBvW{ zunU@Tfqnj*WjCKBrL8a0;r8l}EN1tX4)(Ge@AMq3pp$XDAxxz?vDhU zy?Jfc67ij#H2T?ba+7u;dle4%npk3_S;Dc%aXSl0mI17ZXDZY4sCNF^Wk{r*q$zsE zI4^DxMG+|Cluj;$`7p`5b-Eb#N3B>~17hBp`rQthVINnVx`GL`cn4FV zep{3CSlm49`N3l2G%f_4VbR<&zkjj~B=c#g04ZczLaiUWDr|gAS=_ivI*H|}q!({W zxIg~hOzML5w-J?7FP8{n2F~eqlU;L@27hbRR{BMiV)|-i!La&)C~2JhBbBRcSRn{X zZNR^x2)O{j$|cJU4yAjA`O^3bkR@KQ-IjKNKem|U<$0|@W4IrIc>hW~2BN!g$hZt1 z#0VClW7wdwFd3mk3%i(Ky9Ecud>XAM66%ajfH&)C%-E|vBo(}3+BlspaNHyBMSFvV z>zZYC&k^==F0xa|{@MLf$Ixs8cPG#y1tFShkI_sW*_o%H+SX#PHcP>)Rh)oE(sx<} z1R*GytCPOcAkc_keN!2M?}0|gq^s4dfH+y_1(GNqqYuV?3r}|PM&JYh!lsnS zGP=2+=ZU@yHu(akL?h?51C{nD-e&r*-`|kzF`VYX$91H4`&VMh>x?whyI#HFR8^l6 zjJ3g3zT0PRYrb>B7p(lqaPC%=r`Lq0OWEsqM^=5fIw}1rn?Y!fCb^sjb8g%q>YbCL zXqWz@F^4t%616Q;?_k1=2Et9_fE1-AcS3XVZPxz?3i5;V?uFXEmF3av6*7WlfDCgs zGR85(lo4>Nx&iLV{e77G>4}NHaZ6Lz``V4Ft@X|Qb~dfnBqY~8(=m`R9U)YNtV=kU zwjo}nt`Mp)VqS9rK5#WYOsh)Fv+z9>f{rxq^nP;TL5NFgS9)s7OPTb1Q|dY>RO?(_ zFx?9p>^nkia~U~X@C?xnQ@2MAI4`Q!u6#K19Y=6u{U}?~uaaQax1PS&U~(sL(Pp=E zbR%P0(@W_ALQ!oT?)Hu?P0X_Bw*V(!fxL}SPr*r1*sO43&$oozLUV{o?5u?7M{sXj zmvp9awB%&2*9ma$;($awU7=#Tx{17dWF>q_6glAt*d~#4Tc-L|lV1VEjm$8&uFN&y zdp>pIkk3{Hdnri>qDqYqu;4FdR+q*+R<@ven#v?>W3@QSMGIV_r7{H#ouf~b1tw|i z2=|;GpmlorzW!qfJk?nRv9!wA+!iHVa@lDyk%?3<3A{YVlTvrH@bo?k+2>ll&>G|= zBOUdB=CHVP8hlGf3~>YlyU6G-Ymc-}gDJWUF0Ioo1-p_QP*|$zb(p#npb)ta z_Zq9BG(IMv4jPLSEYB}Sw_5g3cyWq2nmIW{da;0kSB3c#7cI^9Qe3-4TJKx3Ic;`p z6mYw+=8pYKEoy4UOLz<&`p;~>m+9HhT&kmBbc2AeNy$;VoH(8My1CoVsiZJ9oLdmy zqY86>APrZLxu_e@@p25~x$RX@bAxZb=|^S%aSAj1i`F~5L3BxaGfE1lHXdTIFv=~xjyWih8>Y-LjR z=#%M<7CNF?Nkwl^n~L`^QiY2YXiXYp+KTOYrQ1|2a$IY=qwF3NWVq;H;D$076K=zB z5P=jp_M5Qoi#R-=;v)tLkHCh_4QoPBij*5UEHgLW4cgDL7={`7)91^RePEcT84>wD z7A!ex@cU-rH%?Q@Lz_+Gss&U2mZPRo7?Bs{$^H=e{l|43L|WUW3TRJ^#;SweH3Lio z)_@^z+AQ|j5*wH;OeO)UV*aBp;q2e+L1#Y9vwy&xwJQ2X3wTTXGl*KDMh1&eAl@Q* zUoS~-w;&l>29-G!K@&QuJl9p?L^V9#;}JbgKe0yRRP$EYG#g$Q-%u}nDb^O!S|)#b z;e!~qnPF8*>?&7I{Y%elbM*S?E z;^Sw|t;_IBxF>fo&G_^Jz~+D}U2_TqrsZn5T{g6&zk_?j~&pzFtXEYo8uKxiHr|OQGTh9A z{qoL#ggJ=z(qm$_BDT|jdHY6nkIA{6SP6e@D;O{l74s?GEyX_`Ey5F)QnMcdp;`lD5 z9g0%c$++a&*S&e)!BR0H*JZt8t7s~Ha{!$=X<1$t`QF%0xTBKJ*}&MosMo%}va<&T zTckrZmCd$!ZY=}o{KXtL+}Y`De|mK!;@CD7+KoGgv)7Gm@FDkH=;p}N zJH00Eh8b>{}M#p8g>= z6`4g{+EhkV+-Vnb)>DATjHvzYj#QgXMb6WWOh_Se=bD~6CQ zSIWSDcKh*0Y0&hK7B)2Byagsy1wV&W+u*YV5s>LX_JdkjDDY@WohDjj<){o zr5FJCF3LUl_5p};)f7)xN?W&3M7fkYsmJey1-WfjI=#YhpZ3OA!4#g!;hOI#bu2dR zEu-IxIJe2a96yo`25Jwid9W07vbt@WTLK-P*RW!>ilpJ&?QqS7xBi%pN1)VO<2V|w z^A`&YO~uMJu*FzaOTkc)QmXhbfgxymy8<4hXbN`bH8Wt3?>J*$Zn&7FjhX5GSfx=q`hSY3%Vk9c{NfCTc`?xiUc66FA* zn#0-B5N4Mn*}S8fSwbD>+Na4RQs>k3rd}UJM6XmPW&M&+O#~kZm!pc{F;6JJ+Z>26 ziKkSEwuhN0Nnpk&Ps{GKPuGVzo4u{KHz&*OhG9W`1N+_30kK+!=2U+eVULr+@S;Ua zPJT75QwGW0QNc*Kq7_qyQM6PKPjuE6m3<|7l&W7a*>a6W64jvwMFv|y>OwGxA)^uM zO8&TQ!TK59*a^aP|9WbxCch>RK{n%)D79Tvu&J;AOOtdq5?ak{dvG>&FBKxR_)Y-4 z9lI!ZvrchdOgLwcO;TKiiTOnW+5Rt|Rdujd|(JkK@L7_o&%@LPdIRUfovFRi7$obFOlO#gc1;tXi}lA=!~RWF~w z9w%|CMLBoVoCAfk?d0h%4EkyR9`AB z?R=IKJEulX3DJV^FDz$ zUXGmXqEthUW@^PcD1=Z&;ArXj6Qzp04bT2(r!t}%qWsmAh$5OB{%Ldjt)h}ES4 z)}M@tP`Ze7L_uA}<8>37?a|P8PsrGsyv=hmX{p;nS0R1BB2R6lb7690kEO4rNv*HG z9RL`BL4A|K5o}ZG$&(N}PPU9Wm@O{pAzNvt4F(R}qPDAjhokd*ha-m$@BX*7H`gq_ zZPyqaRfCoZ2&-VUgGKnAO5Hz5N&|*gf^7kW5}{TvtsEl?gpC|!xVidjPVm!WdZbsK zxUob+Zhn?pL#wS`e<;~TlDiFIQx3Qe%MJ>WJkLyaUBy~TOpzabmM$)W&>wGn;w_{n zEJ&GZz4{(x+XQyGW9 zr}dUGIeHY#lBOQ{WWVSMvqdRTtS^wV?h`~~)@|2X>fsk5ugx8Lu zP{5d-5VqvN?x!*>$E;3`JP|o_u9oFU=XM#jlwzCT0{tFzsV>XGe2yIJG!}wqaw=`y zLpU_PJVB8?m&Cahk-YG)#@~RQWogK2w5Q_RE{a1sp^nq;y$24z%8ck*mu@hF=cVEO z6Z;QAo2rXbmg234zw#B8kAR-rcg-LO+_MsE#M8ej1c8Vs104ZS8Z4Ljn40TVs%Rge%(*OdvW5= zc60yg8$>VdH?X3Hdgm4k80}tr^%`68u z&>M&9cw6)7Xxb5&SJaLD$Hp^e>t}Rw-i0j7he9X0?e~PzKK(h8lJYSG$5PG*SHVaQ zKKBYrd@Z0&bDNP@M(>ST+FMWn20?w7umoo%P zz=W+)qI3{lbWQ^cJkC5(p~)1)R$4P$oD&JNHGz@EnYR>6loFf1&UR0%uy2ogwuT7n ziHz2=I;X^Ss(Ny&ze(;0%m3;OIrh_F9klgy<6Kc-gRiadww$cRg-Pa+YBm+hrQSp_ zxQ2~d7qh+*P3sdtVFvKyy#g;|Y$Efd!j*0SF&;-NZt5ubiaqh2Ut0##aIdj_kEG|^ zGoPX?X<5l6+{KKrXxU8%8y?Qhi5x0B?;Z=HU;jI37xfmwdQWD(!$#dtq5G{aO4CW8 zm1zt9{S~nVR?!r%o`9sx@kd?gO~?r-JgZtWTO08K24zO2^UpX((o}pJk*z}n@{|PV z>(D8zY7>>93Q~+d_Cubl%JI;gK>7?Y%r7Ri4P8uJG}c z1HWVrHZ7Yo!}aaZw73Caq+F0Rv}!nQP0@12Nc!TnX8)5Q69j8_#lCVYO{TA9S~6WF zL0#UCXs!J=<*$ew-5={zROs!L-jqWc@<7cjua-Aow&Zq%#(F)r$4qpJR3vZ{zUky8@iD_~Pmay_JIJ_0(Hd zaimBiY$Bkg9PPdv$Vrid%%F$AeDM0b`BC+ZN}Tz#x`fXUlRM1V9Kaw#p=Zx%3{Cjt z;mxx09#Y{!72W*-AB?Qe?OygBvbJBFkGG?IlQ$2klFe> zFa&~P4%&1s70K4U8Kt`yUp;)C2tzcp<5_cCyDwfM&3L<+W17E&wqdQn$n zJ+7r@z(5_(0oALvce8a@hdSEB;nbjvZg>%va4r#*@q;2H+8w=iDn@4(5ZHW3|5m{D zevQJ50!|(OBO5jXWB0)fMwHUf3zUHI-E2vhQ0->Stm(+gZczMqGbWFZlA|f|=e>=Wm!9oEp_~$t6tC+ z4|%65nIqY4V|1A%71JiL5;>XFeSb2!%kvwS|Ke#_*wfjz;asW!Q5O0S&Jl0SqU~rt z-heN_07O_QP$wn^cg^*}gd=Rt!xYj@?i`Ik#(vr~O}@bQV`!2!LbT7=I)0%y+>U17 zr{Jd;z9x#3=ti>QX)5Dju7ggKa$|o_cPB?wUL-%BTirihdZD}C=h}PZ9UAoCq1@>Y z45npF#Hi4TJU<72+-L+D9SkU!73x(&y2ATK&NYTbN5sYsAK|4ZD-l?S4NtoQto@E< zrJ17`Fod_dz>2gP*WDQ%gRf})Bh+MH$fe6QOD5+p6nJL*aO)LLrpKmayM~zM*B8ouQYf>>qoEP7 z$rnGdIhS=66P>nPp_IqFZC;tB{Rgx-{)z?fA+YvP34~GJ&_2fpbvWU--&xz8e_m|b zB2%17uMNy53`-o2Mrh)UDS0K&7@iiZeOk8nYL*RsIw6QE8@3me*u~jf9cJXyf4KL{ zQB2cjwk-&A*cNgDCzg~=5IV$rnYkO##_OVf&QUl^lge29qN}%?SXh+}xpgkVI1bb; zQTI%@7SPAVmn}!1?5RDtz-X;uaQn$9>-2&gRZ%M+QvS+0wFkz2+o_!$F*c{3 z!Ixmv&r8Z2>$I&dcI!U)5e(e`*Ou^&#JDZ_Oia0?Y9}!bLvB8NyzD2Q^C=EJ6Wpk}RdHhu(w+rI?&;^I*vtsFvfSD2?CdE4D;K*_dAif(jy;BCa8}F+ZZ( z_lO!=?SsAVJ24X63ysX_LxwUsIS_jz-`>OdB_A+|8g4o;-0O#IZ3r4klEczd85JbE z^9oO3o*;LP7aDJWy2w0X@oH0B%kbNtPu1%YjhHX@x2&FJ z^#Gu;I^rcT29RufZAAW5hjcG*3IJg1Od)=YzdZ#Xe9iJkMn>=q|2ZO_OHUYy{CNJk>Lt-m>JGYV&qWM^?Ra@u?6g5>80|G zBC(BtFYchNydpU(7hcQSI=)rZTYNl%_LMucdd79Hta}qug)@O zKU4HXn4evZRtf#cCPUJmDd`>5Woh&f?#Yc0phsq~u+Tu0>bdPNM7Zg{^za!@u$3UH zcL`(;Dl*|PJhpKCaQ9nt6$IU_wU3Hxnd4jy9My1CvZDwYMz~dwOc%Ih08t_ghMbIq`7_ZKsI*vQC;d><}7M-ewj0PKUV4yL>|#}5GgjW7+?$-`Qh z%iye65_Ms~qgi4}%&l!Fr+aOQ}Vj)DFSugC9Fg6T42Up7=3%X}AF|0f|M( z#b3w3wW;FZ#K;Gcuv8=Z$pa%s-~4=+p+! z+u??Dfun8X-9TA%3}iv^qp#Xx=&_pP%dghXmtWv2eUTR#uj8xawcltMPYhG>i=2yx9LvY5jj`{J#XXvVQ|$ z)y4lIn-Vaye4`})s`@vmm6iQlKl?XilAfNPfP;})`@7mw-_)Lf`P-gvSgn$=0|EIr zC6&&^lJ0*7wth2O{~Gvz5u^2Acvd?{V|xelZ+PqfX+EpI{WnL|(EPWdqZOS#odKO8 zoe|wPN0#n?8PMuzX=&{6O_sHF{RhnYKhRkJVSoM)G}eE{-9I!|78X{5zv=Hl{NG!d zzG1J-^nb_VH<9-r@ax}_e-}5ycgx7ePVi6p-@5;g^!M1m>0est z37DCgzXuZo0UIMD0W0e_2lzYvlV@P~ryqawf73thvvd5nI`;p_|E>Gm-+yGjW&h?` zzh(a|$MLQI-}%4gfA##!a%R@Q2-SaC@Ym|Umi&AB_o#pOB5C7mtrOAjqz%OYrMxu3?Hs&jw`%4hEJ1w6p|J#lyoRk^GbFmj^yP+B=KMpO;fA zA|*FeNuCAx<6+k^>8;di8M|2!@M@-I6r+P<7?-J1YT6h0%*n*TN$&$N&5kxexWlU$6SzWJ z?}YoNE8N44vv1b`55^9>k?}QZ3oC#i)+R6xp{HzJn#Lx`ZpM`)kI3P`pTw#DreVGV|A^V z!RIe|qw@(|fO6`u>a-U2&$%NgkdF<5)Gm|2#|;0P6u*uN@NO8h$o}%)<7gtu8n) zI5d&yqid_sTa2Qs?6UlF=UMig?^NEF{%vYN7b7rbX%@>*5gy`SIejSun)g;HpT3%9Jo@a-r0RQ%+b&G_8hzKe+@Tp3i&tBY zoqvL zu$X6awvg4U`2~7fod7l2`Qc{QMJ>zgx9&P>fm;HBg1AZWVU}m|qsHGiQ^CI4`d7r~ z1FWhBH)hQ$jx&)j2Rm0zkQoGc7`_=9$$fZNxk`G&lD3=k;8#T(e`=4#crkP8$4xLP zJGEp$FX{Z^9+y&*p7;iq_crp0IHA@;(28mxqXCxA0z99MU*;*d?-T={W2`fxU7 zH5-PX4u$>6ZTM$slp)gfi2CywgKF9cS4&D_z^TEO0~3=cFpyOL5#p@_dP4jMPyB(i zPEWTMUnl7t!vcznttlG!8C{C7BU09fM})%mDs>q?o+Un%1`^E-dx3{$S}`6o4?Y}q z=rGjdnrh$F_M8EhFz&F>;{A(zid&`)2j0@?xV$Wj+;F|uIF63oin_Ir37mltMq>zwI&M*Ogs2}&eEL}vsA z5gp(fi1H#|L#da55WbfzV&3WX!u?s*8;bH)Z`dO#5SicmhKVy3Ps}VKmSn^sB1EEc zj_|#qO_VAf`!3cdvS~oJmlDYvnHTS2DQ*(fiK8JcmNj0MVPiJsRMRoC-Y5b})vD5W zNj&i<(s~k^#v&Lg(2MQ-MejUReSUAlq!5&IN%%8S|yH4E`au#)6QdTFv4D#o1ZkB5Azg! zHHk=)@gbypM3o0^;{cJp_3$$}Cuw`~y%i}{;4Gl*Fw^Ln89^7~`(l|i3r11t~u zet}%h2e6>-&(TkKp8g=y7K+^>+T^1+$SjGe+#2OVBd1qmA4hvSTu)YObmJgQvwi<$ z=_lB!n3K3Y@5aCD!w$jSNnY(O)XfXZ`H@qu2c?_F=Fmd5F{)brSk)2Os%R!%SjI^; zM|q_x709F9ZltRV?dj`cu*E-}@39$}>UgBdU=h!Gd4k|if5V74hKS+kH!UUkiT947OUV{9vmjf0C9=CFunztYXGqotJopNp5Uu6Y5)3!#-GWQmUtLlTsL(8lKZ-c!|ekT;@3e=J2 zA~cxlzmvjc;5(_}`+A5}9Ek{2D9J=T#sogNWgBUH6^Crkkr#F}+NAfq9{{n#UFvNE z<_XjuOpWq)zhc$3Qdpk&pCk`(3(q2aDjhk#Mh)Z@=ranD55nU{8KV_@cwnY9n-eRt ztcPieh^`&^aHbSo_J$o`L(|5M)7wKh`&kUJsjBoObvV4_tY}{Msf+Bnqm1gdVp~%d zo64`?3e_0@LKbRkrU=W&oF5_Guc%w2)Aw7p+fdN-&F01dE56J6y&%~}QU4wpAenfd z${xS_v2(*QaugWhHWH|2P`&n$L{MLDg%Zpd98#$|Qwv>oKZ3l?1bLf$aS;eqa|kjP zo0?F*r7jz+e2MK!2&;<%P&r|w_gfoh_Xt{%^JhB+5neU_#N0vUC9f@qi@=HLkfRpW=Mk>{$Fap73Q+9yeEB9P zr{nt(C~#GlKU>^hipZal5t>U$Rp_i|3F_#4F^xYSTGqu$^2k;_OMt0a!0&-!B{AQQ zk1<;6Z=a1ekbbGC;ib%+54yhj^-$-$Ip%S${0oWSySd^M!axnoJv^?>;@sI9R*x8&3e z^5B#Qc7+l2Wnzd{)F^9KdX@6s9Ej`@X42I0c&i{lat*;b*ISToZ0cnyV8(SMtTmo+ne3Hx98qwJ3j3o_F*6@<+e06a(3$*)y$FbY3ortVCfX z*8fRD=uxrCIA^7qic#578r|W0O8EO*TxTyyP;vGBGB$Xfg=(NE;SJb=k`*ej(IQ9MjZheG9 z@54H*C1Ms{Hiy8D^myh3p_AhGHTsA3yU|z~lI>A|XLHl}lvE@H;Lb zZa^I_)}&**8lW(NK<@HaNw0wt;Hr&EbjDs^VW}`Ou8!BA!^Ux#~bBzE`apza} z5X>3$ix>aK8kVkBk1A05A+gZ$F(_(w7liKXyt2e%SSo&*N}ZPJE=1`nZMw#KkgD@e zyq9TuY6cfBr7n7G3aw*iF!1v;42h*Q%{agj9R&O4ElO;l1zp`s)z z&ODV!LL*94lsXwA!!aCVN`oW~n$SQ(QW+XGYaWzTM22RSN*aX*>RbDHp2IoM?%x0Z zyT9-K-S=Xhz1LcM?KSVc&zn0}duERQiuIMZ&)QTey$>I3wy0ZWbjtL1c0SXFXym0F zee(M6>H*UatN)3p)2M>dxaa$ieK(af|4vxg!|a+~jxev~PZwh+X~bsd_odDwTkiJX zHf#Hx@7y=po039y#A+B= z@Lg-`tCAY_G3oP5A|2`1QQ~1~>yr&HWW6fZ?z1`N@T#qKH@M?JvgQgz+?RBG1w14=wrmhp&SAi3@6P=h#lW6)Idaq9(;7q|WL@vui_O$f^f*)zF^sqwFwO{Y z7gx;t?XqZ0i^al>n7nA+uiX95$Low6Fj4>ubDr;%=6l^J&sOX4Ystmd zKqbAq$|;HF$2xve?pJjr^}+Dy(+hI7t?TV_4lj==YrST(X=(JXF6D`FLX-1sub%K< zNcw5>W#R5x=g?lp7yIQ-Fg~|7rjf-RnU-V``QsErOH?yr?%%E>nirQf6ib#jK2)uA zzM+vbe{$#keeXr*F~+p+US?Eq;7rU)5RQx_TqHBG@ znH*_)@v)MY)n<#=j&xbqN2S=SEO+}+@rMSx?w4;SWvGpAYMgR!!CCiX9zplFzd93A z@WLoKy5IC0O%`X44vYyb&PjPbv+l0<=7;HNe_zh~a6WDAWNBPunzA@oSR1%ze)#m7 zX?vw_M%tNK?A4q5-Dc9|ueEv21EoVxesy@We28sWzTTDrm2sxN&y!TTJI?JjWLWB@ z={(ayhg*C4e`v@OJ<;sX&z*POGWK}<OL&VtW|pcouSzZ|D^|Srl@0jV!@$> zuZR5-SM2{9{bByQse6ywB(Iud6kB+|_I94%<0bZnL!0vpXH80d8MEBWL-JGE`oJ(p zuKKAl^lyO2}>Jq0!uCiZc$dh&H79+!~ z_K%$WDD2Va0bO^6?fg37d-%<1E1C@4tc+KMW}MC4ykBg8r=@()oaC|}&a>_tFTZPG z?6E~$?3nL+V8X8IjP=Wgzi$}8IcaP*I&k#(&ze04hKaH_jJ($;2yyEw= z%5Leh-Bs7F-e2i?EOy}{OOKSv6@J&;7gt)We4sKyS^t}Xfoqtl$p^htyHq23G}cX1 zwls10n5O?dCA?}Wt9k0*ViWk*i!}`sD=Mbtv_yIu9P}B#zc1%f(J9An$6oI;cp{ql zaGiFeb?L1H<<4Pe%I3jCpj*SoE~@L$$hpGXv$o~5cc!LZSe33vCpk)QWr^m^c{uchmu|m^*2`h)6?R55Etf8j+1a$wXF+JE!zGtBmEbD~ zmCo(s5%XxoowhHh}#)qroe!>6e}9@D({HP`wn+x^})&ilQ!xfWfLKZ`F2C%O6CetI}S zDKtFv(J6yX-+%wrzT~-qy1~6O7EBbthQH2OP39Q8YSF(pk!-RP4&i- zP~KDj!&1%QUyu6L929%?dR2QndK1%Yo64Y+1EZE@4Bq-6;Y@?Uw2wLVdGqfWBp9_e zTpVgS`}~+M!(NSB;3tx|)P2~gZifweXx@MSRs4GCpb0y7&RjZV zgV^Al=ErHdchjYNd$>P3(REnBgzFNo9jw!jV`r-;)H+*#a86>6G~N+!n19cS_cAs# z;fQIf`G!aL1YNJOms}0iw9G0xwY`sjO-3PmZ+ybO*Si8Az zu>(u*ciyy0wXe;anqKBt&Ry8k)vkKT+r2J582%m9yfSpGP8_gFF&=2Q_N`XS@cJ=~ z*I5SL`c!9De*mlSau(hW*na`dJ1B!eJZxoU*_5aE}`IWs?4r6t@+z276kDWd)8% zF0F86tSy?#@8rJl<=)@C{%a4$u70(_N&l4XnpNqwC69aA20uD2us&4+}~|W_wi0@r<%e}doFko z*ZB6w%%ENK#}AJ&o?OM)=J+M5s%yH`s91D|*(b7ywdT2{U;38h?C8SVn_kTk)m^*e zGb=*RGiFto_WEH*OUR~GE_meUgi|WlvhHK<(Xz}fFDMRbcnU!4w zYqFV6Z#vVE= z;F9=srmKy=)`F(Zp*KB$cH(e62EWecGMkb%RL(2Bsjv1f>FON~)r8?C-!%fN?3>1B z7IhnD=QPZ9Eo0rhzMWRT*%W-kx?*dQi>9S$l-i zg3i5TjxbAtGOh1F3SSqX+RI++!uaGjL8n>9H3o~jTPSO98Jp5Y0 z^`WbzhxOfi7cl2qzW6p{?E8anI(a9IOmM3Eb!EM8!MQs3ny1Wnxz}DTj6S1h95-(M zu%Vql52&1EWVvG6yPU1fM+el1?br4T?s4n>#_>hhU7QP#PFfXzB->(s z-hA$ZbIi`tsp*U%^DM80M>c$tPMTvpcgAOJ!|*c)rdX#O9(VT)|JS5nnE|m^o~{|& zyR~Wbu3KR?X`Pn5%yFoj70~gC$Alu)w1CMA1Szc8^WF2=y$d~koL@w5|Fm5k8UJ9W zs_A_@tlVc3$S4(yGspU-577X{5Jb~>fDO^oyiz0)ql=RfViy(M_$ zx7Mq{xmQBe+V|g|t+CcJd3an`)YDK)IJoigf%w$U*GG;Sq1LE2Zohs^#ikWWTCYpz zI-M)qb~5_e+z#(gd!H!$*sGhFXp+{>-<>_@9~VC~(2huppP}{2w4ZpI)7XHqR*!wg z^0wt}sMASU={C{YsCQ(xli!!UbJIc%?W=Wm?&}o##`&GtYFlEz0cHbd_l$b;)1WfQ z*1G0EWbm?seMHGa5Bc_6lv45LPh$0qJC`P;Y~Es>vOap-$=jm_?-)`ZQ~RmlgU`S& zQFq_2p1wM|(V$y#vA9!M(fJ80)}FoVzVD#vrG^t*{Aw&t*>Au8v!_v>c5Kg^M+XNA z?=>};SB`1gYTM#!QrNNZUBi@7#kcQe^zP%k#!v6q$h9_!A6LK1ewUR#qV%)1$WCnK zXV5KvL;3gML#!FDO+&ryt3n1pUu@E6z~r|R#(s9qKj-pBP`UK|^Zn{Z<*Yl|8+Wj&)`kH&KifE zJQVfzTaDPH-(x6AM%kq-EO6|iAOB!+|r|?kNb>tztvgIcvnNU(b4KP zFG937y#2^*TEy(n4t~ww6ui32gNpJ?yT<XI`4&@ayb{#XXgD7sc4T*q{ z#gYM2_f*zzWoJDfUA?LM;2jME_J7Dtxm}mA>gHv0x7@wkzxs?;U$b`{2r-NsgTXZk~;$fnGp=(#Z*0ZWd-Fj=jfaf23wuY(44_V_7y2#5i(V02;`IqJ+ z#`&$%xW3F2Z;pud!#wL+m0R@-KfK|HSCsW#c)0$|sMSOEjX1Vwf?suYfp}YX-|DG% zGac1tceb6rBzBaOsQke4pli9#_dD)C?|tKvwAaRk5jLi)-S(Ar5N9tL7|bxRiMqo` ziSsz;YV(~DxO;xU{?Y>~JGUQOez*FO!{CIgGauX>mS;b4f6VIRL98$R#Oz zS83g8;vJilLz+tupLeO!+dS)d@)VVcLpLeu@|zp-xP5o9ySRNgb-g6ss&B4m(=o$| z!VgcPF4m@Zwe^TR8|>*;JL=gpgRPqb7vy>HcO{h!zA^CD=Jytvt-D()&t|=yy3Ax{ z$g_sny?2z$G$OlizLEQ-t8MWdTh1+U9XEaFq|fa5Pv?52>hjiVxR`mQm%68&K7Kq| z;JLurZF~5V;;}A<%fosk6!!J-*H7ZNb3X2J4~)vXa>GM6B0xBP zOtD(P^47wFaLeU~$`(kJqqr)+j{2yLRP(UQZrQcwpg~#T_cf}~ns-e?pFCwf7pES2 zc1u(5;Go)F(=8n$uliiF-QC!wsXXqOO0ad|mfaDvbq9zU_oeC@O4SnW$^`ukrFFBi z`JWyf?0Gn#({(#xMs|MdR2`KB^>?~EPqjLlBuiG+{ z9K@WBuFiW$nSb(3=&RN(e?zQxx7`|NPQKY6GIz8e^F_el;zU*N^vwNPF^g}E&b^)W z?1;qtVMj;xlO^xn>-@B?og5jG|NeP)rgHG`=KO;64;sgpm7aLXZ1|~7Eq_*V%$x;j?EQ}4_D_HCbWY+>M`uur+$Nc4?k(|3nmwr3<(l*CdvZZRfYr*D2 z!sp3BF$H@x=gzb0^59!z*W}EI<+HNtZJz9sXo-7-`5!(%m+{G|(b}c2vcV88(~y~* zoIORnpudfN)S?83LVvD`PkBaIhDN$lLV3(aPMq4>uRk=q#x(7?a&4dM`4;%L;m=Kj zi=LE39BPR<6XZW?;xHAv9#gV6mHhQ;t=`LUyAv6nuKZ@8uF@4zm-uBVsXxL}pU;ur zTIka{QNz<;*`mx`l6d`_W~}PxcRfP4^{F3m;PT7q!}r!_tmt5|;$h{xMHTbzt=dxD z)NA{+qnCpEyvkP-je-CNS_RTK89oD`+cw_r_)g^aJE;16TyIl3$!>t`q(=gC1 z+A2lm&e&Y&(K?I_R@W)*^{0oE-p?4reO_@X!v#RU_mR=1*~Vo{9B!!F&%UR?D|&Asv2tBYYuS*GKPYb&p`?7O(XdsB1G z(510j6-gtO2T$!>;TIlvVdjaidA?D?kr!Kj^5en``fxt`?LSvvIZ<0IE7)0ZrP?vmIQt31cpOQzMhbR1aoscC+;w9jJ~!?f4V z^DdF}Z5tW^*qsE4b6J{k>i0ki_|E6(<+n7;>fHwe!vNePQ>fUmTIZ z_AGgQ)P7b|=)jMCA9>rUubX$NTy@IQO)iB2CK}G?Kljn?=Q+W&@34$BMo-Ll`Ik*z za?ELU)9e1%gHp>&md@eMojz@SqRkEOp~_nw8#X#UOk>R7y0t>|bhWCs<*~2^i{2Yd zg0+l#T~7Y?bKMQr%ii#x8ypZg-lo&yF+a>TmY-G{x}S~i4U=5dza3O6O0+GVyv1jF$bh7jeP7Bqr!SAzebarL+27?K z)pOL6qVitYMjDP^ZF1~b>BG}6&I)(MSzF$|Tly}4!1Gxjj;g1B@%;3B2U|2LU(H8l zP>)q*!(H|(pC3A+r2E&NjMN0PlS_q+p}lU~4&VQ5miOC_f!n4Gc)WG+>{k~zPR@zf z{mx~q?|Ha`X!I(hS^b$q_#2A5U$AoY%L$Q`N7-3)j+mKOaeumKZI@uRtM(@|&wp^z z9^N>q>#^2zwcFnR`t!5bpvOyQze>)Ua!xbq*IVtPiuf`6TlAV{1z6nA`c}WH;Q%}O zjPW7KC=JtSMnl$KBaKFvxTG1ES<@oz8Ed4*};K&@I(GSC`PGZwe3ym)q1dFFiydU4&W#DV7zkz8UoOw;h zt#rqg3w8ZoAIw#9Je^jqJi78oO0>|#Uwx9J(k;#c+g)``Ius$JMAL=i3KSV{Vc(E^zhRBDbI*=9TdEqxUzu-T75)$#G;H z35j;e$vax|&UKq-jE+ft@IA|im&SSf9X(UG(ezu^s#U}6ug>owjVkVMcVORd+U={34XeLcs&xLfv6Bjv)R(W=^Yqc6<( zHT)0f@hQ6kpCqTJ4r=Lpth1eeADcY%qGRM{oi_`te>{7V-TC4KQ@v&3wILVG^j;NA zpWVd&IWuu|H#7UPQ)@e~R$Kc@IsfaFd%auiXO?w*HRMKO*Vf*BM@3}ZOW$cZ`dHMo zb-5QWfRB z2cztlxArexTE61R{@@+&PP?gY2+^(VVcxxQed`Koe{Va(4HlBLDQnFB{C;X5xLMWz z>^RB1(7av>-VoVE0>QCsg z`h3LtEj|_zAFWRZyX)=LetbbWN8{x)rRL7f8v;fJ)-axnNBHI4cwgO6%!?neH1X`E z!77P5&Y64e-Z~etyan9pXV8wK=l!y8Z)vP8&Ha#kt;u4C$&!S>0tF22zMVMJqr`I!yZ*FB3* z_gR`Otre<;-+Pj_a#xUbzn18q3vR9WIw59Sk;|rE-7M z*E-f`bGo~uDEj36F>FoY|VueLrxYp=l2^&nM#wmkdKmD9l z=#=@Jr@TGUwqcBq=KQHXs>9bt9zT9AJ+&&OIAB!t>&a93U*6XK>C)HmP149~j`6ua z$~_#Pn*W}d*YqRvP-0ff`#E_zp+0@GB~kj3MXF8$99J#f`rG!kG53_7EK2KbUAFV`D#N~8qSYq;$-Wt{f4U|+_hj5w$2qKBN3sra`qtvnb`$18H8lM_GXvJ45(@5#Kbr z^yb_AYqPIZpFMJFOVMzTom+~lBK9PAP@kRCJNT7#$K5BN7h81w=(K-h;bW!#tmF4T zglukQ?Ku7M?f7{fnk^GYU%LBi+oL)4yAmV%4LDMDSbD3+@2@}mY3Pj_r#`jW=$P5- z_Xg+7Z?*`lx2KyrX_T#bDs7psRa|}Ggs-VyMEv6)o+n3qOk?O=IuyCr$oR!k(UJat z++Fq=IQaZAtX{ePRrG3A4 z&jG*p+*3NkCKx0QclE4ZCalX`JBa(vF{opPVBBrJqqjS$&(7r-n515GU3F*er2_VM z?=_VtR=l*at#CQ9#@8!%>5@{0+U#TME6Q7fHpgo50}d})P;)To_U~g8EPWzVf4jZC z7I<-i@3pI&T$4WC>bg5-RHpZbkWOVT3%_W;bhv(`(tpd}g2+u8*#cg(#(+v?U#%5` zT5jzKWOZKe@G_*l%GvX_-IPDf-Ku|d#rsaOvv?b=`-V;}s_5|N-qiDV*t?&Zp7`VN zxBiiOkPXM}O3!T_YtAhy?bJ(4BO_en@Vy~-k8em|C1zK?_wF;(yZ<>Ab@z>DFU|V6 z`$Apc;OX?X6iAMdIjCyeN`U|vkd?-8x84OcAUoK`lhc3#*suO#o}!B;~T zwrCl3O|!pMqgt36Le4$jYpux4A|JkT{N_yuR)7r3GN)o^oQMB2o?5ouSIZ~GW6 zQe9A?#%t(aoYOz#$l{K#>;{S#?e4SHQCIu?Erua`hu5^Ko44-{i0*UO>iu4e$Ba3Z zSshhhmDhQ)=) zII;&c#Ep9S2Q&hXjuD3`Ko4j*IwG#$_m!;UeFVb7S&a9}tx<}l{{*2H zW03#$FZmdRq(pLt9&Iq&AB>;}Dd;f?diDXI5YIaRCzF7p$1w^_6hn4PgnqgK9$Wuzavh_Ip`6J z+;b50=0#=%q`BIOm$(Ok6-a{N-55L?vl9oR7i4@sT0hv{G%vRx9cLB`F+U3oi%0(C zq9x4I;Q)H#CktVQzq!QE1@JUP_IQoMM{@dKh;n!Y4>}xpaYi5)pocm@L`V@6B3aMU z;gY<{6XgmKU;hhH@-+}36_UicB9a(aL=xjMNjQ&*mNiSBC=Z@5{cl8hED9-`B*r73 z0K#J&QrtW)^*NVdLV+j`f&Q13@+k50c%)c)l$dz}iYOt&Svou+@wWm|LMZNg*hx9Uord{a0ihc zMZ_Y)5fON)_0mL3prRO-!-Q5x!_>A*5L4tgiQ0H#k9d^CNtKYXJ6#O=ArmnbO^kSQ zYC-sFMRG#Its}-s57QFnh(;kzbm+cbEWEYG+CCNg|bq9tR899rU28iQ>+ zCXh*hR0Tz}lt2hEW84zXR1vM9ZNnfF{LkD{D_C%5?oQAJEddPgwGQ`{w)Di97!e(z-tg0u`7>x5-c+9op$ zp*(4PC&|E!L{0{*wneaHJAi1Dxquud#rR0LGj5xSab;6U4OYY?zj-|R<`F5KqHKs% zmXHk@S^v!-N8U$b+!CMC(6((JM<(Qda7*SylunTOrkoInPZiN}+UyO|YI%E85CVr> zH)$9Y>+PyWd`d&xW^dFxd|60SK+C39Lg*dEdOKR;Q$@7Yw?Dwwr$H;|K2iU-4wTSn2MF(|`J z*qi(&$vg#VZ!*>id!v+CW^W=n1^HKc(zcWT412^9s7-BO0%A*X1#PybXli_!-=z4Y zmO$_+a~WhBWyF=^ldn)Wp(X^>VFr^Vu15A!aiG)?qAgh#8Hj_Wo{~UA9X9Dnbtr%_ z#}K}Q04cnV!Q$X0K`?+!705r)$1JLtF<2a7A@TJObPqzK1hPqOKqKhOZUPw|fkbfluwKJ@bQ0%@?x@b{0;Nd72U z$x|dgU=wPGrY#Qk@Q_N-|I2YI{4XC9^Ql@?VZNLETB#!SKMWvov@s{6Y(y=JjO2(r zg-_5dE~z`{Gx!PyVtWWnkpT$Iq}P{$Tzw=#?nqRGnkztw(WF7i;7i=4!G6I(?gZ*K z4iT-kPsmwq>ViI#_`CZd5^Zvm0ZD$^#)bxZNf9q(!iH!P5MmT*Fl{gy+f+p^8%lu5 z@omHi925&wIVKy9pd`Q4XjgHFyI6`8p8U2R9Rmu2EQ2c>1Z;Y_ihYdS0|N;glSv&~ zjdC9lh{+UN$H0whM8fyU0CJg7<)DawOz+%%7ZVbe=@Icaflg*^K-tJs?B@oh*b+34 z+GTk#LP$12bPPOwKzZP+Iy}U##9kB5ND+*N%Zwa`2L(f$F)$qAZXZkm5hq;26M+}; za$|EvB7s0;sKb#hi-HN+2u2Bwf{6qOMzKr6pjC!olr~W?9?;-WO$dsHP{0D1Y+qm; z^s$&c9>8Q9L&5ln7c#dX_(S7_hz6PYw82C|1f%qxoC`%Mz+@hhgmE|oUCPfD+k8Oc8!7&_++k$fI*Rjc!t(5;h9Mon}g<(EhUO)7Mn}J`aYWHNy+U~OL;z>u6-WJX8QKrmPbOP&{iae)S`rhP6~z!wlQm6H`$ zAmAZhWDW+&0AK>NUb0FfX>f(W4Ct=B>=6uj;gV%n+c*}`;0ma?L*Nq%;dUCpoP{apWab3V8^hy#Dc6LS*MW z`F#VJfPl&A0guDvfn4}x+DFlVQx#YnpFI7M!NA}UOir(O9QZ~x1e52P!{ULR^QopD zDJu?(4>I6W-Pkr5qD$udG8$YqqQQ}uA9y8%Phq{_ZHRHQJ@S(VN>GT9@rM33M%F?h z^6^^iA1EQbKE)~pL4$ad#`<{qdJ$nvqyRupz73+_lNe*W2wfv0s0fIN2aBI zkm@2-)MleU(QH|^EAdBP)E0zBP>fIzf&?Wvf3d4KaD}K)98nMglg!Wh!w_TG5cr-e zQh7-Ls1QeHmLvqmpko%oVUrNxmrJ%VbPPxcu*j7;e-c8NBeiA{0!qxK8sF3`P!R~J z@|eM3d1Mn(h8dX%+47V@KmmEwi42Jc=?qz}QA60s#;IO9H3Sv`Mk7axjg&~{mk9>h zum~Pm+{^GFJC?;watyLWneLGgSOia2dyo*c2w8?fLeL^)ev*WsMaWV*0)jS~I_Mx- z=AcE$93MFZEkZ=u0trEjXy0VmP~?93vhYfdfkp7i9xb&j4lIJNATSPLtn$0Xfkp7i z{(@{4avCyYB`^bGj;w|v0Du=9iJXuDEk~Ax6C(gCM?rjml%pUk5DZ6_7Q?Bpha?be zj7a8WNs=5CDRi6AB!N;Rub?3KGDD>KGB(Qz z>M6_H+JR`S%)_mlVsd7*X7gewD~VKPrImAD!k8@IVtj?4#?2u%I)HFF0VWZWRc6S}BLPAv z1++hjwisV_MuEo9fN!SMVK@Z2w~dC0Q2U#^qPziimat-Z4hZKf5U+kLJM%b3kGgtJSDTd=Eppn<=e2Lc-bm?bu3 zOmhzpl?1v48Njs|Vlpr=3BEp4$6(S}Hq@z1He3{f5{}Dtf)RGJE$13r!S}r`7W?_Z zS8W>1_VfzUf&Woh$LKh^2L_=vaExIdgh7&y5!;xpV=%{kG222%V9Y}b9!GUsJ5ys}jmkPuFDvpD4L`I`+E|WO^RTu{~G;&t*Fu=z`6`wo|erKT$0Ud@a zGzAz3G632*z{f;g1BG!+CL2`_bQp3h3NW}VfU-|{7-ZQZRL#o6;CBvk$#fX%;w!-5 zZVXED6tLVg^Ap-8I$gF*&%xa467AIfp$VemWmAMzurUWIW`eCJ%$(F*zd`%9Iqw@dO+cVB}$dkB2%P z@-X-vvnjwc|hZFv~r!Z?`w4;_MU z_N9&ELzPS88Tcb=F&aJ*>Z;LUblYM=hlXxjfRBY-s^VO@O+nW+Fkd<^Oo4z+mjU2o zq6CMAkGNAphhh2xjRO=bCLe4}*@Z2xS`bFoX}K zrZgA_btdFtaE3#4E97B-Pl&o|@-V>n5Br5EK*tBEB5rTc9m8eMMYTGO265R<9>xNz z#Ql|kxX39#4*27tERzmHHN89x@bTy}fc1jaD2@YseAE?^p9?SnD(mE7pv@xsIuJf| z?j%1B&86EBf}zYvejJMr#V&2%03T8O%a4P((9Tkvi(sed?s3VDq7YOCQJQK|5M;9E2m{U`c*1 zgi8Uc`4wT{axgvMiBQEUKMq=u#QkIi7>6mM?-7g>peC36IG~H|2RL!e-?JeE(EUAZ zxDbyse2_k!22|x3T|SGhYakbBdDG^CW?=S)PGNAFa!}JzVQp|2j>#Tim@Po~!0ZUb zhs8!F_;%WUupzo(I>~}`lFkcUI7N*W1^%FXz+wfQ)1$(eHV(2R42H)UIAOwRfPK*X zB!nZP{8XgD!E-`53qs9I+Bk6d7)(TuWsspWv3vs>gxGqaF@xo1EJ(R98eA-Xpeg`0 z)fD-IExjchv^GAZG4;%71|2xKp`2UAz;ztDui0%ZI0;sy%Ym$w&I_C%V06LsF}l!zqU##)OwYNP zY%cK*Ns%rzma(~99=T*v8(P@7#5ALK|F&rr``YvVyzhCWw7Jh!0XBM!-EFrs%z zgF(Sc#|LLh*xDdW)9sfHr${)A`;T!vEPnwnj_V6FTj;z%Pm5mDF(Ere&1HpkAT^-N z6#7H-e1i!+9xR^2(IqB(2yd7V1J8uX3aU4H9RM8TF&VNjET%yJ0Ml{EFfkhx!rdhL zdcoshxhS}HOn%SYC77U!xK&LvWjws)R9Zi69ER5D198Xk!X1Y)caVD z1TY@DT_nGkV3b(i!~&N?w^dL`;*?imE<{jtG){wIeNiZSMD+Xs3O^=3SH!`_K^jJn zM<5kUhX97vWsq`Vc`@__h#Ol9JVWn+UW0*@q57k(jRy@Anr^^2A>D_e+MZr7p!%HN zBZHI%8csACkn+=OKd5yDbeo2v7Weni;>P2fh)bUfng)rTB3($Xh?8}Bxd2Q+=YONz+3WPT-CPU4M<)`55 zu-pP709L=jy*RAD3-{va{TwFTf&0g}f6#?P7J7__2dvHTR>2*Ug` zwA?Tna5;^<0FNJVuY%@tAf{mb2!KI?Mb}BNL5x3eFZ9?A zU21d-PEj|YUx$qo;Qd&*5rNe>phH+~z=iskz78(*%`mzGHr8+FLeff?J)G5Jy(;i^ zSgwr9P@0c`xXQ(1Bfu~nhx>w9j{@%4Vs$MS4y!T#1T4&^;fw{_Be>&;+iz7MBD};e&BQk zLaZMKFRQWj^4M5E3{Im&SX}}AI_wMs^|R^gg=&EwkAP=5Dp6b;!0^5!Jif;2P%vK{ z1|gZA1H+w3Oegs);^w1*4MG}=^DN+FH6rA2^n3`N&tUl#yeh`z3~mGSIdE)1_f1fh z!DcGT1+14v_t`KGIw6YVK%hd*A3%11`CZh?_{Ur<9-%%uU8bn_PvZ|96BHmcUibq1 zd=SzSbX#3f_Hgz@_f7vgFN3rl-8!YsC2j`OV0yg<7NJKGk(IWgS^1)wnW7zKG9 zRxg08=y@W{gp`OTdjZPQF&J?pUXec*c76o-h--wjad6)q!-w_JA=3k6rH_NN4vaqt zTlBp|?f{bkq+HlK;BFmV*90i>q|@c#wK$kBR*MTbc-<|4iw`&rA-*;aeis5dZdkuq zz-7_>1~hnx2X2aT{zq;mfU<&a)1ale4B)OVCMzC(?koU@Pp{dbGR689;M(!^LfZnH z3q>}z=R6_ZCxZWjFh$=ZI8MfRhSUO+J=|lZ%K&a4V7Y}5UZG(4K=^cf15b?QG*F*o zHVE}OW?KNkbP}$dV049`Y;;+{DJ+(o3ICDP!0iZ3_5j0tJ1R}-vH}=ZlL(>Yq}wmJ zSX?eJm2Ru(It^_daHfg(C*k!5maB-+K@)Ayg+jcx62SoteSZOl<>MkaJfZI;z%V}! zQ5B12BIw7`WdJaGjE6?J5X(D7kZ#a*R|MC1Fc>tOv30;128}NIDlK|k02rPtqcWK$ zd(`8h=L`rRT`nvp7wcyOOh~tLn2VijptN&4#7C$C5^nV zLom9Y0u1X7L$3jhruwg9|fF#zVm zg&M`VU^7^M5=ao=ounWabcuzgSAgyxYlEXyx?X|W)6aV#697Y3GceZ zTtLXrS^`&4gc6SEG!66@wXDFlSH68RjahbyHHF}%|EyeC=!d$3C=`KWRu`@`Zf%iLM zE3vh~axpnW%aUI2qa#SVZ%6%Nd~IOT*xFz+CR1p*)7A@XgKi&vy&^0IfG5H3sRE2k z&rgxZ!FYlG3%&k;D+G9-8ji*={vcbU*Cgor0cIa?8bHs@(5+3(M?kNNp68&RIX&k> zrwjDn4T{J(T{xen<@Yd`hr{suwg?|)`_Rjv_b9-1!X-J{9zo}oe!mXJK@&xB9OyHw zSP=$S9N@|Y9R|Hzx*nh&3f)$r_m9O7=>22y1A70Mzvqdtd)(-11-&K#{;(b+jKg{W zkmW#jL0bnO4&dnf0qrY#j||QnuwE6wh+R?{5~?_{oQ4mk zK-(i2huuE~817$Si|F|?@C@&K=`sLCpz8}Cgo>>Lzv}|{@bfo-VRi&*4m~f1ZWDGV z3mgu1ZV&s0)o(D4c%`c#d(<+b=R?p_py#ZJF1`PP?m*IOA%GDNKNV@f9W;yvoJY}R z1?q?80#Gwywk3kI4!Rvd+ZOZpaBhX^By@)`T@wgl#kBo}niKQc0$`A?_Ygs`m@I%4 z1Y0k9qOM2-r3{$;!igLvdm(<7g|a$~E|ij3y&wd)OQVaf;$Zm!^dhmm2|B~{{eb=? z@oZ3jf8o9(R0p)R!SNP-&*5}|_%=+1x#+lu#vk;;v6u(4!t!T;VLcvzVZ9avqsJ|j z!qIz&&@sYd6oS$B2*K#}G{B%hZ&hvJgxZSg) 5.97756 Tj +72 214.963 Td +(recovered_data) 83.6858 Tj +[1 0 0 1 155.686 214.963] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -155.686 -214.963] cm +[1 0 0 1 0 0] Tm +0 0 Td +158.177 214.963 Td +/F130_0 9.9626 Tf +(--) 6.63509 Tj +-250 TJm +(lists) 16.0597 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(\002les) 16.6077 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(correct) 27.6562 Tj +-250 TJm +(order) 21.0211 Tj +55 TJm +(.) 2.49065 Tj +[1 0 0 1 72 213.653] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -203.69] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 193.045 Td +/F134_0 9.9626 Tf +(bzip2recover) 71.7307 Tj +[1 0 0 1 143.731 193.045] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -143.731 -193.045] cm +[1 0 0 1 0 0] Tm +0 0 Td +145.93 193.045 Td +/F130_0 9.9626 Tf +(should) 26.5703 Tj +-221 TJm +(be) 9.40469 Tj +-220 TJm +(of) 8.29885 Tj +-221 TJm +(most) 19.3773 Tj +-221 TJm +(use) 13.2801 Tj +-220 TJm +(dealing) 29.3299 Tj +-221 TJm +(with) 17.7135 Tj +-221 TJm +(lar) 10.5105 Tj +18 TJm +(ge) 9.40469 Tj +[1 0 0 1 307.229 193.045] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -307.229 -193.045] cm +[1 0 0 1 0 0] Tm +0 0 Td +307.229 193.045 Td +/F134_0 9.9626 Tf +(.bz2) 23.9102 Tj +[1 0 0 1 331.14 193.045] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -331.14 -193.045] cm +[1 0 0 1 0 0] Tm +0 0 Td +333.338 193.045 Td +/F130_0 9.9626 Tf +(\002les,) 19.0983 Tj +-227 TJm +(as) 8.29885 Tj +-220 TJm +(these) 20.4731 Tj +-221 TJm +(will) 15.5018 Tj +-221 TJm +(contain) 29.3299 Tj +-220 TJm +(man) 17.1556 Tj +15 TJm +(y) 4.9813 Tj +-221 TJm +(blocks.) 28.503 Tj +-600 TJm +(It) 6.08715 Tj +-221 TJm +(is) 6.64505 Tj +-221 TJm +(clearly) 27.1082 Tj +72 181.09 Td +(futile) 21.031 Tj +-289 TJm +(to) 7.7509 Tj +-289 TJm +(use) 13.2801 Tj +-289 TJm +(it) 5.53921 Tj +-289 TJm +(on) 9.9626 Tj +-289 TJm +(damaged) 35.965 Tj +-289 TJm +(single-block) 49.2551 Tj +-290 TJm +(\002les) 16.6077 Tj +1 TJm +(,) 2.49065 Tj +-299 TJm +(since) 20.4731 Tj +-289 TJm +(a) 4.42339 Tj +-290 TJm +(damaged) 35.965 Tj +-289 TJm +(block) 22.1369 Tj +-289 TJm +(cannot) 26.5603 Tj +-289 TJm +(be) 9.40469 Tj +-289 TJm +(reco) 17.1456 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(ered.) 19.6363 Tj +-854 TJm +(If) 6.63509 Tj +-289 TJm +(you) 14.9439 Tj +-290 TJm +(wish) 18.8194 Tj +-289 TJm +(to) 7.7509 Tj +-289 TJm +(minimise) 37.0908 Tj +72 169.135 Td +(an) 9.40469 Tj +15 TJm +(y) 4.9813 Tj +-320 TJm +(potential) 34.8691 Tj +-320 TJm +(data) 16.5977 Tj +-319 TJm +(loss) 15.5018 Tj +-320 TJm +(through) 30.9936 Tj +-320 TJm +(media) 24.3486 Tj +-320 TJm +(or) 8.29885 Tj +-319 TJm +(transmission) 50.3709 Tj +-320 TJm +(errors,) 25.7234 Tj +-337 TJm +(you) 14.9439 Tj +-320 TJm +(might) 23.2527 Tj +-320 TJm +(consider) 33.7533 Tj +-320 TJm +(compressing) 50.3609 Tj +-319 TJm +(with) 17.7135 Tj +-320 TJm +(a) 4.42339 Tj +-320 TJm +(smaller) 29.3299 Tj +-320 TJm +(block) 22.1369 Tj +72 157.179 Td +(size.) 17.9825 Tj +[1 0 0 1 72 157.08] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -147.117] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 122.426 Td +/F122_0 20.6585 Tf +(2.7.) 34.4584 Tj +-278 TJm +(PERFORMANCE) 161.818 Tj +-278 TJm +(NO) 30.9877 Tj +40 TJm +(TES) 40.1808 Tj +[1 0 0 1 72 122.168] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -112.206] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 100.509 Td +/F130_0 9.9626 Tf +(The) 15.4918 Tj +-305 TJm +(sorting) 27.6761 Tj +-304 TJm +(phase) 22.6848 Tj +-305 TJm +(of) 8.29885 Tj +-304 TJm +(compression) 50.3609 Tj +-305 TJm +(g) 4.9813 Tj +5 TJm +(athers) 23.7907 Tj +-304 TJm +(together) 32.6474 Tj +-305 TJm +(similar) 27.6761 Tj +-304 TJm +(strings) 26.5703 Tj +-305 TJm +(in) 7.7509 Tj +-304 TJm +(the) 12.1743 Tj +-305 TJm +(\002le.) 15.2229 Tj +-947 TJm +(Because) 33.1954 Tj +-305 TJm +(of) 8.29885 Tj +-304 TJm +(this,) 16.8866 Tj +-319 TJm +(\002les) 16.6077 Tj +-304 TJm +(containing) 42.0621 Tj +-305 TJm +(v) 4.9813 Tj +15 TJm +(ery) 12.7222 Tj +72 88.5534 Td +(long) 17.7135 Tj +-286 TJm +(runs) 17.1556 Tj +-285 TJm +(of) 8.29885 Tj +-286 TJm +(repeated) 33.7433 Tj +-285 TJm +(symbols,) 35.706 Tj +-295 TJm +(lik) 10.5205 Tj +10 TJm +(e) 4.42339 Tj +-286 TJm +("aabaabaabaab) 59.3771 Tj +-285 TJm +(...") 11.5367 Tj +-571 TJm +(\(repeated) 37.0609 Tj +-286 TJm +(se) 8.29885 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(eral) 14.9339 Tj +-286 TJm +(hundred) 32.6474 Tj +-285 TJm +(times\)) 24.9065 Tj +-286 TJm +(may) 17.1556 Tj +-286 TJm +(com) 17.1556 Tj +1 TJm +(press) 20.4731 Tj +-286 TJm +(more) 20.4731 Tj +-286 TJm +(slo) 11.6264 Tj +25 TJm +(wly) 14.9439 Tj +72 76.5983 Td +(than) 17.1556 Tj +-322 TJm +(normal.) 30.7147 Tj +-524 TJm +(V) 7.193 Tj +111 TJm +(ersions) 28.224 Tj +-322 TJm +(0.9.5) 19.9252 Tj +-321 TJm +(and) 14.386 Tj +-322 TJm +(abo) 14.386 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-322 TJm +(f) 3.31755 Tj +10 TJm +(are) 12.1643 Tj +-321 TJm +(much) 22.1369 Tj +-322 TJm +(better) 22.6848 Tj +-321 TJm +(than) 17.1556 Tj +-322 TJm +(pre) 12.7222 Tj +25 TJm +(vious) 21.589 Tj +-321 TJm +(v) 4.9813 Tj +15 TJm +(ersions) 28.224 Tj +-322 TJm +(in) 7.7509 Tj +-322 TJm +(this) 14.396 Tj +-321 TJm +(respect.) 30.7047 Tj +-1050 TJm +(The) 15.4918 Tj +-321 TJm +(ratio) 18.2614 Tj +-322 TJm +(between) 33.1954 Tj +[1 0 0 1 72 50.8518] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 43.0633 -6.7545] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -496.332 -50.9514] cm +[1 0 0 1 0 0] Tm +0 0 Td +539.395 50.9514 Td +/F130_0 9.9626 Tf +(6) 4.9813 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 10 10 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 105.519 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -371.59 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +477.109 749.245 Td +/F130_0 9.9626 Tf +(Ho) 12.1743 Tj +25 TJm +(w) 7.193 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(bzip2) 22.1369 Tj +[1 0 0 1 266.071 747.089] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -5.0363] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -540 -741.554] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F130_0 9.9626 Tf +(w) 7.193 Tj +10 TJm +(orst-case) 35.4071 Tj +-289 TJm +(and) 14.386 Tj +-290 TJm +(a) 4.42339 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(erage-case) 42.0322 Tj +-289 TJm +(compression) 50.3609 Tj +-290 TJm +(time) 17.7135 Tj +-289 TJm +(is) 6.64505 Tj +-290 TJm +(in) 7.7509 Tj +-289 TJm +(the) 12.1743 Tj +-290 TJm +(re) 7.74094 Tj +15 TJm +(gion) 17.7135 Tj +-289 TJm +(of) 8.29885 Tj +-289 TJm +(10:1.) 20.2042 Tj +-857 TJm +(F) 5.53921 Tj +15 TJm +(or) 8.29885 Tj +-290 TJm +(pre) 12.7222 Tj +25 TJm +(vious) 21.589 Tj +-289 TJm +(v) 4.9813 Tj +15 TJm +(ersions,) 30.7147 Tj +-299 TJm +(this) 14.396 Tj +-290 TJm +(\002gure) 23.2427 Tj +-289 TJm +(w) 7.193 Tj +10 TJm +(as) 8.29885 Tj +-290 TJm +(more) 20.4731 Tj +72 698.082 Td +(lik) 10.5205 Tj +10 TJm +(e) 4.42339 Tj +-250 TJm +(100:1.) 25.1855 Tj +-620 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-250 TJm +(can) 13.8281 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(the) 12.1743 Tj +[1 0 0 1 186.002 698.082] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -186.002 -698.082] cm +[1 0 0 1 0 0] Tm +0 0 Td +186.002 698.082 Td +/F134_0 9.9626 Tf +(-vvvv) 29.8878 Tj +[1 0 0 1 215.889 698.082] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -215.889 -698.082] cm +[1 0 0 1 0 0] Tm +0 0 Td +218.38 698.082 Td +/F130_0 9.9626 Tf +(option) 25.4644 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(monitor) 31.5516 Tj +-250 TJm +(progress) 33.7533 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(great) 19.9152 Tj +-250 TJm +(detail,) 24.6275 Tj +-250 TJm +(if) 6.08715 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(ant.) 14.6649 Tj +[1 0 0 1 72 695.925] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -685.963] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 676.164 Td +/F130_0 9.9626 Tf +(Decompression) 61.9773 Tj +-250 TJm +(speed) 22.6848 Tj +-250 TJm +(is) 6.64505 Tj +-250 TJm +(unaf) 17.7035 Tj +25 TJm +(fected) 24.3386 Tj +-250 TJm +(by) 9.9626 Tj +-250 TJm +(these) 20.4731 Tj +-250 TJm +(phenomena.) 48.4182 Tj +[1 0 0 1 72 674.007] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -664.045] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 654.247 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 101.888 654.247] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -101.888 -654.247] cm +[1 0 0 1 0 0] Tm +0 0 Td +104.863 654.247 Td +/F130_0 9.9626 Tf +(usually) 28.782 Tj +-299 TJm +(allocates) 34.8591 Tj +-298 TJm +(se) 8.29885 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(eral) 14.9339 Tj +-299 TJm +(me) 12.1743 Tj +15 TJm +(g) 4.9813 Tj +5 TJm +(abytes) 25.4544 Tj +-298 TJm +(of) 8.29885 Tj +-299 TJm +(memory) 33.2053 Tj +-299 TJm +(to) 7.7509 Tj +-298 TJm +(operate) 29.3199 Tj +-299 TJm +(in,) 10.2416 Tj +-311 TJm +(and) 14.386 Tj +-298 TJm +(then) 17.1556 Tj +-299 TJm +(char) 17.1456 Tj +18 TJm +(ges) 13.2801 Tj +-298 TJm +(all) 9.9626 Tj +-299 TJm +(o) 4.9813 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.74094 Tj +-299 TJm +(it) 5.53921 Tj +-298 TJm +(in) 7.7509 Tj +-299 TJm +(a) 4.42339 Tj +-298 TJm +(f) 3.31755 Tj +10 TJm +(airly) 18.2614 Tj +-299 TJm +(random) 30.4357 Tj +72 642.291 Td +(f) 3.31755 Tj +10 TJm +(ashion.) 28.503 Tj +-743 TJm +(This) 17.7135 Tj +-270 TJm +(means) 25.4544 Tj +-271 TJm +(that) 14.9439 Tj +-270 TJm +(performance,) 52.8317 Tj +-276 TJm +(both) 17.7135 Tj +-270 TJm +(for) 11.6164 Tj +-271 TJm +(compressing) 50.3609 Tj +-270 TJm +(and) 14.386 Tj +-271 TJm +(decompressing,) 62.2563 Tj +-275 TJm +(is) 6.64505 Tj +-271 TJm +(lar) 10.5105 Tj +18 TJm +(gely) 17.1556 Tj +-270 TJm +(determined) 44.8217 Tj +-271 TJm +(by) 9.9626 Tj +-270 TJm +(the) 12.1743 Tj +-271 TJm +(speed) 22.6848 Tj +72 630.336 Td +(at) 7.193 Tj +-294 TJm +(which) 24.3486 Tj +-294 TJm +(your) 18.2614 Tj +-294 TJm +(machine) 33.7533 Tj +-295 TJm +(ca) 8.84679 Tj +1 TJm +(n) 4.9813 Tj +-295 TJm +(service) 28.2141 Tj +-294 TJm +(cache) 22.6749 Tj +-294 TJm +(misses.) 29.0609 Tj +-442 TJm +(Because) 33.1954 Tj +-294 TJm +(of) 8.29885 Tj +-294 TJm +(this,) 16.8866 Tj +-306 TJm +(small) 21.589 Tj +-294 TJm +(changes) 32.0895 Tj +-294 TJm +(to) 7.7509 Tj +-294 TJm +(the) 12.1743 Tj +-294 TJm +(code) 18.8094 Tj +-294 TJm +(to) 7.7509 Tj +-294 TJm +(reduce) 26.5503 Tj +-294 TJm +(the) 12.1743 Tj +-295 TJm +(miss) 18.2714 Tj +-294 TJm +(rate) 14.9339 Tj +72 618.381 Td +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-253 TJm +(been) 18.8094 Tj +-253 TJm +(observ) 26.5603 Tj +15 TJm +(ed) 9.40469 Tj +-253 TJm +(to) 7.7509 Tj +-253 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-253 TJm +(disproportionately) 73.0557 Tj +-253 TJm +(lar) 10.5105 Tj +18 TJm +(ge) 9.40469 Tj +-253 TJm +(performance) 50.341 Tj +-253 TJm +(impro) 23.8007 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(ements.) 30.7147 Tj +-639 TJm +(I) 3.31755 Tj +-253 TJm +(imagine) 32.0995 Tj +[1 0 0 1 438.909 618.381] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -438.909 -618.381] cm +[1 0 0 1 0 0] Tm +0 0 Td +438.909 618.381 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 468.796 618.381] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468.796 -618.381] cm +[1 0 0 1 0 0] Tm +0 0 Td +471.318 618.381 Td +/F130_0 9.9626 Tf +(will) 15.5018 Tj +-253 TJm +(perform) 32.0895 Tj +-253 TJm +(best) 16.0497 Tj +72 606.426 Td +(on) 9.9626 Tj +-250 TJm +(machines) 37.6287 Tj +-250 TJm +(with) 17.7135 Tj +-250 TJm +(v) 4.9813 Tj +15 TJm +(ery) 12.7222 Tj +-250 TJm +(lar) 10.5105 Tj +18 TJm +(ge) 9.40469 Tj +-250 TJm +(caches.) 29.041 Tj +[1 0 0 1 72 604.269] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -594.306] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 571.673 Td +/F122_0 20.6585 Tf +(2.8.) 34.4584 Tj +-278 TJm +(CA) 29.8309 Tj +80 TJm +(VEA) 42.4739 Tj +90 TJm +(TS) 26.4016 Tj +[1 0 0 1 72 571.415] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -561.452] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 549.755 Td +/F130_0 9.9626 Tf +(I/O) 13.2801 Tj +-268 TJm +(error) 19.3573 Tj +-267 TJm +(messages) 37.6287 Tj +-268 TJm +(are) 12.1643 Tj +-268 TJm +(not) 12.7322 Tj +-268 TJm +(as) 8.29885 Tj +-267 TJm +(helpful) 28.224 Tj +-268 TJm +(as) 8.29885 Tj +-268 TJm +(the) 12.1743 Tj +15 TJm +(y) 4.9813 Tj +-267 TJm +(could) 22.1369 Tj +-268 TJm +(be.) 11.8953 Tj +[1 0 0 1 293.313 549.755] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -293.313 -549.755] cm +[1 0 0 1 0 0] Tm +0 0 Td +293.313 549.755 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 323.201 549.755] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -323.201 -549.755] cm +[1 0 0 1 0 0] Tm +0 0 Td +325.868 549.755 Td +/F130_0 9.9626 Tf +(tries) 17.1556 Tj +-268 TJm +(hard) 17.7035 Tj +-267 TJm +(to) 7.7509 Tj +-268 TJm +(detect) 23.7907 Tj +-268 TJm +(I/O) 13.2801 Tj +-268 TJm +(errors) 23.2328 Tj +-267 TJm +(and) 14.386 Tj +-268 TJm +(e) 4.42339 Tj +15 TJm +(xit) 10.5205 Tj +-268 TJm +(cleanly) 28.772 Tj +65 TJm +(,) 2.49065 Tj +-272 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-268 TJm +(the) 12.1743 Tj +72 537.8 Td +(details) 26.0123 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(what) 19.3673 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(problem) 33.2053 Tj +-250 TJm +(is) 6.64505 Tj +-250 TJm +(sometimes) 42.62 Tj +-250 TJm +(seem) 20.4731 Tj +-250 TJm +(rather) 23.2328 Tj +-250 TJm +(misleading.) 46.2165 Tj +[1 0 0 1 72 535.643] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -525.681] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 515.882 Td +/F130_0 9.9626 Tf +(This) 17.7135 Tj +-280 TJm +(manual) 29.3299 Tj +-279 TJm +(page) 18.8094 Tj +-280 TJm +(pertains) 31.5416 Tj +-280 TJm +(to) 7.7509 Tj +-279 TJm +(v) 4.9813 Tj +15 TJm +(ersion) 24.3486 Tj +-280 TJm +(1.0.5) 19.9252 Tj +-280 TJm +(of) 8.29885 Tj +[1 0 0 1 256.84 515.882] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -256.84 -515.882] cm +[1 0 0 1 0 0] Tm +0 0 Td +256.84 515.882 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 286.728 515.882] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -286.728 -515.882] cm +[1 0 0 1 0 0] Tm +0 0 Td +286.728 515.882 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-798 TJm +(Compressed) 49.2551 Tj +-280 TJm +(data) 16.5977 Tj +-279 TJm +(created) 28.762 Tj +-280 TJm +(by) 9.9626 Tj +-280 TJm +(this) 14.396 Tj +-279 TJm +(v) 4.9813 Tj +15 TJm +(ersion) 24.3486 Tj +-280 TJm +(is) 6.64505 Tj +-280 TJm +(entirely) 30.4357 Tj +-279 TJm +(forw) 18.8094 Tj +10 TJm +(ards) 16.5977 Tj +72 503.927 Td +(and) 14.386 Tj +-294 TJm +(backw) 26.0024 Tj +10 TJm +(ards) 16.5977 Tj +-293 TJm +(compatible) 44.2738 Tj +-294 TJm +(with) 17.7135 Tj +-294 TJm +(the) 12.1743 Tj +-293 TJm +(pre) 12.7222 Tj +25 TJm +(vious) 21.589 Tj +-294 TJm +(public) 24.9065 Tj +-294 TJm +(releases,) 34.0223 Tj +-304 TJm +(v) 4.9813 Tj +15 TJm +(ersions) 28.224 Tj +-294 TJm +(0.1pl2,) 27.6761 Tj +-305 TJm +(0.9.0) 19.9252 Tj +-293 TJm +(and) 14.386 Tj +-294 TJm +(0.9.5,) 22.4159 Tj +-305 TJm +(1.0.0,) 22.4159 Tj +-304 TJm +(1.0.1,) 22.4159 Tj +-305 TJm +(1.0.2) 19.9252 Tj +-294 TJm +(and) 14.386 Tj +72 491.972 Td +(1.0.3,) 22.4159 Tj +-263 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-260 TJm +(with) 17.7135 Tj +-260 TJm +(the) 12.1743 Tj +-260 TJm +(follo) 18.8194 Tj +25 TJm +(wing) 19.9252 Tj +-260 TJm +(e) 4.42339 Tj +15 TJm +(xception:) 37.0808 Tj +-330 TJm +(0.9.0) 19.9252 Tj +-260 TJm +(and) 14.386 Tj +-260 TJm +(abo) 14.386 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-260 TJm +(can) 13.8281 Tj +-260 TJm +(correctly) 35.4071 Tj +-260 TJm +(decompress) 47.0334 Tj +-260 TJm +(multiple) 33.2153 Tj +-260 TJm +(concatenated) 52.0048 Tj +-260 TJm +(compressed) 47.0334 Tj +72 480.017 Td +(\002les.) 19.0983 Tj +-310 TJm +(0.1pl2) 25.1855 Tj +-250 TJm +(cannot) 26.5603 Tj +-250 TJm +(do) 9.9626 Tj +-250 TJm +(this;) 17.1656 Tj +-250 TJm +(it) 5.53921 Tj +-250 TJm +(will) 15.5018 Tj +-250 TJm +(stop) 16.6077 Tj +-250 TJm +(after) 18.2515 Tj +-250 TJm +(decompressing) 59.7656 Tj +-250 TJm +(just) 14.396 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(\002rst) 15.5018 Tj +-250 TJm +(\002le) 12.7322 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(stream.) 29.0509 Tj +[1 0 0 1 72 477.86] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -467.897] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 458.099 Td +/F134_0 9.9626 Tf +(bzip2recover) 71.7307 Tj +[1 0 0 1 143.731 458.099] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -143.731 -458.099] cm +[1 0 0 1 0 0] Tm +0 0 Td +146.174 458.099 Td +/F130_0 9.9626 Tf +(v) 4.9813 Tj +15 TJm +(ersions) 28.224 Tj +-245 TJm +(prior) 19.3673 Tj +-245 TJm +(to) 7.7509 Tj +-245 TJm +(1.0.2) 19.9252 Tj +-246 TJm +(used) 18.2614 Tj +-245 TJm +(32-bit) 23.8007 Tj +-245 TJm +(inte) 14.9439 Tj +15 TJm +(gers) 16.5977 Tj +-245 TJm +(to) 7.7509 Tj +-245 TJm +(represent) 36.5129 Tj +-245 TJm +(bit) 10.5205 Tj +-246 TJm +(positions) 35.9849 Tj +-245 TJm +(in) 7.7509 Tj +-245 TJm +(compressed) 47.0334 Tj +-245 TJm +(\002les,) 19.0983 Tj +-246 TJm +(so) 8.85675 Tj +-245 TJm +(it) 5.53921 Tj +-245 TJm +(could) 22.1369 Tj +72 446.144 Td +(not) 12.7322 Tj +-384 TJm +(handle) 26.5603 Tj +-383 TJm +(compressed) 47.0334 Tj +-384 TJm +(\002les) 16.6077 Tj +-383 TJm +(more) 20.4731 Tj +-384 TJm +(than) 17.1556 Tj +-383 TJm +(512) 14.9439 Tj +-384 TJm +(me) 12.1743 Tj +15 TJm +(g) 4.9813 Tj +5 TJm +(abytes) 25.4544 Tj +-383 TJm +(long.) 20.2042 Tj +-1421 TJm +(V) 7.193 Tj +111 TJm +(ersions) 28.224 Tj +-384 TJm +(1.0.2) 19.9252 Tj +-383 TJm +(and) 14.386 Tj +-384 TJm +(abo) 14.386 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-384 TJm +(use) 13.2801 Tj +-383 TJm +(64-bit) 23.8007 Tj +-384 TJm +(ints) 14.396 Tj +-383 TJm +(on) 9.9626 Tj +-384 TJm +(some) 21.031 Tj +72 434.189 Td +(platforms) 38.1866 Tj +-245 TJm +(which) 24.3486 Tj +-246 TJm +(support) 29.8878 Tj +-245 TJm +(them) 19.9252 Tj +-246 TJm +(\(GNU) 24.8965 Tj +-245 TJm +(supported) 39.2925 Tj +-245 TJm +(tar) 10.5105 Tj +18 TJm +(gets,) 18.5404 Tj +-247 TJm +(and) 14.386 Tj +-245 TJm +(W) 9.40469 Tj +40 TJm +(indo) 17.7135 Tj +25 TJm +(ws\).) 16.8766 Tj +-309 TJm +(T) 6.08715 Tj +80 TJm +(o) 4.9813 Tj +-245 TJm +(establish) 34.8691 Tj +-245 TJm +(whether) 32.0895 Tj +-246 TJm +(or) 8.29885 Tj +-245 TJm +(not) 12.7322 Tj +[1 0 0 1 468.269 434.189] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468.269 -434.189] cm +[1 0 0 1 0 0] Tm +0 0 Td +468.269 434.189 Td +/F134_0 9.9626 Tf +(bzip2recover) 71.7307 Tj +[1 0 0 1 540 434.189] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -540 -434.189] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 422.233 Td +/F130_0 9.9626 Tf +(w) 7.193 Tj +10 TJm +(as) 8.29885 Tj +-255 TJm +(b) 4.9813 Tj +20 TJm +(uilt) 13.2901 Tj +-255 TJm +(with) 17.7135 Tj +-255 TJm +(such) 18.2614 Tj +-255 TJm +(a) 4.42339 Tj +-255 TJm +(limitation,) 41.2452 Tj +-256 TJm +(run) 13.2801 Tj +-255 TJm +(it) 5.53921 Tj +-255 TJm +(without) 30.4457 Tj +-255 TJm +(ar) 7.74094 Tj +18 TJm +(guments.) 36.2539 Tj +-325 TJm +(In) 8.29885 Tj +-255 TJm +(an) 9.40469 Tj +15 TJm +(y) 4.9813 Tj +-256 TJm +(e) 4.42339 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ent) 12.1743 Tj +-255 TJm +(you) 14.9439 Tj +-255 TJm +(can) 13.8281 Tj +-255 TJm +(b) 4.9813 Tj +20 TJm +(uild) 15.5018 Tj +-255 TJm +(yourself) 32.6474 Tj +-255 TJm +(an) 9.40469 Tj +-255 TJm +(unlimited) 38.1966 Tj +-255 TJm +(v) 4.9813 Tj +15 TJm +(ersion) 24.3486 Tj +-255 TJm +(if) 6.08715 Tj +72 410.278 Td +(you) 14.9439 Tj +-250 TJm +(can) 13.8281 Tj +-250 TJm +(recompile) 39.8404 Tj +-250 TJm +(it) 5.53921 Tj +-250 TJm +(with) 17.7135 Tj +[1 0 0 1 176.318 410.278] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -176.318 -410.278] cm +[1 0 0 1 0 0] Tm +0 0 Td +176.318 410.278 Td +/F134_0 9.9626 Tf +(MaybeUInt64) 65.7532 Tj +[1 0 0 1 242.071 410.278] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -242.071 -410.278] cm +[1 0 0 1 0 0] Tm +0 0 Td +244.562 410.278 Td +/F130_0 9.9626 Tf +(set) 11.0684 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(be) 9.40469 Tj +-250 TJm +(an) 9.40469 Tj +-250 TJm +(unsigned) 35.9749 Tj +-250 TJm +(64-bit) 23.8007 Tj +-250 TJm +(inte) 14.9439 Tj +15 TJm +(ger) 12.7222 Tj +55 TJm +(.) 2.49065 Tj +[1 0 0 1 72 408.121] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -398.159] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 375.525 Td +/F122_0 20.6585 Tf +(2.9.) 34.4584 Tj +-278 TJm +(A) 14.9154 Tj +50 TJm +(UTHOR) 73.441 Tj +[1 0 0 1 72 375.267] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -365.305] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 353.608 Td +/F130_0 9.9626 Tf +(Julian) 23.8007 Tj +-250 TJm +(Se) 9.9626 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(ard,) 15.2129 Tj +[1 0 0 1 132.801 353.608] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -132.801 -353.608] cm +[1 0 0 1 0 0] Tm +0 0 Td +132.801 353.608 Td +/F134_0 9.9626 Tf +(jseward@bzip.org) 95.641 Tj +[1 0 0 1 228.443 353.608] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -156.443 -1.5342] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -342.111] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 331.69 Td +/F130_0 9.9626 Tf +(The) 15.4918 Tj +-299 TJm +(ideas) 20.4731 Tj +-300 TJm +(embodied) 39.2925 Tj +-299 TJm +(in) 7.7509 Tj +[1 0 0 1 166.942 331.69] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -166.942 -331.69] cm +[1 0 0 1 0 0] Tm +0 0 Td +166.942 331.69 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 196.83 331.69] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -196.83 -331.69] cm +[1 0 0 1 0 0] Tm +0 0 Td +199.813 331.69 Td +/F130_0 9.9626 Tf +(are) 12.1643 Tj +-299 TJm +(due) 14.386 Tj +-300 TJm +(to) 7.7509 Tj +-299 TJm +(\(at) 10.5105 Tj +-300 TJm +(least\)) 21.579 Tj +-299 TJm +(the) 12.1743 Tj +-300 TJm +(follo) 18.8194 Tj +25 TJm +(wing) 19.9252 Tj +-299 TJm +(people:) 29.3299 Tj +-409 TJm +(Michael) 32.6474 Tj +-300 TJm +(Burro) 23.2427 Tj +25 TJm +(ws) 11.0684 Tj +-299 TJm +(and) 14.386 Tj +-299 TJm +(Da) 11.6164 Tj +20 TJm +(vid) 12.7322 Tj +-300 TJm +(Wheeler) 33.7433 Tj +-299 TJm +(\(for) 14.9339 Tj +72 319.735 Td +(the) 12.1743 Tj +-312 TJm +(block) 22.1369 Tj +-313 TJm +(sorting) 27.6761 Tj +-312 TJm +(transformation\),) 64.468 Tj +-328 TJm +(Da) 11.6164 Tj +20 TJm +(vid) 12.7322 Tj +-312 TJm +(Wheeler) 33.7433 Tj +-313 TJm +(\(ag) 12.7222 Tj +5 TJm +(ain,) 14.6649 Tj +-327 TJm +(for) 11.6164 Tj +-313 TJm +(the) 12.1743 Tj +-312 TJm +(Huf) 15.4918 Tj +25 TJm +(fman) 20.4731 Tj +-312 TJm +(coder\),) 27.9351 Tj +-328 TJm +(Peter) 20.4731 Tj +-313 TJm +(Fenwick) 34.3112 Tj +-312 TJm +(\(for) 14.9339 Tj +-312 TJm +(the) 12.1743 Tj +-313 TJm +(structured) 39.8404 Tj +72 307.78 Td +(coding) 27.1182 Tj +-325 TJm +(model) 24.9065 Tj +-326 TJm +(in) 7.7509 Tj +-325 TJm +(the) 12.1743 Tj +-326 TJm +(original) 30.9936 Tj +[1 0 0 1 191.156 307.779] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -191.156 -307.779] cm +[1 0 0 1 0 0] Tm +0 0 Td +191.156 307.779 Td +/F134_0 9.9626 Tf +(bzip) 23.9102 Tj +[1 0 0 1 215.067 307.779] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -215.067 -307.779] cm +[1 0 0 1 0 0] Tm +0 0 Td +215.067 307.779 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-344 TJm +(and) 14.386 Tj +-326 TJm +(man) 17.1556 Tj +15 TJm +(y) 4.9813 Tj +-325 TJm +(re\002nements\),) 52.2937 Tj +-345 TJm +(and) 14.386 Tj +-325 TJm +(Alistair) 29.8878 Tj +-326 TJm +(Mof) 17.1556 Tj +25 TJm +(f) 3.31755 Tj +10 TJm +(at,) 9.68365 Tj +-344 TJm +(Radford) 32.6474 Tj +-325 TJm +(Neal) 18.8094 Tj +-326 TJm +(and) 14.386 Tj +-325 TJm +(Ian) 12.7222 Tj +-326 TJm +(W) 9.40469 Tj +40 TJm +(itten) 17.7135 Tj +-325 TJm +(\(for) 14.9339 Tj +72 295.824 Td +(the) 12.1743 Tj +-277 TJm +(arithmetic) 40.3983 Tj +-277 TJm +(coder) 22.1269 Tj +-277 TJm +(in) 7.7509 Tj +-277 TJm +(the) 12.1743 Tj +-277 TJm +(original) 30.9936 Tj +[1 0 0 1 214.171 295.824] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -214.171 -295.824] cm +[1 0 0 1 0 0] Tm +0 0 Td +214.171 295.824 Td +/F134_0 9.9626 Tf +(bzip) 23.9102 Tj +[1 0 0 1 238.082 295.824] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -238.082 -295.824] cm +[1 0 0 1 0 0] Tm +0 0 Td +238.082 295.824 Td +/F130_0 9.9626 Tf +(\).) 5.8082 Tj +-782 TJm +(I) 3.31755 Tj +-277 TJm +(am) 12.1743 Tj +-276 TJm +(much) 22.1369 Tj +-277 TJm +(indebted) 34.3112 Tj +-277 TJm +(for) 11.6164 Tj +-277 TJm +(their) 18.2614 Tj +-277 TJm +(help,) 19.6462 Tj +-284 TJm +(support) 29.8878 Tj +-277 TJm +(and) 14.386 Tj +-277 TJm +(advice.) 28.493 Tj +-781 TJm +(See) 14.386 Tj +-277 TJm +(the) 12.1743 Tj +-277 TJm +(manual) 29.3299 Tj +72 283.869 Td +(in) 7.7509 Tj +-330 TJm +(the) 12.1743 Tj +-330 TJm +(source) 26.0024 Tj +-330 TJm +(distrib) 25.4644 Tj +20 TJm +(ution) 20.4831 Tj +-330 TJm +(for) 11.6164 Tj +-329 TJm +(pointers) 32.0995 Tj +-330 TJm +(to) 7.7509 Tj +-330 TJm +(sources) 29.8778 Tj +-330 TJm +(of) 8.29885 Tj +-330 TJm +(documentation.) 61.7083 Tj +-1099 TJm +(Christian) 36.5329 Tj +-330 TJm +(v) 4.9813 Tj +20 TJm +(on) 9.9626 Tj +-330 TJm +(Roques) 29.8878 Tj +-330 TJm +(encouraged) 45.9176 Tj +-330 TJm +(me) 12.1743 Tj +-330 TJm +(to) 7.7509 Tj +-330 TJm +(look) 17.7135 Tj +72 271.914 Td +(for) 11.6164 Tj +-271 TJm +(f) 3.31755 Tj +10 TJm +(aster) 18.8094 Tj +-271 TJm +(sorting) 27.6761 Tj +-271 TJm +(algorithms,) 45.1107 Tj +-276 TJm +(so) 8.85675 Tj +-272 TJm +(as) 8.29885 Tj +-271 TJm +(to) 7.7509 Tj +-271 TJm +(speed) 22.6848 Tj +-271 TJm +(up) 9.9626 Tj +-271 TJm +(compression.) 52.8516 Tj +-746 TJm +(Bela) 18.2614 Tj +-271 TJm +(Lubkin) 28.782 Tj +-271 TJm +(encouraged) 45.9176 Tj +-271 TJm +(me) 12.1743 Tj +-272 TJm +(to) 7.7509 Tj +-271 TJm +(impro) 23.8007 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-271 TJm +(the) 12.1743 Tj +-271 TJm +(w) 7.193 Tj +10 TJm +(orst-case) 35.4071 Tj +72 259.959 Td +(compression) 50.3609 Tj +-340 TJm +(performance.) 52.8317 Tj +-580 TJm +(Donna) 26.5603 Tj +-339 TJm +(Robinson) 38.1966 Tj +-340 TJm +(XMLised) 38.1866 Tj +-340 TJm +(the) 12.1743 Tj +-340 TJm +(documentation.) 61.7083 Tj +-580 TJm +(Man) 18.2614 Tj +15 TJm +(y) 4.9813 Tj +-340 TJm +(people) 26.5603 Tj +-340 TJm +(sent) 16.0497 Tj +-339 TJm +(patches,) 32.3685 Tj +-363 TJm +(helped) 26.5603 Tj +-340 TJm +(with) 17.7135 Tj +72 248.004 Td +(portability) 41.5142 Tj +-250 TJm +(problems,) 39.5714 Tj +-250 TJm +(lent) 14.9439 Tj +-250 TJm +(machines,) 40.1194 Tj +-250 TJm +(g) 4.9813 Tj +5 TJm +(a) 4.42339 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-250 TJm +(advice) 26.0024 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(were) 19.3573 Tj +-250 TJm +(generally) 37.0708 Tj +-250 TJm +(helpful.) 30.7147 Tj +[1 0 0 1 72 245.847] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 0 -194.995] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.5851] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 43.0633 -6.4855] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -496.332 -50.9514] cm +[1 0 0 1 0 0] Tm +0 0 Td +539.395 50.9514 Td +/F130_0 9.9626 Tf +(7) 4.9813 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 11 11 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 4.3836 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 141.643 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -141.643 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -13.9477] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -15.0365 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -21.5542] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -720] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 701.916 Td +/F122_0 24.7902 Tf +(3.) 20.675 Tj +-556 TJm +(Pr) 26.1785 Tj +20 TJm +(ogramming) 134.983 Tj +-278 TJm +(with) 49.5804 Tj +[1 0 0 1 330.484 701.916] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -330.484 -701.916] cm +[1 0 0 1 0 0] Tm +0 0 Td +330.484 701.916 Td +/F392_0 24.7902 Tf +(libbzip2) 118.993 Tj +[1 0 0 1 449.477 701.916] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -377.477 -5.5156] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -14.9439] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -671.493] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 656.35 Td +/F122_0 17.2154 Tf +(T) 10.5186 Tj +80 TJm +(ab) 20.0904 Tj +10 TJm +(le) 14.3576 Tj +-278 TJm +(of) 16.2513 Tj +-278 TJm +(Contents) 74.5943 Tj +[1 0 0 1 72 647.528] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -11.7401] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -635.788] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 635.788 Td +/F130_0 9.9626 Tf +(3.1.) 14.9439 Tj +-310 TJm +(T) 6.08715 Tj +80 TJm +(op-le) 20.4731 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(structure) 34.8591 Tj +[1 0 0 1 164.921 635.788] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -169.902 -635.788] cm +[1 0 0 1 0 0] Tm +0 0 Td +179.997 635.788 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +[1 0 0 1 511.108 635.788] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -511.108 -635.788] cm +[1 0 0 1 0 0] Tm +0 0 Td +511.108 635.788 Td +/F130_0 9.9626 Tf +(8) 4.9813 Tj +[1 0 0 1 516.09 635.788] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7983] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -623.832] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 623.832 Td +/F130_0 9.9626 Tf +(3.1.1.) 22.4159 Tj +-310 TJm +(Lo) 11.0684 Tj +25 TJm +(w-le) 17.7035 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(summary) 37.0808 Tj +[1 0 0 1 177.374 623.832] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -182.355 -623.832] cm +[1 0 0 1 0 0] Tm +0 0 Td +192.866 623.832 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +[1 0 0 1 511.108 623.832] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -511.108 -623.832] cm +[1 0 0 1 0 0] Tm +0 0 Td +511.108 623.832 Td +/F130_0 9.9626 Tf +(9) 4.9813 Tj +[1 0 0 1 516.09 623.832] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -2.1569] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7983] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -611.877] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 611.877 Td +/F130_0 9.9626 Tf +(3.1.2.) 22.4159 Tj +-310 TJm +(High-le) 30.4357 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(summary) 37.0808 Tj +[1 0 0 1 179.287 611.877] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -184.268 -611.877] cm +[1 0 0 1 0 0] Tm +0 0 Td +193.822 611.877 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +[1 0 0 1 511.108 611.877] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -511.108 -611.877] cm +[1 0 0 1 0 0] Tm +0 0 Td +511.108 611.877 Td +/F130_0 9.9626 Tf +(9) 4.9813 Tj +[1 0 0 1 516.09 611.877] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7984] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -599.922] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 599.922 Td +/F130_0 9.9626 Tf +(3.1.3.) 22.4159 Tj +-310 TJm +(Utility) 26.0223 Tj +-250 TJm +(functions) 37.0808 Tj +-250 TJm +(summary) 37.0808 Tj +[1 0 0 1 202.669 599.922] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -207.65 -599.922] cm +[1 0 0 1 0 0] Tm +0 0 Td +216.582 599.922 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +[1 0 0 1 511.108 599.922] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -511.108 -599.922] cm +[1 0 0 1 0 0] Tm +0 0 Td +511.108 599.922 Td +/F130_0 9.9626 Tf +(9) 4.9813 Tj +[1 0 0 1 516.09 599.922] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7983] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -587.967] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 587.967 Td +/F130_0 9.9626 Tf +(3.2.) 14.9439 Tj +-310 TJm +(Error) 21.0211 Tj +-250 TJm +(handling) 34.8691 Tj +[1 0 0 1 148.413 587.967] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -153.394 -587.967] cm +[1 0 0 1 0 0] Tm +0 0 Td +162.611 587.967 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 587.967] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -587.967] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 587.967 Td +/F130_0 9.9626 Tf +(10) 9.9626 Tj +[1 0 0 1 516.09 587.967] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -2.1569] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7983] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -576.012] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 576.012 Td +/F130_0 9.9626 Tf +(3.3.) 14.9439 Tj +-310 TJm +(Lo) 11.0684 Tj +25 TJm +(w-le) 17.7035 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(interf) 21.579 Tj +10 TJm +(ace) 13.2702 Tj +[1 0 0 1 167.571 576.012] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -172.552 -576.012] cm +[1 0 0 1 0 0] Tm +0 0 Td +181.045 576.012 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 576.012] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -576.012] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 576.012 Td +/F130_0 9.9626 Tf +(11) 9.9626 Tj +[1 0 0 1 516.09 576.012] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -0.0995] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -11.8557] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -564.056] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 564.056 Td +/F130_0 9.9626 Tf +(3.3.1.) 22.4159 Tj +[1 0 0 1 97.5043 564.056] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -97.5043 -564.056] cm +[1 0 0 1 0 0] Tm +0 0 Td +97.5043 564.056 Td +/F134_0 9.9626 Tf +(BZ2_bzCompressInit) 107.596 Tj +[1 0 0 1 205.101 564.056] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -210.082 -564.056] cm +[1 0 0 1 0 0] Tm +0 0 Td +219.736 564.056 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 564.056] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -564.056] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 564.056 Td +/F130_0 9.9626 Tf +(11) 9.9626 Tj +[1 0 0 1 516.09 564.056] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -1.5341] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -10.421] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -552.101] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 552.101 Td +/F130_0 9.9626 Tf +(3.3.2.) 22.4159 Tj +[1 0 0 1 97.5043 552.101] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -97.5043 -552.101] cm +[1 0 0 1 0 0] Tm +0 0 Td +97.5043 552.101 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 181.19 552.101] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -186.172 -552.101] cm +[1 0 0 1 0 0] Tm +0 0 Td +194.497 552.101 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 552.101] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -552.101] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 552.101 Td +/F130_0 9.9626 Tf +(13) 9.9626 Tj +[1 0 0 1 516.09 552.101] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -1.5342] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -10.421] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -540.146] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 540.146 Td +/F130_0 9.9626 Tf +(3.3.3.) 22.4159 Tj +[1 0 0 1 97.5043 540.146] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -97.5043 -540.146] cm +[1 0 0 1 0 0] Tm +0 0 Td +97.5043 540.146 Td +/F134_0 9.9626 Tf +(BZ2_bzCompressEnd) 101.619 Tj +[1 0 0 1 199.123 540.146] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -204.105 -540.146] cm +[1 0 0 1 0 0] Tm +0 0 Td +214.533 540.146 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 540.146] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -540.146] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 540.146 Td +/F130_0 9.9626 Tf +(16) 9.9626 Tj +[1 0 0 1 516.09 540.146] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -1.5342] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -10.421] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -528.191] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 528.191 Td +/F130_0 9.9626 Tf +(3.3.4.) 22.4159 Tj +[1 0 0 1 97.5043 528.191] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -97.5043 -528.191] cm +[1 0 0 1 0 0] Tm +0 0 Td +97.5043 528.191 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompressInit) 119.551 Tj +[1 0 0 1 217.056 528.191] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -222.037 -528.191] cm +[1 0 0 1 0 0] Tm +0 0 Td +232.355 528.191 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 528.191] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -528.191] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 528.191 Td +/F130_0 9.9626 Tf +(16) 9.9626 Tj +[1 0 0 1 516.09 528.191] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -1.5341] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -10.421] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -516.236] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 516.236 Td +/F130_0 9.9626 Tf +(3.3.5.) 22.4159 Tj +[1 0 0 1 97.5043 516.236] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -97.5043 -516.236] cm +[1 0 0 1 0 0] Tm +0 0 Td +97.5043 516.236 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +[1 0 0 1 193.146 516.236] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -198.127 -516.236] cm +[1 0 0 1 0 0] Tm +0 0 Td +207.116 516.236 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 516.236] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -516.236] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 516.236 Td +/F130_0 9.9626 Tf +(17) 9.9626 Tj +[1 0 0 1 516.09 516.236] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -1.5342] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -10.421] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -504.281] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 504.281 Td +/F130_0 9.9626 Tf +(3.3.6.) 22.4159 Tj +[1 0 0 1 97.5043 504.281] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -97.5043 -504.281] cm +[1 0 0 1 0 0] Tm +0 0 Td +97.5043 504.281 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompressEnd) 113.574 Tj +[1 0 0 1 211.078 504.281] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -216.06 -504.281] cm +[1 0 0 1 0 0] Tm +0 0 Td +224.938 504.281 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 504.281] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -504.281] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 504.281 Td +/F130_0 9.9626 Tf +(18) 9.9626 Tj +[1 0 0 1 516.09 504.281] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -1.5342] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -10.421] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -492.325] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 492.325 Td +/F130_0 9.9626 Tf +(3.4.) 14.9439 Tj +-310 TJm +(High-le) 30.4357 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(interf) 21.579 Tj +10 TJm +(ace) 13.2702 Tj +[1 0 0 1 169.483 492.325] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -174.465 -492.325] cm +[1 0 0 1 0 0] Tm +0 0 Td +184.216 492.325 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 492.325] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -492.325] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 492.325 Td +/F130_0 9.9626 Tf +(18) 9.9626 Tj +[1 0 0 1 516.09 492.325] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7983] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -480.37] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 480.37 Td +/F130_0 9.9626 Tf +(3.4.1.) 22.4159 Tj +[1 0 0 1 97.5043 480.37] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -97.5043 -480.37] cm +[1 0 0 1 0 0] Tm +0 0 Td +97.5043 480.37 Td +/F134_0 9.9626 Tf +(BZ2_bzReadOpen) 83.6858 Tj +[1 0 0 1 181.19 480.37] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -186.172 -480.37] cm +[1 0 0 1 0 0] Tm +0 0 Td +194.497 480.37 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 480.37] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -480.37] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 480.37 Td +/F130_0 9.9626 Tf +(19) 9.9626 Tj +[1 0 0 1 516.09 480.37] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -1.5342] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -10.421] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -468.415] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 468.415 Td +/F130_0 9.9626 Tf +(3.4.2.) 22.4159 Tj +[1 0 0 1 97.5043 468.415] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -97.5043 -468.415] cm +[1 0 0 1 0 0] Tm +0 0 Td +97.5043 468.415 Td +/F134_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +[1 0 0 1 157.28 468.415] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -162.261 -468.415] cm +[1 0 0 1 0 0] Tm +0 0 Td +171.472 468.415 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 468.415] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -468.415] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 468.415 Td +/F130_0 9.9626 Tf +(20) 9.9626 Tj +[1 0 0 1 516.09 468.415] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -1.31] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -10.6452] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -456.46] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 456.46 Td +/F130_0 9.9626 Tf +(3.4.3.) 22.4159 Tj +[1 0 0 1 97.5043 456.46] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -97.5043 -456.46] cm +[1 0 0 1 0 0] Tm +0 0 Td +97.5043 456.46 Td +/F134_0 9.9626 Tf +(BZ2_bzReadGetUnused) 113.574 Tj +[1 0 0 1 211.078 456.46] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -216.06 -456.46] cm +[1 0 0 1 0 0] Tm +0 0 Td +224.938 456.46 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 456.46] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -456.46] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 456.46 Td +/F130_0 9.9626 Tf +(21) 9.9626 Tj +[1 0 0 1 516.09 456.46] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -1.31] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -10.6452] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -444.505] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 444.505 Td +/F130_0 9.9626 Tf +(3.4.4.) 22.4159 Tj +[1 0 0 1 97.5043 444.505] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -97.5043 -444.505] cm +[1 0 0 1 0 0] Tm +0 0 Td +97.5043 444.505 Td +/F134_0 9.9626 Tf +(BZ2_bzReadClose) 89.6634 Tj +[1 0 0 1 187.168 444.505] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -192.149 -444.505] cm +[1 0 0 1 0 0] Tm +0 0 Td +201.914 444.505 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 444.505] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -444.505] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 444.505 Td +/F130_0 9.9626 Tf +(22) 9.9626 Tj +[1 0 0 1 516.09 444.505] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -1.31] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -10.6451] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -432.55] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 432.55 Td +/F130_0 9.9626 Tf +(3.4.5.) 22.4159 Tj +[1 0 0 1 97.5043 432.55] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -97.5043 -432.55] cm +[1 0 0 1 0 0] Tm +0 0 Td +97.5043 432.55 Td +/F134_0 9.9626 Tf +(BZ2_bzWriteOpen) 89.6634 Tj +[1 0 0 1 187.168 432.55] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -192.149 -432.55] cm +[1 0 0 1 0 0] Tm +0 0 Td +201.914 432.55 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 432.55] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -432.55] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 432.55 Td +/F130_0 9.9626 Tf +(22) 9.9626 Tj +[1 0 0 1 516.09 432.55] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -1.5342] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -10.421] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -420.594] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 420.594 Td +/F130_0 9.9626 Tf +(3.4.6.) 22.4159 Tj +[1 0 0 1 97.5043 420.594] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -97.5043 -420.594] cm +[1 0 0 1 0 0] Tm +0 0 Td +97.5043 420.594 Td +/F134_0 9.9626 Tf +(BZ2_bzWrite) 65.7532 Tj +[1 0 0 1 163.258 420.594] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -168.239 -420.594] cm +[1 0 0 1 0 0] Tm +0 0 Td +176.675 420.594 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 420.594] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -420.594] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 420.594 Td +/F130_0 9.9626 Tf +(23) 9.9626 Tj +[1 0 0 1 516.09 420.594] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -1.31] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -10.6452] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -408.639] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 408.639 Td +/F130_0 9.9626 Tf +(3.4.7.) 22.4159 Tj +[1 0 0 1 97.5043 408.639] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -97.5043 -408.639] cm +[1 0 0 1 0 0] Tm +0 0 Td +97.5043 408.639 Td +/F134_0 9.9626 Tf +(BZ2_bzWriteClose) 95.641 Tj +[1 0 0 1 193.146 408.639] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -198.127 -408.639] cm +[1 0 0 1 0 0] Tm +0 0 Td +207.116 408.639 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 408.639] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -408.639] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 408.639 Td +/F130_0 9.9626 Tf +(23) 9.9626 Tj +[1 0 0 1 516.09 408.639] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -1.31] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -10.6451] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -396.684] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 396.684 Td +/F130_0 9.9626 Tf +(3.4.8.) 22.4159 Tj +-310 TJm +(Handling) 37.0808 Tj +-250 TJm +(embedded) 40.9463 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(streams) 30.4357 Tj +[1 0 0 1 279.56 396.684] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -284.541 -396.684] cm +[1 0 0 1 0 0] Tm +0 0 Td +294.601 396.684 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 396.684] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -396.684] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 396.684 Td +/F130_0 9.9626 Tf +(24) 9.9626 Tj +[1 0 0 1 516.09 396.684] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7984] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -384.729] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 384.729 Td +/F130_0 9.9626 Tf +(3.4.9.) 22.4159 Tj +-310 TJm +(Standard) 35.417 Tj +-250 TJm +(\002le-reading/writing) 77.4791 Tj +-250 TJm +(code) 18.8094 Tj +[1 0 0 1 234.19 384.729] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -239.172 -384.729] cm +[1 0 0 1 0 0] Tm +0 0 Td +247.564 384.729 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 384.729] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -384.729] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 384.729 Td +/F130_0 9.9626 Tf +(25) 9.9626 Tj +[1 0 0 1 516.09 384.729] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7984] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -372.774] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 372.774 Td +/F130_0 9.9626 Tf +(3.5.) 14.9439 Tj +-310 TJm +(Utility) 26.0223 Tj +-250 TJm +(functions) 37.0808 Tj +[1 0 0 1 155.625 372.774] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -160.607 -372.774] cm +[1 0 0 1 0 0] Tm +0 0 Td +170.645 372.774 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 372.774] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -372.774] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 372.774 Td +/F130_0 9.9626 Tf +(26) 9.9626 Tj +[1 0 0 1 516.09 372.774] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7983] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -360.819] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 360.819 Td +/F130_0 9.9626 Tf +(3.5.1.) 22.4159 Tj +[1 0 0 1 97.5043 360.819] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -97.5043 -360.819] cm +[1 0 0 1 0 0] Tm +0 0 Td +97.5043 360.819 Td +/F134_0 9.9626 Tf +(BZ2_bzBuffToBuffCompress) 143.461 Tj +[1 0 0 1 240.966 360.819] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -245.948 -360.819] cm +[1 0 0 1 0 0] Tm +0 0 Td +255.38 360.819 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 360.819] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -360.819] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 360.819 Td +/F130_0 9.9626 Tf +(26) 9.9626 Tj +[1 0 0 1 516.09 360.819] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -1.5342] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -10.421] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -348.863] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 348.863 Td +/F130_0 9.9626 Tf +(3.5.2.) 22.4159 Tj +[1 0 0 1 97.5043 348.863] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -97.5043 -348.863] cm +[1 0 0 1 0 0] Tm +0 0 Td +97.5043 348.863 Td +/F134_0 9.9626 Tf +(BZ2_bzBuffToBuffDecompress) 155.417 Tj +[1 0 0 1 252.922 348.863] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -257.903 -348.863] cm +[1 0 0 1 0 0] Tm +0 0 Td +267.999 348.863 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 348.863] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -348.863] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 348.863 Td +/F130_0 9.9626 Tf +(27) 9.9626 Tj +[1 0 0 1 516.09 348.863] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -1.5342] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -10.421] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -336.908] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 336.908 Td +/F130_0 9.9626 Tf +(3.6.) 14.9439 Tj +[1 0 0 1 90.0324 336.908] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90.0324 -336.908] cm +[1 0 0 1 0 0] Tm +0 0 Td +90.0324 336.908 Td +/F134_0 9.9626 Tf +(zlib) 23.9102 Tj +[1 0 0 1 113.943 336.908] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -113.943 -336.908] cm +[1 0 0 1 0 0] Tm +0 0 Td +116.433 336.908 Td +/F130_0 9.9626 Tf +(compatibility) 53.1405 Tj +-250 TJm +(functions) 37.0808 Tj +[1 0 0 1 209.144 336.908] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -214.126 -336.908] cm +[1 0 0 1 0 0] Tm +0 0 Td +223.971 336.908 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 336.908] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -336.908] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 336.908 Td +/F130_0 9.9626 Tf +(28) 9.9626 Tj +[1 0 0 1 516.09 336.908] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7983] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -324.953] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 324.953 Td +/F130_0 9.9626 Tf +(3.7.) 14.9439 Tj +-310 TJm +(Using) 23.8007 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(library) 26.5603 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(a) 4.42339 Tj +[1 0 0 1 177.195 324.953] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -177.195 -324.953] cm +[1 0 0 1 0 0] Tm +0 0 Td +177.195 324.953 Td +/F134_0 9.9626 Tf +(stdio) 29.8878 Tj +[1 0 0 1 207.083 324.953] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -207.083 -324.953] cm +[1 0 0 1 0 0] Tm +0 0 Td +207.083 324.953 Td +/F130_0 9.9626 Tf +(-free) 18.7994 Tj +-250 TJm +(en) 9.40469 Tj +40 TJm +(vironment) 40.9562 Tj +[1 0 0 1 278.335 324.953] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -283.316 -324.953] cm +[1 0 0 1 0 0] Tm +0 0 Td +291.775 324.953 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 324.953] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -324.953] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 324.953 Td +/F130_0 9.9626 Tf +(28) 9.9626 Tj +[1 0 0 1 516.09 324.953] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -2.1569] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7983] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -312.998] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 312.998 Td +/F130_0 9.9626 Tf +(3.7.1.) 22.4159 Tj +-310 TJm +(Getting) 29.8878 Tj +-250 TJm +(rid) 11.0684 Tj +-250 TJm +(of) 8.29885 Tj +[1 0 0 1 154.231 312.998] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -154.231 -312.998] cm +[1 0 0 1 0 0] Tm +0 0 Td +154.231 312.998 Td +/F134_0 9.9626 Tf +(stdio) 29.8878 Tj +[1 0 0 1 184.119 312.998] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -189.1 -312.998] cm +[1 0 0 1 0 0] Tm +0 0 Td +198.175 312.998 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 312.998] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -312.998] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 312.998 Td +/F130_0 9.9626 Tf +(29) 9.9626 Tj +[1 0 0 1 516.09 312.998] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7984] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -301.043] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 301.043 Td +/F130_0 9.9626 Tf +(3.7.2.) 22.4159 Tj +-310 TJm +(Critical) 29.8878 Tj +-250 TJm +(error) 19.3573 Tj +-250 TJm +(handling) 34.8691 Tj +[1 0 0 1 186.599 301.043] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -191.58 -301.043] cm +[1 0 0 1 0 0] Tm +0 0 Td +201.629 301.043 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 301.043] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -301.043] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 301.043 Td +/F130_0 9.9626 Tf +(29) 9.9626 Tj +[1 0 0 1 516.09 301.043] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7983] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -289.088] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 289.088 Td +/F130_0 9.9626 Tf +(3.8.) 14.9439 Tj +-310 TJm +(Making) 30.9936 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(W) 9.40469 Tj +40 TJm +(indo) 17.7135 Tj +25 TJm +(ws) 11.0684 Tj +-250 TJm +(DLL) 19.3673 Tj +[1 0 0 1 189.828 289.088] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -194.809 -289.088] cm +[1 0 0 1 0 0] Tm +0 0 Td +203.243 289.088 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 289.088] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -289.088] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 289.088 Td +/F130_0 9.9626 Tf +(29) 9.9626 Tj +[1 0 0 1 516.09 289.088] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -2.1569] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -267.006] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 257.207 Td +/F130_0 9.9626 Tf +(This) 17.7135 Tj +-250 TJm +(chapter) 29.3199 Tj +-250 TJm +(describes) 37.0708 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(programming) 54.2364 Tj +-250 TJm +(interf) 21.579 Tj +10 TJm +(ace) 13.2702 Tj +-250 TJm +(to) 7.7509 Tj +[1 0 0 1 282.448 257.207] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -282.448 -257.207] cm +[1 0 0 1 0 0] Tm +0 0 Td +282.448 257.207 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 330.269 257.207] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -330.269 -257.207] cm +[1 0 0 1 0 0] Tm +0 0 Td +330.269 257.207 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 255.05] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -245.088] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 235.289 Td +/F130_0 9.9626 Tf +(F) 5.53921 Tj +15 TJm +(or) 8.29885 Tj +-273 TJm +(general) 29.3199 Tj +-272 TJm +(background) 47.0334 Tj +-273 TJm +(information,) 49.534 Tj +-278 TJm +(particularly) 45.9276 Tj +-273 TJm +(about) 22.1369 Tj +-273 TJm +(memory) 33.2053 Tj +-272 TJm +(use) 13.2801 Tj +-273 TJm +(and) 14.386 Tj +-273 TJm +(performance) 50.341 Tj +-272 TJm +(aspects,) 31.2626 Tj +-279 TJm +(you') 18.2614 Tj +50 TJm +(d) 4.9813 Tj +-272 TJm +(be) 9.40469 Tj +-273 TJm +(well) 17.1556 Tj +-273 TJm +(advised) 30.4357 Tj +72 223.334 Td +(to) 7.7509 Tj +-250 TJm +(read) 17.1456 Tj +[1 0 0 1 101.878 223.334] cm +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +[1 0 0 1 -101.878 -223.334] cm +[1 0 0 1 0 0] Tm +0 0 Td +101.878 223.334 Td +/F130_0 9.9626 Tf +(Ho) 12.1743 Tj +25 TJm +(w) 7.193 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(bzip2) 22.1369 Tj +[1 0 0 1 171.636 223.334] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +[1 0 0 1 -171.636 -223.334] cm +[1 0 0 1 0 0] Tm +0 0 Td +174.126 223.334 Td +/F130_0 9.9626 Tf +([2]) 11.6164 Tj +[1 0 0 1 185.743 223.334] cm +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -185.743 -223.334] cm +[1 0 0 1 0 0] Tm +0 0 Td +188.233 223.334 Td +/F130_0 9.9626 Tf +(as) 8.29885 Tj +-250 TJm +(well.) 19.6462 Tj +[1 0 0 1 72 221.177] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -211.215] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 188.581 Td +/F122_0 20.6585 Tf +(3.1.) 34.4584 Tj +-278 TJm +(T) 12.6223 Tj +80 TJm +(op-le) 49.3532 Tj +15 TJm +(vel) 28.7153 Tj +-278 TJm +(structure) 89.5339 Tj +[1 0 0 1 72 184.305] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -174.343] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 166.664 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 119.821 166.664] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -119.821 -166.664] cm +[1 0 0 1 0 0] Tm +0 0 Td +123.608 166.664 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-380 TJm +(a) 4.42339 Tj +-380 TJm +(\003e) 9.9626 Tj +15 TJm +(xible) 19.9252 Tj +-381 TJm +(library) 26.5603 Tj +-380 TJm +(for) 11.6164 Tj +-380 TJm +(compressing) 50.3609 Tj +-380 TJm +(and) 14.386 Tj +-380 TJm +(decompressing) 59.7656 Tj +-380 TJm +(data) 16.5977 Tj +-381 TJm +(in) 7.7509 Tj +-380 TJm +(the) 12.1743 Tj +[1 0 0 1 405.291 166.664] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -405.291 -166.664] cm +[1 0 0 1 0 0] Tm +0 0 Td +405.291 166.664 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 435.178 166.664] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -435.178 -166.664] cm +[1 0 0 1 0 0] Tm +0 0 Td +438.966 166.664 Td +/F130_0 9.9626 Tf +(data) 16.5977 Tj +-380 TJm +(format.) 29.0509 Tj +-1401 TJm +(Although) 37.6387 Tj +72 154.708 Td +(packaged) 37.6188 Tj +-285 TJm +(as) 8.29885 Tj +-284 TJm +(a) 4.42339 Tj +-285 TJm +(single) 23.8007 Tj +-285 TJm +(entity) 22.6948 Tj +65 TJm +(,) 2.49065 Tj +-293 TJm +(it) 5.53921 Tj +-285 TJm +(helps) 21.031 Tj +-285 TJm +(to) 7.7509 Tj +-284 TJm +(re) 7.74094 Tj +15 TJm +(g) 4.9813 Tj +5 TJm +(ard) 12.7222 Tj +-285 TJm +(the) 12.1743 Tj +-285 TJm +(library) 26.5603 Tj +-284 TJm +(as) 8.29885 Tj +-285 TJm +(three) 19.9152 Tj +-285 TJm +(separate) 32.6375 Tj +-284 TJm +(parts:) 22.1369 Tj +-380 TJm +(the) 12.1743 Tj +-285 TJm +(lo) 7.7509 Tj +25 TJm +(w) 7.193 Tj +-284 TJm +(le) 7.193 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-285 TJm +(interf) 21.579 Tj +10 TJm +(ace,) 15.7608 Tj +-293 TJm +(and) 14.386 Tj +-285 TJm +(the) 12.1743 Tj +-285 TJm +(high) 17.7135 Tj +72 142.753 Td +(le) 7.193 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(interf) 21.579 Tj +10 TJm +(ace,) 15.7608 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(some) 21.031 Tj +-250 TJm +(utility) 23.8106 Tj +-250 TJm +(functions.) 39.5714 Tj +[1 0 0 1 72 140.596] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -130.634] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 120.835 Td +/F130_0 9.9626 Tf +(The) 15.4918 Tj +-349 TJm +(structure) 34.8591 Tj +-349 TJm +(of) 8.29885 Tj +[1 0 0 1 141.082 120.835] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -141.082 -120.835] cm +[1 0 0 1 0 0] Tm +0 0 Td +141.082 120.835 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 188.903 120.835] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -188.903 -120.835] cm +[1 0 0 1 0 0] Tm +0 0 Td +188.903 120.835 Td +/F130_0 9.9626 Tf +(') 3.31755 Tj +55 TJm +(s) 3.87545 Tj +-349 TJm +(interf) 21.579 Tj +10 TJm +(aces) 17.1456 Tj +-349 TJm +(is) 6.64505 Tj +-349 TJm +(similar) 27.6761 Tj +-349 TJm +(to) 7.7509 Tj +-349 TJm +(that) 14.9439 Tj +-349 TJm +(of) 8.29885 Tj +-349 TJm +(Jean-loup) 38.7346 Tj +-349 TJm +(Gailly') 28.224 Tj +55 TJm +(s) 3.87545 Tj +-349 TJm +(and) 14.386 Tj +-349 TJm +(Mark) 21.579 Tj +-349 TJm +(Adler') 26.0024 Tj +55 TJm +(s) 3.87545 Tj +-349 TJm +(e) 4.42339 Tj +15 TJm +(xcellent) 31.5416 Tj +[1 0 0 1 516.09 120.835] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -516.09 -120.835] cm +[1 0 0 1 0 0] Tm +0 0 Td +516.09 120.835 Td +/F134_0 9.9626 Tf +(zlib) 23.9102 Tj +[1 0 0 1 540 120.835] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -540 -120.835] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 108.88 Td +/F130_0 9.9626 Tf +(library) 26.5603 Tj +65 TJm +(.) 2.49065 Tj +[1 0 0 1 72 106.723] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -96.7608] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 86.9624 Td +/F130_0 9.9626 Tf +(All) 12.7322 Tj +-242 TJm +(e) 4.42339 Tj +15 TJm +(xternally) 35.417 Tj +-242 TJm +(visible) 26.5703 Tj +-241 TJm +(symbols) 33.2153 Tj +-242 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-242 TJm +(names) 25.4544 Tj +-242 TJm +(be) 9.40469 Tj +15 TJm +(ginning) 30.4457 Tj +[1 0 0 1 284.687 86.9624] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -284.687 -86.9624] cm +[1 0 0 1 0 0] Tm +0 0 Td +284.687 86.9624 Td +/F134_0 9.9626 Tf +(BZ2_) 23.9102 Tj +[1 0 0 1 308.597 86.9624] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -308.597 -86.9624] cm +[1 0 0 1 0 0] Tm +0 0 Td +308.597 86.9624 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-615 TJm +(This) 17.7135 Tj +-241 TJm +(is) 6.64505 Tj +-242 TJm +(ne) 9.40469 Tj +25 TJm +(w) 7.193 Tj +-242 TJm +(in) 7.7509 Tj +-242 TJm +(v) 4.9813 Tj +15 TJm +(ersion) 24.3486 Tj +-242 TJm +(1.0.) 14.9439 Tj +-614 TJm +(The) 15.4918 Tj +-242 TJm +(intention) 35.427 Tj +-242 TJm +(is) 6.64505 Tj +-241 TJm +(to) 7.7509 Tj +-242 TJm +(minimise) 37.0908 Tj +72 75.0073 Td +(pollution) 35.9849 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(namespaces) 47.5814 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(library) 26.5603 Tj +-250 TJm +(clients.) 28.503 Tj +[1 0 0 1 72 72.8505] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -21.9987] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 4.3836 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 43.0633 -6.7545] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -498.225 -50.9514] cm +[1 0 0 1 0 0] Tm +0 0 Td +541.288 50.9514 Td +/F130_0 9.9626 Tf +(8) 4.9813 Tj +[1 0 0 1 455.161 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5986 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -15.0366 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 12 12 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 4.3836 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 -8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 76.4979 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -344.462 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +420.96 749.245 Td +/F130_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +[1 0 0 1 498.449 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -498.449 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +498.449 749.245 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 546.269 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.305 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -5.0363] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -15.0365 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -21.5542] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -720] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F130_0 9.9626 Tf +(T) 6.08715 Tj +80 TJm +(o) 4.9813 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(an) 9.40469 Tj +15 TJm +(y) 4.9813 Tj +-250 TJm +(part) 15.4918 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(library) 26.5603 Tj +65 TJm +(,) 2.49065 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(need) 18.8094 Tj +-250 TJm +(to) 7.7509 Tj +[1 0 0 1 240.567 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -240.567 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +240.567 710.037 Td +/F134_0 9.9626 Tf +(#include) 47.8205 Tj +-600 TJm +() 53.798 Tj +[1 0 0 1 348.163 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -348.163 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +350.654 710.037 Td +/F130_0 9.9626 Tf +(into) 15.5018 Tj +-250 TJm +(your) 18.2614 Tj +-250 TJm +(sources.) 32.3685 Tj +[1 0 0 1 72 707.88] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -697.918] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 679.416 Td +/F122_0 17.2154 Tf +(3.1.1.) 43.0729 Tj +-278 TJm +(Lo) 21.0372 Tj +15 TJm +(w-le) 33.484 Tj +15 TJm +(vel) 23.9294 Tj +-278 TJm +(summar) 66.9679 Tj +-10 TJm +(y) 9.57176 Tj +[1 0 0 1 72 675.853] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -665.89] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 657.498 Td +/F130_0 9.9626 Tf +(This) 17.7135 Tj +-212 TJm +(interf) 21.579 Tj +10 TJm +(ace) 13.2702 Tj +-212 TJm +(pro) 13.2801 Tj +15 TJm +(vides) 21.031 Tj +-212 TJm +(services) 32.0895 Tj +-212 TJm +(for) 11.6164 Tj +-212 TJm +(compressing) 50.3609 Tj +-212 TJm +(and) 14.386 Tj +-212 TJm +(decompress) 47.0334 Tj +1 TJm +(ing) 12.7322 Tj +-212 TJm +(data) 16.5977 Tj +-212 TJm +(in) 7.7509 Tj +-212 TJm +(memory) 33.2053 Tj +65 TJm +(.) 2.49065 Tj +-595 TJm +(There') 26.5503 Tj +55 TJm +(s) 3.87545 Tj +-212 TJm +(no) 9.9626 Tj +-212 TJm +(pro) 13.2801 Tj +15 TJm +(vision) 24.3586 Tj +-212 TJm +(for) 11.6164 Tj +-212 TJm +(dealing) 29.3299 Tj +72 645.543 Td +(with) 17.7135 Tj +-213 TJm +(\002les,) 19.0983 Tj +-220 TJm +(streams) 30.4357 Tj +-213 TJm +(or) 8.29885 Tj +-213 TJm +(an) 9.40469 Tj +15 TJm +(y) 4.9813 Tj +-213 TJm +(other) 20.4731 Tj +-213 TJm +(I/O) 13.2801 Tj +-213 TJm +(mechanisms,) 51.7457 Tj +-221 TJm +(just) 14.396 Tj +-213 TJm +(straight) 29.8878 Tj +-213 TJm +(memory-to-memory) 80.7967 Tj +-213 TJm +(w) 7.193 Tj +10 TJm +(ork.) 15.7708 Tj +-595 TJm +(In) 8.29885 Tj +-213 TJm +(f) 3.31755 Tj +10 TJm +(act,) 14.107 Tj +-221 TJm +(this) 14.396 Tj +-213 TJm +(part) 15.4918 Tj +-213 TJm +(of) 8.29885 Tj +-213 TJm +(the) 12.1743 Tj +-213 TJm +(library) 26.5603 Tj +72 633.588 Td +(can) 13.8281 Tj +-250 TJm +(be) 9.40469 Tj +-250 TJm +(compiled) 37.0808 Tj +-250 TJm +(without) 30.4457 Tj +-250 TJm +(inclusion) 36.5329 Tj +-250 TJm +(of) 8.29885 Tj +[1 0 0 1 222.534 633.588] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -222.534 -633.588] cm +[1 0 0 1 0 0] Tm +0 0 Td +222.534 633.588 Td +/F134_0 9.9626 Tf +(stdio.h) 41.8429 Tj +[1 0 0 1 264.377 633.588] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -264.377 -633.588] cm +[1 0 0 1 0 0] Tm +0 0 Td +264.377 633.588 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-250 TJm +(which) 24.3486 Tj +-250 TJm +(may) 17.1556 Tj +-250 TJm +(be) 9.40469 Tj +-250 TJm +(helpful) 28.224 Tj +-250 TJm +(for) 11.6164 Tj +-250 TJm +(embedded) 40.9463 Tj +-250 TJm +(applications.) 50.6399 Tj +[1 0 0 1 72 631.431] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -621.469] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 611.67 Td +/F130_0 9.9626 Tf +(The) 15.4918 Tj +-250 TJm +(lo) 7.7509 Tj +25 TJm +(w-le) 17.7035 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(part) 15.4918 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(library) 26.5603 Tj +-250 TJm +(has) 13.2801 Tj +-250 TJm +(no) 9.9626 Tj +-250 TJm +(global) 24.9065 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(ariables) 30.9837 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(is) 6.64505 Tj +-250 TJm +(therefore) 35.955 Tj +-250 TJm +(thread-safe.) 46.7445 Tj +[1 0 0 1 72 609.513] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -599.551] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 589.752 Td +/F130_0 9.9626 Tf +(Six) 13.2901 Tj +-875 TJm +(routines) 32.0995 Tj +-876 TJm +(mak) 17.1556 Tj +10 TJm +(e) 4.42339 Tj +-875 TJm +(up) 9.9626 Tj +-876 TJm +(the) 12.1743 Tj +-875 TJm +(lo) 7.7509 Tj +25 TJm +(w) 7.193 Tj +-876 TJm +(le) 7.193 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-875 TJm +(interf) 21.579 Tj +10 TJm +(ace:) 16.0398 Tj +[1 0 0 1 308.791 589.752] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -308.791 -589.752] cm +[1 0 0 1 0 0] Tm +0 0 Td +308.791 589.752 Td +/F134_0 9.9626 Tf +(BZ2_bzCompressInit) 107.596 Tj +[1 0 0 1 416.387 589.752] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -416.387 -589.752] cm +[1 0 0 1 0 0] Tm +0 0 Td +416.387 589.752 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 429.158 589.752] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -429.158 -589.752] cm +[1 0 0 1 0 0] Tm +0 0 Td +429.158 589.752 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 512.844 589.752] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -512.844 -589.752] cm +[1 0 0 1 0 0] Tm +0 0 Td +512.844 589.752 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-1032 TJm +(and) 14.386 Tj +[1 0 0 1 72 577.797] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -577.797] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 577.797 Td +/F134_0 9.9626 Tf +(BZ2_bzCompressEnd) 101.619 Tj +[1 0 0 1 173.619 577.797] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -173.619 -577.797] cm +[1 0 0 1 0 0] Tm +0 0 Td +186.15 577.797 Td +/F130_0 9.9626 Tf +(for) 11.6164 Tj +-1258 TJm +(compression,) 52.8516 Tj +-1510 TJm +(and) 14.386 Tj +-1257 TJm +(a) 4.42339 Tj +-1258 TJm +(corresponding) 56.996 Tj +-1258 TJm +(trio) 13.8381 Tj +[1 0 0 1 417.958 577.797] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -417.958 -577.797] cm +[1 0 0 1 0 0] Tm +0 0 Td +417.958 577.797 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompressInit) 119.551 Tj +[1 0 0 1 537.509 577.797] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -537.509 -577.797] cm +[1 0 0 1 0 0] Tm +0 0 Td +537.509 577.797 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 72 565.842] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -565.842] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 565.842 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +[1 0 0 1 167.641 565.842] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -167.641 -565.842] cm +[1 0 0 1 0 0] Tm +0 0 Td +172.707 565.842 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 192.158 565.842] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -192.158 -565.842] cm +[1 0 0 1 0 0] Tm +0 0 Td +192.158 565.842 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompressEnd) 113.574 Tj +[1 0 0 1 305.732 565.842] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -305.732 -565.842] cm +[1 0 0 1 0 0] Tm +0 0 Td +310.798 565.842 Td +/F130_0 9.9626 Tf +(for) 11.6164 Tj +-508 TJm +(decompression.) 62.2563 Tj +-2171 TJm +(The) 15.4918 Tj +[1 0 0 1 431.918 565.842] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -431.918 -565.842] cm +[1 0 0 1 0 0] Tm +0 0 Td +431.918 564.099 Td +/F134_0 9.9626 Tf +(*) 5.97756 Tj +437.895 565.842 Td +(Init) 23.9102 Tj +[1 0 0 1 461.805 565.842] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -461.805 -565.842] cm +[1 0 0 1 0 0] Tm +0 0 Td +466.871 565.842 Td +/F130_0 9.9626 Tf +(functions) 37.0808 Tj +-508 TJm +(allocate) 30.9837 Tj +72 553.887 Td +(memory) 33.2053 Tj +-574 TJm +(for) 11.6164 Tj +-573 TJm +(compression/decompression) 112.896 Tj +-574 TJm +(and) 14.386 Tj +-574 TJm +(do) 9.9626 Tj +-573 TJm +(other) 20.4731 Tj +-574 TJm +(initialisations,) 56.1891 Tj +-654 TJm +(whilst) 24.3586 Tj +-574 TJm +(the) 12.1743 Tj +[1 0 0 1 419.502 553.887] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -419.502 -553.887] cm +[1 0 0 1 0 0] Tm +0 0 Td +419.502 552.144 Td +/F134_0 9.9626 Tf +(*) 5.97756 Tj +425.48 553.887 Td +(End) 17.9327 Tj +[1 0 0 1 443.413 553.887] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -443.413 -553.887] cm +[1 0 0 1 0 0] Tm +0 0 Td +449.128 553.887 Td +/F130_0 9.9626 Tf +(functions) 37.0808 Tj +-574 TJm +(close) 20.4731 Tj +-573 TJm +(do) 9.9626 Tj +25 TJm +(wn) 12.1743 Tj +72 541.932 Td +(operations) 41.5042 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(release) 27.6562 Tj +-250 TJm +(memory) 33.2053 Tj +65 TJm +(.) 2.49065 Tj +[1 0 0 1 72 539.775] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -529.812] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 520.014 Td +/F130_0 9.9626 Tf +(The) 15.4918 Tj +-303 TJm +(real) 14.9339 Tj +-303 TJm +(w) 7.193 Tj +10 TJm +(ork) 13.2801 Tj +-303 TJm +(is) 6.64505 Tj +-303 TJm +(done) 19.3673 Tj +-303 TJm +(by) 9.9626 Tj +[1 0 0 1 176.892 520.014] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -176.892 -520.014] cm +[1 0 0 1 0 0] Tm +0 0 Td +176.892 520.014 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 260.578 520.014] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -260.578 -520.014] cm +[1 0 0 1 0 0] Tm +0 0 Td +263.598 520.014 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 281.003 520.014] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -281.003 -520.014] cm +[1 0 0 1 0 0] Tm +0 0 Td +281.003 520.014 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +[1 0 0 1 376.645 520.014] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -376.645 -520.014] cm +[1 0 0 1 0 0] Tm +0 0 Td +376.645 520.014 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-939 TJm +(These) 23.7907 Tj +-303 TJm +(compress) 37.6287 Tj +-303 TJm +(and) 14.386 Tj +-303 TJm +(decompress) 47.0334 Tj +-303 TJm +(data) 16.5977 Tj +72 508.059 Td +(from) 19.3673 Tj +-205 TJm +(a) 4.42339 Tj +-205 TJm +(user) 16.5977 Tj +20 TJm +(-supplied) 37.0808 Tj +-205 TJm +(input) 20.4831 Tj +-206 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +-205 TJm +(to) 7.7509 Tj +-205 TJm +(a) 4.42339 Tj +-205 TJm +(user) 16.5977 Tj +20 TJm +(-supplied) 37.0808 Tj +-205 TJm +(output) 25.4644 Tj +-205 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +55 TJm +(.) 2.49065 Tj +-591 TJm +(These) 23.7907 Tj +-205 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fers) 14.9339 Tj +-205 TJm +(can) 13.8281 Tj +-205 TJm +(be) 9.40469 Tj +-205 TJm +(an) 9.40469 Tj +15 TJm +(y) 4.9813 Tj +-205 TJm +(size;) 18.2614 Tj +-220 TJm +(arbitrary) 34.3012 Tj +-206 TJm +(quantities) 38.7446 Tj +-205 TJm +(of) 8.29885 Tj +72 496.104 Td +(data) 16.5977 Tj +-258 TJm +(are) 12.1643 Tj +-258 TJm +(handled) 31.5416 Tj +-258 TJm +(by) 9.9626 Tj +-257 TJm +(making) 29.8878 Tj +-258 TJm +(repeated) 33.7433 Tj +-258 TJm +(calls) 18.2614 Tj +-258 TJm +(to) 7.7509 Tj +-258 TJm +(these) 20.4731 Tj +-258 TJm +(functions.) 39.5714 Tj +-667 TJm +(This) 17.7135 Tj +-258 TJm +(is) 6.64505 Tj +-258 TJm +(a) 4.42339 Tj +-257 TJm +(\003e) 9.9626 Tj +15 TJm +(xible) 19.9252 Tj +-258 TJm +(mechanism) 45.3796 Tj +-258 TJm +(allo) 14.9439 Tj +25 TJm +(wing) 19.9252 Tj +-258 TJm +(a) 4.42339 Tj +-258 TJm +(consumer) 38.7346 Tj +20 TJm +(-pull) 18.8194 Tj +72 484.148 Td +(style) 18.8194 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(acti) 14.386 Tj +25 TJm +(vity) 15.5018 Tj +65 TJm +(,) 2.49065 Tj +-250 TJm +(or) 8.29885 Tj +-250 TJm +(producer) 35.4071 Tj +20 TJm +(-push,) 24.6275 Tj +-250 TJm +(or) 8.29885 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(mixture) 30.9936 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(both.) 20.2042 Tj +[1 0 0 1 72 481.992] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -472.029] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 453.527 Td +/F122_0 17.2154 Tf +(3.1.2.) 43.0729 Tj +-278 TJm +(High-le) 58.343 Tj +15 TJm +(vel) 23.9294 Tj +-278 TJm +(summar) 66.9679 Tj +-10 TJm +(y) 9.57176 Tj +[1 0 0 1 72 449.697] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -439.734] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 431.61 Td +/F130_0 9.9626 Tf +(This) 17.7135 Tj +-284 TJm +(interf) 21.579 Tj +10 TJm +(ace) 13.2702 Tj +-284 TJm +(pro) 13.2801 Tj +15 TJm +(vides) 21.031 Tj +-285 TJm +(some) 21.031 Tj +-284 TJm +(handy) 24.3486 Tj +-284 TJm +(wrappers) 36.5129 Tj +-284 TJm +(around) 27.6661 Tj +-284 TJm +(the) 12.1743 Tj +-284 TJm +(lo) 7.7509 Tj +25 TJm +(w-le) 17.7035 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-285 TJm +(interf) 21.579 Tj +10 TJm +(ace) 13.2702 Tj +-284 TJm +(to) 7.7509 Tj +-284 TJm +(f) 3.31755 Tj +10 TJm +(acilitate) 31.5416 Tj +-284 TJm +(reading) 29.8778 Tj +-284 TJm +(and) 14.386 Tj +-285 TJm +(writ) 16.0497 Tj +1 TJm +(ing) 12.7322 Tj +[1 0 0 1 510.112 431.61] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -510.112 -431.61] cm +[1 0 0 1 0 0] Tm +0 0 Td +510.112 431.61 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 540 431.61] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -540 -431.61] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 419.654 Td +/F130_0 9.9626 Tf +(format) 26.5603 Tj +-347 TJm +(\002les) 16.6077 Tj +-346 TJm +(\() 3.31755 Tj +[1 0 0 1 125.391 419.654] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -125.391 -419.654] cm +[1 0 0 1 0 0] Tm +0 0 Td +125.391 419.654 Td +/F134_0 9.9626 Tf +(.bz2) 23.9102 Tj +[1 0 0 1 149.301 419.654] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -149.301 -419.654] cm +[1 0 0 1 0 0] Tm +0 0 Td +152.754 419.654 Td +/F130_0 9.9626 Tf +(\002les\).) 22.4159 Tj +-1200 TJm +(The) 15.4918 Tj +-346 TJm +(routines) 32.0995 Tj +-347 TJm +(pro) 13.2801 Tj +15 TJm +(vide) 17.1556 Tj +-346 TJm +(hooks) 23.8007 Tj +-347 TJm +(to) 7.7509 Tj +-346 TJm +(f) 3.31755 Tj +10 TJm +(acilitate) 31.5416 Tj +-347 TJm +(reading) 29.8778 Tj +-347 TJm +(\002les) 16.6077 Tj +-346 TJm +(in) 7.7509 Tj +-347 TJm +(which) 24.3486 Tj +-346 TJm +(the) 12.1743 Tj +[1 0 0 1 460.049 419.654] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -460.049 -419.654] cm +[1 0 0 1 0 0] Tm +0 0 Td +460.049 419.654 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 489.937 419.654] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -489.937 -419.654] cm +[1 0 0 1 0 0] Tm +0 0 Td +493.39 419.654 Td +/F130_0 9.9626 Tf +(data) 16.5977 Tj +-347 TJm +(stream) 26.5603 Tj +72 407.699 Td +(is) 6.64505 Tj +-339 TJm +(embedded) 40.9463 Tj +-339 TJm +(within) 25.4644 Tj +-339 TJm +(some) 21.031 Tj +-339 TJm +(lar) 10.5105 Tj +18 TJm +(ger) 12.7222 Tj +20 TJm +(-scale) 23.2328 Tj +-339 TJm +(\002le) 12.7322 Tj +-339 TJm +(structure,) 37.3498 Tj +-361 TJm +(or) 8.29885 Tj +-339 TJm +(wh) 12.1743 Tj +-1 TJm +(e) 4.42339 Tj +1 TJm +(re) 7.74094 Tj +-340 TJm +(there) 19.9152 Tj +-339 TJm +(are) 12.1643 Tj +-339 TJm +(multiple) 33.2153 Tj +[1 0 0 1 400.941 407.699] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -400.941 -407.699] cm +[1 0 0 1 0 0] Tm +0 0 Td +400.941 407.699 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 430.829 407.699] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -430.829 -407.699] cm +[1 0 0 1 0 0] Tm +0 0 Td +434.207 407.699 Td +/F130_0 9.9626 Tf +(data) 16.5977 Tj +-339 TJm +(streams) 30.4357 Tj +-339 TJm +(concatenated) 52.0048 Tj +72 395.744 Td +(end-to-end.) 45.6486 Tj +[1 0 0 1 72 395.644] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -385.682] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 373.826 Td +/F130_0 9.9626 Tf +(F) 5.53921 Tj +15 TJm +(or) 8.29885 Tj +-332 TJm +(reading) 29.8778 Tj +-333 TJm +(\002les,) 19.0983 Tj +[1 0 0 1 144.803 373.826] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -144.803 -373.826] cm +[1 0 0 1 0 0] Tm +0 0 Td +144.803 373.826 Td +/F134_0 9.9626 Tf +(BZ2_bzReadOpen) 83.6858 Tj +[1 0 0 1 228.489 373.826] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -228.489 -373.826] cm +[1 0 0 1 0 0] Tm +0 0 Td +228.489 373.826 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 234.496 373.826] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -234.496 -373.826] cm +[1 0 0 1 0 0] Tm +0 0 Td +234.496 373.826 Td +/F134_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +[1 0 0 1 294.272 373.826] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -294.272 -373.826] cm +[1 0 0 1 0 0] Tm +0 0 Td +294.272 373.826 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 300.279 373.826] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -300.279 -373.826] cm +[1 0 0 1 0 0] Tm +0 0 Td +300.279 373.826 Td +/F134_0 9.9626 Tf +(BZ2_bzReadClose) 89.6634 Tj +[1 0 0 1 389.942 373.826] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -389.942 -373.826] cm +[1 0 0 1 0 0] Tm +0 0 Td +393.253 373.826 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 410.951 373.826] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -410.951 -373.826] cm +[1 0 0 1 0 0] Tm +0 0 Td +410.951 373.826 Td +/F134_0 9.9626 Tf +(BZ2_bzReadGetUnused) 113.574 Tj +[1 0 0 1 524.525 373.826] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -524.525 -373.826] cm +[1 0 0 1 0 0] Tm +0 0 Td +527.836 373.826 Td +/F130_0 9.9626 Tf +(are) 12.1643 Tj +72 361.871 Td +(supplied.) 36.2539 Tj +-620 TJm +(F) 5.53921 Tj +15 TJm +(or) 8.29885 Tj +-250 TJm +(writing) 28.782 Tj +-250 TJm +(\002les,) 19.0983 Tj +[1 0 0 1 183.471 361.871] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -183.471 -361.871] cm +[1 0 0 1 0 0] Tm +0 0 Td +183.471 361.871 Td +/F134_0 9.9626 Tf +(BZ2_bzWriteOpen) 89.6634 Tj +[1 0 0 1 273.135 361.871] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -273.135 -361.871] cm +[1 0 0 1 0 0] Tm +0 0 Td +273.135 361.871 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 278.116 361.871] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.116 -361.871] cm +[1 0 0 1 0 0] Tm +0 0 Td +278.116 361.871 Td +/F134_0 9.9626 Tf +(BZ2_bzWrite) 65.7532 Tj +[1 0 0 1 343.869 361.871] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -343.869 -361.871] cm +[1 0 0 1 0 0] Tm +0 0 Td +346.36 361.871 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 363.237 361.871] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -363.237 -361.871] cm +[1 0 0 1 0 0] Tm +0 0 Td +363.237 361.871 Td +/F134_0 9.9626 Tf +(BZ2_bzWriteFinish) 101.619 Tj +[1 0 0 1 464.856 361.871] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -464.856 -361.871] cm +[1 0 0 1 0 0] Tm +0 0 Td +467.346 361.871 Td +/F130_0 9.9626 Tf +(are) 12.1643 Tj +-250 TJm +(a) 4.42339 Tj +20 TJm +(v) 4.9813 Tj +25 TJm +(ailable.) 29.0509 Tj +[1 0 0 1 72 359.714] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -349.751] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 339.953 Td +/F130_0 9.9626 Tf +(As) 11.0684 Tj +-374 TJm +(with) 17.7135 Tj +-374 TJm +(the) 12.1743 Tj +-375 TJm +(lo) 7.7509 Tj +25 TJm +(w-le) 17.7035 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-374 TJm +(library) 26.5603 Tj +65 TJm +(,) 2.49065 Tj +-405 TJm +(no) 9.9626 Tj +-374 TJm +(global) 24.9065 Tj +-374 TJm +(v) 4.9813 Tj +25 TJm +(ariables) 30.9837 Tj +-375 TJm +(are) 12.1643 Tj +-374 TJm +(used) 18.2614 Tj +-374 TJm +(so) 8.85675 Tj +-374 TJm +(the) 12.1743 Tj +-374 TJm +(library) 26.5603 Tj +-375 TJm +(is) 6.64505 Tj +-374 TJm +(per) 12.7222 Tj +-374 TJm +(se) 8.29885 Tj +-374 TJm +(thread-safe.) 46.7445 Tj +-1365 TJm +(Ho) 12.1743 Tj +25 TJm +(we) 11.6164 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.74094 Tj +40 TJm +(,) 2.49065 Tj +-406 TJm +(if) 6.08715 Tj +-374 TJm +(I/O) 13.2801 Tj +72 327.998 Td +(errors) 23.2328 Tj +-267 TJm +(occur) 22.1269 Tj +-267 TJm +(whilst) 24.3586 Tj +-267 TJm +(reading) 29.8778 Tj +-267 TJm +(or) 8.29885 Tj +-267 TJm +(writing) 28.782 Tj +-267 TJm +(the) 12.1743 Tj +-268 TJm +(underlying) 43.1679 Tj +-267 TJm +(compressed) 47.0334 Tj +-267 TJm +(\002les,) 19.0983 Tj +-271 TJm +(you) 14.9439 Tj +-267 TJm +(may) 17.1556 Tj +-267 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-267 TJm +(to) 7.7509 Tj +-267 TJm +(consult) 28.782 Tj +[1 0 0 1 457.199 327.998] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -457.199 -327.998] cm +[1 0 0 1 0 0] Tm +0 0 Td +457.199 327.998 Td +/F134_0 9.9626 Tf +(errno) 29.8878 Tj +[1 0 0 1 487.087 327.998] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -487.087 -327.998] cm +[1 0 0 1 0 0] Tm +0 0 Td +489.748 327.998 Td +/F130_0 9.9626 Tf +(to) 7.7509 Tj +-267 TJm +(determine) 39.8404 Tj +72 316.043 Td +(the) 12.1743 Tj +-366 TJm +(cause) 22.1269 Tj +-365 TJm +(of) 8.29885 Tj +-366 TJm +(the) 12.1743 Tj +-365 TJm +(error) 19.3573 Tj +55 TJm +(.) 2.49065 Tj +-1314 TJm +(In) 8.29885 Tj +-366 TJm +(that) 14.9439 Tj +-365 TJm +(case,) 19.6363 Tj +-395 TJm +(you') 18.2614 Tj +50 TJm +(d) 4.9813 Tj +-366 TJm +(need) 18.8094 Tj +-365 TJm +(a) 4.42339 Tj +-366 TJm +(C) 6.64505 Tj +-365 TJm +(library) 26.5603 Tj +-366 TJm +(which) 24.3486 Tj +-366 TJm +(correctly) 35.4071 Tj +-365 TJm +(supports) 33.7633 Tj +[1 0 0 1 431.668 316.043] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -431.668 -316.043] cm +[1 0 0 1 0 0] Tm +0 0 Td +431.668 316.043 Td +/F134_0 9.9626 Tf +(errno) 29.8878 Tj +[1 0 0 1 461.556 316.043] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -461.556 -316.043] cm +[1 0 0 1 0 0] Tm +0 0 Td +465.199 316.043 Td +/F130_0 9.9626 Tf +(in) 7.7509 Tj +-366 TJm +(a) 4.42339 Tj +-365 TJm +(multithreaded) 55.3422 Tj +72 304.088 Td +(en) 9.40469 Tj +40 TJm +(vironment.) 43.4469 Tj +[1 0 0 1 72 303.988] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -294.025] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 282.17 Td +/F130_0 9.9626 Tf +(T) 6.08715 Tj +80 TJm +(o) 4.9813 Tj +-243 TJm +(mak) 17.1556 Tj +10 TJm +(e) 4.42339 Tj +-243 TJm +(the) 12.1743 Tj +-242 TJm +(library) 26.5603 Tj +-243 TJm +(a) 4.42339 Tj +-243 TJm +(little) 18.2714 Tj +-242 TJm +(simpler) 29.8878 Tj +-243 TJm +(and) 14.386 Tj +-243 TJm +(more) 20.4731 Tj +-243 TJm +(portable,) 35.1381 Tj +[1 0 0 1 289.263 282.17] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -289.263 -282.17] cm +[1 0 0 1 0 0] Tm +0 0 Td +289.263 282.17 Td +/F134_0 9.9626 Tf +(BZ2_bzReadOpen) 83.6858 Tj +[1 0 0 1 372.949 282.17] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -372.949 -282.17] cm +[1 0 0 1 0 0] Tm +0 0 Td +375.368 282.17 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 392.172 282.17] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -392.172 -282.17] cm +[1 0 0 1 0 0] Tm +0 0 Td +392.172 282.17 Td +/F134_0 9.9626 Tf +(BZ2_bzWriteOpen) 89.6634 Tj +[1 0 0 1 481.836 282.17] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -481.836 -282.17] cm +[1 0 0 1 0 0] Tm +0 0 Td +484.254 282.17 Td +/F130_0 9.9626 Tf +(require) 28.2141 Tj +-243 TJm +(you) 14.9439 Tj +-242 TJm +(to) 7.7509 Tj +72 270.215 Td +(pass) 17.1556 Tj +-247 TJm +(them) 19.9252 Tj +-248 TJm +(\002le) 12.7322 Tj +-247 TJm +(handles) 30.4357 Tj +-247 TJm +(\() 3.31755 Tj +[1 0 0 1 165.421 270.215] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -165.421 -270.215] cm +[1 0 0 1 0 0] Tm +0 0 Td +165.421 270.215 Td +/F134_0 9.9626 Tf +(FILE) 23.9102 Tj +189.331 268.471 Td +(*) 5.97756 Tj +[1 0 0 1 195.309 270.215] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -195.309 -270.215] cm +[1 0 0 1 0 0] Tm +0 0 Td +195.309 270.215 Td +/F130_0 9.9626 Tf +(s\)) 7.193 Tj +-247 TJm +(which) 24.3486 Tj +-248 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-247 TJm +(pre) 12.7222 Tj +25 TJm +(viously) 29.3399 Tj +-247 TJm +(been) 18.8094 Tj +-248 TJm +(opened) 28.772 Tj +-247 TJm +(for) 11.6164 Tj +-247 TJm +(reading) 29.8778 Tj +-247 TJm +(or) 8.29885 Tj +-248 TJm +(writing) 28.782 Tj +-247 TJm +(respecti) 30.9837 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ely) 12.1743 Tj +65 TJm +(.) 2.49065 Tj +-618 TJm +(That) 18.2614 Tj +-248 TJm +(a) 4.42339 Tj +20 TJm +(v) 4.9813 Tj +20 TJm +(oids) 16.6077 Tj +72 258.26 Td +(portability) 41.5142 Tj +-272 TJm +(problems) 37.0808 Tj +-273 TJm +(associated) 40.9463 Tj +-272 TJm +(with) 17.7135 Tj +-272 TJm +(\002le) 12.7322 Tj +-273 TJm +(operations) 41.5042 Tj +-272 TJm +(and) 14.386 Tj +-272 TJm +(\002le) 12.7322 Tj +-273 TJm +(attrib) 21.031 Tj +20 TJm +(utes,) 18.5404 Tj +-278 TJm +(whilst) 24.3586 Tj +-272 TJm +(not) 12.7322 Tj +-272 TJm +(being) 22.1369 Tj +-273 TJm +(much) 22.1369 Tj +-272 TJm +(of) 8.29885 Tj +-273 TJm +(an) 9.40469 Tj +-272 TJm +(imposition) 42.63 Tj +-272 TJm +(on) 9.9626 Tj +-273 TJm +(the) 12.1743 Tj +72 246.304 Td +(programmer) 49.2451 Tj +55 TJm +(.) 2.49065 Tj +[1 0 0 1 72 244.147] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -234.185] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 215.683 Td +/F122_0 17.2154 Tf +(3.1.3.) 43.0729 Tj +-278 TJm +(Utility) 47.8244 Tj +-278 TJm +(functions) 77.4693 Tj +-278 TJm +(summar) 66.9679 Tj +-10 TJm +(y) 9.57176 Tj +[1 0 0 1 72 212.12] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -202.157] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 193.765 Td +/F130_0 9.9626 Tf +(F) 5.53921 Tj +15 TJm +(or) 8.29885 Tj +-273 TJm +(v) 4.9813 Tj +15 TJm +(ery) 12.7222 Tj +-273 TJm +(simple) 26.5703 Tj +-273 TJm +(needs,) 25.1755 Tj +[1 0 0 1 165.929 193.765] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -165.929 -193.765] cm +[1 0 0 1 0 0] Tm +0 0 Td +165.929 193.765 Td +/F134_0 9.9626 Tf +(BZ2_bzBuffToBuffCompress) 143.461 Tj +[1 0 0 1 309.391 193.765] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -309.391 -193.765] cm +[1 0 0 1 0 0] Tm +0 0 Td +312.112 193.765 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 329.219 193.765] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -329.219 -193.765] cm +[1 0 0 1 0 0] Tm +0 0 Td +329.219 193.765 Td +/F134_0 9.9626 Tf +(BZ2_bzBuffToBuffDecompress) 155.417 Tj +[1 0 0 1 484.636 193.765] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -484.636 -193.765] cm +[1 0 0 1 0 0] Tm +0 0 Td +487.357 193.765 Td +/F130_0 9.9626 Tf +(are) 12.1643 Tj +-273 TJm +(pro) 13.2801 Tj +15 TJm +(vided.) 24.6275 Tj +72 181.81 Td +(These) 23.7907 Tj +-374 TJm +(compress) 37.6287 Tj +-373 TJm +(data) 16.5977 Tj +-374 TJm +(in) 7.7509 Tj +-373 TJm +(memory) 33.2053 Tj +-374 TJm +(from) 19.3673 Tj +-373 TJm +(one) 14.386 Tj +-374 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +-373 TJm +(to) 7.7509 Tj +-374 TJm +(another) 29.8778 Tj +-374 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +-373 TJm +(in) 7.7509 Tj +-374 TJm +(a) 4.42339 Tj +-373 TJm +(single) 23.8007 Tj +-374 TJm +(function) 33.2053 Tj +-373 TJm +(call.) 16.8766 Tj +-1362 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-373 TJm +(should) 26.5703 Tj +-374 TJm +(assess) 24.3486 Tj +72 169.855 Td +(whether) 32.0895 Tj +-344 TJm +(these) 20.4731 Tj +-343 TJm +(functions) 37.0808 Tj +-344 TJm +(ful\002ll) 22.1469 Tj +-344 TJm +(your) 18.2614 Tj +-343 TJm +(memory-to-memory) 80.7967 Tj +-344 TJm +(compression/decompression) 112.896 Tj +-343 TJm +(requirements) 52.0147 Tj +-344 TJm +(before) 25.4445 Tj +-344 TJm +(in) 7.7509 Tj +40 TJm +(v) 4.9813 Tj +15 TJm +(esting) 23.8007 Tj +72 157.9 Td +(ef) 7.74094 Tj +25 TJm +(fort) 14.386 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(understanding) 56.4481 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(more) 20.4731 Tj +-250 TJm +(general) 29.3199 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-250 TJm +(more) 20.4731 Tj +-250 TJm +(comple) 29.3299 Tj +15 TJm +(x) 4.9813 Tj +-250 TJm +(lo) 7.7509 Tj +25 TJm +(w-le) 17.7035 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(interf) 21.579 Tj +10 TJm +(ace.) 15.7608 Tj +[1 0 0 1 72 155.743] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -145.78] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 135.982 Td +/F130_0 9.9626 Tf +(Y) 7.193 Tj +110 TJm +(oshioka) 30.9936 Tj +-423 TJm +(Tsuneo) 29.3299 Tj +-422 TJm +(\() 3.31755 Tj +[1 0 0 1 150.16 135.982] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -150.16 -135.982] cm +[1 0 0 1 0 0] Tm +0 0 Td +150.16 135.982 Td +/F134_0 9.9626 Tf +(tsuneo@rr.iij4u.or.jp) 125.529 Tj +[1 0 0 1 275.69 135.982] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -275.69 -135.982] cm +[1 0 0 1 0 0] Tm +0 0 Td +275.69 135.982 Td +/F130_0 9.9626 Tf +(\)) 3.31755 Tj +-423 TJm +(has) 13.2801 Tj +-422 TJm +(contrib) 28.224 Tj +20 TJm +(uted) 17.1556 Tj +-423 TJm +(some) 21.031 Tj +-423 TJm +(functions) 37.0808 Tj +-422 TJm +(to) 7.7509 Tj +-423 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-423 TJm +(better) 22.6848 Tj +[1 0 0 1 476.462 135.982] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -476.462 -135.982] cm +[1 0 0 1 0 0] Tm +0 0 Td +476.462 135.982 Td +/F134_0 9.9626 Tf +(zlib) 23.9102 Tj +[1 0 0 1 500.372 135.982] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -500.372 -135.982] cm +[1 0 0 1 0 0] Tm +0 0 Td +504.583 135.982 Td +/F130_0 9.9626 Tf +(compati-) 35.417 Tj +72 124.027 Td +(bility) 21.041 Tj +65 TJm +(.) 2.49065 Tj +-1446 TJm +(These) 23.7907 Tj +-388 TJm +(functions) 37.0808 Tj +-387 TJm +(are) 12.1643 Tj +[1 0 0 1 193.913 124.027] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -193.913 -124.027] cm +[1 0 0 1 0 0] Tm +0 0 Td +193.913 124.027 Td +/F134_0 9.9626 Tf +(BZ2_bzopen) 59.7756 Tj +[1 0 0 1 253.689 124.027] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -253.689 -124.027] cm +[1 0 0 1 0 0] Tm +0 0 Td +253.689 124.027 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 260.385 124.027] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -260.385 -124.027] cm +[1 0 0 1 0 0] Tm +0 0 Td +260.385 124.027 Td +/F134_0 9.9626 Tf +(BZ2_bzread) 59.7756 Tj +[1 0 0 1 320.161 124.027] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -320.161 -124.027] cm +[1 0 0 1 0 0] Tm +0 0 Td +320.161 124.027 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 326.857 124.027] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -326.857 -124.027] cm +[1 0 0 1 0 0] Tm +0 0 Td +326.857 124.027 Td +/F134_0 9.9626 Tf +(BZ2_bzwrite) 65.7532 Tj +[1 0 0 1 392.611 124.027] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -392.611 -124.027] cm +[1 0 0 1 0 0] Tm +0 0 Td +392.611 124.027 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 399.306 124.027] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -399.306 -124.027] cm +[1 0 0 1 0 0] Tm +0 0 Td +399.306 124.027 Td +/F134_0 9.9626 Tf +(BZ2_bzflush) 65.7532 Tj +[1 0 0 1 465.06 124.027] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -465.06 -124.027] cm +[1 0 0 1 0 0] Tm +0 0 Td +465.06 124.027 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 471.756 124.027] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -471.756 -124.027] cm +[1 0 0 1 0 0] Tm +0 0 Td +471.756 124.027 Td +/F134_0 9.9626 Tf +(BZ2_bzclose) 65.7532 Tj +[1 0 0 1 537.509 124.027] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -537.509 -124.027] cm +[1 0 0 1 0 0] Tm +0 0 Td +537.509 124.027 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 72 112.072] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -112.072] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 112.072 Td +/F134_0 9.9626 Tf +(BZ2_bzerror) 65.7532 Tj +[1 0 0 1 137.753 112.072] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -137.753 -112.072] cm +[1 0 0 1 0 0] Tm +0 0 Td +140.408 112.072 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 157.449 112.072] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -157.449 -112.072] cm +[1 0 0 1 0 0] Tm +0 0 Td +157.449 112.072 Td +/F134_0 9.9626 Tf +(BZ2_bzlibVersion) 95.641 Tj +[1 0 0 1 253.091 112.072] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -253.091 -112.072] cm +[1 0 0 1 0 0] Tm +0 0 Td +253.091 112.072 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-719 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-266 TJm +(may) 17.1556 Tj +-267 TJm +(\002nd) 15.5018 Tj +-266 TJm +(these) 20.4731 Tj +-267 TJm +(functions) 37.0808 Tj +-266 TJm +(more) 20.4731 Tj +-267 TJm +(con) 14.386 Tj +40 TJm +(v) 4.9813 Tj +15 TJm +(enient) 24.3486 Tj +-266 TJm +(for) 11.6164 Tj +-267 TJm +(simple) 26.5703 Tj +-266 TJm +(\002le) 12.7322 Tj +-267 TJm +(reading) 29.8778 Tj +72 100.117 Td +(and) 14.386 Tj +-270 TJm +(wri) 13.2801 Tj +1 TJm +(ting,) 17.9925 Tj +-275 TJm +(than) 17.1556 Tj +-269 TJm +(those) 21.031 Tj +-270 TJm +(in) 7.7509 Tj +-269 TJm +(the) 12.1743 Tj +-270 TJm +(high-le) 28.224 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-269 TJm +(interf) 21.579 Tj +10 TJm +(ace.) 15.7608 Tj +-737 TJm +(These) 23.7907 Tj +-270 TJm +(functions) 37.0808 Tj +-269 TJm +(are) 12.1643 Tj +-270 TJm +(not) 12.7322 Tj +-269 TJm +(\(yet\)) 18.8094 Tj +-270 TJm +(of) 8.29885 Tj +25 TJm +(\002cially) 27.6761 Tj +-269 TJm +(part) 15.4918 Tj +-270 TJm +(of) 8.29885 Tj +-269 TJm +(the) 12.1743 Tj +-270 TJm +(library) 26.5603 Tj +65 TJm +(,) 2.49065 Tj +-274 TJm +(and) 14.386 Tj +-270 TJm +(are) 12.1643 Tj +72 88.1614 Td +(minimally) 40.9662 Tj +-291 TJm +(documented) 48.6972 Tj +-291 TJm +(here.) 19.6363 Tj +-867 TJm +(If) 6.63509 Tj +-291 TJm +(the) 12.1743 Tj +15 TJm +(y) 4.9813 Tj +-291 TJm +(break,) 24.6176 Tj +-301 TJm +(you) 14.9439 Tj +-291 TJm +(get) 12.1743 Tj +-292 TJm +(to) 7.7509 Tj +-291 TJm +(k) 4.9813 Tj +10 TJm +(eep) 13.8281 Tj +-291 TJm +(all) 9.9626 Tj +-291 TJm +(the) 12.1743 Tj +-291 TJm +(pieces.) 27.3872 Tj +-433 TJm +(I) 3.31755 Tj +-291 TJm +(hope) 19.3673 Tj +-291 TJm +(to) 7.7509 Tj +-291 TJm +(document) 39.2925 Tj +-292 TJm +(them) 19.9252 Tj +-291 TJm +(properly) 33.7533 Tj +-291 TJm +(when) 21.579 Tj +72 76.2062 Td +(time) 17.7135 Tj +-250 TJm +(permits.) 32.3785 Tj +[1 0 0 1 72 74.0494] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -23.1976] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 4.3836 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.9737] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 43.0633 -6.7545] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -498.225 -51.071] cm +[1 0 0 1 0 0] Tm +0 0 Td +541.288 51.071 Td +/F130_0 9.9626 Tf +(9) 4.9813 Tj +[1 0 0 1 455.161 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5986 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -15.0366 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 13 13 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 76.4979 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -342.569 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F130_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +[1 0 0 1 496.556 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -496.556 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +496.556 749.245 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 544.376 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.305 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -5.0363] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -21.5542] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -720] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F130_0 9.9626 Tf +(Y) 7.193 Tj +110 TJm +(oshioka) 30.9936 Tj +-250 TJm +(also) 16.0497 Tj +-250 TJm +(contrib) 28.224 Tj +20 TJm +(uted) 17.1556 Tj +-250 TJm +(modi\002cations) 54.2464 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(allo) 14.9439 Tj +25 TJm +(w) 7.193 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(library) 26.5603 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(be) 9.40469 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(uilt) 13.2901 Tj +-250 TJm +(as) 8.29885 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(W) 9.40469 Tj +40 TJm +(indo) 17.7135 Tj +25 TJm +(ws) 11.0684 Tj +-250 TJm +(DLL.) 21.8579 Tj +[1 0 0 1 72 707.88] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7436] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -698.137] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 675.504 Td +/F122_0 20.6585 Tf +(3.2.) 34.4584 Tj +-278 TJm +(Err) 29.8515 Tj +20 TJm +(or) 20.6585 Tj +-278 TJm +(handling) 86.084 Tj +[1 0 0 1 72 670.907] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7436] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -661.164] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 653.805 Td +/F130_0 9.9626 Tf +(The) 15.4918 Tj +-214 TJm +(library) 26.5603 Tj +-215 TJm +(is) 6.64505 Tj +-214 TJm +(designed) 35.417 Tj +-215 TJm +(to) 7.7509 Tj +-214 TJm +(reco) 17.1456 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.74094 Tj +-215 TJm +(cleanly) 28.772 Tj +-214 TJm +(in) 7.7509 Tj +-215 TJm +(all) 9.9626 Tj +-214 TJm +(situations,) 40.6873 Tj +-222 TJm +(including) 37.6387 Tj +-214 TJm +(the) 12.1743 Tj +-215 TJm +(w) 7.193 Tj +10 TJm +(orst-case) 35.4071 Tj +-214 TJm +(situation) 34.3212 Tj +-215 TJm +(of) 8.29885 Tj +-214 TJm +(decompressing) 59.7656 Tj +-215 TJm +(random) 30.4357 Tj +72 641.85 Td +(data.) 19.0883 Tj +-764 TJm +(I'm) 14.386 Tj +-274 TJm +(not) 12.7322 Tj +-275 TJm +(100%) 23.2427 Tj +-274 TJm +(sure) 16.5977 Tj +-274 TJm +(that) 14.9439 Tj +-274 TJm +(it) 5.53921 Tj +-274 TJm +(can) 13.8281 Tj +-274 TJm +(al) 7.193 Tj +10 TJm +(w) 7.193 Tj +10 TJm +(ays) 13.2801 Tj +-274 TJm +(do) 9.9626 Tj +-274 TJm +(this,) 16.8866 Tj +-280 TJm +(so) 8.85675 Tj +-274 TJm +(you) 14.9439 Tj +-274 TJm +(might) 23.2527 Tj +-274 TJm +(w) 7.193 Tj +10 TJm +(ant) 12.1743 Tj +-274 TJm +(to) 7.7509 Tj +-274 TJm +(add) 14.386 Tj +-274 TJm +(a) 4.42339 Tj +-275 TJm +(s) 3.87545 Tj +1 TJm +(ignal) 19.9252 Tj +-275 TJm +(handler) 29.8778 Tj +-274 TJm +(to) 7.7509 Tj +-274 TJm +(catch) 21.0211 Tj +-274 TJm +(se) 8.29885 Tj +15 TJm +(gmentation) 44.8317 Tj +72 629.894 Td +(violations) 39.3025 Tj +-273 TJm +(during) 26.0123 Tj +-273 TJm +(decompression) 59.7656 Tj +-273 TJm +(if) 6.08715 Tj +-273 TJm +(you) 14.9439 Tj +-273 TJm +(are) 12.1643 Tj +-273 TJm +(feeling) 27.6661 Tj +-274 TJm +(especiall) 34.8591 Tj +1 TJm +(y) 4.9813 Tj +-274 TJm +(paranoid.) 37.3498 Tj +-758 TJm +(I) 3.31755 Tj +-273 TJm +(w) 7.193 Tj +10 TJm +(ould) 17.7135 Tj +-273 TJm +(be) 9.40469 Tj +-273 TJm +(interested) 38.7346 Tj +-273 TJm +(in) 7.7509 Tj +-274 TJm +(hearing) 29.8778 Tj +-273 TJm +(more) 20.4731 Tj +-273 TJm +(about) 22.1369 Tj +72 617.939 Td +(the) 12.1743 Tj +-250 TJm +(rob) 13.2801 Tj +20 TJm +(ustness) 28.782 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(library) 26.5603 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(corrupted) 38.1767 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(data.) 19.0883 Tj +[1 0 0 1 72 615.783] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7436] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -606.039] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 596.241 Td +/F130_0 9.9626 Tf +(V) 7.193 Tj +111 TJm +(ersion) 24.3486 Tj +-251 TJm +(1.0.3) 19.9252 Tj +-251 TJm +(more) 20.4731 Tj +-251 TJm +(rob) 13.2801 Tj +20 TJm +(ust) 11.6264 Tj +-251 TJm +(in) 7.7509 Tj +-251 TJm +(this) 14.396 Tj +-251 TJm +(respect) 28.2141 Tj +-252 TJm +(than) 17.1556 Tj +-251 TJm +(an) 9.40469 Tj +15 TJm +(y) 4.9813 Tj +-251 TJm +(pre) 12.7222 Tj +25 TJm +(vious) 21.589 Tj +-251 TJm +(v) 4.9813 Tj +15 TJm +(ersion.) 26.8392 Tj +-626 TJm +(In) 8.29885 Tj +40 TJm +(v) 4.9813 Tj +15 TJm +(estig) 18.8194 Tj +5 TJm +(ations) 23.8007 Tj +-251 TJm +(with) 17.7135 Tj +-251 TJm +(V) 7.193 Tj +111 TJm +(algrind) 28.224 Tj +-251 TJm +(\(a) 7.74094 Tj +-252 TJm +(tool) 15.5018 Tj +-251 TJm +(for) 11.6164 Tj +-251 TJm +(detecting) 36.5229 Tj +72 584.285 Td +(problems) 37.0808 Tj +-422 TJm +(with) 17.7135 Tj +-421 TJm +(memory) 33.2053 Tj +-422 TJm +(management\)) 54.2264 Tj +-421 TJm +(indicate) 31.5416 Tj +-422 TJm +(that,) 17.4346 Tj +-464 TJm +(at) 7.193 Tj +-422 TJm +(least) 18.2614 Tj +-421 TJm +(for) 11.6164 Tj +-422 TJm +(the) 12.1743 Tj +-422 TJm +(f) 3.31755 Tj +1 TJm +(e) 4.42339 Tj +25 TJm +(w) 7.193 Tj +-422 TJm +(\002les) 16.6077 Tj +-422 TJm +(I) 3.31755 Tj +-421 TJm +(tested,) 25.7334 Tj +-464 TJm +(all) 9.9626 Tj +-422 TJm +(single-bit) 37.6387 Tj +-422 TJm +(errors) 23.2328 Tj +-421 TJm +(in) 7.7509 Tj +-422 TJm +(the) 12.1743 Tj +72 572.33 Td +(decompressed) 56.4381 Tj +-342 TJm +(data) 16.5977 Tj +-341 TJm +(are) 12.1643 Tj +-342 TJm +(caught) 26.5603 Tj +-342 TJm +(properly) 33.7533 Tj +65 TJm +(,) 2.49065 Tj +-365 TJm +(with) 17.7135 Tj +-341 TJm +(no) 9.9626 Tj +-342 TJm +(se) 8.29885 Tj +15 TJm +(gmentation) 44.8317 Tj +-342 TJm +(f) 3.31755 Tj +10 TJm +(aults,) 21.31 Tj +-365 TJm +(no) 9.9626 Tj +-341 TJm +(uses) 17.1556 Tj +-342 TJm +(of) 8.29885 Tj +-342 TJm +(uninitialised) 49.2651 Tj +-342 TJm +(data,) 19.0883 Tj +-364 TJm +(no) 9.9626 Tj +-342 TJm +(out) 12.7322 Tj +-342 TJm +(of) 8.29885 Tj +-342 TJm +(range) 22.1269 Tj +72 560.375 Td +(reads) 21.0211 Tj +-261 TJm +(or) 8.29885 Tj +-260 TJm +(writes,) 26.8392 Tj +-263 TJm +(and) 14.386 Tj +-261 TJm +(no) 9.9626 Tj +-261 TJm +(in\002nit) 23.8106 Tj +1 TJm +(e) 4.42339 Tj +-261 TJm +(looping) 30.4457 Tj +-261 TJm +(in) 7.7509 Tj +-260 TJm +(the) 12.1743 Tj +-261 TJm +(decompressor) 55.3323 Tj +55 TJm +(.) 2.49065 Tj +-342 TJm +(So) 10.5205 Tj +-260 TJm +(it') 8.85675 Tj +55 TJm +(s) 3.87545 Tj +-261 TJm +(certainly) 34.8591 Tj +-260 TJm +(pretty) 23.2427 Tj +-261 TJm +(rob) 13.2801 Tj +20 TJm +(ust,) 14.117 Tj +-263 TJm +(although) 34.8691 Tj +-261 TJm +(I) 3.31755 Tj +-260 TJm +(w) 7.193 Tj +10 TJm +(ouldn') 26.0123 Tj +18 TJm +(t) 2.7696 Tj +-261 TJm +(claim) 22.1369 Tj +72 548.42 Td +(it) 5.53921 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(be) 9.40469 Tj +-250 TJm +(totally) 25.4644 Tj +-250 TJm +(bombproof.) 46.7644 Tj +[1 0 0 1 72 546.263] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7436] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -536.519] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 526.721 Td +/F130_0 9.9626 Tf +(The) 15.4918 Tj +-282 TJm +(\002le) 12.7322 Tj +[1 0 0 1 105.84 526.721] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -105.84 -526.721] cm +[1 0 0 1 0 0] Tm +0 0 Td +105.84 526.721 Td +/F134_0 9.9626 Tf +(bzlib.h) 41.8429 Tj +[1 0 0 1 147.683 526.721] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -147.683 -526.721] cm +[1 0 0 1 0 0] Tm +0 0 Td +150.491 526.721 Td +/F130_0 9.9626 Tf +(contains) 33.2053 Tj +-282 TJm +(all) 9.9626 Tj +-282 TJm +(de\002nitions) 42.0721 Tj +-282 TJm +(nee) 13.8281 Tj +1 TJm +(ded) 14.386 Tj +-282 TJm +(to) 7.7509 Tj +-282 TJm +(use) 13.2801 Tj +-282 TJm +(the) 12.1743 Tj +-282 TJm +(library) 26.5603 Tj +65 TJm +(.) 2.49065 Tj +-811 TJm +(In) 8.29885 Tj +-282 TJm +(particular) 38.1767 Tj +40 TJm +(,) 2.49065 Tj +-290 TJm +(you) 14.9439 Tj +-282 TJm +(should) 26.5703 Tj +-281 TJm +(de\002nitely) 37.6387 Tj +-282 TJm +(not) 12.7322 Tj +-282 TJm +(include) 29.3299 Tj +[1 0 0 1 72 514.766] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -514.766] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 514.766 Td +/F134_0 9.9626 Tf +(bzlib_private.h) 89.6634 Tj +[1 0 0 1 161.664 514.766] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -161.664 -514.766] cm +[1 0 0 1 0 0] Tm +0 0 Td +161.664 514.766 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 513.232] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7436] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -503.488] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 493.067 Td +/F130_0 9.9626 Tf +(In) 8.29885 Tj +[1 0 0 1 82.8075 493.067] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -82.8075 -493.067] cm +[1 0 0 1 0 0] Tm +0 0 Td +82.8075 493.067 Td +/F134_0 9.9626 Tf +(bzlib.h) 41.8429 Tj +[1 0 0 1 124.651 493.067] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -124.651 -493.067] cm +[1 0 0 1 0 0] Tm +0 0 Td +124.651 493.067 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-252 TJm +(the) 12.1743 Tj +-252 TJm +(v) 4.9813 Tj +25 TJm +(arious) 24.3486 Tj +-252 TJm +(return) 23.7907 Tj +-252 TJm +(v) 4.9813 Tj +25 TJm +(alues) 20.4731 Tj +-251 TJm +(are) 12.1643 Tj +-252 TJm +(de\002ned.) 31.8205 Tj +-631 TJm +(The) 15.4918 Tj +-252 TJm +(follo) 18.8194 Tj +25 TJm +(wing) 19.9252 Tj +-252 TJm +(list) 12.1843 Tj +-251 TJm +(is) 6.64505 Tj +-252 TJm +(not) 12.7322 Tj +-252 TJm +(intended) 34.3112 Tj +-252 TJm +(as) 8.29885 Tj +-252 TJm +(an) 9.40469 Tj +-251 TJm +(e) 4.42339 Tj +15 TJm +(xhausti) 28.782 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-252 TJm +(description) 44.2738 Tj +-252 TJm +(of) 8.29885 Tj +72 481.112 Td +(the) 12.1743 Tj +-236 TJm +(circumstances) 56.4381 Tj +-236 TJm +(in) 7.7509 Tj +-237 TJm +(which) 24.3486 Tj +-236 TJm +(a) 4.42339 Tj +-236 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(en) 9.40469 Tj +-236 TJm +(v) 4.9813 Tj +25 TJm +(alue) 16.5977 Tj +-236 TJm +(may) 17.1556 Tj +-237 TJm +(be) 9.40469 Tj +-236 TJm +(returned) 33.1954 Tj +-236 TJm +(--) 6.63509 Tj +-236 TJm +(those) 21.031 Tj +-236 TJm +(descriptions) 48.1492 Tj +-236 TJm +(are) 12.1643 Tj +-237 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(en) 9.40469 Tj +-236 TJm +(later) 17.7035 Tj +55 TJm +(.) 2.49065 Tj +-305 TJm +(Rather) 26.5603 Tj +40 TJm +(,) 2.49065 Tj +-239 TJm +(it) 5.53921 Tj +-236 TJm +(is) 6.64505 Tj +-237 TJm +(intended) 34.3112 Tj +-236 TJm +(to) 7.7509 Tj +72 469.157 Td +(con) 14.386 Tj +40 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +15 TJm +(y) 4.9813 Tj +-266 TJm +(the) 12.1743 Tj +-265 TJm +(rough) 23.2427 Tj +-266 TJm +(meaning) 34.3112 Tj +-265 TJm +(of) 8.29885 Tj +-266 TJm +(each) 18.2515 Tj +-266 TJm +(return) 23.7907 Tj +-265 TJm +(v) 4.9813 Tj +25 TJm +(alue.) 19.0883 Tj +-714 TJm +(The) 15.4918 Tj +-265 TJm +(\002rst) 15.5018 Tj +-266 TJm +(\002) 5.53921 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-265 TJm +(actions) 28.224 Tj +-266 TJm +(are) 12.1643 Tj +-266 TJm +(normal) 28.224 Tj +-265 TJm +(and) 14.386 Tj +-266 TJm +(not) 12.7322 Tj +-265 TJm +(intended) 34.3112 Tj +-266 TJm +(to) 7.7509 Tj +-266 TJm +(denote) 26.5603 Tj +-265 TJm +(an) 9.40469 Tj +-266 TJm +(error) 19.3573 Tj +72 457.202 Td +(situation.) 36.8118 Tj +[1 0 0 1 72 457.102] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7436] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7435] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -437.615] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 425.76 Td +/F134_0 9.9626 Tf +(BZ_OK) 29.8878 Tj +[1 0 0 1 101.888 425.76] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -32.3786 -1.3101] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -424.449] cm +[1 0 0 1 0 0] Tm +0 0 Td +108 413.804 Td +/F130_0 9.9626 Tf +(The) 15.4918 Tj +-250 TJm +(requested) 38.1767 Tj +-250 TJm +(action) 24.3486 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(as) 8.29885 Tj +-250 TJm +(completed) 41.5042 Tj +-250 TJm +(successfully) 48.6972 Tj +65 TJm +(.) 2.49065 Tj +[1 0 0 1 72 411.648] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -3.766] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7436] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -398.138] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 388.34 Td +/F134_0 9.9626 Tf +(BZ_RUN_OK,) 59.7756 Tj +-600 TJm +(BZ_FLUSH_OK,) 71.7307 Tj +-600 TJm +(BZ_FINISH_OK) 71.7307 Tj +[1 0 0 1 287.193 388.34] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -217.684 -1.31] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -387.03] cm +[1 0 0 1 0 0] Tm +0 0 Td +108 376.384 Td +/F130_0 9.9626 Tf +(In) 8.29885 Tj +[1 0 0 1 118.79 376.384] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -118.79 -376.384] cm +[1 0 0 1 0 0] Tm +0 0 Td +118.79 376.384 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 202.476 376.384] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -202.476 -376.384] cm +[1 0 0 1 0 0] Tm +0 0 Td +202.476 376.384 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(requested) 38.1767 Tj +-250 TJm +(\003ush/\002nish/nothing-special) 108.493 Tj +-250 TJm +(action) 24.3486 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(as) 8.29885 Tj +-250 TJm +(completed) 41.5042 Tj +-250 TJm +(successfully) 48.6972 Tj +65 TJm +(.) 2.49065 Tj +[1 0 0 1 72 374.228] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -3.7659] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7436] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -360.718] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 350.92 Td +/F134_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +[1 0 0 1 149.709 350.92] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -80.1993 -1.31] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -349.61] cm +[1 0 0 1 0 0] Tm +0 0 Td +108 338.965 Td +/F130_0 9.9626 Tf +(Compression) 52.5826 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(as) 8.29885 Tj +-250 TJm +(completed,) 43.9948 Tj +-250 TJm +(or) 8.29885 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(logical) 27.1182 Tj +-250 TJm +(stream) 26.5603 Tj +-250 TJm +(end) 14.386 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(as) 8.29885 Tj +-250 TJm +(detected) 33.1954 Tj +-250 TJm +(during) 26.0123 Tj +-250 TJm +(decompression.) 62.2563 Tj +[1 0 0 1 72 336.808] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -3.7659] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7436] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7436] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -313.555] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 303.756 Td +/F130_0 9.9626 Tf +(The) 15.4918 Tj +-250 TJm +(follo) 18.8194 Tj +25 TJm +(wing) 19.9252 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues) 20.4731 Tj +-250 TJm +(indicate) 31.5416 Tj +-250 TJm +(an) 9.40469 Tj +-250 TJm +(error) 19.3573 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(some) 21.031 Tj +-250 TJm +(kind.) 20.2042 Tj +[1 0 0 1 72 301.6] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7436] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7436] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -282.112] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 272.314 Td +/F134_0 9.9626 Tf +(BZ_CONFIG_ERROR) 89.6634 Tj +[1 0 0 1 161.664 272.314] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -92.1544 -1.31] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -271.004] cm +[1 0 0 1 0 0] Tm +0 0 Td +108 260.359 Td +/F130_0 9.9626 Tf +(Indicates) 35.965 Tj +-386 TJm +(that) 14.9439 Tj +-385 TJm +(the) 12.1743 Tj +-386 TJm +(library) 26.5603 Tj +-386 TJm +(has) 13.2801 Tj +-386 TJm +(been) 18.8094 Tj +-385 TJm +(improperly) 44.2738 Tj +-386 TJm +(compiled) 37.0808 Tj +-386 TJm +(on) 9.9626 Tj +-386 TJm +(your) 18.2614 Tj +-385 TJm +(platform) 34.3112 Tj +-386 TJm +(--) 6.63509 Tj +-386 TJm +(a) 4.42339 Tj +-386 TJm +(major) 23.2427 Tj +-385 TJm +(con\002guration) 53.1305 Tj +-386 TJm +(error) 19.3573 Tj +55 TJm +(.) 2.49065 Tj +108 248.404 Td +(Speci\002cally) 47.0434 Tj +65 TJm +(,) 2.49065 Tj +-481 TJm +(it) 5.53921 Tj +-435 TJm +(means) 25.4544 Tj +-435 TJm +(that) 14.9439 Tj +[1 0 0 1 220.614 248.404] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -220.614 -248.404] cm +[1 0 0 1 0 0] Tm +0 0 Td +220.614 248.404 Td +/F134_0 9.9626 Tf +(sizeof\(char\)) 71.7307 Tj +[1 0 0 1 292.345 248.404] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -292.345 -248.404] cm +[1 0 0 1 0 0] Tm +0 0 Td +292.345 248.404 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 299.628 248.404] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -299.628 -248.404] cm +[1 0 0 1 0 0] Tm +0 0 Td +299.628 248.404 Td +/F134_0 9.9626 Tf +(sizeof\(short\)) 77.7083 Tj +[1 0 0 1 377.337 248.404] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -377.337 -248.404] cm +[1 0 0 1 0 0] Tm +0 0 Td +381.669 248.404 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 400.388 248.404] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -400.388 -248.404] cm +[1 0 0 1 0 0] Tm +0 0 Td +400.388 248.404 Td +/F134_0 9.9626 Tf +(sizeof\(int\)) 65.7532 Tj +[1 0 0 1 466.141 248.404] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -466.141 -248.404] cm +[1 0 0 1 0 0] Tm +0 0 Td +470.474 248.404 Td +/F130_0 9.9626 Tf +(are) 12.1643 Tj +-435 TJm +(not) 12.7322 Tj +-435 TJm +(1,) 7.47195 Tj +-481 TJm +(2) 4.9813 Tj +-435 TJm +(and) 14.386 Tj +108 236.449 Td +(4) 4.9813 Tj +-389 TJm +(respecti) 30.9837 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ely) 12.1743 Tj +65 TJm +(,) 2.49065 Tj +-424 TJm +(as) 8.29885 Tj +-390 TJm +(the) 12.1743 Tj +15 TJm +(y) 4.9813 Tj +-389 TJm +(should) 26.5703 Tj +-389 TJm +(be.) 11.8953 Tj +-1456 TJm +(Note) 19.3673 Tj +-389 TJm +(that) 14.9439 Tj +-389 TJm +(the) 12.1743 Tj +-389 TJm +(library) 26.5603 Tj +-390 TJm +(should) 26.5703 Tj +-389 TJm +(still) 14.9539 Tj +-389 TJm +(w) 7.193 Tj +10 TJm +(ork) 13.2801 Tj +-389 TJm +(properly) 33.7533 Tj +-390 TJm +(on) 9.9626 Tj +-389 TJm +(64-bit) 23.8007 Tj +-389 TJm +(platforms) 38.1866 Tj +108 224.493 Td +(which) 24.3486 Tj +-292 TJm +(follo) 18.8194 Tj +25 TJm +(w) 7.193 Tj +-292 TJm +(the) 12.1743 Tj +-292 TJm +(LP64) 21.589 Tj +-292 TJm +(programming) 54.2364 Tj +-293 TJm +(model) 24.9065 Tj +-292 TJm +(--) 6.63509 Tj +-292 TJm +(that) 14.9439 Tj +-292 TJm +(is,) 9.1357 Tj +-303 TJm +(where) 24.3386 Tj +[1 0 0 1 355.279 224.493] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -355.279 -224.493] cm +[1 0 0 1 0 0] Tm +0 0 Td +355.279 224.493 Td +/F134_0 9.9626 Tf +(sizeof\(long\)) 71.7307 Tj +[1 0 0 1 427.01 224.493] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -427.01 -224.493] cm +[1 0 0 1 0 0] Tm +0 0 Td +429.92 224.493 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 447.217 224.493] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -447.217 -224.493] cm +[1 0 0 1 0 0] Tm +0 0 Td +447.217 224.493 Td +/F134_0 9.9626 Tf +(sizeof\(void) 65.7532 Tj +512.97 222.75 Td +(*) 5.97756 Tj +518.948 224.493 Td +(\)) 5.97756 Tj +[1 0 0 1 524.925 224.493] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -524.925 -224.493] cm +[1 0 0 1 0 0] Tm +0 0 Td +527.836 224.493 Td +/F130_0 9.9626 Tf +(are) 12.1643 Tj +108 212.538 Td +(8.) 7.47195 Tj +-620 TJm +(Under) 24.8965 Tj +-250 TJm +(LP64,) 24.0796 Tj +[1 0 0 1 175.606 212.538] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -175.606 -212.538] cm +[1 0 0 1 0 0] Tm +0 0 Td +175.606 212.538 Td +/F134_0 9.9626 Tf +(sizeof\(int\)) 65.7532 Tj +[1 0 0 1 241.36 212.538] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -241.36 -212.538] cm +[1 0 0 1 0 0] Tm +0 0 Td +243.85 212.538 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-250 TJm +(still) 14.9539 Tj +-250 TJm +(4,) 7.47195 Tj +-250 TJm +(so) 8.85675 Tj +[1 0 0 1 291.74 212.538] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -291.74 -212.538] cm +[1 0 0 1 0 0] Tm +0 0 Td +291.74 212.538 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 339.56 212.538] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -339.56 -212.538] cm +[1 0 0 1 0 0] Tm +0 0 Td +339.56 212.538 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-250 TJm +(which) 24.3486 Tj +-250 TJm +(doesn') 26.5603 Tj +18 TJm +(t) 2.7696 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(the) 12.1743 Tj +[1 0 0 1 433.458 212.538] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -433.458 -212.538] cm +[1 0 0 1 0 0] Tm +0 0 Td +433.458 212.538 Td +/F134_0 9.9626 Tf +(long) 23.9102 Tj +[1 0 0 1 457.368 212.538] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -457.368 -212.538] cm +[1 0 0 1 0 0] Tm +0 0 Td +459.859 212.538 Td +/F130_0 9.9626 Tf +(type,) 19.6462 Tj +-250 TJm +(is) 6.64505 Tj +-250 TJm +(OK.) 16.8766 Tj +[1 0 0 1 72 210.381] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -3.7659] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7436] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -196.872] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 187.074 Td +/F134_0 9.9626 Tf +(BZ_SEQUENCE_ERROR) 101.619 Tj +[1 0 0 1 173.619 187.074] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -104.11 -1.31] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -185.764] cm +[1 0 0 1 0 0] Tm +0 0 Td +108 175.118 Td +/F130_0 9.9626 Tf +(When) 23.7907 Tj +-291 TJm +(using) 21.589 Tj +-290 TJm +(the) 12.1743 Tj +-291 TJm +(library) 26.5603 Tj +65 TJm +(,) 2.49065 Tj +-300 TJm +(it) 5.53921 Tj +-291 TJm +(is) 6.64505 Tj +-290 TJm +(important) 38.7446 Tj +-291 TJm +(to) 7.7509 Tj +-290 TJm +(call) 14.386 Tj +-291 TJm +(the) 12.1743 Tj +-290 TJm +(functions) 37.0808 Tj +-291 TJm +(in) 7.7509 Tj +-290 TJm +(the) 12.1743 Tj +-291 TJm +(correct) 27.6562 Tj +-290 TJm +(sequence) 36.5129 Tj +-291 TJm +(and) 14.386 Tj +-290 TJm +(with) 17.7135 Tj +-291 TJm +(data) 16.5977 Tj +-290 TJm +(structures) 38.7346 Tj +108 163.163 Td +(\(b) 8.29885 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fers) 14.9339 Tj +-206 TJm +(etc\)) 14.9339 Tj +-205 TJm +(in) 7.7509 Tj +-206 TJm +(the) 12.1743 Tj +-205 TJm +(correct) 27.6562 Tj +-206 TJm +(states.) 24.6275 Tj +[1 0 0 1 239.409 163.163] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -239.409 -163.163] cm +[1 0 0 1 0 0] Tm +0 0 Td +239.409 163.163 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 287.23 163.163] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -287.23 -163.163] cm +[1 0 0 1 0 0] Tm +0 0 Td +289.278 163.163 Td +/F130_0 9.9626 Tf +(checks) 27.1082 Tj +-206 TJm +(as) 8.29885 Tj +-205 TJm +(much) 22.1369 Tj +-206 TJm +(as) 8.29885 Tj +-205 TJm +(it) 5.53921 Tj +-206 TJm +(can) 13.8281 Tj +-206 TJm +(to) 7.7509 Tj +-205 TJm +(ensure) 26.0024 Tj +-206 TJm +(this) 14.396 Tj +-206 TJm +(is) 6.64505 Tj +-205 TJm +(happening,) 43.9948 Tj +-215 TJm +(and) 14.386 Tj +-205 TJm +(returns) 27.6661 Tj +[1 0 0 1 108 151.208] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -108 -151.208] cm +[1 0 0 1 0 0] Tm +0 0 Td +108 151.208 Td +/F134_0 9.9626 Tf +(BZ_SEQUENCE_ERROR) 101.619 Tj +[1 0 0 1 209.619 151.208] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -209.619 -151.208] cm +[1 0 0 1 0 0] Tm +0 0 Td +213.27 151.208 Td +/F130_0 9.9626 Tf +(if) 6.08715 Tj +-367 TJm +(not.) 15.2229 Tj +-659 TJm +(Code) 21.031 Tj +-367 TJm +(which) 24.3486 Tj +-367 TJm +(complies) 35.9749 Tj +-366 TJm +(precisely) 35.965 Tj +-367 TJm +(with) 17.7135 Tj +-366 TJm +(the) 12.1743 Tj +-367 TJm +(function) 33.2053 Tj +-366 TJm +(semantics,) 41.7831 Tj +-396 TJm +(as) 8.29885 Tj +-367 TJm +(detailed) 31.5416 Tj +108 139.253 Td +(belo) 17.1556 Tj +25 TJm +(w) 7.193 Tj +65 TJm +(,) 2.49065 Tj +-250 TJm +(should) 26.5703 Tj +-250 TJm +(ne) 9.40469 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.74094 Tj +-250 TJm +(recei) 19.3573 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-250 TJm +(this) 14.396 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alue;) 19.3673 Tj +-250 TJm +(such) 18.2614 Tj +-250 TJm +(an) 9.40469 Tj +-250 TJm +(e) 4.42339 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ent) 12.1743 Tj +-250 TJm +(denotes) 30.4357 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(uggy) 19.9252 Tj +-250 TJm +(code) 18.8094 Tj +-250 TJm +(which) 24.3486 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(should) 26.5703 Tj +-250 TJm +(in) 7.7509 Tj +40 TJm +(v) 4.9813 Tj +15 TJm +(estig) 18.8194 Tj +5 TJm +(ate.) 14.107 Tj +[1 0 0 1 72 137.096] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -3.7659] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7436] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -123.587] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 113.788 Td +/F134_0 9.9626 Tf +(BZ_PARAM_ERROR) 83.6858 Tj +[1 0 0 1 155.686 113.788] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -86.1768 -1.31] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -112.478] cm +[1 0 0 1 0 0] Tm +0 0 Td +108 101.833 Td +/F130_0 9.9626 Tf +(Returned) 36.5229 Tj +-434 TJm +(when) 21.579 Tj +-434 TJm +(a) 4.42339 Tj +-434 TJm +(parameter) 39.8305 Tj +-434 TJm +(to) 7.7509 Tj +-434 TJm +(a) 4.42339 Tj +-433 TJm +(function) 33.2053 Tj +-434 TJm +(call) 14.386 Tj +-434 TJm +(is) 6.64505 Tj +-434 TJm +(out) 12.7322 Tj +-434 TJm +(of) 8.29885 Tj +-434 TJm +(range) 22.1269 Tj +-434 TJm +(or) 8.29885 Tj +-434 TJm +(otherwise) 38.7346 Tj +-434 TJm +(manifestly) 42.0621 Tj +-434 TJm +(incorrect.) 37.8977 Tj +-1723 TJm +(As) 11.0684 Tj +108 89.8778 Td +(with) 17.7135 Tj +[1 0 0 1 131.644 89.8778] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -131.644 -89.8778] cm +[1 0 0 1 0 0] Tm +0 0 Td +131.644 89.8778 Td +/F134_0 9.9626 Tf +(BZ_SEQUENCE_ERROR) 101.619 Tj +[1 0 0 1 233.263 89.8778] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -233.263 -89.8778] cm +[1 0 0 1 0 0] Tm +0 0 Td +233.263 89.8778 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-595 TJm +(this) 14.396 Tj +-596 TJm +(denotes) 30.4357 Tj +-595 TJm +(a) 4.42339 Tj +-595 TJm +(b) 4.9813 Tj +20 TJm +(ug) 9.9626 Tj +-596 TJm +(in) 7.7509 Tj +-595 TJm +(the) 12.1743 Tj +-595 TJm +(client) 22.1369 Tj +-595 TJm +(code.) 21.3 Tj +-2692 TJm +(The) 15.4918 Tj +-596 TJm +(distinction) 42.0721 Tj +-595 TJm +(between) 33.1954 Tj +[1 0 0 1 108 77.9227] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -108 -77.9227] cm +[1 0 0 1 0 0] Tm +0 0 Td +108 77.9227 Td +/F134_0 9.9626 Tf +(BZ_PARAM_ERROR) 83.6858 Tj +[1 0 0 1 191.686 77.9227] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -191.686 -77.9227] cm +[1 0 0 1 0 0] Tm +0 0 Td +194.177 77.9227 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 211.053 77.9227] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -211.053 -77.9227] cm +[1 0 0 1 0 0] Tm +0 0 Td +211.053 77.9227 Td +/F134_0 9.9626 Tf +(BZ_SEQUENCE_ERROR) 101.619 Tj +[1 0 0 1 312.672 77.9227] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -312.672 -77.9227] cm +[1 0 0 1 0 0] Tm +0 0 Td +315.163 77.9227 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(bit) 10.5205 Tj +-250 TJm +(hazy) 18.8094 Tj +65 TJm +(,) 2.49065 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-250 TJm +(still) 14.9539 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(orth) 16.0497 Tj +-250 TJm +(making.) 32.3785 Tj +[1 0 0 1 72 75.7659] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -3.7659] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -21.1482] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7545] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -50.9514] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 50.9514 Td +/F130_0 9.9626 Tf +(10) 9.9626 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 14 14 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 76.4979 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -342.569 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F130_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +[1 0 0 1 496.556 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -496.556 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +496.556 749.245 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 544.376 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.305 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -5.0363] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -21.5542] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -720] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F134_0 9.9626 Tf +(BZ_MEM_ERROR) 71.7307 Tj +[1 0 0 1 143.731 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -74.2217 -1.31] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -708.727] cm +[1 0 0 1 0 0] Tm +0 0 Td +108 698.082 Td +/F130_0 9.9626 Tf +(Returned) 36.5229 Tj +-228 TJm +(when) 21.579 Tj +-227 TJm +(a) 4.42339 Tj +-228 TJm +(request) 28.772 Tj +-227 TJm +(to) 7.7509 Tj +-228 TJm +(allocate) 30.9837 Tj +-228 TJm +(memory) 33.2053 Tj +-227 TJm +(f) 3.31755 Tj +10 TJm +(ailed.) 21.8579 Tj +-605 TJm +(Note) 19.3673 Tj +-228 TJm +(that) 14.9439 Tj +-228 TJm +(the) 12.1743 Tj +-227 TJm +(quantity) 32.6574 Tj +-228 TJm +(of) 8.29885 Tj +-227 TJm +(memory) 33.2053 Tj +-228 TJm +(needed) 28.2141 Tj +-228 TJm +(to) 7.7509 Tj +-227 TJm +(decompress) 47.0334 Tj +108 686.127 Td +(a) 4.42339 Tj +-351 TJm +(stream) 26.5603 Tj +-352 TJm +(cannot) 26.5603 Tj +-351 TJm +(be) 9.40469 Tj +-352 TJm +(determined) 44.8217 Tj +-351 TJm +(until) 18.2714 Tj +-352 TJm +(the) 12.1743 Tj +-351 TJm +(stream') 29.8778 Tj +55 TJm +(s) 3.87545 Tj +-351 TJm +(header) 26.5503 Tj +-352 TJm +(has) 13.2801 Tj +-351 TJm +(been) 18.8094 Tj +-352 TJm +(read.) 19.6363 Tj +-1228 TJm +(So) 10.5205 Tj +[1 0 0 1 426.471 686.127] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -426.471 -686.127] cm +[1 0 0 1 0 0] Tm +0 0 Td +426.471 686.127 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +[1 0 0 1 522.113 686.127] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -522.113 -686.127] cm +[1 0 0 1 0 0] Tm +0 0 Td +525.614 686.127 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 108 674.172] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -108 -674.172] cm +[1 0 0 1 0 0] Tm +0 0 Td +108 674.172 Td +/F134_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +[1 0 0 1 167.776 674.172] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -167.776 -674.172] cm +[1 0 0 1 0 0] Tm +0 0 Td +172.13 674.172 Td +/F130_0 9.9626 Tf +(may) 17.1556 Tj +-437 TJm +(return) 23.7907 Tj +[1 0 0 1 221.784 674.172] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -221.784 -674.172] cm +[1 0 0 1 0 0] Tm +0 0 Td +221.784 674.172 Td +/F134_0 9.9626 Tf +(BZ_MEM_ERROR) 71.7307 Tj +[1 0 0 1 293.515 674.172] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -293.515 -674.172] cm +[1 0 0 1 0 0] Tm +0 0 Td +297.867 674.172 Td +/F130_0 9.9626 Tf +(e) 4.42339 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(en) 9.40469 Tj +-437 TJm +(though) 27.6761 Tj +-437 TJm +(some) 21.031 Tj +-437 TJm +(of) 8.29885 Tj +-437 TJm +(the) 12.1743 Tj +-437 TJm +(compressed) 47.0334 Tj +-437 TJm +(data) 16.5977 Tj +-437 TJm +(has) 13.2801 Tj +-437 TJm +(been) 18.8094 Tj +-437 TJm +(read.) 19.6363 Tj +108 662.217 Td +(The) 15.4918 Tj +-479 TJm +(same) 20.4731 Tj +-478 TJm +(is) 6.64505 Tj +-479 TJm +(not) 12.7322 Tj +-478 TJm +(true) 15.4918 Tj +-479 TJm +(for) 11.6164 Tj +-479 TJm +(compression;) 53.1305 Tj +-593 TJm +(once) 18.8094 Tj +[1 0 0 1 301.675 662.217] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -301.675 -662.217] cm +[1 0 0 1 0 0] Tm +0 0 Td +301.675 662.217 Td +/F134_0 9.9626 Tf +(BZ2_bzCompressInit) 107.596 Tj +[1 0 0 1 409.271 662.217] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -409.271 -662.217] cm +[1 0 0 1 0 0] Tm +0 0 Td +414.04 662.217 Td +/F130_0 9.9626 Tf +(or) 8.29885 Tj +[1 0 0 1 427.107 662.217] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -427.107 -662.217] cm +[1 0 0 1 0 0] Tm +0 0 Td +427.107 662.217 Td +/F134_0 9.9626 Tf +(BZ2_bzWriteOpen) 89.6634 Tj +[1 0 0 1 516.771 662.217] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -516.771 -662.217] cm +[1 0 0 1 0 0] Tm +0 0 Td +521.539 662.217 Td +/F130_0 9.9626 Tf +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +108 650.262 Td +(successfully) 48.6972 Tj +-250 TJm +(completed,) 43.9948 Tj +[1 0 0 1 205.672 650.261] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -205.672 -650.261] cm +[1 0 0 1 0 0] Tm +0 0 Td +205.672 650.261 Td +/F134_0 9.9626 Tf +(BZ_MEM_ERROR) 71.7307 Tj +[1 0 0 1 277.403 650.261] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -277.403 -650.261] cm +[1 0 0 1 0 0] Tm +0 0 Td +279.894 650.261 Td +/F130_0 9.9626 Tf +(cannot) 26.5603 Tj +-250 TJm +(occur) 22.1269 Tj +55 TJm +(.) 2.49065 Tj +[1 0 0 1 72 648.105] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -3.985] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -634.157] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 624.359 Td +/F134_0 9.9626 Tf +(BZ_DATA_ERROR) 77.7083 Tj +[1 0 0 1 149.709 624.359] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -80.1993 -1.31] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -623.049] cm +[1 0 0 1 0 0] Tm +0 0 Td +108 612.404 Td +/F130_0 9.9626 Tf +(Returned) 36.5229 Tj +-266 TJm +(when) 21.579 Tj +-265 TJm +(a) 4.42339 Tj +-266 TJm +(data) 16.5977 Tj +-265 TJm +(inte) 14.9439 Tj +15 TJm +(grity) 18.8194 Tj +-266 TJm +(error) 19.3573 Tj +-266 TJm +(is) 6.64505 Tj +-265 TJm +(detected) 33.1954 Tj +-266 TJm +(during) 26.0123 Tj +-265 TJm +(decompression.) 62.2563 Tj +-714 TJm +(Most) 20.4831 Tj +-266 TJm +(importantl) 41.5142 Tj +1 TJm +(y) 4.9813 Tj +64 TJm +(,) 2.49065 Tj +-269 TJm +(this) 14.396 Tj +-266 TJm +(means) 25.4544 Tj +-265 TJm +(when) 21.579 Tj +108 600.448 Td +(stored) 24.3486 Tj +-222 TJm +(and) 14.386 Tj +-223 TJm +(computed) 39.2925 Tj +-222 TJm +(CRCs) 23.8106 Tj +-222 TJm +(for) 11.6164 Tj +-222 TJm +(the) 12.1743 Tj +-223 TJm +(data) 16.5977 Tj +-222 TJm +(do) 9.9626 Tj +-222 TJm +(not) 12.7322 Tj +-222 TJm +(match.) 26.8392 Tj +-602 TJm +(This) 17.7135 Tj +-222 TJm +(v) 4.9813 Tj +25 TJm +(alue) 16.5977 Tj +-222 TJm +(is) 6.64505 Tj +-223 TJm +(also) 16.0497 Tj +-222 TJm +(returned) 33.1954 Tj +-222 TJm +(upon) 19.9252 Tj +-222 TJm +(detection) 36.5229 Tj +-223 TJm +(of) 8.29885 Tj +-222 TJm +(an) 9.40469 Tj +15 TJm +(y) 4.9813 Tj +-222 TJm +(other) 20.4731 Tj +108 588.493 Td +(anomaly) 34.3112 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(data.) 19.0883 Tj +[1 0 0 1 72 586.336] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -3.985] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -572.389] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 562.59 Td +/F134_0 9.9626 Tf +(BZ_DATA_ERROR_MAGIC) 113.574 Tj +[1 0 0 1 185.574 562.59] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -116.065 -1.31] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -561.28] cm +[1 0 0 1 0 0] Tm +0 0 Td +108 550.635 Td +/F130_0 9.9626 Tf +(As) 11.0684 Tj +-306 TJm +(a) 4.42339 Tj +-306 TJm +(special) 27.6661 Tj +-306 TJm +(case) 17.1456 Tj +-307 TJm +(of) 8.29885 Tj +[1 0 0 1 191.852 550.635] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -191.852 -550.635] cm +[1 0 0 1 0 0] Tm +0 0 Td +191.852 550.635 Td +/F134_0 9.9626 Tf +(BZ_DATA_ERROR) 77.7083 Tj +[1 0 0 1 269.561 550.635] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -269.561 -550.635] cm +[1 0 0 1 0 0] Tm +0 0 Td +269.561 550.635 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-306 TJm +(it) 5.53921 Tj +-306 TJm +(is) 6.64505 Tj +-306 TJm +(sometimes) 42.62 Tj +-307 TJm +(usef) 16.5977 Tj +1 TJm +(ul) 7.7509 Tj +-307 TJm +(to) 7.7509 Tj +-306 TJm +(kno) 14.9439 Tj +25 TJm +(w) 7.193 Tj +-306 TJm +(when) 21.579 Tj +-306 TJm +(the) 12.1743 Tj +-306 TJm +(compressed) 47.0334 Tj +-306 TJm +(stream) 26.5603 Tj +-306 TJm +(does) 18.2614 Tj +108 538.68 Td +(not) 12.7322 Tj +-250 TJm +(start) 17.1556 Tj +-250 TJm +(with) 17.7135 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(correct) 27.6562 Tj +-250 TJm +(magic) 24.3486 Tj +-250 TJm +(bytes) 21.031 Tj +-250 TJm +(\() 3.31755 Tj +[1 0 0 1 261.562 538.68] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -261.562 -538.68] cm +[1 0 0 1 0 0] Tm +0 0 Td +261.562 538.68 Td +/F134_0 9.9626 Tf +('B') 17.9327 Tj +-600 TJm +('Z') 17.9327 Tj +-600 TJm +('h') 17.9327 Tj +[1 0 0 1 327.316 538.68] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -327.316 -538.68] cm +[1 0 0 1 0 0] Tm +0 0 Td +327.316 538.68 Td +/F130_0 9.9626 Tf +(\).) 5.8082 Tj +[1 0 0 1 72 536.523] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -3.985] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -522.576] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 512.777 Td +/F134_0 9.9626 Tf +(BZ_IO_ERROR) 65.7532 Tj +[1 0 0 1 137.753 512.777] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -68.2441 -1.3101] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -511.467] cm +[1 0 0 1 0 0] Tm +0 0 Td +108 500.822 Td +/F130_0 9.9626 Tf +(Returned) 36.5229 Tj +-233 TJm +(by) 9.9626 Tj +[1 0 0 1 159.123 500.822] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -159.123 -500.822] cm +[1 0 0 1 0 0] Tm +0 0 Td +159.123 500.822 Td +/F134_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +[1 0 0 1 218.899 500.822] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -218.899 -500.822] cm +[1 0 0 1 0 0] Tm +0 0 Td +221.218 500.822 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 237.923 500.822] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -237.923 -500.822] cm +[1 0 0 1 0 0] Tm +0 0 Td +237.923 500.822 Td +/F134_0 9.9626 Tf +(BZ2_bzWrite) 65.7532 Tj +[1 0 0 1 303.676 500.822] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -303.676 -500.822] cm +[1 0 0 1 0 0] Tm +0 0 Td +305.995 500.822 Td +/F130_0 9.9626 Tf +(when) 21.579 Tj +-233 TJm +(there) 19.9152 Tj +-232 TJm +(is) 6.64505 Tj +-233 TJm +(an) 9.40469 Tj +-233 TJm +(error) 19.3573 Tj +-233 TJm +(reading) 29.8778 Tj +-232 TJm +(or) 8.29885 Tj +-233 TJm +(writing) 28.782 Tj +-233 TJm +(in) 7.7509 Tj +-233 TJm +(the) 12.1743 Tj +-232 TJm +(compressed) 47.0334 Tj +108 488.867 Td +(\002le,) 15.2229 Tj +-384 TJm +(and) 14.386 Tj +-357 TJm +(by) 9.9626 Tj +[1 0 0 1 158.511 488.867] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -158.511 -488.867] cm +[1 0 0 1 0 0] Tm +0 0 Td +158.511 488.867 Td +/F134_0 9.9626 Tf +(BZ2_bzReadOpen) 83.6858 Tj +[1 0 0 1 242.197 488.867] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -242.197 -488.867] cm +[1 0 0 1 0 0] Tm +0 0 Td +245.755 488.867 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 263.698 488.867] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -263.698 -488.867] cm +[1 0 0 1 0 0] Tm +0 0 Td +263.698 488.867 Td +/F134_0 9.9626 Tf +(BZ2_bzWriteOpen) 89.6634 Tj +[1 0 0 1 353.362 488.867] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -353.362 -488.867] cm +[1 0 0 1 0 0] Tm +0 0 Td +356.92 488.867 Td +/F130_0 9.9626 Tf +(for) 11.6164 Tj +-357 TJm +(attempts) 33.7633 Tj +-357 TJm +(to) 7.7509 Tj +-357 TJm +(use) 13.2801 Tj +-357 TJm +(a) 4.42339 Tj +-357 TJm +(\002le) 12.7322 Tj +-357 TJm +(for) 11.6164 Tj +-358 TJm +(which) 24.3486 Tj +-357 TJm +(the) 12.1743 Tj +-357 TJm +(error) 19.3573 Tj +108 476.912 Td +(indicator) 35.417 Tj +-260 TJm +(\(viz,) 17.9825 Tj +[1 0 0 1 166.603 476.912] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -166.603 -476.912] cm +[1 0 0 1 0 0] Tm +0 0 Td +166.603 476.912 Td +/F134_0 9.9626 Tf +(ferror\(f\)) 53.798 Tj +[1 0 0 1 220.401 476.912] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -220.401 -476.912] cm +[1 0 0 1 0 0] Tm +0 0 Td +220.401 476.912 Td +/F130_0 9.9626 Tf +(\)) 3.31755 Tj +-260 TJm +(is) 6.64505 Tj +-260 TJm +(set.) 13.5591 Tj +-679 TJm +(On) 12.1743 Tj +-260 TJm +(receipt) 27.1082 Tj +-260 TJm +(of) 8.29885 Tj +[1 0 0 1 311.223 476.912] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -311.223 -476.912] cm +[1 0 0 1 0 0] Tm +0 0 Td +311.223 476.912 Td +/F134_0 9.9626 Tf +(BZ_IO_ERROR) 65.7532 Tj +[1 0 0 1 376.976 476.912] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -376.976 -476.912] cm +[1 0 0 1 0 0] Tm +0 0 Td +376.976 476.912 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-260 TJm +(the) 12.1743 Tj +-260 TJm +(caller) 22.1269 Tj +-260 TJm +(should) 26.5703 Tj +-260 TJm +(consult) 28.782 Tj +[1 0 0 1 482.068 476.912] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -482.068 -476.912] cm +[1 0 0 1 0 0] Tm +0 0 Td +482.068 476.912 Td +/F134_0 9.9626 Tf +(errno) 29.8878 Tj +[1 0 0 1 511.956 476.912] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -511.956 -476.912] cm +[1 0 0 1 0 0] Tm +0 0 Td +514.546 476.912 Td +/F130_0 9.9626 Tf +(and/or) 25.4544 Tj +[1 0 0 1 108 464.957] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -108 -464.957] cm +[1 0 0 1 0 0] Tm +0 0 Td +108 464.957 Td +/F134_0 9.9626 Tf +(perror) 35.8654 Tj +[1 0 0 1 143.865 464.957] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -143.865 -464.957] cm +[1 0 0 1 0 0] Tm +0 0 Td +146.356 464.957 Td +/F130_0 9.9626 Tf +(to) 7.7509 Tj +-250 TJm +(acquire) 29.3199 Tj +-250 TJm +(operating-system) 68.6224 Tj +-250 TJm +(speci\002c) 30.4357 Tj +-250 TJm +(information) 47.0434 Tj +-250 TJm +(about) 22.1369 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(problem.) 35.696 Tj +[1 0 0 1 72 462.8] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -3.9849] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -448.852] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 439.054 Td +/F134_0 9.9626 Tf +(BZ_UNEXPECTED_EOF) 101.619 Tj +[1 0 0 1 173.619 439.054] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -104.11 -1.31] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -437.744] cm +[1 0 0 1 0 0] Tm +0 0 Td +108 427.099 Td +/F130_0 9.9626 Tf +(Returned) 36.5229 Tj +-250 TJm +(by) 9.9626 Tj +[1 0 0 1 159.467 427.099] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -159.467 -427.099] cm +[1 0 0 1 0 0] Tm +0 0 Td +159.467 427.099 Td +/F134_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +[1 0 0 1 219.242 427.099] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -219.242 -427.099] cm +[1 0 0 1 0 0] Tm +0 0 Td +221.733 427.099 Td +/F130_0 9.9626 Tf +(when) 21.579 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(\002le) 12.7322 Tj +-250 TJm +(\002nishes) 30.4457 Tj +-250 TJm +(before) 25.4445 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(logical) 27.1182 Tj +-250 TJm +(end) 14.386 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(stream) 26.5603 Tj +-250 TJm +(is) 6.64505 Tj +-250 TJm +(detected.) 35.686 Tj +[1 0 0 1 72 424.942] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -3.985] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -410.994] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 401.196 Td +/F134_0 9.9626 Tf +(BZ_OUTBUFF_FULL) 89.6634 Tj +[1 0 0 1 161.664 401.196] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -92.1544 -1.31] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -399.886] cm +[1 0 0 1 0 0] Tm +0 0 Td +108 389.241 Td +/F130_0 9.9626 Tf +(Returned) 36.5229 Tj +-258 TJm +(by) 9.9626 Tj +[1 0 0 1 159.632 389.241] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -159.632 -389.241] cm +[1 0 0 1 0 0] Tm +0 0 Td +159.632 389.241 Td +/F134_0 9.9626 Tf +(BZ2_bzBuffToBuffCompress) 143.461 Tj +[1 0 0 1 303.094 389.241] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -303.094 -389.241] cm +[1 0 0 1 0 0] Tm +0 0 Td +305.668 389.241 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 322.627 389.241] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -322.627 -389.241] cm +[1 0 0 1 0 0] Tm +0 0 Td +322.627 389.241 Td +/F134_0 9.9626 Tf +(BZ2_bzBuffToBuffDecompress) 155.417 Tj +[1 0 0 1 478.044 389.241] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -478.044 -389.241] cm +[1 0 0 1 0 0] Tm +0 0 Td +480.618 389.241 Td +/F130_0 9.9626 Tf +(to) 7.7509 Tj +-258 TJm +(indicate) 31.5416 Tj +-259 TJm +(that) 14.9439 Tj +108 377.286 Td +(the) 12.1743 Tj +-250 TJm +(output) 25.4644 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(will) 15.5018 Tj +-250 TJm +(not) 12.7322 Tj +-250 TJm +(\002t) 8.30881 Tj +-250 TJm +(into) 15.5018 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(output) 25.4644 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +-250 TJm +(pro) 13.2801 Tj +15 TJm +(vided.) 24.6275 Tj +[1 0 0 1 72 375.129] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -3.985] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -351.218] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 328.585 Td +/F122_0 20.6585 Tf +(3.3.) 34.4584 Tj +-278 TJm +(Lo) 25.2447 Tj +15 TJm +(w-le) 40.1808 Tj +15 TJm +(vel) 28.7153 Tj +-278 TJm +(interface) 86.1046 Tj +[1 0 0 1 72 328.327] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -318.364] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 297.964 Td +/F122_0 17.2154 Tf +(3.3.1.) 43.0729 Tj +[1 0 0 1 119.858 297.964] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -119.858 -297.964] cm +[1 0 0 1 0 0] Tm +0 0 Td +119.858 297.964 Td +/F392_0 17.2154 Tf +(BZ2_bzCompressInit) 185.926 Tj +[1 0 0 1 305.785 297.964] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -233.785 -2.3327] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -244.779] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -50.8518] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 50.8518 Td +/F130_0 9.9626 Tf +(11) 9.9626 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 15 15 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 76.4979 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -342.569 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F130_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +[1 0 0 1 496.556 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -496.556 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +496.556 749.245 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 544.376 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.305 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -5.0363] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -296.523] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 274.969 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 271.382] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -711.631] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 711.631 Td +/F134_0 9.9626 Tf +(typedef) 41.8429 Tj +-426 TJm +(struct) 35.8654 Tj +-426 TJm +({) 5.97756 Tj +98.4879 699.676 Td +(char) 23.9102 Tj +126.642 697.933 Td +(*) 5.97756 Tj +132.62 699.676 Td +(next_in;) 47.8205 Tj +98.4879 687.721 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(avail_in;) 53.798 Tj +98.4879 675.766 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(total_in_lo32;) 83.6858 Tj +98.4879 663.811 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(total_in_hi32;) 83.6858 Tj +98.4879 639.9 Td +(char) 23.9102 Tj +126.642 638.157 Td +(*) 5.97756 Tj +132.62 639.9 Td +(next_out;) 53.798 Tj +98.4879 627.945 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(avail_out;) 59.7756 Tj +98.4879 615.99 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(total_out_lo32;) 89.6634 Tj +98.4879 604.035 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(total_out_hi32;) 89.6634 Tj +98.4879 580.125 Td +(void) 23.9102 Tj +126.642 578.381 Td +(*) 5.97756 Tj +132.62 580.125 Td +(state;) 35.8654 Tj +98.4879 556.214 Td +(void) 23.9102 Tj +126.642 554.471 Td +(*) 5.97756 Tj +132.62 556.214 Td +(\() 5.97756 Tj +138.597 554.471 Td +(*) 5.97756 Tj +144.575 556.214 Td +(bzalloc\)\(void) 77.7083 Tj +226.527 554.471 Td +(*) 5.97756 Tj +232.505 556.214 Td +(,int,int\);) 59.7756 Tj +98.4879 544.259 Td +(void) 23.9102 Tj +-426 TJm +(\() 5.97756 Tj +132.62 542.516 Td +(*) 5.97756 Tj +138.597 544.259 Td +(bzfree\)\(void) 71.7307 Tj +214.572 542.516 Td +(*) 5.97756 Tj +220.55 544.259 Td +(,void) 29.8878 Tj +254.682 542.516 Td +(*) 5.97756 Tj +260.659 544.259 Td +(\);) 11.9551 Tj +98.4879 532.304 Td +(void) 23.9102 Tj +126.642 530.56 Td +(*) 5.97756 Tj +132.62 532.304 Td +(opaque;) 41.8429 Tj +89.9999 520.349 Td +(}) 5.97756 Tj +-426 TJm +(bz_stream;) 59.7756 Tj +89.9999 496.438 Td +(int) 17.9327 Tj +-426 TJm +(BZ2_bzCompressInit) 107.596 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(bz_stream) 53.798 Tj +292.281 494.695 Td +(*) 5.97756 Tj +298.258 496.438 Td +(strm,) 29.8878 Tj +196.099 484.483 Td +(int) 17.9327 Tj +-426 TJm +(blockSize100k,) 83.6858 Tj +196.099 472.528 Td +(int) 17.9327 Tj +-426 TJm +(verbosity,) 59.7756 Tj +196.099 460.573 Td +(int) 17.9327 Tj +-426 TJm +(workFactor) 59.7756 Tj +-426 TJm +(\);) 11.9551 Tj +[1 0 0 1 72 445.031] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -435.068] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 423.113 Td +/F130_0 9.9626 Tf +(Prepares) 34.3012 Tj +-356 TJm +(for) 11.6164 Tj +-356 TJm +(compression.) 52.8516 Tj +-1256 TJm +(The) 15.4918 Tj +[1 0 0 1 209.409 423.113] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -209.409 -423.113] cm +[1 0 0 1 0 0] Tm +0 0 Td +209.409 423.113 Td +/F134_0 9.9626 Tf +(bz_stream) 53.798 Tj +[1 0 0 1 263.208 423.113] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -263.208 -423.113] cm +[1 0 0 1 0 0] Tm +0 0 Td +266.754 423.113 Td +/F130_0 9.9626 Tf +(structure) 34.8591 Tj +-356 TJm +(holds) 21.589 Tj +-356 TJm +(all) 9.9626 Tj +-356 TJm +(data) 16.5977 Tj +-356 TJm +(pertaining) 40.3983 Tj +-356 TJm +(to) 7.7509 Tj +-356 TJm +(the) 12.1743 Tj +-356 TJm +(compression) 50.3609 Tj +-355 TJm +(acti) 14.386 Tj +25 TJm +(vity) 15.5018 Tj +65 TJm +(.) 2.49065 Tj +-1256 TJm +(A) 7.193 Tj +[1 0 0 1 72 411.158] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -411.158] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 411.158 Td +/F134_0 9.9626 Tf +(bz_stream) 53.798 Tj +[1 0 0 1 125.798 411.158] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -125.798 -411.158] cm +[1 0 0 1 0 0] Tm +0 0 Td +128.581 411.158 Td +/F130_0 9.9626 Tf +(structure) 34.8591 Tj +-279 TJm +(should) 26.5703 Tj +-280 TJm +(be) 9.40469 Tj +-279 TJm +(allocated) 35.965 Tj +-279 TJm +(and) 14.386 Tj +-280 TJm +(initialised) 39.3025 Tj +-279 TJm +(prior) 19.3673 Tj +-279 TJm +(to) 7.7509 Tj +-279 TJm +(the) 12.1743 Tj +-280 TJm +(call.) 16.8766 Tj +-796 TJm +(The) 15.4918 Tj +-279 TJm +(\002elds) 21.589 Tj +-279 TJm +(of) 8.29885 Tj +[1 0 0 1 431.939 411.158] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -431.939 -411.158] cm +[1 0 0 1 0 0] Tm +0 0 Td +431.939 411.158 Td +/F134_0 9.9626 Tf +(bz_stream) 53.798 Tj +[1 0 0 1 485.738 411.158] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -485.738 -411.158] cm +[1 0 0 1 0 0] Tm +0 0 Td +488.52 411.158 Td +/F130_0 9.9626 Tf +(comprise) 36.5229 Tj +-279 TJm +(the) 12.1743 Tj +72 399.203 Td +(entirety) 30.4357 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(user) 16.5977 Tj +20 TJm +(-visible) 29.8878 Tj +-250 TJm +(data.) 19.0883 Tj +[1 0 0 1 204.422 399.203] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -204.422 -399.203] cm +[1 0 0 1 0 0] Tm +0 0 Td +204.422 399.203 Td +/F134_0 9.9626 Tf +(state) 29.8878 Tj +[1 0 0 1 234.31 399.203] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -234.31 -399.203] cm +[1 0 0 1 0 0] Tm +0 0 Td +236.8 399.203 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(pointer) 28.224 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(pri) 11.0684 Tj +25 TJm +(v) 4.9813 Tj +25 TJm +(ate) 11.6164 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(structures) 38.7346 Tj +-250 TJm +(required) 33.1954 Tj +-250 TJm +(for) 11.6164 Tj +-250 TJm +(compression.) 52.8516 Tj +[1 0 0 1 72 397.046] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -387.083] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 377.285 Td +/F130_0 9.9626 Tf +(Custom) 31.0036 Tj +-372 TJm +(memory) 33.2053 Tj +-372 TJm +(allocators) 38.7346 Tj +-372 TJm +(are) 12.1643 Tj +-372 TJm +(supported,) 41.7831 Tj +-403 TJm +(via) 12.1743 Tj +-372 TJm +(\002elds) 21.589 Tj +[1 0 0 1 288.908 377.285] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -288.908 -377.285] cm +[1 0 0 1 0 0] Tm +0 0 Td +288.908 377.285 Td +/F134_0 9.9626 Tf +(bzalloc) 41.8429 Tj +[1 0 0 1 330.751 377.285] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -330.751 -377.285] cm +[1 0 0 1 0 0] Tm +0 0 Td +330.751 377.285 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 337.253 377.285] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -337.253 -377.285] cm +[1 0 0 1 0 0] Tm +0 0 Td +337.253 377.285 Td +/F134_0 9.9626 Tf +(bzfree) 35.8654 Tj +[1 0 0 1 373.118 377.285] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -373.118 -377.285] cm +[1 0 0 1 0 0] Tm +0 0 Td +373.118 377.285 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-403 TJm +(and) 14.386 Tj +[1 0 0 1 397.714 377.285] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -397.714 -377.285] cm +[1 0 0 1 0 0] Tm +0 0 Td +397.714 377.285 Td +/F134_0 9.9626 Tf +(opaque) 35.8654 Tj +[1 0 0 1 433.579 377.285] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -433.579 -377.285] cm +[1 0 0 1 0 0] Tm +0 0 Td +433.579 377.285 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-1353 TJm +(The) 15.4918 Tj +-372 TJm +(v) 4.9813 Tj +25 TJm +(alue) 16.5977 Tj +[1 0 0 1 493.782 377.285] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.782 -377.285] cm +[1 0 0 1 0 0] Tm +0 0 Td +493.782 377.285 Td +/F134_0 9.9626 Tf +(opaque) 35.8654 Tj +[1 0 0 1 529.648 377.285] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -529.648 -377.285] cm +[1 0 0 1 0 0] Tm +0 0 Td +533.355 377.285 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +72 365.33 Td +(passed) 26.5603 Tj +-306 TJm +(to) 7.7509 Tj +-306 TJm +(as) 8.29885 Tj +-306 TJm +(the) 12.1743 Tj +-306 TJm +(\002rst) 15.5018 Tj +-306 TJm +(ar) 7.74094 Tj +18 TJm +(gument) 29.8878 Tj +-306 TJm +(to) 7.7509 Tj +-306 TJm +(all) 9.9626 Tj +-306 TJm +(calls) 18.2614 Tj +-305 TJm +(to) 7.7509 Tj +[1 0 0 1 253.941 365.33] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -253.941 -365.33] cm +[1 0 0 1 0 0] Tm +0 0 Td +253.941 365.33 Td +/F134_0 9.9626 Tf +(bzalloc) 41.8429 Tj +[1 0 0 1 295.784 365.33] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -295.784 -365.33] cm +[1 0 0 1 0 0] Tm +0 0 Td +298.832 365.33 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 316.266 365.33] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -316.266 -365.33] cm +[1 0 0 1 0 0] Tm +0 0 Td +316.266 365.33 Td +/F134_0 9.9626 Tf +(bzfree) 35.8654 Tj +[1 0 0 1 352.132 365.33] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -352.132 -365.33] cm +[1 0 0 1 0 0] Tm +0 0 Td +352.132 365.33 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-320 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-306 TJm +(is) 6.64505 Tj +-306 TJm +(otherwise) 38.7346 Tj +-306 TJm +(ignored) 30.4357 Tj +-306 TJm +(by) 9.9626 Tj +-306 TJm +(the) 12.1743 Tj +-306 TJm +(library) 26.5603 Tj +65 TJm +(.) 2.49065 Tj +-955 TJm +(The) 15.4918 Tj +72 353.375 Td +(call) 14.386 Tj +[1 0 0 1 89.4309 353.375] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -89.4309 -353.375] cm +[1 0 0 1 0 0] Tm +0 0 Td +89.4309 353.375 Td +/F134_0 9.9626 Tf +(bzalloc) 41.8429 Tj +-600 TJm +(\() 5.97756 Tj +-600 TJm +(opaque,) 41.8429 Tj +-600 TJm +(n,) 11.9551 Tj +-600 TJm +(m) 5.97756 Tj +-600 TJm +(\)) 5.97756 Tj +[1 0 0 1 232.893 353.375] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -232.893 -353.375] cm +[1 0 0 1 0 0] Tm +0 0 Td +235.938 353.375 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-306 TJm +(e) 4.42339 Tj +15 TJm +(xpected) 30.9837 Tj +-305 TJm +(to) 7.7509 Tj +-306 TJm +(return) 23.7907 Tj +-306 TJm +(a) 4.42339 Tj +-305 TJm +(pointer) 28.224 Tj +[1 0 0 1 360.3 353.375] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -360.3 -353.375] cm +[1 0 0 1 0 0] Tm +0 0 Td +360.3 353.375 Td +/F134_0 9.9626 Tf +(p) 5.97756 Tj +[1 0 0 1 366.277 353.375] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -366.277 -353.375] cm +[1 0 0 1 0 0] Tm +0 0 Td +369.322 353.375 Td +/F130_0 9.9626 Tf +(to) 7.7509 Tj +[1 0 0 1 380.118 353.375] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -380.118 -353.375] cm +[1 0 0 1 0 0] Tm +0 0 Td +380.118 353.375 Td +/F134_0 9.9626 Tf +(n) 5.97756 Tj +392.073 351.631 Td +(*) 5.97756 Tj +404.029 353.375 Td +(m) 5.97756 Tj +[1 0 0 1 410.006 353.375] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -410.006 -353.375] cm +[1 0 0 1 0 0] Tm +0 0 Td +413.051 353.375 Td +/F130_0 9.9626 Tf +(bytes) 21.031 Tj +-306 TJm +(of) 8.29885 Tj +-305 TJm +(memory) 33.2053 Tj +65 TJm +(,) 2.49065 Tj +-320 TJm +(and) 14.386 Tj +[1 0 0 1 504.135 353.375] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -504.135 -353.375] cm +[1 0 0 1 0 0] Tm +0 0 Td +504.135 353.375 Td +/F134_0 9.9626 Tf +(bzfree) 35.8654 Tj +72 341.42 Td +(\() 5.97756 Tj +-600 TJm +(opaque,) 41.8429 Tj +-600 TJm +(p) 5.97756 Tj +-600 TJm +(\)) 5.97756 Tj +[1 0 0 1 149.709 341.42] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -149.709 -341.42] cm +[1 0 0 1 0 0] Tm +0 0 Td +152.199 341.42 Td +/F130_0 9.9626 Tf +(should) 26.5703 Tj +-250 TJm +(free) 15.4819 Tj +-250 TJm +(that) 14.9439 Tj +-250 TJm +(memory) 33.2053 Tj +65 TJm +(.) 2.49065 Tj +[1 0 0 1 72 339.263] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -329.3] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 319.502 Td +/F130_0 9.9626 Tf +(If) 6.63509 Tj +-280 TJm +(you) 14.9439 Tj +-280 TJm +(don') 18.2614 Tj +18 TJm +(t) 2.7696 Tj +-280 TJm +(w) 7.193 Tj +10 TJm +(ant) 12.1743 Tj +-279 TJm +(to) 7.7509 Tj +-280 TJm +(use) 13.2801 Tj +-280 TJm +(a) 4.42339 Tj +-280 TJm +(custom) 28.782 Tj +-280 TJm +(memory) 33.2053 Tj +-279 TJm +(allocator) 34.8591 Tj +40 TJm +(,) 2.49065 Tj +-288 TJm +(set) 11.0684 Tj +[1 0 0 1 299.9 319.502] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -299.9 -319.502] cm +[1 0 0 1 0 0] Tm +0 0 Td +299.9 319.502 Td +/F134_0 9.9626 Tf +(bzalloc) 41.8429 Tj +[1 0 0 1 341.743 319.502] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -341.743 -319.502] cm +[1 0 0 1 0 0] Tm +0 0 Td +341.743 319.502 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 347.096 319.502] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -347.096 -319.502] cm +[1 0 0 1 0 0] Tm +0 0 Td +347.096 319.502 Td +/F134_0 9.9626 Tf +(bzfree) 35.8654 Tj +[1 0 0 1 382.961 319.502] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -382.961 -319.502] cm +[1 0 0 1 0 0] Tm +0 0 Td +385.749 319.502 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 402.923 319.502] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -402.923 -319.502] cm +[1 0 0 1 0 0] Tm +0 0 Td +402.923 319.502 Td +/F134_0 9.9626 Tf +(opaque) 35.8654 Tj +[1 0 0 1 438.788 319.502] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -438.788 -319.502] cm +[1 0 0 1 0 0] Tm +0 0 Td +441.576 319.502 Td +/F130_0 9.9626 Tf +(to) 7.7509 Tj +[1 0 0 1 452.115 319.502] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -452.115 -319.502] cm +[1 0 0 1 0 0] Tm +0 0 Td +452.115 319.502 Td +/F134_0 9.9626 Tf +(NULL) 23.9102 Tj +[1 0 0 1 476.025 319.502] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -476.025 -319.502] cm +[1 0 0 1 0 0] Tm +0 0 Td +476.025 319.502 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-280 TJm +(and) 14.386 Tj +-280 TJm +(the) 12.1743 Tj +-279 TJm +(library) 26.5603 Tj +72 307.547 Td +(will) 15.5018 Tj +-250 TJm +(then) 17.1556 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(standard) 33.7533 Tj +[1 0 0 1 176.318 307.547] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -176.318 -307.547] cm +[1 0 0 1 0 0] Tm +0 0 Td +176.318 307.547 Td +/F134_0 9.9626 Tf +(malloc) 35.8654 Tj +[1 0 0 1 212.183 307.547] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -212.183 -307.547] cm +[1 0 0 1 0 0] Tm +0 0 Td +214.674 307.547 Td +/F130_0 9.9626 Tf +(/) 2.7696 Tj +[1 0 0 1 219.934 307.547] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -219.934 -307.547] cm +[1 0 0 1 0 0] Tm +0 0 Td +219.934 307.547 Td +/F134_0 9.9626 Tf +(free) 23.9102 Tj +[1 0 0 1 243.844 307.547] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -243.844 -307.547] cm +[1 0 0 1 0 0] Tm +0 0 Td +246.335 307.547 Td +/F130_0 9.9626 Tf +(routines.) 34.5901 Tj +[1 0 0 1 72 307.392] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -297.43] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 285.629 Td +/F130_0 9.9626 Tf +(Before) 27.1082 Tj +-362 TJm +(calling) 27.1182 Tj +[1 0 0 1 133.438 285.629] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -133.438 -285.629] cm +[1 0 0 1 0 0] Tm +0 0 Td +133.438 285.629 Td +/F134_0 9.9626 Tf +(BZ2_bzCompressInit) 107.596 Tj +[1 0 0 1 241.035 285.629] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -241.035 -285.629] cm +[1 0 0 1 0 0] Tm +0 0 Td +241.035 285.629 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-390 TJm +(\002elds) 21.589 Tj +[1 0 0 1 272.606 285.629] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -272.606 -285.629] cm +[1 0 0 1 0 0] Tm +0 0 Td +272.606 285.629 Td +/F134_0 9.9626 Tf +(bzalloc) 41.8429 Tj +[1 0 0 1 314.449 285.629] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -314.449 -285.629] cm +[1 0 0 1 0 0] Tm +0 0 Td +314.449 285.629 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 320.825 285.629] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -320.825 -285.629] cm +[1 0 0 1 0 0] Tm +0 0 Td +320.825 285.629 Td +/F134_0 9.9626 Tf +(bzfree) 35.8654 Tj +[1 0 0 1 356.69 285.629] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -356.69 -285.629] cm +[1 0 0 1 0 0] Tm +0 0 Td +360.296 285.629 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 378.288 285.629] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -378.288 -285.629] cm +[1 0 0 1 0 0] Tm +0 0 Td +378.288 285.629 Td +/F134_0 9.9626 Tf +(opaque) 35.8654 Tj +[1 0 0 1 414.154 285.629] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -414.154 -285.629] cm +[1 0 0 1 0 0] Tm +0 0 Td +417.76 285.629 Td +/F130_0 9.9626 Tf +(should) 26.5703 Tj +-362 TJm +(be) 9.40469 Tj +-362 TJm +(\002lled) 20.4831 Tj +-362 TJm +(appropriately) 53.1206 Tj +65 TJm +(,) 2.49065 Tj +72 273.674 Td +(as) 8.29885 Tj +-322 TJm +(just) 14.396 Tj +-323 TJm +(described.) 40.6673 Tj +-1055 TJm +(Upon) 22.1369 Tj +-322 TJm +(return,) 26.2813 Tj +-341 TJm +(the) 12.1743 Tj +-322 TJm +(internal) 30.4357 Tj +-323 TJm +(state) 18.2614 Tj +-322 TJm +(will) 15.5018 Tj +-323 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-322 TJm +(been) 18.8094 Tj +-323 TJm +(allocated) 35.965 Tj +-322 TJm +(and) 14.386 Tj +-323 TJm +(initialised,) 41.7931 Tj +-340 TJm +(and) 14.386 Tj +[1 0 0 1 459.801 273.674] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -459.801 -273.674] cm +[1 0 0 1 0 0] Tm +0 0 Td +459.801 273.674 Td +/F134_0 9.9626 Tf +(total_in_lo32) 77.7083 Tj +[1 0 0 1 537.509 273.674] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -537.509 -273.674] cm +[1 0 0 1 0 0] Tm +0 0 Td +537.509 273.674 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 72 261.718] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -261.718] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 261.718 Td +/F134_0 9.9626 Tf +(total_in_hi32) 77.7083 Tj +[1 0 0 1 149.709 261.718] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -149.709 -261.718] cm +[1 0 0 1 0 0] Tm +0 0 Td +149.709 261.718 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 155.006 261.718] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -155.006 -261.718] cm +[1 0 0 1 0 0] Tm +0 0 Td +155.006 261.718 Td +/F134_0 9.9626 Tf +(total_out_lo32) 83.6858 Tj +[1 0 0 1 238.692 261.718] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -238.692 -261.718] cm +[1 0 0 1 0 0] Tm +0 0 Td +241.435 261.718 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 258.564 261.718] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -258.564 -261.718] cm +[1 0 0 1 0 0] Tm +0 0 Td +258.564 261.718 Td +/F134_0 9.9626 Tf +(total_out_hi32) 83.6858 Tj +[1 0 0 1 342.25 261.718] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -342.25 -261.718] cm +[1 0 0 1 0 0] Tm +0 0 Td +344.994 261.718 Td +/F130_0 9.9626 Tf +(will) 15.5018 Tj +-275 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-276 TJm +(been) 18.8094 Tj +-275 TJm +(set) 11.0684 Tj +-275 TJm +(to) 7.7509 Tj +-276 TJm +(zero.) 19.6363 Tj +-772 TJm +(These) 23.7907 Tj +-275 TJm +(four) 16.5977 Tj +-276 TJm +(\002elds) 21.589 Tj +-275 TJm +(are) 12.1643 Tj +72 249.763 Td +(used) 18.2614 Tj +-340 TJm +(by) 9.9626 Tj +-339 TJm +(the) 12.1743 Tj +-340 TJm +(library) 26.5603 Tj +-339 TJm +(to) 7.7509 Tj +-340 TJm +(inform) 27.1182 Tj +-339 TJm +(the) 12.1743 Tj +-340 TJm +(caller) 22.1269 Tj +-339 TJm +(of) 8.29885 Tj +-340 TJm +(the) 12.1743 Tj +-339 TJm +(total) 17.7135 Tj +-340 TJm +(amount) 29.8878 Tj +-339 TJm +(of) 8.29885 Tj +-340 TJm +(data) 16.5977 Tj +-340 TJm +(passed) 26.5603 Tj +-339 TJm +(into) 15.5018 Tj +-340 TJm +(and) 14.386 Tj +-339 TJm +(out) 12.7322 Tj +-340 TJm +(of) 8.29885 Tj +-339 TJm +(the) 12.1743 Tj +-340 TJm +(library) 26.5603 Tj +65 TJm +(,) 2.49065 Tj +-362 TJm +(respecti) 30.9837 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ely) 12.1743 Tj +65 TJm +(.) 2.49065 Tj +72 237.808 Td +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-376 TJm +(should) 26.5703 Tj +-377 TJm +(not) 12.7322 Tj +-376 TJm +(try) 11.0684 Tj +-376 TJm +(to) 7.7509 Tj +-377 TJm +(change) 28.2141 Tj +-376 TJm +(them.) 22.4159 Tj +-1378 TJm +(As) 11.0684 Tj +-377 TJm +(of) 8.29885 Tj +-376 TJm +(v) 4.9813 Tj +15 TJm +(ersion) 24.3486 Tj +-377 TJm +(1.0,) 14.9439 Tj +-408 TJm +(64-bit) 23.8007 Tj +-376 TJm +(counts) 26.0123 Tj +-376 TJm +(are) 12.1643 Tj +-377 TJm +(maintained,) 46.7644 Tj +-408 TJm +(e) 4.42339 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(en) 9.40469 Tj +-376 TJm +(on) 9.9626 Tj +-376 TJm +(32-bit) 23.8007 Tj +-377 TJm +(platforms,) 40.6773 Tj +72 225.853 Td +(using) 21.589 Tj +-371 TJm +(the) 12.1743 Tj +[1 0 0 1 113.148 225.853] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -113.148 -225.853] cm +[1 0 0 1 0 0] Tm +0 0 Td +113.148 225.853 Td +/F134_0 9.9626 Tf +(_hi32) 29.8878 Tj +[1 0 0 1 143.036 225.853] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -143.036 -225.853] cm +[1 0 0 1 0 0] Tm +0 0 Td +146.729 225.853 Td +/F130_0 9.9626 Tf +(\002elds) 21.589 Tj +-371 TJm +(to) 7.7509 Tj +-370 TJm +(store) 19.3673 Tj +-371 TJm +(the) 12.1743 Tj +-371 TJm +(upper) 22.6848 Tj +-370 TJm +(32) 9.9626 Tj +-371 TJm +(bits) 14.396 Tj +-370 TJm +(of) 8.29885 Tj +-371 TJm +(the) 12.1743 Tj +-371 TJm +(count.) 24.6275 Tj +-1344 TJm +(So,) 13.0112 Tj +-400 TJm +(for) 11.6164 Tj +-371 TJm +(e) 4.42339 Tj +15 TJm +(xample,) 31.8205 Tj +-401 TJm +(the) 12.1743 Tj +-371 TJm +(total) 17.7135 Tj +-370 TJm +(amount) 29.8878 Tj +-371 TJm +(of) 8.29885 Tj +-370 TJm +(data) 16.5977 Tj +-371 TJm +(in) 7.7509 Tj +-371 TJm +(is) 6.64505 Tj +[1 0 0 1 72 213.898] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -213.898] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 213.898 Td +/F134_0 9.9626 Tf +(\(total_in_hi32) 83.6858 Tj +-600 TJm +(<<) 11.9551 Tj +-600 TJm +(32\)) 17.9327 Tj +-600 TJm +(+) 5.97756 Tj +-600 TJm +(total_in_lo32) 77.7083 Tj +[1 0 0 1 293.171 213.898] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -293.171 -213.898] cm +[1 0 0 1 0 0] Tm +0 0 Td +293.171 213.898 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 212.588] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -202.625] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 191.98 Td +/F130_0 9.9626 Tf +(P) 5.53921 Tj +15 TJm +(arameter) 34.8492 Tj +[1 0 0 1 115.367 191.98] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -115.367 -191.98] cm +[1 0 0 1 0 0] Tm +0 0 Td +115.367 191.98 Td +/F134_0 9.9626 Tf +(blockSize100k) 77.7083 Tj +[1 0 0 1 193.076 191.98] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -193.076 -191.98] cm +[1 0 0 1 0 0] Tm +0 0 Td +196.204 191.98 Td +/F130_0 9.9626 Tf +(speci\002es) 34.3112 Tj +-314 TJm +(the) 12.1743 Tj +-314 TJm +(block) 22.1369 Tj +-314 TJm +(size) 15.4918 Tj +-314 TJm +(to) 7.7509 Tj +-314 TJm +(be) 9.40469 Tj +-314 TJm +(used) 18.2614 Tj +-314 TJm +(for) 11.6164 Tj +-314 TJm +(compression.) 52.8516 Tj +-1004 TJm +(It) 6.08715 Tj +-314 TJm +(should) 26.5703 Tj +-314 TJm +(be) 9.40469 Tj +-315 TJm +(a) 4.42339 Tj +-314 TJm +(v) 4.9813 Tj +25 TJm +(alue) 16.5977 Tj +-314 TJm +(between) 33.1954 Tj +-314 TJm +(1) 4.9813 Tj +72 180.025 Td +(and) 14.386 Tj +-289 TJm +(9) 4.9813 Tj +-289 TJm +(inclusi) 26.5703 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e,) 6.91404 Tj +-299 TJm +(and) 14.386 Tj +-289 TJm +(the) 12.1743 Tj +-289 TJm +(actual) 23.7907 Tj +-289 TJm +(block) 22.1369 Tj +-289 TJm +(size) 15.4918 Tj +-289 TJm +(used) 18.2614 Tj +-289 TJm +(is) 6.64505 Tj +-289 TJm +(100000) 29.8878 Tj +-289 TJm +(x) 4.9813 Tj +-289 TJm +(this) 14.396 Tj +-289 TJm +(\002gure.) 25.7334 Tj +-854 TJm +(9) 4.9813 Tj +-290 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(es) 8.29885 Tj +-289 TJm +(the) 12.1743 Tj +-289 TJm +(best) 16.0497 Tj +-289 TJm +(compression) 50.3609 Tj +-289 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-289 TJm +(tak) 12.1743 Tj +10 TJm +(es) 8.29885 Tj +-289 TJm +(most) 19.3773 Tj +72 168.07 Td +(memory) 33.2053 Tj +65 TJm +(.) 2.49065 Tj +[1 0 0 1 72 165.913] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -155.95] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 146.152 Td +/F130_0 9.9626 Tf +(P) 5.53921 Tj +15 TJm +(arameter) 34.8492 Tj +[1 0 0 1 115.095 146.152] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -115.095 -146.152] cm +[1 0 0 1 0 0] Tm +0 0 Td +115.095 146.152 Td +/F134_0 9.9626 Tf +(verbosity) 53.798 Tj +[1 0 0 1 168.893 146.152] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -168.893 -146.152] cm +[1 0 0 1 0 0] Tm +0 0 Td +171.75 146.152 Td +/F130_0 9.9626 Tf +(should) 26.5703 Tj +-287 TJm +(be) 9.40469 Tj +-286 TJm +(set) 11.0684 Tj +-287 TJm +(to) 7.7509 Tj +-287 TJm +(a) 4.42339 Tj +-287 TJm +(number) 30.4357 Tj +-286 TJm +(between) 33.1954 Tj +-287 TJm +(0) 4.9813 Tj +-287 TJm +(and) 14.386 Tj +-287 TJm +(4) 4.9813 Tj +-286 TJm +(inclusi) 26.5703 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e.) 6.91404 Tj +-841 TJm +(0) 4.9813 Tj +-286 TJm +(is) 6.64505 Tj +-287 TJm +(silent,) 24.0796 Tj +-296 TJm +(and) 14.386 Tj +-287 TJm +(greater) 27.6562 Tj +-287 TJm +(numbers) 34.3112 Tj +-286 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +72 134.197 Td +(increasingly) 48.6972 Tj +-342 TJm +(v) 4.9813 Tj +15 TJm +(erbose) 26.0024 Tj +-342 TJm +(monitoring/deb) 61.4394 Tj +20 TJm +(ugging) 27.6761 Tj +-342 TJm +(output.) 27.9551 Tj +-1173 TJm +(If) 6.63509 Tj +-343 TJm +(the) 12.1743 Tj +-342 TJm +(library) 26.5603 Tj +-342 TJm +(has) 13.2801 Tj +-342 TJm +(been) 18.8094 Tj +-342 TJm +(compiled) 37.0808 Tj +-342 TJm +(with) 17.7135 Tj +[1 0 0 1 446.429 134.197] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -446.429 -134.197] cm +[1 0 0 1 0 0] Tm +0 0 Td +446.429 134.197 Td +/F134_0 9.9626 Tf +(-DBZ_NO_STDIO) 77.7083 Tj +[1 0 0 1 524.138 134.197] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -524.138 -134.197] cm +[1 0 0 1 0 0] Tm +0 0 Td +524.138 134.197 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-342 TJm +(no) 9.9626 Tj +72 122.242 Td +(such) 18.2614 Tj +-250 TJm +(output) 25.4644 Tj +-250 TJm +(will) 15.5018 Tj +-250 TJm +(appear) 26.5503 Tj +-250 TJm +(for) 11.6164 Tj +-250 TJm +(an) 9.40469 Tj +15 TJm +(y) 4.9813 Tj +-250 TJm +(v) 4.9813 Tj +15 TJm +(erbosity) 32.0995 Tj +-250 TJm +(setting.) 29.0609 Tj +[1 0 0 1 72 120.085] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -110.122] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 100.324 Td +/F130_0 9.9626 Tf +(P) 5.53921 Tj +15 TJm +(arameter) 34.8492 Tj +[1 0 0 1 116.619 100.324] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -116.619 -100.324] cm +[1 0 0 1 0 0] Tm +0 0 Td +116.619 100.324 Td +/F134_0 9.9626 Tf +(workFactor) 59.7756 Tj +[1 0 0 1 176.394 100.324] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -176.394 -100.324] cm +[1 0 0 1 0 0] Tm +0 0 Td +180.775 100.324 Td +/F130_0 9.9626 Tf +(controls) 32.0995 Tj +-440 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-439 TJm +(the) 12.1743 Tj +-440 TJm +(compression) 50.3609 Tj +-440 TJm +(phase) 22.6848 Tj +-439 TJm +(beha) 18.8094 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(es) 8.29885 Tj +-440 TJm +(when) 21.579 Tj +-439 TJm +(presented) 38.1767 Tj +-440 TJm +(with) 17.7135 Tj +-440 TJm +(w) 7.193 Tj +10 TJm +(orst) 14.9439 Tj +-439 TJm +(case,) 19.6363 Tj +-487 TJm +(highly) 25.4644 Tj +72 88.3686 Td +(repetiti) 28.224 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e,) 6.91404 Tj +-433 TJm +(input) 20.4831 Tj +-396 TJm +(data.) 19.0883 Tj +-1496 TJm +(If) 6.63509 Tj +-396 TJm +(compression) 50.3609 Tj +-396 TJm +(runs) 17.1556 Tj +-397 TJm +(i) 2.7696 Tj +1 TJm +(nto) 12.7322 Tj +-397 TJm +(dif) 11.0684 Tj +25 TJm +(\002culties) 31.5516 Tj +-396 TJm +(caused) 27.1082 Tj +-396 TJm +(by) 9.9626 Tj +-396 TJm +(repetiti) 28.224 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-396 TJm +(data,) 19.0883 Tj +-432 TJm +(the) 12.1743 Tj +-397 TJm +(library) 26.5603 Tj +-396 TJm +(switches) 34.3112 Tj +-396 TJm +(from) 19.3673 Tj +[1 0 0 1 72 50.8518] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -50.8518] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 50.8518 Td +/F130_0 9.9626 Tf +(12) 9.9626 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 16 16 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 76.4979 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -342.569 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F130_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +[1 0 0 1 496.556 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -496.556 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +496.556 749.245 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 544.376 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.305 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -5.0363] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -540 -741.554] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F130_0 9.9626 Tf +(the) 12.1743 Tj +-255 TJm +(standard) 33.7533 Tj +-254 TJm +(sorting) 27.6761 Tj +-255 TJm +(algorithm) 38.7446 Tj +-254 TJm +(to) 7.7509 Tj +-255 TJm +(a) 4.42339 Tj +-255 TJm +(f) 3.31755 Tj +10 TJm +(allback) 28.772 Tj +-254 TJm +(algorithm.) 41.2352 Tj +-648 TJm +(The) 15.4918 Tj +-255 TJm +(f) 3.31755 Tj +10 TJm +(allback) 28.772 Tj +-254 TJm +(is) 6.64505 Tj +-255 TJm +(slo) 11.6264 Tj +25 TJm +(wer) 14.9339 Tj +-255 TJm +(than) 17.1556 Tj +-254 TJm +(the) 12.1743 Tj +-255 TJm +(standard) 33.7533 Tj +-254 TJm +(algorithm) 38.7446 Tj +-255 TJm +(by) 9.9626 Tj +-255 TJm +(perhaps) 30.9837 Tj +72 698.082 Td +(a) 4.42339 Tj +-250 TJm +(f) 3.31755 Tj +10 TJm +(actor) 19.9152 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(three,) 22.4059 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-250 TJm +(al) 7.193 Tj +10 TJm +(w) 7.193 Tj +10 TJm +(ays) 13.2801 Tj +-250 TJm +(beha) 18.8094 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(es) 8.29885 Tj +-250 TJm +(reasonably) 43.158 Tj +65 TJm +(,) 2.49065 Tj +-250 TJm +(no) 9.9626 Tj +-250 TJm +(matter) 25.4544 Tj +-250 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-250 TJm +(bad) 14.386 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(input.) 22.9738 Tj +[1 0 0 1 72 695.925] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9617] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -685.964] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 676.165 Td +/F130_0 9.9626 Tf +(Lo) 11.0684 Tj +25 TJm +(wer) 14.9339 Tj +-240 TJm +(v) 4.9813 Tj +25 TJm +(alues) 20.4731 Tj +-239 TJm +(of) 8.29885 Tj +[1 0 0 1 138.421 676.165] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -138.421 -676.165] cm +[1 0 0 1 0 0] Tm +0 0 Td +138.421 676.165 Td +/F134_0 9.9626 Tf +(workFactor) 59.7756 Tj +[1 0 0 1 198.197 676.165] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -198.197 -676.165] cm +[1 0 0 1 0 0] Tm +0 0 Td +200.585 676.165 Td +/F130_0 9.9626 Tf +(reduce) 26.5503 Tj +-240 TJm +(the) 12.1743 Tj +-239 TJm +(amount) 29.8878 Tj +-240 TJm +(of) 8.29885 Tj +-240 TJm +(ef) 7.74094 Tj +25 TJm +(fort) 14.386 Tj +-239 TJm +(the) 12.1743 Tj +-240 TJm +(standard) 33.7533 Tj +-240 TJm +(algorithm) 38.7446 Tj +-239 TJm +(will) 15.5018 Tj +-240 TJm +(e) 4.42339 Tj +15 TJm +(xpend) 24.3486 Tj +-240 TJm +(before) 25.4445 Tj +-240 TJm +(resorting) 35.417 Tj +-239 TJm +(to) 7.7509 Tj +-240 TJm +(the) 12.1743 Tj +72 664.21 Td +(f) 3.31755 Tj +10 TJm +(allback.) 31.2626 Tj +-618 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-248 TJm +(should) 26.5703 Tj +-247 TJm +(set) 11.0684 Tj +-248 TJm +(this) 14.396 Tj +-247 TJm +(parameter) 39.8305 Tj +-248 TJm +(carefully;) 38.1767 Tj +-248 TJm +(too) 12.7322 Tj +-248 TJm +(lo) 7.7509 Tj +25 TJm +(w) 7.193 Tj +65 TJm +(,) 2.49065 Tj +-248 TJm +(and) 14.386 Tj +-247 TJm +(man) 17.1556 Tj +15 TJm +(y) 4.9813 Tj +-248 TJm +(inputs) 24.3586 Tj +-248 TJm +(will) 15.5018 Tj +-247 TJm +(be) 9.40469 Tj +-248 TJm +(handled) 31.5416 Tj +-247 TJm +(by) 9.9626 Tj +-248 TJm +(the) 12.1743 Tj +-247 TJm +(f) 3.31755 Tj +10 TJm +(allback) 28.772 Tj +-248 TJm +(algorithm) 38.7446 Tj +72 652.255 Td +(and) 14.386 Tj +-308 TJm +(so) 8.85675 Tj +-308 TJm +(compress) 37.6287 Tj +-308 TJm +(rather) 23.2328 Tj +-309 TJm +(slo) 11.6264 Tj +25 TJm +(wly) 14.9439 Tj +65 TJm +(,) 2.49065 Tj +-322 TJm +(too) 12.7322 Tj +-309 TJm +(high,) 20.2042 Tj +-322 TJm +(and) 14.386 Tj +-308 TJm +(your) 18.2614 Tj +-309 TJm +(a) 4.42339 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(erage-to-w) 43.148 Tj +10 TJm +(orst) 14.9439 Tj +-308 TJm +(case) 17.1456 Tj +-308 TJm +(compression) 50.3609 Tj +-308 TJm +(times) 21.589 Tj +-308 TJm +(can) 13.8281 Tj +-308 TJm +(become) 30.9837 Tj +-309 TJm +(v) 4.9813 Tj +15 TJm +(ery) 12.7222 Tj +-308 TJm +(lar) 10.5105 Tj +18 TJm +(ge.) 11.8953 Tj +72 640.3 Td +(The) 15.4918 Tj +-250 TJm +(def) 12.7222 Tj +10 TJm +(ault) 14.9439 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alue) 16.5977 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(30) 9.9626 Tj +-250 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(es) 8.29885 Tj +-250 TJm +(reasonable) 42.6001 Tj +-250 TJm +(beha) 18.8094 Tj +20 TJm +(viour) 21.031 Tj +-250 TJm +(o) 4.9813 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.74094 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(wide) 19.3673 Tj +-250 TJm +(range) 22.1269 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(circumstances.) 58.9288 Tj +[1 0 0 1 72 638.143] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9617] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -628.181] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 618.383 Td +/F130_0 9.9626 Tf +(Allo) 17.7135 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(able) 16.5977 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues) 20.4731 Tj +-250 TJm +(range) 22.1269 Tj +-250 TJm +(from) 19.3673 Tj +-250 TJm +(0) 4.9813 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(250) 14.9439 Tj +-250 TJm +(inclusi) 26.5703 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e.) 6.91404 Tj +-620 TJm +(0) 4.9813 Tj +-250 TJm +(is) 6.64505 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(special) 27.6661 Tj +-250 TJm +(case,) 19.6363 Tj +-250 TJm +(equi) 17.1556 Tj +25 TJm +(v) 4.9813 Tj +25 TJm +(alent) 19.3673 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(using) 21.589 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(def) 12.7222 Tj +10 TJm +(ault) 14.9439 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alue) 16.5977 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(30.) 12.4533 Tj +[1 0 0 1 72 616.226] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9617] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -606.265] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 596.466 Td +/F130_0 9.9626 Tf +(Note) 19.3673 Tj +-250 TJm +(that) 14.9439 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(output) 25.4644 Tj +-250 TJm +(generated) 38.7246 Tj +-250 TJm +(is) 6.64505 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(same) 20.4731 Tj +-250 TJm +(re) 7.74094 Tj +15 TJm +(g) 4.9813 Tj +5 TJm +(ardless) 27.6661 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(whether) 32.0895 Tj +-250 TJm +(or) 8.29885 Tj +-250 TJm +(not) 12.7322 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(f) 3.31755 Tj +10 TJm +(allback) 28.772 Tj +-250 TJm +(algorithm) 38.7446 Tj +-250 TJm +(is) 6.64505 Tj +-250 TJm +(used.) 20.7521 Tj +[1 0 0 1 72 594.309] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9617] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -584.348] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 574.549 Td +/F130_0 9.9626 Tf +(Be) 11.0684 Tj +-303 TJm +(a) 4.42339 Tj +15 TJm +(w) 7.193 Tj +10 TJm +(are) 12.1643 Tj +-303 TJm +(also) 16.0497 Tj +-303 TJm +(that) 14.9439 Tj +-303 TJm +(this) 14.396 Tj +-304 TJm +(parameter) 39.8305 Tj +-303 TJm +(may) 17.1556 Tj +-303 TJm +(disappear) 38.1767 Tj +-303 TJm +(entirely) 30.4357 Tj +-303 TJm +(in) 7.7509 Tj +-303 TJm +(future) 23.7907 Tj +-303 TJm +(v) 4.9813 Tj +15 TJm +(ersions) 28.224 Tj +-303 TJm +(of) 8.29885 Tj +-303 TJm +(the) 12.1743 Tj +-304 TJm +(library) 26.5603 Tj +65 TJm +(.) 2.49065 Tj +-938 TJm +(In) 8.29885 Tj +-303 TJm +(principle) 35.417 Tj +-303 TJm +(it) 5.53921 Tj +-304 TJm +(should) 26.5703 Tj +-303 TJm +(be) 9.40469 Tj +72 562.594 Td +(possible) 32.6574 Tj +-270 TJm +(to) 7.7509 Tj +-270 TJm +(de) 9.40469 Tj +25 TJm +(vise) 16.0497 Tj +-270 TJm +(a) 4.42339 Tj +-270 TJm +(good) 19.9252 Tj +-270 TJm +(w) 7.193 Tj +10 TJm +(ay) 9.40469 Tj +-270 TJm +(to) 7.7509 Tj +-271 TJm +(automat) 32.0995 Tj +1 TJm +(ically) 22.1369 Tj +-271 TJm +(choose) 27.6661 Tj +-270 TJm +(which) 24.3486 Tj +-270 TJm +(algorithm) 38.7446 Tj +-270 TJm +(to) 7.7509 Tj +-270 TJm +(use.) 15.7708 Tj +-740 TJm +(Such) 19.9252 Tj +-270 TJm +(a) 4.42339 Tj +-271 TJm +(m) 7.7509 Tj +1 TJm +(echanism) 37.6287 Tj +-271 TJm +(w) 7.193 Tj +10 TJm +(ould) 17.7135 Tj +-270 TJm +(render) 25.4445 Tj +-270 TJm +(the) 12.1743 Tj +72 550.639 Td +(parameter) 39.8305 Tj +-250 TJm +(obsolete.) 35.696 Tj +[1 0 0 1 72 548.482] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9616] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -538.521] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 528.722 Td +/F130_0 9.9626 Tf +(Possible) 33.2153 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues:) 23.2427 Tj +[1 0 0 1 72 528.623] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -144.458] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 143.462 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 139.875] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -519.258] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 519.258 Td +/F134_0 9.9626 Tf +(BZ_CONFIG_ERROR) 89.6634 Tj +98.4879 507.303 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(library) 41.8429 Tj +-426 TJm +(has) 17.9327 Tj +-426 TJm +(been) 23.9102 Tj +-426 TJm +(mis-compiled) 71.7307 Tj +90 495.348 Td +(BZ_PARAM_ERROR) 83.6858 Tj +98.4879 483.392 Td +(if) 11.9551 Tj +-426 TJm +(strm) 23.9102 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +98.4879 471.437 Td +(or) 11.9551 Tj +-426 TJm +(blockSize) 53.798 Tj +-426 TJm +(<) 5.97756 Tj +-426 TJm +(1) 5.97756 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(blockSize) 53.798 Tj +-426 TJm +(>) 5.97756 Tj +-426 TJm +(9) 5.97756 Tj +98.4879 459.482 Td +(or) 11.9551 Tj +-426 TJm +(verbosity) 53.798 Tj +-426 TJm +(<) 5.97756 Tj +-426 TJm +(0) 5.97756 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(verbosity) 53.798 Tj +-426 TJm +(>) 5.97756 Tj +-426 TJm +(4) 5.97756 Tj +98.4879 447.527 Td +(or) 11.9551 Tj +-426 TJm +(workFactor) 59.7756 Tj +-426 TJm +(<) 5.97756 Tj +-426 TJm +(0) 5.97756 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(workFactor) 59.7756 Tj +-426 TJm +(>) 5.97756 Tj +-426 TJm +(250) 17.9327 Tj +90 435.572 Td +(BZ_MEM_ERROR) 71.7307 Tj +98.4879 423.617 Td +(if) 11.9551 Tj +-426 TJm +(not) 17.9327 Tj +-426 TJm +(enough) 35.8654 Tj +-426 TJm +(memory) 35.8654 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(available) 53.798 Tj +90 411.661 Td +(BZ_OK) 29.8878 Tj +98.4879 399.706 Td +(otherwise) 53.798 Tj +[1 0 0 1 72 384.165] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5482] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -374.203] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 362.248 Td +/F130_0 9.9626 Tf +(Allo) 17.7135 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(able) 16.5977 Tj +-250 TJm +(ne) 9.40469 Tj +15 TJm +(xt) 7.7509 Tj +-250 TJm +(actions:) 30.9936 Tj +[1 0 0 1 72 362.148] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -48.8169] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 47.8207 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 44.2341] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -352.783] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 352.783 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +98.4879 340.828 Td +(if) 11.9551 Tj +-426 TJm +(BZ_OK) 29.8878 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(returned) 47.8205 Tj +98.4879 328.873 Td +(no) 11.9551 Tj +-426 TJm +(specific) 47.8205 Tj +-426 TJm +(action) 35.8654 Tj +-426 TJm +(needed) 35.8654 Tj +-426 TJm +(in) 11.9551 Tj +-426 TJm +(case) 23.9102 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(error) 29.8878 Tj +[1 0 0 1 72 313.331] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9616] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -303.37] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 282.711 Td +/F122_0 17.2154 Tf +(3.3.2.) 43.0729 Tj +[1 0 0 1 119.858 282.711] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -119.858 -282.711] cm +[1 0 0 1 0 0] Tm +0 0 Td +119.858 282.711 Td +/F392_0 17.2154 Tf +(BZ2_bzCompress) 144.609 Tj +[1 0 0 1 264.468 282.711] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -192.468 -2.3327] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -24.9066] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 23.9103 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 20.3237] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3685] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -271.014] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 271.014 Td +/F134_0 9.9626 Tf +(int) 17.9327 Tj +-426 TJm +(BZ2_bzCompress) 83.6858 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(bz_stream) 53.798 Tj +268.371 269.27 Td +(*) 5.97756 Tj +274.348 271.014 Td +(strm,) 29.8878 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(action) 35.8654 Tj +-426 TJm +(\);) 11.9551 Tj +[1 0 0 1 72 255.472] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5482] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -245.51] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 233.555 Td +/F130_0 9.9626 Tf +(Pro) 13.8381 Tj +15 TJm +(vides) 21.031 Tj +-222 TJm +(more) 20.4731 Tj +-221 TJm +(input) 20.4831 Tj +-222 TJm +(and/or) 25.4544 Tj +-222 TJm +(output) 25.4644 Tj +-222 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +-221 TJm +(space) 22.1269 Tj +-222 TJm +(for) 11.6164 Tj +-222 TJm +(the) 12.1743 Tj +-221 TJm +(library) 26.5603 Tj +65 TJm +(.) 2.49065 Tj +-601 TJm +(The) 15.4918 Tj +-222 TJm +(caller) 22.1269 Tj +-222 TJm +(maintains) 38.7446 Tj +-222 TJm +(input) 20.4831 Tj +-221 TJm +(and) 14.386 Tj +-222 TJm +(output) 25.4644 Tj +-222 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fers,) 17.4246 Tj +-227 TJm +(and) 14.386 Tj +-222 TJm +(calls) 18.2614 Tj +[1 0 0 1 72 221.6] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -221.6] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 221.6 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 155.686 221.6] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -155.686 -221.6] cm +[1 0 0 1 0 0] Tm +0 0 Td +158.177 221.6 Td +/F130_0 9.9626 Tf +(to) 7.7509 Tj +-250 TJm +(transfer) 30.4258 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(between) 33.1954 Tj +-250 TJm +(them.) 22.4159 Tj +[1 0 0 1 72 220.066] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9617] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -210.104] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 199.683 Td +/F130_0 9.9626 Tf +(Before) 27.1082 Tj +-212 TJm +(each) 18.2515 Tj +-213 TJm +(call) 14.386 Tj +-212 TJm +(to) 7.7509 Tj +[1 0 0 1 147.961 199.683] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -147.961 -199.683] cm +[1 0 0 1 0 0] Tm +0 0 Td +147.961 199.683 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 231.647 199.683] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -231.647 -199.683] cm +[1 0 0 1 0 0] Tm +0 0 Td +231.647 199.683 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 236.329 199.683] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -236.329 -199.683] cm +[1 0 0 1 0 0] Tm +0 0 Td +236.329 199.683 Td +/F134_0 9.9626 Tf +(next_in) 41.8429 Tj +[1 0 0 1 278.172 199.683] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.172 -199.683] cm +[1 0 0 1 0 0] Tm +0 0 Td +280.288 199.683 Td +/F130_0 9.9626 Tf +(should) 26.5703 Tj +-212 TJm +(point) 20.4831 Tj +-213 TJm +(at) 7.193 Tj +-212 TJm +(the) 12.1743 Tj +-213 TJm +(data) 16.5977 Tj +-212 TJm +(to) 7.7509 Tj +-212 TJm +(be) 9.40469 Tj +-213 TJm +(compressed,) 49.5241 Tj +-220 TJm +(and) 14.386 Tj +[1 0 0 1 463.493 199.683] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -463.493 -199.683] cm +[1 0 0 1 0 0] Tm +0 0 Td +463.493 199.683 Td +/F134_0 9.9626 Tf +(avail_in) 47.8205 Tj +[1 0 0 1 511.314 199.683] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -511.314 -199.683] cm +[1 0 0 1 0 0] Tm +0 0 Td +513.43 199.683 Td +/F130_0 9.9626 Tf +(should) 26.5703 Tj +72 187.728 Td +(indicate) 31.5416 Tj +-246 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-247 TJm +(m) 7.7509 Tj +1 TJm +(an) 9.40469 Tj +14 TJm +(y) 4.9813 Tj +-246 TJm +(bytes) 21.031 Tj +-246 TJm +(the) 12.1743 Tj +-246 TJm +(library) 26.5603 Tj +-247 TJm +(may) 17.1556 Tj +-246 TJm +(read.) 19.6363 Tj +[1 0 0 1 259.242 187.728] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -259.242 -187.728] cm +[1 0 0 1 0 0] Tm +0 0 Td +259.242 187.728 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 342.929 187.728] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -342.929 -187.728] cm +[1 0 0 1 0 0] Tm +0 0 Td +345.382 187.728 Td +/F130_0 9.9626 Tf +(updates) 30.4357 Tj +[1 0 0 1 378.271 187.728] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -378.271 -187.728] cm +[1 0 0 1 0 0] Tm +0 0 Td +378.271 187.728 Td +/F134_0 9.9626 Tf +(next_in) 41.8429 Tj +[1 0 0 1 420.114 187.728] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -420.114 -187.728] cm +[1 0 0 1 0 0] Tm +0 0 Td +420.114 187.728 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 425.066 187.728] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -425.066 -187.728] cm +[1 0 0 1 0 0] Tm +0 0 Td +425.066 187.728 Td +/F134_0 9.9626 Tf +(avail_in) 47.8205 Tj +[1 0 0 1 472.886 187.728] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.886 -187.728] cm +[1 0 0 1 0 0] Tm +0 0 Td +475.34 187.728 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 492.179 187.728] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -492.179 -187.728] cm +[1 0 0 1 0 0] Tm +0 0 Td +492.179 187.728 Td +/F134_0 9.9626 Tf +(total_in) 47.8205 Tj +[1 0 0 1 540 187.728] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -540 -187.728] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 175.773 Td +/F130_0 9.9626 Tf +(to) 7.7509 Tj +-250 TJm +(re\003ect) 24.8965 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(number) 30.4357 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(bytes) 21.031 Tj +-250 TJm +(it) 5.53921 Tj +-250 TJm +(has) 13.2801 Tj +-250 TJm +(read.) 19.6363 Tj +[1 0 0 1 72 173.616] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9616] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -163.654] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 153.856 Td +/F130_0 9.9626 Tf +(Similarly) 37.0908 Tj +65 TJm +(,) 2.49065 Tj +[1 0 0 1 113.611 153.856] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -113.611 -153.856] cm +[1 0 0 1 0 0] Tm +0 0 Td +113.611 153.856 Td +/F134_0 9.9626 Tf +(next_out) 47.8205 Tj +[1 0 0 1 161.432 153.856] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -161.432 -153.856] cm +[1 0 0 1 0 0] Tm +0 0 Td +164.072 153.856 Td +/F130_0 9.9626 Tf +(should) 26.5703 Tj +-265 TJm +(point) 20.4831 Tj +-265 TJm +(to) 7.7509 Tj +-265 TJm +(a) 4.42339 Tj +-265 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +-265 TJm +(in) 7.7509 Tj +-265 TJm +(which) 24.3486 Tj +-265 TJm +(the) 12.1743 Tj +-265 TJm +(compressed) 47.0334 Tj +-265 TJm +(data) 16.5977 Tj +-265 TJm +(is) 6.64505 Tj +-265 TJm +(to) 7.7509 Tj +-265 TJm +(be) 9.40469 Tj +-265 TJm +(placed,) 28.493 Tj +-269 TJm +(with) 17.7135 Tj +[1 0 0 1 464.742 153.856] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -464.742 -153.856] cm +[1 0 0 1 0 0] Tm +0 0 Td +464.742 153.856 Td +/F134_0 9.9626 Tf +(avail_out) 53.798 Tj +[1 0 0 1 518.54 153.856] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -518.54 -153.856] cm +[1 0 0 1 0 0] Tm +0 0 Td +521.181 153.856 Td +/F130_0 9.9626 Tf +(indi-) 18.8194 Tj +72 141.901 Td +(cating) 24.3486 Tj +-209 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-209 TJm +(much) 22.1369 Tj +-209 TJm +(output) 25.4644 Tj +-209 TJm +(space) 22.1269 Tj +-209 TJm +(is) 6.64505 Tj +-210 TJm +(a) 4.42339 Tj +20 TJm +(v) 4.9813 Tj +25 TJm +(ailable.) 29.0509 Tj +[1 0 0 1 243.087 141.901] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -243.087 -141.901] cm +[1 0 0 1 0 0] Tm +0 0 Td +243.087 141.901 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 326.773 141.901] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -326.773 -141.901] cm +[1 0 0 1 0 0] Tm +0 0 Td +328.856 141.901 Td +/F130_0 9.9626 Tf +(updates) 30.4357 Tj +[1 0 0 1 361.375 141.901] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -361.375 -141.901] cm +[1 0 0 1 0 0] Tm +0 0 Td +361.375 141.901 Td +/F134_0 9.9626 Tf +(next_out) 47.8205 Tj +[1 0 0 1 409.196 141.901] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -409.196 -141.901] cm +[1 0 0 1 0 0] Tm +0 0 Td +409.196 141.901 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 413.851 141.901] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -413.851 -141.901] cm +[1 0 0 1 0 0] Tm +0 0 Td +413.851 141.901 Td +/F134_0 9.9626 Tf +(avail_out) 53.798 Tj +[1 0 0 1 467.649 141.901] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -467.649 -141.901] cm +[1 0 0 1 0 0] Tm +0 0 Td +469.732 141.901 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 486.202 141.901] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -486.202 -141.901] cm +[1 0 0 1 0 0] Tm +0 0 Td +486.202 141.901 Td +/F134_0 9.9626 Tf +(total_out) 53.798 Tj +[1 0 0 1 540 141.901] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -540 -141.901] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 129.946 Td +/F130_0 9.9626 Tf +(to) 7.7509 Tj +-250 TJm +(re\003ect) 24.8965 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(number) 30.4357 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(bytes) 21.031 Tj +-250 TJm +(output.) 27.9551 Tj +[1 0 0 1 72 127.789] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9617] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -117.827] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 108.029 Td +/F130_0 9.9626 Tf +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-272 TJm +(may) 17.1556 Tj +-272 TJm +(pro) 13.2801 Tj +15 TJm +(vide) 17.1556 Tj +-272 TJm +(and) 14.386 Tj +-272 TJm +(remo) 20.4731 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-272 TJm +(as) 8.29885 Tj +-272 TJm +(little) 18.2714 Tj +-272 TJm +(or) 8.29885 Tj +-272 TJm +(as) 8.29885 Tj +-272 TJm +(much) 22.1369 Tj +-271 TJm +(data) 16.5977 Tj +-272 TJm +(as) 8.29885 Tj +-272 TJm +(you) 14.9439 Tj +-272 TJm +(lik) 10.5205 Tj +10 TJm +(e) 4.42339 Tj +-272 TJm +(on) 9.9626 Tj +-272 TJm +(each) 18.2515 Tj +-272 TJm +(call) 14.386 Tj +-272 TJm +(of) 8.29885 Tj +[1 0 0 1 399.123 108.029] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -399.123 -108.029] cm +[1 0 0 1 0 0] Tm +0 0 Td +399.123 108.029 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 482.809 108.029] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -482.809 -108.029] cm +[1 0 0 1 0 0] Tm +0 0 Td +482.809 108.029 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-752 TJm +(In) 8.29885 Tj +-272 TJm +(the) 12.1743 Tj +-272 TJm +(limit,) 21.32 Tj +72 96.0736 Td +(it) 5.53921 Tj +-266 TJm +(is) 6.64505 Tj +-265 TJm +(acceptable) 42.0422 Tj +-266 TJm +(to) 7.7509 Tj +-266 TJm +(supply) 26.5703 Tj +-266 TJm +(and) 14.386 Tj +-265 TJm +(remo) 20.4731 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-266 TJm +(data) 16.5977 Tj +-266 TJm +(one) 14.386 Tj +-265 TJm +(byte) 17.1556 Tj +-266 TJm +(at) 7.193 Tj +-266 TJm +(a) 4.42339 Tj +-266 TJm +(time,) 20.2042 Tj +-269 TJm +(although) 34.8691 Tj +-266 TJm +(this) 14.396 Tj +-266 TJm +(w) 7.193 Tj +10 TJm +(ould) 17.7135 Tj +-265 TJm +(be) 9.40469 Tj +-266 TJm +(terribly) 29.3299 Tj +-266 TJm +(inef) 15.4918 Tj +25 TJm +(\002cient.) 27.3972 Tj +-714 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-266 TJm +(should) 26.5703 Tj +72 84.1184 Td +(al) 7.193 Tj +10 TJm +(w) 7.193 Tj +10 TJm +(ays) 13.2801 Tj +-250 TJm +(ensure) 26.0024 Tj +-250 TJm +(that) 14.9439 Tj +-250 TJm +(at) 7.193 Tj +-250 TJm +(least) 18.2614 Tj +-250 TJm +(one) 14.386 Tj +-250 TJm +(byte) 17.1556 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(output) 25.4644 Tj +-250 TJm +(space) 22.1269 Tj +-250 TJm +(is) 6.64505 Tj +-250 TJm +(a) 4.42339 Tj +20 TJm +(v) 4.9813 Tj +25 TJm +(ailable) 26.5603 Tj +-250 TJm +(at) 7.193 Tj +-250 TJm +(each) 18.2515 Tj +-250 TJm +(call.) 16.8766 Tj +[1 0 0 1 72 81.9616] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9616] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -21.1482] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7545] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -50.9514] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 50.9514 Td +/F130_0 9.9626 Tf +(13) 9.9626 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 17 17 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 76.4979 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -342.569 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F130_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +[1 0 0 1 496.556 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -496.556 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +496.556 749.245 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 544.376 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.305 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -5.0363] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -540 -741.554] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F130_0 9.9626 Tf +(A) 7.193 Tj +-250 TJm +(second) 27.6661 Tj +-250 TJm +(purpose) 31.5416 Tj +-250 TJm +(of) 8.29885 Tj +[1 0 0 1 156.662 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -156.662 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +156.662 710.037 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 240.348 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -240.348 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +242.839 710.037 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(request) 28.772 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(change) 28.2141 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(mode) 22.1369 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(stream.) 29.0509 Tj +[1 0 0 1 72 707.88] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -697.918] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 688.12 Td +/F130_0 9.9626 Tf +(Conceptually) 53.1305 Tj +65 TJm +(,) 2.49065 Tj +-217 TJm +(a) 4.42339 Tj +-210 TJm +(compressed) 47.0334 Tj +-209 TJm +(stream) 26.5603 Tj +-209 TJm +(can) 13.8281 Tj +-209 TJm +(be) 9.40469 Tj +-210 TJm +(in) 7.7509 Tj +-209 TJm +(one) 14.386 Tj +-209 TJm +(of) 8.29885 Tj +-209 TJm +(four) 16.5977 Tj +-210 TJm +(states:) 24.9065 Tj +-289 TJm +(IDLE,) 25.1755 Tj +-209 TJm +(R) 6.64505 Tj +40 TJm +(UNNING,) 41.7732 Tj +-210 TJm +(FLUSHING) 49.2551 Tj +-209 TJm +(and) 14.386 Tj +-209 TJm +(FINISHING.) 52.2937 Tj +-419 TJm +(Be-) 14.386 Tj +72 676.164 Td +(fore) 16.0398 Tj +-264 TJm +(initialisation) 49.823 Tj +-263 TJm +(\() 3.31755 Tj +[1 0 0 1 146.434 676.164] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -146.434 -676.164] cm +[1 0 0 1 0 0] Tm +0 0 Td +146.434 676.164 Td +/F134_0 9.9626 Tf +(BZ2_bzCompressInit) 107.596 Tj +[1 0 0 1 254.031 676.164] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -254.031 -676.164] cm +[1 0 0 1 0 0] Tm +0 0 Td +254.031 676.164 Td +/F130_0 9.9626 Tf +(\)) 3.31755 Tj +-264 TJm +(and) 14.386 Tj +-263 TJm +(after) 18.2515 Tj +-264 TJm +(termination) 45.9375 Tj +-264 TJm +(\() 3.31755 Tj +[1 0 0 1 349.75 676.164] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -349.75 -676.164] cm +[1 0 0 1 0 0] Tm +0 0 Td +349.75 676.164 Td +/F134_0 9.9626 Tf +(BZ2_bzCompressEnd) 101.619 Tj +[1 0 0 1 451.369 676.164] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -451.369 -676.164] cm +[1 0 0 1 0 0] Tm +0 0 Td +451.369 676.164 Td +/F130_0 9.9626 Tf +(\),) 5.8082 Tj +-267 TJm +(a) 4.42339 Tj +-264 TJm +(stream) 26.5603 Tj +-264 TJm +(is) 6.64505 Tj +-263 TJm +(re) 7.74094 Tj +15 TJm +(g) 4.9813 Tj +5 TJm +(arded) 22.1269 Tj +72 664.209 Td +(as) 8.29885 Tj +-250 TJm +(IDLE.) 25.1755 Tj +[1 0 0 1 72 664.11] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -654.147] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 642.291 Td +/F130_0 9.9626 Tf +(Upon) 22.1369 Tj +-389 TJm +(initialisation) 49.823 Tj +-390 TJm +(\() 3.31755 Tj +[1 0 0 1 155.036 642.291] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -155.036 -642.291] cm +[1 0 0 1 0 0] Tm +0 0 Td +155.036 642.291 Td +/F134_0 9.9626 Tf +(BZ2_bzCompressInit) 107.596 Tj +[1 0 0 1 262.632 642.291] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -262.632 -642.291] cm +[1 0 0 1 0 0] Tm +0 0 Td +262.632 642.291 Td +/F130_0 9.9626 Tf +(\),) 5.8082 Tj +-424 TJm +(the) 12.1743 Tj +-390 TJm +(stream) 26.5603 Tj +-389 TJm +(is) 6.64505 Tj +-389 TJm +(placed) 26.0024 Tj +-390 TJm +(in) 7.7509 Tj +-389 TJm +(the) 12.1743 Tj +-390 TJm +(R) 6.64505 Tj +40 TJm +(UNNING) 39.2825 Tj +-389 TJm +(state.) 20.7521 Tj +-1457 TJm +(Subsequent) 45.9375 Tj +-389 TJm +(calls) 18.2614 Tj +72 630.336 Td +(to) 7.7509 Tj +[1 0 0 1 83.818 630.336] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -83.818 -630.336] cm +[1 0 0 1 0 0] Tm +0 0 Td +83.818 630.336 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 167.504 630.336] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -167.504 -630.336] cm +[1 0 0 1 0 0] Tm +0 0 Td +171.571 630.336 Td +/F130_0 9.9626 Tf +(should) 26.5703 Tj +-408 TJm +(pass) 17.1556 Tj +[1 0 0 1 223.431 630.336] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -223.431 -630.336] cm +[1 0 0 1 0 0] Tm +0 0 Td +223.431 630.336 Td +/F134_0 9.9626 Tf +(BZ_RUN) 35.8654 Tj +[1 0 0 1 259.297 630.336] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -259.297 -630.336] cm +[1 0 0 1 0 0] Tm +0 0 Td +263.363 630.336 Td +/F130_0 9.9626 Tf +(as) 8.29885 Tj +-408 TJm +(the) 12.1743 Tj +-408 TJm +(requested) 38.1767 Tj +-409 TJm +(action;) 27.1182 Tj +-487 TJm +(other) 20.4731 Tj +-408 TJm +(actions) 28.224 Tj +-408 TJm +(are) 12.1643 Tj +-409 TJm +(ille) 12.7322 Tj +15 TJm +(g) 4.9813 Tj +5 TJm +(al) 7.193 Tj +-408 TJm +(and) 14.386 Tj +-408 TJm +(will) 15.5018 Tj +-408 TJm +(result) 22.1369 Tj +-409 TJm +(in) 7.7509 Tj +[1 0 0 1 72 618.381] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -618.381] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 618.381 Td +/F134_0 9.9626 Tf +(BZ_SEQUENCE_ERROR) 101.619 Tj +[1 0 0 1 173.619 618.381] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -173.619 -618.381] cm +[1 0 0 1 0 0] Tm +0 0 Td +173.619 618.381 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 617.071] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -607.108] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 596.463 Td +/F130_0 9.9626 Tf +(At) 9.9626 Tj +-279 TJm +(some) 21.031 Tj +-279 TJm +(point,) 22.9738 Tj +-286 TJm +(the) 12.1743 Tj +-279 TJm +(calling) 27.1182 Tj +-279 TJm +(program) 33.7533 Tj +-279 TJm +(will) 15.5018 Tj +-279 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-278 TJm +(pro) 13.2801 Tj +14 TJm +(vi) 7.7509 Tj +1 TJm +(ded) 14.386 Tj +-279 TJm +(all) 9.9626 Tj +-279 TJm +(the) 12.1743 Tj +-279 TJm +(input) 20.4831 Tj +-279 TJm +(data) 16.5977 Tj +-279 TJm +(it) 5.53921 Tj +-279 TJm +(w) 7.193 Tj +10 TJm +(ants) 16.0497 Tj +-279 TJm +(to.) 10.2416 Tj +-793 TJm +(It) 6.08715 Tj +-279 TJm +(will) 15.5018 Tj +-279 TJm +(then) 17.1556 Tj +-279 TJm +(w) 7.193 Tj +10 TJm +(ant) 12.1743 Tj +-279 TJm +(to) 7.7509 Tj +-279 TJm +(\002nish) 22.1469 Tj +-279 TJm +(up) 9.9626 Tj +-279 TJm +(--) 6.63509 Tj +72 584.508 Td +(in) 7.7509 Tj +-287 TJm +(ef) 7.74094 Tj +25 TJm +(fect,) 17.4246 Tj +-297 TJm +(asking) 26.0123 Tj +-288 TJm +(the) 12.1743 Tj +-287 TJm +(library) 26.5603 Tj +-287 TJm +(to) 7.7509 Tj +-288 TJm +(process) 29.8778 Tj +-287 TJm +(an) 9.40469 Tj +15 TJm +(y) 4.9813 Tj +-288 TJm +(data) 16.5977 Tj +-287 TJm +(it) 5.53921 Tj +-287 TJm +(might) 23.2527 Tj +-288 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-287 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fered) 20.4632 Tj +-288 TJm +(internally) 38.1866 Tj +65 TJm +(.) 2.49065 Tj +-844 TJm +(In) 8.29885 Tj +-288 TJm +(this) 14.396 Tj +-287 TJm +(state,) 20.7521 Tj +[1 0 0 1 456.314 584.508] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -456.314 -584.508] cm +[1 0 0 1 0 0] Tm +0 0 Td +456.314 584.508 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 540 584.508] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -540 -584.508] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 572.553 Td +/F130_0 9.9626 Tf +(will) 15.5018 Tj +-258 TJm +(no) 9.9626 Tj +-257 TJm +(longer) 25.4544 Tj +-258 TJm +(attempt) 29.8878 Tj +-258 TJm +(to) 7.7509 Tj +-258 TJm +(read) 17.1456 Tj +-257 TJm +(data) 16.5977 Tj +-258 TJm +(from) 19.3673 Tj +[1 0 0 1 234.207 572.553] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -234.207 -572.553] cm +[1 0 0 1 0 0] Tm +0 0 Td +234.207 572.553 Td +/F134_0 9.9626 Tf +(next_in) 41.8429 Tj +[1 0 0 1 276.051 572.553] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -276.051 -572.553] cm +[1 0 0 1 0 0] Tm +0 0 Td +276.051 572.553 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-260 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-257 TJm +(it) 5.53921 Tj +-258 TJm +(will) 15.5018 Tj +-258 TJm +(w) 7.193 Tj +10 TJm +(ant) 12.1743 Tj +-257 TJm +(to) 7.7509 Tj +-258 TJm +(write) 20.4731 Tj +-258 TJm +(data) 16.5977 Tj +-258 TJm +(to) 7.7509 Tj +[1 0 0 1 407.082 572.553] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -407.082 -572.553] cm +[1 0 0 1 0 0] Tm +0 0 Td +407.082 572.553 Td +/F134_0 9.9626 Tf +(next_out) 47.8205 Tj +[1 0 0 1 454.902 572.553] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -454.902 -572.553] cm +[1 0 0 1 0 0] Tm +0 0 Td +454.902 572.553 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-666 TJm +(Because) 33.1954 Tj +-258 TJm +(the) 12.1743 Tj +-258 TJm +(output) 25.4644 Tj +72 560.598 Td +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +-228 TJm +(supplied) 33.7633 Tj +-228 TJm +(by) 9.9626 Tj +-229 TJm +(the) 12.1743 Tj +-228 TJm +(user) 16.5977 Tj +-228 TJm +(can) 13.8281 Tj +-228 TJm +(be) 9.40469 Tj +-228 TJm +(arbitrarily) 39.8404 Tj +-229 TJm +(sma) 16.0497 Tj +1 TJm +(ll,) 8.02986 Tj +-233 TJm +(the) 12.1743 Tj +-228 TJm +(\002nishing-up) 48.1592 Tj +-228 TJm +(operation) 37.6287 Tj +-229 TJm +(cannot) 26.5603 Tj +-228 TJm +(necessarily) 44.2638 Tj +-228 TJm +(be) 9.40469 Tj +-228 TJm +(done) 19.3673 Tj +-228 TJm +(with) 17.7135 Tj +-229 TJm +(a) 4.42339 Tj +-228 TJm +(single) 23.8007 Tj +72 548.643 Td +(call) 14.386 Tj +-250 TJm +(of) 8.29885 Tj +[1 0 0 1 99.6659 548.643] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -99.6659 -548.643] cm +[1 0 0 1 0 0] Tm +0 0 Td +99.6659 548.643 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 183.352 548.643] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -183.352 -548.643] cm +[1 0 0 1 0 0] Tm +0 0 Td +183.352 548.643 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 547.108] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -537.146] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 526.725 Td +/F130_0 9.9626 Tf +(Instead,) 31.2626 Tj +-346 TJm +(the) 12.1743 Tj +-327 TJm +(calling) 27.1182 Tj +-326 TJm +(program) 33.7533 Tj +-327 TJm +(passes) 25.4544 Tj +[1 0 0 1 218.231 526.725] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -218.231 -526.725] cm +[1 0 0 1 0 0] Tm +0 0 Td +218.231 526.725 Td +/F134_0 9.9626 Tf +(BZ_FINISH) 53.798 Tj +[1 0 0 1 272.029 526.725] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -272.029 -526.725] cm +[1 0 0 1 0 0] Tm +0 0 Td +275.284 526.725 Td +/F130_0 9.9626 Tf +(as) 8.29885 Tj +-327 TJm +(an) 9.40469 Tj +-327 TJm +(action) 24.3486 Tj +-326 TJm +(to) 7.7509 Tj +[1 0 0 1 338.108 526.725] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -338.108 -526.725] cm +[1 0 0 1 0 0] Tm +0 0 Td +338.108 526.725 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 421.795 526.725] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -421.795 -526.725] cm +[1 0 0 1 0 0] Tm +0 0 Td +421.795 526.725 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-1081 TJm +(This) 17.7135 Tj +-326 TJm +(changes) 32.0895 Tj +-327 TJm +(the) 12.1743 Tj +-327 TJm +(stream') 29.8778 Tj +55 TJm +(s) 3.87545 Tj +72 514.77 Td +(state) 18.2614 Tj +-291 TJm +(to) 7.7509 Tj +-290 TJm +(FINISHING.) 52.2937 Tj +-581 TJm +(An) 12.1743 Tj +15 TJm +(y) 4.9813 Tj +-291 TJm +(remaining) 40.3983 Tj +-290 TJm +(input) 20.4831 Tj +-291 TJm +(\(ie,) 13.0012 Tj +[1 0 0 1 264.452 514.77] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -264.452 -514.77] cm +[1 0 0 1 0 0] Tm +0 0 Td +264.452 514.77 Td +/F134_0 9.9626 Tf +(next_in[0) 53.798 Tj +-600 TJm +(..) 11.9551 Tj +-1200 TJm +(avail_in-1]) 65.7532 Tj +[1 0 0 1 413.892 514.77] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -413.892 -514.77] cm +[1 0 0 1 0 0] Tm +0 0 Td +413.892 514.77 Td +/F130_0 9.9626 Tf +(\)) 3.31755 Tj +-291 TJm +(is) 6.64505 Tj +-290 TJm +(compressed) 47.0334 Tj +-291 TJm +(and) 14.386 Tj +-290 TJm +(transferred) 43.148 Tj +72 502.814 Td +(to) 7.7509 Tj +-421 TJm +(the) 12.1743 Tj +-421 TJm +(output) 25.4644 Tj +-421 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +55 TJm +(.) 2.49065 Tj +-1646 TJm +(T) 6.08715 Tj +80 TJm +(o) 4.9813 Tj +-421 TJm +(do) 9.9626 Tj +-422 TJm +(this) 14.396 Tj +1 TJm +(,) 2.49065 Tj +[1 0 0 1 222.339 502.814] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -222.339 -502.814] cm +[1 0 0 1 0 0] Tm +0 0 Td +222.339 502.814 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 306.025 502.814] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -306.025 -502.814] cm +[1 0 0 1 0 0] Tm +0 0 Td +310.22 502.814 Td +/F130_0 9.9626 Tf +(must) 19.3773 Tj +-421 TJm +(be) 9.40469 Tj +-421 TJm +(called) 23.7907 Tj +-421 TJm +(repeatedly) 41.4942 Tj +-421 TJm +(until) 18.2714 Tj +-421 TJm +(all) 9.9626 Tj +-421 TJm +(the) 12.1743 Tj +-421 TJm +(output) 25.4644 Tj +-421 TJm +(has) 13.2801 Tj +-421 TJm +(been) 18.8094 Tj +72 490.859 Td +(consumed.) 42.889 Tj +-1397 TJm +(At) 9.9626 Tj +-379 TJm +(that) 14.9439 Tj +-380 TJm +(point,) 22.9738 Tj +[1 0 0 1 188.346 490.859] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -188.346 -490.859] cm +[1 0 0 1 0 0] Tm +0 0 Td +188.346 490.859 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 272.033 490.859] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -272.033 -490.859] cm +[1 0 0 1 0 0] Tm +0 0 Td +275.813 490.859 Td +/F130_0 9.9626 Tf +(returns) 27.6661 Tj +[1 0 0 1 307.259 490.859] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -307.259 -490.859] cm +[1 0 0 1 0 0] Tm +0 0 Td +307.259 490.859 Td +/F134_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +[1 0 0 1 384.968 490.859] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -384.968 -490.859] cm +[1 0 0 1 0 0] Tm +0 0 Td +384.968 490.859 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-379 TJm +(and) 14.386 Tj +-380 TJm +(the) 12.1743 Tj +-379 TJm +(stream') 29.8778 Tj +55 TJm +(s) 3.87545 Tj +-380 TJm +(state) 18.2614 Tj +-379 TJm +(is) 6.64505 Tj +-380 TJm +(set) 11.0684 Tj +-379 TJm +(back) 18.8094 Tj +-379 TJm +(to) 7.7509 Tj +72 478.904 Td +(IDLE.) 25.1755 Tj +[1 0 0 1 99.6662 478.904] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -99.6662 -478.904] cm +[1 0 0 1 0 0] Tm +0 0 Td +99.6662 478.904 Td +/F134_0 9.9626 Tf +(BZ2_bzCompressEnd) 101.619 Tj +[1 0 0 1 201.285 478.904] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -201.285 -478.904] cm +[1 0 0 1 0 0] Tm +0 0 Td +203.776 478.904 Td +/F130_0 9.9626 Tf +(should) 26.5703 Tj +-250 TJm +(then) 17.1556 Tj +-250 TJm +(be) 9.40469 Tj +-250 TJm +(called.) 26.2813 Tj +[1 0 0 1 72 477.37] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -467.407] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 456.986 Td +/F130_0 9.9626 Tf +(Just) 15.5018 Tj +-380 TJm +(to) 7.7509 Tj +-380 TJm +(mak) 17.1556 Tj +10 TJm +(e) 4.42339 Tj +-379 TJm +(sure) 16.5977 Tj +-380 TJm +(the) 12.1743 Tj +-380 TJm +(calling) 27.1182 Tj +-380 TJm +(program) 33.7533 Tj +-379 TJm +(does) 18.2614 Tj +-380 TJm +(not) 12.7322 Tj +-380 TJm +(cheat,) 23.5117 Tj +-412 TJm +(the) 12.1743 Tj +-380 TJm +(library) 26.5603 Tj +-380 TJm +(mak) 17.1556 Tj +10 TJm +(es) 8.29885 Tj +-379 TJm +(a) 4.42339 Tj +-380 TJm +(note) 17.1556 Tj +-380 TJm +(of) 8.29885 Tj +[1 0 0 1 415.708 456.986] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -415.708 -456.986] cm +[1 0 0 1 0 0] Tm +0 0 Td +415.708 456.986 Td +/F134_0 9.9626 Tf +(avail_in) 47.8205 Tj +[1 0 0 1 463.528 456.986] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -463.528 -456.986] cm +[1 0 0 1 0 0] Tm +0 0 Td +467.312 456.986 Td +/F130_0 9.9626 Tf +(at) 7.193 Tj +-380 TJm +(the) 12.1743 Tj +-380 TJm +(time) 17.7135 Tj +-379 TJm +(of) 8.29885 Tj +-380 TJm +(the) 12.1743 Tj +72 445.031 Td +(\002rst) 15.5018 Tj +-286 TJm +(call) 14.386 Tj +-286 TJm +(t) 2.7696 Tj +1 TJm +(o) 4.9813 Tj +[1 0 0 1 118.179 445.031] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -118.179 -445.031] cm +[1 0 0 1 0 0] Tm +0 0 Td +118.179 445.031 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 201.865 445.031] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -201.865 -445.031] cm +[1 0 0 1 0 0] Tm +0 0 Td +204.713 445.031 Td +/F130_0 9.9626 Tf +(which) 24.3486 Tj +-286 TJm +(has) 13.2801 Tj +[1 0 0 1 248.035 445.031] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -248.035 -445.031] cm +[1 0 0 1 0 0] Tm +0 0 Td +248.035 445.031 Td +/F134_0 9.9626 Tf +(BZ_FINISH) 53.798 Tj +[1 0 0 1 301.833 445.031] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -301.833 -445.031] cm +[1 0 0 1 0 0] Tm +0 0 Td +304.68 445.031 Td +/F130_0 9.9626 Tf +(as) 8.29885 Tj +-286 TJm +(an) 9.40469 Tj +-286 TJm +(action) 24.3486 Tj +-285 TJm +(\(ie,) 13.0012 Tj +-295 TJm +(at) 7.193 Tj +-286 TJm +(the) 12.1743 Tj +-286 TJm +(time) 17.7135 Tj +-285 TJm +(the) 12.1743 Tj +-286 TJm +(program) 33.7533 Tj +-286 TJm +(has) 13.2801 Tj +-286 TJm +(announced) 43.158 Tj +-285 TJm +(its) 9.41466 Tj +72 433.076 Td +(intention) 35.427 Tj +-292 TJm +(to) 7.7509 Tj +-292 TJm +(not) 12.7322 Tj +-291 TJm +(supply) 26.5703 Tj +-292 TJm +(an) 9.40469 Tj +15 TJm +(y) 4.9813 Tj +-292 TJm +(more) 20.4731 Tj +-292 TJm +(input\).) 26.2913 Tj +-870 TJm +(By) 11.6264 Tj +-292 TJm +(comparing) 42.61 Tj +-292 TJm +(this) 14.396 Tj +-292 TJm +(v) 4.9813 Tj +25 TJm +(alue) 16.5977 Tj +-291 TJm +(with) 17.7135 Tj +-292 TJm +(that) 14.9439 Tj +-292 TJm +(of) 8.29885 Tj +[1 0 0 1 392.862 433.076] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -392.862 -433.076] cm +[1 0 0 1 0 0] Tm +0 0 Td +392.862 433.076 Td +/F134_0 9.9626 Tf +(avail_in) 47.8205 Tj +[1 0 0 1 440.682 433.076] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -440.682 -433.076] cm +[1 0 0 1 0 0] Tm +0 0 Td +443.589 433.076 Td +/F130_0 9.9626 Tf +(o) 4.9813 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.74094 Tj +-292 TJm +(subsequent) 44.2738 Tj +-292 TJm +(calls) 18.2614 Tj +-291 TJm +(to) 7.7509 Tj +[1 0 0 1 72 421.121] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -421.121] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 421.121 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 155.686 421.121] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -155.686 -421.121] cm +[1 0 0 1 0 0] Tm +0 0 Td +155.686 421.121 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-247 TJm +(the) 12.1743 Tj +-247 TJm +(library) 26.5603 Tj +-246 TJm +(can) 13.8281 Tj +-247 TJm +(detect) 23.7907 Tj +-246 TJm +(an) 9.40469 Tj +15 TJm +(y) 4.9813 Tj +-247 TJm +(att) 9.9626 Tj +1 TJm +(empts) 23.8007 Tj +-247 TJm +(to) 7.7509 Tj +-246 TJm +(slip) 14.396 Tj +-247 TJm +(in) 7.7509 Tj +-246 TJm +(more) 20.4731 Tj +-247 TJm +(data) 16.5977 Tj +-246 TJm +(to) 7.7509 Tj +-247 TJm +(compress.) 40.1194 Tj +-617 TJm +(An) 12.1743 Tj +15 TJm +(y) 4.9813 Tj +-247 TJm +(calls) 18.2614 Tj +-246 TJm +(for) 11.6164 Tj +-247 TJm +(which) 24.3486 Tj +-246 TJm +(this) 14.396 Tj +-247 TJm +(is) 6.64505 Tj +72 409.166 Td +(detected) 33.1954 Tj +-250 TJm +(will) 15.5018 Tj +-250 TJm +(return) 23.7907 Tj +[1 0 0 1 151.959 409.166] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -151.959 -409.166] cm +[1 0 0 1 0 0] Tm +0 0 Td +151.959 409.166 Td +/F134_0 9.9626 Tf +(BZ_SEQUENCE_ERROR) 101.619 Tj +[1 0 0 1 253.578 409.166] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -253.578 -409.166] cm +[1 0 0 1 0 0] Tm +0 0 Td +253.578 409.166 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-500 TJm +(This) 17.7135 Tj +-250 TJm +(indicates) 35.417 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(programming) 54.2364 Tj +-250 TJm +(mistak) 26.5703 Tj +10 TJm +(e) 4.42339 Tj +-250 TJm +(which) 24.3486 Tj +-250 TJm +(should) 26.5703 Tj +-250 TJm +(be) 9.40469 Tj +-250 TJm +(corrected.) 39.5515 Tj +[1 0 0 1 72 407.009] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -397.046] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 387.248 Td +/F130_0 9.9626 Tf +(Instead) 28.772 Tj +-224 TJm +(of) 8.29885 Tj +-223 TJm +(asking) 26.0123 Tj +-224 TJm +(to) 7.7509 Tj +-223 TJm +(\002nish,) 24.6375 Tj +-229 TJm +(the) 12.1743 Tj +-224 TJm +(calling) 27.1182 Tj +-223 TJm +(program) 33.7533 Tj +-224 TJm +(may) 17.1556 Tj +-224 TJm +(ask) 13.2801 Tj +[1 0 0 1 293.282 387.248] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -293.282 -387.248] cm +[1 0 0 1 0 0] Tm +0 0 Td +293.282 387.248 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 376.968 387.248] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -376.968 -387.248] cm +[1 0 0 1 0 0] Tm +0 0 Td +379.196 387.248 Td +/F130_0 9.9626 Tf +(to) 7.7509 Tj +-224 TJm +(tak) 12.1743 Tj +10 TJm +(e) 4.42339 Tj +-223 TJm +(all) 9.9626 Tj +-224 TJm +(the) 12.1743 Tj +-223 TJm +(remaining) 40.3983 Tj +-224 TJm +(input,) 22.9738 Tj +-229 TJm +(compress) 37.6287 Tj +72 375.293 Td +(it) 5.53921 Tj +-278 TJm +(and) 14.386 Tj +-278 TJm +(terminate) 37.6287 Tj +-278 TJm +(the) 12.1743 Tj +-278 TJm +(current) 28.2141 Tj +-277 TJm +(\(Burro) 26.5603 Tj +25 TJm +(ws-Wheeler\)) 51.4469 Tj +-278 TJm +(compression) 50.3609 Tj +-278 TJm +(block.) 24.6275 Tj +-787 TJm +(Th) 11.0684 Tj +-1 TJm +(i) 2.7696 Tj +1 TJm +(s) 3.87545 Tj +-278 TJm +(could) 22.1369 Tj +-278 TJm +(be) 9.40469 Tj +-278 TJm +(useful) 24.3486 Tj +-278 TJm +(for) 11.6164 Tj +-278 TJm +(error) 19.3573 Tj +-278 TJm +(control) 28.224 Tj +-278 TJm +(purposes.) 37.9077 Tj +72 363.338 Td +(The) 15.4918 Tj +-328 TJm +(mechanism) 45.3796 Tj +-328 TJm +(is) 6.64505 Tj +-328 TJm +(analogous) 40.3983 Tj +-328 TJm +(to) 7.7509 Tj +-328 TJm +(that) 14.9439 Tj +-328 TJm +(for) 11.6164 Tj +-328 TJm +(\002nishing:) 37.6487 Tj +-466 TJm +(call) 14.386 Tj +[1 0 0 1 297.049 363.337] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -297.049 -363.337] cm +[1 0 0 1 0 0] Tm +0 0 Td +297.049 363.337 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 380.735 363.337] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -380.735 -363.337] cm +[1 0 0 1 0 0] Tm +0 0 Td +384.003 363.337 Td +/F130_0 9.9626 Tf +(with) 17.7135 Tj +-328 TJm +(an) 9.40469 Tj +-328 TJm +(action) 24.3486 Tj +-328 TJm +(of) 8.29885 Tj +[1 0 0 1 456.841 363.337] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -456.841 -363.337] cm +[1 0 0 1 0 0] Tm +0 0 Td +456.841 363.337 Td +/F134_0 9.9626 Tf +(BZ_FLUSH) 47.8205 Tj +[1 0 0 1 504.662 363.337] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -504.662 -363.337] cm +[1 0 0 1 0 0] Tm +0 0 Td +504.662 363.337 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-328 TJm +(remo) 20.4731 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +72 351.382 Td +(output) 25.4644 Tj +-445 TJm +(data,) 19.0883 Tj +-494 TJm +(and) 14.386 Tj +-446 TJm +(persist) 26.0123 Tj +-445 TJm +(with) 17.7135 Tj +-445 TJm +(the) 12.1743 Tj +[1 0 0 1 213.94 351.382] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -213.94 -351.382] cm +[1 0 0 1 0 0] Tm +0 0 Td +213.94 351.382 Td +/F134_0 9.9626 Tf +(BZ_FLUSH) 47.8205 Tj +[1 0 0 1 261.761 351.382] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -261.761 -351.382] cm +[1 0 0 1 0 0] Tm +0 0 Td +266.195 351.382 Td +/F130_0 9.9626 Tf +(action) 24.3486 Tj +-445 TJm +(until) 18.2714 Tj +-445 TJm +(the) 12.1743 Tj +-446 TJm +(v) 4.9813 Tj +25 TJm +(alue) 16.5977 Tj +[1 0 0 1 360.062 351.382] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -360.062 -351.382] cm +[1 0 0 1 0 0] Tm +0 0 Td +360.062 351.382 Td +/F134_0 9.9626 Tf +(BZ_RUN) 35.8654 Tj +[1 0 0 1 395.928 351.382] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -395.928 -351.382] cm +[1 0 0 1 0 0] Tm +0 0 Td +400.362 351.382 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-445 TJm +(returned.) 35.686 Tj +-1792 TJm +(As) 11.0684 Tj +-445 TJm +(with) 17.7135 Tj +-445 TJm +(\002nishing,) 37.3697 Tj +[1 0 0 1 72 339.427] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -339.427] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 339.427 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 155.686 339.427] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -155.686 -339.427] cm +[1 0 0 1 0 0] Tm +0 0 Td +158.177 339.427 Td +/F130_0 9.9626 Tf +(detects) 27.6661 Tj +-250 TJm +(an) 9.40469 Tj +15 TJm +(y) 4.9813 Tj +-250 TJm +(attempt) 29.8878 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(pro) 13.2801 Tj +15 TJm +(vide) 17.1556 Tj +-250 TJm +(more) 20.4731 Tj +-250 TJm +(input) 20.4831 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(once) 18.8094 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(\003ush) 19.3773 Tj +-250 TJm +(has) 13.2801 Tj +-250 TJm +(be) 9.40469 Tj +15 TJm +(gun.) 17.4346 Tj +[1 0 0 1 72 337.27] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -327.308] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 317.509 Td +/F130_0 9.9626 Tf +(Once) 21.0211 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(\003ush) 19.3773 Tj +-250 TJm +(is) 6.64505 Tj +-250 TJm +(complete,) 39.0135 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(stream) 26.5603 Tj +-250 TJm +(returns) 27.6661 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(normal) 28.224 Tj +-250 TJm +(R) 6.64505 Tj +40 TJm +(UNNING) 39.2825 Tj +-250 TJm +(state.) 20.7521 Tj +[1 0 0 1 72 315.353] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -305.39] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 295.591 Td +/F130_0 9.9626 Tf +(This) 17.7135 Tj +-344 TJm +(all) 9.9626 Tj +-343 TJm +(sounds) 27.6761 Tj +-344 TJm +(pretty) 23.2427 Tj +-344 TJm +(comple) 29.3299 Tj +15 TJm +(x,) 7.47195 Tj +-367 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-344 TJm +(isn') 14.9439 Tj +18 TJm +(t) 2.7696 Tj +-344 TJm +(really) 22.6848 Tj +65 TJm +(.) 2.49065 Tj +-1182 TJm +(Here') 22.6749 Tj +55 TJm +(s) 3.87545 Tj +-344 TJm +(a) 4.42339 Tj +-344 TJm +(table) 19.3673 Tj +-343 TJm +(which) 24.3486 Tj +-344 TJm +(sho) 13.8381 Tj +25 TJm +(ws) 11.0684 Tj +-344 TJm +(which) 24.3486 Tj +-344 TJm +(actions) 28.224 Tj +-343 TJm +(are) 12.1643 Tj +-344 TJm +(allo) 14.9439 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(able) 16.5977 Tj +-344 TJm +(in) 7.7509 Tj +-344 TJm +(each) 18.2515 Tj +72 283.636 Td +(state,) 20.7521 Tj +-281 TJm +(what) 19.3673 Tj +-274 TJm +(action) 24.3486 Tj +-275 TJm +(will) 15.5018 Tj +-274 TJm +(be) 9.40469 Tj +-275 TJm +(tak) 12.1743 Tj +10 TJm +(en,) 11.8953 Tj +-280 TJm +(what) 19.3673 Tj +-275 TJm +(the) 12.1743 Tj +-274 TJm +(ne) 9.40469 Tj +15 TJm +(xt) 7.7509 Tj +-275 TJm +(state) 18.2614 Tj +-274 TJm +(is,) 9.1357 Tj +-281 TJm +(and) 14.386 Tj +-274 TJm +(what) 19.3673 Tj +-275 TJm +(the) 12.1743 Tj +-275 TJm +(non-error) 37.6188 Tj +-274 TJm +(return) 23.7907 Tj +-275 TJm +(v) 4.9813 Tj +25 TJm +(alues) 20.4731 Tj +-274 TJm +(are.) 14.655 Tj +-767 TJm +(Note) 19.3673 Tj +-275 TJm +(that) 14.9439 Tj +-274 TJm +(you) 14.9439 Tj +-275 TJm +(can') 17.1456 Tj +18 TJm +(t) 2.7696 Tj +72 271.681 Td +(e) 4.42339 Tj +15 TJm +(xplicitly) 33.2153 Tj +-347 TJm +(ask) 13.2801 Tj +-348 TJm +(what) 19.3673 Tj +-347 TJm +(state) 18.2614 Tj +-348 TJm +(the) 12.1743 Tj +-347 TJm +(stream) 26.5603 Tj +-348 TJm +(is) 6.64505 Tj +-347 TJm +(in,) 10.2416 Tj +-372 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-347 TJm +(nor) 13.2801 Tj +-348 TJm +(do) 9.9626 Tj +-347 TJm +(you) 14.9439 Tj +-348 TJm +(need) 18.8094 Tj +-347 TJm +(to) 7.7509 Tj +-348 TJm +(--) 6.63509 Tj +-347 TJm +(it) 5.53921 Tj +-348 TJm +(can) 13.8281 Tj +-347 TJm +(be) 9.40469 Tj +-347 TJm +(inferred) 31.5316 Tj +-348 TJm +(from) 19.3673 Tj +-347 TJm +(the) 12.1743 Tj +-348 TJm +(v) 4.9813 Tj +25 TJm +(alues) 20.4731 Tj +-347 TJm +(returned) 33.1954 Tj +-348 TJm +(by) 9.9626 Tj +[1 0 0 1 72 259.726] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -259.726] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 259.726 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 155.686 259.726] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -155.686 -259.726] cm +[1 0 0 1 0 0] Tm +0 0 Td +155.686 259.726 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 258.192] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -207.34] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -50.8518] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 50.8518 Td +/F130_0 9.9626 Tf +(14) 9.9626 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 18 18 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 76.4979 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -342.569 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F130_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +[1 0 0 1 496.556 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -496.556 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +496.556 749.245 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 544.376 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.305 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -5.0363] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -595.402] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 573.848 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 570.261] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -711.631] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 711.631 Td +/F134_0 9.9626 Tf +(IDLE/any) 47.8205 Tj +98.4879 699.676 Td +(Illegal.) 47.8205 Tj +-852 TJm +(IDLE) 23.9102 Tj +-426 TJm +(state) 29.8878 Tj +-426 TJm +(only) 23.9102 Tj +-426 TJm +(exists) 35.8654 Tj +-426 TJm +(after) 29.8878 Tj +-426 TJm +(BZ2_bzCompressEnd) 101.619 Tj +-426 TJm +(or) 11.9551 Tj +98.4879 687.721 Td +(before) 35.8654 Tj +-426 TJm +(BZ2_bzCompressInit.) 113.574 Tj +98.4879 675.766 Td +(Return) 35.8654 Tj +-426 TJm +(value) 29.8878 Tj +-426 TJm +(=) 5.97756 Tj +-426 TJm +(BZ_SEQUENCE_ERROR) 101.619 Tj +90 651.856 Td +(RUNNING/BZ_RUN) 83.6858 Tj +98.4879 639.9 Td +(Compress) 47.8205 Tj +-426 TJm +(from) 23.9102 Tj +-426 TJm +(next_in) 41.8429 Tj +-426 TJm +(to) 11.9551 Tj +-426 TJm +(next_out) 47.8205 Tj +-426 TJm +(as) 11.9551 Tj +-426 TJm +(much) 23.9102 Tj +-426 TJm +(as) 11.9551 Tj +-426 TJm +(possible.) 53.798 Tj +98.4879 627.945 Td +(Next) 23.9102 Tj +-426 TJm +(state) 29.8878 Tj +-426 TJm +(=) 5.97756 Tj +-426 TJm +(RUNNING) 41.8429 Tj +98.4879 615.99 Td +(Return) 35.8654 Tj +-426 TJm +(value) 29.8878 Tj +-426 TJm +(=) 5.97756 Tj +-426 TJm +(BZ_RUN_OK) 53.798 Tj +90 592.08 Td +(RUNNING/BZ_FLUSH) 95.641 Tj +98.4879 580.125 Td +(Remember) 47.8205 Tj +-426 TJm +(current) 41.8429 Tj +-426 TJm +(value) 29.8878 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(next_in.) 47.8205 Tj +-426 TJm +(Compress) 47.8205 Tj +-426 TJm +(from) 23.9102 Tj +-426 TJm +(next_in) 41.8429 Tj +98.4879 568.169 Td +(to) 11.9551 Tj +-426 TJm +(next_out) 47.8205 Tj +-426 TJm +(as) 11.9551 Tj +-426 TJm +(much) 23.9102 Tj +-426 TJm +(as) 11.9551 Tj +-426 TJm +(possible,) 53.798 Tj +-426 TJm +(but) 17.9327 Tj +-426 TJm +(do) 11.9551 Tj +-426 TJm +(not) 17.9327 Tj +-426 TJm +(accept) 35.8654 Tj +-426 TJm +(any) 17.9327 Tj +-426 TJm +(more) 23.9102 Tj +-426 TJm +(input.) 35.8654 Tj +98.4879 556.214 Td +(Next) 23.9102 Tj +-426 TJm +(state) 29.8878 Tj +-426 TJm +(=) 5.97756 Tj +-426 TJm +(FLUSHING) 47.8205 Tj +98.4879 544.259 Td +(Return) 35.8654 Tj +-426 TJm +(value) 29.8878 Tj +-426 TJm +(=) 5.97756 Tj +-426 TJm +(BZ_FLUSH_OK) 65.7532 Tj +90 520.349 Td +(RUNNING/BZ_FINISH) 101.619 Tj +98.4879 508.394 Td +(Remember) 47.8205 Tj +-426 TJm +(current) 41.8429 Tj +-426 TJm +(value) 29.8878 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(next_in.) 47.8205 Tj +-426 TJm +(Compress) 47.8205 Tj +-426 TJm +(from) 23.9102 Tj +-426 TJm +(next_in) 41.8429 Tj +98.4879 496.438 Td +(to) 11.9551 Tj +-426 TJm +(next_out) 47.8205 Tj +-426 TJm +(as) 11.9551 Tj +-426 TJm +(much) 23.9102 Tj +-426 TJm +(as) 11.9551 Tj +-426 TJm +(possible,) 53.798 Tj +-426 TJm +(but) 17.9327 Tj +-426 TJm +(do) 11.9551 Tj +-426 TJm +(not) 17.9327 Tj +-426 TJm +(accept) 35.8654 Tj +-426 TJm +(any) 17.9327 Tj +-426 TJm +(more) 23.9102 Tj +-426 TJm +(input.) 35.8654 Tj +98.4879 484.483 Td +(Next) 23.9102 Tj +-426 TJm +(state) 29.8878 Tj +-426 TJm +(=) 5.97756 Tj +-426 TJm +(FINISHING) 53.798 Tj +98.4879 472.528 Td +(Return) 35.8654 Tj +-426 TJm +(value) 29.8878 Tj +-426 TJm +(=) 5.97756 Tj +-426 TJm +(BZ_FINISH_OK) 71.7307 Tj +90 448.618 Td +(FLUSHING/BZ_FLUSH) 101.619 Tj +98.4879 436.663 Td +(Compress) 47.8205 Tj +-426 TJm +(from) 23.9102 Tj +-426 TJm +(next_in) 41.8429 Tj +-426 TJm +(to) 11.9551 Tj +-426 TJm +(next_out) 47.8205 Tj +-426 TJm +(as) 11.9551 Tj +-426 TJm +(much) 23.9102 Tj +-426 TJm +(as) 11.9551 Tj +-426 TJm +(possible,) 53.798 Tj +98.4879 424.707 Td +(but) 17.9327 Tj +-426 TJm +(do) 11.9551 Tj +-426 TJm +(not) 17.9327 Tj +-426 TJm +(accept) 35.8654 Tj +-426 TJm +(any) 17.9327 Tj +-426 TJm +(more) 23.9102 Tj +-426 TJm +(input.) 35.8654 Tj +98.4879 412.752 Td +(If) 11.9551 Tj +-426 TJm +(all) 17.9327 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(existing) 47.8205 Tj +-426 TJm +(input) 29.8878 Tj +-426 TJm +(has) 17.9327 Tj +-426 TJm +(been) 23.9102 Tj +-426 TJm +(used) 23.9102 Tj +-426 TJm +(up) 11.9551 Tj +-426 TJm +(and) 17.9327 Tj +-426 TJm +(all) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +98.4879 400.797 Td +(output) 35.8654 Tj +-426 TJm +(has) 17.9327 Tj +-426 TJm +(been) 23.9102 Tj +-426 TJm +(removed) 41.8429 Tj +106.976 388.842 Td +(Next) 23.9102 Tj +-426 TJm +(state) 29.8878 Tj +-426 TJm +(=) 5.97756 Tj +-426 TJm +(RUNNING;) 47.8205 Tj +-426 TJm +(Return) 35.8654 Tj +-426 TJm +(value) 29.8878 Tj +-426 TJm +(=) 5.97756 Tj +-426 TJm +(BZ_RUN_OK) 53.798 Tj +98.4879 376.887 Td +(else) 23.9102 Tj +106.976 364.932 Td +(Next) 23.9102 Tj +-426 TJm +(state) 29.8878 Tj +-426 TJm +(=) 5.97756 Tj +-426 TJm +(FLUSHING;) 53.798 Tj +-426 TJm +(Return) 35.8654 Tj +-426 TJm +(value) 29.8878 Tj +-426 TJm +(=) 5.97756 Tj +-426 TJm +(BZ_FLUSH_OK) 65.7532 Tj +90 341.021 Td +(FLUSHING/other) 83.6858 Tj +98.4879 329.066 Td +(Illegal.) 47.8205 Tj +98.4879 317.111 Td +(Return) 35.8654 Tj +-426 TJm +(value) 29.8878 Tj +-426 TJm +(=) 5.97756 Tj +-426 TJm +(BZ_SEQUENCE_ERROR) 101.619 Tj +90 293.201 Td +(FINISHING/BZ_FINISH) 113.574 Tj +98.4879 281.245 Td +(Compress) 47.8205 Tj +-426 TJm +(from) 23.9102 Tj +-426 TJm +(next_in) 41.8429 Tj +-426 TJm +(to) 11.9551 Tj +-426 TJm +(next_out) 47.8205 Tj +-426 TJm +(as) 11.9551 Tj +-426 TJm +(much) 23.9102 Tj +-426 TJm +(as) 11.9551 Tj +-426 TJm +(possible,) 53.798 Tj +98.4879 269.29 Td +(but) 17.9327 Tj +-426 TJm +(to) 11.9551 Tj +-426 TJm +(not) 17.9327 Tj +-426 TJm +(accept) 35.8654 Tj +-426 TJm +(any) 17.9327 Tj +-426 TJm +(more) 23.9102 Tj +-426 TJm +(input.) 35.8654 Tj +98.4879 257.335 Td +(If) 11.9551 Tj +-426 TJm +(all) 17.9327 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(existing) 47.8205 Tj +-426 TJm +(input) 29.8878 Tj +-426 TJm +(has) 17.9327 Tj +-426 TJm +(been) 23.9102 Tj +-426 TJm +(used) 23.9102 Tj +-426 TJm +(up) 11.9551 Tj +-426 TJm +(and) 17.9327 Tj +-426 TJm +(all) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +98.4879 245.38 Td +(output) 35.8654 Tj +-426 TJm +(has) 17.9327 Tj +-426 TJm +(been) 23.9102 Tj +-426 TJm +(removed) 41.8429 Tj +106.976 233.425 Td +(Next) 23.9102 Tj +-426 TJm +(state) 29.8878 Tj +-426 TJm +(=) 5.97756 Tj +-426 TJm +(IDLE;) 29.8878 Tj +-426 TJm +(Return) 35.8654 Tj +-426 TJm +(value) 29.8878 Tj +-426 TJm +(=) 5.97756 Tj +-426 TJm +(BZ_STREAM_END) 77.7083 Tj +98.4879 221.47 Td +(else) 23.9102 Tj +106.976 209.514 Td +(Next) 23.9102 Tj +-426 TJm +(state) 29.8878 Tj +-426 TJm +(=) 5.97756 Tj +-426 TJm +(FINISHING;) 59.7756 Tj +-426 TJm +(Return) 35.8654 Tj +-426 TJm +(value) 29.8878 Tj +-426 TJm +(=) 5.97756 Tj +-426 TJm +(BZ_FINISH_OK) 71.7307 Tj +90 185.604 Td +(FINISHING/other) 89.6634 Tj +98.4879 173.649 Td +(Illegal.) 47.8205 Tj +98.4879 161.694 Td +(Return) 35.8654 Tj +-426 TJm +(value) 29.8878 Tj +-426 TJm +(=) 5.97756 Tj +-426 TJm +(BZ_SEQUENCE_ERROR) 101.619 Tj +[1 0 0 1 72 146.152] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -136.189] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 124.234 Td +/F130_0 9.9626 Tf +(That) 18.2614 Tj +-250 TJm +(still) 14.9539 Tj +-250 TJm +(looks) 21.589 Tj +-250 TJm +(complicated?) 53.1206 Tj +-620 TJm +(W) 9.40469 Tj +80 TJm +(ell,) 12.4533 Tj +-250 TJm +(f) 3.31755 Tj +10 TJm +(air) 10.5105 Tj +-250 TJm +(enough.) 31.8205 Tj +-620 TJm +(The) 15.4918 Tj +-250 TJm +(usual) 21.031 Tj +-250 TJm +(sequence) 36.5129 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(calls) 18.2614 Tj +-250 TJm +(for) 11.6164 Tj +-250 TJm +(compressing) 50.3609 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(load) 17.1556 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(is:) 9.41466 Tj +[1 0 0 1 72 122.077] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -29.7236] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 7.3724 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -79.3724 -92.3537] cm +[1 0 0 1 0 0] Tm +0 0 Td +79.3724 92.3537 Td +/F130_0 9.9626 Tf +(1.) 7.47195 Tj +[1 0 0 1 86.8444 92.3537] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 3.0884 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 1.9925 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -91.9253 -92.3537] cm +[1 0 0 1 0 0] Tm +0 0 Td +91.9253 92.3537 Td +/F130_0 9.9626 Tf +(Get) 14.386 Tj +-250 TJm +(started) 26.5603 Tj +-250 TJm +(with) 17.7135 Tj +[1 0 0 1 158.056 92.3537] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -158.056 -92.3537] cm +[1 0 0 1 0 0] Tm +0 0 Td +158.056 92.3537 Td +/F134_0 9.9626 Tf +(BZ2_bzCompressInit) 107.596 Tj +[1 0 0 1 265.653 92.3537] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -265.653 -92.3537] cm +[1 0 0 1 0 0] Tm +0 0 Td +265.653 92.3537 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 268.144 92.3537] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -196.144 -41.5019] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.893 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.8542] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -50.9514] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 50.9514 Td +/F130_0 9.9626 Tf +(15) 9.9626 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 19 19 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 76.4979 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -342.569 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F130_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +[1 0 0 1 496.556 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -496.556 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +496.556 749.245 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 544.376 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.305 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -5.0363] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -31.5168] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 7.3724 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -79.3724 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +79.3724 710.037 Td +/F130_0 9.9626 Tf +(2.) 7.47195 Tj +[1 0 0 1 86.8444 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 3.0884 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 1.9925 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -91.9253 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +91.9253 710.037 Td +/F130_0 9.9626 Tf +(Sho) 15.5018 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-240 TJm +(data) 16.5977 Tj +-240 TJm +(in) 7.7509 Tj +-241 TJm +(and) 14.386 Tj +-240 TJm +(shlurp) 24.9065 Tj +-240 TJm +(out) 12.7322 Tj +-240 TJm +(its) 9.41466 Tj +-240 TJm +(compressed) 47.0334 Tj +-241 TJm +(form) 19.3673 Tj +-240 TJm +(using) 21.589 Tj +-240 TJm +(zero) 17.1456 Tj +-240 TJm +(or) 8.29885 Tj +-240 TJm +(more) 20.4731 Tj +-241 TJm +(calls) 18.2614 Tj +-240 TJm +(of) 8.29885 Tj +[1 0 0 1 401.454 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -401.454 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +401.454 710.037 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 485.14 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -485.14 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +487.533 710.037 Td +/F130_0 9.9626 Tf +(with) 17.7135 Tj +-240 TJm +(action) 24.3486 Tj +-240 TJm +(=) 5.61891 Tj +[1 0 0 1 91.9253 698.082] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -91.9253 -698.082] cm +[1 0 0 1 0 0] Tm +0 0 Td +91.9253 698.082 Td +/F134_0 9.9626 Tf +(BZ_RUN) 35.8654 Tj +[1 0 0 1 127.791 698.082] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -127.791 -698.082] cm +[1 0 0 1 0 0] Tm +0 0 Td +127.791 698.082 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 130.281 698.082] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -58.2814 -21.9178] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 7.3724 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -79.3724 -676.164] cm +[1 0 0 1 0 0] Tm +0 0 Td +79.3724 676.164 Td +/F130_0 9.9626 Tf +(3.) 7.47195 Tj +[1 0 0 1 86.8444 676.164] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 3.0884 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 1.9925 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -91.9253 -676.164] cm +[1 0 0 1 0 0] Tm +0 0 Td +91.9253 676.164 Td +/F130_0 9.9626 Tf +(Finish) 24.9165 Tj +-242 TJm +(up.) 12.4533 Tj +-307 TJm +(Repeatedly) 44.8217 Tj +-241 TJm +(call) 14.386 Tj +[1 0 0 1 198.784 676.164] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -198.784 -676.164] cm +[1 0 0 1 0 0] Tm +0 0 Td +198.784 676.164 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 282.471 676.164] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -282.471 -676.164] cm +[1 0 0 1 0 0] Tm +0 0 Td +284.878 676.164 Td +/F130_0 9.9626 Tf +(with) 17.7135 Tj +-242 TJm +(action) 24.3486 Tj +-241 TJm +(=) 5.61891 Tj +[1 0 0 1 339.78 676.164] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -339.78 -676.164] cm +[1 0 0 1 0 0] Tm +0 0 Td +339.78 676.164 Td +/F134_0 9.9626 Tf +(BZ_FINISH) 53.798 Tj +[1 0 0 1 393.579 676.164] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -393.579 -676.164] cm +[1 0 0 1 0 0] Tm +0 0 Td +393.579 676.164 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-242 TJm +(cop) 14.386 Tj +10 TJm +(ying) 17.7135 Tj +-241 TJm +(out) 12.7322 Tj +-242 TJm +(the) 12.1743 Tj +-242 TJm +(compres) 33.7533 Tj +1 TJm +(sed) 13.2801 Tj +-242 TJm +(output,) 27.9551 Tj +91.9253 664.209 Td +(until) 18.2714 Tj +[1 0 0 1 112.687 664.209] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -112.687 -664.209] cm +[1 0 0 1 0 0] Tm +0 0 Td +112.687 664.209 Td +/F134_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +[1 0 0 1 190.396 664.209] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -190.396 -664.209] cm +[1 0 0 1 0 0] Tm +0 0 Td +192.886 664.209 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-250 TJm +(returned.) 35.686 Tj +[1 0 0 1 237.708 664.209] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -165.708 -21.9178] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 7.3724 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -79.3724 -642.291] cm +[1 0 0 1 0 0] Tm +0 0 Td +79.3724 642.291 Td +/F130_0 9.9626 Tf +(4.) 7.47195 Tj +[1 0 0 1 86.8444 642.291] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 3.0884 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 1.9925 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -91.9253 -642.291] cm +[1 0 0 1 0 0] Tm +0 0 Td +91.9253 642.291 Td +/F130_0 9.9626 Tf +(Close) 22.6948 Tj +-250 TJm +(up) 9.9626 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(go) 9.9626 Tj +-250 TJm +(home.) 24.6275 Tj +-620 TJm +(Call) 16.6077 Tj +[1 0 0 1 208.796 642.291] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -208.796 -642.291] cm +[1 0 0 1 0 0] Tm +0 0 Td +208.796 642.291 Td +/F134_0 9.9626 Tf +(BZ2_bzCompressEnd) 101.619 Tj +[1 0 0 1 310.415 642.291] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -310.415 -642.291] cm +[1 0 0 1 0 0] Tm +0 0 Td +310.415 642.291 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 312.906 642.291] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -240.906 -12.1195] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -630.172] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 620.374 Td +/F130_0 9.9626 Tf +(If) 6.63509 Tj +-269 TJm +(the) 12.1743 Tj +-270 TJm +(data) 16.5977 Tj +-269 TJm +(you) 14.9439 Tj +-270 TJm +(w) 7.193 Tj +10 TJm +(ant) 12.1743 Tj +-269 TJm +(to) 7.7509 Tj +-270 TJm +(compress) 37.6287 Tj +-269 TJm +(\002ts) 12.1843 Tj +-270 TJm +(into) 15.5018 Tj +-269 TJm +(your) 18.2614 Tj +-270 TJm +(input) 20.4831 Tj +-269 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +-270 TJm +(all) 9.9626 Tj +-269 TJm +(at) 7.193 Tj +-270 TJm +(once,) 21.3 Tj +-274 TJm +(you) 14.9439 Tj +-269 TJm +(can) 13.8281 Tj +-270 TJm +(skip) 16.6077 Tj +-269 TJm +(the) 12.1743 Tj +-270 TJm +(calls) 18.2614 Tj +-269 TJm +(of) 8.29885 Tj +[1 0 0 1 456.314 620.374] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -456.314 -620.374] cm +[1 0 0 1 0 0] Tm +0 0 Td +456.314 620.374 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +72 608.418 Td +(\() 5.97756 Tj +-600 TJm +(...,) 23.9102 Tj +-600 TJm +(BZ_RUN) 35.8654 Tj +-600 TJm +(\)) 5.97756 Tj +[1 0 0 1 161.664 608.418] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -161.664 -608.418] cm +[1 0 0 1 0 0] Tm +0 0 Td +164.154 608.418 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +-250 TJm +(just) 14.396 Tj +-250 TJm +(do) 9.9626 Tj +-250 TJm +(the) 12.1743 Tj +[1 0 0 1 225.036 608.418] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -225.036 -608.418] cm +[1 0 0 1 0 0] Tm +0 0 Td +225.036 608.418 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +-600 TJm +(\() 5.97756 Tj +-600 TJm +(...,) 23.9102 Tj +-600 TJm +(BZ_FINISH) 53.798 Tj +-600 TJm +(\)) 5.97756 Tj +[1 0 0 1 422.296 608.418] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -422.296 -608.418] cm +[1 0 0 1 0 0] Tm +0 0 Td +424.786 608.418 Td +/F130_0 9.9626 Tf +(calls.) 20.7521 Tj +[1 0 0 1 72 606.262] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -596.299] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 586.501 Td +/F130_0 9.9626 Tf +(All) 12.7322 Tj +-278 TJm +(required) 33.1954 Tj +-277 TJm +(memory) 33.2053 Tj +-278 TJm +(is) 6.64505 Tj +-277 TJm +(allocated) 35.965 Tj +-278 TJm +(by) 9.9626 Tj +[1 0 0 1 220.295 586.501] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -220.295 -586.501] cm +[1 0 0 1 0 0] Tm +0 0 Td +220.295 586.501 Td +/F134_0 9.9626 Tf +(BZ2_bzCompressInit) 107.596 Tj +[1 0 0 1 327.891 586.501] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -327.891 -586.501] cm +[1 0 0 1 0 0] Tm +0 0 Td +327.891 586.501 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-785 TJm +(The) 15.4918 Tj +-278 TJm +(compression) 50.3609 Tj +-277 TJm +(library) 26.5603 Tj +-278 TJm +(can) 13.8281 Tj +-277 TJm +(accept) 25.4445 Tj +-278 TJm +(an) 9.40469 Tj +15 TJm +(y) 4.9813 Tj +-277 TJm +(data) 16.5977 Tj +-278 TJm +(at) 7.193 Tj +-278 TJm +(all) 9.9626 Tj +72 574.545 Td +(\(ob) 13.2801 Tj +15 TJm +(viously\).) 35.1481 Tj +-612 TJm +(So) 10.5205 Tj +-238 TJm +(you) 14.9439 Tj +-237 TJm +(shouldn') 34.8691 Tj +18 TJm +(t) 2.7696 Tj +-238 TJm +(get) 12.1743 Tj +-238 TJm +(an) 9.40469 Tj +15 TJm +(y) 4.9813 Tj +-237 TJm +(error) 19.3573 Tj +-238 TJm +(return) 23.7907 Tj +-238 TJm +(v) 4.9813 Tj +25 TJm +(alues) 20.4731 Tj +-238 TJm +(from) 19.3673 Tj +-237 TJm +(the) 12.1743 Tj +[1 0 0 1 339.287 574.545] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -339.287 -574.545] cm +[1 0 0 1 0 0] Tm +0 0 Td +339.287 574.545 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 422.973 574.545] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -422.973 -574.545] cm +[1 0 0 1 0 0] Tm +0 0 Td +425.342 574.545 Td +/F130_0 9.9626 Tf +(calls.) 20.7521 Tj +-612 TJm +(If) 6.63509 Tj +-238 TJm +(you) 14.9439 Tj +-237 TJm +(do,) 12.4533 Tj +-240 TJm +(the) 12.1743 Tj +15 TJm +(y) 4.9813 Tj +-238 TJm +(will) 15.5018 Tj +-238 TJm +(be) 9.40469 Tj +[1 0 0 1 72 562.59] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -562.59] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 562.59 Td +/F134_0 9.9626 Tf +(BZ_SEQUENCE_ERROR) 101.619 Tj +[1 0 0 1 173.619 562.59] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -173.619 -562.59] cm +[1 0 0 1 0 0] Tm +0 0 Td +173.619 562.59 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(indicate) 31.5416 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ug) 9.9626 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(your) 18.2614 Tj +-250 TJm +(programming.) 56.727 Tj +[1 0 0 1 72 560.433] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -550.471] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 540.673 Td +/F130_0 9.9626 Tf +(T) 6.08715 Tj +35 TJm +(ri) 6.08715 Tj +25 TJm +(vial) 14.9439 Tj +-250 TJm +(other) 20.4731 Tj +-250 TJm +(possible) 32.6574 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues:) 23.2427 Tj +[1 0 0 1 72 538.516] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -36.8617] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 35.8655 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 32.2789] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -529.151] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 529.151 Td +/F134_0 9.9626 Tf +(BZ_PARAM_ERROR) 83.6858 Tj +98.4879 517.196 Td +(if) 11.9551 Tj +-426 TJm +(strm) 23.9102 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL,) 29.8878 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(strm->s) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +[1 0 0 1 72 501.654] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -491.691] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 471.033 Td +/F122_0 17.2154 Tf +(3.3.3.) 43.0729 Tj +[1 0 0 1 119.858 471.033] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -119.858 -471.033] cm +[1 0 0 1 0 0] Tm +0 0 Td +119.858 471.033 Td +/F392_0 17.2154 Tf +(BZ2_bzCompressEnd) 175.597 Tj +[1 0 0 1 295.455 471.033] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -223.455 -2.3326] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -24.9066] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 23.9103 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 20.3237] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -459.335] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 459.335 Td +/F134_0 9.9626 Tf +(int) 17.9327 Tj +-426 TJm +(BZ2_bzCompressEnd) 101.619 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(bz_stream) 53.798 Tj +286.303 457.592 Td +(*) 5.97756 Tj +292.281 459.335 Td +(strm) 23.9102 Tj +-426 TJm +(\);) 11.9551 Tj +[1 0 0 1 72 443.793] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5493] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -433.831] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 421.876 Td +/F130_0 9.9626 Tf +(Releases) 34.8591 Tj +-250 TJm +(all) 9.9626 Tj +-250 TJm +(memory) 33.2053 Tj +-250 TJm +(associated) 40.9463 Tj +-250 TJm +(with) 17.7135 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(compression) 50.3609 Tj +-250 TJm +(stream.) 29.0509 Tj +[1 0 0 1 72 419.719] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -409.756] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 399.958 Td +/F130_0 9.9626 Tf +(Possible) 33.2153 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues:) 23.2427 Tj +[1 0 0 1 72 399.858] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -36.8618] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 35.8655 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 32.2789] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -390.493] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 390.493 Td +/F134_0 9.9626 Tf +(BZ_PARAM_ERROR) 83.6858 Tj +-852 TJm +(if) 11.9551 Tj +-426 TJm +(strm) 23.9102 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(strm->s) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +90 378.538 Td +(BZ_OK) 29.8878 Tj +-4686 TJm +(otherwise) 53.798 Tj +[1 0 0 1 72 362.996] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -353.034] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 332.375 Td +/F122_0 17.2154 Tf +(3.3.4.) 43.0729 Tj +[1 0 0 1 119.858 332.375] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -119.858 -332.375] cm +[1 0 0 1 0 0] Tm +0 0 Td +119.858 332.375 Td +/F392_0 17.2154 Tf +(BZ2_bzDecompressInit) 206.585 Tj +[1 0 0 1 326.443 332.375] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -254.443 -2.3327] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -24.9066] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 23.9103 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 20.3237] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3685] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -320.678] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 320.678 Td +/F134_0 9.9626 Tf +(int) 17.9327 Tj +-426 TJm +(BZ2_bzDecompressInit) 119.551 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(bz_stream) 53.798 Tj +304.236 318.934 Td +(*) 5.97756 Tj +310.214 320.678 Td +(strm,) 29.8878 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(verbosity,) 59.7756 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(small) 29.8878 Tj +-426 TJm +(\);) 11.9551 Tj +[1 0 0 1 72 305.136] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -295.173] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 283.218 Td +/F130_0 9.9626 Tf +(Prepares) 34.3012 Tj +-351 TJm +(for) 11.6164 Tj +-351 TJm +(decompression.) 62.2563 Tj +-1228 TJm +(As) 11.0684 Tj +-351 TJm +(with) 17.7135 Tj +[1 0 0 1 235.177 283.218] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -235.177 -283.218] cm +[1 0 0 1 0 0] Tm +0 0 Td +235.177 283.218 Td +/F134_0 9.9626 Tf +(BZ2_bzCompressInit) 107.596 Tj +[1 0 0 1 342.773 283.218] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -342.773 -283.218] cm +[1 0 0 1 0 0] Tm +0 0 Td +342.773 283.218 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-377 TJm +(a) 4.42339 Tj +[1 0 0 1 356.937 283.218] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -356.937 -283.218] cm +[1 0 0 1 0 0] Tm +0 0 Td +356.937 283.218 Td +/F134_0 9.9626 Tf +(bz_stream) 53.798 Tj +[1 0 0 1 410.736 283.218] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -410.736 -283.218] cm +[1 0 0 1 0 0] Tm +0 0 Td +414.235 283.218 Td +/F130_0 9.9626 Tf +(record) 25.4445 Tj +-351 TJm +(should) 26.5703 Tj +-351 TJm +(be) 9.40469 Tj +-352 TJm +(allocated) 35.965 Tj +-351 TJm +(and) 14.386 Tj +72 271.263 Td +(initialised) 39.3025 Tj +-306 TJm +(before) 25.4445 Tj +-305 TJm +(the) 12.1743 Tj +-306 TJm +(call.) 16.8766 Tj +-953 TJm +(Fields) 24.3586 Tj +[1 0 0 1 211.833 271.263] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -211.833 -271.263] cm +[1 0 0 1 0 0] Tm +0 0 Td +211.833 271.263 Td +/F134_0 9.9626 Tf +(bzalloc) 41.8429 Tj +[1 0 0 1 253.676 271.263] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -253.676 -271.263] cm +[1 0 0 1 0 0] Tm +0 0 Td +253.676 271.263 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 259.35 271.263] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -259.35 -271.263] cm +[1 0 0 1 0 0] Tm +0 0 Td +259.35 271.263 Td +/F134_0 9.9626 Tf +(bzfree) 35.8654 Tj +[1 0 0 1 295.215 271.263] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -295.215 -271.263] cm +[1 0 0 1 0 0] Tm +0 0 Td +298.26 271.263 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 315.69 271.263] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -315.69 -271.263] cm +[1 0 0 1 0 0] Tm +0 0 Td +315.69 271.263 Td +/F134_0 9.9626 Tf +(opaque) 35.8654 Tj +[1 0 0 1 351.556 271.263] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -351.556 -271.263] cm +[1 0 0 1 0 0] Tm +0 0 Td +354.6 271.263 Td +/F130_0 9.9626 Tf +(should) 26.5703 Tj +-306 TJm +(be) 9.40469 Tj +-305 TJm +(set) 11.0684 Tj +-306 TJm +(if) 6.08715 Tj +-305 TJm +(a) 4.42339 Tj +-306 TJm +(custom) 28.782 Tj +-305 TJm +(memory) 33.2053 Tj +-306 TJm +(allocator) 34.8591 Tj +-306 TJm +(is) 6.64505 Tj +72 259.308 Td +(required,) 35.686 Tj +-350 TJm +(or) 8.29885 Tj +-331 TJm +(made) 21.579 Tj +[1 0 0 1 147.635 259.308] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -147.635 -259.308] cm +[1 0 0 1 0 0] Tm +0 0 Td +147.635 259.308 Td +/F134_0 9.9626 Tf +(NULL) 23.9102 Tj +[1 0 0 1 171.546 259.308] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -171.546 -259.308] cm +[1 0 0 1 0 0] Tm +0 0 Td +174.835 259.308 Td +/F130_0 9.9626 Tf +(for) 11.6164 Tj +-330 TJm +(the) 12.1743 Tj +-331 TJm +(normal) 28.224 Tj +[1 0 0 1 236.722 259.308] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -236.722 -259.308] cm +[1 0 0 1 0 0] Tm +0 0 Td +236.722 259.308 Td +/F134_0 9.9626 Tf +(malloc) 35.8654 Tj +[1 0 0 1 272.587 259.308] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -272.587 -259.308] cm +[1 0 0 1 0 0] Tm +0 0 Td +275.878 259.308 Td +/F130_0 9.9626 Tf +(/) 2.7696 Tj +[1 0 0 1 281.938 259.308] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -281.938 -259.308] cm +[1 0 0 1 0 0] Tm +0 0 Td +281.938 259.308 Td +/F134_0 9.9626 Tf +(free) 23.9102 Tj +[1 0 0 1 305.848 259.308] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -305.848 -259.308] cm +[1 0 0 1 0 0] Tm +0 0 Td +309.139 259.308 Td +/F130_0 9.9626 Tf +(routines.) 34.5901 Tj +-1102 TJm +(Upon) 22.1369 Tj +-330 TJm +(return,) 26.2813 Tj +-350 TJm +(the) 12.1743 Tj +-331 TJm +(internal) 30.4357 Tj +-330 TJm +(state) 18.2614 Tj +-330 TJm +(will) 15.5018 Tj +-330 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-331 TJm +(been) 18.8094 Tj +72 247.353 Td +(initialised,) 41.7931 Tj +-250 TJm +(and) 14.386 Tj +[1 0 0 1 133.16 247.353] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -133.16 -247.353] cm +[1 0 0 1 0 0] Tm +0 0 Td +133.16 247.353 Td +/F134_0 9.9626 Tf +(total_in) 47.8205 Tj +[1 0 0 1 180.98 247.353] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -180.98 -247.353] cm +[1 0 0 1 0 0] Tm +0 0 Td +183.471 247.353 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 200.348 247.353] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -200.348 -247.353] cm +[1 0 0 1 0 0] Tm +0 0 Td +200.348 247.353 Td +/F134_0 9.9626 Tf +(total_out) 53.798 Tj +[1 0 0 1 254.146 247.353] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -254.146 -247.353] cm +[1 0 0 1 0 0] Tm +0 0 Td +256.637 247.353 Td +/F130_0 9.9626 Tf +(will) 15.5018 Tj +-250 TJm +(be) 9.40469 Tj +-250 TJm +(zero.) 19.6363 Tj +[1 0 0 1 72 245.913] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -235.951] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 225.435 Td +/F130_0 9.9626 Tf +(F) 5.53921 Tj +15 TJm +(or) 8.29885 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(meaning) 34.3112 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(parameter) 39.8305 Tj +[1 0 0 1 192.756 225.435] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -192.756 -225.435] cm +[1 0 0 1 0 0] Tm +0 0 Td +192.756 225.435 Td +/F134_0 9.9626 Tf +(verbosity) 53.798 Tj +[1 0 0 1 246.554 225.435] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -246.554 -225.435] cm +[1 0 0 1 0 0] Tm +0 0 Td +246.554 225.435 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-250 TJm +(see) 12.7222 Tj +[1 0 0 1 266.748 225.435] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -266.748 -225.435] cm +[1 0 0 1 0 0] Tm +0 0 Td +266.748 225.435 Td +/F134_0 9.9626 Tf +(BZ2_bzCompressInit) 107.596 Tj +[1 0 0 1 374.345 225.435] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -374.345 -225.435] cm +[1 0 0 1 0 0] Tm +0 0 Td +374.345 225.435 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 223.278] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -213.315] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 203.517 Td +/F130_0 9.9626 Tf +(If) 6.63509 Tj +[1 0 0 1 81.4975 203.517] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -81.4975 -203.517] cm +[1 0 0 1 0 0] Tm +0 0 Td +81.4975 203.517 Td +/F134_0 9.9626 Tf +(small) 29.8878 Tj +[1 0 0 1 111.385 203.517] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -111.385 -203.517] cm +[1 0 0 1 0 0] Tm +0 0 Td +114.248 203.517 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-287 TJm +(nonzero,) 34.5802 Tj +-297 TJm +(the) 12.1743 Tj +-287 TJm +(library) 26.5603 Tj +-288 TJm +(will) 15.5018 Tj +-287 TJm +(use) 13.2801 Tj +-287 TJm +(an) 9.40469 Tj +-287 TJm +(alternati) 32.6474 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-288 TJm +(decompression) 59.7656 Tj +-287 TJm +(algorithm) 38.7446 Tj +-287 TJm +(which) 24.3486 Tj +-288 TJm +(uses) 17.1556 Tj +-287 TJm +(less) 14.9439 Tj +-287 TJm +(memory) 33.2053 Tj +-287 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-288 TJm +(at) 7.193 Tj +-287 TJm +(the) 12.1743 Tj +72 191.562 Td +(cost) 16.0497 Tj +-289 TJm +(of) 8.29885 Tj +-290 TJm +(decompressing) 59.7656 Tj +-289 TJm +(more) 20.4731 Tj +-289 TJm +(slo) 11.6264 Tj +25 TJm +(wly) 14.9439 Tj +-290 TJm +(\(roughly) 34.3112 Tj +-289 TJm +(speaking,) 37.9077 Tj +-299 TJm +(half) 15.4918 Tj +-290 TJm +(the) 12.1743 Tj +-289 TJm +(speed,) 25.1755 Tj +-299 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-289 TJm +(the) 12.1743 Tj +-290 TJm +(maximum) 40.4083 Tj +-289 TJm +(memory) 33.2053 Tj +-289 TJm +(requirement) 48.1393 Tj +-290 TJm +(drops) 22.1369 Tj +72 179.607 Td +(to) 7.7509 Tj +-250 TJm +(around) 27.6661 Tj +-250 TJm +(2300k\).) 30.7147 Tj +-620 TJm +(See) 14.386 Tj +[1 0 0 1 166.166 179.607] cm +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +[1 0 0 1 -166.166 -179.607] cm +[1 0 0 1 0 0] Tm +0 0 Td +166.166 179.607 Td +/F130_0 9.9626 Tf +(Ho) 12.1743 Tj +25 TJm +(w) 7.193 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(bzip2) 22.1369 Tj +[1 0 0 1 235.924 179.607] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +[1 0 0 1 -235.924 -179.607] cm +[1 0 0 1 0 0] Tm +0 0 Td +238.415 179.607 Td +/F130_0 9.9626 Tf +([2]) 11.6164 Tj +[1 0 0 1 250.031 179.607] cm +/DeviceRGB {} cs +[0 0 1] sc +/DeviceRGB {} CS +[0 0 1] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -250.031 -179.607] cm +[1 0 0 1 0 0] Tm +0 0 Td +252.522 179.607 Td +/F130_0 9.9626 Tf +(for) 11.6164 Tj +-250 TJm +(more) 20.4731 Tj +-250 TJm +(information) 47.0434 Tj +-250 TJm +(on) 9.9626 Tj +-250 TJm +(memory) 33.2053 Tj +-250 TJm +(management.) 53.3995 Tj +[1 0 0 1 72 177.45] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -167.487] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 157.689 Td +/F130_0 9.9626 Tf +(Note) 19.3673 Tj +-289 TJm +(that) 14.9439 Tj +-290 TJm +(the) 12.1743 Tj +-289 TJm +(amount) 29.8878 Tj +-289 TJm +(of) 8.29885 Tj +-289 TJm +(memory) 33.2053 Tj +-290 TJm +(needed) 28.2141 Tj +-289 TJm +(to) 7.7509 Tj +-289 TJm +(decompress) 47.0334 Tj +-289 TJm +(a) 4.42339 Tj +-290 TJm +(stream) 26.5603 Tj +-289 TJm +(cannot) 26.5603 Tj +-289 TJm +(be) 9.40469 Tj +-289 TJm +(determined) 44.8217 Tj +-290 TJm +(until) 18.2714 Tj +-289 TJm +(the) 12.1743 Tj +-289 TJm +(stream') 29.8778 Tj +55 TJm +(s) 3.87545 Tj +-289 TJm +(header) 26.5503 Tj +-290 TJm +(has) 13.2801 Tj +72 145.734 Td +(been) 18.8094 Tj +-342 TJm +(read,) 19.6363 Tj +-366 TJm +(so) 8.85675 Tj +-342 TJm +(e) 4.42339 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(en) 9.40469 Tj +-342 TJm +(if) 6.08715 Tj +[1 0 0 1 161.081 145.734] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -161.081 -145.734] cm +[1 0 0 1 0 0] Tm +0 0 Td +161.081 145.734 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompressInit) 119.551 Tj +[1 0 0 1 280.633 145.734] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -280.633 -145.734] cm +[1 0 0 1 0 0] Tm +0 0 Td +284.043 145.734 Td +/F130_0 9.9626 Tf +(succeeds,) 37.8977 Tj +-365 TJm +(a) 4.42339 Tj +-343 TJm +(subsequent) 44.2738 Tj +[1 0 0 1 381.098 145.734] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -381.098 -145.734] cm +[1 0 0 1 0 0] Tm +0 0 Td +381.098 145.734 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +[1 0 0 1 476.739 145.734] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -476.739 -145.734] cm +[1 0 0 1 0 0] Tm +0 0 Td +480.149 145.734 Td +/F130_0 9.9626 Tf +(could) 22.1369 Tj +-342 TJm +(f) 3.31755 Tj +10 TJm +(ail) 9.9626 Tj +-343 TJm +(with) 17.7135 Tj +[1 0 0 1 72 133.779] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -133.779] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 133.779 Td +/F134_0 9.9626 Tf +(BZ_MEM_ERROR) 71.7307 Tj +[1 0 0 1 143.731 133.779] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -143.731 -133.779] cm +[1 0 0 1 0 0] Tm +0 0 Td +143.731 133.779 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 132.469] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -122.506] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 111.861 Td +/F130_0 9.9626 Tf +(Possible) 33.2153 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues:) 23.2427 Tj +[1 0 0 1 72 111.761] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -60.9095] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7545] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -50.9514] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 50.9514 Td +/F130_0 9.9626 Tf +(16) 9.9626 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 20 20 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 76.4979 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -342.569 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F130_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +[1 0 0 1 496.556 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -496.556 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +496.556 749.245 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 544.376 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.305 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -5.0363] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -117.195] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 95.6413 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 92.0547] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -711.631] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 711.631 Td +/F134_0 9.9626 Tf +(BZ_CONFIG_ERROR) 89.6634 Tj +98.4879 699.676 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(library) 41.8429 Tj +-426 TJm +(has) 17.9327 Tj +-426 TJm +(been) 23.9102 Tj +-426 TJm +(mis-compiled) 71.7307 Tj +90 687.721 Td +(BZ_PARAM_ERROR) 83.6858 Tj +98.4879 675.766 Td +(if) 11.9551 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(small) 29.8878 Tj +-426 TJm +(!=) 11.9551 Tj +-426 TJm +(0) 5.97756 Tj +-426 TJm +(&&) 11.9551 Tj +-426 TJm +(small) 29.8878 Tj +-426 TJm +(!=) 11.9551 Tj +-426 TJm +(1) 5.97756 Tj +-426 TJm +(\)) 5.97756 Tj +98.4879 663.811 Td +(or) 11.9551 Tj +-426 TJm +(\(verbosity) 59.7756 Tj +-426 TJm +(<;) 11.9551 Tj +-426 TJm +(0) 5.97756 Tj +-426 TJm +(||) 11.9551 Tj +-426 TJm +(verbosity) 53.798 Tj +-426 TJm +(>) 5.97756 Tj +-426 TJm +(4\)) 11.9551 Tj +90 651.856 Td +(BZ_MEM_ERROR) 71.7307 Tj +98.4879 639.9 Td +(if) 11.9551 Tj +-426 TJm +(insufficient) 71.7307 Tj +-426 TJm +(memory) 35.8654 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(available) 53.798 Tj +[1 0 0 1 72 624.359] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5865] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -614.396] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 602.441 Td +/F130_0 9.9626 Tf +(Allo) 17.7135 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(able) 16.5977 Tj +-250 TJm +(ne) 9.40469 Tj +15 TJm +(xt) 7.7509 Tj +-250 TJm +(actions:) 30.9936 Tj +[1 0 0 1 72 602.341] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -48.8169] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 47.8207 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 44.2341] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -592.976] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 592.976 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +98.4879 581.021 Td +(if) 11.9551 Tj +-426 TJm +(BZ_OK) 29.8878 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(returned) 47.8205 Tj +98.4879 569.066 Td +(no) 11.9551 Tj +-426 TJm +(specific) 47.8205 Tj +-426 TJm +(action) 35.8654 Tj +-426 TJm +(required) 47.8205 Tj +-426 TJm +(in) 11.9551 Tj +-426 TJm +(case) 23.9102 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(error) 29.8878 Tj +[1 0 0 1 72 553.524] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -543.562] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 522.903 Td +/F122_0 17.2154 Tf +(3.3.5.) 43.0729 Tj +[1 0 0 1 119.858 522.903] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -119.858 -522.903] cm +[1 0 0 1 0 0] Tm +0 0 Td +119.858 522.903 Td +/F392_0 17.2154 Tf +(BZ2_bzDecompress) 165.268 Tj +[1 0 0 1 285.126 522.903] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -213.126 -2.3327] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -24.9066] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 23.9103 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 20.3237] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3685] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -511.206] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 511.206 Td +/F134_0 9.9626 Tf +(int) 17.9327 Tj +-426 TJm +(BZ2_bzDecompress) 95.641 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(bz_stream) 53.798 Tj +280.326 509.462 Td +(*) 5.97756 Tj +286.303 511.206 Td +(strm) 23.9102 Tj +-426 TJm +(\);) 11.9551 Tj +[1 0 0 1 72 495.664] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -485.701] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 473.746 Td +/F130_0 9.9626 Tf +(Pro) 13.8381 Tj +15 TJm +(vides) 21.031 Tj +-301 TJm +(more) 20.4731 Tj +-302 TJm +(input) 20.4831 Tj +-301 TJm +(and/out) 29.8878 Tj +-302 TJm +(output) 25.4644 Tj +-301 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +-301 TJm +(space) 22.1269 Tj +-302 TJm +(for) 11.6164 Tj +-301 TJm +(the) 12.1743 Tj +-302 TJm +(library) 26.5603 Tj +65 TJm +(.) 2.49065 Tj +-928 TJm +(The) 15.4918 Tj +-301 TJm +(caller) 22.1269 Tj +-302 TJm +(maintains) 38.7446 Tj +-301 TJm +(input) 20.4831 Tj +-302 TJm +(and) 14.386 Tj +-301 TJm +(output) 25.4644 Tj +-301 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fers,) 17.4246 Tj +-315 TJm +(and) 14.386 Tj +72 461.791 Td +(uses) 17.1556 Tj +[1 0 0 1 91.6461 461.791] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -91.6461 -461.791] cm +[1 0 0 1 0 0] Tm +0 0 Td +91.6461 461.791 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +[1 0 0 1 187.287 461.791] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -187.287 -461.791] cm +[1 0 0 1 0 0] Tm +0 0 Td +189.778 461.791 Td +/F130_0 9.9626 Tf +(to) 7.7509 Tj +-250 TJm +(transfer) 30.4258 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(between) 33.1954 Tj +-250 TJm +(them.) 22.4159 Tj +[1 0 0 1 72 460.257] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -450.294] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 439.873 Td +/F130_0 9.9626 Tf +(Before) 27.1082 Tj +-498 TJm +(each) 18.2515 Tj +-499 TJm +(call) 14.386 Tj +-498 TJm +(to) 7.7509 Tj +[1 0 0 1 159.356 439.873] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -159.356 -439.873] cm +[1 0 0 1 0 0] Tm +0 0 Td +159.356 439.873 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +[1 0 0 1 254.997 439.873] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -254.997 -439.873] cm +[1 0 0 1 0 0] Tm +0 0 Td +254.997 439.873 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 263.071 439.873] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -263.071 -439.873] cm +[1 0 0 1 0 0] Tm +0 0 Td +263.071 439.873 Td +/F134_0 9.9626 Tf +(next_in) 41.8429 Tj +[1 0 0 1 304.914 439.873] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -304.914 -439.873] cm +[1 0 0 1 0 0] Tm +0 0 Td +309.879 439.873 Td +/F130_0 9.9626 Tf +(should) 26.5703 Tj +-498 TJm +(point) 20.4831 Tj +-499 TJm +(at) 7.193 Tj +-498 TJm +(the) 12.1743 Tj +-498 TJm +(compressed) 47.0334 Tj +-499 TJm +(data,) 19.0883 Tj +-560 TJm +(and) 14.386 Tj +[1 0 0 1 492.179 439.873] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -492.179 -439.873] cm +[1 0 0 1 0 0] Tm +0 0 Td +492.179 439.873 Td +/F134_0 9.9626 Tf +(avail_in) 47.8205 Tj +[1 0 0 1 540 439.873] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -540 -439.873] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 427.918 Td +/F130_0 9.9626 Tf +(should) 26.5703 Tj +-308 TJm +(indicate) 31.5416 Tj +-308 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-309 TJm +(man) 17.1556 Tj +15 TJm +(y) 4.9813 Tj +-308 TJm +(bytes) 21.031 Tj +-308 TJm +(the) 12.1743 Tj +-308 TJm +(library) 26.5603 Tj +-308 TJm +(may) 17.1556 Tj +-309 TJm +(read.) 19.6363 Tj +[1 0 0 1 294.955 427.918] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -294.955 -427.918] cm +[1 0 0 1 0 0] Tm +0 0 Td +294.955 427.918 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +[1 0 0 1 390.597 427.918] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -390.597 -427.918] cm +[1 0 0 1 0 0] Tm +0 0 Td +393.667 427.918 Td +/F130_0 9.9626 Tf +(updates) 30.4357 Tj +[1 0 0 1 427.173 427.918] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -427.173 -427.918] cm +[1 0 0 1 0 0] Tm +0 0 Td +427.173 427.918 Td +/F134_0 9.9626 Tf +(next_in) 41.8429 Tj +[1 0 0 1 469.016 427.918] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -469.016 -427.918] cm +[1 0 0 1 0 0] Tm +0 0 Td +469.016 427.918 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 474.723 427.918] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -474.723 -427.918] cm +[1 0 0 1 0 0] Tm +0 0 Td +474.723 427.918 Td +/F134_0 9.9626 Tf +(avail_in) 47.8205 Tj +[1 0 0 1 522.543 427.918] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -522.543 -427.918] cm +[1 0 0 1 0 0] Tm +0 0 Td +525.614 427.918 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 72 415.963] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -415.963] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 415.963 Td +/F134_0 9.9626 Tf +(total_in) 47.8205 Tj +[1 0 0 1 119.821 415.963] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -119.821 -415.963] cm +[1 0 0 1 0 0] Tm +0 0 Td +122.311 415.963 Td +/F130_0 9.9626 Tf +(to) 7.7509 Tj +-250 TJm +(re\003ect) 24.8965 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(number) 30.4357 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(bytes) 21.031 Tj +-250 TJm +(it) 5.53921 Tj +-250 TJm +(has) 13.2801 Tj +-250 TJm +(read.) 19.6363 Tj +[1 0 0 1 72 413.806] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -403.843] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 394.045 Td +/F130_0 9.9626 Tf +(Similarly) 37.0908 Tj +65 TJm +(,) 2.49065 Tj +[1 0 0 1 113.799 394.045] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -113.799 -394.045] cm +[1 0 0 1 0 0] Tm +0 0 Td +113.799 394.045 Td +/F134_0 9.9626 Tf +(next_out) 47.8205 Tj +[1 0 0 1 161.62 394.045] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -161.62 -394.045] cm +[1 0 0 1 0 0] Tm +0 0 Td +164.41 394.045 Td +/F130_0 9.9626 Tf +(should) 26.5703 Tj +-280 TJm +(point) 20.4831 Tj +-280 TJm +(to) 7.7509 Tj +-280 TJm +(a) 4.42339 Tj +-280 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +-280 TJm +(in) 7.7509 Tj +-281 TJm +(which) 24.3486 Tj +-280 TJm +(the) 12.1743 Tj +-280 TJm +(uncompressed) 56.996 Tj +-280 TJm +(output) 25.4644 Tj +-280 TJm +(is) 6.64505 Tj +-280 TJm +(to) 7.7509 Tj +-280 TJm +(be) 9.40469 Tj +-280 TJm +(placed,) 28.493 Tj +-288 TJm +(with) 17.7135 Tj +[1 0 0 1 486.202 394.045] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -486.202 -394.045] cm +[1 0 0 1 0 0] Tm +0 0 Td +486.202 394.045 Td +/F134_0 9.9626 Tf +(avail_out) 53.798 Tj +[1 0 0 1 540 394.045] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -540 -394.045] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 382.09 Td +/F130_0 9.9626 Tf +(indicating) 39.8504 Tj +-525 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-524 TJm +(much) 22.1369 Tj +-525 TJm +(output) 25.4644 Tj +-524 TJm +(space) 22.1269 Tj +-525 TJm +(is) 6.64505 Tj +-525 TJm +(a) 4.42339 Tj +20 TJm +(v) 4.9813 Tj +25 TJm +(ailable.) 29.0509 Tj +[1 0 0 1 285.792 382.09] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -285.792 -382.09] cm +[1 0 0 1 0 0] Tm +0 0 Td +285.792 382.09 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 369.478 382.09] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -369.478 -382.09] cm +[1 0 0 1 0 0] Tm +0 0 Td +374.705 382.09 Td +/F130_0 9.9626 Tf +(updates) 30.4357 Tj +[1 0 0 1 410.367 382.09] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -410.367 -382.09] cm +[1 0 0 1 0 0] Tm +0 0 Td +410.367 382.09 Td +/F134_0 9.9626 Tf +(next_out) 47.8205 Tj +[1 0 0 1 458.188 382.09] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -458.188 -382.09] cm +[1 0 0 1 0 0] Tm +0 0 Td +458.188 382.09 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 466.589 382.09] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -466.589 -382.09] cm +[1 0 0 1 0 0] Tm +0 0 Td +466.589 382.09 Td +/F134_0 9.9626 Tf +(avail_out) 53.798 Tj +[1 0 0 1 520.387 382.09] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -520.387 -382.09] cm +[1 0 0 1 0 0] Tm +0 0 Td +525.614 382.09 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 72 370.135] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -370.135] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 370.135 Td +/F134_0 9.9626 Tf +(total_out) 53.798 Tj +[1 0 0 1 125.798 370.135] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -125.798 -370.135] cm +[1 0 0 1 0 0] Tm +0 0 Td +128.289 370.135 Td +/F130_0 9.9626 Tf +(to) 7.7509 Tj +-250 TJm +(re\003ect) 24.8965 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(number) 30.4357 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(bytes) 21.031 Tj +-250 TJm +(output.) 27.9551 Tj +[1 0 0 1 72 367.978] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -358.015] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 348.217 Td +/F130_0 9.9626 Tf +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-320 TJm +(may) 17.1556 Tj +-321 TJm +(pro) 13.2801 Tj +15 TJm +(vide) 17.1556 Tj +-320 TJm +(and) 14.386 Tj +-321 TJm +(remo) 20.4731 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-320 TJm +(as) 8.29885 Tj +-321 TJm +(little) 18.2714 Tj +-320 TJm +(or) 8.29885 Tj +-320 TJm +(as) 8.29885 Tj +-321 TJm +(much) 22.1369 Tj +-320 TJm +(data) 16.5977 Tj +-321 TJm +(as) 8.29885 Tj +-320 TJm +(you) 14.9439 Tj +-321 TJm +(lik) 10.5205 Tj +10 TJm +(e) 4.42339 Tj +-320 TJm +(on) 9.9626 Tj +-320 TJm +(each) 18.2515 Tj +-321 TJm +(call) 14.386 Tj +-320 TJm +(of) 8.29885 Tj +[1 0 0 1 407.816 348.217] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -407.816 -348.217] cm +[1 0 0 1 0 0] Tm +0 0 Td +407.816 348.217 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +[1 0 0 1 503.457 348.217] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -503.457 -348.217] cm +[1 0 0 1 0 0] Tm +0 0 Td +503.457 348.217 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-1043 TJm +(In) 8.29885 Tj +-320 TJm +(the) 12.1743 Tj +72 336.262 Td +(limit,) 21.32 Tj +-295 TJm +(it) 5.53921 Tj +-286 TJm +(is) 6.64505 Tj +-287 TJm +(acceptable) 42.0422 Tj +-286 TJm +(to) 7.7509 Tj +-286 TJm +(supply) 26.5703 Tj +-286 TJm +(and) 14.386 Tj +-287 TJm +(remo) 20.4731 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-286 TJm +(data) 16.5977 Tj +-286 TJm +(one) 14.386 Tj +-286 TJm +(byte) 17.1556 Tj +-287 TJm +(at) 7.193 Tj +-286 TJm +(a) 4.42339 Tj +-286 TJm +(time,) 20.2042 Tj +-295 TJm +(although) 34.8691 Tj +-286 TJm +(this) 14.396 Tj +-287 TJm +(w) 7.193 Tj +10 TJm +(ould) 17.7135 Tj +-286 TJm +(be) 9.40469 Tj +-286 TJm +(terribly) 29.3299 Tj +-286 TJm +(inef) 15.4918 Tj +25 TJm +(\002cient.) 27.3972 Tj +-838 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +72 324.306 Td +(should) 26.5703 Tj +-250 TJm +(al) 7.193 Tj +10 TJm +(w) 7.193 Tj +10 TJm +(ays) 13.2801 Tj +-250 TJm +(ensure) 26.0024 Tj +-250 TJm +(that) 14.9439 Tj +-250 TJm +(at) 7.193 Tj +-250 TJm +(least) 18.2614 Tj +-250 TJm +(one) 14.386 Tj +-250 TJm +(byte) 17.1556 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(output) 25.4644 Tj +-250 TJm +(space) 22.1269 Tj +-250 TJm +(is) 6.64505 Tj +-250 TJm +(a) 4.42339 Tj +20 TJm +(v) 4.9813 Tj +25 TJm +(ailable) 26.5603 Tj +-250 TJm +(at) 7.193 Tj +-250 TJm +(each) 18.2515 Tj +-250 TJm +(call.) 16.8766 Tj +[1 0 0 1 72 322.15] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -312.187] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 302.389 Td +/F130_0 9.9626 Tf +(Use) 15.4918 Tj +-250 TJm +(of) 8.29885 Tj +[1 0 0 1 100.772 302.389] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -100.772 -302.389] cm +[1 0 0 1 0 0] Tm +0 0 Td +100.772 302.389 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +[1 0 0 1 196.413 302.389] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -196.413 -302.389] cm +[1 0 0 1 0 0] Tm +0 0 Td +198.904 302.389 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-250 TJm +(simpler) 29.8878 Tj +-250 TJm +(than) 17.1556 Tj +[1 0 0 1 260.064 302.389] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -260.064 -302.389] cm +[1 0 0 1 0 0] Tm +0 0 Td +260.064 302.389 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 343.75 302.389] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -343.75 -302.389] cm +[1 0 0 1 0 0] Tm +0 0 Td +343.75 302.389 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 300.232] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -290.269] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 280.471 Td +/F130_0 9.9626 Tf +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-346 TJm +(should) 26.5703 Tj +-347 TJm +(pro) 13.2801 Tj +15 TJm +(vide) 17.1556 Tj +-346 TJm +(input) 20.4831 Tj +-346 TJm +(and) 14.386 Tj +-346 TJm +(remo) 20.4731 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-347 TJm +(output) 25.4644 Tj +-346 TJm +(as) 8.29885 Tj +-346 TJm +(described) 38.1767 Tj +-346 TJm +(abo) 14.386 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e,) 6.91404 Tj +-371 TJm +(and) 14.386 Tj +-346 TJm +(repeatedly) 41.4942 Tj +-346 TJm +(call) 14.386 Tj +[1 0 0 1 422.638 280.471] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -422.638 -280.471] cm +[1 0 0 1 0 0] Tm +0 0 Td +422.638 280.471 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +[1 0 0 1 518.279 280.471] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -518.279 -280.471] cm +[1 0 0 1 0 0] Tm +0 0 Td +521.729 280.471 Td +/F130_0 9.9626 Tf +(until) 18.2714 Tj +[1 0 0 1 72 268.516] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -268.516] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 268.516 Td +/F134_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +[1 0 0 1 149.709 268.516] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -149.709 -268.516] cm +[1 0 0 1 0 0] Tm +0 0 Td +152.314 268.516 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-262 TJm +(returned.) 35.686 Tj +-344 TJm +(Appearance) 47.5714 Tj +-262 TJm +(of) 8.29885 Tj +[1 0 0 1 261.767 268.516] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -261.767 -268.516] cm +[1 0 0 1 0 0] Tm +0 0 Td +261.767 268.516 Td +/F134_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +[1 0 0 1 339.475 268.516] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -339.475 -268.516] cm +[1 0 0 1 0 0] Tm +0 0 Td +342.081 268.516 Td +/F130_0 9.9626 Tf +(denotes) 30.4357 Tj +-262 TJm +(that) 14.9439 Tj +[1 0 0 1 392.672 268.516] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -392.672 -268.516] cm +[1 0 0 1 0 0] Tm +0 0 Td +392.672 268.516 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +[1 0 0 1 488.313 268.516] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -488.313 -268.516] cm +[1 0 0 1 0 0] Tm +0 0 Td +490.919 268.516 Td +/F130_0 9.9626 Tf +(has) 13.2801 Tj +-262 TJm +(detected) 33.1954 Tj +72 256.561 Td +(the) 12.1743 Tj +-212 TJm +(logical) 27.1182 Tj +-212 TJm +(end) 14.386 Tj +-211 TJm +(of) 8.29885 Tj +-212 TJm +(the) 12.1743 Tj +-212 TJm +(compressed) 47.0334 Tj +-212 TJm +(stream.) 29.0509 Tj +[1 0 0 1 237.858 256.561] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -237.858 -256.561] cm +[1 0 0 1 0 0] Tm +0 0 Td +237.858 256.561 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +[1 0 0 1 333.499 256.561] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -333.499 -256.561] cm +[1 0 0 1 0 0] Tm +0 0 Td +335.609 256.561 Td +/F130_0 9.9626 Tf +(will) 15.5018 Tj +-212 TJm +(not) 12.7322 Tj +-212 TJm +(produce) 32.0895 Tj +[1 0 0 1 402.263 256.561] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -402.263 -256.561] cm +[1 0 0 1 0 0] Tm +0 0 Td +402.263 256.561 Td +/F134_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +[1 0 0 1 479.972 256.561] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -479.972 -256.561] cm +[1 0 0 1 0 0] Tm +0 0 Td +482.082 256.561 Td +/F130_0 9.9626 Tf +(until) 18.2714 Tj +-212 TJm +(all) 9.9626 Tj +-212 TJm +(output) 25.4644 Tj +72 244.605 Td +(data) 16.5977 Tj +-256 TJm +(has) 13.2801 Tj +-256 TJm +(been) 18.8094 Tj +-255 TJm +(placed) 26.0024 Tj +-256 TJm +(into) 15.5018 Tj +-256 TJm +(the) 12.1743 Tj +-256 TJm +(output) 25.4644 Tj +-256 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +40 TJm +(,) 2.49065 Tj +-257 TJm +(so) 8.85675 Tj +-256 TJm +(once) 18.8094 Tj +[1 0 0 1 278.978 244.605] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.978 -244.605] cm +[1 0 0 1 0 0] Tm +0 0 Td +278.978 244.605 Td +/F134_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +[1 0 0 1 356.687 244.605] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -356.687 -244.605] cm +[1 0 0 1 0 0] Tm +0 0 Td +359.236 244.605 Td +/F130_0 9.9626 Tf +(appears,) 32.9164 Tj +-257 TJm +(you) 14.9439 Tj +-256 TJm +(are) 12.1643 Tj +-256 TJm +(guaranteed) 43.7059 Tj +-256 TJm +(to) 7.7509 Tj +-256 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-255 TJm +(a) 4.42339 Tj +20 TJm +(v) 4.9813 Tj +25 TJm +(ailable) 26.5603 Tj +72 232.65 Td +(all) 9.9626 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(decompressed) 56.4381 Tj +-250 TJm +(output,) 27.9551 Tj +-250 TJm +(and) 14.386 Tj +[1 0 0 1 205.369 232.65] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -205.369 -232.65] cm +[1 0 0 1 0 0] Tm +0 0 Td +205.369 232.65 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompressEnd) 113.574 Tj +[1 0 0 1 318.943 232.65] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -318.943 -232.65] cm +[1 0 0 1 0 0] Tm +0 0 Td +321.433 232.65 Td +/F130_0 9.9626 Tf +(can) 13.8281 Tj +-250 TJm +(safely) 23.7907 Tj +-250 TJm +(be) 9.40469 Tj +-250 TJm +(called.) 26.2813 Tj +[1 0 0 1 72 230.493] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -220.531] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 210.732 Td +/F130_0 9.9626 Tf +(If) 6.63509 Tj +-250 TJm +(case) 17.1456 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(an) 9.40469 Tj +-250 TJm +(error) 19.3573 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alue,) 19.0883 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(should) 26.5703 Tj +-250 TJm +(call) 14.386 Tj +[1 0 0 1 261.259 210.732] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -261.259 -210.732] cm +[1 0 0 1 0 0] Tm +0 0 Td +261.259 210.732 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompressEnd) 113.574 Tj +[1 0 0 1 374.833 210.732] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -374.833 -210.732] cm +[1 0 0 1 0 0] Tm +0 0 Td +377.323 210.732 Td +/F130_0 9.9626 Tf +(to) 7.7509 Tj +-250 TJm +(clean) 21.0211 Tj +-250 TJm +(up) 9.9626 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(release) 27.6562 Tj +-250 TJm +(memory) 33.2053 Tj +65 TJm +(.) 2.49065 Tj +[1 0 0 1 72 208.576] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -198.613] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 188.815 Td +/F130_0 9.9626 Tf +(Possible) 33.2153 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues:) 23.2427 Tj +[1 0 0 1 72 188.715] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -137.863] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7545] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -50.9514] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 50.9514 Td +/F130_0 9.9626 Tf +(17) 9.9626 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 21 21 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 76.4979 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -342.569 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F130_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +[1 0 0 1 496.556 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -496.556 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +496.556 749.245 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 544.376 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.305 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -5.0363] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -200.882] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 179.328 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 175.741] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -711.631] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 711.631 Td +/F134_0 9.9626 Tf +(BZ_PARAM_ERROR) 83.6858 Tj +98.4879 699.676 Td +(if) 11.9551 Tj +-426 TJm +(strm) 23.9102 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(strm->s) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +98.4879 687.721 Td +(or) 11.9551 Tj +-426 TJm +(strm->avail_out) 89.6634 Tj +-426 TJm +(<) 5.97756 Tj +-426 TJm +(1) 5.97756 Tj +90 675.766 Td +(BZ_DATA_ERROR) 77.7083 Tj +98.4879 663.811 Td +(if) 11.9551 Tj +-426 TJm +(a) 5.97756 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(integrity) 53.798 Tj +-426 TJm +(error) 29.8878 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(detected) 47.8205 Tj +-426 TJm +(in) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +-426 TJm +(stream) 35.8654 Tj +90 651.856 Td +(BZ_DATA_ERROR_MAGIC) 113.574 Tj +98.4879 639.9 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +-426 TJm +(stream) 35.8654 Tj +-426 TJm +(doesn't) 41.8429 Tj +-426 TJm +(begin) 29.8878 Tj +-426 TJm +(with) 23.9102 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(right) 29.8878 Tj +-426 TJm +(magic) 29.8878 Tj +-426 TJm +(bytes) 29.8878 Tj +90 627.945 Td +(BZ_MEM_ERROR) 71.7307 Tj +98.4879 615.99 Td +(if) 11.9551 Tj +-426 TJm +(there) 29.8878 Tj +-426 TJm +(wasn't) 35.8654 Tj +-426 TJm +(enough) 35.8654 Tj +-426 TJm +(memory) 35.8654 Tj +-426 TJm +(available) 53.798 Tj +90 604.035 Td +(BZ_STREAM_END) 77.7083 Tj +98.4879 592.08 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(logical) 41.8429 Tj +-426 TJm +(end) 17.9327 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(stream) 35.8654 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(detected) 47.8205 Tj +-426 TJm +(and) 17.9327 Tj +-426 TJm +(all) 17.9327 Tj +98.4879 580.125 Td +(output) 35.8654 Tj +-426 TJm +(in) 11.9551 Tj +-426 TJm +(has) 17.9327 Tj +-426 TJm +(been) 23.9102 Tj +-426 TJm +(consumed,) 53.798 Tj +-426 TJm +(eg) 11.9551 Tj +-426 TJm +(s-->avail_out) 77.7083 Tj +-426 TJm +(>) 5.97756 Tj +-426 TJm +(0) 5.97756 Tj +90 568.169 Td +(BZ_OK) 29.8878 Tj +98.4879 556.214 Td +(otherwise) 53.798 Tj +[1 0 0 1 72 540.673] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -530.71] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 518.755 Td +/F130_0 9.9626 Tf +(Allo) 17.7135 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(able) 16.5977 Tj +-250 TJm +(ne) 9.40469 Tj +15 TJm +(xt) 7.7509 Tj +-250 TJm +(actions:) 30.9936 Tj +[1 0 0 1 72 518.655] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -60.7721] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 59.7758 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 56.1892] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -509.29] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 509.29 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +98.4879 497.335 Td +(if) 11.9551 Tj +-426 TJm +(BZ_OK) 29.8878 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(returned) 47.8205 Tj +90 485.38 Td +(BZ2_bzDecompressEnd) 113.574 Tj +98.4879 473.425 Td +(otherwise) 53.798 Tj +[1 0 0 1 72 457.883] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -447.92] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 427.262 Td +/F122_0 17.2154 Tf +(3.3.6.) 43.0729 Tj +[1 0 0 1 119.858 427.262] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -119.858 -427.262] cm +[1 0 0 1 0 0] Tm +0 0 Td +119.858 427.262 Td +/F392_0 17.2154 Tf +(BZ2_bzDecompressEnd) 196.256 Tj +[1 0 0 1 316.114 427.262] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -244.114 -2.3326] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -24.9066] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 23.9103 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 20.3237] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -415.564] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 415.564 Td +/F134_0 9.9626 Tf +(int) 17.9327 Tj +-426 TJm +(BZ2_bzDecompressEnd) 113.574 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(bz_stream) 53.798 Tj +298.259 413.821 Td +(*) 5.97756 Tj +304.236 415.564 Td +(strm) 23.9102 Tj +-426 TJm +(\);) 11.9551 Tj +[1 0 0 1 72 400.023] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -390.06] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 378.105 Td +/F130_0 9.9626 Tf +(Releases) 34.8591 Tj +-250 TJm +(all) 9.9626 Tj +-250 TJm +(memory) 33.2053 Tj +-250 TJm +(associated) 40.9463 Tj +-250 TJm +(with) 17.7135 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(decompression) 59.7656 Tj +-250 TJm +(stream.) 29.0509 Tj +[1 0 0 1 72 375.948] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -365.985] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 356.187 Td +/F130_0 9.9626 Tf +(Possible) 33.2153 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues:) 23.2427 Tj +[1 0 0 1 72 356.087] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -60.7721] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 59.7758 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 56.1893] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -346.723] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 346.723 Td +/F134_0 9.9626 Tf +(BZ_PARAM_ERROR) 83.6858 Tj +98.4879 334.767 Td +(if) 11.9551 Tj +-426 TJm +(strm) 23.9102 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(strm->s) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +90 322.812 Td +(BZ_OK) 29.8878 Tj +98.4879 310.857 Td +(otherwise) 53.798 Tj +[1 0 0 1 72 295.315] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -285.353] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 273.397 Td +/F130_0 9.9626 Tf +(Allo) 17.7135 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(able) 16.5977 Tj +-250 TJm +(ne) 9.40469 Tj +15 TJm +(xt) 7.7509 Tj +-250 TJm +(actions:) 30.9936 Tj +[1 0 0 1 72 273.298] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -24.9066] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 23.9103 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 20.3237] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -263.933] cm +[1 0 0 1 0 0] Tm +0 0 Td +98.4879 263.933 Td +/F134_0 9.9626 Tf +(None.) 29.8878 Tj +[1 0 0 1 72 248.391] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -238.429] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 213.639 Td +/F122_0 20.6585 Tf +(3.4.) 34.4584 Tj +-278 TJm +(High-le) 70.0117 Tj +15 TJm +(vel) 28.7153 Tj +-278 TJm +(interface) 86.1046 Tj +[1 0 0 1 72 209.042] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -199.08] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 191.721 Td +/F130_0 9.9626 Tf +(This) 17.7135 Tj +-250 TJm +(interf) 21.579 Tj +10 TJm +(ace) 13.2702 Tj +-250 TJm +(pro) 13.2801 Tj +15 TJm +(vides) 21.031 Tj +-250 TJm +(functions) 37.0808 Tj +-250 TJm +(for) 11.6164 Tj +-250 TJm +(reading) 29.8778 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(writing) 28.782 Tj +[1 0 0 1 300.292 191.721] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -300.292 -191.721] cm +[1 0 0 1 0 0] Tm +0 0 Td +300.292 191.721 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 330.18 191.721] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -330.18 -191.721] cm +[1 0 0 1 0 0] Tm +0 0 Td +332.67 191.721 Td +/F130_0 9.9626 Tf +(format) 26.5603 Tj +-250 TJm +(\002les.) 19.0983 Tj +-620 TJm +(First,) 20.7621 Tj +-250 TJm +(some) 21.031 Tj +-250 TJm +(general) 29.3199 Tj +-250 TJm +(points.) 26.8492 Tj +[1 0 0 1 72 189.564] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -29.7236] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.9739 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -78.9739 -159.84] cm +[1 0 0 1 0 0] Tm +0 0 Td +78.9739 159.84 Td +/F130_0 9.9626 Tf +(\225) 3.48691 Tj +[1 0 0 1 82.4608 159.84] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 1.9925 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -86.944 -159.84] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 159.84 Td +/F130_0 9.9626 Tf +(All) 12.7322 Tj +-332 TJm +(of) 8.29885 Tj +-331 TJm +(the) 12.1743 Tj +-332 TJm +(functions) 37.0808 Tj +-332 TJm +(tak) 12.1743 Tj +10 TJm +(e) 4.42339 Tj +-331 TJm +(an) 9.40469 Tj +[1 0 0 1 202.958 159.84] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -202.958 -159.84] cm +[1 0 0 1 0 0] Tm +0 0 Td +202.958 159.84 Td +/F134_0 9.9626 Tf +(int) 17.9327 Tj +220.891 158.097 Td +(*) 5.97756 Tj +[1 0 0 1 226.868 159.84] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -226.868 -159.84] cm +[1 0 0 1 0 0] Tm +0 0 Td +230.172 159.84 Td +/F130_0 9.9626 Tf +(\002rst) 15.5018 Tj +-332 TJm +(ar) 7.74094 Tj +18 TJm +(gument,) 32.3785 Tj +[1 0 0 1 292.426 159.84] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -292.426 -159.84] cm +[1 0 0 1 0 0] Tm +0 0 Td +292.426 159.84 Td +/F134_0 9.9626 Tf +(bzerror) 41.8429 Tj +[1 0 0 1 334.269 159.84] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -334.269 -159.84] cm +[1 0 0 1 0 0] Tm +0 0 Td +334.269 159.84 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-1110 TJm +(After) 21.0211 Tj +-332 TJm +(each) 18.2515 Tj +-331 TJm +(call,) 16.8766 Tj +[1 0 0 1 414.083 159.84] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -414.083 -159.84] cm +[1 0 0 1 0 0] Tm +0 0 Td +414.083 159.84 Td +/F134_0 9.9626 Tf +(bzerror) 41.8429 Tj +[1 0 0 1 455.926 159.84] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -455.926 -159.84] cm +[1 0 0 1 0 0] Tm +0 0 Td +459.23 159.84 Td +/F130_0 9.9626 Tf +(should) 26.5703 Tj +-332 TJm +(be) 9.40469 Tj +-331 TJm +(consulted) 38.1866 Tj +86.944 147.885 Td +(\002rst) 15.5018 Tj +-349 TJm +(to) 7.7509 Tj +-349 TJm +(determine) 39.8404 Tj +-348 TJm +(the) 12.1743 Tj +-349 TJm +(outcome) 34.3112 Tj +-349 TJm +(of) 8.29885 Tj +-349 TJm +(the) 12.1743 Tj +-348 TJm +(call.) 16.8766 Tj +-1213 TJm +(If) 6.63509 Tj +[1 0 0 1 280.386 147.885] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -280.386 -147.885] cm +[1 0 0 1 0 0] Tm +0 0 Td +280.386 147.885 Td +/F134_0 9.9626 Tf +(bzerror) 41.8429 Tj +[1 0 0 1 322.229 147.885] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -322.229 -147.885] cm +[1 0 0 1 0 0] Tm +0 0 Td +325.704 147.885 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +[1 0 0 1 335.824 147.885] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -335.824 -147.885] cm +[1 0 0 1 0 0] Tm +0 0 Td +335.824 147.885 Td +/F134_0 9.9626 Tf +(BZ_OK) 29.8878 Tj +[1 0 0 1 365.711 147.885] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -365.711 -147.885] cm +[1 0 0 1 0 0] Tm +0 0 Td +365.711 147.885 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-349 TJm +(the) 12.1743 Tj +-349 TJm +(call) 14.386 Tj +-348 TJm +(completed) 41.5042 Tj +-349 TJm +(successfully) 48.6972 Tj +65 TJm +(,) 2.49065 Tj +-374 TJm +(and) 14.386 Tj +-348 TJm +(only) 17.7135 Tj +86.944 135.93 Td +(then) 17.1556 Tj +-271 TJm +(should) 26.5703 Tj +-270 TJm +(the) 12.1743 Tj +-271 TJm +(return) 23.7907 Tj +-270 TJm +(v) 4.9813 Tj +25 TJm +(alue) 16.5977 Tj +-271 TJm +(of) 8.29885 Tj +-271 TJm +(the) 12.1743 Tj +-270 TJm +(function) 33.2053 Tj +-271 TJm +(\(if) 9.40469 Tj +-270 TJm +(an) 9.40469 Tj +15 TJm +(y\)) 8.29885 Tj +-271 TJm +(be) 9.40469 Tj +-271 TJm +(cons) 18.2614 Tj +1 TJm +(u) 4.9813 Tj +-1 TJm +(l) 2.7696 Tj +1 TJm +(ted.) 14.6649 Tj +-744 TJm +(If) 6.63509 Tj +[1 0 0 1 365.077 135.93] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -365.077 -135.93] cm +[1 0 0 1 0 0] Tm +0 0 Td +365.077 135.93 Td +/F134_0 9.9626 Tf +(bzerror) 41.8429 Tj +[1 0 0 1 406.92 135.93] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -406.92 -135.93] cm +[1 0 0 1 0 0] Tm +0 0 Td +409.616 135.93 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +[1 0 0 1 418.956 135.93] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -418.956 -135.93] cm +[1 0 0 1 0 0] Tm +0 0 Td +418.956 135.93 Td +/F134_0 9.9626 Tf +(BZ_IO_ERROR) 65.7532 Tj +[1 0 0 1 484.71 135.93] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -484.71 -135.93] cm +[1 0 0 1 0 0] Tm +0 0 Td +484.71 135.93 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-271 TJm +(there) 19.9152 Tj +-270 TJm +(w) 7.193 Tj +10 TJm +(as) 8.29885 Tj +-271 TJm +(an) 9.40469 Tj +86.944 123.975 Td +(error) 19.3573 Tj +-246 TJm +(reading/writing) 61.4294 Tj +-245 TJm +(the) 12.1743 Tj +-246 TJm +(underlying) 43.1679 Tj +-246 TJm +(compressed) 47.0334 Tj +-245 TJm +(\002le,) 15.2229 Tj +-247 TJm +(and) 14.386 Tj +-245 TJm +(you) 14.9439 Tj +-246 TJm +(should) 26.5703 Tj +-246 TJm +(then) 17.1556 Tj +-245 TJm +(consult) 28.782 Tj +[1 0 0 1 414.096 123.975] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -414.096 -123.975] cm +[1 0 0 1 0 0] Tm +0 0 Td +414.096 123.975 Td +/F134_0 9.9626 Tf +(errno) 29.8878 Tj +[1 0 0 1 443.984 123.975] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -443.984 -123.975] cm +[1 0 0 1 0 0] Tm +0 0 Td +446.432 123.975 Td +/F130_0 9.9626 Tf +(/) 2.7696 Tj +[1 0 0 1 451.649 123.975] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -451.649 -123.975] cm +[1 0 0 1 0 0] Tm +0 0 Td +451.649 123.975 Td +/F134_0 9.9626 Tf +(perror) 35.8654 Tj +[1 0 0 1 487.514 123.975] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -487.514 -123.975] cm +[1 0 0 1 0 0] Tm +0 0 Td +489.962 123.975 Td +/F130_0 9.9626 Tf +(to) 7.7509 Tj +-246 TJm +(determine) 39.8404 Tj +86.944 112.02 Td +(the) 12.1743 Tj +-356 TJm +(cause) 22.1269 Tj +-356 TJm +(of) 8.29885 Tj +-355 TJm +(the) 12.1743 Tj +-356 TJm +(dif) 11.0684 Tj +25 TJm +(\002culty) 25.4644 Tj +65 TJm +(.) 2.49065 Tj +[1 0 0 1 206.528 112.02] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -206.528 -112.02] cm +[1 0 0 1 0 0] Tm +0 0 Td +206.528 112.02 Td +/F134_0 9.9626 Tf +(bzerror) 41.8429 Tj +[1 0 0 1 248.371 112.02] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -248.371 -112.02] cm +[1 0 0 1 0 0] Tm +0 0 Td +251.916 112.02 Td +/F130_0 9.9626 Tf +(may) 17.1556 Tj +-356 TJm +(also) 16.0497 Tj +-356 TJm +(be) 9.40469 Tj +-355 TJm +(set) 11.0684 Tj +-356 TJm +(to) 7.7509 Tj +-356 TJm +(v) 4.9813 Tj +25 TJm +(arious) 24.3486 Tj +-356 TJm +(other) 20.4731 Tj +-356 TJm +(v) 4.9813 Tj +25 TJm +(alues;) 23.2427 Tj +-408 TJm +(precise) 28.2141 Tj +-356 TJm +(details) 26.0123 Tj +-356 TJm +(are) 12.1643 Tj +-356 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(en) 9.40469 Tj +-356 TJm +(on) 9.9626 Tj +-356 TJm +(a) 4.42339 Tj +86.944 100.064 Td +(per) 12.7222 Tj +20 TJm +(-function) 36.5229 Tj +-250 TJm +(basis) 19.9252 Tj +-250 TJm +(belo) 17.1556 Tj +25 TJm +(w) 7.193 Tj +65 TJm +(.) 2.49065 Tj +[1 0 0 1 186.839 100.064] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -114.838 -49.2126] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7545] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -50.9514] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 50.9514 Td +/F130_0 9.9626 Tf +(18) 9.9626 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 22 22 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 76.4979 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -342.569 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F130_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +[1 0 0 1 496.556 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -496.556 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +496.556 749.245 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 544.376 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.305 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -5.0363] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -31.5168] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.9739 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -78.9739 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +78.9739 710.037 Td +/F130_0 9.9626 Tf +(\225) 3.48691 Tj +[1 0 0 1 82.4608 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 1.9925 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -86.944 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 710.037 Td +/F130_0 9.9626 Tf +(If) 6.63509 Tj +[1 0 0 1 95.9576 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -95.9576 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +95.9576 710.037 Td +/F134_0 9.9626 Tf +(bzerror) 41.8429 Tj +[1 0 0 1 137.801 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -137.801 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +140.179 710.037 Td +/F130_0 9.9626 Tf +(indicates) 35.417 Tj +-239 TJm +(an) 9.40469 Tj +-238 TJm +(error) 19.3573 Tj +-239 TJm +(\(ie,) 13.0012 Tj +-241 TJm +(an) 9.40469 Tj +15 TJm +(ything) 25.4644 Tj +-239 TJm +(e) 4.42339 Tj +15 TJm +(xcept) 21.579 Tj +[1 0 0 1 292.225 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -292.225 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +292.225 710.037 Td +/F134_0 9.9626 Tf +(BZ_OK) 29.8878 Tj +[1 0 0 1 322.113 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -322.113 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +324.492 710.037 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 341.256 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -341.256 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +341.256 710.037 Td +/F134_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +[1 0 0 1 418.965 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -418.965 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +418.965 710.037 Td +/F130_0 9.9626 Tf +(\),) 5.8082 Tj +-239 TJm +(you) 14.9439 Tj +-239 TJm +(should) 26.5703 Tj +-238 TJm +(immediately) 49.813 Tj +-239 TJm +(call) 14.386 Tj +[1 0 0 1 86.944 698.082] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -86.944 -698.082] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 698.082 Td +/F134_0 9.9626 Tf +(BZ2_bzReadClose) 89.6634 Tj +[1 0 0 1 176.608 698.082] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -176.608 -698.082] cm +[1 0 0 1 0 0] Tm +0 0 Td +179.343 698.082 Td +/F130_0 9.9626 Tf +(\(or) 11.6164 Tj +[1 0 0 1 193.695 698.082] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -193.695 -698.082] cm +[1 0 0 1 0 0] Tm +0 0 Td +193.695 698.082 Td +/F134_0 9.9626 Tf +(BZ2_bzWriteClose) 95.641 Tj +[1 0 0 1 289.337 698.082] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -289.337 -698.082] cm +[1 0 0 1 0 0] Tm +0 0 Td +289.337 698.082 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-281 TJm +(depending) 41.5042 Tj +-274 TJm +(on) 9.9626 Tj +-275 TJm +(whether) 32.0895 Tj +-274 TJm +(you) 14.9439 Tj +-275 TJm +(are) 12.1643 Tj +-275 TJm +(attempting) 42.62 Tj +-274 TJm +(to) 7.7509 Tj +-275 TJm +(read) 17.1456 Tj +-274 TJm +(or) 8.29885 Tj +-275 TJm +(to) 7.7509 Tj +-274 TJm +(write\)) 23.7907 Tj +86.944 686.127 Td +(to) 7.7509 Tj +-242 TJm +(free) 15.4819 Tj +-242 TJm +(up) 9.9626 Tj +-241 TJm +(all) 9.9626 Tj +-242 TJm +(resources) 37.6188 Tj +-242 TJm +(associated) 40.9463 Tj +-242 TJm +(wi) 9.9626 Tj +1 TJm +(th) 7.7509 Tj +-242 TJm +(the) 12.1743 Tj +-242 TJm +(stream.) 29.0509 Tj +-614 TJm +(Once) 21.0211 Tj +-242 TJm +(an) 9.40469 Tj +-242 TJm +(error) 19.3573 Tj +-242 TJm +(has) 13.2801 Tj +-242 TJm +(been) 18.8094 Tj +-241 TJm +(indicated,) 39.0135 Tj +-244 TJm +(beha) 18.8094 Tj +20 TJm +(viour) 21.031 Tj +-241 TJm +(of) 8.29885 Tj +-242 TJm +(all) 9.9626 Tj +-242 TJm +(calls) 18.2614 Tj +-242 TJm +(e) 4.42339 Tj +15 TJm +(xcept) 21.579 Tj +[1 0 0 1 86.944 674.172] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -86.944 -674.172] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 674.172 Td +/F134_0 9.9626 Tf +(BZ2_bzReadClose) 89.6634 Tj +[1 0 0 1 176.608 674.172] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -176.608 -674.172] cm +[1 0 0 1 0 0] Tm +0 0 Td +179.705 674.172 Td +/F130_0 9.9626 Tf +(\() 3.31755 Tj +[1 0 0 1 183.022 674.172] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -183.022 -674.172] cm +[1 0 0 1 0 0] Tm +0 0 Td +183.022 674.172 Td +/F134_0 9.9626 Tf +(BZ2_bzWriteClose) 95.641 Tj +[1 0 0 1 278.664 674.172] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.664 -674.172] cm +[1 0 0 1 0 0] Tm +0 0 Td +278.664 674.172 Td +/F130_0 9.9626 Tf +(\)) 3.31755 Tj +-311 TJm +(is) 6.64505 Tj +-311 TJm +(unde\002ned.) 41.7831 Tj +-985 TJm +(The) 15.4918 Tj +-311 TJm +(implication) 45.3896 Tj +-310 TJm +(is) 6.64505 Tj +-311 TJm +(that) 14.9439 Tj +-311 TJm +(\(1\)) 11.6164 Tj +[1 0 0 1 455.988 674.172] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -455.988 -674.172] cm +[1 0 0 1 0 0] Tm +0 0 Td +455.988 674.172 Td +/F134_0 9.9626 Tf +(bzerror) 41.8429 Tj +[1 0 0 1 497.831 674.172] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -497.831 -674.172] cm +[1 0 0 1 0 0] Tm +0 0 Td +500.928 674.172 Td +/F130_0 9.9626 Tf +(should) 26.5703 Tj +-311 TJm +(be) 9.40469 Tj +86.944 662.217 Td +(check) 23.2328 Tj +10 TJm +(ed) 9.40469 Tj +-291 TJm +(after) 18.2515 Tj +-291 TJm +(each) 18.2515 Tj +-291 TJm +(call,) 16.8766 Tj +-301 TJm +(and) 14.386 Tj +-291 TJm +(\(2\)) 11.6164 Tj +-291 TJm +(if) 6.08715 Tj +[1 0 0 1 225.347 662.217] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -225.347 -662.217] cm +[1 0 0 1 0 0] Tm +0 0 Td +225.347 662.217 Td +/F134_0 9.9626 Tf +(bzerror) 41.8429 Tj +[1 0 0 1 267.19 662.217] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -267.19 -662.217] cm +[1 0 0 1 0 0] Tm +0 0 Td +270.09 662.217 Td +/F130_0 9.9626 Tf +(indicates) 35.417 Tj +-291 TJm +(an) 9.40469 Tj +-291 TJm +(error) 19.3573 Tj +40 TJm +(,) 2.49065 Tj +[1 0 0 1 345.161 662.217] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -345.161 -662.217] cm +[1 0 0 1 0 0] Tm +0 0 Td +345.161 662.217 Td +/F134_0 9.9626 Tf +(BZ2_bzReadClose) 89.6634 Tj +[1 0 0 1 434.824 662.217] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -434.824 -662.217] cm +[1 0 0 1 0 0] Tm +0 0 Td +437.724 662.217 Td +/F130_0 9.9626 Tf +(\() 3.31755 Tj +[1 0 0 1 441.041 662.217] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -441.041 -662.217] cm +[1 0 0 1 0 0] Tm +0 0 Td +441.041 662.217 Td +/F134_0 9.9626 Tf +(BZ2_bzWriteClose) 95.641 Tj +[1 0 0 1 536.683 662.217] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -536.683 -662.217] cm +[1 0 0 1 0 0] Tm +0 0 Td +536.683 662.217 Td +/F130_0 9.9626 Tf +(\)) 3.31755 Tj +86.944 650.262 Td +(should) 26.5703 Tj +-250 TJm +(then) 17.1556 Tj +-250 TJm +(be) 9.40469 Tj +-250 TJm +(called) 23.7907 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(clean) 21.0211 Tj +-250 TJm +(up.) 12.4533 Tj +[1 0 0 1 220.034 650.261] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -148.034 -21.9178] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.9739 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -78.9739 -628.344] cm +[1 0 0 1 0 0] Tm +0 0 Td +78.9739 628.344 Td +/F130_0 9.9626 Tf +(\225) 3.48691 Tj +[1 0 0 1 82.4608 628.344] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 1.9925 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -86.944 -628.344] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 628.344 Td +/F130_0 9.9626 Tf +(The) 15.4918 Tj +[1 0 0 1 106.362 628.344] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -106.362 -628.344] cm +[1 0 0 1 0 0] Tm +0 0 Td +106.362 628.344 Td +/F134_0 9.9626 Tf +(FILE) 23.9102 Tj +130.273 626.6 Td +(*) 5.97756 Tj +[1 0 0 1 136.25 628.344] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -136.25 -628.344] cm +[1 0 0 1 0 0] Tm +0 0 Td +140.177 628.344 Td +/F130_0 9.9626 Tf +(ar) 7.74094 Tj +18 TJm +(guments) 33.7633 Tj +-394 TJm +(passed) 26.5603 Tj +-394 TJm +(to) 7.7509 Tj +[1 0 0 1 227.592 628.344] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -227.592 -628.344] cm +[1 0 0 1 0 0] Tm +0 0 Td +227.592 628.344 Td +/F134_0 9.9626 Tf +(BZ2_bzReadOpen) 83.6858 Tj +[1 0 0 1 311.278 628.344] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -311.278 -628.344] cm +[1 0 0 1 0 0] Tm +0 0 Td +315.205 628.344 Td +/F130_0 9.9626 Tf +(/) 2.7696 Tj +[1 0 0 1 321.901 628.344] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -321.901 -628.344] cm +[1 0 0 1 0 0] Tm +0 0 Td +321.901 628.344 Td +/F134_0 9.9626 Tf +(BZ2_bzWriteOpen) 89.6634 Tj +[1 0 0 1 411.565 628.344] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -411.565 -628.344] cm +[1 0 0 1 0 0] Tm +0 0 Td +415.491 628.344 Td +/F130_0 9.9626 Tf +(should) 26.5703 Tj +-394 TJm +(be) 9.40469 Tj +-394 TJm +(set) 11.0684 Tj +-394 TJm +(to) 7.7509 Tj +-394 TJm +(binary) 25.4544 Tj +-395 TJm +(mode.) 24.6275 Tj +86.944 616.389 Td +(Most) 20.4831 Tj +-229 TJm +(Unix) 19.9252 Tj +-229 TJm +(systems) 31.5516 Tj +-228 TJm +(will) 15.5018 Tj +-229 TJm +(do) 9.9626 Tj +-229 TJm +(this) 14.396 Tj +-229 TJm +(by) 9.9626 Tj +-229 TJm +(def) 12.7222 Tj +10 TJm +(ault,) 17.4346 Tj +-233 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-229 TJm +(other) 20.4731 Tj +-229 TJm +(platforms,) 40.6773 Tj +-233 TJm +(including) 37.6387 Tj +-229 TJm +(W) 9.40469 Tj +40 TJm +(indo) 17.7135 Tj +25 TJm +(ws) 11.0684 Tj +-228 TJm +(and) 14.386 Tj +-229 TJm +(Mac,) 20.1942 Tj +-233 TJm +(will) 15.5018 Tj +-229 TJm +(not.) 15.2229 Tj +-606 TJm +(If) 6.63509 Tj +-229 TJm +(you) 14.9439 Tj +-229 TJm +(omit) 18.2714 Tj +86.944 604.433 Td +(this,) 16.8866 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(may) 17.1556 Tj +-250 TJm +(encounter) 39.2825 Tj +-250 TJm +(problems) 37.0808 Tj +-250 TJm +(when) 21.579 Tj +-250 TJm +(mo) 12.7322 Tj +15 TJm +(ving) 17.7135 Tj +-250 TJm +(code) 18.8094 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(ne) 9.40469 Tj +25 TJm +(w) 7.193 Tj +-250 TJm +(platforms.) 40.6773 Tj +[1 0 0 1 372.66 604.433] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -300.66 -21.9178] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.9739 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -78.9739 -582.516] cm +[1 0 0 1 0 0] Tm +0 0 Td +78.9739 582.516 Td +/F130_0 9.9626 Tf +(\225) 3.48691 Tj +[1 0 0 1 82.4608 582.516] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 1.9925 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -86.944 -582.516] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 582.516 Td +/F130_0 9.9626 Tf +(Memory) 34.3112 Tj +-348 TJm +(allocation) 39.2925 Tj +-348 TJm +(requests) 32.6474 Tj +-348 TJm +(are) 12.1643 Tj +-348 TJm +(handled) 31.5416 Tj +-348 TJm +(by) 9.9626 Tj +[1 0 0 1 267.67 582.516] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -267.67 -582.516] cm +[1 0 0 1 0 0] Tm +0 0 Td +267.67 582.516 Td +/F134_0 9.9626 Tf +(malloc) 35.8654 Tj +[1 0 0 1 303.535 582.516] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -303.535 -582.516] cm +[1 0 0 1 0 0] Tm +0 0 Td +307.003 582.516 Td +/F130_0 9.9626 Tf +(/) 2.7696 Tj +[1 0 0 1 313.241 582.516] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -313.241 -582.516] cm +[1 0 0 1 0 0] Tm +0 0 Td +313.241 582.516 Td +/F134_0 9.9626 Tf +(free) 23.9102 Tj +[1 0 0 1 337.151 582.516] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -337.151 -582.516] cm +[1 0 0 1 0 0] Tm +0 0 Td +337.151 582.516 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-1209 TJm +(At) 9.9626 Tj +-348 TJm +(present) 28.772 Tj +-348 TJm +(there) 19.9152 Tj +-348 TJm +(is) 6.64505 Tj +-348 TJm +(no) 9.9626 Tj +-348 TJm +(f) 3.31755 Tj +10 TJm +(acility) 24.9065 Tj +-348 TJm +(for) 11.6164 Tj +-348 TJm +(user) 16.5977 Tj +20 TJm +(-de\002ned) 32.6474 Tj +86.944 570.56 Td +(memory) 33.2053 Tj +-250 TJm +(allocators) 38.7346 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(\002le) 12.7322 Tj +-250 TJm +(I/O) 13.2801 Tj +-250 TJm +(functions) 37.0808 Tj +-250 TJm +(\(could) 25.4544 Tj +-250 TJm +(easily) 23.2427 Tj +-250 TJm +(be) 9.40469 Tj +-250 TJm +(added,) 26.2813 Tj +-250 TJm +(though\).) 33.4843 Tj +[1 0 0 1 387.165 570.56] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -315.165 -12.1195] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -548.478] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 529.977 Td +/F122_0 17.2154 Tf +(3.4.1.) 43.0729 Tj +[1 0 0 1 119.858 529.977] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -119.858 -529.977] cm +[1 0 0 1 0 0] Tm +0 0 Td +119.858 529.977 Td +/F392_0 17.2154 Tf +(BZ2_bzReadOpen) 144.609 Tj +[1 0 0 1 264.468 529.977] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -192.468 -2.3327] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -72.7272] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 71.731 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 68.1444] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -518.279] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 518.279 Td +/F134_0 9.9626 Tf +(typedef) 41.8429 Tj +-426 TJm +(void) 23.9102 Tj +-426 TJm +(BZFILE;) 41.8429 Tj +90 494.369 Td +(BZFILE) 35.8654 Tj +130.109 492.625 Td +(*) 5.97756 Tj +136.087 494.369 Td +(BZ2_bzReadOpen\() 89.6634 Tj +-426 TJm +(int) 17.9327 Tj +252.171 492.625 Td +(*) 5.97756 Tj +258.149 494.369 Td +(bzerror,) 47.8205 Tj +-426 TJm +(FILE) 23.9102 Tj +338.368 492.625 Td +(*) 5.97756 Tj +344.346 494.369 Td +(f,) 11.9551 Tj +191.855 482.414 Td +(int) 17.9327 Tj +-426 TJm +(verbosity,) 59.7756 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(small,) 35.8654 Tj +191.855 470.458 Td +(void) 23.9102 Tj +220.01 468.715 Td +(*) 5.97756 Tj +225.987 470.458 Td +(unused,) 41.8429 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(nUnused) 41.8429 Tj +-426 TJm +(\);) 11.9551 Tj +[1 0 0 1 72 454.917] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -444.954] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 432.999 Td +/F130_0 9.9626 Tf +(Prepare) 30.4258 Tj +-290 TJm +(to) 7.7509 Tj +-289 TJm +(read) 17.1456 Tj +-290 TJm +(compressed) 47.0334 Tj +-290 TJm +(data) 16.5977 Tj +-289 TJm +(from) 19.3673 Tj +-290 TJm +(\002le) 12.7322 Tj +-289 TJm +(handle) 26.5603 Tj +[1 0 0 1 272.697 432.999] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -272.697 -432.999] cm +[1 0 0 1 0 0] Tm +0 0 Td +272.697 432.999 Td +/F134_0 9.9626 Tf +(f) 5.97756 Tj +[1 0 0 1 278.675 432.999] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.675 -432.999] cm +[1 0 0 1 0 0] Tm +0 0 Td +278.675 432.999 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 285.439 432.999] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -285.439 -432.999] cm +[1 0 0 1 0 0] Tm +0 0 Td +285.439 432.999 Td +/F134_0 9.9626 Tf +(f) 5.97756 Tj +[1 0 0 1 291.417 432.999] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -291.417 -432.999] cm +[1 0 0 1 0 0] Tm +0 0 Td +294.303 432.999 Td +/F130_0 9.9626 Tf +(should) 26.5703 Tj +-290 TJm +(refer) 18.7994 Tj +-289 TJm +(to) 7.7509 Tj +-290 TJm +(a) 4.42339 Tj +-290 TJm +(\002le) 12.7322 Tj +-289 TJm +(which) 24.3486 Tj +-290 TJm +(has) 13.2801 Tj +-289 TJm +(been) 18.8094 Tj +-290 TJm +(opened) 28.772 Tj +-290 TJm +(for) 11.6164 Tj +-289 TJm +(reading,) 32.3685 Tj +-300 TJm +(and) 14.386 Tj +72 421.044 Td +(for) 11.6164 Tj +-306 TJm +(which) 24.3486 Tj +-305 TJm +(the) 12.1743 Tj +-306 TJm +(error) 19.3573 Tj +-306 TJm +(indicator) 35.417 Tj +-305 TJm +(\() 3.31755 Tj +[1 0 0 1 193.457 421.044] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -193.457 -421.044] cm +[1 0 0 1 0 0] Tm +0 0 Td +193.457 421.044 Td +/F134_0 9.9626 Tf +(ferror\(f\)) 53.798 Tj +[1 0 0 1 247.255 421.044] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -247.255 -421.044] cm +[1 0 0 1 0 0] Tm +0 0 Td +247.255 421.044 Td +/F130_0 9.9626 Tf +(\)is) 9.9626 Tj +-306 TJm +(not) 12.7322 Tj +-305 TJm +(set.) 13.5591 Tj +-954 TJm +(If) 6.63509 Tj +[1 0 0 1 308.784 421.044] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -308.784 -421.044] cm +[1 0 0 1 0 0] Tm +0 0 Td +308.784 421.044 Td +/F134_0 9.9626 Tf +(small) 29.8878 Tj +[1 0 0 1 338.671 421.044] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -338.671 -421.044] cm +[1 0 0 1 0 0] Tm +0 0 Td +341.717 421.044 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-306 TJm +(1,) 7.47195 Tj +-319 TJm +(the) 12.1743 Tj +-306 TJm +(library) 26.5603 Tj +-306 TJm +(will) 15.5018 Tj +-305 TJm +(try) 11.0684 Tj +-306 TJm +(to) 7.7509 Tj +-306 TJm +(dec) 13.8281 Tj +1 TJm +(ompress) 33.2053 Tj +-306 TJm +(using) 21.589 Tj +-306 TJm +(less) 14.9439 Tj +72 409.089 Td +(memory) 33.2053 Tj +65 TJm +(,) 2.49065 Tj +-250 TJm +(at) 7.193 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(e) 4.42339 Tj +15 TJm +(xpense) 27.6661 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(speed.) 25.1755 Tj +[1 0 0 1 72 406.932] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -396.969] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 387.171 Td +/F130_0 9.9626 Tf +(F) 5.53921 Tj +15 TJm +(or) 8.29885 Tj +-227 TJm +(reasons) 29.8778 Tj +-227 TJm +(e) 4.42339 Tj +15 TJm +(xplained) 34.3112 Tj +-228 TJm +(belo) 17.1556 Tj +25 TJm +(w) 7.193 Tj +65 TJm +(,) 2.49065 Tj +[1 0 0 1 189.193 387.171] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -189.193 -387.171] cm +[1 0 0 1 0 0] Tm +0 0 Td +189.193 387.171 Td +/F134_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +[1 0 0 1 248.969 387.171] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -248.969 -387.171] cm +[1 0 0 1 0 0] Tm +0 0 Td +251.232 387.171 Td +/F130_0 9.9626 Tf +(will) 15.5018 Tj +-227 TJm +(decompress) 47.0334 Tj +-227 TJm +(the) 12.1743 Tj +[1 0 0 1 332.732 387.171] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -332.732 -387.171] cm +[1 0 0 1 0 0] Tm +0 0 Td +332.732 387.171 Td +/F134_0 9.9626 Tf +(nUnused) 41.8429 Tj +[1 0 0 1 374.575 387.171] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -374.575 -387.171] cm +[1 0 0 1 0 0] Tm +0 0 Td +376.838 387.171 Td +/F130_0 9.9626 Tf +(bytes) 21.031 Tj +-227 TJm +(starting) 29.8878 Tj +-227 TJm +(at) 7.193 Tj +[1 0 0 1 441.74 387.171] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -441.74 -387.171] cm +[1 0 0 1 0 0] Tm +0 0 Td +441.74 387.171 Td +/F134_0 9.9626 Tf +(unused) 35.8654 Tj +[1 0 0 1 477.605 387.171] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -477.605 -387.171] cm +[1 0 0 1 0 0] Tm +0 0 Td +477.605 387.171 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-232 TJm +(before) 25.4445 Tj +-227 TJm +(starting) 29.8878 Tj +72 375.216 Td +(to) 7.7509 Tj +-280 TJm +(read) 17.1456 Tj +-279 TJm +(from) 19.3673 Tj +-280 TJm +(the) 12.1743 Tj +-279 TJm +(\002le) 12.7322 Tj +[1 0 0 1 155.094 375.215] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -155.094 -375.215] cm +[1 0 0 1 0 0] Tm +0 0 Td +155.094 375.215 Td +/F134_0 9.9626 Tf +(f) 5.97756 Tj +[1 0 0 1 161.072 375.215] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -161.072 -375.215] cm +[1 0 0 1 0 0] Tm +0 0 Td +161.072 375.215 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-797 TJm +(At) 9.9626 Tj +-280 TJm +(most) 19.3773 Tj +[1 0 0 1 206.414 375.215] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -206.414 -375.215] cm +[1 0 0 1 0 0] Tm +0 0 Td +206.414 375.215 Td +/F134_0 9.9626 Tf +(BZ_MAX_UNUSED) 77.7083 Tj +[1 0 0 1 284.122 375.215] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -284.122 -375.215] cm +[1 0 0 1 0 0] Tm +0 0 Td +286.907 375.215 Td +/F130_0 9.9626 Tf +(bytes) 21.031 Tj +-280 TJm +(may) 17.1556 Tj +-279 TJm +(be) 9.40469 Tj +-280 TJm +(supplied) 33.7633 Tj +-279 TJm +(lik) 10.5205 Tj +10 TJm +(e) 4.42339 Tj +-280 TJm +(this.) 16.8866 Tj +-797 TJm +(If) 6.63509 Tj +-279 TJm +(this) 14.396 Tj +-280 TJm +(f) 3.31755 Tj +10 TJm +(acility) 24.9065 Tj +-279 TJm +(is) 6.64505 Tj +-280 TJm +(not) 12.7322 Tj +-279 TJm +(required,) 35.686 Tj +72 363.26 Td +(you) 14.9439 Tj +-250 TJm +(should) 26.5703 Tj +-250 TJm +(pass) 17.1556 Tj +[1 0 0 1 138.141 363.26] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -138.141 -363.26] cm +[1 0 0 1 0 0] Tm +0 0 Td +138.141 363.26 Td +/F134_0 9.9626 Tf +(NULL) 23.9102 Tj +[1 0 0 1 162.052 363.26] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -162.052 -363.26] cm +[1 0 0 1 0 0] Tm +0 0 Td +164.542 363.26 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 181.419 363.26] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -181.419 -363.26] cm +[1 0 0 1 0 0] Tm +0 0 Td +181.419 363.26 Td +/F134_0 9.9626 Tf +(0) 5.97756 Tj +[1 0 0 1 187.397 363.26] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -187.397 -363.26] cm +[1 0 0 1 0 0] Tm +0 0 Td +189.887 363.26 Td +/F130_0 9.9626 Tf +(for) 11.6164 Tj +[1 0 0 1 203.994 363.26] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -203.994 -363.26] cm +[1 0 0 1 0 0] Tm +0 0 Td +203.994 363.26 Td +/F134_0 9.9626 Tf +(unused) 35.8654 Tj +[1 0 0 1 239.86 363.26] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -239.86 -363.26] cm +[1 0 0 1 0 0] Tm +0 0 Td +242.351 363.26 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +-250 TJm +(n) 4.9813 Tj +[1 0 0 1 264.208 363.26] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -264.208 -363.26] cm +[1 0 0 1 0 0] Tm +0 0 Td +264.208 363.26 Td +/F134_0 9.9626 Tf +(Unused) 35.8654 Tj +[1 0 0 1 300.074 363.26] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -300.074 -363.26] cm +[1 0 0 1 0 0] Tm +0 0 Td +302.565 363.26 Td +/F130_0 9.9626 Tf +(respecti) 30.9837 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ely) 12.1743 Tj +65 TJm +(.) 2.49065 Tj +[1 0 0 1 72 361.103] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -351.141] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 341.343 Td +/F130_0 9.9626 Tf +(F) 5.53921 Tj +15 TJm +(or) 8.29885 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(meaning) 34.3112 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(parameters) 43.7059 Tj +[1 0 0 1 196.631 341.343] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -196.631 -341.343] cm +[1 0 0 1 0 0] Tm +0 0 Td +196.631 341.343 Td +/F134_0 9.9626 Tf +(small) 29.8878 Tj +[1 0 0 1 226.519 341.343] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -226.519 -341.343] cm +[1 0 0 1 0 0] Tm +0 0 Td +229.01 341.343 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 245.887 341.343] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -245.887 -341.343] cm +[1 0 0 1 0 0] Tm +0 0 Td +245.887 341.343 Td +/F134_0 9.9626 Tf +(verbosity) 53.798 Tj +[1 0 0 1 299.685 341.343] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -299.685 -341.343] cm +[1 0 0 1 0 0] Tm +0 0 Td +299.685 341.343 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-250 TJm +(see) 12.7222 Tj +[1 0 0 1 319.879 341.343] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -319.879 -341.343] cm +[1 0 0 1 0 0] Tm +0 0 Td +319.879 341.343 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompressInit) 119.551 Tj +[1 0 0 1 439.431 341.343] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -439.431 -341.343] cm +[1 0 0 1 0 0] Tm +0 0 Td +439.431 341.343 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 339.186] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -329.223] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 319.425 Td +/F130_0 9.9626 Tf +(The) 15.4918 Tj +-402 TJm +(amount) 29.8878 Tj +-402 TJm +(of) 8.29885 Tj +-402 TJm +(memory) 33.2053 Tj +-402 TJm +(needed) 28.2141 Tj +-402 TJm +(to) 7.7509 Tj +-402 TJm +(decompress) 47.0334 Tj +-402 TJm +(a) 4.42339 Tj +-401 TJm +(\002le) 12.7322 Tj +-402 TJm +(cannot) 26.5603 Tj +-402 TJm +(be) 9.40469 Tj +-402 TJm +(determined) 44.8217 Tj +-402 TJm +(until) 18.2714 Tj +-402 TJm +(the) 12.1743 Tj +-402 TJm +(\002le') 16.0497 Tj +55 TJm +(s) 3.87545 Tj +-402 TJm +(header) 26.5503 Tj +-402 TJm +(has) 13.2801 Tj +-402 TJm +(been) 18.8094 Tj +-402 TJm +(read.) 19.6363 Tj +72 307.47 Td +(So) 10.5205 Tj +-492 TJm +(it) 5.53921 Tj +-491 TJm +(is) 6.64505 Tj +-492 TJm +(possible) 32.6574 Tj +-492 TJm +(that) 14.9439 Tj +[1 0 0 1 166.797 307.47] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -166.797 -307.47] cm +[1 0 0 1 0 0] Tm +0 0 Td +166.797 307.47 Td +/F134_0 9.9626 Tf +(BZ2_bzReadOpen) 83.6858 Tj +[1 0 0 1 250.483 307.47] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -250.483 -307.47] cm +[1 0 0 1 0 0] Tm +0 0 Td +255.381 307.47 Td +/F130_0 9.9626 Tf +(returns) 27.6661 Tj +[1 0 0 1 287.945 307.47] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -287.945 -307.47] cm +[1 0 0 1 0 0] Tm +0 0 Td +287.945 307.47 Td +/F134_0 9.9626 Tf +(BZ_OK) 29.8878 Tj +[1 0 0 1 317.833 307.47] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -317.833 -307.47] cm +[1 0 0 1 0 0] Tm +0 0 Td +322.729 307.47 Td +/F130_0 9.9626 Tf +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-492 TJm +(a) 4.42339 Tj +-491 TJm +(subsequent) 44.2738 Tj +-492 TJm +(call) 14.386 Tj +-492 TJm +(of) 8.29885 Tj +[1 0 0 1 431.135 307.47] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -431.135 -307.47] cm +[1 0 0 1 0 0] Tm +0 0 Td +431.135 307.47 Td +/F134_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +[1 0 0 1 490.911 307.47] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -490.911 -307.47] cm +[1 0 0 1 0 0] Tm +0 0 Td +495.81 307.47 Td +/F130_0 9.9626 Tf +(will) 15.5018 Tj +-492 TJm +(return) 23.7907 Tj +[1 0 0 1 72 295.514] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -295.514] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 295.514 Td +/F134_0 9.9626 Tf +(BZ_MEM_ERROR) 71.7307 Tj +[1 0 0 1 143.731 295.514] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -143.731 -295.514] cm +[1 0 0 1 0 0] Tm +0 0 Td +143.731 295.514 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 294.204] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -284.242] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 273.597 Td +/F130_0 9.9626 Tf +(Possible) 33.2153 Tj +-250 TJm +(assignments) 48.7072 Tj +-250 TJm +(to) 7.7509 Tj +[1 0 0 1 169.144 273.597] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -169.144 -273.597] cm +[1 0 0 1 0 0] Tm +0 0 Td +169.144 273.597 Td +/F134_0 9.9626 Tf +(bzerror) 41.8429 Tj +[1 0 0 1 210.987 273.597] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -210.987 -273.597] cm +[1 0 0 1 0 0] Tm +0 0 Td +210.987 273.597 Td +/F130_0 9.9626 Tf +(:) 2.7696 Tj +[1 0 0 1 72 271.44] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -168.369] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 167.372 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 163.786] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -262.075] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 262.075 Td +/F134_0 9.9626 Tf +(BZ_CONFIG_ERROR) 89.6634 Tj +98.4879 250.12 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(library) 41.8429 Tj +-426 TJm +(has) 17.9327 Tj +-426 TJm +(been) 23.9102 Tj +-426 TJm +(mis-compiled) 71.7307 Tj +90 238.165 Td +(BZ_PARAM_ERROR) 83.6858 Tj +98.4879 226.209 Td +(if) 11.9551 Tj +-426 TJm +(f) 5.97756 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +98.4879 214.254 Td +(or) 11.9551 Tj +-426 TJm +(small) 29.8878 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(neither) 41.8429 Tj +-426 TJm +(0) 5.97756 Tj +-426 TJm +(nor) 17.9327 Tj +-426 TJm +(1) 5.97756 Tj +98.4879 202.299 Td +(or) 11.9551 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(unused) 35.8654 Tj +-426 TJm +(==) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +-426 TJm +(&&) 11.9551 Tj +-426 TJm +(nUnused) 41.8429 Tj +-426 TJm +(!=) 11.9551 Tj +-426 TJm +(0) 5.97756 Tj +-426 TJm +(\)) 5.97756 Tj +98.4879 190.344 Td +(or) 11.9551 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(unused) 35.8654 Tj +-426 TJm +(!=) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +-426 TJm +(&&) 11.9551 Tj +-426 TJm +(!\(0) 17.9327 Tj +-426 TJm +(<=) 11.9551 Tj +-426 TJm +(nUnused) 41.8429 Tj +-426 TJm +(<=) 11.9551 Tj +-426 TJm +(BZ_MAX_UNUSED\)) 83.6858 Tj +-426 TJm +(\)) 5.97756 Tj +90 178.389 Td +(BZ_IO_ERROR) 65.7532 Tj +98.4879 166.434 Td +(if) 11.9551 Tj +-426 TJm +(ferror\(f\)) 53.798 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(nonzero) 41.8429 Tj +90 154.478 Td +(BZ_MEM_ERROR) 71.7307 Tj +98.4879 142.523 Td +(if) 11.9551 Tj +-426 TJm +(insufficient) 71.7307 Tj +-426 TJm +(memory) 35.8654 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(available) 53.798 Tj +90 130.568 Td +(BZ_OK) 29.8878 Tj +98.4879 118.613 Td +(otherwise.) 59.7756 Tj +[1 0 0 1 72 103.071] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -93.1085] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 81.1533 Td +/F130_0 9.9626 Tf +(Possible) 33.2153 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues:) 23.2427 Tj +[1 0 0 1 72 81.0538] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -30.202] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.9737] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -51.071] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 51.071 Td +/F130_0 9.9626 Tf +(19) 9.9626 Tj +[1 0 0 1 453.269 50.8519] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 23 23 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 76.4979 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -342.569 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F130_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +[1 0 0 1 496.556 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -496.556 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +496.556 749.245 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 544.376 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.305 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -5.0363] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -81.33] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 59.7758 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 56.1892] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -711.631] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 711.631 Td +/F134_0 9.9626 Tf +(Pointer) 41.8429 Tj +-426 TJm +(to) 11.9551 Tj +-426 TJm +(an) 11.9551 Tj +-426 TJm +(abstract) 47.8205 Tj +-426 TJm +(BZFILE) 35.8654 Tj +98.4879 699.676 Td +(if) 11.9551 Tj +-426 TJm +(bzerror) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(BZ_OK) 29.8878 Tj +90 687.721 Td +(NULL) 23.9102 Tj +98.4879 675.766 Td +(otherwise) 53.798 Tj +[1 0 0 1 72 660.224] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5493] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -650.261] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 638.306 Td +/F130_0 9.9626 Tf +(Allo) 17.7135 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(able) 16.5977 Tj +-250 TJm +(ne) 9.40469 Tj +15 TJm +(xt) 7.7509 Tj +-250 TJm +(actions:) 30.9936 Tj +[1 0 0 1 72 638.207] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -60.7721] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 59.7758 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 56.1893] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -628.842] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 628.842 Td +/F134_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +98.4879 616.887 Td +(if) 11.9551 Tj +-426 TJm +(bzerror) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(BZ_OK) 29.8878 Tj +90 604.932 Td +(BZ2_bzClose) 65.7532 Tj +98.4879 592.976 Td +(otherwise) 53.798 Tj +[1 0 0 1 72 577.435] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -567.472] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 546.813 Td +/F122_0 17.2154 Tf +(3.4.2.) 43.0729 Tj +[1 0 0 1 119.858 546.813] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -119.858 -546.813] cm +[1 0 0 1 0 0] Tm +0 0 Td +119.858 546.813 Td +/F392_0 17.2154 Tf +(BZ2_bzRead) 103.292 Tj +[1 0 0 1 223.15 546.813] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -151.15 -2.3326] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -24.9066] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 23.9103 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 20.3237] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -535.116] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 535.116 Td +/F134_0 9.9626 Tf +(int) 17.9327 Tj +-426 TJm +(BZ2_bzRead) 59.7756 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(int) 17.9327 Tj +208.595 533.373 Td +(*) 5.97756 Tj +214.572 535.116 Td +(bzerror,) 47.8205 Tj +-426 TJm +(BZFILE) 35.8654 Tj +306.747 533.373 Td +(*) 5.97756 Tj +312.724 535.116 Td +(b,) 11.9551 Tj +-426 TJm +(void) 23.9102 Tj +357.077 533.373 Td +(*) 5.97756 Tj +363.055 535.116 Td +(buf,) 23.9102 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(len) 17.9327 Tj +-426 TJm +(\);) 11.9551 Tj +[1 0 0 1 72 519.574] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -509.612] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 497.656 Td +/F130_0 9.9626 Tf +(Reads) 24.3486 Tj +-285 TJm +(up) 9.9626 Tj +-284 TJm +(to) 7.7509 Tj +[1 0 0 1 122.569 497.656] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -122.569 -497.656] cm +[1 0 0 1 0 0] Tm +0 0 Td +122.569 497.656 Td +/F134_0 9.9626 Tf +(len) 17.9327 Tj +[1 0 0 1 140.501 497.656] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -140.501 -497.656] cm +[1 0 0 1 0 0] Tm +0 0 Td +143.337 497.656 Td +/F130_0 9.9626 Tf +(\(uncompressed\)) 63.6311 Tj +-285 TJm +(bytes) 21.031 Tj +-284 TJm +(from) 19.3673 Tj +-285 TJm +(the) 12.1743 Tj +-284 TJm +(compressed) 47.0334 Tj +-285 TJm +(\002le) 12.7322 Tj +[1 0 0 1 336.319 497.656] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -336.319 -497.656] cm +[1 0 0 1 0 0] Tm +0 0 Td +336.319 497.656 Td +/F134_0 9.9626 Tf +(b) 5.97756 Tj +[1 0 0 1 342.296 497.656] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -342.296 -497.656] cm +[1 0 0 1 0 0] Tm +0 0 Td +345.132 497.656 Td +/F130_0 9.9626 Tf +(into) 15.5018 Tj +-285 TJm +(the) 12.1743 Tj +-284 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +[1 0 0 1 405.205 497.656] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -405.205 -497.656] cm +[1 0 0 1 0 0] Tm +0 0 Td +405.205 497.656 Td +/F134_0 9.9626 Tf +(buf) 17.9327 Tj +[1 0 0 1 423.137 497.656] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -423.137 -497.656] cm +[1 0 0 1 0 0] Tm +0 0 Td +423.137 497.656 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-828 TJm +(If) 6.63509 Tj +-284 TJm +(the) 12.1743 Tj +-285 TJm +(read) 17.1456 Tj +-285 TJm +(w) 7.193 Tj +10 TJm +(as) 8.29885 Tj +-284 TJm +(successful,) 43.4369 Tj +[1 0 0 1 72 485.701] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -485.701] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 485.701 Td +/F134_0 9.9626 Tf +(bzerror) 41.8429 Tj +[1 0 0 1 113.843 485.701] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -113.843 -485.701] cm +[1 0 0 1 0 0] Tm +0 0 Td +117.36 485.701 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-353 TJm +(set) 11.0684 Tj +-353 TJm +(to) 7.7509 Tj +[1 0 0 1 153.374 485.701] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -153.374 -485.701] cm +[1 0 0 1 0 0] Tm +0 0 Td +153.374 485.701 Td +/F134_0 9.9626 Tf +(BZ_OK) 29.8878 Tj +[1 0 0 1 183.262 485.701] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -183.262 -485.701] cm +[1 0 0 1 0 0] Tm +0 0 Td +186.778 485.701 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +-353 TJm +(the) 12.1743 Tj +-353 TJm +(number) 30.4357 Tj +-353 TJm +(of) 8.29885 Tj +-353 TJm +(bytes) 21.031 Tj +-353 TJm +(read) 17.1456 Tj +-353 TJm +(is) 6.64505 Tj +-353 TJm +(returned.) 35.686 Tj +-1238 TJm +(If) 6.63509 Tj +-353 TJm +(the) 12.1743 Tj +-353 TJm +(logical) 27.1182 Tj +-353 TJm +(end-of-stream) 55.8802 Tj +-353 TJm +(w) 7.193 Tj +10 TJm +(as) 8.29885 Tj +-353 TJm +(detected,) 35.686 Tj +[1 0 0 1 72 473.746] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -473.746] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 473.746 Td +/F134_0 9.9626 Tf +(bzerror) 41.8429 Tj +[1 0 0 1 113.843 473.746] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -113.843 -473.746] cm +[1 0 0 1 0 0] Tm +0 0 Td +116.795 473.746 Td +/F130_0 9.9626 Tf +(will) 15.5018 Tj +-296 TJm +(be) 9.40469 Tj +-297 TJm +(set) 11.0684 Tj +-296 TJm +(to) 7.7509 Tj +[1 0 0 1 172.329 473.746] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -172.329 -473.746] cm +[1 0 0 1 0 0] Tm +0 0 Td +172.329 473.746 Td +/F134_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +[1 0 0 1 250.037 473.746] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -250.037 -473.746] cm +[1 0 0 1 0 0] Tm +0 0 Td +250.037 473.746 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-296 TJm +(and) 14.386 Tj +-297 TJm +(the) 12.1743 Tj +-296 TJm +(number) 30.4357 Tj +-296 TJm +(of) 8.29885 Tj +-297 TJm +(bytes) 21.031 Tj +-296 TJm +(read) 17.1456 Tj +-296 TJm +(is) 6.64505 Tj +-296 TJm +(returned.) 35.686 Tj +-898 TJm +(All) 12.7322 Tj +-297 TJm +(other) 20.4731 Tj +[1 0 0 1 470 473.746] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -470 -473.746] cm +[1 0 0 1 0 0] Tm +0 0 Td +470 473.746 Td +/F134_0 9.9626 Tf +(bzerror) 41.8429 Tj +[1 0 0 1 511.843 473.746] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -511.843 -473.746] cm +[1 0 0 1 0 0] Tm +0 0 Td +514.795 473.746 Td +/F130_0 9.9626 Tf +(v) 4.9813 Tj +25 TJm +(alues) 20.4731 Tj +72 461.791 Td +(denote) 26.5603 Tj +-250 TJm +(an) 9.40469 Tj +-250 TJm +(error) 19.3573 Tj +55 TJm +(.) 2.49065 Tj +[1 0 0 1 72 461.691] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -451.729] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 439.873 Td +/F134_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +[1 0 0 1 131.776 439.873] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -131.776 -439.873] cm +[1 0 0 1 0 0] Tm +0 0 Td +134.224 439.873 Td +/F130_0 9.9626 Tf +(will) 15.5018 Tj +-246 TJm +(supply) 26.5703 Tj +[1 0 0 1 181.193 439.873] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -181.193 -439.873] cm +[1 0 0 1 0 0] Tm +0 0 Td +181.193 439.873 Td +/F134_0 9.9626 Tf +(len) 17.9327 Tj +[1 0 0 1 199.126 439.873] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -199.126 -439.873] cm +[1 0 0 1 0 0] Tm +0 0 Td +201.575 439.873 Td +/F130_0 9.9626 Tf +(bytes,) 23.5217 Tj +-247 TJm +(unless) 24.9065 Tj +-245 TJm +(the) 12.1743 Tj +-246 TJm +(logical) 27.1182 Tj +-246 TJm +(stream) 26.5603 Tj +-246 TJm +(end) 14.386 Tj +-245 TJm +(is) 6.64505 Tj +-246 TJm +(detected) 33.1954 Tj +-246 TJm +(or) 8.29885 Tj +-246 TJm +(an) 9.40469 Tj +-246 TJm +(error) 19.3573 Tj +-245 TJm +(occurs.) 28.493 Tj +-617 TJm +(Because) 33.1954 Tj +-246 TJm +(of) 8.29885 Tj +-246 TJm +(this,) 16.8866 Tj +-247 TJm +(it) 5.53921 Tj +72 427.918 Td +(is) 6.64505 Tj +-231 TJm +(possible) 32.6574 Tj +-231 TJm +(to) 7.7509 Tj +-231 TJm +(detect) 23.7907 Tj +-231 TJm +(the) 12.1743 Tj +-231 TJm +(stream) 26.5603 Tj +-231 TJm +(end) 14.386 Tj +-232 TJm +(by) 9.9626 Tj +-231 TJm +(observing) 39.2925 Tj +-231 TJm +(when) 21.579 Tj +-231 TJm +(the) 12.1743 Tj +-231 TJm +(number) 30.4357 Tj +-231 TJm +(of) 8.29885 Tj +-231 TJm +(bytes) 21.031 Tj +-231 TJm +(returned) 33.1954 Tj +-231 TJm +(is) 6.64505 Tj +-231 TJm +(less) 14.9439 Tj +-231 TJm +(than) 17.1556 Tj +-232 TJm +(the) 12.1743 Tj +-231 TJm +(number) 30.4357 Tj +-231 TJm +(requested.) 40.6673 Tj +72 415.963 Td +(Ne) 11.6164 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ertheless,) 37.3498 Tj +-309 TJm +(this) 14.396 Tj +-297 TJm +(is) 6.64505 Tj +-298 TJm +(re) 7.74094 Tj +15 TJm +(g) 4.9813 Tj +5 TJm +(arded) 22.1269 Tj +-297 TJm +(as) 8.29885 Tj +-297 TJm +(inadvisable;) 48.1492 Tj +-321 TJm +(you) 14.9439 Tj +-298 TJm +(should) 26.5703 Tj +-297 TJm +(instead) 28.224 Tj +-297 TJm +(check) 23.2328 Tj +[1 0 0 1 360.631 415.963] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -360.631 -415.963] cm +[1 0 0 1 0 0] Tm +0 0 Td +360.631 415.963 Td +/F134_0 9.9626 Tf +(bzerror) 41.8429 Tj +[1 0 0 1 402.475 415.963] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -402.475 -415.963] cm +[1 0 0 1 0 0] Tm +0 0 Td +405.437 415.963 Td +/F130_0 9.9626 Tf +(after) 18.2515 Tj +-297 TJm +(e) 4.42339 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ery) 12.7222 Tj +-298 TJm +(call) 14.386 Tj +-297 TJm +(and) 14.386 Tj +-297 TJm +(w) 7.193 Tj +10 TJm +(atch) 16.5977 Tj +-298 TJm +(out) 12.7322 Tj +-297 TJm +(for) 11.6164 Tj +[1 0 0 1 72 404.008] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -404.008] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 404.008 Td +/F134_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +[1 0 0 1 149.709 404.008] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -149.709 -404.008] cm +[1 0 0 1 0 0] Tm +0 0 Td +149.709 404.008 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 402.698] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -392.735] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 382.09 Td +/F130_0 9.9626 Tf +(Internally) 38.7346 Tj +65 TJm +(,) 2.49065 Tj +[1 0 0 1 117.541 382.09] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -117.541 -382.09] cm +[1 0 0 1 0 0] Tm +0 0 Td +117.541 382.09 Td +/F134_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +[1 0 0 1 177.317 382.09] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -177.317 -382.09] cm +[1 0 0 1 0 0] Tm +0 0 Td +181.786 382.09 Td +/F130_0 9.9626 Tf +(copies) 25.4544 Tj +-449 TJm +(data) 16.5977 Tj +-448 TJm +(from) 19.3673 Tj +-449 TJm +(the) 12.1743 Tj +-448 TJm +(compressed) 47.0334 Tj +-449 TJm +(\002le) 12.7322 Tj +-448 TJm +(in) 7.7509 Tj +-449 TJm +(chunks) 28.224 Tj +-449 TJm +(of) 8.29885 Tj +-448 TJm +(size) 15.4918 Tj +[1 0 0 1 419.602 382.09] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -419.602 -382.09] cm +[1 0 0 1 0 0] Tm +0 0 Td +419.602 382.09 Td +/F134_0 9.9626 Tf +(BZ_MAX_UNUSED) 77.7083 Tj +[1 0 0 1 497.31 382.09] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -497.31 -382.09] cm +[1 0 0 1 0 0] Tm +0 0 Td +501.778 382.09 Td +/F130_0 9.9626 Tf +(bytes) 21.031 Tj +-449 TJm +(be-) 12.7222 Tj +72 370.135 Td +(fore) 16.0398 Tj +-414 TJm +(decompressing) 59.7656 Tj +-414 TJm +(it.) 8.02986 Tj +-1605 TJm +(If) 6.63509 Tj +-415 TJm +(the) 12.1743 Tj +-414 TJm +(\002le) 12.7322 Tj +-414 TJm +(contains) 33.2053 Tj +-414 TJm +(more) 20.4731 Tj +-414 TJm +(bytes) 21.031 Tj +-415 TJm +(than) 17.1556 Tj +-414 TJm +(strictly) 27.6761 Tj +-414 TJm +(needed) 28.2141 Tj +-414 TJm +(to) 7.7509 Tj +-414 TJm +(reach) 21.569 Tj +-414 TJm +(the) 12.1743 Tj +-415 TJm +(logical) 27.1182 Tj +-414 TJm +(end-of-stream,) 58.3709 Tj +[1 0 0 1 72 358.18] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -358.18] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 358.18 Td +/F134_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +[1 0 0 1 131.776 358.18] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -131.776 -358.18] cm +[1 0 0 1 0 0] Tm +0 0 Td +134.749 358.18 Td +/F130_0 9.9626 Tf +(will) 15.5018 Tj +-298 TJm +(almost) 26.5703 Tj +-299 TJm +(certainly) 34.8591 Tj +-298 TJm +(read) 17.1456 Tj +-299 TJm +(some) 21.031 Tj +-298 TJm +(of) 8.29885 Tj +-299 TJm +(the) 12.1743 Tj +-298 TJm +(trailing) 28.782 Tj +-298 TJm +(data) 16.5977 Tj +-299 TJm +(before) 25.4445 Tj +-298 TJm +(signalling) 39.3025 Tj +[1 0 0 1 413.162 358.18] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -413.162 -358.18] cm +[1 0 0 1 0 0] Tm +0 0 Td +413.162 358.18 Td +/F134_0 9.9626 Tf +(BZ_SEQUENCE_END) 89.6634 Tj +[1 0 0 1 502.826 358.18] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -502.826 -358.18] cm +[1 0 0 1 0 0] Tm +0 0 Td +502.826 358.18 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-597 TJm +(T) 6.08715 Tj +80 TJm +(o) 4.9813 Tj +-298 TJm +(col-) 15.4918 Tj +72 346.224 Td +(lect) 14.386 Tj +-242 TJm +(the) 12.1743 Tj +-242 TJm +(read) 17.1456 Tj +-243 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-242 TJm +(unused) 28.224 Tj +-242 TJm +(data) 16.5977 Tj +-242 TJm +(once) 18.8094 Tj +[1 0 0 1 208.759 346.224] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -208.759 -346.224] cm +[1 0 0 1 0 0] Tm +0 0 Td +208.759 346.224 Td +/F134_0 9.9626 Tf +(BZ_SEQUENCE_END) 89.6634 Tj +[1 0 0 1 298.423 346.224] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -298.423 -346.224] cm +[1 0 0 1 0 0] Tm +0 0 Td +300.835 346.224 Td +/F130_0 9.9626 Tf +(has) 13.2801 Tj +-242 TJm +(appeared,) 38.4457 Tj +-244 TJm +(call) 14.386 Tj +[1 0 0 1 374.201 346.224] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -374.201 -346.224] cm +[1 0 0 1 0 0] Tm +0 0 Td +374.201 346.224 Td +/F134_0 9.9626 Tf +(BZ2_bzReadGetUnused) 113.574 Tj +[1 0 0 1 487.775 346.224] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -487.775 -346.224] cm +[1 0 0 1 0 0] Tm +0 0 Td +490.188 346.224 Td +/F130_0 9.9626 Tf +(immediately) 49.813 Tj +72 334.269 Td +(before) 25.4445 Tj +[1 0 0 1 99.935 334.269] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -99.935 -334.269] cm +[1 0 0 1 0 0] Tm +0 0 Td +99.935 334.269 Td +/F134_0 9.9626 Tf +(BZ2_bzReadClose) 89.6634 Tj +[1 0 0 1 189.599 334.269] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -189.599 -334.269] cm +[1 0 0 1 0 0] Tm +0 0 Td +189.599 334.269 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 332.959] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -322.996] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 312.351 Td +/F130_0 9.9626 Tf +(Possible) 33.2153 Tj +-250 TJm +(assignments) 48.7072 Tj +-250 TJm +(to) 7.7509 Tj +[1 0 0 1 169.144 312.351] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -169.144 -312.351] cm +[1 0 0 1 0 0] Tm +0 0 Td +169.144 312.351 Td +/F134_0 9.9626 Tf +(bzerror) 41.8429 Tj +[1 0 0 1 210.987 312.351] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -210.987 -312.351] cm +[1 0 0 1 0 0] Tm +0 0 Td +210.987 312.351 Td +/F130_0 9.9626 Tf +(:) 2.7696 Tj +[1 0 0 1 72 310.195] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -259.343] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7545] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -50.9514] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 50.9514 Td +/F130_0 9.9626 Tf +(20) 9.9626 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 24 24 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 76.4979 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -342.569 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F130_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +[1 0 0 1 496.556 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -496.556 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +496.556 749.245 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 544.376 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.305 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -5.0363] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -284.568] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 263.014 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 259.427] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -711.631] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 711.631 Td +/F134_0 9.9626 Tf +(BZ_PARAM_ERROR) 83.6858 Tj +98.4879 699.676 Td +(if) 11.9551 Tj +-426 TJm +(b) 5.97756 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(buf) 17.9327 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(len) 17.9327 Tj +-426 TJm +(<) 5.97756 Tj +-426 TJm +(0) 5.97756 Tj +90 687.721 Td +(BZ_SEQUENCE_ERROR) 101.619 Tj +98.4879 675.766 Td +(if) 11.9551 Tj +-426 TJm +(b) 5.97756 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(opened) 35.8654 Tj +-426 TJm +(with) 23.9102 Tj +-426 TJm +(BZ2_bzWriteOpen) 89.6634 Tj +90 663.811 Td +(BZ_IO_ERROR) 65.7532 Tj +98.4879 651.856 Td +(if) 11.9551 Tj +-426 TJm +(there) 29.8878 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(an) 11.9551 Tj +-426 TJm +(error) 29.8878 Tj +-426 TJm +(reading) 41.8429 Tj +-426 TJm +(from) 23.9102 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +-426 TJm +(file) 23.9102 Tj +90 639.9 Td +(BZ_UNEXPECTED_EOF) 101.619 Tj +98.4879 627.945 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +-426 TJm +(file) 23.9102 Tj +-426 TJm +(ended) 29.8878 Tj +-426 TJm +(before) 35.8654 Tj +98.4879 615.99 Td +(the) 17.9327 Tj +-426 TJm +(logical) 41.8429 Tj +-426 TJm +(end-of-stream) 77.7083 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(detected) 47.8205 Tj +90 604.035 Td +(BZ_DATA_ERROR) 77.7083 Tj +98.4879 592.08 Td +(if) 11.9551 Tj +-426 TJm +(a) 5.97756 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(integrity) 53.798 Tj +-426 TJm +(error) 29.8878 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(detected) 47.8205 Tj +-426 TJm +(in) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +-426 TJm +(stream) 35.8654 Tj +90 580.125 Td +(BZ_DATA_ERROR_MAGIC) 113.574 Tj +98.4879 568.169 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(stream) 35.8654 Tj +-426 TJm +(does) 23.9102 Tj +-426 TJm +(not) 17.9327 Tj +-426 TJm +(begin) 29.8878 Tj +-426 TJm +(with) 23.9102 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(requisite) 53.798 Tj +-426 TJm +(header) 35.8654 Tj +-426 TJm +(bytes) 29.8878 Tj +98.4879 556.214 Td +(\(ie,) 23.9102 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(not) 17.9327 Tj +-426 TJm +(a) 5.97756 Tj +-426 TJm +(bzip2) 29.8878 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(file\).) 35.8654 Tj +-852 TJm +(This) 23.9102 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(really) 35.8654 Tj +98.4879 544.259 Td +(a) 5.97756 Tj +-426 TJm +(special) 41.8429 Tj +-426 TJm +(case) 23.9102 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(BZ_DATA_ERROR.) 83.6858 Tj +90 532.304 Td +(BZ_MEM_ERROR) 71.7307 Tj +98.4879 520.349 Td +(if) 11.9551 Tj +-426 TJm +(insufficient) 71.7307 Tj +-426 TJm +(memory) 35.8654 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(available) 53.798 Tj +90 508.394 Td +(BZ_STREAM_END) 77.7083 Tj +98.4879 496.438 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(logical) 41.8429 Tj +-426 TJm +(end) 17.9327 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(stream) 35.8654 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(detected.) 53.798 Tj +90 484.483 Td +(BZ_OK) 29.8878 Tj +98.4879 472.528 Td +(otherwise.) 59.7756 Tj +[1 0 0 1 72 456.986] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -447.024] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 435.068 Td +/F130_0 9.9626 Tf +(Possible) 33.2153 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues:) 23.2427 Tj +[1 0 0 1 72 434.969] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -60.7721] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 59.7758 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 56.1893] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -425.604] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 425.604 Td +/F134_0 9.9626 Tf +(number) 35.8654 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(bytes) 29.8878 Tj +-426 TJm +(read) 23.9102 Tj +98.4879 413.649 Td +(if) 11.9551 Tj +-426 TJm +(bzerror) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(BZ_OK) 29.8878 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(BZ_STREAM_END) 77.7083 Tj +90 401.694 Td +(undefined) 53.798 Tj +98.4879 389.739 Td +(otherwise) 53.798 Tj +[1 0 0 1 72 374.197] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -364.234] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 352.279 Td +/F130_0 9.9626 Tf +(Allo) 17.7135 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(able) 16.5977 Tj +-250 TJm +(ne) 9.40469 Tj +15 TJm +(xt) 7.7509 Tj +-250 TJm +(actions:) 30.9936 Tj +[1 0 0 1 72 352.18] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -84.6825] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 83.6862 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 80.0996] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -342.815] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 342.815 Td +/F134_0 9.9626 Tf +(collect) 41.8429 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(from) 23.9102 Tj +-426 TJm +(buf,) 23.9102 Tj +-426 TJm +(then) 23.9102 Tj +-426 TJm +(BZ2_bzRead) 59.7756 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(BZ2_bzReadClose) 89.6634 Tj +98.4879 330.859 Td +(if) 11.9551 Tj +-426 TJm +(bzerror) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(BZ_OK) 29.8878 Tj +90 318.904 Td +(collect) 41.8429 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(from) 23.9102 Tj +-426 TJm +(buf,) 23.9102 Tj +-426 TJm +(then) 23.9102 Tj +-426 TJm +(BZ2_bzReadClose) 89.6634 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(BZ2_bzReadGetUnused) 113.574 Tj +98.4879 306.949 Td +(if) 11.9551 Tj +-426 TJm +(bzerror) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(BZ_SEQUENCE_END) 89.6634 Tj +90 294.994 Td +(BZ2_bzReadClose) 89.6634 Tj +98.4879 283.039 Td +(otherwise) 53.798 Tj +[1 0 0 1 72 267.497] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -257.534] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 236.876 Td +/F122_0 17.2154 Tf +(3.4.3.) 43.0729 Tj +[1 0 0 1 119.858 236.876] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -119.858 -236.876] cm +[1 0 0 1 0 0] Tm +0 0 Td +119.858 236.876 Td +/F392_0 17.2154 Tf +(BZ2_bzReadGetUnused) 196.256 Tj +[1 0 0 1 316.114 236.876] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -244.114 -2.3327] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -36.8617] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 35.8655 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 32.2789] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -225.178] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 225.178 Td +/F134_0 9.9626 Tf +(void) 23.9102 Tj +-426 TJm +(BZ2_bzReadGetUnused\() 119.551 Tj +-426 TJm +(int) 17.9327 Tj +259.883 223.435 Td +(*) 5.97756 Tj +270.104 225.178 Td +(bzerror,) 47.8205 Tj +-426 TJm +(BZFILE) 35.8654 Tj +362.278 223.435 Td +(*) 5.97756 Tj +368.256 225.178 Td +(b,) 11.9551 Tj +200.343 213.223 Td +(void) 23.9102 Tj +224.254 211.48 Td +(**) 11.9551 Tj +240.453 213.223 Td +(unused,) 41.8429 Tj +-426 TJm +(int) 17.9327 Tj +304.473 211.48 Td +(*) 5.97756 Tj +314.694 213.223 Td +(nUnused) 41.8429 Tj +-426 TJm +(\);) 11.9551 Tj +[1 0 0 1 72 197.681] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -187.719] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 175.764 Td +/F130_0 9.9626 Tf +(Returns) 30.9936 Tj +-435 TJm +(data) 16.5977 Tj +-435 TJm +(which) 24.3486 Tj +-435 TJm +(w) 7.193 Tj +10 TJm +(as) 8.29885 Tj +-435 TJm +(read) 17.1456 Tj +-435 TJm +(from) 19.3673 Tj +-435 TJm +(the) 12.1743 Tj +-435 TJm +(compressed) 47.0334 Tj +-435 TJm +(\002le) 12.7322 Tj +-435 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-435 TJm +(w) 7.193 Tj +10 TJm +(as) 8.29885 Tj +-435 TJm +(not) 12.7322 Tj +-435 TJm +(needed) 28.2141 Tj +-435 TJm +(to) 7.7509 Tj +-435 TJm +(get) 12.1743 Tj +-435 TJm +(to) 7.7509 Tj +-435 TJm +(the) 12.1743 Tj +-435 TJm +(logical) 27.1182 Tj +-435 TJm +(end-of-stream.) 58.3709 Tj +[1 0 0 1 72 163.809] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -163.809] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 162.065 Td +/F134_0 9.9626 Tf +(*) 5.97756 Tj +77.9776 163.809 Td +(unused) 35.8654 Tj +[1 0 0 1 113.843 163.809] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -113.843 -163.809] cm +[1 0 0 1 0 0] Tm +0 0 Td +117.2 163.809 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-337 TJm +(set) 11.0684 Tj +-337 TJm +(to) 7.7509 Tj +-337 TJm +(the) 12.1743 Tj +-337 TJm +(address) 29.8778 Tj +-337 TJm +(of) 8.29885 Tj +-336 TJm +(the) 12.1743 Tj +-337 TJm +(data,) 19.0883 Tj +-359 TJm +(and) 14.386 Tj +[1 0 0 1 269.089 163.809] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -269.089 -163.809] cm +[1 0 0 1 0 0] Tm +0 0 Td +269.089 162.065 Td +/F134_0 9.9626 Tf +(*) 5.97756 Tj +275.067 163.809 Td +(nUnused) 41.8429 Tj +[1 0 0 1 316.91 163.809] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -316.91 -163.809] cm +[1 0 0 1 0 0] Tm +0 0 Td +320.267 163.809 Td +/F130_0 9.9626 Tf +(to) 7.7509 Tj +-337 TJm +(the) 12.1743 Tj +-337 TJm +(number) 30.4357 Tj +-337 TJm +(of) 8.29885 Tj +-337 TJm +(bytes.) 23.5217 Tj +[1 0 0 1 427.247 163.809] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -427.247 -163.809] cm +[1 0 0 1 0 0] Tm +0 0 Td +427.247 162.065 Td +/F134_0 9.9626 Tf +(*) 5.97756 Tj +433.225 163.809 Td +(nUnused) 41.8429 Tj +[1 0 0 1 475.068 163.809] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -475.068 -163.809] cm +[1 0 0 1 0 0] Tm +0 0 Td +478.425 163.809 Td +/F130_0 9.9626 Tf +(will) 15.5018 Tj +-337 TJm +(be) 9.40469 Tj +-337 TJm +(set) 11.0684 Tj +-337 TJm +(to) 7.7509 Tj +-337 TJm +(a) 4.42339 Tj +72 151.853 Td +(v) 4.9813 Tj +25 TJm +(alue) 16.5977 Tj +-250 TJm +(between) 33.1954 Tj +[1 0 0 1 131.506 151.853] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -131.506 -151.853] cm +[1 0 0 1 0 0] Tm +0 0 Td +131.506 151.853 Td +/F134_0 9.9626 Tf +(0) 5.97756 Tj +[1 0 0 1 137.484 151.853] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -137.484 -151.853] cm +[1 0 0 1 0 0] Tm +0 0 Td +139.975 151.853 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 156.851 151.853] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -156.851 -151.853] cm +[1 0 0 1 0 0] Tm +0 0 Td +156.851 151.853 Td +/F134_0 9.9626 Tf +(BZ_MAX_UNUSED) 77.7083 Tj +[1 0 0 1 234.56 151.853] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -234.56 -151.853] cm +[1 0 0 1 0 0] Tm +0 0 Td +237.05 151.853 Td +/F130_0 9.9626 Tf +(inclusi) 26.5703 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e.) 6.91404 Tj +[1 0 0 1 72 150.543] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -140.581] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 129.935 Td +/F130_0 9.9626 Tf +(This) 17.7135 Tj +-882 TJm +(function) 33.2053 Tj +-883 TJm +(may) 17.1556 Tj +-882 TJm +(only) 17.7135 Tj +-883 TJm +(be) 9.40469 Tj +-882 TJm +(called) 23.7907 Tj +-883 TJm +(once) 18.8094 Tj +[1 0 0 1 271.332 129.935] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -271.332 -129.935] cm +[1 0 0 1 0 0] Tm +0 0 Td +271.332 129.935 Td +/F134_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +[1 0 0 1 331.108 129.935] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -331.108 -129.935] cm +[1 0 0 1 0 0] Tm +0 0 Td +339.9 129.935 Td +/F130_0 9.9626 Tf +(has) 13.2801 Tj +-882 TJm +(signalled) 35.9749 Tj +[1 0 0 1 406.737 129.935] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -406.737 -129.935] cm +[1 0 0 1 0 0] Tm +0 0 Td +406.737 129.935 Td +/F134_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +[1 0 0 1 484.446 129.935] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -484.446 -129.935] cm +[1 0 0 1 0 0] Tm +0 0 Td +493.231 129.935 Td +/F130_0 9.9626 Tf +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-882 TJm +(before) 25.4445 Tj +[1 0 0 1 72 117.98] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -117.98] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 117.98 Td +/F134_0 9.9626 Tf +(BZ2_bzReadClose) 89.6634 Tj +[1 0 0 1 161.664 117.98] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -161.664 -117.98] cm +[1 0 0 1 0 0] Tm +0 0 Td +161.664 117.98 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 116.67] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -106.708] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 96.0625 Td +/F130_0 9.9626 Tf +(Possible) 33.2153 Tj +-250 TJm +(assignments) 48.7072 Tj +-250 TJm +(to) 7.7509 Tj +[1 0 0 1 169.144 96.0625] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -169.144 -96.0625] cm +[1 0 0 1 0 0] Tm +0 0 Td +169.144 96.0625 Td +/F134_0 9.9626 Tf +(bzerror) 41.8429 Tj +[1 0 0 1 210.987 96.0625] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -210.987 -96.0625] cm +[1 0 0 1 0 0] Tm +0 0 Td +210.987 96.0625 Td +/F130_0 9.9626 Tf +(:) 2.7696 Tj +[1 0 0 1 72 93.9057] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -43.0539] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -50.8518] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 50.8518 Td +/F130_0 9.9626 Tf +(21) 9.9626 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 25 25 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 76.4979 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -342.569 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F130_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +[1 0 0 1 496.556 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -496.556 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +496.556 749.245 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 544.376 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.305 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -5.0363] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -129.151] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 107.597 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 104.01] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -711.631] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 711.631 Td +/F134_0 9.9626 Tf +(BZ_PARAM_ERROR) 83.6858 Tj +98.4879 699.676 Td +(if) 11.9551 Tj +-426 TJm +(b) 5.97756 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +98.4879 687.721 Td +(or) 11.9551 Tj +-426 TJm +(unused) 35.8654 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(nUnused) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +90 675.766 Td +(BZ_SEQUENCE_ERROR) 101.619 Tj +98.4879 663.811 Td +(if) 11.9551 Tj +-426 TJm +(BZ_STREAM_END) 77.7083 Tj +-426 TJm +(has) 17.9327 Tj +-426 TJm +(not) 17.9327 Tj +-426 TJm +(been) 23.9102 Tj +-426 TJm +(signalled) 53.798 Tj +98.4879 651.856 Td +(or) 11.9551 Tj +-426 TJm +(if) 11.9551 Tj +-426 TJm +(b) 5.97756 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(opened) 35.8654 Tj +-426 TJm +(with) 23.9102 Tj +-426 TJm +(BZ2_bzWriteOpen) 89.6634 Tj +90 639.9 Td +(BZ_OK) 29.8878 Tj +98.4879 627.945 Td +(otherwise) 53.798 Tj +[1 0 0 1 72 612.404] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -602.441] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 590.486 Td +/F130_0 9.9626 Tf +(Allo) 17.7135 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(able) 16.5977 Tj +-250 TJm +(ne) 9.40469 Tj +15 TJm +(xt) 7.7509 Tj +-250 TJm +(actions:) 30.9936 Tj +[1 0 0 1 72 590.386] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -24.9066] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 23.9103 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 20.3238] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -581.021] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 581.021 Td +/F134_0 9.9626 Tf +(BZ2_bzReadClose) 89.6634 Tj +[1 0 0 1 72 565.48] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -555.517] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 534.858 Td +/F122_0 17.2154 Tf +(3.4.4.) 43.0729 Tj +[1 0 0 1 119.858 534.858] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -119.858 -534.858] cm +[1 0 0 1 0 0] Tm +0 0 Td +119.858 534.858 Td +/F392_0 17.2154 Tf +(BZ2_bzReadClose) 154.939 Tj +[1 0 0 1 274.797 534.858] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -202.797 -2.3327] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -24.9066] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 23.9103 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 20.3237] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3685] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -523.161] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 523.161 Td +/F134_0 9.9626 Tf +(void) 23.9102 Tj +-426 TJm +(BZ2_bzReadClose) 89.6634 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(int) 17.9327 Tj +244.46 521.417 Td +(*) 5.97756 Tj +250.438 523.161 Td +(bzerror,) 47.8205 Tj +-426 TJm +(BZFILE) 35.8654 Tj +342.612 521.417 Td +(*) 5.97756 Tj +348.59 523.161 Td +(b) 5.97756 Tj +-426 TJm +(\);) 11.9551 Tj +[1 0 0 1 72 507.619] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -497.656] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 485.701 Td +/F130_0 9.9626 Tf +(Releases) 34.8591 Tj +-430 TJm +(all) 9.9626 Tj +-429 TJm +(memory) 33.2053 Tj +-430 TJm +(pertaining) 40.3983 Tj +-429 TJm +(to) 7.7509 Tj +-430 TJm +(the) 12.1743 Tj +-429 TJm +(compressed) 47.0334 Tj +-430 TJm +(\002le) 12.7322 Tj +[1 0 0 1 304.352 485.701] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -304.352 -485.701] cm +[1 0 0 1 0 0] Tm +0 0 Td +304.352 485.701 Td +/F134_0 9.9626 Tf +(b) 5.97756 Tj +[1 0 0 1 310.33 485.701] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -310.33 -485.701] cm +[1 0 0 1 0 0] Tm +0 0 Td +310.33 485.701 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 321.276 485.701] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -321.276 -485.701] cm +[1 0 0 1 0 0] Tm +0 0 Td +321.276 485.701 Td +/F134_0 9.9626 Tf +(BZ2_bzReadClose) 89.6634 Tj +[1 0 0 1 410.94 485.701] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -410.94 -485.701] cm +[1 0 0 1 0 0] Tm +0 0 Td +415.22 485.701 Td +/F130_0 9.9626 Tf +(does) 18.2614 Tj +-430 TJm +(not) 12.7322 Tj +-429 TJm +(call) 14.386 Tj +[1 0 0 1 473.438 485.701] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -473.438 -485.701] cm +[1 0 0 1 0 0] Tm +0 0 Td +473.438 485.701 Td +/F134_0 9.9626 Tf +(fclose) 35.8654 Tj +[1 0 0 1 509.304 485.701] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -509.304 -485.701] cm +[1 0 0 1 0 0] Tm +0 0 Td +513.584 485.701 Td +/F130_0 9.9626 Tf +(on) 9.9626 Tj +-430 TJm +(the) 12.1743 Tj +72 473.746 Td +(underlying) 43.1679 Tj +-264 TJm +(\002le) 12.7322 Tj +-264 TJm +(handle,) 29.0509 Tj +-267 TJm +(so) 8.85675 Tj +-264 TJm +(you) 14.9439 Tj +-264 TJm +(should) 26.5703 Tj +-264 TJm +(do) 9.9626 Tj +-264 TJm +(that) 14.9439 Tj +-264 TJm +(yourself) 32.6474 Tj +-264 TJm +(if) 6.08715 Tj +-263 TJm +(appropriate.) 47.8603 Tj +[1 0 0 1 348.653 473.746] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -348.653 -473.746] cm +[1 0 0 1 0 0] Tm +0 0 Td +348.653 473.746 Td +/F134_0 9.9626 Tf +(BZ2_bzReadClose) 89.6634 Tj +[1 0 0 1 438.317 473.746] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -438.317 -473.746] cm +[1 0 0 1 0 0] Tm +0 0 Td +440.946 473.746 Td +/F130_0 9.9626 Tf +(should) 26.5703 Tj +-264 TJm +(be) 9.40469 Tj +-264 TJm +(called) 23.7907 Tj +-264 TJm +(to) 7.7509 Tj +-264 TJm +(clean) 21.0211 Tj +72 461.791 Td +(up) 9.9626 Tj +-250 TJm +(after) 18.2515 Tj +-250 TJm +(all) 9.9626 Tj +-250 TJm +(error) 19.3573 Tj +-250 TJm +(situations.) 40.6873 Tj +[1 0 0 1 72 459.634] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -449.671] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 439.873 Td +/F130_0 9.9626 Tf +(Possible) 33.2153 Tj +-250 TJm +(assignments) 48.7072 Tj +-250 TJm +(to) 7.7509 Tj +[1 0 0 1 169.144 439.873] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -169.144 -439.873] cm +[1 0 0 1 0 0] Tm +0 0 Td +169.144 439.873 Td +/F134_0 9.9626 Tf +(bzerror) 41.8429 Tj +[1 0 0 1 210.987 439.873] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -210.987 -439.873] cm +[1 0 0 1 0 0] Tm +0 0 Td +210.987 439.873 Td +/F130_0 9.9626 Tf +(:) 2.7696 Tj +[1 0 0 1 72 437.716] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -60.7721] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 59.7758 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 56.1893] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -428.351] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 428.351 Td +/F134_0 9.9626 Tf +(BZ_SEQUENCE_ERROR) 101.619 Tj +98.4879 416.396 Td +(if) 11.9551 Tj +-426 TJm +(b) 5.97756 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(opened) 35.8654 Tj +-426 TJm +(with) 23.9102 Tj +-426 TJm +(BZ2_bzOpenWrite) 89.6634 Tj +90 404.441 Td +(BZ_OK) 29.8878 Tj +98.4879 392.486 Td +(otherwise) 53.798 Tj +[1 0 0 1 72 376.944] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -366.982] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 355.026 Td +/F130_0 9.9626 Tf +(Allo) 17.7135 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(able) 16.5977 Tj +-250 TJm +(ne) 9.40469 Tj +15 TJm +(xt) 7.7509 Tj +-250 TJm +(actions:) 30.9936 Tj +[1 0 0 1 72 354.927] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -24.9066] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 23.9103 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 20.3237] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -345.562] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 345.562 Td +/F134_0 9.9626 Tf +(none) 23.9102 Tj +[1 0 0 1 72 330.02] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -320.058] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 299.399 Td +/F122_0 17.2154 Tf +(3.4.5.) 43.0729 Tj +[1 0 0 1 119.858 299.399] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -119.858 -299.399] cm +[1 0 0 1 0 0] Tm +0 0 Td +119.858 299.399 Td +/F392_0 17.2154 Tf +(BZ2_bzWriteOpen) 154.939 Tj +[1 0 0 1 274.797 299.399] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -202.797 -2.3327] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -48.8169] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 47.8207 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 44.2341] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -287.702] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 287.702 Td +/F134_0 9.9626 Tf +(BZFILE) 35.8654 Tj +130.109 285.958 Td +(*) 5.97756 Tj +136.087 287.702 Td +(BZ2_bzWriteOpen\() 95.641 Tj +-426 TJm +(int) 17.9327 Tj +258.149 285.958 Td +(*) 5.97756 Tj +264.127 287.702 Td +(bzerror,) 47.8205 Tj +-426 TJm +(FILE) 23.9102 Tj +344.346 285.958 Td +(*) 5.97756 Tj +350.323 287.702 Td +(f,) 11.9551 Tj +196.099 275.746 Td +(int) 17.9327 Tj +-426 TJm +(blockSize100k,) 83.6858 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(verbosity,) 59.7756 Tj +196.099 263.791 Td +(int) 17.9327 Tj +-426 TJm +(workFactor) 59.7756 Tj +-426 TJm +(\);) 11.9551 Tj +[1 0 0 1 72 248.249] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -238.287] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 226.332 Td +/F130_0 9.9626 Tf +(Prepare) 30.4258 Tj +-268 TJm +(to) 7.7509 Tj +-269 TJm +(write) 20.4731 Tj +-268 TJm +(compressed) 47.0334 Tj +-269 TJm +(data) 16.5977 Tj +-268 TJm +(to) 7.7509 Tj +-269 TJm +(\002le) 12.7322 Tj +-268 TJm +(handle) 26.5603 Tj +[1 0 0 1 262.72 226.332] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -262.72 -226.332] cm +[1 0 0 1 0 0] Tm +0 0 Td +262.72 226.332 Td +/F134_0 9.9626 Tf +(f) 5.97756 Tj +[1 0 0 1 268.698 226.332] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -268.698 -226.332] cm +[1 0 0 1 0 0] Tm +0 0 Td +268.698 226.332 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 274.829 226.332] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -274.829 -226.332] cm +[1 0 0 1 0 0] Tm +0 0 Td +274.829 226.332 Td +/F134_0 9.9626 Tf +(f) 5.97756 Tj +[1 0 0 1 280.807 226.332] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -280.807 -226.332] cm +[1 0 0 1 0 0] Tm +0 0 Td +283.481 226.332 Td +/F130_0 9.9626 Tf +(should) 26.5703 Tj +-268 TJm +(refer) 18.7994 Tj +-269 TJm +(to) 7.7509 Tj +-268 TJm +(a) 4.42339 Tj +-269 TJm +(\002le) 12.7322 Tj +-268 TJm +(which) 24.3486 Tj +-269 TJm +(has) 13.2801 Tj +-268 TJm +(been) 18.8094 Tj +-269 TJm +(opened) 28.772 Tj +-268 TJm +(for) 11.6164 Tj +-269 TJm +(writing,) 31.2726 Tj +-273 TJm +(and) 14.386 Tj +-268 TJm +(for) 11.6164 Tj +72 214.377 Td +(which) 24.3486 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(error) 19.3573 Tj +-250 TJm +(indicator) 35.417 Tj +-250 TJm +(\() 3.31755 Tj +[1 0 0 1 176.577 214.376] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -176.577 -214.376] cm +[1 0 0 1 0 0] Tm +0 0 Td +176.577 214.376 Td +/F134_0 9.9626 Tf +(ferror\(f\)) 53.798 Tj +[1 0 0 1 230.375 214.376] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -230.375 -214.376] cm +[1 0 0 1 0 0] Tm +0 0 Td +230.375 214.376 Td +/F130_0 9.9626 Tf +(\)is) 9.9626 Tj +-250 TJm +(not) 12.7322 Tj +-250 TJm +(set.) 13.5591 Tj +[1 0 0 1 72 212.593] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -202.631] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 192.459 Td +/F130_0 9.9626 Tf +(F) 5.53921 Tj +15 TJm +(or) 8.29885 Tj +-223 TJm +(the) 12.1743 Tj +-224 TJm +(meaning) 34.3112 Tj +-223 TJm +(of) 8.29885 Tj +-224 TJm +(parameters) 43.7059 Tj +[1 0 0 1 195.306 192.459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -195.306 -192.459] cm +[1 0 0 1 0 0] Tm +0 0 Td +195.306 192.459 Td +/F134_0 9.9626 Tf +(blockSize100k) 77.7083 Tj +[1 0 0 1 273.015 192.459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -273.015 -192.459] cm +[1 0 0 1 0 0] Tm +0 0 Td +273.015 192.459 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 277.784 192.459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -277.784 -192.459] cm +[1 0 0 1 0 0] Tm +0 0 Td +277.784 192.459 Td +/F134_0 9.9626 Tf +(verbosity) 53.798 Tj +[1 0 0 1 331.583 192.459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -331.583 -192.459] cm +[1 0 0 1 0 0] Tm +0 0 Td +333.808 192.459 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 350.42 192.459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -350.42 -192.459] cm +[1 0 0 1 0 0] Tm +0 0 Td +350.42 192.459 Td +/F134_0 9.9626 Tf +(workFactor) 59.7756 Tj +[1 0 0 1 410.196 192.459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -410.196 -192.459] cm +[1 0 0 1 0 0] Tm +0 0 Td +410.196 192.459 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-229 TJm +(see) 12.7222 Tj +[1 0 0 1 429.913 192.459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -429.913 -192.459] cm +[1 0 0 1 0 0] Tm +0 0 Td +429.913 192.459 Td +/F134_0 9.9626 Tf +(BZ2_bzCompressInit) 107.596 Tj +[1 0 0 1 537.509 192.459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -537.509 -192.459] cm +[1 0 0 1 0 0] Tm +0 0 Td +537.509 192.459 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 190.302] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -180.339] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 170.541 Td +/F130_0 9.9626 Tf +(All) 12.7322 Tj +-382 TJm +(required) 33.1954 Tj +-382 TJm +(memory) 33.2053 Tj +-382 TJm +(is) 6.64505 Tj +-382 TJm +(allocated) 35.965 Tj +-383 TJm +(at) 7.193 Tj +-382 TJm +(this) 14.396 Tj +-382 TJm +(stage,) 22.9638 Tj +-415 TJm +(so) 8.85675 Tj +-382 TJm +(if) 6.08715 Tj +-382 TJm +(the) 12.1743 Tj +-382 TJm +(call) 14.386 Tj +-382 TJm +(completes) 40.3983 Tj +-382 TJm +(successfully) 48.6972 Tj +65 TJm +(,) 2.49065 Tj +[1 0 0 1 424.691 170.541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -424.691 -170.541] cm +[1 0 0 1 0 0] Tm +0 0 Td +424.691 170.541 Td +/F134_0 9.9626 Tf +(BZ_MEM_ERROR) 71.7307 Tj +[1 0 0 1 496.422 170.541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -496.422 -170.541] cm +[1 0 0 1 0 0] Tm +0 0 Td +500.228 170.541 Td +/F130_0 9.9626 Tf +(cannot) 26.5603 Tj +-382 TJm +(be) 9.40469 Tj +72 158.586 Td +(signalled) 35.9749 Tj +-250 TJm +(by) 9.9626 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(subsequent) 44.2738 Tj +-250 TJm +(call) 14.386 Tj +-250 TJm +(to) 7.7509 Tj +[1 0 0 1 203.715 158.586] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -203.715 -158.586] cm +[1 0 0 1 0 0] Tm +0 0 Td +203.715 158.586 Td +/F134_0 9.9626 Tf +(BZ2_bzWrite) 65.7532 Tj +[1 0 0 1 269.468 158.586] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -269.468 -158.586] cm +[1 0 0 1 0 0] Tm +0 0 Td +269.468 158.586 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 156.429] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -146.466] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 136.668 Td +/F130_0 9.9626 Tf +(Possible) 33.2153 Tj +-250 TJm +(assignments) 48.7072 Tj +-250 TJm +(to) 7.7509 Tj +[1 0 0 1 169.144 136.668] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -169.144 -136.668] cm +[1 0 0 1 0 0] Tm +0 0 Td +169.144 136.668 Td +/F134_0 9.9626 Tf +(bzerror) 41.8429 Tj +[1 0 0 1 210.987 136.668] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -210.987 -136.668] cm +[1 0 0 1 0 0] Tm +0 0 Td +210.987 136.668 Td +/F130_0 9.9626 Tf +(:) 2.7696 Tj +[1 0 0 1 72 134.511] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -83.6593] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -50.8518] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 50.8518 Td +/F130_0 9.9626 Tf +(22) 9.9626 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 26 26 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 76.4979 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -342.569 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F130_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +[1 0 0 1 496.556 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -496.556 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +496.556 749.245 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 544.376 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.305 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -5.0363] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -165.016] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 143.462 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 139.875] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -711.631] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 711.631 Td +/F134_0 9.9626 Tf +(BZ_CONFIG_ERROR) 89.6634 Tj +98.4879 699.676 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(library) 41.8429 Tj +-426 TJm +(has) 17.9327 Tj +-426 TJm +(been) 23.9102 Tj +-426 TJm +(mis-compiled) 71.7307 Tj +90 687.721 Td +(BZ_PARAM_ERROR) 83.6858 Tj +98.4879 675.766 Td +(if) 11.9551 Tj +-426 TJm +(f) 5.97756 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +98.4879 663.811 Td +(or) 11.9551 Tj +-426 TJm +(blockSize100k) 77.7083 Tj +-426 TJm +(<) 5.97756 Tj +-426 TJm +(1) 5.97756 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(blockSize100k) 77.7083 Tj +-426 TJm +(>) 5.97756 Tj +-426 TJm +(9) 5.97756 Tj +90 651.856 Td +(BZ_IO_ERROR) 65.7532 Tj +98.4879 639.9 Td +(if) 11.9551 Tj +-426 TJm +(ferror\(f\)) 53.798 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(nonzero) 41.8429 Tj +90 627.945 Td +(BZ_MEM_ERROR) 71.7307 Tj +98.4879 615.99 Td +(if) 11.9551 Tj +-426 TJm +(insufficient) 71.7307 Tj +-426 TJm +(memory) 35.8654 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(available) 53.798 Tj +90 604.035 Td +(BZ_OK) 29.8878 Tj +98.4879 592.08 Td +(otherwise) 53.798 Tj +[1 0 0 1 72 576.538] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -566.575] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 554.62 Td +/F130_0 9.9626 Tf +(Possible) 33.2153 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues:) 23.2427 Tj +[1 0 0 1 72 554.521] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -60.7721] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 59.7758 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 56.1892] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -545.156] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 545.156 Td +/F134_0 9.9626 Tf +(Pointer) 41.8429 Tj +-426 TJm +(to) 11.9551 Tj +-426 TJm +(an) 11.9551 Tj +-426 TJm +(abstract) 47.8205 Tj +-426 TJm +(BZFILE) 35.8654 Tj +98.4879 533.201 Td +(if) 11.9551 Tj +-426 TJm +(bzerror) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(BZ_OK) 29.8878 Tj +90 521.245 Td +(NULL) 23.9102 Tj +98.4879 509.29 Td +(otherwise) 53.798 Tj +[1 0 0 1 72 493.748] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -483.786] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 471.831 Td +/F130_0 9.9626 Tf +(Allo) 17.7135 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(able) 16.5977 Tj +-250 TJm +(ne) 9.40469 Tj +15 TJm +(xt) 7.7509 Tj +-250 TJm +(actions:) 30.9936 Tj +[1 0 0 1 72 471.731] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -84.6825] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 83.6862 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 80.0996] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -462.366] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 462.366 Td +/F134_0 9.9626 Tf +(BZ2_bzWrite) 65.7532 Tj +98.4879 450.411 Td +(if) 11.9551 Tj +-426 TJm +(bzerror) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(BZ_OK) 29.8878 Tj +98.4879 438.456 Td +(\(you) 23.9102 Tj +-426 TJm +(could) 29.8878 Tj +-426 TJm +(go) 11.9551 Tj +-426 TJm +(directly) 47.8205 Tj +-426 TJm +(to) 11.9551 Tj +-426 TJm +(BZ2_bzWriteClose,) 101.619 Tj +-426 TJm +(but) 17.9327 Tj +-426 TJm +(this) 23.9102 Tj +-426 TJm +(would) 29.8878 Tj +-426 TJm +(be) 11.9551 Tj +-426 TJm +(pretty) 35.8654 Tj +485.505 434.212 Td +/F564_0 9.9626 Tf +( ) 9.9626 Tj +493.808 434.212 Td +/F147_0 9.9626 Tf +(-) 2.7696 Tj +90 426.501 Td +/F134_0 9.9626 Tf +(pointless\)) 59.7756 Tj +90 414.546 Td +(BZ2_bzWriteClose) 95.641 Tj +98.4879 402.59 Td +(otherwise) 53.798 Tj +[1 0 0 1 72 387.049] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -377.086] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 356.428 Td +/F122_0 17.2154 Tf +(3.4.6.) 43.0729 Tj +[1 0 0 1 119.858 356.428] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -119.858 -356.428] cm +[1 0 0 1 0 0] Tm +0 0 Td +119.858 356.428 Td +/F392_0 17.2154 Tf +(BZ2_bzWrite) 113.622 Tj +[1 0 0 1 233.48 356.428] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -161.48 -2.3327] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -24.9066] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 23.9103 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 20.3237] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3685] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -344.73] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 344.73 Td +/F134_0 9.9626 Tf +(void) 23.9102 Tj +-426 TJm +(BZ2_bzWrite) 65.7532 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(int) 17.9327 Tj +220.55 342.987 Td +(*) 5.97756 Tj +226.528 344.73 Td +(bzerror,) 47.8205 Tj +-426 TJm +(BZFILE) 35.8654 Tj +318.702 342.987 Td +(*) 5.97756 Tj +324.679 344.73 Td +(b,) 11.9551 Tj +-426 TJm +(void) 23.9102 Tj +369.033 342.987 Td +(*) 5.97756 Tj +375.01 344.73 Td +(buf,) 23.9102 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(len) 17.9327 Tj +-426 TJm +(\);) 11.9551 Tj +[1 0 0 1 72 329.188] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -319.226] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 307.27 Td +/F130_0 9.9626 Tf +(Absorbs) 33.2053 Tj +[1 0 0 1 107.696 307.27] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -107.696 -307.27] cm +[1 0 0 1 0 0] Tm +0 0 Td +107.696 307.27 Td +/F134_0 9.9626 Tf +(len) 17.9327 Tj +[1 0 0 1 125.629 307.27] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -125.629 -307.27] cm +[1 0 0 1 0 0] Tm +0 0 Td +128.119 307.27 Td +/F130_0 9.9626 Tf +(bytes) 21.031 Tj +-250 TJm +(from) 19.3673 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +[1 0 0 1 214.544 307.27] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -214.544 -307.27] cm +[1 0 0 1 0 0] Tm +0 0 Td +214.544 307.27 Td +/F134_0 9.9626 Tf +(buf) 17.9327 Tj +[1 0 0 1 232.477 307.27] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -232.477 -307.27] cm +[1 0 0 1 0 0] Tm +0 0 Td +232.477 307.27 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-250 TJm +(e) 4.42339 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(entually) 32.0995 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(be) 9.40469 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(written) 28.224 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(\002le.) 15.2229 Tj +[1 0 0 1 72 305.114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -295.151] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 285.353 Td +/F130_0 9.9626 Tf +(Possible) 33.2153 Tj +-250 TJm +(assignments) 48.7072 Tj +-250 TJm +(to) 7.7509 Tj +[1 0 0 1 169.144 285.353] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -169.144 -285.353] cm +[1 0 0 1 0 0] Tm +0 0 Td +169.144 285.353 Td +/F134_0 9.9626 Tf +(bzerror) 41.8429 Tj +[1 0 0 1 210.987 285.353] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -210.987 -285.353] cm +[1 0 0 1 0 0] Tm +0 0 Td +210.987 285.353 Td +/F130_0 9.9626 Tf +(:) 2.7696 Tj +[1 0 0 1 72 283.196] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -108.593] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 107.597 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 104.01] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -273.831] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 273.831 Td +/F134_0 9.9626 Tf +(BZ_PARAM_ERROR) 83.6858 Tj +98.4879 261.876 Td +(if) 11.9551 Tj +-426 TJm +(b) 5.97756 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(buf) 17.9327 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(len) 17.9327 Tj +-426 TJm +(<) 5.97756 Tj +-426 TJm +(0) 5.97756 Tj +90 249.921 Td +(BZ_SEQUENCE_ERROR) 101.619 Tj +98.4879 237.965 Td +(if) 11.9551 Tj +-426 TJm +(b) 5.97756 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(opened) 35.8654 Tj +-426 TJm +(with) 23.9102 Tj +-426 TJm +(BZ2_bzReadOpen) 83.6858 Tj +90 226.01 Td +(BZ_IO_ERROR) 65.7532 Tj +98.4879 214.055 Td +(if) 11.9551 Tj +-426 TJm +(there) 29.8878 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(an) 11.9551 Tj +-426 TJm +(error) 29.8878 Tj +-426 TJm +(writing) 41.8429 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +-426 TJm +(file.) 29.8878 Tj +90 202.1 Td +(BZ_OK) 29.8878 Tj +98.4879 190.145 Td +(otherwise) 53.798 Tj +[1 0 0 1 72 174.603] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -164.64] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 143.982 Td +/F122_0 17.2154 Tf +(3.4.7.) 43.0729 Tj +[1 0 0 1 119.858 143.982] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -119.858 -143.982] cm +[1 0 0 1 0 0] Tm +0 0 Td +119.858 143.982 Td +/F392_0 17.2154 Tf +(BZ2_bzWriteClose) 165.268 Tj +[1 0 0 1 285.126 143.982] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -213.126 -2.3326] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -90.7975] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7545] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -50.9514] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 50.9514 Td +/F130_0 9.9626 Tf +(23) 9.9626 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 27 27 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 76.4979 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -342.569 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F130_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +[1 0 0 1 496.556 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -496.556 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +496.556 749.245 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 544.376 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.305 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -5.0363] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -165.016] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 143.462 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 139.875] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -711.631] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 711.631 Td +/F134_0 9.9626 Tf +(void) 23.9102 Tj +-426 TJm +(BZ2_bzWriteClose\() 101.619 Tj +-426 TJm +(int) 17.9327 Tj +246.194 709.888 Td +(*) 5.97756 Tj +252.171 711.631 Td +(bzerror,) 47.8205 Tj +-426 TJm +(BZFILE) 35.8654 Tj +340.102 709.888 Td +(*) 5.97756 Tj +350.323 711.631 Td +(f,) 11.9551 Tj +187.611 699.676 Td +(int) 17.9327 Tj +-426 TJm +(abandon,) 47.8205 Tj +187.611 687.721 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +257.609 685.978 Td +(*) 5.97756 Tj +267.83 687.721 Td +(nbytes_in,) 59.7756 Tj +187.611 675.766 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +257.609 674.023 Td +(*) 5.97756 Tj +267.83 675.766 Td +(nbytes_out) 59.7756 Tj +-426 TJm +(\);) 11.9551 Tj +90 651.856 Td +(void) 23.9102 Tj +-426 TJm +(BZ2_bzWriteClose64\() 113.574 Tj +-426 TJm +(int) 17.9327 Tj +258.149 650.112 Td +(*) 5.97756 Tj +264.127 651.856 Td +(bzerror,) 47.8205 Tj +-426 TJm +(BZFILE) 35.8654 Tj +352.057 650.112 Td +(*) 5.97756 Tj +362.278 651.856 Td +(f,) 11.9551 Tj +196.099 639.9 Td +(int) 17.9327 Tj +-426 TJm +(abandon,) 47.8205 Tj +196.099 627.945 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +266.097 626.202 Td +(*) 5.97756 Tj +276.318 627.945 Td +(nbytes_in_lo32,) 89.6634 Tj +196.099 615.99 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +266.097 614.247 Td +(*) 5.97756 Tj +276.318 615.99 Td +(nbytes_in_hi32,) 89.6634 Tj +196.099 604.035 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +266.097 602.292 Td +(*) 5.97756 Tj +276.318 604.035 Td +(nbytes_out_lo32,) 95.641 Tj +196.099 592.08 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +266.097 590.336 Td +(*) 5.97756 Tj +276.318 592.08 Td +(nbytes_out_hi32) 89.6634 Tj +-426 TJm +(\);) 11.9551 Tj +[1 0 0 1 72 576.538] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -566.575] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 554.62 Td +/F130_0 9.9626 Tf +(Compresses) 48.1492 Tj +-403 TJm +(and) 14.386 Tj +-402 TJm +(\003ushes) 27.6761 Tj +-403 TJm +(to) 7.7509 Tj +-403 TJm +(the) 12.1743 Tj +-402 TJm +(compressed) 47.0334 Tj +-403 TJm +(\002le) 12.7322 Tj +-403 TJm +(a) 4.42339 Tj +1 TJm +(ll) 5.53921 Tj +-403 TJm +(data) 16.5977 Tj +-403 TJm +(so) 8.85675 Tj +-402 TJm +(f) 3.31755 Tj +10 TJm +(ar) 7.74094 Tj +-403 TJm +(supplied) 33.7633 Tj +-403 TJm +(by) 9.9626 Tj +[1 0 0 1 384.152 554.62] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -384.152 -554.62] cm +[1 0 0 1 0 0] Tm +0 0 Td +384.152 554.62 Td +/F134_0 9.9626 Tf +(BZ2_bzWrite) 65.7532 Tj +[1 0 0 1 449.906 554.62] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -449.906 -554.62] cm +[1 0 0 1 0 0] Tm +0 0 Td +449.906 554.62 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-768 TJm +(The) 15.4918 Tj +-403 TJm +(logical) 27.1182 Tj +-402 TJm +(end-of-) 29.3199 Tj +72 542.665 Td +(stream) 26.5603 Tj +-352 TJm +(mark) 20.4731 Tj +10 TJm +(ers) 11.6164 Tj +-352 TJm +(are) 12.1643 Tj +-353 TJm +(also) 16.0497 Tj +-352 TJm +(written,) 30.7147 Tj +-378 TJm +(so) 8.85675 Tj +-352 TJm +(subsequent) 44.2738 Tj +-352 TJm +(calls) 18.2614 Tj +-352 TJm +(to) 7.7509 Tj +[1 0 0 1 300.456 542.665] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -300.456 -542.665] cm +[1 0 0 1 0 0] Tm +0 0 Td +300.456 542.665 Td +/F134_0 9.9626 Tf +(BZ2_bzWrite) 65.7532 Tj +[1 0 0 1 366.209 542.665] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -366.209 -542.665] cm +[1 0 0 1 0 0] Tm +0 0 Td +369.718 542.665 Td +/F130_0 9.9626 Tf +(are) 12.1643 Tj +-352 TJm +(ille) 12.7322 Tj +15 TJm +(g) 4.9813 Tj +5 TJm +(al.) 9.68365 Tj +-1234 TJm +(All) 12.7322 Tj +-352 TJm +(memory) 33.2053 Tj +-352 TJm +(associated) 40.9463 Tj +-352 TJm +(with) 17.7135 Tj +72 530.71 Td +(the) 12.1743 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(\002le) 12.7322 Tj +[1 0 0 1 151.411 530.71] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -151.411 -530.71] cm +[1 0 0 1 0 0] Tm +0 0 Td +151.411 530.71 Td +/F134_0 9.9626 Tf +(b) 5.97756 Tj +[1 0 0 1 157.389 530.71] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -157.389 -530.71] cm +[1 0 0 1 0 0] Tm +0 0 Td +159.879 530.71 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-250 TJm +(released.) 35.1281 Tj +[1 0 0 1 207.231 530.71] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -207.231 -530.71] cm +[1 0 0 1 0 0] Tm +0 0 Td +207.231 530.71 Td +/F134_0 9.9626 Tf +(fflush) 35.8654 Tj +[1 0 0 1 243.097 530.71] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -243.097 -530.71] cm +[1 0 0 1 0 0] Tm +0 0 Td +245.587 530.71 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-250 TJm +(called) 23.7907 Tj +-250 TJm +(on) 9.9626 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(\002le,) 15.2229 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-250 TJm +(it) 5.53921 Tj +-250 TJm +(is) 6.64505 Tj +-250 TJm +(not) 12.7322 Tj +[1 0 0 1 422.771 530.71] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -422.771 -530.71] cm +[1 0 0 1 0 0] Tm +0 0 Td +422.771 530.71 Td +/F134_0 9.9626 Tf +(fclose) 35.8654 Tj +[1 0 0 1 458.636 530.71] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -458.636 -530.71] cm +[1 0 0 1 0 0] Tm +0 0 Td +458.636 530.71 Td +/F130_0 9.9626 Tf +(') 3.31755 Tj +50 TJm +(d.) 7.47195 Tj +[1 0 0 1 72 528.553] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -518.59] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 508.792 Td +/F130_0 9.9626 Tf +(If) 6.63509 Tj +[1 0 0 1 81.5743 508.792] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -81.5743 -508.792] cm +[1 0 0 1 0 0] Tm +0 0 Td +81.5743 508.792 Td +/F134_0 9.9626 Tf +(BZ2_bzWriteClose) 95.641 Tj +[1 0 0 1 177.216 508.792] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -177.216 -508.792] cm +[1 0 0 1 0 0] Tm +0 0 Td +180.155 508.792 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-295 TJm +(called) 23.7907 Tj +-295 TJm +(to) 7.7509 Tj +-295 TJm +(clean) 21.0211 Tj +-295 TJm +(up) 9.9626 Tj +-295 TJm +(after) 18.2515 Tj +-295 TJm +(an) 9.40469 Tj +-295 TJm +(error) 19.3573 Tj +40 TJm +(,) 2.49065 Tj +-306 TJm +(the) 12.1743 Tj +-295 TJm +(only) 17.7135 Tj +-295 TJm +(action) 24.3486 Tj +-295 TJm +(is) 6.64505 Tj +-295 TJm +(to) 7.7509 Tj +-295 TJm +(release) 27.6562 Tj +-295 TJm +(the) 12.1743 Tj +-295 TJm +(memory) 33.2053 Tj +65 TJm +(.) 2.49065 Tj +-891 TJm +(The) 15.4918 Tj +-295 TJm +(library) 26.5603 Tj +72 496.837 Td +(records) 29.3199 Tj +-289 TJm +(the) 12.1743 Tj +-289 TJm +(error) 19.3573 Tj +-289 TJm +(codes) 22.6848 Tj +-289 TJm +(issued) 24.9065 Tj +-289 TJm +(by) 9.9626 Tj +-289 TJm +(pre) 12.7222 Tj +25 TJm +(vious) 21.589 Tj +-289 TJm +(calls,) 20.7521 Tj +-299 TJm +(so) 8.85675 Tj +-289 TJm +(this) 14.396 Tj +-289 TJm +(situation) 34.3212 Tj +-289 TJm +(will) 15.5018 Tj +-289 TJm +(be) 9.40469 Tj +-289 TJm +(detected) 33.1954 Tj +-289 TJm +(automatically) 54.2364 Tj +65 TJm +(.) 2.49065 Tj +-427 TJm +(There) 23.2328 Tj +-289 TJm +(is) 6.64505 Tj +-289 TJm +(no) 9.9626 Tj +-289 TJm +(attempt) 29.8878 Tj +72 484.882 Td +(to) 7.7509 Tj +-263 TJm +(complete) 36.5229 Tj +-262 TJm +(the) 12.1743 Tj +-263 TJm +(compression) 50.3609 Tj +-263 TJm +(operation,) 40.1194 Tj +-265 TJm +(nor) 13.2801 Tj +-263 TJm +(to) 7.7509 Tj +[1 0 0 1 258.308 484.882] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -258.308 -484.882] cm +[1 0 0 1 0 0] Tm +0 0 Td +258.308 484.882 Td +/F134_0 9.9626 Tf +(fflush) 35.8654 Tj +[1 0 0 1 294.173 484.882] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -294.173 -484.882] cm +[1 0 0 1 0 0] Tm +0 0 Td +296.79 484.882 Td +/F130_0 9.9626 Tf +(the) 12.1743 Tj +-263 TJm +(compressed) 47.0334 Tj +-262 TJm +(\002le.) 15.2229 Tj +-696 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-263 TJm +(can) 13.8281 Tj +-263 TJm +(force) 20.4632 Tj +-262 TJm +(this) 14.396 Tj +-263 TJm +(beha) 18.8094 Tj +20 TJm +(viour) 21.031 Tj +-263 TJm +(to) 7.7509 Tj +-262 TJm +(happen) 28.772 Tj +72 472.926 Td +(e) 4.42339 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(en) 9.40469 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(case) 17.1456 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(no) 9.9626 Tj +-250 TJm +(error) 19.3573 Tj +40 TJm +(,) 2.49065 Tj +-250 TJm +(by) 9.9626 Tj +-250 TJm +(passing) 29.8878 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(nonzero) 32.0895 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alue) 16.5977 Tj +-250 TJm +(to) 7.7509 Tj +[1 0 0 1 305.014 472.926] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -305.014 -472.926] cm +[1 0 0 1 0 0] Tm +0 0 Td +305.014 472.926 Td +/F134_0 9.9626 Tf +(abandon) 41.8429 Tj +[1 0 0 1 346.858 472.926] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -346.858 -472.926] cm +[1 0 0 1 0 0] Tm +0 0 Td +346.858 472.926 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 470.77] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -460.807] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 451.009 Td +/F130_0 9.9626 Tf +(If) 6.63509 Tj +[1 0 0 1 80.5974 451.009] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -80.5974 -451.009] cm +[1 0 0 1 0 0] Tm +0 0 Td +80.5974 451.009 Td +/F134_0 9.9626 Tf +(nbytes_in) 53.798 Tj +[1 0 0 1 134.396 451.009] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -134.396 -451.009] cm +[1 0 0 1 0 0] Tm +0 0 Td +136.358 451.009 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-197 TJm +(non-null,) 36.2539 Tj +[1 0 0 1 183.287 451.009] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -183.287 -451.009] cm +[1 0 0 1 0 0] Tm +0 0 Td +183.287 449.265 Td +/F134_0 9.9626 Tf +(*) 5.97756 Tj +189.265 451.009 Td +(nbytes_in) 53.798 Tj +[1 0 0 1 243.063 451.009] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -243.063 -451.009] cm +[1 0 0 1 0 0] Tm +0 0 Td +245.025 451.009 Td +/F130_0 9.9626 Tf +(will) 15.5018 Tj +-197 TJm +(be) 9.40469 Tj +-197 TJm +(set) 11.0684 Tj +-197 TJm +(to) 7.7509 Tj +-197 TJm +(be) 9.40469 Tj +-197 TJm +(the) 12.1743 Tj +-197 TJm +(total) 17.7135 Tj +-197 TJm +(v) 4.9813 Tj +20 TJm +(olume) 24.9065 Tj +-197 TJm +(of) 8.29885 Tj +-197 TJm +(uncompressed) 56.996 Tj +-197 TJm +(data) 16.5977 Tj +-197 TJm +(handled.) 34.0322 Tj +-584 TJm +(Similarly) 37.0908 Tj +65 TJm +(,) 2.49065 Tj +[1 0 0 1 72 439.053] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -439.053] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 439.053 Td +/F134_0 9.9626 Tf +(nbytes_out) 59.7756 Tj +[1 0 0 1 131.776 439.053] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -131.776 -439.053] cm +[1 0 0 1 0 0] Tm +0 0 Td +134.716 439.053 Td +/F130_0 9.9626 Tf +(will) 15.5018 Tj +-295 TJm +(be) 9.40469 Tj +-295 TJm +(set) 11.0684 Tj +-295 TJm +(to) 7.7509 Tj +-295 TJm +(the) 12.1743 Tj +-295 TJm +(total) 17.7135 Tj +-295 TJm +(v) 4.9813 Tj +20 TJm +(olume) 24.9065 Tj +-296 TJm +(of) 8.29885 Tj +-295 TJm +(compressed) 47.0334 Tj +-295 TJm +(data) 16.5977 Tj +-295 TJm +(written.) 30.7147 Tj +-890 TJm +(F) 5.53921 Tj +15 TJm +(or) 8.29885 Tj +-295 TJm +(compatibility) 53.1405 Tj +-295 TJm +(with) 17.7135 Tj +-295 TJm +(older) 20.4731 Tj +-296 TJm +(v) 4.9813 Tj +15 TJm +(ersions) 28.224 Tj +-295 TJm +(of) 8.29885 Tj +72 427.098 Td +(the) 12.1743 Tj +-283 TJm +(library) 26.5603 Tj +65 TJm +(,) 2.49065 Tj +[1 0 0 1 118.294 427.098] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -118.294 -427.098] cm +[1 0 0 1 0 0] Tm +0 0 Td +118.294 427.098 Td +/F134_0 9.9626 Tf +(BZ2_bzWriteClose) 95.641 Tj +[1 0 0 1 213.936 427.098] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -213.936 -427.098] cm +[1 0 0 1 0 0] Tm +0 0 Td +216.753 427.098 Td +/F130_0 9.9626 Tf +(only) 17.7135 Tj +-283 TJm +(yields) 23.8007 Tj +-283 TJm +(the) 12.1743 Tj +-282 TJm +(lo) 7.7509 Tj +25 TJm +(wer) 14.9339 Tj +-283 TJm +(32) 9.9626 Tj +-283 TJm +(bits) 14.396 Tj +-283 TJm +(of) 8.29885 Tj +-283 TJm +(these) 20.4731 Tj +-282 TJm +(counts.) 28.503 Tj +-817 TJm +(Use) 15.4918 Tj +[1 0 0 1 423.499 427.098] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -423.499 -427.098] cm +[1 0 0 1 0 0] Tm +0 0 Td +423.499 427.098 Td +/F134_0 9.9626 Tf +(BZ2_bzWriteClose64) 107.596 Tj +[1 0 0 1 531.095 427.098] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -531.095 -427.098] cm +[1 0 0 1 0 0] Tm +0 0 Td +533.913 427.098 Td +/F130_0 9.9626 Tf +(if) 6.08715 Tj +72 415.143 Td +(you) 14.9439 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(ant) 12.1743 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(full) 13.8381 Tj +-250 TJm +(64) 9.9626 Tj +-250 TJm +(bit) 10.5205 Tj +-250 TJm +(counts.) 28.503 Tj +-620 TJm +(These) 23.7907 Tj +-250 TJm +(tw) 9.9626 Tj +10 TJm +(o) 4.9813 Tj +-250 TJm +(functions) 37.0808 Tj +-250 TJm +(are) 12.1643 Tj +-250 TJm +(otherwise) 38.7346 Tj +-250 TJm +(absolutely) 40.9562 Tj +-250 TJm +(identical.) 36.8018 Tj +[1 0 0 1 72 412.986] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -403.024] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 393.225 Td +/F130_0 9.9626 Tf +(Possible) 33.2153 Tj +-250 TJm +(assignments) 48.7072 Tj +-250 TJm +(to) 7.7509 Tj +[1 0 0 1 169.144 393.225] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -169.144 -393.225] cm +[1 0 0 1 0 0] Tm +0 0 Td +169.144 393.225 Td +/F134_0 9.9626 Tf +(bzerror) 41.8429 Tj +[1 0 0 1 210.987 393.225] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -210.987 -393.225] cm +[1 0 0 1 0 0] Tm +0 0 Td +210.987 393.225 Td +/F130_0 9.9626 Tf +(:) 2.7696 Tj +[1 0 0 1 72 391.069] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -84.6825] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 83.6862 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 80.0996] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -381.704] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 381.704 Td +/F134_0 9.9626 Tf +(BZ_SEQUENCE_ERROR) 101.619 Tj +98.4879 369.748 Td +(if) 11.9551 Tj +-426 TJm +(b) 5.97756 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(opened) 35.8654 Tj +-426 TJm +(with) 23.9102 Tj +-426 TJm +(BZ2_bzReadOpen) 83.6858 Tj +90 357.793 Td +(BZ_IO_ERROR) 65.7532 Tj +98.4879 345.838 Td +(if) 11.9551 Tj +-426 TJm +(there) 29.8878 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(an) 11.9551 Tj +-426 TJm +(error) 29.8878 Tj +-426 TJm +(writing) 41.8429 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +-426 TJm +(file) 23.9102 Tj +90 333.883 Td +(BZ_OK) 29.8878 Tj +98.4879 321.928 Td +(otherwise) 53.798 Tj +[1 0 0 1 72 306.386] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -296.423] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 275.765 Td +/F122_0 17.2154 Tf +(3.4.8.) 43.0729 Tj +-278 TJm +(Handling) 73.6475 Tj +-278 TJm +(embed) 55.4852 Tj +10 TJm +(ded) 30.609 Tj +-278 TJm +(compressed) 101.416 Tj +-278 TJm +(data) 35.3949 Tj +-278 TJm +(streams) 66.0211 Tj +[1 0 0 1 72 271.935] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -261.972] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 253.847 Td +/F130_0 9.9626 Tf +(The) 15.4918 Tj +-203 TJm +(high-le) 28.224 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-203 TJm +(library) 26.5603 Tj +-203 TJm +(f) 3.31755 Tj +10 TJm +(acilitates) 35.417 Tj +-203 TJm +(use) 13.2801 Tj +-203 TJm +(of) 8.29885 Tj +[1 0 0 1 226.404 253.847] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -226.404 -253.847] cm +[1 0 0 1 0 0] Tm +0 0 Td +226.404 253.847 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 256.292 253.847] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -256.292 -253.847] cm +[1 0 0 1 0 0] Tm +0 0 Td +258.316 253.847 Td +/F130_0 9.9626 Tf +(data) 16.5977 Tj +-203 TJm +(streams) 30.4357 Tj +-203 TJm +(which) 24.3486 Tj +-203 TJm +(form) 19.3673 Tj +-203 TJm +(some) 21.031 Tj +-203 TJm +(part) 15.4918 Tj +-203 TJm +(of) 8.29885 Tj +-204 TJm +(a) 4.42339 Tj +-203 TJm +(surrounding,) 50.6399 Tj +-212 TJm +(lar) 10.5105 Tj +18 TJm +(ger) 12.7222 Tj +-203 TJm +(data) 16.5977 Tj +-203 TJm +(stream.) 29.0509 Tj +[1 0 0 1 72 251.69] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -29.7236] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.9739 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -78.9739 -221.967] cm +[1 0 0 1 0 0] Tm +0 0 Td +78.9739 221.967 Td +/F130_0 9.9626 Tf +(\225) 3.48691 Tj +[1 0 0 1 82.4608 221.967] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 1.9925 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -86.944 -221.967] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 221.967 Td +/F130_0 9.9626 Tf +(F) 5.53921 Tj +15 TJm +(or) 8.29885 Tj +-240 TJm +(writing,) 31.2726 Tj +-243 TJm +(the) 12.1743 Tj +-240 TJm +(library) 26.5603 Tj +-241 TJm +(tak) 12.1743 Tj +10 TJm +(es) 8.29885 Tj +-240 TJm +(an) 9.40469 Tj +-241 TJm +(open) 19.3673 Tj +-240 TJm +(\002le) 12.7322 Tj +-241 TJm +(handle,) 29.0509 Tj +-242 TJm +(writes) 24.3486 Tj +-241 TJm +(compres) 33.7533 Tj +1 TJm +(sed) 13.2801 Tj +-241 TJm +(data) 16.5977 Tj +-240 TJm +(to) 7.7509 Tj +-241 TJm +(it,) 8.02986 Tj +[1 0 0 1 398.926 221.967] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -398.926 -221.967] cm +[1 0 0 1 0 0] Tm +0 0 Td +398.926 221.967 Td +/F134_0 9.9626 Tf +(fflush) 35.8654 Tj +[1 0 0 1 434.791 221.967] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -434.791 -221.967] cm +[1 0 0 1 0 0] Tm +0 0 Td +434.791 221.967 Td +/F130_0 9.9626 Tf +(es) 8.29885 Tj +-240 TJm +(it) 5.53921 Tj +-241 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-240 TJm +(does) 18.2614 Tj +-241 TJm +(not) 12.7322 Tj +[1 0 0 1 504.135 221.967] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -504.135 -221.967] cm +[1 0 0 1 0 0] Tm +0 0 Td +504.135 221.967 Td +/F134_0 9.9626 Tf +(fclose) 35.8654 Tj +[1 0 0 1 540 221.967] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -540 -221.967] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 210.011 Td +/F130_0 9.9626 Tf +(it.) 8.02986 Tj +-610 TJm +(The) 15.4918 Tj +-235 TJm +(calling) 27.1182 Tj +-235 TJm +(application) 44.2738 Tj +-235 TJm +(can) 13.8281 Tj +-235 TJm +(write) 20.4731 Tj +-235 TJm +(its) 9.41466 Tj +-235 TJm +(o) 4.9813 Tj +25 TJm +(wn) 12.1743 Tj +-235 TJm +(data) 16.5977 Tj +-235 TJm +(before) 25.4445 Tj +-235 TJm +(and) 14.386 Tj +-235 TJm +(after) 18.2515 Tj +-235 TJm +(the) 12.1743 Tj +-235 TJm +(compressed) 47.0334 Tj +-235 TJm +(data) 16.5977 Tj +-235 TJm +(stream,) 29.0509 Tj +-238 TJm +(using) 21.589 Tj +-235 TJm +(that) 14.9439 Tj +-235 TJm +(same) 20.4731 Tj +-235 TJm +(\002le) 12.7322 Tj +86.944 198.056 Td +(handle.) 29.0509 Tj +[1 0 0 1 115.995 198.056] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -43.9948 -21.9178] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.9739 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -78.9739 -176.139] cm +[1 0 0 1 0 0] Tm +0 0 Td +78.9739 176.139 Td +/F130_0 9.9626 Tf +(\225) 3.48691 Tj +[1 0 0 1 82.4608 176.139] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 1.9925 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -86.944 -176.139] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 176.139 Td +/F130_0 9.9626 Tf +(Reading) 33.2053 Tj +-236 TJm +(is) 6.64505 Tj +-236 TJm +(more) 20.4731 Tj +-236 TJm +(comple) 29.3299 Tj +15 TJm +(x,) 7.47195 Tj +-238 TJm +(and) 14.386 Tj +-236 TJm +(the) 12.1743 Tj +-236 TJm +(f) 3.31755 Tj +10 TJm +(acilities) 30.9936 Tj +-236 TJm +(are) 12.1643 Tj +-236 TJm +(not) 12.7322 Tj +-235 TJm +(as) 8.29885 Tj +-236 TJm +(general) 29.3199 Tj +-236 TJm +(as) 8.29885 Tj +-236 TJm +(the) 12.1743 Tj +15 TJm +(y) 4.9813 Tj +-236 TJm +(could) 22.1369 Tj +-236 TJm +(be) 9.40469 Tj +-236 TJm +(since) 20.4731 Tj +-235 TJm +(generality) 39.8404 Tj +-236 TJm +(is) 6.64505 Tj +-236 TJm +(hard) 17.7035 Tj +-236 TJm +(to) 7.7509 Tj +-236 TJm +(reconcile) 36.5129 Tj +86.944 164.183 Td +(with) 17.7135 Tj +-404 TJm +(ef) 7.74094 Tj +25 TJm +(\002cienc) 26.5603 Tj +15 TJm +(y) 4.9813 Tj +65 TJm +(.) 2.49065 Tj +[1 0 0 1 164.811 164.183] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -164.811 -164.183] cm +[1 0 0 1 0 0] Tm +0 0 Td +164.811 164.183 Td +/F134_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +[1 0 0 1 224.587 164.183] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -224.587 -164.183] cm +[1 0 0 1 0 0] Tm +0 0 Td +228.614 164.183 Td +/F130_0 9.9626 Tf +(reads) 21.0211 Tj +-404 TJm +(from) 19.3673 Tj +-405 TJm +(the) 12.1743 Tj +-404 TJm +(compressed) 47.0334 Tj +-404 TJm +(\002le) 12.7322 Tj +-404 TJm +(in) 7.7509 Tj +-405 TJm +(blocks) 26.0123 Tj +-404 TJm +(of) 8.29885 Tj +-404 TJm +(size) 15.4918 Tj +[1 0 0 1 434.744 164.183] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -434.744 -164.183] cm +[1 0 0 1 0 0] Tm +0 0 Td +434.744 164.183 Td +/F134_0 9.9626 Tf +(BZ_MAX_UNUSED) 77.7083 Tj +[1 0 0 1 512.452 164.183] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -512.452 -164.183] cm +[1 0 0 1 0 0] Tm +0 0 Td +516.479 164.183 Td +/F130_0 9.9626 Tf +(bytes,) 23.5217 Tj +86.944 152.228 Td +(and) 14.386 Tj +-413 TJm +(in) 7.7509 Tj +-413 TJm +(doing) 22.6948 Tj +-413 TJm +(so) 8.85675 Tj +-413 TJm +(probably) 35.417 Tj +-413 TJm +(will) 15.5018 Tj +-413 TJm +(o) 4.9813 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(ershoot) 29.3299 Tj +-413 TJm +(the) 12.1743 Tj +-413 TJm +(logical) 27.1182 Tj +-413 TJm +(end) 14.386 Tj +-413 TJm +(of) 8.29885 Tj +-413 TJm +(compressed) 47.0334 Tj +-413 TJm +(stream.) 29.0509 Tj +-1598 TJm +(T) 6.08715 Tj +80 TJm +(o) 4.9813 Tj +-413 TJm +(reco) 17.1456 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.74094 Tj +-413 TJm +(this) 14.396 Tj +-413 TJm +(data) 16.5977 Tj +-413 TJm +(once) 18.8094 Tj +86.944 140.273 Td +(decompression) 59.7656 Tj +-252 TJm +(has) 13.2801 Tj +-252 TJm +(ended,) 26.2813 Tj +-253 TJm +(call) 14.386 Tj +[1 0 0 1 210.705 140.273] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -210.705 -140.273] cm +[1 0 0 1 0 0] Tm +0 0 Td +210.705 140.273 Td +/F134_0 9.9626 Tf +(BZ2_bzReadGetUnused) 113.574 Tj +[1 0 0 1 324.279 140.273] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -324.279 -140.273] cm +[1 0 0 1 0 0] Tm +0 0 Td +326.789 140.273 Td +/F130_0 9.9626 Tf +(after) 18.2515 Tj +-252 TJm +(the) 12.1743 Tj +-252 TJm +(last) 13.8381 Tj +-252 TJm +(call) 14.386 Tj +-252 TJm +(of) 8.29885 Tj +[1 0 0 1 406.291 140.273] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -406.291 -140.273] cm +[1 0 0 1 0 0] Tm +0 0 Td +406.291 140.273 Td +/F134_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +[1 0 0 1 466.067 140.273] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -466.067 -140.273] cm +[1 0 0 1 0 0] Tm +0 0 Td +468.578 140.273 Td +/F130_0 9.9626 Tf +(\(the) 15.4918 Tj +-252 TJm +(one) 14.386 Tj +-252 TJm +(returning) 36.5229 Tj +[1 0 0 1 86.944 128.318] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -86.944 -128.318] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 128.318 Td +/F134_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +[1 0 0 1 164.653 128.318] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -164.653 -128.318] cm +[1 0 0 1 0 0] Tm +0 0 Td +164.653 128.318 Td +/F130_0 9.9626 Tf +(\)) 3.31755 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-250 TJm +(before) 25.4445 Tj +-250 TJm +(calling) 27.1182 Tj +[1 0 0 1 243.028 128.318] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -243.028 -128.318] cm +[1 0 0 1 0 0] Tm +0 0 Td +243.028 128.318 Td +/F134_0 9.9626 Tf +(BZ2_bzReadClose) 89.6634 Tj +[1 0 0 1 332.692 128.318] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -332.692 -128.318] cm +[1 0 0 1 0 0] Tm +0 0 Td +332.692 128.318 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 335.182 128.318] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -263.182 -77.466] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.7545] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7545] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -50.8519] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 50.8518 Td +/F130_0 9.9626 Tf +(24) 9.9626 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 28 28 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 76.4979 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -342.569 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F130_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +[1 0 0 1 496.556 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -496.556 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +496.556 749.245 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 544.376 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.305 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -5.0363] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -21.5542] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -720] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F130_0 9.9626 Tf +(This) 17.7135 Tj +-271 TJm +(mechanism) 45.3796 Tj +-272 TJm +(mak) 17.1556 Tj +10 TJm +(es) 8.29885 Tj +-271 TJm +(it) 5.53921 Tj +-271 TJm +(easy) 17.7035 Tj +-271 TJm +(to) 7.7509 Tj +-272 TJm +(decompress) 47.0334 Tj +-271 TJm +(multiple) 33.2153 Tj +[1 0 0 1 293.312 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -293.312 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +293.312 710.037 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 323.2 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -323.2 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +325.903 710.037 Td +/F130_0 9.9626 Tf +(streams) 30.4357 Tj +-271 TJm +(placed) 26.0024 Tj +-272 TJm +(end-to-end.) 45.6486 Tj +-374 TJm +(As) 11.0684 Tj +-271 TJm +(the) 12.1743 Tj +-271 TJm +(end) 14.386 Tj +-271 TJm +(of) 8.29885 Tj +-272 TJm +(one) 14.386 Tj +-271 TJm +(stream,) 29.0509 Tj +72 698.082 Td +(when) 21.579 Tj +[1 0 0 1 96.1948 698.082] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -96.1948 -698.082] cm +[1 0 0 1 0 0] Tm +0 0 Td +96.1948 698.082 Td +/F134_0 9.9626 Tf +(BZ2_bzRead) 59.7756 Tj +[1 0 0 1 155.971 698.082] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -155.971 -698.082] cm +[1 0 0 1 0 0] Tm +0 0 Td +158.586 698.082 Td +/F130_0 9.9626 Tf +(returns) 27.6661 Tj +[1 0 0 1 188.868 698.082] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -188.868 -698.082] cm +[1 0 0 1 0 0] Tm +0 0 Td +188.868 698.082 Td +/F134_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +[1 0 0 1 266.577 698.082] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -266.577 -698.082] cm +[1 0 0 1 0 0] Tm +0 0 Td +266.577 698.082 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-263 TJm +(call) 14.386 Tj +[1 0 0 1 288.685 698.082] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -288.685 -698.082] cm +[1 0 0 1 0 0] Tm +0 0 Td +288.685 698.082 Td +/F134_0 9.9626 Tf +(BZ2_bzReadGetUnused) 113.574 Tj +[1 0 0 1 402.259 698.082] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -402.259 -698.082] cm +[1 0 0 1 0 0] Tm +0 0 Td +404.875 698.082 Td +/F130_0 9.9626 Tf +(to) 7.7509 Tj +-263 TJm +(collect) 26.5603 Tj +-262 TJm +(the) 12.1743 Tj +-263 TJm +(unused) 28.224 Tj +-262 TJm +(data) 16.5977 Tj +-263 TJm +(\(cop) 17.7035 Tj +10 TJm +(y) 4.9813 Tj +-262 TJm +(it) 5.53921 Tj +72 686.127 Td +(into) 15.5018 Tj +-265 TJm +(your) 18.2614 Tj +-265 TJm +(o) 4.9813 Tj +25 TJm +(wn) 12.1743 Tj +-265 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +-265 TJm +(some) 21.031 Tj +25 TJm +(where\).) 30.1468 Tj +-711 TJm +(That) 18.2614 Tj +-265 TJm +(data) 16.5977 Tj +-265 TJm +(forms) 23.2427 Tj +-265 TJm +(the) 12.1743 Tj +-265 TJm +(start) 17.1556 Tj +-265 TJm +(of) 8.29885 Tj +-265 TJm +(the) 12.1743 Tj +-265 TJm +(ne) 9.40469 Tj +15 TJm +(xt) 7.7509 Tj +-265 TJm +(compressed) 47.0334 Tj +-265 TJm +(stream.) 29.0509 Tj +-711 TJm +(T) 6.08715 Tj +80 TJm +(o) 4.9813 Tj +-265 TJm +(start) 17.1556 Tj +-265 TJm +(uncompressing) 60.3235 Tj +72 674.172 Td +(that) 14.9439 Tj +-246 TJm +(ne) 9.40469 Tj +15 TJm +(xt) 7.7509 Tj +-246 TJm +(stream,) 29.0509 Tj +-247 TJm +(call) 14.386 Tj +[1 0 0 1 157.205 674.172] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -157.205 -674.172] cm +[1 0 0 1 0 0] Tm +0 0 Td +157.205 674.172 Td +/F134_0 9.9626 Tf +(BZ2_bzReadOpen) 83.6858 Tj +[1 0 0 1 240.891 674.172] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -240.891 -674.172] cm +[1 0 0 1 0 0] Tm +0 0 Td +243.344 674.172 Td +/F130_0 9.9626 Tf +(ag) 9.40469 Tj +5 TJm +(ain,) 14.6649 Tj +-247 TJm +(feeding) 29.8778 Tj +-246 TJm +(in) 7.7509 Tj +-246 TJm +(the) 12.1743 Tj +-247 TJm +(unused) 28.224 Tj +-246 TJm +(data) 16.5977 Tj +-246 TJm +(via) 12.1743 Tj +-246 TJm +(the) 12.1743 Tj +[1 0 0 1 405.967 674.172] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -405.967 -674.172] cm +[1 0 0 1 0 0] Tm +0 0 Td +405.967 674.172 Td +/F134_0 9.9626 Tf +(unused) 35.8654 Tj +[1 0 0 1 441.833 674.172] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -441.833 -674.172] cm +[1 0 0 1 0 0] Tm +0 0 Td +444.286 674.172 Td +/F130_0 9.9626 Tf +(/) 2.7696 Tj +[1 0 0 1 449.508 674.172] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -449.508 -674.172] cm +[1 0 0 1 0 0] Tm +0 0 Td +449.508 674.172 Td +/F134_0 9.9626 Tf +(nUnused) 41.8429 Tj +[1 0 0 1 491.351 674.172] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -491.351 -674.172] cm +[1 0 0 1 0 0] Tm +0 0 Td +493.804 674.172 Td +/F130_0 9.9626 Tf +(parameters.) 46.1966 Tj +72 662.217 Td +(K) 7.193 Tj +25 TJm +(eep) 13.8281 Tj +-263 TJm +(doing) 22.6948 Tj +-263 TJm +(this) 14.396 Tj +-264 TJm +(until) 18.2714 Tj +[1 0 0 1 158.622 662.217] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -158.622 -662.217] cm +[1 0 0 1 0 0] Tm +0 0 Td +158.622 662.217 Td +/F134_0 9.9626 Tf +(BZ_STREAM_END) 77.7083 Tj +[1 0 0 1 236.33 662.217] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -236.33 -662.217] cm +[1 0 0 1 0 0] Tm +0 0 Td +238.952 662.217 Td +/F130_0 9.9626 Tf +(return) 23.7907 Tj +-263 TJm +(coincides) 37.6287 Tj +-263 TJm +(with) 17.7135 Tj +-263 TJm +(the) 12.1743 Tj +-264 TJm +(ph) 9.9626 Tj +5 TJm +(ysical) 23.2427 Tj +-263 TJm +(end) 14.386 Tj +-263 TJm +(of) 8.29885 Tj +-263 TJm +(\002le) 12.7322 Tj +-263 TJm +(\() 3.31755 Tj +[1 0 0 1 423.125 662.217] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -423.125 -662.217] cm +[1 0 0 1 0 0] Tm +0 0 Td +423.125 662.217 Td +/F134_0 9.9626 Tf +(feof\(f\)) 41.8429 Tj +[1 0 0 1 464.968 662.217] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -464.968 -662.217] cm +[1 0 0 1 0 0] Tm +0 0 Td +464.968 662.217 Td +/F130_0 9.9626 Tf +(\).) 5.8082 Tj +-699 TJm +(In) 8.29885 Tj +-263 TJm +(this) 14.396 Tj +-263 TJm +(situation) 34.3212 Tj +[1 0 0 1 72 650.261] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -650.261] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 650.261 Td +/F134_0 9.9626 Tf +(BZ2_bzReadGetUnused) 113.574 Tj +[1 0 0 1 185.574 650.261] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -185.574 -650.261] cm +[1 0 0 1 0 0] Tm +0 0 Td +188.065 650.261 Td +/F130_0 9.9626 Tf +(will) 15.5018 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(course) 26.0024 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(no) 9.9626 Tj +-250 TJm +(data.) 19.0883 Tj +[1 0 0 1 72 648.951] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -638.989] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 628.344 Td +/F130_0 9.9626 Tf +(This) 17.7135 Tj +-240 TJm +(should) 26.5703 Tj +-241 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-240 TJm +(some) 21.031 Tj +-241 TJm +(feel) 14.9339 Tj +-240 TJm +(for) 11.6164 Tj +-241 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-240 TJm +(the) 12.1743 Tj +-240 TJm +(high-le) 28.224 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-241 TJm +(interf) 21.579 Tj +10 TJm +(ace) 13.2702 Tj +-240 TJm +(can) 13.8281 Tj +-241 TJm +(be) 9.40469 Tj +-240 TJm +(used.) 20.7521 Tj +-614 TJm +(If) 6.63509 Tj +-240 TJm +(you) 14.9439 Tj +-241 TJm +(require) 28.2141 Tj +-240 TJm +(e) 4.42339 Tj +15 TJm +(xtra) 15.4918 Tj +-241 TJm +(\003e) 9.9626 Tj +15 TJm +(xibi) 15.5018 Tj +1 TJm +(lity) 13.2901 Tj +65 TJm +(,) 2.49065 Tj +-243 TJm +(you') 18.2614 Tj +10 TJm +(ll) 5.53921 Tj +-240 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-241 TJm +(to) 7.7509 Tj +72 616.389 Td +(bite) 14.9439 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ullet) 17.7135 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(get) 12.1743 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(grips) 19.9252 Tj +-250 TJm +(with) 17.7135 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(lo) 7.7509 Tj +25 TJm +(w-le) 17.7035 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(interf) 21.579 Tj +10 TJm +(ace.) 15.7608 Tj +[1 0 0 1 72 614.232] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -604.269] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 585.767 Td +/F122_0 17.2154 Tf +(3.4.9.) 43.0729 Tj +-278 TJm +(Standar) 64.0929 Tj +20 TJm +(d) 10.5186 Tj +-278 TJm +(\002le-reading/writing) 154.009 Tj +-278 TJm +(code) 40.1807 Tj +[1 0 0 1 72 581.937] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -571.975] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 563.85 Td +/F130_0 9.9626 Tf +(Here') 22.6749 Tj +55 TJm +(s) 3.87545 Tj +-250 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-250 TJm +(you') 18.2614 Tj +50 TJm +(d) 4.9813 Tj +-250 TJm +(write) 20.4731 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(\002le:) 15.5018 Tj +[1 0 0 1 72 561.693] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -371.606] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 370.61 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 367.024] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -552.328] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 552.328 Td +/F134_0 9.9626 Tf +(FILE) 23.9102 Tj +113.91 550.584 Td +(*) 5.97756 Tj +132.62 552.328 Td +(f;) 11.9551 Tj +90 540.373 Td +(BZFILE) 35.8654 Tj +125.865 538.629 Td +(*) 5.97756 Tj +136.087 540.373 Td +(b;) 11.9551 Tj +90 528.418 Td +(int) 17.9327 Tj +-2130 TJm +(nBuf;) 29.8878 Tj +90 516.462 Td +(char) 23.9102 Tj +-1704 TJm +(buf[) 23.9102 Tj +-426 TJm +(/) 5.97756 Tj +165.018 514.719 Td +(*) 5.97756 Tj +175.24 516.462 Td +(whatever) 47.8205 Tj +-426 TJm +(size) 23.9102 Tj +-426 TJm +(you) 17.9327 Tj +-426 TJm +(like) 23.9102 Tj +305.79 514.719 Td +(*) 5.97756 Tj +311.767 516.462 Td +(/) 5.97756 Tj +-426 TJm +(];) 11.9551 Tj +90 504.507 Td +(int) 17.9327 Tj +-2130 TJm +(bzerror;) 47.8205 Tj +90 492.552 Td +(int) 17.9327 Tj +-2130 TJm +(nWritten;) 53.798 Tj +90 468.642 Td +(f) 5.97756 Tj +-426 TJm +(=) 5.97756 Tj +-426 TJm +(fopen) 29.8878 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +("myfile.bz2",) 77.7083 Tj +-426 TJm +("w") 17.9327 Tj +-426 TJm +(\);) 11.9551 Tj +90 456.687 Td +(if) 11.9551 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(!f) 11.9551 Tj +-426 TJm +(\)) 5.97756 Tj +-426 TJm +({) 5.97756 Tj +94.244 444.731 Td +(/) 5.97756 Tj +100.222 442.988 Td +(*) 5.97756 Tj +110.443 444.731 Td +(handle) 35.8654 Tj +-426 TJm +(error) 29.8878 Tj +184.685 442.988 Td +(*) 5.97756 Tj +190.662 444.731 Td +(/) 5.97756 Tj +90 432.776 Td +(}) 5.97756 Tj +90 420.821 Td +(b) 5.97756 Tj +-426 TJm +(=) 5.97756 Tj +-426 TJm +(BZ2_bzWriteOpen\() 95.641 Tj +-426 TJm +(&bzerror,) 53.798 Tj +-426 TJm +(f,) 11.9551 Tj +-426 TJm +(9) 5.97756 Tj +-426 TJm +(\);) 11.9551 Tj +90 408.866 Td +(if) 11.9551 Tj +-426 TJm +(\(bzerror) 47.8205 Tj +-426 TJm +(!=) 11.9551 Tj +-426 TJm +(BZ_OK\)) 35.8654 Tj +-426 TJm +({) 5.97756 Tj +94.244 396.911 Td +(BZ2_bzWriteClose) 95.641 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(b) 5.97756 Tj +-426 TJm +(\);) 11.9551 Tj +94.244 384.956 Td +(/) 5.97756 Tj +100.222 383.212 Td +(*) 5.97756 Tj +110.443 384.956 Td +(handle) 35.8654 Tj +-426 TJm +(error) 29.8878 Tj +184.685 383.212 Td +(*) 5.97756 Tj +190.662 384.956 Td +(/) 5.97756 Tj +90 373 Td +(}) 5.97756 Tj +90 349.09 Td +(while) 29.8878 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(/) 5.97756 Tj +140.331 347.347 Td +(*) 5.97756 Tj +150.553 349.09 Td +(condition) 53.798 Tj +208.595 347.347 Td +(*) 5.97756 Tj +214.572 349.09 Td +(/) 5.97756 Tj +-426 TJm +(\)) 5.97756 Tj +-426 TJm +({) 5.97756 Tj +94.244 337.135 Td +(/) 5.97756 Tj +100.222 335.391 Td +(*) 5.97756 Tj +110.443 337.135 Td +(get) 17.9327 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(to) 11.9551 Tj +-426 TJm +(write) 29.8878 Tj +-426 TJm +(into) 23.9102 Tj +-426 TJm +(buf,) 23.9102 Tj +-426 TJm +(and) 17.9327 Tj +-426 TJm +(set) 17.9327 Tj +-426 TJm +(nBuf) 23.9102 Tj +-426 TJm +(appropriately) 77.7083 Tj +421.874 335.391 Td +(*) 5.97756 Tj +427.852 337.135 Td +(/) 5.97756 Tj +94.2439 325.18 Td +(nWritten) 47.8205 Tj +-426 TJm +(=) 5.97756 Tj +-426 TJm +(BZ2_bzWrite) 65.7532 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(&bzerror,) 53.798 Tj +-426 TJm +(b,) 11.9551 Tj +-426 TJm +(buf,) 23.9102 Tj +-426 TJm +(nBuf) 23.9102 Tj +-426 TJm +(\);) 11.9551 Tj +94.2439 313.225 Td +(if) 11.9551 Tj +-426 TJm +(\(bzerror) 47.8205 Tj +-426 TJm +(==) 11.9551 Tj +-426 TJm +(BZ_IO_ERROR\)) 71.7307 Tj +-426 TJm +({) 5.97756 Tj +102.732 301.269 Td +(BZ2_bzWriteClose) 95.641 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(&bzerror,) 53.798 Tj +-426 TJm +(b) 5.97756 Tj +-426 TJm +(\);) 11.9551 Tj +102.732 289.314 Td +(/) 5.97756 Tj +108.709 287.571 Td +(*) 5.97756 Tj +118.931 289.314 Td +(handle) 35.8654 Tj +-426 TJm +(error) 29.8878 Tj +193.172 287.571 Td +(*) 5.97756 Tj +199.15 289.314 Td +(/) 5.97756 Tj +94.2439 277.359 Td +(}) 5.97756 Tj +90 265.404 Td +(}) 5.97756 Tj +90 241.494 Td +(BZ2_bzWriteClose\() 101.619 Tj +-426 TJm +(&bzerror,) 53.798 Tj +-426 TJm +(b) 5.97756 Tj +-426 TJm +(\);) 11.9551 Tj +90 229.538 Td +(if) 11.9551 Tj +-426 TJm +(\(bzerror) 47.8205 Tj +-426 TJm +(==) 11.9551 Tj +-426 TJm +(BZ_IO_ERROR\)) 71.7307 Tj +-426 TJm +({) 5.97756 Tj +94.2439 217.583 Td +(/) 5.97756 Tj +100.221 215.84 Td +(*) 5.97756 Tj +110.443 217.583 Td +(handle) 35.8654 Tj +-426 TJm +(error) 29.8878 Tj +184.684 215.84 Td +(*) 5.97756 Tj +190.662 217.583 Td +(/) 5.97756 Tj +89.9999 205.628 Td +(}) 5.97756 Tj +[1 0 0 1 72 190.086] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -180.124] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 168.168 Td +/F130_0 9.9626 Tf +(And) 17.1556 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(read) 17.1456 Tj +-250 TJm +(from) 19.3673 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(\002le:) 15.5018 Tj +[1 0 0 1 72 166.012] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -115.16] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -50.9513] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 50.9513 Td +/F130_0 9.9626 Tf +(25) 9.9626 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 29 29 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 76.4979 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -342.569 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F130_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +[1 0 0 1 496.556 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -496.556 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +496.556 749.245 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 544.376 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.305 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -5.0363] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -392.164] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 370.61 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 367.024] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -711.631] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 711.631 Td +/F134_0 9.9626 Tf +(FILE) 23.9102 Tj +113.91 709.888 Td +(*) 5.97756 Tj +132.62 711.631 Td +(f;) 11.9551 Tj +90 699.676 Td +(BZFILE) 35.8654 Tj +125.865 697.933 Td +(*) 5.97756 Tj +136.087 699.676 Td +(b;) 11.9551 Tj +90 687.721 Td +(int) 17.9327 Tj +-2130 TJm +(nBuf;) 29.8878 Tj +90 675.766 Td +(char) 23.9102 Tj +-1704 TJm +(buf[) 23.9102 Tj +-426 TJm +(/) 5.97756 Tj +165.018 674.023 Td +(*) 5.97756 Tj +175.24 675.766 Td +(whatever) 47.8205 Tj +-426 TJm +(size) 23.9102 Tj +-426 TJm +(you) 17.9327 Tj +-426 TJm +(like) 23.9102 Tj +305.79 674.023 Td +(*) 5.97756 Tj +311.767 675.766 Td +(/) 5.97756 Tj +-426 TJm +(];) 11.9551 Tj +90 663.811 Td +(int) 17.9327 Tj +-2130 TJm +(bzerror;) 47.8205 Tj +90 651.856 Td +(int) 17.9327 Tj +-2130 TJm +(nWritten;) 53.798 Tj +90 627.945 Td +(f) 5.97756 Tj +-426 TJm +(=) 5.97756 Tj +-426 TJm +(fopen) 29.8878 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +("myfile.bz2",) 77.7083 Tj +-426 TJm +("r") 17.9327 Tj +-426 TJm +(\);) 11.9551 Tj +90 615.99 Td +(if) 11.9551 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(!f) 11.9551 Tj +-426 TJm +(\)) 5.97756 Tj +-426 TJm +({) 5.97756 Tj +98.488 604.035 Td +(/) 5.97756 Tj +104.466 602.292 Td +(*) 5.97756 Tj +114.687 604.035 Td +(handle) 35.8654 Tj +-426 TJm +(error) 29.8878 Tj +188.929 602.292 Td +(*) 5.97756 Tj +194.906 604.035 Td +(/) 5.97756 Tj +90 592.08 Td +(}) 5.97756 Tj +90 580.125 Td +(b) 5.97756 Tj +-426 TJm +(=) 5.97756 Tj +-426 TJm +(BZ2_bzReadOpen) 83.6858 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(&bzerror,) 53.798 Tj +-426 TJm +(f,) 11.9551 Tj +-426 TJm +(0,) 11.9551 Tj +-426 TJm +(NULL,) 29.8878 Tj +-426 TJm +(0) 5.97756 Tj +-426 TJm +(\);) 11.9551 Tj +90 568.169 Td +(if) 11.9551 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(bzerror) 41.8429 Tj +-426 TJm +(!=) 11.9551 Tj +-426 TJm +(BZ_OK) 29.8878 Tj +-426 TJm +(\)) 5.97756 Tj +-426 TJm +({) 5.97756 Tj +98.488 556.214 Td +(BZ2_bzReadClose) 89.6634 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(&bzerror,) 53.798 Tj +-426 TJm +(b) 5.97756 Tj +-426 TJm +(\);) 11.9551 Tj +98.488 544.259 Td +(/) 5.97756 Tj +104.466 542.516 Td +(*) 5.97756 Tj +114.687 544.259 Td +(handle) 35.8654 Tj +-426 TJm +(error) 29.8878 Tj +188.929 542.516 Td +(*) 5.97756 Tj +194.906 544.259 Td +(/) 5.97756 Tj +90 532.304 Td +(}) 5.97756 Tj +90 508.394 Td +(bzerror) 41.8429 Tj +-426 TJm +(=) 5.97756 Tj +-426 TJm +(BZ_OK;) 35.8654 Tj +90 496.438 Td +(while) 29.8878 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(bzerror) 41.8429 Tj +-426 TJm +(==) 11.9551 Tj +-426 TJm +(BZ_OK) 29.8878 Tj +-426 TJm +(&&) 11.9551 Tj +-426 TJm +(/) 5.97756 Tj +252.948 494.695 Td +(*) 5.97756 Tj +263.17 496.438 Td +(arbitrary) 53.798 Tj +-426 TJm +(other) 29.8878 Tj +-426 TJm +(conditions) 59.7756 Tj +419.364 494.695 Td +(*) 5.97756 Tj +425.341 496.438 Td +(/\)) 11.9551 Tj +-426 TJm +({) 5.97756 Tj +98.488 484.483 Td +(nBuf) 23.9102 Tj +-426 TJm +(=) 5.97756 Tj +-426 TJm +(BZ2_bzRead) 59.7756 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(&bzerror,) 53.798 Tj +-426 TJm +(b,) 11.9551 Tj +-426 TJm +(buf,) 23.9102 Tj +-426 TJm +(/) 5.97756 Tj +319.478 482.74 Td +(*) 5.97756 Tj +329.7 484.483 Td +(size) 23.9102 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(buf) 17.9327 Tj +396.23 482.74 Td +(*) 5.97756 Tj +402.208 484.483 Td +(/) 5.97756 Tj +-426 TJm +(\);) 11.9551 Tj +98.488 472.528 Td +(if) 11.9551 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(bzerror) 41.8429 Tj +-426 TJm +(==) 11.9551 Tj +-426 TJm +(BZ_OK) 29.8878 Tj +-426 TJm +(\)) 5.97756 Tj +-426 TJm +({) 5.97756 Tj +106.976 460.573 Td +(/) 5.97756 Tj +112.953 458.829 Td +(*) 5.97756 Tj +123.175 460.573 Td +(do) 11.9551 Tj +-426 TJm +(something) 53.798 Tj +-426 TJm +(with) 23.9102 Tj +-426 TJm +(buf[0) 29.8878 Tj +-426 TJm +(..) 11.9551 Tj +-426 TJm +(nBuf-1]) 41.8429 Tj +321.989 458.829 Td +(*) 5.97756 Tj +327.966 460.573 Td +(/) 5.97756 Tj +98.4879 448.618 Td +(}) 5.97756 Tj +90 436.663 Td +(}) 5.97756 Tj +90 424.707 Td +(if) 11.9551 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(bzerror) 41.8429 Tj +-426 TJm +(!=) 11.9551 Tj +-426 TJm +(BZ_STREAM_END) 77.7083 Tj +-426 TJm +(\)) 5.97756 Tj +-426 TJm +({) 5.97756 Tj +102.732 412.752 Td +(BZ2_bzReadClose) 89.6634 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(&bzerror,) 53.798 Tj +-426 TJm +(b) 5.97756 Tj +-426 TJm +(\);) 11.9551 Tj +102.732 400.797 Td +(/) 5.97756 Tj +108.709 399.054 Td +(*) 5.97756 Tj +118.931 400.797 Td +(handle) 35.8654 Tj +-426 TJm +(error) 29.8878 Tj +193.172 399.054 Td +(*) 5.97756 Tj +199.15 400.797 Td +(/) 5.97756 Tj +90 388.842 Td +(}) 5.97756 Tj +-426 TJm +(else) 23.9102 Tj +-426 TJm +({) 5.97756 Tj +102.732 376.887 Td +(BZ2_bzReadClose) 89.6634 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(&bzerror,) 53.798 Tj +-426 TJm +(b) 5.97756 Tj +-426 TJm +(\);) 11.9551 Tj +90 364.932 Td +(}) 5.97756 Tj +[1 0 0 1 72 349.39] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -339.427] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 314.637 Td +/F122_0 20.6585 Tf +(3.5.) 34.4584 Tj +-278 TJm +(Utility) 57.3893 Tj +-278 TJm +(functions) 92.9633 Tj +[1 0 0 1 72 310.361] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -300.398] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 284.016 Td +/F122_0 17.2154 Tf +(3.5.1.) 43.0729 Tj +[1 0 0 1 119.858 284.016] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -119.858 -284.016] cm +[1 0 0 1 0 0] Tm +0 0 Td +119.858 284.016 Td +/F392_0 17.2154 Tf +(BZ2_bzBuffToBuffCompress) 247.902 Tj +[1 0 0 1 367.76 284.016] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -295.76 -2.3327] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -96.6376] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 95.6413 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 92.0548] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -272.318] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 272.318 Td +/F134_0 9.9626 Tf +(int) 17.9327 Tj +-426 TJm +(BZ2_bzBuffToBuffCompress\() 149.439 Tj +-426 TJm +(char) 23.9102 Tj +289.771 270.575 Td +(*) 5.97756 Tj +333.944 272.318 Td +(dest,) 29.8878 Tj +217.319 260.363 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +287.317 258.62 Td +(*) 5.97756 Tj +297.538 260.363 Td +(destLen,) 47.8205 Tj +217.319 248.408 Td +(char) 23.9102 Tj +241.23 246.664 Td +(*) 5.97756 Tj +285.403 248.408 Td +(source,) 41.8429 Tj +217.319 236.453 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +-852 TJm +(sourceLen,) 59.7756 Tj +217.319 224.498 Td +(int) 17.9327 Tj +-4686 TJm +(blockSize100k,) 83.6858 Tj +217.319 212.542 Td +(int) 17.9327 Tj +-4686 TJm +(verbosity,) 59.7756 Tj +217.319 200.587 Td +(int) 17.9327 Tj +-4686 TJm +(workFactor) 59.7756 Tj +-426 TJm +(\);) 11.9551 Tj +[1 0 0 1 72 185.045] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -175.083] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 163.128 Td +/F130_0 9.9626 Tf +(Attempts) 36.5329 Tj +-442 TJm +(to) 7.7509 Tj +-442 TJm +(compress) 37.6287 Tj +-443 TJm +(the) 12.1743 Tj +-442 TJm +(data) 16.5977 Tj +-442 TJm +(in) 7.7509 Tj +[1 0 0 1 216.87 163.128] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -216.87 -163.128] cm +[1 0 0 1 0 0] Tm +0 0 Td +216.87 163.128 Td +/F134_0 9.9626 Tf +(source[0) 47.8205 Tj +-600 TJm +(..) 11.9551 Tj +-1200 TJm +(sourceLen-1]) 71.7307 Tj +[1 0 0 1 366.31 163.128] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -366.31 -163.128] cm +[1 0 0 1 0 0] Tm +0 0 Td +370.715 163.128 Td +/F130_0 9.9626 Tf +(into) 15.5018 Tj +-442 TJm +(the) 12.1743 Tj +-442 TJm +(destination) 43.7259 Tj +-443 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +40 TJm +(,) 2.49065 Tj +[1 0 0 1 486.202 163.128] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -486.202 -163.128] cm +[1 0 0 1 0 0] Tm +0 0 Td +486.202 163.128 Td +/F134_0 9.9626 Tf +(dest[0) 35.8654 Tj +-600 TJm +(..) 11.9551 Tj +72 149.429 Td +(*) 5.97756 Tj +77.9776 151.173 Td +(destLen-1]) 59.7756 Tj +[1 0 0 1 137.753 151.172] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -137.753 -151.172] cm +[1 0 0 1 0 0] Tm +0 0 Td +137.753 151.172 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-1393 TJm +(If) 6.63509 Tj +-379 TJm +(the) 12.1743 Tj +-379 TJm +(destination) 43.7259 Tj +-379 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +-378 TJm +(is) 6.64505 Tj +-379 TJm +(big) 12.7322 Tj +-379 TJm +(enough,) 31.8205 Tj +[1 0 0 1 318.486 151.172] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -318.486 -151.172] cm +[1 0 0 1 0 0] Tm +0 0 Td +318.486 149.429 Td +/F134_0 9.9626 Tf +(*) 5.97756 Tj +324.464 151.173 Td +(destLen) 41.8429 Tj +[1 0 0 1 366.307 151.172] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -366.307 -151.172] cm +[1 0 0 1 0 0] Tm +0 0 Td +370.081 151.172 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-379 TJm +(set) 11.0684 Tj +-379 TJm +(to) 7.7509 Tj +-378 TJm +(the) 12.1743 Tj +-379 TJm +(size) 15.4918 Tj +-379 TJm +(of) 8.29885 Tj +-379 TJm +(the) 12.1743 Tj +-379 TJm +(compressed) 47.0334 Tj +-379 TJm +(data,) 19.0883 Tj +72 139.217 Td +(and) 14.386 Tj +[1 0 0 1 89.5273 139.217] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -89.5273 -139.217] cm +[1 0 0 1 0 0] Tm +0 0 Td +89.5273 139.217 Td +/F134_0 9.9626 Tf +(BZ_OK) 29.8878 Tj +[1 0 0 1 119.415 139.217] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -119.415 -139.217] cm +[1 0 0 1 0 0] Tm +0 0 Td +122.556 139.217 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-315 TJm +(returned.) 35.686 Tj +-1012 TJm +(If) 6.63509 Tj +-315 TJm +(the) 12.1743 Tj +-316 TJm +(compressed) 47.0334 Tj +-315 TJm +(data) 16.5977 Tj +-315 TJm +(w) 7.193 Tj +10 TJm +(on') 13.2801 Tj +18 TJm +(t) 2.7696 Tj +-316 TJm +(\002t,) 10.7995 Tj +[1 0 0 1 313.322 139.217] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -313.322 -139.217] cm +[1 0 0 1 0 0] Tm +0 0 Td +313.322 137.474 Td +/F134_0 9.9626 Tf +(*) 5.97756 Tj +319.3 139.217 Td +(destLen) 41.8429 Tj +[1 0 0 1 361.143 139.217] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -361.143 -139.217] cm +[1 0 0 1 0 0] Tm +0 0 Td +364.284 139.217 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-315 TJm +(unchanged,) 45.6486 Tj +-332 TJm +(and) 14.386 Tj +[1 0 0 1 440.551 139.217] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -440.551 -139.217] cm +[1 0 0 1 0 0] Tm +0 0 Td +440.551 139.217 Td +/F134_0 9.9626 Tf +(BZ_OUTBUFF_FULL) 89.6634 Tj +[1 0 0 1 530.215 139.217] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -530.215 -139.217] cm +[1 0 0 1 0 0] Tm +0 0 Td +533.355 139.217 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +72 127.262 Td +(returned.) 35.686 Tj +[1 0 0 1 72 127.163] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -117.2] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 105.344 Td +/F130_0 9.9626 Tf +(Compression) 52.5826 Tj +-297 TJm +(in) 7.7509 Tj +-297 TJm +(this) 14.396 Tj +-297 TJm +(manner) 29.8778 Tj +-297 TJm +(is) 6.64505 Tj +-297 TJm +(a) 4.42339 Tj +-297 TJm +(one-shot) 34.3112 Tj +-297 TJm +(e) 4.42339 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ent,) 14.6649 Tj +-309 TJm +(done) 19.3673 Tj +-297 TJm +(with) 17.7135 Tj +-297 TJm +(a) 4.42339 Tj +-297 TJm +(single) 23.8007 Tj +-297 TJm +(call) 14.386 Tj +-297 TJm +(to) 7.7509 Tj +-297 TJm +(this) 14.396 Tj +-297 TJm +(function.) 35.696 Tj +-903 TJm +(The) 15.4918 Tj +-297 TJm +(resulting) 34.8691 Tj +-297 TJm +(compressed) 47.0334 Tj +72 93.3892 Td +(data) 16.5977 Tj +-296 TJm +(is) 6.64505 Tj +-296 TJm +(a) 4.42339 Tj +-296 TJm +(complete) 36.5229 Tj +[1 0 0 1 147.988 93.3892] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -147.988 -93.3892] cm +[1 0 0 1 0 0] Tm +0 0 Td +147.988 93.3892 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 177.875 93.3892] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -177.875 -93.3892] cm +[1 0 0 1 0 0] Tm +0 0 Td +180.825 93.3892 Td +/F130_0 9.9626 Tf +(format) 26.5603 Tj +-296 TJm +(data) 16.5977 Tj +-296 TJm +(stream.) 29.0509 Tj +-897 TJm +(There) 23.2328 Tj +-296 TJm +(is) 6.64505 Tj +-296 TJm +(no) 9.9626 Tj +-296 TJm +(mechanism) 45.3796 Tj +-296 TJm +(for) 11.6164 Tj +-296 TJm +(making) 29.8878 Tj +-296 TJm +(additional) 39.8504 Tj +-296 TJm +(calls) 18.2614 Tj +-296 TJm +(to) 7.7509 Tj +-296 TJm +(pro) 13.2801 Tj +15 TJm +(vide) 17.1556 Tj +-296 TJm +(e) 4.42339 Tj +15 TJm +(xtra) 15.4918 Tj +72 81.434 Td +(input) 20.4831 Tj +-250 TJm +(data.) 19.0883 Tj +-620 TJm +(If) 6.63509 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(ant) 12.1743 Tj +-250 TJm +(that) 14.9439 Tj +-250 TJm +(kind) 17.7135 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(mechanism,) 47.8703 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(lo) 7.7509 Tj +25 TJm +(w-le) 17.7035 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(el) 7.193 Tj +-250 TJm +(interf) 21.579 Tj +10 TJm +(ace.) 15.7608 Tj +[1 0 0 1 72 79.2772] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -28.4254] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7545] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -50.9514] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 50.9514 Td +/F130_0 9.9626 Tf +(26) 9.9626 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 30 30 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 76.4979 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -342.569 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F130_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +[1 0 0 1 496.556 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -496.556 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +496.556 749.245 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 544.376 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.305 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -5.0363] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -21.5542] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -720] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F130_0 9.9626 Tf +(F) 5.53921 Tj +15 TJm +(or) 8.29885 Tj +-223 TJm +(the) 12.1743 Tj +-224 TJm +(meaning) 34.3112 Tj +-223 TJm +(of) 8.29885 Tj +-224 TJm +(parameters) 43.7059 Tj +[1 0 0 1 195.306 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -195.306 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +195.306 710.037 Td +/F134_0 9.9626 Tf +(blockSize100k) 77.7083 Tj +[1 0 0 1 273.015 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -273.015 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +273.015 710.037 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 277.784 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -277.784 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +277.784 710.037 Td +/F134_0 9.9626 Tf +(verbosity) 53.798 Tj +[1 0 0 1 331.583 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -331.583 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +333.808 710.037 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 350.42 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -350.42 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +350.42 710.037 Td +/F134_0 9.9626 Tf +(workFactor) 59.7756 Tj +[1 0 0 1 410.196 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -410.196 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +410.196 710.037 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-229 TJm +(see) 12.7222 Tj +[1 0 0 1 429.913 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -429.913 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +429.913 710.037 Td +/F134_0 9.9626 Tf +(BZ2_bzCompressInit) 107.596 Tj +[1 0 0 1 537.509 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -537.509 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +537.509 710.037 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 707.88] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -697.918] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 688.12 Td +/F130_0 9.9626 Tf +(T) 6.08715 Tj +80 TJm +(o) 4.9813 Tj +-410 TJm +(guarantee) 38.7246 Tj +-410 TJm +(that) 14.9439 Tj +-410 TJm +(the) 12.1743 Tj +-410 TJm +(compressed) 47.0334 Tj +-410 TJm +(data) 16.5977 Tj +-410 TJm +(will) 15.5018 Tj +-410 TJm +(\002t) 8.30881 Tj +-410 TJm +(in) 7.7509 Tj +-410 TJm +(its) 9.41466 Tj +-410 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +40 TJm +(,) 2.49065 Tj +-450 TJm +(allocate) 30.9837 Tj +-410 TJm +(an) 9.40469 Tj +-410 TJm +(output) 25.4644 Tj +-410 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +-411 TJm +(of) 8.29885 Tj +-410 TJm +(size) 15.4918 Tj +-410 TJm +(1%) 13.2801 Tj +-410 TJm +(lar) 10.5105 Tj +18 TJm +(ger) 12.7222 Tj +-410 TJm +(than) 17.1556 Tj +-410 TJm +(the) 12.1743 Tj +72 676.164 Td +(uncompressed) 56.996 Tj +-250 TJm +(data,) 19.0883 Tj +-250 TJm +(plus) 16.6077 Tj +-250 TJm +(six) 11.6264 Tj +-250 TJm +(hundred) 32.6474 Tj +-250 TJm +(e) 4.42339 Tj +15 TJm +(xtra) 15.4918 Tj +-250 TJm +(bytes.) 23.5217 Tj +[1 0 0 1 72 674.007] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -664.045] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 654.247 Td +/F134_0 9.9626 Tf +(BZ2_bzBuffToBuffDecompress) 155.417 Tj +[1 0 0 1 227.417 654.247] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -227.417 -654.247] cm +[1 0 0 1 0 0] Tm +0 0 Td +230.553 654.247 Td +/F130_0 9.9626 Tf +(will) 15.5018 Tj +-315 TJm +(not) 12.7322 Tj +-315 TJm +(write) 20.4731 Tj +-314 TJm +(data) 16.5977 Tj +-315 TJm +(at) 7.193 Tj +-315 TJm +(or) 8.29885 Tj +-315 TJm +(be) 9.40469 Tj +15 TJm +(yond) 19.9252 Tj +[1 0 0 1 362.484 654.247] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -362.484 -654.247] cm +[1 0 0 1 0 0] Tm +0 0 Td +362.484 654.247 Td +/F134_0 9.9626 Tf +(dest[) 29.8878 Tj +392.372 652.503 Td +(*) 5.97756 Tj +398.349 654.247 Td +(destLen]) 47.8205 Tj +[1 0 0 1 446.17 654.247] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -446.17 -654.247] cm +[1 0 0 1 0 0] Tm +0 0 Td +446.17 654.247 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-331 TJm +(e) 4.42339 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(en) 9.40469 Tj +-315 TJm +(in) 7.7509 Tj +-315 TJm +(case) 17.1456 Tj +-314 TJm +(of) 8.29885 Tj +-315 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +72 642.291 Td +(o) 4.9813 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(er\003o) 18.2614 Tj +25 TJm +(w) 7.193 Tj +65 TJm +(.) 2.49065 Tj +[1 0 0 1 72 642.192] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -632.229] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 620.374 Td +/F130_0 9.9626 Tf +(Possible) 33.2153 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues:) 23.2427 Tj +[1 0 0 1 72 620.274] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -168.369] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 167.372 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 163.786] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -610.909] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 610.909 Td +/F134_0 9.9626 Tf +(BZ_CONFIG_ERROR) 89.6634 Tj +98.4879 598.954 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(library) 41.8429 Tj +-426 TJm +(has) 17.9327 Tj +-426 TJm +(been) 23.9102 Tj +-426 TJm +(mis-compiled) 71.7307 Tj +90 586.999 Td +(BZ_PARAM_ERROR) 83.6858 Tj +98.4879 575.044 Td +(if) 11.9551 Tj +-426 TJm +(dest) 23.9102 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(destLen) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +98.4879 563.088 Td +(or) 11.9551 Tj +-426 TJm +(blockSize100k) 77.7083 Tj +-426 TJm +(<) 5.97756 Tj +-426 TJm +(1) 5.97756 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(blockSize100k) 77.7083 Tj +-426 TJm +(>) 5.97756 Tj +-426 TJm +(9) 5.97756 Tj +98.4879 551.133 Td +(or) 11.9551 Tj +-426 TJm +(verbosity) 53.798 Tj +-426 TJm +(<) 5.97756 Tj +-426 TJm +(0) 5.97756 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(verbosity) 53.798 Tj +-426 TJm +(>) 5.97756 Tj +-426 TJm +(4) 5.97756 Tj +98.4879 539.178 Td +(or) 11.9551 Tj +-426 TJm +(workFactor) 59.7756 Tj +-426 TJm +(<) 5.97756 Tj +-426 TJm +(0) 5.97756 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(workFactor) 59.7756 Tj +-426 TJm +(>) 5.97756 Tj +-426 TJm +(250) 17.9327 Tj +90 527.223 Td +(BZ_MEM_ERROR) 71.7307 Tj +98.4879 515.268 Td +(if) 11.9551 Tj +-426 TJm +(insufficient) 71.7307 Tj +-426 TJm +(memory) 35.8654 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(available) 53.798 Tj +90 503.313 Td +(BZ_OUTBUFF_FULL) 89.6634 Tj +98.4879 491.357 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(size) 23.9102 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(exceeds) 41.8429 Tj +341.655 489.614 Td +(*) 5.97756 Tj +347.633 491.357 Td +(destLen) 41.8429 Tj +90 479.402 Td +(BZ_OK) 29.8878 Tj +98.4879 467.447 Td +(otherwise) 53.798 Tj +[1 0 0 1 72 451.905] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -441.943] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 421.284 Td +/F122_0 17.2154 Tf +(3.5.2.) 43.0729 Tj +[1 0 0 1 119.858 421.284] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -119.858 -421.284] cm +[1 0 0 1 0 0] Tm +0 0 Td +119.858 421.284 Td +/F392_0 17.2154 Tf +(BZ2_bzBuffToBuffDecompress) 268.56 Tj +[1 0 0 1 388.419 421.284] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -316.419 -2.3327] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -84.6824] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 83.6862 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 80.0996] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -409.587] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 409.587 Td +/F134_0 9.9626 Tf +(int) 17.9327 Tj +-426 TJm +(BZ2_bzBuffToBuffDecompress\() 161.394 Tj +-426 TJm +(char) 23.9102 Tj +301.726 407.843 Td +(*) 5.97756 Tj +345.899 409.587 Td +(dest,) 29.8878 Tj +225.807 397.632 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +295.805 395.888 Td +(*) 5.97756 Tj +306.026 397.632 Td +(destLen,) 47.8205 Tj +225.807 385.676 Td +(char) 23.9102 Tj +249.718 383.933 Td +(*) 5.97756 Tj +293.891 385.676 Td +(source,) 41.8429 Tj +225.807 373.721 Td +(unsigned) 47.8205 Tj +-426 TJm +(int) 17.9327 Tj +-852 TJm +(sourceLen,) 59.7756 Tj +225.807 361.766 Td +(int) 17.9327 Tj +-4686 TJm +(small,) 35.8654 Tj +225.807 349.811 Td +(int) 17.9327 Tj +-4686 TJm +(verbosity) 53.798 Tj +-426 TJm +(\);) 11.9551 Tj +[1 0 0 1 72 334.269] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -324.306] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 312.351 Td +/F130_0 9.9626 Tf +(Attempts) 36.5329 Tj +-358 TJm +(to) 7.7509 Tj +-359 TJm +(decompress) 47.0334 Tj +-358 TJm +(the) 12.1743 Tj +-358 TJm +(data) 16.5977 Tj +-359 TJm +(in) 7.7509 Tj +[1 0 0 1 221.259 312.351] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -221.259 -312.351] cm +[1 0 0 1 0 0] Tm +0 0 Td +221.259 312.351 Td +/F134_0 9.9626 Tf +(source[0) 47.8205 Tj +-600 TJm +(..) 11.9551 Tj +-1200 TJm +(sourceLen-1]) 71.7307 Tj +[1 0 0 1 370.698 312.351] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -370.698 -312.351] cm +[1 0 0 1 0 0] Tm +0 0 Td +374.268 312.351 Td +/F130_0 9.9626 Tf +(into) 15.5018 Tj +-358 TJm +(the) 12.1743 Tj +-359 TJm +(destination) 43.7259 Tj +-358 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +40 TJm +(,) 2.49065 Tj +[1 0 0 1 486.202 312.351] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -486.202 -312.351] cm +[1 0 0 1 0 0] Tm +0 0 Td +486.202 312.351 Td +/F134_0 9.9626 Tf +(dest[0) 35.8654 Tj +-600 TJm +(..) 11.9551 Tj +72 298.653 Td +(*) 5.97756 Tj +77.9776 300.396 Td +(destLen-1]) 59.7756 Tj +[1 0 0 1 137.753 300.396] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -137.753 -300.396] cm +[1 0 0 1 0 0] Tm +0 0 Td +137.753 300.396 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-1123 TJm +(If) 6.63509 Tj +-334 TJm +(the) 12.1743 Tj +-334 TJm +(destination) 43.7259 Tj +-334 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +-334 TJm +(is) 6.64505 Tj +-334 TJm +(big) 12.7322 Tj +-334 TJm +(enough,) 31.8205 Tj +[1 0 0 1 312.554 300.396] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -312.554 -300.396] cm +[1 0 0 1 0 0] Tm +0 0 Td +312.554 298.653 Td +/F134_0 9.9626 Tf +(*) 5.97756 Tj +318.531 300.396 Td +(destLen) 41.8429 Tj +[1 0 0 1 360.374 300.396] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -360.374 -300.396] cm +[1 0 0 1 0 0] Tm +0 0 Td +363.701 300.396 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-334 TJm +(set) 11.0684 Tj +-334 TJm +(to) 7.7509 Tj +-334 TJm +(the) 12.1743 Tj +-334 TJm +(size) 15.4918 Tj +-333 TJm +(of) 8.29885 Tj +-334 TJm +(the) 12.1743 Tj +-334 TJm +(uncompressed) 56.996 Tj +-334 TJm +(data,) 19.0883 Tj +72 288.441 Td +(and) 14.386 Tj +[1 0 0 1 89.5273 288.441] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -89.5273 -288.441] cm +[1 0 0 1 0 0] Tm +0 0 Td +89.5273 288.441 Td +/F134_0 9.9626 Tf +(BZ_OK) 29.8878 Tj +[1 0 0 1 119.415 288.441] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -119.415 -288.441] cm +[1 0 0 1 0 0] Tm +0 0 Td +122.556 288.441 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-315 TJm +(returned.) 35.686 Tj +-1012 TJm +(If) 6.63509 Tj +-315 TJm +(the) 12.1743 Tj +-316 TJm +(compressed) 47.0334 Tj +-315 TJm +(data) 16.5977 Tj +-315 TJm +(w) 7.193 Tj +10 TJm +(on') 13.2801 Tj +18 TJm +(t) 2.7696 Tj +-316 TJm +(\002t,) 10.7995 Tj +[1 0 0 1 313.322 288.441] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -313.322 -288.441] cm +[1 0 0 1 0 0] Tm +0 0 Td +313.322 286.698 Td +/F134_0 9.9626 Tf +(*) 5.97756 Tj +319.3 288.441 Td +(destLen) 41.8429 Tj +[1 0 0 1 361.143 288.441] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -361.143 -288.441] cm +[1 0 0 1 0 0] Tm +0 0 Td +364.284 288.441 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-315 TJm +(unchanged,) 45.6486 Tj +-332 TJm +(and) 14.386 Tj +[1 0 0 1 440.551 288.441] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -440.551 -288.441] cm +[1 0 0 1 0 0] Tm +0 0 Td +440.551 288.441 Td +/F134_0 9.9626 Tf +(BZ_OUTBUFF_FULL) 89.6634 Tj +[1 0 0 1 530.215 288.441] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -530.215 -288.441] cm +[1 0 0 1 0 0] Tm +0 0 Td +533.355 288.441 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +72 276.486 Td +(returned.) 35.686 Tj +[1 0 0 1 72 276.386] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -266.424] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 254.568 Td +/F134_0 9.9626 Tf +(source) 35.8654 Tj +[1 0 0 1 107.865 254.568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -107.865 -254.568] cm +[1 0 0 1 0 0] Tm +0 0 Td +110.981 254.568 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-313 TJm +(assumed) 34.3112 Tj +-312 TJm +(to) 7.7509 Tj +-313 TJm +(hold) 17.7135 Tj +-313 TJm +(a) 4.42339 Tj +-313 TJm +(complete) 36.5229 Tj +[1 0 0 1 237.04 254.568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -237.04 -254.568] cm +[1 0 0 1 0 0] Tm +0 0 Td +237.04 254.568 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 266.928 254.568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -266.928 -254.568] cm +[1 0 0 1 0 0] Tm +0 0 Td +270.044 254.568 Td +/F130_0 9.9626 Tf +(format) 26.5603 Tj +-313 TJm +(data) 16.5977 Tj +-312 TJm +(stream.) 29.0509 Tj +[1 0 0 1 353.446 254.568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -353.446 -254.568] cm +[1 0 0 1 0 0] Tm +0 0 Td +353.446 254.568 Td +/F134_0 9.9626 Tf +(BZ2_bzBuffToBuffDecompress) 155.417 Tj +[1 0 0 1 508.863 254.568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -508.863 -254.568] cm +[1 0 0 1 0 0] Tm +0 0 Td +511.978 254.568 Td +/F130_0 9.9626 Tf +(tries) 17.1556 Tj +-313 TJm +(to) 7.7509 Tj +72 242.613 Td +(decompress) 47.0334 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(entirety) 30.4357 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(stream) 26.5603 Tj +-250 TJm +(into) 15.5018 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(output) 25.4644 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +55 TJm +(.) 2.49065 Tj +[1 0 0 1 72 240.456] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -230.493] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 220.695 Td +/F130_0 9.9626 Tf +(F) 5.53921 Tj +15 TJm +(or) 8.29885 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(meaning) 34.3112 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(parameters) 43.7059 Tj +[1 0 0 1 196.631 220.695] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -196.631 -220.695] cm +[1 0 0 1 0 0] Tm +0 0 Td +196.631 220.695 Td +/F134_0 9.9626 Tf +(small) 29.8878 Tj +[1 0 0 1 226.519 220.695] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -226.519 -220.695] cm +[1 0 0 1 0 0] Tm +0 0 Td +229.01 220.695 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 245.887 220.695] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -245.887 -220.695] cm +[1 0 0 1 0 0] Tm +0 0 Td +245.887 220.695 Td +/F134_0 9.9626 Tf +(verbosity) 53.798 Tj +[1 0 0 1 299.685 220.695] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -299.685 -220.695] cm +[1 0 0 1 0 0] Tm +0 0 Td +299.685 220.695 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-250 TJm +(see) 12.7222 Tj +[1 0 0 1 319.879 220.695] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -319.879 -220.695] cm +[1 0 0 1 0 0] Tm +0 0 Td +319.879 220.695 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompressInit) 119.551 Tj +[1 0 0 1 439.431 220.695] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -439.431 -220.695] cm +[1 0 0 1 0 0] Tm +0 0 Td +439.431 220.695 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 218.538] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -208.576] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 198.777 Td +/F130_0 9.9626 Tf +(Because) 33.1954 Tj +-250 TJm +(the) 12.1743 Tj +-249 TJm +(compression) 50.3609 Tj +-250 TJm +(ratio) 18.2614 Tj +-249 TJm +(of) 8.29885 Tj +-250 TJm +(the) 12.1743 Tj +-249 TJm +(compressed) 47.0334 Tj +-250 TJm +(data) 16.5977 Tj +-249 TJm +(cannot) 26.5603 Tj +-250 TJm +(be) 9.40469 Tj +-250 TJm +(kno) 14.9439 Tj +25 TJm +(wn) 12.1743 Tj +-249 TJm +(in) 7.7509 Tj +-250 TJm +(adv) 14.386 Tj +25 TJm +(ance,) 20.7421 Tj +-249 TJm +(there) 19.9152 Tj +-250 TJm +(is) 6.64505 Tj +-249 TJm +(no) 9.9626 Tj +-250 TJm +(easy) 17.7035 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(ay) 9.40469 Tj +-249 TJm +(to) 7.7509 Tj +-250 TJm +(guarantee) 38.7246 Tj +72 186.822 Td +(that) 14.9439 Tj +-286 TJm +(the) 12.1743 Tj +-287 TJm +(output) 25.4644 Tj +-286 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +-287 TJm +(will) 15.5018 Tj +-286 TJm +(be) 9.40469 Tj +-286 TJm +(big) 12.7322 Tj +-287 TJm +(enough.) 31.8205 Tj +-838 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-287 TJm +(may) 17.1556 Tj +-286 TJm +(of) 8.29885 Tj +-287 TJm +(course) 26.0024 Tj +-286 TJm +(mak) 17.1556 Tj +10 TJm +(e) 4.42339 Tj +-286 TJm +(arrangements) 53.6685 Tj +-287 TJm +(in) 7.7509 Tj +-286 TJm +(your) 18.2614 Tj +-287 TJm +(code) 18.8094 Tj +-286 TJm +(to) 7.7509 Tj +-286 TJm +(record) 25.4445 Tj +-287 TJm +(the) 12.1743 Tj +-286 TJm +(size) 15.4918 Tj +-287 TJm +(of) 8.29885 Tj +72 174.867 Td +(the) 12.1743 Tj +-250 TJm +(uncompressed) 56.996 Tj +-250 TJm +(data,) 19.0883 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-250 TJm +(such) 18.2614 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(mechanism) 45.3796 Tj +-250 TJm +(is) 6.64505 Tj +-250 TJm +(be) 9.40469 Tj +15 TJm +(yond) 19.9252 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(scope) 22.6848 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(this) 14.396 Tj +-250 TJm +(library) 26.5603 Tj +65 TJm +(.) 2.49065 Tj +[1 0 0 1 72 172.71] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -162.747] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 152.949 Td +/F134_0 9.9626 Tf +(BZ2_bzBuffToBuffDecompress) 155.417 Tj +[1 0 0 1 227.417 152.949] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -227.417 -152.949] cm +[1 0 0 1 0 0] Tm +0 0 Td +230.553 152.949 Td +/F130_0 9.9626 Tf +(will) 15.5018 Tj +-315 TJm +(not) 12.7322 Tj +-315 TJm +(write) 20.4731 Tj +-314 TJm +(data) 16.5977 Tj +-315 TJm +(at) 7.193 Tj +-315 TJm +(or) 8.29885 Tj +-315 TJm +(be) 9.40469 Tj +15 TJm +(yond) 19.9252 Tj +[1 0 0 1 362.484 152.949] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -362.484 -152.949] cm +[1 0 0 1 0 0] Tm +0 0 Td +362.484 152.949 Td +/F134_0 9.9626 Tf +(dest[) 29.8878 Tj +392.372 151.206 Td +(*) 5.97756 Tj +398.349 152.949 Td +(destLen]) 47.8205 Tj +[1 0 0 1 446.17 152.949] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -446.17 -152.949] cm +[1 0 0 1 0 0] Tm +0 0 Td +446.17 152.949 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-331 TJm +(e) 4.42339 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(en) 9.40469 Tj +-315 TJm +(in) 7.7509 Tj +-315 TJm +(case) 17.1456 Tj +-314 TJm +(of) 8.29885 Tj +-315 TJm +(b) 4.9813 Tj +20 TJm +(uf) 8.29885 Tj +25 TJm +(fer) 11.0585 Tj +72 140.994 Td +(o) 4.9813 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(er\003o) 18.2614 Tj +25 TJm +(w) 7.193 Tj +65 TJm +(.) 2.49065 Tj +[1 0 0 1 72 140.894] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -130.932] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 119.076 Td +/F130_0 9.9626 Tf +(Possible) 33.2153 Tj +-250 TJm +(return) 23.7907 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues:) 23.2427 Tj +[1 0 0 1 72 118.977] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -68.1248] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7545] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -50.9514] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 50.9514 Td +/F130_0 9.9626 Tf +(27) 9.9626 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 31 31 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 4.3836 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 -8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 76.4979 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -344.462 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +420.96 749.245 Td +/F130_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +[1 0 0 1 498.449 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -498.449 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +498.449 749.245 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 546.269 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.305 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -5.0363] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -15.0365 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -248.702] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 227.148 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 223.562] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -711.631] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 711.631 Td +/F134_0 9.9626 Tf +(BZ_CONFIG_ERROR) 89.6634 Tj +98.4879 699.676 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(library) 41.8429 Tj +-426 TJm +(has) 17.9327 Tj +-426 TJm +(been) 23.9102 Tj +-426 TJm +(mis-compiled) 71.7307 Tj +90 687.721 Td +(BZ_PARAM_ERROR) 83.6858 Tj +98.4879 675.766 Td +(if) 11.9551 Tj +-426 TJm +(dest) 23.9102 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(destLen) 41.8429 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(NULL) 23.9102 Tj +98.4879 663.811 Td +(or) 11.9551 Tj +-426 TJm +(small) 29.8878 Tj +-426 TJm +(!=) 11.9551 Tj +-426 TJm +(0) 5.97756 Tj +-426 TJm +(&&) 11.9551 Tj +-426 TJm +(small) 29.8878 Tj +-426 TJm +(!=) 11.9551 Tj +-426 TJm +(1) 5.97756 Tj +98.4879 651.856 Td +(or) 11.9551 Tj +-426 TJm +(verbosity) 53.798 Tj +-426 TJm +(<) 5.97756 Tj +-426 TJm +(0) 5.97756 Tj +-426 TJm +(or) 11.9551 Tj +-426 TJm +(verbosity) 53.798 Tj +-426 TJm +(>) 5.97756 Tj +-426 TJm +(4) 5.97756 Tj +90 639.9 Td +(BZ_MEM_ERROR) 71.7307 Tj +98.4879 627.945 Td +(if) 11.9551 Tj +-426 TJm +(insufficient) 71.7307 Tj +-426 TJm +(memory) 35.8654 Tj +-426 TJm +(is) 11.9551 Tj +-426 TJm +(available) 53.798 Tj +90 615.99 Td +(BZ_OUTBUFF_FULL) 89.6634 Tj +98.4879 604.035 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(size) 23.9102 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(exceeds) 41.8429 Tj +341.655 602.291 Td +(*) 5.97756 Tj +347.633 604.035 Td +(destLen) 41.8429 Tj +90 592.08 Td +(BZ_DATA_ERROR) 77.7083 Tj +98.4879 580.125 Td +(if) 11.9551 Tj +-426 TJm +(a) 5.97756 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(integrity) 53.798 Tj +-426 TJm +(error) 29.8878 Tj +-426 TJm +(was) 17.9327 Tj +-426 TJm +(detected) 47.8205 Tj +-426 TJm +(in) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +-426 TJm +(data) 23.9102 Tj +90 568.169 Td +(BZ_DATA_ERROR_MAGIC) 113.574 Tj +98.4879 556.214 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(doesn't) 41.8429 Tj +-426 TJm +(begin) 29.8878 Tj +-426 TJm +(with) 23.9102 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(right) 29.8878 Tj +-426 TJm +(magic) 29.8878 Tj +-426 TJm +(bytes) 29.8878 Tj +90 544.259 Td +(BZ_UNEXPECTED_EOF) 101.619 Tj +98.4879 532.304 Td +(if) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compressed) 59.7756 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(ends) 23.9102 Tj +-426 TJm +(unexpectedly) 71.7307 Tj +90 520.349 Td +(BZ_OK) 29.8878 Tj +98.4879 508.394 Td +(otherwise) 53.798 Tj +[1 0 0 1 72 492.852] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -482.889] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 458.099 Td +/F122_0 20.6585 Tf +(3.6.) 34.4584 Tj +[1 0 0 1 112.201 458.099] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -112.201 -458.099] cm +[1 0 0 1 0 0] Tm +0 0 Td +112.201 458.099 Td +/F392_0 20.6585 Tf +(zlib) 49.5804 Tj +[1 0 0 1 161.781 458.099] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -161.781 -458.099] cm +[1 0 0 1 0 0] Tm +0 0 Td +167.524 458.099 Td +/F122_0 20.6585 Tf +(compatibility) 127.422 Tj +-278 TJm +(functions) 92.9633 Tj +[1 0 0 1 72 453.823] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -443.86] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 436.181 Td +/F130_0 9.9626 Tf +(Y) 7.193 Tj +110 TJm +(oshioka) 30.9936 Tj +-604 TJm +(Tsuneo) 29.3299 Tj +-604 TJm +(has) 13.2801 Tj +-604 TJm +(contrib) 28.224 Tj +20 TJm +(uted) 17.1556 Tj +-604 TJm +(some) 21.031 Tj +-604 TJm +(functions) 37.0808 Tj +-604 TJm +(to) 7.7509 Tj +-604 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-604 TJm +(better) 22.6848 Tj +[1 0 0 1 356.347 436.181] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -356.347 -436.181] cm +[1 0 0 1 0 0] Tm +0 0 Td +356.347 436.181 Td +/F134_0 9.9626 Tf +(zlib) 23.9102 Tj +[1 0 0 1 380.257 436.181] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -380.257 -436.181] cm +[1 0 0 1 0 0] Tm +0 0 Td +386.275 436.181 Td +/F130_0 9.9626 Tf +(compatibility) 53.1405 Tj +65 TJm +(.) 2.49065 Tj +-1372 TJm +(These) 23.7907 Tj +-604 TJm +(functions) 37.0808 Tj +-604 TJm +(are) 12.1643 Tj +[1 0 0 1 72 424.226] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -424.226] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 424.226 Td +/F134_0 9.9626 Tf +(BZ2_bzopen) 59.7756 Tj +[1 0 0 1 131.776 424.226] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -131.776 -424.226] cm +[1 0 0 1 0 0] Tm +0 0 Td +131.776 424.226 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 144.283 424.226] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -144.283 -424.226] cm +[1 0 0 1 0 0] Tm +0 0 Td +144.283 424.226 Td +/F134_0 9.9626 Tf +(BZ2_bzread) 59.7756 Tj +[1 0 0 1 204.059 424.226] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -204.059 -424.226] cm +[1 0 0 1 0 0] Tm +0 0 Td +204.059 424.226 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 216.566 424.226] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -216.566 -424.226] cm +[1 0 0 1 0 0] Tm +0 0 Td +216.566 424.226 Td +/F134_0 9.9626 Tf +(BZ2_bzwrite) 65.7532 Tj +[1 0 0 1 282.32 424.226] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -282.32 -424.226] cm +[1 0 0 1 0 0] Tm +0 0 Td +282.32 424.226 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 294.827 424.226] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -294.827 -424.226] cm +[1 0 0 1 0 0] Tm +0 0 Td +294.827 424.226 Td +/F134_0 9.9626 Tf +(BZ2_bzflush) 65.7532 Tj +[1 0 0 1 360.581 424.226] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -360.581 -424.226] cm +[1 0 0 1 0 0] Tm +0 0 Td +360.581 424.226 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 373.088 424.226] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -373.088 -424.226] cm +[1 0 0 1 0 0] Tm +0 0 Td +373.088 424.226 Td +/F134_0 9.9626 Tf +(BZ2_bzclose) 65.7532 Tj +[1 0 0 1 438.842 424.226] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -438.842 -424.226] cm +[1 0 0 1 0 0] Tm +0 0 Td +438.842 424.226 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 451.349 424.226] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -451.349 -424.226] cm +[1 0 0 1 0 0] Tm +0 0 Td +451.349 424.226 Td +/F134_0 9.9626 Tf +(BZ2_bzerror) 65.7532 Tj +[1 0 0 1 517.102 424.226] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -517.102 -424.226] cm +[1 0 0 1 0 0] Tm +0 0 Td +525.614 424.226 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 72 412.271] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -412.271] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 412.271 Td +/F134_0 9.9626 Tf +(BZ2_bzlibVersion) 95.641 Tj +[1 0 0 1 167.641 412.271] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -167.641 -412.271] cm +[1 0 0 1 0 0] Tm +0 0 Td +167.641 412.271 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-1420 TJm +(Thes) 19.3673 Tj +1 TJm +(e) 4.42339 Tj +-384 TJm +(functions) 37.0808 Tj +-383 TJm +(are) 12.1643 Tj +-383 TJm +(not) 12.7322 Tj +-383 TJm +(\(yet\)) 18.8094 Tj +-384 TJm +(of) 8.29885 Tj +25 TJm +(\002cially) 27.6761 Tj +-383 TJm +(part) 15.4918 Tj +-383 TJm +(of) 8.29885 Tj +-383 TJm +(the) 12.1743 Tj +-384 TJm +(library) 26.5603 Tj +65 TJm +(.) 2.49065 Tj +-1419 TJm +(If) 6.63509 Tj +-383 TJm +(the) 12.1743 Tj +15 TJm +(y) 4.9813 Tj +-384 TJm +(break,) 24.6176 Tj +-416 TJm +(you) 14.9439 Tj +-383 TJm +(get) 12.1743 Tj +-384 TJm +(to) 7.7509 Tj +72 400.316 Td +(k) 4.9813 Tj +10 TJm +(eep) 13.8281 Tj +-250 TJm +(all) 9.9626 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(pieces.) 27.3872 Tj +-620 TJm +(Ne) 11.6164 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ertheless,) 37.3498 Tj +-250 TJm +(I) 3.31755 Tj +-250 TJm +(think) 20.4831 Tj +-250 TJm +(the) 12.1743 Tj +15 TJm +(y) 4.9813 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(ork) 13.2801 Tj +-250 TJm +(ok.) 12.4533 Tj +[1 0 0 1 72 398.159] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -48.8169] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 47.8207 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 44.2341] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -388.794] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 388.794 Td +/F134_0 9.9626 Tf +(typedef) 41.8429 Tj +-426 TJm +(void) 23.9102 Tj +-426 TJm +(BZFILE;) 41.8429 Tj +90 364.884 Td +(const) 29.8878 Tj +-426 TJm +(char) 23.9102 Tj +152.286 363.14 Td +(*) 5.97756 Tj +162.508 364.884 Td +(BZ2_bzlibVersion) 95.641 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(void) 23.9102 Tj +-426 TJm +(\);) 11.9551 Tj +[1 0 0 1 72 349.342] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -339.379] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 327.424 Td +/F130_0 9.9626 Tf +(Returns) 30.9936 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(string) 22.6948 Tj +-250 TJm +(indicating) 39.8504 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(library) 26.5603 Tj +-250 TJm +(v) 4.9813 Tj +15 TJm +(ersion.) 26.8392 Tj +[1 0 0 1 72 325.267] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -36.8618] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 35.8655 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 32.2789] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -315.902] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 315.902 Td +/F134_0 9.9626 Tf +(BZFILE) 35.8654 Tj +130.109 314.159 Td +(*) 5.97756 Tj +140.331 315.902 Td +(BZ2_bzopen) 59.7756 Tj +-852 TJm +(\() 5.97756 Tj +-426 TJm +(const) 29.8878 Tj +-426 TJm +(char) 23.9102 Tj +281.103 314.159 Td +(*) 5.97756 Tj +287.08 315.902 Td +(path,) 29.8878 Tj +-426 TJm +(const) 29.8878 Tj +-426 TJm +(char) 23.9102 Tj +383.498 314.159 Td +(*) 5.97756 Tj +389.476 315.902 Td +(mode) 23.9102 Tj +-426 TJm +(\);) 11.9551 Tj +90 303.947 Td +(BZFILE) 35.8654 Tj +130.109 302.204 Td +(*) 5.97756 Tj +140.331 303.947 Td +(BZ2_bzdopen) 65.7532 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(int) 17.9327 Tj +-3408 TJm +(fd,) 17.9327 Tj +-1704 TJm +(const) 29.8878 Tj +-426 TJm +(char) 23.9102 Tj +369.629 302.204 Td +(*) 5.97756 Tj +375.607 303.947 Td +(mode) 23.9102 Tj +-426 TJm +(\);) 11.9551 Tj +[1 0 0 1 72 288.405] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -278.443] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 266.488 Td +/F130_0 9.9626 Tf +(Opens) 25.4544 Tj +-243 TJm +(a) 4.42339 Tj +[1 0 0 1 106.713 266.488] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -106.713 -266.488] cm +[1 0 0 1 0 0] Tm +0 0 Td +106.713 266.488 Td +/F134_0 9.9626 Tf +(.bz2) 23.9102 Tj +[1 0 0 1 130.624 266.488] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -130.624 -266.488] cm +[1 0 0 1 0 0] Tm +0 0 Td +133.041 266.488 Td +/F130_0 9.9626 Tf +(\002le) 12.7322 Tj +-243 TJm +(for) 11.6164 Tj +-242 TJm +(reading) 29.8778 Tj +-243 TJm +(or) 8.29885 Tj +-243 TJm +(writing,) 31.2726 Tj +-244 TJm +(using) 21.589 Tj +-243 TJm +(ei) 7.193 Tj +1 TJm +(ther) 15.4918 Tj +-243 TJm +(its) 9.41466 Tj +-243 TJm +(name) 21.579 Tj +-242 TJm +(o) 4.9813 Tj +-1 TJm +(r) 3.31755 Tj +-242 TJm +(a) 4.42339 Tj +-243 TJm +(pre-e) 20.4632 Tj +15 TJm +(xisting) 27.1282 Tj +-243 TJm +(\002le) 12.7322 Tj +-242 TJm +(descriptor) 39.8404 Tj +55 TJm +(.) 2.49065 Tj +-615 TJm +(Analogous) 43.1679 Tj +-243 TJm +(to) 7.7509 Tj +[1 0 0 1 510.112 266.488] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -510.112 -266.488] cm +[1 0 0 1 0 0] Tm +0 0 Td +510.112 266.488 Td +/F134_0 9.9626 Tf +(fopen) 29.8878 Tj +[1 0 0 1 540 266.488] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -540 -266.488] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 254.532 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 88.8767 254.532] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -88.8767 -254.532] cm +[1 0 0 1 0 0] Tm +0 0 Td +88.8767 254.532 Td +/F134_0 9.9626 Tf +(fdopen) 35.8654 Tj +[1 0 0 1 124.742 254.532] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -124.742 -254.532] cm +[1 0 0 1 0 0] Tm +0 0 Td +124.742 254.532 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 252.998] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -36.8618] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 35.8655 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 32.2789] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -243.633] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 243.633 Td +/F134_0 9.9626 Tf +(int) 17.9327 Tj +-426 TJm +(BZ2_bzread) 59.7756 Tj +-852 TJm +(\() 5.97756 Tj +-426 TJm +(BZFILE) 35.8654 Tj +226.528 241.89 Td +(*) 5.97756 Tj +236.749 243.633 Td +(b,) 11.9551 Tj +-426 TJm +(void) 23.9102 Tj +276.859 241.89 Td +(*) 5.97756 Tj +287.08 243.633 Td +(buf,) 23.9102 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(len) 17.9327 Tj +-426 TJm +(\);) 11.9551 Tj +90 231.678 Td +(int) 17.9327 Tj +-426 TJm +(BZ2_bzwrite) 65.7532 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(BZFILE) 35.8654 Tj +228.261 229.935 Td +(*) 5.97756 Tj +238.483 231.678 Td +(b,) 11.9551 Tj +-426 TJm +(void) 23.9102 Tj +278.592 229.935 Td +(*) 5.97756 Tj +288.814 231.678 Td +(buf,) 23.9102 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(len) 17.9327 Tj +-426 TJm +(\);) 11.9551 Tj +[1 0 0 1 72 216.136] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -206.174] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 194.219 Td +/F130_0 9.9626 Tf +(Reads/writes) 51.4668 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(from/to) 29.8878 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(pre) 12.7222 Tj +25 TJm +(viously) 29.3399 Tj +-250 TJm +(opened) 28.772 Tj +[1 0 0 1 259.903 194.219] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -259.903 -194.219] cm +[1 0 0 1 0 0] Tm +0 0 Td +259.903 194.219 Td +/F134_0 9.9626 Tf +(BZFILE) 35.8654 Tj +[1 0 0 1 295.769 194.219] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -295.769 -194.219] cm +[1 0 0 1 0 0] Tm +0 0 Td +295.769 194.219 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-500 TJm +(Analogous) 43.1679 Tj +-250 TJm +(to) 7.7509 Tj +[1 0 0 1 359.141 194.219] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -359.141 -194.219] cm +[1 0 0 1 0 0] Tm +0 0 Td +359.141 194.219 Td +/F134_0 9.9626 Tf +(fread) 29.8878 Tj +[1 0 0 1 389.029 194.219] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -389.029 -194.219] cm +[1 0 0 1 0 0] Tm +0 0 Td +391.519 194.219 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 408.396 194.219] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -408.396 -194.219] cm +[1 0 0 1 0 0] Tm +0 0 Td +408.396 194.219 Td +/F134_0 9.9626 Tf +(fwrite) 35.8654 Tj +[1 0 0 1 444.261 194.219] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.261 -194.219] cm +[1 0 0 1 0 0] Tm +0 0 Td +444.261 194.219 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 192.062] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -36.8618] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 35.8655 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 32.2789] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -182.697] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 182.697 Td +/F134_0 9.9626 Tf +(int) 17.9327 Tj +-852 TJm +(BZ2_bzflush) 65.7532 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(BZFILE) 35.8654 Tj +232.505 180.954 Td +(*) 5.97756 Tj +242.727 182.697 Td +(b) 5.97756 Tj +-426 TJm +(\);) 11.9551 Tj +90 170.742 Td +(void) 23.9102 Tj +-426 TJm +(BZ2_bzclose) 65.7532 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(BZFILE) 35.8654 Tj +234.239 168.998 Td +(*) 5.97756 Tj +244.46 170.742 Td +(b) 5.97756 Tj +-426 TJm +(\);) 11.9551 Tj +[1 0 0 1 72 155.2] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -145.237] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 133.282 Td +/F130_0 9.9626 Tf +(Flushes/closes) 57.5639 Tj +-250 TJm +(a) 4.42339 Tj +[1 0 0 1 138.968 133.282] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -138.968 -133.282] cm +[1 0 0 1 0 0] Tm +0 0 Td +138.968 133.282 Td +/F134_0 9.9626 Tf +(BZFILE) 35.8654 Tj +[1 0 0 1 174.833 133.282] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -174.833 -133.282] cm +[1 0 0 1 0 0] Tm +0 0 Td +174.833 133.282 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 179.815 133.282] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -179.815 -133.282] cm +[1 0 0 1 0 0] Tm +0 0 Td +179.815 133.282 Td +/F134_0 9.9626 Tf +(BZ2_bzflush) 65.7532 Tj +[1 0 0 1 245.568 133.282] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -245.568 -133.282] cm +[1 0 0 1 0 0] Tm +0 0 Td +248.059 133.282 Td +/F130_0 9.9626 Tf +(doesn') 26.5603 Tj +18 TJm +(t) 2.7696 Tj +-250 TJm +(actually) 31.5416 Tj +-250 TJm +(do) 9.9626 Tj +-250 TJm +(an) 9.40469 Tj +15 TJm +(ything.) 27.9551 Tj +-620 TJm +(Analogous) 43.1679 Tj +-250 TJm +(to) 7.7509 Tj +[1 0 0 1 425.472 133.282] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -425.472 -133.282] cm +[1 0 0 1 0 0] Tm +0 0 Td +425.472 133.282 Td +/F134_0 9.9626 Tf +(fflush) 35.8654 Tj +[1 0 0 1 461.338 133.282] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -461.338 -133.282] cm +[1 0 0 1 0 0] Tm +0 0 Td +463.828 133.282 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 480.705 133.282] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -480.705 -133.282] cm +[1 0 0 1 0 0] Tm +0 0 Td +480.705 133.282 Td +/F134_0 9.9626 Tf +(fclose) 35.8654 Tj +[1 0 0 1 516.57 133.282] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -516.57 -133.282] cm +[1 0 0 1 0 0] Tm +0 0 Td +516.57 133.282 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 131.125] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -24.9066] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 23.9103 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 20.3237] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3685] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -121.761] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 121.761 Td +/F134_0 9.9626 Tf +(const) 29.8878 Tj +-426 TJm +(char) 23.9102 Tj +152.286 120.017 Td +(*) 5.97756 Tj +162.508 121.761 Td +(BZ2_bzerror) 65.7532 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(BZFILE) 35.8654 Tj +282.836 120.017 Td +(*) 5.97756 Tj +288.814 121.761 Td +(b,) 11.9551 Tj +-426 TJm +(int) 17.9327 Tj +327.19 120.017 Td +(*) 5.97756 Tj +333.167 121.761 Td +(errnum) 35.8654 Tj +-426 TJm +(\)) 5.97756 Tj +[1 0 0 1 72 106.219] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -96.2563] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 84.3011 Td +/F130_0 9.9626 Tf +(Returns) 30.9936 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(string) 22.6948 Tj +-250 TJm +(describing) 41.5042 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(more) 20.4731 Tj +-250 TJm +(recent) 24.3386 Tj +-250 TJm +(error) 19.3573 Tj +-250 TJm +(status) 22.6948 Tj +-250 TJm +(of) 8.29885 Tj +[1 0 0 1 303.858 84.3011] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -303.858 -84.3011] cm +[1 0 0 1 0 0] Tm +0 0 Td +303.858 84.3011 Td +/F134_0 9.9626 Tf +(b) 5.97756 Tj +[1 0 0 1 309.835 84.3011] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -309.835 -84.3011] cm +[1 0 0 1 0 0] Tm +0 0 Td +309.835 84.3011 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(also) 16.0497 Tj +-250 TJm +(sets) 14.9439 Tj +[1 0 0 1 367.668 84.3011] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -367.668 -84.3011] cm +[1 0 0 1 0 0] Tm +0 0 Td +367.668 82.5576 Td +/F134_0 9.9626 Tf +(*) 5.97756 Tj +373.645 84.3011 Td +(errnum) 35.8654 Tj +[1 0 0 1 409.511 84.3011] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -409.511 -84.3011] cm +[1 0 0 1 0 0] Tm +0 0 Td +412.001 84.3011 Td +/F130_0 9.9626 Tf +(to) 7.7509 Tj +-250 TJm +(its) 9.41466 Tj +-250 TJm +(numerical) 39.8404 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alue.) 19.0883 Tj +[1 0 0 1 72 82.1443] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -21.3298] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 4.3836 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7545] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -495.734 -50.9514] cm +[1 0 0 1 0 0] Tm +0 0 Td +536.307 50.9514 Td +/F130_0 9.9626 Tf +(28) 9.9626 Tj +[1 0 0 1 455.161 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -15.0365 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 32 32 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 76.4979 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -342.569 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F130_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +[1 0 0 1 496.556 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -496.556 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +496.556 749.245 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 544.376 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.305 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -5.0363] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -540 -741.554] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 704.93 Td +/F122_0 20.6585 Tf +(3.7.) 34.4584 Tj +-278 TJm +(Using) 57.3893 Tj +-278 TJm +(the) 30.9877 Tj +-278 TJm +(librar) 51.6669 Tj +-10 TJm +(y) 11.4861 Tj +-278 TJm +(in) 18.3654 Tj +-278 TJm +(a) 11.4861 Tj +[1 0 0 1 322.501 704.93] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -322.501 -704.93] cm +[1 0 0 1 0 0] Tm +0 0 Td +322.501 704.93 Td +/F392_0 20.6585 Tf +(stdio) 61.9755 Tj +[1 0 0 1 384.477 704.93] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -384.477 -704.93] cm +[1 0 0 1 0 0] Tm +0 0 Td +384.477 704.93 Td +/F122_0 20.6585 Tf +(-free) 44.767 Tj +72 680.139 Td +(en) 24.1085 Tj +40 TJm +(vir) 25.2653 Tj +20 TJm +(onment) 74.5978 Tj +[1 0 0 1 72 679.881] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.898] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -669.983] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 649.583 Td +/F122_0 17.2154 Tf +(3.7.1.) 43.0729 Tj +-278 TJm +(Getting) 60.2539 Tj +-278 TJm +(rid) 22.0013 Tj +-278 TJm +(of) 16.2513 Tj +[1 0 0 1 232.721 649.583] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -232.721 -649.583] cm +[1 0 0 1 0 0] Tm +0 0 Td +232.721 649.583 Td +/F392_0 17.2154 Tf +(stdio) 51.6462 Tj +[1 0 0 1 284.367 649.583] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -212.367 -3.8303] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.898] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -635.855] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 627.73 Td +/F130_0 9.9626 Tf +(In) 8.29885 Tj +-319 TJm +(a) 4.42339 Tj +-319 TJm +(deeply) 26.5603 Tj +-319 TJm +(embedded) 40.9463 Tj +-319 TJm +(application,) 46.7644 Tj +-336 TJm +(you) 14.9439 Tj +-319 TJm +(might) 23.2527 Tj +-319 TJm +(w) 7.193 Tj +10 TJm +(ant) 12.1743 Tj +-319 TJm +(to) 7.7509 Tj +-319 TJm +(use) 13.2801 Tj +-319 TJm +(just) 14.396 Tj +-319 TJm +(the) 12.1743 Tj +-319 TJm +(memory-to-memory) 80.7967 Tj +-319 TJm +(functions.) 39.5714 Tj +-1035 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-319 TJm +(can) 13.8281 Tj +-319 TJm +(do) 9.9626 Tj +-319 TJm +(this) 14.396 Tj +72 615.775 Td +(con) 14.386 Tj +40 TJm +(v) 4.9813 Tj +15 TJm +(eniently) 32.0995 Tj +-327 TJm +(by) 9.9626 Tj +-327 TJm +(compiling) 40.4083 Tj +-327 TJm +(the) 12.1743 Tj +-327 TJm +(library) 26.5603 Tj +-327 TJm +(with) 17.7135 Tj +-328 TJm +(preproces) 38.7246 Tj +1 TJm +(sor) 12.1743 Tj +-328 TJm +(symbol) 29.3399 Tj +[1 0 0 1 336.046 615.775] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -336.046 -615.775] cm +[1 0 0 1 0 0] Tm +0 0 Td +336.046 615.775 Td +/F134_0 9.9626 Tf +(BZ_NO_STDIO) 65.7532 Tj +[1 0 0 1 401.799 615.775] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -401.799 -615.775] cm +[1 0 0 1 0 0] Tm +0 0 Td +405.057 615.775 Td +/F130_0 9.9626 Tf +(de\002ned.) 31.8205 Tj +-1083 TJm +(Doing) 24.9065 Tj +-327 TJm +(this) 14.396 Tj +-327 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(es) 8.29885 Tj +-327 TJm +(you) 14.9439 Tj +-327 TJm +(a) 4.42339 Tj +72 603.819 Td +(library) 26.5603 Tj +-250 TJm +(containing) 42.0621 Tj +-250 TJm +(only) 17.7135 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(follo) 18.8194 Tj +25 TJm +(wing) 19.9252 Tj +-250 TJm +(eight) 19.9252 Tj +-250 TJm +(functions:) 39.8504 Tj +[1 0 0 1 72 601.662] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.898] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -591.764] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 581.966 Td +/F134_0 9.9626 Tf +(BZ2_bzCompressInit) 107.596 Tj +[1 0 0 1 179.596 581.966] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -179.596 -581.966] cm +[1 0 0 1 0 0] Tm +0 0 Td +179.596 581.966 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 199.079 581.966] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -199.079 -581.966] cm +[1 0 0 1 0 0] Tm +0 0 Td +199.079 581.966 Td +/F134_0 9.9626 Tf +(BZ2_bzCompress) 83.6858 Tj +[1 0 0 1 282.765 581.966] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -282.765 -581.966] cm +[1 0 0 1 0 0] Tm +0 0 Td +282.765 581.966 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 302.247 581.966] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -302.247 -581.966] cm +[1 0 0 1 0 0] Tm +0 0 Td +302.247 581.966 Td +/F134_0 9.9626 Tf +(BZ2_bzCompressEnd) 101.619 Tj +[1 0 0 1 403.866 581.966] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 14.0915 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -417.958 -581.966] cm +[1 0 0 1 0 0] Tm +0 0 Td +417.958 581.966 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompressInit) 119.551 Tj +[1 0 0 1 537.509 581.966] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -537.509 -581.966] cm +[1 0 0 1 0 0] Tm +0 0 Td +537.509 581.966 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 72 570.011] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -570.011] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 570.011 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompress) 95.641 Tj +[1 0 0 1 167.641 570.011] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -167.641 -570.011] cm +[1 0 0 1 0 0] Tm +0 0 Td +167.641 570.011 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 172.144 570.011] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -172.144 -570.011] cm +[1 0 0 1 0 0] Tm +0 0 Td +172.144 570.011 Td +/F134_0 9.9626 Tf +(BZ2_bzDecompressEnd) 113.574 Tj +[1 0 0 1 285.719 570.011] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -287.611 -570.011] cm +[1 0 0 1 0 0] Tm +0 0 Td +287.611 570.011 Td +/F134_0 9.9626 Tf +(BZ2_bzBuffToBuffCompress) 143.461 Tj +[1 0 0 1 431.073 570.011] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -431.073 -570.011] cm +[1 0 0 1 0 0] Tm +0 0 Td +431.073 570.011 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 435.577 570.011] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -435.577 -570.011] cm +[1 0 0 1 0 0] Tm +0 0 Td +435.577 570.011 Td +/F134_0 9.9626 Tf +(BZ2_bzBuffToBuffDecompress) 155.417 Tj +[1 0 0 1 590.994 570.011] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -518.994 -1.5341] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.8981] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -558.579] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 548.158 Td +/F130_0 9.9626 Tf +(When) 23.7907 Tj +-250 TJm +(compiled) 37.0808 Tj +-250 TJm +(lik) 10.5205 Tj +10 TJm +(e) 4.42339 Tj +-250 TJm +(this,) 16.8866 Tj +-250 TJm +(all) 9.9626 Tj +-250 TJm +(functions) 37.0808 Tj +-250 TJm +(will) 15.5018 Tj +-250 TJm +(ignore) 25.4544 Tj +[1 0 0 1 272.526 548.158] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -272.526 -548.158] cm +[1 0 0 1 0 0] Tm +0 0 Td +272.526 548.158 Td +/F134_0 9.9626 Tf +(verbosity) 53.798 Tj +[1 0 0 1 326.324 548.158] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -326.324 -548.158] cm +[1 0 0 1 0 0] Tm +0 0 Td +328.815 548.158 Td +/F130_0 9.9626 Tf +(settings.) 32.9364 Tj +[1 0 0 1 72 546.001] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.898] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -536.103] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 517.601 Td +/F122_0 17.2154 Tf +(3.7.2.) 43.0729 Tj +-278 TJm +(Critical) 58.3602 Tj +-278 TJm +(err) 22.9653 Tj +20 TJm +(or) 17.2154 Tj +-278 TJm +(handling) 71.7366 Tj +[1 0 0 1 72 513.771] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.898] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -503.873] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 495.748 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 119.821 495.748] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -119.821 -495.748] cm +[1 0 0 1 0 0] Tm +0 0 Td +124.529 495.748 Td +/F130_0 9.9626 Tf +(contains) 33.2053 Tj +-473 TJm +(a) 4.42339 Tj +-472 TJm +(number) 30.4357 Tj +-473 TJm +(of) 8.29885 Tj +-472 TJm +(internal) 30.4357 Tj +-473 TJm +(assertion) 35.417 Tj +-472 TJm +(checks) 27.1082 Tj +-473 TJm +(which) 24.3486 Tj +-472 TJm +(should,) 29.0609 Tj +-529 TJm +(needless) 33.7533 Tj +-472 TJm +(to) 7.7509 Tj +-473 TJm +(say) 13.2801 Tj +65 TJm +(,) 2.49065 Tj +-528 TJm +(ne) 9.40469 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.74094 Tj +-473 TJm +(be) 9.40469 Tj +-472 TJm +(acti) 14.386 Tj +25 TJm +(v) 4.9813 Tj +25 TJm +(ated.) 19.0883 Tj +72 483.793 Td +(Ne) 11.6164 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ertheless,) 37.3498 Tj +-533 TJm +(if) 6.08715 Tj +-476 TJm +(an) 9.40469 Tj +-476 TJm +(assertion) 35.417 Tj +-476 TJm +(should) 26.5703 Tj +-476 TJm +(f) 3.31755 Tj +10 TJm +(ail,) 12.4533 Tj +-532 TJm +(beha) 18.8094 Tj +20 TJm +(viour) 21.031 Tj +-476 TJm +(depends) 32.6474 Tj +-476 TJm +(on) 9.9626 Tj +-476 TJm +(whether) 32.0895 Tj +-476 TJm +(or) 8.29885 Tj +-477 TJm +(not) 12.7322 Tj +-476 TJm +(the) 12.1743 Tj +-476 TJm +(library) 26.5603 Tj +-476 TJm +(w) 7.193 Tj +10 TJm +(as) 8.29885 Tj +-476 TJm +(compiled) 37.0808 Tj +-476 TJm +(with) 17.7135 Tj +[1 0 0 1 72 471.838] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -471.838] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 471.838 Td +/F134_0 9.9626 Tf +(BZ_NO_STDIO) 65.7532 Tj +[1 0 0 1 137.753 471.838] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -137.753 -471.838] cm +[1 0 0 1 0 0] Tm +0 0 Td +140.244 471.838 Td +/F130_0 9.9626 Tf +(set.) 13.5591 Tj +[1 0 0 1 72 470.528] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.898] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -460.63] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 449.985 Td +/F130_0 9.9626 Tf +(F) 5.53921 Tj +15 TJm +(or) 8.29885 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(normal) 28.224 Tj +-250 TJm +(compile,) 34.5901 Tj +-250 TJm +(an) 9.40469 Tj +-250 TJm +(assertion) 35.417 Tj +-250 TJm +(f) 3.31755 Tj +10 TJm +(ailure) 22.6848 Tj +-250 TJm +(yields) 23.8007 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(message:) 36.5229 Tj +[1 0 0 1 72 447.828] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.898] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -437.93] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 428.131 Td +/F130_0 9.9626 Tf +(bzip2/libbzip2:) 60.3335 Tj +-310 TJm +(internal) 30.4357 Tj +-250 TJm +(error) 19.3573 Tj +-250 TJm +(number) 30.4357 Tj +-250 TJm +(N.) 9.68365 Tj +[1 0 0 1 72 425.975] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.898] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -416.077] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 406.278 Td +/F130_0 9.9626 Tf +(This) 17.7135 Tj +-332 TJm +(is) 6.64505 Tj +-331 TJm +(a) 4.42339 Tj +-332 TJm +(b) 4.9813 Tj +20 TJm +(ug) 9.9626 Tj +-332 TJm +(in) 7.7509 Tj +-331 TJm +(bzip2/libbzip2,) 60.0546 Tj +-352 TJm +(1.0.5) 19.9252 Tj +-332 TJm +(of) 8.29885 Tj +-332 TJm +(10) 9.9626 Tj +-332 TJm +(December) 40.9363 Tj +-331 TJm +(2007.) 22.4159 Tj +-555 TJm +(Please) 25.4544 Tj +-332 TJm +(report) 23.7907 Tj +-332 TJm +(it) 5.53921 Tj +-331 TJm +(to) 7.7509 Tj +-332 TJm +(me) 12.1743 Tj +-332 TJm +(at:) 9.9626 Tj +-473 TJm +(jse) 11.0684 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(ard@bzip.or) 49.8429 Tj +18 TJm +(g.) 7.47195 Tj +-1110 TJm +(If) 6.63509 Tj +-332 TJm +(this) 14.396 Tj +72 394.323 Td +(happened) 38.1767 Tj +-297 TJm +(when) 21.579 Tj +-298 TJm +(you) 14.9439 Tj +-297 TJm +(were) 19.3573 Tj +-297 TJm +(using) 21.589 Tj +-297 TJm +(some) 21.031 Tj +-298 TJm +(program) 33.7533 Tj +-297 TJm +(which) 24.3486 Tj +-297 TJm +(uses) 17.1556 Tj +-297 TJm +(libbzip2) 32.6574 Tj +-298 TJm +(as) 8.29885 Tj +-297 TJm +(a) 4.42339 Tj +-297 TJm +(component,) 46.7644 Tj +-309 TJm +(you) 14.9439 Tj +-298 TJm +(should) 26.5703 Tj +-297 TJm +(also) 16.0497 Tj +-297 TJm +(report) 23.7907 Tj +-297 TJm +(this) 14.396 Tj +-298 TJm +(b) 4.9813 Tj +20 TJm +(ug) 9.9626 Tj +72 382.368 Td +(to) 7.7509 Tj +-264 TJm +(the) 12.1743 Tj +-264 TJm +(author\(s\)) 35.965 Tj +-264 TJm +(of) 8.29885 Tj +-264 TJm +(that) 14.9439 Tj +-264 TJm +(program.) 36.2439 Tj +-703 TJm +(Please) 25.4544 Tj +-264 TJm +(mak) 17.1556 Tj +10 TJm +(e) 4.42339 Tj +-264 TJm +(an) 9.40469 Tj +-264 TJm +(ef) 7.74094 Tj +25 TJm +(fort) 14.386 Tj +-264 TJm +(to) 7.7509 Tj +-264 TJm +(report) 23.7907 Tj +-263 TJm +(this) 14.396 Tj +-264 TJm +(b) 4.9813 Tj +20 TJm +(ug;) 12.7322 Tj +-271 TJm +(timely) 25.4644 Tj +-264 TJm +(and) 14.386 Tj +-264 TJm +(accurate) 33.1854 Tj +-264 TJm +(b) 4.9813 Tj +20 TJm +(ug) 9.9626 Tj +-264 TJm +(reports) 27.6661 Tj +-264 TJm +(e) 4.42339 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(entually) 32.0995 Tj +72 370.413 Td +(lead) 16.5977 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(higher) 25.4544 Tj +-250 TJm +(quality) 27.6761 Tj +-250 TJm +(softw) 22.1369 Tj +10 TJm +(are.) 14.655 Tj +-620 TJm +(Thanks.) 31.8205 Tj +-620 TJm +(Julian) 23.8007 Tj +-250 TJm +(Se) 9.9626 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(ard,) 15.2129 Tj +-250 TJm +(10) 9.9626 Tj +-250 TJm +(December) 40.9363 Tj +-250 TJm +(2007.) 22.4159 Tj +[1 0 0 1 72 368.256] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.801] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.898] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -348.557] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 338.758 Td +/F130_0 9.9626 Tf +(where) 24.3386 Tj +[1 0 0 1 98.8312 338.758] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -98.8312 -338.758] cm +[1 0 0 1 0 0] Tm +0 0 Td +98.8312 338.758 Td +/F134_0 9.9626 Tf +(N) 5.97756 Tj +[1 0 0 1 104.809 338.758] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -104.809 -338.758] cm +[1 0 0 1 0 0] Tm +0 0 Td +107.302 338.758 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-250 TJm +(some) 21.031 Tj +-250 TJm +(error) 19.3573 Tj +-251 TJm +(code) 18.8094 Tj +-250 TJm +(number) 30.4357 Tj +55 TJm +(.) 2.49065 Tj +-621 TJm +(If) 6.63509 Tj +[1 0 0 1 230.81 338.758] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -230.81 -338.758] cm +[1 0 0 1 0 0] Tm +0 0 Td +230.81 338.758 Td +/F134_0 9.9626 Tf +(N) 5.97756 Tj +-600 TJm +(==) 11.9551 Tj +-600 TJm +(1007) 23.9102 Tj +[1 0 0 1 284.608 338.758] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -284.608 -338.758] cm +[1 0 0 1 0 0] Tm +0 0 Td +284.608 338.758 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-250 TJm +(it) 5.53921 Tj +-250 TJm +(also) 16.0497 Tj +-251 TJm +(prints) 22.6948 Tj +-250 TJm +(some) 21.031 Tj +-250 TJm +(e) 4.42339 Tj +15 TJm +(xtra) 15.4918 Tj +-250 TJm +(te) 7.193 Tj +15 TJm +(xt) 7.7509 Tj +-250 TJm +(advising) 33.7633 Tj +-251 TJm +(the) 12.1743 Tj +-250 TJm +(reader) 24.8866 Tj +-250 TJm +(that) 14.9439 Tj +-250 TJm +(unreliable) 39.8404 Tj +72 326.803 Td +(memory) 33.2053 Tj +-425 TJm +(is) 6.64505 Tj +-424 TJm +(often) 20.4731 Tj +-425 TJm +(associated) 40.9463 Tj +-425 TJm +(with) 17.7135 Tj +-424 TJm +(internal) 30.4357 Tj +-425 TJm +(error) 19.3573 Tj +-424 TJm +(1007.) 22.4159 Tj +-834 TJm +(\(This) 21.031 Tj +-425 TJm +(is) 6.64505 Tj +-425 TJm +(a) 4.42339 Tj +-424 TJm +(frequently-observ) 70.8241 Tj +15 TJm +(ed-phenomenon) 64.189 Tj +-425 TJm +(with) 17.7135 Tj +-425 TJm +(v) 4.9813 Tj +15 TJm +(ersions) 28.224 Tj +72 314.848 Td +(1.0.0/1.0.1\).) 48.4282 Tj +[1 0 0 1 72 313.065] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.898] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -303.167] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 292.995 Td +/F134_0 9.9626 Tf +(exit\(3\)) 41.8429 Tj +[1 0 0 1 113.843 292.995] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -113.843 -292.995] cm +[1 0 0 1 0 0] Tm +0 0 Td +116.334 292.995 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-250 TJm +(then) 17.1556 Tj +-250 TJm +(called.) 26.2813 Tj +[1 0 0 1 72 291.899] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.8981] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -282.001] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 271.142 Td +/F130_0 9.9626 Tf +(F) 5.53921 Tj +15 TJm +(or) 8.29885 Tj +-250 TJm +(a) 4.42339 Tj +[1 0 0 1 95.0933 271.142] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -95.0933 -271.142] cm +[1 0 0 1 0 0] Tm +0 0 Td +95.0933 271.142 Td +/F134_0 9.9626 Tf +(stdio) 29.8878 Tj +[1 0 0 1 124.981 271.142] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -124.981 -271.142] cm +[1 0 0 1 0 0] Tm +0 0 Td +124.981 271.142 Td +/F130_0 9.9626 Tf +(-free) 18.7994 Tj +-250 TJm +(library) 26.5603 Tj +65 TJm +(,) 2.49065 Tj +-250 TJm +(assertion) 35.417 Tj +-250 TJm +(f) 3.31755 Tj +10 TJm +(ailures) 26.5603 Tj +-250 TJm +(result) 22.1369 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(call) 14.386 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(function) 33.2053 Tj +-250 TJm +(declared) 33.7433 Tj +-250 TJm +(as:) 11.0684 Tj +[1 0 0 1 72 268.985] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -24.9066] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 23.9103 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 20.3237] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3685] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -259.62] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 259.62 Td +/F134_0 9.9626 Tf +(extern) 35.8654 Tj +-426 TJm +(void) 23.9102 Tj +-426 TJm +(bz_internal_error) 101.619 Tj +-426 TJm +(\() 5.97756 Tj +-426 TJm +(int) 17.9327 Tj +-426 TJm +(errcode) 41.8429 Tj +-426 TJm +(\);) 11.9551 Tj +[1 0 0 1 72 244.078] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.4846] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -234.18] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 222.225 Td +/F130_0 9.9626 Tf +(The) 15.4918 Tj +-250 TJm +(rele) 14.9339 Tj +25 TJm +(v) 4.9813 Tj +25 TJm +(ant) 12.1743 Tj +-250 TJm +(code) 18.8094 Tj +-250 TJm +(is) 6.64505 Tj +-250 TJm +(passed) 26.5603 Tj +-250 TJm +(as) 8.29885 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(parameter) 39.8305 Tj +55 TJm +(.) 2.49065 Tj +-620 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-250 TJm +(should) 26.5703 Tj +-250 TJm +(supply) 26.5703 Tj +-250 TJm +(such) 18.2614 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(function.) 35.696 Tj +[1 0 0 1 72 220.068] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.898] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -210.17] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 200.372 Td +/F130_0 9.9626 Tf +(In) 8.29885 Tj +-294 TJm +(either) 22.6848 Tj +-294 TJm +(case,) 19.6363 Tj +-306 TJm +(once) 18.8094 Tj +-294 TJm +(an) 9.40469 Tj +-294 TJm +(assertion) 35.417 Tj +-294 TJm +(f) 3.31755 Tj +10 TJm +(ailure) 22.6848 Tj +-294 TJm +(has) 13.2801 Tj +-295 TJm +(occurred,) 37.3398 Tj +-305 TJm +(an) 9.40469 Tj +15 TJm +(y) 4.9813 Tj +[1 0 0 1 306.541 200.372] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -306.541 -200.372] cm +[1 0 0 1 0 0] Tm +0 0 Td +306.541 200.372 Td +/F134_0 9.9626 Tf +(bz_stream) 53.798 Tj +[1 0 0 1 360.339 200.372] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -360.339 -200.372] cm +[1 0 0 1 0 0] Tm +0 0 Td +363.271 200.372 Td +/F130_0 9.9626 Tf +(records) 29.3199 Tj +-294 TJm +(in) 7.7509 Tj +40 TJm +(v) 4.9813 Tj +20 TJm +(olv) 12.7322 Tj +15 TJm +(ed) 9.40469 Tj +-294 TJm +(can) 13.8281 Tj +-295 TJm +(be) 9.40469 Tj +-294 TJm +(re) 7.74094 Tj +15 TJm +(g) 4.9813 Tj +5 TJm +(arded) 22.1269 Tj +-294 TJm +(as) 8.29885 Tj +-294 TJm +(in) 7.7509 Tj +40 TJm +(v) 4.9813 Tj +25 TJm +(alid.) 17.4346 Tj +72 188.417 Td +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-250 TJm +(should) 26.5703 Tj +-250 TJm +(not) 12.7322 Tj +-250 TJm +(attempt) 29.8878 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(resume) 28.772 Tj +-250 TJm +(normal) 28.224 Tj +-250 TJm +(operation) 37.6287 Tj +-250 TJm +(with) 17.7135 Tj +-250 TJm +(them.) 22.4159 Tj +[1 0 0 1 72 186.26] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.898] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -176.362] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 166.564 Td +/F130_0 9.9626 Tf +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-299 TJm +(may) 17.1556 Tj +65 TJm +(,) 2.49065 Tj +-310 TJm +(of) 8.29885 Tj +-299 TJm +(course,) 28.493 Tj +-311 TJm +(change) 28.2141 Tj +-298 TJm +(critical) 27.6661 Tj +-299 TJm +(error) 19.3573 Tj +-298 TJm +(handling) 34.8691 Tj +-299 TJm +(to) 7.7509 Tj +-298 TJm +(suit) 14.396 Tj +-299 TJm +(your) 18.2614 Tj +-298 TJm +(needs.) 25.1755 Tj +-912 TJm +(As) 11.0684 Tj +-298 TJm +(I) 3.31755 Tj +-299 TJm +(said) 16.0497 Tj +-298 TJm +(abo) 14.386 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e,) 6.91404 Tj +-311 TJm +(critical) 27.6661 Tj +-299 TJm +(errors) 23.2328 Tj +-298 TJm +(indicate) 31.5416 Tj +-299 TJm +(b) 4.9813 Tj +20 TJm +(ugs) 13.8381 Tj +72 154.608 Td +(in) 7.7509 Tj +-263 TJm +(the) 12.1743 Tj +-263 TJm +(library) 26.5603 Tj +-263 TJm +(and) 14.386 Tj +-263 TJm +(should) 26.5703 Tj +-263 TJm +(not) 12.7322 Tj +-263 TJm +(occur) 22.1269 Tj +55 TJm +(.) 2.49065 Tj +-697 TJm +(All) 12.7322 Tj +-263 TJm +("normal") 36.3535 Tj +-263 TJm +(error) 19.3573 Tj +-263 TJm +(situations) 38.1966 Tj +-263 TJm +(are) 12.1643 Tj +-263 TJm +(indicated) 36.5229 Tj +-263 TJm +(via) 12.1743 Tj +-263 TJm +(error) 19.3573 Tj +-263 TJm +(return) 23.7907 Tj +-263 TJm +(codes) 22.6848 Tj +-263 TJm +(from) 19.3673 Tj +-263 TJm +(functions,) 39.5714 Tj +72 142.653 Td +(and) 14.386 Tj +-250 TJm +(can) 13.8281 Tj +-250 TJm +(be) 9.40469 Tj +-250 TJm +(reco) 17.1456 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(ered) 17.1456 Tj +-250 TJm +(from.) 21.8579 Tj +[1 0 0 1 72 142.554] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.898] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -132.656] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 107.965 Td +/F122_0 20.6585 Tf +(3.8.) 34.4584 Tj +-278 TJm +(Making) 71.1685 Tj +-278 TJm +(a) 11.4861 Tj +-278 TJm +(Windo) 63.1117 Tj +15 TJm +(ws) 27.5584 Tj +-278 TJm +(DLL) 40.1601 Tj +[1 0 0 1 72 103.369] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.898] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -93.4708] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 86.112 Td +/F130_0 9.9626 Tf +(Ev) 11.0684 Tj +15 TJm +(erything) 33.2053 Tj +-328 TJm +(related) 27.1082 Tj +-327 TJm +(to) 7.7509 Tj +-328 TJm +(W) 9.40469 Tj +40 TJm +(indo) 17.7135 Tj +25 TJm +(ws) 11.0684 Tj +-328 TJm +(has) 13.2801 Tj +-327 TJm +(been) 18.8094 Tj +-328 TJm +(contrib) 28.224 Tj +20 TJm +(uted) 17.1556 Tj +-328 TJm +(by) 9.9626 Tj +-327 TJm +(Y) 7.193 Tj +110 TJm +(oshioka) 30.9936 Tj +-328 TJm +(Tsuneo) 29.3299 Tj +-328 TJm +(\() 3.31755 Tj +[1 0 0 1 378.139 86.112] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -378.139 -86.112] cm +[1 0 0 1 0 0] Tm +0 0 Td +378.139 86.112 Td +/F134_0 9.9626 Tf +(tsuneo@rr.iij4u.or.jp) 125.529 Tj +[1 0 0 1 503.668 86.112] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -503.668 -86.112] cm +[1 0 0 1 0 0] Tm +0 0 Td +503.668 86.112 Td +/F130_0 9.9626 Tf +(\),) 5.8082 Tj +-347 TJm +(so) 8.85675 Tj +-328 TJm +(you) 14.9439 Tj +72 74.1568 Td +(should) 26.5703 Tj +-250 TJm +(send) 18.2614 Tj +-250 TJm +(your) 18.2614 Tj +-250 TJm +(queries) 28.772 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(him) 15.5018 Tj +-250 TJm +(\(b) 8.29885 Tj +20 TJm +(ut) 7.7509 Tj +-250 TJm +(perhaps) 30.9837 Tj +-250 TJm +(Cc:) 13.8381 Tj +-310 TJm +(me,) 14.6649 Tj +[1 0 0 1 287.958 74.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -287.958 -74.1568] cm +[1 0 0 1 0 0] Tm +0 0 Td +287.958 74.1568 Td +/F134_0 9.9626 Tf +(jseward@bzip.org) 95.641 Tj +[1 0 0 1 383.6 74.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -383.6 -74.1568] cm +[1 0 0 1 0 0] Tm +0 0 Td +383.6 74.1568 Td +/F130_0 9.9626 Tf +(\).) 5.8082 Tj +[1 0 0 1 72 72] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -21.1482] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.9738] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -51.071] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 51.071 Td +/F130_0 9.9626 Tf +(29) 9.9626 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 33 33 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 8.9114] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 76.4979 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -342.569 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +419.067 749.245 Td +/F130_0 9.9626 Tf +(Programming) 54.7943 Tj +-250 TJm +(with) 17.7135 Tj +[1 0 0 1 496.556 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -496.556 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +496.556 749.245 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 544.376 749.245] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -278.305 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -5.0363] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -468 -21.5542] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -720] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F130_0 9.9626 Tf +(My) 13.8381 Tj +-367 TJm +(v) 4.9813 Tj +25 TJm +(ague) 18.8094 Tj +-367 TJm +(understanding) 56.4481 Tj +-367 TJm +(of) 8.29885 Tj +-367 TJm +(what) 19.3673 Tj +-368 TJm +(to) 7.7509 Tj +-367 TJm +(do) 9.9626 Tj +-367 TJm +(is:) 9.41466 Tj +-544 TJm +(using) 21.589 Tj +-367 TJm +(V) 7.193 Tj +60 TJm +(isual) 18.8194 Tj +-367 TJm +(C++) 17.8829 Tj +-367 TJm +(5.0,) 14.9439 Tj +-397 TJm +(open) 19.3673 Tj +-367 TJm +(the) 12.1743 Tj +-367 TJm +(project) 27.6661 Tj +-367 TJm +(\002le) 12.7322 Tj +[1 0 0 1 432.966 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -432.966 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +432.966 710.037 Td +/F134_0 9.9626 Tf +(libbz2.dsp) 59.7756 Tj +[1 0 0 1 492.742 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -492.742 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +492.742 710.037 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-396 TJm +(and) 14.386 Tj +-368 TJm +(b) 4.9813 Tj +20 TJm +(uild.) 17.9925 Tj +72 698.082 Td +(That') 21.579 Tj +55 TJm +(s) 3.87545 Tj +-250 TJm +(all.) 12.4533 Tj +[1 0 0 1 72 697.983] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -688.02] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 676.164 Td +/F130_0 9.9626 Tf +(If) 6.63509 Tj +-284 TJm +(you) 14.9439 Tj +-284 TJm +(can') 17.1456 Tj +18 TJm +(t) 2.7696 Tj +-285 TJm +(open) 19.3673 Tj +-284 TJm +(the) 12.1743 Tj +-284 TJm +(project) 27.6661 Tj +-284 TJm +(\002le) 12.7322 Tj +-284 TJm +(for) 11.6164 Tj +-285 TJm +(some) 21.031 Tj +-284 TJm +(reason,) 28.493 Tj +-293 TJm +(mak) 17.1556 Tj +10 TJm +(e) 4.42339 Tj +-284 TJm +(a) 4.42339 Tj +-284 TJm +(ne) 9.40469 Tj +25 TJm +(w) 7.193 Tj +-284 TJm +(one,) 16.8766 Tj +-293 TJm +(naming) 29.8878 Tj +-284 TJm +(these) 20.4731 Tj +-284 TJm +(\002les:) 19.3773 Tj +[1 0 0 1 424.505 676.164] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -424.505 -676.164] cm +[1 0 0 1 0 0] Tm +0 0 Td +424.505 676.164 Td +/F134_0 9.9626 Tf +(blocksort.c) 65.7532 Tj +[1 0 0 1 490.259 676.164] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -490.259 -676.164] cm +[1 0 0 1 0 0] Tm +0 0 Td +490.259 676.164 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 495.666 676.164] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -495.666 -676.164] cm +[1 0 0 1 0 0] Tm +0 0 Td +495.666 676.164 Td +/F134_0 9.9626 Tf +(bzlib.c) 41.8429 Tj +[1 0 0 1 537.509 676.164] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -537.509 -676.164] cm +[1 0 0 1 0 0] Tm +0 0 Td +537.509 676.164 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 72 664.209] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -664.209] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 664.209 Td +/F134_0 9.9626 Tf +(compress.c) 59.7756 Tj +[1 0 0 1 131.776 664.209] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -131.776 -664.209] cm +[1 0 0 1 0 0] Tm +0 0 Td +131.776 664.209 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 136.436 664.209] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -136.436 -664.209] cm +[1 0 0 1 0 0] Tm +0 0 Td +136.436 664.209 Td +/F134_0 9.9626 Tf +(crctable.c) 59.7756 Tj +[1 0 0 1 196.211 664.209] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -196.211 -664.209] cm +[1 0 0 1 0 0] Tm +0 0 Td +196.211 664.209 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 200.871 664.209] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -200.871 -664.209] cm +[1 0 0 1 0 0] Tm +0 0 Td +200.871 664.209 Td +/F134_0 9.9626 Tf +(decompress.c) 71.7307 Tj +[1 0 0 1 272.602 664.209] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -272.602 -664.209] cm +[1 0 0 1 0 0] Tm +0 0 Td +272.602 664.209 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 277.262 664.209] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -277.262 -664.209] cm +[1 0 0 1 0 0] Tm +0 0 Td +277.262 664.209 Td +/F134_0 9.9626 Tf +(huffman.c) 53.798 Tj +[1 0 0 1 331.06 664.209] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -331.06 -664.209] cm +[1 0 0 1 0 0] Tm +0 0 Td +331.06 664.209 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 335.72 664.209] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -335.72 -664.209] cm +[1 0 0 1 0 0] Tm +0 0 Td +335.72 664.209 Td +/F134_0 9.9626 Tf +(randtable.c) 65.7532 Tj +[1 0 0 1 401.473 664.209] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -401.473 -664.209] cm +[1 0 0 1 0 0] Tm +0 0 Td +403.562 664.209 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 420.037 664.209] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -420.037 -664.209] cm +[1 0 0 1 0 0] Tm +0 0 Td +420.037 664.209 Td +/F134_0 9.9626 Tf +(libbz2.def) 59.7756 Tj +[1 0 0 1 479.812 664.209] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -479.812 -664.209] cm +[1 0 0 1 0 0] Tm +0 0 Td +479.812 664.209 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-593 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-210 TJm +(will) 15.5018 Tj +-209 TJm +(also) 16.0497 Tj +72 652.254 Td +(need) 18.8094 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(name) 21.579 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(header) 26.5503 Tj +-250 TJm +(\002les) 16.6077 Tj +[1 0 0 1 190.415 652.254] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -190.415 -652.254] cm +[1 0 0 1 0 0] Tm +0 0 Td +190.415 652.254 Td +/F134_0 9.9626 Tf +(bzlib.h) 41.8429 Tj +[1 0 0 1 232.258 652.254] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -232.258 -652.254] cm +[1 0 0 1 0 0] Tm +0 0 Td +234.748 652.254 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 251.625 652.254] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -251.625 -652.254] cm +[1 0 0 1 0 0] Tm +0 0 Td +251.625 652.254 Td +/F134_0 9.9626 Tf +(bzlib_private.h) 89.6634 Tj +[1 0 0 1 341.289 652.254] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -341.289 -652.254] cm +[1 0 0 1 0 0] Tm +0 0 Td +341.289 652.254 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 650.72] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -640.757] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 630.336 Td +/F130_0 9.9626 Tf +(If) 6.63509 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(don') 18.2614 Tj +18 TJm +(t) 2.7696 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(VC++,) 27.5665 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(may) 17.1556 Tj +-250 TJm +(need) 18.8094 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(de\002ne) 24.3486 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(proprocessor) 51.4568 Tj +-250 TJm +(symbol) 29.3399 Tj +[1 0 0 1 363.634 630.336] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -363.634 -630.336] cm +[1 0 0 1 0 0] Tm +0 0 Td +363.634 630.336 Td +/F134_0 9.9626 Tf +(_WIN32) 35.8654 Tj +[1 0 0 1 399.5 630.336] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -399.5 -630.336] cm +[1 0 0 1 0 0] Tm +0 0 Td +399.5 630.336 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 628.179] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -618.217] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 608.418 Td +/F130_0 9.9626 Tf +(Finally) 28.234 Tj +65 TJm +(,) 2.49065 Tj +[1 0 0 1 104.568 608.418] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -104.568 -608.418] cm +[1 0 0 1 0 0] Tm +0 0 Td +104.568 608.418 Td +/F134_0 9.9626 Tf +(dlltest.c) 53.798 Tj +[1 0 0 1 158.366 608.418] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -158.366 -608.418] cm +[1 0 0 1 0 0] Tm +0 0 Td +160.856 608.418 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(sample) 28.224 Tj +-250 TJm +(program) 33.7533 Tj +-250 TJm +(using) 21.589 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(DLL.) 21.8579 Tj +-500 TJm +(It) 6.08715 Tj +-250 TJm +(has) 13.2801 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(project) 27.6661 Tj +-250 TJm +(\002le,) 15.2229 Tj +[1 0 0 1 388.58 608.418] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -388.58 -608.418] cm +[1 0 0 1 0 0] Tm +0 0 Td +388.58 608.418 Td +/F134_0 9.9626 Tf +(dlltest.dsp) 65.7532 Tj +[1 0 0 1 454.333 608.418] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -454.333 -608.418] cm +[1 0 0 1 0 0] Tm +0 0 Td +454.333 608.418 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 606.262] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -596.299] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 586.501 Td +/F130_0 9.9626 Tf +(If) 6.63509 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(just) 14.396 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(ant) 12.1743 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(mak) 17.1556 Tj +10 TJm +(e\002le) 17.1556 Tj +-250 TJm +(for) 11.6164 Tj +-250 TJm +(V) 7.193 Tj +60 TJm +(isual) 18.8194 Tj +-250 TJm +(C,) 9.1357 Tj +-250 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(look) 17.7135 Tj +-250 TJm +(at) 7.193 Tj +[1 0 0 1 292.212 586.501] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -292.212 -586.501] cm +[1 0 0 1 0 0] Tm +0 0 Td +292.212 586.501 Td +/F134_0 9.9626 Tf +(makefile.msc) 71.7307 Tj +[1 0 0 1 363.943 586.501] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -363.943 -586.501] cm +[1 0 0 1 0 0] Tm +0 0 Td +363.943 586.501 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 584.344] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -574.381] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 564.583 Td +/F130_0 9.9626 Tf +(Be) 11.0684 Tj +-291 TJm +(a) 4.42339 Tj +15 TJm +(w) 7.193 Tj +10 TJm +(are) 12.1643 Tj +-291 TJm +(that) 14.9439 Tj +-291 TJm +(if) 6.08715 Tj +-291 TJm +(you) 14.9439 Tj +-291 TJm +(compile) 32.0995 Tj +[1 0 0 1 192.069 564.583] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -192.069 -564.583] cm +[1 0 0 1 0 0] Tm +0 0 Td +192.069 564.583 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 221.958 564.583] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -221.958 -564.583] cm +[1 0 0 1 0 0] Tm +0 0 Td +224.857 564.583 Td +/F130_0 9.9626 Tf +(itself) 19.9252 Tj +-291 TJm +(on) 9.9626 Tj +-291 TJm +(W) 9.40469 Tj +40 TJm +(in32,) 20.2042 Tj +-301 TJm +(you) 14.9439 Tj +-291 TJm +(must) 19.3773 Tj +-291 TJm +(set) 11.0684 Tj +[1 0 0 1 346.841 564.583] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -346.841 -564.583] cm +[1 0 0 1 0 0] Tm +0 0 Td +346.841 564.583 Td +/F134_0 9.9626 Tf +(BZ_UNIX) 41.8429 Tj +[1 0 0 1 388.685 564.583] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -388.685 -564.583] cm +[1 0 0 1 0 0] Tm +0 0 Td +391.583 564.583 Td +/F130_0 9.9626 Tf +(to) 7.7509 Tj +-291 TJm +(0) 4.9813 Tj +-291 TJm +(and) 14.386 Tj +[1 0 0 1 427.399 564.583] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -427.399 -564.583] cm +[1 0 0 1 0 0] Tm +0 0 Td +427.399 564.583 Td +/F134_0 9.9626 Tf +(BZ_LCCWIN32) 65.7532 Tj +[1 0 0 1 493.153 564.583] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.153 -564.583] cm +[1 0 0 1 0 0] Tm +0 0 Td +496.052 564.583 Td +/F130_0 9.9626 Tf +(to) 7.7509 Tj +-291 TJm +(1,) 7.47195 Tj +-301 TJm +(in) 7.7509 Tj +-291 TJm +(the) 12.1743 Tj +72 552.628 Td +(\002le) 12.7322 Tj +[1 0 0 1 87.2227 552.628] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -87.2227 -552.628] cm +[1 0 0 1 0 0] Tm +0 0 Td +87.2227 552.628 Td +/F134_0 9.9626 Tf +(bzip2.c) 41.8429 Tj +[1 0 0 1 129.066 552.628] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -129.066 -552.628] cm +[1 0 0 1 0 0] Tm +0 0 Td +129.066 552.628 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-250 TJm +(before) 25.4445 Tj +-250 TJm +(compiling.) 42.899 Tj +-310 TJm +(Otherwise) 40.9463 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(resulting) 34.8691 Tj +-250 TJm +(binary) 25.4544 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(on') 13.2801 Tj +18 TJm +(t) 2.7696 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(ork) 13.2801 Tj +-250 TJm +(correctly) 35.4071 Tj +65 TJm +(.) 2.49065 Tj +[1 0 0 1 72 550.471] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -540.508] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 530.71 Td +/F130_0 9.9626 Tf +(I) 3.31755 Tj +-250 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(en') 12.7222 Tj +18 TJm +(t) 2.7696 Tj +-250 TJm +(tried) 18.2614 Tj +-250 TJm +(an) 9.40469 Tj +15 TJm +(y) 4.9813 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(this) 14.396 Tj +-250 TJm +(stuf) 14.9439 Tj +25 TJm +(f) 3.31755 Tj +-250 TJm +(myself,) 29.6088 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-250 TJm +(it) 5.53921 Tj +-250 TJm +(all) 9.9626 Tj +-250 TJm +(looks) 21.589 Tj +-250 TJm +(plausible.) 38.4656 Tj +[1 0 0 1 72 528.553] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 0 -477.701] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7545] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -50.9514] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 50.9514 Td +/F130_0 9.9626 Tf +(30) 9.9626 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 34 34 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 140.398 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -140.398 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -13.9477] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -21.5542] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -720] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 701.916 Td +/F122_0 24.7902 Tf +(4.) 20.675 Tj +-278 TJm +(Miscellanea) 139.172 Tj +[1 0 0 1 72 701.606] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 0 -9.1347] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -14.1161] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -678.355] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 658.006 Td +/F122_0 17.2154 Tf +(T) 10.5186 Tj +80 TJm +(ab) 20.0904 Tj +10 TJm +(le) 14.3576 Tj +-278 TJm +(of) 16.2513 Tj +-278 TJm +(Contents) 74.5943 Tj +[1 0 0 1 72 649.183] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -11.7401] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -637.443] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 637.443 Td +/F130_0 9.9626 Tf +(4.1.) 14.9439 Tj +-310 TJm +(Limitations) 45.9475 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(compressed) 47.0334 Tj +-250 TJm +(\002le) 12.7322 Tj +-250 TJm +(format) 26.5603 Tj +[1 0 0 1 255.231 637.443] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -260.212 -637.443] cm +[1 0 0 1 0 0] Tm +0 0 Td +269.154 637.443 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 637.443] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -637.443] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 637.443 Td +/F130_0 9.9626 Tf +(31) 9.9626 Tj +[1 0 0 1 516.09 637.443] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7984] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -625.488] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 625.488 Td +/F130_0 9.9626 Tf +(4.2.) 14.9439 Tj +-310 TJm +(Portability) 42.0721 Tj +-250 TJm +(issues) 23.8007 Tj +[1 0 0 1 158.395 625.488] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -163.376 -625.488] cm +[1 0 0 1 0 0] Tm +0 0 Td +172.03 625.488 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 625.488] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -625.488] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 625.488 Td +/F130_0 9.9626 Tf +(32) 9.9626 Tj +[1 0 0 1 516.09 625.488] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7984] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -613.533] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 613.533 Td +/F130_0 9.9626 Tf +(4.3.) 14.9439 Tj +-310 TJm +(Reporting) 39.8504 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ugs) 13.8381 Tj +[1 0 0 1 150.993 613.533] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -155.975 -613.533] cm +[1 0 0 1 0 0] Tm +0 0 Td +166.115 613.533 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 613.533] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -613.533] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 613.533 Td +/F130_0 9.9626 Tf +(32) 9.9626 Tj +[1 0 0 1 516.09 613.533] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7983] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -601.578] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 601.578 Td +/F130_0 9.9626 Tf +(4.4.) 14.9439 Tj +-310 TJm +(Did) 14.9439 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(get) 12.1743 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(right) 18.8194 Tj +-250 TJm +(package?) 37.0609 Tj +[1 0 0 1 212.602 601.578] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 3.0884 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 3.0884 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -218.778 -601.578] cm +[1 0 0 1 0 0] Tm +0 0 Td +229.109 601.578 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 601.578] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -601.578] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 601.578 Td +/F130_0 9.9626 Tf +(33) 9.9626 Tj +[1 0 0 1 516.09 601.578] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.7984] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -589.623] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 589.623 Td +/F130_0 9.9626 Tf +(4.5.) 14.9439 Tj +-310 TJm +(Further) 29.3299 Tj +-250 TJm +(Reading) 33.2053 Tj +[1 0 0 1 155.058 589.623] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4906 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -160.039 -589.623] cm +[1 0 0 1 0 0] Tm +0 0 Td +170.361 589.623 Td +/F147_0 9.9626 Tf +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +-166 TJm +(:) 2.7696 Tj +-167 TJm +(:) 2.7696 Tj +[1 0 0 1 506.127 589.623] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -506.127 -589.623] cm +[1 0 0 1 0 0] Tm +0 0 Td +506.127 589.623 Td +/F130_0 9.9626 Tf +(34) 9.9626 Tj +[1 0 0 1 516.09 589.623] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -444.09 -2.1568] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.1348] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 0 -9.6315] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -568.7] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 558.901 Td +/F130_0 9.9626 Tf +(These) 23.7907 Tj +-250 TJm +(are) 12.1643 Tj +-250 TJm +(just) 14.396 Tj +-250 TJm +(some) 21.031 Tj +-250 TJm +(random) 30.4357 Tj +-250 TJm +(thoughts) 34.3212 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(mine.) 22.4159 Tj +-620 TJm +(Y) 7.193 Tj +110 TJm +(our) 13.2801 Tj +-250 TJm +(mileage) 31.5416 Tj +-250 TJm +(may) 17.1556 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(ary) 12.7222 Tj +65 TJm +(.) 2.49065 Tj +[1 0 0 1 72 556.744] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.6315] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -547.113] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 524.48 Td +/F122_0 20.6585 Tf +(4.1.) 34.4584 Tj +-278 TJm +(Limitations) 110.192 Tj +-278 TJm +(of) 19.5016 Tj +-278 TJm +(the) 30.9877 Tj +-278 TJm +(compressed) 121.699 Tj +-278 TJm +(\002le) 29.8515 Tj +-278 TJm +(f) 6.87928 Tj +20 TJm +(ormat) 57.3893 Tj +[1 0 0 1 72 520.203] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.6315] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -510.572] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 502.893 Td +/F134_0 9.9626 Tf +(bzip2-1.0.X) 65.7532 Tj +[1 0 0 1 137.753 502.893] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -137.753 -502.893] cm +[1 0 0 1 0 0] Tm +0 0 Td +137.753 502.893 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +[1 0 0 1 143.405 502.893] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -143.405 -502.893] cm +[1 0 0 1 0 0] Tm +0 0 Td +143.405 502.893 Td +/F134_0 9.9626 Tf +(0.9.5) 29.8878 Tj +[1 0 0 1 173.293 502.893] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -173.293 -502.893] cm +[1 0 0 1 0 0] Tm +0 0 Td +176.453 502.893 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 194 502.893] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -194 -502.893] cm +[1 0 0 1 0 0] Tm +0 0 Td +194 502.893 Td +/F134_0 9.9626 Tf +(0.9.0) 29.8878 Tj +[1 0 0 1 223.888 502.893] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -223.888 -502.893] cm +[1 0 0 1 0 0] Tm +0 0 Td +227.048 502.893 Td +/F130_0 9.9626 Tf +(use) 13.2801 Tj +-317 TJm +(e) 4.42339 Tj +15 TJm +(xactly) 24.3486 Tj +-317 TJm +(the) 12.1743 Tj +-318 TJm +(same) 20.4731 Tj +-317 TJm +(\002le) 12.7322 Tj +-317 TJm +(format) 26.5603 Tj +-317 TJm +(as) 8.29885 Tj +-318 TJm +(the) 12.1743 Tj +-317 TJm +(original) 30.9936 Tj +-317 TJm +(v) 4.9813 Tj +15 TJm +(ersion,) 26.8392 Tj +[1 0 0 1 455.801 502.893] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -455.801 -502.893] cm +[1 0 0 1 0 0] Tm +0 0 Td +455.801 502.893 Td +/F134_0 9.9626 Tf +(bzip2-0.1) 53.798 Tj +[1 0 0 1 509.599 502.893] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -509.599 -502.893] cm +[1 0 0 1 0 0] Tm +0 0 Td +509.599 502.893 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-1023 TJm +(This) 17.7135 Tj +72 490.938 Td +(decision) 33.2053 Tj +-222 TJm +(w) 7.193 Tj +10 TJm +(as) 8.29885 Tj +-222 TJm +(made) 21.579 Tj +-222 TJm +(in) 7.7509 Tj +-221 TJm +(the) 12.1743 Tj +-222 TJm +(interests) 33.2053 Tj +-222 TJm +(of) 8.29885 Tj +-222 TJm +(stability) 32.1095 Tj +65 TJm +(.) 2.49065 Tj +-601 TJm +(Creating) 34.3112 Tj +-222 TJm +(yet) 12.1743 Tj +-222 TJm +(another) 29.8778 Tj +-222 TJm +(incompatible) 52.0247 Tj +-221 TJm +(compressed) 47.0334 Tj +-222 TJm +(\002le) 12.7322 Tj +-222 TJm +(format) 26.5603 Tj +-222 TJm +(w) 7.193 Tj +10 TJm +(ould) 17.7135 Tj +-222 TJm +(create) 23.7807 Tj +72 478.983 Td +(further) 27.1082 Tj +-250 TJm +(confusion) 39.2925 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(disruption) 40.4083 Tj +-250 TJm +(for) 11.6164 Tj +-250 TJm +(users.) 22.9638 Tj +[1 0 0 1 72 476.826] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.6315] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -467.194] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 457.396 Td +/F130_0 9.9626 Tf +(Ne) 11.6164 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ertheless,) 37.3498 Tj +-234 TJm +(this) 14.396 Tj +-229 TJm +(is) 6.64505 Tj +-230 TJm +(not) 12.7322 Tj +-229 TJm +(a) 4.42339 Tj +-230 TJm +(painless) 32.0995 Tj +-229 TJm +(decision.) 35.696 Tj +-606 TJm +(De) 11.6164 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(elopment) 37.0808 Tj +-230 TJm +(w) 7.193 Tj +10 TJm +(ork) 13.2801 Tj +-230 TJm +(since) 20.4731 Tj +-229 TJm +(the) 12.1743 Tj +-230 TJm +(release) 27.6562 Tj +-229 TJm +(of) 8.29885 Tj +[1 0 0 1 407.317 457.396] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -407.317 -457.396] cm +[1 0 0 1 0 0] Tm +0 0 Td +407.317 457.396 Td +/F134_0 9.9626 Tf +(bzip2-0.1) 53.798 Tj +[1 0 0 1 461.115 457.396] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -461.115 -457.396] cm +[1 0 0 1 0 0] Tm +0 0 Td +463.402 457.396 Td +/F130_0 9.9626 Tf +(in) 7.7509 Tj +-230 TJm +(August) 28.782 Tj +-229 TJm +(1997) 19.9252 Tj +-230 TJm +(has) 13.2801 Tj +72 445.441 Td +(sho) 13.8381 Tj +25 TJm +(wn) 12.1743 Tj +-226 TJm +(comple) 29.3299 Tj +15 TJm +(xities) 21.589 Tj +-226 TJm +(in) 7.7509 Tj +-225 TJm +(the) 12.1743 Tj +-226 TJm +(\002le) 12.7322 Tj +-226 TJm +(format) 26.5603 Tj +-226 TJm +(which) 24.3486 Tj +-226 TJm +(slo) 11.6264 Tj +25 TJm +(w) 7.193 Tj +-225 TJm +(do) 9.9626 Tj +25 TJm +(wn) 12.1743 Tj +-226 TJm +(decompression) 59.7656 Tj +-226 TJm +(and,) 16.8766 Tj +-231 TJm +(in) 7.7509 Tj +-226 TJm +(retrospect,) 41.7732 Tj +-230 TJm +(are) 12.1643 Tj +-226 TJm +(unnecessary) 48.6872 Tj +65 TJm +(.) 2.49065 Tj +-604 TJm +(These) 23.7907 Tj +-226 TJm +(are:) 14.9339 Tj +[1 0 0 1 72 443.284] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -29.0613] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.9739 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -78.9739 -414.222] cm +[1 0 0 1 0 0] Tm +0 0 Td +78.9739 414.222 Td +/F130_0 9.9626 Tf +(\225) 3.48691 Tj +[1 0 0 1 82.4608 414.222] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 1.9925 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -86.944 -414.222] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 414.222 Td +/F130_0 9.9626 Tf +(The) 15.4918 Tj +-265 TJm +(run-length) 41.5042 Tj +-266 TJm +(encoder) 31.5316 Tj +40 TJm +(,) 2.49065 Tj +-269 TJm +(which) 24.3486 Tj +-265 TJm +(is) 6.64505 Tj +-265 TJm +(the) 12.1743 Tj +-266 TJm +(\002rst) 15.5018 Tj +-265 TJm +(of) 8.29885 Tj +-265 TJm +(the) 12.1743 Tj +-266 TJm +(compression) 50.3609 Tj +-265 TJm +(transformations,) 65.0259 Tj +-269 TJm +(is) 6.64505 Tj +-265 TJm +(entirely) 30.4357 Tj +-266 TJm +(irrele) 21.0211 Tj +25 TJm +(v) 4.9813 Tj +25 TJm +(ant.) 14.6649 Tj +-711 TJm +(The) 15.4918 Tj +-266 TJm +(original) 30.9936 Tj +86.944 402.267 Td +(purpose) 31.5416 Tj +-301 TJm +(w) 7.193 Tj +10 TJm +(as) 8.29885 Tj +-301 TJm +(to) 7.7509 Tj +-301 TJm +(protect) 27.6661 Tj +-301 TJm +(the) 12.1743 Tj +-301 TJm +(sorting) 27.6761 Tj +-301 TJm +(algorithm) 38.7446 Tj +-301 TJm +(from) 19.3673 Tj +-301 TJm +(the) 12.1743 Tj +-301 TJm +(v) 4.9813 Tj +15 TJm +(ery) 12.7222 Tj +-301 TJm +(w) 7.193 Tj +10 TJm +(orst) 14.9439 Tj +-301 TJm +(case) 17.1456 Tj +-301 TJm +(input:) 23.2527 Tj +-412 TJm +(a) 4.42339 Tj +-301 TJm +(string) 22.6948 Tj +-301 TJm +(of) 8.29885 Tj +-301 TJm +(repeated) 33.7433 Tj +-301 TJm +(symbols.) 35.706 Tj +-927 TJm +(But) 14.396 Tj +86.944 390.312 Td +(algorithm) 38.7446 Tj +-274 TJm +(steps) 19.9252 Tj +-275 TJm +(Q6a) 16.5977 Tj +-274 TJm +(and) 14.386 Tj +-274 TJm +(Q6b) 17.1556 Tj +-275 TJm +(in) 7.7509 Tj +-274 TJm +(the) 12.1743 Tj +-274 TJm +(original) 30.9936 Tj +-275 TJm +(Burro) 23.2427 Tj +25 TJm +(ws-Wheel) 40.3884 Tj +1 TJm +(er) 7.74094 Tj +-275 TJm +(technical) 35.965 Tj +-274 TJm +(report) 23.7907 Tj +-274 TJm +(\(SRC-124\)) 43.7259 Tj +-275 TJm +(sho) 13.8381 Tj +25 TJm +(w) 7.193 Tj +-274 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-274 TJm +(repeats) 28.2141 Tj +-275 TJm +(can) 13.8281 Tj +86.944 378.357 Td +(be) 9.40469 Tj +-250 TJm +(handled) 31.5416 Tj +-250 TJm +(without) 30.4457 Tj +-250 TJm +(dif) 11.0684 Tj +25 TJm +(\002culty) 25.4644 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(block) 22.1369 Tj +-250 TJm +(sorting.) 30.1668 Tj +[1 0 0 1 269.617 378.357] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -197.617 -21.5867] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.9739 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -78.9739 -356.77] cm +[1 0 0 1 0 0] Tm +0 0 Td +78.9739 356.77 Td +/F130_0 9.9626 Tf +(\225) 3.48691 Tj +[1 0 0 1 82.4608 356.77] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 1.9925 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -86.944 -356.77] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 356.77 Td +/F130_0 9.9626 Tf +(The) 15.4918 Tj +-293 TJm +(randomisation) 57.006 Tj +-293 TJm +(mechanism) 45.3796 Tj +-293 TJm +(doesn') 26.5603 Tj +18 TJm +(t) 2.7696 Tj +-294 TJm +(really) 22.6848 Tj +-293 TJm +(need) 18.8094 Tj +-293 TJm +(to) 7.7509 Tj +-293 TJm +(be) 9.40469 Tj +-293 TJm +(there.) 22.4059 Tj +-879 TJm +(Udi) 14.9439 Tj +-294 TJm +(Manber) 30.9837 Tj +-293 TJm +(and) 14.386 Tj +-293 TJm +(Gene) 21.0211 Tj +-293 TJm +(Myers) 25.4544 Tj +-293 TJm +(published) 38.7446 Tj +-294 TJm +(a) 4.42339 Tj +-293 TJm +(suf) 12.1743 Tj +25 TJm +(\002x) 10.5205 Tj +86.944 344.815 Td +(array) 20.4632 Tj +-238 TJm +(construction) 49.2551 Tj +-239 TJm +(algorithm) 38.7446 Tj +-238 TJm +(a) 4.42339 Tj +-238 TJm +(fe) 7.74094 Tj +25 TJm +(w) 7.193 Tj +-239 TJm +(years) 21.0211 Tj +-238 TJm +(back,) 21.3 Tj +-241 TJm +(which) 24.3486 Tj +-238 TJm +(can) 13.8281 Tj +-238 TJm +(be) 9.40469 Tj +-239 TJm +(emplo) 24.9065 Tj +10 TJm +(yed) 14.386 Tj +-238 TJm +(to) 7.7509 Tj +-238 TJm +(sort) 14.9439 Tj +-239 TJm +(an) 9.40469 Tj +15 TJm +(y) 4.9813 Tj +-238 TJm +(block,) 24.6275 Tj +-241 TJm +(no) 9.9626 Tj +-238 TJm +(matter) 25.4544 Tj +-238 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-239 TJm +(repetiti) 28.224 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e,) 6.91404 Tj +86.944 332.86 Td +(in) 7.7509 Tj +-229 TJm +(O\(N) 17.7035 Tj +-230 TJm +(log) 12.7322 Tj +-229 TJm +(N\)) 10.5105 Tj +-230 TJm +(time.) 20.2042 Tj +-606 TJm +(Subsequent) 45.9375 Tj +-230 TJm +(w) 7.193 Tj +10 TJm +(ork) 13.2801 Tj +-229 TJm +(by) 9.9626 Tj +-230 TJm +(K) 7.193 Tj +15 TJm +(unihik) 25.4644 Tj +10 TJm +(o) 4.9813 Tj +-229 TJm +(Sadakane) 38.1767 Tj +-229 TJm +(has) 13.2801 Tj +-230 TJm +(produced) 37.0708 Tj +-229 TJm +(a) 4.42339 Tj +-230 TJm +(deri) 15.4918 Tj +25 TJm +(v) 4.9813 Tj +25 TJm +(ati) 9.9626 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-229 TJm +(O\(N) 17.7035 Tj +-230 TJm +(\(log) 16.0497 Tj +-229 TJm +(N\)^2\)) 23.4818 Tj +-230 TJm +(algorithm) 38.7446 Tj +86.944 320.905 Td +(which) 24.3486 Tj +-250 TJm +(usually) 28.782 Tj +-250 TJm +(outperforms) 48.6972 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(Manber) 30.9837 Tj +20 TJm +(-Myers) 28.772 Tj +-250 TJm +(algorithm.) 41.2352 Tj +[1 0 0 1 314.189 320.905] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -242.189 -11.7883] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -309.116] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 299.318 Td +/F130_0 9.9626 Tf +(I) 3.31755 Tj +-248 TJm +(could) 22.1369 Tj +-248 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-248 TJm +(changed) 33.1954 Tj +-248 TJm +(to) 7.7509 Tj +-248 TJm +(Sadakane') 41.4942 Tj +55 TJm +(s) 3.87545 Tj +-248 TJm +(algorithm,) 41.2352 Tj +-249 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-248 TJm +(I) 3.31755 Tj +-248 TJm +(\002nd) 15.5018 Tj +-248 TJm +(it) 5.53921 Tj +-248 TJm +(to) 7.7509 Tj +-248 TJm +(be) 9.40469 Tj +-248 TJm +(slo) 11.6264 Tj +25 TJm +(wer) 14.9339 Tj +-248 TJm +(than) 17.1556 Tj +[1 0 0 1 392.444 299.318] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -392.444 -299.318] cm +[1 0 0 1 0 0] Tm +0 0 Td +392.444 299.318 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 422.332 299.318] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -422.332 -299.318] cm +[1 0 0 1 0 0] Tm +0 0 Td +422.332 299.318 Td +/F130_0 9.9626 Tf +(') 3.31755 Tj +55 TJm +(s) 3.87545 Tj +-248 TJm +(e) 4.42339 Tj +15 TJm +(xisting) 27.1282 Tj +-248 TJm +(algorithm) 38.7446 Tj +-248 TJm +(for) 11.6164 Tj +-248 TJm +(most) 19.3773 Tj +86.944 287.363 Td +(inputs,) 26.8492 Tj +-370 TJm +(and) 14.386 Tj +-345 TJm +(the) 12.1743 Tj +-346 TJm +(randomisation) 57.006 Tj +-346 TJm +(mechanism) 45.3796 Tj +-345 TJm +(protects) 31.5416 Tj +-346 TJm +(adequately) 43.158 Tj +-345 TJm +(ag) 9.40469 Tj +5 TJm +(ainst) 18.8194 Tj +-346 TJm +(bad) 14.386 Tj +-346 TJm +(cases.) 23.5117 Tj +-1194 TJm +(I) 3.31755 Tj +-345 TJm +(didn') 21.031 Tj +18 TJm +(t) 2.7696 Tj +-346 TJm +(think) 20.4831 Tj +-346 TJm +(it) 5.53921 Tj +-345 TJm +(w) 7.193 Tj +10 TJm +(as) 8.29885 Tj +-346 TJm +(a) 4.42339 Tj +-346 TJm +(good) 19.9252 Tj +86.944 275.408 Td +(tradeof) 28.2141 Tj +25 TJm +(f) 3.31755 Tj +-262 TJm +(to) 7.7509 Tj +-261 TJm +(mak) 17.1556 Tj +10 TJm +(e.) 6.91404 Tj +-690 TJm +(P) 5.53921 Tj +15 TJm +(artly) 18.2614 Tj +-262 TJm +(this) 14.396 Tj +-261 TJm +(is) 6.64505 Tj +-262 TJm +(due) 14.386 Tj +-261 TJm +(to) 7.7509 Tj +-262 TJm +(the) 12.1743 Tj +-262 TJm +(f) 3.31755 Tj +10 TJm +(act) 11.6164 Tj +-261 TJm +(that) 14.9439 Tj +-262 TJm +(I) 3.31755 Tj +-261 TJm +(w) 7.193 Tj +10 TJm +(as) 8.29885 Tj +-262 TJm +(not) 12.7322 Tj +-262 TJm +(\003ooded) 29.8878 Tj +-261 TJm +(with) 17.7135 Tj +-262 TJm +(email) 22.1369 Tj +-261 TJm +(complaints) 43.7259 Tj +-262 TJm +(about) 22.1369 Tj +[1 0 0 1 479.557 275.408] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -479.557 -275.408] cm +[1 0 0 1 0 0] Tm +0 0 Td +479.557 275.408 Td +/F134_0 9.9626 Tf +(bzip2-0.1) 53.798 Tj +[1 0 0 1 533.355 275.408] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -533.355 -275.408] cm +[1 0 0 1 0 0] Tm +0 0 Td +533.355 275.408 Td +/F130_0 9.9626 Tf +(') 3.31755 Tj +55 TJm +(s) 3.87545 Tj +86.944 263.453 Td +(performance) 50.341 Tj +-250 TJm +(on) 9.9626 Tj +-250 TJm +(repetiti) 28.224 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-250 TJm +(data,) 19.0883 Tj +-250 TJm +(so) 8.85675 Tj +-250 TJm +(perhaps) 30.9837 Tj +-250 TJm +(it) 5.53921 Tj +-250 TJm +(isn') 14.9439 Tj +18 TJm +(t) 2.7696 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(problem) 33.2053 Tj +-250 TJm +(for) 11.6164 Tj +-250 TJm +(real) 14.9339 Tj +-250 TJm +(inputs.) 26.8492 Tj +[1 0 0 1 72 261.296] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.6315] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -251.664] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 241.866 Td +/F130_0 9.9626 Tf +(Probably) 35.9749 Tj +-289 TJm +(the) 12.1743 Tj +-288 TJm +(best) 16.0497 Tj +-289 TJm +(long-term) 39.2925 Tj +-289 TJm +(solution,) 34.6001 Tj +-298 TJm +(and) 14.386 Tj +-289 TJm +(the) 12.1743 Tj +-289 TJm +(one) 14.386 Tj +-288 TJm +(I) 3.31755 Tj +-289 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-289 TJm +(incorporated) 50.351 Tj +-288 TJm +(into) 15.5018 Tj +-289 TJm +(0.9.5) 19.9252 Tj +-289 TJm +(and) 14.386 Tj +-288 TJm +(abo) 14.386 Tj +15 TJm +(v) 4.9813 Tj +14 TJm +(e,) 6.91404 Tj +-298 TJm +(is) 6.64505 Tj +-289 TJm +(to) 7.7509 Tj +-288 TJm +(use) 13.2801 Tj +-289 TJm +(the) 12.1743 Tj +-289 TJm +(e) 4.42339 Tj +15 TJm +(xisting) 27.1282 Tj +86.944 229.911 Td +(sorting) 27.6761 Tj +-451 TJm +(algorithm) 38.7446 Tj +-452 TJm +(initially) 31.0036 Tj +65 TJm +(,) 2.49065 Tj +-501 TJm +(and) 14.386 Tj +-452 TJm +(f) 3.31755 Tj +10 TJm +(all) 9.9626 Tj +-451 TJm +(back) 18.8094 Tj +-452 TJm +(to) 7.7509 Tj +-451 TJm +(a) 4.42339 Tj +-451 TJm +(O\(N) 17.7035 Tj +-452 TJm +(\(log) 16.0497 Tj +-451 TJm +(N\)^2\)) 23.4818 Tj +-451 TJm +(algorithm) 38.7446 Tj +-452 TJm +(if) 6.08715 Tj +-451 TJm +(the) 12.1743 Tj +-452 TJm +(standard) 33.7533 Tj +-451 TJm +(algorithm) 38.7446 Tj +-451 TJm +(gets) 16.0497 Tj +-452 TJm +(into) 15.5018 Tj +86.944 217.956 Td +(dif) 11.0684 Tj +25 TJm +(\002culties.) 34.0422 Tj +[1 0 0 1 72 217.856] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -21.4871] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.9739 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -78.9739 -196.369] cm +[1 0 0 1 0 0] Tm +0 0 Td +78.9739 196.369 Td +/F130_0 9.9626 Tf +(\225) 3.48691 Tj +[1 0 0 1 82.4608 196.369] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 1.9925 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -86.944 -196.369] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 196.369 Td +/F130_0 9.9626 Tf +(The) 15.4918 Tj +-299 TJm +(compressed) 47.0334 Tj +-299 TJm +(\002le) 12.7322 Tj +-299 TJm +(format) 26.5603 Tj +-299 TJm +(w) 7.193 Tj +10 TJm +(as) 8.29885 Tj +-300 TJm +(ne) 9.40469 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.74094 Tj +-299 TJm +(designed) 35.417 Tj +-299 TJm +(to) 7.7509 Tj +-299 TJm +(be) 9.40469 Tj +-299 TJm +(handled) 31.5416 Tj +-299 TJm +(by) 9.9626 Tj +-299 TJm +(a) 4.42339 Tj +-299 TJm +(library) 26.5603 Tj +65 TJm +(,) 2.49065 Tj +-312 TJm +(and) 14.386 Tj +-299 TJm +(I) 3.31755 Tj +-299 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-299 TJm +(had) 14.386 Tj +-299 TJm +(to) 7.7509 Tj +-299 TJm +(jump) 20.4831 Tj +-300 TJm +(though) 27.6761 Tj +-299 TJm +(some) 21.031 Tj +86.944 184.414 Td +(hoops) 23.8007 Tj +-278 TJm +(to) 7.7509 Tj +-277 TJm +(produce) 32.0895 Tj +-278 TJm +(an) 9.40469 Tj +-278 TJm +(ef) 7.74094 Tj +25 TJm +(\002cient) 24.9065 Tj +-277 TJm +(implementation) 62.5452 Tj +-278 TJm +(of) 8.29885 Tj +-278 TJm +(decompression.) 62.2563 Tj +-786 TJm +(It') 9.40469 Tj +55 TJm +(s) 3.87545 Tj +-278 TJm +(a) 4.42339 Tj +-277 TJm +(bit) 10.5205 Tj +-278 TJm +(hairy) 20.4731 Tj +65 TJm +(.) 2.49065 Tj +-786 TJm +(T) 6.08715 Tj +35 TJm +(ry) 8.29885 Tj +-278 TJm +(passing) 29.8878 Tj +[1 0 0 1 468.269 184.414] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468.269 -184.414] cm +[1 0 0 1 0 0] Tm +0 0 Td +468.269 184.414 Td +/F134_0 9.9626 Tf +(decompress.c) 71.7307 Tj +[1 0 0 1 540 184.414] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -540 -184.414] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 172.459 Td +/F130_0 9.9626 Tf +(through) 30.9936 Tj +-268 TJm +(the) 12.1743 Tj +-268 TJm +(C) 6.64505 Tj +-268 TJm +(preprocessor) 50.8989 Tj +-269 TJm +(and) 14.386 Tj +-268 TJm +(you') 18.2614 Tj +10 TJm +(ll) 5.53921 Tj +-268 TJm +(see) 12.7222 Tj +-268 TJm +(what) 19.3673 Tj +-268 TJm +(I) 3.31755 Tj +-268 TJm +(mean.) 24.0696 Tj +-729 TJm +(Much) 23.2427 Tj +-268 TJm +(of) 8.29885 Tj +-269 TJm +(this) 14.396 Tj +-268 TJm +(comple) 29.3299 Tj +15 TJm +(xity) 15.5018 Tj +-268 TJm +(could) 22.1369 Tj +-268 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-268 TJm +(been) 18.8094 Tj +-268 TJm +(a) 4.42339 Tj +20 TJm +(v) 4.9813 Tj +20 TJm +(oided) 22.1369 Tj +-269 TJm +(if) 6.08715 Tj +-268 TJm +(the) 12.1743 Tj +86.944 160.503 Td +(compressed) 47.0334 Tj +-250 TJm +(size) 15.4918 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(each) 18.2515 Tj +-250 TJm +(block) 22.1369 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(as) 8.29885 Tj +-250 TJm +(recorded) 34.8492 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(data) 16.5977 Tj +-250 TJm +(stream.) 29.0509 Tj +[1 0 0 1 368.754 160.503] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -296.754 -21.5867] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.9739 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -78.9739 -138.917] cm +[1 0 0 1 0 0] Tm +0 0 Td +78.9739 138.917 Td +/F130_0 9.9626 Tf +(\225) 3.48691 Tj +[1 0 0 1 82.4608 138.917] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 1.9925 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -86.944 -138.917] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 138.917 Td +/F130_0 9.9626 Tf +(An) 12.1743 Tj +-250 TJm +(Adler) 22.6848 Tj +20 TJm +(-32) 13.2801 Tj +-250 TJm +(checksum,) 42.3311 Tj +-250 TJm +(rather) 23.2328 Tj +-250 TJm +(than) 17.1556 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(CRC32) 29.8978 Tj +-250 TJm +(checksum,) 42.3311 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(ould) 17.7135 Tj +-250 TJm +(be) 9.40469 Tj +-250 TJm +(f) 3.31755 Tj +10 TJm +(aster) 18.8094 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(compute.) 36.8018 Tj +[1 0 0 1 424.934 138.917] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -352.934 -11.7883] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -127.128] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 117.33 Td +/F130_0 9.9626 Tf +(It) 6.08715 Tj +-349 TJm +(w) 7.193 Tj +10 TJm +(ould) 17.7135 Tj +-349 TJm +(be) 9.40469 Tj +-349 TJm +(f) 3.31755 Tj +10 TJm +(air) 10.5105 Tj +-348 TJm +(to) 7.7509 Tj +-349 TJm +(say) 13.2801 Tj +-349 TJm +(that) 14.9439 Tj +-349 TJm +(the) 12.1743 Tj +[1 0 0 1 201.979 117.33] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -201.979 -117.33] cm +[1 0 0 1 0 0] Tm +0 0 Td +201.979 117.33 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 231.867 117.33] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -231.867 -117.33] cm +[1 0 0 1 0 0] Tm +0 0 Td +235.342 117.33 Td +/F130_0 9.9626 Tf +(format) 26.5603 Tj +-349 TJm +(w) 7.193 Tj +10 TJm +(as) 8.29885 Tj +-349 TJm +(frozen) 25.4445 Tj +-348 TJm +(before) 25.4445 Tj +-349 TJm +(I) 3.31755 Tj +-349 TJm +(properly) 33.7533 Tj +-349 TJm +(and) 14.386 Tj +-349 TJm +(fully) 18.8194 Tj +-349 TJm +(understood) 44.2738 Tj +-348 TJm +(the) 12.1743 Tj +-349 TJm +(performance) 50.341 Tj +72 105.375 Td +(consequences) 54.7744 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(doing) 22.6948 Tj +-250 TJm +(so.) 11.3474 Tj +[1 0 0 1 72 103.218] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.6315] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -93.5867] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 83.7883 Td +/F130_0 9.9626 Tf +(Impro) 24.3486 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(ements) 28.224 Tj +-250 TJm +(which) 24.3486 Tj +-250 TJm +(I) 3.31755 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(as) 8.29885 Tj +-250 TJm +(able) 16.5977 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(incorporate) 45.3697 Tj +-250 TJm +(into) 15.5018 Tj +-250 TJm +(0.9.0,) 22.4159 Tj +-250 TJm +(despite) 28.224 Tj +-250 TJm +(using) 21.589 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(same) 20.4731 Tj +-250 TJm +(\002le) 12.7322 Tj +-250 TJm +(format,) 29.0509 Tj +-250 TJm +(are:) 14.9339 Tj +[1 0 0 1 72 81.6315] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -30.7796] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -50.9514] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 50.9514 Td +/F130_0 9.9626 Tf +(31) 9.9626 Tj +[1 0 0 1 453.269 50.8519] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 35 35 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 116.328 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -382.4 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +498.728 749.245 Td +/F130_0 9.9626 Tf +(Miscellanea) 48.1393 Tj +[1 0 0 1 266.071 749.146] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -7.0936] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -31.5168] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.9739 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -78.9739 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +78.9739 710.037 Td +/F130_0 9.9626 Tf +(\225) 3.48691 Tj +[1 0 0 1 82.4608 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 1.9925 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -86.944 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 710.037 Td +/F130_0 9.9626 Tf +(Single) 25.4644 Tj +-202 TJm +(array) 20.4632 Tj +-201 TJm +(implementation) 62.5452 Tj +-202 TJm +(of) 8.29885 Tj +-202 TJm +(the) 12.1743 Tj +-201 TJm +(in) 7.7509 Tj +40 TJm +(v) 4.9813 Tj +15 TJm +(erse) 16.0398 Tj +-202 TJm +(BWT) 22.1369 Tj +74 TJm +(.) 2.49065 Tj +-403 TJm +(This) 17.7135 Tj +-202 TJm +(signi\002cantly) 49.2651 Tj +-201 TJm +(speeds) 26.5603 Tj +-202 TJm +(up) 9.9626 Tj +-202 TJm +(decompression,) 62.2563 Tj +-211 TJm +(presumably) 46.4855 Tj +-202 TJm +(because) 31.5316 Tj +86.944 698.082 Td +(it) 5.53921 Tj +-250 TJm +(reduces) 30.4258 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(number) 30.4357 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(cache) 22.6749 Tj +-250 TJm +(misses.) 29.0609 Tj +[1 0 0 1 240.496 698.082] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -168.496 -21.9178] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.9739 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -78.9739 -676.164] cm +[1 0 0 1 0 0] Tm +0 0 Td +78.9739 676.164 Td +/F130_0 9.9626 Tf +(\225) 3.48691 Tj +[1 0 0 1 82.4608 676.164] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 1.9925 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -86.944 -676.164] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 676.164 Td +/F130_0 9.9626 Tf +(F) 5.53921 Tj +15 TJm +(aster) 18.8094 Tj +-314 TJm +(in) 7.7509 Tj +40 TJm +(v) 4.9813 Tj +15 TJm +(erse) 16.0398 Tj +-315 TJm +(MTF) 20.4831 Tj +-314 TJm +(transform) 38.7346 Tj +-315 TJm +(for) 11.6164 Tj +-314 TJm +(lar) 10.5105 Tj +18 TJm +(ge) 9.40469 Tj +-315 TJm +(MTF) 20.4831 Tj +-314 TJm +(v) 4.9813 Tj +25 TJm +(alues.) 22.9638 Tj +-504 TJm +(The) 15.4918 Tj +-314 TJm +(ne) 9.40469 Tj +25 TJm +(w) 7.193 Tj +-314 TJm +(implementation) 62.5452 Tj +-315 TJm +(is) 6.64505 Tj +-314 TJm +(based) 22.6848 Tj +-315 TJm +(on) 9.9626 Tj +-314 TJm +(the) 12.1743 Tj +-315 TJm +(notion) 25.4644 Tj +-314 TJm +(of) 8.29885 Tj +-315 TJm +(sliding) 27.1282 Tj +86.944 664.209 Td +(blocks) 26.0123 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(v) 4.9813 Tj +25 TJm +(alues.) 22.9638 Tj +[1 0 0 1 153.932 664.209] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -81.9321 -21.9178] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.9739 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -78.9739 -642.291] cm +[1 0 0 1 0 0] Tm +0 0 Td +78.9739 642.291 Td +/F130_0 9.9626 Tf +(\225) 3.48691 Tj +[1 0 0 1 82.4608 642.291] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 1.9925 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -86.944 -642.291] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 642.291 Td +/F134_0 9.9626 Tf +(bzip2-0.9.0) 65.7532 Tj +[1 0 0 1 152.697 642.291] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -152.697 -642.291] cm +[1 0 0 1 0 0] Tm +0 0 Td +155.412 642.291 Td +/F130_0 9.9626 Tf +(no) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-272 TJm +(reads) 21.0211 Tj +-273 TJm +(and) 14.386 Tj +-272 TJm +(writes) 24.3486 Tj +-273 TJm +(\002les) 16.6077 Tj +-272 TJm +(with) 17.7135 Tj +[1 0 0 1 282.68 642.291] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -282.68 -642.291] cm +[1 0 0 1 0 0] Tm +0 0 Td +282.68 642.291 Td +/F134_0 9.9626 Tf +(fread) 29.8878 Tj +[1 0 0 1 312.568 642.291] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -312.568 -642.291] cm +[1 0 0 1 0 0] Tm +0 0 Td +315.282 642.291 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 332.383 642.291] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -332.383 -642.291] cm +[1 0 0 1 0 0] Tm +0 0 Td +332.383 642.291 Td +/F134_0 9.9626 Tf +(fwrite) 35.8654 Tj +[1 0 0 1 368.248 642.291] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -368.248 -642.291] cm +[1 0 0 1 0 0] Tm +0 0 Td +368.248 642.291 Td +/F130_0 9.9626 Tf +(;) 2.7696 Tj +-284 TJm +(v) 4.9813 Tj +15 TJm +(ersion) 24.3486 Tj +-272 TJm +(0.1) 12.4533 Tj +-273 TJm +(used) 18.2614 Tj +[1 0 0 1 441.882 642.291] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -441.882 -642.291] cm +[1 0 0 1 0 0] Tm +0 0 Td +441.882 642.291 Td +/F134_0 9.9626 Tf +(putc) 23.9102 Tj +[1 0 0 1 465.792 642.291] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -465.792 -642.291] cm +[1 0 0 1 0 0] Tm +0 0 Td +468.507 642.291 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 485.607 642.291] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -485.607 -642.291] cm +[1 0 0 1 0 0] Tm +0 0 Td +485.607 642.291 Td +/F134_0 9.9626 Tf +(getc) 23.9102 Tj +[1 0 0 1 509.517 642.291] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -509.517 -642.291] cm +[1 0 0 1 0 0] Tm +0 0 Td +509.517 642.291 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-755 TJm +(Duh!) 20.4731 Tj +86.944 630.336 Td +(W) 9.40469 Tj +80 TJm +(ell,) 12.4533 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(li) 5.53921 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(learn.) 22.4059 Tj +[1 0 0 1 184.248 630.336] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -112.248 -12.1195] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -618.217] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 608.418 Td +/F130_0 9.9626 Tf +(Further) 29.3299 Tj +-304 TJm +(ahead,) 25.7234 Tj +-318 TJm +(it) 5.53921 Tj +-305 TJm +(w) 7.193 Tj +10 TJm +(ould) 17.7135 Tj +-304 TJm +(be) 9.40469 Tj +-305 TJm +(nice) 16.5977 Tj +-304 TJm +(to) 7.7509 Tj +-305 TJm +(be) 9.40469 Tj +-304 TJm +(able) 16.5977 Tj +-304 TJm +(to) 7.7509 Tj +-305 TJm +(do) 9.9626 Tj +-304 TJm +(random) 30.4357 Tj +-305 TJm +(access) 25.4445 Tj +-304 TJm +(into) 15.5018 Tj +-305 TJm +(\002les.) 19.0983 Tj +-946 TJm +(This) 17.7135 Tj +-305 TJm +(will) 15.5018 Tj +-304 TJm +(require) 28.2141 Tj +-304 TJm +(some) 21.031 Tj +-305 TJm +(careful) 27.6562 Tj +-304 TJm +(design) 26.0123 Tj +-305 TJm +(of) 8.29885 Tj +72 596.463 Td +(compressed) 47.0334 Tj +-250 TJm +(\002le) 12.7322 Tj +-250 TJm +(formats.) 32.9264 Tj +[1 0 0 1 72 594.306] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -584.344] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 561.71 Td +/F122_0 20.6585 Tf +(4.2.) 34.4584 Tj +-278 TJm +(P) 13.7792 Tj +40 TJm +(or) 20.6585 Tj +-20 TJm +(tability) 66.5823 Tj +-278 TJm +(issues) 64.3099 Tj +[1 0 0 1 72 557.434] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -547.472] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 539.793 Td +/F130_0 9.9626 Tf +(After) 21.0211 Tj +-250 TJm +(some) 21.031 Tj +-250 TJm +(consideration,) 56.1691 Tj +-250 TJm +(I) 3.31755 Tj +-250 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-250 TJm +(decided) 30.9837 Tj +-250 TJm +(not) 12.7322 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(use) 13.2801 Tj +-250 TJm +(GNU) 21.579 Tj +[1 0 0 1 303.231 539.793] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -303.231 -539.793] cm +[1 0 0 1 0 0] Tm +0 0 Td +303.231 539.793 Td +/F134_0 9.9626 Tf +(autoconf) 47.8205 Tj +[1 0 0 1 351.052 539.793] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -351.052 -539.793] cm +[1 0 0 1 0 0] Tm +0 0 Td +353.542 539.793 Td +/F130_0 9.9626 Tf +(to) 7.7509 Tj +-250 TJm +(con\002gure) 37.6287 Tj +-250 TJm +(0.9.5) 19.9252 Tj +-250 TJm +(or) 8.29885 Tj +-250 TJm +(1.0.) 14.9439 Tj +[1 0 0 1 72 537.636] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -527.673] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 517.875 Td +/F134_0 9.9626 Tf +(autoconf) 47.8205 Tj +[1 0 0 1 119.821 517.875] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -119.821 -517.875] cm +[1 0 0 1 0 0] Tm +0 0 Td +119.821 517.875 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-502 TJm +(admirable) 39.8404 Tj +-452 TJm +(and) 14.386 Tj +-452 TJm +(w) 7.193 Tj +10 TJm +(onderful) 33.7533 Tj +-452 TJm +(though) 27.6761 Tj +-452 TJm +(it) 5.53921 Tj +-452 TJm +(is,) 9.1357 Tj +-502 TJm +(mainly) 27.6761 Tj +-452 TJm +(assists) 25.4644 Tj +-452 TJm +(with) 17.7135 Tj +-452 TJm +(portability) 41.5142 Tj +-452 TJm +(problems) 37.0808 Tj +-452 TJm +(between) 33.1954 Tj +-452 TJm +(Unix-lik) 33.7633 Tj +10 TJm +(e) 4.42339 Tj +72 505.92 Td +(platforms.) 40.6773 Tj +-1398 TJm +(But) 14.396 Tj +[1 0 0 1 144.784 505.92] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -144.784 -505.92] cm +[1 0 0 1 0 0] Tm +0 0 Td +144.784 505.92 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 174.672 505.92] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -174.672 -505.92] cm +[1 0 0 1 0 0] Tm +0 0 Td +178.455 505.92 Td +/F130_0 9.9626 Tf +(doesn') 26.5603 Tj +18 TJm +(t) 2.7696 Tj +-380 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-379 TJm +(much) 22.1369 Tj +-380 TJm +(in) 7.7509 Tj +-380 TJm +(the) 12.1743 Tj +-379 TJm +(w) 7.193 Tj +10 TJm +(ay) 9.40469 Tj +-380 TJm +(of) 8.29885 Tj +-380 TJm +(portability) 41.5142 Tj +-379 TJm +(problems) 37.0808 Tj +-380 TJm +(on) 9.9626 Tj +-380 TJm +(Unix;) 22.6948 Tj +-444 TJm +(most) 19.3773 Tj +-380 TJm +(of) 8.29885 Tj +-380 TJm +(the) 12.1743 Tj +-379 TJm +(dif) 11.0684 Tj +25 TJm +(\002culties) 31.5516 Tj +72 493.964 Td +(appear) 26.5503 Tj +-297 TJm +(when) 21.579 Tj +-296 TJm +(po) 9.9626 Tj +-1 TJm +(r) 3.31755 Tj +1 TJm +(ting) 15.5018 Tj +-297 TJm +(to) 7.7509 Tj +-297 TJm +(the) 12.1743 Tj +-297 TJm +(Mac,) 20.1942 Tj +-308 TJm +(or) 8.29885 Tj +-297 TJm +(to) 7.7509 Tj +-297 TJm +(Microsoft') 42.61 Tj +55 TJm +(s) 3.87545 Tj +-296 TJm +(operating) 37.6287 Tj +-297 TJm +(systems.) 34.0422 Tj +[1 0 0 1 361.339 493.964] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -361.339 -493.964] cm +[1 0 0 1 0 0] Tm +0 0 Td +361.339 493.964 Td +/F134_0 9.9626 Tf +(autoconf) 47.8205 Tj +[1 0 0 1 409.16 493.964] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -409.16 -493.964] cm +[1 0 0 1 0 0] Tm +0 0 Td +412.116 493.964 Td +/F130_0 9.9626 Tf +(doesn') 26.5603 Tj +18 TJm +(t) 2.7696 Tj +-297 TJm +(help) 17.1556 Tj +-296 TJm +(in) 7.7509 Tj +-297 TJm +(those) 21.031 Tj +-297 TJm +(cases,) 23.5117 Tj +-308 TJm +(and) 14.386 Tj +72 482.009 Td +(brings) 24.9065 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(whole) 24.3486 Tj +-250 TJm +(load) 17.1556 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(ne) 9.40469 Tj +25 TJm +(w) 7.193 Tj +-250 TJm +(comple) 29.3299 Tj +15 TJm +(xity) 15.5018 Tj +65 TJm +(.) 2.49065 Tj +[1 0 0 1 72 479.852] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -469.89] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 460.091 Td +/F130_0 9.9626 Tf +(Most) 20.4831 Tj +-392 TJm +(people) 26.5603 Tj +-392 TJm +(should) 26.5703 Tj +-393 TJm +(be) 9.40469 Tj +-392 TJm +(able) 16.5977 Tj +-392 TJm +(to) 7.7509 Tj +-392 TJm +(compile) 32.0995 Tj +-393 TJm +(the) 12.1743 Tj +-392 TJm +(library) 26.5603 Tj +-392 TJm +(and) 14.386 Tj +-392 TJm +(program) 33.7533 Tj +-393 TJm +(under) 22.6848 Tj +-392 TJm +(Unix) 19.9252 Tj +-392 TJm +(straight) 29.8878 Tj +-392 TJm +(out-of-the-box,) 60.5925 Tj +-428 TJm +(so) 8.85675 Tj +-392 TJm +(to) 7.7509 Tj +-393 TJm +(speak,) 25.1755 Tj +72 448.136 Td +(especially) 39.8404 Tj +-250 TJm +(if) 6.08715 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(v) 4.9813 Tj +15 TJm +(ersion) 24.3486 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(GNU) 21.579 Tj +-250 TJm +(C) 6.64505 Tj +-250 TJm +(a) 4.42339 Tj +20 TJm +(v) 4.9813 Tj +25 TJm +(ailable.) 29.0509 Tj +[1 0 0 1 72 445.979] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -436.017] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 426.218 Td +/F130_0 9.9626 Tf +(There) 23.2328 Tj +-259 TJm +(are) 12.1643 Tj +-258 TJm +(a) 4.42339 Tj +-259 TJm +(couple) 26.5603 Tj +-258 TJm +(of) 8.29885 Tj +[1 0 0 1 159.561 426.218] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -159.561 -426.218] cm +[1 0 0 1 0 0] Tm +0 0 Td +159.561 426.218 Td +/F134_0 9.9626 Tf +(__inline__) 59.7756 Tj +[1 0 0 1 219.337 426.218] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -219.337 -426.218] cm +[1 0 0 1 0 0] Tm +0 0 Td +221.913 426.218 Td +/F130_0 9.9626 Tf +(directi) 25.4544 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(es) 8.29885 Tj +-259 TJm +(in) 7.7509 Tj +-258 TJm +(the) 12.1743 Tj +-259 TJm +(code.) 21.3 Tj +-671 TJm +(GNU) 21.579 Tj +-259 TJm +(C) 6.64505 Tj +-258 TJm +(\() 3.31755 Tj +[1 0 0 1 352.587 426.218] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -352.587 -426.218] cm +[1 0 0 1 0 0] Tm +0 0 Td +352.587 426.218 Td +/F134_0 9.9626 Tf +(gcc) 17.9327 Tj +[1 0 0 1 370.52 426.218] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -370.52 -426.218] cm +[1 0 0 1 0 0] Tm +0 0 Td +370.52 426.218 Td +/F130_0 9.9626 Tf +(\)) 3.31755 Tj +-259 TJm +(should) 26.5703 Tj +-258 TJm +(be) 9.40469 Tj +-259 TJm +(able) 16.5977 Tj +-258 TJm +(to) 7.7509 Tj +-259 TJm +(handle) 26.5603 Tj +-259 TJm +(them.) 22.4159 Tj +-671 TJm +(If) 6.63509 Tj +-259 TJm +(you') 18.2614 Tj +50 TJm +(re) 7.74094 Tj +72 414.263 Td +(not) 12.7322 Tj +-279 TJm +(using) 21.589 Tj +-279 TJm +(GNU) 21.579 Tj +-279 TJm +(C,) 9.1357 Tj +-279 TJm +(your) 18.2614 Tj +-279 TJm +(C) 6.64505 Tj +-279 TJm +(compiler) 35.417 Tj +-279 TJm +(shouldn') 34.8691 Tj +18 TJm +(t) 2.7696 Tj +-279 TJm +(see) 12.7222 Tj +-279 TJm +(them) 19.9252 Tj +-279 TJm +(at) 7.193 Tj +-279 TJm +(all.) 12.4533 Tj +-794 TJm +(If) 6.63509 Tj +-279 TJm +(your) 18.2614 Tj +-279 TJm +(compiler) 35.417 Tj +-279 TJm +(does,) 20.7521 Tj +-286 TJm +(for) 11.6164 Tj +-279 TJm +(some) 21.031 Tj +-279 TJm +(reason,) 28.493 Tj +-287 TJm +(see) 12.7222 Tj +-279 TJm +(them) 19.9252 Tj +-279 TJm +(and) 14.386 Tj +72 402.308 Td +(doesn') 26.5603 Tj +18 TJm +(t) 2.7696 Tj +-283 TJm +(lik) 10.5205 Tj +10 TJm +(e) 4.42339 Tj +-283 TJm +(them,) 22.4159 Tj +-291 TJm +(just) 14.396 Tj +[1 0 0 1 164.167 402.308] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -164.167 -402.308] cm +[1 0 0 1 0 0] Tm +0 0 Td +164.167 402.308 Td +/F134_0 9.9626 Tf +(#define) 41.8429 Tj +[1 0 0 1 206.01 402.308] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.8196 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -208.829 -402.308] cm +[1 0 0 1 0 0] Tm +0 0 Td +208.829 402.308 Td +/F134_0 9.9626 Tf +(__inline__) 59.7756 Tj +[1 0 0 1 268.605 402.308] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -268.605 -402.308] cm +[1 0 0 1 0 0] Tm +0 0 Td +271.425 402.308 Td +/F130_0 9.9626 Tf +(to) 7.7509 Tj +-283 TJm +(be) 9.40469 Tj +[1 0 0 1 294.22 402.308] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -294.22 -402.308] cm +[1 0 0 1 0 0] Tm +0 0 Td +294.22 402.308 Td +/F134_0 9.9626 Tf +(/) 5.97756 Tj +300.197 400.565 Td +(*) 5.97756 Tj +-600 TJm +(*) 5.97756 Tj +318.13 402.308 Td +(/) 5.97756 Tj +[1 0 0 1 324.108 402.308] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -324.108 -402.308] cm +[1 0 0 1 0 0] Tm +0 0 Td +324.108 402.308 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-818 TJm +(One) 16.5977 Tj +-283 TJm +(easy) 17.7035 Tj +-283 TJm +(w) 7.193 Tj +10 TJm +(ay) 9.40469 Tj +-283 TJm +(to) 7.7509 Tj +-283 TJm +(do) 9.9626 Tj +-283 TJm +(this) 14.396 Tj +-283 TJm +(is) 6.64505 Tj +-283 TJm +(to) 7.7509 Tj +-283 TJm +(compile) 32.0995 Tj +-283 TJm +(with) 17.7135 Tj +-283 TJm +(the) 12.1743 Tj +-283 TJm +(\003ag) 14.9439 Tj +[1 0 0 1 72 390.353] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -390.353] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 390.353 Td +/F134_0 9.9626 Tf +(-D__inline__=) 77.7083 Tj +[1 0 0 1 149.709 390.353] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -149.709 -390.353] cm +[1 0 0 1 0 0] Tm +0 0 Td +149.709 390.353 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-250 TJm +(which) 24.3486 Tj +-250 TJm +(should) 26.5703 Tj +-250 TJm +(be) 9.40469 Tj +-250 TJm +(understood) 44.2738 Tj +-250 TJm +(by) 9.9626 Tj +-250 TJm +(most) 19.3773 Tj +-250 TJm +(Unix) 19.9252 Tj +-250 TJm +(compilers.) 41.7831 Tj +[1 0 0 1 72 388.196] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -378.233] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 368.435 Td +/F130_0 9.9626 Tf +(If) 6.63509 Tj +-321 TJm +(you) 14.9439 Tj +-321 TJm +(still) 14.9539 Tj +-322 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-321 TJm +(dif) 11.0684 Tj +25 TJm +(\002culties,) 34.0422 Tj +-339 TJm +(try) 11.0684 Tj +-321 TJm +(compiling) 40.4083 Tj +-321 TJm +(with) 17.7135 Tj +-322 TJm +(t) 2.7696 Tj +1 TJm +(he) 9.40469 Tj +-322 TJm +(macro) 24.8965 Tj +[1 0 0 1 310.295 368.435] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -310.295 -368.435] cm +[1 0 0 1 0 0] Tm +0 0 Td +310.295 368.435 Td +/F134_0 9.9626 Tf +(BZ_STRICT_ANSI) 83.6858 Tj +[1 0 0 1 393.981 368.435] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -393.981 -368.435] cm +[1 0 0 1 0 0] Tm +0 0 Td +397.18 368.435 Td +/F130_0 9.9626 Tf +(de\002ned.) 31.8205 Tj +-524 TJm +(This) 17.7135 Tj +-321 TJm +(should) 26.5703 Tj +-321 TJm +(enable) 26.0024 Tj +-321 TJm +(you) 14.9439 Tj +-322 TJm +(to) 7.7509 Tj +72 356.48 Td +(b) 4.9813 Tj +20 TJm +(uild) 15.5018 Tj +-321 TJm +(the) 12.1743 Tj +-321 TJm +(library) 26.5603 Tj +-322 TJm +(in) 7.7509 Tj +-321 TJm +(a) 4.42339 Tj +-321 TJm +(strictly) 27.6761 Tj +-321 TJm +(ANSI) 23.2427 Tj +-321 TJm +(compliant) 39.8504 Tj +-322 TJm +(en) 9.40469 Tj +40 TJm +(vironment.) 43.4469 Tj +-1047 TJm +(Building) 34.8791 Tj +-321 TJm +(the) 12.1743 Tj +-321 TJm +(program) 33.7533 Tj +-322 TJm +(itself) 19.9252 Tj +-321 TJm +(lik) 10.5205 Tj +10 TJm +(e) 4.42339 Tj +-321 TJm +(this) 14.396 Tj +-321 TJm +(is) 6.64505 Tj +-321 TJm +(dangerous) 40.9463 Tj +-322 TJm +(and) 14.386 Tj +72 344.525 Td +(not) 12.7322 Tj +-260 TJm +(supported,) 41.7831 Tj +-263 TJm +(since) 20.4731 Tj +-260 TJm +(you) 14.9439 Tj +-260 TJm +(remo) 20.4731 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +[1 0 0 1 204.498 344.525] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -204.498 -344.525] cm +[1 0 0 1 0 0] Tm +0 0 Td +204.498 344.525 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 234.386 344.525] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -234.386 -344.525] cm +[1 0 0 1 0 0] Tm +0 0 Td +234.386 344.525 Td +/F130_0 9.9626 Tf +(') 3.31755 Tj +55 TJm +(s) 3.87545 Tj +-260 TJm +(checks) 27.1082 Tj +-260 TJm +(ag) 9.40469 Tj +5 TJm +(ainst) 18.8194 Tj +-261 TJm +(compressi) 40.3983 Tj +1 TJm +(ng) 9.9626 Tj +-261 TJm +(directories,) 44.5428 Tj +-262 TJm +(symbolic) 36.5329 Tj +-261 TJm +(links,) 21.8679 Tj +-262 TJm +(de) 9.40469 Tj +25 TJm +(vices,) 22.9638 Tj +-263 TJm +(and) 14.386 Tj +-260 TJm +(other) 20.4731 Tj +72 332.57 Td +(not-really-a-\002le) 62.5253 Tj +-250 TJm +(entities.) 31.2726 Tj +-620 TJm +(This) 17.7135 Tj +-250 TJm +(could) 22.1369 Tj +-250 TJm +(cause) 22.1269 Tj +-250 TJm +(\002lesystem) 40.4083 Tj +-250 TJm +(corruption!) 44.8217 Tj +[1 0 0 1 72 330.413] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -320.45] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 310.652 Td +/F130_0 9.9626 Tf +(One) 16.5977 Tj +-392 TJm +(other) 20.4731 Tj +-391 TJm +(thing:) 23.2527 Tj +-594 TJm +(if) 6.08715 Tj +-391 TJm +(you) 14.9439 Tj +-392 TJm +(create) 23.7807 Tj +-391 TJm +(a) 4.42339 Tj +[1 0 0 1 210.879 310.652] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -210.879 -310.652] cm +[1 0 0 1 0 0] Tm +0 0 Td +210.879 310.652 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 240.767 310.652] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -240.767 -310.652] cm +[1 0 0 1 0 0] Tm +0 0 Td +244.669 310.652 Td +/F130_0 9.9626 Tf +(binary) 25.4544 Tj +-392 TJm +(for) 11.6164 Tj +-391 TJm +(public) 24.9065 Tj +-392 TJm +(distrib) 25.4644 Tj +20 TJm +(ution,) 22.9738 Tj +-427 TJm +(please) 24.8965 Tj +-392 TJm +(consider) 33.7533 Tj +-391 TJm +(linking) 28.234 Tj +-392 TJm +(it) 5.53921 Tj +-391 TJm +(statically) 35.9749 Tj +-392 TJm +(\() 3.31755 Tj +[1 0 0 1 522.067 310.652] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -522.067 -310.652] cm +[1 0 0 1 0 0] Tm +0 0 Td +522.067 310.652 Td +/F134_0 9.9626 Tf +(gcc) 17.9327 Tj +72 298.697 Td +(-static) 41.8429 Tj +[1 0 0 1 113.843 298.697] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -113.843 -298.697] cm +[1 0 0 1 0 0] Tm +0 0 Td +113.843 298.697 Td +/F130_0 9.9626 Tf +(\).) 5.8082 Tj +-620 TJm +(This) 17.7135 Tj +-250 TJm +(a) 4.42339 Tj +20 TJm +(v) 4.9813 Tj +20 TJm +(oids) 16.6077 Tj +-250 TJm +(all) 9.9626 Tj +-250 TJm +(sorts) 18.8194 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(library-v) 34.8591 Tj +15 TJm +(ersion) 24.3486 Tj +-250 TJm +(issues) 23.8007 Tj +-250 TJm +(that) 14.9439 Tj +-250 TJm +(others) 24.3486 Tj +-250 TJm +(may) 17.1556 Tj +-250 TJm +(encounter) 39.2825 Tj +-250 TJm +(later) 17.7035 Tj +-250 TJm +(on.) 12.4533 Tj +[1 0 0 1 72 296.54] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -286.577] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 276.779 Td +/F130_0 9.9626 Tf +(If) 6.63509 Tj +-296 TJm +(you) 14.9439 Tj +-296 TJm +(b) 4.9813 Tj +20 TJm +(uild) 15.5018 Tj +[1 0 0 1 122.709 276.779] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -122.709 -276.779] cm +[1 0 0 1 0 0] Tm +0 0 Td +122.709 276.779 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 152.596 276.779] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -152.596 -276.779] cm +[1 0 0 1 0 0] Tm +0 0 Td +155.545 276.779 Td +/F130_0 9.9626 Tf +(on) 9.9626 Tj +-296 TJm +(W) 9.40469 Tj +40 TJm +(in32,) 20.2042 Tj +-307 TJm +(you) 14.9439 Tj +-296 TJm +(must) 19.3773 Tj +-296 TJm +(set) 11.0684 Tj +[1 0 0 1 254.965 276.779] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -254.965 -276.779] cm +[1 0 0 1 0 0] Tm +0 0 Td +254.965 276.779 Td +/F134_0 9.9626 Tf +(BZ_UNIX) 41.8429 Tj +[1 0 0 1 296.808 276.779] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -296.808 -276.779] cm +[1 0 0 1 0 0] Tm +0 0 Td +299.756 276.779 Td +/F130_0 9.9626 Tf +(to) 7.7509 Tj +-296 TJm +(0) 4.9813 Tj +-296 TJm +(and) 14.386 Tj +[1 0 0 1 335.72 276.779] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -335.72 -276.779] cm +[1 0 0 1 0 0] Tm +0 0 Td +335.72 276.779 Td +/F134_0 9.9626 Tf +(BZ_LCCWIN32) 65.7532 Tj +[1 0 0 1 401.473 276.779] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -401.473 -276.779] cm +[1 0 0 1 0 0] Tm +0 0 Td +404.422 276.779 Td +/F130_0 9.9626 Tf +(to) 7.7509 Tj +-296 TJm +(1,) 7.47195 Tj +-307 TJm +(in) 7.7509 Tj +-296 TJm +(the) 12.1743 Tj +-296 TJm +(\002le) 12.7322 Tj +[1 0 0 1 467.159 276.779] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -467.159 -276.779] cm +[1 0 0 1 0 0] Tm +0 0 Td +467.159 276.779 Td +/F134_0 9.9626 Tf +(bzip2.c) 41.8429 Tj +[1 0 0 1 509.002 276.779] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -509.002 -276.779] cm +[1 0 0 1 0 0] Tm +0 0 Td +509.002 276.779 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-307 TJm +(before) 25.4445 Tj +72 264.824 Td +(compiling.) 42.899 Tj +-310 TJm +(Otherwise) 40.9463 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(resulting) 34.8691 Tj +-250 TJm +(binary) 25.4544 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(on') 13.2801 Tj +18 TJm +(t) 2.7696 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(ork) 13.2801 Tj +-250 TJm +(correctly) 35.4071 Tj +65 TJm +(.) 2.49065 Tj +[1 0 0 1 72 262.667] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -252.704] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 230.071 Td +/F122_0 20.6585 Tf +(4.3.) 34.4584 Tj +-278 TJm +(Repor) 59.6824 Tj +-20 TJm +(ting) 37.867 Tj +-278 TJm +(b) 12.6223 Tj +20 TJm +(ugs) 36.7308 Tj +[1 0 0 1 72 225.474] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -215.512] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 208.153 Td +/F130_0 9.9626 Tf +(I) 3.31755 Tj +-228 TJm +(tried) 18.2614 Tj +-228 TJm +(pretty) 23.2427 Tj +-228 TJm +(hard) 17.7035 Tj +-228 TJm +(to) 7.7509 Tj +-228 TJm +(mak) 17.1556 Tj +10 TJm +(e) 4.42339 Tj +-228 TJm +(sure) 16.5977 Tj +[1 0 0 1 196.25 208.153] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -196.25 -208.153] cm +[1 0 0 1 0 0] Tm +0 0 Td +196.25 208.153 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 226.138 208.153] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -226.138 -208.153] cm +[1 0 0 1 0 0] Tm +0 0 Td +228.409 208.153 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-228 TJm +(b) 4.9813 Tj +20 TJm +(ug) 9.9626 Tj +-228 TJm +(free,) 17.9725 Tj +-232 TJm +(both) 17.7135 Tj +-228 TJm +(by) 9.9626 Tj +-228 TJm +(design) 26.0123 Tj +-228 TJm +(and) 14.386 Tj +-228 TJm +(by) 9.9626 Tj +-228 TJm +(testing.) 29.0609 Tj +-605 TJm +(Hopefully) 40.3983 Tj +-228 TJm +(you') 18.2614 Tj +10 TJm +(ll) 5.53921 Tj +-228 TJm +(ne) 9.40469 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.74094 Tj +-228 TJm +(need) 18.8094 Tj +-228 TJm +(to) 7.7509 Tj +-228 TJm +(read) 17.1456 Tj +72 196.198 Td +(this) 14.396 Tj +-250 TJm +(section) 28.224 Tj +-250 TJm +(for) 11.6164 Tj +-250 TJm +(real.) 17.4246 Tj +[1 0 0 1 72 196.098] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -186.136] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 174.28 Td +/F130_0 9.9626 Tf +(Ne) 11.6164 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ertheless,) 37.3498 Tj +-313 TJm +(if) 6.08715 Tj +[1 0 0 1 137.751 174.28] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -137.751 -174.28] cm +[1 0 0 1 0 0] Tm +0 0 Td +137.751 174.28 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 167.639 174.28] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -167.639 -174.28] cm +[1 0 0 1 0 0] Tm +0 0 Td +170.634 174.28 Td +/F130_0 9.9626 Tf +(dies) 16.0497 Tj +-301 TJm +(with) 17.7135 Tj +-300 TJm +(a) 4.42339 Tj +-301 TJm +(se) 8.29885 Tj +15 TJm +(gmentation) 44.8317 Tj +-300 TJm +(f) 3.31755 Tj +10 TJm +(ault,) 17.4346 Tj +-314 TJm +(a) 4.42339 Tj +-300 TJm +(b) 4.9813 Tj +20 TJm +(us) 8.85675 Tj +-301 TJm +(error) 19.3573 Tj +-300 TJm +(or) 8.29885 Tj +-301 TJm +(an) 9.40469 Tj +-301 TJm +(internal) 30.4357 Tj +-300 TJm +(assertion) 35.417 Tj +-301 TJm +(f) 3.31755 Tj +10 TJm +(ailure,) 25.1755 Tj +-313 TJm +(it) 5.53921 Tj +-301 TJm +(wil) 12.7322 Tj +1 TJm +(l) 2.7696 Tj +-301 TJm +(ask) 13.2801 Tj +-301 TJm +(you) 14.9439 Tj +-300 TJm +(to) 7.7509 Tj +72 162.325 Td +(email) 22.1369 Tj +-242 TJm +(me) 12.1743 Tj +-243 TJm +(a) 4.42339 Tj +-242 TJm +(b) 4.9813 Tj +20 TJm +(ug) 9.9626 Tj +-243 TJm +(report.) 26.2813 Tj +-615 TJm +(Experience) 44.8118 Tj +-242 TJm +(from) 19.3673 Tj +-243 TJm +(years) 21.0211 Tj +-242 TJm +(of) 8.29885 Tj +-242 TJm +(feedback) 35.955 Tj +-243 TJm +(of) 8.29885 Tj +-242 TJm +(bzip2) 22.1369 Tj +-243 TJm +(users) 20.4731 Tj +-242 TJm +(indicates) 35.417 Tj +-243 TJm +(that) 14.9439 Tj +-242 TJm +(almost) 26.5703 Tj +-242 TJm +(all) 9.9626 Tj +-243 TJm +(these) 20.4731 Tj +-242 TJm +(problems) 37.0808 Tj +-243 TJm +(can) 13.8281 Tj +72 150.37 Td +(be) 9.40469 Tj +-250 TJm +(traced) 24.3386 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(either) 22.6848 Tj +-250 TJm +(compiler) 35.417 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ugs) 13.8381 Tj +-250 TJm +(or) 8.29885 Tj +-250 TJm +(hardw) 24.8965 Tj +10 TJm +(are) 12.1643 Tj +-250 TJm +(problems.) 39.5714 Tj +[1 0 0 1 72 148.213] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -97.3611] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7545] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -50.9514] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 50.9514 Td +/F130_0 9.9626 Tf +(32) 9.9626 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 36 36 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 116.328 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -382.4 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +498.728 749.245 Td +/F130_0 9.9626 Tf +(Miscellanea) 48.1393 Tj +[1 0 0 1 266.071 749.146] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -7.0936] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -31.5168] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.9739 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -78.9739 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +78.9739 710.037 Td +/F130_0 9.9626 Tf +(\225) 3.48691 Tj +[1 0 0 1 82.4608 710.037] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 1.9925 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -86.944 -710.037] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 710.037 Td +/F130_0 9.9626 Tf +(Recompile) 43.1679 Tj +-306 TJm +(the) 12.1743 Tj +-306 TJm +(program) 33.7533 Tj +-306 TJm +(with) 17.7135 Tj +-306 TJm +(no) 9.9626 Tj +-306 TJm +(optimisation,) 52.3136 Tj +-320 TJm +(and) 14.386 Tj +-306 TJm +(see) 12.7222 Tj +-306 TJm +(if) 6.08715 Tj +-306 TJm +(it) 5.53921 Tj +-306 TJm +(w) 7.193 Tj +10 TJm +(orks.) 19.6462 Tj +-956 TJm +(And/or) 28.224 Tj +-306 TJm +(try) 11.0684 Tj +-306 TJm +(a) 4.42339 Tj +-306 TJm +(dif) 11.0684 Tj +25 TJm +(ferent) 23.2328 Tj +-306 TJm +(compiler) 35.417 Tj +55 TJm +(.) 2.49065 Tj +-956 TJm +(I) 3.31755 Tj +-306 TJm +(heard) 22.1269 Tj +-306 TJm +(all) 9.9626 Tj +86.944 698.082 Td +(sorts) 18.8194 Tj +-282 TJm +(of) 8.29885 Tj +-282 TJm +(stories) 26.0123 Tj +-282 TJm +(about) 22.1369 Tj +-283 TJm +(v) 4.9813 Tj +25 TJm +(arious) 24.3486 Tj +-282 TJm +(\003a) 9.9626 Tj +20 TJm +(v) 4.9813 Tj +20 TJm +(ours) 17.1556 Tj +-282 TJm +(of) 8.29885 Tj +-282 TJm +(GNU) 21.579 Tj +-282 TJm +(C) 6.64505 Tj +-282 TJm +(\(and) 17.7035 Tj +-282 TJm +(other) 20.4731 Tj +-283 TJm +(compilers\)) 42.61 Tj +-282 TJm +(generating) 42.0521 Tj +-282 TJm +(bad) 14.386 Tj +-282 TJm +(code) 18.8094 Tj +-282 TJm +(for) 11.6164 Tj +[1 0 0 1 472.141 698.082] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.141 -698.082] cm +[1 0 0 1 0 0] Tm +0 0 Td +472.141 698.082 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 502.029 698.082] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -502.029 -698.082] cm +[1 0 0 1 0 0] Tm +0 0 Td +502.029 698.082 Td +/F130_0 9.9626 Tf +(,) 2.49065 Tj +-290 TJm +(and) 14.386 Tj +-282 TJm +(I') 6.63509 Tj +50 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +86.944 686.127 Td +(run) 13.2801 Tj +-250 TJm +(across) 24.8965 Tj +-250 TJm +(tw) 9.9626 Tj +10 TJm +(o) 4.9813 Tj +-250 TJm +(such) 18.2614 Tj +-250 TJm +(e) 4.42339 Tj +15 TJm +(xamples) 33.2053 Tj +-250 TJm +(myself.) 29.6088 Tj +[1 0 0 1 237.767 686.127] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -165.767 -12.1195] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -674.007] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 664.209 Td +/F130_0 9.9626 Tf +(2.7.X) 22.1369 Tj +-280 TJm +(v) 4.9813 Tj +15 TJm +(ersions) 28.224 Tj +-279 TJm +(of) 8.29885 Tj +-280 TJm +(GNU) 21.579 Tj +-279 TJm +(C) 6.64505 Tj +-280 TJm +(are) 12.1643 Tj +-279 TJm +(kno) 14.9439 Tj +25 TJm +(wn) 12.1743 Tj +-280 TJm +(to) 7.7509 Tj +-280 TJm +(generate) 33.7433 Tj +-279 TJm +(bad) 14.386 Tj +-280 TJm +(code) 18.8094 Tj +-279 TJm +(from) 19.3673 Tj +-280 TJm +(time) 17.7135 Tj +-279 TJm +(to) 7.7509 Tj +-280 TJm +(time,) 20.2042 Tj +-287 TJm +(at) 7.193 Tj +-280 TJm +(high) 17.7135 Tj +-279 TJm +(optimisation) 49.823 Tj +-280 TJm +(le) 7.193 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(els.) 13.5591 Tj +-797 TJm +(If) 6.63509 Tj +-280 TJm +(you) 14.9439 Tj +86.944 652.254 Td +(get) 12.1743 Tj +-295 TJm +(problems,) 39.5714 Tj +-307 TJm +(try) 11.0684 Tj +-296 TJm +(using) 21.589 Tj +-295 TJm +(the) 12.1743 Tj +-296 TJm +(\003ags) 18.8194 Tj +[1 0 0 1 220.116 652.254] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -220.116 -652.254] cm +[1 0 0 1 0 0] Tm +0 0 Td +220.116 652.254 Td +/F134_0 9.9626 Tf +(-O2) 17.9327 Tj +[1 0 0 1 238.049 652.254] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.9438 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -240.993 -652.254] cm +[1 0 0 1 0 0] Tm +0 0 Td +240.993 652.254 Td +/F134_0 9.9626 Tf +(-fomit-frame-pointer) 119.551 Tj +[1 0 0 1 360.544 652.254] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.9438 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -363.488 -652.254] cm +[1 0 0 1 0 0] Tm +0 0 Td +363.488 652.254 Td +/F134_0 9.9626 Tf +(-fno-strength-reduce) 119.551 Tj +[1 0 0 1 483.04 652.254] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -483.04 -652.254] cm +[1 0 0 1 0 0] Tm +0 0 Td +483.04 652.254 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-893 TJm +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-295 TJm +(should) 26.5703 Tj +86.944 640.299 Td +(speci\002cally) 45.3796 Tj +[1 0 0 1 134.814 640.299] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -134.814 -640.299] cm +[1 0 0 1 0 0] Tm +0 0 Td +134.814 640.299 Td +/F637_0 9.9626 Tf +(not) 12.7322 Tj +[1 0 0 1 147.546 640.299] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -147.546 -640.299] cm +[1 0 0 1 0 0] Tm +0 0 Td +150.036 640.299 Td +/F130_0 9.9626 Tf +(use) 13.2801 Tj +[1 0 0 1 165.807 640.299] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -165.807 -640.299] cm +[1 0 0 1 0 0] Tm +0 0 Td +165.807 640.299 Td +/F134_0 9.9626 Tf +(-funroll-loops) 83.6858 Tj +[1 0 0 1 249.493 640.299] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -249.493 -640.299] cm +[1 0 0 1 0 0] Tm +0 0 Td +249.493 640.299 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +[1 0 0 1 72 638.142] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -628.179] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 618.381 Td +/F130_0 9.9626 Tf +(Y) 7.193 Tj +110 TJm +(ou) 9.9626 Tj +-249 TJm +(may) 17.1556 Tj +-249 TJm +(notice) 24.3486 Tj +-248 TJm +(that) 14.9439 Tj +-249 TJm +(the) 12.1743 Tj +-249 TJm +(Mak) 18.2614 Tj +10 TJm +(e\002le) 17.1556 Tj +-249 TJm +(runs) 17.1556 Tj +-248 TJm +(six) 11.6264 Tj +-249 TJm +(tests) 17.7135 Tj +-249 TJm +(as) 8.29885 Tj +-249 TJm +(part) 15.4918 Tj +-249 TJm +(of) 8.29885 Tj +-248 TJm +(the) 12.1743 Tj +-249 TJm +(b) 4.9813 Tj +20 TJm +(uild) 15.5018 Tj +-249 TJm +(process.) 32.3685 Tj +-619 TJm +(If) 6.63509 Tj +-249 TJm +(the) 12.1743 Tj +-249 TJm +(program) 33.7533 Tj +-248 TJm +(passes) 25.4544 Tj +-249 TJm +(all) 9.9626 Tj +-249 TJm +(of) 8.29885 Tj +-249 TJm +(these,) 22.9638 Tj +-249 TJm +(it') 8.85675 Tj +55 TJm +(s) 3.87545 Tj +86.944 606.426 Td +(a) 4.42339 Tj +-250 TJm +(pretty) 23.2427 Tj +-250 TJm +(good) 19.9252 Tj +-250 TJm +(\(b) 8.29885 Tj +20 TJm +(ut) 7.7509 Tj +-250 TJm +(not) 12.7322 Tj +-250 TJm +(100%\)) 26.5603 Tj +-250 TJm +(indication) 39.8504 Tj +-250 TJm +(that) 14.9439 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(compiler) 35.417 Tj +-250 TJm +(has) 13.2801 Tj +-250 TJm +(done) 19.3673 Tj +-250 TJm +(its) 9.41466 Tj +-250 TJm +(job) 12.7322 Tj +-250 TJm +(correctly) 35.4071 Tj +65 TJm +(.) 2.49065 Tj +[1 0 0 1 72 604.269] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -19.761] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.9739 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -78.9739 -584.508] cm +[1 0 0 1 0 0] Tm +0 0 Td +78.9739 584.508 Td +/F130_0 9.9626 Tf +(\225) 3.48691 Tj +[1 0 0 1 82.4608 584.508] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 1.9925 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -86.944 -584.508] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 584.508 Td +/F130_0 9.9626 Tf +(If) 6.63509 Tj +[1 0 0 1 95.9558 584.508] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -95.9558 -584.508] cm +[1 0 0 1 0 0] Tm +0 0 Td +95.9558 584.508 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 125.844 584.508] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -125.844 -584.508] cm +[1 0 0 1 0 0] Tm +0 0 Td +128.22 584.508 Td +/F130_0 9.9626 Tf +(crashes) 29.3199 Tj +-239 TJm +(randomly) 38.1866 Tj +65 TJm +(,) 2.49065 Tj +-240 TJm +(and) 14.386 Tj +-239 TJm +(the) 12.1743 Tj +-239 TJm +(crashe) 25.4445 Tj +1 TJm +(s) 3.87545 Tj +-239 TJm +(are) 12.1643 Tj +-239 TJm +(not) 12.7322 Tj +-238 TJm +(repeatable,) 43.427 Tj +-241 TJm +(you) 14.9439 Tj +-239 TJm +(may) 17.1556 Tj +-238 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-239 TJm +(a) 4.42339 Tj +-238 TJm +(\003ak) 14.9439 Tj +15 TJm +(y) 4.9813 Tj +-239 TJm +(memory) 33.2053 Tj +-238 TJm +(subsystem.) 44.0048 Tj +[1 0 0 1 510.112 584.508] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -510.112 -584.508] cm +[1 0 0 1 0 0] Tm +0 0 Td +510.112 584.508 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 540 584.508] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -540 -584.508] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 572.553 Td +/F130_0 9.9626 Tf +(really) 22.6848 Tj +-254 TJm +(hammers) 36.5229 Tj +-253 TJm +(your) 18.2614 Tj +-254 TJm +(memory) 33.2053 Tj +-253 TJm +(hierarch) 32.6375 Tj +5 TJm +(y) 4.9813 Tj +65 TJm +(,) 2.49065 Tj +-255 TJm +(and) 14.386 Tj +-253 TJm +(if) 6.08715 Tj +-254 TJm +(it') 8.85675 Tj +55 TJm +(s) 3.87545 Tj +-254 TJm +(a) 4.42339 Tj +-253 TJm +(bit) 10.5205 Tj +-254 TJm +(mar) 15.4918 Tj +18 TJm +(ginal,) 22.4159 Tj +-254 TJm +(you) 14.9439 Tj +-254 TJm +(may) 17.1556 Tj +-253 TJm +(get) 12.1743 Tj +-254 TJm +(these) 20.4731 Tj +-253 TJm +(problems.) 39.5714 Tj +-642 TJm +(Ditto) 20.4831 Tj +-254 TJm +(if) 6.08715 Tj +-253 TJm +(your) 18.2614 Tj +-254 TJm +(disk) 16.6077 Tj +86.944 560.598 Td +(or) 8.29885 Tj +-250 TJm +(I/O) 13.2801 Tj +-250 TJm +(subsystem) 41.5142 Tj +-250 TJm +(is) 6.64505 Tj +-250 TJm +(slo) 11.6264 Tj +25 TJm +(wly) 14.9439 Tj +-250 TJm +(f) 3.31755 Tj +10 TJm +(ailing.) 25.1855 Tj +-620 TJm +(Y) 7.193 Tj +111 TJm +(up,) 12.4533 Tj +-250 TJm +(this) 14.396 Tj +-250 TJm +(really) 22.6848 Tj +-250 TJm +(does) 18.2614 Tj +-250 TJm +(happen.) 31.2626 Tj +[1 0 0 1 345.143 560.598] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -273.143 -12.1195] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -548.478] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 538.68 Td +/F130_0 9.9626 Tf +(T) 6.08715 Tj +35 TJm +(ry) 8.29885 Tj +-250 TJm +(using) 21.589 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(dif) 11.0684 Tj +25 TJm +(ferent) 23.2328 Tj +-250 TJm +(machine) 33.7533 Tj +-250 TJm +(of) 8.29885 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(same) 20.4731 Tj +-250 TJm +(type,) 19.6462 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(see) 12.7222 Tj +-250 TJm +(if) 6.08715 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(can) 13.8281 Tj +-250 TJm +(repeat) 24.3386 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(problem.) 35.696 Tj +[1 0 0 1 72 536.523] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -19.761] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.9739 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -78.9739 -516.762] cm +[1 0 0 1 0 0] Tm +0 0 Td +78.9739 516.762 Td +/F130_0 9.9626 Tf +(\225) 3.48691 Tj +[1 0 0 1 82.4608 516.762] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 1.9925 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -86.944 -516.762] cm +[1 0 0 1 0 0] Tm +0 0 Td +86.944 516.762 Td +/F130_0 9.9626 Tf +(This) 17.7135 Tj +-229 TJm +(isn') 14.9439 Tj +18 TJm +(t) 2.7696 Tj +-230 TJm +(really) 22.6848 Tj +-229 TJm +(a) 4.42339 Tj +-229 TJm +(b) 4.9813 Tj +20 TJm +(ug,) 12.4533 Tj +-234 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-229 TJm +(...) 7.47195 Tj +-303 TJm +(If) 6.63509 Tj +[1 0 0 1 212.232 516.762] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -212.232 -516.762] cm +[1 0 0 1 0 0] Tm +0 0 Td +212.232 516.762 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 242.12 516.762] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -242.12 -516.762] cm +[1 0 0 1 0 0] Tm +0 0 Td +244.405 516.762 Td +/F130_0 9.9626 Tf +(tells) 16.6077 Tj +-229 TJm +(you) 14.9439 Tj +-230 TJm +(your) 18.2614 Tj +-229 TJm +(\002le) 12.7322 Tj +-229 TJm +(is) 6.64505 Tj +-230 TJm +(corrupted) 38.1767 Tj +-229 TJm +(on) 9.9626 Tj +-230 TJm +(decompression,) 62.2563 Tj +-233 TJm +(and) 14.386 Tj +-229 TJm +(you) 14.9439 Tj +-230 TJm +(obtained) 34.3112 Tj +-229 TJm +(the) 12.1743 Tj +-229 TJm +(\002le) 12.7322 Tj +86.944 504.807 Td +(via) 12.1743 Tj +-262 TJm +(FTP) 17.1656 Tj +111 TJm +(,) 2.49065 Tj +-263 TJm +(there) 19.9152 Tj +-262 TJm +(is) 6.64505 Tj +-262 TJm +(a) 4.42339 Tj +-262 TJm +(possibility) 41.5241 Tj +-263 TJm +(that) 14.9439 Tj +-262 TJm +(you) 14.9439 Tj +-262 TJm +(for) 11.6164 Tj +18 TJm +(got) 12.7322 Tj +-263 TJm +(to) 7.7509 Tj +-262 TJm +(tell) 12.7322 Tj +-262 TJm +(FTP) 17.1656 Tj +-263 TJm +(to) 7.7509 Tj +-262 TJm +(do) 9.9626 Tj +-262 TJm +(a) 4.42339 Tj +-262 TJm +(binary) 25.4544 Tj +-263 TJm +(mode) 22.1369 Tj +-262 TJm +(transfer) 30.4258 Tj +55 TJm +(.) 2.49065 Tj +-694 TJm +(That) 18.2614 Tj +-262 TJm +(absolutely) 40.9562 Tj +-262 TJm +(will) 15.5018 Tj +-263 TJm +(cause) 22.1269 Tj +86.944 492.852 Td +(the) 12.1743 Tj +-250 TJm +(\002le) 12.7322 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(be) 9.40469 Tj +-250 TJm +(non-decompressible.) 82.7294 Tj +-620 TJm +(Y) 7.193 Tj +110 TJm +(ou') 13.2801 Tj +10 TJm +(ll) 5.53921 Tj +-250 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(transfer) 30.4258 Tj +-250 TJm +(it) 5.53921 Tj +-250 TJm +(ag) 9.40469 Tj +5 TJm +(ain.) 14.6649 Tj +[1 0 0 1 351.34 492.852] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -279.34 -12.1195] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -480.732] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 470.934 Td +/F130_0 9.9626 Tf +(If) 6.63509 Tj +-235 TJm +(you') 18.2614 Tj +50 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-236 TJm +(incor) 20.4731 Tj +1 TJm +(p) 4.9813 Tj +-1 TJm +(or) 8.29885 Tj +1 TJm +(ated) 16.5977 Tj +[1 0 0 1 163.036 470.934] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -163.036 -470.934] cm +[1 0 0 1 0 0] Tm +0 0 Td +163.036 470.934 Td +/F134_0 9.9626 Tf +(libbzip2) 47.8205 Tj +[1 0 0 1 210.856 470.934] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -210.856 -470.934] cm +[1 0 0 1 0 0] Tm +0 0 Td +213.2 470.934 Td +/F130_0 9.9626 Tf +(into) 15.5018 Tj +-235 TJm +(your) 18.2614 Tj +-235 TJm +(o) 4.9813 Tj +25 TJm +(wn) 12.1743 Tj +-236 TJm +(program) 33.7533 Tj +-235 TJm +(and) 14.386 Tj +-235 TJm +(are) 12.1643 Tj +-236 TJm +(get) 12.1743 Tj +1 TJm +(ting) 15.5018 Tj +-236 TJm +(problems,) 39.5714 Tj +-238 TJm +(please,) 27.3872 Tj +-238 TJm +(please,) 27.3872 Tj +-238 TJm +(please,) 27.3872 Tj +-238 TJm +(check) 23.2328 Tj +-236 TJm +(that) 14.9439 Tj +72 458.979 Td +(the) 12.1743 Tj +-242 TJm +(parameters) 43.7059 Tj +-243 TJm +(you) 14.9439 Tj +-242 TJm +(are) 12.1643 Tj +-242 TJm +(passing) 29.8878 Tj +-243 TJm +(in) 7.7509 Tj +-242 TJm +(calls) 18.2614 Tj +-242 TJm +(to) 7.7509 Tj +-243 TJm +(the) 12.1743 Tj +-242 TJm +(library) 26.5603 Tj +65 TJm +(,) 2.49065 Tj +-244 TJm +(are) 12.1643 Tj +-242 TJm +(correct,) 30.1468 Tj +-244 TJm +(and) 14.386 Tj +-243 TJm +(in) 7.7509 Tj +-242 TJm +(accordance) 44.8018 Tj +-242 TJm +(with) 17.7135 Tj +-243 TJm +(what) 19.3673 Tj +-242 TJm +(the) 12.1743 Tj +-242 TJm +(documentation) 59.2177 Tj +-243 TJm +(says) 17.1556 Tj +72 447.024 Td +(is) 6.64505 Tj +-250 TJm +(allo) 14.9439 Tj +25 TJm +(w) 7.193 Tj +10 TJm +(able.) 19.0883 Tj +-310 TJm +(I) 3.31755 Tj +-250 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-250 TJm +(tried) 18.2614 Tj +-250 TJm +(to) 7.7509 Tj +-250 TJm +(mak) 17.1556 Tj +10 TJm +(e) 4.42339 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(library) 26.5603 Tj +-250 TJm +(rob) 13.2801 Tj +20 TJm +(ust) 11.6264 Tj +-250 TJm +(ag) 9.40469 Tj +5 TJm +(ainst) 18.8194 Tj +-250 TJm +(such) 18.2614 Tj +-250 TJm +(problems,) 39.5714 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-250 TJm +(I'm) 14.386 Tj +-250 TJm +(sure) 16.5977 Tj +-250 TJm +(I) 3.31755 Tj +-250 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(en') 12.7222 Tj +18 TJm +(t) 2.7696 Tj +-250 TJm +(succeeded.) 43.427 Tj +[1 0 0 1 72 444.867] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -434.904] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 425.106 Td +/F130_0 9.9626 Tf +(Finally) 28.234 Tj +65 TJm +(,) 2.49065 Tj +-324 TJm +(if) 6.08715 Tj +-310 TJm +(the) 12.1743 Tj +-309 TJm +(abo) 14.386 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-309 TJm +(comments) 40.9562 Tj +-310 TJm +(don') 18.2614 Tj +18 TJm +(t) 2.7696 Tj +-309 TJm +(help,) 19.6462 Tj +-324 TJm +(you') 18.2614 Tj +10 TJm +(ll) 5.53921 Tj +-310 TJm +(ha) 9.40469 Tj +20 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-309 TJm +(to) 7.7509 Tj +-309 TJm +(send) 18.2614 Tj +-310 TJm +(me) 12.1743 Tj +-309 TJm +(a) 4.42339 Tj +-309 TJm +(b) 4.9813 Tj +20 TJm +(ug) 9.9626 Tj +-310 TJm +(report.) 26.2813 Tj +-976 TJm +(No) 12.1743 Tj +25 TJm +(w) 7.193 Tj +65 TJm +(,) 2.49065 Tj +-324 TJm +(it') 8.85675 Tj +55 TJm +(s) 3.87545 Tj +-310 TJm +(just) 14.396 Tj +-309 TJm +(amazing) 33.7533 Tj +-309 TJm +(ho) 9.9626 Tj +25 TJm +(w) 7.193 Tj +-310 TJm +(man) 17.1556 Tj +15 TJm +(y) 4.9813 Tj +72 413.151 Td +(people) 26.5603 Tj +-250 TJm +(will) 15.5018 Tj +-250 TJm +(send) 18.2614 Tj +-250 TJm +(me) 12.1743 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(b) 4.9813 Tj +20 TJm +(ug) 9.9626 Tj +-250 TJm +(report) 23.7907 Tj +-250 TJm +(saying) 26.0123 Tj +-250 TJm +(something) 41.5142 Tj +-250 TJm +(lik) 10.5205 Tj +10 TJm +(e:) 7.193 Tj +[1 0 0 1 72 410.994] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -24.9066] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 23.9103 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 20.3237] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3685] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -401.629] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 401.629 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +-426 TJm +(crashed) 41.8429 Tj +-426 TJm +(with) 23.9102 Tj +-426 TJm +(segmentation) 71.7307 Tj +-426 TJm +(fault) 29.8878 Tj +-426 TJm +(on) 11.9551 Tj +-426 TJm +(my) 11.9551 Tj +-426 TJm +(machine) 41.8429 Tj +[1 0 0 1 72 386.087] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -376.125] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 364.169 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +-241 TJm +(absolutely) 40.9562 Tj +-241 TJm +(nothing) 30.4457 Tj +-241 TJm +(el) 7.193 Tj +1 TJm +(se.) 10.7895 Tj +-614 TJm +(Needless) 35.965 Tj +-241 TJm +(to) 7.7509 Tj +-241 TJm +(say) 13.2801 Tj +65 TJm +(,) 2.49065 Tj +-243 TJm +(a) 4.42339 Tj +-241 TJm +(such) 18.2614 Tj +-240 TJm +(a) 4.42339 Tj +-241 TJm +(report) 23.7907 Tj +-241 TJm +(is) 6.64505 Tj +[1 0 0 1 324.681 364.169] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -324.681 -364.169] cm +[1 0 0 1 0 0] Tm +0 0 Td +324.681 364.169 Td +/F637_0 9.9626 Tf +(totally) 25.4644 Tj +55 TJm +(,) 2.49065 Tj +-243 TJm +(utterly) 26.0123 Tj +55 TJm +(,) 2.49065 Tj +-242 TJm +(completely) 43.158 Tj +-241 TJm +(and) 14.9439 Tj +-241 TJm +(compr) 25.4544 Tj +37 TJm +(ehensively) 41.4942 Tj +-241 TJm +(100%) 23.2427 Tj +72 352.214 Td +(useless;) 31.5416 Tj +-257 TJm +(a) 4.9813 Tj +-255 TJm +(waste) 22.6948 Tj +-255 TJm +(of) 7.7509 Tj +-255 TJm +(your) 18.2614 Tj +-255 TJm +(time) 17.1556 Tj +10 TJm +(,) 2.49065 Tj +-256 TJm +(my) 11.6164 Tj +-255 TJm +(time) 17.1556 Tj +10 TJm +(,) 2.49065 Tj +-256 TJm +(and) 14.9439 Tj +-255 TJm +(net) 12.1743 Tj +-255 TJm +(bandwidth) 42.0721 Tj +[1 0 0 1 302.574 352.214] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -302.574 -352.214] cm +[1 0 0 1 0 0] Tm +0 0 Td +302.574 352.214 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-650 TJm +(W) 9.40469 Tj +40 TJm +(ith) 10.5205 Tj +-254 TJm +(no) 9.9626 Tj +-255 TJm +(details) 26.0123 Tj +-255 TJm +(at) 7.193 Tj +-255 TJm +(all,) 12.4533 Tj +-256 TJm +(there') 23.2328 Tj +55 TJm +(s) 3.87545 Tj +-255 TJm +(no) 9.9626 Tj +-255 TJm +(w) 7.193 Tj +10 TJm +(ay) 9.40469 Tj +-255 TJm +(I) 3.31755 Tj +-255 TJm +(can) 13.8281 Tj +-255 TJm +(possibly) 33.2153 Tj +-255 TJm +(be) 9.40469 Tj +15 TJm +(gin) 12.7322 Tj +72 340.259 Td +(to) 7.7509 Tj +-250 TJm +(\002gure) 23.2427 Tj +-250 TJm +(out) 12.7322 Tj +-250 TJm +(what) 19.3673 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(problem) 33.2053 Tj +-250 TJm +(is.) 9.1357 Tj +[1 0 0 1 72 338.102] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -328.14] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 318.341 Td +/F130_0 9.9626 Tf +(The) 15.4918 Tj +-309 TJm +(rules) 19.3673 Tj +-309 TJm +(of) 8.29885 Tj +-309 TJm +(the) 12.1743 Tj +-310 TJm +(g) 4.9813 Tj +5 TJm +(ame) 16.5977 Tj +-309 TJm +(are:) 14.9339 Tj +-428 TJm +(f) 3.31755 Tj +10 TJm +(acts,) 17.9825 Tj +-324 TJm +(f) 3.31755 Tj +10 TJm +(acts,) 17.9825 Tj +-324 TJm +(f) 3.31755 Tj +10 TJm +(acts.) 17.9825 Tj +-975 TJm +(Don') 20.4731 Tj +18 TJm +(t) 2.7696 Tj +-309 TJm +(omit) 18.2714 Tj +-309 TJm +(them) 19.9252 Tj +-309 TJm +(because) 31.5316 Tj +-309 TJm +("oh,) 16.518 Tj +-324 TJm +(the) 12.1743 Tj +15 TJm +(y) 4.9813 Tj +-309 TJm +(w) 7.193 Tj +10 TJm +(on') 13.2801 Tj +18 TJm +(t) 2.7696 Tj +-309 TJm +(be) 9.40469 Tj +-310 TJm +(rele) 14.9339 Tj +25 TJm +(v) 4.9813 Tj +25 TJm +(ant".) 18.7297 Tj +-974 TJm +(At) 9.9626 Tj +-310 TJm +(the) 12.1743 Tj +-309 TJm +(bare) 17.1456 Tj +72 306.386 Td +(minimum:) 41.5241 Tj +[1 0 0 1 72 306.287] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -60.7721] cm +/DeviceRGB {} cs +[0.94899 0.94899 0.976456] sc +/DeviceRGB {} CS +[0.94899 0.94899 0.976456] SC +0 0 468 59.7758 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 56.1892] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -296.922] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 296.922 Td +/F134_0 9.9626 Tf +(Machine) 41.8429 Tj +-426 TJm +(type.) 29.8878 Tj +-852 TJm +(Operating) 53.798 Tj +-426 TJm +(system) 35.8654 Tj +-426 TJm +(version.) 47.8205 Tj +90 284.967 Td +(Exact) 29.8878 Tj +-426 TJm +(version) 41.8429 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(bzip2) 29.8878 Tj +-426 TJm +(\(do) 17.9327 Tj +-426 TJm +(bzip2) 29.8878 Tj +-426 TJm +(-V\).) 23.9102 Tj +90 273.011 Td +(Exact) 29.8878 Tj +-426 TJm +(version) 41.8429 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compiler) 47.8205 Tj +-426 TJm +(used.) 29.8878 Tj +90 261.056 Td +(Flags) 29.8878 Tj +-426 TJm +(passed) 35.8654 Tj +-426 TJm +(to) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(compiler.) 53.798 Tj +[1 0 0 1 72 245.514] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -235.552] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 223.597 Td +/F130_0 9.9626 Tf +(Ho) 12.1743 Tj +25 TJm +(we) 11.6164 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(er) 7.74094 Tj +40 TJm +(,) 2.49065 Tj +-254 TJm +(the) 12.1743 Tj +-252 TJm +(most) 19.3773 Tj +-253 TJm +(important) 38.7446 Tj +-253 TJm +(single) 23.8007 Tj +-253 TJm +(thing) 20.4831 Tj +-253 TJm +(t) 2.7696 Tj +1 TJm +(hat) 12.1743 Tj +-253 TJm +(will) 15.5018 Tj +-253 TJm +(help) 17.1556 Tj +-253 TJm +(me) 12.1743 Tj +-253 TJm +(is) 6.64505 Tj +-252 TJm +(the) 12.1743 Tj +-253 TJm +(\002le) 12.7322 Tj +-253 TJm +(that) 14.9439 Tj +-253 TJm +(you) 14.9439 Tj +-253 TJm +(were) 19.3573 Tj +-253 TJm +(trying) 23.8007 Tj +-252 TJm +(to) 7.7509 Tj +-253 TJm +(compress) 37.6287 Tj +-253 TJm +(or) 8.29885 Tj +-253 TJm +(decompress) 47.0334 Tj +72 211.641 Td +(at) 7.193 Tj +-304 TJm +(the) 12.1743 Tj +-305 TJm +(time) 17.7135 Tj +-304 TJm +(the) 12.1743 Tj +-304 TJm +(problem) 33.2053 Tj +-305 TJm +(happened.) 40.6673 Tj +-946 TJm +(W) 9.40469 Tj +40 TJm +(ithout) 23.2527 Tj +-304 TJm +(that,) 17.4346 Tj +-318 TJm +(my) 12.7322 Tj +-305 TJm +(ability) 25.4644 Tj +-304 TJm +(to) 7.7509 Tj +-304 TJm +(do) 9.9626 Tj +-305 TJm +(an) 9.40469 Tj +15 TJm +(ything) 25.4644 Tj +-304 TJm +(more) 20.4731 Tj +-304 TJm +(than) 17.1556 Tj +-305 TJm +(speculate) 37.0708 Tj +-304 TJm +(about) 22.1369 Tj +-304 TJm +(the) 12.1743 Tj +-305 TJm +(cause,) 24.6176 Tj +-318 TJm +(is) 6.64505 Tj +72 199.686 Td +(limited.) 30.7247 Tj +[1 0 0 1 72 199.587] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -189.624] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 164.933 Td +/F122_0 20.6585 Tf +(4.4.) 34.4584 Tj +-278 TJm +(Did) 33.2808 Tj +-278 TJm +(y) 11.4861 Tj +25 TJm +(ou) 25.2447 Tj +-278 TJm +(g) 12.6223 Tj +-10 TJm +(et) 18.3654 Tj +-278 TJm +(the) 30.9877 Tj +-278 TJm +(right) 45.9032 Tj +-278 TJm +(pac) 35.5946 Tj +20 TJm +(ka) 22.9723 Tj +10 TJm +(g) 12.6223 Tj +-10 TJm +(e?) 24.1085 Tj +[1 0 0 1 72 160.337] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -150.374] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 143.016 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 101.888 143.016] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -101.888 -143.016] cm +[1 0 0 1 0 0] Tm +0 0 Td +104.603 143.016 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-272 TJm +(a) 4.42339 Tj +-273 TJm +(resource) 33.7433 Tj +-272 TJm +(hog.) 17.4346 Tj +-378 TJm +(It) 6.08715 Tj +-272 TJm +(soaks) 22.1369 Tj +-273 TJm +(up) 9.9626 Tj +-272 TJm +(lar) 10.5105 Tj +18 TJm +(ge) 9.40469 Tj +-273 TJm +(amounts) 33.7633 Tj +-272 TJm +(of) 8.29885 Tj +-273 TJm +(CPU) 19.3773 Tj +-272 TJm +(c) 4.42339 Tj +15 TJm +(ycles) 20.4731 Tj +-273 TJm +(and) 14.386 Tj +-272 TJm +(memory) 33.2053 Tj +65 TJm +(.) 2.49065 Tj +-755 TJm +(Also,) 21.31 Tj +-278 TJm +(it) 5.53921 Tj +-273 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(es) 8.29885 Tj +-272 TJm +(v) 4.9813 Tj +15 TJm +(ery) 12.7222 Tj +-273 TJm +(lar) 10.5105 Tj +18 TJm +(ge) 9.40469 Tj +-272 TJm +(latencies.) 37.3498 Tj +72 131.06 Td +(In) 8.29885 Tj +-251 TJm +(the) 12.1743 Tj +-251 TJm +(w) 7.193 Tj +10 TJm +(orst) 14.9439 Tj +-251 TJm +(case,) 19.6363 Tj +-251 TJm +(you) 14.9439 Tj +-251 TJm +(can) 13.8281 Tj +-251 TJm +(feed) 17.1456 Tj +-251 TJm +(man) 17.1556 Tj +15 TJm +(y) 4.9813 Tj +-251 TJm +(me) 12.1743 Tj +15 TJm +(g) 4.9813 Tj +4 TJm +(abyt) 17.1556 Tj +1 TJm +(es) 8.29885 Tj +-252 TJm +(of) 8.29885 Tj +-251 TJm +(uncompressed) 56.996 Tj +-251 TJm +(data) 16.5977 Tj +-251 TJm +(into) 15.5018 Tj +-251 TJm +(the) 12.1743 Tj +-251 TJm +(library) 26.5603 Tj +-251 TJm +(before) 25.4445 Tj +-251 TJm +(getting) 27.6761 Tj +-251 TJm +(an) 9.40469 Tj +15 TJm +(y) 4.9813 Tj +-251 TJm +(compressed) 47.0334 Tj +72 119.105 Td +(output,) 27.9551 Tj +-250 TJm +(so) 8.85675 Tj +-250 TJm +(this) 14.396 Tj +-250 TJm +(probably) 35.417 Tj +-250 TJm +(rules) 19.3673 Tj +-250 TJm +(out) 12.7322 Tj +-250 TJm +(applications) 48.1492 Tj +-250 TJm +(requiring) 36.5229 Tj +-250 TJm +(interacti) 32.6474 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(e) 4.42339 Tj +-250 TJm +(beha) 18.8094 Tj +20 TJm +(viour) 21.031 Tj +55 TJm +(.) 2.49065 Tj +[1 0 0 1 72 116.949] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -106.986] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 97.1875 Td +/F130_0 9.9626 Tf +(These) 23.7907 Tj +-304 TJm +(aren') 20.4632 Tj +18 TJm +(t) 2.7696 Tj +-304 TJm +(f) 3.31755 Tj +10 TJm +(aults) 18.8194 Tj +-304 TJm +(of) 8.29885 Tj +-304 TJm +(my) 12.7322 Tj +-304 TJm +(implementation,) 65.0359 Tj +-317 TJm +(I) 3.31755 Tj +-304 TJm +(hope,) 21.8579 Tj +-318 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-304 TJm +(more) 20.4731 Tj +-304 TJm +(an) 9.40469 Tj +-304 TJm +(intrinsic) 32.6574 Tj +-304 TJm +(property) 33.7533 Tj +-304 TJm +(of) 8.29885 Tj +-304 TJm +(the) 12.1743 Tj +-304 TJm +(Burro) 23.2427 Tj +25 TJm +(ws-Wheeler) 48.1293 Tj +-304 TJm +(transform) 38.7346 Tj +72 85.2323 Td +(\(unfortunately\).) 62.8042 Tj +-620 TJm +(Maybe) 27.6661 Tj +-250 TJm +(this) 14.396 Tj +-250 TJm +(isn') 14.9439 Tj +18 TJm +(t) 2.7696 Tj +-250 TJm +(what) 19.3673 Tj +-250 TJm +(you) 14.9439 Tj +-250 TJm +(w) 7.193 Tj +10 TJm +(ant.) 14.6649 Tj +[1 0 0 1 72 83.0755] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -22.2611] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7545] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -50.9514] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 50.9514 Td +/F130_0 9.9626 Tf +(33) 9.9626 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 37 37 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 116.328 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -382.4 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +498.728 749.245 Td +/F130_0 9.9626 Tf +(Miscellanea) 48.1393 Tj +[1 0 0 1 266.071 749.146] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -7.0936] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -540 -741.554] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F130_0 9.9626 Tf +(If) 6.63509 Tj +-275 TJm +(you) 14.9439 Tj +-274 TJm +(w) 7.193 Tj +10 TJm +(ant) 12.1743 Tj +-275 TJm +(a) 4.42339 Tj +-274 TJm +(compressor) 45.9276 Tj +-275 TJm +(and/or) 25.4544 Tj +-275 TJm +(library) 26.5603 Tj +-274 TJm +(which) 24.3486 Tj +-275 TJm +(is) 6.64505 Tj +-274 TJm +(f) 3.31755 Tj +10 TJm +(aster) 18.8094 Tj +40 TJm +(,) 2.49065 Tj +-281 TJm +(uses) 17.1556 Tj +-275 TJm +(less) 14.9439 Tj +-274 TJm +(memory) 33.2053 Tj +-275 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-275 TJm +(gets) 16.0497 Tj +-274 TJm +(pretty) 23.2427 Tj +-275 TJm +(good) 19.9252 Tj +-274 TJm +(compression,) 52.8516 Tj +-281 TJm +(and) 14.386 Tj +-275 TJm +(has) 13.2801 Tj +72 698.082 Td +(minimal) 33.2153 Tj +-288 TJm +(latenc) 23.7907 Tj +15 TJm +(y) 4.9813 Tj +65 TJm +(,) 2.49065 Tj +-297 TJm +(consider) 33.7533 Tj +-288 TJm +(Jean-loup) 38.7346 Tj +-288 TJm +(Gailly') 28.224 Tj +55 TJm +(s) 3.87545 Tj +-288 TJm +(and) 14.386 Tj +-288 TJm +(Mark) 21.579 Tj +-288 TJm +(Adl) 14.9439 Tj +1 TJm +(er') 11.0585 Tj +55 TJm +(s) 3.87545 Tj +-288 TJm +(w) 7.193 Tj +10 TJm +(ork,) 15.7708 Tj +[1 0 0 1 353.879 698.082] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -353.879 -698.082] cm +[1 0 0 1 0 0] Tm +0 0 Td +353.879 698.082 Td +/F134_0 9.9626 Tf +(zlib-1.2.1) 59.7756 Tj +[1 0 0 1 413.655 698.082] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -413.655 -698.082] cm +[1 0 0 1 0 0] Tm +0 0 Td +416.523 698.082 Td +/F130_0 9.9626 Tf +(and) 14.386 Tj +[1 0 0 1 433.777 698.082] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -433.777 -698.082] cm +[1 0 0 1 0 0] Tm +0 0 Td +433.777 698.082 Td +/F134_0 9.9626 Tf +(gzip-1.2.4) 59.7756 Tj +[1 0 0 1 493.553 698.082] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.553 -698.082] cm +[1 0 0 1 0 0] Tm +0 0 Td +493.553 698.082 Td +/F130_0 9.9626 Tf +(.) 2.49065 Tj +-847 TJm +(Look) 21.031 Tj +-288 TJm +(for) 11.6164 Tj +72 686.127 Td +(them) 19.9252 Tj +-250 TJm +(at) 7.193 Tj +-250 TJm +(http://www) 45.3896 Tj +65 TJm +(.zlib) 17.4346 Tj +40 TJm +(.or) 10.7895 Tj +18 TJm +(g) 4.9813 Tj +-250 TJm +(and) 14.386 Tj +-250 TJm +(http://www) 45.3896 Tj +65 TJm +(.gzip.or) 30.4357 Tj +18 TJm +(g) 4.9813 Tj +-250 TJm +(respecti) 30.9837 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(ely) 12.1743 Tj +65 TJm +(.) 2.49065 Tj +[1 0 0 1 72 683.97] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -674.008] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 664.209 Td +/F130_0 9.9626 Tf +(F) 5.53921 Tj +15 TJm +(or) 8.29885 Tj +-582 TJm +(something) 41.5142 Tj +-583 TJm +(f) 3.31755 Tj +10 TJm +(aster) 18.8094 Tj +-582 TJm +(and) 14.386 Tj +-582 TJm +(lighter) 26.0123 Tj +-583 TJm +(still,) 17.4445 Tj +-665 TJm +(you) 14.9439 Tj +-582 TJm +(might) 23.2527 Tj +-583 TJm +(try) 11.0684 Tj +-582 TJm +(Markus) 30.4357 Tj +-582 TJm +(F) 5.53921 Tj +-582 TJm +(X) 7.193 Tj +-582 TJm +(J) 3.87545 Tj +-582 TJm +(Oberhumer') 48.6872 Tj +55 TJm +(s) 3.87545 Tj +[1 0 0 1 437.433 664.209] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -437.433 -664.209] cm +[1 0 0 1 0 0] Tm +0 0 Td +437.433 664.209 Td +/F134_0 9.9626 Tf +(LZO) 17.9327 Tj +[1 0 0 1 455.365 664.209] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -455.365 -664.209] cm +[1 0 0 1 0 0] Tm +0 0 Td +461.163 664.209 Td +/F130_0 9.9626 Tf +(real-time) 35.965 Tj +-582 TJm +(compres-) 37.0708 Tj +72 652.254 Td +(sion/decompression) 79.1429 Tj +-250 TJm +(library) 26.5603 Tj +65 TJm +(,) 2.49065 Tj +-250 TJm +(at) 7.193 Tj +-250 TJm +(http://www) 45.3896 Tj +65 TJm +(.oberhumer) 45.6486 Tj +55 TJm +(.com/opensource.) 70.2762 Tj +[1 0 0 1 72 650.097] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -640.135] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 617.501 Td +/F122_0 20.6585 Tf +(4.5.) 34.4584 Tj +-278 TJm +(Fur) 33.2808 Tj +-20 TJm +(ther) 39.0239 Tj +-278 TJm +(Reading) 81.4978 Tj +[1 0 0 1 72 612.905] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9626] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -602.942] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 595.583 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 101.888 595.583] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -101.888 -595.583] cm +[1 0 0 1 0 0] Tm +0 0 Td +104.923 595.583 Td +/F130_0 9.9626 Tf +(is) 6.64505 Tj +-305 TJm +(not) 12.7322 Tj +-304 TJm +(research) 33.1854 Tj +-305 TJm +(w) 7.193 Tj +10 TJm +(ork,) 15.7708 Tj +-318 TJm +(in) 7.7509 Tj +-305 TJm +(the) 12.1743 Tj +-304 TJm +(sense) 21.579 Tj +-305 TJm +(that) 14.9439 Tj +-304 TJm +(it) 5.53921 Tj +-305 TJm +(doesn') 26.5603 Tj +18 TJm +(t) 2.7696 Tj +-305 TJm +(present) 28.772 Tj +-304 TJm +(an) 9.40469 Tj +15 TJm +(y) 4.9813 Tj +-305 TJm +(ne) 9.40469 Tj +25 TJm +(w) 7.193 Tj +-304 TJm +(ideas.) 22.9638 Tj +-474 TJm +(Rather) 26.5603 Tj +40 TJm +(,) 2.49065 Tj +-318 TJm +(it') 8.85675 Tj +55 TJm +(s) 3.87545 Tj +-305 TJm +(an) 9.40469 Tj +-305 TJm +(engineeri) 37.0708 Tj +1 TJm +(ng) 9.9626 Tj +-305 TJm +(e) 4.42339 Tj +15 TJm +(x) 4.9813 Tj +15 TJm +(ercise) 23.2328 Tj +72 583.628 Td +(based) 22.6848 Tj +-250 TJm +(on) 9.9626 Tj +-250 TJm +(e) 4.42339 Tj +15 TJm +(xisting) 27.1282 Tj +-250 TJm +(ideas.) 22.9638 Tj +[1 0 0 1 72 581.471] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -9.9627] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -571.509] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 561.71 Td +/F130_0 9.9626 Tf +(F) 5.53921 Tj +15 TJm +(our) 13.2801 Tj +-250 TJm +(documents) 43.1679 Tj +-250 TJm +(describe) 33.1954 Tj +-250 TJm +(essentially) 42.0621 Tj +-250 TJm +(all) 9.9626 Tj +-250 TJm +(the) 12.1743 Tj +-250 TJm +(ideas) 20.4731 Tj +-250 TJm +(behind) 27.1182 Tj +[1 0 0 1 298.747 561.71] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -298.747 -561.71] cm +[1 0 0 1 0 0] Tm +0 0 Td +298.747 561.71 Td +/F134_0 9.9626 Tf +(bzip2) 29.8878 Tj +[1 0 0 1 328.635 561.71] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -328.635 -561.71] cm +[1 0 0 1 0 0] Tm +0 0 Td +328.635 561.71 Td +/F130_0 9.9626 Tf +(:) 2.7696 Tj +[1 0 0 1 72 559.554] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -299.875] cm +/DeviceRGB {} cs +[0.929398 0.968597 0.956848] sc +/DeviceRGB {} CS +[0.929398 0.968597 0.956848] SC +0 0 468 298.879 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 295.293] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -550.189] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 550.189 Td +/F134_0 9.9626 Tf +(Michael) 41.8429 Tj +-426 TJm +(Burrows) 41.8429 Tj +-426 TJm +(and) 17.9327 Tj +-426 TJm +(D.) 11.9551 Tj +-426 TJm +(J.) 11.9551 Tj +-426 TJm +(Wheeler:) 47.8205 Tj +98.4879 538.234 Td +("A) 11.9551 Tj +-426 TJm +(block-sorting) 77.7083 Tj +-426 TJm +(lossless) 47.8205 Tj +-426 TJm +(data) 23.9102 Tj +-426 TJm +(compression) 65.7532 Tj +-426 TJm +(algorithm") 59.7756 Tj +102.732 526.278 Td +(10th) 23.9102 Tj +-426 TJm +(May) 17.9327 Tj +-426 TJm +(1994.) 29.8878 Tj +102.732 514.323 Td +(Digital) 41.8429 Tj +-426 TJm +(SRC) 17.9327 Tj +-426 TJm +(Research) 47.8205 Tj +-426 TJm +(Report) 35.8654 Tj +-426 TJm +(124.) 23.9102 Tj +102.732 502.368 Td +(ftp://ftp.digital.com/pub/DEC/SRC/research-reports/SRC-124.ps.g\ +z) 382.564 Tj +102.732 490.413 Td +(If) 11.9551 Tj +-426 TJm +(you) 17.9327 Tj +-426 TJm +(have) 23.9102 Tj +-426 TJm +(trouble) 41.8429 Tj +-426 TJm +(finding) 41.8429 Tj +-426 TJm +(it,) 17.9327 Tj +-426 TJm +(try) 17.9327 Tj +-426 TJm +(searching) 53.798 Tj +-426 TJm +(at) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +102.732 478.458 Td +(New) 17.9327 Tj +-426 TJm +(Zealand) 41.8429 Tj +-426 TJm +(Digital) 41.8429 Tj +-426 TJm +(Library,) 47.8205 Tj +-426 TJm +(http://www.nzdl.org.) 119.551 Tj +90 454.547 Td +(Daniel) 35.8654 Tj +-426 TJm +(S.) 11.9551 Tj +-426 TJm +(Hirschberg) 59.7756 Tj +-426 TJm +(and) 17.9327 Tj +-426 TJm +(Debra) 29.8878 Tj +-426 TJm +(A.) 11.9551 Tj +-426 TJm +(LeLewer) 41.8429 Tj +98.4879 442.592 Td +("Efficient) 59.7756 Tj +-426 TJm +(Decoding) 47.8205 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(Prefix) 35.8654 Tj +-426 TJm +(Codes") 35.8654 Tj +102.732 430.637 Td +(Communications) 83.6858 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(ACM,) 23.9102 Tj +-426 TJm +(April) 29.8878 Tj +-426 TJm +(1990,) 29.8878 Tj +-426 TJm +(Vol) 17.9327 Tj +-426 TJm +(33,) 17.9327 Tj +-426 TJm +(Number) 35.8654 Tj +-426 TJm +(4.) 11.9551 Tj +102.732 418.682 Td +(You) 17.9327 Tj +-426 TJm +(might) 29.8878 Tj +-426 TJm +(be) 11.9551 Tj +-426 TJm +(able) 23.9102 Tj +-426 TJm +(to) 11.9551 Tj +-426 TJm +(get) 17.9327 Tj +-426 TJm +(an) 11.9551 Tj +-426 TJm +(electronic) 59.7756 Tj +-426 TJm +(copy) 23.9102 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(this) 23.9102 Tj +102.732 406.727 Td +(from) 23.9102 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(ACM) 17.9327 Tj +-426 TJm +(Digital) 41.8429 Tj +-426 TJm +(Library.) 47.8205 Tj +90 382.816 Td +(David) 29.8878 Tj +-426 TJm +(J.) 11.9551 Tj +-426 TJm +(Wheeler) 41.8429 Tj +102.732 370.861 Td +(Program) 41.8429 Tj +-426 TJm +(bred3.c) 41.8429 Tj +-426 TJm +(and) 17.9327 Tj +-426 TJm +(accompanying) 71.7307 Tj +-426 TJm +(document) 47.8205 Tj +-426 TJm +(bred3.ps.) 53.798 Tj +102.732 358.906 Td +(This) 23.9102 Tj +-426 TJm +(contains) 47.8205 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(idea) 23.9102 Tj +-426 TJm +(behind) 35.8654 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(multi-table) 65.7532 Tj +-426 TJm +(Huffman) 41.8429 Tj +-426 TJm +(coding) 35.8654 Tj +-426 TJm +(scheme.) 41.8429 Tj +102.732 346.951 Td +(ftp://ftp.cl.cam.ac.uk/users/djw3/) 203.237 Tj +90 323.041 Td +(Jon) 17.9327 Tj +-426 TJm +(L.) 11.9551 Tj +-426 TJm +(Bentley) 41.8429 Tj +-426 TJm +(and) 17.9327 Tj +-426 TJm +(Robert) 35.8654 Tj +-426 TJm +(Sedgewick) 53.798 Tj +98.4879 311.085 Td +("Fast) 29.8878 Tj +-426 TJm +(Algorithms) 59.7756 Tj +-426 TJm +(for) 17.9327 Tj +-426 TJm +(Sorting) 41.8429 Tj +-426 TJm +(and) 17.9327 Tj +-426 TJm +(Searching) 53.798 Tj +-426 TJm +(Strings") 47.8205 Tj +102.732 299.13 Td +(Available) 53.798 Tj +-426 TJm +(from) 23.9102 Tj +-426 TJm +(Sedgewick's) 65.7532 Tj +-426 TJm +(web) 17.9327 Tj +-426 TJm +(page,) 29.8878 Tj +102.732 287.175 Td +(www.cs.princeton.edu/~rs) 143.461 Tj +[1 0 0 1 72 259.678] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -249.715] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 237.76 Td +/F130_0 9.9626 Tf +(The) 15.4918 Tj +-239 TJm +(follo) 18.8194 Tj +25 TJm +(wing) 19.9252 Tj +-238 TJm +(paper) 22.1269 Tj +-239 TJm +(gi) 7.7509 Tj +25 TJm +(v) 4.9813 Tj +15 TJm +(es) 8.29885 Tj +-239 TJm +(v) 4.9813 Tj +25 TJm +(aluable) 28.772 Tj +-238 TJm +(additional) 39.8504 Tj +-239 TJm +(insights) 31.0036 Tj +-238 TJm +(into) 15.5018 Tj +-239 TJm +(the) 12.1743 Tj +-239 TJm +(algorithm,) 41.2352 Tj +-241 TJm +(b) 4.9813 Tj +20 TJm +(ut) 7.7509 Tj +-238 TJm +(is) 6.64505 Tj +-239 TJm +(not) 12.7322 Tj +-239 TJm +(immedi) 30.4457 Tj +1 TJm +(ately) 19.3673 Tj +-239 TJm +(the) 12.1743 Tj +-239 TJm +(basis) 19.9252 Tj +-238 TJm +(of) 8.29885 Tj +-239 TJm +(an) 9.40469 Tj +15 TJm +(y) 4.9813 Tj +-239 TJm +(code) 18.8094 Tj +72 225.805 Td +(used) 18.2614 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(bzip2.) 24.6275 Tj +[1 0 0 1 72 223.648] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -72.7273] cm +/DeviceRGB {} cs +[0.929398 0.968597 0.956848] sc +/DeviceRGB {} CS +[0.929398 0.968597 0.956848] SC +0 0 468 71.731 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 68.1444] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -214.283] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 214.283 Td +/F134_0 9.9626 Tf +(Peter) 29.8878 Tj +-426 TJm +(Fenwick:) 47.8205 Tj +102.732 202.328 Td +(Block) 29.8878 Tj +-426 TJm +(Sorting) 41.8429 Tj +-426 TJm +(Text) 23.9102 Tj +-426 TJm +(Compression) 65.7532 Tj +102.732 190.373 Td +(Proceedings) 65.7532 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(19th) 23.9102 Tj +-426 TJm +(Australasian) 71.7307 Tj +-426 TJm +(Computer) 47.8205 Tj +-426 TJm +(Science) 41.8429 Tj +-426 TJm +(Conference,) 65.7532 Tj +111.22 178.418 Td +(Melbourne,) 59.7756 Tj +-426 TJm +(Australia.) 59.7756 Tj +-852 TJm +(Jan) 17.9327 Tj +-426 TJm +(31) 11.9551 Tj +-426 TJm +(-) 5.97756 Tj +-426 TJm +(Feb) 17.9327 Tj +-426 TJm +(2,) 11.9551 Tj +-426 TJm +(1996.) 29.8878 Tj +102.732 166.463 Td +(ftp://ftp.cs.auckland.ac.nz/pub/peter-f/ACSC96paper.ps) 322.788 Tj +[1 0 0 1 72 150.921] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -140.958] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 129.003 Td +/F130_0 9.9626 Tf +(K) 7.193 Tj +15 TJm +(unihik) 25.4644 Tj +10 TJm +(o) 4.9813 Tj +-250 TJm +(Sadakane') 41.4942 Tj +55 TJm +(s) 3.87545 Tj +-250 TJm +(sorting) 27.6761 Tj +-250 TJm +(algorithm,) 41.2352 Tj +-250 TJm +(mentioned) 42.0621 Tj +-250 TJm +(abo) 14.386 Tj +15 TJm +(v) 4.9813 Tj +15 TJm +(e,) 6.91404 Tj +-250 TJm +(is) 6.64505 Tj +-250 TJm +(a) 4.42339 Tj +20 TJm +(v) 4.9813 Tj +25 TJm +(ailable) 26.5603 Tj +-250 TJm +(from:) 22.1369 Tj +[1 0 0 1 72 126.846] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -36.8618] cm +/DeviceRGB {} cs +[0.929398 0.968597 0.956848] sc +/DeviceRGB {} CS +[0.929398 0.968597 0.956848] SC +0 0 468 35.8655 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 32.2789] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -117.482] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 117.482 Td +/F134_0 9.9626 Tf +(http://naomi.is.s.u-tokyo.ac.jp/~sada/papers/Sada98b.ps.gz) 346.698 Tj +[1 0 0 1 72 89.9846] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -29.1702] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.8542] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -50.9514] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 50.9514 Td +/F130_0 9.9626 Tf +(34) 9.9626 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Page: 38 38 +%%BeginPageSetup +%%PageOrientation: Portrait +pdfStartPage +0 0 612 792 re W +%%EndPageSetup +[] 0 d +1 i +0 j +0 J +10 M +1 w +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +false op +false OP +0 0 612 792 re +W +q +[1 0 0 1 72 741.554] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 14.4459] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 187.197 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 -6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 116.328 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -382.4 -749.245] cm +[1 0 0 1 0 0] Tm +0 0 Td +498.728 749.245 Td +/F130_0 9.9626 Tf +(Miscellanea) 48.1393 Tj +[1 0 0 1 266.071 749.146] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 280.796 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -472.974 -7.0936] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -0.4981] cm +q +[] 0 d +0 J +0.4981 w +0 0.2491 m +475.465 0.2491 l +S +Q +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 479.251 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -540 -741.554] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 710.037 Td +/F130_0 9.9626 Tf +(The) 15.4918 Tj +-250 TJm +(Manber) 30.9837 Tj +20 TJm +(-Myers) 28.772 Tj +-250 TJm +(suf) 12.1743 Tj +25 TJm +(\002x) 10.5205 Tj +-250 TJm +(array) 20.4632 Tj +-250 TJm +(construction) 49.2551 Tj +-250 TJm +(algorithm) 38.7446 Tj +-250 TJm +(is) 6.64505 Tj +-250 TJm +(described) 38.1767 Tj +-250 TJm +(in) 7.7509 Tj +-250 TJm +(a) 4.42339 Tj +-250 TJm +(paper) 22.1269 Tj +-250 TJm +(a) 4.42339 Tj +20 TJm +(v) 4.9813 Tj +25 TJm +(ailable) 26.5603 Tj +-250 TJm +(from:) 22.1369 Tj +[1 0 0 1 72 707.88] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -36.8618] cm +/DeviceRGB {} cs +[0.929398 0.968597 0.956848] sc +/DeviceRGB {} CS +[0.929398 0.968597 0.956848] SC +0 0 468 35.8655 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 32.2789] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3685] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -698.516] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 698.516 Td +/F134_0 9.9626 Tf +(http://www.cs.arizona.edu/people/gene/PAPERS/suffix.ps) 322.788 Tj +[1 0 0 1 72 671.019] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -13.5492] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -72 -661.056] cm +[1 0 0 1 0 0] Tm +0 0 Td +72 649.101 Td +/F130_0 9.9626 Tf +(Finally) 28.234 Tj +65 TJm +(,) 2.49065 Tj +-227 TJm +(the) 12.1743 Tj +-221 TJm +(follo) 18.8194 Tj +25 TJm +(wing) 19.9252 Tj +-222 TJm +(papers) 26.0024 Tj +-221 TJm +(document) 39.2925 Tj +-221 TJm +(some) 21.031 Tj +-222 TJm +(in) 7.7509 Tj +40 TJm +(v) 4.9813 Tj +15 TJm +(estig) 18.8194 Tj +5 TJm +(ations) 23.8007 Tj +-221 TJm +(I) 3.31755 Tj +-221 TJm +(made) 21.579 Tj +-222 TJm +(into) 15.5018 Tj +-221 TJm +(the) 12.1743 Tj +-221 TJm +(performance) 50.341 Tj +-222 TJm +(of) 8.29885 Tj +-221 TJm +(sorting) 27.6761 Tj +-221 TJm +(and) 14.386 Tj +-222 TJm +(decompression) 59.7656 Tj +72 637.146 Td +(algorithms:) 45.3896 Tj +[1 0 0 1 72 634.989] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 -132.503] cm +/DeviceRGB {} cs +[0.929398 0.968597 0.956848] sc +/DeviceRGB {} CS +[0.929398 0.968597 0.956848] SC +0 0 468 131.507 re +f +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 127.92] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 18 -8.3686] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -90 -625.624] cm +[1 0 0 1 0 0] Tm +0 0 Td +90 625.624 Td +/F134_0 9.9626 Tf +(Julian) 35.8654 Tj +-426 TJm +(Seward) 35.8654 Tj +102.732 613.669 Td +(On) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(Performance) 65.7532 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(BWT) 17.9327 Tj +-426 TJm +(Sorting) 41.8429 Tj +-426 TJm +(Algorithms) 59.7756 Tj +102.732 601.714 Td +(Proceedings) 65.7532 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(IEEE) 23.9102 Tj +-426 TJm +(Data) 23.9102 Tj +-426 TJm +(Compression) 65.7532 Tj +-426 TJm +(Conference) 59.7756 Tj +-426 TJm +(2000) 23.9102 Tj +111.22 589.759 Td +(Snowbird,) 53.798 Tj +-426 TJm +(Utah.) 29.8878 Tj +-852 TJm +(28-30) 29.8878 Tj +-426 TJm +(March) 29.8878 Tj +-426 TJm +(2000.) 29.8878 Tj +90 565.848 Td +(Julian) 35.8654 Tj +-426 TJm +(Seward) 35.8654 Tj +102.732 553.893 Td +(Space-time) 59.7756 Tj +-426 TJm +(Tradeoffs) 53.798 Tj +-426 TJm +(in) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(Inverse) 41.8429 Tj +-426 TJm +(B-W) 17.9327 Tj +-426 TJm +(Transform) 53.798 Tj +102.732 541.938 Td +(Proceedings) 65.7532 Tj +-426 TJm +(of) 11.9551 Tj +-426 TJm +(the) 17.9327 Tj +-426 TJm +(IEEE) 23.9102 Tj +-426 TJm +(Data) 23.9102 Tj +-426 TJm +(Compression) 65.7532 Tj +-426 TJm +(Conference) 59.7756 Tj +-426 TJm +(2001) 23.9102 Tj +111.22 529.983 Td +(Snowbird,) 53.798 Tj +-426 TJm +(Utah.) 29.8878 Tj +-852 TJm +(27-29) 29.8878 Tj +-426 TJm +(March) 29.8878 Tj +-426 TJm +(2001.) 29.8878 Tj +[1 0 0 1 72 502.486] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 468 3.5866] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -468 -3.5866] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 0 -451.634] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 1.8929 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 374.394 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 2.4907 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 0 6.8541] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 40.5726 -6.7546] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 -493.841 -50.9513] cm +[1 0 0 1 0 0] Tm +0 0 Td +534.414 50.9513 Td +/F130_0 9.9626 Tf +(35) 9.9626 Tj +[1 0 0 1 453.269 50.8518] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 93.5985 0] cm +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +/DeviceRGB {} cs +[0 0 0] sc +/DeviceRGB {} CS +[0 0 0] SC +[1 0 0 1 6.2765 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +[1 0 0 1 -13.1436 0] cm +/DeviceGray {} cs +[0] sc +/DeviceGray {} CS +[0] SC +Q +showpage +%%PageTrailer +pdfEndPage +%%Trailer +end +%%DocumentSuppliedResources: +%%+ font DTUUHP+NimbusSanL-Bold +%%+ font VXAMRV+NimbusRomNo9L-Regu +%%+ font MFECUR+NimbusMonL-Regu +%%+ font ZOVMRD+CMMI10 +%%+ font ERVBFT+NimbusMonL-Bold +%%+ font BZXIEB+CMSY10 +%%+ font WWWUTU+NimbusRomNo9L-ReguItal +%%EOF diff --git a/3party_sloynik/bzip2/manual.xml b/3party_sloynik/bzip2/manual.xml new file mode 100644 index 0000000000..f224136024 --- /dev/null +++ b/3party_sloynik/bzip2/manual.xml @@ -0,0 +1,2964 @@ + + + %common-ents; +]> + + + + + bzip2 and libbzip2, version 1.0.5 + A program and library for data compression + + &bz-lifespan; + Julian Seward + + Version &bz-version; of &bz-date; + + + + Julian + Seward + + &bz-url; + + + + + + + This program, bzip2, the + associated library libbzip2, and + all documentation, are copyright © &bz-lifespan; Julian Seward. + All rights reserved. + + Redistribution and use in source and binary forms, with + or without modification, are permitted provided that the + following conditions are met: + + + + Redistributions of source code must retain the + above copyright notice, this list of conditions and the + following disclaimer. + + The origin of this software must not be + misrepresented; you must not claim that you wrote the original + software. If you use this software in a product, an + acknowledgment in the product documentation would be + appreciated but is not required. + + Altered source versions must be plainly marked + as such, and must not be misrepresented as being the original + software. + + The name of the author may not be used to + endorse or promote products derived from this software without + specific prior written permission. + + + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + + PATENTS: To the best of my knowledge, + bzip2 and + libbzip2 do not use any patented + algorithms. However, I do not have the resources to carry + out a patent search. Therefore I cannot give any guarantee of + the above statement. + + + + + + + + + +Introduction + +bzip2 compresses files +using the Burrows-Wheeler block-sorting text compression +algorithm, and Huffman coding. Compression is generally +considerably better than that achieved by more conventional +LZ77/LZ78-based compressors, and approaches the performance of +the PPM family of statistical compressors. + +bzip2 is built on top of +libbzip2, a flexible library for +handling compressed data in the +bzip2 format. This manual +describes both how to use the program and how to work with the +library interface. Most of the manual is devoted to this +library, not the program, which is good news if your interest is +only in the program. + + + + describes how to use + bzip2; this is the only part + you need to read if you just want to know how to operate the + program. + + describes the + programming interfaces in detail, and + + records some + miscellaneous notes which I thought ought to be recorded + somewhere. + + + + + + + +How to use bzip2 + +This chapter contains a copy of the +bzip2 man page, and nothing +else. + + +NAME + + + + bzip2, + bunzip2 - a block-sorting file + compressor, v1.0.4 + + bzcat - + decompresses files to stdout + + bzip2recover - + recovers data from damaged bzip2 files + + + + + + + +SYNOPSIS + + + + bzip2 [ + -cdfkqstvzVL123456789 ] [ filenames ... ] + + bunzip2 [ + -fkvsVL ] [ filenames ... ] + + bzcat [ -s ] [ + filenames ... ] + + bzip2recover + filename + + + + + + + +DESCRIPTION + +bzip2 compresses files +using the Burrows-Wheeler block sorting text compression +algorithm, and Huffman coding. Compression is generally +considerably better than that achieved by more conventional +LZ77/LZ78-based compressors, and approaches the performance of +the PPM family of statistical compressors. + +The command-line options are deliberately very similar to +those of GNU gzip, but they are +not identical. + +bzip2 expects a list of +file names to accompany the command-line flags. Each file is +replaced by a compressed version of itself, with the name +original_name.bz2. Each +compressed file has the same modification date, permissions, and, +when possible, ownership as the corresponding original, so that +these properties can be correctly restored at decompression time. +File name handling is naive in the sense that there is no +mechanism for preserving original file names, permissions, +ownerships or dates in filesystems which lack these concepts, or +have serious file name length restrictions, such as +MS-DOS. + +bzip2 and +bunzip2 will by default not +overwrite existing files. If you want this to happen, specify +the -f flag. + +If no file names are specified, +bzip2 compresses from standard +input to standard output. In this case, +bzip2 will decline to write +compressed output to a terminal, as this would be entirely +incomprehensible and therefore pointless. + +bunzip2 (or +bzip2 -d) decompresses all +specified files. Files which were not created by +bzip2 will be detected and +ignored, and a warning issued. +bzip2 attempts to guess the +filename for the decompressed file from that of the compressed +file as follows: + + + + filename.bz2 + becomes + filename + + filename.bz + becomes + filename + + filename.tbz2 + becomes + filename.tar + + filename.tbz + becomes + filename.tar + + anyothername + becomes + anyothername.out + + + +If the file does not end in one of the recognised endings, +.bz2, +.bz, +.tbz2 or +.tbz, +bzip2 complains that it cannot +guess the name of the original file, and uses the original name +with .out appended. + +As with compression, supplying no filenames causes +decompression from standard input to standard output. + +bunzip2 will correctly +decompress a file which is the concatenation of two or more +compressed files. The result is the concatenation of the +corresponding uncompressed files. Integrity testing +(-t) of concatenated compressed +files is also supported. + +You can also compress or decompress files to the standard +output by giving the -c flag. +Multiple files may be compressed and decompressed like this. The +resulting outputs are fed sequentially to stdout. Compression of +multiple files in this manner generates a stream containing +multiple compressed file representations. Such a stream can be +decompressed correctly only by +bzip2 version 0.9.0 or later. +Earlier versions of bzip2 will +stop after decompressing the first file in the stream. + +bzcat (or +bzip2 -dc) decompresses all +specified files to the standard output. + +bzip2 will read arguments +from the environment variables +BZIP2 and +BZIP, in that order, and will +process them before any arguments read from the command line. +This gives a convenient way to supply default arguments. + +Compression is always performed, even if the compressed +file is slightly larger than the original. Files of less than +about one hundred bytes tend to get larger, since the compression +mechanism has a constant overhead in the region of 50 bytes. +Random data (including the output of most file compressors) is +coded at about 8.05 bits per byte, giving an expansion of around +0.5%. + +As a self-check for your protection, +bzip2 uses 32-bit CRCs to make +sure that the decompressed version of a file is identical to the +original. This guards against corruption of the compressed data, +and against undetected bugs in +bzip2 (hopefully very unlikely). +The chances of data corruption going undetected is microscopic, +about one chance in four billion for each file processed. Be +aware, though, that the check occurs upon decompression, so it +can only tell you that something is wrong. It can't help you +recover the original uncompressed data. You can use +bzip2recover to try to recover +data from damaged files. + +Return values: 0 for a normal exit, 1 for environmental +problems (file not found, invalid flags, I/O errors, etc.), 2 +to indicate a corrupt compressed file, 3 for an internal +consistency error (eg, bug) which caused +bzip2 to panic. + + + + + +OPTIONS + + + + + -c --stdout + Compress or decompress to standard + output. + + + + -d --decompress + Force decompression. + bzip2, + bunzip2 and + bzcat are really the same + program, and the decision about what actions to take is done on + the basis of which name is used. This flag overrides that + mechanism, and forces bzip2 to decompress. + + + + -z --compress + The complement to + -d: forces compression, + regardless of the invokation name. + + + + -t --test + Check integrity of the specified file(s), but + don't decompress them. This really performs a trial + decompression and throws away the result. + + + + -f --force + Force overwrite of output files. Normally, + bzip2 will not overwrite + existing output files. Also forces + bzip2 to break hard links to + files, which it otherwise wouldn't do. + bzip2 normally declines + to decompress files which don't have the correct magic header + bytes. If forced (-f), + however, it will pass such files through unmodified. This is + how GNU gzip behaves. + + + + + -k --keep + Keep (don't delete) input files during + compression or decompression. + + + + -s --small + Reduce memory usage, for compression, + decompression and testing. Files are decompressed and tested + using a modified algorithm which only requires 2.5 bytes per + block byte. This means any file can be decompressed in 2300k + of memory, albeit at about half the normal speed. + During compression, -s + selects a block size of 200k, which limits memory use to around + the same figure, at the expense of your compression ratio. In + short, if your machine is low on memory (8 megabytes or less), + use -s for everything. See + below. + + + + -q --quiet + Suppress non-essential warning messages. + Messages pertaining to I/O errors and other critical events + will not be suppressed. + + + + -v --verbose + Verbose mode -- show the compression ratio for + each file processed. Further + -v's increase the verbosity + level, spewing out lots of information which is primarily of + interest for diagnostic purposes. + + + + -L --license -V --version + Display the software version, license terms and + conditions. + + + + -1 (or + --fast) to + -9 (or + -best) + Set the block size to 100 k, 200 k ... 900 k + when compressing. Has no effect when decompressing. See below. The + --fast and + --best aliases are primarily + for GNU gzip compatibility. + In particular, --fast doesn't + make things significantly faster. And + --best merely selects the + default behaviour. + + + + -- + Treats all subsequent arguments as file names, + even if they start with a dash. This is so you can handle + files with names beginning with a dash, for example: + bzip2 -- + -myfilename. + + + + --repetitive-fast + --repetitive-best + These flags are redundant in versions 0.9.5 and + above. They provided some coarse control over the behaviour of + the sorting algorithm in earlier versions, which was sometimes + useful. 0.9.5 and above have an improved algorithm which + renders these flags irrelevant. + + + + + + + + +MEMORY MANAGEMENT + +bzip2 compresses large +files in blocks. The block size affects both the compression +ratio achieved, and the amount of memory needed for compression +and decompression. The flags -1 +through -9 specify the block +size to be 100,000 bytes through 900,000 bytes (the default) +respectively. At decompression time, the block size used for +compression is read from the header of the compressed file, and +bunzip2 then allocates itself +just enough memory to decompress the file. Since block sizes are +stored in compressed files, it follows that the flags +-1 to +-9 are irrelevant to and so +ignored during decompression. + +Compression and decompression requirements, in bytes, can be +estimated as: + +Compression: 400k + ( 8 x block size ) + +Decompression: 100k + ( 4 x block size ), or + 100k + ( 2.5 x block size ) + + +Larger block sizes give rapidly diminishing marginal +returns. Most of the compression comes from the first two or +three hundred k of block size, a fact worth bearing in mind when +using bzip2 on small machines. +It is also important to appreciate that the decompression memory +requirement is set at compression time by the choice of block +size. + +For files compressed with the default 900k block size, +bunzip2 will require about 3700 +kbytes to decompress. To support decompression of any file on a +4 megabyte machine, bunzip2 has +an option to decompress using approximately half this amount of +memory, about 2300 kbytes. Decompression speed is also halved, +so you should use this option only where necessary. The relevant +flag is -s. + +In general, try and use the largest block size memory +constraints allow, since that maximises the compression achieved. +Compression and decompression speed are virtually unaffected by +block size. + +Another significant point applies to files which fit in a +single block -- that means most files you'd encounter using a +large block size. The amount of real memory touched is +proportional to the size of the file, since the file is smaller +than a block. For example, compressing a file 20,000 bytes long +with the flag -9 will cause the +compressor to allocate around 7600k of memory, but only touch +400k + 20000 * 8 = 560 kbytes of it. Similarly, the decompressor +will allocate 3700k but only touch 100k + 20000 * 4 = 180 +kbytes. + +Here is a table which summarises the maximum memory usage +for different block sizes. Also recorded is the total compressed +size for 14 files of the Calgary Text Compression Corpus +totalling 3,141,622 bytes. This column gives some feel for how +compression varies with block size. These figures tend to +understate the advantage of larger block sizes for larger files, +since the Corpus is dominated by smaller files. + + + Compress Decompress Decompress Corpus +Flag usage usage -s usage Size + + -1 1200k 500k 350k 914704 + -2 2000k 900k 600k 877703 + -3 2800k 1300k 850k 860338 + -4 3600k 1700k 1100k 846899 + -5 4400k 2100k 1350k 845160 + -6 5200k 2500k 1600k 838626 + -7 6100k 2900k 1850k 834096 + -8 6800k 3300k 2100k 828642 + -9 7600k 3700k 2350k 828642 + + + + + + +RECOVERING DATA FROM DAMAGED FILES + +bzip2 compresses files in +blocks, usually 900kbytes long. Each block is handled +independently. If a media or transmission error causes a +multi-block .bz2 file to become +damaged, it may be possible to recover data from the undamaged +blocks in the file. + +The compressed representation of each block is delimited by +a 48-bit pattern, which makes it possible to find the block +boundaries with reasonable certainty. Each block also carries +its own 32-bit CRC, so damaged blocks can be distinguished from +undamaged ones. + +bzip2recover is a simple +program whose purpose is to search for blocks in +.bz2 files, and write each block +out into its own .bz2 file. You +can then use bzip2 -t to test +the integrity of the resulting files, and decompress those which +are undamaged. + +bzip2recover takes a +single argument, the name of the damaged file, and writes a +number of files rec0001file.bz2, +rec0002file.bz2, etc, containing +the extracted blocks. The output filenames are designed so that +the use of wildcards in subsequent processing -- for example, +bzip2 -dc rec*file.bz2 > +recovered_data -- lists the files in the correct +order. + +bzip2recover should be of +most use dealing with large .bz2 +files, as these will contain many blocks. It is clearly futile +to use it on damaged single-block files, since a damaged block +cannot be recovered. If you wish to minimise any potential data +loss through media or transmission errors, you might consider +compressing with a smaller block size. + + + + + +PERFORMANCE NOTES + +The sorting phase of compression gathers together similar +strings in the file. Because of this, files containing very long +runs of repeated symbols, like "aabaabaabaab ..." (repeated +several hundred times) may compress more slowly than normal. +Versions 0.9.5 and above fare much better than previous versions +in this respect. The ratio between worst-case and average-case +compression time is in the region of 10:1. For previous +versions, this figure was more like 100:1. You can use the +-vvvv option to monitor progress +in great detail, if you want. + +Decompression speed is unaffected by these +phenomena. + +bzip2 usually allocates +several megabytes of memory to operate in, and then charges all +over it in a fairly random fashion. This means that performance, +both for compressing and decompressing, is largely determined by +the speed at which your machine can service cache misses. +Because of this, small changes to the code to reduce the miss +rate have been observed to give disproportionately large +performance improvements. I imagine +bzip2 will perform best on +machines with very large caches. + + + + + + +CAVEATS + +I/O error messages are not as helpful as they could be. +bzip2 tries hard to detect I/O +errors and exit cleanly, but the details of what the problem is +sometimes seem rather misleading. + +This manual page pertains to version &bz-version; of +bzip2. Compressed data created by +this version is entirely forwards and backwards compatible with the +previous public releases, versions 0.1pl2, 0.9.0 and 0.9.5, 1.0.0, +1.0.1, 1.0.2 and 1.0.3, but with the following exception: 0.9.0 and +above can correctly decompress multiple concatenated compressed files. +0.1pl2 cannot do this; it will stop after decompressing just the first +file in the stream. + +bzip2recover versions +prior to 1.0.2 used 32-bit integers to represent bit positions in +compressed files, so it could not handle compressed files more +than 512 megabytes long. Versions 1.0.2 and above use 64-bit ints +on some platforms which support them (GNU supported targets, and +Windows). To establish whether or not +bzip2recover was built with such +a limitation, run it without arguments. In any event you can +build yourself an unlimited version if you can recompile it with +MaybeUInt64 set to be an +unsigned 64-bit integer. + + + + + + +AUTHOR + +Julian Seward, +&bz-email; + +The ideas embodied in +bzip2 are due to (at least) the +following people: Michael Burrows and David Wheeler (for the +block sorting transformation), David Wheeler (again, for the +Huffman coder), Peter Fenwick (for the structured coding model in +the original bzip, and many +refinements), and Alistair Moffat, Radford Neal and Ian Witten +(for the arithmetic coder in the original +bzip). I am much indebted for +their help, support and advice. See the manual in the source +distribution for pointers to sources of documentation. Christian +von Roques encouraged me to look for faster sorting algorithms, +so as to speed up compression. Bela Lubkin encouraged me to +improve the worst-case compression performance. +Donna Robinson XMLised the documentation. +Many people sent +patches, helped with portability problems, lent machines, gave +advice and were generally helpful. + + + + + + + + + +Programming with <computeroutput>libbzip2</computeroutput> + + +This chapter describes the programming interface to +libbzip2. + +For general background information, particularly about +memory use and performance aspects, you'd be well advised to read + as well. + + + +Top-level structure + +libbzip2 is a flexible +library for compressing and decompressing data in the +bzip2 data format. Although +packaged as a single entity, it helps to regard the library as +three separate parts: the low level interface, and the high level +interface, and some utility functions. + +The structure of +libbzip2's interfaces is similar +to that of Jean-loup Gailly's and Mark Adler's excellent +zlib library. + +All externally visible symbols have names beginning +BZ2_. This is new in version +1.0. The intention is to minimise pollution of the namespaces of +library clients. + +To use any part of the library, you need to +#include <bzlib.h> +into your sources. + + + + +Low-level summary + +This interface provides services for compressing and +decompressing data in memory. There's no provision for dealing +with files, streams or any other I/O mechanisms, just straight +memory-to-memory work. In fact, this part of the library can be +compiled without inclusion of +stdio.h, which may be helpful +for embedded applications. + +The low-level part of the library has no global variables +and is therefore thread-safe. + +Six routines make up the low level interface: +BZ2_bzCompressInit, +BZ2_bzCompress, and +BZ2_bzCompressEnd for +compression, and a corresponding trio +BZ2_bzDecompressInit, +BZ2_bzDecompress and +BZ2_bzDecompressEnd for +decompression. The *Init +functions allocate memory for compression/decompression and do +other initialisations, whilst the +*End functions close down +operations and release memory. + +The real work is done by +BZ2_bzCompress and +BZ2_bzDecompress. These +compress and decompress data from a user-supplied input buffer to +a user-supplied output buffer. These buffers can be any size; +arbitrary quantities of data are handled by making repeated calls +to these functions. This is a flexible mechanism allowing a +consumer-pull style of activity, or producer-push, or a mixture +of both. + + + + + +High-level summary + +This interface provides some handy wrappers around the +low-level interface to facilitate reading and writing +bzip2 format files +(.bz2 files). The routines +provide hooks to facilitate reading files in which the +bzip2 data stream is embedded +within some larger-scale file structure, or where there are +multiple bzip2 data streams +concatenated end-to-end. + +For reading files, +BZ2_bzReadOpen, +BZ2_bzRead, +BZ2_bzReadClose and +BZ2_bzReadGetUnused are +supplied. For writing files, +BZ2_bzWriteOpen, +BZ2_bzWrite and +BZ2_bzWriteFinish are +available. + +As with the low-level library, no global variables are used +so the library is per se thread-safe. However, if I/O errors +occur whilst reading or writing the underlying compressed files, +you may have to consult errno to +determine the cause of the error. In that case, you'd need a C +library which correctly supports +errno in a multithreaded +environment. + +To make the library a little simpler and more portable, +BZ2_bzReadOpen and +BZ2_bzWriteOpen require you to +pass them file handles (FILE*s) +which have previously been opened for reading or writing +respectively. That avoids portability problems associated with +file operations and file attributes, whilst not being much of an +imposition on the programmer. + + + + + +Utility functions summary + +For very simple needs, +BZ2_bzBuffToBuffCompress and +BZ2_bzBuffToBuffDecompress are +provided. These compress data in memory from one buffer to +another buffer in a single function call. You should assess +whether these functions fulfill your memory-to-memory +compression/decompression requirements before investing effort in +understanding the more general but more complex low-level +interface. + +Yoshioka Tsuneo +(tsuneo@rr.iij4u.or.jp) has +contributed some functions to give better +zlib compatibility. These +functions are BZ2_bzopen, +BZ2_bzread, +BZ2_bzwrite, +BZ2_bzflush, +BZ2_bzclose, +BZ2_bzerror and +BZ2_bzlibVersion. You may find +these functions more convenient for simple file reading and +writing, than those in the high-level interface. These functions +are not (yet) officially part of the library, and are minimally +documented here. If they break, you get to keep all the pieces. +I hope to document them properly when time permits. + +Yoshioka also contributed modifications to allow the +library to be built as a Windows DLL. + + + + + + + +Error handling + +The library is designed to recover cleanly in all +situations, including the worst-case situation of decompressing +random data. I'm not 100% sure that it can always do this, so +you might want to add a signal handler to catch segmentation +violations during decompression if you are feeling especially +paranoid. I would be interested in hearing more about the +robustness of the library to corrupted compressed data. + +Version 1.0.3 more robust in this respect than any +previous version. Investigations with Valgrind (a tool for detecting +problems with memory management) indicate +that, at least for the few files I tested, all single-bit errors +in the decompressed data are caught properly, with no +segmentation faults, no uses of uninitialised data, no out of +range reads or writes, and no infinite looping in the decompressor. +So it's certainly pretty robust, although +I wouldn't claim it to be totally bombproof. + +The file bzlib.h contains +all definitions needed to use the library. In particular, you +should definitely not include +bzlib_private.h. + +In bzlib.h, the various +return values are defined. The following list is not intended as +an exhaustive description of the circumstances in which a given +value may be returned -- those descriptions are given later. +Rather, it is intended to convey the rough meaning of each return +value. The first five actions are normal and not intended to +denote an error situation. + + + + + BZ_OK + The requested action was completed + successfully. + + + + BZ_RUN_OK, BZ_FLUSH_OK, + BZ_FINISH_OK + In + BZ2_bzCompress, the requested + flush/finish/nothing-special action was completed + successfully. + + + + BZ_STREAM_END + Compression of data was completed, or the + logical stream end was detected during + decompression. + + + + +The following return values indicate an error of some +kind. + + + + + BZ_CONFIG_ERROR + Indicates that the library has been improperly + compiled on your platform -- a major configuration error. + Specifically, it means that + sizeof(char), + sizeof(short) and + sizeof(int) are not 1, 2 and + 4 respectively, as they should be. Note that the library + should still work properly on 64-bit platforms which follow + the LP64 programming model -- that is, where + sizeof(long) and + sizeof(void*) are 8. Under + LP64, sizeof(int) is still 4, + so libbzip2, which doesn't + use the long type, is + OK. + + + + BZ_SEQUENCE_ERROR + When using the library, it is important to call + the functions in the correct sequence and with data structures + (buffers etc) in the correct states. + libbzip2 checks as much as it + can to ensure this is happening, and returns + BZ_SEQUENCE_ERROR if not. + Code which complies precisely with the function semantics, as + detailed below, should never receive this value; such an event + denotes buggy code which you should + investigate. + + + + BZ_PARAM_ERROR + Returned when a parameter to a function call is + out of range or otherwise manifestly incorrect. As with + BZ_SEQUENCE_ERROR, this + denotes a bug in the client code. The distinction between + BZ_PARAM_ERROR and + BZ_SEQUENCE_ERROR is a bit + hazy, but still worth making. + + + + BZ_MEM_ERROR + Returned when a request to allocate memory + failed. Note that the quantity of memory needed to decompress + a stream cannot be determined until the stream's header has + been read. So + BZ2_bzDecompress and + BZ2_bzRead may return + BZ_MEM_ERROR even though some + of the compressed data has been read. The same is not true + for compression; once + BZ2_bzCompressInit or + BZ2_bzWriteOpen have + successfully completed, + BZ_MEM_ERROR cannot + occur. + + + + BZ_DATA_ERROR + Returned when a data integrity error is + detected during decompression. Most importantly, this means + when stored and computed CRCs for the data do not match. This + value is also returned upon detection of any other anomaly in + the compressed data. + + + + BZ_DATA_ERROR_MAGIC + As a special case of + BZ_DATA_ERROR, it is + sometimes useful to know when the compressed stream does not + start with the correct magic bytes ('B' 'Z' + 'h'). + + + + BZ_IO_ERROR + Returned by + BZ2_bzRead and + BZ2_bzWrite when there is an + error reading or writing in the compressed file, and by + BZ2_bzReadOpen and + BZ2_bzWriteOpen for attempts + to use a file for which the error indicator (viz, + ferror(f)) is set. On + receipt of BZ_IO_ERROR, the + caller should consult errno + and/or perror to acquire + operating-system specific information about the + problem. + + + + BZ_UNEXPECTED_EOF + Returned by + BZ2_bzRead when the + compressed file finishes before the logical end of stream is + detected. + + + + BZ_OUTBUFF_FULL + Returned by + BZ2_bzBuffToBuffCompress and + BZ2_bzBuffToBuffDecompress to + indicate that the output data will not fit into the output + buffer provided. + + + + + + + + + +Low-level interface + + + +<computeroutput>BZ2_bzCompressInit</computeroutput> + + +typedef struct { + char *next_in; + unsigned int avail_in; + unsigned int total_in_lo32; + unsigned int total_in_hi32; + + char *next_out; + unsigned int avail_out; + unsigned int total_out_lo32; + unsigned int total_out_hi32; + + void *state; + + void *(*bzalloc)(void *,int,int); + void (*bzfree)(void *,void *); + void *opaque; +} bz_stream; + +int BZ2_bzCompressInit ( bz_stream *strm, + int blockSize100k, + int verbosity, + int workFactor ); + + +Prepares for compression. The +bz_stream structure holds all +data pertaining to the compression activity. A +bz_stream structure should be +allocated and initialised prior to the call. The fields of +bz_stream comprise the entirety +of the user-visible data. state +is a pointer to the private data structures required for +compression. + +Custom memory allocators are supported, via fields +bzalloc, +bzfree, and +opaque. The value +opaque is passed to as the first +argument to all calls to bzalloc +and bzfree, but is otherwise +ignored by the library. The call bzalloc ( +opaque, n, m ) is expected to return a pointer +p to n * +m bytes of memory, and bzfree ( +opaque, p ) should free that memory. + +If you don't want to use a custom memory allocator, set +bzalloc, +bzfree and +opaque to +NULL, and the library will then +use the standard malloc / +free routines. + +Before calling +BZ2_bzCompressInit, fields +bzalloc, +bzfree and +opaque should be filled +appropriately, as just described. Upon return, the internal +state will have been allocated and initialised, and +total_in_lo32, +total_in_hi32, +total_out_lo32 and +total_out_hi32 will have been +set to zero. These four fields are used by the library to inform +the caller of the total amount of data passed into and out of the +library, respectively. You should not try to change them. As of +version 1.0, 64-bit counts are maintained, even on 32-bit +platforms, using the _hi32 +fields to store the upper 32 bits of the count. So, for example, +the total amount of data in is (total_in_hi32 +<< 32) + total_in_lo32. + +Parameter blockSize100k +specifies the block size to be used for compression. It should +be a value between 1 and 9 inclusive, and the actual block size +used is 100000 x this figure. 9 gives the best compression but +takes most memory. + +Parameter verbosity should +be set to a number between 0 and 4 inclusive. 0 is silent, and +greater numbers give increasingly verbose monitoring/debugging +output. If the library has been compiled with +-DBZ_NO_STDIO, no such output +will appear for any verbosity setting. + +Parameter workFactor +controls how the compression phase behaves when presented with +worst case, highly repetitive, input data. If compression runs +into difficulties caused by repetitive data, the library switches +from the standard sorting algorithm to a fallback algorithm. The +fallback is slower than the standard algorithm by perhaps a +factor of three, but always behaves reasonably, no matter how bad +the input. + +Lower values of workFactor +reduce the amount of effort the standard algorithm will expend +before resorting to the fallback. You should set this parameter +carefully; too low, and many inputs will be handled by the +fallback algorithm and so compress rather slowly, too high, and +your average-to-worst case compression times can become very +large. The default value of 30 gives reasonable behaviour over a +wide range of circumstances. + +Allowable values range from 0 to 250 inclusive. 0 is a +special case, equivalent to using the default value of 30. + +Note that the compressed output generated is the same +regardless of whether or not the fallback algorithm is +used. + +Be aware also that this parameter may disappear entirely in +future versions of the library. In principle it should be +possible to devise a good way to automatically choose which +algorithm to use. Such a mechanism would render the parameter +obsolete. + +Possible return values: + + +BZ_CONFIG_ERROR + if the library has been mis-compiled +BZ_PARAM_ERROR + if strm is NULL + or blockSize < 1 or blockSize > 9 + or verbosity < 0 or verbosity > 4 + or workFactor < 0 or workFactor > 250 +BZ_MEM_ERROR + if not enough memory is available +BZ_OK + otherwise + + +Allowable next actions: + + +BZ2_bzCompress + if BZ_OK is returned + no specific action needed in case of error + + + + + + +<computeroutput>BZ2_bzCompress</computeroutput> + + +int BZ2_bzCompress ( bz_stream *strm, int action ); + + +Provides more input and/or output buffer space for the +library. The caller maintains input and output buffers, and +calls BZ2_bzCompress to transfer +data between them. + +Before each call to +BZ2_bzCompress, +next_in should point at the data +to be compressed, and avail_in +should indicate how many bytes the library may read. +BZ2_bzCompress updates +next_in, +avail_in and +total_in to reflect the number +of bytes it has read. + +Similarly, next_out should +point to a buffer in which the compressed data is to be placed, +with avail_out indicating how +much output space is available. +BZ2_bzCompress updates +next_out, +avail_out and +total_out to reflect the number +of bytes output. + +You may provide and remove as little or as much data as you +like on each call of +BZ2_bzCompress. In the limit, +it is acceptable to supply and remove data one byte at a time, +although this would be terribly inefficient. You should always +ensure that at least one byte of output space is available at +each call. + +A second purpose of +BZ2_bzCompress is to request a +change of mode of the compressed stream. + +Conceptually, a compressed stream can be in one of four +states: IDLE, RUNNING, FLUSHING and FINISHING. Before +initialisation +(BZ2_bzCompressInit) and after +termination (BZ2_bzCompressEnd), +a stream is regarded as IDLE. + +Upon initialisation +(BZ2_bzCompressInit), the stream +is placed in the RUNNING state. Subsequent calls to +BZ2_bzCompress should pass +BZ_RUN as the requested action; +other actions are illegal and will result in +BZ_SEQUENCE_ERROR. + +At some point, the calling program will have provided all +the input data it wants to. It will then want to finish up -- in +effect, asking the library to process any data it might have +buffered internally. In this state, +BZ2_bzCompress will no longer +attempt to read data from +next_in, but it will want to +write data to next_out. Because +the output buffer supplied by the user can be arbitrarily small, +the finishing-up operation cannot necessarily be done with a +single call of +BZ2_bzCompress. + +Instead, the calling program passes +BZ_FINISH as an action to +BZ2_bzCompress. This changes +the stream's state to FINISHING. Any remaining input (ie, +next_in[0 .. avail_in-1]) is +compressed and transferred to the output buffer. To do this, +BZ2_bzCompress must be called +repeatedly until all the output has been consumed. At that +point, BZ2_bzCompress returns +BZ_STREAM_END, and the stream's +state is set back to IDLE. +BZ2_bzCompressEnd should then be +called. + +Just to make sure the calling program does not cheat, the +library makes a note of avail_in +at the time of the first call to +BZ2_bzCompress which has +BZ_FINISH as an action (ie, at +the time the program has announced its intention to not supply +any more input). By comparing this value with that of +avail_in over subsequent calls +to BZ2_bzCompress, the library +can detect any attempts to slip in more data to compress. Any +calls for which this is detected will return +BZ_SEQUENCE_ERROR. This +indicates a programming mistake which should be corrected. + +Instead of asking to finish, the calling program may ask +BZ2_bzCompress to take all the +remaining input, compress it and terminate the current +(Burrows-Wheeler) compression block. This could be useful for +error control purposes. The mechanism is analogous to that for +finishing: call BZ2_bzCompress +with an action of BZ_FLUSH, +remove output data, and persist with the +BZ_FLUSH action until the value +BZ_RUN is returned. As with +finishing, BZ2_bzCompress +detects any attempt to provide more input data once the flush has +begun. + +Once the flush is complete, the stream returns to the +normal RUNNING state. + +This all sounds pretty complex, but isn't really. Here's a +table which shows which actions are allowable in each state, what +action will be taken, what the next state is, and what the +non-error return values are. Note that you can't explicitly ask +what state the stream is in, but nor do you need to -- it can be +inferred from the values returned by +BZ2_bzCompress. + + +IDLE/any + Illegal. IDLE state only exists after BZ2_bzCompressEnd or + before BZ2_bzCompressInit. + Return value = BZ_SEQUENCE_ERROR + +RUNNING/BZ_RUN + Compress from next_in to next_out as much as possible. + Next state = RUNNING + Return value = BZ_RUN_OK + +RUNNING/BZ_FLUSH + Remember current value of next_in. Compress from next_in + to next_out as much as possible, but do not accept any more input. + Next state = FLUSHING + Return value = BZ_FLUSH_OK + +RUNNING/BZ_FINISH + Remember current value of next_in. Compress from next_in + to next_out as much as possible, but do not accept any more input. + Next state = FINISHING + Return value = BZ_FINISH_OK + +FLUSHING/BZ_FLUSH + Compress from next_in to next_out as much as possible, + but do not accept any more input. + If all the existing input has been used up and all compressed + output has been removed + Next state = RUNNING; Return value = BZ_RUN_OK + else + Next state = FLUSHING; Return value = BZ_FLUSH_OK + +FLUSHING/other + Illegal. + Return value = BZ_SEQUENCE_ERROR + +FINISHING/BZ_FINISH + Compress from next_in to next_out as much as possible, + but to not accept any more input. + If all the existing input has been used up and all compressed + output has been removed + Next state = IDLE; Return value = BZ_STREAM_END + else + Next state = FINISHING; Return value = BZ_FINISH_OK + +FINISHING/other + Illegal. + Return value = BZ_SEQUENCE_ERROR + + + +That still looks complicated? Well, fair enough. The +usual sequence of calls for compressing a load of data is: + + + + Get started with + BZ2_bzCompressInit. + + Shovel data in and shlurp out its compressed form + using zero or more calls of + BZ2_bzCompress with action = + BZ_RUN. + + Finish up. Repeatedly call + BZ2_bzCompress with action = + BZ_FINISH, copying out the + compressed output, until + BZ_STREAM_END is + returned. Close up and go home. Call + BZ2_bzCompressEnd. + + + +If the data you want to compress fits into your input +buffer all at once, you can skip the calls of +BZ2_bzCompress ( ..., BZ_RUN ) +and just do the BZ2_bzCompress ( ..., BZ_FINISH +) calls. + +All required memory is allocated by +BZ2_bzCompressInit. The +compression library can accept any data at all (obviously). So +you shouldn't get any error return values from the +BZ2_bzCompress calls. If you +do, they will be +BZ_SEQUENCE_ERROR, and indicate +a bug in your programming. + +Trivial other possible return values: + + +BZ_PARAM_ERROR + if strm is NULL, or strm->s is NULL + + + + + + +<computeroutput>BZ2_bzCompressEnd</computeroutput> + + +int BZ2_bzCompressEnd ( bz_stream *strm ); + + +Releases all memory associated with a compression +stream. + +Possible return values: + + +BZ_PARAM_ERROR if strm is NULL or strm->s is NULL +BZ_OK otherwise + + + + + + +<computeroutput>BZ2_bzDecompressInit</computeroutput> + + +int BZ2_bzDecompressInit ( bz_stream *strm, int verbosity, int small ); + + +Prepares for decompression. As with +BZ2_bzCompressInit, a +bz_stream record should be +allocated and initialised before the call. Fields +bzalloc, +bzfree and +opaque should be set if a custom +memory allocator is required, or made +NULL for the normal +malloc / +free routines. Upon return, the +internal state will have been initialised, and +total_in and +total_out will be zero. + +For the meaning of parameter +verbosity, see +BZ2_bzCompressInit. + +If small is nonzero, the +library will use an alternative decompression algorithm which +uses less memory but at the cost of decompressing more slowly +(roughly speaking, half the speed, but the maximum memory +requirement drops to around 2300k). See +for more information on memory management. + +Note that the amount of memory needed to decompress a +stream cannot be determined until the stream's header has been +read, so even if +BZ2_bzDecompressInit succeeds, a +subsequent BZ2_bzDecompress +could fail with +BZ_MEM_ERROR. + +Possible return values: + + +BZ_CONFIG_ERROR + if the library has been mis-compiled +BZ_PARAM_ERROR + if ( small != 0 && small != 1 ) + or (verbosity <; 0 || verbosity > 4) +BZ_MEM_ERROR + if insufficient memory is available + + +Allowable next actions: + + +BZ2_bzDecompress + if BZ_OK was returned + no specific action required in case of error + + + + + + +<computeroutput>BZ2_bzDecompress</computeroutput> + + +int BZ2_bzDecompress ( bz_stream *strm ); + + +Provides more input and/out output buffer space for the +library. The caller maintains input and output buffers, and uses +BZ2_bzDecompress to transfer +data between them. + +Before each call to +BZ2_bzDecompress, +next_in should point at the +compressed data, and avail_in +should indicate how many bytes the library may read. +BZ2_bzDecompress updates +next_in, +avail_in and +total_in to reflect the number +of bytes it has read. + +Similarly, next_out should +point to a buffer in which the uncompressed output is to be +placed, with avail_out +indicating how much output space is available. +BZ2_bzCompress updates +next_out, +avail_out and +total_out to reflect the number +of bytes output. + +You may provide and remove as little or as much data as you +like on each call of +BZ2_bzDecompress. In the limit, +it is acceptable to supply and remove data one byte at a time, +although this would be terribly inefficient. You should always +ensure that at least one byte of output space is available at +each call. + +Use of BZ2_bzDecompress is +simpler than +BZ2_bzCompress. + +You should provide input and remove output as described +above, and repeatedly call +BZ2_bzDecompress until +BZ_STREAM_END is returned. +Appearance of BZ_STREAM_END +denotes that BZ2_bzDecompress +has detected the logical end of the compressed stream. +BZ2_bzDecompress will not +produce BZ_STREAM_END until all +output data has been placed into the output buffer, so once +BZ_STREAM_END appears, you are +guaranteed to have available all the decompressed output, and +BZ2_bzDecompressEnd can safely +be called. + +If case of an error return value, you should call +BZ2_bzDecompressEnd to clean up +and release memory. + +Possible return values: + + +BZ_PARAM_ERROR + if strm is NULL or strm->s is NULL + or strm->avail_out < 1 +BZ_DATA_ERROR + if a data integrity error is detected in the compressed stream +BZ_DATA_ERROR_MAGIC + if the compressed stream doesn't begin with the right magic bytes +BZ_MEM_ERROR + if there wasn't enough memory available +BZ_STREAM_END + if the logical end of the data stream was detected and all + output in has been consumed, eg s-->avail_out > 0 +BZ_OK + otherwise + + +Allowable next actions: + + +BZ2_bzDecompress + if BZ_OK was returned +BZ2_bzDecompressEnd + otherwise + + + + + + +<computeroutput>BZ2_bzDecompressEnd</computeroutput> + + +int BZ2_bzDecompressEnd ( bz_stream *strm ); + + +Releases all memory associated with a decompression +stream. + +Possible return values: + + +BZ_PARAM_ERROR + if strm is NULL or strm->s is NULL +BZ_OK + otherwise + + +Allowable next actions: + + + None. + + + + + + + + +High-level interface + +This interface provides functions for reading and writing +bzip2 format files. First, some +general points. + + + + All of the functions take an + int* first argument, + bzerror. After each call, + bzerror should be consulted + first to determine the outcome of the call. If + bzerror is + BZ_OK, the call completed + successfully, and only then should the return value of the + function (if any) be consulted. If + bzerror is + BZ_IO_ERROR, there was an + error reading/writing the underlying compressed file, and you + should then consult errno / + perror to determine the cause + of the difficulty. bzerror + may also be set to various other values; precise details are + given on a per-function basis below. + + If bzerror indicates + an error (ie, anything except + BZ_OK and + BZ_STREAM_END), you should + immediately call + BZ2_bzReadClose (or + BZ2_bzWriteClose, depending on + whether you are attempting to read or to write) to free up all + resources associated with the stream. Once an error has been + indicated, behaviour of all calls except + BZ2_bzReadClose + (BZ2_bzWriteClose) is + undefined. The implication is that (1) + bzerror should be checked + after each call, and (2) if + bzerror indicates an error, + BZ2_bzReadClose + (BZ2_bzWriteClose) should then + be called to clean up. + + The FILE* arguments + passed to BZ2_bzReadOpen / + BZ2_bzWriteOpen should be set + to binary mode. Most Unix systems will do this by default, but + other platforms, including Windows and Mac, will not. If you + omit this, you may encounter problems when moving code to new + platforms. + + Memory allocation requests are handled by + malloc / + free. At present there is no + facility for user-defined memory allocators in the file I/O + functions (could easily be added, though). + + + + + + +<computeroutput>BZ2_bzReadOpen</computeroutput> + + +typedef void BZFILE; + +BZFILE *BZ2_bzReadOpen( int *bzerror, FILE *f, + int verbosity, int small, + void *unused, int nUnused ); + + +Prepare to read compressed data from file handle +f. +f should refer to a file which +has been opened for reading, and for which the error indicator +(ferror(f))is not set. If +small is 1, the library will try +to decompress using less memory, at the expense of speed. + +For reasons explained below, +BZ2_bzRead will decompress the +nUnused bytes starting at +unused, before starting to read +from the file f. At most +BZ_MAX_UNUSED bytes may be +supplied like this. If this facility is not required, you should +pass NULL and +0 for +unused and +nUnused respectively. + +For the meaning of parameters +small and +verbosity, see +BZ2_bzDecompressInit. + +The amount of memory needed to decompress a file cannot be +determined until the file's header has been read. So it is +possible that BZ2_bzReadOpen +returns BZ_OK but a subsequent +call of BZ2_bzRead will return +BZ_MEM_ERROR. + +Possible assignments to +bzerror: + + +BZ_CONFIG_ERROR + if the library has been mis-compiled +BZ_PARAM_ERROR + if f is NULL + or small is neither 0 nor 1 + or ( unused == NULL && nUnused != 0 ) + or ( unused != NULL && !(0 <= nUnused <= BZ_MAX_UNUSED) ) +BZ_IO_ERROR + if ferror(f) is nonzero +BZ_MEM_ERROR + if insufficient memory is available +BZ_OK + otherwise. + + +Possible return values: + + +Pointer to an abstract BZFILE + if bzerror is BZ_OK +NULL + otherwise + + +Allowable next actions: + + +BZ2_bzRead + if bzerror is BZ_OK +BZ2_bzClose + otherwise + + + + + + +<computeroutput>BZ2_bzRead</computeroutput> + + +int BZ2_bzRead ( int *bzerror, BZFILE *b, void *buf, int len ); + + +Reads up to len +(uncompressed) bytes from the compressed file +b into the buffer +buf. If the read was +successful, bzerror is set to +BZ_OK and the number of bytes +read is returned. If the logical end-of-stream was detected, +bzerror will be set to +BZ_STREAM_END, and the number of +bytes read is returned. All other +bzerror values denote an +error. + +BZ2_bzRead will supply +len bytes, unless the logical +stream end is detected or an error occurs. Because of this, it +is possible to detect the stream end by observing when the number +of bytes returned is less than the number requested. +Nevertheless, this is regarded as inadvisable; you should instead +check bzerror after every call +and watch out for +BZ_STREAM_END. + +Internally, BZ2_bzRead +copies data from the compressed file in chunks of size +BZ_MAX_UNUSED bytes before +decompressing it. If the file contains more bytes than strictly +needed to reach the logical end-of-stream, +BZ2_bzRead will almost certainly +read some of the trailing data before signalling +BZ_SEQUENCE_END. To collect the +read but unused data once +BZ_SEQUENCE_END has appeared, +call BZ2_bzReadGetUnused +immediately before +BZ2_bzReadClose. + +Possible assignments to +bzerror: + + +BZ_PARAM_ERROR + if b is NULL or buf is NULL or len < 0 +BZ_SEQUENCE_ERROR + if b was opened with BZ2_bzWriteOpen +BZ_IO_ERROR + if there is an error reading from the compressed file +BZ_UNEXPECTED_EOF + if the compressed file ended before + the logical end-of-stream was detected +BZ_DATA_ERROR + if a data integrity error was detected in the compressed stream +BZ_DATA_ERROR_MAGIC + if the stream does not begin with the requisite header bytes + (ie, is not a bzip2 data file). This is really + a special case of BZ_DATA_ERROR. +BZ_MEM_ERROR + if insufficient memory was available +BZ_STREAM_END + if the logical end of stream was detected. +BZ_OK + otherwise. + + +Possible return values: + + +number of bytes read + if bzerror is BZ_OK or BZ_STREAM_END +undefined + otherwise + + +Allowable next actions: + + +collect data from buf, then BZ2_bzRead or BZ2_bzReadClose + if bzerror is BZ_OK +collect data from buf, then BZ2_bzReadClose or BZ2_bzReadGetUnused + if bzerror is BZ_SEQUENCE_END +BZ2_bzReadClose + otherwise + + + + + + +<computeroutput>BZ2_bzReadGetUnused</computeroutput> + + +void BZ2_bzReadGetUnused( int* bzerror, BZFILE *b, + void** unused, int* nUnused ); + + +Returns data which was read from the compressed file but +was not needed to get to the logical end-of-stream. +*unused is set to the address of +the data, and *nUnused to the +number of bytes. *nUnused will +be set to a value between 0 and +BZ_MAX_UNUSED inclusive. + +This function may only be called once +BZ2_bzRead has signalled +BZ_STREAM_END but before +BZ2_bzReadClose. + +Possible assignments to +bzerror: + + +BZ_PARAM_ERROR + if b is NULL + or unused is NULL or nUnused is NULL +BZ_SEQUENCE_ERROR + if BZ_STREAM_END has not been signalled + or if b was opened with BZ2_bzWriteOpen +BZ_OK + otherwise + + +Allowable next actions: + + +BZ2_bzReadClose + + + + + + +<computeroutput>BZ2_bzReadClose</computeroutput> + + +void BZ2_bzReadClose ( int *bzerror, BZFILE *b ); + + +Releases all memory pertaining to the compressed file +b. +BZ2_bzReadClose does not call +fclose on the underlying file +handle, so you should do that yourself if appropriate. +BZ2_bzReadClose should be called +to clean up after all error situations. + +Possible assignments to +bzerror: + + +BZ_SEQUENCE_ERROR + if b was opened with BZ2_bzOpenWrite +BZ_OK + otherwise + + +Allowable next actions: + + +none + + + + + + +<computeroutput>BZ2_bzWriteOpen</computeroutput> + + +BZFILE *BZ2_bzWriteOpen( int *bzerror, FILE *f, + int blockSize100k, int verbosity, + int workFactor ); + + +Prepare to write compressed data to file handle +f. +f should refer to a file which +has been opened for writing, and for which the error indicator +(ferror(f))is not set. + +For the meaning of parameters +blockSize100k, +verbosity and +workFactor, see +BZ2_bzCompressInit. + +All required memory is allocated at this stage, so if the +call completes successfully, +BZ_MEM_ERROR cannot be signalled +by a subsequent call to +BZ2_bzWrite. + +Possible assignments to +bzerror: + + +BZ_CONFIG_ERROR + if the library has been mis-compiled +BZ_PARAM_ERROR + if f is NULL + or blockSize100k < 1 or blockSize100k > 9 +BZ_IO_ERROR + if ferror(f) is nonzero +BZ_MEM_ERROR + if insufficient memory is available +BZ_OK + otherwise + + +Possible return values: + + +Pointer to an abstract BZFILE + if bzerror is BZ_OK +NULL + otherwise + + +Allowable next actions: + + +BZ2_bzWrite + if bzerror is BZ_OK + (you could go directly to BZ2_bzWriteClose, but this would be pretty pointless) +BZ2_bzWriteClose + otherwise + + + + + + +<computeroutput>BZ2_bzWrite</computeroutput> + + +void BZ2_bzWrite ( int *bzerror, BZFILE *b, void *buf, int len ); + + +Absorbs len bytes from the +buffer buf, eventually to be +compressed and written to the file. + +Possible assignments to +bzerror: + + +BZ_PARAM_ERROR + if b is NULL or buf is NULL or len < 0 +BZ_SEQUENCE_ERROR + if b was opened with BZ2_bzReadOpen +BZ_IO_ERROR + if there is an error writing the compressed file. +BZ_OK + otherwise + + + + + + +<computeroutput>BZ2_bzWriteClose</computeroutput> + + +void BZ2_bzWriteClose( int *bzerror, BZFILE* f, + int abandon, + unsigned int* nbytes_in, + unsigned int* nbytes_out ); + +void BZ2_bzWriteClose64( int *bzerror, BZFILE* f, + int abandon, + unsigned int* nbytes_in_lo32, + unsigned int* nbytes_in_hi32, + unsigned int* nbytes_out_lo32, + unsigned int* nbytes_out_hi32 ); + + +Compresses and flushes to the compressed file all data so +far supplied by BZ2_bzWrite. +The logical end-of-stream markers are also written, so subsequent +calls to BZ2_bzWrite are +illegal. All memory associated with the compressed file +b is released. +fflush is called on the +compressed file, but it is not +fclose'd. + +If BZ2_bzWriteClose is +called to clean up after an error, the only action is to release +the memory. The library records the error codes issued by +previous calls, so this situation will be detected automatically. +There is no attempt to complete the compression operation, nor to +fflush the compressed file. You +can force this behaviour to happen even in the case of no error, +by passing a nonzero value to +abandon. + +If nbytes_in is non-null, +*nbytes_in will be set to be the +total volume of uncompressed data handled. Similarly, +nbytes_out will be set to the +total volume of compressed data written. For compatibility with +older versions of the library, +BZ2_bzWriteClose only yields the +lower 32 bits of these counts. Use +BZ2_bzWriteClose64 if you want +the full 64 bit counts. These two functions are otherwise +absolutely identical. + +Possible assignments to +bzerror: + + +BZ_SEQUENCE_ERROR + if b was opened with BZ2_bzReadOpen +BZ_IO_ERROR + if there is an error writing the compressed file +BZ_OK + otherwise + + + + + + +Handling embedded compressed data streams + +The high-level library facilitates use of +bzip2 data streams which form +some part of a surrounding, larger data stream. + + + + For writing, the library takes an open file handle, + writes compressed data to it, + fflushes it but does not + fclose it. The calling + application can write its own data before and after the + compressed data stream, using that same file handle. + + Reading is more complex, and the facilities are not as + general as they could be since generality is hard to reconcile + with efficiency. BZ2_bzRead + reads from the compressed file in blocks of size + BZ_MAX_UNUSED bytes, and in + doing so probably will overshoot the logical end of compressed + stream. To recover this data once decompression has ended, + call BZ2_bzReadGetUnused after + the last call of BZ2_bzRead + (the one returning + BZ_STREAM_END) but before + calling + BZ2_bzReadClose. + + + +This mechanism makes it easy to decompress multiple +bzip2 streams placed end-to-end. +As the end of one stream, when +BZ2_bzRead returns +BZ_STREAM_END, call +BZ2_bzReadGetUnused to collect +the unused data (copy it into your own buffer somewhere). That +data forms the start of the next compressed stream. To start +uncompressing that next stream, call +BZ2_bzReadOpen again, feeding in +the unused data via the unused / +nUnused parameters. Keep doing +this until BZ_STREAM_END return +coincides with the physical end of file +(feof(f)). In this situation +BZ2_bzReadGetUnused will of +course return no data. + +This should give some feel for how the high-level interface +can be used. If you require extra flexibility, you'll have to +bite the bullet and get to grips with the low-level +interface. + + + + + +Standard file-reading/writing code + +Here's how you'd write data to a compressed file: + + +FILE* f; +BZFILE* b; +int nBuf; +char buf[ /* whatever size you like */ ]; +int bzerror; +int nWritten; + +f = fopen ( "myfile.bz2", "w" ); +if ( !f ) { + /* handle error */ +} +b = BZ2_bzWriteOpen( &bzerror, f, 9 ); +if (bzerror != BZ_OK) { + BZ2_bzWriteClose ( b ); + /* handle error */ +} + +while ( /* condition */ ) { + /* get data to write into buf, and set nBuf appropriately */ + nWritten = BZ2_bzWrite ( &bzerror, b, buf, nBuf ); + if (bzerror == BZ_IO_ERROR) { + BZ2_bzWriteClose ( &bzerror, b ); + /* handle error */ + } +} + +BZ2_bzWriteClose( &bzerror, b ); +if (bzerror == BZ_IO_ERROR) { + /* handle error */ +} + + +And to read from a compressed file: + + +FILE* f; +BZFILE* b; +int nBuf; +char buf[ /* whatever size you like */ ]; +int bzerror; +int nWritten; + +f = fopen ( "myfile.bz2", "r" ); +if ( !f ) { + /* handle error */ +} +b = BZ2_bzReadOpen ( &bzerror, f, 0, NULL, 0 ); +if ( bzerror != BZ_OK ) { + BZ2_bzReadClose ( &bzerror, b ); + /* handle error */ +} + +bzerror = BZ_OK; +while ( bzerror == BZ_OK && /* arbitrary other conditions */) { + nBuf = BZ2_bzRead ( &bzerror, b, buf, /* size of buf */ ); + if ( bzerror == BZ_OK ) { + /* do something with buf[0 .. nBuf-1] */ + } +} +if ( bzerror != BZ_STREAM_END ) { + BZ2_bzReadClose ( &bzerror, b ); + /* handle error */ +} else { + BZ2_bzReadClose ( &bzerror, b ); +} + + + + + + + + +Utility functions + + + +<computeroutput>BZ2_bzBuffToBuffCompress</computeroutput> + + +int BZ2_bzBuffToBuffCompress( char* dest, + unsigned int* destLen, + char* source, + unsigned int sourceLen, + int blockSize100k, + int verbosity, + int workFactor ); + + +Attempts to compress the data in source[0 +.. sourceLen-1] into the destination buffer, +dest[0 .. *destLen-1]. If the +destination buffer is big enough, +*destLen is set to the size of +the compressed data, and BZ_OK +is returned. If the compressed data won't fit, +*destLen is unchanged, and +BZ_OUTBUFF_FULL is +returned. + +Compression in this manner is a one-shot event, done with a +single call to this function. The resulting compressed data is a +complete bzip2 format data +stream. There is no mechanism for making additional calls to +provide extra input data. If you want that kind of mechanism, +use the low-level interface. + +For the meaning of parameters +blockSize100k, +verbosity and +workFactor, see +BZ2_bzCompressInit. + +To guarantee that the compressed data will fit in its +buffer, allocate an output buffer of size 1% larger than the +uncompressed data, plus six hundred extra bytes. + +BZ2_bzBuffToBuffDecompress +will not write data at or beyond +dest[*destLen], even in case of +buffer overflow. + +Possible return values: + + +BZ_CONFIG_ERROR + if the library has been mis-compiled +BZ_PARAM_ERROR + if dest is NULL or destLen is NULL + or blockSize100k < 1 or blockSize100k > 9 + or verbosity < 0 or verbosity > 4 + or workFactor < 0 or workFactor > 250 +BZ_MEM_ERROR + if insufficient memory is available +BZ_OUTBUFF_FULL + if the size of the compressed data exceeds *destLen +BZ_OK + otherwise + + + + + + +<computeroutput>BZ2_bzBuffToBuffDecompress</computeroutput> + + +int BZ2_bzBuffToBuffDecompress( char* dest, + unsigned int* destLen, + char* source, + unsigned int sourceLen, + int small, + int verbosity ); + + +Attempts to decompress the data in source[0 +.. sourceLen-1] into the destination buffer, +dest[0 .. *destLen-1]. If the +destination buffer is big enough, +*destLen is set to the size of +the uncompressed data, and BZ_OK +is returned. If the compressed data won't fit, +*destLen is unchanged, and +BZ_OUTBUFF_FULL is +returned. + +source is assumed to hold +a complete bzip2 format data +stream. +BZ2_bzBuffToBuffDecompress tries +to decompress the entirety of the stream into the output +buffer. + +For the meaning of parameters +small and +verbosity, see +BZ2_bzDecompressInit. + +Because the compression ratio of the compressed data cannot +be known in advance, there is no easy way to guarantee that the +output buffer will be big enough. You may of course make +arrangements in your code to record the size of the uncompressed +data, but such a mechanism is beyond the scope of this +library. + +BZ2_bzBuffToBuffDecompress +will not write data at or beyond +dest[*destLen], even in case of +buffer overflow. + +Possible return values: + + +BZ_CONFIG_ERROR + if the library has been mis-compiled +BZ_PARAM_ERROR + if dest is NULL or destLen is NULL + or small != 0 && small != 1 + or verbosity < 0 or verbosity > 4 +BZ_MEM_ERROR + if insufficient memory is available +BZ_OUTBUFF_FULL + if the size of the compressed data exceeds *destLen +BZ_DATA_ERROR + if a data integrity error was detected in the compressed data +BZ_DATA_ERROR_MAGIC + if the compressed data doesn't begin with the right magic bytes +BZ_UNEXPECTED_EOF + if the compressed data ends unexpectedly +BZ_OK + otherwise + + + + + + + + +<computeroutput>zlib</computeroutput> compatibility functions + +Yoshioka Tsuneo has contributed some functions to give +better zlib compatibility. +These functions are BZ2_bzopen, +BZ2_bzread, +BZ2_bzwrite, +BZ2_bzflush, +BZ2_bzclose, +BZ2_bzerror and +BZ2_bzlibVersion. These +functions are not (yet) officially part of the library. If they +break, you get to keep all the pieces. Nevertheless, I think +they work ok. + + +typedef void BZFILE; + +const char * BZ2_bzlibVersion ( void ); + + +Returns a string indicating the library version. + + +BZFILE * BZ2_bzopen ( const char *path, const char *mode ); +BZFILE * BZ2_bzdopen ( int fd, const char *mode ); + + +Opens a .bz2 file for +reading or writing, using either its name or a pre-existing file +descriptor. Analogous to fopen +and fdopen. + + +int BZ2_bzread ( BZFILE* b, void* buf, int len ); +int BZ2_bzwrite ( BZFILE* b, void* buf, int len ); + + +Reads/writes data from/to a previously opened +BZFILE. Analogous to +fread and +fwrite. + + +int BZ2_bzflush ( BZFILE* b ); +void BZ2_bzclose ( BZFILE* b ); + + +Flushes/closes a BZFILE. +BZ2_bzflush doesn't actually do +anything. Analogous to fflush +and fclose. + + +const char * BZ2_bzerror ( BZFILE *b, int *errnum ) + + +Returns a string describing the more recent error status of +b, and also sets +*errnum to its numerical +value. + + + + + +Using the library in a <computeroutput>stdio</computeroutput>-free environment + + + +Getting rid of <computeroutput>stdio</computeroutput> + +In a deeply embedded application, you might want to use +just the memory-to-memory functions. You can do this +conveniently by compiling the library with preprocessor symbol +BZ_NO_STDIO defined. Doing this +gives you a library containing only the following eight +functions: + +BZ2_bzCompressInit, +BZ2_bzCompress, +BZ2_bzCompressEnd +BZ2_bzDecompressInit, +BZ2_bzDecompress, +BZ2_bzDecompressEnd +BZ2_bzBuffToBuffCompress, +BZ2_bzBuffToBuffDecompress + +When compiled like this, all functions will ignore +verbosity settings. + + + + + +Critical error handling + +libbzip2 contains a number +of internal assertion checks which should, needless to say, never +be activated. Nevertheless, if an assertion should fail, +behaviour depends on whether or not the library was compiled with +BZ_NO_STDIO set. + +For a normal compile, an assertion failure yields the +message: + +

+bzip2/libbzip2: internal error number N. +This is a bug in bzip2/libbzip2, &bz-version; of &bz-date;. +Please report it to me at: &bz-email;. If this happened +when you were using some program which uses libbzip2 as a +component, you should also report this bug to the author(s) +of that program. Please make an effort to report this bug; +timely and accurate bug reports eventually lead to higher +quality software. Thanks. Julian Seward, &bz-date;. +
+ +where N is some error code +number. If N == 1007, it also +prints some extra text advising the reader that unreliable memory +is often associated with internal error 1007. (This is a +frequently-observed-phenomenon with versions 1.0.0/1.0.1). + +exit(3) is then +called. + +For a stdio-free library, +assertion failures result in a call to a function declared +as: + + +extern void bz_internal_error ( int errcode ); + + +The relevant code is passed as a parameter. You should +supply such a function. + +In either case, once an assertion failure has occurred, any +bz_stream records involved can +be regarded as invalid. You should not attempt to resume normal +operation with them. + +You may, of course, change critical error handling to suit +your needs. As I said above, critical errors indicate bugs in +the library and should not occur. All "normal" error situations +are indicated via error return codes from functions, and can be +recovered from. + + + + + + + +Making a Windows DLL + +Everything related to Windows has been contributed by +Yoshioka Tsuneo +(tsuneo@rr.iij4u.or.jp), so +you should send your queries to him (but perhaps Cc: me, +&bz-email;). + +My vague understanding of what to do is: using Visual C++ +5.0, open the project file +libbz2.dsp, and build. That's +all. + +If you can't open the project file for some reason, make a +new one, naming these files: +blocksort.c, +bzlib.c, +compress.c, +crctable.c, +decompress.c, +huffman.c, +randtable.c and +libbz2.def. You will also need +to name the header files bzlib.h +and bzlib_private.h. + +If you don't use VC++, you may need to define the +proprocessor symbol +_WIN32. + +Finally, dlltest.c is a +sample program using the DLL. It has a project file, +dlltest.dsp. + +If you just want a makefile for Visual C, have a look at +makefile.msc. + +Be aware that if you compile +bzip2 itself on Win32, you must +set BZ_UNIX to 0 and +BZ_LCCWIN32 to 1, in the file +bzip2.c, before compiling. +Otherwise the resulting binary won't work correctly. + +I haven't tried any of this stuff myself, but it all looks +plausible. + + + + + + + + +Miscellanea + +These are just some random thoughts of mine. Your mileage +may vary. + + + +Limitations of the compressed file format + +bzip2-1.0.X, +0.9.5 and +0.9.0 use exactly the same file +format as the original version, +bzip2-0.1. This decision was +made in the interests of stability. Creating yet another +incompatible compressed file format would create further +confusion and disruption for users. + +Nevertheless, this is not a painless decision. Development +work since the release of +bzip2-0.1 in August 1997 has +shown complexities in the file format which slow down +decompression and, in retrospect, are unnecessary. These +are: + + + + The run-length encoder, which is the first of the + compression transformations, is entirely irrelevant. The + original purpose was to protect the sorting algorithm from the + very worst case input: a string of repeated symbols. But + algorithm steps Q6a and Q6b in the original Burrows-Wheeler + technical report (SRC-124) show how repeats can be handled + without difficulty in block sorting. + + The randomisation mechanism doesn't really need to be + there. Udi Manber and Gene Myers published a suffix array + construction algorithm a few years back, which can be employed + to sort any block, no matter how repetitive, in O(N log N) + time. Subsequent work by Kunihiko Sadakane has produced a + derivative O(N (log N)^2) algorithm which usually outperforms + the Manber-Myers algorithm. + + I could have changed to Sadakane's algorithm, but I find + it to be slower than bzip2's + existing algorithm for most inputs, and the randomisation + mechanism protects adequately against bad cases. I didn't + think it was a good tradeoff to make. Partly this is due to + the fact that I was not flooded with email complaints about + bzip2-0.1's performance on + repetitive data, so perhaps it isn't a problem for real + inputs. + + Probably the best long-term solution, and the one I have + incorporated into 0.9.5 and above, is to use the existing + sorting algorithm initially, and fall back to a O(N (log N)^2) + algorithm if the standard algorithm gets into + difficulties. + + The compressed file format was never designed to be + handled by a library, and I have had to jump though some hoops + to produce an efficient implementation of decompression. It's + a bit hairy. Try passing + decompress.c through the C + preprocessor and you'll see what I mean. Much of this + complexity could have been avoided if the compressed size of + each block of data was recorded in the data stream. + + An Adler-32 checksum, rather than a CRC32 checksum, + would be faster to compute. + + + +It would be fair to say that the +bzip2 format was frozen before I +properly and fully understood the performance consequences of +doing so. + +Improvements which I was able to incorporate into 0.9.0, +despite using the same file format, are: + + + + Single array implementation of the inverse BWT. This + significantly speeds up decompression, presumably because it + reduces the number of cache misses. + + Faster inverse MTF transform for large MTF values. + The new implementation is based on the notion of sliding blocks + of values. + + bzip2-0.9.0 now reads + and writes files with fread + and fwrite; version 0.1 used + putc and + getc. Duh! Well, you live + and learn. + + + +Further ahead, it would be nice to be able to do random +access into files. This will require some careful design of +compressed file formats. + + + + + +Portability issues + +After some consideration, I have decided not to use GNU +autoconf to configure 0.9.5 or +1.0. + +autoconf, admirable and +wonderful though it is, mainly assists with portability problems +between Unix-like platforms. But +bzip2 doesn't have much in the +way of portability problems on Unix; most of the difficulties +appear when porting to the Mac, or to Microsoft's operating +systems. autoconf doesn't help +in those cases, and brings in a whole load of new +complexity. + +Most people should be able to compile the library and +program under Unix straight out-of-the-box, so to speak, +especially if you have a version of GNU C available. + +There are a couple of +__inline__ directives in the +code. GNU C (gcc) should be +able to handle them. If you're not using GNU C, your C compiler +shouldn't see them at all. If your compiler does, for some +reason, see them and doesn't like them, just +#define +__inline__ to be +/* */. One easy way to do this +is to compile with the flag +-D__inline__=, which should be +understood by most Unix compilers. + +If you still have difficulties, try compiling with the +macro BZ_STRICT_ANSI defined. +This should enable you to build the library in a strictly ANSI +compliant environment. Building the program itself like this is +dangerous and not supported, since you remove +bzip2's checks against +compressing directories, symbolic links, devices, and other +not-really-a-file entities. This could cause filesystem +corruption! + +One other thing: if you create a +bzip2 binary for public distribution, +please consider linking it statically (gcc +-static). This avoids all sorts of library-version +issues that others may encounter later on. + +If you build bzip2 on +Win32, you must set BZ_UNIX to 0 +and BZ_LCCWIN32 to 1, in the +file bzip2.c, before compiling. +Otherwise the resulting binary won't work correctly. + + + + + +Reporting bugs + +I tried pretty hard to make sure +bzip2 is bug free, both by +design and by testing. Hopefully you'll never need to read this +section for real. + +Nevertheless, if bzip2 dies +with a segmentation fault, a bus error or an internal assertion +failure, it will ask you to email me a bug report. Experience from +years of feedback of bzip2 users indicates that almost all these +problems can be traced to either compiler bugs or hardware +problems. + + + + Recompile the program with no optimisation, and + see if it works. And/or try a different compiler. I heard all + sorts of stories about various flavours of GNU C (and other + compilers) generating bad code for + bzip2, and I've run across two + such examples myself. + + 2.7.X versions of GNU C are known to generate bad code + from time to time, at high optimisation levels. If you get + problems, try using the flags + -O2 + -fomit-frame-pointer + -fno-strength-reduce. You + should specifically not use + -funroll-loops. + + You may notice that the Makefile runs six tests as part + of the build process. If the program passes all of these, it's + a pretty good (but not 100%) indication that the compiler has + done its job correctly. + + If bzip2 + crashes randomly, and the crashes are not repeatable, you may + have a flaky memory subsystem. + bzip2 really hammers your + memory hierarchy, and if it's a bit marginal, you may get these + problems. Ditto if your disk or I/O subsystem is slowly + failing. Yup, this really does happen. + + Try using a different machine of the same type, and see + if you can repeat the problem. + + This isn't really a bug, but ... If + bzip2 tells you your file is + corrupted on decompression, and you obtained the file via FTP, + there is a possibility that you forgot to tell FTP to do a + binary mode transfer. That absolutely will cause the file to + be non-decompressible. You'll have to transfer it + again. + + + +If you've incorporated +libbzip2 into your own program +and are getting problems, please, please, please, check that the +parameters you are passing in calls to the library, are correct, +and in accordance with what the documentation says is allowable. +I have tried to make the library robust against such problems, +but I'm sure I haven't succeeded. + +Finally, if the above comments don't help, you'll have to +send me a bug report. Now, it's just amazing how many people +will send me a bug report saying something like: + + +bzip2 crashed with segmentation fault on my machine + + +and absolutely nothing else. Needless to say, a such a +report is totally, utterly, completely and +comprehensively 100% useless; a waste of your time, my time, and +net bandwidth. With no details at all, there's no way +I can possibly begin to figure out what the problem is. + +The rules of the game are: facts, facts, facts. Don't omit +them because "oh, they won't be relevant". At the bare +minimum: + + +Machine type. Operating system version. +Exact version of bzip2 (do bzip2 -V). +Exact version of the compiler used. +Flags passed to the compiler. + + +However, the most important single thing that will help me +is the file that you were trying to compress or decompress at the +time the problem happened. Without that, my ability to do +anything more than speculate about the cause, is limited. + + + + + +Did you get the right package? + +bzip2 is a resource hog. +It soaks up large amounts of CPU cycles and memory. Also, it +gives very large latencies. In the worst case, you can feed many +megabytes of uncompressed data into the library before getting +any compressed output, so this probably rules out applications +requiring interactive behaviour. + +These aren't faults of my implementation, I hope, but more +an intrinsic property of the Burrows-Wheeler transform +(unfortunately). Maybe this isn't what you want. + +If you want a compressor and/or library which is faster, +uses less memory but gets pretty good compression, and has +minimal latency, consider Jean-loup Gailly's and Mark Adler's +work, zlib-1.2.1 and +gzip-1.2.4. Look for them at +http://www.zlib.org and +http://www.gzip.org +respectively. + +For something faster and lighter still, you might try Markus F +X J Oberhumer's LZO real-time +compression/decompression library, at +http://www.oberhumer.com/opensource. + + + + + + +Further Reading + +bzip2 is not research +work, in the sense that it doesn't present any new ideas. +Rather, it's an engineering exercise based on existing +ideas. + +Four documents describe essentially all the ideas behind +bzip2: + +Michael Burrows and D. J. Wheeler: + "A block-sorting lossless data compression algorithm" + 10th May 1994. + Digital SRC Research Report 124. + ftp://ftp.digital.com/pub/DEC/SRC/research-reports/SRC-124.ps.gz + If you have trouble finding it, try searching at the + New Zealand Digital Library, http://www.nzdl.org. + +Daniel S. Hirschberg and Debra A. LeLewer + "Efficient Decoding of Prefix Codes" + Communications of the ACM, April 1990, Vol 33, Number 4. + You might be able to get an electronic copy of this + from the ACM Digital Library. + +David J. Wheeler + Program bred3.c and accompanying document bred3.ps. + This contains the idea behind the multi-table Huffman coding scheme. + ftp://ftp.cl.cam.ac.uk/users/djw3/ + +Jon L. Bentley and Robert Sedgewick + "Fast Algorithms for Sorting and Searching Strings" + Available from Sedgewick's web page, + www.cs.princeton.edu/~rs + + +The following paper gives valuable additional insights into +the algorithm, but is not immediately the basis of any code used +in bzip2. + +Peter Fenwick: + Block Sorting Text Compression + Proceedings of the 19th Australasian Computer Science Conference, + Melbourne, Australia. Jan 31 - Feb 2, 1996. + ftp://ftp.cs.auckland.ac.nz/pub/peter-f/ACSC96paper.ps + +Kunihiko Sadakane's sorting algorithm, mentioned above, is +available from: + +http://naomi.is.s.u-tokyo.ac.jp/~sada/papers/Sada98b.ps.gz + + +The Manber-Myers suffix array construction algorithm is +described in a paper available from: + +http://www.cs.arizona.edu/people/gene/PAPERS/suffix.ps + + +Finally, the following papers document some +investigations I made into the performance of sorting +and decompression algorithms: + +Julian Seward + On the Performance of BWT Sorting Algorithms + Proceedings of the IEEE Data Compression Conference 2000 + Snowbird, Utah. 28-30 March 2000. + +Julian Seward + Space-time Tradeoffs in the Inverse B-W Transform + Proceedings of the IEEE Data Compression Conference 2001 + Snowbird, Utah. 27-29 March 2001. + + + + + + + diff --git a/3party_sloynik/bzip2/mk251.c b/3party_sloynik/bzip2/mk251.c new file mode 100644 index 0000000000..39e94c0573 --- /dev/null +++ b/3party_sloynik/bzip2/mk251.c @@ -0,0 +1,31 @@ + +/* Spew out a long sequence of the byte 251. When fed to bzip2 + versions 1.0.0 or 1.0.1, causes it to die with internal error + 1007 in blocksort.c. This assertion misses an extremely rare + case, which is fixed in this version (1.0.2) and above. +*/ + +/* ------------------------------------------------------------------ + This file is part of bzip2/libbzip2, a program and library for + lossless, block-sorting data compression. + + bzip2/libbzip2 version 1.0.5 of 10 December 2007 + Copyright (C) 1996-2007 Julian Seward + + Please read the WARNING, DISCLAIMER and PATENTS sections in the + README file. + + This program is released under the terms of the license contained + in the file LICENSE. + ------------------------------------------------------------------ */ + + +#include + +int main () +{ + int i; + for (i = 0; i < 48500000 ; i++) + putchar(251); + return 0; +} diff --git a/3party_sloynik/bzip2/randtable.c b/3party_sloynik/bzip2/randtable.c new file mode 100644 index 0000000000..068b76367b --- /dev/null +++ b/3party_sloynik/bzip2/randtable.c @@ -0,0 +1,84 @@ + +/*-------------------------------------------------------------*/ +/*--- Table for randomising repetitive blocks ---*/ +/*--- randtable.c ---*/ +/*-------------------------------------------------------------*/ + +/* ------------------------------------------------------------------ + This file is part of bzip2/libbzip2, a program and library for + lossless, block-sorting data compression. + + bzip2/libbzip2 version 1.0.5 of 10 December 2007 + Copyright (C) 1996-2007 Julian Seward + + Please read the WARNING, DISCLAIMER and PATENTS sections in the + README file. + + This program is released under the terms of the license contained + in the file LICENSE. + ------------------------------------------------------------------ */ + + +#include "bzlib_private.h" + + +/*---------------------------------------------*/ +Int32 BZ2_rNums[512] = { + 619, 720, 127, 481, 931, 816, 813, 233, 566, 247, + 985, 724, 205, 454, 863, 491, 741, 242, 949, 214, + 733, 859, 335, 708, 621, 574, 73, 654, 730, 472, + 419, 436, 278, 496, 867, 210, 399, 680, 480, 51, + 878, 465, 811, 169, 869, 675, 611, 697, 867, 561, + 862, 687, 507, 283, 482, 129, 807, 591, 733, 623, + 150, 238, 59, 379, 684, 877, 625, 169, 643, 105, + 170, 607, 520, 932, 727, 476, 693, 425, 174, 647, + 73, 122, 335, 530, 442, 853, 695, 249, 445, 515, + 909, 545, 703, 919, 874, 474, 882, 500, 594, 612, + 641, 801, 220, 162, 819, 984, 589, 513, 495, 799, + 161, 604, 958, 533, 221, 400, 386, 867, 600, 782, + 382, 596, 414, 171, 516, 375, 682, 485, 911, 276, + 98, 553, 163, 354, 666, 933, 424, 341, 533, 870, + 227, 730, 475, 186, 263, 647, 537, 686, 600, 224, + 469, 68, 770, 919, 190, 373, 294, 822, 808, 206, + 184, 943, 795, 384, 383, 461, 404, 758, 839, 887, + 715, 67, 618, 276, 204, 918, 873, 777, 604, 560, + 951, 160, 578, 722, 79, 804, 96, 409, 713, 940, + 652, 934, 970, 447, 318, 353, 859, 672, 112, 785, + 645, 863, 803, 350, 139, 93, 354, 99, 820, 908, + 609, 772, 154, 274, 580, 184, 79, 626, 630, 742, + 653, 282, 762, 623, 680, 81, 927, 626, 789, 125, + 411, 521, 938, 300, 821, 78, 343, 175, 128, 250, + 170, 774, 972, 275, 999, 639, 495, 78, 352, 126, + 857, 956, 358, 619, 580, 124, 737, 594, 701, 612, + 669, 112, 134, 694, 363, 992, 809, 743, 168, 974, + 944, 375, 748, 52, 600, 747, 642, 182, 862, 81, + 344, 805, 988, 739, 511, 655, 814, 334, 249, 515, + 897, 955, 664, 981, 649, 113, 974, 459, 893, 228, + 433, 837, 553, 268, 926, 240, 102, 654, 459, 51, + 686, 754, 806, 760, 493, 403, 415, 394, 687, 700, + 946, 670, 656, 610, 738, 392, 760, 799, 887, 653, + 978, 321, 576, 617, 626, 502, 894, 679, 243, 440, + 680, 879, 194, 572, 640, 724, 926, 56, 204, 700, + 707, 151, 457, 449, 797, 195, 791, 558, 945, 679, + 297, 59, 87, 824, 713, 663, 412, 693, 342, 606, + 134, 108, 571, 364, 631, 212, 174, 643, 304, 329, + 343, 97, 430, 751, 497, 314, 983, 374, 822, 928, + 140, 206, 73, 263, 980, 736, 876, 478, 430, 305, + 170, 514, 364, 692, 829, 82, 855, 953, 676, 246, + 369, 970, 294, 750, 807, 827, 150, 790, 288, 923, + 804, 378, 215, 828, 592, 281, 565, 555, 710, 82, + 896, 831, 547, 261, 524, 462, 293, 465, 502, 56, + 661, 821, 976, 991, 658, 869, 905, 758, 745, 193, + 768, 550, 608, 933, 378, 286, 215, 979, 792, 961, + 61, 688, 793, 644, 986, 403, 106, 366, 905, 644, + 372, 567, 466, 434, 645, 210, 389, 550, 919, 135, + 780, 773, 635, 389, 707, 100, 626, 958, 165, 504, + 920, 176, 193, 713, 857, 265, 203, 50, 668, 108, + 645, 990, 626, 197, 510, 357, 358, 850, 858, 364, + 936, 638 +}; + + +/*-------------------------------------------------------------*/ +/*--- end randtable.c ---*/ +/*-------------------------------------------------------------*/ diff --git a/3party_sloynik/bzip2/randtable.o b/3party_sloynik/bzip2/randtable.o new file mode 100644 index 0000000000000000000000000000000000000000..0ffe88078d1c585640c25a9f61704c5fa2ff5b8e GIT binary patch literal 5172 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 YcRfEmck2HnIHQKZF8z04cYg@|4{q8r&;S4c literal 0 HcmV?d00001 diff --git a/3party_sloynik/bzip2/sample1.bz2 b/3party_sloynik/bzip2/sample1.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..18dea60043b692c86b095c06123809f10430fd03 GIT binary patch literal 32348 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 T9V3)BU;ZxSig2MJnd56pDt(C> literal 0 HcmV?d00001 diff --git a/3party_sloynik/bzip2/sample1.ref b/3party_sloynik/bzip2/sample1.ref new file mode 100644 index 0000000000000000000000000000000000000000..a56e52b77f90faf637e2c1e87ee60eaffa4c5056 GIT binary patch literal 98696 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 Z(Zy#cUu01QmiqtNR=obJ?T`8Y`~PZf1y}$8 literal 0 HcmV?d00001 diff --git a/3party_sloynik/bzip2/sample2.bz2 b/3party_sloynik/bzip2/sample2.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..d5a6160ba20903121617cb8bf4fbdb71ba1ca1e7 GIT binary patch literal 73732 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
gnIFfvi(O?e$J0;1+%xLGi@k}ivMjcJIU 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
    oa|c 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 literal 0 HcmV?d00001 diff --git a/3party_sloynik/bzip2/sample3.bz2 b/3party_sloynik/bzip2/sample3.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..d90cff9208fe3f15eebd888e978f639248752126 GIT binary patch literal 235 zcmVGUXb&m7Q)GuvY4W7DBi0bybO}v|xtYG6|~5=Sd|%uMPkN zKoB6Yo`4Dni@uED{RR!AUXhJ4Aj_`^@cN^s$CJ95fR!nP>-4u_Z0JO2Gf1zI+FWf9 lNldh8X=%unLauTcBrdZ|@<43xY-0cb literal 0 HcmV?d00001 diff --git a/3party_sloynik/bzip2/sample3.ref b/3party_sloynik/bzip2/sample3.ref new file mode 100644 index 0000000000..775a2f68e2 --- /dev/null +++ b/3party_sloynik/bzip2/sample3.ref @@ -0,0 +1,30007 @@ +This file is exceedingly boring. If you find yourself +reading it, please (1) take it from me that you can safely +guess what the rest of the file says, and (2) seek professional +help. + +ps. there are no further sarcastic remarks in this file. + +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh +ugh diff --git a/3party_sloynik/bzip2/spewG.c b/3party_sloynik/bzip2/spewG.c new file mode 100644 index 0000000000..5892b92c36 --- /dev/null +++ b/3party_sloynik/bzip2/spewG.c @@ -0,0 +1,54 @@ + +/* spew out a thoroughly gigantic file designed so that bzip2 + can compress it reasonably rapidly. This is to help test + support for large files (> 2GB) in a reasonable amount of time. + I suggest you use the undocumented --exponential option to + bzip2 when compressing the resulting file; this saves a bit of + time. Note: *don't* bother with --exponential when compressing + Real Files; it'll just waste a lot of CPU time :-) + (but is otherwise harmless). +*/ + +/* ------------------------------------------------------------------ + This file is part of bzip2/libbzip2, a program and library for + lossless, block-sorting data compression. + + bzip2/libbzip2 version 1.0.5 of 10 December 2007 + Copyright (C) 1996-2007 Julian Seward + + Please read the WARNING, DISCLAIMER and PATENTS sections in the + README file. + + This program is released under the terms of the license contained + in the file LICENSE. + ------------------------------------------------------------------ */ + + +#define _FILE_OFFSET_BITS 64 + +#include +#include + +/* The number of megabytes of junk to spew out (roughly) */ +#define MEGABYTES 5000 + +#define N_BUF 1000000 +char buf[N_BUF]; + +int main ( int argc, char** argv ) +{ + int ii, kk, p; + srandom(1); + setbuffer ( stdout, buf, N_BUF ); + for (kk = 0; kk < MEGABYTES * 515; kk+=3) { + p = 25+random()%50; + for (ii = 0; ii < p; ii++) + printf ( "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ); + for (ii = 0; ii < p-1; ii++) + printf ( "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" ); + for (ii = 0; ii < p+1; ii++) + printf ( "ccccccccccccccccccccccccccccccccccccc" ); + } + fflush(stdout); + return 0; +} diff --git a/3party_sloynik/bzip2/unzcrash.c b/3party_sloynik/bzip2/unzcrash.c new file mode 100644 index 0000000000..a1b75463ad --- /dev/null +++ b/3party_sloynik/bzip2/unzcrash.c @@ -0,0 +1,141 @@ + +/* A test program written to test robustness to decompression of + corrupted data. Usage is + unzcrash filename + and the program will read the specified file, compress it (in memory), + and then repeatedly decompress it, each time with a different bit of + the compressed data inverted, so as to test all possible one-bit errors. + This should not cause any invalid memory accesses. If it does, + I want to know about it! + + PS. As you can see from the above description, the process is + incredibly slow. A file of size eg 5KB will cause it to run for + many hours. +*/ + +/* ------------------------------------------------------------------ + This file is part of bzip2/libbzip2, a program and library for + lossless, block-sorting data compression. + + bzip2/libbzip2 version 1.0.5 of 10 December 2007 + Copyright (C) 1996-2007 Julian Seward + + Please read the WARNING, DISCLAIMER and PATENTS sections in the + README file. + + This program is released under the terms of the license contained + in the file LICENSE. + ------------------------------------------------------------------ */ + + +#include +#include +#include "bzlib.h" + +#define M_BLOCK 1000000 + +typedef unsigned char uchar; + +#define M_BLOCK_OUT (M_BLOCK + 1000000) +uchar inbuf[M_BLOCK]; +uchar outbuf[M_BLOCK_OUT]; +uchar zbuf[M_BLOCK + 600 + (M_BLOCK / 100)]; + +int nIn, nOut, nZ; + +static char *bzerrorstrings[] = { + "OK" + ,"SEQUENCE_ERROR" + ,"PARAM_ERROR" + ,"MEM_ERROR" + ,"DATA_ERROR" + ,"DATA_ERROR_MAGIC" + ,"IO_ERROR" + ,"UNEXPECTED_EOF" + ,"OUTBUFF_FULL" + ,"???" /* for future */ + ,"???" /* for future */ + ,"???" /* for future */ + ,"???" /* for future */ + ,"???" /* for future */ + ,"???" /* for future */ +}; + +void flip_bit ( int bit ) +{ + int byteno = bit / 8; + int bitno = bit % 8; + uchar mask = 1 << bitno; + //fprintf ( stderr, "(byte %d bit %d mask %d)", + // byteno, bitno, (int)mask ); + zbuf[byteno] ^= mask; +} + +int main ( int argc, char** argv ) +{ + FILE* f; + int r; + int bit; + int i; + + if (argc != 2) { + fprintf ( stderr, "usage: unzcrash filename\n" ); + return 1; + } + + f = fopen ( argv[1], "r" ); + if (!f) { + fprintf ( stderr, "unzcrash: can't open %s\n", argv[1] ); + return 1; + } + + nIn = fread ( inbuf, 1, M_BLOCK, f ); + fprintf ( stderr, "%d bytes read\n", nIn ); + + nZ = M_BLOCK; + r = BZ2_bzBuffToBuffCompress ( + zbuf, &nZ, inbuf, nIn, 9, 0, 30 ); + + assert (r == BZ_OK); + fprintf ( stderr, "%d after compression\n", nZ ); + + for (bit = 0; bit < nZ*8; bit++) { + fprintf ( stderr, "bit %d ", bit ); + flip_bit ( bit ); + nOut = M_BLOCK_OUT; + r = BZ2_bzBuffToBuffDecompress ( + outbuf, &nOut, zbuf, nZ, 0, 0 ); + fprintf ( stderr, " %d %s ", r, bzerrorstrings[-r] ); + + if (r != BZ_OK) { + fprintf ( stderr, "\n" ); + } else { + if (nOut != nIn) { + fprintf(stderr, "nIn/nOut mismatch %d %d\n", nIn, nOut ); + return 1; + } else { + for (i = 0; i < nOut; i++) + if (inbuf[i] != outbuf[i]) { + fprintf(stderr, "mismatch at %d\n", i ); + return 1; + } + if (i == nOut) fprintf(stderr, "really ok!\n" ); + } + } + + flip_bit ( bit ); + } + +#if 0 + assert (nOut == nIn); + for (i = 0; i < nOut; i++) { + if (inbuf[i] != outbuf[i]) { + fprintf ( stderr, "difference at %d !\n", i ); + return 1; + } + } +#endif + + fprintf ( stderr, "all ok\n" ); + return 0; +} diff --git a/3party_sloynik/bzip2/words0 b/3party_sloynik/bzip2/words0 new file mode 100644 index 0000000000..fbf442ad6b --- /dev/null +++ b/3party_sloynik/bzip2/words0 @@ -0,0 +1,9 @@ + +If compilation produces errors, or a large number of warnings, +please read README.COMPILATION.PROBLEMS -- you might be able to +adjust the flags in this Makefile to improve matters. + +Also in README.COMPILATION.PROBLEMS are some hints that may help +if your build produces an executable which is unable to correctly +handle so-called 'large files' -- files of size 2GB or more. + diff --git a/3party_sloynik/bzip2/words1 b/3party_sloynik/bzip2/words1 new file mode 100644 index 0000000000..2e83de9f08 --- /dev/null +++ b/3party_sloynik/bzip2/words1 @@ -0,0 +1,4 @@ + +Doing 6 tests (3 compress, 3 uncompress) ... +If there's a problem, things might stop at this point. + diff --git a/3party_sloynik/bzip2/words2 b/3party_sloynik/bzip2/words2 new file mode 100644 index 0000000000..caddcf4226 --- /dev/null +++ b/3party_sloynik/bzip2/words2 @@ -0,0 +1,5 @@ + +Checking test results. If any of the four "cmp"s which follow +report any differences, something is wrong. If you can't easily +figure out what, please let me know (jseward@bzip.org). + diff --git a/3party_sloynik/bzip2/words3 b/3party_sloynik/bzip2/words3 new file mode 100644 index 0000000000..6972669906 --- /dev/null +++ b/3party_sloynik/bzip2/words3 @@ -0,0 +1,30 @@ + +If you got this far and the 'cmp's didn't complain, it looks +like you're in business. + +To install in /usr/local/bin, /usr/local/lib, /usr/local/man and +/usr/local/include, type + + make install + +To install somewhere else, eg, /xxx/yyy/{bin,lib,man,include}, type + + make install PREFIX=/xxx/yyy + +If you are (justifiably) paranoid and want to see what 'make install' +is going to do, you can first do + + make -n install or + make -n install PREFIX=/xxx/yyy respectively. + +The -n instructs make to show the commands it would execute, but +not actually execute them. + +Instructions for use are in the preformatted manual page, in the file +bzip2.txt. For more detailed documentation, read the full manual. +It is available in Postscript form (manual.ps), PDF form (manual.pdf), +and HTML form (manual.html). + +You can also do "bzip2 --help" to see some helpful information. +"bzip2 -L" displays the software license. + diff --git a/3party_sloynik/bzip2/xmlproc.sh b/3party_sloynik/bzip2/xmlproc.sh new file mode 100644 index 0000000000..53841773d4 --- /dev/null +++ b/3party_sloynik/bzip2/xmlproc.sh @@ -0,0 +1,114 @@ +#!/bin/bash +# see the README file for usage etc. +# +# ------------------------------------------------------------------ +# This file is part of bzip2/libbzip2, a program and library for +# lossless, block-sorting data compression. +# +# bzip2/libbzip2 version 1.0.5 of 10 December 2007 +# Copyright (C) 1996-2007 Julian Seward +# +# Please read the WARNING, DISCLAIMER and PATENTS sections in the +# README file. +# +# This program is released under the terms of the license contained +# in the file LICENSE. +# ---------------------------------------------------------------- + + +usage() { + echo ''; + echo 'Usage: xmlproc.sh -[option] '; + echo 'Specify a target from:'; + echo '-v verify xml file conforms to dtd'; + echo '-html output in html format (single file)'; + echo '-ps output in postscript format'; + echo '-pdf output in pdf format'; + exit; +} + +if test $# -ne 2; then + usage +fi +# assign the variable for the output type +action=$1; shift +# assign the output filename +xmlfile=$1; shift +# and check user input it correct +if !(test -f $xmlfile); then + echo "No such file: $xmlfile"; + exit; +fi +# some other stuff we will use +OUT=output +xsl_fo=bz-fo.xsl +xsl_html=bz-html.xsl + +basename=$xmlfile +basename=${basename//'.xml'/''} + +fofile="${basename}.fo" +htmlfile="${basename}.html" +pdffile="${basename}.pdf" +psfile="${basename}.ps" +xmlfmtfile="${basename}.fmt" + +# first process the xmlfile with CDATA tags +./format.pl $xmlfile $xmlfmtfile +# so the shell knows where the catalogs live +export XML_CATALOG_FILES=/etc/xml/catalog + +# post-processing tidy up +cleanup() { + echo "Cleaning up: $@" + while [ $# != 0 ] + do + arg=$1; shift; + echo " deleting $arg"; + rm $arg + done +} + +case $action in + -v) + flags='--noout --xinclude --noblanks --postvalid' + dtd='--dtdvalid http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd' + xmllint $flags $dtd $xmlfmtfile 2> $OUT + egrep 'error' $OUT + rm $OUT + ;; + + -html) + echo "Creating $htmlfile ..." + xsltproc --nonet --xinclude -o $htmlfile $xsl_html $xmlfmtfile + cleanup $xmlfmtfile + ;; + + -pdf) + echo "Creating $pdffile ..." + xsltproc --nonet --xinclude -o $fofile $xsl_fo $xmlfmtfile + pdfxmltex $fofile >$OUT $OUT $OUT $OUT $OUT $OUT $OUT $OUT $OUT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/3party_sloynik/jansson/README.rst b/3party_sloynik/jansson/README.rst new file mode 100644 index 0000000000..27706dd5a7 --- /dev/null +++ b/3party_sloynik/jansson/README.rst @@ -0,0 +1,59 @@ +Jansson README +============== + +Jansson_ is a C library for encoding, decoding and manipulating JSON +data. Its main features and design principles are: + +- Simple and intuitive API and data model + +- Comprehensive documentation + +- No dependencies on other libraries + +- Full Unicode support (UTF-8) + +- Extensive test suite + +Jansson is licensed under the `MIT license`_; see LICENSE in the +source distribution for details. + + +Compilation and Installation +---------------------------- + +If you obtained a source tarball, just use the standard autotools +commands:: + + $ ./configure && make && make install + +If the source has been checked out from a Git repository, the +./configure script has to be generated fist. The easiest way is to use +autoreconf:: + + $ autoreconf -i + +To run the test suite, invoke:: + + $ make check + + +Documentation +------------- + +Documentation is in the ``doc/`` subdirectory. It's written in +reStructuredText_ with Sphinx_ annotations, so reading it in plain may +be inconvenient. For this reason, prebuilt HTML documentation is +available at http://www.digip.org/jansson/doc/. + +To generate HTML documentation yourself, invoke:: + + make html + +and point your browser to ``doc/_build/html/index.html``. Sphinx_ is +required to generate the documentation. + + +.. _Jansson: http://www.digip.org/jansson/ +.. _`MIT license`: http://www.opensource.org/licenses/mit-license.php +.. _reStructuredText: http://docutils.sourceforge.net/rst.html +.. _Sphinx: http://sphinx.pocoo.org/ diff --git a/3party_sloynik/jansson/jansson.pro b/3party_sloynik/jansson/jansson.pro new file mode 100644 index 0000000000..b973acaab3 --- /dev/null +++ b/3party_sloynik/jansson/jansson.pro @@ -0,0 +1,22 @@ +TARGET = jansson +SLOYNIK_DIR = ../.. +include($$SLOYNIK_DIR/sloynik_common.pri) + +TEMPLATE = lib +CONFIG += staticlib +SOURCES += \ + src/dump.c \ + src/hashtable.c \ + src/load.c \ + src/strbuffer.c \ + src/utf.c \ + src/value.c \ + +HEADERS += \ + myjansson.hpp \ + src/jansson.h \ + src/jansson_private.h \ + src/hashtable.h \ + src/strbuffer.h \ + src/utf.h \ + src/util.h \ diff --git a/3party_sloynik/jansson/myjansson.hpp b/3party_sloynik/jansson/myjansson.hpp new file mode 100644 index 0000000000..4c040266b3 --- /dev/null +++ b/3party_sloynik/jansson/myjansson.hpp @@ -0,0 +1,69 @@ +#include "src/jansson.h" +#include "../../base/exception.hpp" +#include "../../std/algorithm.hpp" + +namespace my +{ + +class Json +{ +public: + DECLARE_EXCEPTION(Exception, RootException); + + explicit Json(json_t * pJson) : m_pJson(pJson) + { + } + + explicit Json(char const * s) + { + json_error_t jsonError; + m_pJson = json_loads(s, &jsonError); + if (!m_pJson) + MYTHROW(Exception, (jsonError.line, jsonError.text)); + } + + ~Json() + { + if (m_pJson) + json_decref(m_pJson); + } + + Json(Json const & json) : m_pJson(json.m_pJson) + { + if (m_pJson) + json_incref(m_pJson); + } + + Json & operator = (Json const & json) + { + Json tmp(json); + tmp.swap(*this); + return *this; + } + + void swap(Json & json) + { + ::swap(m_pJson, json.m_pJson); + } + + json_t * get() const + { + return m_pJson; + } + + json_t * operator -> () const + { + return m_pJson; + } + + operator json_t * () const + { + return m_pJson; + } + +private: + json_t * m_pJson; +}; + +} + diff --git a/3party_sloynik/jansson/src/config.h b/3party_sloynik/jansson/src/config.h new file mode 100644 index 0000000000..7296155c8f --- /dev/null +++ b/3party_sloynik/jansson/src/config.h @@ -0,0 +1,45 @@ +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +/* #undef inline */ +#endif + +/* Define to the type of a signed integer type of width exactly 32 bits if + such a type exists and the standard includes do not define it. */ +/* #undef int32_t */ diff --git a/3party_sloynik/jansson/src/dump.c b/3party_sloynik/jansson/src/dump.c new file mode 100644 index 0000000000..e58bb2bc5c --- /dev/null +++ b/3party_sloynik/jansson/src/dump.c @@ -0,0 +1,460 @@ +/* + * Copyright (c) 2009, 2010 Petri Lehtinen + * + * Jansson is free software; you can redistribute it and/or modify + * it under the terms of the MIT license. See LICENSE for details. + */ + +#define _GNU_SOURCE +#include +#include +#include +#include + +#include "jansson.h" +#include "jansson_private.h" +#include "strbuffer.h" +#include "utf.h" + +#define MAX_INTEGER_STR_LENGTH 100 +#define MAX_REAL_STR_LENGTH 100 + +typedef int (*dump_func)(const char *buffer, int size, void *data); + +struct string +{ + char *buffer; + int length; + int size; +}; + +static int dump_to_strbuffer(const char *buffer, int size, void *data) +{ + return strbuffer_append_bytes((strbuffer_t *)data, buffer, size); +} + +static int dump_to_file(const char *buffer, int size, void *data) +{ + FILE *dest = (FILE *)data; + if(fwrite(buffer, size, 1, dest) != 1) + return -1; + return 0; +} + +/* 256 spaces (the maximum indentation size) */ +static char whitespace[] = " "; + +static int dump_indent(unsigned long flags, int depth, int space, dump_func dump, void *data) +{ + if(JSON_INDENT(flags) > 0) + { + int i, ws_count = JSON_INDENT(flags); + + if(dump("\n", 1, data)) + return -1; + + for(i = 0; i < depth; i++) + { + if(dump(whitespace, ws_count, data)) + return -1; + } + } + else if(space && !(flags & JSON_COMPACT)) + { + return dump(" ", 1, data); + } + return 0; +} + +static int dump_string(const char *str, int ascii, dump_func dump, void *data) +{ + const char *pos, *end; + int32_t codepoint; + + if(dump("\"", 1, data)) + return -1; + + end = pos = str; + while(1) + { + const char *text; + char seq[13]; + int length; + + while(*end) + { + end = utf8_iterate(pos, &codepoint); + if(!end) + return -1; + + /* mandatory escape or control char */ + if(codepoint == '\\' || codepoint == '"' || codepoint < 0x20) + break; + + /* non-ASCII */ + if(ascii && codepoint > 0x7F) + break; + + pos = end; + } + + if(pos != str) { + if(dump(str, pos - str, data)) + return -1; + } + + if(end == pos) + break; + + /* handle \, ", and control codes */ + length = 2; + switch(codepoint) + { + case '\\': text = "\\\\"; break; + case '\"': text = "\\\""; break; + case '\b': text = "\\b"; break; + case '\f': text = "\\f"; break; + case '\n': text = "\\n"; break; + case '\r': text = "\\r"; break; + case '\t': text = "\\t"; break; + default: + { + /* codepoint is in BMP */ + if(codepoint < 0x10000) + { + sprintf(seq, "\\u%04x", codepoint); + length = 6; + } + + /* not in BMP -> construct a UTF-16 surrogate pair */ + else + { + int32_t first, last; + + codepoint -= 0x10000; + first = 0xD800 | ((codepoint & 0xffc00) >> 10); + last = 0xDC00 | (codepoint & 0x003ff); + + sprintf(seq, "\\u%04x\\u%04x", first, last); + length = 12; + } + + text = seq; + break; + } + } + + if(dump(text, length, data)) + return -1; + + str = pos = end; + } + + return dump("\"", 1, data); +} + +static int object_key_compare_keys(const void *key1, const void *key2) +{ + return strcmp((*(const object_key_t **)key1)->key, + (*(const object_key_t **)key2)->key); +} + +static int object_key_compare_serials(const void *key1, const void *key2) +{ + return (*(const object_key_t **)key1)->serial - + (*(const object_key_t **)key2)->serial; +} + +static int do_dump(const json_t *json, unsigned long flags, int depth, + dump_func dump, void *data) +{ + int ascii = flags & JSON_ENSURE_ASCII ? 1 : 0; + + switch(json_typeof(json)) { + case JSON_NULL: + return dump("null", 4, data); + + case JSON_TRUE: + return dump("true", 4, data); + + case JSON_FALSE: + return dump("false", 5, data); + + case JSON_INTEGER: + { + char buffer[MAX_INTEGER_STR_LENGTH]; + int size; + + size = snprintf(buffer, MAX_INTEGER_STR_LENGTH, "%d", json_integer_value(json)); + if(size >= MAX_INTEGER_STR_LENGTH) + return -1; + + return dump(buffer, size, data); + } + + case JSON_REAL: + { + char buffer[MAX_REAL_STR_LENGTH]; + int size; + + size = snprintf(buffer, MAX_REAL_STR_LENGTH, "%.17g", + json_real_value(json)); + if(size >= MAX_REAL_STR_LENGTH) + return -1; + + /* Make sure there's a dot or 'e' in the output. Otherwise + a real is converted to an integer when decoding */ + if(strchr(buffer, '.') == NULL && + strchr(buffer, 'e') == NULL) + { + if(size + 2 >= MAX_REAL_STR_LENGTH) { + /* No space to append ".0" */ + return -1; + } + buffer[size] = '.'; + buffer[size + 1] = '0'; + size += 2; + } + + return dump(buffer, size, data); + } + + case JSON_STRING: + return dump_string(json_string_value(json), ascii, dump, data); + + case JSON_ARRAY: + { + int i; + int n; + json_array_t *array; + + /* detect circular references */ + array = json_to_array(json); + if(array->visited) + goto array_error; + array->visited = 1; + + n = json_array_size(json); + + if(dump("[", 1, data)) + goto array_error; + if(n == 0) { + array->visited = 0; + return dump("]", 1, data); + } + if(dump_indent(flags, depth + 1, 0, dump, data)) + goto array_error; + + for(i = 0; i < n; ++i) { + if(do_dump(json_array_get(json, i), flags, depth + 1, + dump, data)) + goto array_error; + + if(i < n - 1) + { + if(dump(",", 1, data) || + dump_indent(flags, depth + 1, 1, dump, data)) + goto array_error; + } + else + { + if(dump_indent(flags, depth, 0, dump, data)) + goto array_error; + } + } + + array->visited = 0; + return dump("]", 1, data); + + array_error: + array->visited = 0; + return -1; + } + + case JSON_OBJECT: + { + json_object_t *object; + void *iter; + const char *separator; + int separator_length; + + if(flags & JSON_COMPACT) { + separator = ":"; + separator_length = 1; + } + else { + separator = ": "; + separator_length = 2; + } + + /* detect circular references */ + object = json_to_object(json); + if(object->visited) + goto object_error; + object->visited = 1; + + iter = json_object_iter((json_t *)json); + + if(dump("{", 1, data)) + goto object_error; + if(!iter) { + object->visited = 0; + return dump("}", 1, data); + } + if(dump_indent(flags, depth + 1, 0, dump, data)) + goto object_error; + + if(flags & JSON_SORT_KEYS || flags & JSON_PRESERVE_ORDER) + { + const object_key_t **keys; + unsigned int size; + unsigned int i; + int (*cmp_func)(const void *, const void *); + + size = json_object_size(json); + keys = malloc(size * sizeof(object_key_t *)); + if(!keys) + goto object_error; + + i = 0; + while(iter) + { + keys[i] = jsonp_object_iter_fullkey(iter); + iter = json_object_iter_next((json_t *)json, iter); + i++; + } + assert(i == size); + + if(flags & JSON_SORT_KEYS) + cmp_func = object_key_compare_keys; + else + cmp_func = object_key_compare_serials; + + qsort(keys, size, sizeof(object_key_t *), cmp_func); + + for(i = 0; i < size; i++) + { + const char *key; + json_t *value; + + key = keys[i]->key; + value = json_object_get(json, key); + assert(value); + + dump_string(key, ascii, dump, data); + if(dump(separator, separator_length, data) || + do_dump(value, flags, depth + 1, dump, data)) + { + free(keys); + goto object_error; + } + + if(i < size - 1) + { + if(dump(",", 1, data) || + dump_indent(flags, depth + 1, 1, dump, data)) + { + free(keys); + goto object_error; + } + } + else + { + if(dump_indent(flags, depth, 0, dump, data)) + { + free(keys); + goto object_error; + } + } + } + + free(keys); + } + else + { + /* Don't sort keys */ + + while(iter) + { + void *next = json_object_iter_next((json_t *)json, iter); + + dump_string(json_object_iter_key(iter), ascii, dump, data); + if(dump(separator, separator_length, data) || + do_dump(json_object_iter_value(iter), flags, depth + 1, + dump, data)) + goto object_error; + + if(next) + { + if(dump(",", 1, data) || + dump_indent(flags, depth + 1, 1, dump, data)) + goto object_error; + } + else + { + if(dump_indent(flags, depth, 0, dump, data)) + goto object_error; + } + + iter = next; + } + } + + object->visited = 0; + return dump("}", 1, data); + + object_error: + object->visited = 0; + return -1; + } + + default: + /* not reached */ + return -1; + } +} + + +char *json_dumps(const json_t *json, unsigned long flags) +{ + strbuffer_t strbuff; + char *result; + + if(!json_is_array(json) && !json_is_object(json)) + return NULL; + + if(strbuffer_init(&strbuff)) + return NULL; + + if(do_dump(json, flags, 0, dump_to_strbuffer, (void *)&strbuff)) { + strbuffer_close(&strbuff); + return NULL; + } + + result = strdup(strbuffer_value(&strbuff)); + strbuffer_close(&strbuff); + + return result; +} + +int json_dumpf(const json_t *json, FILE *output, unsigned long flags) +{ + if(!json_is_array(json) && !json_is_object(json)) + return -1; + + return do_dump(json, flags, 0, dump_to_file, (void *)output); +} + +int json_dump_file(const json_t *json, const char *path, unsigned long flags) +{ + int result; + + FILE *output = fopen(path, "w"); + if(!output) + return -1; + + result = json_dumpf(json, output, flags); + + fclose(output); + return result; +} diff --git a/3party_sloynik/jansson/src/hashtable.c b/3party_sloynik/jansson/src/hashtable.c new file mode 100644 index 0000000000..066476eb30 --- /dev/null +++ b/3party_sloynik/jansson/src/hashtable.c @@ -0,0 +1,375 @@ +/* + * Copyright (c) 2009, 2010 Petri Lehtinen + * + * This library is free software; you can redistribute it and/or modify + * it under the terms of the MIT license. See LICENSE for details. + */ + +#include "config.h" + +#include +#include "hashtable.h" + +typedef struct hashtable_list list_t; +typedef struct hashtable_pair pair_t; +typedef struct hashtable_bucket bucket_t; + +#define container_of(ptr_, type_, member_) \ + ((type_ *)((char *)ptr_ - (size_t)&((type_ *)0)->member_)) + +#define list_to_pair(list_) container_of(list_, pair_t, list) + +static inline void list_init(list_t *list) +{ + list->next = list; + list->prev = list; +} + +static inline void list_insert(list_t *list, list_t *node) +{ + node->next = list; + node->prev = list->prev; + list->prev->next = node; + list->prev = node; +} + +static inline void list_remove(list_t *list) +{ + list->prev->next = list->next; + list->next->prev = list->prev; +} + +static inline int bucket_is_empty(hashtable_t *hashtable, bucket_t *bucket) +{ + return bucket->first == &hashtable->list && bucket->first == bucket->last; +} + +static void insert_to_bucket(hashtable_t *hashtable, bucket_t *bucket, + list_t *list) +{ + if(bucket_is_empty(hashtable, bucket)) + { + list_insert(&hashtable->list, list); + bucket->first = bucket->last = list; + } + else + { + list_insert(bucket->first, list); + bucket->first = list; + } +} + +static unsigned int primes[] = { + 5, 13, 23, 53, 97, 193, 389, 769, 1543, 3079, 6151, 12289, 24593, + 49157, 98317, 196613, 393241, 786433, 1572869, 3145739, 6291469, + 12582917, 25165843, 50331653, 100663319, 201326611, 402653189, + 805306457, 1610612741 +}; +static const unsigned int num_primes = sizeof(primes) / sizeof(unsigned int); + +static inline unsigned int num_buckets(hashtable_t *hashtable) +{ + return primes[hashtable->num_buckets]; +} + + +static pair_t *hashtable_find_pair(hashtable_t *hashtable, bucket_t *bucket, + const void *key, unsigned int hash) +{ + list_t *list; + pair_t *pair; + + if(bucket_is_empty(hashtable, bucket)) + return NULL; + + list = bucket->first; + while(1) + { + pair = list_to_pair(list); + if(pair->hash == hash && hashtable->cmp_keys(pair->key, key)) + return pair; + + if(list == bucket->last) + break; + + list = list->next; + } + + return NULL; +} + +/* returns 0 on success, -1 if key was not found */ +static int hashtable_do_del(hashtable_t *hashtable, + const void *key, unsigned int hash) +{ + pair_t *pair; + bucket_t *bucket; + unsigned int index; + + index = hash % num_buckets(hashtable); + bucket = &hashtable->buckets[index]; + + pair = hashtable_find_pair(hashtable, bucket, key, hash); + if(!pair) + return -1; + + if(&pair->list == bucket->first && &pair->list == bucket->last) + bucket->first = bucket->last = &hashtable->list; + + else if(&pair->list == bucket->first) + bucket->first = pair->list.next; + + else if(&pair->list == bucket->last) + bucket->last = pair->list.prev; + + list_remove(&pair->list); + + if(hashtable->free_key) + hashtable->free_key(pair->key); + if(hashtable->free_value) + hashtable->free_value(pair->value); + + free(pair); + hashtable->size--; + + return 0; +} + +static void hashtable_do_clear(hashtable_t *hashtable) +{ + list_t *list, *next; + pair_t *pair; + + for(list = hashtable->list.next; list != &hashtable->list; list = next) + { + next = list->next; + pair = list_to_pair(list); + if(hashtable->free_key) + hashtable->free_key(pair->key); + if(hashtable->free_value) + hashtable->free_value(pair->value); + free(pair); + } +} + +static int hashtable_do_rehash(hashtable_t *hashtable) +{ + list_t *list, *next; + pair_t *pair; + unsigned int i, index, new_size; + + free(hashtable->buckets); + + hashtable->num_buckets++; + new_size = num_buckets(hashtable); + + hashtable->buckets = malloc(new_size * sizeof(bucket_t)); + if(!hashtable->buckets) + return -1; + + for(i = 0; i < num_buckets(hashtable); i++) + { + hashtable->buckets[i].first = hashtable->buckets[i].last = + &hashtable->list; + } + + list = hashtable->list.next; + list_init(&hashtable->list); + + for(; list != &hashtable->list; list = next) { + next = list->next; + pair = list_to_pair(list); + index = pair->hash % new_size; + insert_to_bucket(hashtable, &hashtable->buckets[index], &pair->list); + } + + return 0; +} + + +hashtable_t *hashtable_create(key_hash_fn hash_key, key_cmp_fn cmp_keys, + free_fn free_key, free_fn free_value) +{ + hashtable_t *hashtable = malloc(sizeof(hashtable_t)); + if(!hashtable) + return NULL; + + if(hashtable_init(hashtable, hash_key, cmp_keys, free_key, free_value)) + { + free(hashtable); + return NULL; + } + + return hashtable; +} + +void hashtable_destroy(hashtable_t *hashtable) +{ + hashtable_close(hashtable); + free(hashtable); +} + +int hashtable_init(hashtable_t *hashtable, + key_hash_fn hash_key, key_cmp_fn cmp_keys, + free_fn free_key, free_fn free_value) +{ + unsigned int i; + + hashtable->size = 0; + hashtable->num_buckets = 0; /* index to primes[] */ + hashtable->buckets = malloc(num_buckets(hashtable) * sizeof(bucket_t)); + if(!hashtable->buckets) + return -1; + + list_init(&hashtable->list); + + hashtable->hash_key = hash_key; + hashtable->cmp_keys = cmp_keys; + hashtable->free_key = free_key; + hashtable->free_value = free_value; + + for(i = 0; i < num_buckets(hashtable); i++) + { + hashtable->buckets[i].first = hashtable->buckets[i].last = + &hashtable->list; + } + + return 0; +} + +void hashtable_close(hashtable_t *hashtable) +{ + hashtable_do_clear(hashtable); + free(hashtable->buckets); +} + +int hashtable_set(hashtable_t *hashtable, void *key, void *value) +{ + pair_t *pair; + bucket_t *bucket; + unsigned int hash, index; + + /* rehash if the load ratio exceeds 1 */ + if(hashtable->size >= num_buckets(hashtable)) + if(hashtable_do_rehash(hashtable)) + return -1; + + hash = hashtable->hash_key(key); + index = hash % num_buckets(hashtable); + bucket = &hashtable->buckets[index]; + pair = hashtable_find_pair(hashtable, bucket, key, hash); + + if(pair) + { + if(hashtable->free_key) + hashtable->free_key(key); + if(hashtable->free_value) + hashtable->free_value(pair->value); + pair->value = value; + } + else + { + pair = malloc(sizeof(pair_t)); + if(!pair) + return -1; + + pair->key = key; + pair->value = value; + pair->hash = hash; + list_init(&pair->list); + + insert_to_bucket(hashtable, bucket, &pair->list); + + hashtable->size++; + } + return 0; +} + +void *hashtable_get(hashtable_t *hashtable, const void *key) +{ + pair_t *pair; + unsigned int hash; + bucket_t *bucket; + + hash = hashtable->hash_key(key); + bucket = &hashtable->buckets[hash % num_buckets(hashtable)]; + + pair = hashtable_find_pair(hashtable, bucket, key, hash); + if(!pair) + return NULL; + + return pair->value; +} + +int hashtable_del(hashtable_t *hashtable, const void *key) +{ + unsigned int hash = hashtable->hash_key(key); + return hashtable_do_del(hashtable, key, hash); +} + +void hashtable_clear(hashtable_t *hashtable) +{ + unsigned int i; + + hashtable_do_clear(hashtable); + + for(i = 0; i < num_buckets(hashtable); i++) + { + hashtable->buckets[i].first = hashtable->buckets[i].last = + &hashtable->list; + } + + list_init(&hashtable->list); + hashtable->size = 0; +} + +void *hashtable_iter(hashtable_t *hashtable) +{ + return hashtable_iter_next(hashtable, &hashtable->list); +} + +void *hashtable_iter_at(hashtable_t *hashtable, const void *key) +{ + pair_t *pair; + unsigned int hash; + bucket_t *bucket; + + hash = hashtable->hash_key(key); + bucket = &hashtable->buckets[hash % num_buckets(hashtable)]; + + pair = hashtable_find_pair(hashtable, bucket, key, hash); + if(!pair) + return NULL; + + return &pair->list; +} + +void *hashtable_iter_next(hashtable_t *hashtable, void *iter) +{ + list_t *list = (list_t *)iter; + if(list->next == &hashtable->list) + return NULL; + return list->next; +} + +void *hashtable_iter_key(void *iter) +{ + pair_t *pair = list_to_pair((list_t *)iter); + return pair->key; +} + +void *hashtable_iter_value(void *iter) +{ + pair_t *pair = list_to_pair((list_t *)iter); + return pair->value; +} + +void hashtable_iter_set(hashtable_t *hashtable, void *iter, void *value) +{ + pair_t *pair = list_to_pair((list_t *)iter); + + if(hashtable->free_value) + hashtable->free_value(pair->value); + + pair->value = value; +} diff --git a/3party_sloynik/jansson/src/hashtable.h b/3party_sloynik/jansson/src/hashtable.h new file mode 100644 index 0000000000..f03a7690b0 --- /dev/null +++ b/3party_sloynik/jansson/src/hashtable.h @@ -0,0 +1,207 @@ +/* + * Copyright (c) 2009, 2010 Petri Lehtinen + * + * This library is free software; you can redistribute it and/or modify + * it under the terms of the MIT license. See LICENSE for details. + */ + +#ifndef HASHTABLE_H +#define HASHTABLE_H + +typedef unsigned int (*key_hash_fn)(const void *key); +typedef int (*key_cmp_fn)(const void *key1, const void *key2); +typedef void (*free_fn)(void *key); + +struct hashtable_list { + struct hashtable_list *prev; + struct hashtable_list *next; +}; + +struct hashtable_pair { + void *key; + void *value; + unsigned int hash; + struct hashtable_list list; +}; + +struct hashtable_bucket { + struct hashtable_list *first; + struct hashtable_list *last; +}; + +typedef struct hashtable { + unsigned int size; + struct hashtable_bucket *buckets; + unsigned int num_buckets; /* index to primes[] */ + struct hashtable_list list; + + key_hash_fn hash_key; + key_cmp_fn cmp_keys; /* returns non-zero for equal keys */ + free_fn free_key; + free_fn free_value; +} hashtable_t; + +/** + * hashtable_create - Create a hashtable object + * + * @hash_key: The key hashing function + * @cmp_keys: The key compare function. Returns non-zero for equal and + * zero for unequal unequal keys + * @free_key: If non-NULL, called for a key that is no longer referenced. + * @free_value: If non-NULL, called for a value that is no longer referenced. + * + * Returns a new hashtable object that should be freed with + * hashtable_destroy when it's no longer used, or NULL on failure (out + * of memory). + */ +hashtable_t *hashtable_create(key_hash_fn hash_key, key_cmp_fn cmp_keys, + free_fn free_key, free_fn free_value); + +/** + * hashtable_destroy - Destroy a hashtable object + * + * @hashtable: The hashtable + * + * Destroys a hashtable created with hashtable_create(). + */ +void hashtable_destroy(hashtable_t *hashtable); + +/** + * hashtable_init - Initialize a hashtable object + * + * @hashtable: The (statically allocated) hashtable object + * @hash_key: The key hashing function + * @cmp_keys: The key compare function. Returns non-zero for equal and + * zero for unequal unequal keys + * @free_key: If non-NULL, called for a key that is no longer referenced. + * @free_value: If non-NULL, called for a value that is no longer referenced. + * + * Initializes a statically allocated hashtable object. The object + * should be cleared with hashtable_close when it's no longer used. + * + * Returns 0 on success, -1 on error (out of memory). + */ +int hashtable_init(hashtable_t *hashtable, + key_hash_fn hash_key, key_cmp_fn cmp_keys, + free_fn free_key, free_fn free_value); + +/** + * hashtable_close - Release all resources used by a hashtable object + * + * @hashtable: The hashtable + * + * Destroys a statically allocated hashtable object. + */ +void hashtable_close(hashtable_t *hashtable); + +/** + * hashtable_set - Add/modify value in hashtable + * + * @hashtable: The hashtable object + * @key: The key + * @value: The value + * + * If a value with the given key already exists, its value is replaced + * with the new value. + * + * Key and value are "stealed" in the sense that hashtable frees them + * automatically when they are no longer used. The freeing is + * accomplished by calling free_key and free_value functions that were + * supplied to hashtable_new. In case one or both of the free + * functions is NULL, the corresponding item is not "stealed". + * + * Returns 0 on success, -1 on failure (out of memory). + */ +int hashtable_set(hashtable_t *hashtable, void *key, void *value); + +/** + * hashtable_get - Get a value associated with a key + * + * @hashtable: The hashtable object + * @key: The key + * + * Returns value if it is found, or NULL otherwise. + */ +void *hashtable_get(hashtable_t *hashtable, const void *key); + +/** + * hashtable_del - Remove a value from the hashtable + * + * @hashtable: The hashtable object + * @key: The key + * + * Returns 0 on success, or -1 if the key was not found. + */ +int hashtable_del(hashtable_t *hashtable, const void *key); + +/** + * hashtable_clear - Clear hashtable + * + * @hashtable: The hashtable object + * + * Removes all items from the hashtable. + */ +void hashtable_clear(hashtable_t *hashtable); + +/** + * hashtable_iter - Iterate over hashtable + * + * @hashtable: The hashtable object + * + * Returns an opaque iterator to the first element in the hashtable. + * The iterator should be passed to hashtable_iter_* functions. + * The hashtable items are not iterated over in any particular order. + * + * There's no need to free the iterator in any way. The iterator is + * valid as long as the item that is referenced by the iterator is not + * deleted. Other values may be added or deleted. In particular, + * hashtable_iter_next() may be called on an iterator, and after that + * the key/value pair pointed by the old iterator may be deleted. + */ +void *hashtable_iter(hashtable_t *hashtable); + +/** + * hashtable_iter_at - Return an iterator at a specific key + * + * @hashtable: The hashtable object + * @key: The key that the iterator should point to + * + * Like hashtable_iter() but returns an iterator pointing to a + * specific key. + */ +void *hashtable_iter_at(hashtable_t *hashtable, const void *key); + +/** + * hashtable_iter_next - Advance an iterator + * + * @hashtable: The hashtable object + * @iter: The iterator + * + * Returns a new iterator pointing to the next element in the + * hashtable or NULL if the whole hastable has been iterated over. + */ +void *hashtable_iter_next(hashtable_t *hashtable, void *iter); + +/** + * hashtable_iter_key - Retrieve the key pointed by an iterator + * + * @iter: The iterator + */ +void *hashtable_iter_key(void *iter); + +/** + * hashtable_iter_value - Retrieve the value pointed by an iterator + * + * @iter: The iterator + */ +void *hashtable_iter_value(void *iter); + +/** + * hashtable_iter_set - Set the value pointed by an iterator + * + * @iter: The iterator + * @value: The value to set + */ +void hashtable_iter_set(hashtable_t *hashtable, void *iter, void *value); + +#endif diff --git a/3party_sloynik/jansson/src/jansson.h b/3party_sloynik/jansson/src/jansson.h new file mode 100644 index 0000000000..4c526fee16 --- /dev/null +++ b/3party_sloynik/jansson/src/jansson.h @@ -0,0 +1,191 @@ +/* + * Copyright (c) 2009, 2010 Petri Lehtinen + * + * Jansson is free software; you can redistribute it and/or modify + * it under the terms of the MIT license. See LICENSE for details. + */ + +#ifndef JANSSON_H +#define JANSSON_H + +#include + +#ifndef __cplusplus +#define JSON_INLINE inline +#else +#define JSON_INLINE inline +extern "C" { +#endif + +/* types */ + +typedef enum { + JSON_OBJECT, + JSON_ARRAY, + JSON_STRING, + JSON_INTEGER, + JSON_REAL, + JSON_TRUE, + JSON_FALSE, + JSON_NULL +} json_type; + +typedef struct { + json_type type; + unsigned long refcount; +} json_t; + +#define json_typeof(json) ((json)->type) +#define json_is_object(json) (json && json_typeof(json) == JSON_OBJECT) +#define json_is_array(json) (json && json_typeof(json) == JSON_ARRAY) +#define json_is_string(json) (json && json_typeof(json) == JSON_STRING) +#define json_is_integer(json) (json && json_typeof(json) == JSON_INTEGER) +#define json_is_real(json) (json && json_typeof(json) == JSON_REAL) +#define json_is_number(json) (json_is_integer(json) || json_is_real(json)) +#define json_is_true(json) (json && json_typeof(json) == JSON_TRUE) +#define json_is_false(json) (json && json_typeof(json) == JSON_FALSE) +#define json_is_boolean(json) (json_is_true(json) || json_is_false(json)) +#define json_is_null(json) (json && json_typeof(json) == JSON_NULL) + +/* construction, destruction, reference counting */ + +json_t *json_object(void); +json_t *json_array(void); +json_t *json_string(const char *value); +json_t *json_string_nocheck(const char *value); +json_t *json_integer(int value); +json_t *json_real(double value); +json_t *json_true(void); +json_t *json_false(void); +json_t *json_null(void); + +static JSON_INLINE +json_t *json_incref(json_t *json) +{ + if(json && json->refcount != (unsigned int)-1) + ++json->refcount; + return json; +} + +/* do not call json_delete directly */ +void json_delete(json_t *json); + +static JSON_INLINE +void json_decref(json_t *json) +{ + if(json && json->refcount != (unsigned int)-1 && --json->refcount == 0) + json_delete(json); +} + + +/* getters, setters, manipulation */ + +unsigned int json_object_size(const json_t *object); +json_t *json_object_get(const json_t *object, const char *key); +int json_object_set_new(json_t *object, const char *key, json_t *value); +int json_object_set_new_nocheck(json_t *object, const char *key, json_t *value); +int json_object_del(json_t *object, const char *key); +int json_object_clear(json_t *object); +int json_object_update(json_t *object, json_t *other); +void *json_object_iter(json_t *object); +void *json_object_iter_at(json_t *object, const char *key); +void *json_object_iter_next(json_t *object, void *iter); +const char *json_object_iter_key(void *iter); +json_t *json_object_iter_value(void *iter); +int json_object_iter_set_new(json_t *object, void *iter, json_t *value); + +static JSON_INLINE +int json_object_set(json_t *object, const char *key, json_t *value) +{ + return json_object_set_new(object, key, json_incref(value)); +} + +static JSON_INLINE +int json_object_set_nocheck(json_t *object, const char *key, json_t *value) +{ + return json_object_set_new_nocheck(object, key, json_incref(value)); +} + +static inline +int json_object_iter_set(json_t *object, void *iter, json_t *value) +{ + return json_object_iter_set_new(object, iter, json_incref(value)); +} + +unsigned int json_array_size(const json_t *array); +json_t *json_array_get(const json_t *array, unsigned int index); +int json_array_set_new(json_t *array, unsigned int index, json_t *value); +int json_array_append_new(json_t *array, json_t *value); +int json_array_insert_new(json_t *array, unsigned int index, json_t *value); +int json_array_remove(json_t *array, unsigned int index); +int json_array_clear(json_t *array); +int json_array_extend(json_t *array, json_t *other); + +static JSON_INLINE +int json_array_set(json_t *array, unsigned int index, json_t *value) +{ + return json_array_set_new(array, index, json_incref(value)); +} + +static JSON_INLINE +int json_array_append(json_t *array, json_t *value) +{ + return json_array_append_new(array, json_incref(value)); +} + +static JSON_INLINE +int json_array_insert(json_t *array, unsigned int index, json_t *value) +{ + return json_array_insert_new(array, index, json_incref(value)); +} + +const char *json_string_value(const json_t *string); +int json_integer_value(const json_t *integer); +double json_real_value(const json_t *real); +double json_number_value(const json_t *json); + +int json_string_set(json_t *string, const char *value); +int json_string_set_nocheck(json_t *string, const char *value); +int json_integer_set(json_t *integer, int value); +int json_real_set(json_t *real, double value); + + +/* equality */ + +int json_equal(json_t *value1, json_t *value2); + + +/* copying */ + +json_t *json_copy(json_t *value); +json_t *json_deep_copy(json_t *value); + + +/* loading, printing */ + +#define JSON_ERROR_TEXT_LENGTH 160 + +typedef struct { + char text[JSON_ERROR_TEXT_LENGTH]; + int line; +} json_error_t; + +json_t *json_loads(const char *input, json_error_t *error); +json_t *json_loadf(FILE *input, json_error_t *error); +json_t *json_load_file(const char *path, json_error_t *error); + +#define JSON_INDENT(n) (n & 0xFF) +#define JSON_COMPACT 0x100 +#define JSON_ENSURE_ASCII 0x200 +#define JSON_SORT_KEYS 0x400 +#define JSON_PRESERVE_ORDER 0x800 + +char *json_dumps(const json_t *json, unsigned long flags); +int json_dumpf(const json_t *json, FILE *output, unsigned long flags); +int json_dump_file(const json_t *json, const char *path, unsigned long flags); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/3party_sloynik/jansson/src/jansson_private.h b/3party_sloynik/jansson/src/jansson_private.h new file mode 100644 index 0000000000..4490702aa8 --- /dev/null +++ b/3party_sloynik/jansson/src/jansson_private.h @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2009, 2010 Petri Lehtinen + * + * Jansson is free software; you can redistribute it and/or modify + * it under the terms of the MIT license. See LICENSE for details. + */ + +#ifndef JANSSON_PRIVATE_H +#define JANSSON_PRIVATE_H + +#include "jansson.h" +#include "hashtable.h" + +#define container_of(ptr_, type_, member_) \ + ((type_ *)((char *)ptr_ - (size_t)&((type_ *)0)->member_)) + +typedef struct { + json_t json; + hashtable_t hashtable; + unsigned long serial; + int visited; +} json_object_t; + +typedef struct { + json_t json; + unsigned int size; + unsigned int entries; + json_t **table; + int visited; +} json_array_t; + +typedef struct { + json_t json; + char *value; +} json_string_t; + +typedef struct { + json_t json; + double value; +} json_real_t; + +typedef struct { + json_t json; + int value; +} json_integer_t; + +#define json_to_object(json_) container_of(json_, json_object_t, json) +#define json_to_array(json_) container_of(json_, json_array_t, json) +#define json_to_string(json_) container_of(json_, json_string_t, json) +#define json_to_real(json_) container_of(json_, json_real_t, json) +#define json_to_integer(json_) container_of(json_, json_integer_t, json) + +typedef struct { + unsigned long serial; + char key[]; +} object_key_t; + +const object_key_t *jsonp_object_iter_fullkey(void *iter); + +#endif diff --git a/3party_sloynik/jansson/src/load.c b/3party_sloynik/jansson/src/load.c new file mode 100644 index 0000000000..7cc00848c1 --- /dev/null +++ b/3party_sloynik/jansson/src/load.c @@ -0,0 +1,879 @@ +/* + * Copyright (c) 2009, 2010 Petri Lehtinen + * + * Jansson is free software; you can redistribute it and/or modify + * it under the terms of the MIT license. See LICENSE for details. + */ + +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include + +#include "jansson.h" +#include "jansson_private.h" +#include "strbuffer.h" +#include "utf.h" + +#define TOKEN_INVALID -1 +#define TOKEN_EOF 0 +#define TOKEN_STRING 256 +#define TOKEN_INTEGER 257 +#define TOKEN_REAL 258 +#define TOKEN_TRUE 259 +#define TOKEN_FALSE 260 +#define TOKEN_NULL 261 + +/* read one byte from stream, return EOF on end of file */ +typedef int (*get_func)(void *data); + +/* return non-zero if end of file has been reached */ +typedef int (*eof_func)(void *data); + +typedef struct { + get_func get; + eof_func eof; + void *data; + int stream_pos; + char buffer[5]; + int buffer_pos; +} stream_t; + + +typedef struct { + stream_t stream; + strbuffer_t saved_text; + int token; + int line, column; + union { + char *string; + int integer; + double real; + } value; +} lex_t; + + +/*** error reporting ***/ + +static void error_init(json_error_t *error) +{ + if(error) + { + error->text[0] = '\0'; + error->line = -1; + } +} + +static void error_set(json_error_t *error, const lex_t *lex, + const char *msg, ...) +{ + va_list ap; + char text[JSON_ERROR_TEXT_LENGTH]; + + if(!error || error->text[0] != '\0') { + /* error already set */ + return; + } + + va_start(ap, msg); + vsnprintf(text, JSON_ERROR_TEXT_LENGTH, msg, ap); + va_end(ap); + + if(lex) + { + const char *saved_text = strbuffer_value(&lex->saved_text); + error->line = lex->line; + if(saved_text && saved_text[0]) + { + if(lex->saved_text.length <= 20) { + snprintf(error->text, JSON_ERROR_TEXT_LENGTH, + "%s near '%s'", text, saved_text); + } + else + snprintf(error->text, JSON_ERROR_TEXT_LENGTH, "%s", text); + } + else + { + snprintf(error->text, JSON_ERROR_TEXT_LENGTH, + "%s near end of file", text); + } + } + else + { + error->line = -1; + snprintf(error->text, JSON_ERROR_TEXT_LENGTH, "%s", text); + } +} + + +/*** lexical analyzer ***/ + +static void +stream_init(stream_t *stream, get_func get, eof_func eof, void *data) +{ + stream->get = get; + stream->eof = eof; + stream->data = data; + stream->stream_pos = 0; + stream->buffer[0] = '\0'; + stream->buffer_pos = 0; +} + +static char stream_get(stream_t *stream, json_error_t *error) +{ + char c; + + if(!stream->buffer[stream->buffer_pos]) + { + stream->buffer[0] = stream->get(stream->data); + stream->buffer_pos = 0; + + c = stream->buffer[0]; + + if((unsigned char)c >= 0x80 && c != (char)EOF) + { + /* multi-byte UTF-8 sequence */ + int i, count; + + count = utf8_check_first(c); + if(!count) + goto out; + + assert(count >= 2); + + for(i = 1; i < count; i++) + stream->buffer[i] = stream->get(stream->data); + + if(!utf8_check_full(stream->buffer, count, NULL)) + goto out; + + stream->stream_pos += count; + stream->buffer[count] = '\0'; + } + else { + stream->buffer[1] = '\0'; + stream->stream_pos++; + } + } + + return stream->buffer[stream->buffer_pos++]; + +out: + error_set(error, NULL, "unable to decode byte 0x%x at position %d", + (unsigned char)c, stream->stream_pos); + + stream->buffer[0] = EOF; + stream->buffer[1] = '\0'; + stream->buffer_pos = 1; + + return EOF; +} + +static void stream_unget(stream_t *stream, char c) +{ + assert(stream->buffer_pos > 0); + stream->buffer_pos--; + assert(stream->buffer[stream->buffer_pos] == c); +} + + +static int lex_get(lex_t *lex, json_error_t *error) +{ + return stream_get(&lex->stream, error); +} + +static int lex_eof(lex_t *lex) +{ + return lex->stream.eof(lex->stream.data); +} + +static void lex_save(lex_t *lex, char c) +{ + strbuffer_append_byte(&lex->saved_text, c); +} + +static int lex_get_save(lex_t *lex, json_error_t *error) +{ + char c = stream_get(&lex->stream, error); + lex_save(lex, c); + return c; +} + +static void lex_unget_unsave(lex_t *lex, char c) +{ + char d; + stream_unget(&lex->stream, c); + d = strbuffer_pop(&lex->saved_text); + assert(c == d); +} + +static void lex_save_cached(lex_t *lex) +{ + while(lex->stream.buffer[lex->stream.buffer_pos] != '\0') + { + lex_save(lex, lex->stream.buffer[lex->stream.buffer_pos]); + lex->stream.buffer_pos++; + } +} + +/* assumes that str points to 'u' plus at least 4 valid hex digits */ +static int32_t decode_unicode_escape(const char *str) +{ + int i; + int32_t value = 0; + + assert(str[0] == 'u'); + + for(i = 1; i <= 4; i++) { + char c = str[i]; + value <<= 4; + if(isdigit(c)) + value += c - '0'; + else if(islower(c)) + value += c - 'a' + 10; + else if(isupper(c)) + value += c - 'A' + 10; + else + assert(0); + } + + return value; +} + +static void lex_scan_string(lex_t *lex, json_error_t *error) +{ + char c; + const char *p; + char *t; + int i; + + lex->value.string = NULL; + lex->token = TOKEN_INVALID; + + c = lex_get_save(lex, error); + + while(c != '"') { + if(c == (char)EOF) { + lex_unget_unsave(lex, c); + if(lex_eof(lex)) + error_set(error, lex, "premature end of input"); + goto out; + } + + else if((unsigned char)c <= 0x1F) { + /* control character */ + lex_unget_unsave(lex, c); + if(c == '\n') + error_set(error, lex, "unexpected newline", c); + else + error_set(error, lex, "control character 0x%x", c); + goto out; + } + + else if(c == '\\') { + c = lex_get_save(lex, error); + if(c == 'u') { + c = lex_get_save(lex, error); + for(i = 0; i < 4; i++) { + if(!isxdigit(c)) { + lex_unget_unsave(lex, c); + error_set(error, lex, "invalid escape"); + goto out; + } + c = lex_get_save(lex, error); + } + } + else if(c == '"' || c == '\\' || c == '/' || c == 'b' || + c == 'f' || c == 'n' || c == 'r' || c == 't') + c = lex_get_save(lex, error); + else { + lex_unget_unsave(lex, c); + error_set(error, lex, "invalid escape"); + goto out; + } + } + else + c = lex_get_save(lex, error); + } + + /* the actual value is at most of the same length as the source + string, because: + - shortcut escapes (e.g. "\t") (length 2) are converted to 1 byte + - a single \uXXXX escape (length 6) is converted to at most 3 bytes + - two \uXXXX escapes (length 12) forming an UTF-16 surrogate pair + are converted to 4 bytes + */ + lex->value.string = malloc(lex->saved_text.length + 1); + if(!lex->value.string) { + /* this is not very nice, since TOKEN_INVALID is returned */ + goto out; + } + + /* the target */ + t = lex->value.string; + + /* + 1 to skip the " */ + p = strbuffer_value(&lex->saved_text) + 1; + + while(*p != '"') { + if(*p == '\\') { + p++; + if(*p == 'u') { + char buffer[4]; + int length; + int32_t value; + + value = decode_unicode_escape(p); + p += 5; + + if(0xD800 <= value && value <= 0xDBFF) { + /* surrogate pair */ + if(*p == '\\' && *(p + 1) == 'u') { + int32_t value2 = decode_unicode_escape(++p); + p += 5; + + if(0xDC00 <= value2 && value2 <= 0xDFFF) { + /* valid second surrogate */ + value = + ((value - 0xD800) << 10) + + (value2 - 0xDC00) + + 0x10000; + } + else { + /* invalid second surrogate */ + error_set(error, lex, + "invalid Unicode '\\u%04X\\u%04X'", + value, value2); + goto out; + } + } + else { + /* no second surrogate */ + error_set(error, lex, "invalid Unicode '\\u%04X'", + value); + goto out; + } + } + else if(0xDC00 <= value && value <= 0xDFFF) { + error_set(error, lex, "invalid Unicode '\\u%04X'", value); + goto out; + } + else if(value == 0) + { + error_set(error, lex, "\\u0000 is not allowed"); + goto out; + } + + if(utf8_encode(value, buffer, &length)) + assert(0); + + memcpy(t, buffer, length); + t += length; + } + else { + switch(*p) { + case '"': case '\\': case '/': + *t = *p; break; + case 'b': *t = '\b'; break; + case 'f': *t = '\f'; break; + case 'n': *t = '\n'; break; + case 'r': *t = '\r'; break; + case 't': *t = '\t'; break; + default: assert(0); + } + t++; + p++; + } + } + else + *(t++) = *(p++); + } + *t = '\0'; + lex->token = TOKEN_STRING; + return; + +out: + free(lex->value.string); +} + +static int lex_scan_number(lex_t *lex, char c, json_error_t *error) +{ + const char *saved_text; + char *end; + double value; + + lex->token = TOKEN_INVALID; + + if(c == '-') + c = lex_get_save(lex, error); + + if(c == '0') { + c = lex_get_save(lex, error); + if(isdigit(c)) { + lex_unget_unsave(lex, c); + goto out; + } + } + else if(isdigit(c)) { + c = lex_get_save(lex, error); + while(isdigit(c)) + c = lex_get_save(lex, error); + } + else { + lex_unget_unsave(lex, c); + goto out; + } + + if(c != '.' && c != 'E' && c != 'e') { + long value; + + lex_unget_unsave(lex, c); + + saved_text = strbuffer_value(&lex->saved_text); + value = strtol(saved_text, &end, 10); + assert(end == saved_text + lex->saved_text.length); + + if((value == LONG_MAX && errno == ERANGE) || value > INT_MAX) { + error_set(error, lex, "too big integer"); + goto out; + } + else if((value == LONG_MIN && errno == ERANGE) || value < INT_MIN) { + error_set(error, lex, "too big negative integer"); + goto out; + } + + lex->token = TOKEN_INTEGER; + lex->value.integer = (int)value; + return 0; + } + + if(c == '.') { + c = lex_get(lex, error); + if(!isdigit(c)) + goto out; + lex_save(lex, c); + + c = lex_get_save(lex, error); + while(isdigit(c)) + c = lex_get_save(lex, error); + } + + if(c == 'E' || c == 'e') { + c = lex_get_save(lex, error); + if(c == '+' || c == '-') + c = lex_get_save(lex, error); + + if(!isdigit(c)) { + lex_unget_unsave(lex, c); + goto out; + } + + c = lex_get_save(lex, error); + while(isdigit(c)) + c = lex_get_save(lex, error); + } + + lex_unget_unsave(lex, c); + + saved_text = strbuffer_value(&lex->saved_text); + value = strtod(saved_text, &end); + assert(end == saved_text + lex->saved_text.length); + + if(errno == ERANGE && value != 0) { + error_set(error, lex, "real number overflow"); + goto out; + } + + lex->token = TOKEN_REAL; + lex->value.real = value; + return 0; + +out: + return -1; +} + +static int lex_scan(lex_t *lex, json_error_t *error) +{ + char c; + + strbuffer_clear(&lex->saved_text); + + if(lex->token == TOKEN_STRING) { + free(lex->value.string); + lex->value.string = NULL; + } + + c = lex_get(lex, error); + while(c == ' ' || c == '\t' || c == '\n' || c == '\r') + { + if(c == '\n') + lex->line++; + + c = lex_get(lex, error); + } + + if(c == (char)EOF) { + if(lex_eof(lex)) + lex->token = TOKEN_EOF; + else + lex->token = TOKEN_INVALID; + goto out; + } + + lex_save(lex, c); + + if(c == '{' || c == '}' || c == '[' || c == ']' || c == ':' || c == ',') + lex->token = c; + + else if(c == '"') + lex_scan_string(lex, error); + + else if(isdigit(c) || c == '-') { + if(lex_scan_number(lex, c, error)) + goto out; + } + + else if(isupper(c) || islower(c)) { + /* eat up the whole identifier for clearer error messages */ + const char *saved_text; + + c = lex_get_save(lex, error); + while(isupper(c) || islower(c)) + c = lex_get_save(lex, error); + lex_unget_unsave(lex, c); + + saved_text = strbuffer_value(&lex->saved_text); + + if(strcmp(saved_text, "true") == 0) + lex->token = TOKEN_TRUE; + else if(strcmp(saved_text, "false") == 0) + lex->token = TOKEN_FALSE; + else if(strcmp(saved_text, "null") == 0) + lex->token = TOKEN_NULL; + else + lex->token = TOKEN_INVALID; + } + + else { + /* save the rest of the input UTF-8 sequence to get an error + message of valid UTF-8 */ + lex_save_cached(lex); + lex->token = TOKEN_INVALID; + } + +out: + return lex->token; +} + +static char *lex_steal_string(lex_t *lex) +{ + char *result = NULL; + if(lex->token == TOKEN_STRING) + { + result = lex->value.string; + lex->value.string = NULL; + } + return result; +} + +static int lex_init(lex_t *lex, get_func get, eof_func eof, void *data) +{ + stream_init(&lex->stream, get, eof, data); + if(strbuffer_init(&lex->saved_text)) + return -1; + + lex->token = TOKEN_INVALID; + lex->line = 1; + + return 0; +} + +static void lex_close(lex_t *lex) +{ + if(lex->token == TOKEN_STRING) + free(lex->value.string); + strbuffer_close(&lex->saved_text); +} + + +/*** parser ***/ + +static json_t *parse_value(lex_t *lex, json_error_t *error); + +static json_t *parse_object(lex_t *lex, json_error_t *error) +{ + json_t *object = json_object(); + if(!object) + return NULL; + + lex_scan(lex, error); + if(lex->token == '}') + return object; + + while(1) { + char *key; + json_t *value; + + if(lex->token != TOKEN_STRING) { + error_set(error, lex, "string or '}' expected"); + goto error; + } + + key = lex_steal_string(lex); + if(!key) + return NULL; + + lex_scan(lex, error); + if(lex->token != ':') { + free(key); + error_set(error, lex, "':' expected"); + goto error; + } + + lex_scan(lex, error); + value = parse_value(lex, error); + if(!value) { + free(key); + goto error; + } + + if(json_object_set_nocheck(object, key, value)) { + free(key); + json_decref(value); + goto error; + } + + json_decref(value); + free(key); + + lex_scan(lex, error); + if(lex->token != ',') + break; + + lex_scan(lex, error); + } + + if(lex->token != '}') { + error_set(error, lex, "'}' expected"); + goto error; + } + + return object; + +error: + json_decref(object); + return NULL; +} + +static json_t *parse_array(lex_t *lex, json_error_t *error) +{ + json_t *array = json_array(); + if(!array) + return NULL; + + lex_scan(lex, error); + if(lex->token == ']') + return array; + + while(lex->token) { + json_t *elem = parse_value(lex, error); + if(!elem) + goto error; + + if(json_array_append(array, elem)) { + json_decref(elem); + goto error; + } + json_decref(elem); + + lex_scan(lex, error); + if(lex->token != ',') + break; + + lex_scan(lex, error); + } + + if(lex->token != ']') { + error_set(error, lex, "']' expected"); + goto error; + } + + return array; + +error: + json_decref(array); + return NULL; +} + +static json_t *parse_value(lex_t *lex, json_error_t *error) +{ + json_t *json; + + switch(lex->token) { + case TOKEN_STRING: { + json = json_string_nocheck(lex->value.string); + break; + } + + case TOKEN_INTEGER: { + json = json_integer(lex->value.integer); + break; + } + + case TOKEN_REAL: { + json = json_real(lex->value.real); + break; + } + + case TOKEN_TRUE: + json = json_true(); + break; + + case TOKEN_FALSE: + json = json_false(); + break; + + case TOKEN_NULL: + json = json_null(); + break; + + case '{': + json = parse_object(lex, error); + break; + + case '[': + json = parse_array(lex, error); + break; + + case TOKEN_INVALID: + error_set(error, lex, "invalid token"); + return NULL; + + default: + error_set(error, lex, "unexpected token"); + return NULL; + } + + if(!json) + return NULL; + + return json; +} + +static json_t *parse_json(lex_t *lex, json_error_t *error) +{ + error_init(error); + + lex_scan(lex, error); + if(lex->token != '[' && lex->token != '{') { + error_set(error, lex, "'[' or '{' expected"); + return NULL; + } + + return parse_value(lex, error); +} + +typedef struct +{ + const char *data; + int pos; +} string_data_t; + +static int string_get(void *data) +{ + char c; + string_data_t *stream = (string_data_t *)data; + c = stream->data[stream->pos]; + if(c == '\0') + return EOF; + else + { + stream->pos++; + return c; + } +} + +static int string_eof(void *data) +{ + string_data_t *stream = (string_data_t *)data; + return (stream->data[stream->pos] == '\0'); +} + +json_t *json_loads(const char *string, json_error_t *error) +{ + lex_t lex; + json_t *result; + + string_data_t stream_data = { + .data = string, + .pos = 0 + }; + + if(lex_init(&lex, string_get, string_eof, (void *)&stream_data)) + return NULL; + + result = parse_json(&lex, error); + if(!result) + goto out; + + lex_scan(&lex, error); + if(lex.token != TOKEN_EOF) { + error_set(error, &lex, "end of file expected"); + json_decref(result); + result = NULL; + } + +out: + lex_close(&lex); + return result; +} + +json_t *json_loadf(FILE *input, json_error_t *error) +{ + lex_t lex; + json_t *result; + + if(lex_init(&lex, (get_func)fgetc, (eof_func)feof, input)) + return NULL; + + result = parse_json(&lex, error); + if(!result) + goto out; + + lex_scan(&lex, error); + if(lex.token != TOKEN_EOF) { + error_set(error, &lex, "end of file expected"); + json_decref(result); + result = NULL; + } + +out: + lex_close(&lex); + return result; +} + +json_t *json_load_file(const char *path, json_error_t *error) +{ + json_t *result; + FILE *fp; + + error_init(error); + + fp = fopen(path, "r"); + if(!fp) + { + error_set(error, NULL, "unable to open %s: %s", + path, strerror(errno)); + return NULL; + } + + result = json_loadf(fp, error); + + fclose(fp); + return result; +} diff --git a/3party_sloynik/jansson/src/strbuffer.c b/3party_sloynik/jansson/src/strbuffer.c new file mode 100644 index 0000000000..3496024770 --- /dev/null +++ b/3party_sloynik/jansson/src/strbuffer.c @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2009, 2010 Petri Lehtinen + * + * Jansson is free software; you can redistribute it and/or modify + * it under the terms of the MIT license. See LICENSE for details. + */ + +#define _GNU_SOURCE +#include +#include +#include "strbuffer.h" +#include "util.h" + +#define STRBUFFER_MIN_SIZE 16 +#define STRBUFFER_FACTOR 2 + +int strbuffer_init(strbuffer_t *strbuff) +{ + strbuff->size = STRBUFFER_MIN_SIZE; + strbuff->length = 0; + + strbuff->value = malloc(strbuff->size); + if(!strbuff->value) + return -1; + + /* initialize to empty */ + strbuff->value[0] = '\0'; + return 0; +} + +void strbuffer_close(strbuffer_t *strbuff) +{ + free(strbuff->value); + strbuff->size = 0; + strbuff->length = 0; + strbuff->value = NULL; +} + +void strbuffer_clear(strbuffer_t *strbuff) +{ + strbuff->length = 0; + strbuff->value[0] = '\0'; +} + +const char *strbuffer_value(const strbuffer_t *strbuff) +{ + return strbuff->value; +} + +char *strbuffer_steal_value(strbuffer_t *strbuff) +{ + char *result = strbuff->value; + strbuffer_init(strbuff); + return result; +} + +int strbuffer_append(strbuffer_t *strbuff, const char *string) +{ + return strbuffer_append_bytes(strbuff, string, strlen(string)); +} + +int strbuffer_append_byte(strbuffer_t *strbuff, char byte) +{ + return strbuffer_append_bytes(strbuff, &byte, 1); +} + +int strbuffer_append_bytes(strbuffer_t *strbuff, const char *data, int size) +{ + if(strbuff->length + size >= strbuff->size) + { + strbuff->size = max(strbuff->size * STRBUFFER_FACTOR, + strbuff->length + size + 1); + + strbuff->value = realloc(strbuff->value, strbuff->size); + if(!strbuff->value) + return -1; + } + + memcpy(strbuff->value + strbuff->length, data, size); + strbuff->length += size; + strbuff->value[strbuff->length] = '\0'; + + return 0; +} + +char strbuffer_pop(strbuffer_t *strbuff) +{ + if(strbuff->length > 0) { + char c = strbuff->value[--strbuff->length]; + strbuff->value[strbuff->length] = '\0'; + return c; + } + else + return '\0'; +} diff --git a/3party_sloynik/jansson/src/strbuffer.h b/3party_sloynik/jansson/src/strbuffer.h new file mode 100644 index 0000000000..f4c5f77183 --- /dev/null +++ b/3party_sloynik/jansson/src/strbuffer.h @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2009, 2010 Petri Lehtinen + * + * Jansson is free software; you can redistribute it and/or modify + * it under the terms of the MIT license. See LICENSE for details. + */ + +#ifndef STRBUFFER_H +#define STRBUFFER_H + +typedef struct { + char *value; + int length; /* bytes used */ + int size; /* bytes allocated */ +} strbuffer_t; + +int strbuffer_init(strbuffer_t *strbuff); +void strbuffer_close(strbuffer_t *strbuff); + +void strbuffer_clear(strbuffer_t *strbuff); + +const char *strbuffer_value(const strbuffer_t *strbuff); +char *strbuffer_steal_value(strbuffer_t *strbuff); + +int strbuffer_append(strbuffer_t *strbuff, const char *string); +int strbuffer_append_byte(strbuffer_t *strbuff, char byte); +int strbuffer_append_bytes(strbuffer_t *strbuff, const char *data, int size); + +char strbuffer_pop(strbuffer_t *strbuff); + +#endif diff --git a/3party_sloynik/jansson/src/utf.c b/3party_sloynik/jansson/src/utf.c new file mode 100644 index 0000000000..92484d025d --- /dev/null +++ b/3party_sloynik/jansson/src/utf.c @@ -0,0 +1,190 @@ +/* + * Copyright (c) 2009, 2010 Petri Lehtinen + * + * Jansson is free software; you can redistribute it and/or modify + * it under the terms of the MIT license. See LICENSE for details. + */ + +#include +#include "utf.h" + +int utf8_encode(int32_t codepoint, char *buffer, int *size) +{ + if(codepoint < 0) + return -1; + else if(codepoint < 0x80) + { + buffer[0] = (char)codepoint; + *size = 1; + } + else if(codepoint < 0x800) + { + buffer[0] = 0xC0 + ((codepoint & 0x7C0) >> 6); + buffer[1] = 0x80 + ((codepoint & 0x03F)); + *size = 2; + } + else if(codepoint < 0x10000) + { + buffer[0] = 0xE0 + ((codepoint & 0xF000) >> 12); + buffer[1] = 0x80 + ((codepoint & 0x0FC0) >> 6); + buffer[2] = 0x80 + ((codepoint & 0x003F)); + *size = 3; + } + else if(codepoint <= 0x10FFFF) + { + buffer[0] = 0xF0 + ((codepoint & 0x1C0000) >> 18); + buffer[1] = 0x80 + ((codepoint & 0x03F000) >> 12); + buffer[2] = 0x80 + ((codepoint & 0x000FC0) >> 6); + buffer[3] = 0x80 + ((codepoint & 0x00003F)); + *size = 4; + } + else + return -1; + + return 0; +} + +int utf8_check_first(char byte) +{ + unsigned char u = (unsigned char)byte; + + if(u < 0x80) + return 1; + + if(0x80 <= u && u <= 0xBF) { + /* second, third or fourth byte of a multi-byte + sequence, i.e. a "continuation byte" */ + return 0; + } + else if(u == 0xC0 || u == 0xC1) { + /* overlong encoding of an ASCII byte */ + return 0; + } + else if(0xC2 <= u && u <= 0xDF) { + /* 2-byte sequence */ + return 2; + } + + else if(0xE0 <= u && u <= 0xEF) { + /* 3-byte sequence */ + return 3; + } + else if(0xF0 <= u && u <= 0xF4) { + /* 4-byte sequence */ + return 4; + } + else { /* u >= 0xF5 */ + /* Restricted (start of 4-, 5- or 6-byte sequence) or invalid + UTF-8 */ + return 0; + } +} + +int utf8_check_full(const char *buffer, int size, int32_t *codepoint) +{ + int i; + int32_t value = 0; + unsigned char u = (unsigned char)buffer[0]; + + if(size == 2) + { + value = u & 0x1F; + } + else if(size == 3) + { + value = u & 0xF; + } + else if(size == 4) + { + value = u & 0x7; + } + else + return 0; + + for(i = 1; i < size; i++) + { + u = (unsigned char)buffer[i]; + + if(u < 0x80 || u > 0xBF) { + /* not a continuation byte */ + return 0; + } + + value = (value << 6) + (u & 0x3F); + } + + if(value > 0x10FFFF) { + /* not in Unicode range */ + return 0; + } + + else if(0xD800 <= value && value <= 0xDFFF) { + /* invalid code point (UTF-16 surrogate halves) */ + return 0; + } + + else if((size == 2 && value < 0x80) || + (size == 3 && value < 0x800) || + (size == 4 && value < 0x10000)) { + /* overlong encoding */ + return 0; + } + + if(codepoint) + *codepoint = value; + + return 1; +} + +const char *utf8_iterate(const char *buffer, int32_t *codepoint) +{ + int count; + int32_t value; + + if(!*buffer) + return buffer; + + count = utf8_check_first(buffer[0]); + if(count <= 0) + return NULL; + + if(count == 1) + value = (unsigned char)buffer[0]; + else + { + if(!utf8_check_full(buffer, count, &value)) + return NULL; + } + + if(codepoint) + *codepoint = value; + + return buffer + count; +} + +int utf8_check_string(const char *string, int length) +{ + int i; + + if(length == -1) + length = strlen(string); + + for(i = 0; i < length; i++) + { + int count = utf8_check_first(string[i]); + if(count == 0) + return 0; + else if(count > 1) + { + if(i + count > length) + return 0; + + if(!utf8_check_full(&string[i], count, NULL)) + return 0; + + i += count - 1; + } + } + + return 1; +} diff --git a/3party_sloynik/jansson/src/utf.h b/3party_sloynik/jansson/src/utf.h new file mode 100644 index 0000000000..61491ae544 --- /dev/null +++ b/3party_sloynik/jansson/src/utf.h @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2009, 2010 Petri Lehtinen + * + * Jansson is free software; you can redistribute it and/or modify + * it under the terms of the MIT license. See LICENSE for details. + */ + +#ifndef UTF_H +#define UTF_H + +#include "config.h" + +#ifdef HAVE_INTTYPES_H +/* inttypes.h includes stdint.h in a standard environment, so there's +no need to include stdint.h separately. If inttypes.h doesn't define +int32_t, it's defined in config.h. */ +#include +#endif + +int utf8_encode(int codepoint, char *buffer, int *size); + +int utf8_check_first(char byte); +int utf8_check_full(const char *buffer, int size, int32_t *codepoint); +const char *utf8_iterate(const char *buffer, int32_t *codepoint); + +int utf8_check_string(const char *string, int length); + +#endif diff --git a/3party_sloynik/jansson/src/util.h b/3party_sloynik/jansson/src/util.h new file mode 100644 index 0000000000..06a547b8aa --- /dev/null +++ b/3party_sloynik/jansson/src/util.h @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2009, 2010 Petri Lehtinen + * + * Jansson is free software; you can redistribute it and/or modify + * it under the terms of the MIT license. See LICENSE for details. + */ + +#ifndef UTIL_H +#define UTIL_H + +#define max(a, b) ((a) > (b) ? (a) : (b)) + +#endif diff --git a/3party_sloynik/jansson/src/value.c b/3party_sloynik/jansson/src/value.c new file mode 100644 index 0000000000..a9ef8a50fc --- /dev/null +++ b/3party_sloynik/jansson/src/value.c @@ -0,0 +1,976 @@ +/* + * Copyright (c) 2009, 2010 Petri Lehtinen + * + * Jansson is free software; you can redistribute it and/or modify + * it under the terms of the MIT license. See LICENSE for details. + */ + +#define _GNU_SOURCE + +#include "config.h" + +#include +#include + +#include "jansson.h" +#include "hashtable.h" +#include "jansson_private.h" +#include "utf.h" +#include "util.h" + + +static inline void json_init(json_t *json, json_type type) +{ + json->type = type; + json->refcount = 1; +} + + +/*** object ***/ + +/* This macro just returns a pointer that's a few bytes backwards from + string. This makes it possible to pass a pointer to object_key_t + when only the string inside it is used, without actually creating + an object_key_t instance. */ +#define string_to_key(string) container_of(string, object_key_t, key) + +static unsigned int hash_key(const void *ptr) +{ + const char *str = ((const object_key_t *)ptr)->key; + + unsigned int hash = 5381; + unsigned int c; + + while((c = (unsigned int)*str)) + { + hash = ((hash << 5) + hash) + c; + str++; + } + + return hash; +} + +static int key_equal(const void *ptr1, const void *ptr2) +{ + return strcmp(((const object_key_t *)ptr1)->key, + ((const object_key_t *)ptr2)->key) == 0; +} + +static void value_decref(void *value) +{ + json_decref((json_t *)value); +} + +json_t *json_object(void) +{ + json_object_t *object = malloc(sizeof(json_object_t)); + if(!object) + return NULL; + json_init(&object->json, JSON_OBJECT); + + if(hashtable_init(&object->hashtable, hash_key, key_equal, + free, value_decref)) + { + free(object); + return NULL; + } + + object->serial = 0; + object->visited = 0; + + return &object->json; +} + +static void json_delete_object(json_object_t *object) +{ + hashtable_close(&object->hashtable); + free(object); +} + +unsigned int json_object_size(const json_t *json) +{ + json_object_t *object; + + if(!json_is_object(json)) + return -1; + + object = json_to_object(json); + return object->hashtable.size; +} + +json_t *json_object_get(const json_t *json, const char *key) +{ + json_object_t *object; + + if(!json_is_object(json)) + return NULL; + + object = json_to_object(json); + return hashtable_get(&object->hashtable, string_to_key(key)); +} + +int json_object_set_new_nocheck(json_t *json, const char *key, json_t *value) +{ + json_object_t *object; + object_key_t *k; + + if(!key || !value) + return -1; + + if(!json_is_object(json) || json == value) + { + json_decref(value); + return -1; + } + object = json_to_object(json); + + k = malloc(sizeof(object_key_t) + strlen(key) + 1); + if(!k) + return -1; + + k->serial = object->serial++; + strcpy(k->key, key); + + if(hashtable_set(&object->hashtable, k, value)) + { + json_decref(value); + return -1; + } + + return 0; +} + +int json_object_set_new(json_t *json, const char *key, json_t *value) +{ + if(!key || !utf8_check_string(key, -1)) + { + json_decref(value); + return -1; + } + + return json_object_set_new_nocheck(json, key, value); +} + +int json_object_del(json_t *json, const char *key) +{ + json_object_t *object; + + if(!json_is_object(json)) + return -1; + + object = json_to_object(json); + return hashtable_del(&object->hashtable, string_to_key(key)); +} + +int json_object_clear(json_t *json) +{ + json_object_t *object; + + if(!json_is_object(json)) + return -1; + + object = json_to_object(json); + hashtable_clear(&object->hashtable); + + return 0; +} + +int json_object_update(json_t *object, json_t *other) +{ + void *iter; + + if(!json_is_object(object) || !json_is_object(other)) + return -1; + + iter = json_object_iter(other); + while(iter) { + const char *key; + json_t *value; + + key = json_object_iter_key(iter); + value = json_object_iter_value(iter); + + if(json_object_set_nocheck(object, key, value)) + return -1; + + iter = json_object_iter_next(other, iter); + } + + return 0; +} + +void *json_object_iter(json_t *json) +{ + json_object_t *object; + + if(!json_is_object(json)) + return NULL; + + object = json_to_object(json); + return hashtable_iter(&object->hashtable); +} + +void *json_object_iter_at(json_t *json, const char *key) +{ + json_object_t *object; + + if(!key || !json_is_object(json)) + return NULL; + + object = json_to_object(json); + return hashtable_iter_at(&object->hashtable, string_to_key(key)); +} + +void *json_object_iter_next(json_t *json, void *iter) +{ + json_object_t *object; + + if(!json_is_object(json) || iter == NULL) + return NULL; + + object = json_to_object(json); + return hashtable_iter_next(&object->hashtable, iter); +} + +const object_key_t *jsonp_object_iter_fullkey(void *iter) +{ + if(!iter) + return NULL; + + return hashtable_iter_key(iter); +} + +const char *json_object_iter_key(void *iter) +{ + if(!iter) + return NULL; + + return jsonp_object_iter_fullkey(iter)->key; +} + +json_t *json_object_iter_value(void *iter) +{ + if(!iter) + return NULL; + + return (json_t *)hashtable_iter_value(iter); +} + +int json_object_iter_set_new(json_t *json, void *iter, json_t *value) +{ + json_object_t *object; + + if(!json_is_object(json) || !iter || !value) + return -1; + + object = json_to_object(json); + hashtable_iter_set(&object->hashtable, iter, value); + + return 0; +} + +static int json_object_equal(json_t *object1, json_t *object2) +{ + void *iter; + + if(json_object_size(object1) != json_object_size(object2)) + return 0; + + iter = json_object_iter(object1); + while(iter) + { + const char *key; + json_t *value1, *value2; + + key = json_object_iter_key(iter); + value1 = json_object_iter_value(iter); + value2 = json_object_get(object2, key); + + if(!json_equal(value1, value2)) + return 0; + + iter = json_object_iter_next(object1, iter); + } + + return 1; +} + +static json_t *json_object_copy(json_t *object) +{ + json_t *result; + void *iter; + + result = json_object(); + if(!result) + return NULL; + + iter = json_object_iter(object); + while(iter) + { + const char *key; + json_t *value; + + key = json_object_iter_key(iter); + value = json_object_iter_value(iter); + json_object_set_nocheck(result, key, value); + + iter = json_object_iter_next(object, iter); + } + + return result; +} + +static json_t *json_object_deep_copy(json_t *object) +{ + json_t *result; + void *iter; + + result = json_object(); + if(!result) + return NULL; + + iter = json_object_iter(object); + while(iter) + { + const char *key; + json_t *value; + + key = json_object_iter_key(iter); + value = json_object_iter_value(iter); + json_object_set_new_nocheck(result, key, json_deep_copy(value)); + + iter = json_object_iter_next(object, iter); + } + + return result; +} + + +/*** array ***/ + +json_t *json_array(void) +{ + json_array_t *array = malloc(sizeof(json_array_t)); + if(!array) + return NULL; + json_init(&array->json, JSON_ARRAY); + + array->entries = 0; + array->size = 8; + + array->table = malloc(array->size * sizeof(json_t *)); + if(!array->table) { + free(array); + return NULL; + } + + array->visited = 0; + + return &array->json; +} + +static void json_delete_array(json_array_t *array) +{ + unsigned int i; + + for(i = 0; i < array->entries; i++) + json_decref(array->table[i]); + + free(array->table); + free(array); +} + +unsigned int json_array_size(const json_t *json) +{ + if(!json_is_array(json)) + return 0; + + return json_to_array(json)->entries; +} + +json_t *json_array_get(const json_t *json, unsigned int index) +{ + json_array_t *array; + if(!json_is_array(json)) + return NULL; + array = json_to_array(json); + + if(index >= array->entries) + return NULL; + + return array->table[index]; +} + +int json_array_set_new(json_t *json, unsigned int index, json_t *value) +{ + json_array_t *array; + + if(!value) + return -1; + + if(!json_is_array(json) || json == value) + { + json_decref(value); + return -1; + } + array = json_to_array(json); + + if(index >= array->entries) + { + json_decref(value); + return -1; + } + + json_decref(array->table[index]); + array->table[index] = value; + + return 0; +} + +static void array_move(json_array_t *array, unsigned int dest, + unsigned int src, unsigned int count) +{ + memmove(&array->table[dest], &array->table[src], count * sizeof(json_t *)); +} + +static void array_copy(json_t **dest, unsigned int dpos, + json_t **src, unsigned int spos, + unsigned int count) +{ + memcpy(&dest[dpos], &src[spos], count * sizeof(json_t *)); +} + +static json_t **json_array_grow(json_array_t *array, + unsigned int amount, + int copy) +{ + unsigned int new_size; + json_t **old_table, **new_table; + + if(array->entries + amount <= array->size) + return array->table; + + old_table = array->table; + + new_size = max(array->size + amount, array->size * 2); + new_table = malloc(new_size * sizeof(json_t *)); + if(!new_table) + return NULL; + + array->size = new_size; + array->table = new_table; + + if(copy) { + array_copy(array->table, 0, old_table, 0, array->entries); + free(old_table); + return array->table; + } + + return old_table; +} + +int json_array_append_new(json_t *json, json_t *value) +{ + json_array_t *array; + + if(!value) + return -1; + + if(!json_is_array(json) || json == value) + { + json_decref(value); + return -1; + } + array = json_to_array(json); + + if(!json_array_grow(array, 1, 1)) { + json_decref(value); + return -1; + } + + array->table[array->entries] = value; + array->entries++; + + return 0; +} + +int json_array_insert_new(json_t *json, unsigned int index, json_t *value) +{ + json_array_t *array; + json_t **old_table; + + if(!value) + return -1; + + if(!json_is_array(json) || json == value) { + json_decref(value); + return -1; + } + array = json_to_array(json); + + if(index > array->entries) { + json_decref(value); + return -1; + } + + old_table = json_array_grow(array, 1, 0); + if(!old_table) { + json_decref(value); + return -1; + } + + if(old_table != array->table) { + array_copy(array->table, 0, old_table, 0, index); + array_copy(array->table, index + 1, old_table, index, + array->entries - index); + free(old_table); + } + else + array_move(array, index + 1, index, array->entries - index); + + array->table[index] = value; + array->entries++; + + return 0; +} + +int json_array_remove(json_t *json, unsigned int index) +{ + json_array_t *array; + + if(!json_is_array(json)) + return -1; + array = json_to_array(json); + + if(index >= array->entries) + return -1; + + json_decref(array->table[index]); + + array_move(array, index, index + 1, array->entries - index); + array->entries--; + + return 0; +} + +int json_array_clear(json_t *json) +{ + json_array_t *array; + unsigned int i; + + if(!json_is_array(json)) + return -1; + array = json_to_array(json); + + for(i = 0; i < array->entries; i++) + json_decref(array->table[i]); + + array->entries = 0; + return 0; +} + +int json_array_extend(json_t *json, json_t *other_json) +{ + json_array_t *array, *other; + unsigned int i; + + if(!json_is_array(json) || !json_is_array(other_json)) + return -1; + array = json_to_array(json); + other = json_to_array(other_json); + + if(!json_array_grow(array, other->entries, 1)) + return -1; + + for(i = 0; i < other->entries; i++) + json_incref(other->table[i]); + + array_copy(array->table, array->entries, other->table, 0, other->entries); + + array->entries += other->entries; + return 0; +} + +static int json_array_equal(json_t *array1, json_t *array2) +{ + unsigned int i, size; + + size = json_array_size(array1); + if(size != json_array_size(array2)) + return 0; + + for(i = 0; i < size; i++) + { + json_t *value1, *value2; + + value1 = json_array_get(array1, i); + value2 = json_array_get(array2, i); + + if(!json_equal(value1, value2)) + return 0; + } + + return 1; +} + +static json_t *json_array_copy(json_t *array) +{ + json_t *result; + unsigned int i; + + result = json_array(); + if(!result) + return NULL; + + for(i = 0; i < json_array_size(array); i++) + json_array_append(result, json_array_get(array, i)); + + return result; +} + +static json_t *json_array_deep_copy(json_t *array) +{ + json_t *result; + unsigned int i; + + result = json_array(); + if(!result) + return NULL; + + for(i = 0; i < json_array_size(array); i++) + json_array_append_new(result, json_deep_copy(json_array_get(array, i))); + + return result; +} + +/*** string ***/ + +json_t *json_string_nocheck(const char *value) +{ + json_string_t *string; + + if(!value) + return NULL; + + string = malloc(sizeof(json_string_t)); + if(!string) + return NULL; + json_init(&string->json, JSON_STRING); + + string->value = strdup(value); + if(!string->value) { + free(string); + return NULL; + } + + return &string->json; +} + +json_t *json_string(const char *value) +{ + if(!value || !utf8_check_string(value, -1)) + return NULL; + + return json_string_nocheck(value); +} + +const char *json_string_value(const json_t *json) +{ + if(!json_is_string(json)) + return NULL; + + return json_to_string(json)->value; +} + +int json_string_set_nocheck(json_t *json, const char *value) +{ + char *dup; + json_string_t *string; + + dup = strdup(value); + if(!dup) + return -1; + + string = json_to_string(json); + free(string->value); + string->value = dup; + + return 0; +} + +int json_string_set(json_t *json, const char *value) +{ + if(!value || !utf8_check_string(value, -1)) + return -1; + + return json_string_set_nocheck(json, value); +} + +static void json_delete_string(json_string_t *string) +{ + free(string->value); + free(string); +} + +static int json_string_equal(json_t *string1, json_t *string2) +{ + return strcmp(json_string_value(string1), json_string_value(string2)) == 0; +} + +static json_t *json_string_copy(json_t *string) +{ + return json_string_nocheck(json_string_value(string)); +} + + +/*** integer ***/ + +json_t *json_integer(int value) +{ + json_integer_t *integer = malloc(sizeof(json_integer_t)); + if(!integer) + return NULL; + json_init(&integer->json, JSON_INTEGER); + + integer->value = value; + return &integer->json; +} + +int json_integer_value(const json_t *json) +{ + if(!json_is_integer(json)) + return 0; + + return json_to_integer(json)->value; +} + +int json_integer_set(json_t *json, int value) +{ + if(!json_is_integer(json)) + return -1; + + json_to_integer(json)->value = value; + + return 0; +} + +static void json_delete_integer(json_integer_t *integer) +{ + free(integer); +} + +static int json_integer_equal(json_t *integer1, json_t *integer2) +{ + return json_integer_value(integer1) == json_integer_value(integer2); +} + +static json_t *json_integer_copy(json_t *integer) +{ + return json_integer(json_integer_value(integer)); +} + + +/*** real ***/ + +json_t *json_real(double value) +{ + json_real_t *real = malloc(sizeof(json_real_t)); + if(!real) + return NULL; + json_init(&real->json, JSON_REAL); + + real->value = value; + return &real->json; +} + +double json_real_value(const json_t *json) +{ + if(!json_is_real(json)) + return 0; + + return json_to_real(json)->value; +} + +int json_real_set(json_t *json, double value) +{ + if(!json_is_real(json)) + return 0; + + json_to_real(json)->value = value; + + return 0; +} + +static void json_delete_real(json_real_t *real) +{ + free(real); +} + +static int json_real_equal(json_t *real1, json_t *real2) +{ + return json_real_value(real1) == json_real_value(real2); +} + +static json_t *json_real_copy(json_t *real) +{ + return json_real(json_real_value(real)); +} + + +/*** number ***/ + +double json_number_value(const json_t *json) +{ + if(json_is_integer(json)) + return json_integer_value(json); + else if(json_is_real(json)) + return json_real_value(json); + else + return 0.0; +} + + +/*** simple values ***/ + +json_t *json_true(void) +{ + static json_t the_true = { + .type = JSON_TRUE, + .refcount = (unsigned int)-1 + }; + return &the_true; +} + + +json_t *json_false(void) +{ + static json_t the_false = { + .type = JSON_FALSE, + .refcount = (unsigned int)-1 + }; + return &the_false; +} + + +json_t *json_null(void) +{ + static json_t the_null = { + .type = JSON_NULL, + .refcount = (unsigned int)-1 + }; + return &the_null; +} + + +/*** deletion ***/ + +void json_delete(json_t *json) +{ + if(json_is_object(json)) + json_delete_object(json_to_object(json)); + + else if(json_is_array(json)) + json_delete_array(json_to_array(json)); + + else if(json_is_string(json)) + json_delete_string(json_to_string(json)); + + else if(json_is_integer(json)) + json_delete_integer(json_to_integer(json)); + + else if(json_is_real(json)) + json_delete_real(json_to_real(json)); + + /* json_delete is not called for true, false or null */ +} + + +/*** equality ***/ + +int json_equal(json_t *json1, json_t *json2) +{ + if(!json1 || !json2) + return 0; + + if(json_typeof(json1) != json_typeof(json2)) + return 0; + + /* this covers true, false and null as they are singletons */ + if(json1 == json2) + return 1; + + if(json_is_object(json1)) + return json_object_equal(json1, json2); + + if(json_is_array(json1)) + return json_array_equal(json1, json2); + + if(json_is_string(json1)) + return json_string_equal(json1, json2); + + if(json_is_integer(json1)) + return json_integer_equal(json1, json2); + + if(json_is_real(json1)) + return json_real_equal(json1, json2); + + return 0; +} + + +/*** copying ***/ + +json_t *json_copy(json_t *json) +{ + if(!json) + return NULL; + + if(json_is_object(json)) + return json_object_copy(json); + + if(json_is_array(json)) + return json_array_copy(json); + + if(json_is_string(json)) + return json_string_copy(json); + + if(json_is_integer(json)) + return json_integer_copy(json); + + if(json_is_real(json)) + return json_real_copy(json); + + if(json_is_true(json) || json_is_false(json) || json_is_null(json)) + return json; + + return NULL; +} + +json_t *json_deep_copy(json_t *json) +{ + if(!json) + return NULL; + + if(json_is_object(json)) + return json_object_deep_copy(json); + + if(json_is_array(json)) + return json_array_deep_copy(json); + + /* for the rest of the types, deep copying doesn't differ from + shallow copying */ + + if(json_is_string(json)) + return json_string_copy(json); + + if(json_is_integer(json)) + return json_integer_copy(json); + + if(json_is_real(json)) + return json_real_copy(json); + + if(json_is_true(json) || json_is_false(json) || json_is_null(json)) + return json; + + return NULL; +} diff --git a/3party_sloynik/protobuf/CHANGES.txt b/3party_sloynik/protobuf/CHANGES.txt new file mode 100644 index 0000000000..eebd57d321 --- /dev/null +++ b/3party_sloynik/protobuf/CHANGES.txt @@ -0,0 +1,388 @@ +2009-01-08 version 2.3.0: + + General + * Parsers for repeated numeric fields now always accept both packed and + unpacked input. The [packed=true] option only affects serializers. + Therefore, it is possible to switch a field to packed format without + breaking backwards-compatibility -- as long as all parties are using + protobuf 2.3.0 or above, at least. + * The generic RPC service code generated by the C++, Java, and Python + generators can be disabled via file options: + option cc_generic_services = false; + option java_generic_services = false; + option py_generic_services = false; + This allows plugins to generate alternative code, possibly specific to some + particular RPC implementation. + + protoc + * Now supports a plugin system for code generators. Plugins can generate + code for new languages or inject additional code into the output of other + code generators. Plugins are just binaries which accept a protocol buffer + on stdin and write a protocol buffer to stdout, so they may be written in + any language. See src/google/protobuf/compiler/plugin.proto. + **WARNING**: Plugins are experimental. The interface may change in a + future version. + * If the output location ends in .zip or .jar, protoc will write its output + to a zip/jar archive instead of a directory. For example: + protoc --java_out=myproto_srcs.jar --python_out=myproto.zip myproto.proto + Currently the archive contents are not compressed, though this could change + in the future. + * inf, -inf, and nan can now be used as default values for float and double + fields. + + C++ + * Various speed and code size optimizations. + * DynamicMessageFactory is now fully thread-safe. + * Message::Utf8DebugString() method is like DebugString() but avoids escaping + UTF-8 bytes. + * Compiled-in message types can now contain dynamic extensions, through use + of CodedInputStream::SetExtensionRegistry(). + * Now compiles shared libraries (DLLs) by default on Cygwin and MinGW, to + match other platforms. Use --disable-shared to avoid this. + + Java + * parseDelimitedFrom() and mergeDelimitedFrom() now detect EOF and return + false/null instead of throwing an exception. + * Fixed some initialization ordering bugs. + * Fixes for OpenJDK 7. + + Python + * 10-25 times faster than 2.2.0, still pure-Python. + * Calling a mutating method on a sub-message always instantiates the message + in its parent even if the mutating method doesn't actually mutate anything + (e.g. parsing from an empty string). + * Expanded descriptors a bit. + +2009-08-11 version 2.2.0: + + C++ + * Lite mode: The "optimize_for = LITE_RUNTIME" option causes the compiler + to generate code which only depends libprotobuf-lite, which is much smaller + than libprotobuf but lacks descriptors, reflection, and some other features. + * Fixed bug where Message.Swap(Message) was only implemented for + optimize_for_speed. Swap now properly implemented in both modes + (Issue 91). + * Added RemoveLast and SwapElements(index1, index2) to Reflection + interface for repeated elements. + * Added Swap(Message) to Reflection interface. + * Floating-point literals in generated code that are intended to be + single-precision now explicitly have 'f' suffix to avoid pedantic warnings + produced by some compilers. + * The [deprecated=true] option now causes the C++ code generator to generate + a GCC-style deprecation annotation (no-op on other compilers). + * google::protobuf::GetEnumDescriptor() returns the + EnumDescriptor for that type -- useful for templates which cannot call + SomeGeneratedEnumType_descriptor(). + * Various optimizations and obscure bug fixes. + + Java + * Lite mode: The "optimize_for = LITE_RUNTIME" option causes the compiler + to generate code which only depends libprotobuf-lite, which is much smaller + than libprotobuf but lacks descriptors, reflection, and some other features. + * Lots of style cleanups. + + Python + * Fixed endianness bug with floats and doubles. + * Text format parsing support. + * Fix bug with parsing packed repeated fields in embedded messages. + * Ability to initialize fields by passing keyword args to constructor. + * Support iterators in extend and __setslice__ for containers. + +2009-05-13 version 2.1.0: + + General + * Repeated fields of primitive types (types other that string, group, and + nested messages) may now use the option [packed = true] to get a more + efficient encoding. In the new encoding, the entire list is written + as a single byte blob using the "length-delimited" wire type. Within + this blob, the individual values are encoded the same way they would + be normally except without a tag before each value (thus, they are + tightly "packed"). + * For each field, the generated code contains an integer constant assigned + to the field number. For example, the .proto file: + message Foo { optional int bar_baz = 123; } + would generate the following constants, all with the integer value 123: + C++: Foo::kBarBazFieldNumber + Java: Foo.BAR_BAZ_FIELD_NUMBER + Python: Foo.BAR_BAZ_FIELD_NUMBER + Constants are also generated for extensions, with the same naming scheme. + These constants may be used as switch cases. + * Updated bundled Google Test to version 1.3.0. Google Test is now bundled + in its verbatim form as a nested autoconf package, so you can drop in any + other version of Google Test if needed. + * optimize_for = SPEED is now the default, by popular demand. Use + optimize_for = CODE_SIZE if code size is more important in your app. + * It is now an error to define a default value for a repeated field. + Previously, this was silently ignored (it had no effect on the generated + code). + * Fields can now be marked deprecated like: + optional int32 foo = 1 [deprecated = true]; + Currently this does not have any actual effect, but in the future the code + generators may generate deprecation annotations in each language. + * Cross-compiling should now be possible using the --with-protoc option to + configure. See README.txt for more info. + + protoc + * --error_format=msvs option causes errors to be printed in Visual Studio + format, which should allow them to be clicked on in the build log to go + directly to the error location. + * The type name resolver will no longer resolve type names to fields. For + example, this now works: + message Foo {} + message Bar { + optional int32 Foo = 1; + optional Foo baz = 2; + } + Previously, the type of "baz" would resolve to "Bar.Foo", and you'd get + an error because Bar.Foo is a field, not a type. Now the type of "baz" + resolves to the message type Foo. This change is unlikely to make a + difference to anyone who follows the Protocol Buffers style guide. + + C++ + * Several optimizations, including but not limited to: + - Serialization, especially to flat arrays, is 10%-50% faster, possibly + more for small objects. + - Several descriptor operations which previously required locking no longer + do. + - Descriptors are now constructed lazily on first use, rather than at + process startup time. This should save memory in programs which do not + use descriptors or reflection. + - UnknownFieldSet completely redesigned to be more efficient (especially in + terms of memory usage). + - Various optimizations to reduce code size (though the serialization speed + optimizations increased code size). + * Message interface has method ParseFromBoundedZeroCopyStream() which parses + a limited number of bytes from an input stream rather than parsing until + EOF. + * GzipInputStream and GzipOutputStream support reading/writing gzip- or + zlib-compressed streams if zlib is available. + (google/protobuf/io/gzip_stream.h) + * DescriptorPool::FindAllExtensions() and corresponding + DescriptorDatabase::FindAllExtensions() can be used to enumerate all + extensions of a given type. + * For each enum type Foo, protoc will generate functions: + const string& Foo_Name(Foo value); + bool Foo_Parse(const string& name, Foo* result); + The former returns the name of the enum constant corresponding to the given + value while the latter finds the value corresponding to a name. + * RepeatedField and RepeatedPtrField now have back-insertion iterators. + * String fields now have setters that take a char* and a size, in addition + to the existing ones that took char* or const string&. + * DescriptorPool::AllowUnknownDependencies() may be used to tell + DescriptorPool to create placeholder descriptors for unknown entities + referenced in a FileDescriptorProto. This can allow you to parse a .proto + file without having access to other .proto files that it imports, for + example. + * Updated gtest to latest version. The gtest package is now included as a + nested autoconf package, so it should be able to drop new versions into the + "gtest" subdirectory without modification. + + Java + * Fixed bug where Message.mergeFrom(Message) failed to merge extensions. + * Message interface has new method toBuilder() which is equivalent to + newBuilderForType().mergeFrom(this). + * All enums now implement the ProtocolMessageEnum interface. + * Setting a field to null now throws NullPointerException. + * Fixed tendency for TextFormat's parsing to overflow the stack when + parsing large string values. The underlying problem is with Java's + regex implementation (which unfortunately uses recursive backtracking + rather than building an NFA). Worked around by making use of possesive + quantifiers. + * Generated service classes now also generate pure interfaces. For a service + Foo, Foo.Interface is a pure interface containing all of the service's + defined methods. Foo.newReflectiveService() can be called to wrap an + instance of this interface in a class that implements the generic + RpcService interface, which provides reflection support that is usually + needed by RPC server implementations. + * RPC interfaces now support blocking operation in addition to non-blocking. + The protocol compiler generates separate blocking and non-blocking stubs + which operate against separate blocking and non-blocking RPC interfaces. + RPC implementations will have to implement the new interfaces in order to + support blocking mode. + * New I/O methods parseDelimitedFrom(), mergeDelimitedFrom(), and + writeDelimitedTo() read and write "delemited" messages from/to a stream, + meaning that the message size precedes the data. This way, you can write + multiple messages to a stream without having to worry about delimiting + them yourself. + * Throw a more descriptive exception when build() is double-called. + * Add a method to query whether CodedInputStream is at the end of the input + stream. + * Add a method to reset a CodedInputStream's size counter; useful when + reading many messages with the same stream. + * equals() and hashCode() now account for unknown fields. + + Python + * Added slicing support for repeated scalar fields. Added slice retrieval and + removal of repeated composite fields. + * Updated RPC interfaces to allow for blocking operation. A client may + now pass None for a callback when making an RPC, in which case the + call will block until the response is received, and the response + object will be returned directly to the caller. This interface change + cannot be used in practice until RPC implementations are updated to + implement it. + * Changes to input_stream.py should make protobuf compatible with appengine. + +2008-11-25 version 2.0.3: + + protoc + * Enum values may now have custom options, using syntax similar to field + options. + * Fixed bug where .proto files which use custom options but don't actually + define them (i.e. they import another .proto file defining the options) + had to explicitly import descriptor.proto. + * Adjacent string literals in .proto files will now be concatenated, like in + C. + * If an input file is a Windows absolute path (e.g. "C:\foo\bar.proto") and + the import path only contains "." (or contains "." but does not contain + the file), protoc incorrectly thought that the file was under ".", because + it thought that the path was relative (since it didn't start with a slash). + This has been fixed. + + C++ + * Generated message classes now have a Swap() method which efficiently swaps + the contents of two objects. + * All message classes now have a SpaceUsed() method which returns an estimate + of the number of bytes of allocated memory currently owned by the object. + This is particularly useful when you are reusing a single message object + to improve performance but want to make sure it doesn't bloat up too large. + * New method Message::SerializeAsString() returns a string containing the + serialized data. May be more convenient than calling + SerializeToString(string*). + * In debug mode, log error messages when string-type fields are found to + contain bytes that are not valid UTF-8. + * Fixed bug where a message with multiple extension ranges couldn't parse + extensions. + * Fixed bug where MergeFrom(const Message&) didn't do anything if invoked on + a message that contained no fields (but possibly contained extensions). + * Fixed ShortDebugString() to not be O(n^2). Durr. + * Fixed crash in TextFormat parsing if the first token in the input caused a + tokenization error. + * Fixed obscure bugs in zero_copy_stream_impl.cc. + * Added support for HP C++ on Tru64. + * Only build tests on "make check", not "make". + * Fixed alignment issue that caused crashes when using DynamicMessage on + 64-bit Sparc machines. + * Simplify template usage to work with MSVC 2003. + * Work around GCC 4.3.x x86_64 compiler bug that caused crashes on startup. + (This affected Fedora 9 in particular.) + * Now works on "Solaris 10 using recent Sun Studio". + + Java + * New overload of mergeFrom() which parses a slice of a byte array instead + of the whole thing. + * New method ByteString.asReadOnlyByteBuffer() does what it sounds like. + * Improved performance of isInitialized() when optimizing for code size. + + Python + * Corrected ListFields() signature in Message base class to match what + subclasses actually implement. + * Some minor refactoring. + * Don't pass self as first argument to superclass constructor (no longer + allowed in Python 2.6). + +2008-09-29 version 2.0.2: + + General + * License changed from Apache 2.0 to New BSD. + * It is now possible to define custom "options", which are basically + annotations which may be placed on definitions in a .proto file. + For example, you might define a field option called "foo" like so: + import "google/protobuf/descriptor.proto" + extend google.protobuf.FieldOptions { + optional string foo = 12345; + } + Then you annotate a field using the "foo" option: + message MyMessage { + optional int32 some_field = 1 [(foo) = "bar"] + } + The value of this option is then visible via the message's + Descriptor: + const FieldDescriptor* field = + MyMessage::descriptor()->FindFieldByName("some_field"); + assert(field->options().GetExtension(foo) == "bar"); + This feature has been implemented and tested in C++ and Java. + Other languages may or may not need to do extra work to support + custom options, depending on how they construct descriptors. + + C++ + * Fixed some GCC warnings that only occur when using -pedantic. + * Improved static initialization code, making ordering more + predictable among other things. + * TextFormat will no longer accept messages which contain multiple + instances of a singular field. Previously, the latter instance + would overwrite the former. + * Now works on systems that don't have hash_map. + + Java + * Print @Override annotation in generated code where appropriate. + + Python + * Strings now use the "unicode" type rather than the "str" type. + String fields may still be assigned ASCII "str" values; they will + automatically be converted. + * Adding a property to an object representing a repeated field now + raises an exception. For example: + # No longer works (and never should have). + message.some_repeated_field.foo = 1 + + Windows + * We now build static libraries rather than DLLs by default on MSVC. + See vsprojects/readme.txt for more information. + +2008-08-15 version 2.0.1: + + protoc + * New flags --encode and --decode can be used to convert between protobuf text + format and binary format from the command-line. + * New flag --descriptor_set_out can be used to write FileDescriptorProtos for + all parsed files directly into a single output file. This is particularly + useful if you wish to parse .proto files from programs written in languages + other than C++: just run protoc as a background process and have it output + a FileDescriptorList, then parse that natively. + * Improved error message when an enum value's name conflicts with another + symbol defined in the enum type's scope, e.g. if two enum types declared + in the same scope have values with the same name. This is disallowed for + compatibility with C++, but this wasn't clear from the error. + * Fixed absolute output paths on Windows. + * Allow trailing slashes in --proto_path mappings. + + C++ + * Reflection objects are now per-class rather than per-instance. To make this + possible, the Reflection interface had to be changed such that all methods + take the Message instance as a parameter. This change improves performance + significantly in memory-bandwidth-limited use cases, since it makes the + message objects smaller. Note that source-incompatible interface changes + like this will not be made again after the library leaves beta. + * Heuristically detect sub-messages when printing unknown fields. + * Fix static initialization ordering bug that caused crashes at startup when + compiling on Mac with static linking. + * Fixed TokenizerTest when compiling with -DNDEBUG on Linux. + * Fixed incorrect definition of kint32min. + * Fix bytes type setter to work with byte sequences with embedded NULLs. + * Other irrelevant tweaks. + + Java + * Fixed UnknownFieldSet's parsing of varints larger than 32 bits. + * Fixed TextFormat's parsing of "inf" and "nan". + * Fixed TextFormat's parsing of comments. + * Added info to Java POM that will be required when we upload the + package to a Maven repo. + + Python + * MergeFrom(message) and CopyFrom(message) are now implemented. + * SerializeToString() raises an exception if the message is missing required + fields. + * Code organization improvements. + * Fixed doc comments for RpcController and RpcChannel, which had somehow been + swapped. + * Fixed text_format_test on Windows where floating-point exponents sometimes + contain extra zeros. + * Fix Python service CallMethod() implementation. + + Other + * Improved readmes. + * VIM syntax highlighting improvements. + +2008-07-07 version 2.0.0: + + * First public release. diff --git a/3party_sloynik/protobuf/CONTRIBUTORS.txt b/3party_sloynik/protobuf/CONTRIBUTORS.txt new file mode 100644 index 0000000000..a20efc4bed --- /dev/null +++ b/3party_sloynik/protobuf/CONTRIBUTORS.txt @@ -0,0 +1,84 @@ +This file contains a list of people who have made large contributions +to the public version of Protocol Buffers. + +Original Protocol Buffers design and implementation: + Sanjay Ghemawat + Jeff Dean + Daniel Dulitz + Craig Silverstein + Paul Haahr + Corey Anderson + (and many others) + +Proto2 C++ and Java primary author: + Kenton Varda + +Proto2 Python primary authors: + Will Robinson + Petar Petrov + +Large code contributions: + Jason Hsueh + Joseph Schorr + Wenbo Zhu + +Large quantity of code reviews: + Scott Bruce + Frank Yellin + Neal Norwitz + Jeffrey Yasskin + Ambrose Feinstein + +Documentation: + Lisa Carey + +Maven packaging: + Gregory Kick + +Patch contributors: + Kevin Ko + * Small patch to handle trailing slashes in --proto_path flag. + Johan Euphrosine + * Small patch to fix Python CallMethod(). + Ulrich Kunitz + * Small optimizations to Python serialization. + Leandro Lucarella + * VI syntax highlighting tweaks. + * Fix compiler to not make output executable. + Dilip Joseph + * Heuristic detection of sub-messages when printing unknown fields in + text format. + Brian Atkinson + * Added @Override annotation to generated Java code where appropriate. + Vincent Choinière + * Tru64 support. + Monty Taylor + * Solaris 10 + Sun Studio fixes. + Alek Storm + * Slicing support for repeated scalar fields for the Python API. + Oleg Smolsky + * MS Visual Studio error format option. + * Detect unordered_map in stl_hash.m4. + Brian Olson + * gzip/zlib I/O support. + Michael Poole + * Fixed warnings about generated constructors not explicitly initializing + all fields (only present with certain compiler settings). + * Added generation of field number constants. + Wink Saville + * Fixed initialization ordering problem in logging code. + Will Pierce + * Small patch improving performance of in Python serialization. + Alexandre Vassalotti + * Emacs mode for Protocol Buffers (editors/protobuf-mode.el). + Scott Stafford + * Added Swap(), SwapElements(), and RemoveLast() to Reflection interface. + Alexander Melnikov + * HPUX support. + Oliver Jowett + * Detect whether zlib is new enough in configure script. + * Fixes for Solaris 10 32/64-bit confusion. + Evan Jones + * Optimize Java serialization code when writing a small message to a stream. + Michael Kucharski + * Added CodedInputStream.getTotalBytesRead(). diff --git a/3party_sloynik/protobuf/COPYING.txt b/3party_sloynik/protobuf/COPYING.txt new file mode 100644 index 0000000000..705db579c9 --- /dev/null +++ b/3party_sloynik/protobuf/COPYING.txt @@ -0,0 +1,33 @@ +Copyright 2008, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Code generated by the Protocol Buffer compiler is owned by the owner +of the input file used when generating it. This code is not +standalone and requires a support library to be linked with it. This +support library is itself covered by the above license. diff --git a/3party_sloynik/protobuf/INSTALL.txt b/3party_sloynik/protobuf/INSTALL.txt new file mode 100644 index 0000000000..ce3b094905 --- /dev/null +++ b/3party_sloynik/protobuf/INSTALL.txt @@ -0,0 +1,237 @@ +This file contains detailed but generic information on building and +installing the C++ part of this project. For shorter instructions, +as well as instructions for compiling and installing the Java or +Python parts, see README. + +====================================================================== + +Copyright 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software +Foundation, Inc. + + This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + + +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. (Caching is +disabled by default to prevent problems with accidental use of stale +cache files.) + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You only need +`configure.ac' if you want to change it or regenerate `configure' using +a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not support the `VPATH' +variable, you have to compile the package for one architecture at a +time in the source code directory. After you have installed the +package for one architecture, use `make distclean' before reconfiguring +for another architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the `--target=TYPE' option to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +will cause the specified gcc to be used as the C compiler (unless it is +overridden in the site shell script). + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/3party_sloynik/protobuf/README.txt b/3party_sloynik/protobuf/README.txt new file mode 100644 index 0000000000..a8f6604482 --- /dev/null +++ b/3party_sloynik/protobuf/README.txt @@ -0,0 +1,152 @@ +Protocol Buffers - Google's data interchange format +Copyright 2008 Google Inc. +http://code.google.com/apis/protocolbuffers/ + +C++ Installation - Unix +======================= + +To build and install the C++ Protocol Buffer runtime and the Protocol +Buffer compiler (protoc) execute the following: + + $ ./configure + $ make + $ make check + $ make install + +If "make check" fails, you can still install, but it is likely that +some features of this library will not work correctly on your system. +Proceed at your own risk. + +"make install" may require superuser privileges. + +For advanced usage information on configure and make, see INSTALL.txt. + +** Hint on install location ** + + By default, the package will be installed to /usr/local. However, + on many platforms, /usr/local/lib is not part of LD_LIBRARY_PATH. + You can add it, but it may be easier to just install to /usr + instead. To do this, invoke configure as follows: + + ./configure --prefix=/usr + + If you already built the package with a different prefix, make sure + to run "make clean" before building again. + +** Compiling dependent packages ** + + To compile a package that uses Protocol Buffers, you need to pass + various flags to your compiler and linker. As of version 2.2.0, + Protocol Buffers integrates with pkg-config to manage this. If you + have pkg-config installed, then you can invoke it to get a list of + flags like so: + + pkg-config --cflags protobuf # print compiler flags + pkg-config --libs protobuf # print linker flags + pkg-config --cflags --libs protobuf # print both + + For example: + + c++ my_program.cc my_proto.pb.cc `pkg-config --cflags --libs protobuf` + + Note that packages written prior to the 2.2.0 release of Protocol + Buffers may not yet integrate with pkg-config to get flags, and may + not pass the correct set of flags to correctly link against + libprotobuf. If the package in question uses autoconf, you can + often fix the problem by invoking its configure script like: + + configure CXXFLAGS="$(pkg-config --cflags protobuf)" \ + LIBS="$(pkg-config --libs protobuf)" + + This will force it to use the correct flags. + + If you are writing an autoconf-based package that uses Protocol + Buffers, you should probably use the PKG_CHECK_MODULES macro in your + configure script like: + + PKG_CHECK_MODULES([protobuf], [protobuf]) + + See the pkg-config man page for more info. + + If you only want protobuf-lite, substitute "protobuf-lite" in place + of "protobuf" in these examples. + +** Note for cross-compiling ** + + The makefiles normally invoke the protoc executable that they just + built in order to build tests. When cross-compiling, the protoc + executable may not be executable on the host machine. In this case, + you must build a copy of protoc for the host machine first, then use + the --with-protoc option to tell configure to use it instead. For + example: + + ./configure --with-protoc=protoc + + This will use the installed protoc (found in your $PATH) instead of + trying to execute the one built during the build process. You can + also use an executable that hasn't been installed. For example, if + you built the protobuf package for your host machine in ../host, + you might do: + + ./configure --with-protoc=../host/src/protoc + + Either way, you must make sure that the protoc executable you use + has the same version as the protobuf source code you are trying to + use it with. + +** Note for Solaris users ** + + Solaris 10 x86 has a bug that will make linking fail, complaining + about libstdc++.la being invalid. We have included a work-around + in this package. To use the work-around, run configure as follows: + + ./configure LDFLAGS=-L$PWD/src/solaris + + See src/solaris/libstdc++.la for more info on this bug. + +** Note for HP C++ Tru64 users ** + + To compile invoke configure as follows: + + ./configure CXXFLAGS="-O -std ansi -ieee -D__USE_STD_IOSTREAM" + + Also, you will need to use gmake instead of make. + +C++ Installation - Windows +========================== + +If you are using Micosoft Visual C++, see vsprojects/readme.txt. + +If you are using Cygwin or MinGW, follow the Unix installation +instructions, above. + +Binary Compatibility Warning +============================ + +Due to the nature of C++, it is unlikely that any two versions of the +Protocol Buffers C++ runtime libraries will have compatible ABIs. +That is, if you linked an executable against an older version of +libprotobuf, it is unlikely to work with a newer version without +re-compiling. This problem, when it occurs, will normally be detected +immediately on startup of your app. Still, you may want to consider +using static linkage. You can configure this package to install +static libraries only using: + + ./configure --disable-shared + +Java and Python Installation +============================ + +The Java and Python runtime libraries for Protocol Buffers are located +in the java and python directories. See the README file in each +directory for more information on how to compile and install them. +Note that both of them require you to first install the Protocol +Buffer compiler (protoc), which is part of the C++ package. + +Usage +===== + +The complete documentation for Protocol Buffers is available via the +web at: + + http://code.google.com/apis/protocolbuffers/ diff --git a/3party_sloynik/protobuf/config.h b/3party_sloynik/protobuf/config.h new file mode 100644 index 0000000000..64dda2550b --- /dev/null +++ b/3party_sloynik/protobuf/config.h @@ -0,0 +1,148 @@ +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* the name of */ +#define HASH_MAP_CLASS unordered_map + +/* the location of */ +#define HASH_MAP_H + +/* the namespace of hash_map/hash_set */ +#define HASH_NAMESPACE std::tr1 + +/* the name of */ +#define HASH_SET_CLASS unordered_set + +/* the location of */ +#define HASH_SET_H + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the `ftruncate' function. */ +#define HAVE_FTRUNCATE 1 + +/* define if the compiler has hash_map */ +#define HAVE_HASH_MAP 1 + +/* define if the compiler has hash_set */ +#define HAVE_HASH_SET 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `memset' function. */ +#define HAVE_MEMSET 1 + +/* Define to 1 if you have the `mkdir' function. */ +#define HAVE_MKDIR 1 + +/* Define if you have POSIX threads libraries and header files. */ +#define HAVE_PTHREAD 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `strchr' function. */ +#define HAVE_STRCHR 1 + +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strtol' function. */ +#define HAVE_STRTOL 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Enable classes using zlib compression. */ +#define HAVE_ZLIB 1 + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +#define PACKAGE "protobuf" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "protobuf@googlegroups.com" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "Protocol Buffers" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "Protocol Buffers 2.3.0" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "protobuf" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "2.3.0" + +/* Define to necessary symbol if this constant uses a non-standard name on + your system. */ +/* #undef PTHREAD_CREATE_JOINABLE */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +#define VERSION "2.3.0" + +/* Define to 1 if on AIX 3. + System headers sometimes define this. + We just want to avoid a redefinition error message. */ +#ifndef _ALL_SOURCE +/* # undef _ALL_SOURCE */ +#endif + +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +/* Define to 1 if on MINIX. */ +/* #undef _MINIX */ + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +/* #undef _POSIX_1_SOURCE */ + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +/* #undef _POSIX_SOURCE */ + +/* Enable extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# define __EXTENSIONS__ 1 +#endif +#ifndef _POSIX_PTHREAD_SEMANTICS +# define _POSIX_PTHREAD_SEMANTICS 1 +#endif +#ifndef _TANDEM_SOURCE +# define _TANDEM_SOURCE 1 +#endif diff --git a/3party_sloynik/protobuf/protobuf.pro b/3party_sloynik/protobuf/protobuf.pro new file mode 100644 index 0000000000..149fe41878 --- /dev/null +++ b/3party_sloynik/protobuf/protobuf.pro @@ -0,0 +1,49 @@ +TARGET = protobuf +SLOYNIK_DIR = ../.. +include($$SLOYNIK_DIR/sloynik_common.pri) + +TEMPLATE = lib +CONFIG += staticlib + +!win32:DEFINES += HAVE_PTHREAD + +win32-msvc2008 { + # Signed/unsigned comparison warning. Conversion from double to float. + QMAKE_CXXFLAGS *= -wd4018 -wd4244 -wd4355 +} + +unix|win32-g++ { + QMAKE_CXXFLAGS_WARN_ON += -Wno-unused -Wno-extra +} + +SOURCES += \ + src/google/protobuf/io/coded_stream.cc \ + src/google/protobuf/stubs/common.cc \ + src/google/protobuf/extension_set.cc \ + src/google/protobuf/generated_message_util.cc \ + src/google/protobuf/stubs/hash.cc \ + src/google/protobuf/message_lite.cc \ + src/google/protobuf/stubs/once.cc \ + src/google/protobuf/repeated_field.cc \ + src/google/protobuf/wire_format_lite.cc \ + src/google/protobuf/io/zero_copy_stream.cc \ + src/google/protobuf/io/zero_copy_stream_impl_lite.cc \ + +HEADERS += \ + config.h \ + src/google/protobuf/io/coded_stream.h \ + src/google/protobuf/io/coded_stream_inl.h \ + src/google/protobuf/stubs/common.h \ + src/google/protobuf/extension_set.h \ + src/google/protobuf/generated_message_util.h \ + src/google/protobuf/stubs/hash.h \ + src/google/protobuf/stubs/map-util.h \ + src/google/protobuf/message_lite.h \ + src/google/protobuf/stubs/once.h \ + src/google/protobuf/repeated_field.h \ + src/google/protobuf/stubs/stl_util-inl.h \ + src/google/protobuf/wire_format_lite.h \ + src/google/protobuf/wire_format_lite_inl.h \ + src/google/protobuf/io/zero_copy_stream.h \ + src/google/protobuf/io/zero_copy_stream_impl_lite.h \ + diff --git a/3party_sloynik/protobuf/src/google/protobuf/extension_set.cc b/3party_sloynik/protobuf/src/google/protobuf/extension_set.cc new file mode 100644 index 0000000000..729410ef9a --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/extension_set.cc @@ -0,0 +1,1452 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace google { +namespace protobuf { +namespace internal { + +namespace { + +inline WireFormatLite::FieldType real_type(FieldType type) { + GOOGLE_DCHECK(type > 0 && type <= WireFormatLite::MAX_FIELD_TYPE); + return static_cast(type); +} + +inline WireFormatLite::CppType cpp_type(FieldType type) { + return WireFormatLite::FieldTypeToCppType(real_type(type)); +} + +// Registry stuff. +typedef hash_map, + ExtensionInfo> ExtensionRegistry; +ExtensionRegistry* registry_ = NULL; +GOOGLE_PROTOBUF_DECLARE_ONCE(registry_init_); + +void DeleteRegistry() { + delete registry_; + registry_ = NULL; +} + +void InitRegistry() { + registry_ = new ExtensionRegistry; + internal::OnShutdown(&DeleteRegistry); +} + +// This function is only called at startup, so there is no need for thread- +// safety. +void Register(const MessageLite* containing_type, + int number, ExtensionInfo info) { + ::google::protobuf::GoogleOnceInit(®istry_init_, &InitRegistry); + + if (!InsertIfNotPresent(registry_, make_pair(containing_type, number), + info)) { + GOOGLE_LOG(FATAL) << "Multiple extension registrations for type \"" + << containing_type->GetTypeName() + << "\", field number " << number << "."; + } +} + +const ExtensionInfo* FindRegisteredExtension( + const MessageLite* containing_type, int number) { + return (registry_ == NULL) ? NULL : + FindOrNull(*registry_, make_pair(containing_type, number)); +} + +} // namespace + +ExtensionFinder::~ExtensionFinder() {} + +bool GeneratedExtensionFinder::Find(int number, ExtensionInfo* output) { + const ExtensionInfo* extension = + FindRegisteredExtension(containing_type_, number); + if (extension == NULL) { + return false; + } else { + *output = *extension; + return true; + } +} + +void ExtensionSet::RegisterExtension(const MessageLite* containing_type, + int number, FieldType type, + bool is_repeated, bool is_packed) { + GOOGLE_CHECK_NE(type, WireFormatLite::TYPE_ENUM); + GOOGLE_CHECK_NE(type, WireFormatLite::TYPE_MESSAGE); + GOOGLE_CHECK_NE(type, WireFormatLite::TYPE_GROUP); + ExtensionInfo info(type, is_repeated, is_packed); + Register(containing_type, number, info); +} + +static bool CallNoArgValidityFunc(const void* arg, int number) { + // Note: Must use C-style cast here rather than reinterpret_cast because + // the C++ standard at one point did not allow casts between function and + // data pointers and some compilers enforce this for C++-style casts. No + // compiler enforces it for C-style casts since lots of C-style code has + // relied on these kinds of casts for a long time, despite being + // technically undefined. See: + // http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#195 + // Also note: Some compilers do not allow function pointers to be "const". + // Which makes sense, I suppose, because it's meaningless. + return ((EnumValidityFunc*)arg)(number); +} + +void ExtensionSet::RegisterEnumExtension(const MessageLite* containing_type, + int number, FieldType type, + bool is_repeated, bool is_packed, + EnumValidityFunc* is_valid) { + GOOGLE_CHECK_EQ(type, WireFormatLite::TYPE_ENUM); + ExtensionInfo info(type, is_repeated, is_packed); + info.enum_validity_check.func = CallNoArgValidityFunc; + // See comment in CallNoArgValidityFunc() about why we use a c-style cast. + info.enum_validity_check.arg = (void*)is_valid; + Register(containing_type, number, info); +} + +void ExtensionSet::RegisterMessageExtension(const MessageLite* containing_type, + int number, FieldType type, + bool is_repeated, bool is_packed, + const MessageLite* prototype) { + GOOGLE_CHECK(type == WireFormatLite::TYPE_MESSAGE || + type == WireFormatLite::TYPE_GROUP); + ExtensionInfo info(type, is_repeated, is_packed); + info.message_prototype = prototype; + Register(containing_type, number, info); +} + + +// =================================================================== +// Constructors and basic methods. + +ExtensionSet::ExtensionSet() {} + +ExtensionSet::~ExtensionSet() { + for (map::iterator iter = extensions_.begin(); + iter != extensions_.end(); ++iter) { + iter->second.Free(); + } +} + +// Defined in extension_set_heavy.cc. +// void ExtensionSet::AppendToList(const Descriptor* containing_type, +// const DescriptorPool* pool, +// vector* output) const + +bool ExtensionSet::Has(int number) const { + map::const_iterator iter = extensions_.find(number); + if (iter == extensions_.end()) return false; + GOOGLE_DCHECK(!iter->second.is_repeated); + return !iter->second.is_cleared; +} + +int ExtensionSet::ExtensionSize(int number) const { + map::const_iterator iter = extensions_.find(number); + if (iter == extensions_.end()) return false; + return iter->second.GetSize(); +} + +void ExtensionSet::ClearExtension(int number) { + map::iterator iter = extensions_.find(number); + if (iter == extensions_.end()) return; + iter->second.Clear(); +} + +// =================================================================== +// Field accessors + +namespace { + +enum Cardinality { + REPEATED, + OPTIONAL +}; + +} // namespace + +#define GOOGLE_DCHECK_TYPE(EXTENSION, LABEL, CPPTYPE) \ + GOOGLE_DCHECK_EQ((EXTENSION).is_repeated ? REPEATED : OPTIONAL, LABEL); \ + GOOGLE_DCHECK_EQ(cpp_type((EXTENSION).type), WireFormatLite::CPPTYPE_##CPPTYPE) + +// ------------------------------------------------------------------- +// Primitives + +#define PRIMITIVE_ACCESSORS(UPPERCASE, LOWERCASE, CAMELCASE) \ + \ +LOWERCASE ExtensionSet::Get##CAMELCASE(int number, \ + LOWERCASE default_value) const { \ + map::const_iterator iter = extensions_.find(number); \ + if (iter == extensions_.end() || iter->second.is_cleared) { \ + return default_value; \ + } else { \ + GOOGLE_DCHECK_TYPE(iter->second, OPTIONAL, UPPERCASE); \ + return iter->second.LOWERCASE##_value; \ + } \ +} \ + \ +void ExtensionSet::Set##CAMELCASE(int number, FieldType type, \ + LOWERCASE value, \ + const FieldDescriptor* descriptor) { \ + Extension* extension; \ + if (MaybeNewExtension(number, descriptor, &extension)) { \ + extension->type = type; \ + GOOGLE_DCHECK_EQ(cpp_type(extension->type), WireFormatLite::CPPTYPE_##UPPERCASE); \ + extension->is_repeated = false; \ + } else { \ + GOOGLE_DCHECK_TYPE(*extension, OPTIONAL, UPPERCASE); \ + } \ + extension->is_cleared = false; \ + extension->LOWERCASE##_value = value; \ +} \ + \ +LOWERCASE ExtensionSet::GetRepeated##CAMELCASE(int number, int index) const { \ + map::const_iterator iter = extensions_.find(number); \ + GOOGLE_CHECK(iter != extensions_.end()) << "Index out-of-bounds (field is empty)."; \ + GOOGLE_DCHECK_TYPE(iter->second, REPEATED, UPPERCASE); \ + return iter->second.repeated_##LOWERCASE##_value->Get(index); \ +} \ + \ +void ExtensionSet::SetRepeated##CAMELCASE( \ + int number, int index, LOWERCASE value) { \ + map::iterator iter = extensions_.find(number); \ + GOOGLE_CHECK(iter != extensions_.end()) << "Index out-of-bounds (field is empty)."; \ + GOOGLE_DCHECK_TYPE(iter->second, REPEATED, UPPERCASE); \ + iter->second.repeated_##LOWERCASE##_value->Set(index, value); \ +} \ + \ +void ExtensionSet::Add##CAMELCASE(int number, FieldType type, \ + bool packed, LOWERCASE value, \ + const FieldDescriptor* descriptor) { \ + Extension* extension; \ + if (MaybeNewExtension(number, descriptor, &extension)) { \ + extension->type = type; \ + GOOGLE_DCHECK_EQ(cpp_type(extension->type), WireFormatLite::CPPTYPE_##UPPERCASE); \ + extension->is_repeated = true; \ + extension->is_packed = packed; \ + extension->repeated_##LOWERCASE##_value = new RepeatedField(); \ + } else { \ + GOOGLE_DCHECK_TYPE(*extension, REPEATED, UPPERCASE); \ + GOOGLE_DCHECK_EQ(extension->is_packed, packed); \ + } \ + extension->repeated_##LOWERCASE##_value->Add(value); \ +} + +PRIMITIVE_ACCESSORS( INT32, int32, Int32) +PRIMITIVE_ACCESSORS( INT64, int64, Int64) +PRIMITIVE_ACCESSORS(UINT32, uint32, UInt32) +PRIMITIVE_ACCESSORS(UINT64, uint64, UInt64) +PRIMITIVE_ACCESSORS( FLOAT, float, Float) +PRIMITIVE_ACCESSORS(DOUBLE, double, Double) +PRIMITIVE_ACCESSORS( BOOL, bool, Bool) + +#undef PRIMITIVE_ACCESSORS + +// ------------------------------------------------------------------- +// Enums + +int ExtensionSet::GetEnum(int number, int default_value) const { + map::const_iterator iter = extensions_.find(number); + if (iter == extensions_.end() || iter->second.is_cleared) { + // Not present. Return the default value. + return default_value; + } else { + GOOGLE_DCHECK_TYPE(iter->second, OPTIONAL, ENUM); + return iter->second.enum_value; + } +} + +void ExtensionSet::SetEnum(int number, FieldType type, int value, + const FieldDescriptor* descriptor) { + Extension* extension; + if (MaybeNewExtension(number, descriptor, &extension)) { + extension->type = type; + GOOGLE_DCHECK_EQ(cpp_type(extension->type), WireFormatLite::CPPTYPE_ENUM); + extension->is_repeated = false; + } else { + GOOGLE_DCHECK_TYPE(*extension, OPTIONAL, ENUM); + } + extension->is_cleared = false; + extension->enum_value = value; +} + +int ExtensionSet::GetRepeatedEnum(int number, int index) const { + map::const_iterator iter = extensions_.find(number); + GOOGLE_CHECK(iter != extensions_.end()) << "Index out-of-bounds (field is empty)."; + GOOGLE_DCHECK_TYPE(iter->second, REPEATED, ENUM); + return iter->second.repeated_enum_value->Get(index); +} + +void ExtensionSet::SetRepeatedEnum(int number, int index, int value) { + map::iterator iter = extensions_.find(number); + GOOGLE_CHECK(iter != extensions_.end()) << "Index out-of-bounds (field is empty)."; + GOOGLE_DCHECK_TYPE(iter->second, REPEATED, ENUM); + iter->second.repeated_enum_value->Set(index, value); +} + +void ExtensionSet::AddEnum(int number, FieldType type, + bool packed, int value, + const FieldDescriptor* descriptor) { + Extension* extension; + if (MaybeNewExtension(number, descriptor, &extension)) { + extension->type = type; + GOOGLE_DCHECK_EQ(cpp_type(extension->type), WireFormatLite::CPPTYPE_ENUM); + extension->is_repeated = true; + extension->is_packed = packed; + extension->repeated_enum_value = new RepeatedField(); + } else { + GOOGLE_DCHECK_TYPE(*extension, REPEATED, ENUM); + GOOGLE_DCHECK_EQ(extension->is_packed, packed); + } + extension->repeated_enum_value->Add(value); +} + +// ------------------------------------------------------------------- +// Strings + +const string& ExtensionSet::GetString(int number, + const string& default_value) const { + map::const_iterator iter = extensions_.find(number); + if (iter == extensions_.end() || iter->second.is_cleared) { + // Not present. Return the default value. + return default_value; + } else { + GOOGLE_DCHECK_TYPE(iter->second, OPTIONAL, STRING); + return *iter->second.string_value; + } +} + +string* ExtensionSet::MutableString(int number, FieldType type, + const FieldDescriptor* descriptor) { + Extension* extension; + if (MaybeNewExtension(number, descriptor, &extension)) { + extension->type = type; + GOOGLE_DCHECK_EQ(cpp_type(extension->type), WireFormatLite::CPPTYPE_STRING); + extension->is_repeated = false; + extension->string_value = new string; + } else { + GOOGLE_DCHECK_TYPE(*extension, OPTIONAL, STRING); + } + extension->is_cleared = false; + return extension->string_value; +} + +const string& ExtensionSet::GetRepeatedString(int number, int index) const { + map::const_iterator iter = extensions_.find(number); + GOOGLE_CHECK(iter != extensions_.end()) << "Index out-of-bounds (field is empty)."; + GOOGLE_DCHECK_TYPE(iter->second, REPEATED, STRING); + return iter->second.repeated_string_value->Get(index); +} + +string* ExtensionSet::MutableRepeatedString(int number, int index) { + map::iterator iter = extensions_.find(number); + GOOGLE_CHECK(iter != extensions_.end()) << "Index out-of-bounds (field is empty)."; + GOOGLE_DCHECK_TYPE(iter->second, REPEATED, STRING); + return iter->second.repeated_string_value->Mutable(index); +} + +string* ExtensionSet::AddString(int number, FieldType type, + const FieldDescriptor* descriptor) { + Extension* extension; + if (MaybeNewExtension(number, descriptor, &extension)) { + extension->type = type; + GOOGLE_DCHECK_EQ(cpp_type(extension->type), WireFormatLite::CPPTYPE_STRING); + extension->is_repeated = true; + extension->is_packed = false; + extension->repeated_string_value = new RepeatedPtrField(); + } else { + GOOGLE_DCHECK_TYPE(*extension, REPEATED, STRING); + } + return extension->repeated_string_value->Add(); +} + +// ------------------------------------------------------------------- +// Messages + +const MessageLite& ExtensionSet::GetMessage( + int number, const MessageLite& default_value) const { + map::const_iterator iter = extensions_.find(number); + if (iter == extensions_.end()) { + // Not present. Return the default value. + return default_value; + } else { + GOOGLE_DCHECK_TYPE(iter->second, OPTIONAL, MESSAGE); + return *iter->second.message_value; + } +} + +// Defined in extension_set_heavy.cc. +// const MessageLite& ExtensionSet::GetMessage(int number, +// const Descriptor* message_type, +// MessageFactory* factory) const + +MessageLite* ExtensionSet::MutableMessage(int number, FieldType type, + const MessageLite& prototype, + const FieldDescriptor* descriptor) { + Extension* extension; + if (MaybeNewExtension(number, descriptor, &extension)) { + extension->type = type; + GOOGLE_DCHECK_EQ(cpp_type(extension->type), WireFormatLite::CPPTYPE_MESSAGE); + extension->is_repeated = false; + extension->message_value = prototype.New(); + } else { + GOOGLE_DCHECK_TYPE(*extension, OPTIONAL, MESSAGE); + } + extension->is_cleared = false; + return extension->message_value; +} + +// Defined in extension_set_heavy.cc. +// MessageLite* ExtensionSet::MutableMessage(int number, FieldType type, +// const Descriptor* message_type, +// MessageFactory* factory) + +const MessageLite& ExtensionSet::GetRepeatedMessage( + int number, int index) const { + map::const_iterator iter = extensions_.find(number); + GOOGLE_CHECK(iter != extensions_.end()) << "Index out-of-bounds (field is empty)."; + GOOGLE_DCHECK_TYPE(iter->second, REPEATED, MESSAGE); + return iter->second.repeated_message_value->Get(index); +} + +MessageLite* ExtensionSet::MutableRepeatedMessage(int number, int index) { + map::iterator iter = extensions_.find(number); + GOOGLE_CHECK(iter != extensions_.end()) << "Index out-of-bounds (field is empty)."; + GOOGLE_DCHECK_TYPE(iter->second, REPEATED, MESSAGE); + return iter->second.repeated_message_value->Mutable(index); +} + +MessageLite* ExtensionSet::AddMessage(int number, FieldType type, + const MessageLite& prototype, + const FieldDescriptor* descriptor) { + Extension* extension; + if (MaybeNewExtension(number, descriptor, &extension)) { + extension->type = type; + GOOGLE_DCHECK_EQ(cpp_type(extension->type), WireFormatLite::CPPTYPE_MESSAGE); + extension->is_repeated = true; + extension->repeated_message_value = + new RepeatedPtrField(); + } else { + GOOGLE_DCHECK_TYPE(*extension, REPEATED, MESSAGE); + } + + // RepeatedPtrField does not know how to Add() since it cannot + // allocate an abstract object, so we have to be tricky. + MessageLite* result = extension->repeated_message_value + ->AddFromCleared >(); + if (result == NULL) { + result = prototype.New(); + extension->repeated_message_value->AddAllocated(result); + } + return result; +} + +// Defined in extension_set_heavy.cc. +// MessageLite* ExtensionSet::AddMessage(int number, FieldType type, +// const Descriptor* message_type, +// MessageFactory* factory) + +#undef GOOGLE_DCHECK_TYPE + +void ExtensionSet::RemoveLast(int number) { + map::iterator iter = extensions_.find(number); + GOOGLE_CHECK(iter != extensions_.end()) << "Index out-of-bounds (field is empty)."; + + Extension* extension = &iter->second; + GOOGLE_DCHECK(extension->is_repeated); + + switch(cpp_type(extension->type)) { + case WireFormatLite::CPPTYPE_INT32: + extension->repeated_int32_value->RemoveLast(); + break; + case WireFormatLite::CPPTYPE_INT64: + extension->repeated_int64_value->RemoveLast(); + break; + case WireFormatLite::CPPTYPE_UINT32: + extension->repeated_uint32_value->RemoveLast(); + break; + case WireFormatLite::CPPTYPE_UINT64: + extension->repeated_uint64_value->RemoveLast(); + break; + case WireFormatLite::CPPTYPE_FLOAT: + extension->repeated_float_value->RemoveLast(); + break; + case WireFormatLite::CPPTYPE_DOUBLE: + extension->repeated_double_value->RemoveLast(); + break; + case WireFormatLite::CPPTYPE_BOOL: + extension->repeated_bool_value->RemoveLast(); + break; + case WireFormatLite::CPPTYPE_ENUM: + extension->repeated_enum_value->RemoveLast(); + break; + case WireFormatLite::CPPTYPE_STRING: + extension->repeated_string_value->RemoveLast(); + break; + case WireFormatLite::CPPTYPE_MESSAGE: + extension->repeated_message_value->RemoveLast(); + break; + } +} + +void ExtensionSet::SwapElements(int number, int index1, int index2) { + map::iterator iter = extensions_.find(number); + GOOGLE_CHECK(iter != extensions_.end()) << "Index out-of-bounds (field is empty)."; + + Extension* extension = &iter->second; + GOOGLE_DCHECK(extension->is_repeated); + + switch(cpp_type(extension->type)) { + case WireFormatLite::CPPTYPE_INT32: + extension->repeated_int32_value->SwapElements(index1, index2); + break; + case WireFormatLite::CPPTYPE_INT64: + extension->repeated_int64_value->SwapElements(index1, index2); + break; + case WireFormatLite::CPPTYPE_UINT32: + extension->repeated_uint32_value->SwapElements(index1, index2); + break; + case WireFormatLite::CPPTYPE_UINT64: + extension->repeated_uint64_value->SwapElements(index1, index2); + break; + case WireFormatLite::CPPTYPE_FLOAT: + extension->repeated_float_value->SwapElements(index1, index2); + break; + case WireFormatLite::CPPTYPE_DOUBLE: + extension->repeated_double_value->SwapElements(index1, index2); + break; + case WireFormatLite::CPPTYPE_BOOL: + extension->repeated_bool_value->SwapElements(index1, index2); + break; + case WireFormatLite::CPPTYPE_ENUM: + extension->repeated_enum_value->SwapElements(index1, index2); + break; + case WireFormatLite::CPPTYPE_STRING: + extension->repeated_string_value->SwapElements(index1, index2); + break; + case WireFormatLite::CPPTYPE_MESSAGE: + extension->repeated_message_value->SwapElements(index1, index2); + break; + } +} + +// =================================================================== + +void ExtensionSet::Clear() { + for (map::iterator iter = extensions_.begin(); + iter != extensions_.end(); ++iter) { + iter->second.Clear(); + } +} + +void ExtensionSet::MergeFrom(const ExtensionSet& other) { + for (map::const_iterator iter = other.extensions_.begin(); + iter != other.extensions_.end(); ++iter) { + const Extension& other_extension = iter->second; + + if (other_extension.is_repeated) { + Extension* extension; + bool is_new = MaybeNewExtension(iter->first, other_extension.descriptor, + &extension); + if (is_new) { + // Extension did not already exist in set. + extension->type = other_extension.type; + extension->is_repeated = true; + } else { + GOOGLE_DCHECK_EQ(extension->type, other_extension.type); + GOOGLE_DCHECK(extension->is_repeated); + } + + switch (cpp_type(other_extension.type)) { +#define HANDLE_TYPE(UPPERCASE, LOWERCASE, REPEATED_TYPE) \ + case WireFormatLite::CPPTYPE_##UPPERCASE: \ + if (is_new) { \ + extension->repeated_##LOWERCASE##_value = \ + new REPEATED_TYPE; \ + } \ + extension->repeated_##LOWERCASE##_value->MergeFrom( \ + *other_extension.repeated_##LOWERCASE##_value); \ + break; + + HANDLE_TYPE( INT32, int32, RepeatedField < int32>); + HANDLE_TYPE( INT64, int64, RepeatedField < int64>); + HANDLE_TYPE( UINT32, uint32, RepeatedField < uint32>); + HANDLE_TYPE( UINT64, uint64, RepeatedField < uint64>); + HANDLE_TYPE( FLOAT, float, RepeatedField < float>); + HANDLE_TYPE( DOUBLE, double, RepeatedField < double>); + HANDLE_TYPE( BOOL, bool, RepeatedField < bool>); + HANDLE_TYPE( ENUM, enum, RepeatedField < int>); + HANDLE_TYPE( STRING, string, RepeatedPtrField< string>); +#undef HANDLE_TYPE + + case WireFormatLite::CPPTYPE_MESSAGE: + if (is_new) { + extension->repeated_message_value = + new RepeatedPtrField(); + } + // We can't call RepeatedPtrField::MergeFrom() because + // it would attempt to allocate new objects. + RepeatedPtrField* other_repeated_message = + other_extension.repeated_message_value; + for (int i = 0; i < other_repeated_message->size(); i++) { + const MessageLite& other_message = other_repeated_message->Get(i); + MessageLite* target = extension->repeated_message_value + ->AddFromCleared >(); + if (target == NULL) { + target = other_message.New(); + extension->repeated_message_value->AddAllocated(target); + } + target->CheckTypeAndMergeFrom(other_message); + } + break; + } + } else { + if (!other_extension.is_cleared) { + switch (cpp_type(other_extension.type)) { +#define HANDLE_TYPE(UPPERCASE, LOWERCASE, CAMELCASE) \ + case WireFormatLite::CPPTYPE_##UPPERCASE: \ + Set##CAMELCASE(iter->first, other_extension.type, \ + other_extension.LOWERCASE##_value, \ + other_extension.descriptor); \ + break; + + HANDLE_TYPE( INT32, int32, Int32); + HANDLE_TYPE( INT64, int64, Int64); + HANDLE_TYPE(UINT32, uint32, UInt32); + HANDLE_TYPE(UINT64, uint64, UInt64); + HANDLE_TYPE( FLOAT, float, Float); + HANDLE_TYPE(DOUBLE, double, Double); + HANDLE_TYPE( BOOL, bool, Bool); + HANDLE_TYPE( ENUM, enum, Enum); +#undef HANDLE_TYPE + case WireFormatLite::CPPTYPE_STRING: + SetString(iter->first, other_extension.type, + *other_extension.string_value, + other_extension.descriptor); + break; + case WireFormatLite::CPPTYPE_MESSAGE: + MutableMessage(iter->first, other_extension.type, + *other_extension.message_value, + other_extension.descriptor) + ->CheckTypeAndMergeFrom(*other_extension.message_value); + break; + } + } + } + } +} + +void ExtensionSet::Swap(ExtensionSet* x) { + extensions_.swap(x->extensions_); +} + +bool ExtensionSet::IsInitialized() const { + // Extensions are never required. However, we need to check that all + // embedded messages are initialized. + for (map::const_iterator iter = extensions_.begin(); + iter != extensions_.end(); ++iter) { + const Extension& extension = iter->second; + if (cpp_type(extension.type) == WireFormatLite::CPPTYPE_MESSAGE) { + if (extension.is_repeated) { + for (int i = 0; i < extension.repeated_message_value->size(); i++) { + if (!extension.repeated_message_value->Get(i).IsInitialized()) { + return false; + } + } + } else { + if (!extension.is_cleared) { + if (!extension.message_value->IsInitialized()) return false; + } + } + } + } + + return true; +} + +bool ExtensionSet::ParseField(uint32 tag, io::CodedInputStream* input, + ExtensionFinder* extension_finder, + FieldSkipper* field_skipper) { + int number = WireFormatLite::GetTagFieldNumber(tag); + WireFormatLite::WireType wire_type = WireFormatLite::GetTagWireType(tag); + + ExtensionInfo extension; + bool is_unknown; + if (!extension_finder->Find(number, &extension)) { + is_unknown = true; + } else if (extension.is_packed) { + is_unknown = (wire_type != WireFormatLite::WIRETYPE_LENGTH_DELIMITED); + } else { + WireFormatLite::WireType expected_wire_type = + WireFormatLite::WireTypeForFieldType(real_type(extension.type)); + is_unknown = (wire_type != expected_wire_type); + } + + if (is_unknown) { + field_skipper->SkipField(input, tag); + } else if (extension.is_packed) { + uint32 size; + if (!input->ReadVarint32(&size)) return false; + io::CodedInputStream::Limit limit = input->PushLimit(size); + + switch (extension.type) { +#define HANDLE_TYPE(UPPERCASE, CPP_CAMELCASE, CPP_LOWERCASE) \ + case WireFormatLite::TYPE_##UPPERCASE: \ + while (input->BytesUntilLimit() > 0) { \ + CPP_LOWERCASE value; \ + if (!WireFormatLite::ReadPrimitive< \ + CPP_LOWERCASE, WireFormatLite::TYPE_##UPPERCASE>( \ + input, &value)) return false; \ + Add##CPP_CAMELCASE(number, WireFormatLite::TYPE_##UPPERCASE, \ + true, value, extension.descriptor); \ + } \ + break + + HANDLE_TYPE( INT32, Int32, int32); + HANDLE_TYPE( INT64, Int64, int64); + HANDLE_TYPE( UINT32, UInt32, uint32); + HANDLE_TYPE( UINT64, UInt64, uint64); + HANDLE_TYPE( SINT32, Int32, int32); + HANDLE_TYPE( SINT64, Int64, int64); + HANDLE_TYPE( FIXED32, UInt32, uint32); + HANDLE_TYPE( FIXED64, UInt64, uint64); + HANDLE_TYPE(SFIXED32, Int32, int32); + HANDLE_TYPE(SFIXED64, Int64, int64); + HANDLE_TYPE( FLOAT, Float, float); + HANDLE_TYPE( DOUBLE, Double, double); + HANDLE_TYPE( BOOL, Bool, bool); +#undef HANDLE_TYPE + + case WireFormatLite::TYPE_ENUM: + while (input->BytesUntilLimit() > 0) { + int value; + if (!WireFormatLite::ReadPrimitive( + input, &value)) return false; + if (extension.enum_validity_check.func( + extension.enum_validity_check.arg, value)) { + AddEnum(number, WireFormatLite::TYPE_ENUM, true, value, + extension.descriptor); + } + } + break; + + case WireFormatLite::TYPE_STRING: + case WireFormatLite::TYPE_BYTES: + case WireFormatLite::TYPE_GROUP: + case WireFormatLite::TYPE_MESSAGE: + GOOGLE_LOG(FATAL) << "Non-primitive types can't be packed."; + break; + } + + input->PopLimit(limit); + } else { + switch (extension.type) { +#define HANDLE_TYPE(UPPERCASE, CPP_CAMELCASE, CPP_LOWERCASE) \ + case WireFormatLite::TYPE_##UPPERCASE: { \ + CPP_LOWERCASE value; \ + if (!WireFormatLite::ReadPrimitive< \ + CPP_LOWERCASE, WireFormatLite::TYPE_##UPPERCASE>( \ + input, &value)) return false; \ + if (extension.is_repeated) { \ + Add##CPP_CAMELCASE(number, WireFormatLite::TYPE_##UPPERCASE, \ + false, value, extension.descriptor); \ + } else { \ + Set##CPP_CAMELCASE(number, WireFormatLite::TYPE_##UPPERCASE, value, \ + extension.descriptor); \ + } \ + } break + + HANDLE_TYPE( INT32, Int32, int32); + HANDLE_TYPE( INT64, Int64, int64); + HANDLE_TYPE( UINT32, UInt32, uint32); + HANDLE_TYPE( UINT64, UInt64, uint64); + HANDLE_TYPE( SINT32, Int32, int32); + HANDLE_TYPE( SINT64, Int64, int64); + HANDLE_TYPE( FIXED32, UInt32, uint32); + HANDLE_TYPE( FIXED64, UInt64, uint64); + HANDLE_TYPE(SFIXED32, Int32, int32); + HANDLE_TYPE(SFIXED64, Int64, int64); + HANDLE_TYPE( FLOAT, Float, float); + HANDLE_TYPE( DOUBLE, Double, double); + HANDLE_TYPE( BOOL, Bool, bool); +#undef HANDLE_TYPE + + case WireFormatLite::TYPE_ENUM: { + int value; + if (!WireFormatLite::ReadPrimitive( + input, &value)) return false; + + if (!extension.enum_validity_check.func( + extension.enum_validity_check.arg, value)) { + // Invalid value. Treat as unknown. + field_skipper->SkipUnknownEnum(number, value); + } else if (extension.is_repeated) { + AddEnum(number, WireFormatLite::TYPE_ENUM, false, value, + extension.descriptor); + } else { + SetEnum(number, WireFormatLite::TYPE_ENUM, value, + extension.descriptor); + } + break; + } + + case WireFormatLite::TYPE_STRING: { + string* value = extension.is_repeated ? + AddString(number, WireFormatLite::TYPE_STRING, extension.descriptor) : + MutableString(number, WireFormatLite::TYPE_STRING, + extension.descriptor); + if (!WireFormatLite::ReadString(input, value)) return false; + break; + } + + case WireFormatLite::TYPE_BYTES: { + string* value = extension.is_repeated ? + AddString(number, WireFormatLite::TYPE_STRING, extension.descriptor) : + MutableString(number, WireFormatLite::TYPE_STRING, + extension.descriptor); + if (!WireFormatLite::ReadBytes(input, value)) return false; + break; + } + + case WireFormatLite::TYPE_GROUP: { + MessageLite* value = extension.is_repeated ? + AddMessage(number, WireFormatLite::TYPE_GROUP, + *extension.message_prototype, extension.descriptor) : + MutableMessage(number, WireFormatLite::TYPE_GROUP, + *extension.message_prototype, extension.descriptor); + if (!WireFormatLite::ReadGroup(number, input, value)) return false; + break; + } + + case WireFormatLite::TYPE_MESSAGE: { + MessageLite* value = extension.is_repeated ? + AddMessage(number, WireFormatLite::TYPE_MESSAGE, + *extension.message_prototype, extension.descriptor) : + MutableMessage(number, WireFormatLite::TYPE_MESSAGE, + *extension.message_prototype, extension.descriptor); + if (!WireFormatLite::ReadMessage(input, value)) return false; + break; + } + } + } + + return true; +} + +bool ExtensionSet::ParseField(uint32 tag, io::CodedInputStream* input, + const MessageLite* containing_type) { + FieldSkipper skipper; + GeneratedExtensionFinder finder(containing_type); + return ParseField(tag, input, &finder, &skipper); +} + +// Defined in extension_set_heavy.cc. +// bool ExtensionSet::ParseField(uint32 tag, io::CodedInputStream* input, +// const MessageLite* containing_type, +// UnknownFieldSet* unknown_fields) + +bool ExtensionSet::ParseMessageSet(io::CodedInputStream* input, + ExtensionFinder* extension_finder, + FieldSkipper* field_skipper) { + while (true) { + uint32 tag = input->ReadTag(); + switch (tag) { + case 0: + return true; + case WireFormatLite::kMessageSetItemStartTag: + if (!ParseMessageSetItem(input, extension_finder, field_skipper)) { + return false; + } + break; + default: + if (!ParseField(tag, input, extension_finder, field_skipper)) { + return false; + } + break; + } + } +} + +bool ExtensionSet::ParseMessageSet(io::CodedInputStream* input, + const MessageLite* containing_type) { + FieldSkipper skipper; + GeneratedExtensionFinder finder(containing_type); + return ParseMessageSet(input, &finder, &skipper); +} + +// Defined in extension_set_heavy.cc. +// bool ExtensionSet::ParseMessageSet(io::CodedInputStream* input, +// const MessageLite* containing_type, +// UnknownFieldSet* unknown_fields); + +bool ExtensionSet::ParseMessageSetItem(io::CodedInputStream* input, + ExtensionFinder* extension_finder, + FieldSkipper* field_skipper) { + // TODO(kenton): It would be nice to share code between this and + // WireFormatLite::ParseAndMergeMessageSetItem(), but I think the + // differences would be hard to factor out. + + // This method parses a group which should contain two fields: + // required int32 type_id = 2; + // required data message = 3; + + // Once we see a type_id, we'll construct a fake tag for this extension + // which is the tag it would have had under the proto2 extensions wire + // format. + uint32 fake_tag = 0; + + // If we see message data before the type_id, we'll append it to this so + // we can parse it later. This will probably never happen in practice, + // as no MessageSet encoder I know of writes the message before the type ID. + // But, it's technically valid so we should allow it. + // TODO(kenton): Use a Cord instead? Do I care? + string message_data; + + while (true) { + uint32 tag = input->ReadTag(); + if (tag == 0) return false; + + switch (tag) { + case WireFormatLite::kMessageSetTypeIdTag: { + uint32 type_id; + if (!input->ReadVarint32(&type_id)) return false; + fake_tag = WireFormatLite::MakeTag(type_id, + WireFormatLite::WIRETYPE_LENGTH_DELIMITED); + + if (!message_data.empty()) { + // We saw some message data before the type_id. Have to parse it + // now. + io::CodedInputStream sub_input( + reinterpret_cast(message_data.data()), + message_data.size()); + if (!ParseField(fake_tag, &sub_input, + extension_finder, field_skipper)) { + return false; + } + message_data.clear(); + } + + break; + } + + case WireFormatLite::kMessageSetMessageTag: { + if (fake_tag == 0) { + // We haven't seen a type_id yet. Append this data to message_data. + string temp; + uint32 length; + if (!input->ReadVarint32(&length)) return false; + if (!input->ReadString(&temp, length)) return false; + message_data.append(temp); + } else { + // Already saw type_id, so we can parse this directly. + if (!ParseField(fake_tag, input, + extension_finder, field_skipper)) { + return false; + } + } + + break; + } + + case WireFormatLite::kMessageSetItemEndTag: { + return true; + } + + default: { + if (!field_skipper->SkipField(input, tag)) return false; + } + } + } +} + +void ExtensionSet::SerializeWithCachedSizes( + int start_field_number, int end_field_number, + io::CodedOutputStream* output) const { + map::const_iterator iter; + for (iter = extensions_.lower_bound(start_field_number); + iter != extensions_.end() && iter->first < end_field_number; + ++iter) { + iter->second.SerializeFieldWithCachedSizes(iter->first, output); + } +} + +void ExtensionSet::SerializeMessageSetWithCachedSizes( + io::CodedOutputStream* output) const { + map::const_iterator iter; + for (iter = extensions_.begin(); iter != extensions_.end(); ++iter) { + iter->second.SerializeMessageSetItemWithCachedSizes(iter->first, output); + } +} + +int ExtensionSet::ByteSize() const { + int total_size = 0; + + for (map::const_iterator iter = extensions_.begin(); + iter != extensions_.end(); ++iter) { + total_size += iter->second.ByteSize(iter->first); + } + + return total_size; +} + +int ExtensionSet::MessageSetByteSize() const { + int total_size = 0; + + for (map::const_iterator iter = extensions_.begin(); + iter != extensions_.end(); ++iter) { + total_size += iter->second.MessageSetItemByteSize(iter->first); + } + + return total_size; +} + +// Defined in extension_set_heavy.cc. +// int ExtensionSet::SpaceUsedExcludingSelf() const + +bool ExtensionSet::MaybeNewExtension(int number, + const FieldDescriptor* descriptor, + Extension** result) { + pair::iterator, bool> insert_result = + extensions_.insert(make_pair(number, Extension())); + *result = &insert_result.first->second; + (*result)->descriptor = descriptor; + return insert_result.second; +} + +// =================================================================== +// Methods of ExtensionSet::Extension + +void ExtensionSet::Extension::Clear() { + if (is_repeated) { + switch (cpp_type(type)) { +#define HANDLE_TYPE(UPPERCASE, LOWERCASE) \ + case WireFormatLite::CPPTYPE_##UPPERCASE: \ + repeated_##LOWERCASE##_value->Clear(); \ + break + + HANDLE_TYPE( INT32, int32); + HANDLE_TYPE( INT64, int64); + HANDLE_TYPE( UINT32, uint32); + HANDLE_TYPE( UINT64, uint64); + HANDLE_TYPE( FLOAT, float); + HANDLE_TYPE( DOUBLE, double); + HANDLE_TYPE( BOOL, bool); + HANDLE_TYPE( ENUM, enum); + HANDLE_TYPE( STRING, string); + HANDLE_TYPE(MESSAGE, message); +#undef HANDLE_TYPE + } + } else { + if (!is_cleared) { + switch (cpp_type(type)) { + case WireFormatLite::CPPTYPE_STRING: + string_value->clear(); + break; + case WireFormatLite::CPPTYPE_MESSAGE: + message_value->Clear(); + break; + default: + // No need to do anything. Get*() will return the default value + // as long as is_cleared is true and Set*() will overwrite the + // previous value. + break; + } + + is_cleared = true; + } + } +} + +void ExtensionSet::Extension::SerializeFieldWithCachedSizes( + int number, + io::CodedOutputStream* output) const { + if (is_repeated) { + if (is_packed) { + if (cached_size == 0) return; + + WireFormatLite::WriteTag(number, + WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); + output->WriteVarint32(cached_size); + + switch (real_type(type)) { +#define HANDLE_TYPE(UPPERCASE, CAMELCASE, LOWERCASE) \ + case WireFormatLite::TYPE_##UPPERCASE: \ + for (int i = 0; i < repeated_##LOWERCASE##_value->size(); i++) { \ + WireFormatLite::Write##CAMELCASE##NoTag( \ + repeated_##LOWERCASE##_value->Get(i), output); \ + } \ + break + + HANDLE_TYPE( INT32, Int32, int32); + HANDLE_TYPE( INT64, Int64, int64); + HANDLE_TYPE( UINT32, UInt32, uint32); + HANDLE_TYPE( UINT64, UInt64, uint64); + HANDLE_TYPE( SINT32, SInt32, int32); + HANDLE_TYPE( SINT64, SInt64, int64); + HANDLE_TYPE( FIXED32, Fixed32, uint32); + HANDLE_TYPE( FIXED64, Fixed64, uint64); + HANDLE_TYPE(SFIXED32, SFixed32, int32); + HANDLE_TYPE(SFIXED64, SFixed64, int64); + HANDLE_TYPE( FLOAT, Float, float); + HANDLE_TYPE( DOUBLE, Double, double); + HANDLE_TYPE( BOOL, Bool, bool); + HANDLE_TYPE( ENUM, Enum, enum); +#undef HANDLE_TYPE + + case WireFormatLite::TYPE_STRING: + case WireFormatLite::TYPE_BYTES: + case WireFormatLite::TYPE_GROUP: + case WireFormatLite::TYPE_MESSAGE: + GOOGLE_LOG(FATAL) << "Non-primitive types can't be packed."; + break; + } + } else { + switch (real_type(type)) { +#define HANDLE_TYPE(UPPERCASE, CAMELCASE, LOWERCASE) \ + case WireFormatLite::TYPE_##UPPERCASE: \ + for (int i = 0; i < repeated_##LOWERCASE##_value->size(); i++) { \ + WireFormatLite::Write##CAMELCASE(number, \ + repeated_##LOWERCASE##_value->Get(i), output); \ + } \ + break + + HANDLE_TYPE( INT32, Int32, int32); + HANDLE_TYPE( INT64, Int64, int64); + HANDLE_TYPE( UINT32, UInt32, uint32); + HANDLE_TYPE( UINT64, UInt64, uint64); + HANDLE_TYPE( SINT32, SInt32, int32); + HANDLE_TYPE( SINT64, SInt64, int64); + HANDLE_TYPE( FIXED32, Fixed32, uint32); + HANDLE_TYPE( FIXED64, Fixed64, uint64); + HANDLE_TYPE(SFIXED32, SFixed32, int32); + HANDLE_TYPE(SFIXED64, SFixed64, int64); + HANDLE_TYPE( FLOAT, Float, float); + HANDLE_TYPE( DOUBLE, Double, double); + HANDLE_TYPE( BOOL, Bool, bool); + HANDLE_TYPE( STRING, String, string); + HANDLE_TYPE( BYTES, Bytes, string); + HANDLE_TYPE( ENUM, Enum, enum); + HANDLE_TYPE( GROUP, Group, message); + HANDLE_TYPE( MESSAGE, Message, message); +#undef HANDLE_TYPE + } + } + } else if (!is_cleared) { + switch (real_type(type)) { +#define HANDLE_TYPE(UPPERCASE, CAMELCASE, VALUE) \ + case WireFormatLite::TYPE_##UPPERCASE: \ + WireFormatLite::Write##CAMELCASE(number, VALUE, output); \ + break + + HANDLE_TYPE( INT32, Int32, int32_value); + HANDLE_TYPE( INT64, Int64, int64_value); + HANDLE_TYPE( UINT32, UInt32, uint32_value); + HANDLE_TYPE( UINT64, UInt64, uint64_value); + HANDLE_TYPE( SINT32, SInt32, int32_value); + HANDLE_TYPE( SINT64, SInt64, int64_value); + HANDLE_TYPE( FIXED32, Fixed32, uint32_value); + HANDLE_TYPE( FIXED64, Fixed64, uint64_value); + HANDLE_TYPE(SFIXED32, SFixed32, int32_value); + HANDLE_TYPE(SFIXED64, SFixed64, int64_value); + HANDLE_TYPE( FLOAT, Float, float_value); + HANDLE_TYPE( DOUBLE, Double, double_value); + HANDLE_TYPE( BOOL, Bool, bool_value); + HANDLE_TYPE( STRING, String, *string_value); + HANDLE_TYPE( BYTES, Bytes, *string_value); + HANDLE_TYPE( ENUM, Enum, enum_value); + HANDLE_TYPE( GROUP, Group, *message_value); + HANDLE_TYPE( MESSAGE, Message, *message_value); +#undef HANDLE_TYPE + } + } +} + +void ExtensionSet::Extension::SerializeMessageSetItemWithCachedSizes( + int number, + io::CodedOutputStream* output) const { + if (type != WireFormatLite::TYPE_MESSAGE || is_repeated) { + // Not a valid MessageSet extension, but serialize it the normal way. + SerializeFieldWithCachedSizes(number, output); + return; + } + + if (is_cleared) return; + + // Start group. + output->WriteTag(WireFormatLite::kMessageSetItemStartTag); + + // Write type ID. + WireFormatLite::WriteUInt32(WireFormatLite::kMessageSetTypeIdNumber, + number, + output); + // Write message. + WireFormatLite::WriteMessageMaybeToArray( + WireFormatLite::kMessageSetMessageNumber, + *message_value, + output); + + // End group. + output->WriteTag(WireFormatLite::kMessageSetItemEndTag); +} + +int ExtensionSet::Extension::ByteSize(int number) const { + int result = 0; + + if (is_repeated) { + if (is_packed) { + switch (real_type(type)) { +#define HANDLE_TYPE(UPPERCASE, CAMELCASE, LOWERCASE) \ + case WireFormatLite::TYPE_##UPPERCASE: \ + for (int i = 0; i < repeated_##LOWERCASE##_value->size(); i++) { \ + result += WireFormatLite::CAMELCASE##Size( \ + repeated_##LOWERCASE##_value->Get(i)); \ + } \ + break + + HANDLE_TYPE( INT32, Int32, int32); + HANDLE_TYPE( INT64, Int64, int64); + HANDLE_TYPE( UINT32, UInt32, uint32); + HANDLE_TYPE( UINT64, UInt64, uint64); + HANDLE_TYPE( SINT32, SInt32, int32); + HANDLE_TYPE( SINT64, SInt64, int64); + HANDLE_TYPE( ENUM, Enum, enum); +#undef HANDLE_TYPE + + // Stuff with fixed size. +#define HANDLE_TYPE(UPPERCASE, CAMELCASE, LOWERCASE) \ + case WireFormatLite::TYPE_##UPPERCASE: \ + result += WireFormatLite::k##CAMELCASE##Size * \ + repeated_##LOWERCASE##_value->size(); \ + break + HANDLE_TYPE( FIXED32, Fixed32, uint32); + HANDLE_TYPE( FIXED64, Fixed64, uint64); + HANDLE_TYPE(SFIXED32, SFixed32, int32); + HANDLE_TYPE(SFIXED64, SFixed64, int64); + HANDLE_TYPE( FLOAT, Float, float); + HANDLE_TYPE( DOUBLE, Double, double); + HANDLE_TYPE( BOOL, Bool, bool); +#undef HANDLE_TYPE + + case WireFormatLite::TYPE_STRING: + case WireFormatLite::TYPE_BYTES: + case WireFormatLite::TYPE_GROUP: + case WireFormatLite::TYPE_MESSAGE: + GOOGLE_LOG(FATAL) << "Non-primitive types can't be packed."; + break; + } + + cached_size = result; + if (result > 0) { + result += io::CodedOutputStream::VarintSize32(result); + result += io::CodedOutputStream::VarintSize32( + WireFormatLite::MakeTag(number, + WireFormatLite::WIRETYPE_LENGTH_DELIMITED)); + } + } else { + int tag_size = WireFormatLite::TagSize(number, real_type(type)); + + switch (real_type(type)) { +#define HANDLE_TYPE(UPPERCASE, CAMELCASE, LOWERCASE) \ + case WireFormatLite::TYPE_##UPPERCASE: \ + result += tag_size * repeated_##LOWERCASE##_value->size(); \ + for (int i = 0; i < repeated_##LOWERCASE##_value->size(); i++) { \ + result += WireFormatLite::CAMELCASE##Size( \ + repeated_##LOWERCASE##_value->Get(i)); \ + } \ + break + + HANDLE_TYPE( INT32, Int32, int32); + HANDLE_TYPE( INT64, Int64, int64); + HANDLE_TYPE( UINT32, UInt32, uint32); + HANDLE_TYPE( UINT64, UInt64, uint64); + HANDLE_TYPE( SINT32, SInt32, int32); + HANDLE_TYPE( SINT64, SInt64, int64); + HANDLE_TYPE( STRING, String, string); + HANDLE_TYPE( BYTES, Bytes, string); + HANDLE_TYPE( ENUM, Enum, enum); + HANDLE_TYPE( GROUP, Group, message); + HANDLE_TYPE( MESSAGE, Message, message); +#undef HANDLE_TYPE + + // Stuff with fixed size. +#define HANDLE_TYPE(UPPERCASE, CAMELCASE, LOWERCASE) \ + case WireFormatLite::TYPE_##UPPERCASE: \ + result += (tag_size + WireFormatLite::k##CAMELCASE##Size) * \ + repeated_##LOWERCASE##_value->size(); \ + break + HANDLE_TYPE( FIXED32, Fixed32, uint32); + HANDLE_TYPE( FIXED64, Fixed64, uint64); + HANDLE_TYPE(SFIXED32, SFixed32, int32); + HANDLE_TYPE(SFIXED64, SFixed64, int64); + HANDLE_TYPE( FLOAT, Float, float); + HANDLE_TYPE( DOUBLE, Double, double); + HANDLE_TYPE( BOOL, Bool, bool); +#undef HANDLE_TYPE + } + } + } else if (!is_cleared) { + result += WireFormatLite::TagSize(number, real_type(type)); + switch (real_type(type)) { +#define HANDLE_TYPE(UPPERCASE, CAMELCASE, LOWERCASE) \ + case WireFormatLite::TYPE_##UPPERCASE: \ + result += WireFormatLite::CAMELCASE##Size(LOWERCASE); \ + break + + HANDLE_TYPE( INT32, Int32, int32_value); + HANDLE_TYPE( INT64, Int64, int64_value); + HANDLE_TYPE( UINT32, UInt32, uint32_value); + HANDLE_TYPE( UINT64, UInt64, uint64_value); + HANDLE_TYPE( SINT32, SInt32, int32_value); + HANDLE_TYPE( SINT64, SInt64, int64_value); + HANDLE_TYPE( STRING, String, *string_value); + HANDLE_TYPE( BYTES, Bytes, *string_value); + HANDLE_TYPE( ENUM, Enum, enum_value); + HANDLE_TYPE( GROUP, Group, *message_value); + HANDLE_TYPE( MESSAGE, Message, *message_value); +#undef HANDLE_TYPE + + // Stuff with fixed size. +#define HANDLE_TYPE(UPPERCASE, CAMELCASE) \ + case WireFormatLite::TYPE_##UPPERCASE: \ + result += WireFormatLite::k##CAMELCASE##Size; \ + break + HANDLE_TYPE( FIXED32, Fixed32); + HANDLE_TYPE( FIXED64, Fixed64); + HANDLE_TYPE(SFIXED32, SFixed32); + HANDLE_TYPE(SFIXED64, SFixed64); + HANDLE_TYPE( FLOAT, Float); + HANDLE_TYPE( DOUBLE, Double); + HANDLE_TYPE( BOOL, Bool); +#undef HANDLE_TYPE + } + } + + return result; +} + +int ExtensionSet::Extension::MessageSetItemByteSize(int number) const { + if (type != WireFormatLite::TYPE_MESSAGE || is_repeated) { + // Not a valid MessageSet extension, but compute the byte size for it the + // normal way. + return ByteSize(number); + } + + if (is_cleared) return 0; + + int our_size = WireFormatLite::kMessageSetItemTagsSize; + + // type_id + our_size += io::CodedOutputStream::VarintSize32(number); + + // message + int message_size = message_value->ByteSize(); + + our_size += io::CodedOutputStream::VarintSize32(message_size); + our_size += message_size; + + return our_size; +} + +int ExtensionSet::Extension::GetSize() const { + GOOGLE_DCHECK(is_repeated); + switch (cpp_type(type)) { +#define HANDLE_TYPE(UPPERCASE, LOWERCASE) \ + case WireFormatLite::CPPTYPE_##UPPERCASE: \ + return repeated_##LOWERCASE##_value->size() + + HANDLE_TYPE( INT32, int32); + HANDLE_TYPE( INT64, int64); + HANDLE_TYPE( UINT32, uint32); + HANDLE_TYPE( UINT64, uint64); + HANDLE_TYPE( FLOAT, float); + HANDLE_TYPE( DOUBLE, double); + HANDLE_TYPE( BOOL, bool); + HANDLE_TYPE( ENUM, enum); + HANDLE_TYPE( STRING, string); + HANDLE_TYPE(MESSAGE, message); +#undef HANDLE_TYPE + } + + GOOGLE_LOG(FATAL) << "Can't get here."; + return 0; +} + +void ExtensionSet::Extension::Free() { + if (is_repeated) { + switch (cpp_type(type)) { +#define HANDLE_TYPE(UPPERCASE, LOWERCASE) \ + case WireFormatLite::CPPTYPE_##UPPERCASE: \ + delete repeated_##LOWERCASE##_value; \ + break + + HANDLE_TYPE( INT32, int32); + HANDLE_TYPE( INT64, int64); + HANDLE_TYPE( UINT32, uint32); + HANDLE_TYPE( UINT64, uint64); + HANDLE_TYPE( FLOAT, float); + HANDLE_TYPE( DOUBLE, double); + HANDLE_TYPE( BOOL, bool); + HANDLE_TYPE( ENUM, enum); + HANDLE_TYPE( STRING, string); + HANDLE_TYPE(MESSAGE, message); +#undef HANDLE_TYPE + } + } else { + switch (cpp_type(type)) { + case WireFormatLite::CPPTYPE_STRING: + delete string_value; + break; + case WireFormatLite::CPPTYPE_MESSAGE: + delete message_value; + break; + default: + break; + } + } +} + +// Defined in extension_set_heavy.cc. +// int ExtensionSet::Extension::SpaceUsedExcludingSelf() const + +} // namespace internal +} // namespace protobuf +} // namespace google diff --git a/3party_sloynik/protobuf/src/google/protobuf/extension_set.h b/3party_sloynik/protobuf/src/google/protobuf/extension_set.h new file mode 100644 index 0000000000..14d5d15089 --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/extension_set.h @@ -0,0 +1,902 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// This header is logically internal, but is made public because it is used +// from protocol-compiler-generated code, which may reside in other components. + +#ifndef GOOGLE_PROTOBUF_EXTENSION_SET_H__ +#define GOOGLE_PROTOBUF_EXTENSION_SET_H__ + +#include +#include +#include +#include +#include + +#include + +namespace google { + +namespace protobuf { + class Descriptor; // descriptor.h + class FieldDescriptor; // descriptor.h + class DescriptorPool; // descriptor.h + class MessageLite; // message_lite.h + class Message; // message.h + class MessageFactory; // message.h + class UnknownFieldSet; // unknown_field_set.h + namespace io { + class CodedInputStream; // coded_stream.h + class CodedOutputStream; // coded_stream.h + } + namespace internal { + class FieldSkipper; // wire_format_lite.h + class RepeatedPtrFieldBase; // repeated_field.h + } + template class RepeatedField; // repeated_field.h + template class RepeatedPtrField; // repeated_field.h +} + +namespace protobuf { +namespace internal { + +// Used to store values of type WireFormatLite::FieldType without having to +// #include wire_format_lite.h. Also, ensures that we use only one byte to +// store these values, which is important to keep the layout of +// ExtensionSet::Extension small. +typedef uint8 FieldType; + +// A function which, given an integer value, returns true if the number +// matches one of the defined values for the corresponding enum type. This +// is used with RegisterEnumExtension, below. +typedef bool EnumValidityFunc(int number); + +// Version of the above which takes an argument. This is needed to deal with +// extensions that are not compiled in. +typedef bool EnumValidityFuncWithArg(const void* arg, int number); + +// Information about a registered extension. +struct ExtensionInfo { + inline ExtensionInfo() {} + inline ExtensionInfo(FieldType type, bool is_repeated, bool is_packed) + : type(type), is_repeated(is_repeated), is_packed(is_packed), + descriptor(NULL) {} + + FieldType type; + bool is_repeated; + bool is_packed; + + struct EnumValidityCheck { + EnumValidityFuncWithArg* func; + const void* arg; + }; + + union { + EnumValidityCheck enum_validity_check; + const MessageLite* message_prototype; + }; + + // The descriptor for this extension, if one exists and is known. May be + // NULL. Must not be NULL if the descriptor for the extension does not + // live in the same pool as the descriptor for the containing type. + const FieldDescriptor* descriptor; +}; + +// Abstract interface for an object which looks up extension definitions. Used +// when parsing. +class LIBPROTOBUF_EXPORT ExtensionFinder { + public: + virtual ~ExtensionFinder(); + + // Find the extension with the given containing type and number. + virtual bool Find(int number, ExtensionInfo* output) = 0; +}; + +// Implementation of ExtensionFinder which finds extensions defined in .proto +// files which have been compiled into the binary. +class LIBPROTOBUF_EXPORT GeneratedExtensionFinder : public ExtensionFinder { + public: + GeneratedExtensionFinder(const MessageLite* containing_type) + : containing_type_(containing_type) {} + virtual ~GeneratedExtensionFinder() {} + + // Returns true and fills in *output if found, otherwise returns false. + virtual bool Find(int number, ExtensionInfo* output); + + private: + const MessageLite* containing_type_; +}; + +// Note: extension_set_heavy.cc defines DescriptorPoolExtensionFinder for +// finding extensions from a DescriptorPool. + +// This is an internal helper class intended for use within the protocol buffer +// library and generated classes. Clients should not use it directly. Instead, +// use the generated accessors such as GetExtension() of the class being +// extended. +// +// This class manages extensions for a protocol message object. The +// message's HasExtension(), GetExtension(), MutableExtension(), and +// ClearExtension() methods are just thin wrappers around the embedded +// ExtensionSet. When parsing, if a tag number is encountered which is +// inside one of the message type's extension ranges, the tag is passed +// off to the ExtensionSet for parsing. Etc. +class LIBPROTOBUF_EXPORT ExtensionSet { + public: + ExtensionSet(); + ~ExtensionSet(); + + // These are called at startup by protocol-compiler-generated code to + // register known extensions. The registrations are used by ParseField() + // to look up extensions for parsed field numbers. Note that dynamic parsing + // does not use ParseField(); only protocol-compiler-generated parsing + // methods do. + static void RegisterExtension(const MessageLite* containing_type, + int number, FieldType type, + bool is_repeated, bool is_packed); + static void RegisterEnumExtension(const MessageLite* containing_type, + int number, FieldType type, + bool is_repeated, bool is_packed, + EnumValidityFunc* is_valid); + static void RegisterMessageExtension(const MessageLite* containing_type, + int number, FieldType type, + bool is_repeated, bool is_packed, + const MessageLite* prototype); + + // ================================================================= + + // Add all fields which are currently present to the given vector. This + // is useful to implement Reflection::ListFields(). + void AppendToList(const Descriptor* containing_type, + const DescriptorPool* pool, + vector* output) const; + + // ================================================================= + // Accessors + // + // Generated message classes include type-safe templated wrappers around + // these methods. Generally you should use those rather than call these + // directly, unless you are doing low-level memory management. + // + // When calling any of these accessors, the extension number requested + // MUST exist in the DescriptorPool provided to the constructor. Otheriwse, + // the method will fail an assert. Normally, though, you would not call + // these directly; you would either call the generated accessors of your + // message class (e.g. GetExtension()) or you would call the accessors + // of the reflection interface. In both cases, it is impossible to + // trigger this assert failure: the generated accessors only accept + // linked-in extension types as parameters, while the Reflection interface + // requires you to provide the FieldDescriptor describing the extension. + // + // When calling any of these accessors, a protocol-compiler-generated + // implementation of the extension corresponding to the number MUST + // be linked in, and the FieldDescriptor used to refer to it MUST be + // the one generated by that linked-in code. Otherwise, the method will + // die on an assert failure. The message objects returned by the message + // accessors are guaranteed to be of the correct linked-in type. + // + // These methods pretty much match Reflection except that: + // - They're not virtual. + // - They identify fields by number rather than FieldDescriptors. + // - They identify enum values using integers rather than descriptors. + // - Strings provide Mutable() in addition to Set() accessors. + + bool Has(int number) const; + int ExtensionSize(int number) const; // Size of a repeated extension. + void ClearExtension(int number); + + // singular fields ------------------------------------------------- + + int32 GetInt32 (int number, int32 default_value) const; + int64 GetInt64 (int number, int64 default_value) const; + uint32 GetUInt32(int number, uint32 default_value) const; + uint64 GetUInt64(int number, uint64 default_value) const; + float GetFloat (int number, float default_value) const; + double GetDouble(int number, double default_value) const; + bool GetBool (int number, bool default_value) const; + int GetEnum (int number, int default_value) const; + const string & GetString (int number, const string& default_value) const; + const MessageLite& GetMessage(int number, + const MessageLite& default_value) const; + const MessageLite& GetMessage(int number, const Descriptor* message_type, + MessageFactory* factory) const; + + // |descriptor| may be NULL so long as it is known that the descriptor for + // the extension lives in the same pool as the descriptor for the containing + // type. +#define desc const FieldDescriptor* descriptor // avoid line wrapping + void SetInt32 (int number, FieldType type, int32 value, desc); + void SetInt64 (int number, FieldType type, int64 value, desc); + void SetUInt32(int number, FieldType type, uint32 value, desc); + void SetUInt64(int number, FieldType type, uint64 value, desc); + void SetFloat (int number, FieldType type, float value, desc); + void SetDouble(int number, FieldType type, double value, desc); + void SetBool (int number, FieldType type, bool value, desc); + void SetEnum (int number, FieldType type, int value, desc); + void SetString(int number, FieldType type, const string& value, desc); + string * MutableString (int number, FieldType type, desc); + MessageLite* MutableMessage(int number, FieldType type, + const MessageLite& prototype, desc); + MessageLite* MutableMessage(const FieldDescriptor* decsriptor, + MessageFactory* factory); +#undef desc + + // repeated fields ------------------------------------------------- + + int32 GetRepeatedInt32 (int number, int index) const; + int64 GetRepeatedInt64 (int number, int index) const; + uint32 GetRepeatedUInt32(int number, int index) const; + uint64 GetRepeatedUInt64(int number, int index) const; + float GetRepeatedFloat (int number, int index) const; + double GetRepeatedDouble(int number, int index) const; + bool GetRepeatedBool (int number, int index) const; + int GetRepeatedEnum (int number, int index) const; + const string & GetRepeatedString (int number, int index) const; + const MessageLite& GetRepeatedMessage(int number, int index) const; + + void SetRepeatedInt32 (int number, int index, int32 value); + void SetRepeatedInt64 (int number, int index, int64 value); + void SetRepeatedUInt32(int number, int index, uint32 value); + void SetRepeatedUInt64(int number, int index, uint64 value); + void SetRepeatedFloat (int number, int index, float value); + void SetRepeatedDouble(int number, int index, double value); + void SetRepeatedBool (int number, int index, bool value); + void SetRepeatedEnum (int number, int index, int value); + void SetRepeatedString(int number, int index, const string& value); + string * MutableRepeatedString (int number, int index); + MessageLite* MutableRepeatedMessage(int number, int index); + +#define desc const FieldDescriptor* descriptor // avoid line wrapping + void AddInt32 (int number, FieldType type, bool packed, int32 value, desc); + void AddInt64 (int number, FieldType type, bool packed, int64 value, desc); + void AddUInt32(int number, FieldType type, bool packed, uint32 value, desc); + void AddUInt64(int number, FieldType type, bool packed, uint64 value, desc); + void AddFloat (int number, FieldType type, bool packed, float value, desc); + void AddDouble(int number, FieldType type, bool packed, double value, desc); + void AddBool (int number, FieldType type, bool packed, bool value, desc); + void AddEnum (int number, FieldType type, bool packed, int value, desc); + void AddString(int number, FieldType type, const string& value, desc); + string * AddString (int number, FieldType type, desc); + MessageLite* AddMessage(int number, FieldType type, + const MessageLite& prototype, desc); + MessageLite* AddMessage(const FieldDescriptor* descriptor, + MessageFactory* factory); +#undef desc + + void RemoveLast(int number); + void SwapElements(int number, int index1, int index2); + + // ----------------------------------------------------------------- + // TODO(kenton): Hardcore memory management accessors + + // ================================================================= + // convenience methods for implementing methods of Message + // + // These could all be implemented in terms of the other methods of this + // class, but providing them here helps keep the generated code size down. + + void Clear(); + void MergeFrom(const ExtensionSet& other); + void Swap(ExtensionSet* other); + bool IsInitialized() const; + + // Parses a single extension from the input. The input should start out + // positioned immediately after the tag. |containing_type| is the default + // instance for the containing message; it is used only to look up the + // extension by number. See RegisterExtension(), above. Unlike the other + // methods of ExtensionSet, this only works for generated message types -- + // it looks up extensions registered using RegisterExtension(). + bool ParseField(uint32 tag, io::CodedInputStream* input, + ExtensionFinder* extension_finder, + FieldSkipper* field_skipper); + + // Specific versions for lite or full messages (constructs the appropriate + // FieldSkipper automatically). + bool ParseField(uint32 tag, io::CodedInputStream* input, + const MessageLite* containing_type); + bool ParseField(uint32 tag, io::CodedInputStream* input, + const Message* containing_type, + UnknownFieldSet* unknown_fields); + + // Parse an entire message in MessageSet format. Such messages have no + // fields, only extensions. + bool ParseMessageSet(io::CodedInputStream* input, + ExtensionFinder* extension_finder, + FieldSkipper* field_skipper); + + // Specific versions for lite or full messages (constructs the appropriate + // FieldSkipper automatically). + bool ParseMessageSet(io::CodedInputStream* input, + const MessageLite* containing_type); + bool ParseMessageSet(io::CodedInputStream* input, + const Message* containing_type, + UnknownFieldSet* unknown_fields); + + // Write all extension fields with field numbers in the range + // [start_field_number, end_field_number) + // to the output stream, using the cached sizes computed when ByteSize() was + // last called. Note that the range bounds are inclusive-exclusive. + void SerializeWithCachedSizes(int start_field_number, + int end_field_number, + io::CodedOutputStream* output) const; + + // Same as SerializeWithCachedSizes, but without any bounds checking. + // The caller must ensure that target has sufficient capacity for the + // serialized extensions. + // + // Returns a pointer past the last written byte. + uint8* SerializeWithCachedSizesToArray(int start_field_number, + int end_field_number, + uint8* target) const; + + // Like above but serializes in MessageSet format. + void SerializeMessageSetWithCachedSizes(io::CodedOutputStream* output) const; + uint8* SerializeMessageSetWithCachedSizesToArray(uint8* target) const; + + // Returns the total serialized size of all the extensions. + int ByteSize() const; + + // Like ByteSize() but uses MessageSet format. + int MessageSetByteSize() const; + + // Returns (an estimate of) the total number of bytes used for storing the + // extensions in memory, excluding sizeof(*this). If the ExtensionSet is + // for a lite message (and thus possibly contains lite messages), the results + // are undefined (might work, might crash, might corrupt data, might not even + // be linked in). It's up to the protocol compiler to avoid calling this on + // such ExtensionSets (easy enough since lite messages don't implement + // SpaceUsed()). + int SpaceUsedExcludingSelf() const; + + private: + + struct Extension { + union { + int32 int32_value; + int64 int64_value; + uint32 uint32_value; + uint64 uint64_value; + float float_value; + double double_value; + bool bool_value; + int enum_value; + string* string_value; + MessageLite* message_value; + + RepeatedField * repeated_int32_value; + RepeatedField * repeated_int64_value; + RepeatedField * repeated_uint32_value; + RepeatedField * repeated_uint64_value; + RepeatedField * repeated_float_value; + RepeatedField * repeated_double_value; + RepeatedField * repeated_bool_value; + RepeatedField * repeated_enum_value; + RepeatedPtrField* repeated_string_value; + RepeatedPtrField* repeated_message_value; + }; + + FieldType type; + bool is_repeated; + + // For singular types, indicates if the extension is "cleared". This + // happens when an extension is set and then later cleared by the caller. + // We want to keep the Extension object around for reuse, so instead of + // removing it from the map, we just set is_cleared = true. This has no + // meaning for repeated types; for those, the size of the RepeatedField + // simply becomes zero when cleared. + bool is_cleared; + + // For repeated types, this indicates if the [packed=true] option is set. + bool is_packed; + + // The descriptor for this extension, if one exists and is known. May be + // NULL. Must not be NULL if the descriptor for the extension does not + // live in the same pool as the descriptor for the containing type. + const FieldDescriptor* descriptor; + + // For packed fields, the size of the packed data is recorded here when + // ByteSize() is called then used during serialization. + // TODO(kenton): Use atomic when C++ supports it. + mutable int cached_size; + + // Some helper methods for operations on a single Extension. + void SerializeFieldWithCachedSizes( + int number, + io::CodedOutputStream* output) const; + uint8* SerializeFieldWithCachedSizesToArray( + int number, + uint8* target) const; + void SerializeMessageSetItemWithCachedSizes( + int number, + io::CodedOutputStream* output) const; + uint8* SerializeMessageSetItemWithCachedSizesToArray( + int number, + uint8* target) const; + int ByteSize(int number) const; + int MessageSetItemByteSize(int number) const; + void Clear(); + int GetSize() const; + void Free(); + int SpaceUsedExcludingSelf() const; + }; + + // Gets the extension with the given number, creating it if it does not + // already exist. Returns true if the extension did not already exist. + bool MaybeNewExtension(int number, const FieldDescriptor* descriptor, + Extension** result); + + // Parse a single MessageSet item -- called just after the item group start + // tag has been read. + bool ParseMessageSetItem(io::CodedInputStream* input, + ExtensionFinder* extension_finder, + FieldSkipper* field_skipper); + + + // Hack: RepeatedPtrFieldBase declares ExtensionSet as a friend. This + // friendship should automatically extend to ExtensionSet::Extension, but + // unfortunately some older compilers (e.g. GCC 3.4.4) do not implement this + // correctly. So, we must provide helpers for calling methods of that + // class. + + // Defined in extension_set_heavy.cc. + static inline int RepeatedMessage_SpaceUsedExcludingSelf( + RepeatedPtrFieldBase* field); + + // The Extension struct is small enough to be passed by value, so we use it + // directly as the value type in the map rather than use pointers. We use + // a map rather than hash_map here because we expect most ExtensionSets will + // only contain a small number of extensions whereas hash_map is optimized + // for 100 elements or more. Also, we want AppendToList() to order fields + // by field number. + map extensions_; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ExtensionSet); +}; + +// These are just for convenience... +inline void ExtensionSet::SetString(int number, FieldType type, + const string& value, + const FieldDescriptor* descriptor) { + MutableString(number, type, descriptor)->assign(value); +} +inline void ExtensionSet::SetRepeatedString(int number, int index, + const string& value) { + MutableRepeatedString(number, index)->assign(value); +} +inline void ExtensionSet::AddString(int number, FieldType type, + const string& value, + const FieldDescriptor* descriptor) { + AddString(number, type, descriptor)->assign(value); +} + +// =================================================================== +// Glue for generated extension accessors + +// ------------------------------------------------------------------- +// Template magic + +// First we have a set of classes representing "type traits" for different +// field types. A type traits class knows how to implement basic accessors +// for extensions of a particular type given an ExtensionSet. The signature +// for a type traits class looks like this: +// +// class TypeTraits { +// public: +// typedef ? ConstType; +// typedef ? MutableType; +// +// static inline ConstType Get(int number, const ExtensionSet& set); +// static inline void Set(int number, ConstType value, ExtensionSet* set); +// static inline MutableType Mutable(int number, ExtensionSet* set); +// +// // Variants for repeated fields. +// static inline ConstType Get(int number, const ExtensionSet& set, +// int index); +// static inline void Set(int number, int index, +// ConstType value, ExtensionSet* set); +// static inline MutableType Mutable(int number, int index, +// ExtensionSet* set); +// static inline void Add(int number, ConstType value, ExtensionSet* set); +// static inline MutableType Add(int number, ExtensionSet* set); +// }; +// +// Not all of these methods make sense for all field types. For example, the +// "Mutable" methods only make sense for strings and messages, and the +// repeated methods only make sense for repeated types. So, each type +// traits class implements only the set of methods from this signature that it +// actually supports. This will cause a compiler error if the user tries to +// access an extension using a method that doesn't make sense for its type. +// For example, if "foo" is an extension of type "optional int32", then if you +// try to write code like: +// my_message.MutableExtension(foo) +// you will get a compile error because PrimitiveTypeTraits does not +// have a "Mutable()" method. + +// ------------------------------------------------------------------- +// PrimitiveTypeTraits + +// Since the ExtensionSet has different methods for each primitive type, +// we must explicitly define the methods of the type traits class for each +// known type. +template +class PrimitiveTypeTraits { + public: + typedef Type ConstType; + + static inline ConstType Get(int number, const ExtensionSet& set, + ConstType default_value); + static inline void Set(int number, FieldType field_type, + ConstType value, ExtensionSet* set); +}; + +template +class RepeatedPrimitiveTypeTraits { + public: + typedef Type ConstType; + + static inline Type Get(int number, const ExtensionSet& set, int index); + static inline void Set(int number, int index, Type value, ExtensionSet* set); + static inline void Add(int number, FieldType field_type, + bool is_packed, Type value, ExtensionSet* set); +}; + +#define PROTOBUF_DEFINE_PRIMITIVE_TYPE(TYPE, METHOD) \ +template<> inline TYPE PrimitiveTypeTraits::Get( \ + int number, const ExtensionSet& set, TYPE default_value) { \ + return set.Get##METHOD(number, default_value); \ +} \ +template<> inline void PrimitiveTypeTraits::Set( \ + int number, FieldType field_type, TYPE value, ExtensionSet* set) { \ + set->Set##METHOD(number, field_type, value, NULL); \ +} \ + \ +template<> inline TYPE RepeatedPrimitiveTypeTraits::Get( \ + int number, const ExtensionSet& set, int index) { \ + return set.GetRepeated##METHOD(number, index); \ +} \ +template<> inline void RepeatedPrimitiveTypeTraits::Set( \ + int number, int index, TYPE value, ExtensionSet* set) { \ + set->SetRepeated##METHOD(number, index, value); \ +} \ +template<> inline void RepeatedPrimitiveTypeTraits::Add( \ + int number, FieldType field_type, bool is_packed, \ + TYPE value, ExtensionSet* set) { \ + set->Add##METHOD(number, field_type, is_packed, value, NULL); \ +} + +PROTOBUF_DEFINE_PRIMITIVE_TYPE( int32, Int32) +PROTOBUF_DEFINE_PRIMITIVE_TYPE( int64, Int64) +PROTOBUF_DEFINE_PRIMITIVE_TYPE(uint32, UInt32) +PROTOBUF_DEFINE_PRIMITIVE_TYPE(uint64, UInt64) +PROTOBUF_DEFINE_PRIMITIVE_TYPE( float, Float) +PROTOBUF_DEFINE_PRIMITIVE_TYPE(double, Double) +PROTOBUF_DEFINE_PRIMITIVE_TYPE( bool, Bool) + +#undef PROTOBUF_DEFINE_PRIMITIVE_TYPE + +// ------------------------------------------------------------------- +// StringTypeTraits + +// Strings support both Set() and Mutable(). +class LIBPROTOBUF_EXPORT StringTypeTraits { + public: + typedef const string& ConstType; + typedef string* MutableType; + + static inline const string& Get(int number, const ExtensionSet& set, + ConstType default_value) { + return set.GetString(number, default_value); + } + static inline void Set(int number, FieldType field_type, + const string& value, ExtensionSet* set) { + set->SetString(number, field_type, value, NULL); + } + static inline string* Mutable(int number, FieldType field_type, + ExtensionSet* set) { + return set->MutableString(number, field_type, NULL); + } +}; + +class LIBPROTOBUF_EXPORT RepeatedStringTypeTraits { + public: + typedef const string& ConstType; + typedef string* MutableType; + + static inline const string& Get(int number, const ExtensionSet& set, + int index) { + return set.GetRepeatedString(number, index); + } + static inline void Set(int number, int index, + const string& value, ExtensionSet* set) { + set->SetRepeatedString(number, index, value); + } + static inline string* Mutable(int number, int index, ExtensionSet* set) { + return set->MutableRepeatedString(number, index); + } + static inline void Add(int number, FieldType field_type, + bool /*is_packed*/, const string& value, + ExtensionSet* set) { + set->AddString(number, field_type, value, NULL); + } + static inline string* Add(int number, FieldType field_type, + ExtensionSet* set) { + return set->AddString(number, field_type, NULL); + } +}; + +// ------------------------------------------------------------------- +// EnumTypeTraits + +// ExtensionSet represents enums using integers internally, so we have to +// static_cast around. +template +class EnumTypeTraits { + public: + typedef Type ConstType; + + static inline ConstType Get(int number, const ExtensionSet& set, + ConstType default_value) { + return static_cast(set.GetEnum(number, default_value)); + } + static inline void Set(int number, FieldType field_type, + ConstType value, ExtensionSet* set) { + GOOGLE_DCHECK(IsValid(value)); + set->SetEnum(number, field_type, value, NULL); + } +}; + +template +class RepeatedEnumTypeTraits { + public: + typedef Type ConstType; + + static inline ConstType Get(int number, const ExtensionSet& set, int index) { + return static_cast(set.GetRepeatedEnum(number, index)); + } + static inline void Set(int number, int index, + ConstType value, ExtensionSet* set) { + GOOGLE_DCHECK(IsValid(value)); + set->SetRepeatedEnum(number, index, value); + } + static inline void Add(int number, FieldType field_type, + bool is_packed, ConstType value, ExtensionSet* set) { + GOOGLE_DCHECK(IsValid(value)); + set->AddEnum(number, field_type, is_packed, value, NULL); + } +}; + +// ------------------------------------------------------------------- +// MessageTypeTraits + +// ExtensionSet guarantees that when manipulating extensions with message +// types, the implementation used will be the compiled-in class representing +// that type. So, we can static_cast down to the exact type we expect. +template +class MessageTypeTraits { + public: + typedef const Type& ConstType; + typedef Type* MutableType; + + static inline ConstType Get(int number, const ExtensionSet& set, + ConstType default_value) { + return static_cast( + set.GetMessage(number, default_value)); + } + static inline MutableType Mutable(int number, FieldType field_type, + ExtensionSet* set) { + return static_cast( + set->MutableMessage(number, field_type, Type::default_instance(), NULL)); + } +}; + +template +class RepeatedMessageTypeTraits { + public: + typedef const Type& ConstType; + typedef Type* MutableType; + + static inline ConstType Get(int number, const ExtensionSet& set, int index) { + return static_cast(set.GetRepeatedMessage(number, index)); + } + static inline MutableType Mutable(int number, int index, ExtensionSet* set) { + return static_cast(set->MutableRepeatedMessage(number, index)); + } + static inline MutableType Add(int number, FieldType field_type, + ExtensionSet* set) { + return static_cast( + set->AddMessage(number, field_type, Type::default_instance(), NULL)); + } +}; + +// ------------------------------------------------------------------- +// ExtensionIdentifier + +// This is the type of actual extension objects. E.g. if you have: +// extends Foo with optional int32 bar = 1234; +// then "bar" will be defined in C++ as: +// ExtensionIdentifier, 1, false> bar(1234); +// +// Note that we could, in theory, supply the field number as a template +// parameter, and thus make an instance of ExtensionIdentifier have no +// actual contents. However, if we did that, then using at extension +// identifier would not necessarily cause the compiler to output any sort +// of reference to any simple defined in the extension's .pb.o file. Some +// linkers will actually drop object files that are not explicitly referenced, +// but that would be bad because it would cause this extension to not be +// registered at static initialization, and therefore using it would crash. + +template +class ExtensionIdentifier { + public: + typedef TypeTraitsType TypeTraits; + typedef ExtendeeType Extendee; + + ExtensionIdentifier(int number, typename TypeTraits::ConstType default_value) + : number_(number), default_value_(default_value) {} + inline int number() const { return number_; } + typename TypeTraits::ConstType default_value() const { + return default_value_; + } + + private: + const int number_; + typename TypeTraits::ConstType default_value_; +}; + +// ------------------------------------------------------------------- +// Generated accessors + +// This macro should be expanded in the context of a generated type which +// has extensions. +// +// We use "_proto_TypeTraits" as a type name below because "TypeTraits" +// causes problems if the class has a nested message or enum type with that +// name and "_TypeTraits" is technically reserved for the C++ library since +// it starts with an underscore followed by a capital letter. +#define GOOGLE_PROTOBUF_EXTENSION_ACCESSORS(CLASSNAME) \ + /* Has, Size, Clear */ \ + template \ + inline bool HasExtension( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, field_type, is_packed>& id) const { \ + return _extensions_.Has(id.number()); \ + } \ + \ + template \ + inline void ClearExtension( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, field_type, is_packed>& id) { \ + _extensions_.ClearExtension(id.number()); \ + } \ + \ + template \ + inline int ExtensionSize( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, field_type, is_packed>& id) const { \ + return _extensions_.ExtensionSize(id.number()); \ + } \ + \ + /* Singular accessors */ \ + template \ + inline typename _proto_TypeTraits::ConstType GetExtension( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, field_type, is_packed>& id) const { \ + return _proto_TypeTraits::Get(id.number(), _extensions_, \ + id.default_value()); \ + } \ + \ + template \ + inline typename _proto_TypeTraits::MutableType MutableExtension( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, field_type, is_packed>& id) { \ + return _proto_TypeTraits::Mutable(id.number(), field_type, &_extensions_);\ + } \ + \ + template \ + inline void SetExtension( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, field_type, is_packed>& id, \ + typename _proto_TypeTraits::ConstType value) { \ + _proto_TypeTraits::Set(id.number(), field_type, value, &_extensions_); \ + } \ + \ + /* Repeated accessors */ \ + template \ + inline typename _proto_TypeTraits::ConstType GetExtension( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, field_type, is_packed>& id, \ + int index) const { \ + return _proto_TypeTraits::Get(id.number(), _extensions_, index); \ + } \ + \ + template \ + inline typename _proto_TypeTraits::MutableType MutableExtension( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, field_type, is_packed>& id, \ + int index) { \ + return _proto_TypeTraits::Mutable(id.number(), index, &_extensions_); \ + } \ + \ + template \ + inline void SetExtension( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, field_type, is_packed>& id, \ + int index, typename _proto_TypeTraits::ConstType value) { \ + _proto_TypeTraits::Set(id.number(), index, value, &_extensions_); \ + } \ + \ + template \ + inline typename _proto_TypeTraits::MutableType AddExtension( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, field_type, is_packed>& id) { \ + return _proto_TypeTraits::Add(id.number(), field_type, &_extensions_); \ + } \ + \ + template \ + inline void AddExtension( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, field_type, is_packed>& id, \ + typename _proto_TypeTraits::ConstType value) { \ + _proto_TypeTraits::Add(id.number(), field_type, is_packed, \ + value, &_extensions_); \ + } + +} // namespace internal +} // namespace protobuf + +} // namespace google +#endif // GOOGLE_PROTOBUF_EXTENSION_SET_H__ diff --git a/3party_sloynik/protobuf/src/google/protobuf/generated_message_util.cc b/3party_sloynik/protobuf/src/google/protobuf/generated_message_util.cc new file mode 100644 index 0000000000..7ac015d079 --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/generated_message_util.cc @@ -0,0 +1,53 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. + +#include + +#include + +namespace google { +namespace protobuf { +namespace internal { + +double Infinity() { + return std::numeric_limits::infinity(); +} +double NaN() { + return std::numeric_limits::quiet_NaN(); +} + + +} // namespace internal +} // namespace protobuf +} // namespace google diff --git a/3party_sloynik/protobuf/src/google/protobuf/generated_message_util.h b/3party_sloynik/protobuf/src/google/protobuf/generated_message_util.h new file mode 100644 index 0000000000..daa16f7748 --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/generated_message_util.h @@ -0,0 +1,77 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// This file contains miscellaneous helper code used by generated code -- +// including lite types -- but which should not be used directly by users. + +#ifndef GOOGLE_PROTOBUF_GENERATED_MESSAGE_UTIL_H__ +#define GOOGLE_PROTOBUF_GENERATED_MESSAGE_UTIL_H__ + +#include + + +namespace google { +namespace protobuf { + namespace io { + class CodedInputStream; // coded_stream.h + } +} + +namespace protobuf { +namespace internal { + +// Annotation for the compiler to emit a deprecation message if a field marked +// with option 'deprecated=true' is used in the code, or for other things in +// generated code which are deprecated. +// +// For internal use in the pb.cc files, deprecation warnings are suppressed +// there. +#undef DEPRECATED_PROTOBUF_FIELD +#if !defined(INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION) +# define PROTOBUF_DEPRECATED GOOGLE_ATTRIBUTE_DEPRECATED +#else +# define PROTOBUF_DEPRECATED +#endif + + +// Constants for special floating point values. +LIBPROTOBUF_EXPORT double Infinity(); +LIBPROTOBUF_EXPORT double NaN(); + + +} // namespace internal +} // namespace protobuf + +} // namespace google +#endif // GOOGLE_PROTOBUF_GENERATED_MESSAGE_UTIL_H__ diff --git a/3party_sloynik/protobuf/src/google/protobuf/io/coded_stream.cc b/3party_sloynik/protobuf/src/google/protobuf/io/coded_stream.cc new file mode 100644 index 0000000000..220c74414a --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/io/coded_stream.cc @@ -0,0 +1,830 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// This implementation is heavily optimized to make reads and writes +// of small values (especially varints) as fast as possible. In +// particular, we optimize for the common case that a read or a write +// will not cross the end of the buffer, since we can avoid a lot +// of branching in this case. + +#include +#include +#include +#include +#include +#include + + +namespace google { +namespace protobuf { +namespace io { + +namespace { + +static const int kMaxVarintBytes = 10; +static const int kMaxVarint32Bytes = 5; + + +} // namespace + +// CodedInputStream ================================================== + + +void CodedInputStream::BackUpInputToCurrentPosition() { + int backup_bytes = BufferSize() + buffer_size_after_limit_ + overflow_bytes_; + if (backup_bytes > 0) { + input_->BackUp(backup_bytes); + + // total_bytes_read_ doesn't include overflow_bytes_. + total_bytes_read_ -= BufferSize() + buffer_size_after_limit_; + buffer_end_ = buffer_; + buffer_size_after_limit_ = 0; + overflow_bytes_ = 0; + } +} + +inline void CodedInputStream::RecomputeBufferLimits() { + buffer_end_ += buffer_size_after_limit_; + int closest_limit = min(current_limit_, total_bytes_limit_); + if (closest_limit < total_bytes_read_) { + // The limit position is in the current buffer. We must adjust + // the buffer size accordingly. + buffer_size_after_limit_ = total_bytes_read_ - closest_limit; + buffer_end_ -= buffer_size_after_limit_; + } else { + buffer_size_after_limit_ = 0; + } +} + +CodedInputStream::Limit CodedInputStream::PushLimit(int byte_limit) { + // Current position relative to the beginning of the stream. + int current_position = total_bytes_read_ - + (BufferSize() + buffer_size_after_limit_); + + Limit old_limit = current_limit_; + + // security: byte_limit is possibly evil, so check for negative values + // and overflow. + if (byte_limit >= 0 && + byte_limit <= INT_MAX - current_position) { + current_limit_ = current_position + byte_limit; + } else { + // Negative or overflow. + current_limit_ = INT_MAX; + } + + // We need to enforce all limits, not just the new one, so if the previous + // limit was before the new requested limit, we continue to enforce the + // previous limit. + current_limit_ = min(current_limit_, old_limit); + + RecomputeBufferLimits(); + return old_limit; +} + +void CodedInputStream::PopLimit(Limit limit) { + // The limit passed in is actually the *old* limit, which we returned from + // PushLimit(). + current_limit_ = limit; + RecomputeBufferLimits(); + + // We may no longer be at a legitimate message end. ReadTag() needs to be + // called again to find out. + legitimate_message_end_ = false; +} + +int CodedInputStream::BytesUntilLimit() { + if (current_limit_ == INT_MAX) return -1; + int current_position = total_bytes_read_ - + (BufferSize() + buffer_size_after_limit_); + + return current_limit_ - current_position; +} + +void CodedInputStream::SetTotalBytesLimit( + int total_bytes_limit, int warning_threshold) { + // Make sure the limit isn't already past, since this could confuse other + // code. + int current_position = total_bytes_read_ - + (BufferSize() + buffer_size_after_limit_); + total_bytes_limit_ = max(current_position, total_bytes_limit); + total_bytes_warning_threshold_ = warning_threshold; + RecomputeBufferLimits(); +} + +void CodedInputStream::PrintTotalBytesLimitError() { + GOOGLE_LOG(ERROR) << "A protocol message was rejected because it was too " + "big (more than " << total_bytes_limit_ + << " bytes). To increase the limit (or to disable these " + "warnings), see CodedInputStream::SetTotalBytesLimit() " + "in google/protobuf/io/coded_stream.h."; +} + +bool CodedInputStream::Skip(int count) { + if (count < 0) return false; // security: count is often user-supplied + + const int original_buffer_size = BufferSize(); + + if (count <= original_buffer_size) { + // Just skipping within the current buffer. Easy. + Advance(count); + return true; + } + + if (buffer_size_after_limit_ > 0) { + // We hit a limit inside this buffer. Advance to the limit and fail. + Advance(original_buffer_size); + return false; + } + + count -= original_buffer_size; + buffer_ = NULL; + buffer_end_ = buffer_; + + // Make sure this skip doesn't try to skip past the current limit. + int closest_limit = min(current_limit_, total_bytes_limit_); + int bytes_until_limit = closest_limit - total_bytes_read_; + if (bytes_until_limit < count) { + // We hit the limit. Skip up to it then fail. + if (bytes_until_limit > 0) { + total_bytes_read_ = closest_limit; + input_->Skip(bytes_until_limit); + } + return false; + } + + total_bytes_read_ += count; + return input_->Skip(count); +} + +bool CodedInputStream::GetDirectBufferPointer(const void** data, int* size) { + if (BufferSize() == 0 && !Refresh()) return false; + + *data = buffer_; + *size = BufferSize(); + return true; +} + +bool CodedInputStream::ReadRaw(void* buffer, int size) { + int current_buffer_size; + while ((current_buffer_size = BufferSize()) < size) { + // Reading past end of buffer. Copy what we have, then refresh. + memcpy(buffer, buffer_, current_buffer_size); + buffer = reinterpret_cast(buffer) + current_buffer_size; + size -= current_buffer_size; + Advance(current_buffer_size); + if (!Refresh()) return false; + } + + memcpy(buffer, buffer_, size); + Advance(size); + + return true; +} + +bool CodedInputStream::ReadString(string* buffer, int size) { + if (size < 0) return false; // security: size is often user-supplied + return InternalReadStringInline(buffer, size); +} + +bool CodedInputStream::ReadStringFallback(string* buffer, int size) { + if (!buffer->empty()) { + buffer->clear(); + } + + int current_buffer_size; + while ((current_buffer_size = BufferSize()) < size) { + // Some STL implementations "helpfully" crash on buffer->append(NULL, 0). + if (current_buffer_size != 0) { + // Note: string1.append(string2) is O(string2.size()) (as opposed to + // O(string1.size() + string2.size()), which would be bad). + buffer->append(reinterpret_cast(buffer_), + current_buffer_size); + } + size -= current_buffer_size; + Advance(current_buffer_size); + if (!Refresh()) return false; + } + + buffer->append(reinterpret_cast(buffer_), size); + Advance(size); + + return true; +} + + +bool CodedInputStream::ReadLittleEndian32Fallback(uint32* value) { + uint8 bytes[sizeof(*value)]; + + const uint8* ptr; + if (BufferSize() >= sizeof(*value)) { + // Fast path: Enough bytes in the buffer to read directly. + ptr = buffer_; + Advance(sizeof(*value)); + } else { + // Slow path: Had to read past the end of the buffer. + if (!ReadRaw(bytes, sizeof(*value))) return false; + ptr = bytes; + } + ReadLittleEndian32FromArray(ptr, value); + return true; +} + +bool CodedInputStream::ReadLittleEndian64Fallback(uint64* value) { + uint8 bytes[sizeof(*value)]; + + const uint8* ptr; + if (BufferSize() >= sizeof(*value)) { + // Fast path: Enough bytes in the buffer to read directly. + ptr = buffer_; + Advance(sizeof(*value)); + } else { + // Slow path: Had to read past the end of the buffer. + if (!ReadRaw(bytes, sizeof(*value))) return false; + ptr = bytes; + } + ReadLittleEndian64FromArray(ptr, value); + return true; +} + +namespace { + +inline const uint8* ReadVarint32FromArray( + const uint8* buffer, uint32* value) GOOGLE_ATTRIBUTE_ALWAYS_INLINE; +inline const uint8* ReadVarint32FromArray(const uint8* buffer, uint32* value) { + // Fast path: We have enough bytes left in the buffer to guarantee that + // this read won't cross the end, so we can skip the checks. + const uint8* ptr = buffer; + uint32 b; + uint32 result; + + b = *(ptr++); result = (b & 0x7F) ; if (!(b & 0x80)) goto done; + b = *(ptr++); result |= (b & 0x7F) << 7; if (!(b & 0x80)) goto done; + b = *(ptr++); result |= (b & 0x7F) << 14; if (!(b & 0x80)) goto done; + b = *(ptr++); result |= (b & 0x7F) << 21; if (!(b & 0x80)) goto done; + b = *(ptr++); result |= b << 28; if (!(b & 0x80)) goto done; + + // If the input is larger than 32 bits, we still need to read it all + // and discard the high-order bits. + for (int i = 0; i < kMaxVarintBytes - kMaxVarint32Bytes; i++) { + b = *(ptr++); if (!(b & 0x80)) goto done; + } + + // We have overrun the maximum size of a varint (10 bytes). Assume + // the data is corrupt. + return NULL; + + done: + *value = result; + return ptr; +} + +} // namespace + +bool CodedInputStream::ReadVarint32Slow(uint32* value) { + uint64 result; + // Directly invoke ReadVarint64Fallback, since we already tried to optimize + // for one-byte varints. + if (!ReadVarint64Fallback(&result)) return false; + *value = (uint32)result; + return true; +} + +bool CodedInputStream::ReadVarint32Fallback(uint32* value) { + if (BufferSize() >= kMaxVarintBytes || + // Optimization: If the varint ends at exactly the end of the buffer, + // we can detect that and still use the fast path. + (buffer_end_ > buffer_ && !(buffer_end_[-1] & 0x80))) { + const uint8* end = ReadVarint32FromArray(buffer_, value); + if (end == NULL) return false; + buffer_ = end; + return true; + } else { + // Really slow case: we will incur the cost of an extra function call here, + // but moving this out of line reduces the size of this function, which + // improves the common case. In micro benchmarks, this is worth about 10-15% + return ReadVarint32Slow(value); + } +} + +uint32 CodedInputStream::ReadTagSlow() { + if (buffer_ == buffer_end_) { + // Call refresh. + if (!Refresh()) { + // Refresh failed. Make sure that it failed due to EOF, not because + // we hit total_bytes_limit_, which, unlike normal limits, is not a + // valid place to end a message. + int current_position = total_bytes_read_ - buffer_size_after_limit_; + if (current_position >= total_bytes_limit_) { + // Hit total_bytes_limit_. But if we also hit the normal limit, + // we're still OK. + legitimate_message_end_ = current_limit_ == total_bytes_limit_; + } else { + legitimate_message_end_ = true; + } + return 0; + } + } + + // For the slow path, just do a 64-bit read. Try to optimize for one-byte tags + // again, since we have now refreshed the buffer. + uint64 result; + if (!ReadVarint64(&result)) return 0; + return static_cast(result); +} + +uint32 CodedInputStream::ReadTagFallback() { + if (BufferSize() >= kMaxVarintBytes || + // Optimization: If the varint ends at exactly the end of the buffer, + // we can detect that and still use the fast path. + (buffer_end_ > buffer_ && !(buffer_end_[-1] & 0x80))) { + uint32 tag; + const uint8* end = ReadVarint32FromArray(buffer_, &tag); + if (end == NULL) { + return 0; + } + buffer_ = end; + return tag; + } else { + // We are commonly at a limit when attempting to read tags. Try to quickly + // detect this case without making another function call. + if (buffer_ == buffer_end_ && buffer_size_after_limit_ > 0 && + // Make sure that the limit we hit is not total_bytes_limit_, since + // in that case we still need to call Refresh() so that it prints an + // error. + total_bytes_read_ - buffer_size_after_limit_ < total_bytes_limit_) { + // We hit a byte limit. + legitimate_message_end_ = true; + return 0; + } + return ReadTagSlow(); + } +} + +bool CodedInputStream::ReadVarint64Slow(uint64* value) { + // Slow path: This read might cross the end of the buffer, so we + // need to check and refresh the buffer if and when it does. + + uint64 result = 0; + int count = 0; + uint32 b; + + do { + if (count == kMaxVarintBytes) return false; + while (buffer_ == buffer_end_) { + if (!Refresh()) return false; + } + b = *buffer_; + result |= static_cast(b & 0x7F) << (7 * count); + Advance(1); + ++count; + } while (b & 0x80); + + *value = result; + return true; +} + +bool CodedInputStream::ReadVarint64Fallback(uint64* value) { + if (BufferSize() >= kMaxVarintBytes || + // Optimization: If the varint ends at exactly the end of the buffer, + // we can detect that and still use the fast path. + (buffer_end_ > buffer_ && !(buffer_end_[-1] & 0x80))) { + // Fast path: We have enough bytes left in the buffer to guarantee that + // this read won't cross the end, so we can skip the checks. + + const uint8* ptr = buffer_; + uint32 b; + + // Splitting into 32-bit pieces gives better performance on 32-bit + // processors. + uint32 part0 = 0, part1 = 0, part2 = 0; + + b = *(ptr++); part0 = (b & 0x7F) ; if (!(b & 0x80)) goto done; + b = *(ptr++); part0 |= (b & 0x7F) << 7; if (!(b & 0x80)) goto done; + b = *(ptr++); part0 |= (b & 0x7F) << 14; if (!(b & 0x80)) goto done; + b = *(ptr++); part0 |= (b & 0x7F) << 21; if (!(b & 0x80)) goto done; + b = *(ptr++); part1 = (b & 0x7F) ; if (!(b & 0x80)) goto done; + b = *(ptr++); part1 |= (b & 0x7F) << 7; if (!(b & 0x80)) goto done; + b = *(ptr++); part1 |= (b & 0x7F) << 14; if (!(b & 0x80)) goto done; + b = *(ptr++); part1 |= (b & 0x7F) << 21; if (!(b & 0x80)) goto done; + b = *(ptr++); part2 = (b & 0x7F) ; if (!(b & 0x80)) goto done; + b = *(ptr++); part2 |= (b & 0x7F) << 7; if (!(b & 0x80)) goto done; + + // We have overrun the maximum size of a varint (10 bytes). The data + // must be corrupt. + return NULL; + + done: + Advance(ptr - buffer_); + *value = (static_cast(part0) ) | + (static_cast(part1) << 28) | + (static_cast(part2) << 56); + return true; + } else { + return ReadVarint64Slow(value); + } +} + +bool CodedInputStream::Refresh() { + GOOGLE_DCHECK_EQ(0, BufferSize()); + + if (buffer_size_after_limit_ > 0 || overflow_bytes_ > 0 || + total_bytes_read_ == current_limit_) { + // We've hit a limit. Stop. + int current_position = total_bytes_read_ - buffer_size_after_limit_; + + if (current_position >= total_bytes_limit_ && + total_bytes_limit_ != current_limit_) { + // Hit total_bytes_limit_. + PrintTotalBytesLimitError(); + } + + return false; + } + + if (total_bytes_warning_threshold_ >= 0 && + total_bytes_read_ >= total_bytes_warning_threshold_) { + GOOGLE_LOG(WARNING) << "Reading dangerously large protocol message. If the " + "message turns out to be larger than " + << total_bytes_limit_ << " bytes, parsing will be halted " + "for security reasons. To increase the limit (or to " + "disable these warnings), see " + "CodedInputStream::SetTotalBytesLimit() in " + "google/protobuf/io/coded_stream.h."; + + // Don't warn again for this stream. + total_bytes_warning_threshold_ = -1; + } + + const void* void_buffer; + int buffer_size; + if (input_->Next(&void_buffer, &buffer_size)) { + buffer_ = reinterpret_cast(void_buffer); + buffer_end_ = buffer_ + buffer_size; + GOOGLE_CHECK_GE(buffer_size, 0); + + if (total_bytes_read_ <= INT_MAX - buffer_size) { + total_bytes_read_ += buffer_size; + } else { + // Overflow. Reset buffer_end_ to not include the bytes beyond INT_MAX. + // We can't get that far anyway, because total_bytes_limit_ is guaranteed + // to be less than it. We need to keep track of the number of bytes + // we discarded, though, so that we can call input_->BackUp() to back + // up over them on destruction. + + // The following line is equivalent to: + // overflow_bytes_ = total_bytes_read_ + buffer_size - INT_MAX; + // except that it avoids overflows. Signed integer overflow has + // undefined results according to the C standard. + overflow_bytes_ = total_bytes_read_ - (INT_MAX - buffer_size); + buffer_end_ -= overflow_bytes_; + total_bytes_read_ = INT_MAX; + } + + RecomputeBufferLimits(); + return true; + } else { + buffer_ = NULL; + buffer_end_ = NULL; + return false; + } +} + +// CodedOutputStream ================================================= + +CodedOutputStream::CodedOutputStream(ZeroCopyOutputStream* output) + : output_(output), + buffer_(NULL), + buffer_size_(0), + total_bytes_(0), + had_error_(false) { + // Eagerly Refresh() so buffer space is immediately available. + Refresh(); + // The Refresh() may have failed. If the client doesn't write any data, + // though, don't consider this an error. If the client does write data, then + // another Refresh() will be attempted and it will set the error once again. + had_error_ = false; +} + +CodedOutputStream::~CodedOutputStream() { + if (buffer_size_ > 0) { + output_->BackUp(buffer_size_); + } +} + +bool CodedOutputStream::Skip(int count) { + if (count < 0) return false; + + while (count > buffer_size_) { + count -= buffer_size_; + if (!Refresh()) return false; + } + + Advance(count); + return true; +} + +bool CodedOutputStream::GetDirectBufferPointer(void** data, int* size) { + if (buffer_size_ == 0 && !Refresh()) return false; + + *data = buffer_; + *size = buffer_size_; + return true; +} + +void CodedOutputStream::WriteRaw(const void* data, int size) { + while (buffer_size_ < size) { + memcpy(buffer_, data, buffer_size_); + size -= buffer_size_; + data = reinterpret_cast(data) + buffer_size_; + if (!Refresh()) return; + } + + memcpy(buffer_, data, size); + Advance(size); +} + +uint8* CodedOutputStream::WriteRawToArray( + const void* data, int size, uint8* target) { + memcpy(target, data, size); + return target + size; +} + + +void CodedOutputStream::WriteLittleEndian32(uint32 value) { + uint8 bytes[sizeof(value)]; + + bool use_fast = buffer_size_ >= sizeof(value); + uint8* ptr = use_fast ? buffer_ : bytes; + + WriteLittleEndian32ToArray(value, ptr); + + if (use_fast) { + Advance(sizeof(value)); + } else { + WriteRaw(bytes, sizeof(value)); + } +} + +void CodedOutputStream::WriteLittleEndian64(uint64 value) { + uint8 bytes[sizeof(value)]; + + bool use_fast = buffer_size_ >= sizeof(value); + uint8* ptr = use_fast ? buffer_ : bytes; + + WriteLittleEndian64ToArray(value, ptr); + + if (use_fast) { + Advance(sizeof(value)); + } else { + WriteRaw(bytes, sizeof(value)); + } +} + +inline uint8* CodedOutputStream::WriteVarint32FallbackToArrayInline( + uint32 value, uint8* target) { + target[0] = static_cast(value | 0x80); + if (value >= (1 << 7)) { + target[1] = static_cast((value >> 7) | 0x80); + if (value >= (1 << 14)) { + target[2] = static_cast((value >> 14) | 0x80); + if (value >= (1 << 21)) { + target[3] = static_cast((value >> 21) | 0x80); + if (value >= (1 << 28)) { + target[4] = static_cast(value >> 28); + return target + 5; + } else { + target[3] &= 0x7F; + return target + 4; + } + } else { + target[2] &= 0x7F; + return target + 3; + } + } else { + target[1] &= 0x7F; + return target + 2; + } + } else { + target[0] &= 0x7F; + return target + 1; + } +} + +void CodedOutputStream::WriteVarint32(uint32 value) { + if (buffer_size_ >= kMaxVarint32Bytes) { + // Fast path: We have enough bytes left in the buffer to guarantee that + // this write won't cross the end, so we can skip the checks. + uint8* target = buffer_; + uint8* end = WriteVarint32FallbackToArrayInline(value, target); + int size = end - target; + Advance(size); + } else { + // Slow path: This write might cross the end of the buffer, so we + // compose the bytes first then use WriteRaw(). + uint8 bytes[kMaxVarint32Bytes]; + int size = 0; + while (value > 0x7F) { + bytes[size++] = (static_cast(value) & 0x7F) | 0x80; + value >>= 7; + } + bytes[size++] = static_cast(value) & 0x7F; + WriteRaw(bytes, size); + } +} + +uint8* CodedOutputStream::WriteVarint32FallbackToArray( + uint32 value, uint8* target) { + return WriteVarint32FallbackToArrayInline(value, target); +} + +inline uint8* CodedOutputStream::WriteVarint64ToArrayInline( + uint64 value, uint8* target) { + // Splitting into 32-bit pieces gives better performance on 32-bit + // processors. + uint32 part0 = static_cast(value ); + uint32 part1 = static_cast(value >> 28); + uint32 part2 = static_cast(value >> 56); + + int size; + + // Here we can't really optimize for small numbers, since the value is + // split into three parts. Cheking for numbers < 128, for instance, + // would require three comparisons, since you'd have to make sure part1 + // and part2 are zero. However, if the caller is using 64-bit integers, + // it is likely that they expect the numbers to often be very large, so + // we probably don't want to optimize for small numbers anyway. Thus, + // we end up with a hardcoded binary search tree... + if (part2 == 0) { + if (part1 == 0) { + if (part0 < (1 << 14)) { + if (part0 < (1 << 7)) { + size = 1; goto size1; + } else { + size = 2; goto size2; + } + } else { + if (part0 < (1 << 21)) { + size = 3; goto size3; + } else { + size = 4; goto size4; + } + } + } else { + if (part1 < (1 << 14)) { + if (part1 < (1 << 7)) { + size = 5; goto size5; + } else { + size = 6; goto size6; + } + } else { + if (part1 < (1 << 21)) { + size = 7; goto size7; + } else { + size = 8; goto size8; + } + } + } + } else { + if (part2 < (1 << 7)) { + size = 9; goto size9; + } else { + size = 10; goto size10; + } + } + + GOOGLE_LOG(FATAL) << "Can't get here."; + + size10: target[9] = static_cast((part2 >> 7) | 0x80); + size9 : target[8] = static_cast((part2 ) | 0x80); + size8 : target[7] = static_cast((part1 >> 21) | 0x80); + size7 : target[6] = static_cast((part1 >> 14) | 0x80); + size6 : target[5] = static_cast((part1 >> 7) | 0x80); + size5 : target[4] = static_cast((part1 ) | 0x80); + size4 : target[3] = static_cast((part0 >> 21) | 0x80); + size3 : target[2] = static_cast((part0 >> 14) | 0x80); + size2 : target[1] = static_cast((part0 >> 7) | 0x80); + size1 : target[0] = static_cast((part0 ) | 0x80); + + target[size-1] &= 0x7F; + return target + size; +} + +void CodedOutputStream::WriteVarint64(uint64 value) { + if (buffer_size_ >= kMaxVarintBytes) { + // Fast path: We have enough bytes left in the buffer to guarantee that + // this write won't cross the end, so we can skip the checks. + uint8* target = buffer_; + + uint8* end = WriteVarint64ToArrayInline(value, target); + int size = end - target; + Advance(size); + } else { + // Slow path: This write might cross the end of the buffer, so we + // compose the bytes first then use WriteRaw(). + uint8 bytes[kMaxVarintBytes]; + int size = 0; + while (value > 0x7F) { + bytes[size++] = (static_cast(value) & 0x7F) | 0x80; + value >>= 7; + } + bytes[size++] = static_cast(value) & 0x7F; + WriteRaw(bytes, size); + } +} + +uint8* CodedOutputStream::WriteVarint64ToArray( + uint64 value, uint8* target) { + return WriteVarint64ToArrayInline(value, target); +} + +bool CodedOutputStream::Refresh() { + void* void_buffer; + if (output_->Next(&void_buffer, &buffer_size_)) { + buffer_ = reinterpret_cast(void_buffer); + total_bytes_ += buffer_size_; + return true; + } else { + buffer_ = NULL; + buffer_size_ = 0; + had_error_ = true; + return false; + } +} + +int CodedOutputStream::VarintSize32Fallback(uint32 value) { + if (value < (1 << 7)) { + return 1; + } else if (value < (1 << 14)) { + return 2; + } else if (value < (1 << 21)) { + return 3; + } else if (value < (1 << 28)) { + return 4; + } else { + return 5; + } +} + +int CodedOutputStream::VarintSize64(uint64 value) { + if (value < (1ull << 35)) { + if (value < (1ull << 7)) { + return 1; + } else if (value < (1ull << 14)) { + return 2; + } else if (value < (1ull << 21)) { + return 3; + } else if (value < (1ull << 28)) { + return 4; + } else { + return 5; + } + } else { + if (value < (1ull << 42)) { + return 6; + } else if (value < (1ull << 49)) { + return 7; + } else if (value < (1ull << 56)) { + return 8; + } else if (value < (1ull << 63)) { + return 9; + } else { + return 10; + } + } +} + +} // namespace io +} // namespace protobuf +} // namespace google diff --git a/3party_sloynik/protobuf/src/google/protobuf/io/coded_stream.h b/3party_sloynik/protobuf/src/google/protobuf/io/coded_stream.h new file mode 100644 index 0000000000..652a3a5520 --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/io/coded_stream.h @@ -0,0 +1,1091 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// This file contains the CodedInputStream and CodedOutputStream classes, +// which wrap a ZeroCopyInputStream or ZeroCopyOutputStream, respectively, +// and allow you to read or write individual pieces of data in various +// formats. In particular, these implement the varint encoding for +// integers, a simple variable-length encoding in which smaller numbers +// take fewer bytes. +// +// Typically these classes will only be used internally by the protocol +// buffer library in order to encode and decode protocol buffers. Clients +// of the library only need to know about this class if they wish to write +// custom message parsing or serialization procedures. +// +// CodedOutputStream example: +// // Write some data to "myfile". First we write a 4-byte "magic number" +// // to identify the file type, then write a length-delimited string. The +// // string is composed of a varint giving the length followed by the raw +// // bytes. +// int fd = open("myfile", O_WRONLY); +// ZeroCopyOutputStream* raw_output = new FileOutputStream(fd); +// CodedOutputStream* coded_output = new CodedOutputStream(raw_output); +// +// int magic_number = 1234; +// char text[] = "Hello world!"; +// coded_output->WriteLittleEndian32(magic_number); +// coded_output->WriteVarint32(strlen(text)); +// coded_output->WriteRaw(text, strlen(text)); +// +// delete coded_output; +// delete raw_output; +// close(fd); +// +// CodedInputStream example: +// // Read a file created by the above code. +// int fd = open("myfile", O_RDONLY); +// ZeroCopyInputStream* raw_input = new FileInputStream(fd); +// CodedInputStream coded_input = new CodedInputStream(raw_input); +// +// coded_input->ReadLittleEndian32(&magic_number); +// if (magic_number != 1234) { +// cerr << "File not in expected format." << endl; +// return; +// } +// +// uint32 size; +// coded_input->ReadVarint32(&size); +// +// char* text = new char[size + 1]; +// coded_input->ReadRaw(buffer, size); +// text[size] = '\0'; +// +// delete coded_input; +// delete raw_input; +// close(fd); +// +// cout << "Text is: " << text << endl; +// delete [] text; +// +// For those who are interested, varint encoding is defined as follows: +// +// The encoding operates on unsigned integers of up to 64 bits in length. +// Each byte of the encoded value has the format: +// * bits 0-6: Seven bits of the number being encoded. +// * bit 7: Zero if this is the last byte in the encoding (in which +// case all remaining bits of the number are zero) or 1 if +// more bytes follow. +// The first byte contains the least-significant 7 bits of the number, the +// second byte (if present) contains the next-least-significant 7 bits, +// and so on. So, the binary number 1011000101011 would be encoded in two +// bytes as "10101011 00101100". +// +// In theory, varint could be used to encode integers of any length. +// However, for practicality we set a limit at 64 bits. The maximum encoded +// length of a number is thus 10 bytes. + +#ifndef GOOGLE_PROTOBUF_IO_CODED_STREAM_H__ +#define GOOGLE_PROTOBUF_IO_CODED_STREAM_H__ + +#include +#include +#ifndef _MSC_VER +#include +#endif // !_MSC_VER +#include +#include // for GOOGLE_PREDICT_TRUE macro + +namespace google { + +namespace protobuf { + +class DescriptorPool; +class MessageFactory; + +namespace io { + +// Defined in this file. +class CodedInputStream; +class CodedOutputStream; + +// Defined in other files. +class ZeroCopyInputStream; // zero_copy_stream.h +class ZeroCopyOutputStream; // zero_copy_stream.h + +// Class which reads and decodes binary data which is composed of varint- +// encoded integers and fixed-width pieces. Wraps a ZeroCopyInputStream. +// Most users will not need to deal with CodedInputStream. +// +// Most methods of CodedInputStream that return a bool return false if an +// underlying I/O error occurs or if the data is malformed. Once such a +// failure occurs, the CodedInputStream is broken and is no longer useful. +class LIBPROTOBUF_EXPORT CodedInputStream { + public: + // Create a CodedInputStream that reads from the given ZeroCopyInputStream. + explicit CodedInputStream(ZeroCopyInputStream* input); + + // Create a CodedInputStream that reads from the given flat array. This is + // faster than using an ArrayInputStream. PushLimit(size) is implied by + // this constructor. + explicit CodedInputStream(const uint8* buffer, int size); + + // Destroy the CodedInputStream and position the underlying + // ZeroCopyInputStream at the first unread byte. If an error occurred while + // reading (causing a method to return false), then the exact position of + // the input stream may be anywhere between the last value that was read + // successfully and the stream's byte limit. + ~CodedInputStream(); + + + // Skips a number of bytes. Returns false if an underlying read error + // occurs. + bool Skip(int count); + + // Sets *data to point directly at the unread part of the CodedInputStream's + // underlying buffer, and *size to the size of that buffer, but does not + // advance the stream's current position. This will always either produce + // a non-empty buffer or return false. If the caller consumes any of + // this data, it should then call Skip() to skip over the consumed bytes. + // This may be useful for implementing external fast parsing routines for + // types of data not covered by the CodedInputStream interface. + bool GetDirectBufferPointer(const void** data, int* size); + + // Like GetDirectBufferPointer, but this method is inlined, and does not + // attempt to Refresh() if the buffer is currently empty. + inline void GetDirectBufferPointerInline(const void** data, + int* size) GOOGLE_ATTRIBUTE_ALWAYS_INLINE; + + // Read raw bytes, copying them into the given buffer. + bool ReadRaw(void* buffer, int size); + + // Like ReadRaw, but reads into a string. + // + // Implementation Note: ReadString() grows the string gradually as it + // reads in the data, rather than allocating the entire requested size + // upfront. This prevents denial-of-service attacks in which a client + // could claim that a string is going to be MAX_INT bytes long in order to + // crash the server because it can't allocate this much space at once. + bool ReadString(string* buffer, int size); + // Like the above, with inlined optimizations. This should only be used + // by the protobuf implementation. + inline bool InternalReadStringInline(string* buffer, + int size) GOOGLE_ATTRIBUTE_ALWAYS_INLINE; + + + // Read a 32-bit little-endian integer. + bool ReadLittleEndian32(uint32* value); + // Read a 64-bit little-endian integer. + bool ReadLittleEndian64(uint64* value); + + // These methods read from an externally provided buffer. The caller is + // responsible for ensuring that the buffer has sufficient space. + // Read a 32-bit little-endian integer. + static const uint8* ReadLittleEndian32FromArray(const uint8* buffer, + uint32* value); + // Read a 64-bit little-endian integer. + static const uint8* ReadLittleEndian64FromArray(const uint8* buffer, + uint64* value); + + // Read an unsigned integer with Varint encoding, truncating to 32 bits. + // Reading a 32-bit value is equivalent to reading a 64-bit one and casting + // it to uint32, but may be more efficient. + bool ReadVarint32(uint32* value); + // Read an unsigned integer with Varint encoding. + bool ReadVarint64(uint64* value); + + // Read a tag. This calls ReadVarint32() and returns the result, or returns + // zero (which is not a valid tag) if ReadVarint32() fails. Also, it updates + // the last tag value, which can be checked with LastTagWas(). + // Always inline because this is only called in once place per parse loop + // but it is called for every iteration of said loop, so it should be fast. + // GCC doesn't want to inline this by default. + uint32 ReadTag() GOOGLE_ATTRIBUTE_ALWAYS_INLINE; + + // Usually returns true if calling ReadVarint32() now would produce the given + // value. Will always return false if ReadVarint32() would not return the + // given value. If ExpectTag() returns true, it also advances past + // the varint. For best performance, use a compile-time constant as the + // parameter. + // Always inline because this collapses to a small number of instructions + // when given a constant parameter, but GCC doesn't want to inline by default. + bool ExpectTag(uint32 expected) GOOGLE_ATTRIBUTE_ALWAYS_INLINE; + + // Like above, except this reads from the specified buffer. The caller is + // responsible for ensuring that the buffer is large enough to read a varint + // of the expected size. For best performance, use a compile-time constant as + // the expected tag parameter. + // + // Returns a pointer beyond the expected tag if it was found, or NULL if it + // was not. + static const uint8* ExpectTagFromArray( + const uint8* buffer, + uint32 expected) GOOGLE_ATTRIBUTE_ALWAYS_INLINE; + + // Usually returns true if no more bytes can be read. Always returns false + // if more bytes can be read. If ExpectAtEnd() returns true, a subsequent + // call to LastTagWas() will act as if ReadTag() had been called and returned + // zero, and ConsumedEntireMessage() will return true. + bool ExpectAtEnd(); + + // If the last call to ReadTag() returned the given value, returns true. + // Otherwise, returns false; + // + // This is needed because parsers for some types of embedded messages + // (with field type TYPE_GROUP) don't actually know that they've reached the + // end of a message until they see an ENDGROUP tag, which was actually part + // of the enclosing message. The enclosing message would like to check that + // tag to make sure it had the right number, so it calls LastTagWas() on + // return from the embedded parser to check. + bool LastTagWas(uint32 expected); + + // When parsing message (but NOT a group), this method must be called + // immediately after MergeFromCodedStream() returns (if it returns true) + // to further verify that the message ended in a legitimate way. For + // example, this verifies that parsing did not end on an end-group tag. + // It also checks for some cases where, due to optimizations, + // MergeFromCodedStream() can incorrectly return true. + bool ConsumedEntireMessage(); + + // Limits ---------------------------------------------------------- + // Limits are used when parsing length-delimited embedded messages. + // After the message's length is read, PushLimit() is used to prevent + // the CodedInputStream from reading beyond that length. Once the + // embedded message has been parsed, PopLimit() is called to undo the + // limit. + + // Opaque type used with PushLimit() and PopLimit(). Do not modify + // values of this type yourself. The only reason that this isn't a + // struct with private internals is for efficiency. + typedef int Limit; + + // Places a limit on the number of bytes that the stream may read, + // starting from the current position. Once the stream hits this limit, + // it will act like the end of the input has been reached until PopLimit() + // is called. + // + // As the names imply, the stream conceptually has a stack of limits. The + // shortest limit on the stack is always enforced, even if it is not the + // top limit. + // + // The value returned by PushLimit() is opaque to the caller, and must + // be passed unchanged to the corresponding call to PopLimit(). + Limit PushLimit(int byte_limit); + + // Pops the last limit pushed by PushLimit(). The input must be the value + // returned by that call to PushLimit(). + void PopLimit(Limit limit); + + // Returns the number of bytes left until the nearest limit on the + // stack is hit, or -1 if no limits are in place. + int BytesUntilLimit(); + + // Total Bytes Limit ----------------------------------------------- + // To prevent malicious users from sending excessively large messages + // and causing integer overflows or memory exhaustion, CodedInputStream + // imposes a hard limit on the total number of bytes it will read. + + // Sets the maximum number of bytes that this CodedInputStream will read + // before refusing to continue. To prevent integer overflows in the + // protocol buffers implementation, as well as to prevent servers from + // allocating enormous amounts of memory to hold parsed messages, the + // maximum message length should be limited to the shortest length that + // will not harm usability. The theoretical shortest message that could + // cause integer overflows is 512MB. The default limit is 64MB. Apps + // should set shorter limits if possible. If warning_threshold is not -1, + // a warning will be printed to stderr after warning_threshold bytes are + // read. An error will always be printed to stderr if the limit is + // reached. + // + // This is unrelated to PushLimit()/PopLimit(). + // + // Hint: If you are reading this because your program is printing a + // warning about dangerously large protocol messages, you may be + // confused about what to do next. The best option is to change your + // design such that excessively large messages are not necessary. + // For example, try to design file formats to consist of many small + // messages rather than a single large one. If this is infeasible, + // you will need to increase the limit. Chances are, though, that + // your code never constructs a CodedInputStream on which the limit + // can be set. You probably parse messages by calling things like + // Message::ParseFromString(). In this case, you will need to change + // your code to instead construct some sort of ZeroCopyInputStream + // (e.g. an ArrayInputStream), construct a CodedInputStream around + // that, then call Message::ParseFromCodedStream() instead. Then + // you can adjust the limit. Yes, it's more work, but you're doing + // something unusual. + void SetTotalBytesLimit(int total_bytes_limit, int warning_threshold); + + // Recursion Limit ------------------------------------------------- + // To prevent corrupt or malicious messages from causing stack overflows, + // we must keep track of the depth of recursion when parsing embedded + // messages and groups. CodedInputStream keeps track of this because it + // is the only object that is passed down the stack during parsing. + + // Sets the maximum recursion depth. The default is 64. + void SetRecursionLimit(int limit); + + // Increments the current recursion depth. Returns true if the depth is + // under the limit, false if it has gone over. + bool IncrementRecursionDepth(); + + // Decrements the recursion depth. + void DecrementRecursionDepth(); + + // Extension Registry ---------------------------------------------- + // ADVANCED USAGE: 99.9% of people can ignore this section. + // + // By default, when parsing extensions, the parser looks for extension + // definitions in the pool which owns the outer message's Descriptor. + // However, you may call SetExtensionRegistry() to provide an alternative + // pool instead. This makes it possible, for example, to parse a message + // using a generated class, but represent some extensions using + // DynamicMessage. + + // Set the pool used to look up extensions. Most users do not need to call + // this as the correct pool will be chosen automatically. + // + // WARNING: It is very easy to misuse this. Carefully read the requirements + // below. Do not use this unless you are sure you need it. Almost no one + // does. + // + // Let's say you are parsing a message into message object m, and you want + // to take advantage of SetExtensionRegistry(). You must follow these + // requirements: + // + // The given DescriptorPool must contain m->GetDescriptor(). It is not + // sufficient for it to simply contain a descriptor that has the same name + // and content -- it must be the *exact object*. In other words: + // assert(pool->FindMessageTypeByName(m->GetDescriptor()->full_name()) == + // m->GetDescriptor()); + // There are two ways to satisfy this requirement: + // 1) Use m->GetDescriptor()->pool() as the pool. This is generally useless + // because this is the pool that would be used anyway if you didn't call + // SetExtensionRegistry() at all. + // 2) Use a DescriptorPool which has m->GetDescriptor()->pool() as an + // "underlay". Read the documentation for DescriptorPool for more + // information about underlays. + // + // You must also provide a MessageFactory. This factory will be used to + // construct Message objects representing extensions. The factory's + // GetPrototype() MUST return non-NULL for any Descriptor which can be found + // through the provided pool. + // + // If the provided factory might return instances of protocol-compiler- + // generated (i.e. compiled-in) types, or if the outer message object m is + // a generated type, then the given factory MUST have this property: If + // GetPrototype() is given a Descriptor which resides in + // DescriptorPool::generated_pool(), the factory MUST return the same + // prototype which MessageFactory::generated_factory() would return. That + // is, given a descriptor for a generated type, the factory must return an + // instance of the generated class (NOT DynamicMessage). However, when + // given a descriptor for a type that is NOT in generated_pool, the factory + // is free to return any implementation. + // + // The reason for this requirement is that generated sub-objects may be + // accessed via the standard (non-reflection) extension accessor methods, + // and these methods will down-cast the object to the generated class type. + // If the object is not actually of that type, the results would be undefined. + // On the other hand, if an extension is not compiled in, then there is no + // way the code could end up accessing it via the standard accessors -- the + // only way to access the extension is via reflection. When using reflection, + // DynamicMessage and generated messages are indistinguishable, so it's fine + // if these objects are represented using DynamicMessage. + // + // Using DynamicMessageFactory on which you have called + // SetDelegateToGeneratedFactory(true) should be sufficient to satisfy the + // above requirement. + // + // If either pool or factory is NULL, both must be NULL. + // + // Note that this feature is ignored when parsing "lite" messages as they do + // not have descriptors. + void SetExtensionRegistry(DescriptorPool* pool, MessageFactory* factory); + + // Get the DescriptorPool set via SetExtensionRegistry(), or NULL if no pool + // has been provided. + const DescriptorPool* GetExtensionPool(); + + // Get the MessageFactory set via SetExtensionRegistry(), or NULL if no + // factory has been provided. + MessageFactory* GetExtensionFactory(); + + private: + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CodedInputStream); + + ZeroCopyInputStream* input_; + const uint8* buffer_; + const uint8* buffer_end_; // pointer to the end of the buffer. + int total_bytes_read_; // total bytes read from input_, including + // the current buffer + + // If total_bytes_read_ surpasses INT_MAX, we record the extra bytes here + // so that we can BackUp() on destruction. + int overflow_bytes_; + + // LastTagWas() stuff. + uint32 last_tag_; // result of last ReadTag(). + + // This is set true by ReadTag{Fallback/Slow}() if it is called when exactly + // at EOF, or by ExpectAtEnd() when it returns true. This happens when we + // reach the end of a message and attempt to read another tag. + bool legitimate_message_end_; + + // See EnableAliasing(). + bool aliasing_enabled_; + + // Limits + Limit current_limit_; // if position = -1, no limit is applied + + // For simplicity, if the current buffer crosses a limit (either a normal + // limit created by PushLimit() or the total bytes limit), buffer_size_ + // only tracks the number of bytes before that limit. This field + // contains the number of bytes after it. Note that this implies that if + // buffer_size_ == 0 and buffer_size_after_limit_ > 0, we know we've + // hit a limit. However, if both are zero, it doesn't necessarily mean + // we aren't at a limit -- the buffer may have ended exactly at the limit. + int buffer_size_after_limit_; + + // Maximum number of bytes to read, period. This is unrelated to + // current_limit_. Set using SetTotalBytesLimit(). + int total_bytes_limit_; + int total_bytes_warning_threshold_; + + // Current recursion depth, controlled by IncrementRecursionDepth() and + // DecrementRecursionDepth(). + int recursion_depth_; + // Recursion depth limit, set by SetRecursionLimit(). + int recursion_limit_; + + // See SetExtensionRegistry(). + const DescriptorPool* extension_pool_; + MessageFactory* extension_factory_; + + // Private member functions. + + // Advance the buffer by a given number of bytes. + void Advance(int amount); + + // Back up input_ to the current buffer position. + void BackUpInputToCurrentPosition(); + + // Recomputes the value of buffer_size_after_limit_. Must be called after + // current_limit_ or total_bytes_limit_ changes. + void RecomputeBufferLimits(); + + // Writes an error message saying that we hit total_bytes_limit_. + void PrintTotalBytesLimitError(); + + // Called when the buffer runs out to request more data. Implies an + // Advance(BufferSize()). + bool Refresh(); + + // When parsing varints, we optimize for the common case of small values, and + // then optimize for the case when the varint fits within the current buffer + // piece. The Fallback method is used when we can't use the one-byte + // optimization. The Slow method is yet another fallback when the buffer is + // not large enough. Making the slow path out-of-line speeds up the common + // case by 10-15%. The slow path is fairly uncommon: it only triggers when a + // message crosses multiple buffers. + bool ReadVarint32Fallback(uint32* value); + bool ReadVarint64Fallback(uint64* value); + bool ReadVarint32Slow(uint32* value); + bool ReadVarint64Slow(uint64* value); + bool ReadLittleEndian32Fallback(uint32* value); + bool ReadLittleEndian64Fallback(uint64* value); + // Fallback/slow methods for reading tags. These do not update last_tag_, + // but will set legitimate_message_end_ if we are at the end of the input + // stream. + uint32 ReadTagFallback(); + uint32 ReadTagSlow(); + bool ReadStringFallback(string* buffer, int size); + + // Return the size of the buffer. + int BufferSize() const; + + static const int kDefaultTotalBytesLimit = 64 << 20; // 64MB + + static const int kDefaultTotalBytesWarningThreshold = 32 << 20; // 32MB + static const int kDefaultRecursionLimit = 64; +}; + +// Class which encodes and writes binary data which is composed of varint- +// encoded integers and fixed-width pieces. Wraps a ZeroCopyOutputStream. +// Most users will not need to deal with CodedOutputStream. +// +// Most methods of CodedOutputStream which return a bool return false if an +// underlying I/O error occurs. Once such a failure occurs, the +// CodedOutputStream is broken and is no longer useful. The Write* methods do +// not return the stream status, but will invalidate the stream if an error +// occurs. The client can probe HadError() to determine the status. +// +// Note that every method of CodedOutputStream which writes some data has +// a corresponding static "ToArray" version. These versions write directly +// to the provided buffer, returning a pointer past the last written byte. +// They require that the buffer has sufficient capacity for the encoded data. +// This allows an optimization where we check if an output stream has enough +// space for an entire message before we start writing and, if there is, we +// call only the ToArray methods to avoid doing bound checks for each +// individual value. +// i.e., in the example above: +// +// CodedOutputStream coded_output = new CodedOutputStream(raw_output); +// int magic_number = 1234; +// char text[] = "Hello world!"; +// +// int coded_size = sizeof(magic_number) + +// CodedOutputStream::Varint32Size(strlen(text)) + +// strlen(text); +// +// uint8* buffer = +// coded_output->GetDirectBufferForNBytesAndAdvance(coded_size); +// if (buffer != NULL) { +// // The output stream has enough space in the buffer: write directly to +// // the array. +// buffer = CodedOutputStream::WriteLittleEndian32ToArray(magic_number, +// buffer); +// buffer = CodedOutputStream::WriteVarint32ToArray(strlen(text), buffer); +// buffer = CodedOutputStream::WriteRawToArray(text, strlen(text), buffer); +// } else { +// // Make bound-checked writes, which will ask the underlying stream for +// // more space as needed. +// coded_output->WriteLittleEndian32(magic_number); +// coded_output->WriteVarint32(strlen(text)); +// coded_output->WriteRaw(text, strlen(text)); +// } +// +// delete coded_output; +class LIBPROTOBUF_EXPORT CodedOutputStream { + public: + // Create an CodedOutputStream that writes to the given ZeroCopyOutputStream. + explicit CodedOutputStream(ZeroCopyOutputStream* output); + + // Destroy the CodedOutputStream and position the underlying + // ZeroCopyOutputStream immediately after the last byte written. + ~CodedOutputStream(); + + // Skips a number of bytes, leaving the bytes unmodified in the underlying + // buffer. Returns false if an underlying write error occurs. This is + // mainly useful with GetDirectBufferPointer(). + bool Skip(int count); + + // Sets *data to point directly at the unwritten part of the + // CodedOutputStream's underlying buffer, and *size to the size of that + // buffer, but does not advance the stream's current position. This will + // always either produce a non-empty buffer or return false. If the caller + // writes any data to this buffer, it should then call Skip() to skip over + // the consumed bytes. This may be useful for implementing external fast + // serialization routines for types of data not covered by the + // CodedOutputStream interface. + bool GetDirectBufferPointer(void** data, int* size); + + // If there are at least "size" bytes available in the current buffer, + // returns a pointer directly into the buffer and advances over these bytes. + // The caller may then write directly into this buffer (e.g. using the + // *ToArray static methods) rather than go through CodedOutputStream. If + // there are not enough bytes available, returns NULL. The return pointer is + // invalidated as soon as any other non-const method of CodedOutputStream + // is called. + inline uint8* GetDirectBufferForNBytesAndAdvance(int size); + + // Write raw bytes, copying them from the given buffer. + void WriteRaw(const void* buffer, int size); + // Like WriteRaw() but writing directly to the target array. + // This is _not_ inlined, as the compiler often optimizes memcpy into inline + // copy loops. Since this gets called by every field with string or bytes + // type, inlining may lead to a significant amount of code bloat, with only a + // minor performance gain. + static uint8* WriteRawToArray(const void* buffer, int size, uint8* target); + + // Equivalent to WriteRaw(str.data(), str.size()). + void WriteString(const string& str); + // Like WriteString() but writing directly to the target array. + static uint8* WriteStringToArray(const string& str, uint8* target); + + + // Write a 32-bit little-endian integer. + void WriteLittleEndian32(uint32 value); + // Like WriteLittleEndian32() but writing directly to the target array. + static uint8* WriteLittleEndian32ToArray(uint32 value, uint8* target); + // Write a 64-bit little-endian integer. + void WriteLittleEndian64(uint64 value); + // Like WriteLittleEndian64() but writing directly to the target array. + static uint8* WriteLittleEndian64ToArray(uint64 value, uint8* target); + + // Write an unsigned integer with Varint encoding. Writing a 32-bit value + // is equivalent to casting it to uint64 and writing it as a 64-bit value, + // but may be more efficient. + void WriteVarint32(uint32 value); + // Like WriteVarint32() but writing directly to the target array. + static uint8* WriteVarint32ToArray(uint32 value, uint8* target); + // Write an unsigned integer with Varint encoding. + void WriteVarint64(uint64 value); + // Like WriteVarint64() but writing directly to the target array. + static uint8* WriteVarint64ToArray(uint64 value, uint8* target); + + // Equivalent to WriteVarint32() except when the value is negative, + // in which case it must be sign-extended to a full 10 bytes. + void WriteVarint32SignExtended(int32 value); + // Like WriteVarint32SignExtended() but writing directly to the target array. + static uint8* WriteVarint32SignExtendedToArray(int32 value, uint8* target); + + // This is identical to WriteVarint32(), but optimized for writing tags. + // In particular, if the input is a compile-time constant, this method + // compiles down to a couple instructions. + // Always inline because otherwise the aformentioned optimization can't work, + // but GCC by default doesn't want to inline this. + void WriteTag(uint32 value); + // Like WriteTag() but writing directly to the target array. + static uint8* WriteTagToArray( + uint32 value, uint8* target) GOOGLE_ATTRIBUTE_ALWAYS_INLINE; + + // Returns the number of bytes needed to encode the given value as a varint. + static int VarintSize32(uint32 value); + // Returns the number of bytes needed to encode the given value as a varint. + static int VarintSize64(uint64 value); + + // If negative, 10 bytes. Otheriwse, same as VarintSize32(). + static int VarintSize32SignExtended(int32 value); + + // Returns the total number of bytes written since this object was created. + inline int ByteCount() const; + + // Returns true if there was an underlying I/O error since this object was + // created. + bool HadError() const { return had_error_; } + + private: + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CodedOutputStream); + + ZeroCopyOutputStream* output_; + uint8* buffer_; + int buffer_size_; + int total_bytes_; // Sum of sizes of all buffers seen so far. + bool had_error_; // Whether an error occurred during output. + + // Advance the buffer by a given number of bytes. + void Advance(int amount); + + // Called when the buffer runs out to request more data. Implies an + // Advance(buffer_size_). + bool Refresh(); + + static uint8* WriteVarint32FallbackToArray(uint32 value, uint8* target); + + // Always-inlined versions of WriteVarint* functions so that code can be + // reused, while still controlling size. For instance, WriteVarint32ToArray() + // should not directly call this: since it is inlined itself, doing so + // would greatly increase the size of generated code. Instead, it should call + // WriteVarint32FallbackToArray. Meanwhile, WriteVarint32() is already + // out-of-line, so it should just invoke this directly to avoid any extra + // function call overhead. + static uint8* WriteVarint32FallbackToArrayInline( + uint32 value, uint8* target) GOOGLE_ATTRIBUTE_ALWAYS_INLINE; + static uint8* WriteVarint64ToArrayInline( + uint64 value, uint8* target) GOOGLE_ATTRIBUTE_ALWAYS_INLINE; + + static int VarintSize32Fallback(uint32 value); +}; + +// inline methods ==================================================== +// The vast majority of varints are only one byte. These inline +// methods optimize for that case. + +inline bool CodedInputStream::ReadVarint32(uint32* value) { + if (GOOGLE_PREDICT_TRUE(buffer_ < buffer_end_) && *buffer_ < 0x80) { + *value = *buffer_; + Advance(1); + return true; + } else { + return ReadVarint32Fallback(value); + } +} + +inline bool CodedInputStream::ReadVarint64(uint64* value) { + if (GOOGLE_PREDICT_TRUE(buffer_ < buffer_end_) && *buffer_ < 0x80) { + *value = *buffer_; + Advance(1); + return true; + } else { + return ReadVarint64Fallback(value); + } +} + +// static +inline const uint8* CodedInputStream::ReadLittleEndian32FromArray( + const uint8* buffer, + uint32* value) { +#if !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST) && \ + defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN + memcpy(value, buffer, sizeof(*value)); + return buffer + sizeof(*value); +#else + *value = (static_cast(buffer[0]) ) | + (static_cast(buffer[1]) << 8) | + (static_cast(buffer[2]) << 16) | + (static_cast(buffer[3]) << 24); + return buffer + sizeof(*value); +#endif +} +// static +inline const uint8* CodedInputStream::ReadLittleEndian64FromArray( + const uint8* buffer, + uint64* value) { +#if !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST) && \ + defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN + memcpy(value, buffer, sizeof(*value)); + return buffer + sizeof(*value); +#else + uint32 part0 = (static_cast(buffer[0]) ) | + (static_cast(buffer[1]) << 8) | + (static_cast(buffer[2]) << 16) | + (static_cast(buffer[3]) << 24); + uint32 part1 = (static_cast(buffer[4]) ) | + (static_cast(buffer[5]) << 8) | + (static_cast(buffer[6]) << 16) | + (static_cast(buffer[7]) << 24); + *value = static_cast(part0) | + (static_cast(part1) << 32); + return buffer + sizeof(*value); +#endif +} + +inline bool CodedInputStream::ReadLittleEndian32(uint32* value) { +#if !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST) && \ + defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN + if (GOOGLE_PREDICT_TRUE(BufferSize() >= sizeof(*value))) { + memcpy(value, buffer_, sizeof(*value)); + Advance(sizeof(*value)); + return true; + } else { + return ReadLittleEndian32Fallback(value); + } +#else + return ReadLittleEndian32Fallback(value); +#endif +} + +inline bool CodedInputStream::ReadLittleEndian64(uint64* value) { +#if !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST) && \ + defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN + if (GOOGLE_PREDICT_TRUE(BufferSize() >= sizeof(*value))) { + memcpy(value, buffer_, sizeof(*value)); + Advance(sizeof(*value)); + return true; + } else { + return ReadLittleEndian64Fallback(value); + } +#else + return ReadLittleEndian64Fallback(value); +#endif +} + +inline uint32 CodedInputStream::ReadTag() { + if (GOOGLE_PREDICT_TRUE(buffer_ < buffer_end_) && buffer_[0] < 0x80) { + last_tag_ = buffer_[0]; + Advance(1); + return last_tag_; + } else { + last_tag_ = ReadTagFallback(); + return last_tag_; + } +} + +inline bool CodedInputStream::LastTagWas(uint32 expected) { + return last_tag_ == expected; +} + +inline bool CodedInputStream::ConsumedEntireMessage() { + return legitimate_message_end_; +} + +inline bool CodedInputStream::ExpectTag(uint32 expected) { + if (expected < (1 << 7)) { + if (GOOGLE_PREDICT_TRUE(buffer_ < buffer_end_) && buffer_[0] == expected) { + Advance(1); + return true; + } else { + return false; + } + } else if (expected < (1 << 14)) { + if (GOOGLE_PREDICT_TRUE(BufferSize() >= 2) && + buffer_[0] == static_cast(expected | 0x80) && + buffer_[1] == static_cast(expected >> 7)) { + Advance(2); + return true; + } else { + return false; + } + } else { + // Don't bother optimizing for larger values. + return false; + } +} + +inline const uint8* CodedInputStream::ExpectTagFromArray( + const uint8* buffer, uint32 expected) { + if (expected < (1 << 7)) { + if (buffer[0] == expected) { + return buffer + 1; + } + } else if (expected < (1 << 14)) { + if (buffer[0] == static_cast(expected | 0x80) && + buffer[1] == static_cast(expected >> 7)) { + return buffer + 2; + } + } + return NULL; +} + +inline void CodedInputStream::GetDirectBufferPointerInline(const void** data, + int* size) { + *data = buffer_; + *size = buffer_end_ - buffer_; +} + +inline bool CodedInputStream::ExpectAtEnd() { + // If we are at a limit we know no more bytes can be read. Otherwise, it's + // hard to say without calling Refresh(), and we'd rather not do that. + + if (buffer_ == buffer_end_ && buffer_size_after_limit_ != 0) { + last_tag_ = 0; // Pretend we called ReadTag()... + legitimate_message_end_ = true; // ... and it hit EOF. + return true; + } else { + return false; + } +} + +inline uint8* CodedOutputStream::GetDirectBufferForNBytesAndAdvance(int size) { + if (buffer_size_ < size) { + return NULL; + } else { + uint8* result = buffer_; + Advance(size); + return result; + } +} + +inline uint8* CodedOutputStream::WriteVarint32ToArray(uint32 value, + uint8* target) { + if (value < 0x80) { + *target = value; + return target + 1; + } else { + return WriteVarint32FallbackToArray(value, target); + } +} + +inline void CodedOutputStream::WriteVarint32SignExtended(int32 value) { + if (value < 0) { + WriteVarint64(static_cast(value)); + } else { + WriteVarint32(static_cast(value)); + } +} + +inline uint8* CodedOutputStream::WriteVarint32SignExtendedToArray( + int32 value, uint8* target) { + if (value < 0) { + return WriteVarint64ToArray(static_cast(value), target); + } else { + return WriteVarint32ToArray(static_cast(value), target); + } +} + +inline uint8* CodedOutputStream::WriteLittleEndian32ToArray(uint32 value, + uint8* target) { +#if !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST) && \ + defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN + memcpy(target, &value, sizeof(value)); +#else + target[0] = static_cast(value); + target[1] = static_cast(value >> 8); + target[2] = static_cast(value >> 16); + target[3] = static_cast(value >> 24); +#endif + return target + sizeof(value); +} + +inline uint8* CodedOutputStream::WriteLittleEndian64ToArray(uint64 value, + uint8* target) { +#if !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST) && \ + defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN + memcpy(target, &value, sizeof(value)); +#else + uint32 part0 = static_cast(value); + uint32 part1 = static_cast(value >> 32); + + target[0] = static_cast(part0); + target[1] = static_cast(part0 >> 8); + target[2] = static_cast(part0 >> 16); + target[3] = static_cast(part0 >> 24); + target[4] = static_cast(part1); + target[5] = static_cast(part1 >> 8); + target[6] = static_cast(part1 >> 16); + target[7] = static_cast(part1 >> 24); +#endif + return target + sizeof(value); +} + +inline void CodedOutputStream::WriteTag(uint32 value) { + WriteVarint32(value); +} + +inline uint8* CodedOutputStream::WriteTagToArray( + uint32 value, uint8* target) { + if (value < (1 << 7)) { + target[0] = value; + return target + 1; + } else if (value < (1 << 14)) { + target[0] = static_cast(value | 0x80); + target[1] = static_cast(value >> 7); + return target + 2; + } else { + return WriteVarint32FallbackToArray(value, target); + } +} + +inline int CodedOutputStream::VarintSize32(uint32 value) { + if (value < (1 << 7)) { + return 1; + } else { + return VarintSize32Fallback(value); + } +} + +inline int CodedOutputStream::VarintSize32SignExtended(int32 value) { + if (value < 0) { + return 10; // TODO(kenton): Make this a symbolic constant. + } else { + return VarintSize32(static_cast(value)); + } +} + +inline void CodedOutputStream::WriteString(const string& str) { + WriteRaw(str.data(), str.size()); +} + +inline uint8* CodedOutputStream::WriteStringToArray( + const string& str, uint8* target) { + return WriteRawToArray(str.data(), str.size(), target); +} + +inline int CodedOutputStream::ByteCount() const { + return total_bytes_ - buffer_size_; +} + +inline void CodedInputStream::Advance(int amount) { + buffer_ += amount; +} + +inline void CodedOutputStream::Advance(int amount) { + buffer_ += amount; + buffer_size_ -= amount; +} + +inline void CodedInputStream::SetRecursionLimit(int limit) { + recursion_limit_ = limit; +} + +inline bool CodedInputStream::IncrementRecursionDepth() { + ++recursion_depth_; + return recursion_depth_ <= recursion_limit_; +} + +inline void CodedInputStream::DecrementRecursionDepth() { + if (recursion_depth_ > 0) --recursion_depth_; +} + +inline void CodedInputStream::SetExtensionRegistry(DescriptorPool* pool, + MessageFactory* factory) { + extension_pool_ = pool; + extension_factory_ = factory; +} + +inline const DescriptorPool* CodedInputStream::GetExtensionPool() { + return extension_pool_; +} + +inline MessageFactory* CodedInputStream::GetExtensionFactory() { + return extension_factory_; +} + +inline int CodedInputStream::BufferSize() const { + return buffer_end_ - buffer_; +} + +inline CodedInputStream::CodedInputStream(ZeroCopyInputStream* input) + : input_(input), + buffer_(NULL), + buffer_end_(NULL), + total_bytes_read_(0), + overflow_bytes_(0), + last_tag_(0), + legitimate_message_end_(false), + aliasing_enabled_(false), + current_limit_(INT_MAX), + buffer_size_after_limit_(0), + total_bytes_limit_(kDefaultTotalBytesLimit), + total_bytes_warning_threshold_(kDefaultTotalBytesWarningThreshold), + recursion_depth_(0), + recursion_limit_(kDefaultRecursionLimit), + extension_pool_(NULL), + extension_factory_(NULL) { + // Eagerly Refresh() so buffer space is immediately available. + Refresh(); +} + +inline CodedInputStream::CodedInputStream(const uint8* buffer, int size) + : input_(NULL), + buffer_(buffer), + buffer_end_(buffer + size), + total_bytes_read_(size), + overflow_bytes_(0), + last_tag_(0), + legitimate_message_end_(false), + aliasing_enabled_(false), + current_limit_(size), + buffer_size_after_limit_(0), + total_bytes_limit_(kDefaultTotalBytesLimit), + total_bytes_warning_threshold_(kDefaultTotalBytesWarningThreshold), + recursion_depth_(0), + recursion_limit_(kDefaultRecursionLimit), + extension_pool_(NULL), + extension_factory_(NULL) { + // Note that setting current_limit_ == size is important to prevent some + // code paths from trying to access input_ and segfaulting. +} + +inline CodedInputStream::~CodedInputStream() { + if (input_ != NULL) { + BackUpInputToCurrentPosition(); + } +} + +} // namespace io +} // namespace protobuf + +} // namespace google +#endif // GOOGLE_PROTOBUF_IO_CODED_STREAM_H__ diff --git a/3party_sloynik/protobuf/src/google/protobuf/io/coded_stream_inl.h b/3party_sloynik/protobuf/src/google/protobuf/io/coded_stream_inl.h new file mode 100644 index 0000000000..e9799d4772 --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/io/coded_stream_inl.h @@ -0,0 +1,64 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: jasonh@google.com (Jason Hsueh) +// +// Implements methods of coded_stream.h that need to be inlined for performance +// reasons, but should not be defined in a public header. + +#ifndef GOOGLE_PROTOBUF_IO_CODED_STREAM_INL_H__ +#define GOOGLE_PROTOBUF_IO_CODED_STREAM_INL_H__ + +#include +#include +#include + +namespace google { +namespace protobuf { +namespace io { + +inline bool CodedInputStream::InternalReadStringInline(string* buffer, + int size) { + if (size < 0) return false; // security: size is often user-supplied + + if (BufferSize() >= size) { + STLStringResizeUninitialized(buffer, size); + memcpy(string_as_array(buffer), buffer_, size); + Advance(size); + return true; + } + + return ReadStringFallback(buffer, size); +} + +} // namespace io +} // namespace protobuf +} // namespace google +#endif // GOOGLE_PROTOBUF_IO_CODED_STREAM_INL_H__ diff --git a/3party_sloynik/protobuf/src/google/protobuf/io/zero_copy_stream.cc b/3party_sloynik/protobuf/src/google/protobuf/io/zero_copy_stream.cc new file mode 100644 index 0000000000..dad6ff1446 --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/io/zero_copy_stream.cc @@ -0,0 +1,48 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. + +#include + + +namespace google { +namespace protobuf { +namespace io { + +ZeroCopyInputStream::~ZeroCopyInputStream() {} +ZeroCopyOutputStream::~ZeroCopyOutputStream() {} + + +} // namespace io +} // namespace protobuf +} // namespace google diff --git a/3party_sloynik/protobuf/src/google/protobuf/io/zero_copy_stream.h b/3party_sloynik/protobuf/src/google/protobuf/io/zero_copy_stream.h new file mode 100644 index 0000000000..db5326f703 --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/io/zero_copy_stream.h @@ -0,0 +1,238 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// This file contains the ZeroCopyInputStream and ZeroCopyOutputStream +// interfaces, which represent abstract I/O streams to and from which +// protocol buffers can be read and written. For a few simple +// implementations of these interfaces, see zero_copy_stream_impl.h. +// +// These interfaces are different from classic I/O streams in that they +// try to minimize the amount of data copying that needs to be done. +// To accomplish this, responsibility for allocating buffers is moved to +// the stream object, rather than being the responsibility of the caller. +// So, the stream can return a buffer which actually points directly into +// the final data structure where the bytes are to be stored, and the caller +// can interact directly with that buffer, eliminating an intermediate copy +// operation. +// +// As an example, consider the common case in which you are reading bytes +// from an array that is already in memory (or perhaps an mmap()ed file). +// With classic I/O streams, you would do something like: +// char buffer[BUFFER_SIZE]; +// input->Read(buffer, BUFFER_SIZE); +// DoSomething(buffer, BUFFER_SIZE); +// Then, the stream basically just calls memcpy() to copy the data from +// the array into your buffer. With a ZeroCopyInputStream, you would do +// this instead: +// const void* buffer; +// int size; +// input->Next(&buffer, &size); +// DoSomething(buffer, size); +// Here, no copy is performed. The input stream returns a pointer directly +// into the backing array, and the caller ends up reading directly from it. +// +// If you want to be able to read the old-fashion way, you can create +// a CodedInputStream or CodedOutputStream wrapping these objects and use +// their ReadRaw()/WriteRaw() methods. These will, of course, add a copy +// step, but Coded*Stream will handle buffering so at least it will be +// reasonably efficient. +// +// ZeroCopyInputStream example: +// // Read in a file and print its contents to stdout. +// int fd = open("myfile", O_RDONLY); +// ZeroCopyInputStream* input = new FileInputStream(fd); +// +// const void* buffer; +// int size; +// while (input->Next(&buffer, &size)) { +// cout.write(buffer, size); +// } +// +// delete input; +// close(fd); +// +// ZeroCopyOutputStream example: +// // Copy the contents of "infile" to "outfile", using plain read() for +// // "infile" but a ZeroCopyOutputStream for "outfile". +// int infd = open("infile", O_RDONLY); +// int outfd = open("outfile", O_WRONLY); +// ZeroCopyOutputStream* output = new FileOutputStream(outfd); +// +// void* buffer; +// int size; +// while (output->Next(&buffer, &size)) { +// int bytes = read(infd, buffer, size); +// if (bytes < size) { +// // Reached EOF. +// output->BackUp(size - bytes); +// break; +// } +// } +// +// delete output; +// close(infd); +// close(outfd); + +#ifndef GOOGLE_PROTOBUF_IO_ZERO_COPY_STREAM_H__ +#define GOOGLE_PROTOBUF_IO_ZERO_COPY_STREAM_H__ + +#include +#include + +namespace google { + +namespace protobuf { +namespace io { + +// Defined in this file. +class ZeroCopyInputStream; +class ZeroCopyOutputStream; + +// Abstract interface similar to an input stream but designed to minimize +// copying. +class LIBPROTOBUF_EXPORT ZeroCopyInputStream { + public: + inline ZeroCopyInputStream() {} + virtual ~ZeroCopyInputStream(); + + // Obtains a chunk of data from the stream. + // + // Preconditions: + // * "size" and "data" are not NULL. + // + // Postconditions: + // * If the returned value is false, there is no more data to return or + // an error occurred. All errors are permanent. + // * Otherwise, "size" points to the actual number of bytes read and "data" + // points to a pointer to a buffer containing these bytes. + // * Ownership of this buffer remains with the stream, and the buffer + // remains valid only until some other method of the stream is called + // or the stream is destroyed. + // * It is legal for the returned buffer to have zero size, as long + // as repeatedly calling Next() eventually yields a buffer with non-zero + // size. + virtual bool Next(const void** data, int* size) = 0; + + // Backs up a number of bytes, so that the next call to Next() returns + // data again that was already returned by the last call to Next(). This + // is useful when writing procedures that are only supposed to read up + // to a certain point in the input, then return. If Next() returns a + // buffer that goes beyond what you wanted to read, you can use BackUp() + // to return to the point where you intended to finish. + // + // Preconditions: + // * The last method called must have been Next(). + // * count must be less than or equal to the size of the last buffer + // returned by Next(). + // + // Postconditions: + // * The last "count" bytes of the last buffer returned by Next() will be + // pushed back into the stream. Subsequent calls to Next() will return + // the same data again before producing new data. + virtual void BackUp(int count) = 0; + + // Skips a number of bytes. Returns false if the end of the stream is + // reached or some input error occurred. In the end-of-stream case, the + // stream is advanced to the end of the stream (so ByteCount() will return + // the total size of the stream). + virtual bool Skip(int count) = 0; + + // Returns the total number of bytes read since this object was created. + virtual int64 ByteCount() const = 0; + + + private: + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ZeroCopyInputStream); +}; + +// Abstract interface similar to an output stream but designed to minimize +// copying. +class LIBPROTOBUF_EXPORT ZeroCopyOutputStream { + public: + inline ZeroCopyOutputStream() {} + virtual ~ZeroCopyOutputStream(); + + // Obtains a buffer into which data can be written. Any data written + // into this buffer will eventually (maybe instantly, maybe later on) + // be written to the output. + // + // Preconditions: + // * "size" and "data" are not NULL. + // + // Postconditions: + // * If the returned value is false, an error occurred. All errors are + // permanent. + // * Otherwise, "size" points to the actual number of bytes in the buffer + // and "data" points to the buffer. + // * Ownership of this buffer remains with the stream, and the buffer + // remains valid only until some other method of the stream is called + // or the stream is destroyed. + // * Any data which the caller stores in this buffer will eventually be + // written to the output (unless BackUp() is called). + // * It is legal for the returned buffer to have zero size, as long + // as repeatedly calling Next() eventually yields a buffer with non-zero + // size. + virtual bool Next(void** data, int* size) = 0; + + // Backs up a number of bytes, so that the end of the last buffer returned + // by Next() is not actually written. This is needed when you finish + // writing all the data you want to write, but the last buffer was bigger + // than you needed. You don't want to write a bunch of garbage after the + // end of your data, so you use BackUp() to back up. + // + // Preconditions: + // * The last method called must have been Next(). + // * count must be less than or equal to the size of the last buffer + // returned by Next(). + // * The caller must not have written anything to the last "count" bytes + // of that buffer. + // + // Postconditions: + // * The last "count" bytes of the last buffer returned by Next() will be + // ignored. + virtual void BackUp(int count) = 0; + + // Returns the total number of bytes written since this object was created. + virtual int64 ByteCount() const = 0; + + + private: + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ZeroCopyOutputStream); +}; + +} // namespace io +} // namespace protobuf + +} // namespace google +#endif // GOOGLE_PROTOBUF_IO_ZERO_COPY_STREAM_H__ diff --git a/3party_sloynik/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.cc b/3party_sloynik/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.cc new file mode 100644 index 0000000000..b82ca52458 --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.cc @@ -0,0 +1,393 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. + +#include +#include +#include + +namespace google { +namespace protobuf { +namespace io { + +namespace { + +// Default block size for Copying{In,Out}putStreamAdaptor. +static const int kDefaultBlockSize = 8192; + +} // namespace + +// =================================================================== + +ArrayInputStream::ArrayInputStream(const void* data, int size, + int block_size) + : data_(reinterpret_cast(data)), + size_(size), + block_size_(block_size > 0 ? block_size : size), + position_(0), + last_returned_size_(0) { +} + +ArrayInputStream::~ArrayInputStream() { +} + +bool ArrayInputStream::Next(const void** data, int* size) { + if (position_ < size_) { + last_returned_size_ = min(block_size_, size_ - position_); + *data = data_ + position_; + *size = last_returned_size_; + position_ += last_returned_size_; + return true; + } else { + // We're at the end of the array. + last_returned_size_ = 0; // Don't let caller back up. + return false; + } +} + +void ArrayInputStream::BackUp(int count) { + GOOGLE_CHECK_GT(last_returned_size_, 0) + << "BackUp() can only be called after a successful Next()."; + GOOGLE_CHECK_LE(count, last_returned_size_); + GOOGLE_CHECK_GE(count, 0); + position_ -= count; + last_returned_size_ = 0; // Don't let caller back up further. +} + +bool ArrayInputStream::Skip(int count) { + GOOGLE_CHECK_GE(count, 0); + last_returned_size_ = 0; // Don't let caller back up. + if (count > size_ - position_) { + position_ = size_; + return false; + } else { + position_ += count; + return true; + } +} + +int64 ArrayInputStream::ByteCount() const { + return position_; +} + + +// =================================================================== + +ArrayOutputStream::ArrayOutputStream(void* data, int size, int block_size) + : data_(reinterpret_cast(data)), + size_(size), + block_size_(block_size > 0 ? block_size : size), + position_(0), + last_returned_size_(0) { +} + +ArrayOutputStream::~ArrayOutputStream() { +} + +bool ArrayOutputStream::Next(void** data, int* size) { + if (position_ < size_) { + last_returned_size_ = min(block_size_, size_ - position_); + *data = data_ + position_; + *size = last_returned_size_; + position_ += last_returned_size_; + return true; + } else { + // We're at the end of the array. + last_returned_size_ = 0; // Don't let caller back up. + return false; + } +} + +void ArrayOutputStream::BackUp(int count) { + GOOGLE_CHECK_GT(last_returned_size_, 0) + << "BackUp() can only be called after a successful Next()."; + GOOGLE_CHECK_LE(count, last_returned_size_); + GOOGLE_CHECK_GE(count, 0); + position_ -= count; + last_returned_size_ = 0; // Don't let caller back up further. +} + +int64 ArrayOutputStream::ByteCount() const { + return position_; +} + +// =================================================================== + +StringOutputStream::StringOutputStream(string* target) + : target_(target) { +} + +StringOutputStream::~StringOutputStream() { +} + +bool StringOutputStream::Next(void** data, int* size) { + int old_size = target_->size(); + + // Grow the string. + if (old_size < target_->capacity()) { + // Resize the string to match its capacity, since we can get away + // without a memory allocation this way. + STLStringResizeUninitialized(target_, target_->capacity()); + } else { + // Size has reached capacity, so double the size. Also make sure + // that the new size is at least kMinimumSize. + STLStringResizeUninitialized( + target_, + max(old_size * 2, + kMinimumSize + 0)); // "+ 0" works around GCC4 weirdness. + } + + *data = string_as_array(target_) + old_size; + *size = target_->size() - old_size; + return true; +} + +void StringOutputStream::BackUp(int count) { + GOOGLE_CHECK_GE(count, 0); + GOOGLE_CHECK_LE(count, target_->size()); + target_->resize(target_->size() - count); +} + +int64 StringOutputStream::ByteCount() const { + return target_->size(); +} + +// =================================================================== + +CopyingInputStream::~CopyingInputStream() {} + +int CopyingInputStream::Skip(int count) { + char junk[4096]; + int skipped = 0; + while (skipped < count) { + int bytes = Read(junk, min(count - skipped, + implicit_cast(sizeof(junk)))); + if (bytes <= 0) { + // EOF or read error. + return skipped; + } + skipped += bytes; + } + return skipped; +} + +CopyingInputStreamAdaptor::CopyingInputStreamAdaptor( + CopyingInputStream* copying_stream, int block_size) + : copying_stream_(copying_stream), + owns_copying_stream_(false), + failed_(false), + position_(0), + buffer_size_(block_size > 0 ? block_size : kDefaultBlockSize), + buffer_used_(0), + backup_bytes_(0) { +} + +CopyingInputStreamAdaptor::~CopyingInputStreamAdaptor() { + if (owns_copying_stream_) { + delete copying_stream_; + } +} + +bool CopyingInputStreamAdaptor::Next(const void** data, int* size) { + if (failed_) { + // Already failed on a previous read. + return false; + } + + AllocateBufferIfNeeded(); + + if (backup_bytes_ > 0) { + // We have data left over from a previous BackUp(), so just return that. + *data = buffer_.get() + buffer_used_ - backup_bytes_; + *size = backup_bytes_; + backup_bytes_ = 0; + return true; + } + + // Read new data into the buffer. + buffer_used_ = copying_stream_->Read(buffer_.get(), buffer_size_); + if (buffer_used_ <= 0) { + // EOF or read error. We don't need the buffer anymore. + if (buffer_used_ < 0) { + // Read error (not EOF). + failed_ = true; + } + FreeBuffer(); + return false; + } + position_ += buffer_used_; + + *size = buffer_used_; + *data = buffer_.get(); + return true; +} + +void CopyingInputStreamAdaptor::BackUp(int count) { + GOOGLE_CHECK(backup_bytes_ == 0 && buffer_.get() != NULL) + << " BackUp() can only be called after Next()."; + GOOGLE_CHECK_LE(count, buffer_used_) + << " Can't back up over more bytes than were returned by the last call" + " to Next()."; + GOOGLE_CHECK_GE(count, 0) + << " Parameter to BackUp() can't be negative."; + + backup_bytes_ = count; +} + +bool CopyingInputStreamAdaptor::Skip(int count) { + GOOGLE_CHECK_GE(count, 0); + + if (failed_) { + // Already failed on a previous read. + return false; + } + + // First skip any bytes left over from a previous BackUp(). + if (backup_bytes_ >= count) { + // We have more data left over than we're trying to skip. Just chop it. + backup_bytes_ -= count; + return true; + } + + count -= backup_bytes_; + backup_bytes_ = 0; + + int skipped = copying_stream_->Skip(count); + position_ += skipped; + return skipped == count; +} + +int64 CopyingInputStreamAdaptor::ByteCount() const { + return position_ - backup_bytes_; +} + +void CopyingInputStreamAdaptor::AllocateBufferIfNeeded() { + if (buffer_.get() == NULL) { + buffer_.reset(new uint8[buffer_size_]); + } +} + +void CopyingInputStreamAdaptor::FreeBuffer() { + GOOGLE_CHECK_EQ(backup_bytes_, 0); + buffer_used_ = 0; + buffer_.reset(); +} + +// =================================================================== + +CopyingOutputStream::~CopyingOutputStream() {} + +CopyingOutputStreamAdaptor::CopyingOutputStreamAdaptor( + CopyingOutputStream* copying_stream, int block_size) + : copying_stream_(copying_stream), + owns_copying_stream_(false), + failed_(false), + position_(0), + buffer_size_(block_size > 0 ? block_size : kDefaultBlockSize), + buffer_used_(0) { +} + +CopyingOutputStreamAdaptor::~CopyingOutputStreamAdaptor() { + WriteBuffer(); + if (owns_copying_stream_) { + delete copying_stream_; + } +} + +bool CopyingOutputStreamAdaptor::Flush() { + return WriteBuffer(); +} + +bool CopyingOutputStreamAdaptor::Next(void** data, int* size) { + if (buffer_used_ == buffer_size_) { + if (!WriteBuffer()) return false; + } + + AllocateBufferIfNeeded(); + + *data = buffer_.get() + buffer_used_; + *size = buffer_size_ - buffer_used_; + buffer_used_ = buffer_size_; + return true; +} + +void CopyingOutputStreamAdaptor::BackUp(int count) { + GOOGLE_CHECK_GE(count, 0); + GOOGLE_CHECK_EQ(buffer_used_, buffer_size_) + << " BackUp() can only be called after Next()."; + GOOGLE_CHECK_LE(count, buffer_used_) + << " Can't back up over more bytes than were returned by the last call" + " to Next()."; + + buffer_used_ -= count; +} + +int64 CopyingOutputStreamAdaptor::ByteCount() const { + return position_ + buffer_used_; +} + +bool CopyingOutputStreamAdaptor::WriteBuffer() { + if (failed_) { + // Already failed on a previous write. + return false; + } + + if (buffer_used_ == 0) return true; + + if (copying_stream_->Write(buffer_.get(), buffer_used_)) { + position_ += buffer_used_; + buffer_used_ = 0; + return true; + } else { + failed_ = true; + FreeBuffer(); + return false; + } +} + +void CopyingOutputStreamAdaptor::AllocateBufferIfNeeded() { + if (buffer_ == NULL) { + buffer_.reset(new uint8[buffer_size_]); + } +} + +void CopyingOutputStreamAdaptor::FreeBuffer() { + buffer_used_ = 0; + buffer_.reset(); +} + +// =================================================================== + +} // namespace io +} // namespace protobuf +} // namespace google diff --git a/3party_sloynik/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h b/3party_sloynik/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h new file mode 100644 index 0000000000..153f543ee4 --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h @@ -0,0 +1,340 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// This file contains common implementations of the interfaces defined in +// zero_copy_stream.h which are included in the "lite" protobuf library. +// These implementations cover I/O on raw arrays and strings, as well as +// adaptors which make it easy to implement streams based on traditional +// streams. Of course, many users will probably want to write their own +// implementations of these interfaces specific to the particular I/O +// abstractions they prefer to use, but these should cover the most common +// cases. + +#ifndef GOOGLE_PROTOBUF_IO_ZERO_COPY_STREAM_IMPL_LITE_H__ +#define GOOGLE_PROTOBUF_IO_ZERO_COPY_STREAM_IMPL_LITE_H__ + +#include +#include +#include +#include + + +namespace google { +namespace protobuf { +namespace io { + +// =================================================================== + +// A ZeroCopyInputStream backed by an in-memory array of bytes. +class LIBPROTOBUF_EXPORT ArrayInputStream : public ZeroCopyInputStream { + public: + // Create an InputStream that returns the bytes pointed to by "data". + // "data" remains the property of the caller but must remain valid until + // the stream is destroyed. If a block_size is given, calls to Next() + // will return data blocks no larger than the given size. Otherwise, the + // first call to Next() returns the entire array. block_size is mainly + // useful for testing; in production you would probably never want to set + // it. + ArrayInputStream(const void* data, int size, int block_size = -1); + ~ArrayInputStream(); + + // implements ZeroCopyInputStream ---------------------------------- + bool Next(const void** data, int* size); + void BackUp(int count); + bool Skip(int count); + int64 ByteCount() const; + + + private: + const uint8* const data_; // The byte array. + const int size_; // Total size of the array. + const int block_size_; // How many bytes to return at a time. + + int position_; + int last_returned_size_; // How many bytes we returned last time Next() + // was called (used for error checking only). + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ArrayInputStream); +}; + +// =================================================================== + +// A ZeroCopyOutputStream backed by an in-memory array of bytes. +class LIBPROTOBUF_EXPORT ArrayOutputStream : public ZeroCopyOutputStream { + public: + // Create an OutputStream that writes to the bytes pointed to by "data". + // "data" remains the property of the caller but must remain valid until + // the stream is destroyed. If a block_size is given, calls to Next() + // will return data blocks no larger than the given size. Otherwise, the + // first call to Next() returns the entire array. block_size is mainly + // useful for testing; in production you would probably never want to set + // it. + ArrayOutputStream(void* data, int size, int block_size = -1); + ~ArrayOutputStream(); + + // implements ZeroCopyOutputStream --------------------------------- + bool Next(void** data, int* size); + void BackUp(int count); + int64 ByteCount() const; + + private: + uint8* const data_; // The byte array. + const int size_; // Total size of the array. + const int block_size_; // How many bytes to return at a time. + + int position_; + int last_returned_size_; // How many bytes we returned last time Next() + // was called (used for error checking only). + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ArrayOutputStream); +}; + +// =================================================================== + +// A ZeroCopyOutputStream which appends bytes to a string. +class LIBPROTOBUF_EXPORT StringOutputStream : public ZeroCopyOutputStream { + public: + // Create a StringOutputStream which appends bytes to the given string. + // The string remains property of the caller, but it MUST NOT be accessed + // in any way until the stream is destroyed. + // + // Hint: If you call target->reserve(n) before creating the stream, + // the first call to Next() will return at least n bytes of buffer + // space. + explicit StringOutputStream(string* target); + ~StringOutputStream(); + + // implements ZeroCopyOutputStream --------------------------------- + bool Next(void** data, int* size); + void BackUp(int count); + int64 ByteCount() const; + + private: + static const int kMinimumSize = 16; + + string* target_; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(StringOutputStream); +}; + +// Note: There is no StringInputStream. Instead, just create an +// ArrayInputStream as follows: +// ArrayInputStream input(str.data(), str.size()); + +// =================================================================== + +// A generic traditional input stream interface. +// +// Lots of traditional input streams (e.g. file descriptors, C stdio +// streams, and C++ iostreams) expose an interface where every read +// involves copying bytes into a buffer. If you want to take such an +// interface and make a ZeroCopyInputStream based on it, simply implement +// CopyingInputStream and then use CopyingInputStreamAdaptor. +// +// CopyingInputStream implementations should avoid buffering if possible. +// CopyingInputStreamAdaptor does its own buffering and will read data +// in large blocks. +class LIBPROTOBUF_EXPORT CopyingInputStream { + public: + virtual ~CopyingInputStream(); + + // Reads up to "size" bytes into the given buffer. Returns the number of + // bytes read. Read() waits until at least one byte is available, or + // returns zero if no bytes will ever become available (EOF), or -1 if a + // permanent read error occurred. + virtual int Read(void* buffer, int size) = 0; + + // Skips the next "count" bytes of input. Returns the number of bytes + // actually skipped. This will always be exactly equal to "count" unless + // EOF was reached or a permanent read error occurred. + // + // The default implementation just repeatedly calls Read() into a scratch + // buffer. + virtual int Skip(int count); +}; + +// A ZeroCopyInputStream which reads from a CopyingInputStream. This is +// useful for implementing ZeroCopyInputStreams that read from traditional +// streams. Note that this class is not really zero-copy. +// +// If you want to read from file descriptors or C++ istreams, this is +// already implemented for you: use FileInputStream or IstreamInputStream +// respectively. +class LIBPROTOBUF_EXPORT CopyingInputStreamAdaptor : public ZeroCopyInputStream { + public: + // Creates a stream that reads from the given CopyingInputStream. + // If a block_size is given, it specifies the number of bytes that + // should be read and returned with each call to Next(). Otherwise, + // a reasonable default is used. The caller retains ownership of + // copying_stream unless SetOwnsCopyingStream(true) is called. + explicit CopyingInputStreamAdaptor(CopyingInputStream* copying_stream, + int block_size = -1); + ~CopyingInputStreamAdaptor(); + + // Call SetOwnsCopyingStream(true) to tell the CopyingInputStreamAdaptor to + // delete the underlying CopyingInputStream when it is destroyed. + void SetOwnsCopyingStream(bool value) { owns_copying_stream_ = value; } + + // implements ZeroCopyInputStream ---------------------------------- + bool Next(const void** data, int* size); + void BackUp(int count); + bool Skip(int count); + int64 ByteCount() const; + + private: + // Insures that buffer_ is not NULL. + void AllocateBufferIfNeeded(); + // Frees the buffer and resets buffer_used_. + void FreeBuffer(); + + // The underlying copying stream. + CopyingInputStream* copying_stream_; + bool owns_copying_stream_; + + // True if we have seen a permenant error from the underlying stream. + bool failed_; + + // The current position of copying_stream_, relative to the point where + // we started reading. + int64 position_; + + // Data is read into this buffer. It may be NULL if no buffer is currently + // in use. Otherwise, it points to an array of size buffer_size_. + scoped_array buffer_; + const int buffer_size_; + + // Number of valid bytes currently in the buffer (i.e. the size last + // returned by Next()). 0 <= buffer_used_ <= buffer_size_. + int buffer_used_; + + // Number of bytes in the buffer which were backed up over by a call to + // BackUp(). These need to be returned again. + // 0 <= backup_bytes_ <= buffer_used_ + int backup_bytes_; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CopyingInputStreamAdaptor); +}; + +// =================================================================== + +// A generic traditional output stream interface. +// +// Lots of traditional output streams (e.g. file descriptors, C stdio +// streams, and C++ iostreams) expose an interface where every write +// involves copying bytes from a buffer. If you want to take such an +// interface and make a ZeroCopyOutputStream based on it, simply implement +// CopyingOutputStream and then use CopyingOutputStreamAdaptor. +// +// CopyingOutputStream implementations should avoid buffering if possible. +// CopyingOutputStreamAdaptor does its own buffering and will write data +// in large blocks. +class LIBPROTOBUF_EXPORT CopyingOutputStream { + public: + virtual ~CopyingOutputStream(); + + // Writes "size" bytes from the given buffer to the output. Returns true + // if successful, false on a write error. + virtual bool Write(const void* buffer, int size) = 0; +}; + +// A ZeroCopyOutputStream which writes to a CopyingOutputStream. This is +// useful for implementing ZeroCopyOutputStreams that write to traditional +// streams. Note that this class is not really zero-copy. +// +// If you want to write to file descriptors or C++ ostreams, this is +// already implemented for you: use FileOutputStream or OstreamOutputStream +// respectively. +class LIBPROTOBUF_EXPORT CopyingOutputStreamAdaptor : public ZeroCopyOutputStream { + public: + // Creates a stream that writes to the given Unix file descriptor. + // If a block_size is given, it specifies the size of the buffers + // that should be returned by Next(). Otherwise, a reasonable default + // is used. + explicit CopyingOutputStreamAdaptor(CopyingOutputStream* copying_stream, + int block_size = -1); + ~CopyingOutputStreamAdaptor(); + + // Writes all pending data to the underlying stream. Returns false if a + // write error occurred on the underlying stream. (The underlying + // stream itself is not necessarily flushed.) + bool Flush(); + + // Call SetOwnsCopyingStream(true) to tell the CopyingOutputStreamAdaptor to + // delete the underlying CopyingOutputStream when it is destroyed. + void SetOwnsCopyingStream(bool value) { owns_copying_stream_ = value; } + + // implements ZeroCopyOutputStream --------------------------------- + bool Next(void** data, int* size); + void BackUp(int count); + int64 ByteCount() const; + + private: + // Write the current buffer, if it is present. + bool WriteBuffer(); + // Insures that buffer_ is not NULL. + void AllocateBufferIfNeeded(); + // Frees the buffer. + void FreeBuffer(); + + // The underlying copying stream. + CopyingOutputStream* copying_stream_; + bool owns_copying_stream_; + + // True if we have seen a permenant error from the underlying stream. + bool failed_; + + // The current position of copying_stream_, relative to the point where + // we started writing. + int64 position_; + + // Data is written from this buffer. It may be NULL if no buffer is + // currently in use. Otherwise, it points to an array of size buffer_size_. + scoped_array buffer_; + const int buffer_size_; + + // Number of valid bytes currently in the buffer (i.e. the size last + // returned by Next()). When BackUp() is called, we just reduce this. + // 0 <= buffer_used_ <= buffer_size_. + int buffer_used_; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CopyingOutputStreamAdaptor); +}; + +// =================================================================== + +} // namespace io +} // namespace protobuf + +} // namespace google +#endif // GOOGLE_PROTOBUF_IO_ZERO_COPY_STREAM_IMPL_LITE_H__ diff --git a/3party_sloynik/protobuf/src/google/protobuf/message_lite.cc b/3party_sloynik/protobuf/src/google/protobuf/message_lite.cc new file mode 100644 index 0000000000..e2e7b407af --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/message_lite.cc @@ -0,0 +1,334 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Authors: wink@google.com (Wink Saville), +// kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. + +#include +#include +#include +#include +#include +#include + +namespace google { +namespace protobuf { + +MessageLite::~MessageLite() {} + +string MessageLite::InitializationErrorString() const { + return "(cannot determine missing fields for lite message)"; +} + +namespace { + +// When serializing, we first compute the byte size, then serialize the message. +// If serialization produces a different number of bytes than expected, we +// call this function, which crashes. The problem could be due to a bug in the +// protobuf implementation but is more likely caused by concurrent modification +// of the message. This function attempts to distinguish between the two and +// provide a useful error message. +void ByteSizeConsistencyError(int byte_size_before_serialization, + int byte_size_after_serialization, + int bytes_produced_by_serialization) { + GOOGLE_CHECK_EQ(byte_size_before_serialization, byte_size_after_serialization) + << "Protocol message was modified concurrently during serialization."; + GOOGLE_CHECK_EQ(bytes_produced_by_serialization, byte_size_before_serialization) + << "Byte size calculation and serialization were inconsistent. This " + "may indicate a bug in protocol buffers or it may be caused by " + "concurrent modification of the message."; + GOOGLE_LOG(FATAL) << "This shouldn't be called if all the sizes are equal."; +} + +string InitializationErrorMessage(const char* action, + const MessageLite& message) { + // Note: We want to avoid depending on strutil in the lite library, otherwise + // we'd use: + // + // return strings::Substitute( + // "Can't $0 message of type \"$1\" because it is missing required " + // "fields: $2", + // action, message.GetTypeName(), + // message.InitializationErrorString()); + + string result; + result += "Can't "; + result += action; + result += " message of type \""; + result += message.GetTypeName(); + result += "\" because it is missing required fields: "; + result += message.InitializationErrorString(); + return result; +} + +// Several of the Parse methods below just do one thing and then call another +// method. In a naive implementation, we might have ParseFromString() call +// ParseFromArray() which would call ParseFromZeroCopyStream() which would call +// ParseFromCodedStream() which would call MergeFromCodedStream() which would +// call MergePartialFromCodedStream(). However, when parsing very small +// messages, every function call introduces significant overhead. To avoid +// this without reproducing code, we use these forced-inline helpers. +// +// Note: GCC only allows GOOGLE_ATTRIBUTE_ALWAYS_INLINE on declarations, not +// definitions. +inline bool InlineMergeFromCodedStream(io::CodedInputStream* input, + MessageLite* message) + GOOGLE_ATTRIBUTE_ALWAYS_INLINE; +inline bool InlineParseFromCodedStream(io::CodedInputStream* input, + MessageLite* message) + GOOGLE_ATTRIBUTE_ALWAYS_INLINE; +inline bool InlineParsePartialFromCodedStream(io::CodedInputStream* input, + MessageLite* message) + GOOGLE_ATTRIBUTE_ALWAYS_INLINE; +inline bool InlineParseFromArray(const void* data, int size, + MessageLite* message) + GOOGLE_ATTRIBUTE_ALWAYS_INLINE; +inline bool InlineParsePartialFromArray(const void* data, int size, + MessageLite* message) + GOOGLE_ATTRIBUTE_ALWAYS_INLINE; + +bool InlineMergeFromCodedStream(io::CodedInputStream* input, + MessageLite* message) { + if (!message->MergePartialFromCodedStream(input)) return false; + if (!message->IsInitialized()) { + GOOGLE_LOG(ERROR) << InitializationErrorMessage("parse", *message); + return false; + } + return true; +} + +bool InlineParseFromCodedStream(io::CodedInputStream* input, + MessageLite* message) { + message->Clear(); + return InlineMergeFromCodedStream(input, message); +} + +bool InlineParsePartialFromCodedStream(io::CodedInputStream* input, + MessageLite* message) { + message->Clear(); + return message->MergePartialFromCodedStream(input); +} + +bool InlineParseFromArray(const void* data, int size, MessageLite* message) { + io::CodedInputStream input(reinterpret_cast(data), size); + return InlineParseFromCodedStream(&input, message) && + input.ConsumedEntireMessage(); +} + +bool InlineParsePartialFromArray(const void* data, int size, + MessageLite* message) { + io::CodedInputStream input(reinterpret_cast(data), size); + return InlineParsePartialFromCodedStream(&input, message) && + input.ConsumedEntireMessage(); +} + +} // namespace + +bool MessageLite::MergeFromCodedStream(io::CodedInputStream* input) { + return InlineMergeFromCodedStream(input, this); +} + +bool MessageLite::ParseFromCodedStream(io::CodedInputStream* input) { + return InlineParseFromCodedStream(input, this); +} + +bool MessageLite::ParsePartialFromCodedStream(io::CodedInputStream* input) { + return InlineParsePartialFromCodedStream(input, this); +} + +bool MessageLite::ParseFromZeroCopyStream(io::ZeroCopyInputStream* input) { + io::CodedInputStream decoder(input); + return ParseFromCodedStream(&decoder) && decoder.ConsumedEntireMessage(); +} + +bool MessageLite::ParsePartialFromZeroCopyStream( + io::ZeroCopyInputStream* input) { + io::CodedInputStream decoder(input); + return ParsePartialFromCodedStream(&decoder) && + decoder.ConsumedEntireMessage(); +} + +bool MessageLite::ParseFromBoundedZeroCopyStream( + io::ZeroCopyInputStream* input, int size) { + io::CodedInputStream decoder(input); + decoder.PushLimit(size); + return ParseFromCodedStream(&decoder) && + decoder.ConsumedEntireMessage() && + decoder.BytesUntilLimit() == 0; +} + +bool MessageLite::ParsePartialFromBoundedZeroCopyStream( + io::ZeroCopyInputStream* input, int size) { + io::CodedInputStream decoder(input); + decoder.PushLimit(size); + return ParsePartialFromCodedStream(&decoder) && + decoder.ConsumedEntireMessage() && + decoder.BytesUntilLimit() == 0; +} + +bool MessageLite::ParseFromString(const string& data) { + return InlineParseFromArray(data.data(), data.size(), this); +} + +bool MessageLite::ParsePartialFromString(const string& data) { + return InlineParsePartialFromArray(data.data(), data.size(), this); +} + +bool MessageLite::ParseFromArray(const void* data, int size) { + return InlineParseFromArray(data, size, this); +} + +bool MessageLite::ParsePartialFromArray(const void* data, int size) { + return InlineParsePartialFromArray(data, size, this); +} + + +// =================================================================== + +uint8* MessageLite::SerializeWithCachedSizesToArray(uint8* target) const { + // We only optimize this when using optimize_for = SPEED. In other cases + // we just use the CodedOutputStream path. + int size = GetCachedSize(); + io::ArrayOutputStream out(target, size); + io::CodedOutputStream coded_out(&out); + SerializeWithCachedSizes(&coded_out); + GOOGLE_CHECK(!coded_out.HadError()); + return target + size; +} + +bool MessageLite::SerializeToCodedStream(io::CodedOutputStream* output) const { + GOOGLE_DCHECK(IsInitialized()) << InitializationErrorMessage("serialize", *this); + return SerializePartialToCodedStream(output); +} + +bool MessageLite::SerializePartialToCodedStream( + io::CodedOutputStream* output) const { + const int size = ByteSize(); // Force size to be cached. + uint8* buffer = output->GetDirectBufferForNBytesAndAdvance(size); + if (buffer != NULL) { + uint8* end = SerializeWithCachedSizesToArray(buffer); + if (end - buffer != size) { + ByteSizeConsistencyError(size, ByteSize(), end - buffer); + } + return true; + } else { + int original_byte_count = output->ByteCount(); + SerializeWithCachedSizes(output); + if (output->HadError()) { + return false; + } + int final_byte_count = output->ByteCount(); + + if (final_byte_count - original_byte_count != size) { + ByteSizeConsistencyError(size, ByteSize(), + final_byte_count - original_byte_count); + } + + return true; + } +} + +bool MessageLite::SerializeToZeroCopyStream( + io::ZeroCopyOutputStream* output) const { + io::CodedOutputStream encoder(output); + return SerializeToCodedStream(&encoder); +} + +bool MessageLite::SerializePartialToZeroCopyStream( + io::ZeroCopyOutputStream* output) const { + io::CodedOutputStream encoder(output); + return SerializePartialToCodedStream(&encoder); +} + +bool MessageLite::AppendToString(string* output) const { + GOOGLE_DCHECK(IsInitialized()) << InitializationErrorMessage("serialize", *this); + return AppendPartialToString(output); +} + +bool MessageLite::AppendPartialToString(string* output) const { + int old_size = output->size(); + int byte_size = ByteSize(); + STLStringResizeUninitialized(output, old_size + byte_size); + uint8* start = reinterpret_cast(string_as_array(output) + old_size); + uint8* end = SerializeWithCachedSizesToArray(start); + if (end - start != byte_size) { + ByteSizeConsistencyError(byte_size, ByteSize(), end - start); + } + return true; +} + +bool MessageLite::SerializeToString(string* output) const { + output->clear(); + return AppendToString(output); +} + +bool MessageLite::SerializePartialToString(string* output) const { + output->clear(); + return AppendPartialToString(output); +} + +bool MessageLite::SerializeToArray(void* data, int size) const { + GOOGLE_DCHECK(IsInitialized()) << InitializationErrorMessage("serialize", *this); + return SerializePartialToArray(data, size); +} + +bool MessageLite::SerializePartialToArray(void* data, int size) const { + int byte_size = ByteSize(); + if (size < byte_size) return false; + uint8* start = reinterpret_cast(data); + uint8* end = SerializeWithCachedSizesToArray(start); + if (end - start != byte_size) { + ByteSizeConsistencyError(byte_size, ByteSize(), end - start); + } + return true; +} + +string MessageLite::SerializeAsString() const { + // If the compiler implements the (Named) Return Value Optimization, + // the local variable 'result' will not actually reside on the stack + // of this function, but will be overlaid with the object that the + // caller supplied for the return value to be constructed in. + string output; + if (!AppendToString(&output)) + output.clear(); + return output; +} + +string MessageLite::SerializePartialAsString() const { + string output; + if (!AppendPartialToString(&output)) + output.clear(); + return output; +} + +} // namespace protobuf +} // namespace google diff --git a/3party_sloynik/protobuf/src/google/protobuf/message_lite.h b/3party_sloynik/protobuf/src/google/protobuf/message_lite.h new file mode 100644 index 0000000000..ebf4ba3c88 --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/message_lite.h @@ -0,0 +1,239 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Authors: wink@google.com (Wink Saville), +// kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// Defines MessageLite, the abstract interface implemented by all (lite +// and non-lite) protocol message objects. + +#ifndef GOOGLE_PROTOBUF_MESSAGE_LITE_H__ +#define GOOGLE_PROTOBUF_MESSAGE_LITE_H__ + +#include +#include + +namespace google { +namespace protobuf { + +// Interface to light weight protocol messages. +// +// This interface is implemented by all protocol message objects. Non-lite +// messages additionally implement the Message interface, which is a +// subclass of MessageLite. Use MessageLite instead when you only need +// the subset of features which it supports -- namely, nothing that uses +// descriptors or reflection. You can instruct the protocol compiler +// to generate classes which implement only MessageLite, not the full +// Message interface, by adding the following line to the .proto file: +// +// option optimize_for = LITE_RUNTIME; +// +// This is particularly useful on resource-constrained systems where +// the full protocol buffers runtime library is too big. +// +// Note that on non-constrained systems (e.g. servers) when you need +// to link in lots of protocol definitions, a better way to reduce +// total code footprint is to use optimize_for = CODE_SIZE. This +// will make the generated code smaller while still supporting all the +// same features (at the expense of speed). optimize_for = LITE_RUNTIME +// is best when you only have a small number of message types linked +// into your binary, in which case the size of the protocol buffers +// runtime itself is the biggest problem. +class LIBPROTOBUF_EXPORT MessageLite { + public: + inline MessageLite() {} + virtual ~MessageLite(); + + // Basic Operations ------------------------------------------------ + + // Get the name of this message type, e.g. "foo.bar.BazProto". + virtual string GetTypeName() const = 0; + + // Construct a new instance of the same type. Ownership is passed to the + // caller. + virtual MessageLite* New() const = 0; + + // Clear all fields of the message and set them to their default values. + // Clear() avoids freeing memory, assuming that any memory allocated + // to hold parts of the message will be needed again to hold the next + // message. If you actually want to free the memory used by a Message, + // you must delete it. + virtual void Clear() = 0; + + // Quickly check if all required fields have values set. + virtual bool IsInitialized() const = 0; + + // This is not implemented for Lite messages -- it just returns "(cannot + // determine missing fields for lite message)". However, it is implemented + // for full messages. See message.h. + virtual string InitializationErrorString() const; + + // If |other| is the exact same class as this, calls MergeFrom(). Otherwise, + // results are undefined (probably crash). + virtual void CheckTypeAndMergeFrom(const MessageLite& other) = 0; + + // Parsing --------------------------------------------------------- + // Methods for parsing in protocol buffer format. Most of these are + // just simple wrappers around MergeFromCodedStream(). + + // Fill the message with a protocol buffer parsed from the given input + // stream. Returns false on a read error or if the input is in the + // wrong format. + bool ParseFromCodedStream(io::CodedInputStream* input); + // Like ParseFromCodedStream(), but accepts messages that are missing + // required fields. + bool ParsePartialFromCodedStream(io::CodedInputStream* input); + // Read a protocol buffer from the given zero-copy input stream. If + // successful, the entire input will be consumed. + bool ParseFromZeroCopyStream(io::ZeroCopyInputStream* input); + // Like ParseFromZeroCopyStream(), but accepts messages that are missing + // required fields. + bool ParsePartialFromZeroCopyStream(io::ZeroCopyInputStream* input); + // Read a protocol buffer from the given zero-copy input stream, expecting + // the message to be exactly "size" bytes long. If successful, exactly + // this many bytes will have been consumed from the input. + bool ParseFromBoundedZeroCopyStream(io::ZeroCopyInputStream* input, int size); + // Like ParseFromBoundedZeroCopyStream(), but accepts messages that are + // missing required fields. + bool ParsePartialFromBoundedZeroCopyStream(io::ZeroCopyInputStream* input, + int size); + // Parse a protocol buffer contained in a string. + bool ParseFromString(const string& data); + // Like ParseFromString(), but accepts messages that are missing + // required fields. + bool ParsePartialFromString(const string& data); + // Parse a protocol buffer contained in an array of bytes. + bool ParseFromArray(const void* data, int size); + // Like ParseFromArray(), but accepts messages that are missing + // required fields. + bool ParsePartialFromArray(const void* data, int size); + + + // Reads a protocol buffer from the stream and merges it into this + // Message. Singular fields read from the input overwrite what is + // already in the Message and repeated fields are appended to those + // already present. + // + // It is the responsibility of the caller to call input->LastTagWas() + // (for groups) or input->ConsumedEntireMessage() (for non-groups) after + // this returns to verify that the message's end was delimited correctly. + // + // ParsefromCodedStream() is implemented as Clear() followed by + // MergeFromCodedStream(). + bool MergeFromCodedStream(io::CodedInputStream* input); + + // Like MergeFromCodedStream(), but succeeds even if required fields are + // missing in the input. + // + // MergeFromCodedStream() is just implemented as MergePartialFromCodedStream() + // followed by IsInitialized(). + virtual bool MergePartialFromCodedStream(io::CodedInputStream* input) = 0; + + // Serialization --------------------------------------------------- + // Methods for serializing in protocol buffer format. Most of these + // are just simple wrappers around ByteSize() and SerializeWithCachedSizes(). + + // Write a protocol buffer of this message to the given output. Returns + // false on a write error. If the message is missing required fields, + // this may GOOGLE_CHECK-fail. + bool SerializeToCodedStream(io::CodedOutputStream* output) const; + // Like SerializeToCodedStream(), but allows missing required fields. + bool SerializePartialToCodedStream(io::CodedOutputStream* output) const; + // Write the message to the given zero-copy output stream. All required + // fields must be set. + bool SerializeToZeroCopyStream(io::ZeroCopyOutputStream* output) const; + // Like SerializeToZeroCopyStream(), but allows missing required fields. + bool SerializePartialToZeroCopyStream(io::ZeroCopyOutputStream* output) const; + // Serialize the message and store it in the given string. All required + // fields must be set. + bool SerializeToString(string* output) const; + // Like SerializeToString(), but allows missing required fields. + bool SerializePartialToString(string* output) const; + // Serialize the message and store it in the given byte array. All required + // fields must be set. + bool SerializeToArray(void* data, int size) const; + // Like SerializeToArray(), but allows missing required fields. + bool SerializePartialToArray(void* data, int size) const; + + // Make a string encoding the message. Is equivalent to calling + // SerializeToString() on a string and using that. Returns the empty + // string if SerializeToString() would have returned an error. + // Note: If you intend to generate many such strings, you may + // reduce heap fragmentation by instead re-using the same string + // object with calls to SerializeToString(). + string SerializeAsString() const; + // Like SerializeAsString(), but allows missing required fields. + string SerializePartialAsString() const; + + // Like SerializeToString(), but appends to the data to the string's existing + // contents. All required fields must be set. + bool AppendToString(string* output) const; + // Like AppendToString(), but allows missing required fields. + bool AppendPartialToString(string* output) const; + + // Computes the serialized size of the message. This recursively calls + // ByteSize() on all embedded messages. If a subclass does not override + // this, it MUST override SetCachedSize(). + virtual int ByteSize() const = 0; + + // Serializes the message without recomputing the size. The message must + // not have changed since the last call to ByteSize(); if it has, the results + // are undefined. + virtual void SerializeWithCachedSizes( + io::CodedOutputStream* output) const = 0; + + // Like SerializeWithCachedSizes, but writes directly to *target, returning + // a pointer to the byte immediately after the last byte written. "target" + // must point at a byte array of at least ByteSize() bytes. + virtual uint8* SerializeWithCachedSizesToArray(uint8* target) const; + + // Returns the result of the last call to ByteSize(). An embedded message's + // size is needed both to serialize it (because embedded messages are + // length-delimited) and to compute the outer message's size. Caching + // the size avoids computing it multiple times. + // + // ByteSize() does not automatically use the cached size when available + // because this would require invalidating it every time the message was + // modified, which would be too hard and expensive. (E.g. if a deeply-nested + // sub-message is changed, all of its parents' cached sizes would need to be + // invalidated, which is too much work for an otherwise inlined setter + // method.) + virtual int GetCachedSize() const = 0; + + private: + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MessageLite); +}; + +} // namespace protobuf + +} // namespace google +#endif // GOOGLE_PROTOBUF_MESSAGE_LITE_H__ diff --git a/3party_sloynik/protobuf/src/google/protobuf/repeated_field.cc b/3party_sloynik/protobuf/src/google/protobuf/repeated_field.cc new file mode 100644 index 0000000000..f7beb110fb --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/repeated_field.cc @@ -0,0 +1,95 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. + +#include +#include + +namespace google { +namespace protobuf { +namespace internal { + +void RepeatedPtrFieldBase::Reserve(int new_size) { + if (total_size_ >= new_size) return; + + void** old_elements = elements_; + total_size_ = max(total_size_ * 2, new_size); + elements_ = new void*[total_size_]; + memcpy(elements_, old_elements, allocated_size_ * sizeof(elements_[0])); + if (old_elements != initial_space_) { + delete [] old_elements; + } +} + +void RepeatedPtrFieldBase::Swap(RepeatedPtrFieldBase* other) { + void** swap_elements = elements_; + int swap_current_size = current_size_; + int swap_allocated_size = allocated_size_; + int swap_total_size = total_size_; + // We may not be using initial_space_ but it's not worth checking. Just + // copy it anyway. + void* swap_initial_space[kInitialSize]; + memcpy(swap_initial_space, initial_space_, sizeof(initial_space_)); + + elements_ = other->elements_; + current_size_ = other->current_size_; + allocated_size_ = other->allocated_size_; + total_size_ = other->total_size_; + memcpy(initial_space_, other->initial_space_, sizeof(initial_space_)); + + other->elements_ = swap_elements; + other->current_size_ = swap_current_size; + other->allocated_size_ = swap_allocated_size; + other->total_size_ = swap_total_size; + memcpy(other->initial_space_, swap_initial_space, sizeof(swap_initial_space)); + + if (elements_ == other->initial_space_) { + elements_ = initial_space_; + } + if (other->elements_ == initial_space_) { + other->elements_ = other->initial_space_; + } +} + +string* StringTypeHandlerBase::New() { + return new string; +} +void StringTypeHandlerBase::Delete(string* value) { + delete value; +} + + +} // namespace internal + +} // namespace protobuf +} // namespace google diff --git a/3party_sloynik/protobuf/src/google/protobuf/repeated_field.h b/3party_sloynik/protobuf/src/google/protobuf/repeated_field.h new file mode 100644 index 0000000000..defdefe07e --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/repeated_field.h @@ -0,0 +1,1248 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// RepeatedField and RepeatedPtrField are used by generated protocol message +// classes to manipulate repeated fields. These classes are very similar to +// STL's vector, but include a number of optimizations found to be useful +// specifically in the case of Protocol Buffers. RepeatedPtrField is +// particularly different from STL vector as it manages ownership of the +// pointers that it contains. +// +// Typically, clients should not need to access RepeatedField objects directly, +// but should instead use the accessor functions generated automatically by the +// protocol compiler. + +#ifndef GOOGLE_PROTOBUF_REPEATED_FIELD_H__ +#define GOOGLE_PROTOBUF_REPEATED_FIELD_H__ + +#include +#include +#include +#include + +namespace google { + +namespace protobuf { + +class Message; + +namespace internal { + +// We need this (from generated_message_reflection.cc). +LIBPROTOBUF_EXPORT int StringSpaceUsedExcludingSelf(const string& str); + +} // namespace internal + +// RepeatedField is used to represent repeated fields of a primitive type (in +// other words, everything except strings and nested Messages). Most users will +// not ever use a RepeatedField directly; they will use the get-by-index, +// set-by-index, and add accessors that are generated for all repeated fields. +template +class RepeatedField { + public: + RepeatedField(); + ~RepeatedField(); + + int size() const; + + const Element& Get(int index) const; + Element* Mutable(int index); + void Set(int index, const Element& value); + void Add(const Element& value); + Element* Add(); + // Remove the last element in the array. + // We don't provide a way to remove any element other than the last + // because it invites inefficient use, such as O(n^2) filtering loops + // that should have been O(n). If you want to remove an element other + // than the last, the best way to do it is to re-arrange the elements + // so that the one you want removed is at the end, then call RemoveLast(). + void RemoveLast(); + void Clear(); + void MergeFrom(const RepeatedField& other); + + // Reserve space to expand the field to at least the given size. If the + // array is grown, it will always be at least doubled in size. + void Reserve(int new_size); + + // Resize the RepeatedField to a new, smaller size. This is O(1). + void Truncate(int new_size); + + void AddAlreadyReserved(const Element& value); + Element* AddAlreadyReserved(); + int Capacity() const; + + // Gets the underlying array. This pointer is possibly invalidated by + // any add or remove operation. + Element* mutable_data(); + const Element* data() const; + + // Swap entire contents with "other". + void Swap(RepeatedField* other); + + // Swap two elements. + void SwapElements(int index1, int index2); + + // STL-like iterator support + typedef Element* iterator; + typedef const Element* const_iterator; + + iterator begin(); + const_iterator begin() const; + iterator end(); + const_iterator end() const; + + // Returns the number of bytes used by the repeated field, excluding + // sizeof(*this) + int SpaceUsedExcludingSelf() const; + + private: + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedField); + + static const int kInitialSize = 4; + + Element* elements_; + int current_size_; + int total_size_; + + Element initial_space_[kInitialSize]; + + // Move the contents of |from| into |to|, possibly clobbering |from| in the + // process. For primitive types this is just a memcpy(), but it could be + // specialized for non-primitive types to, say, swap each element instead. + void MoveArray(Element to[], Element from[], int size); + + // Copy the elements of |from| into |to|. + void CopyArray(Element to[], const Element from[], int size); +}; + +namespace internal { +template class RepeatedPtrIterator; +template class RepeatedPtrOverPtrsIterator; +} // namespace internal + +namespace internal { + +// This is the common base class for RepeatedPtrFields. It deals only in void* +// pointers. Users should not use this interface directly. +// +// The methods of this interface correspond to the methods of RepeatedPtrField, +// but may have a template argument called TypeHandler. Its signature is: +// class TypeHandler { +// public: +// typedef MyType Type; +// static Type* New(); +// static void Delete(Type*); +// static void Clear(Type*); +// static void Merge(const Type& from, Type* to); +// +// // Only needs to be implemented if SpaceUsedExcludingSelf() is called. +// static int SpaceUsed(const Type&); +// }; +class LIBPROTOBUF_EXPORT RepeatedPtrFieldBase { + protected: + // The reflection implementation needs to call protected methods directly, + // reinterpreting pointers as being to Message instead of a specific Message + // subclass. + friend class GeneratedMessageReflection; + + // ExtensionSet stores repeated message extensions as + // RepeatedPtrField, but non-lite ExtensionSets need to + // implement SpaceUsed(), and thus need to call SpaceUsedExcludingSelf() + // reinterpreting MessageLite as Message. ExtensionSet also needs to make + // use of AddFromCleared(), which is not part of the public interface. + friend class ExtensionSet; + + RepeatedPtrFieldBase(); + + // Must be called from destructor. + template + void Destroy(); + + int size() const; + + template + const typename TypeHandler::Type& Get(int index) const; + template + typename TypeHandler::Type* Mutable(int index); + template + typename TypeHandler::Type* Add(); + template + void RemoveLast(); + template + void Clear(); + template + void MergeFrom(const RepeatedPtrFieldBase& other); + + void Reserve(int new_size); + + int Capacity() const; + + // Used for constructing iterators. + void* const* raw_data() const; + void** raw_mutable_data() const; + + template + typename TypeHandler::Type** mutable_data(); + template + const typename TypeHandler::Type* const* data() const; + + void Swap(RepeatedPtrFieldBase* other); + + void SwapElements(int index1, int index2); + + template + int SpaceUsedExcludingSelf() const; + + + // Advanced memory management -------------------------------------- + + // Like Add(), but if there are no cleared objects to use, returns NULL. + template + typename TypeHandler::Type* AddFromCleared(); + + template + void AddAllocated(typename TypeHandler::Type* value); + template + typename TypeHandler::Type* ReleaseLast(); + + int ClearedCount() const; + template + void AddCleared(typename TypeHandler::Type* value); + template + typename TypeHandler::Type* ReleaseCleared(); + + private: + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedPtrFieldBase); + + static const int kInitialSize = 4; + + void** elements_; + int current_size_; + int allocated_size_; + int total_size_; + + void* initial_space_[kInitialSize]; + + template + static inline typename TypeHandler::Type* cast(void* element) { + return reinterpret_cast(element); + } + template + static inline const typename TypeHandler::Type* cast(const void* element) { + return reinterpret_cast(element); + } +}; + +template +class GenericTypeHandler { + public: + typedef GenericType Type; + static GenericType* New() { return new GenericType; } + static void Delete(GenericType* value) { delete value; } + static void Clear(GenericType* value) { value->Clear(); } + static void Merge(const GenericType& from, GenericType* to) { + to->MergeFrom(from); + } + static int SpaceUsed(const GenericType& value) { return value.SpaceUsed(); } +}; + +template <> +inline void GenericTypeHandler::Merge( + const MessageLite& from, MessageLite* to) { + to->CheckTypeAndMergeFrom(from); +} + +// HACK: If a class is declared as DLL-exported in MSVC, it insists on +// generating copies of all its methods -- even inline ones -- to include +// in the DLL. But SpaceUsed() calls StringSpaceUsedExcludingSelf() which +// isn't in the lite library, therefore the lite library cannot link if +// StringTypeHandler is exported. So, we factor out StringTypeHandlerBase, +// export that, then make StringTypeHandler be a subclass which is NOT +// exported. +// TODO(kenton): There has to be a better way. +class LIBPROTOBUF_EXPORT StringTypeHandlerBase { + public: + typedef string Type; + static string* New(); + static void Delete(string* value); + static void Clear(string* value) { value->clear(); } + static void Merge(const string& from, string* to) { *to = from; } +}; + +class StringTypeHandler : public StringTypeHandlerBase { + public: + static int SpaceUsed(const string& value) { + return sizeof(value) + StringSpaceUsedExcludingSelf(value); + } +}; + + +} // namespace internal + +// RepeatedPtrField is like RepeatedField, but used for repeated strings or +// Messages. +template +class RepeatedPtrField : public internal::RepeatedPtrFieldBase { + public: + RepeatedPtrField(); + + ~RepeatedPtrField(); + + int size() const; + + const Element& Get(int index) const; + Element* Mutable(int index); + Element* Add(); + void RemoveLast(); // Remove the last element in the array. + void Clear(); + void MergeFrom(const RepeatedPtrField& other); + + // Reserve space to expand the field to at least the given size. This only + // resizes the pointer array; it doesn't allocate any objects. If the + // array is grown, it will always be at least doubled in size. + void Reserve(int new_size); + + int Capacity() const; + + // Gets the underlying array. This pointer is possibly invalidated by + // any add or remove operation. + Element** mutable_data(); + const Element* const* data() const; + + // Swap entire contents with "other". + void Swap(RepeatedPtrField* other); + + // Swap two elements. + void SwapElements(int index1, int index2); + + // STL-like iterator support + typedef internal::RepeatedPtrIterator iterator; + typedef internal::RepeatedPtrIterator const_iterator; + + iterator begin(); + const_iterator begin() const; + iterator end(); + const_iterator end() const; + + // Custom STL-like iterator that iterates over and returns the underlying + // pointers to Element rather than Element itself. + typedef internal::RepeatedPtrOverPtrsIterator pointer_iterator; + pointer_iterator pointer_begin(); + pointer_iterator pointer_end(); + + // Returns (an estimate of) the number of bytes used by the repeated field, + // excluding sizeof(*this). + int SpaceUsedExcludingSelf() const; + + // The spaced used just by the pointer array, not counting the objects pointed + // at. Returns zero if the array is inlined (i.e. initial_space_ is being + // used). + int SpaceUsedByArray() const; + + // Advanced memory management -------------------------------------- + // When hardcore memory management becomes necessary -- as it often + // does here at Google -- the following methods may be useful. + + // Add an already-allocated object, passing ownership to the + // RepeatedPtrField. + void AddAllocated(Element* value); + // Remove the last element and return it, passing ownership to the + // caller. + // Requires: size() > 0 + Element* ReleaseLast(); + + // When elements are removed by calls to RemoveLast() or Clear(), they + // are not actually freed. Instead, they are cleared and kept so that + // they can be reused later. This can save lots of CPU time when + // repeatedly reusing a protocol message for similar purposes. + // + // Really, extremely hardcore programs may actually want to manipulate + // these objects to better-optimize memory management. These methods + // allow that. + + // Get the number of cleared objects that are currently being kept + // around for reuse. + int ClearedCount() const; + // Add an element to the pool of cleared objects, passing ownership to + // the RepeatedPtrField. The element must be cleared prior to calling + // this method. + void AddCleared(Element* value); + // Remove a single element from the cleared pool and return it, passing + // ownership to the caller. The element is guaranteed to be cleared. + // Requires: ClearedCount() > 0 + Element* ReleaseCleared(); + + protected: + // Note: RepeatedPtrField SHOULD NOT be subclassed by users. We only + // subclass it in one place as a hack for compatibility with proto1. The + // subclass needs to know about TypeHandler in order to call protected + // methods on RepeatedPtrFieldBase. + class TypeHandler; + + + private: + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedPtrField); +}; + +// implementation ==================================================== + +template +inline RepeatedField::RepeatedField() + : elements_(initial_space_), + current_size_(0), + total_size_(kInitialSize) { +} + +template +RepeatedField::~RepeatedField() { + if (elements_ != initial_space_) { + delete [] elements_; + } +} + +template +inline int RepeatedField::size() const { + return current_size_; +} + +template +inline int RepeatedField::Capacity() const { + return total_size_; +} + +template +inline void RepeatedField::AddAlreadyReserved(const Element& value) { + GOOGLE_DCHECK_LT(size(), Capacity()); + elements_[current_size_++] = value; +} + +template +inline Element* RepeatedField::AddAlreadyReserved() { + GOOGLE_DCHECK_LT(size(), Capacity()); + return &elements_[current_size_++]; +} + +template +inline const Element& RepeatedField::Get(int index) const { + GOOGLE_DCHECK_LT(index, size()); + return elements_[index]; +} + +template +inline Element* RepeatedField::Mutable(int index) { + GOOGLE_DCHECK_LT(index, size()); + return elements_ + index; +} + +template +inline void RepeatedField::Set(int index, const Element& value) { + GOOGLE_DCHECK_LT(index, size()); + elements_[index] = value; +} + +template +inline void RepeatedField::Add(const Element& value) { + if (current_size_ == total_size_) Reserve(total_size_ + 1); + elements_[current_size_++] = value; +} + +template +inline Element* RepeatedField::Add() { + if (current_size_ == total_size_) Reserve(total_size_ + 1); + return &elements_[current_size_++]; +} + +template +inline void RepeatedField::RemoveLast() { + GOOGLE_DCHECK_GT(current_size_, 0); + --current_size_; +} + +template +inline void RepeatedField::Clear() { + current_size_ = 0; +} + +template +inline void RepeatedField::MergeFrom(const RepeatedField& other) { + Reserve(current_size_ + other.current_size_); + CopyArray(elements_ + current_size_, other.elements_, other.current_size_); + current_size_ += other.current_size_; +} + +template +inline Element* RepeatedField::mutable_data() { + return elements_; +} + +template +inline const Element* RepeatedField::data() const { + return elements_; +} + + +template +void RepeatedField::Swap(RepeatedField* other) { + Element* swap_elements = elements_; + int swap_current_size = current_size_; + int swap_total_size = total_size_; + // We may not be using initial_space_ but it's not worth checking. Just + // copy it anyway. + Element swap_initial_space[kInitialSize]; + MoveArray(swap_initial_space, initial_space_, kInitialSize); + + elements_ = other->elements_; + current_size_ = other->current_size_; + total_size_ = other->total_size_; + MoveArray(initial_space_, other->initial_space_, kInitialSize); + + other->elements_ = swap_elements; + other->current_size_ = swap_current_size; + other->total_size_ = swap_total_size; + MoveArray(other->initial_space_, swap_initial_space, kInitialSize); + + if (elements_ == other->initial_space_) { + elements_ = initial_space_; + } + if (other->elements_ == initial_space_) { + other->elements_ = other->initial_space_; + } +} + +template +void RepeatedField::SwapElements(int index1, int index2) { + std::swap(elements_[index1], elements_[index2]); +} + +template +inline typename RepeatedField::iterator +RepeatedField::begin() { + return elements_; +} +template +inline typename RepeatedField::const_iterator +RepeatedField::begin() const { + return elements_; +} +template +inline typename RepeatedField::iterator +RepeatedField::end() { + return elements_ + current_size_; +} +template +inline typename RepeatedField::const_iterator +RepeatedField::end() const { + return elements_ + current_size_; +} + +template +inline int RepeatedField::SpaceUsedExcludingSelf() const { + return (elements_ != initial_space_) ? total_size_ * sizeof(elements_[0]) : 0; +} + +// Avoid inlining of Reserve(): new, memcpy, and delete[] lead to a significant +// amount of code bloat. +template +void RepeatedField::Reserve(int new_size) { + if (total_size_ >= new_size) return; + + Element* old_elements = elements_; + total_size_ = max(total_size_ * 2, new_size); + elements_ = new Element[total_size_]; + MoveArray(elements_, old_elements, current_size_); + if (old_elements != initial_space_) { + delete [] old_elements; + } +} + +template +inline void RepeatedField::Truncate(int new_size) { + GOOGLE_DCHECK_LE(new_size, current_size_); + current_size_ = new_size; +} + +template +inline void RepeatedField::MoveArray( + Element to[], Element from[], int size) { + memcpy(to, from, size * sizeof(Element)); +} + +template +inline void RepeatedField::CopyArray( + Element to[], const Element from[], int size) { + memcpy(to, from, size * sizeof(Element)); +} + + +// ------------------------------------------------------------------- + +namespace internal { + +inline RepeatedPtrFieldBase::RepeatedPtrFieldBase() + : elements_(initial_space_), + current_size_(0), + allocated_size_(0), + total_size_(kInitialSize) { +} + +template +void RepeatedPtrFieldBase::Destroy() { + for (int i = 0; i < allocated_size_; i++) { + TypeHandler::Delete(cast(elements_[i])); + } + if (elements_ != initial_space_) { + delete [] elements_; + } +} + +inline int RepeatedPtrFieldBase::size() const { + return current_size_; +} + + +template +inline const typename TypeHandler::Type& +RepeatedPtrFieldBase::Get(int index) const { + GOOGLE_DCHECK_LT(index, size()); + return *cast(elements_[index]); +} + +template +inline typename TypeHandler::Type* +RepeatedPtrFieldBase::Mutable(int index) { + GOOGLE_DCHECK_LT(index, size()); + return cast(elements_[index]); +} + +template +inline typename TypeHandler::Type* RepeatedPtrFieldBase::Add() { + if (current_size_ < allocated_size_) { + return cast(elements_[current_size_++]); + } + if (allocated_size_ == total_size_) Reserve(total_size_ + 1); + ++allocated_size_; + typename TypeHandler::Type* result = TypeHandler::New(); + elements_[current_size_++] = result; + return result; +} + +template +inline void RepeatedPtrFieldBase::RemoveLast() { + GOOGLE_DCHECK_GT(current_size_, 0); + TypeHandler::Clear(cast(elements_[--current_size_])); +} + +template +void RepeatedPtrFieldBase::Clear() { + for (int i = 0; i < current_size_; i++) { + TypeHandler::Clear(cast(elements_[i])); + } + current_size_ = 0; +} + +template +inline void RepeatedPtrFieldBase::MergeFrom(const RepeatedPtrFieldBase& other) { + Reserve(current_size_ + other.current_size_); + for (int i = 0; i < other.current_size_; i++) { + TypeHandler::Merge(other.Get(i), Add()); + } +} + +inline int RepeatedPtrFieldBase::Capacity() const { + return total_size_; +} + +inline void* const* RepeatedPtrFieldBase::raw_data() const { + return elements_; +} + +inline void** RepeatedPtrFieldBase::raw_mutable_data() const { + return elements_; +} + +template +inline typename TypeHandler::Type** RepeatedPtrFieldBase::mutable_data() { + // TODO(kenton): Breaks C++ aliasing rules. We should probably remove this + // method entirely. + return reinterpret_cast(elements_); +} + +template +inline const typename TypeHandler::Type* const* +RepeatedPtrFieldBase::data() const { + // TODO(kenton): Breaks C++ aliasing rules. We should probably remove this + // method entirely. + return reinterpret_cast(elements_); +} + +inline void RepeatedPtrFieldBase::SwapElements(int index1, int index2) { + std::swap(elements_[index1], elements_[index2]); +} + +template +inline int RepeatedPtrFieldBase::SpaceUsedExcludingSelf() const { + int allocated_bytes = + (elements_ != initial_space_) ? total_size_ * sizeof(elements_[0]) : 0; + for (int i = 0; i < allocated_size_; ++i) { + allocated_bytes += TypeHandler::SpaceUsed(*cast(elements_[i])); + } + return allocated_bytes; +} + +template +inline typename TypeHandler::Type* RepeatedPtrFieldBase::AddFromCleared() { + if (current_size_ < allocated_size_) { + return cast(elements_[current_size_++]); + } else { + return NULL; + } +} + +template +void RepeatedPtrFieldBase::AddAllocated( + typename TypeHandler::Type* value) { + // Make room for the new pointer. + if (current_size_ == total_size_) { + // The array is completely full with no cleared objects, so grow it. + Reserve(total_size_ + 1); + ++allocated_size_; + } else if (allocated_size_ == total_size_) { + // There is no more space in the pointer array because it contains some + // cleared objects awaiting reuse. We don't want to grow the array in this + // case because otherwise a loop calling AddAllocated() followed by Clear() + // would leak memory. + TypeHandler::Delete(cast(elements_[current_size_])); + } else if (current_size_ < allocated_size_) { + // We have some cleared objects. We don't care about their order, so we + // can just move the first one to the end to make space. + elements_[allocated_size_] = elements_[current_size_]; + ++allocated_size_; + } else { + // There are no cleared objects. + ++allocated_size_; + } + + elements_[current_size_++] = value; +} + +template +inline typename TypeHandler::Type* RepeatedPtrFieldBase::ReleaseLast() { + GOOGLE_DCHECK_GT(current_size_, 0); + typename TypeHandler::Type* result = + cast(elements_[--current_size_]); + --allocated_size_; + if (current_size_ < allocated_size_) { + // There are cleared elements on the end; replace the removed element + // with the last allocated element. + elements_[current_size_] = elements_[allocated_size_]; + } + return result; +} + + +inline int RepeatedPtrFieldBase::ClearedCount() const { + return allocated_size_ - current_size_; +} + +template +inline void RepeatedPtrFieldBase::AddCleared( + typename TypeHandler::Type* value) { + if (allocated_size_ == total_size_) Reserve(total_size_ + 1); + elements_[allocated_size_++] = value; +} + +template +inline typename TypeHandler::Type* RepeatedPtrFieldBase::ReleaseCleared() { + GOOGLE_DCHECK_GT(allocated_size_, current_size_); + return cast(elements_[--allocated_size_]); +} + +} // namespace internal + +// ------------------------------------------------------------------- + +template +class RepeatedPtrField::TypeHandler + : public internal::GenericTypeHandler {}; + +template <> +class RepeatedPtrField::TypeHandler + : public internal::StringTypeHandler {}; + + +template +inline RepeatedPtrField::RepeatedPtrField() {} + +template +RepeatedPtrField::~RepeatedPtrField() { + Destroy(); +} + +template +inline int RepeatedPtrField::size() const { + return RepeatedPtrFieldBase::size(); +} + +template +inline const Element& RepeatedPtrField::Get(int index) const { + return RepeatedPtrFieldBase::Get(index); +} + +template +inline Element* RepeatedPtrField::Mutable(int index) { + return RepeatedPtrFieldBase::Mutable(index); +} + +template +inline Element* RepeatedPtrField::Add() { + return RepeatedPtrFieldBase::Add(); +} + +template +inline void RepeatedPtrField::RemoveLast() { + RepeatedPtrFieldBase::RemoveLast(); +} + +template +inline void RepeatedPtrField::Clear() { + RepeatedPtrFieldBase::Clear(); +} + +template +inline void RepeatedPtrField::MergeFrom( + const RepeatedPtrField& other) { + RepeatedPtrFieldBase::MergeFrom(other); +} + +template +inline Element** RepeatedPtrField::mutable_data() { + return RepeatedPtrFieldBase::mutable_data(); +} + +template +inline const Element* const* RepeatedPtrField::data() const { + return RepeatedPtrFieldBase::data(); +} + +template +void RepeatedPtrField::Swap(RepeatedPtrField* other) { + RepeatedPtrFieldBase::Swap(other); +} + +template +void RepeatedPtrField::SwapElements(int index1, int index2) { + RepeatedPtrFieldBase::SwapElements(index1, index2); +} + +template +inline int RepeatedPtrField::SpaceUsedExcludingSelf() const { + return RepeatedPtrFieldBase::SpaceUsedExcludingSelf(); +} + +template +inline void RepeatedPtrField::AddAllocated(Element* value) { + RepeatedPtrFieldBase::AddAllocated(value); +} + +template +inline Element* RepeatedPtrField::ReleaseLast() { + return RepeatedPtrFieldBase::ReleaseLast(); +} + + +template +inline int RepeatedPtrField::ClearedCount() const { + return RepeatedPtrFieldBase::ClearedCount(); +} + +template +inline void RepeatedPtrField::AddCleared(Element* value) { + return RepeatedPtrFieldBase::AddCleared(value); +} + +template +inline Element* RepeatedPtrField::ReleaseCleared() { + return RepeatedPtrFieldBase::ReleaseCleared(); +} + +template +inline void RepeatedPtrField::Reserve(int new_size) { + return RepeatedPtrFieldBase::Reserve(new_size); +} + +template +inline int RepeatedPtrField::Capacity() const { + return RepeatedPtrFieldBase::Capacity(); +} + +// ------------------------------------------------------------------- + +namespace internal { + +// STL-like iterator implementation for RepeatedPtrField. You should not +// refer to this class directly; use RepeatedPtrField::iterator instead. +// +// The iterator for RepeatedPtrField, RepeatedPtrIterator, is +// very similar to iterator_ptr in util/gtl/iterator_adaptors-inl.h, +// but adds random-access operators and is modified to wrap a void** base +// iterator (since RepeatedPtrField stores its array as a void* array and +// casting void** to T** would violate C++ aliasing rules). +// +// This code based on net/proto/proto-array-internal.h by Jeffrey Yasskin +// (jyasskin@google.com). +template +class RepeatedPtrIterator + : public std::iterator< + std::random_access_iterator_tag, Element> { + public: + typedef RepeatedPtrIterator iterator; + typedef std::iterator< + std::random_access_iterator_tag, Element> superclass; + + // Let the compiler know that these are type names, so we don't have to + // write "typename" in front of them everywhere. + typedef typename superclass::reference reference; + typedef typename superclass::pointer pointer; + typedef typename superclass::difference_type difference_type; + + RepeatedPtrIterator() : it_(NULL) {} + explicit RepeatedPtrIterator(void* const* it) : it_(it) {} + + // Allow "upcasting" from RepeatedPtrIterator to + // RepeatedPtrIterator. + template + RepeatedPtrIterator(const RepeatedPtrIterator& other) + : it_(other.it_) { + // Force a compiler error if the other type is not convertable to ours. + if (false) { + implicit_cast(0); + } + } + + // dereferenceable + reference operator*() const { return *reinterpret_cast(*it_); } + pointer operator->() const { return &(operator*()); } + + // {inc,dec}rementable + iterator& operator++() { ++it_; return *this; } + iterator operator++(int) { return iterator(it_++); } + iterator& operator--() { --it_; return *this; } + iterator operator--(int) { return iterator(it_--); } + + // equality_comparable + bool operator==(const iterator& x) const { return it_ == x.it_; } + bool operator!=(const iterator& x) const { return it_ != x.it_; } + + // less_than_comparable + bool operator<(const iterator& x) const { return it_ < x.it_; } + bool operator<=(const iterator& x) const { return it_ <= x.it_; } + bool operator>(const iterator& x) const { return it_ > x.it_; } + bool operator>=(const iterator& x) const { return it_ >= x.it_; } + + // addable, subtractable + iterator& operator+=(difference_type d) { + it_ += d; + return *this; + } + friend iterator operator+(iterator it, difference_type d) { + it += d; + return it; + } + friend iterator operator+(difference_type d, iterator it) { + it += d; + return it; + } + iterator& operator-=(difference_type d) { + it_ -= d; + return *this; + } + friend iterator operator-(iterator it, difference_type d) { + it -= d; + return it; + } + + // indexable + reference operator[](difference_type d) const { return *(*this + d); } + + // random access iterator + difference_type operator-(const iterator& x) const { return it_ - x.it_; } + + private: + template + friend class RepeatedPtrIterator; + + // The internal iterator. + void* const* it_; +}; + +// Provide an iterator that operates on pointers to the underlying objects +// rather than the objects themselves as RepeatedPtrIterator does. +// Consider using this when working with stl algorithms that change +// the array. +template +class RepeatedPtrOverPtrsIterator + : public std::iterator { + public: + typedef RepeatedPtrOverPtrsIterator iterator; + typedef std::iterator< + std::random_access_iterator_tag, Element*> superclass; + + // Let the compiler know that these are type names, so we don't have to + // write "typename" in front of them everywhere. + typedef typename superclass::reference reference; + typedef typename superclass::pointer pointer; + typedef typename superclass::difference_type difference_type; + + RepeatedPtrOverPtrsIterator() : it_(NULL) {} + explicit RepeatedPtrOverPtrsIterator(void** it) : it_(it) {} + + // dereferenceable + reference operator*() const { return *reinterpret_cast(it_); } + pointer operator->() const { return &(operator*()); } + + // {inc,dec}rementable + iterator& operator++() { ++it_; return *this; } + iterator operator++(int) { return iterator(it_++); } + iterator& operator--() { --it_; return *this; } + iterator operator--(int) { return iterator(it_--); } + + // equality_comparable + bool operator==(const iterator& x) const { return it_ == x.it_; } + bool operator!=(const iterator& x) const { return it_ != x.it_; } + + // less_than_comparable + bool operator<(const iterator& x) const { return it_ < x.it_; } + bool operator<=(const iterator& x) const { return it_ <= x.it_; } + bool operator>(const iterator& x) const { return it_ > x.it_; } + bool operator>=(const iterator& x) const { return it_ >= x.it_; } + + // addable, subtractable + iterator& operator+=(difference_type d) { + it_ += d; + return *this; + } + friend iterator operator+(iterator it, difference_type d) { + it += d; + return it; + } + friend iterator operator+(difference_type d, iterator it) { + it += d; + return it; + } + iterator& operator-=(difference_type d) { + it_ -= d; + return *this; + } + friend iterator operator-(iterator it, difference_type d) { + it -= d; + return it; + } + + // indexable + reference operator[](difference_type d) const { return *(*this + d); } + + // random access iterator + difference_type operator-(const iterator& x) const { return it_ - x.it_; } + + private: + template + friend class RepeatedPtrIterator; + + // The internal iterator. + void** it_; +}; + + +} // namespace internal + +template +inline typename RepeatedPtrField::iterator +RepeatedPtrField::begin() { + return iterator(raw_data()); +} +template +inline typename RepeatedPtrField::const_iterator +RepeatedPtrField::begin() const { + return iterator(raw_data()); +} +template +inline typename RepeatedPtrField::iterator +RepeatedPtrField::end() { + return iterator(raw_data() + size()); +} +template +inline typename RepeatedPtrField::const_iterator +RepeatedPtrField::end() const { + return iterator(raw_data() + size()); +} + +template +inline typename RepeatedPtrField::pointer_iterator +RepeatedPtrField::pointer_begin() { + return pointer_iterator(raw_mutable_data()); +} +template +inline typename RepeatedPtrField::pointer_iterator +RepeatedPtrField::pointer_end() { + return pointer_iterator(raw_mutable_data() + size()); +} + + +// Iterators and helper functions that follow the spirit of the STL +// std::back_insert_iterator and std::back_inserter but are tailor-made +// for RepeatedField and RepatedPtrField. Typical usage would be: +// +// std::copy(some_sequence.begin(), some_sequence.end(), +// google::protobuf::RepeatedFieldBackInserter(proto.mutable_sequence())); +// +// Ported by johannes from util/gtl/proto-array-iterators-inl.h + +namespace internal { +// A back inserter for RepeatedField objects. +template class RepeatedFieldBackInsertIterator + : public std::iterator { + public: + explicit RepeatedFieldBackInsertIterator( + RepeatedField* const mutable_field) + : field_(mutable_field) { + } + RepeatedFieldBackInsertIterator& operator=(const T& value) { + field_->Add(value); + return *this; + } + RepeatedFieldBackInsertIterator& operator*() { + return *this; + } + RepeatedFieldBackInsertIterator& operator++() { + return *this; + } + RepeatedFieldBackInsertIterator& operator++(int ignores_parameter) { + return *this; + } + + private: + RepeatedField* const field_; +}; + +// A back inserter for RepeatedPtrField objects. +template class RepeatedPtrFieldBackInsertIterator + : public std::iterator { + public: + RepeatedPtrFieldBackInsertIterator( + RepeatedPtrField* const mutable_field) + : field_(mutable_field) { + } + RepeatedPtrFieldBackInsertIterator& operator=(const T& value) { + *field_->Add() = value; + return *this; + } + RepeatedPtrFieldBackInsertIterator& operator=( + const T* const ptr_to_value) { + *field_->Add() = *ptr_to_value; + return *this; + } + RepeatedPtrFieldBackInsertIterator& operator*() { + return *this; + } + RepeatedPtrFieldBackInsertIterator& operator++() { + return *this; + } + RepeatedPtrFieldBackInsertIterator& operator++(int ignores_parameter) { + return *this; + } + + private: + RepeatedPtrField* const field_; +}; + +// A back inserter for RepeatedPtrFields that inserts by transfering ownership +// of a pointer. +template class AllocatedRepeatedPtrFieldBackInsertIterator + : public std::iterator { + public: + explicit AllocatedRepeatedPtrFieldBackInsertIterator( + RepeatedPtrField* const mutable_field) + : field_(mutable_field) { + } + AllocatedRepeatedPtrFieldBackInsertIterator& operator=( + T* const ptr_to_value) { + field_->AddAllocated(ptr_to_value); + return *this; + } + AllocatedRepeatedPtrFieldBackInsertIterator& operator*() { + return *this; + } + AllocatedRepeatedPtrFieldBackInsertIterator& operator++() { + return *this; + } + AllocatedRepeatedPtrFieldBackInsertIterator& operator++( + int ignores_parameter) { + return *this; + } + + private: + RepeatedPtrField* const field_; +}; +} // namespace internal + +// Provides a back insert iterator for RepeatedField instances, +// similar to std::back_inserter(). Note the identically named +// function for RepeatedPtrField instances. +template internal::RepeatedFieldBackInsertIterator +RepeatedFieldBackInserter(RepeatedField* const mutable_field) { + return internal::RepeatedFieldBackInsertIterator(mutable_field); +} + +// Provides a back insert iterator for RepeatedPtrField instances, +// similar to std::back_inserter(). Note the identically named +// function for RepeatedField instances. +template internal::RepeatedPtrFieldBackInsertIterator +RepeatedFieldBackInserter(RepeatedPtrField* const mutable_field) { + return internal::RepeatedPtrFieldBackInsertIterator(mutable_field); +} + +// Provides a back insert iterator for RepeatedPtrField instances +// similar to std::back_inserter() which transfers the ownership while +// copying elements. +template internal::AllocatedRepeatedPtrFieldBackInsertIterator +AllocatedRepeatedPtrFieldBackInserter( + RepeatedPtrField* const mutable_field) { + return internal::AllocatedRepeatedPtrFieldBackInsertIterator( + mutable_field); +} + +} // namespace protobuf + +} // namespace google +#endif // GOOGLE_PROTOBUF_REPEATED_FIELD_H__ diff --git a/3party_sloynik/protobuf/src/google/protobuf/stubs/common.cc b/3party_sloynik/protobuf/src/google/protobuf/stubs/common.cc new file mode 100644 index 0000000000..12e14a898f --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/stubs/common.cc @@ -0,0 +1,366 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) + +#include +#include +#include +#include +#include + +//#include "config.h" + +#if defined(_WIN32) && !defined(_BADA_SIMULATOR) && !defined(_BADA_DEVICE) +#define WIN32_LEAN_AND_MEAN // We only need minimal includes +#include +#define snprintf _snprintf // see comment in strutil.cc +#elif defined(HAVE_PTHREAD) +#include +#else +#warning "No suitable threading library available." +//#error "No suitable threading library available." +#endif + +namespace google { +namespace protobuf { + +namespace internal { + +void VerifyVersion(int headerVersion, + int minLibraryVersion, + const char* filename) { + if (GOOGLE_PROTOBUF_VERSION < minLibraryVersion) { + // Library is too old for headers. + GOOGLE_LOG(FATAL) + << "This program requires version " << VersionString(minLibraryVersion) + << " of the Protocol Buffer runtime library, but the installed version " + "is " << VersionString(GOOGLE_PROTOBUF_VERSION) << ". Please update " + "your library. If you compiled the program yourself, make sure that " + "your headers are from the same version of Protocol Buffers as your " + "link-time library. (Version verification failed in \"" + << filename << "\".)"; + } + if (headerVersion < kMinHeaderVersionForLibrary) { + // Headers are too old for library. + GOOGLE_LOG(FATAL) + << "This program was compiled against version " + << VersionString(headerVersion) << " of the Protocol Buffer runtime " + "library, which is not compatible with the installed version (" + << VersionString(GOOGLE_PROTOBUF_VERSION) << "). Contact the program " + "author for an update. If you compiled the program yourself, make " + "sure that your headers are from the same version of Protocol Buffers " + "as your link-time library. (Version verification failed in \"" + << filename << "\".)"; + } +} + +string VersionString(int version) { + int major = version / 1000000; + int minor = (version / 1000) % 1000; + int micro = version % 1000; + + // 128 bytes should always be enough, but we use snprintf() anyway to be + // safe. + char buffer[128]; + snprintf(buffer, sizeof(buffer), "%d.%d.%d", major, minor, micro); + + // Guard against broken MSVC snprintf(). + buffer[sizeof(buffer)-1] = '\0'; + + return buffer; +} + +} // namespace internal + +// =================================================================== +// emulates google3/base/logging.cc + +namespace internal { + +void DefaultLogHandler(LogLevel level, const char* filename, int line, + const string& message) { + static const char* level_names[] = { "INFO", "WARNING", "ERROR", "FATAL" }; + + // We use fprintf() instead of cerr because we want this to work at static + // initialization time. + fprintf(stderr, "libprotobuf %s %s:%d] %s\n", + level_names[level], filename, line, message.c_str()); + fflush(stderr); // Needed on MSVC. +} + +void NullLogHandler(LogLevel level, const char* filename, int line, + const string& message) { + // Nothing. +} + +static LogHandler* log_handler_ = &DefaultLogHandler; +static int log_silencer_count_ = 0; + +static Mutex* log_silencer_count_mutex_ = NULL; +GOOGLE_PROTOBUF_DECLARE_ONCE(log_silencer_count_init_); + +void DeleteLogSilencerCount() { + delete log_silencer_count_mutex_; + log_silencer_count_mutex_ = NULL; +} +void InitLogSilencerCount() { + log_silencer_count_mutex_ = new Mutex; + OnShutdown(&DeleteLogSilencerCount); +} +void InitLogSilencerCountOnce() { + GoogleOnceInit(&log_silencer_count_init_, &InitLogSilencerCount); +} + +LogMessage& LogMessage::operator<<(const string& value) { + message_ += value; + return *this; +} + +LogMessage& LogMessage::operator<<(const char* value) { + message_ += value; + return *this; +} + +// Since this is just for logging, we don't care if the current locale changes +// the results -- in fact, we probably prefer that. So we use snprintf() +// instead of Simple*toa(). +#undef DECLARE_STREAM_OPERATOR +#define DECLARE_STREAM_OPERATOR(TYPE, FORMAT) \ + LogMessage& LogMessage::operator<<(TYPE value) { \ + /* 128 bytes should be big enough for any of the primitive */ \ + /* values which we print with this, but well use snprintf() */ \ + /* anyway to be extra safe. */ \ + char buffer[128]; \ + snprintf(buffer, sizeof(buffer), FORMAT, value); \ + /* Guard against broken MSVC snprintf(). */ \ + buffer[sizeof(buffer)-1] = '\0'; \ + message_ += buffer; \ + return *this; \ + } + +DECLARE_STREAM_OPERATOR(char , "%c" ) +DECLARE_STREAM_OPERATOR(int , "%d" ) +DECLARE_STREAM_OPERATOR(uint , "%u" ) +DECLARE_STREAM_OPERATOR(long , "%ld") +DECLARE_STREAM_OPERATOR(unsigned long, "%lu") +DECLARE_STREAM_OPERATOR(double , "%g" ) +#undef DECLARE_STREAM_OPERATOR + +LogMessage::LogMessage(LogLevel level, const char* filename, int line) + : level_(level), filename_(filename), line_(line) {} +LogMessage::~LogMessage() {} + +void LogMessage::Finish() { + bool suppress = false; + + if (level_ != LOGLEVEL_FATAL) { + InitLogSilencerCountOnce(); + MutexLock lock(log_silencer_count_mutex_); + suppress = internal::log_silencer_count_ > 0; + } + + if (!suppress) { + internal::log_handler_(level_, filename_, line_, message_); + } + + if (level_ == LOGLEVEL_FATAL) { + abort(); + } +} + +void LogFinisher::operator=(LogMessage& other) { + other.Finish(); +} + +} // namespace internal + +LogHandler* SetLogHandler(LogHandler* new_func) { + LogHandler* old = internal::log_handler_; + if (old == &internal::NullLogHandler) { + old = NULL; + } + if (new_func == NULL) { + internal::log_handler_ = &internal::NullLogHandler; + } else { + internal::log_handler_ = new_func; + } + return old; +} + +LogSilencer::LogSilencer() { + internal::InitLogSilencerCountOnce(); + MutexLock lock(internal::log_silencer_count_mutex_); + ++internal::log_silencer_count_; +}; + +LogSilencer::~LogSilencer() { + internal::InitLogSilencerCountOnce(); + MutexLock lock(internal::log_silencer_count_mutex_); + --internal::log_silencer_count_; +}; + +// =================================================================== +// emulates google3/base/callback.cc + +Closure::~Closure() {} + +namespace internal { FunctionClosure0::~FunctionClosure0() {} } + +void DoNothing() {} + +// =================================================================== +// emulates google3/base/mutex.cc + +#if defined(_WIN32) && !defined(_BADA_SIMULATOR) && !defined(_BADA_DEVICE) + +struct Mutex::Internal { + CRITICAL_SECTION mutex; +#ifndef NDEBUG + // Used only to implement AssertHeld(). + DWORD thread_id; +#endif +}; + +Mutex::Mutex() + : mInternal(new Internal) { + InitializeCriticalSection(&mInternal->mutex); +} + +Mutex::~Mutex() { + DeleteCriticalSection(&mInternal->mutex); + delete mInternal; +} + +void Mutex::Lock() { + EnterCriticalSection(&mInternal->mutex); +#ifndef NDEBUG + mInternal->thread_id = GetCurrentThreadId(); +#endif +} + +void Mutex::Unlock() { +#ifndef NDEBUG + mInternal->thread_id = 0; +#endif + LeaveCriticalSection(&mInternal->mutex); +} + +void Mutex::AssertHeld() { +#ifndef NDEBUG + GOOGLE_DCHECK_EQ(mInternal->thread_id, GetCurrentThreadId()); +#endif +} + +#elif defined(HAVE_PTHREAD) + +struct Mutex::Internal { + pthread_mutex_t mutex; +}; + +Mutex::Mutex() + : mInternal(new Internal) { + pthread_mutex_init(&mInternal->mutex, NULL); +} + +Mutex::~Mutex() { + pthread_mutex_destroy(&mInternal->mutex); + delete mInternal; +} + +void Mutex::Lock() { + int result = pthread_mutex_lock(&mInternal->mutex); + if (result != 0) { + GOOGLE_LOG(FATAL) << "pthread_mutex_lock: " << strerror(result); + } +} + +void Mutex::Unlock() { + int result = pthread_mutex_unlock(&mInternal->mutex); + if (result != 0) { + GOOGLE_LOG(FATAL) << "pthread_mutex_unlock: " << strerror(result); + } +} + +void Mutex::AssertHeld() { + // pthreads dosn't provide a way to check which thread holds the mutex. + // TODO(kenton): Maybe keep track of locking thread ID like with WIN32? +} + +#endif + +// =================================================================== +// Shutdown support. + +namespace internal { + +typedef void OnShutdownFunc(); +vector* shutdown_functions = NULL; +Mutex* shutdown_functions_mutex = NULL; +GOOGLE_PROTOBUF_DECLARE_ONCE(shutdown_functions_init); + +void InitShutdownFunctions() { + shutdown_functions = new vector; + shutdown_functions_mutex = new Mutex; +} + +inline void InitShutdownFunctionsOnce() { + GoogleOnceInit(&shutdown_functions_init, &InitShutdownFunctions); +} + +void OnShutdown(void (*func)()) { + InitShutdownFunctionsOnce(); + MutexLock lock(shutdown_functions_mutex); + shutdown_functions->push_back(func); +} + +} // namespace internal + +void ShutdownProtobufLibrary() { + internal::InitShutdownFunctionsOnce(); + + // We don't need to lock shutdown_functions_mutex because it's up to the + // caller to make sure that no one is using the library before this is + // called. + + // Make it safe to call this multiple times. + if (internal::shutdown_functions == NULL) return; + + for (int i = 0; i < internal::shutdown_functions->size(); i++) { + internal::shutdown_functions->at(i)(); + } + delete internal::shutdown_functions; + internal::shutdown_functions = NULL; + delete internal::shutdown_functions_mutex; + internal::shutdown_functions_mutex = NULL; +} + +} // namespace protobuf +} // namespace google diff --git a/3party_sloynik/protobuf/src/google/protobuf/stubs/common.h b/3party_sloynik/protobuf/src/google/protobuf/stubs/common.h new file mode 100644 index 0000000000..551ee4aac6 --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/stubs/common.h @@ -0,0 +1,1155 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) and others +// +// Contains basic types and utilities used by the rest of the library. + +#ifndef GOOGLE_PROTOBUF_COMMON_H__ +#define GOOGLE_PROTOBUF_COMMON_H__ + +#include +#include +#include +#include +#include +#if defined(__osf__) +// Tru64 lacks stdint.h, but has inttypes.h which defines a superset of +// what stdint.h would define. +#include +#elif !defined(_MSC_VER) +#include +#endif + +namespace std {} + +namespace google { +namespace protobuf { + +using namespace std; // Don't do this at home, kids. + +#undef GOOGLE_DISALLOW_EVIL_CONSTRUCTORS +#define GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(TypeName) \ + TypeName(const TypeName&); \ + void operator=(const TypeName&) + +#if defined(_MSC_VER) && defined(PROTOBUF_USE_DLLS) + #ifdef LIBPROTOBUF_EXPORTS + #define LIBPROTOBUF_EXPORT __declspec(dllexport) + #else + #define LIBPROTOBUF_EXPORT __declspec(dllimport) + #endif + #ifdef LIBPROTOC_EXPORTS + #define LIBPROTOC_EXPORT __declspec(dllexport) + #else + #define LIBPROTOC_EXPORT __declspec(dllimport) + #endif +#else + #define LIBPROTOBUF_EXPORT + #define LIBPROTOC_EXPORT +#endif + +namespace internal { + +// Some of these constants are macros rather than const ints so that they can +// be used in #if directives. + +// The current version, represented as a single integer to make comparison +// easier: major * 10^6 + minor * 10^3 + micro +#define GOOGLE_PROTOBUF_VERSION 2003000 + +// The minimum library version which works with the current version of the +// headers. +#define GOOGLE_PROTOBUF_MIN_LIBRARY_VERSION 2003000 + +// The minimum header version which works with the current version of +// the library. This constant should only be used by protoc's C++ code +// generator. +static const int kMinHeaderVersionForLibrary = 2003000; + +// The minimum protoc version which works with the current version of the +// headers. +#define GOOGLE_PROTOBUF_MIN_PROTOC_VERSION 2003000 + +// The minimum header version which works with the current version of +// protoc. This constant should only be used in VerifyVersion(). +static const int kMinHeaderVersionForProtoc = 2003000; + +// Verifies that the headers and libraries are compatible. Use the macro +// below to call this. +void LIBPROTOBUF_EXPORT VerifyVersion(int headerVersion, int minLibraryVersion, + const char* filename); + +// Converts a numeric version number to a string. +string LIBPROTOBUF_EXPORT VersionString(int version); + +} // namespace internal + +// Place this macro in your main() function (or somewhere before you attempt +// to use the protobuf library) to verify that the version you link against +// matches the headers you compiled against. If a version mismatch is +// detected, the process will abort. +#define GOOGLE_PROTOBUF_VERIFY_VERSION \ + ::google::protobuf::internal::VerifyVersion( \ + GOOGLE_PROTOBUF_VERSION, GOOGLE_PROTOBUF_MIN_LIBRARY_VERSION, \ + __FILE__) + +// =================================================================== +// from google3/base/port.h + +typedef unsigned int uint; + +#ifdef _MSC_VER +typedef __int8 int8; +typedef __int16 int16; +typedef __int32 int32; +typedef __int64 int64; + +typedef unsigned __int8 uint8; +typedef unsigned __int16 uint16; +typedef unsigned __int32 uint32; +typedef unsigned __int64 uint64; +#else +typedef int8_t int8; +typedef int16_t int16; +typedef int32_t int32; +typedef int64_t int64; + +typedef uint8_t uint8; +typedef uint16_t uint16; +typedef uint32_t uint32; +typedef uint64_t uint64; +#endif + +// long long macros to be used because gcc and vc++ use different suffixes, +// and different size specifiers in format strings +#undef GOOGLE_LONGLONG +#undef GOOGLE_ULONGLONG +#undef GOOGLE_LL_FORMAT + +#ifdef _MSC_VER +#define GOOGLE_LONGLONG(x) x##I64 +#define GOOGLE_ULONGLONG(x) x##UI64 +#define GOOGLE_LL_FORMAT "I64" // As in printf("%I64d", ...) +#else +#define GOOGLE_LONGLONG(x) x##LL +#define GOOGLE_ULONGLONG(x) x##ULL +#define GOOGLE_LL_FORMAT "ll" // As in "%lld". Note that "q" is poor form also. +#endif + +static const int32 kint32max = 0x7FFFFFFF; +static const int32 kint32min = -kint32max - 1; +static const int64 kint64max = GOOGLE_LONGLONG(0x7FFFFFFFFFFFFFFF); +static const int64 kint64min = -kint64max - 1; +static const uint32 kuint32max = 0xFFFFFFFFu; +static const uint64 kuint64max = GOOGLE_ULONGLONG(0xFFFFFFFFFFFFFFFF); + +// ------------------------------------------------------------------- +// Annotations: Some parts of the code have been annotated in ways that might +// be useful to some compilers or tools, but are not supported universally. +// You can #define these annotations yourself if the default implementation +// is not right for you. + +#ifndef GOOGLE_ATTRIBUTE_ALWAYS_INLINE +#if defined(__GNUC__) && (__GNUC__ > 3 ||(__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) +// For functions we want to force inline. +// Introduced in gcc 3.1. +#define GOOGLE_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((always_inline)) +#else +// Other compilers will have to figure it out for themselves. +#define GOOGLE_ATTRIBUTE_ALWAYS_INLINE +#endif +#endif + +#ifndef GOOGLE_ATTRIBUTE_DEPRECATED +#ifdef __GNUC__ +// If the method/variable/type is used anywhere, produce a warning. +#define GOOGLE_ATTRIBUTE_DEPRECATED __attribute__((deprecated)) +#else +#define GOOGLE_ATTRIBUTE_DEPRECATED +#endif +#endif + +#ifndef GOOGLE_PREDICT_TRUE +#ifdef __GNUC__ +// Provided at least since GCC 3.0. +#define GOOGLE_PREDICT_TRUE(x) (__builtin_expect(!!(x), 1)) +#else +#define GOOGLE_PREDICT_TRUE +#endif +#endif + +// Delimits a block of code which may write to memory which is simultaneously +// written by other threads, but which has been determined to be thread-safe +// (e.g. because it is an idempotent write). +#ifndef GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN +#define GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN() +#endif +#ifndef GOOGLE_SAFE_CONCURRENT_WRITES_END +#define GOOGLE_SAFE_CONCURRENT_WRITES_END() +#endif + +// =================================================================== +// from google3/base/basictypes.h + +// The GOOGLE_ARRAYSIZE(arr) macro returns the # of elements in an array arr. +// The expression is a compile-time constant, and therefore can be +// used in defining new arrays, for example. +// +// GOOGLE_ARRAYSIZE catches a few type errors. If you see a compiler error +// +// "warning: division by zero in ..." +// +// when using GOOGLE_ARRAYSIZE, you are (wrongfully) giving it a pointer. +// You should only use GOOGLE_ARRAYSIZE on statically allocated arrays. +// +// The following comments are on the implementation details, and can +// be ignored by the users. +// +// ARRAYSIZE(arr) works by inspecting sizeof(arr) (the # of bytes in +// the array) and sizeof(*(arr)) (the # of bytes in one array +// element). If the former is divisible by the latter, perhaps arr is +// indeed an array, in which case the division result is the # of +// elements in the array. Otherwise, arr cannot possibly be an array, +// and we generate a compiler error to prevent the code from +// compiling. +// +// Since the size of bool is implementation-defined, we need to cast +// !(sizeof(a) & sizeof(*(a))) to size_t in order to ensure the final +// result has type size_t. +// +// This macro is not perfect as it wrongfully accepts certain +// pointers, namely where the pointer size is divisible by the pointee +// size. Since all our code has to go through a 32-bit compiler, +// where a pointer is 4 bytes, this means all pointers to a type whose +// size is 3 or greater than 4 will be (righteously) rejected. +// +// Kudos to Jorg Brown for this simple and elegant implementation. + +#undef GOOGLE_ARRAYSIZE +#define GOOGLE_ARRAYSIZE(a) \ + ((sizeof(a) / sizeof(*(a))) / \ + static_cast(!(sizeof(a) % sizeof(*(a))))) + +namespace internal { + +// Use implicit_cast as a safe version of static_cast or const_cast +// for upcasting in the type hierarchy (i.e. casting a pointer to Foo +// to a pointer to SuperclassOfFoo or casting a pointer to Foo to +// a const pointer to Foo). +// When you use implicit_cast, the compiler checks that the cast is safe. +// Such explicit implicit_casts are necessary in surprisingly many +// situations where C++ demands an exact type match instead of an +// argument type convertable to a target type. +// +// The From type can be inferred, so the preferred syntax for using +// implicit_cast is the same as for static_cast etc.: +// +// implicit_cast(expr) +// +// implicit_cast would have been part of the C++ standard library, +// but the proposal was submitted too late. It will probably make +// its way into the language in the future. +template +inline To implicit_cast(From const &f) { + return f; +} + +// When you upcast (that is, cast a pointer from type Foo to type +// SuperclassOfFoo), it's fine to use implicit_cast<>, since upcasts +// always succeed. When you downcast (that is, cast a pointer from +// type Foo to type SubclassOfFoo), static_cast<> isn't safe, because +// how do you know the pointer is really of type SubclassOfFoo? It +// could be a bare Foo, or of type DifferentSubclassOfFoo. Thus, +// when you downcast, you should use this macro. In debug mode, we +// use dynamic_cast<> to double-check the downcast is legal (we die +// if it's not). In normal mode, we do the efficient static_cast<> +// instead. Thus, it's important to test in debug mode to make sure +// the cast is legal! +// This is the only place in the code we should use dynamic_cast<>. +// In particular, you SHOULDN'T be using dynamic_cast<> in order to +// do RTTI (eg code like this: +// if (dynamic_cast(foo)) HandleASubclass1Object(foo); +// if (dynamic_cast(foo)) HandleASubclass2Object(foo); +// You should design the code some other way not to need this. + +template // use like this: down_cast(foo); +inline To down_cast(From* f) { // so we only accept pointers + // Ensures that To is a sub-type of From *. This test is here only + // for compile-time type checking, and has no overhead in an + // optimized build at run-time, as it will be optimized away + // completely. + if (false) { + implicit_cast(0); + } + +#if !defined(NDEBUG) && !defined(GOOGLE_PROTOBUF_NO_RTTI) + assert(f == NULL || dynamic_cast(f) != NULL); // RTTI: debug mode only! +#endif + return static_cast(f); +} + +} // namespace internal + +// We made these internal so that they would show up as such in the docs, +// but we don't want to stick "internal::" in front of them everywhere. +using internal::implicit_cast; +using internal::down_cast; + +// The COMPILE_ASSERT macro can be used to verify that a compile time +// expression is true. For example, you could use it to verify the +// size of a static array: +// +// COMPILE_ASSERT(ARRAYSIZE(content_type_names) == CONTENT_NUM_TYPES, +// content_type_names_incorrect_size); +// +// or to make sure a struct is smaller than a certain size: +// +// COMPILE_ASSERT(sizeof(foo) < 128, foo_too_large); +// +// The second argument to the macro is the name of the variable. If +// the expression is false, most compilers will issue a warning/error +// containing the name of the variable. + +namespace internal { + +template +struct CompileAssert { +}; + +} // namespace internal + +#undef GOOGLE_COMPILE_ASSERT +#define GOOGLE_COMPILE_ASSERT(expr, msg) \ + typedef ::google::protobuf::internal::CompileAssert<(bool(expr))> \ + msg[bool(expr) ? 1 : -1] + +// Implementation details of COMPILE_ASSERT: +// +// - COMPILE_ASSERT works by defining an array type that has -1 +// elements (and thus is invalid) when the expression is false. +// +// - The simpler definition +// +// #define COMPILE_ASSERT(expr, msg) typedef char msg[(expr) ? 1 : -1] +// +// does not work, as gcc supports variable-length arrays whose sizes +// are determined at run-time (this is gcc's extension and not part +// of the C++ standard). As a result, gcc fails to reject the +// following code with the simple definition: +// +// int foo; +// COMPILE_ASSERT(foo, msg); // not supposed to compile as foo is +// // not a compile-time constant. +// +// - By using the type CompileAssert<(bool(expr))>, we ensures that +// expr is a compile-time constant. (Template arguments must be +// determined at compile-time.) +// +// - The outter parentheses in CompileAssert<(bool(expr))> are necessary +// to work around a bug in gcc 3.4.4 and 4.0.1. If we had written +// +// CompileAssert +// +// instead, these compilers will refuse to compile +// +// COMPILE_ASSERT(5 > 0, some_message); +// +// (They seem to think the ">" in "5 > 0" marks the end of the +// template argument list.) +// +// - The array size is (bool(expr) ? 1 : -1), instead of simply +// +// ((expr) ? 1 : -1). +// +// This is to avoid running into a bug in MS VC 7.1, which +// causes ((0.0) ? 1 : -1) to incorrectly evaluate to 1. + +// =================================================================== +// from google3/base/scoped_ptr.h + +namespace internal { + +// This is an implementation designed to match the anticipated future TR2 +// implementation of the scoped_ptr class, and its closely-related brethren, +// scoped_array, scoped_ptr_malloc, and make_scoped_ptr. + +template class scoped_ptr; +template class scoped_array; + +// A scoped_ptr is like a T*, except that the destructor of scoped_ptr +// automatically deletes the pointer it holds (if any). +// That is, scoped_ptr owns the T object that it points to. +// Like a T*, a scoped_ptr may hold either NULL or a pointer to a T object. +// +// The size of a scoped_ptr is small: +// sizeof(scoped_ptr) == sizeof(C*) +template +class scoped_ptr { + public: + + // The element type + typedef C element_type; + + // Constructor. Defaults to intializing with NULL. + // There is no way to create an uninitialized scoped_ptr. + // The input parameter must be allocated with new. + explicit scoped_ptr(C* p = NULL) : ptr_(p) { } + + // Destructor. If there is a C object, delete it. + // We don't need to test ptr_ == NULL because C++ does that for us. + ~scoped_ptr() { + enum { type_must_be_complete = sizeof(C) }; + delete ptr_; + } + + // Reset. Deletes the current owned object, if any. + // Then takes ownership of a new object, if given. + // this->reset(this->get()) works. + void reset(C* p = NULL) { + if (p != ptr_) { + enum { type_must_be_complete = sizeof(C) }; + delete ptr_; + ptr_ = p; + } + } + + // Accessors to get the owned object. + // operator* and operator-> will assert() if there is no current object. + C& operator*() const { + assert(ptr_ != NULL); + return *ptr_; + } + C* operator->() const { + assert(ptr_ != NULL); + return ptr_; + } + C* get() const { return ptr_; } + + // Comparison operators. + // These return whether two scoped_ptr refer to the same object, not just to + // two different but equal objects. + bool operator==(C* p) const { return ptr_ == p; } + bool operator!=(C* p) const { return ptr_ != p; } + + // Swap two scoped pointers. + void swap(scoped_ptr& p2) { + C* tmp = ptr_; + ptr_ = p2.ptr_; + p2.ptr_ = tmp; + } + + // Release a pointer. + // The return value is the current pointer held by this object. + // If this object holds a NULL pointer, the return value is NULL. + // After this operation, this object will hold a NULL pointer, + // and will not own the object any more. + C* release() { + C* retVal = ptr_; + ptr_ = NULL; + return retVal; + } + + private: + C* ptr_; + + // Forbid comparison of scoped_ptr types. If C2 != C, it totally doesn't + // make sense, and if C2 == C, it still doesn't make sense because you should + // never have the same object owned by two different scoped_ptrs. + template bool operator==(scoped_ptr const& p2) const; + template bool operator!=(scoped_ptr const& p2) const; + + // Disallow evil constructors + scoped_ptr(const scoped_ptr&); + void operator=(const scoped_ptr&); +}; + +// scoped_array is like scoped_ptr, except that the caller must allocate +// with new [] and the destructor deletes objects with delete []. +// +// As with scoped_ptr, a scoped_array either points to an object +// or is NULL. A scoped_array owns the object that it points to. +// +// Size: sizeof(scoped_array) == sizeof(C*) +template +class scoped_array { + public: + + // The element type + typedef C element_type; + + // Constructor. Defaults to intializing with NULL. + // There is no way to create an uninitialized scoped_array. + // The input parameter must be allocated with new []. + explicit scoped_array(C* p = NULL) : array_(p) { } + + // Destructor. If there is a C object, delete it. + // We don't need to test ptr_ == NULL because C++ does that for us. + ~scoped_array() { + enum { type_must_be_complete = sizeof(C) }; + delete[] array_; + } + + // Reset. Deletes the current owned object, if any. + // Then takes ownership of a new object, if given. + // this->reset(this->get()) works. + void reset(C* p = NULL) { + if (p != array_) { + enum { type_must_be_complete = sizeof(C) }; + delete[] array_; + array_ = p; + } + } + + // Get one element of the current object. + // Will assert() if there is no current object, or index i is negative. + C& operator[](std::ptrdiff_t i) const { + assert(i >= 0); + assert(array_ != NULL); + return array_[i]; + } + + // Get a pointer to the zeroth element of the current object. + // If there is no current object, return NULL. + C* get() const { + return array_; + } + + // Comparison operators. + // These return whether two scoped_array refer to the same object, not just to + // two different but equal objects. + bool operator==(C* p) const { return array_ == p; } + bool operator!=(C* p) const { return array_ != p; } + + // Swap two scoped arrays. + void swap(scoped_array& p2) { + C* tmp = array_; + array_ = p2.array_; + p2.array_ = tmp; + } + + // Release an array. + // The return value is the current pointer held by this object. + // If this object holds a NULL pointer, the return value is NULL. + // After this operation, this object will hold a NULL pointer, + // and will not own the object any more. + C* release() { + C* retVal = array_; + array_ = NULL; + return retVal; + } + + private: + C* array_; + + // Forbid comparison of different scoped_array types. + template bool operator==(scoped_array const& p2) const; + template bool operator!=(scoped_array const& p2) const; + + // Disallow evil constructors + scoped_array(const scoped_array&); + void operator=(const scoped_array&); +}; + +} // namespace internal + +// We made these internal so that they would show up as such in the docs, +// but we don't want to stick "internal::" in front of them everywhere. +using internal::scoped_ptr; +using internal::scoped_array; + +// =================================================================== +// emulates google3/base/logging.h + +enum LogLevel { + LOGLEVEL_INFO, // Informational. This is never actually used by + // libprotobuf. + LOGLEVEL_WARNING, // Warns about issues that, although not technically a + // problem now, could cause problems in the future. For + // example, a // warning will be printed when parsing a + // message that is near the message size limit. + LOGLEVEL_ERROR, // An error occurred which should never happen during + // normal use. + LOGLEVEL_FATAL, // An error occurred from which the library cannot + // recover. This usually indicates a programming error + // in the code which calls the library, especially when + // compiled in debug mode. + +#ifdef NDEBUG + LOGLEVEL_DFATAL = LOGLEVEL_ERROR +#else + LOGLEVEL_DFATAL = LOGLEVEL_FATAL +#endif +}; + +namespace internal { + +class LogFinisher; + +class LIBPROTOBUF_EXPORT LogMessage { + public: + LogMessage(LogLevel level, const char* filename, int line); + ~LogMessage(); + + LogMessage& operator<<(const string& value); + LogMessage& operator<<(const char* value); + LogMessage& operator<<(char value); + LogMessage& operator<<(int value); + LogMessage& operator<<(uint value); + LogMessage& operator<<(long value); + LogMessage& operator<<(unsigned long value); + LogMessage& operator<<(double value); + + private: + friend class LogFinisher; + void Finish(); + + LogLevel level_; + const char* filename_; + int line_; + string message_; +}; + +// Used to make the entire "LOG(BLAH) << etc." expression have a void return +// type and print a newline after each message. +class LIBPROTOBUF_EXPORT LogFinisher { + public: + void operator=(LogMessage& other); +}; + +} // namespace internal + +// Undef everything in case we're being mixed with some other Google library +// which already defined them itself. Presumably all Google libraries will +// support the same syntax for these so it should not be a big deal if they +// end up using our definitions instead. +#undef GOOGLE_LOG +#undef GOOGLE_LOG_IF + +#undef GOOGLE_CHECK +#undef GOOGLE_CHECK_EQ +#undef GOOGLE_CHECK_NE +#undef GOOGLE_CHECK_LT +#undef GOOGLE_CHECK_LE +#undef GOOGLE_CHECK_GT +#undef GOOGLE_CHECK_GE + +#undef GOOGLE_DLOG +#undef GOOGLE_DCHECK +#undef GOOGLE_DCHECK_EQ +#undef GOOGLE_DCHECK_NE +#undef GOOGLE_DCHECK_LT +#undef GOOGLE_DCHECK_LE +#undef GOOGLE_DCHECK_GT +#undef GOOGLE_DCHECK_GE + +#define GOOGLE_LOG(LEVEL) \ + ::google::protobuf::internal::LogFinisher() = \ + ::google::protobuf::internal::LogMessage( \ + ::google::protobuf::LOGLEVEL_##LEVEL, __FILE__, __LINE__) +#define GOOGLE_LOG_IF(LEVEL, CONDITION) \ + !(CONDITION) ? (void)0 : GOOGLE_LOG(LEVEL) + +#define GOOGLE_CHECK(EXPRESSION) \ + GOOGLE_LOG_IF(FATAL, !(EXPRESSION)) << "CHECK failed: " #EXPRESSION ": " +#define GOOGLE_CHECK_EQ(A, B) GOOGLE_CHECK((A) == (B)) +#define GOOGLE_CHECK_NE(A, B) GOOGLE_CHECK((A) != (B)) +#define GOOGLE_CHECK_LT(A, B) GOOGLE_CHECK((A) < (B)) +#define GOOGLE_CHECK_LE(A, B) GOOGLE_CHECK((A) <= (B)) +#define GOOGLE_CHECK_GT(A, B) GOOGLE_CHECK((A) > (B)) +#define GOOGLE_CHECK_GE(A, B) GOOGLE_CHECK((A) >= (B)) + +#ifdef NDEBUG + +#define GOOGLE_DLOG GOOGLE_LOG_IF(INFO, false) + +#define GOOGLE_DCHECK(EXPRESSION) while(false) GOOGLE_CHECK(EXPRESSION) +#define GOOGLE_DCHECK_EQ(A, B) GOOGLE_DCHECK((A) == (B)) +#define GOOGLE_DCHECK_NE(A, B) GOOGLE_DCHECK((A) != (B)) +#define GOOGLE_DCHECK_LT(A, B) GOOGLE_DCHECK((A) < (B)) +#define GOOGLE_DCHECK_LE(A, B) GOOGLE_DCHECK((A) <= (B)) +#define GOOGLE_DCHECK_GT(A, B) GOOGLE_DCHECK((A) > (B)) +#define GOOGLE_DCHECK_GE(A, B) GOOGLE_DCHECK((A) >= (B)) + +#else // NDEBUG + +#define GOOGLE_DLOG GOOGLE_LOG + +#define GOOGLE_DCHECK GOOGLE_CHECK +#define GOOGLE_DCHECK_EQ GOOGLE_CHECK_EQ +#define GOOGLE_DCHECK_NE GOOGLE_CHECK_NE +#define GOOGLE_DCHECK_LT GOOGLE_CHECK_LT +#define GOOGLE_DCHECK_LE GOOGLE_CHECK_LE +#define GOOGLE_DCHECK_GT GOOGLE_CHECK_GT +#define GOOGLE_DCHECK_GE GOOGLE_CHECK_GE + +#endif // !NDEBUG + +typedef void LogHandler(LogLevel level, const char* filename, int line, + const string& message); + +// The protobuf library sometimes writes warning and error messages to +// stderr. These messages are primarily useful for developers, but may +// also help end users figure out a problem. If you would prefer that +// these messages be sent somewhere other than stderr, call SetLogHandler() +// to set your own handler. This returns the old handler. Set the handler +// to NULL to ignore log messages (but see also LogSilencer, below). +// +// Obviously, SetLogHandler is not thread-safe. You should only call it +// at initialization time, and probably not from library code. If you +// simply want to suppress log messages temporarily (e.g. because you +// have some code that tends to trigger them frequently and you know +// the warnings are not important to you), use the LogSilencer class +// below. +LIBPROTOBUF_EXPORT LogHandler* SetLogHandler(LogHandler* new_func); + +// Create a LogSilencer if you want to temporarily suppress all log +// messages. As long as any LogSilencer objects exist, non-fatal +// log messages will be discarded (the current LogHandler will *not* +// be called). Constructing a LogSilencer is thread-safe. You may +// accidentally suppress log messages occurring in another thread, but +// since messages are generally for debugging purposes only, this isn't +// a big deal. If you want to intercept log messages, use SetLogHandler(). +class LIBPROTOBUF_EXPORT LogSilencer { + public: + LogSilencer(); + ~LogSilencer(); +}; + +// =================================================================== +// emulates google3/base/callback.h + +// Abstract interface for a callback. When calling an RPC, you must provide +// a Closure to call when the procedure completes. See the Service interface +// in service.h. +// +// To automatically construct a Closure which calls a particular function or +// method with a particular set of parameters, use the NewCallback() function. +// Example: +// void FooDone(const FooResponse* response) { +// ... +// } +// +// void CallFoo() { +// ... +// // When done, call FooDone() and pass it a pointer to the response. +// Closure* callback = NewCallback(&FooDone, response); +// // Make the call. +// service->Foo(controller, request, response, callback); +// } +// +// Example that calls a method: +// class Handler { +// public: +// ... +// +// void FooDone(const FooResponse* response) { +// ... +// } +// +// void CallFoo() { +// ... +// // When done, call FooDone() and pass it a pointer to the response. +// Closure* callback = NewCallback(this, &Handler::FooDone, response); +// // Make the call. +// service->Foo(controller, request, response, callback); +// } +// }; +// +// Currently NewCallback() supports binding zero, one, or two arguments. +// +// Callbacks created with NewCallback() automatically delete themselves when +// executed. They should be used when a callback is to be called exactly +// once (usually the case with RPC callbacks). If a callback may be called +// a different number of times (including zero), create it with +// NewPermanentCallback() instead. You are then responsible for deleting the +// callback (using the "delete" keyword as normal). +// +// Note that NewCallback() is a bit touchy regarding argument types. Generally, +// the values you provide for the parameter bindings must exactly match the +// types accepted by the callback function. For example: +// void Foo(string s); +// NewCallback(&Foo, "foo"); // WON'T WORK: const char* != string +// NewCallback(&Foo, string("foo")); // WORKS +// Also note that the arguments cannot be references: +// void Foo(const string& s); +// string my_str; +// NewCallback(&Foo, my_str); // WON'T WORK: Can't use referecnes. +// However, correctly-typed pointers will work just fine. +class LIBPROTOBUF_EXPORT Closure { + public: + Closure() {} + virtual ~Closure(); + + virtual void Run() = 0; + + private: + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Closure); +}; + +namespace internal { + +class LIBPROTOBUF_EXPORT FunctionClosure0 : public Closure { + public: + typedef void (*FunctionType)(); + + FunctionClosure0(FunctionType function, bool self_deleting) + : function_(function), self_deleting_(self_deleting) {} + ~FunctionClosure0(); + + void Run() { + function_(); + if (self_deleting_) delete this; + } + + private: + FunctionType function_; + bool self_deleting_; +}; + +template +class MethodClosure0 : public Closure { + public: + typedef void (Class::*MethodType)(); + + MethodClosure0(Class* object, MethodType method, bool self_deleting) + : object_(object), method_(method), self_deleting_(self_deleting) {} + ~MethodClosure0() {} + + void Run() { + (object_->*method_)(); + if (self_deleting_) delete this; + } + + private: + Class* object_; + MethodType method_; + bool self_deleting_; +}; + +template +class FunctionClosure1 : public Closure { + public: + typedef void (*FunctionType)(Arg1 arg1); + + FunctionClosure1(FunctionType function, bool self_deleting, + Arg1 arg1) + : function_(function), self_deleting_(self_deleting), + arg1_(arg1) {} + ~FunctionClosure1() {} + + void Run() { + function_(arg1_); + if (self_deleting_) delete this; + } + + private: + FunctionType function_; + bool self_deleting_; + Arg1 arg1_; +}; + +template +class MethodClosure1 : public Closure { + public: + typedef void (Class::*MethodType)(Arg1 arg1); + + MethodClosure1(Class* object, MethodType method, bool self_deleting, + Arg1 arg1) + : object_(object), method_(method), self_deleting_(self_deleting), + arg1_(arg1) {} + ~MethodClosure1() {} + + void Run() { + (object_->*method_)(arg1_); + if (self_deleting_) delete this; + } + + private: + Class* object_; + MethodType method_; + bool self_deleting_; + Arg1 arg1_; +}; + +template +class FunctionClosure2 : public Closure { + public: + typedef void (*FunctionType)(Arg1 arg1, Arg2 arg2); + + FunctionClosure2(FunctionType function, bool self_deleting, + Arg1 arg1, Arg2 arg2) + : function_(function), self_deleting_(self_deleting), + arg1_(arg1), arg2_(arg2) {} + ~FunctionClosure2() {} + + void Run() { + function_(arg1_, arg2_); + if (self_deleting_) delete this; + } + + private: + FunctionType function_; + bool self_deleting_; + Arg1 arg1_; + Arg2 arg2_; +}; + +template +class MethodClosure2 : public Closure { + public: + typedef void (Class::*MethodType)(Arg1 arg1, Arg2 arg2); + + MethodClosure2(Class* object, MethodType method, bool self_deleting, + Arg1 arg1, Arg2 arg2) + : object_(object), method_(method), self_deleting_(self_deleting), + arg1_(arg1), arg2_(arg2) {} + ~MethodClosure2() {} + + void Run() { + (object_->*method_)(arg1_, arg2_); + if (self_deleting_) delete this; + } + + private: + Class* object_; + MethodType method_; + bool self_deleting_; + Arg1 arg1_; + Arg2 arg2_; +}; + +} // namespace internal + +// See Closure. +inline Closure* NewCallback(void (*function)()) { + return new internal::FunctionClosure0(function, true); +} + +// See Closure. +inline Closure* NewPermanentCallback(void (*function)()) { + return new internal::FunctionClosure0(function, false); +} + +// See Closure. +template +inline Closure* NewCallback(Class* object, void (Class::*method)()) { + return new internal::MethodClosure0(object, method, true); +} + +// See Closure. +template +inline Closure* NewPermanentCallback(Class* object, void (Class::*method)()) { + return new internal::MethodClosure0(object, method, false); +} + +// See Closure. +template +inline Closure* NewCallback(void (*function)(Arg1), + Arg1 arg1) { + return new internal::FunctionClosure1(function, true, arg1); +} + +// See Closure. +template +inline Closure* NewPermanentCallback(void (*function)(Arg1), + Arg1 arg1) { + return new internal::FunctionClosure1(function, false, arg1); +} + +// See Closure. +template +inline Closure* NewCallback(Class* object, void (Class::*method)(Arg1), + Arg1 arg1) { + return new internal::MethodClosure1(object, method, true, arg1); +} + +// See Closure. +template +inline Closure* NewPermanentCallback(Class* object, void (Class::*method)(Arg1), + Arg1 arg1) { + return new internal::MethodClosure1(object, method, false, arg1); +} + +// See Closure. +template +inline Closure* NewCallback(void (*function)(Arg1, Arg2), + Arg1 arg1, Arg2 arg2) { + return new internal::FunctionClosure2( + function, true, arg1, arg2); +} + +// See Closure. +template +inline Closure* NewPermanentCallback(void (*function)(Arg1, Arg2), + Arg1 arg1, Arg2 arg2) { + return new internal::FunctionClosure2( + function, false, arg1, arg2); +} + +// See Closure. +template +inline Closure* NewCallback(Class* object, void (Class::*method)(Arg1, Arg2), + Arg1 arg1, Arg2 arg2) { + return new internal::MethodClosure2( + object, method, true, arg1, arg2); +} + +// See Closure. +template +inline Closure* NewPermanentCallback( + Class* object, void (Class::*method)(Arg1, Arg2), + Arg1 arg1, Arg2 arg2) { + return new internal::MethodClosure2( + object, method, false, arg1, arg2); +} + +// A function which does nothing. Useful for creating no-op callbacks, e.g.: +// Closure* nothing = NewCallback(&DoNothing); +void LIBPROTOBUF_EXPORT DoNothing(); + +// =================================================================== +// emulates google3/base/mutex.h + +namespace internal { + +// A Mutex is a non-reentrant (aka non-recursive) mutex. At most one thread T +// may hold a mutex at a given time. If T attempts to Lock() the same Mutex +// while holding it, T will deadlock. +class LIBPROTOBUF_EXPORT Mutex { + public: + // Create a Mutex that is not held by anybody. + Mutex(); + + // Destructor + ~Mutex(); + + // Block if necessary until this Mutex is free, then acquire it exclusively. + void Lock(); + + // Release this Mutex. Caller must hold it exclusively. + void Unlock(); + + // Crash if this Mutex is not held exclusively by this thread. + // May fail to crash when it should; will never crash when it should not. + void AssertHeld(); + + private: + struct Internal; + Internal* mInternal; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Mutex); +}; + +// MutexLock(mu) acquires mu when constructed and releases it when destroyed. +class LIBPROTOBUF_EXPORT MutexLock { + public: + explicit MutexLock(Mutex *mu) : mu_(mu) { this->mu_->Lock(); } + ~MutexLock() { this->mu_->Unlock(); } + private: + Mutex *const mu_; + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MutexLock); +}; + +// TODO(kenton): Implement these? Hard to implement portably. +typedef MutexLock ReaderMutexLock; +typedef MutexLock WriterMutexLock; + +// MutexLockMaybe is like MutexLock, but is a no-op when mu is NULL. +class LIBPROTOBUF_EXPORT MutexLockMaybe { + public: + explicit MutexLockMaybe(Mutex *mu) : + mu_(mu) { if (this->mu_ != NULL) { this->mu_->Lock(); } } + ~MutexLockMaybe() { if (this->mu_ != NULL) { this->mu_->Unlock(); } } + private: + Mutex *const mu_; + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MutexLockMaybe); +}; + +} // namespace internal + +// We made these internal so that they would show up as such in the docs, +// but we don't want to stick "internal::" in front of them everywhere. +using internal::Mutex; +using internal::MutexLock; +using internal::ReaderMutexLock; +using internal::WriterMutexLock; +using internal::MutexLockMaybe; + +// =================================================================== +// from google3/base/type_traits.h + +namespace internal { + +// Specified by TR1 [4.7.4] Pointer modifications. +template struct remove_pointer { typedef T type; }; +template struct remove_pointer { typedef T type; }; +template struct remove_pointer { typedef T type; }; +template struct remove_pointer { typedef T type; }; +template struct remove_pointer { + typedef T type; }; + +// =================================================================== + +// Checks if the buffer contains structurally-valid UTF-8. Implemented in +// structurally_valid.cc. +LIBPROTOBUF_EXPORT bool IsStructurallyValidUTF8(const char* buf, int len); + +} // namespace internal + +// =================================================================== +// Shutdown support. + +// Shut down the entire protocol buffers library, deleting all static-duration +// objects allocated by the library or by generated .pb.cc files. +// +// There are two reasons you might want to call this: +// * You use a draconian definition of "memory leak" in which you expect +// every single malloc() to have a corresponding free(), even for objects +// which live until program exit. +// * You are writing a dynamically-loaded library which needs to clean up +// after itself when the library is unloaded. +// +// It is safe to call this multiple times. However, it is not safe to use +// any other part of the protocol buffers library after +// ShutdownProtobufLibrary() has been called. +LIBPROTOBUF_EXPORT void ShutdownProtobufLibrary(); + +namespace internal { + +// Register a function to be called when ShutdownProtocolBuffers() is called. +LIBPROTOBUF_EXPORT void OnShutdown(void (*func)()); + +} // namespace internal + +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_COMMON_H__ diff --git a/3party_sloynik/protobuf/src/google/protobuf/stubs/hash.cc b/3party_sloynik/protobuf/src/google/protobuf/stubs/hash.cc new file mode 100644 index 0000000000..9eaf4a1ee2 --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/stubs/hash.cc @@ -0,0 +1,41 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) + +#include + +namespace google { +namespace protobuf { + +// Nothing needed here right now. + +} // namespace protobuf +} // namespace google diff --git a/3party_sloynik/protobuf/src/google/protobuf/stubs/hash.h b/3party_sloynik/protobuf/src/google/protobuf/stubs/hash.h new file mode 100644 index 0000000000..6e4421048b --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/stubs/hash.h @@ -0,0 +1,220 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// +// Deals with the fact that hash_map is not defined everywhere. + +#ifndef GOOGLE_PROTOBUF_STUBS_HASH_H__ +#define GOOGLE_PROTOBUF_STUBS_HASH_H__ + +#include +#include +//#include "config.h" + +#if defined(HAVE_HASH_MAP) && defined(HAVE_HASH_SET) +#include HASH_MAP_H +#include HASH_SET_H +#else +#define MISSING_HASH +#include +#include +#endif + +namespace google { +namespace protobuf { + +#ifdef MISSING_HASH + +// This system doesn't have hash_map or hash_set. Emulate them using map and +// set. + +// Make hash be the same as less. Note that everywhere where custom +// hash functions are defined in the protobuf code, they are also defined such +// that they can be used as "less" functions, which is required by MSVC anyway. +template +struct hash { + // Dummy, just to make derivative hash functions compile. + int operator()(const Key& key) { + GOOGLE_LOG(FATAL) << "Should never be called."; + return 0; + } + + inline bool operator()(const Key& a, const Key& b) const { + return a < b; + } +}; + +// Make sure char* is compared by value. +template <> +struct hash { + // Dummy, just to make derivative hash functions compile. + int operator()(const char* key) { + GOOGLE_LOG(FATAL) << "Should never be called."; + return 0; + } + + inline bool operator()(const char* a, const char* b) const { + return strcmp(a, b) < 0; + } +}; + +template , + typename EqualKey = int > +class hash_map : public std::map { +}; + +template , + typename EqualKey = int > +class hash_set : public std::set { +}; + +#elif defined(_MSC_VER) && !defined(_STLPORT_VERSION) + +template +struct hash : public HASH_NAMESPACE::hash_compare { +}; + +// MSVC's hash_compare hashes based on the string contents but +// compares based on the string pointer. WTF? +class CstringLess { + public: + inline bool operator()(const char* a, const char* b) const { + return strcmp(a, b) < 0; + } +}; + +template <> +struct hash + : public HASH_NAMESPACE::hash_compare { +}; + +template , + typename EqualKey = int > +class hash_map : public HASH_NAMESPACE::hash_map< + Key, Data, HashFcn> { +}; + +template , + typename EqualKey = int > +class hash_set : public HASH_NAMESPACE::hash_set< + Key, HashFcn> { +}; + +#else + +template +struct hash : public HASH_NAMESPACE::hash { +}; + +template +struct hash { + inline size_t operator()(const Key* key) const { + return reinterpret_cast(key); + } +}; + +// Unlike the old SGI version, the TR1 "hash" does not special-case char*. So, +// we go ahead and provide our own implementation. +template <> +struct hash { + inline size_t operator()(const char* str) const { + size_t result = 0; + for (; *str != '\0'; str++) { + result = 5 * result + *str; + } + return result; + } +}; + +template , + typename EqualKey = std::equal_to > +class hash_map : public HASH_NAMESPACE::HASH_MAP_CLASS< + Key, Data, HashFcn, EqualKey> { +}; + +template , + typename EqualKey = std::equal_to > +class hash_set : public HASH_NAMESPACE::HASH_SET_CLASS< + Key, HashFcn, EqualKey> { +}; + +#endif + +template <> +struct hash { + inline size_t operator()(const string& key) const { + return hash()(key.c_str()); + } + + static const size_t bucket_size = 4; + static const size_t min_buckets = 8; + inline size_t operator()(const string& a, const string& b) const { + return a < b; + } +}; + +template +struct hash > { + inline size_t operator()(const pair& key) const { + size_t first_hash = hash()(key.first); + size_t second_hash = hash()(key.second); + + // FIXME(kenton): What is the best way to compute this hash? I have + // no idea! This seems a bit better than an XOR. + return first_hash * ((1 << 16) - 1) + second_hash; + } + + static const size_t bucket_size = 4; + static const size_t min_buckets = 8; + inline size_t operator()(const pair& a, + const pair& b) const { + return a < b; + } +}; + +// Used by GCC/SGI STL only. (Why isn't this provided by the standard +// library? :( ) +struct streq { + inline bool operator()(const char* a, const char* b) const { + return strcmp(a, b) == 0; + } +}; + +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_STUBS_HASH_H__ diff --git a/3party_sloynik/protobuf/src/google/protobuf/stubs/map-util.h b/3party_sloynik/protobuf/src/google/protobuf/stubs/map-util.h new file mode 100644 index 0000000000..f5c9d6b6d9 --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/stubs/map-util.h @@ -0,0 +1,119 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// from google3/util/gtl/map-util.h +// Author: Anton Carver + +#ifndef GOOGLE_PROTOBUF_STUBS_MAP_UTIL_H__ +#define GOOGLE_PROTOBUF_STUBS_MAP_UTIL_H__ + +#include + +namespace google { +namespace protobuf { + +// Perform a lookup in a map or hash_map. +// If the key is present in the map then the value associated with that +// key is returned, otherwise the value passed as a default is returned. +template +const typename Collection::value_type::second_type& +FindWithDefault(const Collection& collection, + const typename Collection::value_type::first_type& key, + const typename Collection::value_type::second_type& value) { + typename Collection::const_iterator it = collection.find(key); + if (it == collection.end()) { + return value; + } + return it->second; +} + +// Perform a lookup in a map or hash_map. +// If the key is present a const pointer to the associated value is returned, +// otherwise a NULL pointer is returned. +template +const typename Collection::value_type::second_type* +FindOrNull(const Collection& collection, + const typename Collection::value_type::first_type& key) { + typename Collection::const_iterator it = collection.find(key); + if (it == collection.end()) { + return 0; + } + return &it->second; +} + +// Perform a lookup in a map or hash_map whose values are pointers. +// If the key is present a const pointer to the associated value is returned, +// otherwise a NULL pointer is returned. +// This function does not distinguish between a missing key and a key mapped +// to a NULL value. +template +const typename Collection::value_type::second_type +FindPtrOrNull(const Collection& collection, + const typename Collection::value_type::first_type& key) { + typename Collection::const_iterator it = collection.find(key); + if (it == collection.end()) { + return 0; + } + return it->second; +} + +// Change the value associated with a particular key in a map or hash_map. +// If the key is not present in the map the key and value are inserted, +// otherwise the value is updated to be a copy of the value provided. +// True indicates that an insert took place, false indicates an update. +template +bool InsertOrUpdate(Collection * const collection, + const Key& key, const Value& value) { + pair ret = + collection->insert(typename Collection::value_type(key, value)); + if (!ret.second) { + // update + ret.first->second = value; + return false; + } + return true; +} + +// Insert a new key and value into a map or hash_map. +// If the key is not present in the map the key and value are +// inserted, otherwise nothing happens. True indicates that an insert +// took place, false indicates the key was already present. +template +bool InsertIfNotPresent(Collection * const collection, + const Key& key, const Value& value) { + pair ret = + collection->insert(typename Collection::value_type(key, value)); + return ret.second; +} + +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_STUBS_MAP_UTIL_H__ diff --git a/3party_sloynik/protobuf/src/google/protobuf/stubs/once.cc b/3party_sloynik/protobuf/src/google/protobuf/stubs/once.cc new file mode 100644 index 0000000000..9d32c7fba4 --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/stubs/once.cc @@ -0,0 +1,88 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// +// emulates google3/base/once.h +// +// This header is intended to be included only by internal .cc files and +// generated .pb.cc files. Users should not use this directly. + +#if defined(_WIN32) && !defined(_BADA_SIMULATOR) && !defined(_BADA_DEVICE) +#include +#endif + +#include + +namespace google { +namespace protobuf { + +#if defined(_WIN32) && !defined(_BADA_SIMULATOR) && !defined(_BADA_DEVICE) + +struct ProtobufOnceInternal { + ProtobufOnceInternal() { + InitializeCriticalSection(&critical_section); + } + ~ProtobufOnceInternal() { + DeleteCriticalSection(&critical_section); + } + CRITICAL_SECTION critical_section; +}; + +ProtobufOnceType::~ProtobufOnceType() +{ + delete internal_; + internal_ = NULL; +} + +ProtobufOnceType::ProtobufOnceType() { + // internal_ may be non-NULL if Init() was already called. + if (internal_ == NULL) internal_ = new ProtobufOnceInternal; +} + +void ProtobufOnceType::Init(void (*init_func)()) { + // internal_ may be NULL if we're still in dynamic initialization and the + // constructor has not been called yet. As mentioned in once.h, we assume + // that the program is still single-threaded at this time, and therefore it + // should be safe to initialize internal_ like so. + if (internal_ == NULL) internal_ = new ProtobufOnceInternal; + + EnterCriticalSection(&internal_->critical_section); + if (!initialized_) { + init_func(); + initialized_ = true; + } + LeaveCriticalSection(&internal_->critical_section); +} + +#endif + +} // namespace protobuf +} // namespace google diff --git a/3party_sloynik/protobuf/src/google/protobuf/stubs/once.h b/3party_sloynik/protobuf/src/google/protobuf/stubs/once.h new file mode 100644 index 0000000000..0dee407662 --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/stubs/once.h @@ -0,0 +1,123 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// +// emulates google3/base/once.h +// +// This header is intended to be included only by internal .cc files and +// generated .pb.cc files. Users should not use this directly. +// +// This is basically a portable version of pthread_once(). +// +// This header declares three things: +// * A type called ProtobufOnceType. +// * A macro GOOGLE_PROTOBUF_DECLARE_ONCE() which declares a variable of type +// ProtobufOnceType. This is the only legal way to declare such a variable. +// The macro may only be used at the global scope (you cannot create local +// or class member variables of this type). +// * A function GogoleOnceInit(ProtobufOnceType* once, void (*init_func)()). +// This function, when invoked multiple times given the same ProtobufOnceType +// object, will invoke init_func on the first call only, and will make sure +// none of the calls return before that first call to init_func has finished. +// +// This implements a way to perform lazy initialization. It's more efficient +// than using mutexes as no lock is needed if initialization has already +// happened. +// +// Example usage: +// void Init(); +// GOOGLE_PROTOBUF_DECLARE_ONCE(once_init); +// +// // Calls Init() exactly once. +// void InitOnce() { +// GoogleOnceInit(&once_init, &Init); +// } +// +// Note that if GoogleOnceInit() is called before main() has begun, it must +// only be called by the thread that will eventually call main() -- that is, +// the thread that performs dynamic initialization. In general this is a safe +// assumption since people don't usually construct threads before main() starts, +// but it is technically not guaranteed. Unfortunately, Win32 provides no way +// whatsoever to statically-initialize its synchronization primitives, so our +// only choice is to assume that dynamic initialization is single-threaded. + +#ifndef GOOGLE_PROTOBUF_STUBS_ONCE_H__ +#define GOOGLE_PROTOBUF_STUBS_ONCE_H__ + +#include + +#ifndef _WIN32 +#include +#endif + +namespace google { +namespace protobuf { + +#ifdef _WIN32 + +struct ProtobufOnceInternal; + +struct LIBPROTOBUF_EXPORT ProtobufOnceType { + ProtobufOnceType(); + ~ProtobufOnceType(); + void Init(void (*init_func)()); + + volatile bool initialized_; + ProtobufOnceInternal* internal_; +}; + +#define GOOGLE_PROTOBUF_DECLARE_ONCE(NAME) \ + ::google::protobuf::ProtobufOnceType NAME + +inline void GoogleOnceInit(ProtobufOnceType* once, void (*init_func)()) { + // Note: Double-checked locking is safe on x86. + if (!once->initialized_) { + once->Init(init_func); + } +} + +#else + +typedef pthread_once_t ProtobufOnceType; + +#define GOOGLE_PROTOBUF_DECLARE_ONCE(NAME) \ + pthread_once_t NAME = PTHREAD_ONCE_INIT + +inline void GoogleOnceInit(ProtobufOnceType* once, void (*init_func)()) { + pthread_once(once, init_func); +} + +#endif + +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_STUBS_ONCE_H__ diff --git a/3party_sloynik/protobuf/src/google/protobuf/stubs/stl_util-inl.h b/3party_sloynik/protobuf/src/google/protobuf/stubs/stl_util-inl.h new file mode 100644 index 0000000000..a2e671bb74 --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/stubs/stl_util-inl.h @@ -0,0 +1,121 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// from google3/util/gtl/stl_util-inl.h + +#ifndef GOOGLE_PROTOBUF_STUBS_STL_UTIL_INL_H__ +#define GOOGLE_PROTOBUF_STUBS_STL_UTIL_INL_H__ + +#include + +namespace google { +namespace protobuf { + +// STLDeleteContainerPointers() +// For a range within a container of pointers, calls delete +// (non-array version) on these pointers. +// NOTE: for these three functions, we could just implement a DeleteObject +// functor and then call for_each() on the range and functor, but this +// requires us to pull in all of algorithm.h, which seems expensive. +// For hash_[multi]set, it is important that this deletes behind the iterator +// because the hash_set may call the hash function on the iterator when it is +// advanced, which could result in the hash function trying to deference a +// stale pointer. +template +void STLDeleteContainerPointers(ForwardIterator begin, + ForwardIterator end) { + while (begin != end) { + ForwardIterator temp = begin; + ++begin; + delete *temp; + } +} + +// Inside Google, this function implements a horrible, disgusting hack in which +// we reach into the string's private implementation and resize it without +// initializing the new bytes. In some cases doing this can significantly +// improve performance. However, since it's totally non-portable it has no +// place in open source code. Feel free to fill this function in with your +// own disgusting hack if you want the perf boost. +inline void STLStringResizeUninitialized(string* s, size_t new_size) { + s->resize(new_size); +} + +// Return a mutable char* pointing to a string's internal buffer, +// which may not be null-terminated. Writing through this pointer will +// modify the string. +// +// string_as_array(&str)[i] is valid for 0 <= i < str.size() until the +// next call to a string method that invalidates iterators. +// +// As of 2006-04, there is no standard-blessed way of getting a +// mutable reference to a string's internal buffer. However, issue 530 +// (http://www.open-std.org/JTC1/SC22/WG21/docs/lwg-active.html#530) +// proposes this as the method. According to Matt Austern, this should +// already work on all current implementations. +inline char* string_as_array(string* str) { + // DO NOT USE const_cast(str->data())! See the unittest for why. + return str->empty() ? NULL : &*str->begin(); +} + +// STLDeleteElements() deletes all the elements in an STL container and clears +// the container. This function is suitable for use with a vector, set, +// hash_set, or any other STL container which defines sensible begin(), end(), +// and clear() methods. +// +// If container is NULL, this function is a no-op. +// +// As an alternative to calling STLDeleteElements() directly, consider +// ElementDeleter (defined below), which ensures that your container's elements +// are deleted when the ElementDeleter goes out of scope. +template +void STLDeleteElements(T *container) { + if (!container) return; + STLDeleteContainerPointers(container->begin(), container->end()); + container->clear(); +} + +// Given an STL container consisting of (key, value) pairs, STLDeleteValues +// deletes all the "value" components and clears the container. Does nothing +// in the case it's given a NULL pointer. + +template +void STLDeleteValues(T *v) { + if (!v) return; + for (typename T::iterator i = v->begin(); i != v->end(); ++i) { + delete i->second; + } + v->clear(); +} + +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_STUBS_STL_UTIL_INL_H__ diff --git a/3party_sloynik/protobuf/src/google/protobuf/wire_format_lite.cc b/3party_sloynik/protobuf/src/google/protobuf/wire_format_lite.cc new file mode 100644 index 0000000000..b1ff93a293 --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/wire_format_lite.cc @@ -0,0 +1,359 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. + +#include + +#include +#include +#include +#include +#include +#include +#include + +namespace google { +namespace protobuf { +namespace internal { + +#ifndef _MSC_VER // MSVC doesn't like definitions of inline constants, GCC + // requires them. +const int WireFormatLite::kMessageSetItemStartTag; +const int WireFormatLite::kMessageSetItemEndTag; +const int WireFormatLite::kMessageSetTypeIdTag; +const int WireFormatLite::kMessageSetMessageTag; + +#endif + +const int WireFormatLite::kMessageSetItemTagsSize = + io::CodedOutputStream::VarintSize32(kMessageSetItemStartTag) + + io::CodedOutputStream::VarintSize32(kMessageSetItemEndTag) + + io::CodedOutputStream::VarintSize32(kMessageSetTypeIdTag) + + io::CodedOutputStream::VarintSize32(kMessageSetMessageTag); + +const WireFormatLite::CppType +WireFormatLite::kFieldTypeToCppTypeMap[MAX_FIELD_TYPE + 1] = { + static_cast(0), // 0 is reserved for errors + + CPPTYPE_DOUBLE, // TYPE_DOUBLE + CPPTYPE_FLOAT, // TYPE_FLOAT + CPPTYPE_INT64, // TYPE_INT64 + CPPTYPE_UINT64, // TYPE_UINT64 + CPPTYPE_INT32, // TYPE_INT32 + CPPTYPE_UINT64, // TYPE_FIXED64 + CPPTYPE_UINT32, // TYPE_FIXED32 + CPPTYPE_BOOL, // TYPE_BOOL + CPPTYPE_STRING, // TYPE_STRING + CPPTYPE_MESSAGE, // TYPE_GROUP + CPPTYPE_MESSAGE, // TYPE_MESSAGE + CPPTYPE_STRING, // TYPE_BYTES + CPPTYPE_UINT32, // TYPE_UINT32 + CPPTYPE_ENUM, // TYPE_ENUM + CPPTYPE_INT32, // TYPE_SFIXED32 + CPPTYPE_INT64, // TYPE_SFIXED64 + CPPTYPE_INT32, // TYPE_SINT32 + CPPTYPE_INT64, // TYPE_SINT64 +}; + +const WireFormatLite::WireType +WireFormatLite::kWireTypeForFieldType[MAX_FIELD_TYPE + 1] = { + static_cast(-1), // invalid + WireFormatLite::WIRETYPE_FIXED64, // TYPE_DOUBLE + WireFormatLite::WIRETYPE_FIXED32, // TYPE_FLOAT + WireFormatLite::WIRETYPE_VARINT, // TYPE_INT64 + WireFormatLite::WIRETYPE_VARINT, // TYPE_UINT64 + WireFormatLite::WIRETYPE_VARINT, // TYPE_INT32 + WireFormatLite::WIRETYPE_FIXED64, // TYPE_FIXED64 + WireFormatLite::WIRETYPE_FIXED32, // TYPE_FIXED32 + WireFormatLite::WIRETYPE_VARINT, // TYPE_BOOL + WireFormatLite::WIRETYPE_LENGTH_DELIMITED, // TYPE_STRING + WireFormatLite::WIRETYPE_START_GROUP, // TYPE_GROUP + WireFormatLite::WIRETYPE_LENGTH_DELIMITED, // TYPE_MESSAGE + WireFormatLite::WIRETYPE_LENGTH_DELIMITED, // TYPE_BYTES + WireFormatLite::WIRETYPE_VARINT, // TYPE_UINT32 + WireFormatLite::WIRETYPE_VARINT, // TYPE_ENUM + WireFormatLite::WIRETYPE_FIXED32, // TYPE_SFIXED32 + WireFormatLite::WIRETYPE_FIXED64, // TYPE_SFIXED64 + WireFormatLite::WIRETYPE_VARINT, // TYPE_SINT32 + WireFormatLite::WIRETYPE_VARINT, // TYPE_SINT64 +}; + +bool WireFormatLite::SkipField( + io::CodedInputStream* input, uint32 tag) { + switch (WireFormatLite::GetTagWireType(tag)) { + case WireFormatLite::WIRETYPE_VARINT: { + uint64 value; + if (!input->ReadVarint64(&value)) return false; + return true; + } + case WireFormatLite::WIRETYPE_FIXED64: { + uint64 value; + if (!input->ReadLittleEndian64(&value)) return false; + return true; + } + case WireFormatLite::WIRETYPE_LENGTH_DELIMITED: { + uint32 length; + if (!input->ReadVarint32(&length)) return false; + if (!input->Skip(length)) return false; + return true; + } + case WireFormatLite::WIRETYPE_START_GROUP: { + if (!input->IncrementRecursionDepth()) return false; + if (!SkipMessage(input)) return false; + input->DecrementRecursionDepth(); + // Check that the ending tag matched the starting tag. + if (!input->LastTagWas(WireFormatLite::MakeTag( + WireFormatLite::GetTagFieldNumber(tag), + WireFormatLite::WIRETYPE_END_GROUP))) { + return false; + } + return true; + } + case WireFormatLite::WIRETYPE_END_GROUP: { + return false; + } + case WireFormatLite::WIRETYPE_FIXED32: { + uint32 value; + if (!input->ReadLittleEndian32(&value)) return false; + return true; + } + default: { + return false; + } + } +} + +bool WireFormatLite::SkipMessage(io::CodedInputStream* input) { + while(true) { + uint32 tag = input->ReadTag(); + if (tag == 0) { + // End of input. This is a valid place to end, so return true. + return true; + } + + WireFormatLite::WireType wire_type = WireFormatLite::GetTagWireType(tag); + + if (wire_type == WireFormatLite::WIRETYPE_END_GROUP) { + // Must be the end of the message. + return true; + } + + if (!SkipField(input, tag)) return false; + } +} + +bool FieldSkipper::SkipField( + io::CodedInputStream* input, uint32 tag) { + return WireFormatLite::SkipField(input, tag); +} + +bool FieldSkipper::SkipMessage(io::CodedInputStream* input) { + return WireFormatLite::SkipMessage(input); +} + +void FieldSkipper::SkipUnknownEnum( + int field_number, int value) { + // Nothing. +} + +bool WireFormatLite::ReadPackedEnumNoInline(io::CodedInputStream* input, + bool (*is_valid)(int), + RepeatedField* values) { + uint32 length; + if (!input->ReadVarint32(&length)) return false; + io::CodedInputStream::Limit limit = input->PushLimit(length); + while (input->BytesUntilLimit() > 0) { + int value; + if (!google::protobuf::internal::WireFormatLite::ReadPrimitive< + int, WireFormatLite::TYPE_ENUM>(input, &value)) { + return false; + } + if (is_valid(value)) { + values->Add(value); + } + } + input->PopLimit(limit); + return true; +} + +void WireFormatLite::WriteInt32(int field_number, int32 value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_VARINT, output); + WriteInt32NoTag(value, output); +} +void WireFormatLite::WriteInt64(int field_number, int64 value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_VARINT, output); + WriteInt64NoTag(value, output); +} +void WireFormatLite::WriteUInt32(int field_number, uint32 value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_VARINT, output); + WriteUInt32NoTag(value, output); +} +void WireFormatLite::WriteUInt64(int field_number, uint64 value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_VARINT, output); + WriteUInt64NoTag(value, output); +} +void WireFormatLite::WriteSInt32(int field_number, int32 value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_VARINT, output); + WriteSInt32NoTag(value, output); +} +void WireFormatLite::WriteSInt64(int field_number, int64 value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_VARINT, output); + WriteSInt64NoTag(value, output); +} +void WireFormatLite::WriteFixed32(int field_number, uint32 value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_FIXED32, output); + WriteFixed32NoTag(value, output); +} +void WireFormatLite::WriteFixed64(int field_number, uint64 value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_FIXED64, output); + WriteFixed64NoTag(value, output); +} +void WireFormatLite::WriteSFixed32(int field_number, int32 value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_FIXED32, output); + WriteSFixed32NoTag(value, output); +} +void WireFormatLite::WriteSFixed64(int field_number, int64 value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_FIXED64, output); + WriteSFixed64NoTag(value, output); +} +void WireFormatLite::WriteFloat(int field_number, float value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_FIXED32, output); + WriteFloatNoTag(value, output); +} +void WireFormatLite::WriteDouble(int field_number, double value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_FIXED64, output); + WriteDoubleNoTag(value, output); +} +void WireFormatLite::WriteBool(int field_number, bool value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_VARINT, output); + WriteBoolNoTag(value, output); +} +void WireFormatLite::WriteEnum(int field_number, int value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_VARINT, output); + WriteEnumNoTag(value, output); +} + +void WireFormatLite::WriteString(int field_number, const string& value, + io::CodedOutputStream* output) { + // String is for UTF-8 text only + WriteTag(field_number, WIRETYPE_LENGTH_DELIMITED, output); + output->WriteVarint32(value.size()); + output->WriteString(value); +} +void WireFormatLite::WriteBytes(int field_number, const string& value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_LENGTH_DELIMITED, output); + output->WriteVarint32(value.size()); + output->WriteString(value); +} + + +void WireFormatLite::WriteGroup(int field_number, + const MessageLite& value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_START_GROUP, output); + value.SerializeWithCachedSizes(output); + WriteTag(field_number, WIRETYPE_END_GROUP, output); +} + +void WireFormatLite::WriteMessage(int field_number, + const MessageLite& value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_LENGTH_DELIMITED, output); + const int size = value.GetCachedSize(); + output->WriteVarint32(size); + value.SerializeWithCachedSizes(output); +} + +void WireFormatLite::WriteGroupMaybeToArray(int field_number, + const MessageLite& value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_START_GROUP, output); + const int size = value.GetCachedSize(); + uint8* target = output->GetDirectBufferForNBytesAndAdvance(size); + if (target != NULL) { + uint8* end = value.SerializeWithCachedSizesToArray(target); + GOOGLE_DCHECK_EQ(end - target, size); + } else { + value.SerializeWithCachedSizes(output); + } + WriteTag(field_number, WIRETYPE_END_GROUP, output); +} + +void WireFormatLite::WriteMessageMaybeToArray(int field_number, + const MessageLite& value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_LENGTH_DELIMITED, output); + const int size = value.GetCachedSize(); + output->WriteVarint32(size); + uint8* target = output->GetDirectBufferForNBytesAndAdvance(size); + if (target != NULL) { + uint8* end = value.SerializeWithCachedSizesToArray(target); + GOOGLE_DCHECK_EQ(end - target, size); + } else { + value.SerializeWithCachedSizes(output); + } +} + +bool WireFormatLite::ReadString(io::CodedInputStream* input, + string* value) { + // String is for UTF-8 text only + uint32 length; + if (!input->ReadVarint32(&length)) return false; + if (!input->InternalReadStringInline(value, length)) return false; + return true; +} +bool WireFormatLite::ReadBytes(io::CodedInputStream* input, + string* value) { + uint32 length; + if (!input->ReadVarint32(&length)) return false; + return input->InternalReadStringInline(value, length); +} + +} // namespace internal +} // namespace protobuf +} // namespace google diff --git a/3party_sloynik/protobuf/src/google/protobuf/wire_format_lite.h b/3party_sloynik/protobuf/src/google/protobuf/wire_format_lite.h new file mode 100644 index 0000000000..e3d5b2d8d0 --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/wire_format_lite.h @@ -0,0 +1,620 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// atenasio@google.com (Chris Atenasio) (ZigZag transform) +// wink@google.com (Wink Saville) (refactored from wire_format.h) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// This header is logically internal, but is made public because it is used +// from protocol-compiler-generated code, which may reside in other components. + +#ifndef GOOGLE_PROTOBUF_WIRE_FORMAT_LITE_H__ +#define GOOGLE_PROTOBUF_WIRE_FORMAT_LITE_H__ + +#include +#include + +namespace google { + +namespace protobuf { + template class RepeatedField; // repeated_field.h + namespace io { + class CodedInputStream; // coded_stream.h + class CodedOutputStream; // coded_stream.h + } +} + +namespace protobuf { +namespace internal { + +class StringPieceField; + +// This class is for internal use by the protocol buffer library and by +// protocol-complier-generated message classes. It must not be called +// directly by clients. +// +// This class contains helpers for implementing the binary protocol buffer +// wire format without the need for reflection. Use WireFormat when using +// reflection. +// +// This class is really a namespace that contains only static methods. +class LIBPROTOBUF_EXPORT WireFormatLite { + public: + + // ----------------------------------------------------------------- + // Helper constants and functions related to the format. These are + // mostly meant for internal and generated code to use. + + // The wire format is composed of a sequence of tag/value pairs, each + // of which contains the value of one field (or one element of a repeated + // field). Each tag is encoded as a varint. The lower bits of the tag + // identify its wire type, which specifies the format of the data to follow. + // The rest of the bits contain the field number. Each type of field (as + // declared by FieldDescriptor::Type, in descriptor.h) maps to one of + // these wire types. Immediately following each tag is the field's value, + // encoded in the format specified by the wire type. Because the tag + // identifies the encoding of this data, it is possible to skip + // unrecognized fields for forwards compatibility. + + enum WireType { + WIRETYPE_VARINT = 0, + WIRETYPE_FIXED64 = 1, + WIRETYPE_LENGTH_DELIMITED = 2, + WIRETYPE_START_GROUP = 3, + WIRETYPE_END_GROUP = 4, + WIRETYPE_FIXED32 = 5, + }; + + // Lite alternative to FieldDescriptor::Type. Must be kept in sync. + enum FieldType { + TYPE_DOUBLE = 1, + TYPE_FLOAT = 2, + TYPE_INT64 = 3, + TYPE_UINT64 = 4, + TYPE_INT32 = 5, + TYPE_FIXED64 = 6, + TYPE_FIXED32 = 7, + TYPE_BOOL = 8, + TYPE_STRING = 9, + TYPE_GROUP = 10, + TYPE_MESSAGE = 11, + TYPE_BYTES = 12, + TYPE_UINT32 = 13, + TYPE_ENUM = 14, + TYPE_SFIXED32 = 15, + TYPE_SFIXED64 = 16, + TYPE_SINT32 = 17, + TYPE_SINT64 = 18, + MAX_FIELD_TYPE = 18, + }; + + // Lite alternative to FieldDescriptor::CppType. Must be kept in sync. + enum CppType { + CPPTYPE_INT32 = 1, + CPPTYPE_INT64 = 2, + CPPTYPE_UINT32 = 3, + CPPTYPE_UINT64 = 4, + CPPTYPE_DOUBLE = 5, + CPPTYPE_FLOAT = 6, + CPPTYPE_BOOL = 7, + CPPTYPE_ENUM = 8, + CPPTYPE_STRING = 9, + CPPTYPE_MESSAGE = 10, + MAX_CPPTYPE = 10, + }; + + // Helper method to get the CppType for a particular Type. + static CppType FieldTypeToCppType(FieldType type); + + // Given a FieldSescriptor::Type return its WireType + static inline WireFormatLite::WireType WireTypeForFieldType( + WireFormatLite::FieldType type) { + return kWireTypeForFieldType[type]; + } + + // Number of bits in a tag which identify the wire type. + static const int kTagTypeBits = 3; + // Mask for those bits. + static const uint32 kTagTypeMask = (1 << kTagTypeBits) - 1; + + // Helper functions for encoding and decoding tags. (Inlined below and in + // _inl.h) + // + // This is different from MakeTag(field->number(), field->type()) in the case + // of packed repeated fields. + static uint32 MakeTag(int field_number, WireType type); + static WireType GetTagWireType(uint32 tag); + static int GetTagFieldNumber(uint32 tag); + + // Compute the byte size of a tag. For groups, this includes both the start + // and end tags. + static inline int TagSize(int field_number, WireFormatLite::FieldType type); + + // Skips a field value with the given tag. The input should start + // positioned immediately after the tag. Skipped values are simply discarded, + // not recorded anywhere. See WireFormat::SkipField() for a version that + // records to an UnknownFieldSet. + static bool SkipField(io::CodedInputStream* input, uint32 tag); + + // Reads and ignores a message from the input. Skipped values are simply + // discarded, not recorded anywhere. See WireFormat::SkipMessage() for a + // version that records to an UnknownFieldSet. + static bool SkipMessage(io::CodedInputStream* input); + +// This macro does the same thing as WireFormatLite::MakeTag(), but the +// result is usable as a compile-time constant, which makes it usable +// as a switch case or a template input. WireFormatLite::MakeTag() is more +// type-safe, though, so prefer it if possible. +#define GOOGLE_PROTOBUF_WIRE_FORMAT_MAKE_TAG(FIELD_NUMBER, TYPE) \ + static_cast( \ + ((FIELD_NUMBER) << ::google::protobuf::internal::WireFormatLite::kTagTypeBits) \ + | (TYPE)) + + // These are the tags for the old MessageSet format, which was defined as: + // message MessageSet { + // repeated group Item = 1 { + // required int32 type_id = 2; + // required string message = 3; + // } + // } + static const int kMessageSetItemNumber = 1; + static const int kMessageSetTypeIdNumber = 2; + static const int kMessageSetMessageNumber = 3; + static const int kMessageSetItemStartTag = + GOOGLE_PROTOBUF_WIRE_FORMAT_MAKE_TAG(kMessageSetItemNumber, + WireFormatLite::WIRETYPE_START_GROUP); + static const int kMessageSetItemEndTag = + GOOGLE_PROTOBUF_WIRE_FORMAT_MAKE_TAG(kMessageSetItemNumber, + WireFormatLite::WIRETYPE_END_GROUP); + static const int kMessageSetTypeIdTag = + GOOGLE_PROTOBUF_WIRE_FORMAT_MAKE_TAG(kMessageSetTypeIdNumber, + WireFormatLite::WIRETYPE_VARINT); + static const int kMessageSetMessageTag = + GOOGLE_PROTOBUF_WIRE_FORMAT_MAKE_TAG(kMessageSetMessageNumber, + WireFormatLite::WIRETYPE_LENGTH_DELIMITED); + + // Byte size of all tags of a MessageSet::Item combined. + static const int kMessageSetItemTagsSize; + + // Helper functions for converting between floats/doubles and IEEE-754 + // uint32s/uint64s so that they can be written. (Assumes your platform + // uses IEEE-754 floats.) + static uint32 EncodeFloat(float value); + static float DecodeFloat(uint32 value); + static uint64 EncodeDouble(double value); + static double DecodeDouble(uint64 value); + + // Helper functions for mapping signed integers to unsigned integers in + // such a way that numbers with small magnitudes will encode to smaller + // varints. If you simply static_cast a negative number to an unsigned + // number and varint-encode it, it will always take 10 bytes, defeating + // the purpose of varint. So, for the "sint32" and "sint64" field types, + // we ZigZag-encode the values. + static uint32 ZigZagEncode32(int32 n); + static int32 ZigZagDecode32(uint32 n); + static uint64 ZigZagEncode64(int64 n); + static int64 ZigZagDecode64(uint64 n); + + // ================================================================= + // Methods for reading/writing individual field. The implementations + // of these methods are defined in wire_format_lite_inl.h; you must #include + // that file to use these. + +// Avoid ugly line wrapping +#define input io::CodedInputStream* input +#define output io::CodedOutputStream* output +#define field_number int field_number +#define INL GOOGLE_ATTRIBUTE_ALWAYS_INLINE + + // Read fields, not including tags. The assumption is that you already + // read the tag to determine what field to read. + + // For primitive fields, we just use a templatized routine parameterized by + // the represented type and the FieldType. These are specialized with the + // appropriate definition for each declared type. + template + static inline bool ReadPrimitive(input, CType* value) INL; + + // Reads repeated primitive values, with optimizations for repeats. + // tag_size and tag should both be compile-time constants provided by the + // protocol compiler. + template + static inline bool ReadRepeatedPrimitive(int tag_size, + uint32 tag, + input, + RepeatedField* value) INL; + + // Identical to ReadRepeatedPrimitive, except will not inline the + // implementation. + template + static bool ReadRepeatedPrimitiveNoInline(int tag_size, + uint32 tag, + input, + RepeatedField* value); + + // Reads a primitive value directly from the provided buffer. It returns a + // pointer past the segment of data that was read. + // + // This is only implemented for the types with fixed wire size, e.g. + // float, double, and the (s)fixed* types. + template + static inline const uint8* ReadPrimitiveFromArray(const uint8* buffer, + CType* value) INL; + + // Reads a primitive packed field. + // + // This is only implemented for packable types. + template + static inline bool ReadPackedPrimitive(input, + RepeatedField* value) INL; + + // Identical to ReadPackedPrimitive, except will not inline the + // implementation. + template + static bool ReadPackedPrimitiveNoInline(input, RepeatedField* value); + + // Read a packed enum field. Values for which is_valid() returns false are + // dropped. + static bool ReadPackedEnumNoInline(input, + bool (*is_valid)(int), + RepeatedField* value); + + static bool ReadString(input, string* value); + static bool ReadBytes (input, string* value); + + static inline bool ReadGroup (field_number, input, MessageLite* value); + static inline bool ReadMessage(input, MessageLite* value); + + // Like above, but de-virtualize the call to MergePartialFromCodedStream(). + // The pointer must point at an instance of MessageType, *not* a subclass (or + // the subclass must not override MergePartialFromCodedStream()). + template + static inline bool ReadGroupNoVirtual(field_number, input, + MessageType* value); + template + static inline bool ReadMessageNoVirtual(input, MessageType* value); + + // Write a tag. The Write*() functions typically include the tag, so + // normally there's no need to call this unless using the Write*NoTag() + // variants. + static inline void WriteTag(field_number, WireType type, output) INL; + + // Write fields, without tags. + static inline void WriteInt32NoTag (int32 value, output) INL; + static inline void WriteInt64NoTag (int64 value, output) INL; + static inline void WriteUInt32NoTag (uint32 value, output) INL; + static inline void WriteUInt64NoTag (uint64 value, output) INL; + static inline void WriteSInt32NoTag (int32 value, output) INL; + static inline void WriteSInt64NoTag (int64 value, output) INL; + static inline void WriteFixed32NoTag (uint32 value, output) INL; + static inline void WriteFixed64NoTag (uint64 value, output) INL; + static inline void WriteSFixed32NoTag(int32 value, output) INL; + static inline void WriteSFixed64NoTag(int64 value, output) INL; + static inline void WriteFloatNoTag (float value, output) INL; + static inline void WriteDoubleNoTag (double value, output) INL; + static inline void WriteBoolNoTag (bool value, output) INL; + static inline void WriteEnumNoTag (int value, output) INL; + + // Write fields, including tags. + static void WriteInt32 (field_number, int32 value, output); + static void WriteInt64 (field_number, int64 value, output); + static void WriteUInt32 (field_number, uint32 value, output); + static void WriteUInt64 (field_number, uint64 value, output); + static void WriteSInt32 (field_number, int32 value, output); + static void WriteSInt64 (field_number, int64 value, output); + static void WriteFixed32 (field_number, uint32 value, output); + static void WriteFixed64 (field_number, uint64 value, output); + static void WriteSFixed32(field_number, int32 value, output); + static void WriteSFixed64(field_number, int64 value, output); + static void WriteFloat (field_number, float value, output); + static void WriteDouble (field_number, double value, output); + static void WriteBool (field_number, bool value, output); + static void WriteEnum (field_number, int value, output); + + static void WriteString(field_number, const string& value, output); + static void WriteBytes (field_number, const string& value, output); + + static void WriteGroup( + field_number, const MessageLite& value, output); + static void WriteMessage( + field_number, const MessageLite& value, output); + // Like above, but these will check if the output stream has enough + // space to write directly to a flat array. + static void WriteGroupMaybeToArray( + field_number, const MessageLite& value, output); + static void WriteMessageMaybeToArray( + field_number, const MessageLite& value, output); + + // Like above, but de-virtualize the call to SerializeWithCachedSizes(). The + // pointer must point at an instance of MessageType, *not* a subclass (or + // the subclass must not override SerializeWithCachedSizes()). + template + static inline void WriteGroupNoVirtual( + field_number, const MessageType& value, output); + template + static inline void WriteMessageNoVirtual( + field_number, const MessageType& value, output); + +#undef output +#define output uint8* target + + // Like above, but use only *ToArray methods of CodedOutputStream. + static inline uint8* WriteTagToArray(field_number, WireType type, output) INL; + + // Write fields, without tags. + static inline uint8* WriteInt32NoTagToArray (int32 value, output) INL; + static inline uint8* WriteInt64NoTagToArray (int64 value, output) INL; + static inline uint8* WriteUInt32NoTagToArray (uint32 value, output) INL; + static inline uint8* WriteUInt64NoTagToArray (uint64 value, output) INL; + static inline uint8* WriteSInt32NoTagToArray (int32 value, output) INL; + static inline uint8* WriteSInt64NoTagToArray (int64 value, output) INL; + static inline uint8* WriteFixed32NoTagToArray (uint32 value, output) INL; + static inline uint8* WriteFixed64NoTagToArray (uint64 value, output) INL; + static inline uint8* WriteSFixed32NoTagToArray(int32 value, output) INL; + static inline uint8* WriteSFixed64NoTagToArray(int64 value, output) INL; + static inline uint8* WriteFloatNoTagToArray (float value, output) INL; + static inline uint8* WriteDoubleNoTagToArray (double value, output) INL; + static inline uint8* WriteBoolNoTagToArray (bool value, output) INL; + static inline uint8* WriteEnumNoTagToArray (int value, output) INL; + + // Write fields, including tags. + static inline uint8* WriteInt32ToArray( + field_number, int32 value, output) INL; + static inline uint8* WriteInt64ToArray( + field_number, int64 value, output) INL; + static inline uint8* WriteUInt32ToArray( + field_number, uint32 value, output) INL; + static inline uint8* WriteUInt64ToArray( + field_number, uint64 value, output) INL; + static inline uint8* WriteSInt32ToArray( + field_number, int32 value, output) INL; + static inline uint8* WriteSInt64ToArray( + field_number, int64 value, output) INL; + static inline uint8* WriteFixed32ToArray( + field_number, uint32 value, output) INL; + static inline uint8* WriteFixed64ToArray( + field_number, uint64 value, output) INL; + static inline uint8* WriteSFixed32ToArray( + field_number, int32 value, output) INL; + static inline uint8* WriteSFixed64ToArray( + field_number, int64 value, output) INL; + static inline uint8* WriteFloatToArray( + field_number, float value, output) INL; + static inline uint8* WriteDoubleToArray( + field_number, double value, output) INL; + static inline uint8* WriteBoolToArray( + field_number, bool value, output) INL; + static inline uint8* WriteEnumToArray( + field_number, int value, output) INL; + + static inline uint8* WriteStringToArray( + field_number, const string& value, output) INL; + static inline uint8* WriteBytesToArray( + field_number, const string& value, output) INL; + + static inline uint8* WriteGroupToArray( + field_number, const MessageLite& value, output) INL; + static inline uint8* WriteMessageToArray( + field_number, const MessageLite& value, output) INL; + + // Like above, but de-virtualize the call to SerializeWithCachedSizes(). The + // pointer must point at an instance of MessageType, *not* a subclass (or + // the subclass must not override SerializeWithCachedSizes()). + template + static inline uint8* WriteGroupNoVirtualToArray( + field_number, const MessageType& value, output) INL; + template + static inline uint8* WriteMessageNoVirtualToArray( + field_number, const MessageType& value, output) INL; + +#undef output +#undef input +#undef INL + +#undef field_number + + // Compute the byte size of a field. The XxSize() functions do NOT include + // the tag, so you must also call TagSize(). (This is because, for repeated + // fields, you should only call TagSize() once and multiply it by the element + // count, but you may have to call XxSize() for each individual element.) + static inline int Int32Size ( int32 value); + static inline int Int64Size ( int64 value); + static inline int UInt32Size (uint32 value); + static inline int UInt64Size (uint64 value); + static inline int SInt32Size ( int32 value); + static inline int SInt64Size ( int64 value); + static inline int EnumSize ( int value); + + // These types always have the same size. + static const int kFixed32Size = 4; + static const int kFixed64Size = 8; + static const int kSFixed32Size = 4; + static const int kSFixed64Size = 8; + static const int kFloatSize = 4; + static const int kDoubleSize = 8; + static const int kBoolSize = 1; + + static inline int StringSize(const string& value); + static inline int BytesSize (const string& value); + + static inline int GroupSize (const MessageLite& value); + static inline int MessageSize(const MessageLite& value); + + // Like above, but de-virtualize the call to ByteSize(). The + // pointer must point at an instance of MessageType, *not* a subclass (or + // the subclass must not override ByteSize()). + template + static inline int GroupSizeNoVirtual (const MessageType& value); + template + static inline int MessageSizeNoVirtual(const MessageType& value); + + private: + // A helper method for the repeated primitive reader. This method has + // optimizations for primitive types that have fixed size on the wire, and + // can be read using potentially faster paths. + template + static inline bool ReadRepeatedFixedSizePrimitive( + int tag_size, + uint32 tag, + google::protobuf::io::CodedInputStream* input, + RepeatedField* value) GOOGLE_ATTRIBUTE_ALWAYS_INLINE; + + static const CppType kFieldTypeToCppTypeMap[]; + static const WireFormatLite::WireType kWireTypeForFieldType[]; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(WireFormatLite); +}; + +// A class which deals with unknown values. The default implementation just +// discards them. WireFormat defines a subclass which writes to an +// UnknownFieldSet. This class is used by ExtensionSet::ParseField(), since +// ExtensionSet is part of the lite library but UnknownFieldSet is not. +class LIBPROTOBUF_EXPORT FieldSkipper { + public: + FieldSkipper() {} + virtual ~FieldSkipper() {} + + // Skip a field whose tag has already been consumed. + virtual bool SkipField(io::CodedInputStream* input, uint32 tag); + + // Skip an entire message or group, up to an end-group tag (which is consumed) + // or end-of-stream. + virtual bool SkipMessage(io::CodedInputStream* input); + + // Deal with an already-parsed unrecognized enum value. The default + // implementation does nothing, but the UnknownFieldSet-based implementation + // saves it as an unknown varint. + virtual void SkipUnknownEnum(int field_number, int value); +}; + +// inline methods ==================================================== + +inline WireFormatLite::CppType +WireFormatLite::FieldTypeToCppType(FieldType type) { + return kFieldTypeToCppTypeMap[type]; +} + +inline uint32 WireFormatLite::MakeTag(int field_number, WireType type) { + return GOOGLE_PROTOBUF_WIRE_FORMAT_MAKE_TAG(field_number, type); +} + +inline WireFormatLite::WireType WireFormatLite::GetTagWireType(uint32 tag) { + return static_cast(tag & kTagTypeMask); +} + +inline int WireFormatLite::GetTagFieldNumber(uint32 tag) { + return static_cast(tag >> kTagTypeBits); +} + +inline int WireFormatLite::TagSize(int field_number, + WireFormatLite::FieldType type) { + int result = io::CodedOutputStream::VarintSize32( + field_number << kTagTypeBits); + if (type == TYPE_GROUP) { + // Groups have both a start and an end tag. + return result * 2; + } else { + return result; + } +} + +inline uint32 WireFormatLite::EncodeFloat(float value) { + union {float f; uint32 i;}; + f = value; + return i; +} + +inline float WireFormatLite::DecodeFloat(uint32 value) { + union {float f; uint32 i;}; + i = value; + return f; +} + +inline uint64 WireFormatLite::EncodeDouble(double value) { + union {double f; uint64 i;}; + f = value; + return i; +} + +inline double WireFormatLite::DecodeDouble(uint64 value) { + union {double f; uint64 i;}; + i = value; + return f; +} + +// ZigZag Transform: Encodes signed integers so that they can be +// effectively used with varint encoding. +// +// varint operates on unsigned integers, encoding smaller numbers into +// fewer bytes. If you try to use it on a signed integer, it will treat +// this number as a very large unsigned integer, which means that even +// small signed numbers like -1 will take the maximum number of bytes +// (10) to encode. ZigZagEncode() maps signed integers to unsigned +// in such a way that those with a small absolute value will have smaller +// encoded values, making them appropriate for encoding using varint. +// +// int32 -> uint32 +// ------------------------- +// 0 -> 0 +// -1 -> 1 +// 1 -> 2 +// -2 -> 3 +// ... -> ... +// 2147483647 -> 4294967294 +// -2147483648 -> 4294967295 +// +// >> encode >> +// << decode << + +inline uint32 WireFormatLite::ZigZagEncode32(int32 n) { + // Note: the right-shift must be arithmetic + return (n << 1) ^ (n >> 31); +} + +inline int32 WireFormatLite::ZigZagDecode32(uint32 n) { + return (n >> 1) ^ -static_cast(n & 1); +} + +inline uint64 WireFormatLite::ZigZagEncode64(int64 n) { + // Note: the right-shift must be arithmetic + return (n << 1) ^ (n >> 63); +} + +inline int64 WireFormatLite::ZigZagDecode64(uint64 n) { + return (n >> 1) ^ -static_cast(n & 1); +} + +} // namespace internal +} // namespace protobuf + +} // namespace google +#endif // GOOGLE_PROTOBUF_WIRE_FORMAT_LITE_H__ diff --git a/3party_sloynik/protobuf/src/google/protobuf/wire_format_lite_inl.h b/3party_sloynik/protobuf/src/google/protobuf/wire_format_lite_inl.h new file mode 100644 index 0000000000..1a2d99bfe8 --- /dev/null +++ b/3party_sloynik/protobuf/src/google/protobuf/wire_format_lite_inl.h @@ -0,0 +1,747 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// wink@google.com (Wink Saville) (refactored from wire_format.h) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. + +#ifndef GOOGLE_PROTOBUF_WIRE_FORMAT_LITE_INL_H__ +#define GOOGLE_PROTOBUF_WIRE_FORMAT_LITE_INL_H__ + +#include +#include +#include +#include +#include +#include +#include + + +namespace google { +namespace protobuf { +namespace internal { + +// Implementation details of ReadPrimitive. + +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + int32* value) { + uint32 temp; + if (!input->ReadVarint32(&temp)) return false; + *value = static_cast(temp); + return true; +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + int64* value) { + uint64 temp; + if (!input->ReadVarint64(&temp)) return false; + *value = static_cast(temp); + return true; +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + uint32* value) { + return input->ReadVarint32(value); +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + uint64* value) { + return input->ReadVarint64(value); +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + int32* value) { + uint32 temp; + if (!input->ReadVarint32(&temp)) return false; + *value = ZigZagDecode32(temp); + return true; +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + int64* value) { + uint64 temp; + if (!input->ReadVarint64(&temp)) return false; + *value = ZigZagDecode64(temp); + return true; +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + uint32* value) { + return input->ReadLittleEndian32(value); +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + uint64* value) { + return input->ReadLittleEndian64(value); +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + int32* value) { + uint32 temp; + if (!input->ReadLittleEndian32(&temp)) return false; + *value = static_cast(temp); + return true; +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + int64* value) { + uint64 temp; + if (!input->ReadLittleEndian64(&temp)) return false; + *value = static_cast(temp); + return true; +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + float* value) { + uint32 temp; + if (!input->ReadLittleEndian32(&temp)) return false; + *value = DecodeFloat(temp); + return true; +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + double* value) { + uint64 temp; + if (!input->ReadLittleEndian64(&temp)) return false; + *value = DecodeDouble(temp); + return true; +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + bool* value) { + uint32 temp; + if (!input->ReadVarint32(&temp)) return false; + *value = temp != 0; + return true; +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + int* value) { + uint32 temp; + if (!input->ReadVarint32(&temp)) return false; + *value = static_cast(temp); + return true; +} + +template <> +inline const uint8* WireFormatLite::ReadPrimitiveFromArray< + uint32, WireFormatLite::TYPE_FIXED32>( + const uint8* buffer, + uint32* value) { + return io::CodedInputStream::ReadLittleEndian32FromArray(buffer, value); +} +template <> +inline const uint8* WireFormatLite::ReadPrimitiveFromArray< + uint64, WireFormatLite::TYPE_FIXED64>( + const uint8* buffer, + uint64* value) { + return io::CodedInputStream::ReadLittleEndian64FromArray(buffer, value); +} +template <> +inline const uint8* WireFormatLite::ReadPrimitiveFromArray< + int32, WireFormatLite::TYPE_SFIXED32>( + const uint8* buffer, + int32* value) { + uint32 temp; + buffer = io::CodedInputStream::ReadLittleEndian32FromArray(buffer, &temp); + *value = static_cast(temp); + return buffer; +} +template <> +inline const uint8* WireFormatLite::ReadPrimitiveFromArray< + int64, WireFormatLite::TYPE_SFIXED64>( + const uint8* buffer, + int64* value) { + uint64 temp; + buffer = io::CodedInputStream::ReadLittleEndian64FromArray(buffer, &temp); + *value = static_cast(temp); + return buffer; +} +template <> +inline const uint8* WireFormatLite::ReadPrimitiveFromArray< + float, WireFormatLite::TYPE_FLOAT>( + const uint8* buffer, + float* value) { + uint32 temp; + buffer = io::CodedInputStream::ReadLittleEndian32FromArray(buffer, &temp); + *value = DecodeFloat(temp); + return buffer; +} +template <> +inline const uint8* WireFormatLite::ReadPrimitiveFromArray< + double, WireFormatLite::TYPE_DOUBLE>( + const uint8* buffer, + double* value) { + uint64 temp; + buffer = io::CodedInputStream::ReadLittleEndian64FromArray(buffer, &temp); + *value = DecodeDouble(temp); + return buffer; +} + +template +inline bool WireFormatLite::ReadRepeatedPrimitive(int /*tag_size*/, + uint32 tag, + io::CodedInputStream* input, + RepeatedField* values) { + CType value; + if (!ReadPrimitive(input, &value)) return false; + values->Add(value); + int elements_already_reserved = values->Capacity() - values->size(); + while (elements_already_reserved > 0 && input->ExpectTag(tag)) { + if (!ReadPrimitive(input, &value)) return false; + values->AddAlreadyReserved(value); + elements_already_reserved--; + } + return true; +} + +template +inline bool WireFormatLite::ReadRepeatedFixedSizePrimitive( + int tag_size, + uint32 tag, + io::CodedInputStream* input, + RepeatedField* values) { + GOOGLE_DCHECK_EQ(UInt32Size(tag), tag_size); + CType value; + if (!ReadPrimitive(input, &value)) + return false; + values->Add(value); + + // For fixed size values, repeated values can be read more quickly by + // reading directly from a raw array. + // + // We can get a tight loop by only reading as many elements as can be + // added to the RepeatedField without having to do any resizing. Additionally, + // we only try to read as many elements as are available from the current + // buffer space. Doing so avoids having to perform boundary checks when + // reading the value: the maximum number of elements that can be read is + // known outside of the loop. + const void* void_pointer; + int size; + input->GetDirectBufferPointerInline(&void_pointer, &size); + if (size > 0) { + const uint8* buffer = reinterpret_cast(void_pointer); + // The number of bytes each type occupies on the wire. + const int per_value_size = tag_size + sizeof(value); + + int elements_available = min(values->Capacity() - values->size(), + size / per_value_size); + int num_read = 0; + while (num_read < elements_available && + (buffer = io::CodedInputStream::ExpectTagFromArray( + buffer, tag)) != NULL) { + buffer = ReadPrimitiveFromArray(buffer, &value); + values->AddAlreadyReserved(value); + ++num_read; + } + const int read_bytes = num_read * per_value_size; + if (read_bytes > 0) { + input->Skip(read_bytes); + } + } + return true; +} + +// Specializations of ReadRepeatedPrimitive for the fixed size types, which use +// the optimized code path. +#define READ_REPEATED_FIXED_SIZE_PRIMITIVE(CPPTYPE, DECLARED_TYPE) \ +template <> \ +inline bool WireFormatLite::ReadRepeatedPrimitive< \ + CPPTYPE, WireFormatLite::DECLARED_TYPE>( \ + int tag_size, \ + uint32 tag, \ + io::CodedInputStream* input, \ + RepeatedField* values) { \ + return ReadRepeatedFixedSizePrimitive< \ + CPPTYPE, WireFormatLite::DECLARED_TYPE>( \ + tag_size, tag, input, values); \ +} + +READ_REPEATED_FIXED_SIZE_PRIMITIVE(uint32, TYPE_FIXED32); +READ_REPEATED_FIXED_SIZE_PRIMITIVE(uint64, TYPE_FIXED64); +READ_REPEATED_FIXED_SIZE_PRIMITIVE(int32, TYPE_SFIXED32); +READ_REPEATED_FIXED_SIZE_PRIMITIVE(int64, TYPE_SFIXED64); +READ_REPEATED_FIXED_SIZE_PRIMITIVE(float, TYPE_FLOAT); +READ_REPEATED_FIXED_SIZE_PRIMITIVE(double, TYPE_DOUBLE); + +#undef READ_REPEATED_FIXED_SIZE_PRIMITIVE + +template +bool WireFormatLite::ReadRepeatedPrimitiveNoInline( + int tag_size, + uint32 tag, + io::CodedInputStream* input, + RepeatedField* value) { + return ReadRepeatedPrimitive( + tag_size, tag, input, value); +} + +template +inline bool WireFormatLite::ReadPackedPrimitive(io::CodedInputStream* input, + RepeatedField* values) { + uint32 length; + if (!input->ReadVarint32(&length)) return false; + io::CodedInputStream::Limit limit = input->PushLimit(length); + while (input->BytesUntilLimit() > 0) { + CType value; + if (!ReadPrimitive(input, &value)) return false; + values->Add(value); + } + input->PopLimit(limit); + return true; +} + +template +bool WireFormatLite::ReadPackedPrimitiveNoInline(io::CodedInputStream* input, + RepeatedField* values) { + return ReadPackedPrimitive(input, values); +} + + +inline bool WireFormatLite::ReadGroup(int field_number, + io::CodedInputStream* input, + MessageLite* value) { + if (!input->IncrementRecursionDepth()) return false; + if (!value->MergePartialFromCodedStream(input)) return false; + input->DecrementRecursionDepth(); + // Make sure the last thing read was an end tag for this group. + if (!input->LastTagWas(MakeTag(field_number, WIRETYPE_END_GROUP))) { + return false; + } + return true; +} +inline bool WireFormatLite::ReadMessage(io::CodedInputStream* input, + MessageLite* value) { + uint32 length; + if (!input->ReadVarint32(&length)) return false; + if (!input->IncrementRecursionDepth()) return false; + io::CodedInputStream::Limit limit = input->PushLimit(length); + if (!value->MergePartialFromCodedStream(input)) return false; + // Make sure that parsing stopped when the limit was hit, not at an endgroup + // tag. + if (!input->ConsumedEntireMessage()) return false; + input->PopLimit(limit); + input->DecrementRecursionDepth(); + return true; +} + +template +inline bool WireFormatLite::ReadGroupNoVirtual(int field_number, + io::CodedInputStream* input, + MessageType* value) { + if (!input->IncrementRecursionDepth()) return false; + if (!value->MessageType::MergePartialFromCodedStream(input)) return false; + input->DecrementRecursionDepth(); + // Make sure the last thing read was an end tag for this group. + if (!input->LastTagWas(MakeTag(field_number, WIRETYPE_END_GROUP))) { + return false; + } + return true; +} +template +inline bool WireFormatLite::ReadMessageNoVirtual(io::CodedInputStream* input, + MessageType* value) { + uint32 length; + if (!input->ReadVarint32(&length)) return false; + if (!input->IncrementRecursionDepth()) return false; + io::CodedInputStream::Limit limit = input->PushLimit(length); + if (!value->MessageType::MergePartialFromCodedStream(input)) return false; + // Make sure that parsing stopped when the limit was hit, not at an endgroup + // tag. + if (!input->ConsumedEntireMessage()) return false; + input->PopLimit(limit); + input->DecrementRecursionDepth(); + return true; +} + +// =================================================================== + +inline void WireFormatLite::WriteTag(int field_number, WireType type, + io::CodedOutputStream* output) { + output->WriteTag(MakeTag(field_number, type)); +} + +inline void WireFormatLite::WriteInt32NoTag(int32 value, + io::CodedOutputStream* output) { + output->WriteVarint32SignExtended(value); +} +inline void WireFormatLite::WriteInt64NoTag(int64 value, + io::CodedOutputStream* output) { + output->WriteVarint64(static_cast(value)); +} +inline void WireFormatLite::WriteUInt32NoTag(uint32 value, + io::CodedOutputStream* output) { + output->WriteVarint32(value); +} +inline void WireFormatLite::WriteUInt64NoTag(uint64 value, + io::CodedOutputStream* output) { + output->WriteVarint64(value); +} +inline void WireFormatLite::WriteSInt32NoTag(int32 value, + io::CodedOutputStream* output) { + output->WriteVarint32(ZigZagEncode32(value)); +} +inline void WireFormatLite::WriteSInt64NoTag(int64 value, + io::CodedOutputStream* output) { + output->WriteVarint64(ZigZagEncode64(value)); +} +inline void WireFormatLite::WriteFixed32NoTag(uint32 value, + io::CodedOutputStream* output) { + output->WriteLittleEndian32(value); +} +inline void WireFormatLite::WriteFixed64NoTag(uint64 value, + io::CodedOutputStream* output) { + output->WriteLittleEndian64(value); +} +inline void WireFormatLite::WriteSFixed32NoTag(int32 value, + io::CodedOutputStream* output) { + output->WriteLittleEndian32(static_cast(value)); +} +inline void WireFormatLite::WriteSFixed64NoTag(int64 value, + io::CodedOutputStream* output) { + output->WriteLittleEndian64(static_cast(value)); +} +inline void WireFormatLite::WriteFloatNoTag(float value, + io::CodedOutputStream* output) { + output->WriteLittleEndian32(EncodeFloat(value)); +} +inline void WireFormatLite::WriteDoubleNoTag(double value, + io::CodedOutputStream* output) { + output->WriteLittleEndian64(EncodeDouble(value)); +} +inline void WireFormatLite::WriteBoolNoTag(bool value, + io::CodedOutputStream* output) { + output->WriteVarint32(value ? 1 : 0); +} +inline void WireFormatLite::WriteEnumNoTag(int value, + io::CodedOutputStream* output) { + output->WriteVarint32SignExtended(value); +} + +template +inline void WireFormatLite::WriteGroupNoVirtual(int field_number, + const MessageType& value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_START_GROUP, output); + value.MessageType::SerializeWithCachedSizes(output); + WriteTag(field_number, WIRETYPE_END_GROUP, output); +} +template +inline void WireFormatLite::WriteMessageNoVirtual(int field_number, + const MessageType& value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_LENGTH_DELIMITED, output); + output->WriteVarint32(value.MessageType::GetCachedSize()); + value.MessageType::SerializeWithCachedSizes(output); +} + +// =================================================================== + +inline uint8* WireFormatLite::WriteTagToArray(int field_number, + WireType type, + uint8* target) { + return io::CodedOutputStream::WriteTagToArray(MakeTag(field_number, type), + target); +} + +inline uint8* WireFormatLite::WriteInt32NoTagToArray(int32 value, + uint8* target) { + return io::CodedOutputStream::WriteVarint32SignExtendedToArray(value, target); +} +inline uint8* WireFormatLite::WriteInt64NoTagToArray(int64 value, + uint8* target) { + return io::CodedOutputStream::WriteVarint64ToArray( + static_cast(value), target); +} +inline uint8* WireFormatLite::WriteUInt32NoTagToArray(uint32 value, + uint8* target) { + return io::CodedOutputStream::WriteVarint32ToArray(value, target); +} +inline uint8* WireFormatLite::WriteUInt64NoTagToArray(uint64 value, + uint8* target) { + return io::CodedOutputStream::WriteVarint64ToArray(value, target); +} +inline uint8* WireFormatLite::WriteSInt32NoTagToArray(int32 value, + uint8* target) { + return io::CodedOutputStream::WriteVarint32ToArray(ZigZagEncode32(value), + target); +} +inline uint8* WireFormatLite::WriteSInt64NoTagToArray(int64 value, + uint8* target) { + return io::CodedOutputStream::WriteVarint64ToArray(ZigZagEncode64(value), + target); +} +inline uint8* WireFormatLite::WriteFixed32NoTagToArray(uint32 value, + uint8* target) { + return io::CodedOutputStream::WriteLittleEndian32ToArray(value, target); +} +inline uint8* WireFormatLite::WriteFixed64NoTagToArray(uint64 value, + uint8* target) { + return io::CodedOutputStream::WriteLittleEndian64ToArray(value, target); +} +inline uint8* WireFormatLite::WriteSFixed32NoTagToArray(int32 value, + uint8* target) { + return io::CodedOutputStream::WriteLittleEndian32ToArray( + static_cast(value), target); +} +inline uint8* WireFormatLite::WriteSFixed64NoTagToArray(int64 value, + uint8* target) { + return io::CodedOutputStream::WriteLittleEndian64ToArray( + static_cast(value), target); +} +inline uint8* WireFormatLite::WriteFloatNoTagToArray(float value, + uint8* target) { + return io::CodedOutputStream::WriteLittleEndian32ToArray(EncodeFloat(value), + target); +} +inline uint8* WireFormatLite::WriteDoubleNoTagToArray(double value, + uint8* target) { + return io::CodedOutputStream::WriteLittleEndian64ToArray(EncodeDouble(value), + target); +} +inline uint8* WireFormatLite::WriteBoolNoTagToArray(bool value, + uint8* target) { + return io::CodedOutputStream::WriteVarint32ToArray(value ? 1 : 0, target); +} +inline uint8* WireFormatLite::WriteEnumNoTagToArray(int value, + uint8* target) { + return io::CodedOutputStream::WriteVarint32SignExtendedToArray(value, target); +} + +inline uint8* WireFormatLite::WriteInt32ToArray(int field_number, + int32 value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_VARINT, target); + return WriteInt32NoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteInt64ToArray(int field_number, + int64 value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_VARINT, target); + return WriteInt64NoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteUInt32ToArray(int field_number, + uint32 value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_VARINT, target); + return WriteUInt32NoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteUInt64ToArray(int field_number, + uint64 value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_VARINT, target); + return WriteUInt64NoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteSInt32ToArray(int field_number, + int32 value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_VARINT, target); + return WriteSInt32NoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteSInt64ToArray(int field_number, + int64 value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_VARINT, target); + return WriteSInt64NoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteFixed32ToArray(int field_number, + uint32 value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_FIXED32, target); + return WriteFixed32NoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteFixed64ToArray(int field_number, + uint64 value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_FIXED64, target); + return WriteFixed64NoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteSFixed32ToArray(int field_number, + int32 value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_FIXED32, target); + return WriteSFixed32NoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteSFixed64ToArray(int field_number, + int64 value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_FIXED64, target); + return WriteSFixed64NoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteFloatToArray(int field_number, + float value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_FIXED32, target); + return WriteFloatNoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteDoubleToArray(int field_number, + double value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_FIXED64, target); + return WriteDoubleNoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteBoolToArray(int field_number, + bool value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_VARINT, target); + return WriteBoolNoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteEnumToArray(int field_number, + int value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_VARINT, target); + return WriteEnumNoTagToArray(value, target); +} + +inline uint8* WireFormatLite::WriteStringToArray(int field_number, + const string& value, + uint8* target) { + // String is for UTF-8 text only + // WARNING: In wire_format.cc, both strings and bytes are handled by + // WriteString() to avoid code duplication. If the implementations become + // different, you will need to update that usage. + target = WriteTagToArray(field_number, WIRETYPE_LENGTH_DELIMITED, target); + target = io::CodedOutputStream::WriteVarint32ToArray(value.size(), target); + return io::CodedOutputStream::WriteStringToArray(value, target); +} +inline uint8* WireFormatLite::WriteBytesToArray(int field_number, + const string& value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_LENGTH_DELIMITED, target); + target = io::CodedOutputStream::WriteVarint32ToArray(value.size(), target); + return io::CodedOutputStream::WriteStringToArray(value, target); +} + + +inline uint8* WireFormatLite::WriteGroupToArray(int field_number, + const MessageLite& value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_START_GROUP, target); + target = value.SerializeWithCachedSizesToArray(target); + return WriteTagToArray(field_number, WIRETYPE_END_GROUP, target); +} +inline uint8* WireFormatLite::WriteMessageToArray(int field_number, + const MessageLite& value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_LENGTH_DELIMITED, target); + target = io::CodedOutputStream::WriteVarint32ToArray( + value.GetCachedSize(), target); + return value.SerializeWithCachedSizesToArray(target); +} + +template +inline uint8* WireFormatLite::WriteGroupNoVirtualToArray( + int field_number, const MessageType& value, uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_START_GROUP, target); + target = value.MessageType::SerializeWithCachedSizesToArray(target); + return WriteTagToArray(field_number, WIRETYPE_END_GROUP, target); +} +template +inline uint8* WireFormatLite::WriteMessageNoVirtualToArray( + int field_number, const MessageType& value, uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_LENGTH_DELIMITED, target); + target = io::CodedOutputStream::WriteVarint32ToArray( + value.MessageType::GetCachedSize(), target); + return value.MessageType::SerializeWithCachedSizesToArray(target); +} + +// =================================================================== + +inline int WireFormatLite::Int32Size(int32 value) { + return io::CodedOutputStream::VarintSize32SignExtended(value); +} +inline int WireFormatLite::Int64Size(int64 value) { + return io::CodedOutputStream::VarintSize64(static_cast(value)); +} +inline int WireFormatLite::UInt32Size(uint32 value) { + return io::CodedOutputStream::VarintSize32(value); +} +inline int WireFormatLite::UInt64Size(uint64 value) { + return io::CodedOutputStream::VarintSize64(value); +} +inline int WireFormatLite::SInt32Size(int32 value) { + return io::CodedOutputStream::VarintSize32(ZigZagEncode32(value)); +} +inline int WireFormatLite::SInt64Size(int64 value) { + return io::CodedOutputStream::VarintSize64(ZigZagEncode64(value)); +} +inline int WireFormatLite::EnumSize(int value) { + return io::CodedOutputStream::VarintSize32SignExtended(value); +} + +inline int WireFormatLite::StringSize(const string& value) { + return io::CodedOutputStream::VarintSize32(value.size()) + + value.size(); +} +inline int WireFormatLite::BytesSize(const string& value) { + return io::CodedOutputStream::VarintSize32(value.size()) + + value.size(); +} + + +inline int WireFormatLite::GroupSize(const MessageLite& value) { + return value.ByteSize(); +} +inline int WireFormatLite::MessageSize(const MessageLite& value) { + int size = value.ByteSize(); + return io::CodedOutputStream::VarintSize32(size) + size; +} + +template +inline int WireFormatLite::GroupSizeNoVirtual(const MessageType& value) { + return value.MessageType::ByteSize(); +} +template +inline int WireFormatLite::MessageSizeNoVirtual(const MessageType& value) { + int size = value.MessageType::ByteSize(); + return io::CodedOutputStream::VarintSize32(size) + size; +} + +} // namespace internal +} // namespace protobuf + +} // namespace google +#endif // GOOGLE_PROTOBUF_WIRE_FORMAT_LITE_INL_H__ diff --git a/3party_sloynik/zlib/adler32.c b/3party_sloynik/zlib/adler32.c new file mode 100644 index 0000000000..65ad6a5adc --- /dev/null +++ b/3party_sloynik/zlib/adler32.c @@ -0,0 +1,169 @@ +/* adler32.c -- compute the Adler-32 checksum of a data stream + * Copyright (C) 1995-2007 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#include "zutil.h" + +#define local static + +local uLong adler32_combine_(uLong adler1, uLong adler2, z_off64_t len2); + +#define BASE 65521UL /* largest prime smaller than 65536 */ +#define NMAX 5552 +/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */ + +#define DO1(buf,i) {adler += (buf)[i]; sum2 += adler;} +#define DO2(buf,i) DO1(buf,i); DO1(buf,i+1); +#define DO4(buf,i) DO2(buf,i); DO2(buf,i+2); +#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4); +#define DO16(buf) DO8(buf,0); DO8(buf,8); + +/* use NO_DIVIDE if your processor does not do division in hardware */ +#ifdef NO_DIVIDE +# define MOD(a) \ + do { \ + if (a >= (BASE << 16)) a -= (BASE << 16); \ + if (a >= (BASE << 15)) a -= (BASE << 15); \ + if (a >= (BASE << 14)) a -= (BASE << 14); \ + if (a >= (BASE << 13)) a -= (BASE << 13); \ + if (a >= (BASE << 12)) a -= (BASE << 12); \ + if (a >= (BASE << 11)) a -= (BASE << 11); \ + if (a >= (BASE << 10)) a -= (BASE << 10); \ + if (a >= (BASE << 9)) a -= (BASE << 9); \ + if (a >= (BASE << 8)) a -= (BASE << 8); \ + if (a >= (BASE << 7)) a -= (BASE << 7); \ + if (a >= (BASE << 6)) a -= (BASE << 6); \ + if (a >= (BASE << 5)) a -= (BASE << 5); \ + if (a >= (BASE << 4)) a -= (BASE << 4); \ + if (a >= (BASE << 3)) a -= (BASE << 3); \ + if (a >= (BASE << 2)) a -= (BASE << 2); \ + if (a >= (BASE << 1)) a -= (BASE << 1); \ + if (a >= BASE) a -= BASE; \ + } while (0) +# define MOD4(a) \ + do { \ + if (a >= (BASE << 4)) a -= (BASE << 4); \ + if (a >= (BASE << 3)) a -= (BASE << 3); \ + if (a >= (BASE << 2)) a -= (BASE << 2); \ + if (a >= (BASE << 1)) a -= (BASE << 1); \ + if (a >= BASE) a -= BASE; \ + } while (0) +#else +# define MOD(a) a %= BASE +# define MOD4(a) a %= BASE +#endif + +/* ========================================================================= */ +uLong ZEXPORT adler32(adler, buf, len) + uLong adler; + const Bytef *buf; + uInt len; +{ + unsigned long sum2; + unsigned n; + + /* split Adler-32 into component sums */ + sum2 = (adler >> 16) & 0xffff; + adler &= 0xffff; + + /* in case user likes doing a byte at a time, keep it fast */ + if (len == 1) { + adler += buf[0]; + if (adler >= BASE) + adler -= BASE; + sum2 += adler; + if (sum2 >= BASE) + sum2 -= BASE; + return adler | (sum2 << 16); + } + + /* initial Adler-32 value (deferred check for len == 1 speed) */ + if (buf == Z_NULL) + return 1L; + + /* in case short lengths are provided, keep it somewhat fast */ + if (len < 16) { + while (len--) { + adler += *buf++; + sum2 += adler; + } + if (adler >= BASE) + adler -= BASE; + MOD4(sum2); /* only added so many BASE's */ + return adler | (sum2 << 16); + } + + /* do length NMAX blocks -- requires just one modulo operation */ + while (len >= NMAX) { + len -= NMAX; + n = NMAX / 16; /* NMAX is divisible by 16 */ + do { + DO16(buf); /* 16 sums unrolled */ + buf += 16; + } while (--n); + MOD(adler); + MOD(sum2); + } + + /* do remaining bytes (less than NMAX, still just one modulo) */ + if (len) { /* avoid modulos if none remaining */ + while (len >= 16) { + len -= 16; + DO16(buf); + buf += 16; + } + while (len--) { + adler += *buf++; + sum2 += adler; + } + MOD(adler); + MOD(sum2); + } + + /* return recombined sums */ + return adler | (sum2 << 16); +} + +/* ========================================================================= */ +local uLong adler32_combine_(adler1, adler2, len2) + uLong adler1; + uLong adler2; + z_off64_t len2; +{ + unsigned long sum1; + unsigned long sum2; + unsigned rem; + + /* the derivation of this formula is left as an exercise for the reader */ + rem = (unsigned)(len2 % BASE); + sum1 = adler1 & 0xffff; + sum2 = rem * sum1; + MOD(sum2); + sum1 += (adler2 & 0xffff) + BASE - 1; + sum2 += ((adler1 >> 16) & 0xffff) + ((adler2 >> 16) & 0xffff) + BASE - rem; + if (sum1 >= BASE) sum1 -= BASE; + if (sum1 >= BASE) sum1 -= BASE; + if (sum2 >= (BASE << 1)) sum2 -= (BASE << 1); + if (sum2 >= BASE) sum2 -= BASE; + return sum1 | (sum2 << 16); +} + +/* ========================================================================= */ +uLong ZEXPORT adler32_combine(adler1, adler2, len2) + uLong adler1; + uLong adler2; + z_off_t len2; +{ + return adler32_combine_(adler1, adler2, len2); +} + +uLong ZEXPORT adler32_combine64(adler1, adler2, len2) + uLong adler1; + uLong adler2; + z_off64_t len2; +{ + return adler32_combine_(adler1, adler2, len2); +} diff --git a/3party_sloynik/zlib/compress.c b/3party_sloynik/zlib/compress.c new file mode 100644 index 0000000000..ea4dfbe9d7 --- /dev/null +++ b/3party_sloynik/zlib/compress.c @@ -0,0 +1,80 @@ +/* compress.c -- compress a memory buffer + * Copyright (C) 1995-2005 Jean-loup Gailly. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#define ZLIB_INTERNAL +#include "zlib.h" + +/* =========================================================================== + Compresses the source buffer into the destination buffer. The level + parameter has the same meaning as in deflateInit. sourceLen is the byte + length of the source buffer. Upon entry, destLen is the total size of the + destination buffer, which must be at least 0.1% larger than sourceLen plus + 12 bytes. Upon exit, destLen is the actual size of the compressed buffer. + + compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_BUF_ERROR if there was not enough room in the output buffer, + Z_STREAM_ERROR if the level parameter is invalid. +*/ +int ZEXPORT compress2 (dest, destLen, source, sourceLen, level) + Bytef *dest; + uLongf *destLen; + const Bytef *source; + uLong sourceLen; + int level; +{ + z_stream stream; + int err; + + stream.next_in = (Bytef*)source; + stream.avail_in = (uInt)sourceLen; +#ifdef MAXSEG_64K + /* Check for source > 64K on 16-bit machine: */ + if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR; +#endif + stream.next_out = dest; + stream.avail_out = (uInt)*destLen; + if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR; + + stream.zalloc = (alloc_func)0; + stream.zfree = (free_func)0; + stream.opaque = (voidpf)0; + + err = deflateInit(&stream, level); + if (err != Z_OK) return err; + + err = deflate(&stream, Z_FINISH); + if (err != Z_STREAM_END) { + deflateEnd(&stream); + return err == Z_OK ? Z_BUF_ERROR : err; + } + *destLen = stream.total_out; + + err = deflateEnd(&stream); + return err; +} + +/* =========================================================================== + */ +int ZEXPORT compress (dest, destLen, source, sourceLen) + Bytef *dest; + uLongf *destLen; + const Bytef *source; + uLong sourceLen; +{ + return compress2(dest, destLen, source, sourceLen, Z_DEFAULT_COMPRESSION); +} + +/* =========================================================================== + If the default memLevel or windowBits for deflateInit() is changed, then + this function needs to be updated. + */ +uLong ZEXPORT compressBound (sourceLen) + uLong sourceLen; +{ + return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + + (sourceLen >> 25) + 13; +} diff --git a/3party_sloynik/zlib/crc32.c b/3party_sloynik/zlib/crc32.c new file mode 100644 index 0000000000..91be372d22 --- /dev/null +++ b/3party_sloynik/zlib/crc32.c @@ -0,0 +1,442 @@ +/* crc32.c -- compute the CRC-32 of a data stream + * Copyright (C) 1995-2006, 2010 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + * + * Thanks to Rodney Brown for his contribution of faster + * CRC methods: exclusive-oring 32 bits of data at a time, and pre-computing + * tables for updating the shift register in one step with three exclusive-ors + * instead of four steps with four exclusive-ors. This results in about a + * factor of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3. + */ + +/* @(#) $Id$ */ + +/* + Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore + protection on the static variables used to control the first-use generation + of the crc tables. Therefore, if you #define DYNAMIC_CRC_TABLE, you should + first call get_crc_table() to initialize the tables before allowing more than + one thread to use crc32(). + */ + +#ifdef MAKECRCH +# include +# ifndef DYNAMIC_CRC_TABLE +# define DYNAMIC_CRC_TABLE +# endif /* !DYNAMIC_CRC_TABLE */ +#endif /* MAKECRCH */ + +#include "zutil.h" /* for STDC and FAR definitions */ + +#define local static + +/* Find a four-byte integer type for crc32_little() and crc32_big(). */ +#ifndef NOBYFOUR +# ifdef STDC /* need ANSI C limits.h to determine sizes */ +# include +# define BYFOUR +# if (UINT_MAX == 0xffffffffUL) + typedef unsigned int u4; +# else +# if (ULONG_MAX == 0xffffffffUL) + typedef unsigned long u4; +# else +# if (USHRT_MAX == 0xffffffffUL) + typedef unsigned short u4; +# else +# undef BYFOUR /* can't find a four-byte integer type! */ +# endif +# endif +# endif +# endif /* STDC */ +#endif /* !NOBYFOUR */ + +/* Definitions for doing the crc four data bytes at a time. */ +#ifdef BYFOUR +# define REV(w) ((((w)>>24)&0xff)+(((w)>>8)&0xff00)+ \ + (((w)&0xff00)<<8)+(((w)&0xff)<<24)) + local unsigned long crc32_little OF((unsigned long, + const unsigned char FAR *, unsigned)); + local unsigned long crc32_big OF((unsigned long, + const unsigned char FAR *, unsigned)); +# define TBLS 8 +#else +# define TBLS 1 +#endif /* BYFOUR */ + +/* Local functions for crc concatenation */ +local unsigned long gf2_matrix_times OF((unsigned long *mat, + unsigned long vec)); +local void gf2_matrix_square OF((unsigned long *square, unsigned long *mat)); +local uLong crc32_combine_(uLong crc1, uLong crc2, z_off64_t len2); + + +#ifdef DYNAMIC_CRC_TABLE + +local volatile int crc_table_empty = 1; +local unsigned long FAR crc_table[TBLS][256]; +local void make_crc_table OF((void)); +#ifdef MAKECRCH + local void write_table OF((FILE *, const unsigned long FAR *)); +#endif /* MAKECRCH */ +/* + Generate tables for a byte-wise 32-bit CRC calculation on the polynomial: + x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1. + + Polynomials over GF(2) are represented in binary, one bit per coefficient, + with the lowest powers in the most significant bit. Then adding polynomials + is just exclusive-or, and multiplying a polynomial by x is a right shift by + one. If we call the above polynomial p, and represent a byte as the + polynomial q, also with the lowest power in the most significant bit (so the + byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, + where a mod b means the remainder after dividing a by b. + + This calculation is done using the shift-register method of multiplying and + taking the remainder. The register is initialized to zero, and for each + incoming bit, x^32 is added mod p to the register if the bit is a one (where + x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by + x (which is shifting right by one and adding x^32 mod p if the bit shifted + out is a one). We start with the highest power (least significant bit) of + q and repeat for all eight bits of q. + + The first table is simply the CRC of all possible eight bit values. This is + all the information needed to generate CRCs on data a byte at a time for all + combinations of CRC register values and incoming bytes. The remaining tables + allow for word-at-a-time CRC calculation for both big-endian and little- + endian machines, where a word is four bytes. +*/ +local void make_crc_table() +{ + unsigned long c; + int n, k; + unsigned long poly; /* polynomial exclusive-or pattern */ + /* terms of polynomial defining this crc (except x^32): */ + static volatile int first = 1; /* flag to limit concurrent making */ + static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26}; + + /* See if another task is already doing this (not thread-safe, but better + than nothing -- significantly reduces duration of vulnerability in + case the advice about DYNAMIC_CRC_TABLE is ignored) */ + if (first) { + first = 0; + + /* make exclusive-or pattern from polynomial (0xedb88320UL) */ + poly = 0UL; + for (n = 0; n < sizeof(p)/sizeof(unsigned char); n++) + poly |= 1UL << (31 - p[n]); + + /* generate a crc for every 8-bit value */ + for (n = 0; n < 256; n++) { + c = (unsigned long)n; + for (k = 0; k < 8; k++) + c = c & 1 ? poly ^ (c >> 1) : c >> 1; + crc_table[0][n] = c; + } + +#ifdef BYFOUR + /* generate crc for each value followed by one, two, and three zeros, + and then the byte reversal of those as well as the first table */ + for (n = 0; n < 256; n++) { + c = crc_table[0][n]; + crc_table[4][n] = REV(c); + for (k = 1; k < 4; k++) { + c = crc_table[0][c & 0xff] ^ (c >> 8); + crc_table[k][n] = c; + crc_table[k + 4][n] = REV(c); + } + } +#endif /* BYFOUR */ + + crc_table_empty = 0; + } + else { /* not first */ + /* wait for the other guy to finish (not efficient, but rare) */ + while (crc_table_empty) + ; + } + +#ifdef MAKECRCH + /* write out CRC tables to crc32.h */ + { + FILE *out; + + out = fopen("crc32.h", "w"); + if (out == NULL) return; + fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n"); + fprintf(out, " * Generated automatically by crc32.c\n */\n\n"); + fprintf(out, "local const unsigned long FAR "); + fprintf(out, "crc_table[TBLS][256] =\n{\n {\n"); + write_table(out, crc_table[0]); +# ifdef BYFOUR + fprintf(out, "#ifdef BYFOUR\n"); + for (k = 1; k < 8; k++) { + fprintf(out, " },\n {\n"); + write_table(out, crc_table[k]); + } + fprintf(out, "#endif\n"); +# endif /* BYFOUR */ + fprintf(out, " }\n};\n"); + fclose(out); + } +#endif /* MAKECRCH */ +} + +#ifdef MAKECRCH +local void write_table(out, table) + FILE *out; + const unsigned long FAR *table; +{ + int n; + + for (n = 0; n < 256; n++) + fprintf(out, "%s0x%08lxUL%s", n % 5 ? "" : " ", table[n], + n == 255 ? "\n" : (n % 5 == 4 ? ",\n" : ", ")); +} +#endif /* MAKECRCH */ + +#else /* !DYNAMIC_CRC_TABLE */ +/* ======================================================================== + * Tables of CRC-32s of all single-byte values, made by make_crc_table(). + */ +#include "crc32.h" +#endif /* DYNAMIC_CRC_TABLE */ + +/* ========================================================================= + * This function can be used by asm versions of crc32() + */ +const unsigned long FAR * ZEXPORT get_crc_table() +{ +#ifdef DYNAMIC_CRC_TABLE + if (crc_table_empty) + make_crc_table(); +#endif /* DYNAMIC_CRC_TABLE */ + return (const unsigned long FAR *)crc_table; +} + +/* ========================================================================= */ +#define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8) +#define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1 + +/* ========================================================================= */ +unsigned long ZEXPORT crc32(crc, buf, len) + unsigned long crc; + const unsigned char FAR *buf; + uInt len; +{ + if (buf == Z_NULL) return 0UL; + +#ifdef DYNAMIC_CRC_TABLE + if (crc_table_empty) + make_crc_table(); +#endif /* DYNAMIC_CRC_TABLE */ + +#ifdef BYFOUR + if (sizeof(void *) == sizeof(ptrdiff_t)) { + u4 endian; + + endian = 1; + if (*((unsigned char *)(&endian))) + return crc32_little(crc, buf, len); + else + return crc32_big(crc, buf, len); + } +#endif /* BYFOUR */ + crc = crc ^ 0xffffffffUL; + while (len >= 8) { + DO8; + len -= 8; + } + if (len) do { + DO1; + } while (--len); + return crc ^ 0xffffffffUL; +} + +#ifdef BYFOUR + +/* ========================================================================= */ +#define DOLIT4 c ^= *buf4++; \ + c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^ \ + crc_table[1][(c >> 16) & 0xff] ^ crc_table[0][c >> 24] +#define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4 + +/* ========================================================================= */ +local unsigned long crc32_little(crc, buf, len) + unsigned long crc; + const unsigned char FAR *buf; + unsigned len; +{ + register u4 c; + register const u4 FAR *buf4; + + c = (u4)crc; + c = ~c; + while (len && ((ptrdiff_t)buf & 3)) { + c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8); + len--; + } + + buf4 = (const u4 FAR *)(const void FAR *)buf; + while (len >= 32) { + DOLIT32; + len -= 32; + } + while (len >= 4) { + DOLIT4; + len -= 4; + } + buf = (const unsigned char FAR *)buf4; + + if (len) do { + c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8); + } while (--len); + c = ~c; + return (unsigned long)c; +} + +/* ========================================================================= */ +#define DOBIG4 c ^= *++buf4; \ + c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \ + crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24] +#define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4 + +/* ========================================================================= */ +local unsigned long crc32_big(crc, buf, len) + unsigned long crc; + const unsigned char FAR *buf; + unsigned len; +{ + register u4 c; + register const u4 FAR *buf4; + + c = REV((u4)crc); + c = ~c; + while (len && ((ptrdiff_t)buf & 3)) { + c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8); + len--; + } + + buf4 = (const u4 FAR *)(const void FAR *)buf; + buf4--; + while (len >= 32) { + DOBIG32; + len -= 32; + } + while (len >= 4) { + DOBIG4; + len -= 4; + } + buf4++; + buf = (const unsigned char FAR *)buf4; + + if (len) do { + c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8); + } while (--len); + c = ~c; + return (unsigned long)(REV(c)); +} + +#endif /* BYFOUR */ + +#define GF2_DIM 32 /* dimension of GF(2) vectors (length of CRC) */ + +/* ========================================================================= */ +local unsigned long gf2_matrix_times(mat, vec) + unsigned long *mat; + unsigned long vec; +{ + unsigned long sum; + + sum = 0; + while (vec) { + if (vec & 1) + sum ^= *mat; + vec >>= 1; + mat++; + } + return sum; +} + +/* ========================================================================= */ +local void gf2_matrix_square(square, mat) + unsigned long *square; + unsigned long *mat; +{ + int n; + + for (n = 0; n < GF2_DIM; n++) + square[n] = gf2_matrix_times(mat, mat[n]); +} + +/* ========================================================================= */ +local uLong crc32_combine_(crc1, crc2, len2) + uLong crc1; + uLong crc2; + z_off64_t len2; +{ + int n; + unsigned long row; + unsigned long even[GF2_DIM]; /* even-power-of-two zeros operator */ + unsigned long odd[GF2_DIM]; /* odd-power-of-two zeros operator */ + + /* degenerate case (also disallow negative lengths) */ + if (len2 <= 0) + return crc1; + + /* put operator for one zero bit in odd */ + odd[0] = 0xedb88320UL; /* CRC-32 polynomial */ + row = 1; + for (n = 1; n < GF2_DIM; n++) { + odd[n] = row; + row <<= 1; + } + + /* put operator for two zero bits in even */ + gf2_matrix_square(even, odd); + + /* put operator for four zero bits in odd */ + gf2_matrix_square(odd, even); + + /* apply len2 zeros to crc1 (first square will put the operator for one + zero byte, eight zero bits, in even) */ + do { + /* apply zeros operator for this bit of len2 */ + gf2_matrix_square(even, odd); + if (len2 & 1) + crc1 = gf2_matrix_times(even, crc1); + len2 >>= 1; + + /* if no more bits set, then done */ + if (len2 == 0) + break; + + /* another iteration of the loop with odd and even swapped */ + gf2_matrix_square(odd, even); + if (len2 & 1) + crc1 = gf2_matrix_times(odd, crc1); + len2 >>= 1; + + /* if no more bits set, then done */ + } while (len2 != 0); + + /* return combined crc */ + crc1 ^= crc2; + return crc1; +} + +/* ========================================================================= */ +uLong ZEXPORT crc32_combine(crc1, crc2, len2) + uLong crc1; + uLong crc2; + z_off_t len2; +{ + return crc32_combine_(crc1, crc2, len2); +} + +uLong ZEXPORT crc32_combine64(crc1, crc2, len2) + uLong crc1; + uLong crc2; + z_off64_t len2; +{ + return crc32_combine_(crc1, crc2, len2); +} diff --git a/3party_sloynik/zlib/crc32.h b/3party_sloynik/zlib/crc32.h new file mode 100644 index 0000000000..8053b6117c --- /dev/null +++ b/3party_sloynik/zlib/crc32.h @@ -0,0 +1,441 @@ +/* crc32.h -- tables for rapid CRC calculation + * Generated automatically by crc32.c + */ + +local const unsigned long FAR crc_table[TBLS][256] = +{ + { + 0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL, + 0x706af48fUL, 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL, + 0xe0d5e91eUL, 0x97d2d988UL, 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL, + 0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, 0xf3b97148UL, 0x84be41deUL, + 0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, 0x136c9856UL, + 0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL, + 0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL, + 0xa2677172UL, 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL, + 0x35b5a8faUL, 0x42b2986cUL, 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL, + 0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, 0x26d930acUL, 0x51de003aUL, + 0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, 0xcfba9599UL, + 0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL, + 0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL, + 0x01db7106UL, 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL, + 0x9fbfe4a5UL, 0xe8b8d433UL, 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL, + 0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, 0x91646c97UL, 0xe6635c01UL, + 0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, 0x6c0695edUL, + 0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL, + 0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL, + 0xfbd44c65UL, 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL, + 0x4adfa541UL, 0x3dd895d7UL, 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL, + 0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, 0x44042d73UL, 0x33031de5UL, + 0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, 0xbe0b1010UL, + 0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL, + 0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL, + 0x2eb40d81UL, 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL, + 0x03b6e20cUL, 0x74b1d29aUL, 0xead54739UL, 0x9dd277afUL, 0x04db2615UL, + 0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, 0x0d6d6a3eUL, 0x7a6a5aa8UL, + 0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, 0xf00f9344UL, + 0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL, + 0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL, + 0x67dd4accUL, 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL, + 0xd6d6a3e8UL, 0xa1d1937eUL, 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL, + 0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, 0xd80d2bdaUL, 0xaf0a1b4cUL, + 0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, 0x316e8eefUL, + 0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL, + 0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL, + 0xb2bd0b28UL, 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL, + 0x2cd99e8bUL, 0x5bdeae1dUL, 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL, + 0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, 0x72076785UL, 0x05005713UL, + 0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, 0x92d28e9bUL, + 0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL, + 0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL, + 0x18b74777UL, 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL, + 0x8f659effUL, 0xf862ae69UL, 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL, + 0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, 0xa7672661UL, 0xd06016f7UL, + 0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, 0x40df0b66UL, + 0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL, + 0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL, + 0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL, + 0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL, + 0x2d02ef8dUL +#ifdef BYFOUR + }, + { + 0x00000000UL, 0x191b3141UL, 0x32366282UL, 0x2b2d53c3UL, 0x646cc504UL, + 0x7d77f445UL, 0x565aa786UL, 0x4f4196c7UL, 0xc8d98a08UL, 0xd1c2bb49UL, + 0xfaefe88aUL, 0xe3f4d9cbUL, 0xacb54f0cUL, 0xb5ae7e4dUL, 0x9e832d8eUL, + 0x87981ccfUL, 0x4ac21251UL, 0x53d92310UL, 0x78f470d3UL, 0x61ef4192UL, + 0x2eaed755UL, 0x37b5e614UL, 0x1c98b5d7UL, 0x05838496UL, 0x821b9859UL, + 0x9b00a918UL, 0xb02dfadbUL, 0xa936cb9aUL, 0xe6775d5dUL, 0xff6c6c1cUL, + 0xd4413fdfUL, 0xcd5a0e9eUL, 0x958424a2UL, 0x8c9f15e3UL, 0xa7b24620UL, + 0xbea97761UL, 0xf1e8e1a6UL, 0xe8f3d0e7UL, 0xc3de8324UL, 0xdac5b265UL, + 0x5d5daeaaUL, 0x44469febUL, 0x6f6bcc28UL, 0x7670fd69UL, 0x39316baeUL, + 0x202a5aefUL, 0x0b07092cUL, 0x121c386dUL, 0xdf4636f3UL, 0xc65d07b2UL, + 0xed705471UL, 0xf46b6530UL, 0xbb2af3f7UL, 0xa231c2b6UL, 0x891c9175UL, + 0x9007a034UL, 0x179fbcfbUL, 0x0e848dbaUL, 0x25a9de79UL, 0x3cb2ef38UL, + 0x73f379ffUL, 0x6ae848beUL, 0x41c51b7dUL, 0x58de2a3cUL, 0xf0794f05UL, + 0xe9627e44UL, 0xc24f2d87UL, 0xdb541cc6UL, 0x94158a01UL, 0x8d0ebb40UL, + 0xa623e883UL, 0xbf38d9c2UL, 0x38a0c50dUL, 0x21bbf44cUL, 0x0a96a78fUL, + 0x138d96ceUL, 0x5ccc0009UL, 0x45d73148UL, 0x6efa628bUL, 0x77e153caUL, + 0xbabb5d54UL, 0xa3a06c15UL, 0x888d3fd6UL, 0x91960e97UL, 0xded79850UL, + 0xc7cca911UL, 0xece1fad2UL, 0xf5facb93UL, 0x7262d75cUL, 0x6b79e61dUL, + 0x4054b5deUL, 0x594f849fUL, 0x160e1258UL, 0x0f152319UL, 0x243870daUL, + 0x3d23419bUL, 0x65fd6ba7UL, 0x7ce65ae6UL, 0x57cb0925UL, 0x4ed03864UL, + 0x0191aea3UL, 0x188a9fe2UL, 0x33a7cc21UL, 0x2abcfd60UL, 0xad24e1afUL, + 0xb43fd0eeUL, 0x9f12832dUL, 0x8609b26cUL, 0xc94824abUL, 0xd05315eaUL, + 0xfb7e4629UL, 0xe2657768UL, 0x2f3f79f6UL, 0x362448b7UL, 0x1d091b74UL, + 0x04122a35UL, 0x4b53bcf2UL, 0x52488db3UL, 0x7965de70UL, 0x607eef31UL, + 0xe7e6f3feUL, 0xfefdc2bfUL, 0xd5d0917cUL, 0xcccba03dUL, 0x838a36faUL, + 0x9a9107bbUL, 0xb1bc5478UL, 0xa8a76539UL, 0x3b83984bUL, 0x2298a90aUL, + 0x09b5fac9UL, 0x10aecb88UL, 0x5fef5d4fUL, 0x46f46c0eUL, 0x6dd93fcdUL, + 0x74c20e8cUL, 0xf35a1243UL, 0xea412302UL, 0xc16c70c1UL, 0xd8774180UL, + 0x9736d747UL, 0x8e2de606UL, 0xa500b5c5UL, 0xbc1b8484UL, 0x71418a1aUL, + 0x685abb5bUL, 0x4377e898UL, 0x5a6cd9d9UL, 0x152d4f1eUL, 0x0c367e5fUL, + 0x271b2d9cUL, 0x3e001cddUL, 0xb9980012UL, 0xa0833153UL, 0x8bae6290UL, + 0x92b553d1UL, 0xddf4c516UL, 0xc4eff457UL, 0xefc2a794UL, 0xf6d996d5UL, + 0xae07bce9UL, 0xb71c8da8UL, 0x9c31de6bUL, 0x852aef2aUL, 0xca6b79edUL, + 0xd37048acUL, 0xf85d1b6fUL, 0xe1462a2eUL, 0x66de36e1UL, 0x7fc507a0UL, + 0x54e85463UL, 0x4df36522UL, 0x02b2f3e5UL, 0x1ba9c2a4UL, 0x30849167UL, + 0x299fa026UL, 0xe4c5aeb8UL, 0xfdde9ff9UL, 0xd6f3cc3aUL, 0xcfe8fd7bUL, + 0x80a96bbcUL, 0x99b25afdUL, 0xb29f093eUL, 0xab84387fUL, 0x2c1c24b0UL, + 0x350715f1UL, 0x1e2a4632UL, 0x07317773UL, 0x4870e1b4UL, 0x516bd0f5UL, + 0x7a468336UL, 0x635db277UL, 0xcbfad74eUL, 0xd2e1e60fUL, 0xf9ccb5ccUL, + 0xe0d7848dUL, 0xaf96124aUL, 0xb68d230bUL, 0x9da070c8UL, 0x84bb4189UL, + 0x03235d46UL, 0x1a386c07UL, 0x31153fc4UL, 0x280e0e85UL, 0x674f9842UL, + 0x7e54a903UL, 0x5579fac0UL, 0x4c62cb81UL, 0x8138c51fUL, 0x9823f45eUL, + 0xb30ea79dUL, 0xaa1596dcUL, 0xe554001bUL, 0xfc4f315aUL, 0xd7626299UL, + 0xce7953d8UL, 0x49e14f17UL, 0x50fa7e56UL, 0x7bd72d95UL, 0x62cc1cd4UL, + 0x2d8d8a13UL, 0x3496bb52UL, 0x1fbbe891UL, 0x06a0d9d0UL, 0x5e7ef3ecUL, + 0x4765c2adUL, 0x6c48916eUL, 0x7553a02fUL, 0x3a1236e8UL, 0x230907a9UL, + 0x0824546aUL, 0x113f652bUL, 0x96a779e4UL, 0x8fbc48a5UL, 0xa4911b66UL, + 0xbd8a2a27UL, 0xf2cbbce0UL, 0xebd08da1UL, 0xc0fdde62UL, 0xd9e6ef23UL, + 0x14bce1bdUL, 0x0da7d0fcUL, 0x268a833fUL, 0x3f91b27eUL, 0x70d024b9UL, + 0x69cb15f8UL, 0x42e6463bUL, 0x5bfd777aUL, 0xdc656bb5UL, 0xc57e5af4UL, + 0xee530937UL, 0xf7483876UL, 0xb809aeb1UL, 0xa1129ff0UL, 0x8a3fcc33UL, + 0x9324fd72UL + }, + { + 0x00000000UL, 0x01c26a37UL, 0x0384d46eUL, 0x0246be59UL, 0x0709a8dcUL, + 0x06cbc2ebUL, 0x048d7cb2UL, 0x054f1685UL, 0x0e1351b8UL, 0x0fd13b8fUL, + 0x0d9785d6UL, 0x0c55efe1UL, 0x091af964UL, 0x08d89353UL, 0x0a9e2d0aUL, + 0x0b5c473dUL, 0x1c26a370UL, 0x1de4c947UL, 0x1fa2771eUL, 0x1e601d29UL, + 0x1b2f0bacUL, 0x1aed619bUL, 0x18abdfc2UL, 0x1969b5f5UL, 0x1235f2c8UL, + 0x13f798ffUL, 0x11b126a6UL, 0x10734c91UL, 0x153c5a14UL, 0x14fe3023UL, + 0x16b88e7aUL, 0x177ae44dUL, 0x384d46e0UL, 0x398f2cd7UL, 0x3bc9928eUL, + 0x3a0bf8b9UL, 0x3f44ee3cUL, 0x3e86840bUL, 0x3cc03a52UL, 0x3d025065UL, + 0x365e1758UL, 0x379c7d6fUL, 0x35dac336UL, 0x3418a901UL, 0x3157bf84UL, + 0x3095d5b3UL, 0x32d36beaUL, 0x331101ddUL, 0x246be590UL, 0x25a98fa7UL, + 0x27ef31feUL, 0x262d5bc9UL, 0x23624d4cUL, 0x22a0277bUL, 0x20e69922UL, + 0x2124f315UL, 0x2a78b428UL, 0x2bbade1fUL, 0x29fc6046UL, 0x283e0a71UL, + 0x2d711cf4UL, 0x2cb376c3UL, 0x2ef5c89aUL, 0x2f37a2adUL, 0x709a8dc0UL, + 0x7158e7f7UL, 0x731e59aeUL, 0x72dc3399UL, 0x7793251cUL, 0x76514f2bUL, + 0x7417f172UL, 0x75d59b45UL, 0x7e89dc78UL, 0x7f4bb64fUL, 0x7d0d0816UL, + 0x7ccf6221UL, 0x798074a4UL, 0x78421e93UL, 0x7a04a0caUL, 0x7bc6cafdUL, + 0x6cbc2eb0UL, 0x6d7e4487UL, 0x6f38fadeUL, 0x6efa90e9UL, 0x6bb5866cUL, + 0x6a77ec5bUL, 0x68315202UL, 0x69f33835UL, 0x62af7f08UL, 0x636d153fUL, + 0x612bab66UL, 0x60e9c151UL, 0x65a6d7d4UL, 0x6464bde3UL, 0x662203baUL, + 0x67e0698dUL, 0x48d7cb20UL, 0x4915a117UL, 0x4b531f4eUL, 0x4a917579UL, + 0x4fde63fcUL, 0x4e1c09cbUL, 0x4c5ab792UL, 0x4d98dda5UL, 0x46c49a98UL, + 0x4706f0afUL, 0x45404ef6UL, 0x448224c1UL, 0x41cd3244UL, 0x400f5873UL, + 0x4249e62aUL, 0x438b8c1dUL, 0x54f16850UL, 0x55330267UL, 0x5775bc3eUL, + 0x56b7d609UL, 0x53f8c08cUL, 0x523aaabbUL, 0x507c14e2UL, 0x51be7ed5UL, + 0x5ae239e8UL, 0x5b2053dfUL, 0x5966ed86UL, 0x58a487b1UL, 0x5deb9134UL, + 0x5c29fb03UL, 0x5e6f455aUL, 0x5fad2f6dUL, 0xe1351b80UL, 0xe0f771b7UL, + 0xe2b1cfeeUL, 0xe373a5d9UL, 0xe63cb35cUL, 0xe7fed96bUL, 0xe5b86732UL, + 0xe47a0d05UL, 0xef264a38UL, 0xeee4200fUL, 0xeca29e56UL, 0xed60f461UL, + 0xe82fe2e4UL, 0xe9ed88d3UL, 0xebab368aUL, 0xea695cbdUL, 0xfd13b8f0UL, + 0xfcd1d2c7UL, 0xfe976c9eUL, 0xff5506a9UL, 0xfa1a102cUL, 0xfbd87a1bUL, + 0xf99ec442UL, 0xf85cae75UL, 0xf300e948UL, 0xf2c2837fUL, 0xf0843d26UL, + 0xf1465711UL, 0xf4094194UL, 0xf5cb2ba3UL, 0xf78d95faUL, 0xf64fffcdUL, + 0xd9785d60UL, 0xd8ba3757UL, 0xdafc890eUL, 0xdb3ee339UL, 0xde71f5bcUL, + 0xdfb39f8bUL, 0xddf521d2UL, 0xdc374be5UL, 0xd76b0cd8UL, 0xd6a966efUL, + 0xd4efd8b6UL, 0xd52db281UL, 0xd062a404UL, 0xd1a0ce33UL, 0xd3e6706aUL, + 0xd2241a5dUL, 0xc55efe10UL, 0xc49c9427UL, 0xc6da2a7eUL, 0xc7184049UL, + 0xc25756ccUL, 0xc3953cfbUL, 0xc1d382a2UL, 0xc011e895UL, 0xcb4dafa8UL, + 0xca8fc59fUL, 0xc8c97bc6UL, 0xc90b11f1UL, 0xcc440774UL, 0xcd866d43UL, + 0xcfc0d31aUL, 0xce02b92dUL, 0x91af9640UL, 0x906dfc77UL, 0x922b422eUL, + 0x93e92819UL, 0x96a63e9cUL, 0x976454abUL, 0x9522eaf2UL, 0x94e080c5UL, + 0x9fbcc7f8UL, 0x9e7eadcfUL, 0x9c381396UL, 0x9dfa79a1UL, 0x98b56f24UL, + 0x99770513UL, 0x9b31bb4aUL, 0x9af3d17dUL, 0x8d893530UL, 0x8c4b5f07UL, + 0x8e0de15eUL, 0x8fcf8b69UL, 0x8a809decUL, 0x8b42f7dbUL, 0x89044982UL, + 0x88c623b5UL, 0x839a6488UL, 0x82580ebfUL, 0x801eb0e6UL, 0x81dcdad1UL, + 0x8493cc54UL, 0x8551a663UL, 0x8717183aUL, 0x86d5720dUL, 0xa9e2d0a0UL, + 0xa820ba97UL, 0xaa6604ceUL, 0xaba46ef9UL, 0xaeeb787cUL, 0xaf29124bUL, + 0xad6fac12UL, 0xacadc625UL, 0xa7f18118UL, 0xa633eb2fUL, 0xa4755576UL, + 0xa5b73f41UL, 0xa0f829c4UL, 0xa13a43f3UL, 0xa37cfdaaUL, 0xa2be979dUL, + 0xb5c473d0UL, 0xb40619e7UL, 0xb640a7beUL, 0xb782cd89UL, 0xb2cddb0cUL, + 0xb30fb13bUL, 0xb1490f62UL, 0xb08b6555UL, 0xbbd72268UL, 0xba15485fUL, + 0xb853f606UL, 0xb9919c31UL, 0xbcde8ab4UL, 0xbd1ce083UL, 0xbf5a5edaUL, + 0xbe9834edUL + }, + { + 0x00000000UL, 0xb8bc6765UL, 0xaa09c88bUL, 0x12b5afeeUL, 0x8f629757UL, + 0x37def032UL, 0x256b5fdcUL, 0x9dd738b9UL, 0xc5b428efUL, 0x7d084f8aUL, + 0x6fbde064UL, 0xd7018701UL, 0x4ad6bfb8UL, 0xf26ad8ddUL, 0xe0df7733UL, + 0x58631056UL, 0x5019579fUL, 0xe8a530faUL, 0xfa109f14UL, 0x42acf871UL, + 0xdf7bc0c8UL, 0x67c7a7adUL, 0x75720843UL, 0xcdce6f26UL, 0x95ad7f70UL, + 0x2d111815UL, 0x3fa4b7fbUL, 0x8718d09eUL, 0x1acfe827UL, 0xa2738f42UL, + 0xb0c620acUL, 0x087a47c9UL, 0xa032af3eUL, 0x188ec85bUL, 0x0a3b67b5UL, + 0xb28700d0UL, 0x2f503869UL, 0x97ec5f0cUL, 0x8559f0e2UL, 0x3de59787UL, + 0x658687d1UL, 0xdd3ae0b4UL, 0xcf8f4f5aUL, 0x7733283fUL, 0xeae41086UL, + 0x525877e3UL, 0x40edd80dUL, 0xf851bf68UL, 0xf02bf8a1UL, 0x48979fc4UL, + 0x5a22302aUL, 0xe29e574fUL, 0x7f496ff6UL, 0xc7f50893UL, 0xd540a77dUL, + 0x6dfcc018UL, 0x359fd04eUL, 0x8d23b72bUL, 0x9f9618c5UL, 0x272a7fa0UL, + 0xbafd4719UL, 0x0241207cUL, 0x10f48f92UL, 0xa848e8f7UL, 0x9b14583dUL, + 0x23a83f58UL, 0x311d90b6UL, 0x89a1f7d3UL, 0x1476cf6aUL, 0xaccaa80fUL, + 0xbe7f07e1UL, 0x06c36084UL, 0x5ea070d2UL, 0xe61c17b7UL, 0xf4a9b859UL, + 0x4c15df3cUL, 0xd1c2e785UL, 0x697e80e0UL, 0x7bcb2f0eUL, 0xc377486bUL, + 0xcb0d0fa2UL, 0x73b168c7UL, 0x6104c729UL, 0xd9b8a04cUL, 0x446f98f5UL, + 0xfcd3ff90UL, 0xee66507eUL, 0x56da371bUL, 0x0eb9274dUL, 0xb6054028UL, + 0xa4b0efc6UL, 0x1c0c88a3UL, 0x81dbb01aUL, 0x3967d77fUL, 0x2bd27891UL, + 0x936e1ff4UL, 0x3b26f703UL, 0x839a9066UL, 0x912f3f88UL, 0x299358edUL, + 0xb4446054UL, 0x0cf80731UL, 0x1e4da8dfUL, 0xa6f1cfbaUL, 0xfe92dfecUL, + 0x462eb889UL, 0x549b1767UL, 0xec277002UL, 0x71f048bbUL, 0xc94c2fdeUL, + 0xdbf98030UL, 0x6345e755UL, 0x6b3fa09cUL, 0xd383c7f9UL, 0xc1366817UL, + 0x798a0f72UL, 0xe45d37cbUL, 0x5ce150aeUL, 0x4e54ff40UL, 0xf6e89825UL, + 0xae8b8873UL, 0x1637ef16UL, 0x048240f8UL, 0xbc3e279dUL, 0x21e91f24UL, + 0x99557841UL, 0x8be0d7afUL, 0x335cb0caUL, 0xed59b63bUL, 0x55e5d15eUL, + 0x47507eb0UL, 0xffec19d5UL, 0x623b216cUL, 0xda874609UL, 0xc832e9e7UL, + 0x708e8e82UL, 0x28ed9ed4UL, 0x9051f9b1UL, 0x82e4565fUL, 0x3a58313aUL, + 0xa78f0983UL, 0x1f336ee6UL, 0x0d86c108UL, 0xb53aa66dUL, 0xbd40e1a4UL, + 0x05fc86c1UL, 0x1749292fUL, 0xaff54e4aUL, 0x322276f3UL, 0x8a9e1196UL, + 0x982bbe78UL, 0x2097d91dUL, 0x78f4c94bUL, 0xc048ae2eUL, 0xd2fd01c0UL, + 0x6a4166a5UL, 0xf7965e1cUL, 0x4f2a3979UL, 0x5d9f9697UL, 0xe523f1f2UL, + 0x4d6b1905UL, 0xf5d77e60UL, 0xe762d18eUL, 0x5fdeb6ebUL, 0xc2098e52UL, + 0x7ab5e937UL, 0x680046d9UL, 0xd0bc21bcUL, 0x88df31eaUL, 0x3063568fUL, + 0x22d6f961UL, 0x9a6a9e04UL, 0x07bda6bdUL, 0xbf01c1d8UL, 0xadb46e36UL, + 0x15080953UL, 0x1d724e9aUL, 0xa5ce29ffUL, 0xb77b8611UL, 0x0fc7e174UL, + 0x9210d9cdUL, 0x2aacbea8UL, 0x38191146UL, 0x80a57623UL, 0xd8c66675UL, + 0x607a0110UL, 0x72cfaefeUL, 0xca73c99bUL, 0x57a4f122UL, 0xef189647UL, + 0xfdad39a9UL, 0x45115eccUL, 0x764dee06UL, 0xcef18963UL, 0xdc44268dUL, + 0x64f841e8UL, 0xf92f7951UL, 0x41931e34UL, 0x5326b1daUL, 0xeb9ad6bfUL, + 0xb3f9c6e9UL, 0x0b45a18cUL, 0x19f00e62UL, 0xa14c6907UL, 0x3c9b51beUL, + 0x842736dbUL, 0x96929935UL, 0x2e2efe50UL, 0x2654b999UL, 0x9ee8defcUL, + 0x8c5d7112UL, 0x34e11677UL, 0xa9362eceUL, 0x118a49abUL, 0x033fe645UL, + 0xbb838120UL, 0xe3e09176UL, 0x5b5cf613UL, 0x49e959fdUL, 0xf1553e98UL, + 0x6c820621UL, 0xd43e6144UL, 0xc68bceaaUL, 0x7e37a9cfUL, 0xd67f4138UL, + 0x6ec3265dUL, 0x7c7689b3UL, 0xc4caeed6UL, 0x591dd66fUL, 0xe1a1b10aUL, + 0xf3141ee4UL, 0x4ba87981UL, 0x13cb69d7UL, 0xab770eb2UL, 0xb9c2a15cUL, + 0x017ec639UL, 0x9ca9fe80UL, 0x241599e5UL, 0x36a0360bUL, 0x8e1c516eUL, + 0x866616a7UL, 0x3eda71c2UL, 0x2c6fde2cUL, 0x94d3b949UL, 0x090481f0UL, + 0xb1b8e695UL, 0xa30d497bUL, 0x1bb12e1eUL, 0x43d23e48UL, 0xfb6e592dUL, + 0xe9dbf6c3UL, 0x516791a6UL, 0xccb0a91fUL, 0x740cce7aUL, 0x66b96194UL, + 0xde0506f1UL + }, + { + 0x00000000UL, 0x96300777UL, 0x2c610eeeUL, 0xba510999UL, 0x19c46d07UL, + 0x8ff46a70UL, 0x35a563e9UL, 0xa395649eUL, 0x3288db0eUL, 0xa4b8dc79UL, + 0x1ee9d5e0UL, 0x88d9d297UL, 0x2b4cb609UL, 0xbd7cb17eUL, 0x072db8e7UL, + 0x911dbf90UL, 0x6410b71dUL, 0xf220b06aUL, 0x4871b9f3UL, 0xde41be84UL, + 0x7dd4da1aUL, 0xebe4dd6dUL, 0x51b5d4f4UL, 0xc785d383UL, 0x56986c13UL, + 0xc0a86b64UL, 0x7af962fdUL, 0xecc9658aUL, 0x4f5c0114UL, 0xd96c0663UL, + 0x633d0ffaUL, 0xf50d088dUL, 0xc8206e3bUL, 0x5e10694cUL, 0xe44160d5UL, + 0x727167a2UL, 0xd1e4033cUL, 0x47d4044bUL, 0xfd850dd2UL, 0x6bb50aa5UL, + 0xfaa8b535UL, 0x6c98b242UL, 0xd6c9bbdbUL, 0x40f9bcacUL, 0xe36cd832UL, + 0x755cdf45UL, 0xcf0dd6dcUL, 0x593dd1abUL, 0xac30d926UL, 0x3a00de51UL, + 0x8051d7c8UL, 0x1661d0bfUL, 0xb5f4b421UL, 0x23c4b356UL, 0x9995bacfUL, + 0x0fa5bdb8UL, 0x9eb80228UL, 0x0888055fUL, 0xb2d90cc6UL, 0x24e90bb1UL, + 0x877c6f2fUL, 0x114c6858UL, 0xab1d61c1UL, 0x3d2d66b6UL, 0x9041dc76UL, + 0x0671db01UL, 0xbc20d298UL, 0x2a10d5efUL, 0x8985b171UL, 0x1fb5b606UL, + 0xa5e4bf9fUL, 0x33d4b8e8UL, 0xa2c90778UL, 0x34f9000fUL, 0x8ea80996UL, + 0x18980ee1UL, 0xbb0d6a7fUL, 0x2d3d6d08UL, 0x976c6491UL, 0x015c63e6UL, + 0xf4516b6bUL, 0x62616c1cUL, 0xd8306585UL, 0x4e0062f2UL, 0xed95066cUL, + 0x7ba5011bUL, 0xc1f40882UL, 0x57c40ff5UL, 0xc6d9b065UL, 0x50e9b712UL, + 0xeab8be8bUL, 0x7c88b9fcUL, 0xdf1ddd62UL, 0x492dda15UL, 0xf37cd38cUL, + 0x654cd4fbUL, 0x5861b24dUL, 0xce51b53aUL, 0x7400bca3UL, 0xe230bbd4UL, + 0x41a5df4aUL, 0xd795d83dUL, 0x6dc4d1a4UL, 0xfbf4d6d3UL, 0x6ae96943UL, + 0xfcd96e34UL, 0x468867adUL, 0xd0b860daUL, 0x732d0444UL, 0xe51d0333UL, + 0x5f4c0aaaUL, 0xc97c0dddUL, 0x3c710550UL, 0xaa410227UL, 0x10100bbeUL, + 0x86200cc9UL, 0x25b56857UL, 0xb3856f20UL, 0x09d466b9UL, 0x9fe461ceUL, + 0x0ef9de5eUL, 0x98c9d929UL, 0x2298d0b0UL, 0xb4a8d7c7UL, 0x173db359UL, + 0x810db42eUL, 0x3b5cbdb7UL, 0xad6cbac0UL, 0x2083b8edUL, 0xb6b3bf9aUL, + 0x0ce2b603UL, 0x9ad2b174UL, 0x3947d5eaUL, 0xaf77d29dUL, 0x1526db04UL, + 0x8316dc73UL, 0x120b63e3UL, 0x843b6494UL, 0x3e6a6d0dUL, 0xa85a6a7aUL, + 0x0bcf0ee4UL, 0x9dff0993UL, 0x27ae000aUL, 0xb19e077dUL, 0x44930ff0UL, + 0xd2a30887UL, 0x68f2011eUL, 0xfec20669UL, 0x5d5762f7UL, 0xcb676580UL, + 0x71366c19UL, 0xe7066b6eUL, 0x761bd4feUL, 0xe02bd389UL, 0x5a7ada10UL, + 0xcc4add67UL, 0x6fdfb9f9UL, 0xf9efbe8eUL, 0x43beb717UL, 0xd58eb060UL, + 0xe8a3d6d6UL, 0x7e93d1a1UL, 0xc4c2d838UL, 0x52f2df4fUL, 0xf167bbd1UL, + 0x6757bca6UL, 0xdd06b53fUL, 0x4b36b248UL, 0xda2b0dd8UL, 0x4c1b0aafUL, + 0xf64a0336UL, 0x607a0441UL, 0xc3ef60dfUL, 0x55df67a8UL, 0xef8e6e31UL, + 0x79be6946UL, 0x8cb361cbUL, 0x1a8366bcUL, 0xa0d26f25UL, 0x36e26852UL, + 0x95770cccUL, 0x03470bbbUL, 0xb9160222UL, 0x2f260555UL, 0xbe3bbac5UL, + 0x280bbdb2UL, 0x925ab42bUL, 0x046ab35cUL, 0xa7ffd7c2UL, 0x31cfd0b5UL, + 0x8b9ed92cUL, 0x1daede5bUL, 0xb0c2649bUL, 0x26f263ecUL, 0x9ca36a75UL, + 0x0a936d02UL, 0xa906099cUL, 0x3f360eebUL, 0x85670772UL, 0x13570005UL, + 0x824abf95UL, 0x147ab8e2UL, 0xae2bb17bUL, 0x381bb60cUL, 0x9b8ed292UL, + 0x0dbed5e5UL, 0xb7efdc7cUL, 0x21dfdb0bUL, 0xd4d2d386UL, 0x42e2d4f1UL, + 0xf8b3dd68UL, 0x6e83da1fUL, 0xcd16be81UL, 0x5b26b9f6UL, 0xe177b06fUL, + 0x7747b718UL, 0xe65a0888UL, 0x706a0fffUL, 0xca3b0666UL, 0x5c0b0111UL, + 0xff9e658fUL, 0x69ae62f8UL, 0xd3ff6b61UL, 0x45cf6c16UL, 0x78e20aa0UL, + 0xeed20dd7UL, 0x5483044eUL, 0xc2b30339UL, 0x612667a7UL, 0xf71660d0UL, + 0x4d476949UL, 0xdb776e3eUL, 0x4a6ad1aeUL, 0xdc5ad6d9UL, 0x660bdf40UL, + 0xf03bd837UL, 0x53aebca9UL, 0xc59ebbdeUL, 0x7fcfb247UL, 0xe9ffb530UL, + 0x1cf2bdbdUL, 0x8ac2bacaUL, 0x3093b353UL, 0xa6a3b424UL, 0x0536d0baUL, + 0x9306d7cdUL, 0x2957de54UL, 0xbf67d923UL, 0x2e7a66b3UL, 0xb84a61c4UL, + 0x021b685dUL, 0x942b6f2aUL, 0x37be0bb4UL, 0xa18e0cc3UL, 0x1bdf055aUL, + 0x8def022dUL + }, + { + 0x00000000UL, 0x41311b19UL, 0x82623632UL, 0xc3532d2bUL, 0x04c56c64UL, + 0x45f4777dUL, 0x86a75a56UL, 0xc796414fUL, 0x088ad9c8UL, 0x49bbc2d1UL, + 0x8ae8effaUL, 0xcbd9f4e3UL, 0x0c4fb5acUL, 0x4d7eaeb5UL, 0x8e2d839eUL, + 0xcf1c9887UL, 0x5112c24aUL, 0x1023d953UL, 0xd370f478UL, 0x9241ef61UL, + 0x55d7ae2eUL, 0x14e6b537UL, 0xd7b5981cUL, 0x96848305UL, 0x59981b82UL, + 0x18a9009bUL, 0xdbfa2db0UL, 0x9acb36a9UL, 0x5d5d77e6UL, 0x1c6c6cffUL, + 0xdf3f41d4UL, 0x9e0e5acdUL, 0xa2248495UL, 0xe3159f8cUL, 0x2046b2a7UL, + 0x6177a9beUL, 0xa6e1e8f1UL, 0xe7d0f3e8UL, 0x2483dec3UL, 0x65b2c5daUL, + 0xaaae5d5dUL, 0xeb9f4644UL, 0x28cc6b6fUL, 0x69fd7076UL, 0xae6b3139UL, + 0xef5a2a20UL, 0x2c09070bUL, 0x6d381c12UL, 0xf33646dfUL, 0xb2075dc6UL, + 0x715470edUL, 0x30656bf4UL, 0xf7f32abbUL, 0xb6c231a2UL, 0x75911c89UL, + 0x34a00790UL, 0xfbbc9f17UL, 0xba8d840eUL, 0x79dea925UL, 0x38efb23cUL, + 0xff79f373UL, 0xbe48e86aUL, 0x7d1bc541UL, 0x3c2ade58UL, 0x054f79f0UL, + 0x447e62e9UL, 0x872d4fc2UL, 0xc61c54dbUL, 0x018a1594UL, 0x40bb0e8dUL, + 0x83e823a6UL, 0xc2d938bfUL, 0x0dc5a038UL, 0x4cf4bb21UL, 0x8fa7960aUL, + 0xce968d13UL, 0x0900cc5cUL, 0x4831d745UL, 0x8b62fa6eUL, 0xca53e177UL, + 0x545dbbbaUL, 0x156ca0a3UL, 0xd63f8d88UL, 0x970e9691UL, 0x5098d7deUL, + 0x11a9ccc7UL, 0xd2fae1ecUL, 0x93cbfaf5UL, 0x5cd76272UL, 0x1de6796bUL, + 0xdeb55440UL, 0x9f844f59UL, 0x58120e16UL, 0x1923150fUL, 0xda703824UL, + 0x9b41233dUL, 0xa76bfd65UL, 0xe65ae67cUL, 0x2509cb57UL, 0x6438d04eUL, + 0xa3ae9101UL, 0xe29f8a18UL, 0x21cca733UL, 0x60fdbc2aUL, 0xafe124adUL, + 0xeed03fb4UL, 0x2d83129fUL, 0x6cb20986UL, 0xab2448c9UL, 0xea1553d0UL, + 0x29467efbUL, 0x687765e2UL, 0xf6793f2fUL, 0xb7482436UL, 0x741b091dUL, + 0x352a1204UL, 0xf2bc534bUL, 0xb38d4852UL, 0x70de6579UL, 0x31ef7e60UL, + 0xfef3e6e7UL, 0xbfc2fdfeUL, 0x7c91d0d5UL, 0x3da0cbccUL, 0xfa368a83UL, + 0xbb07919aUL, 0x7854bcb1UL, 0x3965a7a8UL, 0x4b98833bUL, 0x0aa99822UL, + 0xc9fab509UL, 0x88cbae10UL, 0x4f5def5fUL, 0x0e6cf446UL, 0xcd3fd96dUL, + 0x8c0ec274UL, 0x43125af3UL, 0x022341eaUL, 0xc1706cc1UL, 0x804177d8UL, + 0x47d73697UL, 0x06e62d8eUL, 0xc5b500a5UL, 0x84841bbcUL, 0x1a8a4171UL, + 0x5bbb5a68UL, 0x98e87743UL, 0xd9d96c5aUL, 0x1e4f2d15UL, 0x5f7e360cUL, + 0x9c2d1b27UL, 0xdd1c003eUL, 0x120098b9UL, 0x533183a0UL, 0x9062ae8bUL, + 0xd153b592UL, 0x16c5f4ddUL, 0x57f4efc4UL, 0x94a7c2efUL, 0xd596d9f6UL, + 0xe9bc07aeUL, 0xa88d1cb7UL, 0x6bde319cUL, 0x2aef2a85UL, 0xed796bcaUL, + 0xac4870d3UL, 0x6f1b5df8UL, 0x2e2a46e1UL, 0xe136de66UL, 0xa007c57fUL, + 0x6354e854UL, 0x2265f34dUL, 0xe5f3b202UL, 0xa4c2a91bUL, 0x67918430UL, + 0x26a09f29UL, 0xb8aec5e4UL, 0xf99fdefdUL, 0x3accf3d6UL, 0x7bfde8cfUL, + 0xbc6ba980UL, 0xfd5ab299UL, 0x3e099fb2UL, 0x7f3884abUL, 0xb0241c2cUL, + 0xf1150735UL, 0x32462a1eUL, 0x73773107UL, 0xb4e17048UL, 0xf5d06b51UL, + 0x3683467aUL, 0x77b25d63UL, 0x4ed7facbUL, 0x0fe6e1d2UL, 0xccb5ccf9UL, + 0x8d84d7e0UL, 0x4a1296afUL, 0x0b238db6UL, 0xc870a09dUL, 0x8941bb84UL, + 0x465d2303UL, 0x076c381aUL, 0xc43f1531UL, 0x850e0e28UL, 0x42984f67UL, + 0x03a9547eUL, 0xc0fa7955UL, 0x81cb624cUL, 0x1fc53881UL, 0x5ef42398UL, + 0x9da70eb3UL, 0xdc9615aaUL, 0x1b0054e5UL, 0x5a314ffcUL, 0x996262d7UL, + 0xd85379ceUL, 0x174fe149UL, 0x567efa50UL, 0x952dd77bUL, 0xd41ccc62UL, + 0x138a8d2dUL, 0x52bb9634UL, 0x91e8bb1fUL, 0xd0d9a006UL, 0xecf37e5eUL, + 0xadc26547UL, 0x6e91486cUL, 0x2fa05375UL, 0xe836123aUL, 0xa9070923UL, + 0x6a542408UL, 0x2b653f11UL, 0xe479a796UL, 0xa548bc8fUL, 0x661b91a4UL, + 0x272a8abdUL, 0xe0bccbf2UL, 0xa18dd0ebUL, 0x62defdc0UL, 0x23efe6d9UL, + 0xbde1bc14UL, 0xfcd0a70dUL, 0x3f838a26UL, 0x7eb2913fUL, 0xb924d070UL, + 0xf815cb69UL, 0x3b46e642UL, 0x7a77fd5bUL, 0xb56b65dcUL, 0xf45a7ec5UL, + 0x370953eeUL, 0x763848f7UL, 0xb1ae09b8UL, 0xf09f12a1UL, 0x33cc3f8aUL, + 0x72fd2493UL + }, + { + 0x00000000UL, 0x376ac201UL, 0x6ed48403UL, 0x59be4602UL, 0xdca80907UL, + 0xebc2cb06UL, 0xb27c8d04UL, 0x85164f05UL, 0xb851130eUL, 0x8f3bd10fUL, + 0xd685970dUL, 0xe1ef550cUL, 0x64f91a09UL, 0x5393d808UL, 0x0a2d9e0aUL, + 0x3d475c0bUL, 0x70a3261cUL, 0x47c9e41dUL, 0x1e77a21fUL, 0x291d601eUL, + 0xac0b2f1bUL, 0x9b61ed1aUL, 0xc2dfab18UL, 0xf5b56919UL, 0xc8f23512UL, + 0xff98f713UL, 0xa626b111UL, 0x914c7310UL, 0x145a3c15UL, 0x2330fe14UL, + 0x7a8eb816UL, 0x4de47a17UL, 0xe0464d38UL, 0xd72c8f39UL, 0x8e92c93bUL, + 0xb9f80b3aUL, 0x3cee443fUL, 0x0b84863eUL, 0x523ac03cUL, 0x6550023dUL, + 0x58175e36UL, 0x6f7d9c37UL, 0x36c3da35UL, 0x01a91834UL, 0x84bf5731UL, + 0xb3d59530UL, 0xea6bd332UL, 0xdd011133UL, 0x90e56b24UL, 0xa78fa925UL, + 0xfe31ef27UL, 0xc95b2d26UL, 0x4c4d6223UL, 0x7b27a022UL, 0x2299e620UL, + 0x15f32421UL, 0x28b4782aUL, 0x1fdeba2bUL, 0x4660fc29UL, 0x710a3e28UL, + 0xf41c712dUL, 0xc376b32cUL, 0x9ac8f52eUL, 0xada2372fUL, 0xc08d9a70UL, + 0xf7e75871UL, 0xae591e73UL, 0x9933dc72UL, 0x1c259377UL, 0x2b4f5176UL, + 0x72f11774UL, 0x459bd575UL, 0x78dc897eUL, 0x4fb64b7fUL, 0x16080d7dUL, + 0x2162cf7cUL, 0xa4748079UL, 0x931e4278UL, 0xcaa0047aUL, 0xfdcac67bUL, + 0xb02ebc6cUL, 0x87447e6dUL, 0xdefa386fUL, 0xe990fa6eUL, 0x6c86b56bUL, + 0x5bec776aUL, 0x02523168UL, 0x3538f369UL, 0x087faf62UL, 0x3f156d63UL, + 0x66ab2b61UL, 0x51c1e960UL, 0xd4d7a665UL, 0xe3bd6464UL, 0xba032266UL, + 0x8d69e067UL, 0x20cbd748UL, 0x17a11549UL, 0x4e1f534bUL, 0x7975914aUL, + 0xfc63de4fUL, 0xcb091c4eUL, 0x92b75a4cUL, 0xa5dd984dUL, 0x989ac446UL, + 0xaff00647UL, 0xf64e4045UL, 0xc1248244UL, 0x4432cd41UL, 0x73580f40UL, + 0x2ae64942UL, 0x1d8c8b43UL, 0x5068f154UL, 0x67023355UL, 0x3ebc7557UL, + 0x09d6b756UL, 0x8cc0f853UL, 0xbbaa3a52UL, 0xe2147c50UL, 0xd57ebe51UL, + 0xe839e25aUL, 0xdf53205bUL, 0x86ed6659UL, 0xb187a458UL, 0x3491eb5dUL, + 0x03fb295cUL, 0x5a456f5eUL, 0x6d2fad5fUL, 0x801b35e1UL, 0xb771f7e0UL, + 0xeecfb1e2UL, 0xd9a573e3UL, 0x5cb33ce6UL, 0x6bd9fee7UL, 0x3267b8e5UL, + 0x050d7ae4UL, 0x384a26efUL, 0x0f20e4eeUL, 0x569ea2ecUL, 0x61f460edUL, + 0xe4e22fe8UL, 0xd388ede9UL, 0x8a36abebUL, 0xbd5c69eaUL, 0xf0b813fdUL, + 0xc7d2d1fcUL, 0x9e6c97feUL, 0xa90655ffUL, 0x2c101afaUL, 0x1b7ad8fbUL, + 0x42c49ef9UL, 0x75ae5cf8UL, 0x48e900f3UL, 0x7f83c2f2UL, 0x263d84f0UL, + 0x115746f1UL, 0x944109f4UL, 0xa32bcbf5UL, 0xfa958df7UL, 0xcdff4ff6UL, + 0x605d78d9UL, 0x5737bad8UL, 0x0e89fcdaUL, 0x39e33edbUL, 0xbcf571deUL, + 0x8b9fb3dfUL, 0xd221f5ddUL, 0xe54b37dcUL, 0xd80c6bd7UL, 0xef66a9d6UL, + 0xb6d8efd4UL, 0x81b22dd5UL, 0x04a462d0UL, 0x33cea0d1UL, 0x6a70e6d3UL, + 0x5d1a24d2UL, 0x10fe5ec5UL, 0x27949cc4UL, 0x7e2adac6UL, 0x494018c7UL, + 0xcc5657c2UL, 0xfb3c95c3UL, 0xa282d3c1UL, 0x95e811c0UL, 0xa8af4dcbUL, + 0x9fc58fcaUL, 0xc67bc9c8UL, 0xf1110bc9UL, 0x740744ccUL, 0x436d86cdUL, + 0x1ad3c0cfUL, 0x2db902ceUL, 0x4096af91UL, 0x77fc6d90UL, 0x2e422b92UL, + 0x1928e993UL, 0x9c3ea696UL, 0xab546497UL, 0xf2ea2295UL, 0xc580e094UL, + 0xf8c7bc9fUL, 0xcfad7e9eUL, 0x9613389cUL, 0xa179fa9dUL, 0x246fb598UL, + 0x13057799UL, 0x4abb319bUL, 0x7dd1f39aUL, 0x3035898dUL, 0x075f4b8cUL, + 0x5ee10d8eUL, 0x698bcf8fUL, 0xec9d808aUL, 0xdbf7428bUL, 0x82490489UL, + 0xb523c688UL, 0x88649a83UL, 0xbf0e5882UL, 0xe6b01e80UL, 0xd1dadc81UL, + 0x54cc9384UL, 0x63a65185UL, 0x3a181787UL, 0x0d72d586UL, 0xa0d0e2a9UL, + 0x97ba20a8UL, 0xce0466aaUL, 0xf96ea4abUL, 0x7c78ebaeUL, 0x4b1229afUL, + 0x12ac6fadUL, 0x25c6adacUL, 0x1881f1a7UL, 0x2feb33a6UL, 0x765575a4UL, + 0x413fb7a5UL, 0xc429f8a0UL, 0xf3433aa1UL, 0xaafd7ca3UL, 0x9d97bea2UL, + 0xd073c4b5UL, 0xe71906b4UL, 0xbea740b6UL, 0x89cd82b7UL, 0x0cdbcdb2UL, + 0x3bb10fb3UL, 0x620f49b1UL, 0x55658bb0UL, 0x6822d7bbUL, 0x5f4815baUL, + 0x06f653b8UL, 0x319c91b9UL, 0xb48adebcUL, 0x83e01cbdUL, 0xda5e5abfUL, + 0xed3498beUL + }, + { + 0x00000000UL, 0x6567bcb8UL, 0x8bc809aaUL, 0xeeafb512UL, 0x5797628fUL, + 0x32f0de37UL, 0xdc5f6b25UL, 0xb938d79dUL, 0xef28b4c5UL, 0x8a4f087dUL, + 0x64e0bd6fUL, 0x018701d7UL, 0xb8bfd64aUL, 0xddd86af2UL, 0x3377dfe0UL, + 0x56106358UL, 0x9f571950UL, 0xfa30a5e8UL, 0x149f10faUL, 0x71f8ac42UL, + 0xc8c07bdfUL, 0xada7c767UL, 0x43087275UL, 0x266fcecdUL, 0x707fad95UL, + 0x1518112dUL, 0xfbb7a43fUL, 0x9ed01887UL, 0x27e8cf1aUL, 0x428f73a2UL, + 0xac20c6b0UL, 0xc9477a08UL, 0x3eaf32a0UL, 0x5bc88e18UL, 0xb5673b0aUL, + 0xd00087b2UL, 0x6938502fUL, 0x0c5fec97UL, 0xe2f05985UL, 0x8797e53dUL, + 0xd1878665UL, 0xb4e03addUL, 0x5a4f8fcfUL, 0x3f283377UL, 0x8610e4eaUL, + 0xe3775852UL, 0x0dd8ed40UL, 0x68bf51f8UL, 0xa1f82bf0UL, 0xc49f9748UL, + 0x2a30225aUL, 0x4f579ee2UL, 0xf66f497fUL, 0x9308f5c7UL, 0x7da740d5UL, + 0x18c0fc6dUL, 0x4ed09f35UL, 0x2bb7238dUL, 0xc518969fUL, 0xa07f2a27UL, + 0x1947fdbaUL, 0x7c204102UL, 0x928ff410UL, 0xf7e848a8UL, 0x3d58149bUL, + 0x583fa823UL, 0xb6901d31UL, 0xd3f7a189UL, 0x6acf7614UL, 0x0fa8caacUL, + 0xe1077fbeUL, 0x8460c306UL, 0xd270a05eUL, 0xb7171ce6UL, 0x59b8a9f4UL, + 0x3cdf154cUL, 0x85e7c2d1UL, 0xe0807e69UL, 0x0e2fcb7bUL, 0x6b4877c3UL, + 0xa20f0dcbUL, 0xc768b173UL, 0x29c70461UL, 0x4ca0b8d9UL, 0xf5986f44UL, + 0x90ffd3fcUL, 0x7e5066eeUL, 0x1b37da56UL, 0x4d27b90eUL, 0x284005b6UL, + 0xc6efb0a4UL, 0xa3880c1cUL, 0x1ab0db81UL, 0x7fd76739UL, 0x9178d22bUL, + 0xf41f6e93UL, 0x03f7263bUL, 0x66909a83UL, 0x883f2f91UL, 0xed589329UL, + 0x546044b4UL, 0x3107f80cUL, 0xdfa84d1eUL, 0xbacff1a6UL, 0xecdf92feUL, + 0x89b82e46UL, 0x67179b54UL, 0x027027ecUL, 0xbb48f071UL, 0xde2f4cc9UL, + 0x3080f9dbUL, 0x55e74563UL, 0x9ca03f6bUL, 0xf9c783d3UL, 0x176836c1UL, + 0x720f8a79UL, 0xcb375de4UL, 0xae50e15cUL, 0x40ff544eUL, 0x2598e8f6UL, + 0x73888baeUL, 0x16ef3716UL, 0xf8408204UL, 0x9d273ebcUL, 0x241fe921UL, + 0x41785599UL, 0xafd7e08bUL, 0xcab05c33UL, 0x3bb659edUL, 0x5ed1e555UL, + 0xb07e5047UL, 0xd519ecffUL, 0x6c213b62UL, 0x094687daUL, 0xe7e932c8UL, + 0x828e8e70UL, 0xd49eed28UL, 0xb1f95190UL, 0x5f56e482UL, 0x3a31583aUL, + 0x83098fa7UL, 0xe66e331fUL, 0x08c1860dUL, 0x6da63ab5UL, 0xa4e140bdUL, + 0xc186fc05UL, 0x2f294917UL, 0x4a4ef5afUL, 0xf3762232UL, 0x96119e8aUL, + 0x78be2b98UL, 0x1dd99720UL, 0x4bc9f478UL, 0x2eae48c0UL, 0xc001fdd2UL, + 0xa566416aUL, 0x1c5e96f7UL, 0x79392a4fUL, 0x97969f5dUL, 0xf2f123e5UL, + 0x05196b4dUL, 0x607ed7f5UL, 0x8ed162e7UL, 0xebb6de5fUL, 0x528e09c2UL, + 0x37e9b57aUL, 0xd9460068UL, 0xbc21bcd0UL, 0xea31df88UL, 0x8f566330UL, + 0x61f9d622UL, 0x049e6a9aUL, 0xbda6bd07UL, 0xd8c101bfUL, 0x366eb4adUL, + 0x53090815UL, 0x9a4e721dUL, 0xff29cea5UL, 0x11867bb7UL, 0x74e1c70fUL, + 0xcdd91092UL, 0xa8beac2aUL, 0x46111938UL, 0x2376a580UL, 0x7566c6d8UL, + 0x10017a60UL, 0xfeaecf72UL, 0x9bc973caUL, 0x22f1a457UL, 0x479618efUL, + 0xa939adfdUL, 0xcc5e1145UL, 0x06ee4d76UL, 0x6389f1ceUL, 0x8d2644dcUL, + 0xe841f864UL, 0x51792ff9UL, 0x341e9341UL, 0xdab12653UL, 0xbfd69aebUL, + 0xe9c6f9b3UL, 0x8ca1450bUL, 0x620ef019UL, 0x07694ca1UL, 0xbe519b3cUL, + 0xdb362784UL, 0x35999296UL, 0x50fe2e2eUL, 0x99b95426UL, 0xfcdee89eUL, + 0x12715d8cUL, 0x7716e134UL, 0xce2e36a9UL, 0xab498a11UL, 0x45e63f03UL, + 0x208183bbUL, 0x7691e0e3UL, 0x13f65c5bUL, 0xfd59e949UL, 0x983e55f1UL, + 0x2106826cUL, 0x44613ed4UL, 0xaace8bc6UL, 0xcfa9377eUL, 0x38417fd6UL, + 0x5d26c36eUL, 0xb389767cUL, 0xd6eecac4UL, 0x6fd61d59UL, 0x0ab1a1e1UL, + 0xe41e14f3UL, 0x8179a84bUL, 0xd769cb13UL, 0xb20e77abUL, 0x5ca1c2b9UL, + 0x39c67e01UL, 0x80fea99cUL, 0xe5991524UL, 0x0b36a036UL, 0x6e511c8eUL, + 0xa7166686UL, 0xc271da3eUL, 0x2cde6f2cUL, 0x49b9d394UL, 0xf0810409UL, + 0x95e6b8b1UL, 0x7b490da3UL, 0x1e2eb11bUL, 0x483ed243UL, 0x2d596efbUL, + 0xc3f6dbe9UL, 0xa6916751UL, 0x1fa9b0ccUL, 0x7ace0c74UL, 0x9461b966UL, + 0xf10605deUL +#endif + } +}; diff --git a/3party_sloynik/zlib/deflate.c b/3party_sloynik/zlib/deflate.c new file mode 100644 index 0000000000..5c4022f3d4 --- /dev/null +++ b/3party_sloynik/zlib/deflate.c @@ -0,0 +1,1834 @@ +/* deflate.c -- compress data using the deflation algorithm + * Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* + * ALGORITHM + * + * The "deflation" process depends on being able to identify portions + * of the input text which are identical to earlier input (within a + * sliding window trailing behind the input currently being processed). + * + * The most straightforward technique turns out to be the fastest for + * most input files: try all possible matches and select the longest. + * The key feature of this algorithm is that insertions into the string + * dictionary are very simple and thus fast, and deletions are avoided + * completely. Insertions are performed at each input character, whereas + * string matches are performed only when the previous match ends. So it + * is preferable to spend more time in matches to allow very fast string + * insertions and avoid deletions. The matching algorithm for small + * strings is inspired from that of Rabin & Karp. A brute force approach + * is used to find longer strings when a small match has been found. + * A similar algorithm is used in comic (by Jan-Mark Wams) and freeze + * (by Leonid Broukhis). + * A previous version of this file used a more sophisticated algorithm + * (by Fiala and Greene) which is guaranteed to run in linear amortized + * time, but has a larger average cost, uses more memory and is patented. + * However the F&G algorithm may be faster for some highly redundant + * files if the parameter max_chain_length (described below) is too large. + * + * ACKNOWLEDGEMENTS + * + * The idea of lazy evaluation of matches is due to Jan-Mark Wams, and + * I found it in 'freeze' written by Leonid Broukhis. + * Thanks to many people for bug reports and testing. + * + * REFERENCES + * + * Deutsch, L.P.,"DEFLATE Compressed Data Format Specification". + * Available in http://www.ietf.org/rfc/rfc1951.txt + * + * A description of the Rabin and Karp algorithm is given in the book + * "Algorithms" by R. Sedgewick, Addison-Wesley, p252. + * + * Fiala,E.R., and Greene,D.H. + * Data Compression with Finite Windows, Comm.ACM, 32,4 (1989) 490-595 + * + */ + +/* @(#) $Id$ */ + +#include "deflate.h" + +const char deflate_copyright[] = + " deflate 1.2.5 Copyright 1995-2010 Jean-loup Gailly and Mark Adler "; +/* + If you use the zlib library in a product, an acknowledgment is welcome + in the documentation of your product. If for some reason you cannot + include such an acknowledgment, I would appreciate that you keep this + copyright string in the executable of your product. + */ + +/* =========================================================================== + * Function prototypes. + */ +typedef enum { + need_more, /* block not completed, need more input or more output */ + block_done, /* block flush performed */ + finish_started, /* finish started, need only more output at next deflate */ + finish_done /* finish done, accept no more input or output */ +} block_state; + +typedef block_state (*compress_func) OF((deflate_state *s, int flush)); +/* Compression function. Returns the block state after the call. */ + +local void fill_window OF((deflate_state *s)); +local block_state deflate_stored OF((deflate_state *s, int flush)); +local block_state deflate_fast OF((deflate_state *s, int flush)); +#ifndef FASTEST +local block_state deflate_slow OF((deflate_state *s, int flush)); +#endif +local block_state deflate_rle OF((deflate_state *s, int flush)); +local block_state deflate_huff OF((deflate_state *s, int flush)); +local void lm_init OF((deflate_state *s)); +local void putShortMSB OF((deflate_state *s, uInt b)); +local void flush_pending OF((z_streamp strm)); +local int read_buf OF((z_streamp strm, Bytef *buf, unsigned size)); +#ifdef ASMV + void match_init OF((void)); /* asm code initialization */ + uInt longest_match OF((deflate_state *s, IPos cur_match)); +#else +local uInt longest_match OF((deflate_state *s, IPos cur_match)); +#endif + +#ifdef DEBUG +local void check_match OF((deflate_state *s, IPos start, IPos match, + int length)); +#endif + +/* =========================================================================== + * Local data + */ + +#define NIL 0 +/* Tail of hash chains */ + +#ifndef TOO_FAR +# define TOO_FAR 4096 +#endif +/* Matches of length 3 are discarded if their distance exceeds TOO_FAR */ + +/* Values for max_lazy_match, good_match and max_chain_length, depending on + * the desired pack level (0..9). The values given below have been tuned to + * exclude worst case performance for pathological files. Better values may be + * found for specific files. + */ +typedef struct config_s { + ush good_length; /* reduce lazy search above this match length */ + ush max_lazy; /* do not perform lazy search above this match length */ + ush nice_length; /* quit search above this match length */ + ush max_chain; + compress_func func; +} config; + +#ifdef FASTEST +local const config configuration_table[2] = { +/* good lazy nice chain */ +/* 0 */ {0, 0, 0, 0, deflate_stored}, /* store only */ +/* 1 */ {4, 4, 8, 4, deflate_fast}}; /* max speed, no lazy matches */ +#else +local const config configuration_table[10] = { +/* good lazy nice chain */ +/* 0 */ {0, 0, 0, 0, deflate_stored}, /* store only */ +/* 1 */ {4, 4, 8, 4, deflate_fast}, /* max speed, no lazy matches */ +/* 2 */ {4, 5, 16, 8, deflate_fast}, +/* 3 */ {4, 6, 32, 32, deflate_fast}, + +/* 4 */ {4, 4, 16, 16, deflate_slow}, /* lazy matches */ +/* 5 */ {8, 16, 32, 32, deflate_slow}, +/* 6 */ {8, 16, 128, 128, deflate_slow}, +/* 7 */ {8, 32, 128, 256, deflate_slow}, +/* 8 */ {32, 128, 258, 1024, deflate_slow}, +/* 9 */ {32, 258, 258, 4096, deflate_slow}}; /* max compression */ +#endif + +/* Note: the deflate() code requires max_lazy >= MIN_MATCH and max_chain >= 4 + * For deflate_fast() (levels <= 3) good is ignored and lazy has a different + * meaning. + */ + +#define EQUAL 0 +/* result of memcmp for equal strings */ + +#ifndef NO_DUMMY_DECL +struct static_tree_desc_s {int dummy;}; /* for buggy compilers */ +#endif + +/* =========================================================================== + * Update a hash value with the given input byte + * IN assertion: all calls to to UPDATE_HASH are made with consecutive + * input characters, so that a running hash key can be computed from the + * previous key instead of complete recalculation each time. + */ +#define UPDATE_HASH(s,h,c) (h = (((h)<hash_shift) ^ (c)) & s->hash_mask) + + +/* =========================================================================== + * Insert string str in the dictionary and set match_head to the previous head + * of the hash chain (the most recent string with same hash key). Return + * the previous length of the hash chain. + * If this file is compiled with -DFASTEST, the compression level is forced + * to 1, and no hash chains are maintained. + * IN assertion: all calls to to INSERT_STRING are made with consecutive + * input characters and the first MIN_MATCH bytes of str are valid + * (except for the last MIN_MATCH-1 bytes of the input file). + */ +#ifdef FASTEST +#define INSERT_STRING(s, str, match_head) \ + (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \ + match_head = s->head[s->ins_h], \ + s->head[s->ins_h] = (Pos)(str)) +#else +#define INSERT_STRING(s, str, match_head) \ + (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \ + match_head = s->prev[(str) & s->w_mask] = s->head[s->ins_h], \ + s->head[s->ins_h] = (Pos)(str)) +#endif + +/* =========================================================================== + * Initialize the hash table (avoiding 64K overflow for 16 bit systems). + * prev[] will be initialized on the fly. + */ +#define CLEAR_HASH(s) \ + s->head[s->hash_size-1] = NIL; \ + zmemzero((Bytef *)s->head, (unsigned)(s->hash_size-1)*sizeof(*s->head)); + +/* ========================================================================= */ +int ZEXPORT deflateInit_(strm, level, version, stream_size) + z_streamp strm; + int level; + const char *version; + int stream_size; +{ + return deflateInit2_(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, + Z_DEFAULT_STRATEGY, version, stream_size); + /* To do: ignore strm->next_in if we use it as window */ +} + +/* ========================================================================= */ +int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, + version, stream_size) + z_streamp strm; + int level; + int method; + int windowBits; + int memLevel; + int strategy; + const char *version; + int stream_size; +{ + deflate_state *s; + int wrap = 1; + static const char my_version[] = ZLIB_VERSION; + + ushf *overlay; + /* We overlay pending_buf and d_buf+l_buf. This works since the average + * output size for (length,distance) codes is <= 24 bits. + */ + + if (version == Z_NULL || version[0] != my_version[0] || + stream_size != sizeof(z_stream)) { + return Z_VERSION_ERROR; + } + if (strm == Z_NULL) return Z_STREAM_ERROR; + + strm->msg = Z_NULL; + if (strm->zalloc == (alloc_func)0) { + strm->zalloc = zcalloc; + strm->opaque = (voidpf)0; + } + if (strm->zfree == (free_func)0) strm->zfree = zcfree; + +#ifdef FASTEST + if (level != 0) level = 1; +#else + if (level == Z_DEFAULT_COMPRESSION) level = 6; +#endif + + if (windowBits < 0) { /* suppress zlib wrapper */ + wrap = 0; + windowBits = -windowBits; + } +#ifdef GZIP + else if (windowBits > 15) { + wrap = 2; /* write gzip wrapper instead */ + windowBits -= 16; + } +#endif + if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method != Z_DEFLATED || + windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || + strategy < 0 || strategy > Z_FIXED) { + return Z_STREAM_ERROR; + } + if (windowBits == 8) windowBits = 9; /* until 256-byte window bug fixed */ + s = (deflate_state *) ZALLOC(strm, 1, sizeof(deflate_state)); + if (s == Z_NULL) return Z_MEM_ERROR; + strm->state = (struct internal_state FAR *)s; + s->strm = strm; + + s->wrap = wrap; + s->gzhead = Z_NULL; + s->w_bits = windowBits; + s->w_size = 1 << s->w_bits; + s->w_mask = s->w_size - 1; + + s->hash_bits = memLevel + 7; + s->hash_size = 1 << s->hash_bits; + s->hash_mask = s->hash_size - 1; + s->hash_shift = ((s->hash_bits+MIN_MATCH-1)/MIN_MATCH); + + s->window = (Bytef *) ZALLOC(strm, s->w_size, 2*sizeof(Byte)); + s->prev = (Posf *) ZALLOC(strm, s->w_size, sizeof(Pos)); + s->head = (Posf *) ZALLOC(strm, s->hash_size, sizeof(Pos)); + + s->high_water = 0; /* nothing written to s->window yet */ + + s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */ + + overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2); + s->pending_buf = (uchf *) overlay; + s->pending_buf_size = (ulg)s->lit_bufsize * (sizeof(ush)+2L); + + if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL || + s->pending_buf == Z_NULL) { + s->status = FINISH_STATE; + strm->msg = (char*)ERR_MSG(Z_MEM_ERROR); + deflateEnd (strm); + return Z_MEM_ERROR; + } + s->d_buf = overlay + s->lit_bufsize/sizeof(ush); + s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize; + + s->level = level; + s->strategy = strategy; + s->method = (Byte)method; + + return deflateReset(strm); +} + +/* ========================================================================= */ +int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength) + z_streamp strm; + const Bytef *dictionary; + uInt dictLength; +{ + deflate_state *s; + uInt length = dictLength; + uInt n; + IPos hash_head = 0; + + if (strm == Z_NULL || strm->state == Z_NULL || dictionary == Z_NULL || + strm->state->wrap == 2 || + (strm->state->wrap == 1 && strm->state->status != INIT_STATE)) + return Z_STREAM_ERROR; + + s = strm->state; + if (s->wrap) + strm->adler = adler32(strm->adler, dictionary, dictLength); + + if (length < MIN_MATCH) return Z_OK; + if (length > s->w_size) { + length = s->w_size; + dictionary += dictLength - length; /* use the tail of the dictionary */ + } + zmemcpy(s->window, dictionary, length); + s->strstart = length; + s->block_start = (long)length; + + /* Insert all strings in the hash table (except for the last two bytes). + * s->lookahead stays null, so s->ins_h will be recomputed at the next + * call of fill_window. + */ + s->ins_h = s->window[0]; + UPDATE_HASH(s, s->ins_h, s->window[1]); + for (n = 0; n <= length - MIN_MATCH; n++) { + INSERT_STRING(s, n, hash_head); + } + if (hash_head) hash_head = 0; /* to make compiler happy */ + return Z_OK; +} + +/* ========================================================================= */ +int ZEXPORT deflateReset (strm) + z_streamp strm; +{ + deflate_state *s; + + if (strm == Z_NULL || strm->state == Z_NULL || + strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) { + return Z_STREAM_ERROR; + } + + strm->total_in = strm->total_out = 0; + strm->msg = Z_NULL; /* use zfree if we ever allocate msg dynamically */ + strm->data_type = Z_UNKNOWN; + + s = (deflate_state *)strm->state; + s->pending = 0; + s->pending_out = s->pending_buf; + + if (s->wrap < 0) { + s->wrap = -s->wrap; /* was made negative by deflate(..., Z_FINISH); */ + } + s->status = s->wrap ? INIT_STATE : BUSY_STATE; + strm->adler = +#ifdef GZIP + s->wrap == 2 ? crc32(0L, Z_NULL, 0) : +#endif + adler32(0L, Z_NULL, 0); + s->last_flush = Z_NO_FLUSH; + + _tr_init(s); + lm_init(s); + + return Z_OK; +} + +/* ========================================================================= */ +int ZEXPORT deflateSetHeader (strm, head) + z_streamp strm; + gz_headerp head; +{ + if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + if (strm->state->wrap != 2) return Z_STREAM_ERROR; + strm->state->gzhead = head; + return Z_OK; +} + +/* ========================================================================= */ +int ZEXPORT deflatePrime (strm, bits, value) + z_streamp strm; + int bits; + int value; +{ + if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + strm->state->bi_valid = bits; + strm->state->bi_buf = (ush)(value & ((1 << bits) - 1)); + return Z_OK; +} + +/* ========================================================================= */ +int ZEXPORT deflateParams(strm, level, strategy) + z_streamp strm; + int level; + int strategy; +{ + deflate_state *s; + compress_func func; + int err = Z_OK; + + if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + s = strm->state; + +#ifdef FASTEST + if (level != 0) level = 1; +#else + if (level == Z_DEFAULT_COMPRESSION) level = 6; +#endif + if (level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED) { + return Z_STREAM_ERROR; + } + func = configuration_table[s->level].func; + + if ((strategy != s->strategy || func != configuration_table[level].func) && + strm->total_in != 0) { + /* Flush the last buffer: */ + err = deflate(strm, Z_BLOCK); + } + if (s->level != level) { + s->level = level; + s->max_lazy_match = configuration_table[level].max_lazy; + s->good_match = configuration_table[level].good_length; + s->nice_match = configuration_table[level].nice_length; + s->max_chain_length = configuration_table[level].max_chain; + } + s->strategy = strategy; + return err; +} + +/* ========================================================================= */ +int ZEXPORT deflateTune(strm, good_length, max_lazy, nice_length, max_chain) + z_streamp strm; + int good_length; + int max_lazy; + int nice_length; + int max_chain; +{ + deflate_state *s; + + if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + s = strm->state; + s->good_match = good_length; + s->max_lazy_match = max_lazy; + s->nice_match = nice_length; + s->max_chain_length = max_chain; + return Z_OK; +} + +/* ========================================================================= + * For the default windowBits of 15 and memLevel of 8, this function returns + * a close to exact, as well as small, upper bound on the compressed size. + * They are coded as constants here for a reason--if the #define's are + * changed, then this function needs to be changed as well. The return + * value for 15 and 8 only works for those exact settings. + * + * For any setting other than those defaults for windowBits and memLevel, + * the value returned is a conservative worst case for the maximum expansion + * resulting from using fixed blocks instead of stored blocks, which deflate + * can emit on compressed data for some combinations of the parameters. + * + * This function could be more sophisticated to provide closer upper bounds for + * every combination of windowBits and memLevel. But even the conservative + * upper bound of about 14% expansion does not seem onerous for output buffer + * allocation. + */ +uLong ZEXPORT deflateBound(strm, sourceLen) + z_streamp strm; + uLong sourceLen; +{ + deflate_state *s; + uLong complen, wraplen; + Bytef *str; + + /* conservative upper bound for compressed data */ + complen = sourceLen + + ((sourceLen + 7) >> 3) + ((sourceLen + 63) >> 6) + 5; + + /* if can't get parameters, return conservative bound plus zlib wrapper */ + if (strm == Z_NULL || strm->state == Z_NULL) + return complen + 6; + + /* compute wrapper length */ + s = strm->state; + switch (s->wrap) { + case 0: /* raw deflate */ + wraplen = 0; + break; + case 1: /* zlib wrapper */ + wraplen = 6 + (s->strstart ? 4 : 0); + break; + case 2: /* gzip wrapper */ + wraplen = 18; + if (s->gzhead != Z_NULL) { /* user-supplied gzip header */ + if (s->gzhead->extra != Z_NULL) + wraplen += 2 + s->gzhead->extra_len; + str = s->gzhead->name; + if (str != Z_NULL) + do { + wraplen++; + } while (*str++); + str = s->gzhead->comment; + if (str != Z_NULL) + do { + wraplen++; + } while (*str++); + if (s->gzhead->hcrc) + wraplen += 2; + } + break; + default: /* for compiler happiness */ + wraplen = 6; + } + + /* if not default parameters, return conservative bound */ + if (s->w_bits != 15 || s->hash_bits != 8 + 7) + return complen + wraplen; + + /* default settings: return tight bound for that case */ + return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + + (sourceLen >> 25) + 13 - 6 + wraplen; +} + +/* ========================================================================= + * Put a short in the pending buffer. The 16-bit value is put in MSB order. + * IN assertion: the stream state is correct and there is enough room in + * pending_buf. + */ +local void putShortMSB (s, b) + deflate_state *s; + uInt b; +{ + put_byte(s, (Byte)(b >> 8)); + put_byte(s, (Byte)(b & 0xff)); +} + +/* ========================================================================= + * Flush as much pending output as possible. All deflate() output goes + * through this function so some applications may wish to modify it + * to avoid allocating a large strm->next_out buffer and copying into it. + * (See also read_buf()). + */ +local void flush_pending(strm) + z_streamp strm; +{ + unsigned len = strm->state->pending; + + if (len > strm->avail_out) len = strm->avail_out; + if (len == 0) return; + + zmemcpy(strm->next_out, strm->state->pending_out, len); + strm->next_out += len; + strm->state->pending_out += len; + strm->total_out += len; + strm->avail_out -= len; + strm->state->pending -= len; + if (strm->state->pending == 0) { + strm->state->pending_out = strm->state->pending_buf; + } +} + +/* ========================================================================= */ +int ZEXPORT deflate (strm, flush) + z_streamp strm; + int flush; +{ + int old_flush; /* value of flush param for previous deflate call */ + deflate_state *s; + + if (strm == Z_NULL || strm->state == Z_NULL || + flush > Z_BLOCK || flush < 0) { + return Z_STREAM_ERROR; + } + s = strm->state; + + if (strm->next_out == Z_NULL || + (strm->next_in == Z_NULL && strm->avail_in != 0) || + (s->status == FINISH_STATE && flush != Z_FINISH)) { + ERR_RETURN(strm, Z_STREAM_ERROR); + } + if (strm->avail_out == 0) ERR_RETURN(strm, Z_BUF_ERROR); + + s->strm = strm; /* just in case */ + old_flush = s->last_flush; + s->last_flush = flush; + + /* Write the header */ + if (s->status == INIT_STATE) { +#ifdef GZIP + if (s->wrap == 2) { + strm->adler = crc32(0L, Z_NULL, 0); + put_byte(s, 31); + put_byte(s, 139); + put_byte(s, 8); + if (s->gzhead == Z_NULL) { + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, s->level == 9 ? 2 : + (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ? + 4 : 0)); + put_byte(s, OS_CODE); + s->status = BUSY_STATE; + } + else { + put_byte(s, (s->gzhead->text ? 1 : 0) + + (s->gzhead->hcrc ? 2 : 0) + + (s->gzhead->extra == Z_NULL ? 0 : 4) + + (s->gzhead->name == Z_NULL ? 0 : 8) + + (s->gzhead->comment == Z_NULL ? 0 : 16) + ); + put_byte(s, (Byte)(s->gzhead->time & 0xff)); + put_byte(s, (Byte)((s->gzhead->time >> 8) & 0xff)); + put_byte(s, (Byte)((s->gzhead->time >> 16) & 0xff)); + put_byte(s, (Byte)((s->gzhead->time >> 24) & 0xff)); + put_byte(s, s->level == 9 ? 2 : + (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ? + 4 : 0)); + put_byte(s, s->gzhead->os & 0xff); + if (s->gzhead->extra != Z_NULL) { + put_byte(s, s->gzhead->extra_len & 0xff); + put_byte(s, (s->gzhead->extra_len >> 8) & 0xff); + } + if (s->gzhead->hcrc) + strm->adler = crc32(strm->adler, s->pending_buf, + s->pending); + s->gzindex = 0; + s->status = EXTRA_STATE; + } + } + else +#endif + { + uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8; + uInt level_flags; + + if (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2) + level_flags = 0; + else if (s->level < 6) + level_flags = 1; + else if (s->level == 6) + level_flags = 2; + else + level_flags = 3; + header |= (level_flags << 6); + if (s->strstart != 0) header |= PRESET_DICT; + header += 31 - (header % 31); + + s->status = BUSY_STATE; + putShortMSB(s, header); + + /* Save the adler32 of the preset dictionary: */ + if (s->strstart != 0) { + putShortMSB(s, (uInt)(strm->adler >> 16)); + putShortMSB(s, (uInt)(strm->adler & 0xffff)); + } + strm->adler = adler32(0L, Z_NULL, 0); + } + } +#ifdef GZIP + if (s->status == EXTRA_STATE) { + if (s->gzhead->extra != Z_NULL) { + uInt beg = s->pending; /* start of bytes to update crc */ + + while (s->gzindex < (s->gzhead->extra_len & 0xffff)) { + if (s->pending == s->pending_buf_size) { + if (s->gzhead->hcrc && s->pending > beg) + strm->adler = crc32(strm->adler, s->pending_buf + beg, + s->pending - beg); + flush_pending(strm); + beg = s->pending; + if (s->pending == s->pending_buf_size) + break; + } + put_byte(s, s->gzhead->extra[s->gzindex]); + s->gzindex++; + } + if (s->gzhead->hcrc && s->pending > beg) + strm->adler = crc32(strm->adler, s->pending_buf + beg, + s->pending - beg); + if (s->gzindex == s->gzhead->extra_len) { + s->gzindex = 0; + s->status = NAME_STATE; + } + } + else + s->status = NAME_STATE; + } + if (s->status == NAME_STATE) { + if (s->gzhead->name != Z_NULL) { + uInt beg = s->pending; /* start of bytes to update crc */ + int val; + + do { + if (s->pending == s->pending_buf_size) { + if (s->gzhead->hcrc && s->pending > beg) + strm->adler = crc32(strm->adler, s->pending_buf + beg, + s->pending - beg); + flush_pending(strm); + beg = s->pending; + if (s->pending == s->pending_buf_size) { + val = 1; + break; + } + } + val = s->gzhead->name[s->gzindex++]; + put_byte(s, val); + } while (val != 0); + if (s->gzhead->hcrc && s->pending > beg) + strm->adler = crc32(strm->adler, s->pending_buf + beg, + s->pending - beg); + if (val == 0) { + s->gzindex = 0; + s->status = COMMENT_STATE; + } + } + else + s->status = COMMENT_STATE; + } + if (s->status == COMMENT_STATE) { + if (s->gzhead->comment != Z_NULL) { + uInt beg = s->pending; /* start of bytes to update crc */ + int val; + + do { + if (s->pending == s->pending_buf_size) { + if (s->gzhead->hcrc && s->pending > beg) + strm->adler = crc32(strm->adler, s->pending_buf + beg, + s->pending - beg); + flush_pending(strm); + beg = s->pending; + if (s->pending == s->pending_buf_size) { + val = 1; + break; + } + } + val = s->gzhead->comment[s->gzindex++]; + put_byte(s, val); + } while (val != 0); + if (s->gzhead->hcrc && s->pending > beg) + strm->adler = crc32(strm->adler, s->pending_buf + beg, + s->pending - beg); + if (val == 0) + s->status = HCRC_STATE; + } + else + s->status = HCRC_STATE; + } + if (s->status == HCRC_STATE) { + if (s->gzhead->hcrc) { + if (s->pending + 2 > s->pending_buf_size) + flush_pending(strm); + if (s->pending + 2 <= s->pending_buf_size) { + put_byte(s, (Byte)(strm->adler & 0xff)); + put_byte(s, (Byte)((strm->adler >> 8) & 0xff)); + strm->adler = crc32(0L, Z_NULL, 0); + s->status = BUSY_STATE; + } + } + else + s->status = BUSY_STATE; + } +#endif + + /* Flush as much pending output as possible */ + if (s->pending != 0) { + flush_pending(strm); + if (strm->avail_out == 0) { + /* Since avail_out is 0, deflate will be called again with + * more output space, but possibly with both pending and + * avail_in equal to zero. There won't be anything to do, + * but this is not an error situation so make sure we + * return OK instead of BUF_ERROR at next call of deflate: + */ + s->last_flush = -1; + return Z_OK; + } + + /* Make sure there is something to do and avoid duplicate consecutive + * flushes. For repeated and useless calls with Z_FINISH, we keep + * returning Z_STREAM_END instead of Z_BUF_ERROR. + */ + } else if (strm->avail_in == 0 && flush <= old_flush && + flush != Z_FINISH) { + ERR_RETURN(strm, Z_BUF_ERROR); + } + + /* User must not provide more input after the first FINISH: */ + if (s->status == FINISH_STATE && strm->avail_in != 0) { + ERR_RETURN(strm, Z_BUF_ERROR); + } + + /* Start a new block or continue the current one. + */ + if (strm->avail_in != 0 || s->lookahead != 0 || + (flush != Z_NO_FLUSH && s->status != FINISH_STATE)) { + block_state bstate; + + bstate = s->strategy == Z_HUFFMAN_ONLY ? deflate_huff(s, flush) : + (s->strategy == Z_RLE ? deflate_rle(s, flush) : + (*(configuration_table[s->level].func))(s, flush)); + + if (bstate == finish_started || bstate == finish_done) { + s->status = FINISH_STATE; + } + if (bstate == need_more || bstate == finish_started) { + if (strm->avail_out == 0) { + s->last_flush = -1; /* avoid BUF_ERROR next call, see above */ + } + return Z_OK; + /* If flush != Z_NO_FLUSH && avail_out == 0, the next call + * of deflate should use the same flush parameter to make sure + * that the flush is complete. So we don't have to output an + * empty block here, this will be done at next call. This also + * ensures that for a very small output buffer, we emit at most + * one empty block. + */ + } + if (bstate == block_done) { + if (flush == Z_PARTIAL_FLUSH) { + _tr_align(s); + } else if (flush != Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */ + _tr_stored_block(s, (char*)0, 0L, 0); + /* For a full flush, this empty block will be recognized + * as a special marker by inflate_sync(). + */ + if (flush == Z_FULL_FLUSH) { + CLEAR_HASH(s); /* forget history */ + if (s->lookahead == 0) { + s->strstart = 0; + s->block_start = 0L; + } + } + } + flush_pending(strm); + if (strm->avail_out == 0) { + s->last_flush = -1; /* avoid BUF_ERROR at next call, see above */ + return Z_OK; + } + } + } + Assert(strm->avail_out > 0, "bug2"); + + if (flush != Z_FINISH) return Z_OK; + if (s->wrap <= 0) return Z_STREAM_END; + + /* Write the trailer */ +#ifdef GZIP + if (s->wrap == 2) { + put_byte(s, (Byte)(strm->adler & 0xff)); + put_byte(s, (Byte)((strm->adler >> 8) & 0xff)); + put_byte(s, (Byte)((strm->adler >> 16) & 0xff)); + put_byte(s, (Byte)((strm->adler >> 24) & 0xff)); + put_byte(s, (Byte)(strm->total_in & 0xff)); + put_byte(s, (Byte)((strm->total_in >> 8) & 0xff)); + put_byte(s, (Byte)((strm->total_in >> 16) & 0xff)); + put_byte(s, (Byte)((strm->total_in >> 24) & 0xff)); + } + else +#endif + { + putShortMSB(s, (uInt)(strm->adler >> 16)); + putShortMSB(s, (uInt)(strm->adler & 0xffff)); + } + flush_pending(strm); + /* If avail_out is zero, the application will call deflate again + * to flush the rest. + */ + if (s->wrap > 0) s->wrap = -s->wrap; /* write the trailer only once! */ + return s->pending != 0 ? Z_OK : Z_STREAM_END; +} + +/* ========================================================================= */ +int ZEXPORT deflateEnd (strm) + z_streamp strm; +{ + int status; + + if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + + status = strm->state->status; + if (status != INIT_STATE && + status != EXTRA_STATE && + status != NAME_STATE && + status != COMMENT_STATE && + status != HCRC_STATE && + status != BUSY_STATE && + status != FINISH_STATE) { + return Z_STREAM_ERROR; + } + + /* Deallocate in reverse order of allocations: */ + TRY_FREE(strm, strm->state->pending_buf); + TRY_FREE(strm, strm->state->head); + TRY_FREE(strm, strm->state->prev); + TRY_FREE(strm, strm->state->window); + + ZFREE(strm, strm->state); + strm->state = Z_NULL; + + return status == BUSY_STATE ? Z_DATA_ERROR : Z_OK; +} + +/* ========================================================================= + * Copy the source state to the destination state. + * To simplify the source, this is not supported for 16-bit MSDOS (which + * doesn't have enough memory anyway to duplicate compression states). + */ +int ZEXPORT deflateCopy (dest, source) + z_streamp dest; + z_streamp source; +{ +#ifdef MAXSEG_64K + return Z_STREAM_ERROR; +#else + deflate_state *ds; + deflate_state *ss; + ushf *overlay; + + + if (source == Z_NULL || dest == Z_NULL || source->state == Z_NULL) { + return Z_STREAM_ERROR; + } + + ss = source->state; + + zmemcpy(dest, source, sizeof(z_stream)); + + ds = (deflate_state *) ZALLOC(dest, 1, sizeof(deflate_state)); + if (ds == Z_NULL) return Z_MEM_ERROR; + dest->state = (struct internal_state FAR *) ds; + zmemcpy(ds, ss, sizeof(deflate_state)); + ds->strm = dest; + + ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte)); + ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos)); + ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos)); + overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush)+2); + ds->pending_buf = (uchf *) overlay; + + if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL || + ds->pending_buf == Z_NULL) { + deflateEnd (dest); + return Z_MEM_ERROR; + } + /* following zmemcpy do not work for 16-bit MSDOS */ + zmemcpy(ds->window, ss->window, ds->w_size * 2 * sizeof(Byte)); + zmemcpy(ds->prev, ss->prev, ds->w_size * sizeof(Pos)); + zmemcpy(ds->head, ss->head, ds->hash_size * sizeof(Pos)); + zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size); + + ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf); + ds->d_buf = overlay + ds->lit_bufsize/sizeof(ush); + ds->l_buf = ds->pending_buf + (1+sizeof(ush))*ds->lit_bufsize; + + ds->l_desc.dyn_tree = ds->dyn_ltree; + ds->d_desc.dyn_tree = ds->dyn_dtree; + ds->bl_desc.dyn_tree = ds->bl_tree; + + return Z_OK; +#endif /* MAXSEG_64K */ +} + +/* =========================================================================== + * Read a new buffer from the current input stream, update the adler32 + * and total number of bytes read. All deflate() input goes through + * this function so some applications may wish to modify it to avoid + * allocating a large strm->next_in buffer and copying from it. + * (See also flush_pending()). + */ +local int read_buf(strm, buf, size) + z_streamp strm; + Bytef *buf; + unsigned size; +{ + unsigned len = strm->avail_in; + + if (len > size) len = size; + if (len == 0) return 0; + + strm->avail_in -= len; + + if (strm->state->wrap == 1) { + strm->adler = adler32(strm->adler, strm->next_in, len); + } +#ifdef GZIP + else if (strm->state->wrap == 2) { + strm->adler = crc32(strm->adler, strm->next_in, len); + } +#endif + zmemcpy(buf, strm->next_in, len); + strm->next_in += len; + strm->total_in += len; + + return (int)len; +} + +/* =========================================================================== + * Initialize the "longest match" routines for a new zlib stream + */ +local void lm_init (s) + deflate_state *s; +{ + s->window_size = (ulg)2L*s->w_size; + + CLEAR_HASH(s); + + /* Set the default configuration parameters: + */ + s->max_lazy_match = configuration_table[s->level].max_lazy; + s->good_match = configuration_table[s->level].good_length; + s->nice_match = configuration_table[s->level].nice_length; + s->max_chain_length = configuration_table[s->level].max_chain; + + s->strstart = 0; + s->block_start = 0L; + s->lookahead = 0; + s->match_length = s->prev_length = MIN_MATCH-1; + s->match_available = 0; + s->ins_h = 0; +#ifndef FASTEST +#ifdef ASMV + match_init(); /* initialize the asm code */ +#endif +#endif +} + +#ifndef FASTEST +/* =========================================================================== + * Set match_start to the longest match starting at the given string and + * return its length. Matches shorter or equal to prev_length are discarded, + * in which case the result is equal to prev_length and match_start is + * garbage. + * IN assertions: cur_match is the head of the hash chain for the current + * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 + * OUT assertion: the match length is not greater than s->lookahead. + */ +#ifndef ASMV +/* For 80x86 and 680x0, an optimized version will be provided in match.asm or + * match.S. The code will be functionally equivalent. + */ +local uInt longest_match(s, cur_match) + deflate_state *s; + IPos cur_match; /* current match */ +{ + unsigned chain_length = s->max_chain_length;/* max hash chain length */ + register Bytef *scan = s->window + s->strstart; /* current string */ + register Bytef *match; /* matched string */ + register int len; /* length of current match */ + int best_len = s->prev_length; /* best match length so far */ + int nice_match = s->nice_match; /* stop if match long enough */ + IPos limit = s->strstart > (IPos)MAX_DIST(s) ? + s->strstart - (IPos)MAX_DIST(s) : NIL; + /* Stop when cur_match becomes <= limit. To simplify the code, + * we prevent matches with the string of window index 0. + */ + Posf *prev = s->prev; + uInt wmask = s->w_mask; + +#ifdef UNALIGNED_OK + /* Compare two bytes at a time. Note: this is not always beneficial. + * Try with and without -DUNALIGNED_OK to check. + */ + register Bytef *strend = s->window + s->strstart + MAX_MATCH - 1; + register ush scan_start = *(ushf*)scan; + register ush scan_end = *(ushf*)(scan+best_len-1); +#else + register Bytef *strend = s->window + s->strstart + MAX_MATCH; + register Byte scan_end1 = scan[best_len-1]; + register Byte scan_end = scan[best_len]; +#endif + + /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. + * It is easy to get rid of this optimization if necessary. + */ + Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); + + /* Do not waste too much time if we already have a good match: */ + if (s->prev_length >= s->good_match) { + chain_length >>= 2; + } + /* Do not look for matches beyond the end of the input. This is necessary + * to make deflate deterministic. + */ + if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead; + + Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); + + do { + Assert(cur_match < s->strstart, "no future"); + match = s->window + cur_match; + + /* Skip to next match if the match length cannot increase + * or if the match length is less than 2. Note that the checks below + * for insufficient lookahead only occur occasionally for performance + * reasons. Therefore uninitialized memory will be accessed, and + * conditional jumps will be made that depend on those values. + * However the length of the match is limited to the lookahead, so + * the output of deflate is not affected by the uninitialized values. + */ +#if (defined(UNALIGNED_OK) && MAX_MATCH == 258) + /* This code assumes sizeof(unsigned short) == 2. Do not use + * UNALIGNED_OK if your compiler uses a different size. + */ + if (*(ushf*)(match+best_len-1) != scan_end || + *(ushf*)match != scan_start) continue; + + /* It is not necessary to compare scan[2] and match[2] since they are + * always equal when the other bytes match, given that the hash keys + * are equal and that HASH_BITS >= 8. Compare 2 bytes at a time at + * strstart+3, +5, ... up to strstart+257. We check for insufficient + * lookahead only every 4th comparison; the 128th check will be made + * at strstart+257. If MAX_MATCH-2 is not a multiple of 8, it is + * necessary to put more guard bytes at the end of the window, or + * to check more often for insufficient lookahead. + */ + Assert(scan[2] == match[2], "scan[2]?"); + scan++, match++; + do { + } while (*(ushf*)(scan+=2) == *(ushf*)(match+=2) && + *(ushf*)(scan+=2) == *(ushf*)(match+=2) && + *(ushf*)(scan+=2) == *(ushf*)(match+=2) && + *(ushf*)(scan+=2) == *(ushf*)(match+=2) && + scan < strend); + /* The funny "do {}" generates better code on most compilers */ + + /* Here, scan <= window+strstart+257 */ + Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); + if (*scan == *match) scan++; + + len = (MAX_MATCH - 1) - (int)(strend-scan); + scan = strend - (MAX_MATCH-1); + +#else /* UNALIGNED_OK */ + + if (match[best_len] != scan_end || + match[best_len-1] != scan_end1 || + *match != *scan || + *++match != scan[1]) continue; + + /* The check at best_len-1 can be removed because it will be made + * again later. (This heuristic is not always a win.) + * It is not necessary to compare scan[2] and match[2] since they + * are always equal when the other bytes match, given that + * the hash keys are equal and that HASH_BITS >= 8. + */ + scan += 2, match++; + Assert(*scan == *match, "match[2]?"); + + /* We check for insufficient lookahead only every 8th comparison; + * the 256th check will be made at strstart+258. + */ + do { + } while (*++scan == *++match && *++scan == *++match && + *++scan == *++match && *++scan == *++match && + *++scan == *++match && *++scan == *++match && + *++scan == *++match && *++scan == *++match && + scan < strend); + + Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); + + len = MAX_MATCH - (int)(strend - scan); + scan = strend - MAX_MATCH; + +#endif /* UNALIGNED_OK */ + + if (len > best_len) { + s->match_start = cur_match; + best_len = len; + if (len >= nice_match) break; +#ifdef UNALIGNED_OK + scan_end = *(ushf*)(scan+best_len-1); +#else + scan_end1 = scan[best_len-1]; + scan_end = scan[best_len]; +#endif + } + } while ((cur_match = prev[cur_match & wmask]) > limit + && --chain_length != 0); + + if ((uInt)best_len <= s->lookahead) return (uInt)best_len; + return s->lookahead; +} +#endif /* ASMV */ + +#else /* FASTEST */ + +/* --------------------------------------------------------------------------- + * Optimized version for FASTEST only + */ +local uInt longest_match(s, cur_match) + deflate_state *s; + IPos cur_match; /* current match */ +{ + register Bytef *scan = s->window + s->strstart; /* current string */ + register Bytef *match; /* matched string */ + register int len; /* length of current match */ + register Bytef *strend = s->window + s->strstart + MAX_MATCH; + + /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. + * It is easy to get rid of this optimization if necessary. + */ + Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); + + Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); + + Assert(cur_match < s->strstart, "no future"); + + match = s->window + cur_match; + + /* Return failure if the match length is less than 2: + */ + if (match[0] != scan[0] || match[1] != scan[1]) return MIN_MATCH-1; + + /* The check at best_len-1 can be removed because it will be made + * again later. (This heuristic is not always a win.) + * It is not necessary to compare scan[2] and match[2] since they + * are always equal when the other bytes match, given that + * the hash keys are equal and that HASH_BITS >= 8. + */ + scan += 2, match += 2; + Assert(*scan == *match, "match[2]?"); + + /* We check for insufficient lookahead only every 8th comparison; + * the 256th check will be made at strstart+258. + */ + do { + } while (*++scan == *++match && *++scan == *++match && + *++scan == *++match && *++scan == *++match && + *++scan == *++match && *++scan == *++match && + *++scan == *++match && *++scan == *++match && + scan < strend); + + Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); + + len = MAX_MATCH - (int)(strend - scan); + + if (len < MIN_MATCH) return MIN_MATCH - 1; + + s->match_start = cur_match; + return (uInt)len <= s->lookahead ? (uInt)len : s->lookahead; +} + +#endif /* FASTEST */ + +#ifdef DEBUG +/* =========================================================================== + * Check that the match at match_start is indeed a match. + */ +local void check_match(s, start, match, length) + deflate_state *s; + IPos start, match; + int length; +{ + /* check that the match is indeed a match */ + if (zmemcmp(s->window + match, + s->window + start, length) != EQUAL) { + fprintf(stderr, " start %u, match %u, length %d\n", + start, match, length); + do { + fprintf(stderr, "%c%c", s->window[match++], s->window[start++]); + } while (--length != 0); + z_error("invalid match"); + } + if (z_verbose > 1) { + fprintf(stderr,"\\[%d,%d]", start-match, length); + do { putc(s->window[start++], stderr); } while (--length != 0); + } +} +#else +# define check_match(s, start, match, length) +#endif /* DEBUG */ + +/* =========================================================================== + * Fill the window when the lookahead becomes insufficient. + * Updates strstart and lookahead. + * + * IN assertion: lookahead < MIN_LOOKAHEAD + * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD + * At least one byte has been read, or avail_in == 0; reads are + * performed for at least two bytes (required for the zip translate_eol + * option -- not supported here). + */ +local void fill_window(s) + deflate_state *s; +{ + register unsigned n, m; + register Posf *p; + unsigned more; /* Amount of free space at the end of the window. */ + uInt wsize = s->w_size; + + do { + more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart); + + /* Deal with !@#$% 64K limit: */ + if (sizeof(int) <= 2) { + if (more == 0 && s->strstart == 0 && s->lookahead == 0) { + more = wsize; + + } else if (more == (unsigned)(-1)) { + /* Very unlikely, but possible on 16 bit machine if + * strstart == 0 && lookahead == 1 (input done a byte at time) + */ + more--; + } + } + + /* If the window is almost full and there is insufficient lookahead, + * move the upper half to the lower one to make room in the upper half. + */ + if (s->strstart >= wsize+MAX_DIST(s)) { + + zmemcpy(s->window, s->window+wsize, (unsigned)wsize); + s->match_start -= wsize; + s->strstart -= wsize; /* we now have strstart >= MAX_DIST */ + s->block_start -= (long) wsize; + + /* Slide the hash table (could be avoided with 32 bit values + at the expense of memory usage). We slide even when level == 0 + to keep the hash table consistent if we switch back to level > 0 + later. (Using level 0 permanently is not an optimal usage of + zlib, so we don't care about this pathological case.) + */ + n = s->hash_size; + p = &s->head[n]; + do { + m = *--p; + *p = (Pos)(m >= wsize ? m-wsize : NIL); + } while (--n); + + n = wsize; +#ifndef FASTEST + p = &s->prev[n]; + do { + m = *--p; + *p = (Pos)(m >= wsize ? m-wsize : NIL); + /* If n is not on any hash chain, prev[n] is garbage but + * its value will never be used. + */ + } while (--n); +#endif + more += wsize; + } + if (s->strm->avail_in == 0) return; + + /* If there was no sliding: + * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 && + * more == window_size - lookahead - strstart + * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1) + * => more >= window_size - 2*WSIZE + 2 + * In the BIG_MEM or MMAP case (not yet supported), + * window_size == input_size + MIN_LOOKAHEAD && + * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD. + * Otherwise, window_size == 2*WSIZE so more >= 2. + * If there was sliding, more >= WSIZE. So in all cases, more >= 2. + */ + Assert(more >= 2, "more < 2"); + + n = read_buf(s->strm, s->window + s->strstart + s->lookahead, more); + s->lookahead += n; + + /* Initialize the hash value now that we have some input: */ + if (s->lookahead >= MIN_MATCH) { + s->ins_h = s->window[s->strstart]; + UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]); +#if MIN_MATCH != 3 + Call UPDATE_HASH() MIN_MATCH-3 more times +#endif + } + /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage, + * but this is not important since only literal bytes will be emitted. + */ + + } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0); + + /* If the WIN_INIT bytes after the end of the current data have never been + * written, then zero those bytes in order to avoid memory check reports of + * the use of uninitialized (or uninitialised as Julian writes) bytes by + * the longest match routines. Update the high water mark for the next + * time through here. WIN_INIT is set to MAX_MATCH since the longest match + * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead. + */ + if (s->high_water < s->window_size) { + ulg curr = s->strstart + (ulg)(s->lookahead); + ulg init; + + if (s->high_water < curr) { + /* Previous high water mark below current data -- zero WIN_INIT + * bytes or up to end of window, whichever is less. + */ + init = s->window_size - curr; + if (init > WIN_INIT) + init = WIN_INIT; + zmemzero(s->window + curr, (unsigned)init); + s->high_water = curr + init; + } + else if (s->high_water < (ulg)curr + WIN_INIT) { + /* High water mark at or above current data, but below current data + * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up + * to end of window, whichever is less. + */ + init = (ulg)curr + WIN_INIT - s->high_water; + if (init > s->window_size - s->high_water) + init = s->window_size - s->high_water; + zmemzero(s->window + s->high_water, (unsigned)init); + s->high_water += init; + } + } +} + +/* =========================================================================== + * Flush the current block, with given end-of-file flag. + * IN assertion: strstart is set to the end of the current match. + */ +#define FLUSH_BLOCK_ONLY(s, last) { \ + _tr_flush_block(s, (s->block_start >= 0L ? \ + (charf *)&s->window[(unsigned)s->block_start] : \ + (charf *)Z_NULL), \ + (ulg)((long)s->strstart - s->block_start), \ + (last)); \ + s->block_start = s->strstart; \ + flush_pending(s->strm); \ + Tracev((stderr,"[FLUSH]")); \ +} + +/* Same but force premature exit if necessary. */ +#define FLUSH_BLOCK(s, last) { \ + FLUSH_BLOCK_ONLY(s, last); \ + if (s->strm->avail_out == 0) return (last) ? finish_started : need_more; \ +} + +/* =========================================================================== + * Copy without compression as much as possible from the input stream, return + * the current block state. + * This function does not insert new strings in the dictionary since + * uncompressible data is probably not useful. This function is used + * only for the level=0 compression option. + * NOTE: this function should be optimized to avoid extra copying from + * window to pending_buf. + */ +local block_state deflate_stored(s, flush) + deflate_state *s; + int flush; +{ + /* Stored blocks are limited to 0xffff bytes, pending_buf is limited + * to pending_buf_size, and each stored block has a 5 byte header: + */ + ulg max_block_size = 0xffff; + ulg max_start; + + if (max_block_size > s->pending_buf_size - 5) { + max_block_size = s->pending_buf_size - 5; + } + + /* Copy as much as possible from input to output: */ + for (;;) { + /* Fill the window as much as possible: */ + if (s->lookahead <= 1) { + + Assert(s->strstart < s->w_size+MAX_DIST(s) || + s->block_start >= (long)s->w_size, "slide too late"); + + fill_window(s); + if (s->lookahead == 0 && flush == Z_NO_FLUSH) return need_more; + + if (s->lookahead == 0) break; /* flush the current block */ + } + Assert(s->block_start >= 0L, "block gone"); + + s->strstart += s->lookahead; + s->lookahead = 0; + + /* Emit a stored block if pending_buf will be full: */ + max_start = s->block_start + max_block_size; + if (s->strstart == 0 || (ulg)s->strstart >= max_start) { + /* strstart == 0 is possible when wraparound on 16-bit machine */ + s->lookahead = (uInt)(s->strstart - max_start); + s->strstart = (uInt)max_start; + FLUSH_BLOCK(s, 0); + } + /* Flush if we may have to slide, otherwise block_start may become + * negative and the data will be gone: + */ + if (s->strstart - (uInt)s->block_start >= MAX_DIST(s)) { + FLUSH_BLOCK(s, 0); + } + } + FLUSH_BLOCK(s, flush == Z_FINISH); + return flush == Z_FINISH ? finish_done : block_done; +} + +/* =========================================================================== + * Compress as much as possible from the input stream, return the current + * block state. + * This function does not perform lazy evaluation of matches and inserts + * new strings in the dictionary only for unmatched strings or for short + * matches. It is used only for the fast compression options. + */ +local block_state deflate_fast(s, flush) + deflate_state *s; + int flush; +{ + IPos hash_head; /* head of the hash chain */ + int bflush; /* set if current block must be flushed */ + + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the next match, plus MIN_MATCH bytes to insert the + * string following the next match. + */ + if (s->lookahead < MIN_LOOKAHEAD) { + fill_window(s); + if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) { + return need_more; + } + if (s->lookahead == 0) break; /* flush the current block */ + } + + /* Insert the string window[strstart .. strstart+2] in the + * dictionary, and set hash_head to the head of the hash chain: + */ + hash_head = NIL; + if (s->lookahead >= MIN_MATCH) { + INSERT_STRING(s, s->strstart, hash_head); + } + + /* Find the longest match, discarding those <= prev_length. + * At this point we have always match_length < MIN_MATCH + */ + if (hash_head != NIL && s->strstart - hash_head <= MAX_DIST(s)) { + /* To simplify the code, we prevent matches with the string + * of window index 0 (in particular we have to avoid a match + * of the string with itself at the start of the input file). + */ + s->match_length = longest_match (s, hash_head); + /* longest_match() sets match_start */ + } + if (s->match_length >= MIN_MATCH) { + check_match(s, s->strstart, s->match_start, s->match_length); + + _tr_tally_dist(s, s->strstart - s->match_start, + s->match_length - MIN_MATCH, bflush); + + s->lookahead -= s->match_length; + + /* Insert new strings in the hash table only if the match length + * is not too large. This saves time but degrades compression. + */ +#ifndef FASTEST + if (s->match_length <= s->max_insert_length && + s->lookahead >= MIN_MATCH) { + s->match_length--; /* string at strstart already in table */ + do { + s->strstart++; + INSERT_STRING(s, s->strstart, hash_head); + /* strstart never exceeds WSIZE-MAX_MATCH, so there are + * always MIN_MATCH bytes ahead. + */ + } while (--s->match_length != 0); + s->strstart++; + } else +#endif + { + s->strstart += s->match_length; + s->match_length = 0; + s->ins_h = s->window[s->strstart]; + UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]); +#if MIN_MATCH != 3 + Call UPDATE_HASH() MIN_MATCH-3 more times +#endif + /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not + * matter since it will be recomputed at next deflate call. + */ + } + } else { + /* No match, output a literal byte */ + Tracevv((stderr,"%c", s->window[s->strstart])); + _tr_tally_lit (s, s->window[s->strstart], bflush); + s->lookahead--; + s->strstart++; + } + if (bflush) FLUSH_BLOCK(s, 0); + } + FLUSH_BLOCK(s, flush == Z_FINISH); + return flush == Z_FINISH ? finish_done : block_done; +} + +#ifndef FASTEST +/* =========================================================================== + * Same as above, but achieves better compression. We use a lazy + * evaluation for matches: a match is finally adopted only if there is + * no better match at the next window position. + */ +local block_state deflate_slow(s, flush) + deflate_state *s; + int flush; +{ + IPos hash_head; /* head of hash chain */ + int bflush; /* set if current block must be flushed */ + + /* Process the input block. */ + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the next match, plus MIN_MATCH bytes to insert the + * string following the next match. + */ + if (s->lookahead < MIN_LOOKAHEAD) { + fill_window(s); + if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) { + return need_more; + } + if (s->lookahead == 0) break; /* flush the current block */ + } + + /* Insert the string window[strstart .. strstart+2] in the + * dictionary, and set hash_head to the head of the hash chain: + */ + hash_head = NIL; + if (s->lookahead >= MIN_MATCH) { + INSERT_STRING(s, s->strstart, hash_head); + } + + /* Find the longest match, discarding those <= prev_length. + */ + s->prev_length = s->match_length, s->prev_match = s->match_start; + s->match_length = MIN_MATCH-1; + + if (hash_head != NIL && s->prev_length < s->max_lazy_match && + s->strstart - hash_head <= MAX_DIST(s)) { + /* To simplify the code, we prevent matches with the string + * of window index 0 (in particular we have to avoid a match + * of the string with itself at the start of the input file). + */ + s->match_length = longest_match (s, hash_head); + /* longest_match() sets match_start */ + + if (s->match_length <= 5 && (s->strategy == Z_FILTERED +#if TOO_FAR <= 32767 + || (s->match_length == MIN_MATCH && + s->strstart - s->match_start > TOO_FAR) +#endif + )) { + + /* If prev_match is also MIN_MATCH, match_start is garbage + * but we will ignore the current match anyway. + */ + s->match_length = MIN_MATCH-1; + } + } + /* If there was a match at the previous step and the current + * match is not better, output the previous match: + */ + if (s->prev_length >= MIN_MATCH && s->match_length <= s->prev_length) { + uInt max_insert = s->strstart + s->lookahead - MIN_MATCH; + /* Do not insert strings in hash table beyond this. */ + + check_match(s, s->strstart-1, s->prev_match, s->prev_length); + + _tr_tally_dist(s, s->strstart -1 - s->prev_match, + s->prev_length - MIN_MATCH, bflush); + + /* Insert in hash table all strings up to the end of the match. + * strstart-1 and strstart are already inserted. If there is not + * enough lookahead, the last two strings are not inserted in + * the hash table. + */ + s->lookahead -= s->prev_length-1; + s->prev_length -= 2; + do { + if (++s->strstart <= max_insert) { + INSERT_STRING(s, s->strstart, hash_head); + } + } while (--s->prev_length != 0); + s->match_available = 0; + s->match_length = MIN_MATCH-1; + s->strstart++; + + if (bflush) FLUSH_BLOCK(s, 0); + + } else if (s->match_available) { + /* If there was no match at the previous position, output a + * single literal. If there was a match but the current match + * is longer, truncate the previous match to a single literal. + */ + Tracevv((stderr,"%c", s->window[s->strstart-1])); + _tr_tally_lit(s, s->window[s->strstart-1], bflush); + if (bflush) { + FLUSH_BLOCK_ONLY(s, 0); + } + s->strstart++; + s->lookahead--; + if (s->strm->avail_out == 0) return need_more; + } else { + /* There is no previous match to compare with, wait for + * the next step to decide. + */ + s->match_available = 1; + s->strstart++; + s->lookahead--; + } + } + Assert (flush != Z_NO_FLUSH, "no flush?"); + if (s->match_available) { + Tracevv((stderr,"%c", s->window[s->strstart-1])); + _tr_tally_lit(s, s->window[s->strstart-1], bflush); + s->match_available = 0; + } + FLUSH_BLOCK(s, flush == Z_FINISH); + return flush == Z_FINISH ? finish_done : block_done; +} +#endif /* FASTEST */ + +/* =========================================================================== + * For Z_RLE, simply look for runs of bytes, generate matches only of distance + * one. Do not maintain a hash table. (It will be regenerated if this run of + * deflate switches away from Z_RLE.) + */ +local block_state deflate_rle(s, flush) + deflate_state *s; + int flush; +{ + int bflush; /* set if current block must be flushed */ + uInt prev; /* byte at distance one to match */ + Bytef *scan, *strend; /* scan goes up to strend for length of run */ + + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the longest encodable run. + */ + if (s->lookahead < MAX_MATCH) { + fill_window(s); + if (s->lookahead < MAX_MATCH && flush == Z_NO_FLUSH) { + return need_more; + } + if (s->lookahead == 0) break; /* flush the current block */ + } + + /* See how many times the previous byte repeats */ + s->match_length = 0; + if (s->lookahead >= MIN_MATCH && s->strstart > 0) { + scan = s->window + s->strstart - 1; + prev = *scan; + if (prev == *++scan && prev == *++scan && prev == *++scan) { + strend = s->window + s->strstart + MAX_MATCH; + do { + } while (prev == *++scan && prev == *++scan && + prev == *++scan && prev == *++scan && + prev == *++scan && prev == *++scan && + prev == *++scan && prev == *++scan && + scan < strend); + s->match_length = MAX_MATCH - (int)(strend - scan); + if (s->match_length > s->lookahead) + s->match_length = s->lookahead; + } + } + + /* Emit match if have run of MIN_MATCH or longer, else emit literal */ + if (s->match_length >= MIN_MATCH) { + check_match(s, s->strstart, s->strstart - 1, s->match_length); + + _tr_tally_dist(s, 1, s->match_length - MIN_MATCH, bflush); + + s->lookahead -= s->match_length; + s->strstart += s->match_length; + s->match_length = 0; + } else { + /* No match, output a literal byte */ + Tracevv((stderr,"%c", s->window[s->strstart])); + _tr_tally_lit (s, s->window[s->strstart], bflush); + s->lookahead--; + s->strstart++; + } + if (bflush) FLUSH_BLOCK(s, 0); + } + FLUSH_BLOCK(s, flush == Z_FINISH); + return flush == Z_FINISH ? finish_done : block_done; +} + +/* =========================================================================== + * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table. + * (It will be regenerated if this run of deflate switches away from Huffman.) + */ +local block_state deflate_huff(s, flush) + deflate_state *s; + int flush; +{ + int bflush; /* set if current block must be flushed */ + + for (;;) { + /* Make sure that we have a literal to write. */ + if (s->lookahead == 0) { + fill_window(s); + if (s->lookahead == 0) { + if (flush == Z_NO_FLUSH) + return need_more; + break; /* flush the current block */ + } + } + + /* Output a literal byte */ + s->match_length = 0; + Tracevv((stderr,"%c", s->window[s->strstart])); + _tr_tally_lit (s, s->window[s->strstart], bflush); + s->lookahead--; + s->strstart++; + if (bflush) FLUSH_BLOCK(s, 0); + } + FLUSH_BLOCK(s, flush == Z_FINISH); + return flush == Z_FINISH ? finish_done : block_done; +} diff --git a/3party_sloynik/zlib/deflate.h b/3party_sloynik/zlib/deflate.h new file mode 100644 index 0000000000..cbf0d1ea5d --- /dev/null +++ b/3party_sloynik/zlib/deflate.h @@ -0,0 +1,342 @@ +/* deflate.h -- internal compression state + * Copyright (C) 1995-2010 Jean-loup Gailly + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* WARNING: this file should *not* be used by applications. It is + part of the implementation of the compression library and is + subject to change. Applications should only use zlib.h. + */ + +/* @(#) $Id$ */ + +#ifndef DEFLATE_H +#define DEFLATE_H + +#include "zutil.h" + +/* define NO_GZIP when compiling if you want to disable gzip header and + trailer creation by deflate(). NO_GZIP would be used to avoid linking in + the crc code when it is not needed. For shared libraries, gzip encoding + should be left enabled. */ +#ifndef NO_GZIP +# define GZIP +#endif + +/* =========================================================================== + * Internal compression state. + */ + +#define LENGTH_CODES 29 +/* number of length codes, not counting the special END_BLOCK code */ + +#define LITERALS 256 +/* number of literal bytes 0..255 */ + +#define L_CODES (LITERALS+1+LENGTH_CODES) +/* number of Literal or Length codes, including the END_BLOCK code */ + +#define D_CODES 30 +/* number of distance codes */ + +#define BL_CODES 19 +/* number of codes used to transfer the bit lengths */ + +#define HEAP_SIZE (2*L_CODES+1) +/* maximum heap size */ + +#define MAX_BITS 15 +/* All codes must not exceed MAX_BITS bits */ + +#define INIT_STATE 42 +#define EXTRA_STATE 69 +#define NAME_STATE 73 +#define COMMENT_STATE 91 +#define HCRC_STATE 103 +#define BUSY_STATE 113 +#define FINISH_STATE 666 +/* Stream status */ + + +/* Data structure describing a single value and its code string. */ +typedef struct ct_data_s { + union { + ush freq; /* frequency count */ + ush code; /* bit string */ + } fc; + union { + ush dad; /* father node in Huffman tree */ + ush len; /* length of bit string */ + } dl; +} FAR ct_data; + +#define Freq fc.freq +#define Code fc.code +#define Dad dl.dad +#define Len dl.len + +typedef struct static_tree_desc_s static_tree_desc; + +typedef struct tree_desc_s { + ct_data *dyn_tree; /* the dynamic tree */ + int max_code; /* largest code with non zero frequency */ + static_tree_desc *stat_desc; /* the corresponding static tree */ +} FAR tree_desc; + +typedef ush Pos; +typedef Pos FAR Posf; +typedef unsigned IPos; + +/* A Pos is an index in the character window. We use short instead of int to + * save space in the various tables. IPos is used only for parameter passing. + */ + +typedef struct internal_state { + z_streamp strm; /* pointer back to this zlib stream */ + int status; /* as the name implies */ + Bytef *pending_buf; /* output still pending */ + ulg pending_buf_size; /* size of pending_buf */ + Bytef *pending_out; /* next pending byte to output to the stream */ + uInt pending; /* nb of bytes in the pending buffer */ + int wrap; /* bit 0 true for zlib, bit 1 true for gzip */ + gz_headerp gzhead; /* gzip header information to write */ + uInt gzindex; /* where in extra, name, or comment */ + Byte method; /* STORED (for zip only) or DEFLATED */ + int last_flush; /* value of flush param for previous deflate call */ + + /* used by deflate.c: */ + + uInt w_size; /* LZ77 window size (32K by default) */ + uInt w_bits; /* log2(w_size) (8..16) */ + uInt w_mask; /* w_size - 1 */ + + Bytef *window; + /* Sliding window. Input bytes are read into the second half of the window, + * and move to the first half later to keep a dictionary of at least wSize + * bytes. With this organization, matches are limited to a distance of + * wSize-MAX_MATCH bytes, but this ensures that IO is always + * performed with a length multiple of the block size. Also, it limits + * the window size to 64K, which is quite useful on MSDOS. + * To do: use the user input buffer as sliding window. + */ + + ulg window_size; + /* Actual size of window: 2*wSize, except when the user input buffer + * is directly used as sliding window. + */ + + Posf *prev; + /* Link to older string with same hash index. To limit the size of this + * array to 64K, this link is maintained only for the last 32K strings. + * An index in this array is thus a window index modulo 32K. + */ + + Posf *head; /* Heads of the hash chains or NIL. */ + + uInt ins_h; /* hash index of string to be inserted */ + uInt hash_size; /* number of elements in hash table */ + uInt hash_bits; /* log2(hash_size) */ + uInt hash_mask; /* hash_size-1 */ + + uInt hash_shift; + /* Number of bits by which ins_h must be shifted at each input + * step. It must be such that after MIN_MATCH steps, the oldest + * byte no longer takes part in the hash key, that is: + * hash_shift * MIN_MATCH >= hash_bits + */ + + long block_start; + /* Window position at the beginning of the current output block. Gets + * negative when the window is moved backwards. + */ + + uInt match_length; /* length of best match */ + IPos prev_match; /* previous match */ + int match_available; /* set if previous match exists */ + uInt strstart; /* start of string to insert */ + uInt match_start; /* start of matching string */ + uInt lookahead; /* number of valid bytes ahead in window */ + + uInt prev_length; + /* Length of the best match at previous step. Matches not greater than this + * are discarded. This is used in the lazy match evaluation. + */ + + uInt max_chain_length; + /* To speed up deflation, hash chains are never searched beyond this + * length. A higher limit improves compression ratio but degrades the + * speed. + */ + + uInt max_lazy_match; + /* Attempt to find a better match only when the current match is strictly + * smaller than this value. This mechanism is used only for compression + * levels >= 4. + */ +# define max_insert_length max_lazy_match + /* Insert new strings in the hash table only if the match length is not + * greater than this length. This saves time but degrades compression. + * max_insert_length is used only for compression levels <= 3. + */ + + int level; /* compression level (1..9) */ + int strategy; /* favor or force Huffman coding*/ + + uInt good_match; + /* Use a faster search when the previous match is longer than this */ + + int nice_match; /* Stop searching when current match exceeds this */ + + /* used by trees.c: */ + /* Didn't use ct_data typedef below to supress compiler warning */ + struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */ + struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */ + struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */ + + struct tree_desc_s l_desc; /* desc. for literal tree */ + struct tree_desc_s d_desc; /* desc. for distance tree */ + struct tree_desc_s bl_desc; /* desc. for bit length tree */ + + ush bl_count[MAX_BITS+1]; + /* number of codes at each bit length for an optimal tree */ + + int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */ + int heap_len; /* number of elements in the heap */ + int heap_max; /* element of largest frequency */ + /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used. + * The same heap array is used to build all trees. + */ + + uch depth[2*L_CODES+1]; + /* Depth of each subtree used as tie breaker for trees of equal frequency + */ + + uchf *l_buf; /* buffer for literals or lengths */ + + uInt lit_bufsize; + /* Size of match buffer for literals/lengths. There are 4 reasons for + * limiting lit_bufsize to 64K: + * - frequencies can be kept in 16 bit counters + * - if compression is not successful for the first block, all input + * data is still in the window so we can still emit a stored block even + * when input comes from standard input. (This can also be done for + * all blocks if lit_bufsize is not greater than 32K.) + * - if compression is not successful for a file smaller than 64K, we can + * even emit a stored file instead of a stored block (saving 5 bytes). + * This is applicable only for zip (not gzip or zlib). + * - creating new Huffman trees less frequently may not provide fast + * adaptation to changes in the input data statistics. (Take for + * example a binary file with poorly compressible code followed by + * a highly compressible string table.) Smaller buffer sizes give + * fast adaptation but have of course the overhead of transmitting + * trees more frequently. + * - I can't count above 4 + */ + + uInt last_lit; /* running index in l_buf */ + + ushf *d_buf; + /* Buffer for distances. To simplify the code, d_buf and l_buf have + * the same number of elements. To use different lengths, an extra flag + * array would be necessary. + */ + + ulg opt_len; /* bit length of current block with optimal trees */ + ulg static_len; /* bit length of current block with static trees */ + uInt matches; /* number of string matches in current block */ + int last_eob_len; /* bit length of EOB code for last block */ + +#ifdef DEBUG + ulg compressed_len; /* total bit length of compressed file mod 2^32 */ + ulg bits_sent; /* bit length of compressed data sent mod 2^32 */ +#endif + + ush bi_buf; + /* Output buffer. bits are inserted starting at the bottom (least + * significant bits). + */ + int bi_valid; + /* Number of valid bits in bi_buf. All bits above the last valid bit + * are always zero. + */ + + ulg high_water; + /* High water mark offset in window for initialized bytes -- bytes above + * this are set to zero in order to avoid memory check warnings when + * longest match routines access bytes past the input. This is then + * updated to the new high water mark. + */ + +} FAR deflate_state; + +/* Output a byte on the stream. + * IN assertion: there is enough room in pending_buf. + */ +#define put_byte(s, c) {s->pending_buf[s->pending++] = (c);} + + +#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1) +/* Minimum amount of lookahead, except at the end of the input file. + * See deflate.c for comments about the MIN_MATCH+1. + */ + +#define MAX_DIST(s) ((s)->w_size-MIN_LOOKAHEAD) +/* In order to simplify the code, particularly on 16 bit machines, match + * distances are limited to MAX_DIST instead of WSIZE. + */ + +#define WIN_INIT MAX_MATCH +/* Number of bytes after end of data in window to initialize in order to avoid + memory checker errors from longest match routines */ + + /* in trees.c */ +void ZLIB_INTERNAL _tr_init OF((deflate_state *s)); +int ZLIB_INTERNAL _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc)); +void ZLIB_INTERNAL _tr_flush_block OF((deflate_state *s, charf *buf, + ulg stored_len, int last)); +void ZLIB_INTERNAL _tr_align OF((deflate_state *s)); +void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf, + ulg stored_len, int last)); + +#define d_code(dist) \ + ((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)]) +/* Mapping from a distance to a distance code. dist is the distance - 1 and + * must not have side effects. _dist_code[256] and _dist_code[257] are never + * used. + */ + +#ifndef DEBUG +/* Inline versions of _tr_tally for speed: */ + +#if defined(GEN_TREES_H) || !defined(STDC) + extern uch ZLIB_INTERNAL _length_code[]; + extern uch ZLIB_INTERNAL _dist_code[]; +#else + extern const uch ZLIB_INTERNAL _length_code[]; + extern const uch ZLIB_INTERNAL _dist_code[]; +#endif + +# define _tr_tally_lit(s, c, flush) \ + { uch cc = (c); \ + s->d_buf[s->last_lit] = 0; \ + s->l_buf[s->last_lit++] = cc; \ + s->dyn_ltree[cc].Freq++; \ + flush = (s->last_lit == s->lit_bufsize-1); \ + } +# define _tr_tally_dist(s, distance, length, flush) \ + { uch len = (length); \ + ush dist = (distance); \ + s->d_buf[s->last_lit] = dist; \ + s->l_buf[s->last_lit++] = len; \ + dist--; \ + s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \ + s->dyn_dtree[d_code(dist)].Freq++; \ + flush = (s->last_lit == s->lit_bufsize-1); \ + } +#else +# define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c) +# define _tr_tally_dist(s, distance, length, flush) \ + flush = _tr_tally(s, distance, length) +#endif + +#endif /* DEFLATE_H */ diff --git a/3party_sloynik/zlib/example.c b/3party_sloynik/zlib/example.c new file mode 100644 index 0000000000..604736f15f --- /dev/null +++ b/3party_sloynik/zlib/example.c @@ -0,0 +1,565 @@ +/* example.c -- usage example of the zlib compression library + * Copyright (C) 1995-2006 Jean-loup Gailly. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#include "zlib.h" +#include + +#ifdef STDC +# include +# include +#endif + +#if defined(VMS) || defined(RISCOS) +# define TESTFILE "foo-gz" +#else +# define TESTFILE "foo.gz" +#endif + +#define CHECK_ERR(err, msg) { \ + if (err != Z_OK) { \ + fprintf(stderr, "%s error: %d\n", msg, err); \ + exit(1); \ + } \ +} + +const char hello[] = "hello, hello!"; +/* "hello world" would be more standard, but the repeated "hello" + * stresses the compression code better, sorry... + */ + +const char dictionary[] = "hello"; +uLong dictId; /* Adler32 value of the dictionary */ + +void test_compress OF((Byte *compr, uLong comprLen, + Byte *uncompr, uLong uncomprLen)); +void test_gzio OF((const char *fname, + Byte *uncompr, uLong uncomprLen)); +void test_deflate OF((Byte *compr, uLong comprLen)); +void test_inflate OF((Byte *compr, uLong comprLen, + Byte *uncompr, uLong uncomprLen)); +void test_large_deflate OF((Byte *compr, uLong comprLen, + Byte *uncompr, uLong uncomprLen)); +void test_large_inflate OF((Byte *compr, uLong comprLen, + Byte *uncompr, uLong uncomprLen)); +void test_flush OF((Byte *compr, uLong *comprLen)); +void test_sync OF((Byte *compr, uLong comprLen, + Byte *uncompr, uLong uncomprLen)); +void test_dict_deflate OF((Byte *compr, uLong comprLen)); +void test_dict_inflate OF((Byte *compr, uLong comprLen, + Byte *uncompr, uLong uncomprLen)); +int main OF((int argc, char *argv[])); + +/* =========================================================================== + * Test compress() and uncompress() + */ +void test_compress(compr, comprLen, uncompr, uncomprLen) + Byte *compr, *uncompr; + uLong comprLen, uncomprLen; +{ + int err; + uLong len = (uLong)strlen(hello)+1; + + err = compress(compr, &comprLen, (const Bytef*)hello, len); + CHECK_ERR(err, "compress"); + + strcpy((char*)uncompr, "garbage"); + + err = uncompress(uncompr, &uncomprLen, compr, comprLen); + CHECK_ERR(err, "uncompress"); + + if (strcmp((char*)uncompr, hello)) { + fprintf(stderr, "bad uncompress\n"); + exit(1); + } else { + printf("uncompress(): %s\n", (char *)uncompr); + } +} + +/* =========================================================================== + * Test read/write of .gz files + */ +void test_gzio(fname, uncompr, uncomprLen) + const char *fname; /* compressed file name */ + Byte *uncompr; + uLong uncomprLen; +{ +#ifdef NO_GZCOMPRESS + fprintf(stderr, "NO_GZCOMPRESS -- gz* functions cannot compress\n"); +#else + int err; + int len = (int)strlen(hello)+1; + gzFile file; + z_off_t pos; + + file = gzopen(fname, "wb"); + if (file == NULL) { + fprintf(stderr, "gzopen error\n"); + exit(1); + } + gzputc(file, 'h'); + if (gzputs(file, "ello") != 4) { + fprintf(stderr, "gzputs err: %s\n", gzerror(file, &err)); + exit(1); + } + if (gzprintf(file, ", %s!", "hello") != 8) { + fprintf(stderr, "gzprintf err: %s\n", gzerror(file, &err)); + exit(1); + } + gzseek(file, 1L, SEEK_CUR); /* add one zero byte */ + gzclose(file); + + file = gzopen(fname, "rb"); + if (file == NULL) { + fprintf(stderr, "gzopen error\n"); + exit(1); + } + strcpy((char*)uncompr, "garbage"); + + if (gzread(file, uncompr, (unsigned)uncomprLen) != len) { + fprintf(stderr, "gzread err: %s\n", gzerror(file, &err)); + exit(1); + } + if (strcmp((char*)uncompr, hello)) { + fprintf(stderr, "bad gzread: %s\n", (char*)uncompr); + exit(1); + } else { + printf("gzread(): %s\n", (char*)uncompr); + } + + pos = gzseek(file, -8L, SEEK_CUR); + if (pos != 6 || gztell(file) != pos) { + fprintf(stderr, "gzseek error, pos=%ld, gztell=%ld\n", + (long)pos, (long)gztell(file)); + exit(1); + } + + if (gzgetc(file) != ' ') { + fprintf(stderr, "gzgetc error\n"); + exit(1); + } + + if (gzungetc(' ', file) != ' ') { + fprintf(stderr, "gzungetc error\n"); + exit(1); + } + + gzgets(file, (char*)uncompr, (int)uncomprLen); + if (strlen((char*)uncompr) != 7) { /* " hello!" */ + fprintf(stderr, "gzgets err after gzseek: %s\n", gzerror(file, &err)); + exit(1); + } + if (strcmp((char*)uncompr, hello + 6)) { + fprintf(stderr, "bad gzgets after gzseek\n"); + exit(1); + } else { + printf("gzgets() after gzseek: %s\n", (char*)uncompr); + } + + gzclose(file); +#endif +} + +/* =========================================================================== + * Test deflate() with small buffers + */ +void test_deflate(compr, comprLen) + Byte *compr; + uLong comprLen; +{ + z_stream c_stream; /* compression stream */ + int err; + uLong len = (uLong)strlen(hello)+1; + + c_stream.zalloc = (alloc_func)0; + c_stream.zfree = (free_func)0; + c_stream.opaque = (voidpf)0; + + err = deflateInit(&c_stream, Z_DEFAULT_COMPRESSION); + CHECK_ERR(err, "deflateInit"); + + c_stream.next_in = (Bytef*)hello; + c_stream.next_out = compr; + + while (c_stream.total_in != len && c_stream.total_out < comprLen) { + c_stream.avail_in = c_stream.avail_out = 1; /* force small buffers */ + err = deflate(&c_stream, Z_NO_FLUSH); + CHECK_ERR(err, "deflate"); + } + /* Finish the stream, still forcing small buffers: */ + for (;;) { + c_stream.avail_out = 1; + err = deflate(&c_stream, Z_FINISH); + if (err == Z_STREAM_END) break; + CHECK_ERR(err, "deflate"); + } + + err = deflateEnd(&c_stream); + CHECK_ERR(err, "deflateEnd"); +} + +/* =========================================================================== + * Test inflate() with small buffers + */ +void test_inflate(compr, comprLen, uncompr, uncomprLen) + Byte *compr, *uncompr; + uLong comprLen, uncomprLen; +{ + int err; + z_stream d_stream; /* decompression stream */ + + strcpy((char*)uncompr, "garbage"); + + d_stream.zalloc = (alloc_func)0; + d_stream.zfree = (free_func)0; + d_stream.opaque = (voidpf)0; + + d_stream.next_in = compr; + d_stream.avail_in = 0; + d_stream.next_out = uncompr; + + err = inflateInit(&d_stream); + CHECK_ERR(err, "inflateInit"); + + while (d_stream.total_out < uncomprLen && d_stream.total_in < comprLen) { + d_stream.avail_in = d_stream.avail_out = 1; /* force small buffers */ + err = inflate(&d_stream, Z_NO_FLUSH); + if (err == Z_STREAM_END) break; + CHECK_ERR(err, "inflate"); + } + + err = inflateEnd(&d_stream); + CHECK_ERR(err, "inflateEnd"); + + if (strcmp((char*)uncompr, hello)) { + fprintf(stderr, "bad inflate\n"); + exit(1); + } else { + printf("inflate(): %s\n", (char *)uncompr); + } +} + +/* =========================================================================== + * Test deflate() with large buffers and dynamic change of compression level + */ +void test_large_deflate(compr, comprLen, uncompr, uncomprLen) + Byte *compr, *uncompr; + uLong comprLen, uncomprLen; +{ + z_stream c_stream; /* compression stream */ + int err; + + c_stream.zalloc = (alloc_func)0; + c_stream.zfree = (free_func)0; + c_stream.opaque = (voidpf)0; + + err = deflateInit(&c_stream, Z_BEST_SPEED); + CHECK_ERR(err, "deflateInit"); + + c_stream.next_out = compr; + c_stream.avail_out = (uInt)comprLen; + + /* At this point, uncompr is still mostly zeroes, so it should compress + * very well: + */ + c_stream.next_in = uncompr; + c_stream.avail_in = (uInt)uncomprLen; + err = deflate(&c_stream, Z_NO_FLUSH); + CHECK_ERR(err, "deflate"); + if (c_stream.avail_in != 0) { + fprintf(stderr, "deflate not greedy\n"); + exit(1); + } + + /* Feed in already compressed data and switch to no compression: */ + deflateParams(&c_stream, Z_NO_COMPRESSION, Z_DEFAULT_STRATEGY); + c_stream.next_in = compr; + c_stream.avail_in = (uInt)comprLen/2; + err = deflate(&c_stream, Z_NO_FLUSH); + CHECK_ERR(err, "deflate"); + + /* Switch back to compressing mode: */ + deflateParams(&c_stream, Z_BEST_COMPRESSION, Z_FILTERED); + c_stream.next_in = uncompr; + c_stream.avail_in = (uInt)uncomprLen; + err = deflate(&c_stream, Z_NO_FLUSH); + CHECK_ERR(err, "deflate"); + + err = deflate(&c_stream, Z_FINISH); + if (err != Z_STREAM_END) { + fprintf(stderr, "deflate should report Z_STREAM_END\n"); + exit(1); + } + err = deflateEnd(&c_stream); + CHECK_ERR(err, "deflateEnd"); +} + +/* =========================================================================== + * Test inflate() with large buffers + */ +void test_large_inflate(compr, comprLen, uncompr, uncomprLen) + Byte *compr, *uncompr; + uLong comprLen, uncomprLen; +{ + int err; + z_stream d_stream; /* decompression stream */ + + strcpy((char*)uncompr, "garbage"); + + d_stream.zalloc = (alloc_func)0; + d_stream.zfree = (free_func)0; + d_stream.opaque = (voidpf)0; + + d_stream.next_in = compr; + d_stream.avail_in = (uInt)comprLen; + + err = inflateInit(&d_stream); + CHECK_ERR(err, "inflateInit"); + + for (;;) { + d_stream.next_out = uncompr; /* discard the output */ + d_stream.avail_out = (uInt)uncomprLen; + err = inflate(&d_stream, Z_NO_FLUSH); + if (err == Z_STREAM_END) break; + CHECK_ERR(err, "large inflate"); + } + + err = inflateEnd(&d_stream); + CHECK_ERR(err, "inflateEnd"); + + if (d_stream.total_out != 2*uncomprLen + comprLen/2) { + fprintf(stderr, "bad large inflate: %ld\n", d_stream.total_out); + exit(1); + } else { + printf("large_inflate(): OK\n"); + } +} + +/* =========================================================================== + * Test deflate() with full flush + */ +void test_flush(compr, comprLen) + Byte *compr; + uLong *comprLen; +{ + z_stream c_stream; /* compression stream */ + int err; + uInt len = (uInt)strlen(hello)+1; + + c_stream.zalloc = (alloc_func)0; + c_stream.zfree = (free_func)0; + c_stream.opaque = (voidpf)0; + + err = deflateInit(&c_stream, Z_DEFAULT_COMPRESSION); + CHECK_ERR(err, "deflateInit"); + + c_stream.next_in = (Bytef*)hello; + c_stream.next_out = compr; + c_stream.avail_in = 3; + c_stream.avail_out = (uInt)*comprLen; + err = deflate(&c_stream, Z_FULL_FLUSH); + CHECK_ERR(err, "deflate"); + + compr[3]++; /* force an error in first compressed block */ + c_stream.avail_in = len - 3; + + err = deflate(&c_stream, Z_FINISH); + if (err != Z_STREAM_END) { + CHECK_ERR(err, "deflate"); + } + err = deflateEnd(&c_stream); + CHECK_ERR(err, "deflateEnd"); + + *comprLen = c_stream.total_out; +} + +/* =========================================================================== + * Test inflateSync() + */ +void test_sync(compr, comprLen, uncompr, uncomprLen) + Byte *compr, *uncompr; + uLong comprLen, uncomprLen; +{ + int err; + z_stream d_stream; /* decompression stream */ + + strcpy((char*)uncompr, "garbage"); + + d_stream.zalloc = (alloc_func)0; + d_stream.zfree = (free_func)0; + d_stream.opaque = (voidpf)0; + + d_stream.next_in = compr; + d_stream.avail_in = 2; /* just read the zlib header */ + + err = inflateInit(&d_stream); + CHECK_ERR(err, "inflateInit"); + + d_stream.next_out = uncompr; + d_stream.avail_out = (uInt)uncomprLen; + + inflate(&d_stream, Z_NO_FLUSH); + CHECK_ERR(err, "inflate"); + + d_stream.avail_in = (uInt)comprLen-2; /* read all compressed data */ + err = inflateSync(&d_stream); /* but skip the damaged part */ + CHECK_ERR(err, "inflateSync"); + + err = inflate(&d_stream, Z_FINISH); + if (err != Z_DATA_ERROR) { + fprintf(stderr, "inflate should report DATA_ERROR\n"); + /* Because of incorrect adler32 */ + exit(1); + } + err = inflateEnd(&d_stream); + CHECK_ERR(err, "inflateEnd"); + + printf("after inflateSync(): hel%s\n", (char *)uncompr); +} + +/* =========================================================================== + * Test deflate() with preset dictionary + */ +void test_dict_deflate(compr, comprLen) + Byte *compr; + uLong comprLen; +{ + z_stream c_stream; /* compression stream */ + int err; + + c_stream.zalloc = (alloc_func)0; + c_stream.zfree = (free_func)0; + c_stream.opaque = (voidpf)0; + + err = deflateInit(&c_stream, Z_BEST_COMPRESSION); + CHECK_ERR(err, "deflateInit"); + + err = deflateSetDictionary(&c_stream, + (const Bytef*)dictionary, sizeof(dictionary)); + CHECK_ERR(err, "deflateSetDictionary"); + + dictId = c_stream.adler; + c_stream.next_out = compr; + c_stream.avail_out = (uInt)comprLen; + + c_stream.next_in = (Bytef*)hello; + c_stream.avail_in = (uInt)strlen(hello)+1; + + err = deflate(&c_stream, Z_FINISH); + if (err != Z_STREAM_END) { + fprintf(stderr, "deflate should report Z_STREAM_END\n"); + exit(1); + } + err = deflateEnd(&c_stream); + CHECK_ERR(err, "deflateEnd"); +} + +/* =========================================================================== + * Test inflate() with a preset dictionary + */ +void test_dict_inflate(compr, comprLen, uncompr, uncomprLen) + Byte *compr, *uncompr; + uLong comprLen, uncomprLen; +{ + int err; + z_stream d_stream; /* decompression stream */ + + strcpy((char*)uncompr, "garbage"); + + d_stream.zalloc = (alloc_func)0; + d_stream.zfree = (free_func)0; + d_stream.opaque = (voidpf)0; + + d_stream.next_in = compr; + d_stream.avail_in = (uInt)comprLen; + + err = inflateInit(&d_stream); + CHECK_ERR(err, "inflateInit"); + + d_stream.next_out = uncompr; + d_stream.avail_out = (uInt)uncomprLen; + + for (;;) { + err = inflate(&d_stream, Z_NO_FLUSH); + if (err == Z_STREAM_END) break; + if (err == Z_NEED_DICT) { + if (d_stream.adler != dictId) { + fprintf(stderr, "unexpected dictionary"); + exit(1); + } + err = inflateSetDictionary(&d_stream, (const Bytef*)dictionary, + sizeof(dictionary)); + } + CHECK_ERR(err, "inflate with dict"); + } + + err = inflateEnd(&d_stream); + CHECK_ERR(err, "inflateEnd"); + + if (strcmp((char*)uncompr, hello)) { + fprintf(stderr, "bad inflate with dict\n"); + exit(1); + } else { + printf("inflate with dictionary: %s\n", (char *)uncompr); + } +} + +/* =========================================================================== + * Usage: example [output.gz [input.gz]] + */ + +int main(argc, argv) + int argc; + char *argv[]; +{ + Byte *compr, *uncompr; + uLong comprLen = 10000*sizeof(int); /* don't overflow on MSDOS */ + uLong uncomprLen = comprLen; + static const char* myVersion = ZLIB_VERSION; + + if (zlibVersion()[0] != myVersion[0]) { + fprintf(stderr, "incompatible zlib version\n"); + exit(1); + + } else if (strcmp(zlibVersion(), ZLIB_VERSION) != 0) { + fprintf(stderr, "warning: different zlib version\n"); + } + + printf("zlib version %s = 0x%04x, compile flags = 0x%lx\n", + ZLIB_VERSION, ZLIB_VERNUM, zlibCompileFlags()); + + compr = (Byte*)calloc((uInt)comprLen, 1); + uncompr = (Byte*)calloc((uInt)uncomprLen, 1); + /* compr and uncompr are cleared to avoid reading uninitialized + * data and to ensure that uncompr compresses well. + */ + if (compr == Z_NULL || uncompr == Z_NULL) { + printf("out of memory\n"); + exit(1); + } + test_compress(compr, comprLen, uncompr, uncomprLen); + + test_gzio((argc > 1 ? argv[1] : TESTFILE), + uncompr, uncomprLen); + + test_deflate(compr, comprLen); + test_inflate(compr, comprLen, uncompr, uncomprLen); + + test_large_deflate(compr, comprLen, uncompr, uncomprLen); + test_large_inflate(compr, comprLen, uncompr, uncomprLen); + + test_flush(compr, &comprLen); + test_sync(compr, comprLen, uncompr, uncomprLen); + comprLen = uncomprLen; + + test_dict_deflate(compr, comprLen); + test_dict_inflate(compr, comprLen, uncompr, uncomprLen); + + free(compr); + free(uncompr); + + return 0; +} diff --git a/3party_sloynik/zlib/gzclose.c b/3party_sloynik/zlib/gzclose.c new file mode 100644 index 0000000000..caeb99a317 --- /dev/null +++ b/3party_sloynik/zlib/gzclose.c @@ -0,0 +1,25 @@ +/* gzclose.c -- zlib gzclose() function + * Copyright (C) 2004, 2010 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#include "gzguts.h" + +/* gzclose() is in a separate file so that it is linked in only if it is used. + That way the other gzclose functions can be used instead to avoid linking in + unneeded compression or decompression routines. */ +int ZEXPORT gzclose(file) + gzFile file; +{ +#ifndef NO_GZCOMPRESS + gz_statep state; + + if (file == NULL) + return Z_STREAM_ERROR; + state = (gz_statep)file; + + return state->mode == GZ_READ ? gzclose_r(file) : gzclose_w(file); +#else + return gzclose_r(file); +#endif +} diff --git a/3party_sloynik/zlib/gzguts.h b/3party_sloynik/zlib/gzguts.h new file mode 100644 index 0000000000..0f8fb79f87 --- /dev/null +++ b/3party_sloynik/zlib/gzguts.h @@ -0,0 +1,132 @@ +/* gzguts.h -- zlib internal header definitions for gz* operations + * Copyright (C) 2004, 2005, 2010 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#ifdef _LARGEFILE64_SOURCE +# ifndef _LARGEFILE_SOURCE +# define _LARGEFILE_SOURCE 1 +# endif +# ifdef _FILE_OFFSET_BITS +# undef _FILE_OFFSET_BITS +# endif +#endif + +#if ((__GNUC__-0) * 10 + __GNUC_MINOR__-0 >= 33) && !defined(NO_VIZ) +# define ZLIB_INTERNAL __attribute__((visibility ("hidden"))) +#else +# define ZLIB_INTERNAL +#endif + +#include +#include "zlib.h" +#ifdef STDC +# include +# include +# include +#endif +#include + +#ifdef NO_DEFLATE /* for compatibility with old definition */ +# define NO_GZCOMPRESS +#endif + +#ifdef _MSC_VER +# include +# define vsnprintf _vsnprintf +#endif + +#ifndef local +# define local static +#endif +/* compile with -Dlocal if your debugger can't find static symbols */ + +/* gz* functions always use library allocation functions */ +#ifndef STDC + extern voidp malloc OF((uInt size)); + extern void free OF((voidpf ptr)); +#endif + +/* get errno and strerror definition */ +#if defined UNDER_CE +# include +# define zstrerror() gz_strwinerror((DWORD)GetLastError()) +#else +# ifdef STDC +# include +# define zstrerror() strerror(errno) +# else +# define zstrerror() "stdio error (consult errno)" +# endif +#endif + +/* provide prototypes for these when building zlib without LFS */ +#if !defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0 + ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); + ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); + ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); + ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); +#endif + +/* default i/o buffer size -- double this for output when reading */ +#define GZBUFSIZE 8192 + +/* gzip modes, also provide a little integrity check on the passed structure */ +#define GZ_NONE 0 +#define GZ_READ 7247 +#define GZ_WRITE 31153 +#define GZ_APPEND 1 /* mode set to GZ_WRITE after the file is opened */ + +/* values for gz_state how */ +#define LOOK 0 /* look for a gzip header */ +#define COPY 1 /* copy input directly */ +#define GZIP 2 /* decompress a gzip stream */ + +/* internal gzip file state data structure */ +typedef struct { + /* used for both reading and writing */ + int mode; /* see gzip modes above */ + int fd; /* file descriptor */ + char *path; /* path or fd for error messages */ + z_off64_t pos; /* current position in uncompressed data */ + unsigned size; /* buffer size, zero if not allocated yet */ + unsigned want; /* requested buffer size, default is GZBUFSIZE */ + unsigned char *in; /* input buffer */ + unsigned char *out; /* output buffer (double-sized when reading) */ + unsigned char *next; /* next output data to deliver or write */ + /* just for reading */ + unsigned have; /* amount of output data unused at next */ + int eof; /* true if end of input file reached */ + z_off64_t start; /* where the gzip data started, for rewinding */ + z_off64_t raw; /* where the raw data started, for seeking */ + int how; /* 0: get header, 1: copy, 2: decompress */ + int direct; /* true if last read direct, false if gzip */ + /* just for writing */ + int level; /* compression level */ + int strategy; /* compression strategy */ + /* seek request */ + z_off64_t skip; /* amount to skip (already rewound if backwards) */ + int seek; /* true if seek request pending */ + /* error information */ + int err; /* error code */ + char *msg; /* error message */ + /* zlib inflate or deflate stream */ + z_stream strm; /* stream structure in-place (not a pointer) */ +} gz_state; +typedef gz_state FAR *gz_statep; + +/* shared functions */ +void ZLIB_INTERNAL gz_error OF((gz_statep, int, const char *)); +#if defined UNDER_CE +char ZLIB_INTERNAL *gz_strwinerror OF((DWORD error)); +#endif + +/* GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t + value -- needed when comparing unsigned to z_off64_t, which is signed + (possible z_off64_t types off_t, off64_t, and long are all signed) */ +#ifdef INT_MAX +# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > INT_MAX) +#else +unsigned ZLIB_INTERNAL gz_intmax OF((void)); +# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax()) +#endif diff --git a/3party_sloynik/zlib/gzlib.c b/3party_sloynik/zlib/gzlib.c new file mode 100644 index 0000000000..603e60ed54 --- /dev/null +++ b/3party_sloynik/zlib/gzlib.c @@ -0,0 +1,537 @@ +/* gzlib.c -- zlib functions common to reading and writing gzip files + * Copyright (C) 2004, 2010 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#include "gzguts.h" + +#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 +# define LSEEK lseek64 +#else +# define LSEEK lseek +#endif + +/* Local functions */ +local void gz_reset OF((gz_statep)); +local gzFile gz_open OF((const char *, int, const char *)); + +#if defined UNDER_CE + +/* Map the Windows error number in ERROR to a locale-dependent error message + string and return a pointer to it. Typically, the values for ERROR come + from GetLastError. + + The string pointed to shall not be modified by the application, but may be + overwritten by a subsequent call to gz_strwinerror + + The gz_strwinerror function does not change the current setting of + GetLastError. */ +char ZLIB_INTERNAL *gz_strwinerror (error) + DWORD error; +{ + static char buf[1024]; + + wchar_t *msgbuf; + DWORD lasterr = GetLastError(); + DWORD chars = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM + | FORMAT_MESSAGE_ALLOCATE_BUFFER, + NULL, + error, + 0, /* Default language */ + (LPVOID)&msgbuf, + 0, + NULL); + if (chars != 0) { + /* If there is an \r\n appended, zap it. */ + if (chars >= 2 + && msgbuf[chars - 2] == '\r' && msgbuf[chars - 1] == '\n') { + chars -= 2; + msgbuf[chars] = 0; + } + + if (chars > sizeof (buf) - 1) { + chars = sizeof (buf) - 1; + msgbuf[chars] = 0; + } + + wcstombs(buf, msgbuf, chars + 1); + LocalFree(msgbuf); + } + else { + sprintf(buf, "unknown win32 error (%ld)", error); + } + + SetLastError(lasterr); + return buf; +} + +#endif /* UNDER_CE */ + +/* Reset gzip file state */ +local void gz_reset(state) + gz_statep state; +{ + if (state->mode == GZ_READ) { /* for reading ... */ + state->have = 0; /* no output data available */ + state->eof = 0; /* not at end of file */ + state->how = LOOK; /* look for gzip header */ + state->direct = 1; /* default for empty file */ + } + state->seek = 0; /* no seek request pending */ + gz_error(state, Z_OK, NULL); /* clear error */ + state->pos = 0; /* no uncompressed data yet */ + state->strm.avail_in = 0; /* no input data yet */ +} + +/* Open a gzip file either by name or file descriptor. */ +local gzFile gz_open(path, fd, mode) + const char *path; + int fd; + const char *mode; +{ + gz_statep state; + + /* allocate gzFile structure to return */ + state = malloc(sizeof(gz_state)); + if (state == NULL) + return NULL; + state->size = 0; /* no buffers allocated yet */ + state->want = GZBUFSIZE; /* requested buffer size */ + state->msg = NULL; /* no error message yet */ + + /* interpret mode */ + state->mode = GZ_NONE; + state->level = Z_DEFAULT_COMPRESSION; + state->strategy = Z_DEFAULT_STRATEGY; + while (*mode) { + if (*mode >= '0' && *mode <= '9') + state->level = *mode - '0'; + else + switch (*mode) { + case 'r': + state->mode = GZ_READ; + break; +#ifndef NO_GZCOMPRESS + case 'w': + state->mode = GZ_WRITE; + break; + case 'a': + state->mode = GZ_APPEND; + break; +#endif + case '+': /* can't read and write at the same time */ + free(state); + return NULL; + case 'b': /* ignore -- will request binary anyway */ + break; + case 'f': + state->strategy = Z_FILTERED; + break; + case 'h': + state->strategy = Z_HUFFMAN_ONLY; + break; + case 'R': + state->strategy = Z_RLE; + break; + case 'F': + state->strategy = Z_FIXED; + default: /* could consider as an error, but just ignore */ + ; + } + mode++; + } + + /* must provide an "r", "w", or "a" */ + if (state->mode == GZ_NONE) { + free(state); + return NULL; + } + + /* save the path name for error messages */ + state->path = malloc(strlen(path) + 1); + if (state->path == NULL) { + free(state); + return NULL; + } + strcpy(state->path, path); + + /* open the file with the appropriate mode (or just use fd) */ + state->fd = fd != -1 ? fd : + open(path, +#ifdef O_LARGEFILE + O_LARGEFILE | +#endif +#ifdef O_BINARY + O_BINARY | +#endif + (state->mode == GZ_READ ? + O_RDONLY : + (O_WRONLY | O_CREAT | ( + state->mode == GZ_WRITE ? + O_TRUNC : + O_APPEND))), + 0666); + if (state->fd == -1) { + free(state->path); + free(state); + return NULL; + } + if (state->mode == GZ_APPEND) + state->mode = GZ_WRITE; /* simplify later checks */ + + /* save the current position for rewinding (only if reading) */ + if (state->mode == GZ_READ) { + state->start = LSEEK(state->fd, 0, SEEK_CUR); + if (state->start == -1) state->start = 0; + } + + /* initialize stream */ + gz_reset(state); + + /* return stream */ + return (gzFile)state; +} + +/* -- see zlib.h -- */ +gzFile ZEXPORT gzopen(path, mode) + const char *path; + const char *mode; +{ + return gz_open(path, -1, mode); +} + +/* -- see zlib.h -- */ +gzFile ZEXPORT gzopen64(path, mode) + const char *path; + const char *mode; +{ + return gz_open(path, -1, mode); +} + +/* -- see zlib.h -- */ +gzFile ZEXPORT gzdopen(fd, mode) + int fd; + const char *mode; +{ + char *path; /* identifier for error messages */ + gzFile gz; + + if (fd == -1 || (path = malloc(7 + 3 * sizeof(int))) == NULL) + return NULL; + sprintf(path, "", fd); /* for debugging */ + gz = gz_open(path, fd, mode); + free(path); + return gz; +} + +/* -- see zlib.h -- */ +int ZEXPORT gzbuffer(file, size) + gzFile file; + unsigned size; +{ + gz_statep state; + + /* get internal structure and check integrity */ + if (file == NULL) + return -1; + state = (gz_statep)file; + if (state->mode != GZ_READ && state->mode != GZ_WRITE) + return -1; + + /* make sure we haven't already allocated memory */ + if (state->size != 0) + return -1; + + /* check and set requested size */ + if (size == 0) + return -1; + state->want = size; + return 0; +} + +/* -- see zlib.h -- */ +int ZEXPORT gzrewind(file) + gzFile file; +{ + gz_statep state; + + /* get internal structure */ + if (file == NULL) + return -1; + state = (gz_statep)file; + + /* check that we're reading and that there's no error */ + if (state->mode != GZ_READ || state->err != Z_OK) + return -1; + + /* back up and start over */ + if (LSEEK(state->fd, state->start, SEEK_SET) == -1) + return -1; + gz_reset(state); + return 0; +} + +/* -- see zlib.h -- */ +z_off64_t ZEXPORT gzseek64(file, offset, whence) + gzFile file; + z_off64_t offset; + int whence; +{ + unsigned n; + z_off64_t ret; + gz_statep state; + + /* get internal structure and check integrity */ + if (file == NULL) + return -1; + state = (gz_statep)file; + if (state->mode != GZ_READ && state->mode != GZ_WRITE) + return -1; + + /* check that there's no error */ + if (state->err != Z_OK) + return -1; + + /* can only seek from start or relative to current position */ + if (whence != SEEK_SET && whence != SEEK_CUR) + return -1; + + /* normalize offset to a SEEK_CUR specification */ + if (whence == SEEK_SET) + offset -= state->pos; + else if (state->seek) + offset += state->skip; + state->seek = 0; + + /* if within raw area while reading, just go there */ + if (state->mode == GZ_READ && state->how == COPY && + state->pos + offset >= state->raw) { + ret = LSEEK(state->fd, offset - state->have, SEEK_CUR); + if (ret == -1) + return -1; + state->have = 0; + state->eof = 0; + state->seek = 0; + gz_error(state, Z_OK, NULL); + state->strm.avail_in = 0; + state->pos += offset; + return state->pos; + } + + /* calculate skip amount, rewinding if needed for back seek when reading */ + if (offset < 0) { + if (state->mode != GZ_READ) /* writing -- can't go backwards */ + return -1; + offset += state->pos; + if (offset < 0) /* before start of file! */ + return -1; + if (gzrewind(file) == -1) /* rewind, then skip to offset */ + return -1; + } + + /* if reading, skip what's in output buffer (one less gzgetc() check) */ + if (state->mode == GZ_READ) { + n = GT_OFF(state->have) || (z_off64_t)state->have > offset ? + (unsigned)offset : state->have; + state->have -= n; + state->next += n; + state->pos += n; + offset -= n; + } + + /* request skip (if not zero) */ + if (offset) { + state->seek = 1; + state->skip = offset; + } + return state->pos + offset; +} + +/* -- see zlib.h -- */ +z_off_t ZEXPORT gzseek(file, offset, whence) + gzFile file; + z_off_t offset; + int whence; +{ + z_off64_t ret; + + ret = gzseek64(file, (z_off64_t)offset, whence); + return ret == (z_off_t)ret ? (z_off_t)ret : -1; +} + +/* -- see zlib.h -- */ +z_off64_t ZEXPORT gztell64(file) + gzFile file; +{ + gz_statep state; + + /* get internal structure and check integrity */ + if (file == NULL) + return -1; + state = (gz_statep)file; + if (state->mode != GZ_READ && state->mode != GZ_WRITE) + return -1; + + /* return position */ + return state->pos + (state->seek ? state->skip : 0); +} + +/* -- see zlib.h -- */ +z_off_t ZEXPORT gztell(file) + gzFile file; +{ + z_off64_t ret; + + ret = gztell64(file); + return ret == (z_off_t)ret ? (z_off_t)ret : -1; +} + +/* -- see zlib.h -- */ +z_off64_t ZEXPORT gzoffset64(file) + gzFile file; +{ + z_off64_t offset; + gz_statep state; + + /* get internal structure and check integrity */ + if (file == NULL) + return -1; + state = (gz_statep)file; + if (state->mode != GZ_READ && state->mode != GZ_WRITE) + return -1; + + /* compute and return effective offset in file */ + offset = LSEEK(state->fd, 0, SEEK_CUR); + if (offset == -1) + return -1; + if (state->mode == GZ_READ) /* reading */ + offset -= state->strm.avail_in; /* don't count buffered input */ + return offset; +} + +/* -- see zlib.h -- */ +z_off_t ZEXPORT gzoffset(file) + gzFile file; +{ + z_off64_t ret; + + ret = gzoffset64(file); + return ret == (z_off_t)ret ? (z_off_t)ret : -1; +} + +/* -- see zlib.h -- */ +int ZEXPORT gzeof(file) + gzFile file; +{ + gz_statep state; + + /* get internal structure and check integrity */ + if (file == NULL) + return 0; + state = (gz_statep)file; + if (state->mode != GZ_READ && state->mode != GZ_WRITE) + return 0; + + /* return end-of-file state */ + return state->mode == GZ_READ ? + (state->eof && state->strm.avail_in == 0 && state->have == 0) : 0; +} + +/* -- see zlib.h -- */ +const char * ZEXPORT gzerror(file, errnum) + gzFile file; + int *errnum; +{ + gz_statep state; + + /* get internal structure and check integrity */ + if (file == NULL) + return NULL; + state = (gz_statep)file; + if (state->mode != GZ_READ && state->mode != GZ_WRITE) + return NULL; + + /* return error information */ + if (errnum != NULL) + *errnum = state->err; + return state->msg == NULL ? "" : state->msg; +} + +/* -- see zlib.h -- */ +void ZEXPORT gzclearerr(file) + gzFile file; +{ + gz_statep state; + + /* get internal structure and check integrity */ + if (file == NULL) + return; + state = (gz_statep)file; + if (state->mode != GZ_READ && state->mode != GZ_WRITE) + return; + + /* clear error and end-of-file */ + if (state->mode == GZ_READ) + state->eof = 0; + gz_error(state, Z_OK, NULL); +} + +/* Create an error message in allocated memory and set state->err and + state->msg accordingly. Free any previous error message already there. Do + not try to free or allocate space if the error is Z_MEM_ERROR (out of + memory). Simply save the error message as a static string. If there is an + allocation failure constructing the error message, then convert the error to + out of memory. */ +void ZLIB_INTERNAL gz_error(state, err, msg) + gz_statep state; + int err; + const char *msg; +{ + /* free previously allocated message and clear */ + if (state->msg != NULL) { + if (state->err != Z_MEM_ERROR) + free(state->msg); + state->msg = NULL; + } + + /* set error code, and if no message, then done */ + state->err = err; + if (msg == NULL) + return; + + /* for an out of memory error, save as static string */ + if (err == Z_MEM_ERROR) { + state->msg = (char *)msg; + return; + } + + /* construct error message with path */ + if ((state->msg = malloc(strlen(state->path) + strlen(msg) + 3)) == NULL) { + state->err = Z_MEM_ERROR; + state->msg = (char *)"out of memory"; + return; + } + strcpy(state->msg, state->path); + strcat(state->msg, ": "); + strcat(state->msg, msg); + return; +} + +#ifndef INT_MAX +/* portably return maximum value for an int (when limits.h presumed not + available) -- we need to do this to cover cases where 2's complement not + used, since C standard permits 1's complement and sign-bit representations, + otherwise we could just use ((unsigned)-1) >> 1 */ +unsigned ZLIB_INTERNAL gz_intmax() +{ + unsigned p, q; + + p = 1; + do { + q = p; + p <<= 1; + p++; + } while (p > q); + return q >> 1; +} +#endif diff --git a/3party_sloynik/zlib/gzread.c b/3party_sloynik/zlib/gzread.c new file mode 100644 index 0000000000..548201ab00 --- /dev/null +++ b/3party_sloynik/zlib/gzread.c @@ -0,0 +1,653 @@ +/* gzread.c -- zlib functions for reading gzip files + * Copyright (C) 2004, 2005, 2010 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#include "gzguts.h" + +/* Local functions */ +local int gz_load OF((gz_statep, unsigned char *, unsigned, unsigned *)); +local int gz_avail OF((gz_statep)); +local int gz_next4 OF((gz_statep, unsigned long *)); +local int gz_head OF((gz_statep)); +local int gz_decomp OF((gz_statep)); +local int gz_make OF((gz_statep)); +local int gz_skip OF((gz_statep, z_off64_t)); + +/* Use read() to load a buffer -- return -1 on error, otherwise 0. Read from + state->fd, and update state->eof, state->err, and state->msg as appropriate. + This function needs to loop on read(), since read() is not guaranteed to + read the number of bytes requested, depending on the type of descriptor. */ +local int gz_load(state, buf, len, have) + gz_statep state; + unsigned char *buf; + unsigned len; + unsigned *have; +{ + int ret; + + *have = 0; + do { + ret = read(state->fd, buf + *have, len - *have); + if (ret <= 0) + break; + *have += ret; + } while (*have < len); + if (ret < 0) { + gz_error(state, Z_ERRNO, zstrerror()); + return -1; + } + if (ret == 0) + state->eof = 1; + return 0; +} + +/* Load up input buffer and set eof flag if last data loaded -- return -1 on + error, 0 otherwise. Note that the eof flag is set when the end of the input + file is reached, even though there may be unused data in the buffer. Once + that data has been used, no more attempts will be made to read the file. + gz_avail() assumes that strm->avail_in == 0. */ +local int gz_avail(state) + gz_statep state; +{ + z_streamp strm = &(state->strm); + + if (state->err != Z_OK) + return -1; + if (state->eof == 0) { + if (gz_load(state, state->in, state->size, + (unsigned *)&(strm->avail_in)) == -1) + return -1; + strm->next_in = state->in; + } + return 0; +} + +/* Get next byte from input, or -1 if end or error. */ +#define NEXT() ((strm->avail_in == 0 && gz_avail(state) == -1) ? -1 : \ + (strm->avail_in == 0 ? -1 : \ + (strm->avail_in--, *(strm->next_in)++))) + +/* Get a four-byte little-endian integer and return 0 on success and the value + in *ret. Otherwise -1 is returned and *ret is not modified. */ +local int gz_next4(state, ret) + gz_statep state; + unsigned long *ret; +{ + int ch; + unsigned long val; + z_streamp strm = &(state->strm); + + val = NEXT(); + val += (unsigned)NEXT() << 8; + val += (unsigned long)NEXT() << 16; + ch = NEXT(); + if (ch == -1) + return -1; + val += (unsigned long)ch << 24; + *ret = val; + return 0; +} + +/* Look for gzip header, set up for inflate or copy. state->have must be zero. + If this is the first time in, allocate required memory. state->how will be + left unchanged if there is no more input data available, will be set to COPY + if there is no gzip header and direct copying will be performed, or it will + be set to GZIP for decompression, and the gzip header will be skipped so + that the next available input data is the raw deflate stream. If direct + copying, then leftover input data from the input buffer will be copied to + the output buffer. In that case, all further file reads will be directly to + either the output buffer or a user buffer. If decompressing, the inflate + state and the check value will be initialized. gz_head() will return 0 on + success or -1 on failure. Failures may include read errors or gzip header + errors. */ +local int gz_head(state) + gz_statep state; +{ + z_streamp strm = &(state->strm); + int flags; + unsigned len; + + /* allocate read buffers and inflate memory */ + if (state->size == 0) { + /* allocate buffers */ + state->in = malloc(state->want); + state->out = malloc(state->want << 1); + if (state->in == NULL || state->out == NULL) { + if (state->out != NULL) + free(state->out); + if (state->in != NULL) + free(state->in); + gz_error(state, Z_MEM_ERROR, "out of memory"); + return -1; + } + state->size = state->want; + + /* allocate inflate memory */ + state->strm.zalloc = Z_NULL; + state->strm.zfree = Z_NULL; + state->strm.opaque = Z_NULL; + state->strm.avail_in = 0; + state->strm.next_in = Z_NULL; + if (inflateInit2(&(state->strm), -15) != Z_OK) { /* raw inflate */ + free(state->out); + free(state->in); + state->size = 0; + gz_error(state, Z_MEM_ERROR, "out of memory"); + return -1; + } + } + + /* get some data in the input buffer */ + if (strm->avail_in == 0) { + if (gz_avail(state) == -1) + return -1; + if (strm->avail_in == 0) + return 0; + } + + /* look for the gzip magic header bytes 31 and 139 */ + if (strm->next_in[0] == 31) { + strm->avail_in--; + strm->next_in++; + if (strm->avail_in == 0 && gz_avail(state) == -1) + return -1; + if (strm->avail_in && strm->next_in[0] == 139) { + /* we have a gzip header, woo hoo! */ + strm->avail_in--; + strm->next_in++; + + /* skip rest of header */ + if (NEXT() != 8) { /* compression method */ + gz_error(state, Z_DATA_ERROR, "unknown compression method"); + return -1; + } + flags = NEXT(); + if (flags & 0xe0) { /* reserved flag bits */ + gz_error(state, Z_DATA_ERROR, "unknown header flags set"); + return -1; + } + NEXT(); /* modification time */ + NEXT(); + NEXT(); + NEXT(); + NEXT(); /* extra flags */ + NEXT(); /* operating system */ + if (flags & 4) { /* extra field */ + len = (unsigned)NEXT(); + len += (unsigned)NEXT() << 8; + while (len--) + if (NEXT() < 0) + break; + } + if (flags & 8) /* file name */ + while (NEXT() > 0) + ; + if (flags & 16) /* comment */ + while (NEXT() > 0) + ; + if (flags & 2) { /* header crc */ + NEXT(); + NEXT(); + } + /* an unexpected end of file is not checked for here -- it will be + noticed on the first request for uncompressed data */ + + /* set up for decompression */ + inflateReset(strm); + strm->adler = crc32(0L, Z_NULL, 0); + state->how = GZIP; + state->direct = 0; + return 0; + } + else { + /* not a gzip file -- save first byte (31) and fall to raw i/o */ + state->out[0] = 31; + state->have = 1; + } + } + + /* doing raw i/o, save start of raw data for seeking, copy any leftover + input to output -- this assumes that the output buffer is larger than + the input buffer, which also assures space for gzungetc() */ + state->raw = state->pos; + state->next = state->out; + if (strm->avail_in) { + memcpy(state->next + state->have, strm->next_in, strm->avail_in); + state->have += strm->avail_in; + strm->avail_in = 0; + } + state->how = COPY; + state->direct = 1; + return 0; +} + +/* Decompress from input to the provided next_out and avail_out in the state. + If the end of the compressed data is reached, then verify the gzip trailer + check value and length (modulo 2^32). state->have and state->next are set + to point to the just decompressed data, and the crc is updated. If the + trailer is verified, state->how is reset to LOOK to look for the next gzip + stream or raw data, once state->have is depleted. Returns 0 on success, -1 + on failure. Failures may include invalid compressed data or a failed gzip + trailer verification. */ +local int gz_decomp(state) + gz_statep state; +{ + int ret; + unsigned had; + unsigned long crc, len; + z_streamp strm = &(state->strm); + + /* fill output buffer up to end of deflate stream */ + had = strm->avail_out; + do { + /* get more input for inflate() */ + if (strm->avail_in == 0 && gz_avail(state) == -1) + return -1; + if (strm->avail_in == 0) { + gz_error(state, Z_DATA_ERROR, "unexpected end of file"); + return -1; + } + + /* decompress and handle errors */ + ret = inflate(strm, Z_NO_FLUSH); + if (ret == Z_STREAM_ERROR || ret == Z_NEED_DICT) { + gz_error(state, Z_STREAM_ERROR, + "internal error: inflate stream corrupt"); + return -1; + } + if (ret == Z_MEM_ERROR) { + gz_error(state, Z_MEM_ERROR, "out of memory"); + return -1; + } + if (ret == Z_DATA_ERROR) { /* deflate stream invalid */ + gz_error(state, Z_DATA_ERROR, + strm->msg == NULL ? "compressed data error" : strm->msg); + return -1; + } + } while (strm->avail_out && ret != Z_STREAM_END); + + /* update available output and crc check value */ + state->have = had - strm->avail_out; + state->next = strm->next_out - state->have; + strm->adler = crc32(strm->adler, state->next, state->have); + + /* check gzip trailer if at end of deflate stream */ + if (ret == Z_STREAM_END) { + if (gz_next4(state, &crc) == -1 || gz_next4(state, &len) == -1) { + gz_error(state, Z_DATA_ERROR, "unexpected end of file"); + return -1; + } + if (crc != strm->adler) { + gz_error(state, Z_DATA_ERROR, "incorrect data check"); + return -1; + } + if (len != (strm->total_out & 0xffffffffL)) { + gz_error(state, Z_DATA_ERROR, "incorrect length check"); + return -1; + } + state->how = LOOK; /* ready for next stream, once have is 0 (leave + state->direct unchanged to remember how) */ + } + + /* good decompression */ + return 0; +} + +/* Make data and put in the output buffer. Assumes that state->have == 0. + Data is either copied from the input file or decompressed from the input + file depending on state->how. If state->how is LOOK, then a gzip header is + looked for (and skipped if found) to determine wither to copy or decompress. + Returns -1 on error, otherwise 0. gz_make() will leave state->have as COPY + or GZIP unless the end of the input file has been reached and all data has + been processed. */ +local int gz_make(state) + gz_statep state; +{ + z_streamp strm = &(state->strm); + + if (state->how == LOOK) { /* look for gzip header */ + if (gz_head(state) == -1) + return -1; + if (state->have) /* got some data from gz_head() */ + return 0; + } + if (state->how == COPY) { /* straight copy */ + if (gz_load(state, state->out, state->size << 1, &(state->have)) == -1) + return -1; + state->next = state->out; + } + else if (state->how == GZIP) { /* decompress */ + strm->avail_out = state->size << 1; + strm->next_out = state->out; + if (gz_decomp(state) == -1) + return -1; + } + return 0; +} + +/* Skip len uncompressed bytes of output. Return -1 on error, 0 on success. */ +local int gz_skip(state, len) + gz_statep state; + z_off64_t len; +{ + unsigned n; + + /* skip over len bytes or reach end-of-file, whichever comes first */ + while (len) + /* skip over whatever is in output buffer */ + if (state->have) { + n = GT_OFF(state->have) || (z_off64_t)state->have > len ? + (unsigned)len : state->have; + state->have -= n; + state->next += n; + state->pos += n; + len -= n; + } + + /* output buffer empty -- return if we're at the end of the input */ + else if (state->eof && state->strm.avail_in == 0) + break; + + /* need more data to skip -- load up output buffer */ + else { + /* get more output, looking for header if required */ + if (gz_make(state) == -1) + return -1; + } + return 0; +} + +/* -- see zlib.h -- */ +int ZEXPORT gzread(file, buf, len) + gzFile file; + voidp buf; + unsigned len; +{ + unsigned got, n; + gz_statep state; + z_streamp strm; + + /* get internal structure */ + if (file == NULL) + return -1; + state = (gz_statep)file; + strm = &(state->strm); + + /* check that we're reading and that there's no error */ + if (state->mode != GZ_READ || state->err != Z_OK) + return -1; + + /* since an int is returned, make sure len fits in one, otherwise return + with an error (this avoids the flaw in the interface) */ + if ((int)len < 0) { + gz_error(state, Z_BUF_ERROR, "requested length does not fit in int"); + return -1; + } + + /* if len is zero, avoid unnecessary operations */ + if (len == 0) + return 0; + + /* process a skip request */ + if (state->seek) { + state->seek = 0; + if (gz_skip(state, state->skip) == -1) + return -1; + } + + /* get len bytes to buf, or less than len if at the end */ + got = 0; + do { + /* first just try copying data from the output buffer */ + if (state->have) { + n = state->have > len ? len : state->have; + memcpy(buf, state->next, n); + state->next += n; + state->have -= n; + } + + /* output buffer empty -- return if we're at the end of the input */ + else if (state->eof && strm->avail_in == 0) + break; + + /* need output data -- for small len or new stream load up our output + buffer */ + else if (state->how == LOOK || len < (state->size << 1)) { + /* get more output, looking for header if required */ + if (gz_make(state) == -1) + return -1; + continue; /* no progress yet -- go back to memcpy() above */ + /* the copy above assures that we will leave with space in the + output buffer, allowing at least one gzungetc() to succeed */ + } + + /* large len -- read directly into user buffer */ + else if (state->how == COPY) { /* read directly */ + if (gz_load(state, buf, len, &n) == -1) + return -1; + } + + /* large len -- decompress directly into user buffer */ + else { /* state->how == GZIP */ + strm->avail_out = len; + strm->next_out = buf; + if (gz_decomp(state) == -1) + return -1; + n = state->have; + state->have = 0; + } + + /* update progress */ + len -= n; + buf = (char *)buf + n; + got += n; + state->pos += n; + } while (len); + + /* return number of bytes read into user buffer (will fit in int) */ + return (int)got; +} + +/* -- see zlib.h -- */ +int ZEXPORT gzgetc(file) + gzFile file; +{ + int ret; + unsigned char buf[1]; + gz_statep state; + + /* get internal structure */ + if (file == NULL) + return -1; + state = (gz_statep)file; + + /* check that we're reading and that there's no error */ + if (state->mode != GZ_READ || state->err != Z_OK) + return -1; + + /* try output buffer (no need to check for skip request) */ + if (state->have) { + state->have--; + state->pos++; + return *(state->next)++; + } + + /* nothing there -- try gzread() */ + ret = gzread(file, buf, 1); + return ret < 1 ? -1 : buf[0]; +} + +/* -- see zlib.h -- */ +int ZEXPORT gzungetc(c, file) + int c; + gzFile file; +{ + gz_statep state; + + /* get internal structure */ + if (file == NULL) + return -1; + state = (gz_statep)file; + + /* check that we're reading and that there's no error */ + if (state->mode != GZ_READ || state->err != Z_OK) + return -1; + + /* process a skip request */ + if (state->seek) { + state->seek = 0; + if (gz_skip(state, state->skip) == -1) + return -1; + } + + /* can't push EOF */ + if (c < 0) + return -1; + + /* if output buffer empty, put byte at end (allows more pushing) */ + if (state->have == 0) { + state->have = 1; + state->next = state->out + (state->size << 1) - 1; + state->next[0] = c; + state->pos--; + return c; + } + + /* if no room, give up (must have already done a gzungetc()) */ + if (state->have == (state->size << 1)) { + gz_error(state, Z_BUF_ERROR, "out of room to push characters"); + return -1; + } + + /* slide output data if needed and insert byte before existing data */ + if (state->next == state->out) { + unsigned char *src = state->out + state->have; + unsigned char *dest = state->out + (state->size << 1); + while (src > state->out) + *--dest = *--src; + state->next = dest; + } + state->have++; + state->next--; + state->next[0] = c; + state->pos--; + return c; +} + +/* -- see zlib.h -- */ +char * ZEXPORT gzgets(file, buf, len) + gzFile file; + char *buf; + int len; +{ + unsigned left, n; + char *str; + unsigned char *eol; + gz_statep state; + + /* check parameters and get internal structure */ + if (file == NULL || buf == NULL || len < 1) + return NULL; + state = (gz_statep)file; + + /* check that we're reading and that there's no error */ + if (state->mode != GZ_READ || state->err != Z_OK) + return NULL; + + /* process a skip request */ + if (state->seek) { + state->seek = 0; + if (gz_skip(state, state->skip) == -1) + return NULL; + } + + /* copy output bytes up to new line or len - 1, whichever comes first -- + append a terminating zero to the string (we don't check for a zero in + the contents, let the user worry about that) */ + str = buf; + left = (unsigned)len - 1; + if (left) do { + /* assure that something is in the output buffer */ + if (state->have == 0) { + if (gz_make(state) == -1) + return NULL; /* error */ + if (state->have == 0) { /* end of file */ + if (buf == str) /* got bupkus */ + return NULL; + break; /* got something -- return it */ + } + } + + /* look for end-of-line in current output buffer */ + n = state->have > left ? left : state->have; + eol = memchr(state->next, '\n', n); + if (eol != NULL) + n = (unsigned)(eol - state->next) + 1; + + /* copy through end-of-line, or remainder if not found */ + memcpy(buf, state->next, n); + state->have -= n; + state->next += n; + state->pos += n; + left -= n; + buf += n; + } while (left && eol == NULL); + + /* found end-of-line or out of space -- terminate string and return it */ + buf[0] = 0; + return str; +} + +/* -- see zlib.h -- */ +int ZEXPORT gzdirect(file) + gzFile file; +{ + gz_statep state; + + /* get internal structure */ + if (file == NULL) + return 0; + state = (gz_statep)file; + + /* check that we're reading */ + if (state->mode != GZ_READ) + return 0; + + /* if the state is not known, but we can find out, then do so (this is + mainly for right after a gzopen() or gzdopen()) */ + if (state->how == LOOK && state->have == 0) + (void)gz_head(state); + + /* return 1 if reading direct, 0 if decompressing a gzip stream */ + return state->direct; +} + +/* -- see zlib.h -- */ +int ZEXPORT gzclose_r(file) + gzFile file; +{ + int ret; + gz_statep state; + + /* get internal structure */ + if (file == NULL) + return Z_STREAM_ERROR; + state = (gz_statep)file; + + /* check that we're reading */ + if (state->mode != GZ_READ) + return Z_STREAM_ERROR; + + /* free memory and close file */ + if (state->size) { + inflateEnd(&(state->strm)); + free(state->out); + free(state->in); + } + gz_error(state, Z_OK, NULL); + free(state->path); + ret = close(state->fd); + free(state); + return ret ? Z_ERRNO : Z_OK; +} diff --git a/3party_sloynik/zlib/gzwrite.c b/3party_sloynik/zlib/gzwrite.c new file mode 100644 index 0000000000..e8defc6887 --- /dev/null +++ b/3party_sloynik/zlib/gzwrite.c @@ -0,0 +1,531 @@ +/* gzwrite.c -- zlib functions for writing gzip files + * Copyright (C) 2004, 2005, 2010 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#include "gzguts.h" + +/* Local functions */ +local int gz_init OF((gz_statep)); +local int gz_comp OF((gz_statep, int)); +local int gz_zero OF((gz_statep, z_off64_t)); + +/* Initialize state for writing a gzip file. Mark initialization by setting + state->size to non-zero. Return -1 on failure or 0 on success. */ +local int gz_init(state) + gz_statep state; +{ + int ret; + z_streamp strm = &(state->strm); + + /* allocate input and output buffers */ + state->in = malloc(state->want); + state->out = malloc(state->want); + if (state->in == NULL || state->out == NULL) { + if (state->out != NULL) + free(state->out); + if (state->in != NULL) + free(state->in); + gz_error(state, Z_MEM_ERROR, "out of memory"); + return -1; + } + + /* allocate deflate memory, set up for gzip compression */ + strm->zalloc = Z_NULL; + strm->zfree = Z_NULL; + strm->opaque = Z_NULL; + ret = deflateInit2(strm, state->level, Z_DEFLATED, + 15 + 16, 8, state->strategy); + if (ret != Z_OK) { + free(state->in); + gz_error(state, Z_MEM_ERROR, "out of memory"); + return -1; + } + + /* mark state as initialized */ + state->size = state->want; + + /* initialize write buffer */ + strm->avail_out = state->size; + strm->next_out = state->out; + state->next = strm->next_out; + return 0; +} + +/* Compress whatever is at avail_in and next_in and write to the output file. + Return -1 if there is an error writing to the output file, otherwise 0. + flush is assumed to be a valid deflate() flush value. If flush is Z_FINISH, + then the deflate() state is reset to start a new gzip stream. */ +local int gz_comp(state, flush) + gz_statep state; + int flush; +{ + int ret, got; + unsigned have; + z_streamp strm = &(state->strm); + + /* allocate memory if this is the first time through */ + if (state->size == 0 && gz_init(state) == -1) + return -1; + + /* run deflate() on provided input until it produces no more output */ + ret = Z_OK; + do { + /* write out current buffer contents if full, or if flushing, but if + doing Z_FINISH then don't write until we get to Z_STREAM_END */ + if (strm->avail_out == 0 || (flush != Z_NO_FLUSH && + (flush != Z_FINISH || ret == Z_STREAM_END))) { + have = (unsigned)(strm->next_out - state->next); + if (have && ((got = write(state->fd, state->next, have)) < 0 || + (unsigned)got != have)) { + gz_error(state, Z_ERRNO, zstrerror()); + return -1; + } + if (strm->avail_out == 0) { + strm->avail_out = state->size; + strm->next_out = state->out; + } + state->next = strm->next_out; + } + + /* compress */ + have = strm->avail_out; + ret = deflate(strm, flush); + if (ret == Z_STREAM_ERROR) { + gz_error(state, Z_STREAM_ERROR, + "internal error: deflate stream corrupt"); + return -1; + } + have -= strm->avail_out; + } while (have); + + /* if that completed a deflate stream, allow another to start */ + if (flush == Z_FINISH) + deflateReset(strm); + + /* all done, no errors */ + return 0; +} + +/* Compress len zeros to output. Return -1 on error, 0 on success. */ +local int gz_zero(state, len) + gz_statep state; + z_off64_t len; +{ + int first; + unsigned n; + z_streamp strm = &(state->strm); + + /* consume whatever's left in the input buffer */ + if (strm->avail_in && gz_comp(state, Z_NO_FLUSH) == -1) + return -1; + + /* compress len zeros (len guaranteed > 0) */ + first = 1; + while (len) { + n = GT_OFF(state->size) || (z_off64_t)state->size > len ? + (unsigned)len : state->size; + if (first) { + memset(state->in, 0, n); + first = 0; + } + strm->avail_in = n; + strm->next_in = state->in; + state->pos += n; + if (gz_comp(state, Z_NO_FLUSH) == -1) + return -1; + len -= n; + } + return 0; +} + +/* -- see zlib.h -- */ +int ZEXPORT gzwrite(file, buf, len) + gzFile file; + voidpc buf; + unsigned len; +{ + unsigned put = len; + unsigned n; + gz_statep state; + z_streamp strm; + + /* get internal structure */ + if (file == NULL) + return 0; + state = (gz_statep)file; + strm = &(state->strm); + + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) + return 0; + + /* since an int is returned, make sure len fits in one, otherwise return + with an error (this avoids the flaw in the interface) */ + if ((int)len < 0) { + gz_error(state, Z_BUF_ERROR, "requested length does not fit in int"); + return 0; + } + + /* if len is zero, avoid unnecessary operations */ + if (len == 0) + return 0; + + /* allocate memory if this is the first time through */ + if (state->size == 0 && gz_init(state) == -1) + return 0; + + /* check for seek request */ + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + return 0; + } + + /* for small len, copy to input buffer, otherwise compress directly */ + if (len < state->size) { + /* copy to input buffer, compress when full */ + do { + if (strm->avail_in == 0) + strm->next_in = state->in; + n = state->size - strm->avail_in; + if (n > len) + n = len; + memcpy(strm->next_in + strm->avail_in, buf, n); + strm->avail_in += n; + state->pos += n; + buf = (char *)buf + n; + len -= n; + if (len && gz_comp(state, Z_NO_FLUSH) == -1) + return 0; + } while (len); + } + else { + /* consume whatever's left in the input buffer */ + if (strm->avail_in && gz_comp(state, Z_NO_FLUSH) == -1) + return 0; + + /* directly compress user buffer to file */ + strm->avail_in = len; + strm->next_in = (voidp)buf; + state->pos += len; + if (gz_comp(state, Z_NO_FLUSH) == -1) + return 0; + } + + /* input was all buffered or compressed (put will fit in int) */ + return (int)put; +} + +/* -- see zlib.h -- */ +int ZEXPORT gzputc(file, c) + gzFile file; + int c; +{ + unsigned char buf[1]; + gz_statep state; + z_streamp strm; + + /* get internal structure */ + if (file == NULL) + return -1; + state = (gz_statep)file; + strm = &(state->strm); + + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) + return -1; + + /* check for seek request */ + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + return -1; + } + + /* try writing to input buffer for speed (state->size == 0 if buffer not + initialized) */ + if (strm->avail_in < state->size) { + if (strm->avail_in == 0) + strm->next_in = state->in; + strm->next_in[strm->avail_in++] = c; + state->pos++; + return c; + } + + /* no room in buffer or not initialized, use gz_write() */ + buf[0] = c; + if (gzwrite(file, buf, 1) != 1) + return -1; + return c; +} + +/* -- see zlib.h -- */ +int ZEXPORT gzputs(file, str) + gzFile file; + const char *str; +{ + int ret; + unsigned len; + + /* write string */ + len = (unsigned)strlen(str); + ret = gzwrite(file, str, len); + return ret == 0 && len != 0 ? -1 : ret; +} + +#ifdef STDC +#include + +/* -- see zlib.h -- */ +int ZEXPORTVA gzprintf (gzFile file, const char *format, ...) +{ + int size, len; + gz_statep state; + z_streamp strm; + va_list va; + + /* get internal structure */ + if (file == NULL) + return -1; + state = (gz_statep)file; + strm = &(state->strm); + + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) + return 0; + + /* make sure we have some buffer space */ + if (state->size == 0 && gz_init(state) == -1) + return 0; + + /* check for seek request */ + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + return 0; + } + + /* consume whatever's left in the input buffer */ + if (strm->avail_in && gz_comp(state, Z_NO_FLUSH) == -1) + return 0; + + /* do the printf() into the input buffer, put length in len */ + size = (int)(state->size); + state->in[size - 1] = 0; + va_start(va, format); +#ifdef NO_vsnprintf +# ifdef HAS_vsprintf_void + (void)vsprintf(state->in, format, va); + va_end(va); + for (len = 0; len < size; len++) + if (state->in[len] == 0) break; +# else + len = vsprintf(state->in, format, va); + va_end(va); +# endif +#else +# ifdef HAS_vsnprintf_void + (void)vsnprintf(state->in, size, format, va); + va_end(va); + len = strlen(state->in); +# else + len = vsnprintf((char *)(state->in), size, format, va); + va_end(va); +# endif +#endif + + /* check that printf() results fit in buffer */ + if (len <= 0 || len >= (int)size || state->in[size - 1] != 0) + return 0; + + /* update buffer and position, defer compression until needed */ + strm->avail_in = (unsigned)len; + strm->next_in = state->in; + state->pos += len; + return len; +} + +#else /* !STDC */ + +/* -- see zlib.h -- */ +int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, + a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) + gzFile file; + const char *format; + int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, + a11, a12, a13, a14, a15, a16, a17, a18, a19, a20; +{ + int size, len; + gz_statep state; + z_streamp strm; + + /* get internal structure */ + if (file == NULL) + return -1; + state = (gz_statep)file; + strm = &(state->strm); + + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) + return 0; + + /* make sure we have some buffer space */ + if (state->size == 0 && gz_init(state) == -1) + return 0; + + /* check for seek request */ + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + return 0; + } + + /* consume whatever's left in the input buffer */ + if (strm->avail_in && gz_comp(state, Z_NO_FLUSH) == -1) + return 0; + + /* do the printf() into the input buffer, put length in len */ + size = (int)(state->size); + state->in[size - 1] = 0; +#ifdef NO_snprintf +# ifdef HAS_sprintf_void + sprintf(state->in, format, a1, a2, a3, a4, a5, a6, a7, a8, + a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20); + for (len = 0; len < size; len++) + if (state->in[len] == 0) break; +# else + len = sprintf(state->in, format, a1, a2, a3, a4, a5, a6, a7, a8, + a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20); +# endif +#else +# ifdef HAS_snprintf_void + snprintf(state->in, size, format, a1, a2, a3, a4, a5, a6, a7, a8, + a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20); + len = strlen(state->in); +# else + len = snprintf(state->in, size, format, a1, a2, a3, a4, a5, a6, a7, a8, + a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20); +# endif +#endif + + /* check that printf() results fit in buffer */ + if (len <= 0 || len >= (int)size || state->in[size - 1] != 0) + return 0; + + /* update buffer and position, defer compression until needed */ + strm->avail_in = (unsigned)len; + strm->next_in = state->in; + state->pos += len; + return len; +} + +#endif + +/* -- see zlib.h -- */ +int ZEXPORT gzflush(file, flush) + gzFile file; + int flush; +{ + gz_statep state; + + /* get internal structure */ + if (file == NULL) + return -1; + state = (gz_statep)file; + + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) + return Z_STREAM_ERROR; + + /* check flush parameter */ + if (flush < 0 || flush > Z_FINISH) + return Z_STREAM_ERROR; + + /* check for seek request */ + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + return -1; + } + + /* compress remaining data with requested flush */ + gz_comp(state, flush); + return state->err; +} + +/* -- see zlib.h -- */ +int ZEXPORT gzsetparams(file, level, strategy) + gzFile file; + int level; + int strategy; +{ + gz_statep state; + z_streamp strm; + + /* get internal structure */ + if (file == NULL) + return Z_STREAM_ERROR; + state = (gz_statep)file; + strm = &(state->strm); + + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) + return Z_STREAM_ERROR; + + /* if no change is requested, then do nothing */ + if (level == state->level && strategy == state->strategy) + return Z_OK; + + /* check for seek request */ + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + return -1; + } + + /* change compression parameters for subsequent input */ + if (state->size) { + /* flush previous input with previous parameters before changing */ + if (strm->avail_in && gz_comp(state, Z_PARTIAL_FLUSH) == -1) + return state->err; + deflateParams(strm, level, strategy); + } + state->level = level; + state->strategy = strategy; + return Z_OK; +} + +/* -- see zlib.h -- */ +int ZEXPORT gzclose_w(file) + gzFile file; +{ + int ret = 0; + gz_statep state; + + /* get internal structure */ + if (file == NULL) + return Z_STREAM_ERROR; + state = (gz_statep)file; + + /* check that we're writing */ + if (state->mode != GZ_WRITE) + return Z_STREAM_ERROR; + + /* check for seek request */ + if (state->seek) { + state->seek = 0; + ret += gz_zero(state, state->skip); + } + + /* flush, free memory, and close file */ + ret += gz_comp(state, Z_FINISH); + (void)deflateEnd(&(state->strm)); + free(state->out); + free(state->in); + gz_error(state, Z_OK, NULL); + free(state->path); + ret += close(state->fd); + free(state); + return ret ? Z_ERRNO : Z_OK; +} diff --git a/3party_sloynik/zlib/infback.c b/3party_sloynik/zlib/infback.c new file mode 100644 index 0000000000..af3a8c965d --- /dev/null +++ b/3party_sloynik/zlib/infback.c @@ -0,0 +1,632 @@ +/* infback.c -- inflate using a call-back interface + * Copyright (C) 1995-2009 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* + This code is largely copied from inflate.c. Normally either infback.o or + inflate.o would be linked into an application--not both. The interface + with inffast.c is retained so that optimized assembler-coded versions of + inflate_fast() can be used with either inflate.c or infback.c. + */ + +#include "zutil.h" +#include "inftrees.h" +#include "inflate.h" +#include "inffast.h" + +/* function prototypes */ +local void fixedtables OF((struct inflate_state FAR *state)); + +/* + strm provides memory allocation functions in zalloc and zfree, or + Z_NULL to use the library memory allocation functions. + + windowBits is in the range 8..15, and window is a user-supplied + window and output buffer that is 2**windowBits bytes. + */ +int ZEXPORT inflateBackInit_(strm, windowBits, window, version, stream_size) +z_streamp strm; +int windowBits; +unsigned char FAR *window; +const char *version; +int stream_size; +{ + struct inflate_state FAR *state; + + if (version == Z_NULL || version[0] != ZLIB_VERSION[0] || + stream_size != (int)(sizeof(z_stream))) + return Z_VERSION_ERROR; + if (strm == Z_NULL || window == Z_NULL || + windowBits < 8 || windowBits > 15) + return Z_STREAM_ERROR; + strm->msg = Z_NULL; /* in case we return an error */ + if (strm->zalloc == (alloc_func)0) { + strm->zalloc = zcalloc; + strm->opaque = (voidpf)0; + } + if (strm->zfree == (free_func)0) strm->zfree = zcfree; + state = (struct inflate_state FAR *)ZALLOC(strm, 1, + sizeof(struct inflate_state)); + if (state == Z_NULL) return Z_MEM_ERROR; + Tracev((stderr, "inflate: allocated\n")); + strm->state = (struct internal_state FAR *)state; + state->dmax = 32768U; + state->wbits = windowBits; + state->wsize = 1U << windowBits; + state->window = window; + state->wnext = 0; + state->whave = 0; + return Z_OK; +} + +/* + Return state with length and distance decoding tables and index sizes set to + fixed code decoding. Normally this returns fixed tables from inffixed.h. + If BUILDFIXED is defined, then instead this routine builds the tables the + first time it's called, and returns those tables the first time and + thereafter. This reduces the size of the code by about 2K bytes, in + exchange for a little execution time. However, BUILDFIXED should not be + used for threaded applications, since the rewriting of the tables and virgin + may not be thread-safe. + */ +local void fixedtables(state) +struct inflate_state FAR *state; +{ +#ifdef BUILDFIXED + static int virgin = 1; + static code *lenfix, *distfix; + static code fixed[544]; + + /* build fixed huffman tables if first call (may not be thread safe) */ + if (virgin) { + unsigned sym, bits; + static code *next; + + /* literal/length table */ + sym = 0; + while (sym < 144) state->lens[sym++] = 8; + while (sym < 256) state->lens[sym++] = 9; + while (sym < 280) state->lens[sym++] = 7; + while (sym < 288) state->lens[sym++] = 8; + next = fixed; + lenfix = next; + bits = 9; + inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work); + + /* distance table */ + sym = 0; + while (sym < 32) state->lens[sym++] = 5; + distfix = next; + bits = 5; + inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work); + + /* do this just once */ + virgin = 0; + } +#else /* !BUILDFIXED */ +# include "inffixed.h" +#endif /* BUILDFIXED */ + state->lencode = lenfix; + state->lenbits = 9; + state->distcode = distfix; + state->distbits = 5; +} + +/* Macros for inflateBack(): */ + +/* Load returned state from inflate_fast() */ +#define LOAD() \ + do { \ + put = strm->next_out; \ + left = strm->avail_out; \ + next = strm->next_in; \ + have = strm->avail_in; \ + hold = state->hold; \ + bits = state->bits; \ + } while (0) + +/* Set state from registers for inflate_fast() */ +#define RESTORE() \ + do { \ + strm->next_out = put; \ + strm->avail_out = left; \ + strm->next_in = next; \ + strm->avail_in = have; \ + state->hold = hold; \ + state->bits = bits; \ + } while (0) + +/* Clear the input bit accumulator */ +#define INITBITS() \ + do { \ + hold = 0; \ + bits = 0; \ + } while (0) + +/* Assure that some input is available. If input is requested, but denied, + then return a Z_BUF_ERROR from inflateBack(). */ +#define PULL() \ + do { \ + if (have == 0) { \ + have = in(in_desc, &next); \ + if (have == 0) { \ + next = Z_NULL; \ + ret = Z_BUF_ERROR; \ + goto inf_leave; \ + } \ + } \ + } while (0) + +/* Get a byte of input into the bit accumulator, or return from inflateBack() + with an error if there is no input available. */ +#define PULLBYTE() \ + do { \ + PULL(); \ + have--; \ + hold += (unsigned long)(*next++) << bits; \ + bits += 8; \ + } while (0) + +/* Assure that there are at least n bits in the bit accumulator. If there is + not enough available input to do that, then return from inflateBack() with + an error. */ +#define NEEDBITS(n) \ + do { \ + while (bits < (unsigned)(n)) \ + PULLBYTE(); \ + } while (0) + +/* Return the low n bits of the bit accumulator (n < 16) */ +#define BITS(n) \ + ((unsigned)hold & ((1U << (n)) - 1)) + +/* Remove n bits from the bit accumulator */ +#define DROPBITS(n) \ + do { \ + hold >>= (n); \ + bits -= (unsigned)(n); \ + } while (0) + +/* Remove zero to seven bits as needed to go to a byte boundary */ +#define BYTEBITS() \ + do { \ + hold >>= bits & 7; \ + bits -= bits & 7; \ + } while (0) + +/* Assure that some output space is available, by writing out the window + if it's full. If the write fails, return from inflateBack() with a + Z_BUF_ERROR. */ +#define ROOM() \ + do { \ + if (left == 0) { \ + put = state->window; \ + left = state->wsize; \ + state->whave = left; \ + if (out(out_desc, put, left)) { \ + ret = Z_BUF_ERROR; \ + goto inf_leave; \ + } \ + } \ + } while (0) + +/* + strm provides the memory allocation functions and window buffer on input, + and provides information on the unused input on return. For Z_DATA_ERROR + returns, strm will also provide an error message. + + in() and out() are the call-back input and output functions. When + inflateBack() needs more input, it calls in(). When inflateBack() has + filled the window with output, or when it completes with data in the + window, it calls out() to write out the data. The application must not + change the provided input until in() is called again or inflateBack() + returns. The application must not change the window/output buffer until + inflateBack() returns. + + in() and out() are called with a descriptor parameter provided in the + inflateBack() call. This parameter can be a structure that provides the + information required to do the read or write, as well as accumulated + information on the input and output such as totals and check values. + + in() should return zero on failure. out() should return non-zero on + failure. If either in() or out() fails, than inflateBack() returns a + Z_BUF_ERROR. strm->next_in can be checked for Z_NULL to see whether it + was in() or out() that caused in the error. Otherwise, inflateBack() + returns Z_STREAM_END on success, Z_DATA_ERROR for an deflate format + error, or Z_MEM_ERROR if it could not allocate memory for the state. + inflateBack() can also return Z_STREAM_ERROR if the input parameters + are not correct, i.e. strm is Z_NULL or the state was not initialized. + */ +int ZEXPORT inflateBack(strm, in, in_desc, out, out_desc) +z_streamp strm; +in_func in; +void FAR *in_desc; +out_func out; +void FAR *out_desc; +{ + struct inflate_state FAR *state; + unsigned char FAR *next; /* next input */ + unsigned char FAR *put; /* next output */ + unsigned have, left; /* available input and output */ + unsigned long hold; /* bit buffer */ + unsigned bits; /* bits in bit buffer */ + unsigned copy; /* number of stored or match bytes to copy */ + unsigned char FAR *from; /* where to copy match bytes from */ + code here; /* current decoding table entry */ + code last; /* parent table entry */ + unsigned len; /* length to copy for repeats, bits to drop */ + int ret; /* return code */ + static const unsigned short order[19] = /* permutation of code lengths */ + {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; + + /* Check that the strm exists and that the state was initialized */ + if (strm == Z_NULL || strm->state == Z_NULL) + return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + + /* Reset the state */ + strm->msg = Z_NULL; + state->mode = TYPE; + state->last = 0; + state->whave = 0; + next = strm->next_in; + have = next != Z_NULL ? strm->avail_in : 0; + hold = 0; + bits = 0; + put = state->window; + left = state->wsize; + + /* Inflate until end of block marked as last */ + for (;;) + switch (state->mode) { + case TYPE: + /* determine and dispatch block type */ + if (state->last) { + BYTEBITS(); + state->mode = DONE; + break; + } + NEEDBITS(3); + state->last = BITS(1); + DROPBITS(1); + switch (BITS(2)) { + case 0: /* stored block */ + Tracev((stderr, "inflate: stored block%s\n", + state->last ? " (last)" : "")); + state->mode = STORED; + break; + case 1: /* fixed block */ + fixedtables(state); + Tracev((stderr, "inflate: fixed codes block%s\n", + state->last ? " (last)" : "")); + state->mode = LEN; /* decode codes */ + break; + case 2: /* dynamic block */ + Tracev((stderr, "inflate: dynamic codes block%s\n", + state->last ? " (last)" : "")); + state->mode = TABLE; + break; + case 3: + strm->msg = (char *)"invalid block type"; + state->mode = BAD; + } + DROPBITS(2); + break; + + case STORED: + /* get and verify stored block length */ + BYTEBITS(); /* go to byte boundary */ + NEEDBITS(32); + if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { + strm->msg = (char *)"invalid stored block lengths"; + state->mode = BAD; + break; + } + state->length = (unsigned)hold & 0xffff; + Tracev((stderr, "inflate: stored length %u\n", + state->length)); + INITBITS(); + + /* copy stored block from input to output */ + while (state->length != 0) { + copy = state->length; + PULL(); + ROOM(); + if (copy > have) copy = have; + if (copy > left) copy = left; + zmemcpy(put, next, copy); + have -= copy; + next += copy; + left -= copy; + put += copy; + state->length -= copy; + } + Tracev((stderr, "inflate: stored end\n")); + state->mode = TYPE; + break; + + case TABLE: + /* get dynamic table entries descriptor */ + NEEDBITS(14); + state->nlen = BITS(5) + 257; + DROPBITS(5); + state->ndist = BITS(5) + 1; + DROPBITS(5); + state->ncode = BITS(4) + 4; + DROPBITS(4); +#ifndef PKZIP_BUG_WORKAROUND + if (state->nlen > 286 || state->ndist > 30) { + strm->msg = (char *)"too many length or distance symbols"; + state->mode = BAD; + break; + } +#endif + Tracev((stderr, "inflate: table sizes ok\n")); + + /* get code length code lengths (not a typo) */ + state->have = 0; + while (state->have < state->ncode) { + NEEDBITS(3); + state->lens[order[state->have++]] = (unsigned short)BITS(3); + DROPBITS(3); + } + while (state->have < 19) + state->lens[order[state->have++]] = 0; + state->next = state->codes; + state->lencode = (code const FAR *)(state->next); + state->lenbits = 7; + ret = inflate_table(CODES, state->lens, 19, &(state->next), + &(state->lenbits), state->work); + if (ret) { + strm->msg = (char *)"invalid code lengths set"; + state->mode = BAD; + break; + } + Tracev((stderr, "inflate: code lengths ok\n")); + + /* get length and distance code code lengths */ + state->have = 0; + while (state->have < state->nlen + state->ndist) { + for (;;) { + here = state->lencode[BITS(state->lenbits)]; + if ((unsigned)(here.bits) <= bits) break; + PULLBYTE(); + } + if (here.val < 16) { + NEEDBITS(here.bits); + DROPBITS(here.bits); + state->lens[state->have++] = here.val; + } + else { + if (here.val == 16) { + NEEDBITS(here.bits + 2); + DROPBITS(here.bits); + if (state->have == 0) { + strm->msg = (char *)"invalid bit length repeat"; + state->mode = BAD; + break; + } + len = (unsigned)(state->lens[state->have - 1]); + copy = 3 + BITS(2); + DROPBITS(2); + } + else if (here.val == 17) { + NEEDBITS(here.bits + 3); + DROPBITS(here.bits); + len = 0; + copy = 3 + BITS(3); + DROPBITS(3); + } + else { + NEEDBITS(here.bits + 7); + DROPBITS(here.bits); + len = 0; + copy = 11 + BITS(7); + DROPBITS(7); + } + if (state->have + copy > state->nlen + state->ndist) { + strm->msg = (char *)"invalid bit length repeat"; + state->mode = BAD; + break; + } + while (copy--) + state->lens[state->have++] = (unsigned short)len; + } + } + + /* handle error breaks in while */ + if (state->mode == BAD) break; + + /* check for end-of-block code (better have one) */ + if (state->lens[256] == 0) { + strm->msg = (char *)"invalid code -- missing end-of-block"; + state->mode = BAD; + break; + } + + /* build code tables -- note: do not change the lenbits or distbits + values here (9 and 6) without reading the comments in inftrees.h + concerning the ENOUGH constants, which depend on those values */ + state->next = state->codes; + state->lencode = (code const FAR *)(state->next); + state->lenbits = 9; + ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), + &(state->lenbits), state->work); + if (ret) { + strm->msg = (char *)"invalid literal/lengths set"; + state->mode = BAD; + break; + } + state->distcode = (code const FAR *)(state->next); + state->distbits = 6; + ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, + &(state->next), &(state->distbits), state->work); + if (ret) { + strm->msg = (char *)"invalid distances set"; + state->mode = BAD; + break; + } + Tracev((stderr, "inflate: codes ok\n")); + state->mode = LEN; + + case LEN: + /* use inflate_fast() if we have enough input and output */ + if (have >= 6 && left >= 258) { + RESTORE(); + if (state->whave < state->wsize) + state->whave = state->wsize - left; + inflate_fast(strm, state->wsize); + LOAD(); + break; + } + + /* get a literal, length, or end-of-block code */ + for (;;) { + here = state->lencode[BITS(state->lenbits)]; + if ((unsigned)(here.bits) <= bits) break; + PULLBYTE(); + } + if (here.op && (here.op & 0xf0) == 0) { + last = here; + for (;;) { + here = state->lencode[last.val + + (BITS(last.bits + last.op) >> last.bits)]; + if ((unsigned)(last.bits + here.bits) <= bits) break; + PULLBYTE(); + } + DROPBITS(last.bits); + } + DROPBITS(here.bits); + state->length = (unsigned)here.val; + + /* process literal */ + if (here.op == 0) { + Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? + "inflate: literal '%c'\n" : + "inflate: literal 0x%02x\n", here.val)); + ROOM(); + *put++ = (unsigned char)(state->length); + left--; + state->mode = LEN; + break; + } + + /* process end of block */ + if (here.op & 32) { + Tracevv((stderr, "inflate: end of block\n")); + state->mode = TYPE; + break; + } + + /* invalid code */ + if (here.op & 64) { + strm->msg = (char *)"invalid literal/length code"; + state->mode = BAD; + break; + } + + /* length code -- get extra bits, if any */ + state->extra = (unsigned)(here.op) & 15; + if (state->extra != 0) { + NEEDBITS(state->extra); + state->length += BITS(state->extra); + DROPBITS(state->extra); + } + Tracevv((stderr, "inflate: length %u\n", state->length)); + + /* get distance code */ + for (;;) { + here = state->distcode[BITS(state->distbits)]; + if ((unsigned)(here.bits) <= bits) break; + PULLBYTE(); + } + if ((here.op & 0xf0) == 0) { + last = here; + for (;;) { + here = state->distcode[last.val + + (BITS(last.bits + last.op) >> last.bits)]; + if ((unsigned)(last.bits + here.bits) <= bits) break; + PULLBYTE(); + } + DROPBITS(last.bits); + } + DROPBITS(here.bits); + if (here.op & 64) { + strm->msg = (char *)"invalid distance code"; + state->mode = BAD; + break; + } + state->offset = (unsigned)here.val; + + /* get distance extra bits, if any */ + state->extra = (unsigned)(here.op) & 15; + if (state->extra != 0) { + NEEDBITS(state->extra); + state->offset += BITS(state->extra); + DROPBITS(state->extra); + } + if (state->offset > state->wsize - (state->whave < state->wsize ? + left : 0)) { + strm->msg = (char *)"invalid distance too far back"; + state->mode = BAD; + break; + } + Tracevv((stderr, "inflate: distance %u\n", state->offset)); + + /* copy match from window to output */ + do { + ROOM(); + copy = state->wsize - state->offset; + if (copy < left) { + from = put + copy; + copy = left - copy; + } + else { + from = put - state->offset; + copy = left; + } + if (copy > state->length) copy = state->length; + state->length -= copy; + left -= copy; + do { + *put++ = *from++; + } while (--copy); + } while (state->length != 0); + break; + + case DONE: + /* inflate stream terminated properly -- write leftover output */ + ret = Z_STREAM_END; + if (left < state->wsize) { + if (out(out_desc, state->window, state->wsize - left)) + ret = Z_BUF_ERROR; + } + goto inf_leave; + + case BAD: + ret = Z_DATA_ERROR; + goto inf_leave; + + default: /* can't happen, but makes compilers happy */ + ret = Z_STREAM_ERROR; + goto inf_leave; + } + + /* Return unused input */ + inf_leave: + strm->next_in = next; + strm->avail_in = have; + return ret; +} + +int ZEXPORT inflateBackEnd(strm) +z_streamp strm; +{ + if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0) + return Z_STREAM_ERROR; + ZFREE(strm, strm->state); + strm->state = Z_NULL; + Tracev((stderr, "inflate: end\n")); + return Z_OK; +} diff --git a/3party_sloynik/zlib/inffast.c b/3party_sloynik/zlib/inffast.c new file mode 100644 index 0000000000..2f1d60b43b --- /dev/null +++ b/3party_sloynik/zlib/inffast.c @@ -0,0 +1,340 @@ +/* inffast.c -- fast decoding + * Copyright (C) 1995-2008, 2010 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#include "zutil.h" +#include "inftrees.h" +#include "inflate.h" +#include "inffast.h" + +#ifndef ASMINF + +/* Allow machine dependent optimization for post-increment or pre-increment. + Based on testing to date, + Pre-increment preferred for: + - PowerPC G3 (Adler) + - MIPS R5000 (Randers-Pehrson) + Post-increment preferred for: + - none + No measurable difference: + - Pentium III (Anderson) + - M68060 (Nikl) + */ +#ifdef POSTINC +# define OFF 0 +# define PUP(a) *(a)++ +#else +# define OFF 1 +# define PUP(a) *++(a) +#endif + +/* + Decode literal, length, and distance codes and write out the resulting + literal and match bytes until either not enough input or output is + available, an end-of-block is encountered, or a data error is encountered. + When large enough input and output buffers are supplied to inflate(), for + example, a 16K input buffer and a 64K output buffer, more than 95% of the + inflate execution time is spent in this routine. + + Entry assumptions: + + state->mode == LEN + strm->avail_in >= 6 + strm->avail_out >= 258 + start >= strm->avail_out + state->bits < 8 + + On return, state->mode is one of: + + LEN -- ran out of enough output space or enough available input + TYPE -- reached end of block code, inflate() to interpret next block + BAD -- error in block data + + Notes: + + - The maximum input bits used by a length/distance pair is 15 bits for the + length code, 5 bits for the length extra, 15 bits for the distance code, + and 13 bits for the distance extra. This totals 48 bits, or six bytes. + Therefore if strm->avail_in >= 6, then there is enough input to avoid + checking for available input while decoding. + + - The maximum bytes that a single length/distance pair can output is 258 + bytes, which is the maximum length that can be coded. inflate_fast() + requires strm->avail_out >= 258 for each loop to avoid checking for + output space. + */ +void ZLIB_INTERNAL inflate_fast(strm, start) +z_streamp strm; +unsigned start; /* inflate()'s starting value for strm->avail_out */ +{ + struct inflate_state FAR *state; + unsigned char FAR *in; /* local strm->next_in */ + unsigned char FAR *last; /* while in < last, enough input available */ + unsigned char FAR *out; /* local strm->next_out */ + unsigned char FAR *beg; /* inflate()'s initial strm->next_out */ + unsigned char FAR *end; /* while out < end, enough space available */ +#ifdef INFLATE_STRICT + unsigned dmax; /* maximum distance from zlib header */ +#endif + unsigned wsize; /* window size or zero if not using window */ + unsigned whave; /* valid bytes in the window */ + unsigned wnext; /* window write index */ + unsigned char FAR *window; /* allocated sliding window, if wsize != 0 */ + unsigned long hold; /* local strm->hold */ + unsigned bits; /* local strm->bits */ + code const FAR *lcode; /* local strm->lencode */ + code const FAR *dcode; /* local strm->distcode */ + unsigned lmask; /* mask for first level of length codes */ + unsigned dmask; /* mask for first level of distance codes */ + code here; /* retrieved table entry */ + unsigned op; /* code bits, operation, extra bits, or */ + /* window position, window bytes to copy */ + unsigned len; /* match length, unused bytes */ + unsigned dist; /* match distance */ + unsigned char FAR *from; /* where to copy match from */ + + /* copy state to local variables */ + state = (struct inflate_state FAR *)strm->state; + in = strm->next_in - OFF; + last = in + (strm->avail_in - 5); + out = strm->next_out - OFF; + beg = out - (start - strm->avail_out); + end = out + (strm->avail_out - 257); +#ifdef INFLATE_STRICT + dmax = state->dmax; +#endif + wsize = state->wsize; + whave = state->whave; + wnext = state->wnext; + window = state->window; + hold = state->hold; + bits = state->bits; + lcode = state->lencode; + dcode = state->distcode; + lmask = (1U << state->lenbits) - 1; + dmask = (1U << state->distbits) - 1; + + /* decode literals and length/distances until end-of-block or not enough + input data or output space */ + do { + if (bits < 15) { + hold += (unsigned long)(PUP(in)) << bits; + bits += 8; + hold += (unsigned long)(PUP(in)) << bits; + bits += 8; + } + here = lcode[hold & lmask]; + dolen: + op = (unsigned)(here.bits); + hold >>= op; + bits -= op; + op = (unsigned)(here.op); + if (op == 0) { /* literal */ + Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? + "inflate: literal '%c'\n" : + "inflate: literal 0x%02x\n", here.val)); + PUP(out) = (unsigned char)(here.val); + } + else if (op & 16) { /* length base */ + len = (unsigned)(here.val); + op &= 15; /* number of extra bits */ + if (op) { + if (bits < op) { + hold += (unsigned long)(PUP(in)) << bits; + bits += 8; + } + len += (unsigned)hold & ((1U << op) - 1); + hold >>= op; + bits -= op; + } + Tracevv((stderr, "inflate: length %u\n", len)); + if (bits < 15) { + hold += (unsigned long)(PUP(in)) << bits; + bits += 8; + hold += (unsigned long)(PUP(in)) << bits; + bits += 8; + } + here = dcode[hold & dmask]; + dodist: + op = (unsigned)(here.bits); + hold >>= op; + bits -= op; + op = (unsigned)(here.op); + if (op & 16) { /* distance base */ + dist = (unsigned)(here.val); + op &= 15; /* number of extra bits */ + if (bits < op) { + hold += (unsigned long)(PUP(in)) << bits; + bits += 8; + if (bits < op) { + hold += (unsigned long)(PUP(in)) << bits; + bits += 8; + } + } + dist += (unsigned)hold & ((1U << op) - 1); +#ifdef INFLATE_STRICT + if (dist > dmax) { + strm->msg = (char *)"invalid distance too far back"; + state->mode = BAD; + break; + } +#endif + hold >>= op; + bits -= op; + Tracevv((stderr, "inflate: distance %u\n", dist)); + op = (unsigned)(out - beg); /* max distance in output */ + if (dist > op) { /* see if copy from window */ + op = dist - op; /* distance back in window */ + if (op > whave) { + if (state->sane) { + strm->msg = + (char *)"invalid distance too far back"; + state->mode = BAD; + break; + } +#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR + if (len <= op - whave) { + do { + PUP(out) = 0; + } while (--len); + continue; + } + len -= op - whave; + do { + PUP(out) = 0; + } while (--op > whave); + if (op == 0) { + from = out - dist; + do { + PUP(out) = PUP(from); + } while (--len); + continue; + } +#endif + } + from = window - OFF; + if (wnext == 0) { /* very common case */ + from += wsize - op; + if (op < len) { /* some from window */ + len -= op; + do { + PUP(out) = PUP(from); + } while (--op); + from = out - dist; /* rest from output */ + } + } + else if (wnext < op) { /* wrap around window */ + from += wsize + wnext - op; + op -= wnext; + if (op < len) { /* some from end of window */ + len -= op; + do { + PUP(out) = PUP(from); + } while (--op); + from = window - OFF; + if (wnext < len) { /* some from start of window */ + op = wnext; + len -= op; + do { + PUP(out) = PUP(from); + } while (--op); + from = out - dist; /* rest from output */ + } + } + } + else { /* contiguous in window */ + from += wnext - op; + if (op < len) { /* some from window */ + len -= op; + do { + PUP(out) = PUP(from); + } while (--op); + from = out - dist; /* rest from output */ + } + } + while (len > 2) { + PUP(out) = PUP(from); + PUP(out) = PUP(from); + PUP(out) = PUP(from); + len -= 3; + } + if (len) { + PUP(out) = PUP(from); + if (len > 1) + PUP(out) = PUP(from); + } + } + else { + from = out - dist; /* copy direct from output */ + do { /* minimum length is three */ + PUP(out) = PUP(from); + PUP(out) = PUP(from); + PUP(out) = PUP(from); + len -= 3; + } while (len > 2); + if (len) { + PUP(out) = PUP(from); + if (len > 1) + PUP(out) = PUP(from); + } + } + } + else if ((op & 64) == 0) { /* 2nd level distance code */ + here = dcode[here.val + (hold & ((1U << op) - 1))]; + goto dodist; + } + else { + strm->msg = (char *)"invalid distance code"; + state->mode = BAD; + break; + } + } + else if ((op & 64) == 0) { /* 2nd level length code */ + here = lcode[here.val + (hold & ((1U << op) - 1))]; + goto dolen; + } + else if (op & 32) { /* end-of-block */ + Tracevv((stderr, "inflate: end of block\n")); + state->mode = TYPE; + break; + } + else { + strm->msg = (char *)"invalid literal/length code"; + state->mode = BAD; + break; + } + } while (in < last && out < end); + + /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ + len = bits >> 3; + in -= len; + bits -= len << 3; + hold &= (1U << bits) - 1; + + /* update state and return */ + strm->next_in = in + OFF; + strm->next_out = out + OFF; + strm->avail_in = (unsigned)(in < last ? 5 + (last - in) : 5 - (in - last)); + strm->avail_out = (unsigned)(out < end ? + 257 + (end - out) : 257 - (out - end)); + state->hold = hold; + state->bits = bits; + return; +} + +/* + inflate_fast() speedups that turned out slower (on a PowerPC G3 750CXe): + - Using bit fields for code structure + - Different op definition to avoid & for extra bits (do & for table bits) + - Three separate decoding do-loops for direct, window, and wnext == 0 + - Special case for distance > 1 copies to do overlapped load and store copy + - Explicit branch predictions (based on measured branch probabilities) + - Deferring match copy and interspersed it with decoding subsequent codes + - Swapping literal/length else + - Swapping window/direct else + - Larger unrolled copy loops (three is about right) + - Moving len -= 3 statement into middle of loop + */ + +#endif /* !ASMINF */ diff --git a/3party_sloynik/zlib/inffast.h b/3party_sloynik/zlib/inffast.h new file mode 100644 index 0000000000..e5c1aa4ca8 --- /dev/null +++ b/3party_sloynik/zlib/inffast.h @@ -0,0 +1,11 @@ +/* inffast.h -- header to use inffast.c + * Copyright (C) 1995-2003, 2010 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* WARNING: this file should *not* be used by applications. It is + part of the implementation of the compression library and is + subject to change. Applications should only use zlib.h. + */ + +void ZLIB_INTERNAL inflate_fast OF((z_streamp strm, unsigned start)); diff --git a/3party_sloynik/zlib/inffixed.h b/3party_sloynik/zlib/inffixed.h new file mode 100644 index 0000000000..75ed4b5978 --- /dev/null +++ b/3party_sloynik/zlib/inffixed.h @@ -0,0 +1,94 @@ + /* inffixed.h -- table for decoding fixed codes + * Generated automatically by makefixed(). + */ + + /* WARNING: this file should *not* be used by applications. It + is part of the implementation of the compression library and + is subject to change. Applications should only use zlib.h. + */ + + static const code lenfix[512] = { + {96,7,0},{0,8,80},{0,8,16},{20,8,115},{18,7,31},{0,8,112},{0,8,48}, + {0,9,192},{16,7,10},{0,8,96},{0,8,32},{0,9,160},{0,8,0},{0,8,128}, + {0,8,64},{0,9,224},{16,7,6},{0,8,88},{0,8,24},{0,9,144},{19,7,59}, + {0,8,120},{0,8,56},{0,9,208},{17,7,17},{0,8,104},{0,8,40},{0,9,176}, + {0,8,8},{0,8,136},{0,8,72},{0,9,240},{16,7,4},{0,8,84},{0,8,20}, + {21,8,227},{19,7,43},{0,8,116},{0,8,52},{0,9,200},{17,7,13},{0,8,100}, + {0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232},{16,7,8}, + {0,8,92},{0,8,28},{0,9,152},{20,7,83},{0,8,124},{0,8,60},{0,9,216}, + {18,7,23},{0,8,108},{0,8,44},{0,9,184},{0,8,12},{0,8,140},{0,8,76}, + {0,9,248},{16,7,3},{0,8,82},{0,8,18},{21,8,163},{19,7,35},{0,8,114}, + {0,8,50},{0,9,196},{17,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2}, + {0,8,130},{0,8,66},{0,9,228},{16,7,7},{0,8,90},{0,8,26},{0,9,148}, + {20,7,67},{0,8,122},{0,8,58},{0,9,212},{18,7,19},{0,8,106},{0,8,42}, + {0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244},{16,7,5},{0,8,86}, + {0,8,22},{64,8,0},{19,7,51},{0,8,118},{0,8,54},{0,9,204},{17,7,15}, + {0,8,102},{0,8,38},{0,9,172},{0,8,6},{0,8,134},{0,8,70},{0,9,236}, + {16,7,9},{0,8,94},{0,8,30},{0,9,156},{20,7,99},{0,8,126},{0,8,62}, + {0,9,220},{18,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142}, + {0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{21,8,131},{18,7,31}, + {0,8,113},{0,8,49},{0,9,194},{16,7,10},{0,8,97},{0,8,33},{0,9,162}, + {0,8,1},{0,8,129},{0,8,65},{0,9,226},{16,7,6},{0,8,89},{0,8,25}, + {0,9,146},{19,7,59},{0,8,121},{0,8,57},{0,9,210},{17,7,17},{0,8,105}, + {0,8,41},{0,9,178},{0,8,9},{0,8,137},{0,8,73},{0,9,242},{16,7,4}, + {0,8,85},{0,8,21},{16,8,258},{19,7,43},{0,8,117},{0,8,53},{0,9,202}, + {17,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133},{0,8,69}, + {0,9,234},{16,7,8},{0,8,93},{0,8,29},{0,9,154},{20,7,83},{0,8,125}, + {0,8,61},{0,9,218},{18,7,23},{0,8,109},{0,8,45},{0,9,186},{0,8,13}, + {0,8,141},{0,8,77},{0,9,250},{16,7,3},{0,8,83},{0,8,19},{21,8,195}, + {19,7,35},{0,8,115},{0,8,51},{0,9,198},{17,7,11},{0,8,99},{0,8,35}, + {0,9,166},{0,8,3},{0,8,131},{0,8,67},{0,9,230},{16,7,7},{0,8,91}, + {0,8,27},{0,9,150},{20,7,67},{0,8,123},{0,8,59},{0,9,214},{18,7,19}, + {0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139},{0,8,75},{0,9,246}, + {16,7,5},{0,8,87},{0,8,23},{64,8,0},{19,7,51},{0,8,119},{0,8,55}, + {0,9,206},{17,7,15},{0,8,103},{0,8,39},{0,9,174},{0,8,7},{0,8,135}, + {0,8,71},{0,9,238},{16,7,9},{0,8,95},{0,8,31},{0,9,158},{20,7,99}, + {0,8,127},{0,8,63},{0,9,222},{18,7,27},{0,8,111},{0,8,47},{0,9,190}, + {0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80},{0,8,16}, + {20,8,115},{18,7,31},{0,8,112},{0,8,48},{0,9,193},{16,7,10},{0,8,96}, + {0,8,32},{0,9,161},{0,8,0},{0,8,128},{0,8,64},{0,9,225},{16,7,6}, + {0,8,88},{0,8,24},{0,9,145},{19,7,59},{0,8,120},{0,8,56},{0,9,209}, + {17,7,17},{0,8,104},{0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72}, + {0,9,241},{16,7,4},{0,8,84},{0,8,20},{21,8,227},{19,7,43},{0,8,116}, + {0,8,52},{0,9,201},{17,7,13},{0,8,100},{0,8,36},{0,9,169},{0,8,4}, + {0,8,132},{0,8,68},{0,9,233},{16,7,8},{0,8,92},{0,8,28},{0,9,153}, + {20,7,83},{0,8,124},{0,8,60},{0,9,217},{18,7,23},{0,8,108},{0,8,44}, + {0,9,185},{0,8,12},{0,8,140},{0,8,76},{0,9,249},{16,7,3},{0,8,82}, + {0,8,18},{21,8,163},{19,7,35},{0,8,114},{0,8,50},{0,9,197},{17,7,11}, + {0,8,98},{0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229}, + {16,7,7},{0,8,90},{0,8,26},{0,9,149},{20,7,67},{0,8,122},{0,8,58}, + {0,9,213},{18,7,19},{0,8,106},{0,8,42},{0,9,181},{0,8,10},{0,8,138}, + {0,8,74},{0,9,245},{16,7,5},{0,8,86},{0,8,22},{64,8,0},{19,7,51}, + {0,8,118},{0,8,54},{0,9,205},{17,7,15},{0,8,102},{0,8,38},{0,9,173}, + {0,8,6},{0,8,134},{0,8,70},{0,9,237},{16,7,9},{0,8,94},{0,8,30}, + {0,9,157},{20,7,99},{0,8,126},{0,8,62},{0,9,221},{18,7,27},{0,8,110}, + {0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253},{96,7,0}, + {0,8,81},{0,8,17},{21,8,131},{18,7,31},{0,8,113},{0,8,49},{0,9,195}, + {16,7,10},{0,8,97},{0,8,33},{0,9,163},{0,8,1},{0,8,129},{0,8,65}, + {0,9,227},{16,7,6},{0,8,89},{0,8,25},{0,9,147},{19,7,59},{0,8,121}, + {0,8,57},{0,9,211},{17,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9}, + {0,8,137},{0,8,73},{0,9,243},{16,7,4},{0,8,85},{0,8,21},{16,8,258}, + {19,7,43},{0,8,117},{0,8,53},{0,9,203},{17,7,13},{0,8,101},{0,8,37}, + {0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235},{16,7,8},{0,8,93}, + {0,8,29},{0,9,155},{20,7,83},{0,8,125},{0,8,61},{0,9,219},{18,7,23}, + {0,8,109},{0,8,45},{0,9,187},{0,8,13},{0,8,141},{0,8,77},{0,9,251}, + {16,7,3},{0,8,83},{0,8,19},{21,8,195},{19,7,35},{0,8,115},{0,8,51}, + {0,9,199},{17,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131}, + {0,8,67},{0,9,231},{16,7,7},{0,8,91},{0,8,27},{0,9,151},{20,7,67}, + {0,8,123},{0,8,59},{0,9,215},{18,7,19},{0,8,107},{0,8,43},{0,9,183}, + {0,8,11},{0,8,139},{0,8,75},{0,9,247},{16,7,5},{0,8,87},{0,8,23}, + {64,8,0},{19,7,51},{0,8,119},{0,8,55},{0,9,207},{17,7,15},{0,8,103}, + {0,8,39},{0,9,175},{0,8,7},{0,8,135},{0,8,71},{0,9,239},{16,7,9}, + {0,8,95},{0,8,31},{0,9,159},{20,7,99},{0,8,127},{0,8,63},{0,9,223}, + {18,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143},{0,8,79}, + {0,9,255} + }; + + static const code distfix[32] = { + {16,5,1},{23,5,257},{19,5,17},{27,5,4097},{17,5,5},{25,5,1025}, + {21,5,65},{29,5,16385},{16,5,3},{24,5,513},{20,5,33},{28,5,8193}, + {18,5,9},{26,5,2049},{22,5,129},{64,5,0},{16,5,2},{23,5,385}, + {19,5,25},{27,5,6145},{17,5,7},{25,5,1537},{21,5,97},{29,5,24577}, + {16,5,4},{24,5,769},{20,5,49},{28,5,12289},{18,5,13},{26,5,3073}, + {22,5,193},{64,5,0} + }; diff --git a/3party_sloynik/zlib/inflate.c b/3party_sloynik/zlib/inflate.c new file mode 100644 index 0000000000..a8431abeac --- /dev/null +++ b/3party_sloynik/zlib/inflate.c @@ -0,0 +1,1480 @@ +/* inflate.c -- zlib decompression + * Copyright (C) 1995-2010 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* + * Change history: + * + * 1.2.beta0 24 Nov 2002 + * - First version -- complete rewrite of inflate to simplify code, avoid + * creation of window when not needed, minimize use of window when it is + * needed, make inffast.c even faster, implement gzip decoding, and to + * improve code readability and style over the previous zlib inflate code + * + * 1.2.beta1 25 Nov 2002 + * - Use pointers for available input and output checking in inffast.c + * - Remove input and output counters in inffast.c + * - Change inffast.c entry and loop from avail_in >= 7 to >= 6 + * - Remove unnecessary second byte pull from length extra in inffast.c + * - Unroll direct copy to three copies per loop in inffast.c + * + * 1.2.beta2 4 Dec 2002 + * - Change external routine names to reduce potential conflicts + * - Correct filename to inffixed.h for fixed tables in inflate.c + * - Make hbuf[] unsigned char to match parameter type in inflate.c + * - Change strm->next_out[-state->offset] to *(strm->next_out - state->offset) + * to avoid negation problem on Alphas (64 bit) in inflate.c + * + * 1.2.beta3 22 Dec 2002 + * - Add comments on state->bits assertion in inffast.c + * - Add comments on op field in inftrees.h + * - Fix bug in reuse of allocated window after inflateReset() + * - Remove bit fields--back to byte structure for speed + * - Remove distance extra == 0 check in inflate_fast()--only helps for lengths + * - Change post-increments to pre-increments in inflate_fast(), PPC biased? + * - Add compile time option, POSTINC, to use post-increments instead (Intel?) + * - Make MATCH copy in inflate() much faster for when inflate_fast() not used + * - Use local copies of stream next and avail values, as well as local bit + * buffer and bit count in inflate()--for speed when inflate_fast() not used + * + * 1.2.beta4 1 Jan 2003 + * - Split ptr - 257 statements in inflate_table() to avoid compiler warnings + * - Move a comment on output buffer sizes from inffast.c to inflate.c + * - Add comments in inffast.c to introduce the inflate_fast() routine + * - Rearrange window copies in inflate_fast() for speed and simplification + * - Unroll last copy for window match in inflate_fast() + * - Use local copies of window variables in inflate_fast() for speed + * - Pull out common wnext == 0 case for speed in inflate_fast() + * - Make op and len in inflate_fast() unsigned for consistency + * - Add FAR to lcode and dcode declarations in inflate_fast() + * - Simplified bad distance check in inflate_fast() + * - Added inflateBackInit(), inflateBack(), and inflateBackEnd() in new + * source file infback.c to provide a call-back interface to inflate for + * programs like gzip and unzip -- uses window as output buffer to avoid + * window copying + * + * 1.2.beta5 1 Jan 2003 + * - Improved inflateBack() interface to allow the caller to provide initial + * input in strm. + * - Fixed stored blocks bug in inflateBack() + * + * 1.2.beta6 4 Jan 2003 + * - Added comments in inffast.c on effectiveness of POSTINC + * - Typecasting all around to reduce compiler warnings + * - Changed loops from while (1) or do {} while (1) to for (;;), again to + * make compilers happy + * - Changed type of window in inflateBackInit() to unsigned char * + * + * 1.2.beta7 27 Jan 2003 + * - Changed many types to unsigned or unsigned short to avoid warnings + * - Added inflateCopy() function + * + * 1.2.0 9 Mar 2003 + * - Changed inflateBack() interface to provide separate opaque descriptors + * for the in() and out() functions + * - Changed inflateBack() argument and in_func typedef to swap the length + * and buffer address return values for the input function + * - Check next_in and next_out for Z_NULL on entry to inflate() + * + * The history for versions after 1.2.0 are in ChangeLog in zlib distribution. + */ + +#include "zutil.h" +#include "inftrees.h" +#include "inflate.h" +#include "inffast.h" + +#ifdef MAKEFIXED +# ifndef BUILDFIXED +# define BUILDFIXED +# endif +#endif + +/* function prototypes */ +local void fixedtables OF((struct inflate_state FAR *state)); +local int updatewindow OF((z_streamp strm, unsigned out)); +#ifdef BUILDFIXED + void makefixed OF((void)); +#endif +local unsigned syncsearch OF((unsigned FAR *have, unsigned char FAR *buf, + unsigned len)); + +int ZEXPORT inflateReset(strm) +z_streamp strm; +{ + struct inflate_state FAR *state; + + if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + strm->total_in = strm->total_out = state->total = 0; + strm->msg = Z_NULL; + strm->adler = 1; /* to support ill-conceived Java test suite */ + state->mode = HEAD; + state->last = 0; + state->havedict = 0; + state->dmax = 32768U; + state->head = Z_NULL; + state->wsize = 0; + state->whave = 0; + state->wnext = 0; + state->hold = 0; + state->bits = 0; + state->lencode = state->distcode = state->next = state->codes; + state->sane = 1; + state->back = -1; + Tracev((stderr, "inflate: reset\n")); + return Z_OK; +} + +int ZEXPORT inflateReset2(strm, windowBits) +z_streamp strm; +int windowBits; +{ + int wrap; + struct inflate_state FAR *state; + + /* get the state */ + if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + + /* extract wrap request from windowBits parameter */ + if (windowBits < 0) { + wrap = 0; + windowBits = -windowBits; + } + else { + wrap = (windowBits >> 4) + 1; +#ifdef GUNZIP + if (windowBits < 48) + windowBits &= 15; +#endif + } + + /* set number of window bits, free window if different */ + if (windowBits && (windowBits < 8 || windowBits > 15)) + return Z_STREAM_ERROR; + if (state->window != Z_NULL && state->wbits != (unsigned)windowBits) { + ZFREE(strm, state->window); + state->window = Z_NULL; + } + + /* update state and reset the rest of it */ + state->wrap = wrap; + state->wbits = (unsigned)windowBits; + return inflateReset(strm); +} + +int ZEXPORT inflateInit2_(strm, windowBits, version, stream_size) +z_streamp strm; +int windowBits; +const char *version; +int stream_size; +{ + int ret; + struct inflate_state FAR *state; + + if (version == Z_NULL || version[0] != ZLIB_VERSION[0] || + stream_size != (int)(sizeof(z_stream))) + return Z_VERSION_ERROR; + if (strm == Z_NULL) return Z_STREAM_ERROR; + strm->msg = Z_NULL; /* in case we return an error */ + if (strm->zalloc == (alloc_func)0) { + strm->zalloc = zcalloc; + strm->opaque = (voidpf)0; + } + if (strm->zfree == (free_func)0) strm->zfree = zcfree; + state = (struct inflate_state FAR *) + ZALLOC(strm, 1, sizeof(struct inflate_state)); + if (state == Z_NULL) return Z_MEM_ERROR; + Tracev((stderr, "inflate: allocated\n")); + strm->state = (struct internal_state FAR *)state; + state->window = Z_NULL; + ret = inflateReset2(strm, windowBits); + if (ret != Z_OK) { + ZFREE(strm, state); + strm->state = Z_NULL; + } + return ret; +} + +int ZEXPORT inflateInit_(strm, version, stream_size) +z_streamp strm; +const char *version; +int stream_size; +{ + return inflateInit2_(strm, DEF_WBITS, version, stream_size); +} + +int ZEXPORT inflatePrime(strm, bits, value) +z_streamp strm; +int bits; +int value; +{ + struct inflate_state FAR *state; + + if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if (bits < 0) { + state->hold = 0; + state->bits = 0; + return Z_OK; + } + if (bits > 16 || state->bits + bits > 32) return Z_STREAM_ERROR; + value &= (1L << bits) - 1; + state->hold += value << state->bits; + state->bits += bits; + return Z_OK; +} + +/* + Return state with length and distance decoding tables and index sizes set to + fixed code decoding. Normally this returns fixed tables from inffixed.h. + If BUILDFIXED is defined, then instead this routine builds the tables the + first time it's called, and returns those tables the first time and + thereafter. This reduces the size of the code by about 2K bytes, in + exchange for a little execution time. However, BUILDFIXED should not be + used for threaded applications, since the rewriting of the tables and virgin + may not be thread-safe. + */ +local void fixedtables(state) +struct inflate_state FAR *state; +{ +#ifdef BUILDFIXED + static int virgin = 1; + static code *lenfix, *distfix; + static code fixed[544]; + + /* build fixed huffman tables if first call (may not be thread safe) */ + if (virgin) { + unsigned sym, bits; + static code *next; + + /* literal/length table */ + sym = 0; + while (sym < 144) state->lens[sym++] = 8; + while (sym < 256) state->lens[sym++] = 9; + while (sym < 280) state->lens[sym++] = 7; + while (sym < 288) state->lens[sym++] = 8; + next = fixed; + lenfix = next; + bits = 9; + inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work); + + /* distance table */ + sym = 0; + while (sym < 32) state->lens[sym++] = 5; + distfix = next; + bits = 5; + inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work); + + /* do this just once */ + virgin = 0; + } +#else /* !BUILDFIXED */ +# include "inffixed.h" +#endif /* BUILDFIXED */ + state->lencode = lenfix; + state->lenbits = 9; + state->distcode = distfix; + state->distbits = 5; +} + +#ifdef MAKEFIXED +#include + +/* + Write out the inffixed.h that is #include'd above. Defining MAKEFIXED also + defines BUILDFIXED, so the tables are built on the fly. makefixed() writes + those tables to stdout, which would be piped to inffixed.h. A small program + can simply call makefixed to do this: + + void makefixed(void); + + int main(void) + { + makefixed(); + return 0; + } + + Then that can be linked with zlib built with MAKEFIXED defined and run: + + a.out > inffixed.h + */ +void makefixed() +{ + unsigned low, size; + struct inflate_state state; + + fixedtables(&state); + puts(" /* inffixed.h -- table for decoding fixed codes"); + puts(" * Generated automatically by makefixed()."); + puts(" */"); + puts(""); + puts(" /* WARNING: this file should *not* be used by applications."); + puts(" It is part of the implementation of this library and is"); + puts(" subject to change. Applications should only use zlib.h."); + puts(" */"); + puts(""); + size = 1U << 9; + printf(" static const code lenfix[%u] = {", size); + low = 0; + for (;;) { + if ((low % 7) == 0) printf("\n "); + printf("{%u,%u,%d}", state.lencode[low].op, state.lencode[low].bits, + state.lencode[low].val); + if (++low == size) break; + putchar(','); + } + puts("\n };"); + size = 1U << 5; + printf("\n static const code distfix[%u] = {", size); + low = 0; + for (;;) { + if ((low % 6) == 0) printf("\n "); + printf("{%u,%u,%d}", state.distcode[low].op, state.distcode[low].bits, + state.distcode[low].val); + if (++low == size) break; + putchar(','); + } + puts("\n };"); +} +#endif /* MAKEFIXED */ + +/* + Update the window with the last wsize (normally 32K) bytes written before + returning. If window does not exist yet, create it. This is only called + when a window is already in use, or when output has been written during this + inflate call, but the end of the deflate stream has not been reached yet. + It is also called to create a window for dictionary data when a dictionary + is loaded. + + Providing output buffers larger than 32K to inflate() should provide a speed + advantage, since only the last 32K of output is copied to the sliding window + upon return from inflate(), and since all distances after the first 32K of + output will fall in the output data, making match copies simpler and faster. + The advantage may be dependent on the size of the processor's data caches. + */ +local int updatewindow(strm, out) +z_streamp strm; +unsigned out; +{ + struct inflate_state FAR *state; + unsigned copy, dist; + + state = (struct inflate_state FAR *)strm->state; + + /* if it hasn't been done already, allocate space for the window */ + if (state->window == Z_NULL) { + state->window = (unsigned char FAR *) + ZALLOC(strm, 1U << state->wbits, + sizeof(unsigned char)); + if (state->window == Z_NULL) return 1; + } + + /* if window not in use yet, initialize */ + if (state->wsize == 0) { + state->wsize = 1U << state->wbits; + state->wnext = 0; + state->whave = 0; + } + + /* copy state->wsize or less output bytes into the circular window */ + copy = out - strm->avail_out; + if (copy >= state->wsize) { + zmemcpy(state->window, strm->next_out - state->wsize, state->wsize); + state->wnext = 0; + state->whave = state->wsize; + } + else { + dist = state->wsize - state->wnext; + if (dist > copy) dist = copy; + zmemcpy(state->window + state->wnext, strm->next_out - copy, dist); + copy -= dist; + if (copy) { + zmemcpy(state->window, strm->next_out - copy, copy); + state->wnext = copy; + state->whave = state->wsize; + } + else { + state->wnext += dist; + if (state->wnext == state->wsize) state->wnext = 0; + if (state->whave < state->wsize) state->whave += dist; + } + } + return 0; +} + +/* Macros for inflate(): */ + +/* check function to use adler32() for zlib or crc32() for gzip */ +#ifdef GUNZIP +# define UPDATE(check, buf, len) \ + (state->flags ? crc32(check, buf, len) : adler32(check, buf, len)) +#else +# define UPDATE(check, buf, len) adler32(check, buf, len) +#endif + +/* check macros for header crc */ +#ifdef GUNZIP +# define CRC2(check, word) \ + do { \ + hbuf[0] = (unsigned char)(word); \ + hbuf[1] = (unsigned char)((word) >> 8); \ + check = crc32(check, hbuf, 2); \ + } while (0) + +# define CRC4(check, word) \ + do { \ + hbuf[0] = (unsigned char)(word); \ + hbuf[1] = (unsigned char)((word) >> 8); \ + hbuf[2] = (unsigned char)((word) >> 16); \ + hbuf[3] = (unsigned char)((word) >> 24); \ + check = crc32(check, hbuf, 4); \ + } while (0) +#endif + +/* Load registers with state in inflate() for speed */ +#define LOAD() \ + do { \ + put = strm->next_out; \ + left = strm->avail_out; \ + next = strm->next_in; \ + have = strm->avail_in; \ + hold = state->hold; \ + bits = state->bits; \ + } while (0) + +/* Restore state from registers in inflate() */ +#define RESTORE() \ + do { \ + strm->next_out = put; \ + strm->avail_out = left; \ + strm->next_in = next; \ + strm->avail_in = have; \ + state->hold = hold; \ + state->bits = bits; \ + } while (0) + +/* Clear the input bit accumulator */ +#define INITBITS() \ + do { \ + hold = 0; \ + bits = 0; \ + } while (0) + +/* Get a byte of input into the bit accumulator, or return from inflate() + if there is no input available. */ +#define PULLBYTE() \ + do { \ + if (have == 0) goto inf_leave; \ + have--; \ + hold += (unsigned long)(*next++) << bits; \ + bits += 8; \ + } while (0) + +/* Assure that there are at least n bits in the bit accumulator. If there is + not enough available input to do that, then return from inflate(). */ +#define NEEDBITS(n) \ + do { \ + while (bits < (unsigned)(n)) \ + PULLBYTE(); \ + } while (0) + +/* Return the low n bits of the bit accumulator (n < 16) */ +#define BITS(n) \ + ((unsigned)hold & ((1U << (n)) - 1)) + +/* Remove n bits from the bit accumulator */ +#define DROPBITS(n) \ + do { \ + hold >>= (n); \ + bits -= (unsigned)(n); \ + } while (0) + +/* Remove zero to seven bits as needed to go to a byte boundary */ +#define BYTEBITS() \ + do { \ + hold >>= bits & 7; \ + bits -= bits & 7; \ + } while (0) + +/* Reverse the bytes in a 32-bit value */ +#define REVERSE(q) \ + ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \ + (((q) & 0xff00) << 8) + (((q) & 0xff) << 24)) + +/* + inflate() uses a state machine to process as much input data and generate as + much output data as possible before returning. The state machine is + structured roughly as follows: + + for (;;) switch (state) { + ... + case STATEn: + if (not enough input data or output space to make progress) + return; + ... make progress ... + state = STATEm; + break; + ... + } + + so when inflate() is called again, the same case is attempted again, and + if the appropriate resources are provided, the machine proceeds to the + next state. The NEEDBITS() macro is usually the way the state evaluates + whether it can proceed or should return. NEEDBITS() does the return if + the requested bits are not available. The typical use of the BITS macros + is: + + NEEDBITS(n); + ... do something with BITS(n) ... + DROPBITS(n); + + where NEEDBITS(n) either returns from inflate() if there isn't enough + input left to load n bits into the accumulator, or it continues. BITS(n) + gives the low n bits in the accumulator. When done, DROPBITS(n) drops + the low n bits off the accumulator. INITBITS() clears the accumulator + and sets the number of available bits to zero. BYTEBITS() discards just + enough bits to put the accumulator on a byte boundary. After BYTEBITS() + and a NEEDBITS(8), then BITS(8) would return the next byte in the stream. + + NEEDBITS(n) uses PULLBYTE() to get an available byte of input, or to return + if there is no input available. The decoding of variable length codes uses + PULLBYTE() directly in order to pull just enough bytes to decode the next + code, and no more. + + Some states loop until they get enough input, making sure that enough + state information is maintained to continue the loop where it left off + if NEEDBITS() returns in the loop. For example, want, need, and keep + would all have to actually be part of the saved state in case NEEDBITS() + returns: + + case STATEw: + while (want < need) { + NEEDBITS(n); + keep[want++] = BITS(n); + DROPBITS(n); + } + state = STATEx; + case STATEx: + + As shown above, if the next state is also the next case, then the break + is omitted. + + A state may also return if there is not enough output space available to + complete that state. Those states are copying stored data, writing a + literal byte, and copying a matching string. + + When returning, a "goto inf_leave" is used to update the total counters, + update the check value, and determine whether any progress has been made + during that inflate() call in order to return the proper return code. + Progress is defined as a change in either strm->avail_in or strm->avail_out. + When there is a window, goto inf_leave will update the window with the last + output written. If a goto inf_leave occurs in the middle of decompression + and there is no window currently, goto inf_leave will create one and copy + output to the window for the next call of inflate(). + + In this implementation, the flush parameter of inflate() only affects the + return code (per zlib.h). inflate() always writes as much as possible to + strm->next_out, given the space available and the provided input--the effect + documented in zlib.h of Z_SYNC_FLUSH. Furthermore, inflate() always defers + the allocation of and copying into a sliding window until necessary, which + provides the effect documented in zlib.h for Z_FINISH when the entire input + stream available. So the only thing the flush parameter actually does is: + when flush is set to Z_FINISH, inflate() cannot return Z_OK. Instead it + will return Z_BUF_ERROR if it has not reached the end of the stream. + */ + +int ZEXPORT inflate(strm, flush) +z_streamp strm; +int flush; +{ + struct inflate_state FAR *state; + unsigned char FAR *next; /* next input */ + unsigned char FAR *put; /* next output */ + unsigned have, left; /* available input and output */ + unsigned long hold; /* bit buffer */ + unsigned bits; /* bits in bit buffer */ + unsigned in, out; /* save starting available input and output */ + unsigned copy; /* number of stored or match bytes to copy */ + unsigned char FAR *from; /* where to copy match bytes from */ + code here; /* current decoding table entry */ + code last; /* parent table entry */ + unsigned len; /* length to copy for repeats, bits to drop */ + int ret; /* return code */ +#ifdef GUNZIP + unsigned char hbuf[4]; /* buffer for gzip header crc calculation */ +#endif + static const unsigned short order[19] = /* permutation of code lengths */ + {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; + + if (strm == Z_NULL || strm->state == Z_NULL || strm->next_out == Z_NULL || + (strm->next_in == Z_NULL && strm->avail_in != 0)) + return Z_STREAM_ERROR; + + state = (struct inflate_state FAR *)strm->state; + if (state->mode == TYPE) state->mode = TYPEDO; /* skip check */ + LOAD(); + in = have; + out = left; + ret = Z_OK; + for (;;) + switch (state->mode) { + case HEAD: + if (state->wrap == 0) { + state->mode = TYPEDO; + break; + } + NEEDBITS(16); +#ifdef GUNZIP + if ((state->wrap & 2) && hold == 0x8b1f) { /* gzip header */ + state->check = crc32(0L, Z_NULL, 0); + CRC2(state->check, hold); + INITBITS(); + state->mode = FLAGS; + break; + } + state->flags = 0; /* expect zlib header */ + if (state->head != Z_NULL) + state->head->done = -1; + if (!(state->wrap & 1) || /* check if zlib header allowed */ +#else + if ( +#endif + ((BITS(8) << 8) + (hold >> 8)) % 31) { + strm->msg = (char *)"incorrect header check"; + state->mode = BAD; + break; + } + if (BITS(4) != Z_DEFLATED) { + strm->msg = (char *)"unknown compression method"; + state->mode = BAD; + break; + } + DROPBITS(4); + len = BITS(4) + 8; + if (state->wbits == 0) + state->wbits = len; + else if (len > state->wbits) { + strm->msg = (char *)"invalid window size"; + state->mode = BAD; + break; + } + state->dmax = 1U << len; + Tracev((stderr, "inflate: zlib header ok\n")); + strm->adler = state->check = adler32(0L, Z_NULL, 0); + state->mode = hold & 0x200 ? DICTID : TYPE; + INITBITS(); + break; +#ifdef GUNZIP + case FLAGS: + NEEDBITS(16); + state->flags = (int)(hold); + if ((state->flags & 0xff) != Z_DEFLATED) { + strm->msg = (char *)"unknown compression method"; + state->mode = BAD; + break; + } + if (state->flags & 0xe000) { + strm->msg = (char *)"unknown header flags set"; + state->mode = BAD; + break; + } + if (state->head != Z_NULL) + state->head->text = (int)((hold >> 8) & 1); + if (state->flags & 0x0200) CRC2(state->check, hold); + INITBITS(); + state->mode = TIME; + case TIME: + NEEDBITS(32); + if (state->head != Z_NULL) + state->head->time = hold; + if (state->flags & 0x0200) CRC4(state->check, hold); + INITBITS(); + state->mode = OS; + case OS: + NEEDBITS(16); + if (state->head != Z_NULL) { + state->head->xflags = (int)(hold & 0xff); + state->head->os = (int)(hold >> 8); + } + if (state->flags & 0x0200) CRC2(state->check, hold); + INITBITS(); + state->mode = EXLEN; + case EXLEN: + if (state->flags & 0x0400) { + NEEDBITS(16); + state->length = (unsigned)(hold); + if (state->head != Z_NULL) + state->head->extra_len = (unsigned)hold; + if (state->flags & 0x0200) CRC2(state->check, hold); + INITBITS(); + } + else if (state->head != Z_NULL) + state->head->extra = Z_NULL; + state->mode = EXTRA; + case EXTRA: + if (state->flags & 0x0400) { + copy = state->length; + if (copy > have) copy = have; + if (copy) { + if (state->head != Z_NULL && + state->head->extra != Z_NULL) { + len = state->head->extra_len - state->length; + zmemcpy(state->head->extra + len, next, + len + copy > state->head->extra_max ? + state->head->extra_max - len : copy); + } + if (state->flags & 0x0200) + state->check = crc32(state->check, next, copy); + have -= copy; + next += copy; + state->length -= copy; + } + if (state->length) goto inf_leave; + } + state->length = 0; + state->mode = NAME; + case NAME: + if (state->flags & 0x0800) { + if (have == 0) goto inf_leave; + copy = 0; + do { + len = (unsigned)(next[copy++]); + if (state->head != Z_NULL && + state->head->name != Z_NULL && + state->length < state->head->name_max) + state->head->name[state->length++] = len; + } while (len && copy < have); + if (state->flags & 0x0200) + state->check = crc32(state->check, next, copy); + have -= copy; + next += copy; + if (len) goto inf_leave; + } + else if (state->head != Z_NULL) + state->head->name = Z_NULL; + state->length = 0; + state->mode = COMMENT; + case COMMENT: + if (state->flags & 0x1000) { + if (have == 0) goto inf_leave; + copy = 0; + do { + len = (unsigned)(next[copy++]); + if (state->head != Z_NULL && + state->head->comment != Z_NULL && + state->length < state->head->comm_max) + state->head->comment[state->length++] = len; + } while (len && copy < have); + if (state->flags & 0x0200) + state->check = crc32(state->check, next, copy); + have -= copy; + next += copy; + if (len) goto inf_leave; + } + else if (state->head != Z_NULL) + state->head->comment = Z_NULL; + state->mode = HCRC; + case HCRC: + if (state->flags & 0x0200) { + NEEDBITS(16); + if (hold != (state->check & 0xffff)) { + strm->msg = (char *)"header crc mismatch"; + state->mode = BAD; + break; + } + INITBITS(); + } + if (state->head != Z_NULL) { + state->head->hcrc = (int)((state->flags >> 9) & 1); + state->head->done = 1; + } + strm->adler = state->check = crc32(0L, Z_NULL, 0); + state->mode = TYPE; + break; +#endif + case DICTID: + NEEDBITS(32); + strm->adler = state->check = REVERSE(hold); + INITBITS(); + state->mode = DICT; + case DICT: + if (state->havedict == 0) { + RESTORE(); + return Z_NEED_DICT; + } + strm->adler = state->check = adler32(0L, Z_NULL, 0); + state->mode = TYPE; + case TYPE: + if (flush == Z_BLOCK || flush == Z_TREES) goto inf_leave; + case TYPEDO: + if (state->last) { + BYTEBITS(); + state->mode = CHECK; + break; + } + NEEDBITS(3); + state->last = BITS(1); + DROPBITS(1); + switch (BITS(2)) { + case 0: /* stored block */ + Tracev((stderr, "inflate: stored block%s\n", + state->last ? " (last)" : "")); + state->mode = STORED; + break; + case 1: /* fixed block */ + fixedtables(state); + Tracev((stderr, "inflate: fixed codes block%s\n", + state->last ? " (last)" : "")); + state->mode = LEN_; /* decode codes */ + if (flush == Z_TREES) { + DROPBITS(2); + goto inf_leave; + } + break; + case 2: /* dynamic block */ + Tracev((stderr, "inflate: dynamic codes block%s\n", + state->last ? " (last)" : "")); + state->mode = TABLE; + break; + case 3: + strm->msg = (char *)"invalid block type"; + state->mode = BAD; + } + DROPBITS(2); + break; + case STORED: + BYTEBITS(); /* go to byte boundary */ + NEEDBITS(32); + if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { + strm->msg = (char *)"invalid stored block lengths"; + state->mode = BAD; + break; + } + state->length = (unsigned)hold & 0xffff; + Tracev((stderr, "inflate: stored length %u\n", + state->length)); + INITBITS(); + state->mode = COPY_; + if (flush == Z_TREES) goto inf_leave; + case COPY_: + state->mode = COPY; + case COPY: + copy = state->length; + if (copy) { + if (copy > have) copy = have; + if (copy > left) copy = left; + if (copy == 0) goto inf_leave; + zmemcpy(put, next, copy); + have -= copy; + next += copy; + left -= copy; + put += copy; + state->length -= copy; + break; + } + Tracev((stderr, "inflate: stored end\n")); + state->mode = TYPE; + break; + case TABLE: + NEEDBITS(14); + state->nlen = BITS(5) + 257; + DROPBITS(5); + state->ndist = BITS(5) + 1; + DROPBITS(5); + state->ncode = BITS(4) + 4; + DROPBITS(4); +#ifndef PKZIP_BUG_WORKAROUND + if (state->nlen > 286 || state->ndist > 30) { + strm->msg = (char *)"too many length or distance symbols"; + state->mode = BAD; + break; + } +#endif + Tracev((stderr, "inflate: table sizes ok\n")); + state->have = 0; + state->mode = LENLENS; + case LENLENS: + while (state->have < state->ncode) { + NEEDBITS(3); + state->lens[order[state->have++]] = (unsigned short)BITS(3); + DROPBITS(3); + } + while (state->have < 19) + state->lens[order[state->have++]] = 0; + state->next = state->codes; + state->lencode = (code const FAR *)(state->next); + state->lenbits = 7; + ret = inflate_table(CODES, state->lens, 19, &(state->next), + &(state->lenbits), state->work); + if (ret) { + strm->msg = (char *)"invalid code lengths set"; + state->mode = BAD; + break; + } + Tracev((stderr, "inflate: code lengths ok\n")); + state->have = 0; + state->mode = CODELENS; + case CODELENS: + while (state->have < state->nlen + state->ndist) { + for (;;) { + here = state->lencode[BITS(state->lenbits)]; + if ((unsigned)(here.bits) <= bits) break; + PULLBYTE(); + } + if (here.val < 16) { + NEEDBITS(here.bits); + DROPBITS(here.bits); + state->lens[state->have++] = here.val; + } + else { + if (here.val == 16) { + NEEDBITS(here.bits + 2); + DROPBITS(here.bits); + if (state->have == 0) { + strm->msg = (char *)"invalid bit length repeat"; + state->mode = BAD; + break; + } + len = state->lens[state->have - 1]; + copy = 3 + BITS(2); + DROPBITS(2); + } + else if (here.val == 17) { + NEEDBITS(here.bits + 3); + DROPBITS(here.bits); + len = 0; + copy = 3 + BITS(3); + DROPBITS(3); + } + else { + NEEDBITS(here.bits + 7); + DROPBITS(here.bits); + len = 0; + copy = 11 + BITS(7); + DROPBITS(7); + } + if (state->have + copy > state->nlen + state->ndist) { + strm->msg = (char *)"invalid bit length repeat"; + state->mode = BAD; + break; + } + while (copy--) + state->lens[state->have++] = (unsigned short)len; + } + } + + /* handle error breaks in while */ + if (state->mode == BAD) break; + + /* check for end-of-block code (better have one) */ + if (state->lens[256] == 0) { + strm->msg = (char *)"invalid code -- missing end-of-block"; + state->mode = BAD; + break; + } + + /* build code tables -- note: do not change the lenbits or distbits + values here (9 and 6) without reading the comments in inftrees.h + concerning the ENOUGH constants, which depend on those values */ + state->next = state->codes; + state->lencode = (code const FAR *)(state->next); + state->lenbits = 9; + ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), + &(state->lenbits), state->work); + if (ret) { + strm->msg = (char *)"invalid literal/lengths set"; + state->mode = BAD; + break; + } + state->distcode = (code const FAR *)(state->next); + state->distbits = 6; + ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, + &(state->next), &(state->distbits), state->work); + if (ret) { + strm->msg = (char *)"invalid distances set"; + state->mode = BAD; + break; + } + Tracev((stderr, "inflate: codes ok\n")); + state->mode = LEN_; + if (flush == Z_TREES) goto inf_leave; + case LEN_: + state->mode = LEN; + case LEN: + if (have >= 6 && left >= 258) { + RESTORE(); + inflate_fast(strm, out); + LOAD(); + if (state->mode == TYPE) + state->back = -1; + break; + } + state->back = 0; + for (;;) { + here = state->lencode[BITS(state->lenbits)]; + if ((unsigned)(here.bits) <= bits) break; + PULLBYTE(); + } + if (here.op && (here.op & 0xf0) == 0) { + last = here; + for (;;) { + here = state->lencode[last.val + + (BITS(last.bits + last.op) >> last.bits)]; + if ((unsigned)(last.bits + here.bits) <= bits) break; + PULLBYTE(); + } + DROPBITS(last.bits); + state->back += last.bits; + } + DROPBITS(here.bits); + state->back += here.bits; + state->length = (unsigned)here.val; + if ((int)(here.op) == 0) { + Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? + "inflate: literal '%c'\n" : + "inflate: literal 0x%02x\n", here.val)); + state->mode = LIT; + break; + } + if (here.op & 32) { + Tracevv((stderr, "inflate: end of block\n")); + state->back = -1; + state->mode = TYPE; + break; + } + if (here.op & 64) { + strm->msg = (char *)"invalid literal/length code"; + state->mode = BAD; + break; + } + state->extra = (unsigned)(here.op) & 15; + state->mode = LENEXT; + case LENEXT: + if (state->extra) { + NEEDBITS(state->extra); + state->length += BITS(state->extra); + DROPBITS(state->extra); + state->back += state->extra; + } + Tracevv((stderr, "inflate: length %u\n", state->length)); + state->was = state->length; + state->mode = DIST; + case DIST: + for (;;) { + here = state->distcode[BITS(state->distbits)]; + if ((unsigned)(here.bits) <= bits) break; + PULLBYTE(); + } + if ((here.op & 0xf0) == 0) { + last = here; + for (;;) { + here = state->distcode[last.val + + (BITS(last.bits + last.op) >> last.bits)]; + if ((unsigned)(last.bits + here.bits) <= bits) break; + PULLBYTE(); + } + DROPBITS(last.bits); + state->back += last.bits; + } + DROPBITS(here.bits); + state->back += here.bits; + if (here.op & 64) { + strm->msg = (char *)"invalid distance code"; + state->mode = BAD; + break; + } + state->offset = (unsigned)here.val; + state->extra = (unsigned)(here.op) & 15; + state->mode = DISTEXT; + case DISTEXT: + if (state->extra) { + NEEDBITS(state->extra); + state->offset += BITS(state->extra); + DROPBITS(state->extra); + state->back += state->extra; + } +#ifdef INFLATE_STRICT + if (state->offset > state->dmax) { + strm->msg = (char *)"invalid distance too far back"; + state->mode = BAD; + break; + } +#endif + Tracevv((stderr, "inflate: distance %u\n", state->offset)); + state->mode = MATCH; + case MATCH: + if (left == 0) goto inf_leave; + copy = out - left; + if (state->offset > copy) { /* copy from window */ + copy = state->offset - copy; + if (copy > state->whave) { + if (state->sane) { + strm->msg = (char *)"invalid distance too far back"; + state->mode = BAD; + break; + } +#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR + Trace((stderr, "inflate.c too far\n")); + copy -= state->whave; + if (copy > state->length) copy = state->length; + if (copy > left) copy = left; + left -= copy; + state->length -= copy; + do { + *put++ = 0; + } while (--copy); + if (state->length == 0) state->mode = LEN; + break; +#endif + } + if (copy > state->wnext) { + copy -= state->wnext; + from = state->window + (state->wsize - copy); + } + else + from = state->window + (state->wnext - copy); + if (copy > state->length) copy = state->length; + } + else { /* copy from output */ + from = put - state->offset; + copy = state->length; + } + if (copy > left) copy = left; + left -= copy; + state->length -= copy; + do { + *put++ = *from++; + } while (--copy); + if (state->length == 0) state->mode = LEN; + break; + case LIT: + if (left == 0) goto inf_leave; + *put++ = (unsigned char)(state->length); + left--; + state->mode = LEN; + break; + case CHECK: + if (state->wrap) { + NEEDBITS(32); + out -= left; + strm->total_out += out; + state->total += out; + if (out) + strm->adler = state->check = + UPDATE(state->check, put - out, out); + out = left; + if (( +#ifdef GUNZIP + state->flags ? hold : +#endif + REVERSE(hold)) != state->check) { + strm->msg = (char *)"incorrect data check"; + state->mode = BAD; + break; + } + INITBITS(); + Tracev((stderr, "inflate: check matches trailer\n")); + } +#ifdef GUNZIP + state->mode = LENGTH; + case LENGTH: + if (state->wrap && state->flags) { + NEEDBITS(32); + if (hold != (state->total & 0xffffffffUL)) { + strm->msg = (char *)"incorrect length check"; + state->mode = BAD; + break; + } + INITBITS(); + Tracev((stderr, "inflate: length matches trailer\n")); + } +#endif + state->mode = DONE; + case DONE: + ret = Z_STREAM_END; + goto inf_leave; + case BAD: + ret = Z_DATA_ERROR; + goto inf_leave; + case MEM: + return Z_MEM_ERROR; + case SYNC: + default: + return Z_STREAM_ERROR; + } + + /* + Return from inflate(), updating the total counts and the check value. + If there was no progress during the inflate() call, return a buffer + error. Call updatewindow() to create and/or update the window state. + Note: a memory error from inflate() is non-recoverable. + */ + inf_leave: + RESTORE(); + if (state->wsize || (state->mode < CHECK && out != strm->avail_out)) + if (updatewindow(strm, out)) { + state->mode = MEM; + return Z_MEM_ERROR; + } + in -= strm->avail_in; + out -= strm->avail_out; + strm->total_in += in; + strm->total_out += out; + state->total += out; + if (state->wrap && out) + strm->adler = state->check = + UPDATE(state->check, strm->next_out - out, out); + strm->data_type = state->bits + (state->last ? 64 : 0) + + (state->mode == TYPE ? 128 : 0) + + (state->mode == LEN_ || state->mode == COPY_ ? 256 : 0); + if (((in == 0 && out == 0) || flush == Z_FINISH) && ret == Z_OK) + ret = Z_BUF_ERROR; + return ret; +} + +int ZEXPORT inflateEnd(strm) +z_streamp strm; +{ + struct inflate_state FAR *state; + if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0) + return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if (state->window != Z_NULL) ZFREE(strm, state->window); + ZFREE(strm, strm->state); + strm->state = Z_NULL; + Tracev((stderr, "inflate: end\n")); + return Z_OK; +} + +int ZEXPORT inflateSetDictionary(strm, dictionary, dictLength) +z_streamp strm; +const Bytef *dictionary; +uInt dictLength; +{ + struct inflate_state FAR *state; + unsigned long id; + + /* check state */ + if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if (state->wrap != 0 && state->mode != DICT) + return Z_STREAM_ERROR; + + /* check for correct dictionary id */ + if (state->mode == DICT) { + id = adler32(0L, Z_NULL, 0); + id = adler32(id, dictionary, dictLength); + if (id != state->check) + return Z_DATA_ERROR; + } + + /* copy dictionary to window */ + if (updatewindow(strm, strm->avail_out)) { + state->mode = MEM; + return Z_MEM_ERROR; + } + if (dictLength > state->wsize) { + zmemcpy(state->window, dictionary + dictLength - state->wsize, + state->wsize); + state->whave = state->wsize; + } + else { + zmemcpy(state->window + state->wsize - dictLength, dictionary, + dictLength); + state->whave = dictLength; + } + state->havedict = 1; + Tracev((stderr, "inflate: dictionary set\n")); + return Z_OK; +} + +int ZEXPORT inflateGetHeader(strm, head) +z_streamp strm; +gz_headerp head; +{ + struct inflate_state FAR *state; + + /* check state */ + if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if ((state->wrap & 2) == 0) return Z_STREAM_ERROR; + + /* save header structure */ + state->head = head; + head->done = 0; + return Z_OK; +} + +/* + Search buf[0..len-1] for the pattern: 0, 0, 0xff, 0xff. Return when found + or when out of input. When called, *have is the number of pattern bytes + found in order so far, in 0..3. On return *have is updated to the new + state. If on return *have equals four, then the pattern was found and the + return value is how many bytes were read including the last byte of the + pattern. If *have is less than four, then the pattern has not been found + yet and the return value is len. In the latter case, syncsearch() can be + called again with more data and the *have state. *have is initialized to + zero for the first call. + */ +local unsigned syncsearch(have, buf, len) +unsigned FAR *have; +unsigned char FAR *buf; +unsigned len; +{ + unsigned got; + unsigned next; + + got = *have; + next = 0; + while (next < len && got < 4) { + if ((int)(buf[next]) == (got < 2 ? 0 : 0xff)) + got++; + else if (buf[next]) + got = 0; + else + got = 4 - got; + next++; + } + *have = got; + return next; +} + +int ZEXPORT inflateSync(strm) +z_streamp strm; +{ + unsigned len; /* number of bytes to look at or looked at */ + unsigned long in, out; /* temporary to save total_in and total_out */ + unsigned char buf[4]; /* to restore bit buffer to byte string */ + struct inflate_state FAR *state; + + /* check parameters */ + if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if (strm->avail_in == 0 && state->bits < 8) return Z_BUF_ERROR; + + /* if first time, start search in bit buffer */ + if (state->mode != SYNC) { + state->mode = SYNC; + state->hold <<= state->bits & 7; + state->bits -= state->bits & 7; + len = 0; + while (state->bits >= 8) { + buf[len++] = (unsigned char)(state->hold); + state->hold >>= 8; + state->bits -= 8; + } + state->have = 0; + syncsearch(&(state->have), buf, len); + } + + /* search available input */ + len = syncsearch(&(state->have), strm->next_in, strm->avail_in); + strm->avail_in -= len; + strm->next_in += len; + strm->total_in += len; + + /* return no joy or set up to restart inflate() on a new block */ + if (state->have != 4) return Z_DATA_ERROR; + in = strm->total_in; out = strm->total_out; + inflateReset(strm); + strm->total_in = in; strm->total_out = out; + state->mode = TYPE; + return Z_OK; +} + +/* + Returns true if inflate is currently at the end of a block generated by + Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP + implementation to provide an additional safety check. PPP uses + Z_SYNC_FLUSH but removes the length bytes of the resulting empty stored + block. When decompressing, PPP checks that at the end of input packet, + inflate is waiting for these length bytes. + */ +int ZEXPORT inflateSyncPoint(strm) +z_streamp strm; +{ + struct inflate_state FAR *state; + + if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + return state->mode == STORED && state->bits == 0; +} + +int ZEXPORT inflateCopy(dest, source) +z_streamp dest; +z_streamp source; +{ + struct inflate_state FAR *state; + struct inflate_state FAR *copy; + unsigned char FAR *window; + unsigned wsize; + + /* check input */ + if (dest == Z_NULL || source == Z_NULL || source->state == Z_NULL || + source->zalloc == (alloc_func)0 || source->zfree == (free_func)0) + return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)source->state; + + /* allocate space */ + copy = (struct inflate_state FAR *) + ZALLOC(source, 1, sizeof(struct inflate_state)); + if (copy == Z_NULL) return Z_MEM_ERROR; + window = Z_NULL; + if (state->window != Z_NULL) { + window = (unsigned char FAR *) + ZALLOC(source, 1U << state->wbits, sizeof(unsigned char)); + if (window == Z_NULL) { + ZFREE(source, copy); + return Z_MEM_ERROR; + } + } + + /* copy state */ + zmemcpy(dest, source, sizeof(z_stream)); + zmemcpy(copy, state, sizeof(struct inflate_state)); + if (state->lencode >= state->codes && + state->lencode <= state->codes + ENOUGH - 1) { + copy->lencode = copy->codes + (state->lencode - state->codes); + copy->distcode = copy->codes + (state->distcode - state->codes); + } + copy->next = copy->codes + (state->next - state->codes); + if (window != Z_NULL) { + wsize = 1U << state->wbits; + zmemcpy(window, state->window, wsize); + } + copy->window = window; + dest->state = (struct internal_state FAR *)copy; + return Z_OK; +} + +int ZEXPORT inflateUndermine(strm, subvert) +z_streamp strm; +int subvert; +{ + struct inflate_state FAR *state; + + if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + state->sane = !subvert; +#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR + return Z_OK; +#else + state->sane = 1; + return Z_DATA_ERROR; +#endif +} + +long ZEXPORT inflateMark(strm) +z_streamp strm; +{ + struct inflate_state FAR *state; + + if (strm == Z_NULL || strm->state == Z_NULL) return -1L << 16; + state = (struct inflate_state FAR *)strm->state; + return ((long)(state->back) << 16) + + (state->mode == COPY ? state->length : + (state->mode == MATCH ? state->was - state->length : 0)); +} diff --git a/3party_sloynik/zlib/inflate.h b/3party_sloynik/zlib/inflate.h new file mode 100644 index 0000000000..95f4986d40 --- /dev/null +++ b/3party_sloynik/zlib/inflate.h @@ -0,0 +1,122 @@ +/* inflate.h -- internal inflate state definition + * Copyright (C) 1995-2009 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* WARNING: this file should *not* be used by applications. It is + part of the implementation of the compression library and is + subject to change. Applications should only use zlib.h. + */ + +/* define NO_GZIP when compiling if you want to disable gzip header and + trailer decoding by inflate(). NO_GZIP would be used to avoid linking in + the crc code when it is not needed. For shared libraries, gzip decoding + should be left enabled. */ +#ifndef NO_GZIP +# define GUNZIP +#endif + +/* Possible inflate modes between inflate() calls */ +typedef enum { + HEAD, /* i: waiting for magic header */ + FLAGS, /* i: waiting for method and flags (gzip) */ + TIME, /* i: waiting for modification time (gzip) */ + OS, /* i: waiting for extra flags and operating system (gzip) */ + EXLEN, /* i: waiting for extra length (gzip) */ + EXTRA, /* i: waiting for extra bytes (gzip) */ + NAME, /* i: waiting for end of file name (gzip) */ + COMMENT, /* i: waiting for end of comment (gzip) */ + HCRC, /* i: waiting for header crc (gzip) */ + DICTID, /* i: waiting for dictionary check value */ + DICT, /* waiting for inflateSetDictionary() call */ + TYPE, /* i: waiting for type bits, including last-flag bit */ + TYPEDO, /* i: same, but skip check to exit inflate on new block */ + STORED, /* i: waiting for stored size (length and complement) */ + COPY_, /* i/o: same as COPY below, but only first time in */ + COPY, /* i/o: waiting for input or output to copy stored block */ + TABLE, /* i: waiting for dynamic block table lengths */ + LENLENS, /* i: waiting for code length code lengths */ + CODELENS, /* i: waiting for length/lit and distance code lengths */ + LEN_, /* i: same as LEN below, but only first time in */ + LEN, /* i: waiting for length/lit/eob code */ + LENEXT, /* i: waiting for length extra bits */ + DIST, /* i: waiting for distance code */ + DISTEXT, /* i: waiting for distance extra bits */ + MATCH, /* o: waiting for output space to copy string */ + LIT, /* o: waiting for output space to write literal */ + CHECK, /* i: waiting for 32-bit check value */ + LENGTH, /* i: waiting for 32-bit length (gzip) */ + DONE, /* finished check, done -- remain here until reset */ + BAD, /* got a data error -- remain here until reset */ + MEM, /* got an inflate() memory error -- remain here until reset */ + SYNC /* looking for synchronization bytes to restart inflate() */ +} inflate_mode; + +/* + State transitions between above modes - + + (most modes can go to BAD or MEM on error -- not shown for clarity) + + Process header: + HEAD -> (gzip) or (zlib) or (raw) + (gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME -> COMMENT -> + HCRC -> TYPE + (zlib) -> DICTID or TYPE + DICTID -> DICT -> TYPE + (raw) -> TYPEDO + Read deflate blocks: + TYPE -> TYPEDO -> STORED or TABLE or LEN_ or CHECK + STORED -> COPY_ -> COPY -> TYPE + TABLE -> LENLENS -> CODELENS -> LEN_ + LEN_ -> LEN + Read deflate codes in fixed or dynamic block: + LEN -> LENEXT or LIT or TYPE + LENEXT -> DIST -> DISTEXT -> MATCH -> LEN + LIT -> LEN + Process trailer: + CHECK -> LENGTH -> DONE + */ + +/* state maintained between inflate() calls. Approximately 10K bytes. */ +struct inflate_state { + inflate_mode mode; /* current inflate mode */ + int last; /* true if processing last block */ + int wrap; /* bit 0 true for zlib, bit 1 true for gzip */ + int havedict; /* true if dictionary provided */ + int flags; /* gzip header method and flags (0 if zlib) */ + unsigned dmax; /* zlib header max distance (INFLATE_STRICT) */ + unsigned long check; /* protected copy of check value */ + unsigned long total; /* protected copy of output count */ + gz_headerp head; /* where to save gzip header information */ + /* sliding window */ + unsigned wbits; /* log base 2 of requested window size */ + unsigned wsize; /* window size or zero if not using window */ + unsigned whave; /* valid bytes in the window */ + unsigned wnext; /* window write index */ + unsigned char FAR *window; /* allocated sliding window, if needed */ + /* bit accumulator */ + unsigned long hold; /* input bit accumulator */ + unsigned bits; /* number of bits in "in" */ + /* for string and stored block copying */ + unsigned length; /* literal or length of data to copy */ + unsigned offset; /* distance back to copy string from */ + /* for table and code decoding */ + unsigned extra; /* extra bits needed */ + /* fixed and dynamic code tables */ + code const FAR *lencode; /* starting table for length/literal codes */ + code const FAR *distcode; /* starting table for distance codes */ + unsigned lenbits; /* index bits for lencode */ + unsigned distbits; /* index bits for distcode */ + /* dynamic table building */ + unsigned ncode; /* number of code length code lengths */ + unsigned nlen; /* number of length code lengths */ + unsigned ndist; /* number of distance code lengths */ + unsigned have; /* number of code lengths in lens[] */ + code FAR *next; /* next available space in codes[] */ + unsigned short lens[320]; /* temporary storage for code lengths */ + unsigned short work[288]; /* work area for code table building */ + code codes[ENOUGH]; /* space for code tables */ + int sane; /* if false, allow invalid distance too far */ + int back; /* bits back of last unprocessed length/lit */ + unsigned was; /* initial length of match */ +}; diff --git a/3party_sloynik/zlib/inftrees.c b/3party_sloynik/zlib/inftrees.c new file mode 100644 index 0000000000..11e9c52acc --- /dev/null +++ b/3party_sloynik/zlib/inftrees.c @@ -0,0 +1,330 @@ +/* inftrees.c -- generate Huffman trees for efficient decoding + * Copyright (C) 1995-2010 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#include "zutil.h" +#include "inftrees.h" + +#define MAXBITS 15 + +const char inflate_copyright[] = + " inflate 1.2.5 Copyright 1995-2010 Mark Adler "; +/* + If you use the zlib library in a product, an acknowledgment is welcome + in the documentation of your product. If for some reason you cannot + include such an acknowledgment, I would appreciate that you keep this + copyright string in the executable of your product. + */ + +/* + Build a set of tables to decode the provided canonical Huffman code. + The code lengths are lens[0..codes-1]. The result starts at *table, + whose indices are 0..2^bits-1. work is a writable array of at least + lens shorts, which is used as a work area. type is the type of code + to be generated, CODES, LENS, or DISTS. On return, zero is success, + -1 is an invalid code, and +1 means that ENOUGH isn't enough. table + on return points to the next available entry's address. bits is the + requested root table index bits, and on return it is the actual root + table index bits. It will differ if the request is greater than the + longest code or if it is less than the shortest code. + */ +int ZLIB_INTERNAL inflate_table(type, lens, codes, table, bits, work) +codetype type; +unsigned short FAR *lens; +unsigned codes; +code FAR * FAR *table; +unsigned FAR *bits; +unsigned short FAR *work; +{ + unsigned len; /* a code's length in bits */ + unsigned sym; /* index of code symbols */ + unsigned min, max; /* minimum and maximum code lengths */ + unsigned root; /* number of index bits for root table */ + unsigned curr; /* number of index bits for current table */ + unsigned drop; /* code bits to drop for sub-table */ + int left; /* number of prefix codes available */ + unsigned used; /* code entries in table used */ + unsigned huff; /* Huffman code */ + unsigned incr; /* for incrementing code, index */ + unsigned fill; /* index for replicating entries */ + unsigned low; /* low bits for current root entry */ + unsigned mask; /* mask for low root bits */ + code here; /* table entry for duplication */ + code FAR *next; /* next available space in table */ + const unsigned short FAR *base; /* base value table to use */ + const unsigned short FAR *extra; /* extra bits table to use */ + int end; /* use base and extra for symbol > end */ + unsigned short count[MAXBITS+1]; /* number of codes of each length */ + unsigned short offs[MAXBITS+1]; /* offsets in table for each length */ + static const unsigned short lbase[31] = { /* Length codes 257..285 base */ + 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, + 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; + static const unsigned short lext[31] = { /* Length codes 257..285 extra */ + 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, + 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 73, 195}; + static const unsigned short dbase[32] = { /* Distance codes 0..29 base */ + 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, + 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, + 8193, 12289, 16385, 24577, 0, 0}; + static const unsigned short dext[32] = { /* Distance codes 0..29 extra */ + 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, + 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, + 28, 28, 29, 29, 64, 64}; + + /* + Process a set of code lengths to create a canonical Huffman code. The + code lengths are lens[0..codes-1]. Each length corresponds to the + symbols 0..codes-1. The Huffman code is generated by first sorting the + symbols by length from short to long, and retaining the symbol order + for codes with equal lengths. Then the code starts with all zero bits + for the first code of the shortest length, and the codes are integer + increments for the same length, and zeros are appended as the length + increases. For the deflate format, these bits are stored backwards + from their more natural integer increment ordering, and so when the + decoding tables are built in the large loop below, the integer codes + are incremented backwards. + + This routine assumes, but does not check, that all of the entries in + lens[] are in the range 0..MAXBITS. The caller must assure this. + 1..MAXBITS is interpreted as that code length. zero means that that + symbol does not occur in this code. + + The codes are sorted by computing a count of codes for each length, + creating from that a table of starting indices for each length in the + sorted table, and then entering the symbols in order in the sorted + table. The sorted table is work[], with that space being provided by + the caller. + + The length counts are used for other purposes as well, i.e. finding + the minimum and maximum length codes, determining if there are any + codes at all, checking for a valid set of lengths, and looking ahead + at length counts to determine sub-table sizes when building the + decoding tables. + */ + + /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */ + for (len = 0; len <= MAXBITS; len++) + count[len] = 0; + for (sym = 0; sym < codes; sym++) + count[lens[sym]]++; + + /* bound code lengths, force root to be within code lengths */ + root = *bits; + for (max = MAXBITS; max >= 1; max--) + if (count[max] != 0) break; + if (root > max) root = max; + if (max == 0) { /* no symbols to code at all */ + here.op = (unsigned char)64; /* invalid code marker */ + here.bits = (unsigned char)1; + here.val = (unsigned short)0; + *(*table)++ = here; /* make a table to force an error */ + *(*table)++ = here; + *bits = 1; + return 0; /* no symbols, but wait for decoding to report error */ + } + for (min = 1; min < max; min++) + if (count[min] != 0) break; + if (root < min) root = min; + + /* check for an over-subscribed or incomplete set of lengths */ + left = 1; + for (len = 1; len <= MAXBITS; len++) { + left <<= 1; + left -= count[len]; + if (left < 0) return -1; /* over-subscribed */ + } + if (left > 0 && (type == CODES || max != 1)) + return -1; /* incomplete set */ + + /* generate offsets into symbol table for each length for sorting */ + offs[1] = 0; + for (len = 1; len < MAXBITS; len++) + offs[len + 1] = offs[len] + count[len]; + + /* sort symbols by length, by symbol order within each length */ + for (sym = 0; sym < codes; sym++) + if (lens[sym] != 0) work[offs[lens[sym]]++] = (unsigned short)sym; + + /* + Create and fill in decoding tables. In this loop, the table being + filled is at next and has curr index bits. The code being used is huff + with length len. That code is converted to an index by dropping drop + bits off of the bottom. For codes where len is less than drop + curr, + those top drop + curr - len bits are incremented through all values to + fill the table with replicated entries. + + root is the number of index bits for the root table. When len exceeds + root, sub-tables are created pointed to by the root entry with an index + of the low root bits of huff. This is saved in low to check for when a + new sub-table should be started. drop is zero when the root table is + being filled, and drop is root when sub-tables are being filled. + + When a new sub-table is needed, it is necessary to look ahead in the + code lengths to determine what size sub-table is needed. The length + counts are used for this, and so count[] is decremented as codes are + entered in the tables. + + used keeps track of how many table entries have been allocated from the + provided *table space. It is checked for LENS and DIST tables against + the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in + the initial root table size constants. See the comments in inftrees.h + for more information. + + sym increments through all symbols, and the loop terminates when + all codes of length max, i.e. all codes, have been processed. This + routine permits incomplete codes, so another loop after this one fills + in the rest of the decoding tables with invalid code markers. + */ + + /* set up for code type */ + switch (type) { + case CODES: + base = extra = work; /* dummy value--not used */ + end = 19; + break; + case LENS: + base = lbase; + base -= 257; + extra = lext; + extra -= 257; + end = 256; + break; + default: /* DISTS */ + base = dbase; + extra = dext; + end = -1; + } + + /* initialize state for loop */ + huff = 0; /* starting code */ + sym = 0; /* starting code symbol */ + len = min; /* starting code length */ + next = *table; /* current table to fill in */ + curr = root; /* current table index bits */ + drop = 0; /* current bits to drop from code for index */ + low = (unsigned)(-1); /* trigger new sub-table when len > root */ + used = 1U << root; /* use root table entries */ + mask = used - 1; /* mask for comparing low */ + + /* check available table space */ + if ((type == LENS && used >= ENOUGH_LENS) || + (type == DISTS && used >= ENOUGH_DISTS)) + return 1; + + /* process all codes and make table entries */ + for (;;) { + /* create table entry */ + here.bits = (unsigned char)(len - drop); + if ((int)(work[sym]) < end) { + here.op = (unsigned char)0; + here.val = work[sym]; + } + else if ((int)(work[sym]) > end) { + here.op = (unsigned char)(extra[work[sym]]); + here.val = base[work[sym]]; + } + else { + here.op = (unsigned char)(32 + 64); /* end of block */ + here.val = 0; + } + + /* replicate for those indices with low len bits equal to huff */ + incr = 1U << (len - drop); + fill = 1U << curr; + min = fill; /* save offset to next table */ + do { + fill -= incr; + next[(huff >> drop) + fill] = here; + } while (fill != 0); + + /* backwards increment the len-bit code huff */ + incr = 1U << (len - 1); + while (huff & incr) + incr >>= 1; + if (incr != 0) { + huff &= incr - 1; + huff += incr; + } + else + huff = 0; + + /* go to next symbol, update count, len */ + sym++; + if (--(count[len]) == 0) { + if (len == max) break; + len = lens[work[sym]]; + } + + /* create new sub-table if needed */ + if (len > root && (huff & mask) != low) { + /* if first time, transition to sub-tables */ + if (drop == 0) + drop = root; + + /* increment past last table */ + next += min; /* here min is 1 << curr */ + + /* determine length of next table */ + curr = len - drop; + left = (int)(1 << curr); + while (curr + drop < max) { + left -= count[curr + drop]; + if (left <= 0) break; + curr++; + left <<= 1; + } + + /* check for enough space */ + used += 1U << curr; + if ((type == LENS && used >= ENOUGH_LENS) || + (type == DISTS && used >= ENOUGH_DISTS)) + return 1; + + /* point entry in root table to sub-table */ + low = huff & mask; + (*table)[low].op = (unsigned char)curr; + (*table)[low].bits = (unsigned char)root; + (*table)[low].val = (unsigned short)(next - *table); + } + } + + /* + Fill in rest of table for incomplete codes. This loop is similar to the + loop above in incrementing huff for table indices. It is assumed that + len is equal to curr + drop, so there is no loop needed to increment + through high index bits. When the current sub-table is filled, the loop + drops back to the root table to fill in any remaining entries there. + */ + here.op = (unsigned char)64; /* invalid code marker */ + here.bits = (unsigned char)(len - drop); + here.val = (unsigned short)0; + while (huff != 0) { + /* when done with sub-table, drop back to root table */ + if (drop != 0 && (huff & mask) != low) { + drop = 0; + len = root; + next = *table; + here.bits = (unsigned char)len; + } + + /* put invalid code marker in table */ + next[huff >> drop] = here; + + /* backwards increment the len-bit code huff */ + incr = 1U << (len - 1); + while (huff & incr) + incr >>= 1; + if (incr != 0) { + huff &= incr - 1; + huff += incr; + } + else + huff = 0; + } + + /* set return parameters */ + *table += used; + *bits = root; + return 0; +} diff --git a/3party_sloynik/zlib/inftrees.h b/3party_sloynik/zlib/inftrees.h new file mode 100644 index 0000000000..baa53a0b1a --- /dev/null +++ b/3party_sloynik/zlib/inftrees.h @@ -0,0 +1,62 @@ +/* inftrees.h -- header to use inftrees.c + * Copyright (C) 1995-2005, 2010 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* WARNING: this file should *not* be used by applications. It is + part of the implementation of the compression library and is + subject to change. Applications should only use zlib.h. + */ + +/* Structure for decoding tables. Each entry provides either the + information needed to do the operation requested by the code that + indexed that table entry, or it provides a pointer to another + table that indexes more bits of the code. op indicates whether + the entry is a pointer to another table, a literal, a length or + distance, an end-of-block, or an invalid code. For a table + pointer, the low four bits of op is the number of index bits of + that table. For a length or distance, the low four bits of op + is the number of extra bits to get after the code. bits is + the number of bits in this code or part of the code to drop off + of the bit buffer. val is the actual byte to output in the case + of a literal, the base length or distance, or the offset from + the current table to the next table. Each entry is four bytes. */ +typedef struct { + unsigned char op; /* operation, extra bits, table bits */ + unsigned char bits; /* bits in this part of the code */ + unsigned short val; /* offset in table or code value */ +} code; + +/* op values as set by inflate_table(): + 00000000 - literal + 0000tttt - table link, tttt != 0 is the number of table index bits + 0001eeee - length or distance, eeee is the number of extra bits + 01100000 - end of block + 01000000 - invalid code + */ + +/* Maximum size of the dynamic table. The maximum number of code structures is + 1444, which is the sum of 852 for literal/length codes and 592 for distance + codes. These values were found by exhaustive searches using the program + examples/enough.c found in the zlib distribtution. The arguments to that + program are the number of symbols, the initial root table size, and the + maximum bit length of a code. "enough 286 9 15" for literal/length codes + returns returns 852, and "enough 30 6 15" for distance codes returns 592. + The initial root table size (9 or 6) is found in the fifth argument of the + inflate_table() calls in inflate.c and infback.c. If the root table size is + changed, then these maximum sizes would be need to be recalculated and + updated. */ +#define ENOUGH_LENS 852 +#define ENOUGH_DISTS 592 +#define ENOUGH (ENOUGH_LENS+ENOUGH_DISTS) + +/* Type of code to build for inflate_table() */ +typedef enum { + CODES, + LENS, + DISTS +} codetype; + +int ZLIB_INTERNAL inflate_table OF((codetype type, unsigned short FAR *lens, + unsigned codes, code FAR * FAR *table, + unsigned FAR *bits, unsigned short FAR *work)); diff --git a/3party_sloynik/zlib/trees.c b/3party_sloynik/zlib/trees.c new file mode 100644 index 0000000000..56e9bb1c11 --- /dev/null +++ b/3party_sloynik/zlib/trees.c @@ -0,0 +1,1244 @@ +/* trees.c -- output deflated data using Huffman coding + * Copyright (C) 1995-2010 Jean-loup Gailly + * detect_data_type() function provided freely by Cosmin Truta, 2006 + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* + * ALGORITHM + * + * The "deflation" process uses several Huffman trees. The more + * common source values are represented by shorter bit sequences. + * + * Each code tree is stored in a compressed form which is itself + * a Huffman encoding of the lengths of all the code strings (in + * ascending order by source values). The actual code strings are + * reconstructed from the lengths in the inflate process, as described + * in the deflate specification. + * + * REFERENCES + * + * Deutsch, L.P.,"'Deflate' Compressed Data Format Specification". + * Available in ftp.uu.net:/pub/archiving/zip/doc/deflate-1.1.doc + * + * Storer, James A. + * Data Compression: Methods and Theory, pp. 49-50. + * Computer Science Press, 1988. ISBN 0-7167-8156-5. + * + * Sedgewick, R. + * Algorithms, p290. + * Addison-Wesley, 1983. ISBN 0-201-06672-6. + */ + +/* @(#) $Id$ */ + +/* #define GEN_TREES_H */ + +#include "deflate.h" + +#ifdef DEBUG +# include +#endif + +/* =========================================================================== + * Constants + */ + +#define MAX_BL_BITS 7 +/* Bit length codes must not exceed MAX_BL_BITS bits */ + +#define END_BLOCK 256 +/* end of block literal code */ + +#define REP_3_6 16 +/* repeat previous bit length 3-6 times (2 bits of repeat count) */ + +#define REPZ_3_10 17 +/* repeat a zero length 3-10 times (3 bits of repeat count) */ + +#define REPZ_11_138 18 +/* repeat a zero length 11-138 times (7 bits of repeat count) */ + +local const int extra_lbits[LENGTH_CODES] /* extra bits for each length code */ + = {0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0}; + +local const int extra_dbits[D_CODES] /* extra bits for each distance code */ + = {0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13}; + +local const int extra_blbits[BL_CODES]/* extra bits for each bit length code */ + = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7}; + +local const uch bl_order[BL_CODES] + = {16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15}; +/* The lengths of the bit length codes are sent in order of decreasing + * probability, to avoid transmitting the lengths for unused bit length codes. + */ + +#define Buf_size (8 * 2*sizeof(char)) +/* Number of bits used within bi_buf. (bi_buf might be implemented on + * more than 16 bits on some systems.) + */ + +/* =========================================================================== + * Local data. These are initialized only once. + */ + +#define DIST_CODE_LEN 512 /* see definition of array dist_code below */ + +#if defined(GEN_TREES_H) || !defined(STDC) +/* non ANSI compilers may not accept trees.h */ + +local ct_data static_ltree[L_CODES+2]; +/* The static literal tree. Since the bit lengths are imposed, there is no + * need for the L_CODES extra codes used during heap construction. However + * The codes 286 and 287 are needed to build a canonical tree (see _tr_init + * below). + */ + +local ct_data static_dtree[D_CODES]; +/* The static distance tree. (Actually a trivial tree since all codes use + * 5 bits.) + */ + +uch _dist_code[DIST_CODE_LEN]; +/* Distance codes. The first 256 values correspond to the distances + * 3 .. 258, the last 256 values correspond to the top 8 bits of + * the 15 bit distances. + */ + +uch _length_code[MAX_MATCH-MIN_MATCH+1]; +/* length code for each normalized match length (0 == MIN_MATCH) */ + +local int base_length[LENGTH_CODES]; +/* First normalized length for each code (0 = MIN_MATCH) */ + +local int base_dist[D_CODES]; +/* First normalized distance for each code (0 = distance of 1) */ + +#else +# include "trees.h" +#endif /* GEN_TREES_H */ + +struct static_tree_desc_s { + const ct_data *static_tree; /* static tree or NULL */ + const intf *extra_bits; /* extra bits for each code or NULL */ + int extra_base; /* base index for extra_bits */ + int elems; /* max number of elements in the tree */ + int max_length; /* max bit length for the codes */ +}; + +local static_tree_desc static_l_desc = +{static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS}; + +local static_tree_desc static_d_desc = +{static_dtree, extra_dbits, 0, D_CODES, MAX_BITS}; + +local static_tree_desc static_bl_desc = +{(const ct_data *)0, extra_blbits, 0, BL_CODES, MAX_BL_BITS}; + +/* =========================================================================== + * Local (static) routines in this file. + */ + +local void tr_static_init OF((void)); +local void init_block OF((deflate_state *s)); +local void pqdownheap OF((deflate_state *s, ct_data *tree, int k)); +local void gen_bitlen OF((deflate_state *s, tree_desc *desc)); +local void gen_codes OF((ct_data *tree, int max_code, ushf *bl_count)); +local void build_tree OF((deflate_state *s, tree_desc *desc)); +local void scan_tree OF((deflate_state *s, ct_data *tree, int max_code)); +local void send_tree OF((deflate_state *s, ct_data *tree, int max_code)); +local int build_bl_tree OF((deflate_state *s)); +local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes, + int blcodes)); +local void compress_block OF((deflate_state *s, ct_data *ltree, + ct_data *dtree)); +local int detect_data_type OF((deflate_state *s)); +local unsigned bi_reverse OF((unsigned value, int length)); +local void bi_windup OF((deflate_state *s)); +local void bi_flush OF((deflate_state *s)); +local void copy_block OF((deflate_state *s, charf *buf, unsigned len, + int header)); + +#ifdef GEN_TREES_H +local void gen_trees_header OF((void)); +#endif + +#ifndef DEBUG +# define send_code(s, c, tree) send_bits(s, tree[c].Code, tree[c].Len) + /* Send a code of the given tree. c and tree must not have side effects */ + +#else /* DEBUG */ +# define send_code(s, c, tree) \ + { if (z_verbose>2) fprintf(stderr,"\ncd %3d ",(c)); \ + send_bits(s, tree[c].Code, tree[c].Len); } +#endif + +/* =========================================================================== + * Output a short LSB first on the stream. + * IN assertion: there is enough room in pendingBuf. + */ +#define put_short(s, w) { \ + put_byte(s, (uch)((w) & 0xff)); \ + put_byte(s, (uch)((ush)(w) >> 8)); \ +} + +/* =========================================================================== + * Send a value on a given number of bits. + * IN assertion: length <= 16 and value fits in length bits. + */ +#ifdef DEBUG +local void send_bits OF((deflate_state *s, int value, int length)); + +local void send_bits(s, value, length) + deflate_state *s; + int value; /* value to send */ + int length; /* number of bits */ +{ + Tracevv((stderr," l %2d v %4x ", length, value)); + Assert(length > 0 && length <= 15, "invalid length"); + s->bits_sent += (ulg)length; + + /* If not enough room in bi_buf, use (valid) bits from bi_buf and + * (16 - bi_valid) bits from value, leaving (width - (16-bi_valid)) + * unused bits in value. + */ + if (s->bi_valid > (int)Buf_size - length) { + s->bi_buf |= (ush)value << s->bi_valid; + put_short(s, s->bi_buf); + s->bi_buf = (ush)value >> (Buf_size - s->bi_valid); + s->bi_valid += length - Buf_size; + } else { + s->bi_buf |= (ush)value << s->bi_valid; + s->bi_valid += length; + } +} +#else /* !DEBUG */ + +#define send_bits(s, value, length) \ +{ int len = length;\ + if (s->bi_valid > (int)Buf_size - len) {\ + int val = value;\ + s->bi_buf |= (ush)val << s->bi_valid;\ + put_short(s, s->bi_buf);\ + s->bi_buf = (ush)val >> (Buf_size - s->bi_valid);\ + s->bi_valid += len - Buf_size;\ + } else {\ + s->bi_buf |= (ush)(value) << s->bi_valid;\ + s->bi_valid += len;\ + }\ +} +#endif /* DEBUG */ + + +/* the arguments must not have side effects */ + +/* =========================================================================== + * Initialize the various 'constant' tables. + */ +local void tr_static_init() +{ +#if defined(GEN_TREES_H) || !defined(STDC) + static int static_init_done = 0; + int n; /* iterates over tree elements */ + int bits; /* bit counter */ + int length; /* length value */ + int code; /* code value */ + int dist; /* distance index */ + ush bl_count[MAX_BITS+1]; + /* number of codes at each bit length for an optimal tree */ + + if (static_init_done) return; + + /* For some embedded targets, global variables are not initialized: */ +#ifdef NO_INIT_GLOBAL_POINTERS + static_l_desc.static_tree = static_ltree; + static_l_desc.extra_bits = extra_lbits; + static_d_desc.static_tree = static_dtree; + static_d_desc.extra_bits = extra_dbits; + static_bl_desc.extra_bits = extra_blbits; +#endif + + /* Initialize the mapping length (0..255) -> length code (0..28) */ + length = 0; + for (code = 0; code < LENGTH_CODES-1; code++) { + base_length[code] = length; + for (n = 0; n < (1< dist code (0..29) */ + dist = 0; + for (code = 0 ; code < 16; code++) { + base_dist[code] = dist; + for (n = 0; n < (1<>= 7; /* from now on, all distances are divided by 128 */ + for ( ; code < D_CODES; code++) { + base_dist[code] = dist << 7; + for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) { + _dist_code[256 + dist++] = (uch)code; + } + } + Assert (dist == 256, "tr_static_init: 256+dist != 512"); + + /* Construct the codes of the static literal tree */ + for (bits = 0; bits <= MAX_BITS; bits++) bl_count[bits] = 0; + n = 0; + while (n <= 143) static_ltree[n++].Len = 8, bl_count[8]++; + while (n <= 255) static_ltree[n++].Len = 9, bl_count[9]++; + while (n <= 279) static_ltree[n++].Len = 7, bl_count[7]++; + while (n <= 287) static_ltree[n++].Len = 8, bl_count[8]++; + /* Codes 286 and 287 do not exist, but we must include them in the + * tree construction to get a canonical Huffman tree (longest code + * all ones) + */ + gen_codes((ct_data *)static_ltree, L_CODES+1, bl_count); + + /* The static distance tree is trivial: */ + for (n = 0; n < D_CODES; n++) { + static_dtree[n].Len = 5; + static_dtree[n].Code = bi_reverse((unsigned)n, 5); + } + static_init_done = 1; + +# ifdef GEN_TREES_H + gen_trees_header(); +# endif +#endif /* defined(GEN_TREES_H) || !defined(STDC) */ +} + +/* =========================================================================== + * Genererate the file trees.h describing the static trees. + */ +#ifdef GEN_TREES_H +# ifndef DEBUG +# include +# endif + +# define SEPARATOR(i, last, width) \ + ((i) == (last)? "\n};\n\n" : \ + ((i) % (width) == (width)-1 ? ",\n" : ", ")) + +void gen_trees_header() +{ + FILE *header = fopen("trees.h", "w"); + int i; + + Assert (header != NULL, "Can't open trees.h"); + fprintf(header, + "/* header created automatically with -DGEN_TREES_H */\n\n"); + + fprintf(header, "local const ct_data static_ltree[L_CODES+2] = {\n"); + for (i = 0; i < L_CODES+2; i++) { + fprintf(header, "{{%3u},{%3u}}%s", static_ltree[i].Code, + static_ltree[i].Len, SEPARATOR(i, L_CODES+1, 5)); + } + + fprintf(header, "local const ct_data static_dtree[D_CODES] = {\n"); + for (i = 0; i < D_CODES; i++) { + fprintf(header, "{{%2u},{%2u}}%s", static_dtree[i].Code, + static_dtree[i].Len, SEPARATOR(i, D_CODES-1, 5)); + } + + fprintf(header, "const uch ZLIB_INTERNAL _dist_code[DIST_CODE_LEN] = {\n"); + for (i = 0; i < DIST_CODE_LEN; i++) { + fprintf(header, "%2u%s", _dist_code[i], + SEPARATOR(i, DIST_CODE_LEN-1, 20)); + } + + fprintf(header, + "const uch ZLIB_INTERNAL _length_code[MAX_MATCH-MIN_MATCH+1]= {\n"); + for (i = 0; i < MAX_MATCH-MIN_MATCH+1; i++) { + fprintf(header, "%2u%s", _length_code[i], + SEPARATOR(i, MAX_MATCH-MIN_MATCH, 20)); + } + + fprintf(header, "local const int base_length[LENGTH_CODES] = {\n"); + for (i = 0; i < LENGTH_CODES; i++) { + fprintf(header, "%1u%s", base_length[i], + SEPARATOR(i, LENGTH_CODES-1, 20)); + } + + fprintf(header, "local const int base_dist[D_CODES] = {\n"); + for (i = 0; i < D_CODES; i++) { + fprintf(header, "%5u%s", base_dist[i], + SEPARATOR(i, D_CODES-1, 10)); + } + + fclose(header); +} +#endif /* GEN_TREES_H */ + +/* =========================================================================== + * Initialize the tree data structures for a new zlib stream. + */ +void ZLIB_INTERNAL _tr_init(s) + deflate_state *s; +{ + tr_static_init(); + + s->l_desc.dyn_tree = s->dyn_ltree; + s->l_desc.stat_desc = &static_l_desc; + + s->d_desc.dyn_tree = s->dyn_dtree; + s->d_desc.stat_desc = &static_d_desc; + + s->bl_desc.dyn_tree = s->bl_tree; + s->bl_desc.stat_desc = &static_bl_desc; + + s->bi_buf = 0; + s->bi_valid = 0; + s->last_eob_len = 8; /* enough lookahead for inflate */ +#ifdef DEBUG + s->compressed_len = 0L; + s->bits_sent = 0L; +#endif + + /* Initialize the first block of the first file: */ + init_block(s); +} + +/* =========================================================================== + * Initialize a new block. + */ +local void init_block(s) + deflate_state *s; +{ + int n; /* iterates over tree elements */ + + /* Initialize the trees. */ + for (n = 0; n < L_CODES; n++) s->dyn_ltree[n].Freq = 0; + for (n = 0; n < D_CODES; n++) s->dyn_dtree[n].Freq = 0; + for (n = 0; n < BL_CODES; n++) s->bl_tree[n].Freq = 0; + + s->dyn_ltree[END_BLOCK].Freq = 1; + s->opt_len = s->static_len = 0L; + s->last_lit = s->matches = 0; +} + +#define SMALLEST 1 +/* Index within the heap array of least frequent node in the Huffman tree */ + + +/* =========================================================================== + * Remove the smallest element from the heap and recreate the heap with + * one less element. Updates heap and heap_len. + */ +#define pqremove(s, tree, top) \ +{\ + top = s->heap[SMALLEST]; \ + s->heap[SMALLEST] = s->heap[s->heap_len--]; \ + pqdownheap(s, tree, SMALLEST); \ +} + +/* =========================================================================== + * Compares to subtrees, using the tree depth as tie breaker when + * the subtrees have equal frequency. This minimizes the worst case length. + */ +#define smaller(tree, n, m, depth) \ + (tree[n].Freq < tree[m].Freq || \ + (tree[n].Freq == tree[m].Freq && depth[n] <= depth[m])) + +/* =========================================================================== + * Restore the heap property by moving down the tree starting at node k, + * exchanging a node with the smallest of its two sons if necessary, stopping + * when the heap property is re-established (each father smaller than its + * two sons). + */ +local void pqdownheap(s, tree, k) + deflate_state *s; + ct_data *tree; /* the tree to restore */ + int k; /* node to move down */ +{ + int v = s->heap[k]; + int j = k << 1; /* left son of k */ + while (j <= s->heap_len) { + /* Set j to the smallest of the two sons: */ + if (j < s->heap_len && + smaller(tree, s->heap[j+1], s->heap[j], s->depth)) { + j++; + } + /* Exit if v is smaller than both sons */ + if (smaller(tree, v, s->heap[j], s->depth)) break; + + /* Exchange v with the smallest son */ + s->heap[k] = s->heap[j]; k = j; + + /* And continue down the tree, setting j to the left son of k */ + j <<= 1; + } + s->heap[k] = v; +} + +/* =========================================================================== + * Compute the optimal bit lengths for a tree and update the total bit length + * for the current block. + * IN assertion: the fields freq and dad are set, heap[heap_max] and + * above are the tree nodes sorted by increasing frequency. + * OUT assertions: the field len is set to the optimal bit length, the + * array bl_count contains the frequencies for each bit length. + * The length opt_len is updated; static_len is also updated if stree is + * not null. + */ +local void gen_bitlen(s, desc) + deflate_state *s; + tree_desc *desc; /* the tree descriptor */ +{ + ct_data *tree = desc->dyn_tree; + int max_code = desc->max_code; + const ct_data *stree = desc->stat_desc->static_tree; + const intf *extra = desc->stat_desc->extra_bits; + int base = desc->stat_desc->extra_base; + int max_length = desc->stat_desc->max_length; + int h; /* heap index */ + int n, m; /* iterate over the tree elements */ + int bits; /* bit length */ + int xbits; /* extra bits */ + ush f; /* frequency */ + int overflow = 0; /* number of elements with bit length too large */ + + for (bits = 0; bits <= MAX_BITS; bits++) s->bl_count[bits] = 0; + + /* In a first pass, compute the optimal bit lengths (which may + * overflow in the case of the bit length tree). + */ + tree[s->heap[s->heap_max]].Len = 0; /* root of the heap */ + + for (h = s->heap_max+1; h < HEAP_SIZE; h++) { + n = s->heap[h]; + bits = tree[tree[n].Dad].Len + 1; + if (bits > max_length) bits = max_length, overflow++; + tree[n].Len = (ush)bits; + /* We overwrite tree[n].Dad which is no longer needed */ + + if (n > max_code) continue; /* not a leaf node */ + + s->bl_count[bits]++; + xbits = 0; + if (n >= base) xbits = extra[n-base]; + f = tree[n].Freq; + s->opt_len += (ulg)f * (bits + xbits); + if (stree) s->static_len += (ulg)f * (stree[n].Len + xbits); + } + if (overflow == 0) return; + + Trace((stderr,"\nbit length overflow\n")); + /* This happens for example on obj2 and pic of the Calgary corpus */ + + /* Find the first bit length which could increase: */ + do { + bits = max_length-1; + while (s->bl_count[bits] == 0) bits--; + s->bl_count[bits]--; /* move one leaf down the tree */ + s->bl_count[bits+1] += 2; /* move one overflow item as its brother */ + s->bl_count[max_length]--; + /* The brother of the overflow item also moves one step up, + * but this does not affect bl_count[max_length] + */ + overflow -= 2; + } while (overflow > 0); + + /* Now recompute all bit lengths, scanning in increasing frequency. + * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all + * lengths instead of fixing only the wrong ones. This idea is taken + * from 'ar' written by Haruhiko Okumura.) + */ + for (bits = max_length; bits != 0; bits--) { + n = s->bl_count[bits]; + while (n != 0) { + m = s->heap[--h]; + if (m > max_code) continue; + if ((unsigned) tree[m].Len != (unsigned) bits) { + Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits)); + s->opt_len += ((long)bits - (long)tree[m].Len) + *(long)tree[m].Freq; + tree[m].Len = (ush)bits; + } + n--; + } + } +} + +/* =========================================================================== + * Generate the codes for a given tree and bit counts (which need not be + * optimal). + * IN assertion: the array bl_count contains the bit length statistics for + * the given tree and the field len is set for all tree elements. + * OUT assertion: the field code is set for all tree elements of non + * zero code length. + */ +local void gen_codes (tree, max_code, bl_count) + ct_data *tree; /* the tree to decorate */ + int max_code; /* largest code with non zero frequency */ + ushf *bl_count; /* number of codes at each bit length */ +{ + ush next_code[MAX_BITS+1]; /* next code value for each bit length */ + ush code = 0; /* running code value */ + int bits; /* bit index */ + int n; /* code index */ + + /* The distribution counts are first used to generate the code values + * without bit reversal. + */ + for (bits = 1; bits <= MAX_BITS; bits++) { + next_code[bits] = code = (code + bl_count[bits-1]) << 1; + } + /* Check that the bit counts in bl_count are consistent. The last code + * must be all ones. + */ + Assert (code + bl_count[MAX_BITS]-1 == (1<dyn_tree; + const ct_data *stree = desc->stat_desc->static_tree; + int elems = desc->stat_desc->elems; + int n, m; /* iterate over heap elements */ + int max_code = -1; /* largest code with non zero frequency */ + int node; /* new node being created */ + + /* Construct the initial heap, with least frequent element in + * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. + * heap[0] is not used. + */ + s->heap_len = 0, s->heap_max = HEAP_SIZE; + + for (n = 0; n < elems; n++) { + if (tree[n].Freq != 0) { + s->heap[++(s->heap_len)] = max_code = n; + s->depth[n] = 0; + } else { + tree[n].Len = 0; + } + } + + /* The pkzip format requires that at least one distance code exists, + * and that at least one bit should be sent even if there is only one + * possible code. So to avoid special checks later on we force at least + * two codes of non zero frequency. + */ + while (s->heap_len < 2) { + node = s->heap[++(s->heap_len)] = (max_code < 2 ? ++max_code : 0); + tree[node].Freq = 1; + s->depth[node] = 0; + s->opt_len--; if (stree) s->static_len -= stree[node].Len; + /* node is 0 or 1 so it does not have extra bits */ + } + desc->max_code = max_code; + + /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, + * establish sub-heaps of increasing lengths: + */ + for (n = s->heap_len/2; n >= 1; n--) pqdownheap(s, tree, n); + + /* Construct the Huffman tree by repeatedly combining the least two + * frequent nodes. + */ + node = elems; /* next internal node of the tree */ + do { + pqremove(s, tree, n); /* n = node of least frequency */ + m = s->heap[SMALLEST]; /* m = node of next least frequency */ + + s->heap[--(s->heap_max)] = n; /* keep the nodes sorted by frequency */ + s->heap[--(s->heap_max)] = m; + + /* Create a new node father of n and m */ + tree[node].Freq = tree[n].Freq + tree[m].Freq; + s->depth[node] = (uch)((s->depth[n] >= s->depth[m] ? + s->depth[n] : s->depth[m]) + 1); + tree[n].Dad = tree[m].Dad = (ush)node; +#ifdef DUMP_BL_TREE + if (tree == s->bl_tree) { + fprintf(stderr,"\nnode %d(%d), sons %d(%d) %d(%d)", + node, tree[node].Freq, n, tree[n].Freq, m, tree[m].Freq); + } +#endif + /* and insert the new node in the heap */ + s->heap[SMALLEST] = node++; + pqdownheap(s, tree, SMALLEST); + + } while (s->heap_len >= 2); + + s->heap[--(s->heap_max)] = s->heap[SMALLEST]; + + /* At this point, the fields freq and dad are set. We can now + * generate the bit lengths. + */ + gen_bitlen(s, (tree_desc *)desc); + + /* The field len is now set, we can generate the bit codes */ + gen_codes ((ct_data *)tree, max_code, s->bl_count); +} + +/* =========================================================================== + * Scan a literal or distance tree to determine the frequencies of the codes + * in the bit length tree. + */ +local void scan_tree (s, tree, max_code) + deflate_state *s; + ct_data *tree; /* the tree to be scanned */ + int max_code; /* and its largest code of non zero frequency */ +{ + int n; /* iterates over all tree elements */ + int prevlen = -1; /* last emitted length */ + int curlen; /* length of current code */ + int nextlen = tree[0].Len; /* length of next code */ + int count = 0; /* repeat count of the current code */ + int max_count = 7; /* max repeat count */ + int min_count = 4; /* min repeat count */ + + if (nextlen == 0) max_count = 138, min_count = 3; + tree[max_code+1].Len = (ush)0xffff; /* guard */ + + for (n = 0; n <= max_code; n++) { + curlen = nextlen; nextlen = tree[n+1].Len; + if (++count < max_count && curlen == nextlen) { + continue; + } else if (count < min_count) { + s->bl_tree[curlen].Freq += count; + } else if (curlen != 0) { + if (curlen != prevlen) s->bl_tree[curlen].Freq++; + s->bl_tree[REP_3_6].Freq++; + } else if (count <= 10) { + s->bl_tree[REPZ_3_10].Freq++; + } else { + s->bl_tree[REPZ_11_138].Freq++; + } + count = 0; prevlen = curlen; + if (nextlen == 0) { + max_count = 138, min_count = 3; + } else if (curlen == nextlen) { + max_count = 6, min_count = 3; + } else { + max_count = 7, min_count = 4; + } + } +} + +/* =========================================================================== + * Send a literal or distance tree in compressed form, using the codes in + * bl_tree. + */ +local void send_tree (s, tree, max_code) + deflate_state *s; + ct_data *tree; /* the tree to be scanned */ + int max_code; /* and its largest code of non zero frequency */ +{ + int n; /* iterates over all tree elements */ + int prevlen = -1; /* last emitted length */ + int curlen; /* length of current code */ + int nextlen = tree[0].Len; /* length of next code */ + int count = 0; /* repeat count of the current code */ + int max_count = 7; /* max repeat count */ + int min_count = 4; /* min repeat count */ + + /* tree[max_code+1].Len = -1; */ /* guard already set */ + if (nextlen == 0) max_count = 138, min_count = 3; + + for (n = 0; n <= max_code; n++) { + curlen = nextlen; nextlen = tree[n+1].Len; + if (++count < max_count && curlen == nextlen) { + continue; + } else if (count < min_count) { + do { send_code(s, curlen, s->bl_tree); } while (--count != 0); + + } else if (curlen != 0) { + if (curlen != prevlen) { + send_code(s, curlen, s->bl_tree); count--; + } + Assert(count >= 3 && count <= 6, " 3_6?"); + send_code(s, REP_3_6, s->bl_tree); send_bits(s, count-3, 2); + + } else if (count <= 10) { + send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count-3, 3); + + } else { + send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count-11, 7); + } + count = 0; prevlen = curlen; + if (nextlen == 0) { + max_count = 138, min_count = 3; + } else if (curlen == nextlen) { + max_count = 6, min_count = 3; + } else { + max_count = 7, min_count = 4; + } + } +} + +/* =========================================================================== + * Construct the Huffman tree for the bit lengths and return the index in + * bl_order of the last bit length code to send. + */ +local int build_bl_tree(s) + deflate_state *s; +{ + int max_blindex; /* index of last bit length code of non zero freq */ + + /* Determine the bit length frequencies for literal and distance trees */ + scan_tree(s, (ct_data *)s->dyn_ltree, s->l_desc.max_code); + scan_tree(s, (ct_data *)s->dyn_dtree, s->d_desc.max_code); + + /* Build the bit length tree: */ + build_tree(s, (tree_desc *)(&(s->bl_desc))); + /* opt_len now includes the length of the tree representations, except + * the lengths of the bit lengths codes and the 5+5+4 bits for the counts. + */ + + /* Determine the number of bit length codes to send. The pkzip format + * requires that at least 4 bit length codes be sent. (appnote.txt says + * 3 but the actual value used is 4.) + */ + for (max_blindex = BL_CODES-1; max_blindex >= 3; max_blindex--) { + if (s->bl_tree[bl_order[max_blindex]].Len != 0) break; + } + /* Update opt_len to include the bit length tree and counts */ + s->opt_len += 3*(max_blindex+1) + 5+5+4; + Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", + s->opt_len, s->static_len)); + + return max_blindex; +} + +/* =========================================================================== + * Send the header for a block using dynamic Huffman trees: the counts, the + * lengths of the bit length codes, the literal tree and the distance tree. + * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. + */ +local void send_all_trees(s, lcodes, dcodes, blcodes) + deflate_state *s; + int lcodes, dcodes, blcodes; /* number of codes for each tree */ +{ + int rank; /* index in bl_order */ + + Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes"); + Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES, + "too many codes"); + Tracev((stderr, "\nbl counts: ")); + send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */ + send_bits(s, dcodes-1, 5); + send_bits(s, blcodes-4, 4); /* not -3 as stated in appnote.txt */ + for (rank = 0; rank < blcodes; rank++) { + Tracev((stderr, "\nbl code %2d ", bl_order[rank])); + send_bits(s, s->bl_tree[bl_order[rank]].Len, 3); + } + Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); + + send_tree(s, (ct_data *)s->dyn_ltree, lcodes-1); /* literal tree */ + Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); + + send_tree(s, (ct_data *)s->dyn_dtree, dcodes-1); /* distance tree */ + Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); +} + +/* =========================================================================== + * Send a stored block + */ +void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last) + deflate_state *s; + charf *buf; /* input block */ + ulg stored_len; /* length of input block */ + int last; /* one if this is the last block for a file */ +{ + send_bits(s, (STORED_BLOCK<<1)+last, 3); /* send block type */ +#ifdef DEBUG + s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L; + s->compressed_len += (stored_len + 4) << 3; +#endif + copy_block(s, buf, (unsigned)stored_len, 1); /* with header */ +} + +/* =========================================================================== + * Send one empty static block to give enough lookahead for inflate. + * This takes 10 bits, of which 7 may remain in the bit buffer. + * The current inflate code requires 9 bits of lookahead. If the + * last two codes for the previous block (real code plus EOB) were coded + * on 5 bits or less, inflate may have only 5+3 bits of lookahead to decode + * the last real code. In this case we send two empty static blocks instead + * of one. (There are no problems if the previous block is stored or fixed.) + * To simplify the code, we assume the worst case of last real code encoded + * on one bit only. + */ +void ZLIB_INTERNAL _tr_align(s) + deflate_state *s; +{ + send_bits(s, STATIC_TREES<<1, 3); + send_code(s, END_BLOCK, static_ltree); +#ifdef DEBUG + s->compressed_len += 10L; /* 3 for block type, 7 for EOB */ +#endif + bi_flush(s); + /* Of the 10 bits for the empty block, we have already sent + * (10 - bi_valid) bits. The lookahead for the last real code (before + * the EOB of the previous block) was thus at least one plus the length + * of the EOB plus what we have just sent of the empty static block. + */ + if (1 + s->last_eob_len + 10 - s->bi_valid < 9) { + send_bits(s, STATIC_TREES<<1, 3); + send_code(s, END_BLOCK, static_ltree); +#ifdef DEBUG + s->compressed_len += 10L; +#endif + bi_flush(s); + } + s->last_eob_len = 7; +} + +/* =========================================================================== + * Determine the best encoding for the current block: dynamic trees, static + * trees or store, and output the encoded block to the zip file. + */ +void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last) + deflate_state *s; + charf *buf; /* input block, or NULL if too old */ + ulg stored_len; /* length of input block */ + int last; /* one if this is the last block for a file */ +{ + ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */ + int max_blindex = 0; /* index of last bit length code of non zero freq */ + + /* Build the Huffman trees unless a stored block is forced */ + if (s->level > 0) { + + /* Check if the file is binary or text */ + if (s->strm->data_type == Z_UNKNOWN) + s->strm->data_type = detect_data_type(s); + + /* Construct the literal and distance trees */ + build_tree(s, (tree_desc *)(&(s->l_desc))); + Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len, + s->static_len)); + + build_tree(s, (tree_desc *)(&(s->d_desc))); + Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len, + s->static_len)); + /* At this point, opt_len and static_len are the total bit lengths of + * the compressed block data, excluding the tree representations. + */ + + /* Build the bit length tree for the above two trees, and get the index + * in bl_order of the last bit length code to send. + */ + max_blindex = build_bl_tree(s); + + /* Determine the best encoding. Compute the block lengths in bytes. */ + opt_lenb = (s->opt_len+3+7)>>3; + static_lenb = (s->static_len+3+7)>>3; + + Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ", + opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len, + s->last_lit)); + + if (static_lenb <= opt_lenb) opt_lenb = static_lenb; + + } else { + Assert(buf != (char*)0, "lost buf"); + opt_lenb = static_lenb = stored_len + 5; /* force a stored block */ + } + +#ifdef FORCE_STORED + if (buf != (char*)0) { /* force stored block */ +#else + if (stored_len+4 <= opt_lenb && buf != (char*)0) { + /* 4: two words for the lengths */ +#endif + /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. + * Otherwise we can't have processed more than WSIZE input bytes since + * the last block flush, because compression would have been + * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to + * transform a block into a stored block. + */ + _tr_stored_block(s, buf, stored_len, last); + +#ifdef FORCE_STATIC + } else if (static_lenb >= 0) { /* force static trees */ +#else + } else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) { +#endif + send_bits(s, (STATIC_TREES<<1)+last, 3); + compress_block(s, (ct_data *)static_ltree, (ct_data *)static_dtree); +#ifdef DEBUG + s->compressed_len += 3 + s->static_len; +#endif + } else { + send_bits(s, (DYN_TREES<<1)+last, 3); + send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1, + max_blindex+1); + compress_block(s, (ct_data *)s->dyn_ltree, (ct_data *)s->dyn_dtree); +#ifdef DEBUG + s->compressed_len += 3 + s->opt_len; +#endif + } + Assert (s->compressed_len == s->bits_sent, "bad compressed size"); + /* The above check is made mod 2^32, for files larger than 512 MB + * and uLong implemented on 32 bits. + */ + init_block(s); + + if (last) { + bi_windup(s); +#ifdef DEBUG + s->compressed_len += 7; /* align on byte boundary */ +#endif + } + Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3, + s->compressed_len-7*last)); +} + +/* =========================================================================== + * Save the match info and tally the frequency counts. Return true if + * the current block must be flushed. + */ +int ZLIB_INTERNAL _tr_tally (s, dist, lc) + deflate_state *s; + unsigned dist; /* distance of matched string */ + unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */ +{ + s->d_buf[s->last_lit] = (ush)dist; + s->l_buf[s->last_lit++] = (uch)lc; + if (dist == 0) { + /* lc is the unmatched char */ + s->dyn_ltree[lc].Freq++; + } else { + s->matches++; + /* Here, lc is the match length - MIN_MATCH */ + dist--; /* dist = match distance - 1 */ + Assert((ush)dist < (ush)MAX_DIST(s) && + (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) && + (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match"); + + s->dyn_ltree[_length_code[lc]+LITERALS+1].Freq++; + s->dyn_dtree[d_code(dist)].Freq++; + } + +#ifdef TRUNCATE_BLOCK + /* Try to guess if it is profitable to stop the current block here */ + if ((s->last_lit & 0x1fff) == 0 && s->level > 2) { + /* Compute an upper bound for the compressed length */ + ulg out_length = (ulg)s->last_lit*8L; + ulg in_length = (ulg)((long)s->strstart - s->block_start); + int dcode; + for (dcode = 0; dcode < D_CODES; dcode++) { + out_length += (ulg)s->dyn_dtree[dcode].Freq * + (5L+extra_dbits[dcode]); + } + out_length >>= 3; + Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ", + s->last_lit, in_length, out_length, + 100L - out_length*100L/in_length)); + if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1; + } +#endif + return (s->last_lit == s->lit_bufsize-1); + /* We avoid equality with lit_bufsize because of wraparound at 64K + * on 16 bit machines and because stored blocks are restricted to + * 64K-1 bytes. + */ +} + +/* =========================================================================== + * Send the block data compressed using the given Huffman trees + */ +local void compress_block(s, ltree, dtree) + deflate_state *s; + ct_data *ltree; /* literal tree */ + ct_data *dtree; /* distance tree */ +{ + unsigned dist; /* distance of matched string */ + int lc; /* match length or unmatched char (if dist == 0) */ + unsigned lx = 0; /* running index in l_buf */ + unsigned code; /* the code to send */ + int extra; /* number of extra bits to send */ + + if (s->last_lit != 0) do { + dist = s->d_buf[lx]; + lc = s->l_buf[lx++]; + if (dist == 0) { + send_code(s, lc, ltree); /* send a literal byte */ + Tracecv(isgraph(lc), (stderr," '%c' ", lc)); + } else { + /* Here, lc is the match length - MIN_MATCH */ + code = _length_code[lc]; + send_code(s, code+LITERALS+1, ltree); /* send the length code */ + extra = extra_lbits[code]; + if (extra != 0) { + lc -= base_length[code]; + send_bits(s, lc, extra); /* send the extra length bits */ + } + dist--; /* dist is now the match distance - 1 */ + code = d_code(dist); + Assert (code < D_CODES, "bad d_code"); + + send_code(s, code, dtree); /* send the distance code */ + extra = extra_dbits[code]; + if (extra != 0) { + dist -= base_dist[code]; + send_bits(s, dist, extra); /* send the extra distance bits */ + } + } /* literal or match pair ? */ + + /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */ + Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx, + "pendingBuf overflow"); + + } while (lx < s->last_lit); + + send_code(s, END_BLOCK, ltree); + s->last_eob_len = ltree[END_BLOCK].Len; +} + +/* =========================================================================== + * Check if the data type is TEXT or BINARY, using the following algorithm: + * - TEXT if the two conditions below are satisfied: + * a) There are no non-portable control characters belonging to the + * "black list" (0..6, 14..25, 28..31). + * b) There is at least one printable character belonging to the + * "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255). + * - BINARY otherwise. + * - The following partially-portable control characters form a + * "gray list" that is ignored in this detection algorithm: + * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}). + * IN assertion: the fields Freq of dyn_ltree are set. + */ +local int detect_data_type(s) + deflate_state *s; +{ + /* black_mask is the bit mask of black-listed bytes + * set bits 0..6, 14..25, and 28..31 + * 0xf3ffc07f = binary 11110011111111111100000001111111 + */ + unsigned long black_mask = 0xf3ffc07fUL; + int n; + + /* Check for non-textual ("black-listed") bytes. */ + for (n = 0; n <= 31; n++, black_mask >>= 1) + if ((black_mask & 1) && (s->dyn_ltree[n].Freq != 0)) + return Z_BINARY; + + /* Check for textual ("white-listed") bytes. */ + if (s->dyn_ltree[9].Freq != 0 || s->dyn_ltree[10].Freq != 0 + || s->dyn_ltree[13].Freq != 0) + return Z_TEXT; + for (n = 32; n < LITERALS; n++) + if (s->dyn_ltree[n].Freq != 0) + return Z_TEXT; + + /* There are no "black-listed" or "white-listed" bytes: + * this stream either is empty or has tolerated ("gray-listed") bytes only. + */ + return Z_BINARY; +} + +/* =========================================================================== + * Reverse the first len bits of a code, using straightforward code (a faster + * method would use a table) + * IN assertion: 1 <= len <= 15 + */ +local unsigned bi_reverse(code, len) + unsigned code; /* the value to invert */ + int len; /* its bit length */ +{ + register unsigned res = 0; + do { + res |= code & 1; + code >>= 1, res <<= 1; + } while (--len > 0); + return res >> 1; +} + +/* =========================================================================== + * Flush the bit buffer, keeping at most 7 bits in it. + */ +local void bi_flush(s) + deflate_state *s; +{ + if (s->bi_valid == 16) { + put_short(s, s->bi_buf); + s->bi_buf = 0; + s->bi_valid = 0; + } else if (s->bi_valid >= 8) { + put_byte(s, (Byte)s->bi_buf); + s->bi_buf >>= 8; + s->bi_valid -= 8; + } +} + +/* =========================================================================== + * Flush the bit buffer and align the output on a byte boundary + */ +local void bi_windup(s) + deflate_state *s; +{ + if (s->bi_valid > 8) { + put_short(s, s->bi_buf); + } else if (s->bi_valid > 0) { + put_byte(s, (Byte)s->bi_buf); + } + s->bi_buf = 0; + s->bi_valid = 0; +#ifdef DEBUG + s->bits_sent = (s->bits_sent+7) & ~7; +#endif +} + +/* =========================================================================== + * Copy a stored block, storing first the length and its + * one's complement if requested. + */ +local void copy_block(s, buf, len, header) + deflate_state *s; + charf *buf; /* the input data */ + unsigned len; /* its length */ + int header; /* true if block header must be written */ +{ + bi_windup(s); /* align on byte boundary */ + s->last_eob_len = 8; /* enough lookahead for inflate */ + + if (header) { + put_short(s, (ush)len); + put_short(s, (ush)~len); +#ifdef DEBUG + s->bits_sent += 2*16; +#endif + } +#ifdef DEBUG + s->bits_sent += (ulg)len<<3; +#endif + while (len--) { + put_byte(s, *buf++); + } +} diff --git a/3party_sloynik/zlib/trees.h b/3party_sloynik/zlib/trees.h new file mode 100644 index 0000000000..d35639d82a --- /dev/null +++ b/3party_sloynik/zlib/trees.h @@ -0,0 +1,128 @@ +/* header created automatically with -DGEN_TREES_H */ + +local const ct_data static_ltree[L_CODES+2] = { +{{ 12},{ 8}}, {{140},{ 8}}, {{ 76},{ 8}}, {{204},{ 8}}, {{ 44},{ 8}}, +{{172},{ 8}}, {{108},{ 8}}, {{236},{ 8}}, {{ 28},{ 8}}, {{156},{ 8}}, +{{ 92},{ 8}}, {{220},{ 8}}, {{ 60},{ 8}}, {{188},{ 8}}, {{124},{ 8}}, +{{252},{ 8}}, {{ 2},{ 8}}, {{130},{ 8}}, {{ 66},{ 8}}, {{194},{ 8}}, +{{ 34},{ 8}}, {{162},{ 8}}, {{ 98},{ 8}}, {{226},{ 8}}, {{ 18},{ 8}}, +{{146},{ 8}}, {{ 82},{ 8}}, {{210},{ 8}}, {{ 50},{ 8}}, {{178},{ 8}}, +{{114},{ 8}}, {{242},{ 8}}, {{ 10},{ 8}}, {{138},{ 8}}, {{ 74},{ 8}}, +{{202},{ 8}}, {{ 42},{ 8}}, {{170},{ 8}}, {{106},{ 8}}, {{234},{ 8}}, +{{ 26},{ 8}}, {{154},{ 8}}, {{ 90},{ 8}}, {{218},{ 8}}, {{ 58},{ 8}}, +{{186},{ 8}}, {{122},{ 8}}, {{250},{ 8}}, {{ 6},{ 8}}, {{134},{ 8}}, +{{ 70},{ 8}}, {{198},{ 8}}, {{ 38},{ 8}}, {{166},{ 8}}, {{102},{ 8}}, +{{230},{ 8}}, {{ 22},{ 8}}, {{150},{ 8}}, {{ 86},{ 8}}, {{214},{ 8}}, +{{ 54},{ 8}}, {{182},{ 8}}, {{118},{ 8}}, {{246},{ 8}}, {{ 14},{ 8}}, +{{142},{ 8}}, {{ 78},{ 8}}, {{206},{ 8}}, {{ 46},{ 8}}, {{174},{ 8}}, +{{110},{ 8}}, {{238},{ 8}}, {{ 30},{ 8}}, {{158},{ 8}}, {{ 94},{ 8}}, +{{222},{ 8}}, {{ 62},{ 8}}, {{190},{ 8}}, {{126},{ 8}}, {{254},{ 8}}, +{{ 1},{ 8}}, {{129},{ 8}}, {{ 65},{ 8}}, {{193},{ 8}}, {{ 33},{ 8}}, +{{161},{ 8}}, {{ 97},{ 8}}, {{225},{ 8}}, {{ 17},{ 8}}, {{145},{ 8}}, +{{ 81},{ 8}}, {{209},{ 8}}, {{ 49},{ 8}}, {{177},{ 8}}, {{113},{ 8}}, +{{241},{ 8}}, {{ 9},{ 8}}, {{137},{ 8}}, {{ 73},{ 8}}, {{201},{ 8}}, +{{ 41},{ 8}}, {{169},{ 8}}, {{105},{ 8}}, {{233},{ 8}}, {{ 25},{ 8}}, +{{153},{ 8}}, {{ 89},{ 8}}, {{217},{ 8}}, {{ 57},{ 8}}, {{185},{ 8}}, +{{121},{ 8}}, {{249},{ 8}}, {{ 5},{ 8}}, {{133},{ 8}}, {{ 69},{ 8}}, +{{197},{ 8}}, {{ 37},{ 8}}, {{165},{ 8}}, {{101},{ 8}}, {{229},{ 8}}, +{{ 21},{ 8}}, {{149},{ 8}}, {{ 85},{ 8}}, {{213},{ 8}}, {{ 53},{ 8}}, +{{181},{ 8}}, {{117},{ 8}}, {{245},{ 8}}, {{ 13},{ 8}}, {{141},{ 8}}, +{{ 77},{ 8}}, {{205},{ 8}}, {{ 45},{ 8}}, {{173},{ 8}}, {{109},{ 8}}, +{{237},{ 8}}, {{ 29},{ 8}}, {{157},{ 8}}, {{ 93},{ 8}}, {{221},{ 8}}, +{{ 61},{ 8}}, {{189},{ 8}}, {{125},{ 8}}, {{253},{ 8}}, {{ 19},{ 9}}, +{{275},{ 9}}, {{147},{ 9}}, {{403},{ 9}}, {{ 83},{ 9}}, {{339},{ 9}}, +{{211},{ 9}}, {{467},{ 9}}, {{ 51},{ 9}}, {{307},{ 9}}, {{179},{ 9}}, +{{435},{ 9}}, {{115},{ 9}}, {{371},{ 9}}, {{243},{ 9}}, {{499},{ 9}}, +{{ 11},{ 9}}, {{267},{ 9}}, {{139},{ 9}}, {{395},{ 9}}, {{ 75},{ 9}}, +{{331},{ 9}}, {{203},{ 9}}, {{459},{ 9}}, {{ 43},{ 9}}, {{299},{ 9}}, +{{171},{ 9}}, {{427},{ 9}}, {{107},{ 9}}, {{363},{ 9}}, {{235},{ 9}}, +{{491},{ 9}}, {{ 27},{ 9}}, {{283},{ 9}}, {{155},{ 9}}, {{411},{ 9}}, +{{ 91},{ 9}}, {{347},{ 9}}, {{219},{ 9}}, {{475},{ 9}}, {{ 59},{ 9}}, +{{315},{ 9}}, {{187},{ 9}}, {{443},{ 9}}, {{123},{ 9}}, {{379},{ 9}}, +{{251},{ 9}}, {{507},{ 9}}, {{ 7},{ 9}}, {{263},{ 9}}, {{135},{ 9}}, +{{391},{ 9}}, {{ 71},{ 9}}, {{327},{ 9}}, {{199},{ 9}}, {{455},{ 9}}, +{{ 39},{ 9}}, {{295},{ 9}}, {{167},{ 9}}, {{423},{ 9}}, {{103},{ 9}}, +{{359},{ 9}}, {{231},{ 9}}, {{487},{ 9}}, {{ 23},{ 9}}, {{279},{ 9}}, +{{151},{ 9}}, {{407},{ 9}}, {{ 87},{ 9}}, {{343},{ 9}}, {{215},{ 9}}, +{{471},{ 9}}, {{ 55},{ 9}}, {{311},{ 9}}, {{183},{ 9}}, {{439},{ 9}}, +{{119},{ 9}}, {{375},{ 9}}, {{247},{ 9}}, {{503},{ 9}}, {{ 15},{ 9}}, +{{271},{ 9}}, {{143},{ 9}}, {{399},{ 9}}, {{ 79},{ 9}}, {{335},{ 9}}, +{{207},{ 9}}, {{463},{ 9}}, {{ 47},{ 9}}, {{303},{ 9}}, {{175},{ 9}}, +{{431},{ 9}}, {{111},{ 9}}, {{367},{ 9}}, {{239},{ 9}}, {{495},{ 9}}, +{{ 31},{ 9}}, {{287},{ 9}}, {{159},{ 9}}, {{415},{ 9}}, {{ 95},{ 9}}, +{{351},{ 9}}, {{223},{ 9}}, {{479},{ 9}}, {{ 63},{ 9}}, {{319},{ 9}}, +{{191},{ 9}}, {{447},{ 9}}, {{127},{ 9}}, {{383},{ 9}}, {{255},{ 9}}, +{{511},{ 9}}, {{ 0},{ 7}}, {{ 64},{ 7}}, {{ 32},{ 7}}, {{ 96},{ 7}}, +{{ 16},{ 7}}, {{ 80},{ 7}}, {{ 48},{ 7}}, {{112},{ 7}}, {{ 8},{ 7}}, +{{ 72},{ 7}}, {{ 40},{ 7}}, {{104},{ 7}}, {{ 24},{ 7}}, {{ 88},{ 7}}, +{{ 56},{ 7}}, {{120},{ 7}}, {{ 4},{ 7}}, {{ 68},{ 7}}, {{ 36},{ 7}}, +{{100},{ 7}}, {{ 20},{ 7}}, {{ 84},{ 7}}, {{ 52},{ 7}}, {{116},{ 7}}, +{{ 3},{ 8}}, {{131},{ 8}}, {{ 67},{ 8}}, {{195},{ 8}}, {{ 35},{ 8}}, +{{163},{ 8}}, {{ 99},{ 8}}, {{227},{ 8}} +}; + +local const ct_data static_dtree[D_CODES] = { +{{ 0},{ 5}}, {{16},{ 5}}, {{ 8},{ 5}}, {{24},{ 5}}, {{ 4},{ 5}}, +{{20},{ 5}}, {{12},{ 5}}, {{28},{ 5}}, {{ 2},{ 5}}, {{18},{ 5}}, +{{10},{ 5}}, {{26},{ 5}}, {{ 6},{ 5}}, {{22},{ 5}}, {{14},{ 5}}, +{{30},{ 5}}, {{ 1},{ 5}}, {{17},{ 5}}, {{ 9},{ 5}}, {{25},{ 5}}, +{{ 5},{ 5}}, {{21},{ 5}}, {{13},{ 5}}, {{29},{ 5}}, {{ 3},{ 5}}, +{{19},{ 5}}, {{11},{ 5}}, {{27},{ 5}}, {{ 7},{ 5}}, {{23},{ 5}} +}; + +const uch ZLIB_INTERNAL _dist_code[DIST_CODE_LEN] = { + 0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, + 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, +10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, +11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, +12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, +13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, +13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, +14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, +14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, +14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, +15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, +15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, +15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17, +18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, +23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, +24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, +26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, +26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, +27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, +27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, +28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, +28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, +28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, +29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, +29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, +29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29 +}; + +const uch ZLIB_INTERNAL _length_code[MAX_MATCH-MIN_MATCH+1]= { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, +13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, +17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, +19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, +21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, +22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, +23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, +24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, +25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, +25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, +26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, +26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, +27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28 +}; + +local const int base_length[LENGTH_CODES] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, +64, 80, 96, 112, 128, 160, 192, 224, 0 +}; + +local const int base_dist[D_CODES] = { + 0, 1, 2, 3, 4, 6, 8, 12, 16, 24, + 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, + 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576 +}; + diff --git a/3party_sloynik/zlib/uncompr.c b/3party_sloynik/zlib/uncompr.c new file mode 100644 index 0000000000..ad98be3a5d --- /dev/null +++ b/3party_sloynik/zlib/uncompr.c @@ -0,0 +1,59 @@ +/* uncompr.c -- decompress a memory buffer + * Copyright (C) 1995-2003, 2010 Jean-loup Gailly. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#define ZLIB_INTERNAL +#include "zlib.h" + +/* =========================================================================== + Decompresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total + size of the destination buffer, which must be large enough to hold the + entire uncompressed data. (The size of the uncompressed data must have + been saved previously by the compressor and transmitted to the decompressor + by some mechanism outside the scope of this compression library.) + Upon exit, destLen is the actual size of the compressed buffer. + + uncompress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer, or Z_DATA_ERROR if the input data was corrupted. +*/ +int ZEXPORT uncompress (dest, destLen, source, sourceLen) + Bytef *dest; + uLongf *destLen; + const Bytef *source; + uLong sourceLen; +{ + z_stream stream; + int err; + + stream.next_in = (Bytef*)source; + stream.avail_in = (uInt)sourceLen; + /* Check for source > 64K on 16-bit machine: */ + if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR; + + stream.next_out = dest; + stream.avail_out = (uInt)*destLen; + if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR; + + stream.zalloc = (alloc_func)0; + stream.zfree = (free_func)0; + + err = inflateInit(&stream); + if (err != Z_OK) return err; + + err = inflate(&stream, Z_FINISH); + if (err != Z_STREAM_END) { + inflateEnd(&stream); + if (err == Z_NEED_DICT || (err == Z_BUF_ERROR && stream.avail_in == 0)) + return Z_DATA_ERROR; + return err; + } + *destLen = stream.total_out; + + err = inflateEnd(&stream); + return err; +} diff --git a/3party_sloynik/zlib/zconf.h b/3party_sloynik/zlib/zconf.h new file mode 100644 index 0000000000..b234387442 --- /dev/null +++ b/3party_sloynik/zlib/zconf.h @@ -0,0 +1,428 @@ +/* zconf.h -- configuration of the zlib compression library + * Copyright (C) 1995-2010 Jean-loup Gailly. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#ifndef ZCONF_H +#define ZCONF_H + +/* + * If you *really* need a unique prefix for all types and library functions, + * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. + * Even better than compiling with -DZ_PREFIX would be to use configure to set + * this permanently in zconf.h using "./configure --zprefix". + */ +#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ + +/* all linked symbols */ +# define _dist_code z__dist_code +# define _length_code z__length_code +# define _tr_align z__tr_align +# define _tr_flush_block z__tr_flush_block +# define _tr_init z__tr_init +# define _tr_stored_block z__tr_stored_block +# define _tr_tally z__tr_tally +# define adler32 z_adler32 +# define adler32_combine z_adler32_combine +# define adler32_combine64 z_adler32_combine64 +# define compress z_compress +# define compress2 z_compress2 +# define compressBound z_compressBound +# define crc32 z_crc32 +# define crc32_combine z_crc32_combine +# define crc32_combine64 z_crc32_combine64 +# define deflate z_deflate +# define deflateBound z_deflateBound +# define deflateCopy z_deflateCopy +# define deflateEnd z_deflateEnd +# define deflateInit2_ z_deflateInit2_ +# define deflateInit_ z_deflateInit_ +# define deflateParams z_deflateParams +# define deflatePrime z_deflatePrime +# define deflateReset z_deflateReset +# define deflateSetDictionary z_deflateSetDictionary +# define deflateSetHeader z_deflateSetHeader +# define deflateTune z_deflateTune +# define deflate_copyright z_deflate_copyright +# define get_crc_table z_get_crc_table +# define gz_error z_gz_error +# define gz_intmax z_gz_intmax +# define gz_strwinerror z_gz_strwinerror +# define gzbuffer z_gzbuffer +# define gzclearerr z_gzclearerr +# define gzclose z_gzclose +# define gzclose_r z_gzclose_r +# define gzclose_w z_gzclose_w +# define gzdirect z_gzdirect +# define gzdopen z_gzdopen +# define gzeof z_gzeof +# define gzerror z_gzerror +# define gzflush z_gzflush +# define gzgetc z_gzgetc +# define gzgets z_gzgets +# define gzoffset z_gzoffset +# define gzoffset64 z_gzoffset64 +# define gzopen z_gzopen +# define gzopen64 z_gzopen64 +# define gzprintf z_gzprintf +# define gzputc z_gzputc +# define gzputs z_gzputs +# define gzread z_gzread +# define gzrewind z_gzrewind +# define gzseek z_gzseek +# define gzseek64 z_gzseek64 +# define gzsetparams z_gzsetparams +# define gztell z_gztell +# define gztell64 z_gztell64 +# define gzungetc z_gzungetc +# define gzwrite z_gzwrite +# define inflate z_inflate +# define inflateBack z_inflateBack +# define inflateBackEnd z_inflateBackEnd +# define inflateBackInit_ z_inflateBackInit_ +# define inflateCopy z_inflateCopy +# define inflateEnd z_inflateEnd +# define inflateGetHeader z_inflateGetHeader +# define inflateInit2_ z_inflateInit2_ +# define inflateInit_ z_inflateInit_ +# define inflateMark z_inflateMark +# define inflatePrime z_inflatePrime +# define inflateReset z_inflateReset +# define inflateReset2 z_inflateReset2 +# define inflateSetDictionary z_inflateSetDictionary +# define inflateSync z_inflateSync +# define inflateSyncPoint z_inflateSyncPoint +# define inflateUndermine z_inflateUndermine +# define inflate_copyright z_inflate_copyright +# define inflate_fast z_inflate_fast +# define inflate_table z_inflate_table +# define uncompress z_uncompress +# define zError z_zError +# define zcalloc z_zcalloc +# define zcfree z_zcfree +# define zlibCompileFlags z_zlibCompileFlags +# define zlibVersion z_zlibVersion + +/* all zlib typedefs in zlib.h and zconf.h */ +# define Byte z_Byte +# define Bytef z_Bytef +# define alloc_func z_alloc_func +# define charf z_charf +# define free_func z_free_func +# define gzFile z_gzFile +# define gz_header z_gz_header +# define gz_headerp z_gz_headerp +# define in_func z_in_func +# define intf z_intf +# define out_func z_out_func +# define uInt z_uInt +# define uIntf z_uIntf +# define uLong z_uLong +# define uLongf z_uLongf +# define voidp z_voidp +# define voidpc z_voidpc +# define voidpf z_voidpf + +/* all zlib structs in zlib.h and zconf.h */ +# define gz_header_s z_gz_header_s +# define internal_state z_internal_state + +#endif + +#if defined(__MSDOS__) && !defined(MSDOS) +# define MSDOS +#endif +#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) +# define OS2 +#endif +#if defined(_WINDOWS) && !defined(WINDOWS) +# define WINDOWS +#endif +#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) +# ifndef WIN32 +# define WIN32 +# endif +#endif +#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) +# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) +# ifndef SYS16BIT +# define SYS16BIT +# endif +# endif +#endif + +/* + * Compile with -DMAXSEG_64K if the alloc function cannot allocate more + * than 64k bytes at a time (needed on systems with 16-bit int). + */ +#ifdef SYS16BIT +# define MAXSEG_64K +#endif +#ifdef MSDOS +# define UNALIGNED_OK +#endif + +#ifdef __STDC_VERSION__ +# ifndef STDC +# define STDC +# endif +# if __STDC_VERSION__ >= 199901L +# ifndef STDC99 +# define STDC99 +# endif +# endif +#endif +#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) +# define STDC +#endif +#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) +# define STDC +#endif +#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) +# define STDC +#endif +#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) +# define STDC +#endif + +#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ +# define STDC +#endif + +#ifndef STDC +# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ +# define const /* note: need a more gentle solution here */ +# endif +#endif + +/* Some Mac compilers merge all .h files incorrectly: */ +#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) +# define NO_DUMMY_DECL +#endif + +/* Maximum value for memLevel in deflateInit2 */ +#ifndef MAX_MEM_LEVEL +# ifdef MAXSEG_64K +# define MAX_MEM_LEVEL 8 +# else +# define MAX_MEM_LEVEL 9 +# endif +#endif + +/* Maximum value for windowBits in deflateInit2 and inflateInit2. + * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files + * created by gzip. (Files created by minigzip can still be extracted by + * gzip.) + */ +#ifndef MAX_WBITS +# define MAX_WBITS 15 /* 32K LZ77 window */ +#endif + +/* The memory requirements for deflate are (in bytes): + (1 << (windowBits+2)) + (1 << (memLevel+9)) + that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) + plus a few kilobytes for small objects. For example, if you want to reduce + the default memory requirements from 256K to 128K, compile with + make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" + Of course this will generally degrade compression (there's no free lunch). + + The memory requirements for inflate are (in bytes) 1 << windowBits + that is, 32K for windowBits=15 (default value) plus a few kilobytes + for small objects. +*/ + + /* Type declarations */ + +#ifndef OF /* function prototypes */ +# ifdef STDC +# define OF(args) args +# else +# define OF(args) () +# endif +#endif + +/* The following definitions for FAR are needed only for MSDOS mixed + * model programming (small or medium model with some far allocations). + * This was tested only with MSC; for other MSDOS compilers you may have + * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, + * just define FAR to be empty. + */ +#ifdef SYS16BIT +# if defined(M_I86SM) || defined(M_I86MM) + /* MSC small or medium model */ +# define SMALL_MEDIUM +# ifdef _MSC_VER +# define FAR _far +# else +# define FAR far +# endif +# endif +# if (defined(__SMALL__) || defined(__MEDIUM__)) + /* Turbo C small or medium model */ +# define SMALL_MEDIUM +# ifdef __BORLANDC__ +# define FAR _far +# else +# define FAR far +# endif +# endif +#endif + +#if defined(WINDOWS) || defined(WIN32) + /* If building or using zlib as a DLL, define ZLIB_DLL. + * This is not mandatory, but it offers a little performance increase. + */ +# ifdef ZLIB_DLL +# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) +# ifdef ZLIB_INTERNAL +# define ZEXTERN extern __declspec(dllexport) +# else +# define ZEXTERN extern __declspec(dllimport) +# endif +# endif +# endif /* ZLIB_DLL */ + /* If building or using zlib with the WINAPI/WINAPIV calling convention, + * define ZLIB_WINAPI. + * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. + */ +# ifdef ZLIB_WINAPI +# ifdef FAR +# undef FAR +# endif +# include + /* No need for _export, use ZLIB.DEF instead. */ + /* For complete Windows compatibility, use WINAPI, not __stdcall. */ +# define ZEXPORT WINAPI +# ifdef WIN32 +# define ZEXPORTVA WINAPIV +# else +# define ZEXPORTVA FAR CDECL +# endif +# endif +#endif + +#if defined (__BEOS__) +# ifdef ZLIB_DLL +# ifdef ZLIB_INTERNAL +# define ZEXPORT __declspec(dllexport) +# define ZEXPORTVA __declspec(dllexport) +# else +# define ZEXPORT __declspec(dllimport) +# define ZEXPORTVA __declspec(dllimport) +# endif +# endif +#endif + +#ifndef ZEXTERN +# define ZEXTERN extern +#endif +#ifndef ZEXPORT +# define ZEXPORT +#endif +#ifndef ZEXPORTVA +# define ZEXPORTVA +#endif + +#ifndef FAR +# define FAR +#endif + +#if !defined(__MACTYPES__) +typedef unsigned char Byte; /* 8 bits */ +#endif +typedef unsigned int uInt; /* 16 bits or more */ +typedef unsigned long uLong; /* 32 bits or more */ + +#ifdef SMALL_MEDIUM + /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ +# define Bytef Byte FAR +#else + typedef Byte FAR Bytef; +#endif +typedef char FAR charf; +typedef int FAR intf; +typedef uInt FAR uIntf; +typedef uLong FAR uLongf; + +#ifdef STDC + typedef void const *voidpc; + typedef void FAR *voidpf; + typedef void *voidp; +#else + typedef Byte const *voidpc; + typedef Byte FAR *voidpf; + typedef Byte *voidp; +#endif + +#if 1 /* was set to #if 1 by ./configure */ +# define Z_HAVE_UNISTD_H +#endif + +#ifdef STDC +# include /* for off_t */ +#endif + +/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and + * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even + * though the former does not conform to the LFS document), but considering + * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as + * equivalently requesting no 64-bit operations + */ +#if -_LARGEFILE64_SOURCE - -1 == 1 +# undef _LARGEFILE64_SOURCE +#endif + +#if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) +# include /* for SEEK_* and off_t */ +# ifdef VMS +# include /* for off_t */ +# endif +# ifndef z_off_t +# define z_off_t off_t +# endif +#endif + +#ifndef SEEK_SET +# define SEEK_SET 0 /* Seek from beginning of file. */ +# define SEEK_CUR 1 /* Seek from current position. */ +# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ +#endif + +#ifndef z_off_t +# define z_off_t long +#endif + +#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 +# define z_off64_t off64_t +#else +# define z_off64_t z_off_t +#endif + +#if defined(__OS400__) +# define NO_vsnprintf +#endif + +#if defined(__MVS__) +# define NO_vsnprintf +#endif + +/* MVS linker does not support external names larger than 8 bytes */ +#if defined(__MVS__) + #pragma map(deflateInit_,"DEIN") + #pragma map(deflateInit2_,"DEIN2") + #pragma map(deflateEnd,"DEEND") + #pragma map(deflateBound,"DEBND") + #pragma map(inflateInit_,"ININ") + #pragma map(inflateInit2_,"ININ2") + #pragma map(inflateEnd,"INEND") + #pragma map(inflateSync,"INSY") + #pragma map(inflateSetDictionary,"INSEDI") + #pragma map(compressBound,"CMBND") + #pragma map(inflate_table,"INTABL") + #pragma map(inflate_fast,"INFA") + #pragma map(inflate_copyright,"INCOPY") +#endif + +#endif /* ZCONF_H */ diff --git a/3party_sloynik/zlib/zlib.h b/3party_sloynik/zlib/zlib.h new file mode 100644 index 0000000000..bfbba83e8e --- /dev/null +++ b/3party_sloynik/zlib/zlib.h @@ -0,0 +1,1613 @@ +/* zlib.h -- interface of the 'zlib' general purpose compression library + version 1.2.5, April 19th, 2010 + + Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + + + The data format used by the zlib library is described by RFCs (Request for + Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt + (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format). +*/ + +#ifndef ZLIB_H +#define ZLIB_H + +#include "zconf.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define ZLIB_VERSION "1.2.5" +#define ZLIB_VERNUM 0x1250 +#define ZLIB_VER_MAJOR 1 +#define ZLIB_VER_MINOR 2 +#define ZLIB_VER_REVISION 5 +#define ZLIB_VER_SUBREVISION 0 + +/* + The 'zlib' compression library provides in-memory compression and + decompression functions, including integrity checks of the uncompressed data. + This version of the library supports only one compression method (deflation) + but other algorithms will be added later and will have the same stream + interface. + + Compression can be done in a single step if the buffers are large enough, + or can be done by repeated calls of the compression function. In the latter + case, the application must provide more input and/or consume the output + (providing more output space) before each call. + + The compressed data format used by default by the in-memory functions is + the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped + around a deflate stream, which is itself documented in RFC 1951. + + The library also supports reading and writing files in gzip (.gz) format + with an interface similar to that of stdio using the functions that start + with "gz". The gzip format is different from the zlib format. gzip is a + gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. + + This library can optionally read and write gzip streams in memory as well. + + The zlib format was designed to be compact and fast for use in memory + and on communications channels. The gzip format was designed for single- + file compression on file systems, has a larger header than zlib to maintain + directory information, and uses a different, slower check method than zlib. + + The library does not install any signal handler. The decoder checks + the consistency of the compressed data, so the library should never crash + even in case of corrupted input. +*/ + +typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); +typedef void (*free_func) OF((voidpf opaque, voidpf address)); + +struct internal_state; + +typedef struct z_stream_s { + Bytef *next_in; /* next input byte */ + uInt avail_in; /* number of bytes available at next_in */ + uLong total_in; /* total nb of input bytes read so far */ + + Bytef *next_out; /* next output byte should be put there */ + uInt avail_out; /* remaining free space at next_out */ + uLong total_out; /* total nb of bytes output so far */ + + char *msg; /* last error message, NULL if no error */ + struct internal_state FAR *state; /* not visible by applications */ + + alloc_func zalloc; /* used to allocate the internal state */ + free_func zfree; /* used to free the internal state */ + voidpf opaque; /* private data object passed to zalloc and zfree */ + + int data_type; /* best guess about the data type: binary or text */ + uLong adler; /* adler32 value of the uncompressed data */ + uLong reserved; /* reserved for future use */ +} z_stream; + +typedef z_stream FAR *z_streamp; + +/* + gzip header information passed to and from zlib routines. See RFC 1952 + for more details on the meanings of these fields. +*/ +typedef struct gz_header_s { + int text; /* true if compressed data believed to be text */ + uLong time; /* modification time */ + int xflags; /* extra flags (not used when writing a gzip file) */ + int os; /* operating system */ + Bytef *extra; /* pointer to extra field or Z_NULL if none */ + uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ + uInt extra_max; /* space at extra (only when reading header) */ + Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ + uInt name_max; /* space at name (only when reading header) */ + Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ + uInt comm_max; /* space at comment (only when reading header) */ + int hcrc; /* true if there was or will be a header crc */ + int done; /* true when done reading gzip header (not used + when writing a gzip file) */ +} gz_header; + +typedef gz_header FAR *gz_headerp; + +/* + The application must update next_in and avail_in when avail_in has dropped + to zero. It must update next_out and avail_out when avail_out has dropped + to zero. The application must initialize zalloc, zfree and opaque before + calling the init function. All other fields are set by the compression + library and must not be updated by the application. + + The opaque value provided by the application will be passed as the first + parameter for calls of zalloc and zfree. This can be useful for custom + memory management. The compression library attaches no meaning to the + opaque value. + + zalloc must return Z_NULL if there is not enough memory for the object. + If zlib is used in a multi-threaded application, zalloc and zfree must be + thread safe. + + On 16-bit systems, the functions zalloc and zfree must be able to allocate + exactly 65536 bytes, but will not be required to allocate more than this if + the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, pointers + returned by zalloc for objects of exactly 65536 bytes *must* have their + offset normalized to zero. The default allocation function provided by this + library ensures this (see zutil.c). To reduce memory requirements and avoid + any allocation of 64K objects, at the expense of compression ratio, compile + the library with -DMAX_WBITS=14 (see zconf.h). + + The fields total_in and total_out can be used for statistics or progress + reports. After compression, total_in holds the total size of the + uncompressed data and may be saved for use in the decompressor (particularly + if the decompressor wants to decompress everything in a single step). +*/ + + /* constants */ + +#define Z_NO_FLUSH 0 +#define Z_PARTIAL_FLUSH 1 +#define Z_SYNC_FLUSH 2 +#define Z_FULL_FLUSH 3 +#define Z_FINISH 4 +#define Z_BLOCK 5 +#define Z_TREES 6 +/* Allowed flush values; see deflate() and inflate() below for details */ + +#define Z_OK 0 +#define Z_STREAM_END 1 +#define Z_NEED_DICT 2 +#define Z_ERRNO (-1) +#define Z_STREAM_ERROR (-2) +#define Z_DATA_ERROR (-3) +#define Z_MEM_ERROR (-4) +#define Z_BUF_ERROR (-5) +#define Z_VERSION_ERROR (-6) +/* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ + +#define Z_NO_COMPRESSION 0 +#define Z_BEST_SPEED 1 +#define Z_BEST_COMPRESSION 9 +#define Z_DEFAULT_COMPRESSION (-1) +/* compression levels */ + +#define Z_FILTERED 1 +#define Z_HUFFMAN_ONLY 2 +#define Z_RLE 3 +#define Z_FIXED 4 +#define Z_DEFAULT_STRATEGY 0 +/* compression strategy; see deflateInit2() below for details */ + +#define Z_BINARY 0 +#define Z_TEXT 1 +#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ +#define Z_UNKNOWN 2 +/* Possible values of the data_type field (though see inflate()) */ + +#define Z_DEFLATED 8 +/* The deflate compression method (the only one supported in this version) */ + +#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ + +#define zlib_version zlibVersion() +/* for compatibility with versions < 1.0.2 */ + + + /* basic functions */ + +ZEXTERN const char * ZEXPORT zlibVersion OF((void)); +/* The application can compare zlibVersion and ZLIB_VERSION for consistency. + If the first character differs, the library code actually used is not + compatible with the zlib.h header file used by the application. This check + is automatically made by deflateInit and inflateInit. + */ + +/* +ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); + + Initializes the internal stream state for compression. The fields + zalloc, zfree and opaque must be initialized before by the caller. If + zalloc and zfree are set to Z_NULL, deflateInit updates them to use default + allocation functions. + + The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: + 1 gives best speed, 9 gives best compression, 0 gives no compression at all + (the input data is simply copied a block at a time). Z_DEFAULT_COMPRESSION + requests a default compromise between speed and compression (currently + equivalent to level 6). + + deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if level is not a valid compression level, or + Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible + with the version assumed by the caller (ZLIB_VERSION). msg is set to null + if there is no error message. deflateInit does not perform any compression: + this will be done by deflate(). +*/ + + +ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); +/* + deflate compresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce + some output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. deflate performs one or both of the + following actions: + + - Compress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), next_in and avail_in are updated and + processing will resume at this point for the next call of deflate(). + + - Provide more output starting at next_out and update next_out and avail_out + accordingly. This action is forced if the parameter flush is non zero. + Forcing flush frequently degrades the compression ratio, so this parameter + should be set only when necessary (in interactive applications). Some + output may be provided even if flush is not set. + + Before the call of deflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming more + output, and updating avail_in or avail_out accordingly; avail_out should + never be zero before the call. The application can consume the compressed + output when it wants, for example when the output buffer is full (avail_out + == 0), or after each call of deflate(). If deflate returns Z_OK and with + zero avail_out, it must be called again after making room in the output + buffer because there might be more output pending. + + Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to + decide how much data to accumulate before producing output, in order to + maximize compression. + + If the parameter flush is set to Z_SYNC_FLUSH, all pending output is + flushed to the output buffer and the output is aligned on a byte boundary, so + that the decompressor can get all input data available so far. (In + particular avail_in is zero after the call if enough output space has been + provided before the call.) Flushing may degrade compression for some + compression algorithms and so it should be used only when necessary. This + completes the current deflate block and follows it with an empty stored block + that is three bits plus filler bits to the next byte, followed by four bytes + (00 00 ff ff). + + If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the + output buffer, but the output is not aligned to a byte boundary. All of the + input data so far will be available to the decompressor, as for Z_SYNC_FLUSH. + This completes the current deflate block and follows it with an empty fixed + codes block that is 10 bits long. This assures that enough bytes are output + in order for the decompressor to finish the block before the empty fixed code + block. + + If flush is set to Z_BLOCK, a deflate block is completed and emitted, as + for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to + seven bits of the current block are held to be written as the next byte after + the next deflate block is completed. In this case, the decompressor may not + be provided enough bits at this point in order to complete decompression of + the data provided so far to the compressor. It may need to wait for the next + block to be emitted. This is for advanced applications that need to control + the emission of deflate blocks. + + If flush is set to Z_FULL_FLUSH, all output is flushed as with + Z_SYNC_FLUSH, and the compression state is reset so that decompression can + restart from this point if previous compressed data has been damaged or if + random access is desired. Using Z_FULL_FLUSH too often can seriously degrade + compression. + + If deflate returns with avail_out == 0, this function must be called again + with the same value of the flush parameter and more output space (updated + avail_out), until the flush is complete (deflate returns with non-zero + avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that + avail_out is greater than six to avoid repeated flush markers due to + avail_out == 0 on return. + + If the parameter flush is set to Z_FINISH, pending input is processed, + pending output is flushed and deflate returns with Z_STREAM_END if there was + enough output space; if deflate returns with Z_OK, this function must be + called again with Z_FINISH and more output space (updated avail_out) but no + more input data, until it returns with Z_STREAM_END or an error. After + deflate has returned Z_STREAM_END, the only possible operations on the stream + are deflateReset or deflateEnd. + + Z_FINISH can be used immediately after deflateInit if all the compression + is to be done in a single step. In this case, avail_out must be at least the + value returned by deflateBound (see below). If deflate does not return + Z_STREAM_END, then it must be called again as described above. + + deflate() sets strm->adler to the adler32 checksum of all input read + so far (that is, total_in bytes). + + deflate() may update strm->data_type if it can make a good guess about + the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered + binary. This field is only for information purposes and does not affect the + compression algorithm in any manner. + + deflate() returns Z_OK if some progress has been made (more input + processed or more output produced), Z_STREAM_END if all input has been + consumed and all output has been produced (only when flush is set to + Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example + if next_in or next_out was Z_NULL), Z_BUF_ERROR if no progress is possible + (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not + fatal, and deflate() can be called again with more input and more output + space to continue compressing. +*/ + + +ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any pending + output. + + deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the + stream state was inconsistent, Z_DATA_ERROR if the stream was freed + prematurely (some input or output was discarded). In the error case, msg + may be set but then points to a static string (which must not be + deallocated). +*/ + + +/* +ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); + + Initializes the internal stream state for decompression. The fields + next_in, avail_in, zalloc, zfree and opaque must be initialized before by + the caller. If next_in is not Z_NULL and avail_in is large enough (the + exact value depends on the compression method), inflateInit determines the + compression method from the zlib header and allocates all data structures + accordingly; otherwise the allocation will be deferred to the first call of + inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to + use default allocation functions. + + inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_VERSION_ERROR if the zlib library version is incompatible with the + version assumed by the caller, or Z_STREAM_ERROR if the parameters are + invalid, such as a null pointer to the structure. msg is set to null if + there is no error message. inflateInit does not perform any decompression + apart from possibly reading the zlib header if present: actual decompression + will be done by inflate(). (So next_in and avail_in may be modified, but + next_out and avail_out are unused and unchanged.) The current implementation + of inflateInit() does not process any header information -- that is deferred + until inflate() is called. +*/ + + +ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); +/* + inflate decompresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce + some output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. inflate performs one or both of the + following actions: + + - Decompress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), next_in is updated and processing will + resume at this point for the next call of inflate(). + + - Provide more output starting at next_out and update next_out and avail_out + accordingly. inflate() provides as much output as possible, until there is + no more input data or no more space in the output buffer (see below about + the flush parameter). + + Before the call of inflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming more + output, and updating the next_* and avail_* values accordingly. The + application can consume the uncompressed output when it wants, for example + when the output buffer is full (avail_out == 0), or after each call of + inflate(). If inflate returns Z_OK and with zero avail_out, it must be + called again after making room in the output buffer because there might be + more output pending. + + The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH, + Z_BLOCK, or Z_TREES. Z_SYNC_FLUSH requests that inflate() flush as much + output as possible to the output buffer. Z_BLOCK requests that inflate() + stop if and when it gets to the next deflate block boundary. When decoding + the zlib or gzip format, this will cause inflate() to return immediately + after the header and before the first block. When doing a raw inflate, + inflate() will go ahead and process the first block, and will return when it + gets to the end of that block, or when it runs out of data. + + The Z_BLOCK option assists in appending to or combining deflate streams. + Also to assist in this, on return inflate() will set strm->data_type to the + number of unused bits in the last byte taken from strm->next_in, plus 64 if + inflate() is currently decoding the last block in the deflate stream, plus + 128 if inflate() returned immediately after decoding an end-of-block code or + decoding the complete header up to just before the first byte of the deflate + stream. The end-of-block will not be indicated until all of the uncompressed + data from that block has been written to strm->next_out. The number of + unused bits may in general be greater than seven, except when bit 7 of + data_type is set, in which case the number of unused bits will be less than + eight. data_type is set as noted here every time inflate() returns for all + flush options, and so can be used to determine the amount of currently + consumed input in bits. + + The Z_TREES option behaves as Z_BLOCK does, but it also returns when the + end of each deflate block header is reached, before any actual data in that + block is decoded. This allows the caller to determine the length of the + deflate block header for later use in random access within a deflate block. + 256 is added to the value of strm->data_type when inflate() returns + immediately after reaching the end of the deflate block header. + + inflate() should normally be called until it returns Z_STREAM_END or an + error. However if all decompression is to be performed in a single step (a + single call of inflate), the parameter flush should be set to Z_FINISH. In + this case all pending input is processed and all pending output is flushed; + avail_out must be large enough to hold all the uncompressed data. (The size + of the uncompressed data may have been saved by the compressor for this + purpose.) The next operation on this stream must be inflateEnd to deallocate + the decompression state. The use of Z_FINISH is never required, but can be + used to inform inflate that a faster approach may be used for the single + inflate() call. + + In this implementation, inflate() always flushes as much output as + possible to the output buffer, and always uses the faster approach on the + first call. So the only effect of the flush parameter in this implementation + is on the return value of inflate(), as noted below, or when it returns early + because Z_BLOCK or Z_TREES is used. + + If a preset dictionary is needed after this call (see inflateSetDictionary + below), inflate sets strm->adler to the adler32 checksum of the dictionary + chosen by the compressor and returns Z_NEED_DICT; otherwise it sets + strm->adler to the adler32 checksum of all output produced so far (that is, + total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described + below. At the end of the stream, inflate() checks that its computed adler32 + checksum is equal to that saved by the compressor and returns Z_STREAM_END + only if the checksum is correct. + + inflate() can decompress and check either zlib-wrapped or gzip-wrapped + deflate data. The header type is detected automatically, if requested when + initializing with inflateInit2(). Any information contained in the gzip + header is not retained, so applications that need that information should + instead use raw inflate, see inflateInit2() below, or inflateBack() and + perform their own processing of the gzip header and trailer. + + inflate() returns Z_OK if some progress has been made (more input processed + or more output produced), Z_STREAM_END if the end of the compressed data has + been reached and all uncompressed output has been produced, Z_NEED_DICT if a + preset dictionary is needed at this point, Z_DATA_ERROR if the input data was + corrupted (input stream not conforming to the zlib format or incorrect check + value), Z_STREAM_ERROR if the stream structure was inconsistent (for example + next_in or next_out was Z_NULL), Z_MEM_ERROR if there was not enough memory, + Z_BUF_ERROR if no progress is possible or if there was not enough room in the + output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and + inflate() can be called again with more input and more output space to + continue decompressing. If Z_DATA_ERROR is returned, the application may + then call inflateSync() to look for a good compression block if a partial + recovery of the data is desired. +*/ + + +ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any pending + output. + + inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state + was inconsistent. In the error case, msg may be set but then points to a + static string (which must not be deallocated). +*/ + + + /* Advanced functions */ + +/* + The following functions are needed only in some special applications. +*/ + +/* +ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, + int level, + int method, + int windowBits, + int memLevel, + int strategy)); + + This is another version of deflateInit with more compression options. The + fields next_in, zalloc, zfree and opaque must be initialized before by the + caller. + + The method parameter is the compression method. It must be Z_DEFLATED in + this version of the library. + + The windowBits parameter is the base two logarithm of the window size + (the size of the history buffer). It should be in the range 8..15 for this + version of the library. Larger values of this parameter result in better + compression at the expense of memory usage. The default value is 15 if + deflateInit is used instead. + + windowBits can also be -8..-15 for raw deflate. In this case, -windowBits + determines the window size. deflate() will then generate raw deflate data + with no zlib header or trailer, and will not compute an adler32 check value. + + windowBits can also be greater than 15 for optional gzip encoding. Add + 16 to windowBits to write a simple gzip header and trailer around the + compressed data instead of a zlib wrapper. The gzip header will have no + file name, no extra data, no comment, no modification time (set to zero), no + header crc, and the operating system will be set to 255 (unknown). If a + gzip stream is being written, strm->adler is a crc32 instead of an adler32. + + The memLevel parameter specifies how much memory should be allocated + for the internal compression state. memLevel=1 uses minimum memory but is + slow and reduces compression ratio; memLevel=9 uses maximum memory for + optimal speed. The default value is 8. See zconf.h for total memory usage + as a function of windowBits and memLevel. + + The strategy parameter is used to tune the compression algorithm. Use the + value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a + filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no + string match), or Z_RLE to limit match distances to one (run-length + encoding). Filtered data consists mostly of small values with a somewhat + random distribution. In this case, the compression algorithm is tuned to + compress them better. The effect of Z_FILTERED is to force more Huffman + coding and less string matching; it is somewhat intermediate between + Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as + fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The + strategy parameter only affects the compression ratio but not the + correctness of the compressed output even if it is not set appropriately. + Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler + decoder for special applications. + + deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid + method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is + incompatible with the version assumed by the caller (ZLIB_VERSION). msg is + set to null if there is no error message. deflateInit2 does not perform any + compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, + const Bytef *dictionary, + uInt dictLength)); +/* + Initializes the compression dictionary from the given byte sequence + without producing any compressed output. This function must be called + immediately after deflateInit, deflateInit2 or deflateReset, before any call + of deflate. The compressor and decompressor must use exactly the same + dictionary (see inflateSetDictionary). + + The dictionary should consist of strings (byte sequences) that are likely + to be encountered later in the data to be compressed, with the most commonly + used strings preferably put towards the end of the dictionary. Using a + dictionary is most useful when the data to be compressed is short and can be + predicted with good accuracy; the data can then be compressed better than + with the default empty dictionary. + + Depending on the size of the compression data structures selected by + deflateInit or deflateInit2, a part of the dictionary may in effect be + discarded, for example if the dictionary is larger than the window size + provided in deflateInit or deflateInit2. Thus the strings most likely to be + useful should be put at the end of the dictionary, not at the front. In + addition, the current implementation of deflate will use at most the window + size minus 262 bytes of the provided dictionary. + + Upon return of this function, strm->adler is set to the adler32 value + of the dictionary; the decompressor may later use this value to determine + which dictionary has been used by the compressor. (The adler32 value + applies to the whole dictionary even if only a subset of the dictionary is + actually used by the compressor.) If a raw deflate was requested, then the + adler32 value is not computed and strm->adler is not set. + + deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a + parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is + inconsistent (for example if deflate has already been called for this stream + or if the compression method is bsort). deflateSetDictionary does not + perform any compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, + z_streamp source)); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when several compression strategies will be + tried, for example when there are several ways of pre-processing the input + data with a filter. The streams that will be discarded should then be freed + by calling deflateEnd. Note that deflateCopy duplicates the internal + compression state which can be quite large, so this strategy is slow and can + consume lots of memory. + + deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being Z_NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); +/* + This function is equivalent to deflateEnd followed by deflateInit, + but does not free and reallocate all the internal compression state. The + stream will keep the same compression level and any other attributes that + may have been set by deflateInit2. + + deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL). +*/ + +ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, + int level, + int strategy)); +/* + Dynamically update the compression level and compression strategy. The + interpretation of level and strategy is as in deflateInit2. This can be + used to switch between compression and straight copy of the input data, or + to switch to a different kind of input data requiring a different strategy. + If the compression level is changed, the input available so far is + compressed with the old level (and may be flushed); the new level will take + effect only at the next call of deflate(). + + Before the call of deflateParams, the stream state must be set as for + a call of deflate(), since the currently available input may have to be + compressed and flushed. In particular, strm->avail_out must be non-zero. + + deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source + stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR if + strm->avail_out was zero. +*/ + +ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, + int good_length, + int max_lazy, + int nice_length, + int max_chain)); +/* + Fine tune deflate's internal compression parameters. This should only be + used by someone who understands the algorithm used by zlib's deflate for + searching for the best matching string, and even then only by the most + fanatic optimizer trying to squeeze out the last compressed bit for their + specific input data. Read the deflate.c source code for the meaning of the + max_lazy, good_length, nice_length, and max_chain parameters. + + deflateTune() can be called after deflateInit() or deflateInit2(), and + returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. + */ + +ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, + uLong sourceLen)); +/* + deflateBound() returns an upper bound on the compressed size after + deflation of sourceLen bytes. It must be called after deflateInit() or + deflateInit2(), and after deflateSetHeader(), if used. This would be used + to allocate an output buffer for deflation in a single pass, and so would be + called before deflate(). +*/ + +ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, + int bits, + int value)); +/* + deflatePrime() inserts bits in the deflate output stream. The intent + is that this function is used to start off the deflate output with the bits + leftover from a previous deflate stream when appending to it. As such, this + function can only be used for raw deflate, and must be used before the first + deflate() call after a deflateInit2() or deflateReset(). bits must be less + than or equal to 16, and that many of the least significant bits of value + will be inserted in the output. + + deflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, + gz_headerp head)); +/* + deflateSetHeader() provides gzip header information for when a gzip + stream is requested by deflateInit2(). deflateSetHeader() may be called + after deflateInit2() or deflateReset() and before the first call of + deflate(). The text, time, os, extra field, name, and comment information + in the provided gz_header structure are written to the gzip header (xflag is + ignored -- the extra flags are set according to the compression level). The + caller must assure that, if not Z_NULL, name and comment are terminated with + a zero byte, and that if extra is not Z_NULL, that extra_len bytes are + available there. If hcrc is true, a gzip header crc is included. Note that + the current versions of the command-line version of gzip (up through version + 1.3.x) do not support header crc's, and will report that it is a "multi-part + gzip file" and give up. + + If deflateSetHeader is not used, the default gzip header has text false, + the time set to zero, and os set to 255, with no extra, name, or comment + fields. The gzip header is returned to the default state by deflateReset(). + + deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, + int windowBits)); + + This is another version of inflateInit with an extra parameter. The + fields next_in, avail_in, zalloc, zfree and opaque must be initialized + before by the caller. + + The windowBits parameter is the base two logarithm of the maximum window + size (the size of the history buffer). It should be in the range 8..15 for + this version of the library. The default value is 15 if inflateInit is used + instead. windowBits must be greater than or equal to the windowBits value + provided to deflateInit2() while compressing, or it must be equal to 15 if + deflateInit2() was not used. If a compressed stream with a larger window + size is given as input, inflate() will return with the error code + Z_DATA_ERROR instead of trying to allocate a larger window. + + windowBits can also be zero to request that inflate use the window size in + the zlib header of the compressed stream. + + windowBits can also be -8..-15 for raw inflate. In this case, -windowBits + determines the window size. inflate() will then process raw deflate data, + not looking for a zlib or gzip header, not generating a check value, and not + looking for any check values for comparison at the end of the stream. This + is for use with other formats that use the deflate compressed data format + such as zip. Those formats provide their own check values. If a custom + format is developed using the raw deflate format for compressed data, it is + recommended that a check value such as an adler32 or a crc32 be applied to + the uncompressed data as is done in the zlib, gzip, and zip formats. For + most applications, the zlib format should be used as is. Note that comments + above on the use in deflateInit2() applies to the magnitude of windowBits. + + windowBits can also be greater than 15 for optional gzip decoding. Add + 32 to windowBits to enable zlib and gzip decoding with automatic header + detection, or add 16 to decode only the gzip format (the zlib format will + return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a + crc32 instead of an adler32. + + inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_VERSION_ERROR if the zlib library version is incompatible with the + version assumed by the caller, or Z_STREAM_ERROR if the parameters are + invalid, such as a null pointer to the structure. msg is set to null if + there is no error message. inflateInit2 does not perform any decompression + apart from possibly reading the zlib header if present: actual decompression + will be done by inflate(). (So next_in and avail_in may be modified, but + next_out and avail_out are unused and unchanged.) The current implementation + of inflateInit2() does not process any header information -- that is + deferred until inflate() is called. +*/ + +ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, + const Bytef *dictionary, + uInt dictLength)); +/* + Initializes the decompression dictionary from the given uncompressed byte + sequence. This function must be called immediately after a call of inflate, + if that call returned Z_NEED_DICT. The dictionary chosen by the compressor + can be determined from the adler32 value returned by that call of inflate. + The compressor and decompressor must use exactly the same dictionary (see + deflateSetDictionary). For raw inflate, this function can be called + immediately after inflateInit2() or inflateReset() and before any call of + inflate() to set the dictionary. The application must insure that the + dictionary that was used for compression is provided. + + inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a + parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is + inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the + expected one (incorrect adler32 value). inflateSetDictionary does not + perform any decompression: this will be done by subsequent calls of + inflate(). +*/ + +ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); +/* + Skips invalid compressed data until a full flush point (see above the + description of deflate with Z_FULL_FLUSH) can be found, or until all + available input is skipped. No output is provided. + + inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR + if no more input was provided, Z_DATA_ERROR if no flush point has been + found, or Z_STREAM_ERROR if the stream structure was inconsistent. In the + success case, the application may save the current current value of total_in + which indicates where valid compressed data was found. In the error case, + the application may repeatedly call inflateSync, providing more input each + time, until success or end of the input data. +*/ + +ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, + z_streamp source)); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when randomly accessing a large stream. The + first pass through the stream can periodically record the inflate state, + allowing restarting inflate at those points when randomly accessing the + stream. + + inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being Z_NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); +/* + This function is equivalent to inflateEnd followed by inflateInit, + but does not free and reallocate all the internal decompression state. The + stream will keep attributes that may have been set by inflateInit2. + + inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL). +*/ + +ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, + int windowBits)); +/* + This function is the same as inflateReset, but it also permits changing + the wrap and window size requests. The windowBits parameter is interpreted + the same as it is for inflateInit2. + + inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL), or if + the windowBits parameter is invalid. +*/ + +ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, + int bits, + int value)); +/* + This function inserts bits in the inflate input stream. The intent is + that this function is used to start inflating at a bit position in the + middle of a byte. The provided bits will be used before any bytes are used + from next_in. This function should only be used with raw inflate, and + should be used before the first inflate() call after inflateInit2() or + inflateReset(). bits must be less than or equal to 16, and that many of the + least significant bits of value will be inserted in the input. + + If bits is negative, then the input stream bit buffer is emptied. Then + inflatePrime() can be called again to put bits in the buffer. This is used + to clear out bits leftover after feeding inflate a block description prior + to feeding inflate codes. + + inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); +/* + This function returns two values, one in the lower 16 bits of the return + value, and the other in the remaining upper bits, obtained by shifting the + return value down 16 bits. If the upper value is -1 and the lower value is + zero, then inflate() is currently decoding information outside of a block. + If the upper value is -1 and the lower value is non-zero, then inflate is in + the middle of a stored block, with the lower value equaling the number of + bytes from the input remaining to copy. If the upper value is not -1, then + it is the number of bits back from the current bit position in the input of + the code (literal or length/distance pair) currently being processed. In + that case the lower value is the number of bytes already emitted for that + code. + + A code is being processed if inflate is waiting for more input to complete + decoding of the code, or if it has completed decoding but is waiting for + more output space to write the literal or match data. + + inflateMark() is used to mark locations in the input data for random + access, which may be at bit positions, and to note those cases where the + output of a code may span boundaries of random access blocks. The current + location in the input stream can be determined from avail_in and data_type + as noted in the description for the Z_BLOCK flush parameter for inflate. + + inflateMark returns the value noted above or -1 << 16 if the provided + source stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, + gz_headerp head)); +/* + inflateGetHeader() requests that gzip header information be stored in the + provided gz_header structure. inflateGetHeader() may be called after + inflateInit2() or inflateReset(), and before the first call of inflate(). + As inflate() processes the gzip stream, head->done is zero until the header + is completed, at which time head->done is set to one. If a zlib stream is + being decoded, then head->done is set to -1 to indicate that there will be + no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be + used to force inflate() to return immediately after header processing is + complete and before any actual data is decompressed. + + The text, time, xflags, and os fields are filled in with the gzip header + contents. hcrc is set to true if there is a header CRC. (The header CRC + was valid if done is set to one.) If extra is not Z_NULL, then extra_max + contains the maximum number of bytes to write to extra. Once done is true, + extra_len contains the actual extra field length, and extra contains the + extra field, or that field truncated if extra_max is less than extra_len. + If name is not Z_NULL, then up to name_max characters are written there, + terminated with a zero unless the length is greater than name_max. If + comment is not Z_NULL, then up to comm_max characters are written there, + terminated with a zero unless the length is greater than comm_max. When any + of extra, name, or comment are not Z_NULL and the respective field is not + present in the header, then that field is set to Z_NULL to signal its + absence. This allows the use of deflateSetHeader() with the returned + structure to duplicate the header. However if those fields are set to + allocated memory, then the application will need to save those pointers + elsewhere so that they can be eventually freed. + + If inflateGetHeader is not used, then the header information is simply + discarded. The header is always checked for validity, including the header + CRC if present. inflateReset() will reset the process to discard the header + information. The application would need to call inflateGetHeader() again to + retrieve the header from the next gzip stream. + + inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, + unsigned char FAR *window)); + + Initialize the internal stream state for decompression using inflateBack() + calls. The fields zalloc, zfree and opaque in strm must be initialized + before the call. If zalloc and zfree are Z_NULL, then the default library- + derived memory allocation routines are used. windowBits is the base two + logarithm of the window size, in the range 8..15. window is a caller + supplied buffer of that size. Except for special applications where it is + assured that deflate was used with small window sizes, windowBits must be 15 + and a 32K byte window must be supplied to be able to decompress general + deflate streams. + + See inflateBack() for the usage of these routines. + + inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of + the paramaters are invalid, Z_MEM_ERROR if the internal state could not be + allocated, or Z_VERSION_ERROR if the version of the library does not match + the version of the header file. +*/ + +typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *)); +typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); + +ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, + in_func in, void FAR *in_desc, + out_func out, void FAR *out_desc)); +/* + inflateBack() does a raw inflate with a single call using a call-back + interface for input and output. This is more efficient than inflate() for + file i/o applications in that it avoids copying between the output and the + sliding window by simply making the window itself the output buffer. This + function trusts the application to not change the output buffer passed by + the output function, at least until inflateBack() returns. + + inflateBackInit() must be called first to allocate the internal state + and to initialize the state with the user-provided window buffer. + inflateBack() may then be used multiple times to inflate a complete, raw + deflate stream with each call. inflateBackEnd() is then called to free the + allocated state. + + A raw deflate stream is one with no zlib or gzip header or trailer. + This routine would normally be used in a utility that reads zip or gzip + files and writes out uncompressed files. The utility would decode the + header and process the trailer on its own, hence this routine expects only + the raw deflate stream to decompress. This is different from the normal + behavior of inflate(), which expects either a zlib or gzip header and + trailer around the deflate stream. + + inflateBack() uses two subroutines supplied by the caller that are then + called by inflateBack() for input and output. inflateBack() calls those + routines until it reads a complete deflate stream and writes out all of the + uncompressed data, or until it encounters an error. The function's + parameters and return types are defined above in the in_func and out_func + typedefs. inflateBack() will call in(in_desc, &buf) which should return the + number of bytes of provided input, and a pointer to that input in buf. If + there is no input available, in() must return zero--buf is ignored in that + case--and inflateBack() will return a buffer error. inflateBack() will call + out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out() + should return zero on success, or non-zero on failure. If out() returns + non-zero, inflateBack() will return with an error. Neither in() nor out() + are permitted to change the contents of the window provided to + inflateBackInit(), which is also the buffer that out() uses to write from. + The length written by out() will be at most the window size. Any non-zero + amount of input may be provided by in(). + + For convenience, inflateBack() can be provided input on the first call by + setting strm->next_in and strm->avail_in. If that input is exhausted, then + in() will be called. Therefore strm->next_in must be initialized before + calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called + immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in + must also be initialized, and then if strm->avail_in is not zero, input will + initially be taken from strm->next_in[0 .. strm->avail_in - 1]. + + The in_desc and out_desc parameters of inflateBack() is passed as the + first parameter of in() and out() respectively when they are called. These + descriptors can be optionally used to pass any information that the caller- + supplied in() and out() functions need to do their job. + + On return, inflateBack() will set strm->next_in and strm->avail_in to + pass back any unused input that was provided by the last in() call. The + return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR + if in() or out() returned an error, Z_DATA_ERROR if there was a format error + in the deflate stream (in which case strm->msg is set to indicate the nature + of the error), or Z_STREAM_ERROR if the stream was not properly initialized. + In the case of Z_BUF_ERROR, an input or output error can be distinguished + using strm->next_in which will be Z_NULL only if in() returned an error. If + strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning + non-zero. (in() will always be called before out(), so strm->next_in is + assured to be defined if out() returns non-zero.) Note that inflateBack() + cannot return Z_OK. +*/ + +ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); +/* + All memory allocated by inflateBackInit() is freed. + + inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream + state was inconsistent. +*/ + +ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); +/* Return flags indicating compile-time options. + + Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: + 1.0: size of uInt + 3.2: size of uLong + 5.4: size of voidpf (pointer) + 7.6: size of z_off_t + + Compiler, assembler, and debug options: + 8: DEBUG + 9: ASMV or ASMINF -- use ASM code + 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention + 11: 0 (reserved) + + One-time table building (smaller code, but not thread-safe if true): + 12: BUILDFIXED -- build static block decoding tables when needed + 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed + 14,15: 0 (reserved) + + Library content (indicates missing functionality): + 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking + deflate code when not needed) + 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect + and decode gzip streams (to avoid linking crc code) + 18-19: 0 (reserved) + + Operation variations (changes in library functionality): + 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate + 21: FASTEST -- deflate algorithm with only one, lowest compression level + 22,23: 0 (reserved) + + The sprintf variant used by gzprintf (zero is best): + 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format + 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! + 26: 0 = returns value, 1 = void -- 1 means inferred string length returned + + Remainder: + 27-31: 0 (reserved) + */ + + + /* utility functions */ + +/* + The following utility functions are implemented on top of the basic + stream-oriented functions. To simplify the interface, some default options + are assumed (compression level and memory usage, standard memory allocation + functions). The source code of these utility functions can be modified if + you need special options. +*/ + +ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen)); +/* + Compresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total size + of the destination buffer, which must be at least the value returned by + compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed buffer. + + compress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer. +*/ + +ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen, + int level)); +/* + Compresses the source buffer into the destination buffer. The level + parameter has the same meaning as in deflateInit. sourceLen is the byte + length of the source buffer. Upon entry, destLen is the total size of the + destination buffer, which must be at least the value returned by + compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed buffer. + + compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_BUF_ERROR if there was not enough room in the output buffer, + Z_STREAM_ERROR if the level parameter is invalid. +*/ + +ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); +/* + compressBound() returns an upper bound on the compressed size after + compress() or compress2() on sourceLen bytes. It would be used before a + compress() or compress2() call to allocate the destination buffer. +*/ + +ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen)); +/* + Decompresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total size + of the destination buffer, which must be large enough to hold the entire + uncompressed data. (The size of the uncompressed data must have been saved + previously by the compressor and transmitted to the decompressor by some + mechanism outside the scope of this compression library.) Upon exit, destLen + is the actual size of the uncompressed buffer. + + uncompress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. +*/ + + + /* gzip file access functions */ + +/* + This library supports reading and writing files in gzip (.gz) format with + an interface similar to that of stdio, using the functions that start with + "gz". The gzip format is different from the zlib format. gzip is a gzip + wrapper, documented in RFC 1952, wrapped around a deflate stream. +*/ + +typedef voidp gzFile; /* opaque gzip file descriptor */ + +/* +ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); + + Opens a gzip (.gz) file for reading or writing. The mode parameter is as + in fopen ("rb" or "wb") but can also include a compression level ("wb9") or + a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only + compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F' + for fixed code compression as in "wb9F". (See the description of + deflateInit2 for more information about the strategy parameter.) Also "a" + can be used instead of "w" to request that the gzip stream that will be + written be appended to the file. "+" will result in an error, since reading + and writing to the same gzip file is not supported. + + gzopen can be used to read a file which is not in gzip format; in this + case gzread will directly read from the file without decompression. + + gzopen returns NULL if the file could not be opened, if there was + insufficient memory to allocate the gzFile state, or if an invalid mode was + specified (an 'r', 'w', or 'a' was not provided, or '+' was provided). + errno can be checked to determine if the reason gzopen failed was that the + file could not be opened. +*/ + +ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); +/* + gzdopen associates a gzFile with the file descriptor fd. File descriptors + are obtained from calls like open, dup, creat, pipe or fileno (if the file + has been previously opened with fopen). The mode parameter is as in gzopen. + + The next call of gzclose on the returned gzFile will also close the file + descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor + fd. If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd, + mode);. The duplicated descriptor should be saved to avoid a leak, since + gzdopen does not close fd if it fails. + + gzdopen returns NULL if there was insufficient memory to allocate the + gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not + provided, or '+' was provided), or if fd is -1. The file descriptor is not + used until the next gz* read, write, seek, or close operation, so gzdopen + will not detect if fd is invalid (unless fd is -1). +*/ + +ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); +/* + Set the internal buffer size used by this library's functions. The + default buffer size is 8192 bytes. This function must be called after + gzopen() or gzdopen(), and before any other calls that read or write the + file. The buffer memory allocation is always deferred to the first read or + write. Two buffers are allocated, either both of the specified size when + writing, or one of the specified size and the other twice that size when + reading. A larger buffer size of, for example, 64K or 128K bytes will + noticeably increase the speed of decompression (reading). + + The new buffer size also affects the maximum length for gzprintf(). + + gzbuffer() returns 0 on success, or -1 on failure, such as being called + too late. +*/ + +ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); +/* + Dynamically update the compression level or strategy. See the description + of deflateInit2 for the meaning of these parameters. + + gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not + opened for writing. +*/ + +ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); +/* + Reads the given number of uncompressed bytes from the compressed file. If + the input file was not in gzip format, gzread copies the given number of + bytes into the buffer. + + After reaching the end of a gzip stream in the input, gzread will continue + to read, looking for another gzip stream, or failing that, reading the rest + of the input file directly without decompression. The entire input file + will be read if gzread is called until it returns less than the requested + len. + + gzread returns the number of uncompressed bytes actually read, less than + len for end of file, or -1 for error. +*/ + +ZEXTERN int ZEXPORT gzwrite OF((gzFile file, + voidpc buf, unsigned len)); +/* + Writes the given number of uncompressed bytes into the compressed file. + gzwrite returns the number of uncompressed bytes written or 0 in case of + error. +*/ + +ZEXTERN int ZEXPORTVA gzprintf OF((gzFile file, const char *format, ...)); +/* + Converts, formats, and writes the arguments to the compressed file under + control of the format string, as in fprintf. gzprintf returns the number of + uncompressed bytes actually written, or 0 in case of error. The number of + uncompressed bytes written is limited to 8191, or one less than the buffer + size given to gzbuffer(). The caller should assure that this limit is not + exceeded. If it is exceeded, then gzprintf() will return an error (0) with + nothing written. In this case, there may also be a buffer overflow with + unpredictable consequences, which is possible only if zlib was compiled with + the insecure functions sprintf() or vsprintf() because the secure snprintf() + or vsnprintf() functions were not available. This can be determined using + zlibCompileFlags(). +*/ + +ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); +/* + Writes the given null-terminated string to the compressed file, excluding + the terminating null character. + + gzputs returns the number of characters written, or -1 in case of error. +*/ + +ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); +/* + Reads bytes from the compressed file until len-1 characters are read, or a + newline character is read and transferred to buf, or an end-of-file + condition is encountered. If any characters are read or if len == 1, the + string is terminated with a null character. If no characters are read due + to an end-of-file or len < 1, then the buffer is left untouched. + + gzgets returns buf which is a null-terminated string, or it returns NULL + for end-of-file or in case of error. If there was an error, the contents at + buf are indeterminate. +*/ + +ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); +/* + Writes c, converted to an unsigned char, into the compressed file. gzputc + returns the value that was written, or -1 in case of error. +*/ + +ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); +/* + Reads one byte from the compressed file. gzgetc returns this byte or -1 + in case of end of file or error. +*/ + +ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); +/* + Push one character back onto the stream to be read as the first character + on the next read. At least one character of push-back is allowed. + gzungetc() returns the character pushed, or -1 on failure. gzungetc() will + fail if c is -1, and may fail if a character has been pushed but not read + yet. If gzungetc is used immediately after gzopen or gzdopen, at least the + output buffer size of pushed characters is allowed. (See gzbuffer above.) + The pushed character will be discarded if the stream is repositioned with + gzseek() or gzrewind(). +*/ + +ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); +/* + Flushes all pending output into the compressed file. The parameter flush + is as in the deflate() function. The return value is the zlib error number + (see function gzerror below). gzflush is only permitted when writing. + + If the flush parameter is Z_FINISH, the remaining data is written and the + gzip stream is completed in the output. If gzwrite() is called again, a new + gzip stream will be started in the output. gzread() is able to read such + concatented gzip streams. + + gzflush should be called only when strictly necessary because it will + degrade compression if called too often. +*/ + +/* +ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, + z_off_t offset, int whence)); + + Sets the starting position for the next gzread or gzwrite on the given + compressed file. The offset represents a number of bytes in the + uncompressed data stream. The whence parameter is defined as in lseek(2); + the value SEEK_END is not supported. + + If the file is opened for reading, this function is emulated but can be + extremely slow. If the file is opened for writing, only forward seeks are + supported; gzseek then compresses a sequence of zeroes up to the new + starting position. + + gzseek returns the resulting offset location as measured in bytes from + the beginning of the uncompressed stream, or -1 in case of error, in + particular if the file is opened for writing and the new starting position + would be before the current position. +*/ + +ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); +/* + Rewinds the given file. This function is supported only for reading. + + gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) +*/ + +/* +ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); + + Returns the starting position for the next gzread or gzwrite on the given + compressed file. This position represents a number of bytes in the + uncompressed data stream, and is zero when starting, even if appending or + reading a gzip stream from the middle of a file using gzdopen(). + + gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) +*/ + +/* +ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file)); + + Returns the current offset in the file being read or written. This offset + includes the count of bytes that precede the gzip stream, for example when + appending or when using gzdopen() for reading. When reading, the offset + does not include as yet unused buffered input. This information can be used + for a progress indicator. On error, gzoffset() returns -1. +*/ + +ZEXTERN int ZEXPORT gzeof OF((gzFile file)); +/* + Returns true (1) if the end-of-file indicator has been set while reading, + false (0) otherwise. Note that the end-of-file indicator is set only if the + read tried to go past the end of the input, but came up short. Therefore, + just like feof(), gzeof() may return false even if there is no more data to + read, in the event that the last read request was for the exact number of + bytes remaining in the input file. This will happen if the input file size + is an exact multiple of the buffer size. + + If gzeof() returns true, then the read functions will return no more data, + unless the end-of-file indicator is reset by gzclearerr() and the input file + has grown since the previous end of file was detected. +*/ + +ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); +/* + Returns true (1) if file is being copied directly while reading, or false + (0) if file is a gzip stream being decompressed. This state can change from + false to true while reading the input file if the end of a gzip stream is + reached, but is followed by data that is not another gzip stream. + + If the input file is empty, gzdirect() will return true, since the input + does not contain a gzip stream. + + If gzdirect() is used immediately after gzopen() or gzdopen() it will + cause buffers to be allocated to allow reading the file to determine if it + is a gzip file. Therefore if gzbuffer() is used, it should be called before + gzdirect(). +*/ + +ZEXTERN int ZEXPORT gzclose OF((gzFile file)); +/* + Flushes all pending output if necessary, closes the compressed file and + deallocates the (de)compression state. Note that once file is closed, you + cannot call gzerror with file, since its structures have been deallocated. + gzclose must not be called more than once on the same file, just as free + must not be called more than once on the same allocation. + + gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a + file operation error, or Z_OK on success. +*/ + +ZEXTERN int ZEXPORT gzclose_r OF((gzFile file)); +ZEXTERN int ZEXPORT gzclose_w OF((gzFile file)); +/* + Same as gzclose(), but gzclose_r() is only for use when reading, and + gzclose_w() is only for use when writing or appending. The advantage to + using these instead of gzclose() is that they avoid linking in zlib + compression or decompression code that is not used when only reading or only + writing respectively. If gzclose() is used, then both compression and + decompression code will be included the application when linking to a static + zlib library. +*/ + +ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); +/* + Returns the error message for the last error which occurred on the given + compressed file. errnum is set to zlib error number. If an error occurred + in the file system and not in the compression library, errnum is set to + Z_ERRNO and the application may consult errno to get the exact error code. + + The application must not modify the returned string. Future calls to + this function may invalidate the previously returned string. If file is + closed, then the string previously returned by gzerror will no longer be + available. + + gzerror() should be used to distinguish errors from end-of-file for those + functions above that do not distinguish those cases in their return values. +*/ + +ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); +/* + Clears the error and end-of-file flags for file. This is analogous to the + clearerr() function in stdio. This is useful for continuing to read a gzip + file that is being written concurrently. +*/ + + + /* checksum functions */ + +/* + These functions are not related to compression but are exported + anyway because they might be useful in applications using the compression + library. +*/ + +ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); +/* + Update a running Adler-32 checksum with the bytes buf[0..len-1] and + return the updated checksum. If buf is Z_NULL, this function returns the + required initial value for the checksum. + + An Adler-32 checksum is almost as reliable as a CRC32 but can be computed + much faster. + + Usage example: + + uLong adler = adler32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + adler = adler32(adler, buffer, length); + } + if (adler != original_adler) error(); +*/ + +/* +ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, + z_off_t len2)); + + Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 + and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for + each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of + seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. +*/ + +ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); +/* + Update a running CRC-32 with the bytes buf[0..len-1] and return the + updated CRC-32. If buf is Z_NULL, this function returns the required + initial value for the for the crc. Pre- and post-conditioning (one's + complement) is performed within this function so it shouldn't be done by the + application. + + Usage example: + + uLong crc = crc32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + crc = crc32(crc, buffer, length); + } + if (crc != original_crc) error(); +*/ + +/* +ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); + + Combine two CRC-32 check values into one. For two sequences of bytes, + seq1 and seq2 with lengths len1 and len2, CRC-32 check values were + calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 + check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and + len2. +*/ + + + /* various hacks, don't look :) */ + +/* deflateInit and inflateInit are macros to allow checking the zlib version + * and the compiler's view of z_stream: + */ +ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, + int windowBits, int memLevel, + int strategy, const char *version, + int stream_size)); +ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, + unsigned char FAR *window, + const char *version, + int stream_size)); +#define deflateInit(strm, level) \ + deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream)) +#define inflateInit(strm) \ + inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream)) +#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ + deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ + (strategy), ZLIB_VERSION, sizeof(z_stream)) +#define inflateInit2(strm, windowBits) \ + inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream)) +#define inflateBackInit(strm, windowBits, window) \ + inflateBackInit_((strm), (windowBits), (window), \ + ZLIB_VERSION, sizeof(z_stream)) + +/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or + * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if + * both are true, the application gets the *64 functions, and the regular + * functions are changed to 64 bits) -- in case these are set on systems + * without large file support, _LFS64_LARGEFILE must also be true + */ +#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 + ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); + ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); + ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); + ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t)); + ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t)); +#endif + +#if !defined(ZLIB_INTERNAL) && _FILE_OFFSET_BITS-0 == 64 && _LFS64_LARGEFILE-0 +# define gzopen gzopen64 +# define gzseek gzseek64 +# define gztell gztell64 +# define gzoffset gzoffset64 +# define adler32_combine adler32_combine64 +# define crc32_combine crc32_combine64 +# ifdef _LARGEFILE64_SOURCE + ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); + ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int)); + ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile)); + ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); +# endif +#else + ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *)); + ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int)); + ZEXTERN z_off_t ZEXPORT gztell OF((gzFile)); + ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); +#endif + +/* hack for buggy compilers */ +#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL) + struct internal_state {int dummy;}; +#endif + +/* undocumented functions */ +ZEXTERN const char * ZEXPORT zError OF((int)); +ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp)); +ZEXTERN const uLongf * ZEXPORT get_crc_table OF((void)); +ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int)); + +#ifdef __cplusplus +} +#endif + +#endif /* ZLIB_H */ diff --git a/3party_sloynik/zlib/zlib.pro b/3party_sloynik/zlib/zlib.pro new file mode 100644 index 0000000000..c40a68ffa8 --- /dev/null +++ b/3party_sloynik/zlib/zlib.pro @@ -0,0 +1,38 @@ +TARGET = zlib +SLOYNIK_DIR = ../.. +include($$SLOYNIK_DIR/sloynik_common.pri) + +TEMPLATE = lib +CONFIG += staticlib + +SOURCES += \ + adler32.c \ + compress.c \ + crc32.c \ + deflate.c \ + example.c \ + gzclose.c \ + gzlib.c \ + gzread.c \ + gzwrite.c \ + infback.c \ + inffast.c \ + inflate.c \ + inftrees.c \ + trees.c \ + uncompr.c \ + zutil.c \ + +HEADERS += \ + crc32.h \ + deflate.h \ + gzguts.h \ + inffast.h \ + inffixed.h \ + inflate.h \ + inftrees.h \ + trees.h \ + zconf.h \ + zlib.h \ + zutil.h \ + diff --git a/3party_sloynik/zlib/zutil.c b/3party_sloynik/zlib/zutil.c new file mode 100644 index 0000000000..898ed345b0 --- /dev/null +++ b/3party_sloynik/zlib/zutil.c @@ -0,0 +1,318 @@ +/* zutil.c -- target dependent utility functions for the compression library + * Copyright (C) 1995-2005, 2010 Jean-loup Gailly. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#include "zutil.h" + +#ifndef NO_DUMMY_DECL +struct internal_state {int dummy;}; /* for buggy compilers */ +#endif + +const char * const z_errmsg[10] = { +"need dictionary", /* Z_NEED_DICT 2 */ +"stream end", /* Z_STREAM_END 1 */ +"", /* Z_OK 0 */ +"file error", /* Z_ERRNO (-1) */ +"stream error", /* Z_STREAM_ERROR (-2) */ +"data error", /* Z_DATA_ERROR (-3) */ +"insufficient memory", /* Z_MEM_ERROR (-4) */ +"buffer error", /* Z_BUF_ERROR (-5) */ +"incompatible version",/* Z_VERSION_ERROR (-6) */ +""}; + + +const char * ZEXPORT zlibVersion() +{ + return ZLIB_VERSION; +} + +uLong ZEXPORT zlibCompileFlags() +{ + uLong flags; + + flags = 0; + switch ((int)(sizeof(uInt))) { + case 2: break; + case 4: flags += 1; break; + case 8: flags += 2; break; + default: flags += 3; + } + switch ((int)(sizeof(uLong))) { + case 2: break; + case 4: flags += 1 << 2; break; + case 8: flags += 2 << 2; break; + default: flags += 3 << 2; + } + switch ((int)(sizeof(voidpf))) { + case 2: break; + case 4: flags += 1 << 4; break; + case 8: flags += 2 << 4; break; + default: flags += 3 << 4; + } + switch ((int)(sizeof(z_off_t))) { + case 2: break; + case 4: flags += 1 << 6; break; + case 8: flags += 2 << 6; break; + default: flags += 3 << 6; + } +#ifdef DEBUG + flags += 1 << 8; +#endif +#if defined(ASMV) || defined(ASMINF) + flags += 1 << 9; +#endif +#ifdef ZLIB_WINAPI + flags += 1 << 10; +#endif +#ifdef BUILDFIXED + flags += 1 << 12; +#endif +#ifdef DYNAMIC_CRC_TABLE + flags += 1 << 13; +#endif +#ifdef NO_GZCOMPRESS + flags += 1L << 16; +#endif +#ifdef NO_GZIP + flags += 1L << 17; +#endif +#ifdef PKZIP_BUG_WORKAROUND + flags += 1L << 20; +#endif +#ifdef FASTEST + flags += 1L << 21; +#endif +#ifdef STDC +# ifdef NO_vsnprintf + flags += 1L << 25; +# ifdef HAS_vsprintf_void + flags += 1L << 26; +# endif +# else +# ifdef HAS_vsnprintf_void + flags += 1L << 26; +# endif +# endif +#else + flags += 1L << 24; +# ifdef NO_snprintf + flags += 1L << 25; +# ifdef HAS_sprintf_void + flags += 1L << 26; +# endif +# else +# ifdef HAS_snprintf_void + flags += 1L << 26; +# endif +# endif +#endif + return flags; +} + +#ifdef DEBUG + +# ifndef verbose +# define verbose 0 +# endif +int ZLIB_INTERNAL z_verbose = verbose; + +void ZLIB_INTERNAL z_error (m) + char *m; +{ + fprintf(stderr, "%s\n", m); + exit(1); +} +#endif + +/* exported to allow conversion of error code to string for compress() and + * uncompress() + */ +const char * ZEXPORT zError(err) + int err; +{ + return ERR_MSG(err); +} + +#if defined(_WIN32_WCE) + /* The Microsoft C Run-Time Library for Windows CE doesn't have + * errno. We define it as a global variable to simplify porting. + * Its value is always 0 and should not be used. + */ + int errno = 0; +#endif + +#ifndef HAVE_MEMCPY + +void ZLIB_INTERNAL zmemcpy(dest, source, len) + Bytef* dest; + const Bytef* source; + uInt len; +{ + if (len == 0) return; + do { + *dest++ = *source++; /* ??? to be unrolled */ + } while (--len != 0); +} + +int ZLIB_INTERNAL zmemcmp(s1, s2, len) + const Bytef* s1; + const Bytef* s2; + uInt len; +{ + uInt j; + + for (j = 0; j < len; j++) { + if (s1[j] != s2[j]) return 2*(s1[j] > s2[j])-1; + } + return 0; +} + +void ZLIB_INTERNAL zmemzero(dest, len) + Bytef* dest; + uInt len; +{ + if (len == 0) return; + do { + *dest++ = 0; /* ??? to be unrolled */ + } while (--len != 0); +} +#endif + + +#ifdef SYS16BIT + +#ifdef __TURBOC__ +/* Turbo C in 16-bit mode */ + +# define MY_ZCALLOC + +/* Turbo C malloc() does not allow dynamic allocation of 64K bytes + * and farmalloc(64K) returns a pointer with an offset of 8, so we + * must fix the pointer. Warning: the pointer must be put back to its + * original form in order to free it, use zcfree(). + */ + +#define MAX_PTR 10 +/* 10*64K = 640K */ + +local int next_ptr = 0; + +typedef struct ptr_table_s { + voidpf org_ptr; + voidpf new_ptr; +} ptr_table; + +local ptr_table table[MAX_PTR]; +/* This table is used to remember the original form of pointers + * to large buffers (64K). Such pointers are normalized with a zero offset. + * Since MSDOS is not a preemptive multitasking OS, this table is not + * protected from concurrent access. This hack doesn't work anyway on + * a protected system like OS/2. Use Microsoft C instead. + */ + +voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size) +{ + voidpf buf = opaque; /* just to make some compilers happy */ + ulg bsize = (ulg)items*size; + + /* If we allocate less than 65520 bytes, we assume that farmalloc + * will return a usable pointer which doesn't have to be normalized. + */ + if (bsize < 65520L) { + buf = farmalloc(bsize); + if (*(ush*)&buf != 0) return buf; + } else { + buf = farmalloc(bsize + 16L); + } + if (buf == NULL || next_ptr >= MAX_PTR) return NULL; + table[next_ptr].org_ptr = buf; + + /* Normalize the pointer to seg:0 */ + *((ush*)&buf+1) += ((ush)((uch*)buf-0) + 15) >> 4; + *(ush*)&buf = 0; + table[next_ptr++].new_ptr = buf; + return buf; +} + +void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr) +{ + int n; + if (*(ush*)&ptr != 0) { /* object < 64K */ + farfree(ptr); + return; + } + /* Find the original pointer */ + for (n = 0; n < next_ptr; n++) { + if (ptr != table[n].new_ptr) continue; + + farfree(table[n].org_ptr); + while (++n < next_ptr) { + table[n-1] = table[n]; + } + next_ptr--; + return; + } + ptr = opaque; /* just to make some compilers happy */ + Assert(0, "zcfree: ptr not found"); +} + +#endif /* __TURBOC__ */ + + +#ifdef M_I86 +/* Microsoft C in 16-bit mode */ + +# define MY_ZCALLOC + +#if (!defined(_MSC_VER) || (_MSC_VER <= 600)) +# define _halloc halloc +# define _hfree hfree +#endif + +voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, uInt items, uInt size) +{ + if (opaque) opaque = 0; /* to make compiler happy */ + return _halloc((long)items, size); +} + +void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr) +{ + if (opaque) opaque = 0; /* to make compiler happy */ + _hfree(ptr); +} + +#endif /* M_I86 */ + +#endif /* SYS16BIT */ + + +#ifndef MY_ZCALLOC /* Any system without a special alloc function */ + +#ifndef STDC +extern voidp malloc OF((uInt size)); +extern voidp calloc OF((uInt items, uInt size)); +extern void free OF((voidpf ptr)); +#endif + +voidpf ZLIB_INTERNAL zcalloc (opaque, items, size) + voidpf opaque; + unsigned items; + unsigned size; +{ + if (opaque) items += size - size; /* make compiler happy */ + return sizeof(uInt) > 2 ? (voidpf)malloc(items * size) : + (voidpf)calloc(items, size); +} + +void ZLIB_INTERNAL zcfree (opaque, ptr) + voidpf opaque; + voidpf ptr; +{ + free(ptr); + if (opaque) return; /* make compiler happy */ +} + +#endif /* MY_ZCALLOC */ diff --git a/3party_sloynik/zlib/zutil.h b/3party_sloynik/zlib/zutil.h new file mode 100644 index 0000000000..258fa88799 --- /dev/null +++ b/3party_sloynik/zlib/zutil.h @@ -0,0 +1,274 @@ +/* zutil.h -- internal interface and configuration of the compression library + * Copyright (C) 1995-2010 Jean-loup Gailly. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* WARNING: this file should *not* be used by applications. It is + part of the implementation of the compression library and is + subject to change. Applications should only use zlib.h. + */ + +/* @(#) $Id$ */ + +#ifndef ZUTIL_H +#define ZUTIL_H + +#if ((__GNUC__-0) * 10 + __GNUC_MINOR__-0 >= 33) && !defined(NO_VIZ) +# define ZLIB_INTERNAL __attribute__((visibility ("hidden"))) +#else +# define ZLIB_INTERNAL +#endif + +#include "zlib.h" + +#ifdef STDC +# if !(defined(_WIN32_WCE) && defined(_MSC_VER)) +# include +# endif +# include +# include +#endif + +#ifndef local +# define local static +#endif +/* compile with -Dlocal if your debugger can't find static symbols */ + +typedef unsigned char uch; +typedef uch FAR uchf; +typedef unsigned short ush; +typedef ush FAR ushf; +typedef unsigned long ulg; + +extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ +/* (size given to avoid silly warnings with Visual C++) */ + +#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)] + +#define ERR_RETURN(strm,err) \ + return (strm->msg = (char*)ERR_MSG(err), (err)) +/* To be used only when the state is known to be valid */ + + /* common constants */ + +#ifndef DEF_WBITS +# define DEF_WBITS MAX_WBITS +#endif +/* default windowBits for decompression. MAX_WBITS is for compression only */ + +#if MAX_MEM_LEVEL >= 8 +# define DEF_MEM_LEVEL 8 +#else +# define DEF_MEM_LEVEL MAX_MEM_LEVEL +#endif +/* default memLevel */ + +#define STORED_BLOCK 0 +#define STATIC_TREES 1 +#define DYN_TREES 2 +/* The three kinds of block type */ + +#define MIN_MATCH 3 +#define MAX_MATCH 258 +/* The minimum and maximum match lengths */ + +#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */ + + /* target dependencies */ + +#if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32)) +# define OS_CODE 0x00 +# if defined(__TURBOC__) || defined(__BORLANDC__) +# if (__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__)) + /* Allow compilation with ANSI keywords only enabled */ + void _Cdecl farfree( void *block ); + void *_Cdecl farmalloc( unsigned long nbytes ); +# else +# include +# endif +# else /* MSC or DJGPP */ +# include +# endif +#endif + +#ifdef AMIGA +# define OS_CODE 0x01 +#endif + +#if defined(VAXC) || defined(VMS) +# define OS_CODE 0x02 +# define F_OPEN(name, mode) \ + fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512") +#endif + +#if defined(ATARI) || defined(atarist) +# define OS_CODE 0x05 +#endif + +#ifdef OS2 +# define OS_CODE 0x06 +# ifdef M_I86 +# include +# endif +#endif + +#if defined(MACOS) || defined(TARGET_OS_MAC) +# define OS_CODE 0x07 +# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os +# include /* for fdopen */ +# else +# ifndef fdopen +# define fdopen(fd,mode) NULL /* No fdopen() */ +# endif +# endif +#endif + +#ifdef TOPS20 +# define OS_CODE 0x0a +#endif + +#ifdef WIN32 +# ifndef __CYGWIN__ /* Cygwin is Unix, not Win32 */ +# define OS_CODE 0x0b +# endif +#endif + +#ifdef __50SERIES /* Prime/PRIMOS */ +# define OS_CODE 0x0f +#endif + +#if defined(_BEOS_) || defined(RISCOS) +# define fdopen(fd,mode) NULL /* No fdopen() */ +#endif + +#if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX +# if defined(_WIN32_WCE) +# define fdopen(fd,mode) NULL /* No fdopen() */ +# ifndef _PTRDIFF_T_DEFINED + typedef int ptrdiff_t; +# define _PTRDIFF_T_DEFINED +# endif +# else +# define fdopen(fd,type) _fdopen(fd,type) +# endif +#endif + +#if defined(__BORLANDC__) + #pragma warn -8004 + #pragma warn -8008 + #pragma warn -8066 +#endif + +/* provide prototypes for these when building zlib without LFS */ +#if !defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0 + ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); +#endif + + /* common defaults */ + +#ifndef OS_CODE +# define OS_CODE 0x03 /* assume Unix */ +#endif + +#ifndef F_OPEN +# define F_OPEN(name, mode) fopen((name), (mode)) +#endif + + /* functions */ + +#if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550) +# ifndef HAVE_VSNPRINTF +# define HAVE_VSNPRINTF +# endif +#endif +#if defined(__CYGWIN__) +# ifndef HAVE_VSNPRINTF +# define HAVE_VSNPRINTF +# endif +#endif +#ifndef HAVE_VSNPRINTF +# ifdef MSDOS + /* vsnprintf may exist on some MS-DOS compilers (DJGPP?), + but for now we just assume it doesn't. */ +# define NO_vsnprintf +# endif +# ifdef __TURBOC__ +# define NO_vsnprintf +# endif +# ifdef WIN32 + /* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */ +# if !defined(vsnprintf) && !defined(NO_vsnprintf) +# if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 ) +# define vsnprintf _vsnprintf +# endif +# endif +# endif +# ifdef __SASC +# define NO_vsnprintf +# endif +#endif +#ifdef VMS +# define NO_vsnprintf +#endif + +#if defined(pyr) +# define NO_MEMCPY +#endif +#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__) + /* Use our own functions for small and medium model with MSC <= 5.0. + * You may have to use the same strategy for Borland C (untested). + * The __SC__ check is for Symantec. + */ +# define NO_MEMCPY +#endif +#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY) +# define HAVE_MEMCPY +#endif +#ifdef HAVE_MEMCPY +# ifdef SMALL_MEDIUM /* MSDOS small or medium model */ +# define zmemcpy _fmemcpy +# define zmemcmp _fmemcmp +# define zmemzero(dest, len) _fmemset(dest, 0, len) +# else +# define zmemcpy memcpy +# define zmemcmp memcmp +# define zmemzero(dest, len) memset(dest, 0, len) +# endif +#else + void ZLIB_INTERNAL zmemcpy OF((Bytef* dest, const Bytef* source, uInt len)); + int ZLIB_INTERNAL zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len)); + void ZLIB_INTERNAL zmemzero OF((Bytef* dest, uInt len)); +#endif + +/* Diagnostic functions */ +#ifdef DEBUG +# include + extern int ZLIB_INTERNAL z_verbose; + extern void ZLIB_INTERNAL z_error OF((char *m)); +# define Assert(cond,msg) {if(!(cond)) z_error(msg);} +# define Trace(x) {if (z_verbose>=0) fprintf x ;} +# define Tracev(x) {if (z_verbose>0) fprintf x ;} +# define Tracevv(x) {if (z_verbose>1) fprintf x ;} +# define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;} +# define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;} +#else +# define Assert(cond,msg) +# define Trace(x) +# define Tracev(x) +# define Tracevv(x) +# define Tracec(c,x) +# define Tracecv(c,x) +#endif + + +voidpf ZLIB_INTERNAL zcalloc OF((voidpf opaque, unsigned items, + unsigned size)); +void ZLIB_INTERNAL zcfree OF((voidpf opaque, voidpf ptr)); + +#define ZALLOC(strm, items, size) \ + (*((strm)->zalloc))((strm)->opaque, (items), (size)) +#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr)) +#define TRY_FREE(s, p) {if (p) ZFREE(s, p);} + +#endif /* ZUTIL_H */ diff --git a/bada_sloynik/Sloynik/.badaprj b/bada_sloynik/Sloynik/.badaprj new file mode 100644 index 0000000000..e8a76d2432 --- /dev/null +++ b/bada_sloynik/Sloynik/.badaprj @@ -0,0 +1,17 @@ + + + 1 + C:\bada\1.0.0 + Wave_LP1 + + + + + + + + + + + + diff --git a/bada_sloynik/Sloynik/.cproject b/bada_sloynik/Sloynik/.cproject new file mode 100644 index 0000000000..1f4b5ee188 --- /dev/null +++ b/bada_sloynik/Sloynik/.cproject @@ -0,0 +1,1516 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bada_sloynik/Sloynik/.project b/bada_sloynik/Sloynik/.project new file mode 100644 index 0000000000..d292382d93 --- /dev/null +++ b/bada_sloynik/Sloynik/.project @@ -0,0 +1,110 @@ + + + Sloynik + + + + + + com.osp.ide.ospmakebuilder + clean,full,incremental, + + + ?name? + + + + org.eclipse.cdt.make.core.append_environment + true + + + org.eclipse.cdt.make.core.autoBuildTarget + all + + + org.eclipse.cdt.make.core.buildArguments + + + + org.eclipse.cdt.make.core.buildCommand + cs-make + + + org.eclipse.cdt.make.core.buildLocation + ${workspace_loc:/Sloynik/.Simulator-Debug} + + + org.eclipse.cdt.make.core.cleanBuildTarget + clean + + + org.eclipse.cdt.make.core.contents + org.eclipse.cdt.make.core.activeConfigSettings + + + org.eclipse.cdt.make.core.enableAutoBuild + false + + + org.eclipse.cdt.make.core.enableCleanBuild + true + + + org.eclipse.cdt.make.core.enableFullBuild + true + + + org.eclipse.cdt.make.core.fullBuildTarget + all + + + org.eclipse.cdt.make.core.stopOnError + true + + + org.eclipse.cdt.make.core.useDefaultBuildCmd + false + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + com.osp.ide.badaNature + + + + src/base + 2 + C:/studio/sloynik/base + + + src/bzip2 + 2 + C:/studio/sloynik/3party_sloynik/bzip2 + + + src/coding + 2 + C:/studio/sloynik/coding + + + src/coding_sloynik + 2 + C:/studio/sloynik/coding_sloynik + + + src/words + 2 + C:/studio/sloynik/words + + + diff --git a/bada_sloynik/Sloynik/Home/index.dup.idx b/bada_sloynik/Sloynik/Home/index.dup.idx new file mode 100644 index 0000000000000000000000000000000000000000..d12130b440a80dfbf6b9edad003865a5aba2b784 GIT binary patch literal 4 Lcmdm3%D?~s1SbI} literal 0 HcmV?d00001 diff --git a/bada_sloynik/Sloynik/Home/index.stamp.idx b/bada_sloynik/Sloynik/Home/index.stamp.idx new file mode 100644 index 0000000000000000000000000000000000000000..d55fe85ee97de2b21d81c6aaa2e8f246cedcbaa7 GIT binary patch literal 24 PcmZQ%fB+^a%?PCd09XJ8 literal 0 HcmV?d00001 diff --git a/bada_sloynik/Sloynik/Home/index.uni.idx b/bada_sloynik/Sloynik/Home/index.uni.idx new file mode 100644 index 0000000000000000000000000000000000000000..29f42f0ee15c99521dc3ea54eb157a8d227a9cfb GIT binary patch literal 547880 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

    ?gdykW!)7ED=%Q?<-fdbq8 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 z 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%0Dbu*gNf|j(RHT$g} z;2?)M%n^>##`-aNoD;Owx1&8B=tw6{T06yQI_ta8m2PyW2WPDHl)dOpANtad{+zXb zj`Lh#fZ0GUst3uz3}Gn47|sYrGK$fRVJzbq&jcniiOEc1D$|(G3}!Nm+00=s^O(;9 z7P5%NEMY0jSk4MovWnHLVJ+)e&jvQKiOp1<%RTP%fQLNdF;95PGwwO}J`Z@vBOddF=hk2FlBfD-yi&jBx%!QKA>YcE|E=-* zzxjVN-tnFfeB=|K`NCJe@tq(1MnD1)m>>it7{LiaNJ0^sFoY!> z;fX**A`zJ=L?s&0i9t+a5t}%~B_8ofKtd9cm?R`68OcdON>Y)UG^8aR>B&GwGLe}q zWF;Hf$w5wXk()f^B_H`IKtT#om?9LV7{w_;NlH=yOIp#IHngQ3?dd>AI?r62tn zz(5A^&d=I=2CIkgLH&`T>QC}BUl^wUD!=iaAN=GOzxl&o{t@7)zpDvIAcnhk1cB8- z2ud)56M~S0A~azLOE|(4fsw8q#c0MbmT`<{0uz};M0+C3)1q-dGl#AqImavp%EN2BP zSw$-QR?E~f4QWY7dNPoaOk^etS;~U?P*4%oL_Fjp@u_CbO8$9Og2Q`7B@|i&)GOma>fHtY9UpSj`&NvX1p^ zU?ZE@%oet?jqU7UC%f3q9`>@2{T$#Rhd9g;j&h9SoZuvlYxw6A~RXYN;a~S zgPi0dH+jfQKJrt5f)t`KMJP%!ic^A;l%h0cC`&oYQ-O+9qB2#eN;RregPPQ$Hg%{= zJ?hhdhBTrvO=wCpn$v=ow4yb;d>?IOTiVf{4s@gwo#{eXy3w5;^rRQP=|f-ovD~p=BANa^8KJ$gIeB(Pm_{lGR^M}9uBfxR*5CRg2zyu*E z!3a(WLK2G5gdr^92u}ne5{bw}Au7>`P7Goai`c{=F7b#@0uqvl#3Ugp$w*ELQj&_) zq#-ToNKXbbl8MY@AuHL)P7ZRCi`?WPFZsw%0SZ!x!W5w>#VAe*N>Yl_l%Xu;C{G0{ zQi;k`p(@p=P7P{Oi`vwoF7-I#&+sV6sIPB8LmJVTCN!lP&1pePTG5&|w51*G=|D$1 z(U~rEr5oMpK~H*d+&z2CKJ=v@{TaYO1~Hf+3}qO@8No}4POIlw^fMJ{of zD_rFo*SWz>ZgHDC+~pn@eOLG810M2-$2{RF&v?!YUh<09yx}eHc+Uqu@`=xU;Va+x z&L#KxA%F6V-~8b({|Iox`-6Z4A}~P+N-%;Gf{=tFG+_u!IKmTwh(sbXQHV-3q7#Fd z#3D9vh)X=;lYoRIA~8uwN-~m@f|R5pHEBpoI?|JYjASA+S;$H@vXg_HI4g3G?gD_rFoCC#qO8_iqVW=EaMo@1ST?x$xLA?)0oZ-W-^P}%waC`n9l+h zvWUejVJXX4&I(qtiq))PE$dj%1~#&Z&1_*S+t|(ycCw4z>|rl=eFyvGehzR?f1d|D z~-sYydx z(vhCWzPl$pC4)XAnaE5QvXYJL> z6Q1&n=e*!0uXxQHUidjI;CHIG>UX^710VUsXTI>2Z+zzmKl#OP{_vN71UTirKtKW! zm>>it7{LiaNJ0^sFoY!>;fX**UV64yL{dj43Q>thbYc*bSi~j{afwHK5|EHYBqj+- zNycmEzTqv&^(jb6DpHe%w4@_F8OTT`GLwa@WaFJP-t&QvWH-w}PI8f(Jme)G`6)m_ z3h~J`pZUU9zERk`2t_GIaY|5lxi$tXrMhOvxeJQJA6BqlS3sZ3)!GnmONW;2Jm%ws+a_~X0y%R==c z7PEw-V?7(#$R;+kg{^F3J3H9PE_Snrz3gK@2RO(f4s(Q~9OF1A zILRqabB42=<2)C*$R#dwg{xfSIybncX zv$ygc@A<$-KJl3^eB~S8`N2Z7q7j`K#3UB6i9<+dhaxm#2unD^ z6M=|CA~I2kN;IMqgP6o3HgSkcJmQmpgd`#{Nk~dEl9Pgzq#`wGNJ~1>lYxw6A~RXY zN;a~SgPg?mIpPtYT>9MPA%Q+2iO8$ZM}7)WkU|tDvGpRdD8)#kPfBrhGFd_QSEtq;Ze5q$52U$VetKlZC7_ zw6_tBX+l$)(VP~vq!q2nW`7&mmUgtK10Cr^XS&dpZgi&yJ?TYn`jFi@ePs@rlU(E` z4|&N)KkNBre>s4G3}P@t7|Jk)GlG#6u)iRq)T0^0SjI7)Le>g1K|PU46ww!@7{w_; zNhVt>C8x-#Ok+ATn8_?=Gl#j%V?GO5$RZZAgrzKFIV)I6X=ksJt69TZ*0G)qY-AH< z>?_M=^%l0WjqU7UC%f3q9?IEUp1taQ?B@UnImBU(aFk;l=L9FI;JQ=tG-o)=InHx| ziqxyOAT@Q_D5<_S-EMm5(xmoKQUu0c&| zQJXrvwDyYEyx}eHsB7)L{J=*(QP1qN{K8kh@tq(1CL?#MRiAHo{5R+KMrnz(C$QH6C zt!Paf+R~1=*5eVM1SBL8iAh3Il98Mgq$CyXUE6_k(n%HB^%kvK~8d!n>^$tANeUjK?+frA{3<<#VJ8a3i^G%lW(;E)$9N_% zkx5Ku3R9WJbY?J-EM^HyS;lf!u##1*W({ju$9gufkxgu73tQR7 zc6P9nUF>ELd)dc+4seh|9Oei|ImU5LaFSD;<_u>!$9XPrkxN|W3RfBA&-t3X&JAvI zi`(4cE`#kE!cc}WoDqy-G$R?qSjI7)2~6ak>+ds3J(&mUDRL^)n9dAlGK<;FVJ`ES z&jJ>*h=;C!#A6ogpU5S0DNohUSf+k1U+|Jwyygwdt-Y1+c+Uqu@`=xU;Va+x&JTXF z!gasoZ~pL?e*`$|&)3>Y{-@p`1Ij=ICI~?ZMsPw9l2C+ZmHlC4Si-SdzlQMY2&`4F zVvyq(~@!H-u%vUeqt$Lwc#A24Plw~Yu z1uI#_YSyrpb*yIt8`;EWwy>3LY-a~MdFMXw*`?mi9`>@2{T$#Rhd9g!dq47t&wSx4 z-#B9ZD91R?2~P6e+9`ROGo0ld=efWS>lfuEE^~#eT;n=7xXCSUbBDX!<30~~$Ri%} zgr_{?IWKt0D_--4x4h#$ANa^8KJ$gIeB(Pm_{lGR^M}9uBfvSoYZ8z^1SSYU2}W>2 z5Ry=YCJbQ-M|dI-kw`@5r|%<*jLI){G#Q;3#3UB6`EBhFanx~%M|={HkVGUV2}wyt za#E0zRHP;iX-P+VGLVr>WF`w)$wqc^kds{GCJ%YZM}7)WkU|uu2t_GIaY|5Y(34*DrVoATM}Gz|kU*U!a27OEGqm?bP_8OvG0N>;I&HLPVF>)F6YHnEv41Ze8_1h%TT zv7H?RG}|e6v70^YC6IYwf)JE_X2E1|LJ*SuW(PRPAr5ndqa5QnCpgI|PIHD(u01Qy zah?lYC`2V1(TPD!ViB7-+;Yur?hscW zkNDix-y?xKA@|jZPX;*e9Y#P>nWZKTX-P+VGLVr>WF`xN><>&!D>B!V-?~L?9xOh)fis5{>A@ASSVhO&sD9kN6}YA&E##5|WaPP1&|>+qP}nwr$(CZQHhO+cm2n*7rxm-nlc+xm{V)wD71fofOckn9jq22(Cbg(d9qLk#`ZS;+jmYb)d^A=!p()L1P77Mniq^EDE$wJe z2RhP;&UB$G-RMpadeV#D^r0{P=+6KKGKj$pVJO2G&Im>_iqVW=EaMo@1ST?x$xI=? z&oWg`qky^~g_y3N!Axc`n>oy79`jj1A-{82C>K%Kb&KT^ma>fHtY9UpSWOZ8ic*Z? zlwghdTGmlgzg}*jlzOAw#Addzm2GTi2RqrtZuYR3eeCA|2RX!Hj&PJ?9OnclDeXR| z1@A8c z5{SSAAt=EJP6$F0iqM21Ea3=G1R@fN$V4G3(TGkAViJqk#33&6h))6%l8D44At}j7 zP6|?ziqxbbE$K*41~QU~%w!=e*~m@~a*~VO)0x3cX3@<0Y&nOy%ws+aSjZw4vxKEAV>v5W z$tqT}hPA9?Jsa4_CN{H$t!!gEJJ`uCcC&}Q>|;L%ILILmbA+QD<2WZc$tg~AhO?aG zJQry0vt5*zxx!Vhah)67>6Q1&n=e*!0uXxQH-tvz3eBdLW z_{h{PlzDalAq3R04a)TALT=}1ooGLnhRWFafr$W9J& z(#rReOXemIdC5n93Q&+j6s8D8DMoQhP?A!VrVM2%M|mnxkxEpi3RS5_b!t$PTGXZv zb*V>v8qknNG^PnnX-0Ee(2`cPrVVXrM|(QZkxq1`3tj0(cY4s1Ui799ed$Mk1~8C8 z3}y&J8OCr%(AxJmQjTIYV;IXg#xsG5Oky%qn94NTxOTdn!Axc`n>oy-t@U=aXP&-; zoG%x!kVPzJ2}@bVa#paCRjg(WYgxy7Hn5RRY-S5v*~WHuu#;WvW)FMW$9@iQkV72i z2uC@_aZYfOQ=H}uXF11tE^v`cT;>W_xyE&FaFbiy<_>r1=<|1?GxzlOdB8&+@t7w( z{N*13E_qK7kU#_`2tf%(a6%B0 zP=qE7VF^cgBGAR>i6|oxnJ7dh8qtYCOkxq6IK(9$@ku~J5|NlBBqbTiNkK|dk(xB5 zrK|g~ zU?P*4%oL_Fjp@u_CbO8$9Og2Q`7B@|i&)GOma>fHtY9UpSj`&NvX1p^U?ZE@%oet? zjqU7Y2fNtK9`>@2{T$#Rhd9g;j&h9SoZuvQI+@ys-Zz_0)oEPH>V>&iKqJ z^=Zy5P}kn;DjI~p$JVF z!V-?~L?9xOh)fis5{>A@ASSVhO&sD9kN6}YA&L0u`4Y<{BqbTiNkK|dk(xC8viJ9Y zpNGGsHTx$6H1oS(0uqS81R*Ht>`6}sG7`)zlgvyOg6p%&Y=lsUBox{8Imk&aa+8O= z=yOIp#IHngQ3?dd>AI?V_#I|-?o*|C)hZb zx46w6?sAX&Jm4XZc+3-?@{H%a;3cnk%^TkGj(DEqz5KvOKJl3^eB~S8`N2DIj{sM^n+QlC0uzLw1S2>h2uUbH6Na#aBRmm^NF*W?g#_*sRYoH^F^EYlViSkB z#3MclNJt_QlZ2!sBcZbrkzAdEl%ygxX-G>t(vyLVWFj+J$VxV{lY^Y(A~$)+OFr^b zfPxgFFhwXzF^W@yl9Zw}WhhHI%2R=gRH8Cfs7f`eQ-hk+qBeD?OFin-fQB@pF->Sn zGn&(amL&FlBq1rS^sQ+_TiVf{4s@gwo#{eXy3w5;^rRQP=|f-o(Vqb%bN)a%h`|hD zD8m@e2u3oB(Trg%;~38bCNhc1Okpb1n9dAlGK<;FVJ`ESPjdH9K}u4Qnlz+kf%SB9 zp-e9q$qX_hi`AKAX0ni#Y%DQf$}+O+m&+C8Q0F8UxmjtpiahGPT`IXpWvXybUsYD) zzPh@s!2@+oS&Q1#p)U2PPXij#h{iObDa~k33tIBfIgfbE6Q1&n=e*!0uXxQH-tvz3 ze4v#xTGNJ)`nIwipVaN;XW2n^5P}kn z;DjI~p$JVF!V-?~L?9xO=Y(34*D zrVoATM}Gz|kUfHtY9UpSj`&NvX1p^U?ZE@%oet?jqU7UC%f3q9`>@2 z{T$#Rhd9g;j&h9SoZuvTGEl83}hq|naM&{vXPxB&d4FB%4tkz206`gk()f^B_H`I zKtT#om?9LV7{w_;NlHg4bfgoV=|We!(VZUjq!+#ELtpyQpV^*ufE>sm1~Y`A z3}ZMW7|AF`GlsE@V>}a>$Rs8+g{e$qIy0EbEM_x@xy)le3s}e^=6IgPatTXW#&T9L z*V;|rna*v|nDa)`qm;V8#A&IwL(ig})8 zKBv`ZILkTCbAgLo;xbpb$~CTYgPYvqHg~wo0_WY6_j$lW9`TqbJmneBdBICw@tQZh z5P}kn z;DjI~p$JVF!V-?~L?9xOh)fis5{>A@ASSVhO&sD9kN6}YA&E##5|WaP#VAe* zN>Yl_l%Xu;C{G0{Qi;k`p(^V=&jzZgt5buG`kJy9wW&j0>QSEtY_exF4b_ckOcR>Y zjOMhUC9P;p8`{#2_H1$eR<^O79qgoowT^V6GhOIPH@ee?DAO_$;B*TDa%;S z3Rbd;)vRGH>sZeQHnNG$Y+) zz5Rzc%u)R@j&p*OoZ>V`te=r*ImdY}aMb)5$2q}8vy<`^r#Zt}E}38E3Rk(tb#8Ez zTioUjce%%X9`KMyJmv{cdB$^I@RC=&<_&Lo$9q2TkxzW)3t#!hcYg4bU;O3|fB8p% z8{SO>BoKiKLQsMcoDhWMoX>ckQ0mZxAuQntPXrYE-8NHK|2y>QI+@)TaRrX+&e1(3ECe{O_MJ zE^~#eG&gTSORnj!(@Nc%8|pT)E$wJe2RhP;&fK);7Pq-W7qhN(qdPt5NiTZShraZq zKLZ%ZAOVgac+3;VSR2bY#xsG5Oky%qn94M!GlQAT zVm5P_%RJ_@fQ2k#F-us=Q}=qtGWB!$g5~O$@)fUHpES0~*qZ#x$WR&1g;wTGEQvw4p8S zXio<^(uvM=p)1|!P7iw0i{A91Fa7Ax00uIM!3<$2!x+v8Mly=gjA1O}7|#SIGKtAd zVJg#@&J1QUi`mR!F7uer0v57}#Vlbd%UI3|R76<6rwOiC`vJkQ-YF|qBLbFOF7C@ zfr?b3GF7NbHL6pCn$)5;b*M`{>eGORG@>z0Xi77h(}I??qBU)3OFP=rfsS;dGhOIP zH@eeEMhTBSjsY%vx1eZVl``6%R1JxfsJfpGh5ioHny{ao$O*ad)Ui9_H%%P z9O5uXILa}ObApqc;xuPC%Q?<-fs0(?GFQ0DHLi1mo800yceu+v?(=|$JmN7=c*--L z^MaSW;x%u0%RAolfscIRGhg`1H@@?OpZwxCfB4Hk0^IiJpMV4+FhK}PFoF|;kc1*M zVF*h&!V`grL?SX#h)Oh~6N8wF-ZvN@7+)&RVO1kDM(2wQj>hfil%qTqs7NI$ z6Wa4vkyWWib!t$PTGXZvb*V>v8qknNG^PnnX-0Ee(2`cPrVVXrM|;A!X9wAlPIRUV zUFk-5deD=w_J$)o5r{}H^GLF{>_cDr(VqbfWDt?<87zkoMLkpwV>lxi$tXq>)p|6> zsK+vn@l0SMlbFmDrZSD`%wQ(7n9UsKGLQKzU?GcG%o3KejODCgC97D?8rHIo^=x1x zo7hZr&$vZyWgFYs!A^Fun?3AhANx7LK@M@4BOK)z$2q}CPH~zuoaG$nxj+o}y(lkn znJZl78rO+wJr=Qv!ws{W+~PKOxXV56^MHpu;xSK%>$;~ho_r?b%LF7O5s68{b89bn z$tzy-hPS-qJsKlsTne)EUF{3E~}?;8RVh`J3 z7{-#t{;XtUoIbnEK~8d!n>>uSHi3yuVlq>h$~2}kgPF`?HglNEJm!>(8$u4$N&^3GHUiPt{103WK zhdIJgj#0?|eG#AU83dBtnq@RoPH=K~-4#Am+nm2Z6K2S546Z~pL?e+0Pey+c3(5ttwZB^bd8K}bRo znlOYV9N~#TL?RKHC`2V1(TPD!ViB7-#3df_NkBppk(eYTB^k*{K}u4Qnlz*(9qGwH zVLz*kG837}LRPYoogCyO7rDtpUhrl%y1;DMMMxQJxA^q!N{> zLRG3!of_1n7PYBEUFuPv1~jA*jcGztn$esVw4@cSX+vAu(Vh-;q!XR#LRY%cogVb0 z7rp62U;5FX0SsgigBik5hB2HGjARs}8N*n{F`fxbWD=8^!c?X)of*tz7PFbdT;?&K z1uSF{i&?@_ma&`_tYj6dS;Jb^v7QZVWD}d&!dAAiogM6C7rWWRUiPt{103WKhdIJg zj&Yn5oa7XzIm21bah?lYKt?KAt4tYE-8NHK|2y>QI+@)TaRrX+&e1(3EC0r;5*3 zm1!6)b(WphN_1#oDqy<6r&l#SjI7)2~1=XlWFMsDRL^)n9dAlGK<;FVJ`ESPb1eX zkPB(7ZbDNQ>6^*sw4k*A@5W-YB`jqb%UQunR;Va+x z&JTX_i{Jd=FaHQ|-#d$dl<{*aOCWV%f)JEo1SbR`2}Ni+yI&W&QqFbd>81{2EiB;( zPXr_Ja@(TBeDqdx-}NN)x) zm?5NaZAwy+nlz*(9qGwHMlz9^EMz4c*~v*Ra+8O=L{D(1|<@yzjP>*C3EA^{b%^KFSj`eI{Bb(UF z7PhjD?d)JDyV%Vh_Og%t9N-{_ILr}7yXR4PjN_c(B&Rsd8P0N!^IYH}m$=Lou5yj* z+~6j+xXm5za*z8w;2~q&cO2uHz*r_SiOEc1D$|(GBiB6U2~T;(b6)V0SG?v8Z+XXi zKJbxGeC7)?ocC3J<2yh2$uEBMhrj$Iz=Qt<_#XiYL|}ptlwbrW1R)7UXu=SdaD*oU z5s5@(q7ap6L?;F@iA8MU5SMtwCjkjb#7xgVi`mR!F7rriEeT0UMsiY+l2oK74QWY7 zdNPoaOk^etS;Z$9~fQB@pF->SnGn&(a zmb9WZZD`9{XRM>0x;-7}NGCeeg|4i(X9FAAL^reUY*ue!E8Eyk5Az*zC%fpW??rF= z(3gJnX8;2k#BO`{u$O%dHXFiF_Unhq;T%vO|rna*v|nDa)`qmbI;?P;E4X{e>0AAf|H!$G-o)=NqbLmnlqf`ocVb!a87?w zUg9!WxXLxIbAy}Q;x>1<%RTP%fQLNdF;95PGoJH;m%QRNZ+Oc)-t&QveBv`-_{ulF z^MjxK;x~Wz%Rd4<^j;$%fjIB8T=?(vaEZ%Y;VRd-PGI|P$eY~aHg~woJ?<04o}fHX zKO~qsI3Wm0C_)p4u!JK#5r{}6A`^wEL?b#eh)FDB6Nk9OBR&a8NFoxGgrp=RIVniV zBhU1hRO-~EAuZ`hPX;oQiOggnE7^GBx~F7UKaPiLWjo3sQ&#`h+ARF@?>FP?Ta6rvxP_ zMQO@VmU5J*0u`x5WvWn>YE-8NHK|2y>QI+@)TaRrX+&e1(3EC0rv)u(MQhs7mUgtK z106}?`8&zZbRns}tL#R1deD|YV$OV zP>&?7dXyZ^7{)S=@l0SMlbFmDrZSD`%wQ(7m`yrorDu+MF7uer0v57}#Vlbd%UI3| zRWi&Bi@l%OP~IAi@R=Qz&= zE^>*>T;VF$xXul3a*NyC;V$>M&jTLvh{rtPDbIM$3tsYy*Sz5^?|9D#KJtmreBmpl zJ?l65ogb9Z|CD8AIm%Okid3R9zpVeJiu#ZI%Rd4<@=hiofe1_xf)b42gdilL2u&Em z5{~dhAR>{7OcbILjp)Q6Cb5W39O4p>_#_}9iAYQml9G(%q#z}!NKG2jl8*FbAS0Q` zOct_|jqKzgC%MQ?9`cfp{1l)dg(yrhic^A;l%fblDNPy5QjYRepdyv1Ockn9jq22( zCbg(d9jf{{)Rpz9PXij#h{iObDa~k33tG~O*0iCTGup~_w5J0d=|pF`P~D!cvK!s0 zq3QI+@)TaSMtPf=v!x_OyMlqT(jAb0-nZQIQ zF_|e$Wg63&!Axc`n>oy79`jkiLKd-@B`jqb%UQunR)fD?d0TF(Z*iM;`aAM2?bY|>eLAQg$cH@QF;93(M{Awv zOc%P+jqdcIC%x!RANtadXRhrp2k>0|f|m@`4`MK{^h4xpIaI!pZ+XXihM5iLgL;G< z$tXrMhOvxeJQMh6-zPpZQ9p?<>aTp`JCn_R$SHCv)A*_X#c%%bmwyC!>^(?80uh)X z1ZBGGW-yak1Tzax2tpEy(1al@;h1e-co~6+L?SX#h)Oh~6N8wBqSvn$w@&sX|q% zQJospq!zWQLtW}op9VCf5shg=Q<~A77PMr&=ib0ZHqpwgHEr0e-$Gk;JKEEMj&!0k zUFb?Tw%XfW_Mj)*^u6SExr5&7owASIC3mxjz4SHf$3As`Ie`7@103WKhdIJg23kKR zk26R;m>~>h7{eLCNJcT5F^pv#K$??yV%Wbvpeij@8z!g9`|{`Lmsiu+I}9Z56FW&Q9tDw&w0U1UUA6! zVUBQ=V;tuMudSbyr#Q_S&T@|PT;L*?xXcx>6Q1&n=e*!0uXxQH-tvwQ&UpV{@{vz`<_ll>#&>@3lV5yv%_lzdg|GZJ|HEJY z5#Why&A;=5pZw1(Ab|)>5P}kn;Dq3peIaEiLKB9tgd;o=h)5(N6NRWmBRVmNNi1R$ zhq%NeJ_$%jA`+8?q$DFbDM(2wQj>MTPs56p@%w!=e+4yVyAKBG8$Vo18 zlZU+IBR>TQ(9(B9Kmrk%g64%NOc9DwjN+6ah&@3msV+q@b#Ouul2C*u3}FdJcp?yy zNJJ(IQ7P?=Xfir6h)FDBQ^wkFzfbtXU*ed>B_3t1m7_crs7NI$Q-!KjqdGOHNiAwq zhq~0GJ`HF{BO23$rZl5DEoezATGNKMw4*&8=tw6z6W{Z7kzMIVcY4s1Ui799ed$Mk z1~8C83}y&J8OCr%Fp^P>W(;FV;9le8cqTBBNla!6Q<=teW-yak%w`UAna6wO2RqrtZuYR3eeCA|2RX!H zj&PJ?9OnclImKztki^+ZNk(!~kdm|3&XG!;nlz*(9qBo5?E)9cpuZ$9bA_v1<2pCE z$t`Ykhr8V4J`Z@vBOddFr#$01FL=o-Uh{^xyyHC|_{b+d^M$W`<2yh2$uEBMhm4;0 zugoMf^G_Y%srQ09EB{jmB%3-rfz*KsLJoaSf~s@LU@|x%2uUbH6Na#aBRmm^NF*W? zg{VX$Ix&bzEMgOfxWpqq2}npH5|f17?w?d9BRMHZNh(s4hP0$3JsHSI9@k}(naM&{ zvXPw}-EM^I%?O7_9v78mGWEHDf!&=s{o(*hd z6PwvW8E0&j+bFBvE_bk#U6eB`&u;Y|_Og%t9N-{_ILr}_a*X4g;3TIw%^A*ej`LjL zBA2+#6|QoP>)hZbx42CO&v8fIru_RjEdGYEY9})TRz~sYiVp(9r!F%0@J%2~BB6b6U{Io|du|t!YDB z+R>g4bfmF;P3WZVOjC6;n$vOj8c!Lje3k6OIvk2#;M0Mfr(6FGVQH(V2XMw)0oZ-W-^P}%waC`n9l+_x^AId z#A24Plw~Yu1uI#_YSyrpb*yIt8`;EWIyrBP+{!k#vxA*o?^sZgYpb+~YnE zc*r9j^Mt27<2f&Q$t!v}>$QBtTi)@W4}7Gz^-uCMU+AOnOFzEqzww>^`XBNqzxd4` z2AKbq{|NBhyNiGXA}~P+N-%;Gf{=tFG+_u!IKmTwhzxXYBpI0~L?s&0i9t+a5t}%~ zB_8ofKtd9cm?R`68OcdON>Y)UGz@aT!3-g-eyB_*hspFZ0~yIgX0ni#Y-A?~ImtzC z@{pH&40px|Mv`A&fPxgFFhwXzF^W@yQTC3eq`DNPDMMMxQJyi@$1;xbOrV1KL|IW* zqB2#eN;RregPPQ$Hk0h1%oOVAr^;zeX9hE=Yd%ZXll5spLmJVTCN!lPv+bM1T;?&K z1uSF{i&?@_ma&`_tYj5yS;u-du#welVl!JGbYZt^_j7=Q9O5uX=xV(i-8rg1Mh|sQdeNIc95+9~NltN^Gn}Qb^?vl{oPK~D z$RGwYg!ASXxX2|gbA_v1W2imDxUL>9M=+96jAjgD8OL}gFp(Sf-{K~>nPfJZDNJP= z)0x2?>oesnW;2I9W&!+eWUsu-T(f!1=brwcye}WHK>biIl!thvUL+T@gu^W5vH3Fj zL@t+4ucm%o~vK5PQ9KDY-AIg*}`#7aFVUOwEvWRC0}z|{YJj! zjQT9+IL|w?ZE`yoxX2DJv6EfwW)FMW$7QatpZBgmAg}U4{gG?x>)hZbx46w6?sAX& zJm4XZc+3-?@{H%a;3cnk%^TkGj`w`vBcJ}`zMti1`9*%^8(;L_<&Xbn>Ywr#zxl&o zzWuj{AOEfMi{Jd=FaHS8%D*G?&;Ecizzcr|5RgCw{x8h~6GR=9U<4-wAqiqFD8UG& z4^0@t65K2VA^%$=G+_u!IKmU*zuMmLL?9xOh)fis5{>A@ASSVh=((yj+YEY9})TRz~sYiVp(2zzn zrU@}z-&8iEIW1^OD_YZrwzMOry|HMo?m$O6(U~rEr5oMpK~H+on?CfVAN?7?Kn5|G zAq-_0!x_OyMlqT(jAb0-iS0S!5SMsNFq_CECNqVpOk+ATn8_?=Gl#j%V?GO5NPK54 zk_qHunNTKTi8`@NLQ;~EoTcW=SWXK43Yk)-A~h@Zt60q%*0PQ?*4E1nY-AIg*}_(~ zv7H_4WEZ>H!(R5Wp937^5QjS|UJKW_S_j$lW9`TqbJmneBdBICw@tQZhNEdO1|$%H2|`eU5u6P6gpeT#MQAdbg^^(iM|dKT$vmQrL}a26m1smK1~G|6 zY~m1?c*G~O>l4U?BqA|M$YP#UCL=j1NJ%PElZLdUBRv_&NG39qg{)*FJ30RAotabS zA~$)+OFr^bfPxgFFhwXzF^W@yl9Zw}WhhHI%2R=gR3e*uWoMtiJ95a%W>u(4PJIVD zl8fBrAusvJPXP*2h{6=1D8(pF2})9m(v+brs7?)PQj6Nup)U2P zPXij#h{iObDa~k33tG~OPPC>CZD~h)I@5)&bfY^x=t(bn(}!xllfJSa)zvkqNiAwq zhq~0GJ`HF{BO24+bpsek6Ma*f(VP~vq!q0hWKSD8SPo$*ZT0PFPX{{EiOzJPE8XbM zF#Cryf|2wv8zpzd7R= z&jcp^m-bAOlbOO)rZJrv%w!g`nZsP>F`or2WD$#5!cvwo(Yedz3Rbd;)vRGH>sZeQ zHnNG$Y+)*>T;VF$ zxXul3a*NyC;V$>M&jTLvh)F*4WTx;~|AePJ<2nE5;2xm$+LASZreoW-ZQHi(EplG}LB3tsYy*Sz5^?|9D#rZ_*9X-sDZAI(28Q~g=a zl3(OkzVV$O{NxwE`NLlVy!2;H0uqS81R*HF2u=t>5{l4-AuQntPXr1`g#qe;3}P@t7|K>_!{j!( zogEC~U?P*4%oL_Fjp@u_CbO8$9Og2Q`7B_kXYFF4dbeC87qdsb zL@s5o`hWiJzEAFFnb`q(kV72i2uC@_aZYfOQ=H}u%bi=nN>;I&HLPVF>)F6Y&f0&D zP3p~TVJqj&F0f5~QErzz*vT$-vxmLxV?PHt$RQ4MgrgkeI43yCDNb{Svz+5R7r4kJ zE^~#eT;n=7xa70kl()Fe9qw|E`#j(wk9f=zp7M<6yx=9Tc+DH$@{ad>;3J>-%oo1$ zjqm*6C%^d3AN~^Hm3JHg2}EFm5R_m9Cj^&${wrK1r2d)=B|{U2u!JK#*R9thbYc*bSi~j{afwHK5|EHYBqj+-Nk(!~kdjoSCJkvxM|v`lkxXPJ z3wL~;yWAtIJ{$Md56G^5D09f1}dqdXO;NF^#$g{oAeIyI7rN4o?)0E1z35FJ`qGd73}7IG z7|alcGK}GjU?ig$%^1cqj`2)jB9oZR6s9tb>C9jzvzW~s=JM6oWS*SQ0v57}#Vlbd z%UI3|R`Si6RdO|JSj%^_AN*vUemxubrT@)F^(Hp6g{^GkkG1V`2RqrtZuaokT7Xvm zPNV*x3`ijM>GyMhg9J7U!Xfoxj&PJ?9OnclImKy$+IvQxRA-SZ# z%oVN@%IuoF&JAvIi`(4cF88?410M2-$2{RF&v?!YUh<09yx}eHc+Uqu@`=xU;Va(= z?Q?vWKlsTne)EUF1bFRhMnD1)m>>it7{LiaNJ0^sFoY!>;fX**A`zJ=L?s&0i9r~j zBP=o1;bbfsn>fTJ9`Q*)LK2afBqSxgGs$FfQV>C(Ql=uJIufbXk!2L35{>A@AdR)O zq$52U$VetKlZC9rv^Sf~P7ZRCi`?WPFZqaNUu^QL3s8_k6s8D8DMoSP*jGZ9q!gto zLs`mEo(fc?5|yb!RpL5ZO;)D{HK|2y>QI+@)TaRrX+&eU6Ni74(G%_uL)jGbfGKV=uQuM z(u>~op)dXD&j1E8h`|hDD8m@e2u3oB(Trg%;~38bCNhc1Okpb1n9dAlGK<;FVJ`ES z&jJ>*h{Y^nDa%;S3Rbd;)vRGH>sZeQHnNG$Y+)ImdY}aFI(~ z<_cH2#&vFRlUv;84tKdnes>n2AoukTc*r9j^Mt27<2f&Q$tzw{$hpE4p(t<6-tvz3 zeBdLW_{c?bsA8En$)5;b*M`{(%D~Mrk5FLsLm)ek(n%HB^%kvK~8d! zn>^$tANeUjK^nQIF-<6>FH8}NQjFr1pd_UzO&Q8kj;78vqdDdE6{tuhDpQ53RHHgI zs7WnqQ-`|LqdpC2NFy54gr+p3IW1`UFFo%+*^1V*q2<3Bt!S%nM|(QZkxq1`3tj0( zcY4s1Ui799ed$MkTDxz69LOLBGlZcGV>lxi$tXtC#+fm4EaMo@1ST?x$xLA?)0oZ- zW-^P}%waC`n9l+hvWUejVJXX4&I(qtiq))PE$e9O^R#2VdIKBT#Addzm2GTi2Rqrt zZuYR3eeCA|2RX!Hj&PJ?9OnclImKztaF%nN=K>eG#AU83dBtnq(B6;zt$fFOKJbxGeC7*Z`NnsC@RMKs<_~`f@YcJEfCM5i zK?q7Pf)j#}gd#Ly2unD^6M=|CA~I2kN;IMqgP6o3HgSkcaNqOe$@p~eb6u{?sxJX-P+VGLVr>WTvxyS!7nasJqgQZ2IivASb!VO&;=+kM8#6 zmjx(D4}Bq7m?HGl_o6p_=u1EPGk~J@43x!WaY|5}a>$Rs8+g{h42nWxF= z%wQ(7n9UsKGLQKzU?GcG%o3KejODCgC97D?8rHIo^=x1xo7l`2wz7@w>|iIm*v%gH zvXA{7;2?(>>2r_bu=)r`ImU5Do1c&;ImKzln2qI(`Yh)-&jl`WiOXE!D%ZHq4Q_Ia z+uY$U_qfjk9`cCCJmD$Nc+Lx6@`~5I;VtiY&j&v8iE%#Pcs{GY@Re_T=LbLe#c%%b zmjLg)g9u0<0uzLwOmNpkCNY^{X2A(TNJ0^sFoY!>;fX**A`zJ=L?s&0i9t+a5t}LQ zp2{?)GlQALu@;wj#3um>Nkn31*)y9t%w--)%#)LXl%ygxNl8W;(vpt!WFRB+oy{aO z6T-VOi_A(kvXg_HJF!2Js;po(^=R6P@WoSGv)i9`vLaz3D?=`q7^O3}g_48NyJ8F`N;MWE7(r z!&t^Ko(W83z0WvFZjh7Z6s9tb>C9jzvzW~s<}#1@EMOsvSj-YOx@)Oi#&TA$l2xo` z4QpA)dN#0;O>AZhTmSX$*~}KUvW@NR_*Yxs&JK36i{0#DFFWno#cuYnmwoK#z`xp_ z{T$#Rhd9g;j&h9SoZuvBomp*LRPYoogCyO7rDtx9`cc&0u-bWg(*T&icy>rl%y1;DMMMxQJxA^ zq!N{>LRG3!of_1n7PYBEUFuPv1~jA*jcGztn$esVwB$cp(V8~2r5)|*Ku0>!nJ#pt z8{O$aPkPatKJ=v@{TaYO1~Hf+3}qO@8NofTJ z9`Q*)LK2afBqSvn$w@&YE-8NHK|2y>TuELsVnPIp9VCf5tpnr zmRIF9E_0n5T%n1zrZl5DEojMqwBn{ctz{e9(vJ3Ypd+2=Oc%P+jqdcIC%x!RANtad z{tRFsgBZ*ZhBA!dj9?_A7|j^QGLG>~U?P*4%oL_Fjp@u_CbO8$9Og2Q`7B@|i&)GO zma>fHtY9UpSj`&Na?97_HtW>u*}z6Nv6(y8?sAX&Jm4XZ*kXMv+t|(ycCw4z>|rna z*v|nDa)`qm;V8#A&IwL(iqo9oEa!OadFSO5`IHOli(KL|&&;mKt6bwc&&_Vgo800y zceu+v?(=|$JmN7goO#JBp6H(v(x3f9@l5^v-yUA_ir4nN;kEkhzxrSDj`w`vBcJ%p z7rye&-uHY{f9D53`NePk@RtwveB=|K`NCHMeDuB|Ab|)>5P}kn;DjI~p$N@4=fcSE zGOP^85A{#Nt0NGRNc=MUO=NWxq7seh#2_ZIh)o>g5|8*KAR&L8|4V?@{&Ok)|72pB zgro%2CzHuZK}u4Qnn2dl$iOlPK?z21LJ*QrgeDAO2}gJ$5RphkCJJfYm5!+DXhbIl z>CG~bk(l~e#3l}LiAQ`gSeGORG@>z0Xi77h(}I@# zM^bktBRMHZNh(s4hF12pCat=SY)d=Z(}9k3qBC7cXJ2|UkdaJuHSb1uGV8ODl^*(@ z^rAO?=u1EPGk}2%Vldg9$<7efcC<{@TA{3<<#VJ8aN>Q3Jl%*UCoL$Hw%Ig=) zB`jqb%UQunDp;>bB`Q;es;shBO;%^MdJSt?$9gufkxgu73tQR7c6P9nUF>ELd)dc+ z4seh|9Oei|ImU5LaFSEh@EK}Si`twvJHuJ(=<9M$eV%&i3-ThDxXcx>OKXofw^H%?k z_k7?ZpZLrdzVeOl{NN|Q_{|^w6598fT>t)mNQjn5Vq$Uk%NyiZ9hLT>LfsAA#Gg-(= zHnNk0oaADdGsDTP&O=`Ek)Hw-q!5J}Vc$qbQAA&qViczYB`HN|%21Yal&1m}sYGR} zP?c&_rv^2tMQ!R(mwMEv0S#$HW17&EW;CY-E%}dDw5APhX-9iH(2-7brVCx^Mt6G9 zlV0?u4}IxJe+Dp+K@4UHLm9?!Mlh05jAjgD8OL}gFp)`2W(rf8#&l*dlUdAW4s)5u zd={{fMJ#3sOIgNpR)hZbx46w6?sAX& zJm4XZc+3-?@{H%a;3cnk%^TkGj`w`vBcJ%pB%k4n{K_}J^MjxK;x~WzOMuVbO#~zm zfeAuTf)Sh$gd`N93BzR1m_k@}IKnekA3;VW5|N2QRH6}`7{p|ny|H9$!gxY)UG^8aR z>B&GwGLe}qWF;Hf$-z?3Sw>EEE^@P6zk)pKyyPQ41t>@%3R8rl6r(sLC`lpR%VHT^ERo9pTu>{0J!AN#p!c8l8_(BF{< z?{QdtgrgkeI48Jo?Ew!tsXxVO&Ty7q#cl5J$enlPWBG)q zJmWbpc*!eX^M<$Fv;RI1c&C5QL-hywNIvEXPkF{i^G|%{3t#!hcYg4b=k~qeC9inR z8-7`PE8p>+4}9de`5*ogppE~{34sYhP=XPVKm;cQAqhoj!Vs2lgeL+K`Q+};eBmqK z_|6Z0@{8a6;V%Kc_#Qw&0uh)X1SJ^32|-9g5t=ZBB^=?2Ktv)DnJ7dh8qtYCOkxq6 zIK(9$k$mRJ#8*d=31mVNk(eYTB^k*{K}w?98;w-z)TALT=}1ooGLnhRWFafr2=Dtw zcA0~mM0ZavnVUT1B_H{TVJ#-Hh)o;{m=~lFg(*T&icy>r#I-LT@ku~Qvr?3%3<=H3 z%5o%9mzNbttWH8wD(WjynJQGJ8r4Z=y@sqwEozh8td6WpJ?hhdhBP9D^^~NdvAzjS zNv)6IYtl>|Q8t&6WMo>XqsXX4qow{oqN`&NlUDlHw4p8SXio<^(uvM=A&qCHrK`Fd z-RVJ3deNJ7*3*-LKKj07RQHqp8Nfg?nGKSI8NyJ8F`N;MWE7(r!&t^Ko(W835|f$2 zRHiYV8O&rBvzfzO<}sfIEMyUjSwd!?XQ^Dqa#paCRjg(WYsq3?R@SN4vw@9lVl!LV z$~LyMgPrVRH+$I2KK65fgB;>8M>xtcj&p*OoZ>WRILkTCbAgLo;xbpb$~CTYgPYvq zHg~woJ?`^>hdkmjPk72Rp7Vm2yy7))c*{H9^MQ|i;xk|P$~V6AgP;83H-Gp`fUn+N z1SAlF2|`eU5u6Z&Bov{^=Ib8Iui5M}2Vu;@5{~fXG|NS9@{pGZ<`IcRWTFt2XhbIl z`RvP20SXe+tdJ~B5sDJaEH-h7OF|M6k7Cw~6JMQ}1SBCT$w*ELQj&_)q#-ToNKXbb zl8MY@AuHJ^;qH=@qBLbFOLl8H$VoYUd2*?9lZU+IBR>TwNFfSSgrXFqI3*}aDN0j@ zvXrC3zq@5cS>az&iOT=dtct8kwSO~xby-DLrP{xq8fG=AMQv)B)ufKPF7>FTul;XE zeSHHO(ulfd_5RIiKtmeQ*ji)RL^h=v&1pds^Omxy{7*KM&1vy({%=OBf2<9Xtz{e9 z(vJ2FHXlL<^-wwN-#&&jf{~13G#%~fL}$9tm2Ql&HkNU;VLTIZwd)I=#$h$lh|MoJAjXU;5FX0SsgigBik5X4^Z5xy)mj*?c)%E|3dZ#A24Plw~Yu z1uI#_YSyrpb*yIt8`;EWM!0h%qZrK?wwP~ata=>dnZQIQF_|e$Wg63&!8T`R%2~{2 z4s)5ud={{fMJ#3sOIgNpR-V?8^p?_`5|BfHeQ*~4D;v7ZAR!;xI=z$}x^}f|H!$G-o)=InHx| zi(KM_XPo2|r#ZuA^DA8C8rQkOO>S|UcJ{UBj`}Y5xX%L~@`%Sg;VI8}&I?}hir2j1 zE$?{G2R`zN&wSx4-}ufCe)5ao{NXPFzWLrjKmrk%AOs~C!3jY~LJ^uUge4r|i9kdm z5t%4NB^uF*K}=#1n>fTJ9`Q*)LK2afBqSvn$w@&^$tANeUjK?+frA{3<<#VJ8aN>Q3Jl%*WysX#?4QJE@Kr5e?#K}~8=n>y5` z9`$KJLmJVTCN!lP&1peP{-YJGX+vAu(Vh-;q!XR#LRY%cogVb07rp62U;5FX0Ssgi zgBik5hB2HGjARs}8N*n{F`fxbWD=8^!c?X)of*tz7PFbdT;?&K1uSF{i&?@_ma&`_ ztYj6dS;Jb^v7QZVWD}d&!dAAiogM6C7rWWRUiPt{103WKhdIJgj&Yn5oa7XzIm21b zah?lYUG8z82R!5vk9opVp7ER)yyO+HdBa=Y@tzNSHEn21JKEEMj&!0kUFb?Ty3>Q6^rAO?=u1EPGk}2%VlYD( z$}omAf{~13G-DXcIL0%9iA-WLQ<%y$rZa|!^2*vmflbAW>!;xI=z$}x^}f|H!$G-o)=InHx| zi(KL|SGdYGu5*K%+~PKOxXV56^MHpu;xSKn$}^txf|tDFHE(#!JKpnwk9^`YU--&5 zzVm~h{Ngu%_)CBv-US3C5P=CoP=XPh5QHQYp$S7+!V#VbL?jZCi9%GO5uF&sBo?uW zLtNq!p9CZ%5s67cQj(FJ6r>~-sYydx(vhAFWF!-r$wF4Lk)0gmBp12KLtgTcp8^!* zg7?iu3aJZIgrXFqI3*}aDN0j@vXrAd6{tuhDpQ53RHHgIs7WnqQ-`|LqdpC2NFy54 zgr+p3IW1_(f3%`CZD>n7+S7rKbfPm|=t?)b(}SM$qBni$OF#NEfPoBRFhdy1ForXN zk&I$AV;IXg#xsG5Oky%qn94M!GlQATVm5P_%RJ_@fQ2k#F-us=GM2M~m8@blYgo%V z*0X_)Y+^H8*vdAxvxA-NVmEu(%RcsVfP)<3Fh@AbF^+SBlbqr-XE@6_&U1l_T;eiU zxXLxIbAy}Q;x>1<%RTP%fQLNdF;95PGoJH;m%QRNZ+Oc)-t&QveBv`-_{ulF^MjxK z;x~WzOMsu=0|X=xfeAuTf)Sh$gd`N92}4-I5uOM{BodK{LR6v=ofyO<7O{y#T;dU* z1SBL8iAh3Il98Mgq$CxoNkdxFk)8}>Bomp*LRPYoogCyO7rDtpUhrl%y1;DMMMxQJxA^q!JyxM=HxIRHYi#sX=y zOa7x3t!YDB+R>g4bfgoV=|We!(VZUjq!+#ELtpyQp8*VH5Q7=QP=+y_5sYLMqZz|k z#xb4=Ok@(1nZi`2F`XIAWEQiT!(8Sup9L&r5sO*EQkJot6|7_xt69TZ*0G)qY-AIg z*}_(~v7H_4WEZ>H!(R5Wp937^5QjO!QI2t(6P)A}r#Zt}&T*a#T;vj$xx!Vhah)67 z{7OcbILjp)Q6Cb5W39O4p>_#_}9iAYQm zF8RHbR3;-iDM-m>^Hef5X-LZzvve{&8OTT`GLwa@WFtE{$Vo18lZU+IBR>TwNFfSS zgrXFqI3*}aDN0j@vXrAd6{tuhDpQ53RHHgIs7WnqQ-`|LqdpC2NFy54gr+p(svqYy zu5*LtW*ub<*^>WgMQhs7mUgtK10Cr^XS&dpZgi&yJ?TYn`p}nt^k)DA8N^_QFqB~o zX9Ob|#c0MbmT`<{0u!0UWTr5cX-sDZGnvI~<}jCe%x3`$S;S(Nu#{yiX9X)+#cI~D zmUXOW0~^`IX11`EZER-;JK4o<_OO?I?B@UnImBU(aFk;l=L9D?#c9rPmUEov0vEZ& zWv+0Qn|}VT$y@R^*VT9B9d4-a$@|>=w}%Jn+w!5jBkyvL`#j(wk9f=zp7M<6yx=9T zc+DH$@{ad>;3J>-%oo1$jqm*6C%<^)`Hy+RZ~Y(s@>Ktf=e*!0uXxQH-tvz3eBdMB z`NU_w@Re`;;3vQM%^&^}psoK-0Ko`O2>wS%0uqS81R)dwetX9ekU#_`2tf%(a6%B0 zP=qE7VgJ?6hm+xnKtv)DnJ7dh8qtYCOkxq6IK(B4JHirA9iL8q44vshR}z>dBoT>8 zLQ;~EoD`%a6{$%>TGEl83}hq|naM&{vXPw}g!BBIG8ehYLtgTcp8^!55QQm1QHoKV z5|pGAr71&M%2A#QRHPD>sX|q%QJospq!zWQLtW}op9VCf5shg=Q<~A77PRC)TG5&| zw51*G=|D$1(U~rEr5oMpK~H+on?CfVAN?7?Kn5|GAq-_0!x_OyMlqT(jAb0-nZQIQ zF_|e$Wg63&!Axc`n>oy79`jkiLKd-@B`jqb%UQunR$y!A)*)n>*a) z9`|{`Lmu&%Cp_gD&w0U1Uh$eYyyYG5`M^g$@tH4t5{l4-AuQntPXrlYxw6A~RXYN;a~SgPi0dH+jfQKJrt5f)t`KMJP%!ic^A;l%h0c zC`&oYQ-O+9qB2#eN;RregPPQ$Hg%{=J?hhdhBTrvO=wCpn$v=o{6{NV(}uRRqdgty zNGCeeg|2j?J3Z)0FM895zVxF%0~p941~Y`A3}ZMW7|AF`GlsE@V>}a>$Rs8+g{e$q zIy0EbEM_x@xy)le3s}e^7PEw-BZ6OB>*WSEvWd-XVJq9%&JK36 zi{0#DFZ25Ry=YCJbQ-M|dI-kw`=)3Q>thbYc*bSi~j{afwHK5|EHYBqj+-Nk(!~kdjoS zCJkvxM|v`lkxXPJ3t7oVc5;xDT;wJXdC5n93Q&+j6s8D8DMoQhP?A!VrVM2%M|mnx zkxE4L>#?$|LRG3!of_1n7PYBEUFuPv1~jA*jcGztn$esVwB$cp(V8~2r5)|*Ku0>! znJ#pt8{O$aPkPatKJ=v@{TaYO1~Hf+3}qO@8NoS|UJKW_S_j$lW9`Tqb zJmneBdBICw@tQZhDP6JlYEp~Z)S)i*s80hL(ul@1p()L1P77M{AFXIj8`{#2_H>{lo#;##y3&pA z^q?ob=uIE`63IKOpX|>71~Q1j3}Gn47|sYrGK$fRVJzbq&jcniiOEc1D$|(G3}!Nm z+00=s^O(;97P5%NEMY0jSk4MovWnHLVJ+)e&jvQKiOp>it7{LiaNJ0^s zFoY!>;fX**A`zJ=L?s&0i9t+a5t}%~B_8ofKtd9cm?R`68OcdON>Y)UG^8aR>B&Gw zGLe}qWF;Hf$w5wXk()f^B_H`IKtT!-+3$(MvIs>fMsZ3|l2VkW3}q=tc`8tmD9%@s zm8n8is!^R9)T9=*sY6}r5!Jc+vH=ZgL}QxJlx8%i1uglHR zmZa)rBqs$aIcJ_qo|hN6$R#dwg{xd6wLNLLuD-!dZgHDC+~pqkdB8&+k=B{V@(E9Q zMmn?fJXgQqC9inR8{YDc_k7?ZpUB`$Mn0>*kV*Yje&aho_{lGR^M}6#225Rz=xvJ*<3L*^tGq4i-1OE_|yg_jYCNF*W?g{VX$Ix&bzEMgOf zxWpqq3FzjZUnZ1^$m8C`G6_jZMsiY+*IGVOs`JYN6r>P^No8I{rj}_)OFGh%fsAA# zGg-(=QTvNgoDyU+%T7skDN0j@vg9z&NiNFiD^QV2RHh15DNi-3Q-hk+qBeD?OFeSC zClB@24QNOs8qNZD3aJZIgrXFqI3*}aDN0j@ zvXrAd6{tuhD$~+k|4~IGbfGJ?oU2V8>Qawx z=JjO*8q$cyG@&WY=;z-4bhoz$J?TYrYXi)Ct6QjB@*k~eO&i+Mj`sAiuY>GJCpy!G zu5_b2J?KdfMJ{ofD_rFo*SWz>b~t-W-sTQ>xyOAT@Q_D5<_SCP-^FhBu$QOi&)BEl z&vW$)Uh<09yx}eHIAG5~-m4GE!+cO5kw^Kc{=_l$aZYfOQ=I0rwJ&_-jQ*Sa&RO+2 zeyD%)i{Jd=FTUvn_#XiYL|}ptlwbtsyz>{hNC^EU8B&HKG+_wKW%DasrQ{>| zn9}MevWzTCIm+|Y>>1Cgps&aa^-JFHir2iQlC^j8Js+s7uR>L-QJs(GHDpabscXsF z)S)i*s80hL(umLYHI_|iN;8_%f-ly-@{N}I|7b;P+R&DEw5J0d=|pF`(3Ng;I&HLPVF>)F6YHnEv4Y-JnU*}+bBv70^k zhaUm<%6;tTfBFORAcr{25sq?<1<2yh2$uGiK56f@$AO7MG+X4PZKmrk%AcV6oJhMD+HWAc8&4Uq~5QHQY zp^0ccj0{US!V`f=<`HFN8R=gVo(^=R6P@WoSGv)i9`vLaz3D?=`q7^O3}g_48NyJ8F`N;MWE7(r!&t^Ko(W83 z5|f$2RHiYV8O&rBvzfzO<}sfIEMyUjS;A75v78mGWEHDf!&=s{o(*hd6Pww>R<^O7 z9qeQmyV=8D_OYJ>9OMv(Il@tnahwyJ~-sYydx(vhAFWF(E}r6rR( zGg-(=HnNk0oa7=mdB{sX@>76<6rwOiC`vJkQ-XBvPftm8DN0j@3}zYsJ)6vAAuHL) zP7ZRCi`?WPFZsw%S$CA9fV#Y_Kt&4b3sFg3nJQGJ8r7*mO=?k_I@F~e^=Uw1=ZjF3 zVic#Lc_SKALSK?nl%@=2X=1G@&1g;wTJj&QXiXc++1pmOqrAET?bRLVNGB?qb(WQ6 z7ul7{>Ta?-J?KdLCne7{eLCNJcT5F^pv#eGORG@>z0Xi77h(}I@# zM=M&>hPEtn*J75ily+wAS*Bjj3Rbd;)vRGH>sZeQHnNG$Y+)W_xyE&FaFbiy<_>r1=7 zH@@?K72RW$Ug;7B(Ac(Z+qP}nwr$(CZQHhOI}_i1f9&;C)m!I$=j+a7WoA0vKk08a zfM4o?^0)lMAoXB|FqB~o=dZJW_>ZUoM(6{|Km;ZTK?z21LJ*QrgeDAO2}gJ$5Rphk zCJIp*>AulqbYc*bSj1+Ovp6y?@rX|X5;EG^7!s)ylZ2!sBRMHZNh(s4hP2G{XVUqk zQ>P~b8OcOu#=2(~nU!p0CkHvnMQ-vi&R$+QUgneeDL_FAQJ5kWr5MF2K}jaKW+J83 zr76QC{bZ&vm1#_824$U>W2U;itUyI7QJE@KWtQ{VR8v={1~sWgZR${$deo-@4QWJU zn$VOv?lG5U>UnZL3s}e^7PExr&RfuuROfE8E$@PIl4D{d&`fzU(&ZC;PKUJwOg*5QEukwvQp| z{qg_@8LA(~a7HkaQH*8`V>x7RoIEU#aFk;l=L9D?#c9qk-tGh@GKtAdVJg#@&J1QU zi`krY-8tr{=Q5A^EMOsvSj-ZZvW)ZgFL04dT;>W_xyE&t+grg(RvxmJraJEnG=Kv4&2jwIAm?s?4Kb6mT z&SCuvc|;!N7%%m&c+DH$@{ad>;3JeG#AU8>c_i{Jd=FaPjA(*gt}5P=Co zP=XPh5QHQYp$S7+!V#VbL?jX+y-s8qN-pqwaujt`q7m9G3}FdJbh8-5Bo?uWLtMf; zk3c+id?KnN5t%3?FpDaq5uF&sB%ygC5)(@wn>ZxVCnXuliTnRu5|Q}-=OiT=$w@&< z;*pBfq#-ToNKXbbl8Ma3CkqM4N;a~SgA`sfr_4o4bt+PmhP0$3JsHSICNh(StYjlQ zImk&aa+8O=TMs;dX zlUmfK4t1$VeHze^Ml>d$`!tbFX-0Ee(31Sl3Q&+%`qmUuw~=jWM`3*t+N(Rzk)rxy zbW(Sw3tj0(cY4s1Ui7B8-9EA}{pimC1~Q1j3}Gn47)}Y-jF2N4MM-@rN;6tNhOvxe zJQJA6BqlS3sZ3)!GnmONW;2Jm%ws+aSjZw4vxKEAV>v5W$tqT}hPA9?J!L%C2Dy<< zY-S5v*~WHuu#;WvW)FMW$9@iQkV72i2uC@_aZYfOQ=H}uXF11tE^v`cT;>W_xyE&F zaFbiy<_={&cR9*)SAUQDRM0<=52>iGL}jY*$m}ssc*--L^MaSW;x%umYQGxQsli*b zcf6;jz81Clp#R7xKJ$gI)N%Gr)|K_BPXij#h{k+({vSX1$uF9i|CWFF%RhYaLV$n- zA}~Q{YA>j4CWFb~gdil%&05fsR00k*TVTw?cVsvru;7rN4o?)0E1z35FJ`ZCD1{bYXzFp$A!gZ`fkVJO2G&Im>_iXrxfGK}Gj zU?ig$&6xkEy|MqV|DTLwJQJA6BqlS3sZ3)!GnmONW;2JmjB~Gfay|=K$RZZAgrzKF zIV)JnDps?GwX9=38`#JuHnWATY-2k+*vT$-Gu~_Ok$c(4ehzSuLridfSRUah$2iUj zPI8LVoZ&3zIL`$xGST&yma~GDtYS60*v%i;|7DN*pY+9E0Rj?;y=H-B5P}kn;DjI~p$JVF z!V-?~L?9xOh)fis5{>A@ASSVhO&sD9kN6}YA&E##5|WaPrl%y1; zDMMMxQJ!O7>o_N}1~jA* zjcGztn$esVw4@cSX+vAu(Vh$LbBW7bq=Q*UI?fHtl**jN32w@;<5S(PkF|3zVL#Vyy7))c*{H9 z^MQ|i;xk|Q#&=e`?;6&!j{nTo%MEN~6FIXdJ5s!JoQ=ajh7lg9=QoiCfZ+Oc)-t&QveBv`- z_{ulF^B+I>$uE8r+CBfszx*SN-WSRS2uL8p>I2Il1SJ^32|-9g5t=ZBB^=?2Ktv)D znJ7dh8qo>ozAViB7-#3df_NkBppk(eYTB^k*{K}u4Qn(*!!frzBhrzIWf$v`CY z$YfM!A~RXYN;a~SgD7@#%3S0o4|&N)ehN^KLKLP5MJYycN>Gwgl%@=2DMxuKP?1Vh zrV3T5Ms;dXlUmd!s^^JDbYc*bI_7n$M|~R5kVZ5nmYp?zO*TK}%vgk3(GI z5uaA(t!YDB+R>g4bfgoV=|We!(VZUjq!+#ELtpyQp8*VH5Q7=QP=+y_5sYLMqZz|k z#xb4=Ok@(1nZi`2F`XIAWEQiT!(8Sup9L&r5sO*EQkJot1m61!xsp|^W({ju$9guf zkxgu73tQR7c6P9nUF>ELd)dc+4seh|9Oei|ImU5LaFSD;<_u>!$9XPrkxN|W3Rk(t zb#8EzTioUjce%%X9`KMyJmv{cdB$^I@RC=&<_&Lo$9q2TkxzW)3t#!hcmCrCKl#OP z{_vN7_=5WY0SQE4f)JEo1SbR`2}Nka5SDO+Cjt?PL}a26m1smK1~G|6Y~m1?c*G|G z2}wj^l8}^SBqs$aNkwYXkd}0$Cj%MDL}s#(m26}u2RX?_Zt{?qeB`G91t~;ficpkd z6sH6wDMe|@P?m&#ZI+YesX#?4QJE@Kr5e?#K}~8=n>r+NeO+0P#Ofp@rM|ua4QWJU zn$VPHG^YhEX+>+2xvq_DOFP=rfsS;dGhOIPH@cJDH9cfcdeNIcq%iL*`_Z2P3}g_4 z8Nyn>f2|{>-J$wn3}*zX%tp#lq*kY4v^uREBgZn1@l0SMlbFmDrZSD`%wQ(7n9UsK zGLQKzAf5Xzl#5u*5|*-z<*Z;Ot60q%*0PTEY+xgs*vuBTvW@NRU?;oS%^vo$kNq6r zAcr{25sq?<`P7Goai`c{=F7b#@ z0uqvl#3Ugp$w*ELQj&_)q#-ToNKXbbl8MY@AuHL)P7ZRCi`?WPFZsyf{pFVhC`cg+ zQ-q@Abe@Z1>f+>9myjhXMQO@VmU5J*0u`x5WvWn>YE-8NHK|2y>QI+@)TaRrX+&e1 z(3EE6@%qhWUfDvnq!q1cLtEO>o(^=R6P@WoSGv)i9`vLaz3D?=`q7^O3}g_48NyJ8 zF`N;MWE7(r!&t^Ko_wA$KLwbeFDNI;HmNtWg{^F3J3H9PE_Snrz3gK@ z2RO(f4s(Q~9OF1AILRqabB42=<2)C*$R#dwg{xfSIybncAkmG!7k0(}G7kc8?)Bqj-s%#zB+vI$LTMsr%wl2){)4Q**hdpgjO zPIM-j`*e|A=|*>YklZ{4J=G~?FWH+u^ravD8NfgWF_<9?Wf;Rr<=PQ)B%>HjYO^$q zQIBOD<4J2aL8g-vWqO%`jAUYx*<@xjhq+`npC_}(tYl-pKD*38PNwK{$=u{&fqo%* z)%nOz0SdCnd@9o@q%TYniZb1-m|QH2%Mz4iiGC@i)TJpyS<11@yu7SHMV9MVFoT)Q zVkMQFRc4jCimXaCs#AlS)S@zYY$P|xjWkwolACFwZb~zn z(}I??qBU)3OFP=rfsS;dGhOIPH@eeEMhTBSjsY%vx1eZVvCQ@R<^NPzlOD} zV?7(#$R;+kg{^F3J3H9PuK)M$vHSlsxkv70ANx7LK@M@4BOK)z$2q}CPH~zuoaG$n zxxhs(ahWSz$y!A)*)n>*a)9`|{`Lmu&%Cp_gD&w0U4&%KM6>Q}tx4R3kJdp_`y zPkiPJU-`y&{^JKf`NePk@Rxu1%iIA15{SSAAt=EJP6$F0iqM21Ea3=G1R}EAb4HSp zi9%GO5uF&sBo?uWLtNq!p9CZ%5s67cQj(FJ6r>~-sYydx(vhAFWF!-r$wF4Lk)0gm zBp12KLtgTcp8^!55QQm1QHoKV5|pGAr76Q6@3*WhM|mnxkxEo%uk$Lh1~sWlEoxJT zy40gS4QNOs8q!nJ#pt8{O$aPkPatKJ=v@{TaYO z1~Hf+3}qO@8No)hZb)w#uO?r@iT+~)xgIpRK# zg5|8*K;F$M+oP_E`Bqj+-Nk(!~ zkdjoSCJkvxM|v`lkxXPJ3t7oVc5;xDT%7P)CppDw&Ty7@%3R8rlZ1CR}ipk=Xpd_UzO&Q8kj`CEXB9*926{=E=>eQenwWv)U>QayTG@v1k zXiO8D(v0S`pe3znO&i+Mj`nn*Bc13>7rN4o?)0E1z35FJ`qGd73}7IG7|alcGK}Gj zU?ig$%@{WN_+0TZyvkVpIL0%9iA-WLQ<%y$rZafHtY9UpSj`&NvX1p^U?ZE@%oet?jqU7UC%f3q9`>@2{oL|g2joF+s}IRL z^02%s?{P$ZUmlgmIL--9a*ETO;VkDk&jl`WiOXE!Di7S}n!L_K^$mH8+uY$U_qfj^ z=MUt=|JOX`2~T;(b6)V0SG?vXZ+Oc)-t&QveBv`-_{ulF^B+I>$uEBMhrj&8H<}3$ zkU#_`2tf%(a6%B0P=qE7VF^cgA`p>CL?#MRiAHo{5R+KMCJu3lM|={HkVGUV2}wyt za#E0zRHP;iX-P+VGLVr>WF`w)$wqc^kds{GCJ%YZM}7)WkjFkBg=ArhP?Ta6rvxP_ zMQO_L#C};>j;HGK@|mn4D^iKdRG})>s7?)PQj6#IU+|JwyygvWdB=Nd+xs9t@`=xU zp^o`i`Hk=VM_scY@+ZIe%^&{q58rSvKtKW$gh14DO??{BkVXVG??y0!6M~S0A~azL zOE|(4frvyRGEs<1G@=uOn8YGBafnMi;*)@cBqA|MNJ=u2lY*3_A~k79OFGh%fsAA# zGg-(=HnNk0oa7=mdB{sX@>76<6ru=)DM~SlQ-YF|qBLbFOF7C@fr?b3GTrGxPkK>> zs#K#oHK<7~YEy^0)T2HPXhMti9qs8rM>^4&E_9_2ed$MI zpX(+xr5Vj>K}%ZEnl`kh9qs8rM>^5pJvz$)av*~k%n*h$jNy!6B%>J37{=1YwO#2( zcgC6ZkUbf%?j?KEhrUcO>nHm&fPoBRFhiK=d=itH!ceoRa+n;>2u3oB(Trg%;~38b zCNhc1Okpb1n9dAl{=aw6S#maWn9Drovw(#xVlhit$}*;I&HLPVF>)F6Y zHnEv4Y-JnU*}+bBv70^YWgq)Fz(Edim?IqJ7{@umNltN^Go0ldGd$zW|Gz(GGl%o$ z7r4kJE;HBsioD7^^)-2&8{Fg;x4FYz?s1<7Jme9NdBRhk@thaDtZ<)|WL9S(E7{0S4sw!<+~grI`N+>I*R5s^1@r|eL}7|hlwuTTt(_9G zB&8@#8OlHNAm8eV=s#1;W)SxD{s7)Q}QjhvHpdpQDOcR>YjOMhUC9P;p8`{#2 z_H>{loml62*Rz3*bT;ckSGv)iP3AphPkPatKJ=v@{TaYO1~Hf+3}qO@8NoAZhTiM2TcCeFO>}C&p*~fkkaF9bB<_JeQ#&J$?l2e@K3}-pVc`k5~ zOI+p(SGmS@Zg7)Z+~y8{7OcbILjp)Q6 zCb5W39O4p>_#_}9iAYQml9G(%q+q9K-$hDwDpHe%w4`IVv-C0p8OcOuvXGT*Z1V4t zo5`-uK~8d!n>_4skG8 zM>tAFXUF7mDyb_|g{oAeIyIr#*UG@v1kXiO8D(v0S` zpe3znO&i+Mj`nn*Bc13>7rN4o?)0E1z35FJ`qGd73}7IG7|alcGK}GjU?ig$%^1cq zj`2)jB9oZR6s9tb>C9jzvzW~s<}#1@EMOsvSj-ZZvW(@dU?rLQ8ukt(>{@-(n z%Ut0q*SO9NF4?~+Z*iMD+~pqkdB8&+@tDi@pU9^?<2f&Q$tzy-hPS-qiv6ox$uEBMhrj&euHAdw$2XP@5RgCwCI~?ZMsPw9 zl2C*u3}Fe!1J{R_5s1h`eI)rvMwU^CN;IMqgP6o3HgSkcJmQmpgd`#{Nl40L_e&;| zlY*3_A~jE(J>?nCNn@6lbfhN(8OcOuvXGT*WG4qNT$fYkA~$)+OFr^bfPxgFFhwXz zF^W@yl9Zw}WhhHI%2R=gRH8Cfs7f`eQ-hk+;-zPKMQwE*>QayTG@v1kXiO8D(v0S` zpe3znO&i+Mj`nn*Bc13>7rN4o?)0E1z35FJ`qGd73}7IG7|alcGK}GjU?ig$%^1cq zj`2)jB9oZR6s9tb>C9jzvzW~s<}#1@EMOsvSj-ZZvW(@dU?rf=7Kmrk%AOs~C!3jY~zIpcVgi?nl3}FdJ zcp?yyNJJ(IQHe%${&Q^%8IxGVCJu3lM|={HkVGUV2}wyta#E0zRHP;iX-P+VGLVr> z{P232WfroMjqKzgC%MQ?9`cfp{1l)dg(yrBic*Z?l;Ed(mz1R_O&Q8kj`CEXB9*92 z6{=E=>eQenwWv)U>QayTG@v1kXiO8D(v0S`pe3znO&i+Mj`nn*Bc13>7rN4o?)0E1 zz35FJ`qGd73}7IG7|alcGK}GjU?jhM97f5}jA1O}7|#SIGKtAdVJg%3?Yil51~Zw( zZ00bRdCX@43t7Zsmavp%EN2BPS;cDBu*IKmx3Y~tUgt0WSnJFWFbNQlK&;bmx3hzt z1U3u8dh-ngRR<$DA=qdZQidWlVF*h&!V`grL?SX#h)Ogzxi-3tK}Lum?R`68OcdON>Y)D?RIytlU?j4v-uvmmwoK#09nkla!`GU!(`KE z=ZHFo%tT}CH98(|X1SdJgY0hw#bDSry-F)Py00p^VevwNQ(qEQWD6B3*QHoKV z5|pGASM6M*wEDU%BX7u?+~PKOxXV56^MHpuqOARLJXSy9DbIM$3tsYy@^&gvkxEqN zwRsi!M!u!0x*FA~!8^0})Ku4^HXrmKsiXcRKl6pJeB(R+@q?e#wU?SSq~({{Z~pL? zfB1m{0Rj?;zyu*E!3a(WLK2G5gdr^92u}nelFt3plYx5FrvVL#gGgO$DoC}C9P;p8`{#2jI^f%G3|Dgo#;#~eQe?omw3b{0SQS&Vv>-QZmvlt zyUQLVSND{?=uIE`lEOSCsYp#fv;GWVAcGjp5QdV*PFm8Do?&Lg8No<0n2nO78N*n{ zF`fxbWD=8^!c;Q4CKJ=tnPnETl8x--ASb!VO&;D1b*M`{>eGORG@>z0Xi77h z(}I??qBU)3OFQPd?|c@pkVPz}y|WHv5W z$tqT}hPA9?Jsa4_CN{H$t!!gEJ6P(OcgkJtW)FMW$9@iQkVCAnyNtu?BOK)z%gv6< z6P)A}r#Zt}&T*a#T;vj$xx!Vhah)67Icg`7Ow2L$agwN$l8oe}ASJ0d;rt}0NUcx9 zY4sV>s?(94v-)$K=K>eG#AU81qetW z0#n;Oh^!-n%DS>1!PLPCL4AEl8H&(^AuQntPXrp+X-GtMBq9@qs6?ZYv&KYM#~>!L zh)o>g5|8*KAR&oJOcIikjN~+NpA<4BP1UJnYMQCj$h4#*JgWe zJ2}WnE^?EHmUi;We6&)xrVVXrM|(QZkxq1`3tj0(cY4s1UgUS50u-bWg(*T&icy>r z^tRiFlIl{FrVM?}`cYP0j{fQa3}g_48NyJ8F`N;MWE7(rLwVPZmE)+O9xp4(N>rvQ zRj5XFYB0f0O<9YH>PggA*P$-;s80hXJDb8(rZJrv%w!g`X=twzjcGztn$es&&gU|Z z`7B@|i&)GOmeRuRGTBnLqBU(;Zq`<=knLo9R;oM5j&!0kUFb?TRykkI8rHIo^>lZ( zL2jgndXwDD7PhjD?d)JDyXa}J7rp62Uv``KlY3-;Ie>u-Vz1dg_H%%P3^pIaP=+y_ z5gc-Mm?IqJ7{@umNltN^Go0ld=efX0*Nv6H1SJ^32|-9gvBA#&0233wN&o-= literal 0 HcmV?d00001 diff --git a/bada_sloynik/Sloynik/Home/wordnet.slf b/bada_sloynik/Sloynik/Home/wordnet.slf new file mode 100644 index 0000000000000000000000000000000000000000..0c94ae6f20f7bae99f8f89c645cb73db9785b634 GIT binary patch literal 10255193 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 z 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≪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

    kfai5>hmv5?_pGy4W>`3 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 B_MVO*ON(&`$3P1_Pmc#os|$jUz$^Qyf+ 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%0D=#)9yc~U=e!_Buj}cf?LWorN9(JNZ1%09eBh=? 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 z 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ⅅ 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

    ^KcZm!~r_$9RS(C@*#HNb^p22&6ilKJcq{3_5ef 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

    64!J%GQyA-&xpCt$=HK!@@ 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%0Dxn%F+P@&M`%EJBX|F4s-yiV=c&$KV6 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

    VpS|1?)i7DDHpsIIO=WH#F|l3U3MHD{5=-D#{ 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

    ~X;_c%Vj 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 qr0LUl9h7-n-%y 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ûCk;YZ-l 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
  1. +<_r))9pkulzg{Ca8nchTjN4o*WuLLEECCky*$@&5MMC-lKtKUVE@UJx{d!;HHq zYch5~ia2sSbETQ*ow?BBCp!aq`d4xhFmIP`POwP88LOEw*aX9O{Bw>P< zB(kXPVpZdXUZ9(ct4=uUNJvAu1GwwCq(~L$IC0bjH6jcza*lJ=*B`m=*)!^)2$dHt zTg=_WuI#C6o3cQ*+9o*Vtihv~4Iw0!%$wkV(I)O#Qq2A;v$<;x-@A zJp4AIL(+T8Ifn~RBpLJ2KbwQ_on+Wu2!8QCobc+$VMyuA4Z@mP+n9-r&VI`jxh$HUA3?Wz(RhB(SWc8f`;tLLu(6!ks#Kee!P^l#u z0|`@29;@2fT}>GpeO>cBpf6Y z5u@jMION18MDi1-8lraJ6^Ya|P*S?(UhkV`yOxX%0AM1b%w(vZ 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
  2. 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