]> git.pld-linux.org Git - packages/bzip2.git/commitdiff
- updated for 1.0.2.
authorkloczek <kloczek@pld-linux.org>
Fri, 1 Feb 2002 03:36:58 +0000 (03:36 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    bzip2-libtoolizeautoconf.patch -> 1.6

bzip2-libtoolizeautoconf.patch

index b0e36e5508b4585860df334f87e1d8d7f7a2fc24..c0be41907787397d37474fe8861e829bc6c130db 100644 (file)
@@ -1,12 +1,12 @@
-diff -Nru bzip2-1.0.1/AUTHORS bzip2-1.0.1.new/AUTHORS
---- bzip2-1.0.1/AUTHORS        Thu Jan  1 01:00:00 1970
-+++ bzip2-1.0.1.new/AUTHORS    Sat Jun 24 20:13:05 2000
+diff -Nru bzip2-1.0.2/AUTHORS bzip2-1.0.2.new/AUTHORS
+--- bzip2-1.0.2/AUTHORS        Thu Jan  1 01:00:00 1970
++++ bzip2-1.0.2.new/AUTHORS    Fri Feb  1 04:18:59 2002
 @@ -0,0 +1 @@
 +Julian Seward <jseward@acm.org>
-diff -Nru bzip2-1.0.1/CHANGES bzip2-1.0.1.new/CHANGES
---- bzip2-1.0.1/CHANGES        Sat Jun 24 20:13:27 2000
-+++ bzip2-1.0.1.new/CHANGES    Thu Jan  1 01:00:00 1970
-@@ -1,167 +0,0 @@
+diff -Nru bzip2-1.0.2/CHANGES bzip2-1.0.2.new/CHANGES
+--- bzip2-1.0.2/CHANGES        Sat Jan 26 01:02:57 2002
++++ bzip2-1.0.2.new/CHANGES    Thu Jan  1 01:00:00 1970
+@@ -1,253 +0,0 @@
 -
 -
 -0.9.0
@@ -143,7 +143,7 @@ diff -Nru bzip2-1.0.1/CHANGES bzip2-1.0.1.new/CHANGES
 -
 -* 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 someway, experimental,
+-  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.
@@ -174,13 +174,99 @@ diff -Nru bzip2-1.0.1/CHANGES bzip2-1.0.1.new/CHANGES
 -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.
-diff -Nru bzip2-1.0.1/COPYING bzip2-1.0.1.new/COPYING
---- bzip2-1.0.1/COPYING        Thu Jan  1 01:00:00 1970
-+++ bzip2-1.0.1.new/COPYING    Sat Jun 24 20:13:05 2000
+-
+-
+-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.
+-
+diff -Nru bzip2-1.0.2/COPYING bzip2-1.0.2.new/COPYING
+--- bzip2-1.0.2/COPYING        Thu Jan  1 01:00:00 1970
++++ bzip2-1.0.2.new/COPYING    Wed Jan  2 05:12:07 2002
 @@ -0,0 +1,39 @@
 +
 +This program, "bzip2" and associated library "libbzip2", are
-+copyright (C) 1996-2000 Julian R Seward.  All rights reserved.
++copyright (C) 1996-2002 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
@@ -215,16 +301,16 @@ diff -Nru bzip2-1.0.1/COPYING bzip2-1.0.1.new/COPYING
 +
 +Julian Seward, Cambridge, UK.
 +jseward@acm.org
-+bzip2/libbzip2 version 1.0 of 21 March 2000
++bzip2/libbzip2 version 1.0.2 of 30 December 2001
 +
-diff -Nru bzip2-1.0.1/ChangeLog bzip2-1.0.1.new/ChangeLog
---- bzip2-1.0.1/ChangeLog      Thu Jan  1 01:00:00 1970
-+++ bzip2-1.0.1.new/ChangeLog  Sat Jun 24 20:13:05 2000
+diff -Nru bzip2-1.0.2/ChangeLog bzip2-1.0.2.new/ChangeLog
+--- bzip2-1.0.2/ChangeLog      Thu Jan  1 01:00:00 1970
++++ bzip2-1.0.2.new/ChangeLog  Fri Feb  1 04:19:04 2002
 @@ -0,0 +1 @@
 +
-diff -Nru bzip2-1.0.1/INSTALL bzip2-1.0.1.new/INSTALL
---- bzip2-1.0.1/INSTALL        Thu Jan  1 01:00:00 1970
-+++ bzip2-1.0.1.new/INSTALL    Sat Jun 24 20:13:06 2000
+diff -Nru bzip2-1.0.2/INSTALL bzip2-1.0.2.new/INSTALL
+--- bzip2-1.0.2/INSTALL        Thu Jan  1 01:00:00 1970
++++ bzip2-1.0.2.new/INSTALL    Fri Feb  1 04:19:04 2002
 @@ -0,0 +1,182 @@
 +Basic Installation
 +==================
@@ -408,13 +494,13 @@ diff -Nru bzip2-1.0.1/INSTALL bzip2-1.0.1.new/INSTALL
 +     script, and exit.
 +
 +`configure' also accepts some other, not widely useful, options.
-diff -Nru bzip2-1.0.1/LICENSE bzip2-1.0.1.new/LICENSE
---- bzip2-1.0.1/LICENSE        Sat Jun 24 20:13:27 2000
-+++ bzip2-1.0.1.new/LICENSE    Thu Jan  1 01:00:00 1970
+diff -Nru bzip2-1.0.2/LICENSE bzip2-1.0.2.new/LICENSE
+--- bzip2-1.0.2/LICENSE        Wed Jan  2 05:12:07 2002
++++ bzip2-1.0.2.new/LICENSE    Thu Jan  1 01:00:00 1970
 @@ -1,39 +0,0 @@
 -
 -This program, "bzip2" and associated library "libbzip2", are
--copyright (C) 1996-2000 Julian R Seward.  All rights reserved.
+-copyright (C) 1996-2002 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
@@ -449,17 +535,18 @@ diff -Nru bzip2-1.0.1/LICENSE bzip2-1.0.1.new/LICENSE
 -
 -Julian Seward, Cambridge, UK.
 -jseward@acm.org
--bzip2/libbzip2 version 1.0 of 21 March 2000
+-bzip2/libbzip2 version 1.0.2 of 30 December 2001
 -
-diff -Nru bzip2-1.0.1/Makefile-libbz2_so bzip2-1.0.1.new/Makefile-libbz2_so
---- bzip2-1.0.1/Makefile-libbz2_so     Sat Jun 24 20:13:27 2000
-+++ bzip2-1.0.1.new/Makefile-libbz2_so Thu Jan  1 01:00:00 1970
-@@ -1,43 +0,0 @@
+diff -Nru bzip2-1.0.2/Makefile-libbz2_so bzip2-1.0.2.new/Makefile-libbz2_so
+--- bzip2-1.0.2/Makefile-libbz2_so     Sun Dec 30 03:15:59 2001
++++ bzip2-1.0.2.new/Makefile-libbz2_so Thu Jan  1 01:00:00 1970
+@@ -1,44 +0,0 @@
 -
 -# This Makefile builds a shared version of the library, 
--# libbz2.so.1.0.1, with soname libbz2.so.1.0,
--# at least on x86-Linux (RedHat 5.2), 
--# with gcc-2.7.2.3.  Please see the README file for some 
+-# libbz2.so.1.0.2, 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.
 -
 -SHELL=/bin/sh
@@ -476,13 +563,13 @@ diff -Nru bzip2-1.0.1/Makefile-libbz2_so bzip2-1.0.1.new/Makefile-libbz2_so
 -      bzlib.o
 -
 -all: $(OBJS)
--      $(CC) -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.1 $(OBJS)
--      $(CC) $(CFLAGS) -o bzip2-shared bzip2.c libbz2.so.1.0.1
+-      $(CC) -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.2 $(OBJS)
+-      $(CC) $(CFLAGS) -o bzip2-shared bzip2.c libbz2.so.1.0.2
 -      rm -f libbz2.so.1.0
--      ln -s libbz2.so.1.0.1 libbz2.so.1.0
+-      ln -s libbz2.so.1.0.2 libbz2.so.1.0
 -
 -clean: 
--      rm -f $(OBJS) bzip2.o libbz2.so.1.0.1 libbz2.so.1.0 bzip2-shared
+-      rm -f $(OBJS) bzip2.o libbz2.so.1.0.2 libbz2.so.1.0 bzip2-shared
 -
 -blocksort.o: blocksort.c
 -      $(CC) $(CFLAGS) -c blocksort.c
@@ -498,9 +585,9 @@ diff -Nru bzip2-1.0.1/Makefile-libbz2_so bzip2-1.0.1.new/Makefile-libbz2_so
 -      $(CC) $(CFLAGS) -c decompress.c
 -bzlib.o: bzlib.c
 -      $(CC) $(CFLAGS) -c bzlib.c
-diff -Nru bzip2-1.0.1/Makefile.am bzip2-1.0.1.new/Makefile.am
---- bzip2-1.0.1/Makefile.am    Thu Jan  1 01:00:00 1970
-+++ bzip2-1.0.1.new/Makefile.am        Sat Jun 24 20:17:47 2000
+diff -Nru bzip2-1.0.2/Makefile.am bzip2-1.0.2.new/Makefile.am
+--- bzip2-1.0.2/Makefile.am    Thu Jan  1 01:00:00 1970
++++ bzip2-1.0.2.new/Makefile.am        Fri Feb  1 04:19:09 2002
 @@ -0,0 +1,31 @@
 +SUBDIRS               = doc
 +
@@ -533,10 +620,165 @@ diff -Nru bzip2-1.0.1/Makefile.am bzip2-1.0.1.new/Makefile.am
 +install-exec-hook:
 +      $(LN_S) -f bzip2 $(DESTDIR)$(bindir)/bunzip2
 +      $(LN_S) -f bzip2 $(DESTDIR)$(bindir)/bzcat
-diff -Nru bzip2-1.0.1/NEWS bzip2-1.0.1.new/NEWS
---- bzip2-1.0.1/NEWS   Thu Jan  1 01:00:00 1970
-+++ bzip2-1.0.1.new/NEWS       Sat Jun 24 20:13:06 2000
-@@ -0,0 +1,12 @@
+diff -Nru bzip2-1.0.2/NEWS bzip2-1.0.2.new/NEWS
+--- bzip2-1.0.2/NEWS   Thu Jan  1 01:00:00 1970
++++ bzip2-1.0.2.new/NEWS       Sat Jan 26 01:02:57 2002
+@@ -0,0 +1,253 @@
++
++
++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
@@ -549,14 +791,211 @@ diff -Nru bzip2-1.0.1/NEWS bzip2-1.0.1.new/NEWS
 +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.
-diff -Nru bzip2-1.0.1/bzip2.1 bzip2-1.0.1.new/bzip2.1
---- bzip2-1.0.1/bzip2.1        Sat Jun 24 20:13:27 2000
-+++ bzip2-1.0.1.new/bzip2.1    Thu Jan  1 01:00:00 1970
-@@ -1,439 +0,0 @@
++
++
++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.
++
+diff -Nru bzip2-1.0.2/bzdiff.1 bzip2-1.0.2.new/bzdiff.1
+--- bzip2-1.0.2/bzdiff.1       Sun Dec 30 03:12:35 2001
++++ bzip2-1.0.2.new/bzdiff.1   Thu Jan  1 01:00:00 1970
+@@ -1,47 +0,0 @@
+-\"Shamelessly copied from zmore.1 by Philippe Troin <phil@fifi.org>
+-\"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 -Nru bzip2-1.0.2/bzgrep.1 bzip2-1.0.2.new/bzgrep.1
+--- bzip2-1.0.2/bzgrep.1       Sun Dec 30 03:12:35 2001
++++ bzip2-1.0.2.new/bzgrep.1   Thu Jan  1 01:00:00 1970
+@@ -1,56 +0,0 @@
+-\"Shamelessly copied from zmore.1 by Philippe Troin <phil@fifi.org>
+-\"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 <phil@fifi.org> for Debian GNU/Linux.
+-.SH "SEE ALSO"
+-grep(1), egrep(1), fgrep(1), bzdiff(1), bzmore(1), bzless(1), bzip2(1)
+diff -Nru bzip2-1.0.2/bzip2.1 bzip2-1.0.2.new/bzip2.1
+--- bzip2-1.0.2/bzip2.1        Thu Jan  3 00:14:36 2002
++++ bzip2-1.0.2.new/bzip2.1    Thu Jan  1 01:00:00 1970
+@@ -1,453 +0,0 @@
 -.PU
 -.TH bzip2 1
 -.SH NAME
--bzip2, bunzip2 \- a block-sorting file compressor, v1.0
+-bzip2, bunzip2 \- a block-sorting file compressor, v1.0.2
 -.br
 -bzcat \- decompresses files to stdout
 -.br
@@ -752,7 +1191,7 @@ diff -Nru bzip2-1.0.1/bzip2.1 bzip2-1.0.1.new/bzip2.1
 -.TP
 -.B \-z --compress
 -The complement to \-d: forces compression, regardless of the
--invokation name.
+-invocation name.
 -.TP
 -.B \-t --test
 -Check integrity of the specified file(s), but don't decompress them.
@@ -766,6 +1205,10 @@ diff -Nru bzip2-1.0.1/bzip2.1 bzip2-1.0.1.new/bzip2.1
 -.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
@@ -794,9 +1237,13 @@ diff -Nru bzip2-1.0.1/bzip2.1 bzip2-1.0.1.new/bzip2.1
 -.B \-L --license -V --version
 -Display the software version, license terms and conditions.
 -.TP
--.B \-1 to \-9
+-.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
@@ -907,11 +1354,11 @@ diff -Nru bzip2-1.0.1/bzip2.1 bzip2-1.0.1.new/bzip2.1
 -
 -.I 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.
+-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" -- lists the files in
+-"bzip2 -dc  rec*file.bz2 > recovered_data" -- processes the files in
 -the correct order.
 -
 -.I bzip2recover
@@ -952,27 +1399,31 @@ diff -Nru bzip2-1.0.1/bzip2.1 bzip2-1.0.1.new/bzip2.1
 -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 of
+-This manual page pertains to version 1.0.2 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
--and 0.9.5,
--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.
+-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 and 1.0.1, 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
--uses 32-bit integers to represent bit positions in
--compressed files, so it cannot handle compressed files more than 512
--megabytes long.  This could easily be fixed.
+-versions prior to this one, 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.  Version 1.0.2 and above uses
+-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, jseward@acm.org.
 -
--http://sourceware.cygnus.com/bzip2
--http://www.muraroa.demon.co.uk
+-http://sources.redhat.com/bzip2
 -
 -The ideas embodied in
 -.I bzip2
@@ -989,21 +1440,21 @@ diff -Nru bzip2-1.0.1/bzip2.1 bzip2-1.0.1.new/bzip2.1
 -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.  Many people sent patches, helped
+-worst-case compression performance.  
+-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 -Nru bzip2-1.0.1/bzip2.1.preformatted bzip2-1.0.1.new/bzip2.1.preformatted
---- bzip2-1.0.1/bzip2.1.preformatted   Sat Jun 24 20:13:27 2000
-+++ bzip2-1.0.1.new/bzip2.1.preformatted       Thu Jan  1 01:00:00 1970
-@@ -1,462 +0,0 @@
--
--
--
+diff -Nru bzip2-1.0.2/bzip2.1.preformatted bzip2-1.0.2.new/bzip2.1.preformatted
+--- bzip2-1.0.2/bzip2.1.preformatted   Thu Jan  3 00:15:56 2002
++++ bzip2-1.0.2.new/bzip2.1.preformatted       Thu Jan  1 01:00:00 1970
+@@ -1,398 +0,0 @@
 -bzip2(1)                                                 bzip2(1)
 -
 -
+-
 -N\bNA\bAM\bME\bE
--       bzip2, bunzip2 - a block-sorting file compressor, v1.0
+-       bzip2, bunzip2 - a block-sorting file compressor, v1.0.2
 -       bzcat - decompresses files to stdout
 -       bzip2recover - recovers data from damaged bzip2 files
 -
@@ -1020,20 +1471,20 @@ diff -Nru bzip2-1.0.1/bzip2.1.preformatted bzip2-1.0.1.new/bzip2.1.preformatted
 -       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-
+-       and  approaches  the performance of the PPM family of sta­
 -       tistical compressors.
 -
 -       The command-line options are deliberately very similar  to
 -       those of _\bG_\bN_\bU _\bg_\bz_\bi_\bp_\b, but they are not identical.
 -
--       _\bb_\bz_\bi_\bp_\b2  expects  a list of file names to accompany the com-
+-       _\bb_\bz_\bi_\bp_\b2  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-
+-       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-
+-       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.
@@ -1056,18 +1507,6 @@ diff -Nru bzip2-1.0.1/bzip2.1.preformatted bzip2-1.0.1.new/bzip2.1.preformatted
 -              filename.bz2    becomes   filename
 -              filename.bz     becomes   filename
 -              filename.tbz2   becomes   filename.tar
--
--
--
--                                                                1
--
--
--
--
--
--bzip2(1)                                                 bzip2(1)
--
--
 -              filename.tbz    becomes   filename.tar
 -              anyothername    becomes   anyothername.out
 -
@@ -1076,23 +1515,23 @@ diff -Nru bzip2-1.0.1/bzip2.1.preformatted bzip2-1.0.1.new/bzip2.1.preformatted
 -       guess the name of the original file, and uses the original
 -       name with _\b._\bo_\bu_\bt appended.
 -
--       As  with compression, supplying no filenames causes decom-
+-       As  with compression, supplying no filenames causes decom­
 -       pression from standard input to standard output.
 -
--       _\bb_\bu_\bn_\bz_\bi_\bp_\b2 will correctly decompress a file which is the con-
+-       _\bb_\bu_\bn_\bz_\bi_\bp_\b2 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-
+-       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-
+-       files in this manner generates a stream containing  multi­
 -       ple compressed file representations.  Such a stream can be
 -       decompressed correctly only  by  _\bb_\bz_\bi_\bp_\b2  version  0.9.0  or
--       later.   Earlier  versions of _\bb_\bz_\bi_\bp_\b2 will stop after decom-
+-       later.   Earlier  versions of _\bb_\bz_\bi_\bp_\b2 will stop after decom­
 -       pressing the first file in the stream.
 -
 -       _\bb_\bz_\bc_\ba_\bt (or _\bb_\bz_\bi_\bp_\b2 _\b-_\bd_\bc_\b) decompresses all specified  files  to
@@ -1113,7 +1552,7 @@ diff -Nru bzip2-1.0.1/bzip2.1.preformatted bzip2-1.0.1.new/bzip2.1.preformatted
 -
 -       As a self-check for your  protection,  _\bb_\bz_\bi_\bp_\b2  uses  32-bit
 -       CRCs  to make sure that the decompressed version of a file
--       is identical to the original.  This guards against corrup-
+-       is identical to the original.  This guards against corrup­
 -       tion  of  the compressed data, and against undetected bugs
 -       in _\bb_\bz_\bi_\bp_\b2 (hopefully very unlikely).  The chances  of  data
 -       corruption  going  undetected  is  microscopic,  about one
@@ -1123,17 +1562,6 @@ diff -Nru bzip2-1.0.1/bzip2.1.preformatted bzip2-1.0.1.new/bzip2.1.preformatted
 -       you  recover  the original uncompressed data.  You can use
 -       _\bb_\bz_\bi_\bp_\b2_\br_\be_\bc_\bo_\bv_\be_\br to try to recover data from damaged files.
 -
--
--
--                                                                2
--
--
--
--
--
--bzip2(1)                                                 bzip2(1)
--
--
 -       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
@@ -1152,8 +1580,8 @@ diff -Nru bzip2-1.0.1/bzip2.1.preformatted bzip2-1.0.1.new/bzip2.1.preformatted
 -              and forces _\bb_\bz_\bi_\bp_\b2 to decompress.
 -
 -       -\b-z\bz -\b--\b-c\bco\bom\bmp\bpr\bre\bes\bss\bs
--              The  complement  to -d: forces compression, regard-
--              less of the invokation name.
+-              The   complement   to   -d:   forces   compression,
+-              regardless of the invocation name.
 -
 -       -\b-t\bt -\b--\b-t\bte\bes\bst\bt
 -              Check integrity of the specified file(s), but don't
@@ -1166,6 +1594,11 @@ diff -Nru bzip2-1.0.1/bzip2.1.preformatted bzip2-1.0.1.new/bzip2.1.preformatted
 -              forces _\bb_\bz_\bi_\bp_\b2 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.
+-
 -       -\b-k\bk -\b--\b-k\bke\bee\bep\bp
 -              Keep  (don't delete) input files during compression
 -              or decompression.
@@ -1188,23 +1621,11 @@ diff -Nru bzip2-1.0.1/bzip2.1.preformatted bzip2-1.0.1.new/bzip2.1.preformatted
 -       -\b-q\bq -\b--\b-q\bqu\bui\bie\bet\bt
 -              Suppress non-essential warning messages.   Messages
 -              pertaining  to I/O errors and other critical events
--
--
--
--                                                                3
--
--
--
--
--
--bzip2(1)                                                 bzip2(1)
--
--
 -              will not be suppressed.
 -
 -       -\b-v\bv -\b--\b-v\bve\ber\brb\bbo\bos\bse\be
 -              Verbose mode -- show the compression ratio for each
--              file  processed.   Further  -v's  increase the ver-
+-              file  processed.   Further  -v's  increase the ver­
 -              bosity level, spewing out lots of information which
 -              is primarily of interest for diagnostic purposes.
 -
@@ -1212,20 +1633,24 @@ diff -Nru bzip2-1.0.1/bzip2.1.preformatted bzip2-1.0.1.new/bzip2.1.preformatted
 -              Display  the  software  version,  license terms and
 -              conditions.
 -
--       -\b-1\bt\bto\bo -\b-9\b9
+-       -\b-1\b(\b(o\bor\br -\b--\b-f\bfa\bas\bst\bt)\b) t\bto\bo -\b-9\b9 (\b(o\bor\br -\b--\b-b\bbe\bes\bst\bt)\b)
 -              Set the block size to 100 k, 200 k ..  900  k  when
 -              compressing.   Has  no  effect  when decompressing.
--              See MEMORY MANAGEMENT below.
+-              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.
 -
 -       -\b--\b-     Treats all subsequent arguments as file names, even
--              if they start with a dash.  This is so you can han-
+-              if they start with a dash.  This is so you can han­
 -              dle files with names beginning  with  a  dash,  for
 -              example: bzip2 -- -myfilename.
 -
 -       -\b--\b-r\bre\bep\bpe\bet\bti\bit\bti\biv\bve\be-\b-f\bfa\bas\bst\bt -\b--\b-r\bre\bep\bpe\bet\bti\bit\bti\biv\bve\be-\b-b\bbe\bes\bst\bt
 -              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-
+-              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.
@@ -1236,7 +1661,7 @@ diff -Nru bzip2-1.0.1/bzip2.1.preformatted bzip2-1.0.1.new/bzip2.1.preformatted
 -       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-
+-       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 _\bb_\bu_\bn_\bz_\bi_\bp_\b2 then allocates itself just enough memory
@@ -1254,18 +1679,6 @@ diff -Nru bzip2-1.0.1/bzip2.1.preformatted bzip2-1.0.1.new/bzip2.1.preformatted
 -
 -       Larger  block  sizes  give  rapidly  diminishing  marginal
 -       returns.  Most of the compression comes from the first two
--
--
--
--                                                                4
--
--
--
--
--
--bzip2(1)                                                 bzip2(1)
--
--
 -       or  three hundred k of block size, a fact worth bearing in
 -       mind when using _\bb_\bz_\bi_\bp_\b2  on  small  machines.   It  is  also
 -       important  to  appreciate  that  the  decompression memory
@@ -1276,13 +1689,13 @@ diff -Nru bzip2-1.0.1/bzip2.1.preformatted bzip2-1.0.1.new/bzip2.1.preformatted
 -       _\bb_\bu_\bn_\bz_\bi_\bp_\b2 will require about 3700 kbytes to decompress.   To
 -       support decompression of any file on a 4 megabyte machine,
 -       _\bb_\bu_\bn_\bz_\bi_\bp_\b2 has an option to  decompress  using  approximately
--       half this amount of memory, about 2300 kbytes.  Decompres-
+-       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-
+-       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-
+-       achieved.   Compression and decompression speed are virtu­
 -       ally unaffected by block size.
 -
 -       Another significant point applies to files which fit in  a
@@ -1298,11 +1711,11 @@ diff -Nru bzip2-1.0.1/bzip2.1.preformatted bzip2-1.0.1.new/bzip2.1.preformatted
 -
 -       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-
+-       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-
+-       block  sizes  for  larger files, since the Corpus is domi­
 -       nated by smaller files.
 -
 -                  Compress   Decompress   Decompress   Corpus
@@ -1319,22 +1732,9 @@ diff -Nru bzip2-1.0.1/bzip2.1.preformatted bzip2-1.0.1.new/bzip2.1.preformatted
 -            -9      7600k      3700k        2350k      828642
 -
 -
--
--
--
--
--                                                                5
--
--
--
--
--
--bzip2(1)                                                 bzip2(1)
--
--
 -R\bRE\bEC\bCO\bOV\bVE\bER\bRI\bIN\bNG\bG D\bDA\bAT\bTA\bA F\bFR\bRO\bOM\bM D\bDA\bAM\bMA\bAG\bGE\bED\bD F\bFI\bIL\bLE\bES\bS
 -       _\bb_\bz_\bi_\bp_\b2 compresses files in blocks, usually 900kbytes  long.
--       Each block is handled independently.  If a media or trans-
+-       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.
@@ -1351,19 +1751,19 @@ diff -Nru bzip2-1.0.1/bzip2.1.preformatted bzip2-1.0.1.new/bzip2.1.preformatted
 -       the integrity of the resulting files, and decompress those
 -       which are undamaged.
 -
--       _\bb_\bz_\bi_\bp_\b2_\br_\be_\bc_\bo_\bv_\be_\br takes a single argument, the name of the dam-
--       aged 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.
+-       _\bb_\bz_\bi_\bp_\b2_\br_\be_\bc_\bo_\bv_\be_\br 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.
 -
 -       _\bb_\bz_\bi_\bp_\b2_\br_\be_\bc_\bo_\bv_\be_\br 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-
+-       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.
 -
@@ -1377,31 +1777,19 @@ diff -Nru bzip2-1.0.1/bzip2.1.preformatted bzip2-1.0.1.new/bzip2.1.preformatted
 -       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-
+-       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.
 -
 -       _\bb_\bz_\bi_\bp_\b2  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-
+-       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
--
--
--
--                                                                6
--
--
--
--
--
--bzip2(1)                                                 bzip2(1)
--
--
 -       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 _\bb_\bz_\bi_\bp_\b2 will per-
+-       large performance improvements.  I imagine _\bb_\bz_\bi_\bp_\b2 will per­
 -       form best on machines with very large caches.
 -
 -
@@ -1411,62 +1799,219 @@ diff -Nru bzip2-1.0.1/bzip2.1.preformatted bzip2-1.0.1.new/bzip2.1.preformatted
 -       but  the  details  of  what  the problem is sometimes seem
 -       rather misleading.
 -
--       This manual page pertains to version 1.0 of  _\bb_\bz_\bi_\bp_\b2_\b.   Com-
+-       This manual page pertains to version 1.0.2 of _\bb_\bz_\bi_\bp_\b2_\b.  Com­
 -       pressed  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, but with the
--       following exception: 0.9.0 and above can correctly  decom-
--       press multiple concatenated compressed files.  0.1pl2 can-
--       not do this; it will stop  after  decompressing  just  the
--       first file in the stream.
+-       releases,  versions 0.1pl2, 0.9.0, 0.9.5, 1.0.0 and 1.0.1,
+-       but with the following exception: 0.9.0 and above can cor­
+-       rectly  decompress multiple concatenated compressed files.
+-       0.1pl2 cannot do this; it will  stop  after  decompressing
+-       just the first file in the stream.
+-
+-       _\bb_\bz_\bi_\bp_\b2_\br_\be_\bc_\bo_\bv_\be_\br  versions  prior  to  this  one,  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.  Version 1.0.2 and above  uses  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.
+-
 -
--       _\bb_\bz_\bi_\bp_\b2_\br_\be_\bc_\bo_\bv_\be_\br  uses  32-bit integers to represent bit posi-
--       tions in compressed files, so it cannot handle  compressed
--       files  more than 512 megabytes long.  This could easily be
--       fixed.
 -
 -
 -A\bAU\bUT\bTH\bHO\bOR\bR
 -       Julian Seward, jseward@acm.org.
 -
--       http://sourceware.cygnus.com/bzip2
--       http://www.muraroa.demon.co.uk
+-       http://sources.redhat.com/bzip2
 -
--       The ideas embodied in _\bb_\bz_\bi_\bp_\b2 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-
+-       The ideas embodied in _\bb_\bz_\bi_\bp_\b2 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 _\bb_\bz_\bi_\bp_\b, and many refinements), and
--       Alistair Moffat, Radford Neal  and  Ian  Witten  (for  the
+-       Alistair  Moffat,  Radford  Neal  and  Ian Witten (for the
 -       arithmetic  coder  in  the  original  _\bb_\bz_\bi_\bp_\b)_\b.   I  am  much
--       indebted for their help, support and advice.  See the man-
--       ual  in the source distribution for pointers to sources of
+-       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-
+-       for faster sorting algorithms, so as to speed up  compres­
 -       sion.  Bela Lubkin encouraged me to improve the worst-case
--       compression performance.  Many people sent patches, helped
--       with portability problems, lent machines, gave advice  and
--       were generally helpful.
+-       compression performance.  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.
 -
 -
 -
--
--
--
--
--
--                                                                7
--
--
-diff -Nru bzip2-1.0.1/bzless bzip2-1.0.1.new/bzless
---- bzip2-1.0.1/bzless Thu Jan  1 01:00:00 1970
-+++ bzip2-1.0.1.new/bzless     Sat Jun 24 20:16:09 2000
+-                                                         bzip2(1)
+diff -Nru bzip2-1.0.2/bzless bzip2-1.0.2.new/bzless
+--- bzip2-1.0.2/bzless Thu Jan  1 01:00:00 1970
++++ bzip2-1.0.2.new/bzless     Fri Feb  1 04:19:11 2002
 @@ -0,0 +1,2 @@
 +#!/bin/sh
 +%{_bindir}/bunzip2 -c "$@" | %{_bindir}/less
-diff -Nru bzip2-1.0.1/config.h.in bzip2-1.0.1.new/config.h.in
---- bzip2-1.0.1/config.h.in    Thu Jan  1 01:00:00 1970
-+++ bzip2-1.0.1.new/config.h.in        Sat Jun 24 20:13:06 2000
+diff -Nru bzip2-1.0.2/bzmore.1 bzip2-1.0.2.new/bzmore.1
+--- bzip2-1.0.2/bzmore.1       Sun Dec 30 03:12:35 2001
++++ bzip2-1.0.2.new/bzmore.1   Thu Jan  1 01:00:00 1970
+@@ -1,152 +0,0 @@
+-.\"Shamelessly copied from zmore.1 by Philippe Troin <phil@fifi.org>
+-.\"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<space>
+-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 -Nru bzip2-1.0.2/config.h.in bzip2-1.0.2.new/config.h.in
+--- bzip2-1.0.2/config.h.in    Thu Jan  1 01:00:00 1970
++++ bzip2-1.0.2.new/config.h.in        Fri Feb  1 04:19:11 2002
 @@ -0,0 +1,17 @@
 +/* config.h.in.  Generated automatically from configure.in by autoheader.  */
 +
@@ -1485,9 +2030,9 @@ diff -Nru bzip2-1.0.1/config.h.in bzip2-1.0.1.new/config.h.in
 +/* Define for large files, on AIX-style hosts. */
 +#undef _LARGE_FILES
 +
-diff -Nru bzip2-1.0.1/configure.in bzip2-1.0.1.new/configure.in
---- bzip2-1.0.1/configure.in   Thu Jan  1 01:00:00 1970
-+++ bzip2-1.0.1.new/configure.in       Sat Jun 24 20:13:06 2000
+diff -Nru bzip2-1.0.2/configure.in bzip2-1.0.2.new/configure.in
+--- bzip2-1.0.2/configure.in   Thu Jan  1 01:00:00 1970
++++ bzip2-1.0.2.new/configure.in       Fri Feb  1 04:19:11 2002
 @@ -0,0 +1,10 @@
 +AC_INIT(bzip2.c)
 +AM_INIT_AUTOMAKE(bzip2,1.0.1)
@@ -1499,9 +2044,9 @@ diff -Nru bzip2-1.0.1/configure.in bzip2-1.0.1.new/configure.in
 +AC_OUTPUT(Makefile
 +      doc/Makefile
 +      doc/pl/Makefile)
-diff -Nru bzip2-1.0.1/crctable.c bzip2-1.0.1.new/crctable.c
---- bzip2-1.0.1/crctable.c     Sat Jun 24 20:13:27 2000
-+++ bzip2-1.0.1.new/crctable.c Sat Jun 24 20:13:06 2000
+diff -Nru bzip2-1.0.2/crctable.c bzip2-1.0.2.new/crctable.c
+--- bzip2-1.0.2/crctable.c     Sun Dec 30 03:19:28 2001
++++ bzip2-1.0.2.new/crctable.c Fri Feb  1 04:19:11 2002
 @@ -58,6 +58,10 @@
    For more information on these sources, see the manual.
  --*/
@@ -1513,9 +2058,9 @@ diff -Nru bzip2-1.0.1/crctable.c bzip2-1.0.1.new/crctable.c
  
  #include "bzlib_private.h"
  
-diff -Nru bzip2-1.0.1/decompress.c bzip2-1.0.1.new/decompress.c
---- bzip2-1.0.1/decompress.c   Sat Jun 24 20:13:27 2000
-+++ bzip2-1.0.1.new/decompress.c       Sat Jun 24 20:13:06 2000
+diff -Nru bzip2-1.0.2/decompress.c bzip2-1.0.2.new/decompress.c
+--- bzip2-1.0.2/decompress.c   Sun Dec 30 21:45:53 2001
++++ bzip2-1.0.2.new/decompress.c       Fri Feb  1 04:19:11 2002
 @@ -58,6 +58,10 @@
    For more information on these sources, see the manual.
  --*/
@@ -1527,9 +2072,9 @@ diff -Nru bzip2-1.0.1/decompress.c bzip2-1.0.1.new/decompress.c
  
  #include "bzlib_private.h"
  
-diff -Nru bzip2-1.0.1/dlltest.c bzip2-1.0.1.new/dlltest.c
---- bzip2-1.0.1/dlltest.c      Sat Jun 24 20:13:27 2000
-+++ bzip2-1.0.1.new/dlltest.c  Sat Jun 24 20:13:06 2000
+diff -Nru bzip2-1.0.2/dlltest.c bzip2-1.0.2.new/dlltest.c
+--- bzip2-1.0.2/dlltest.c      Sun Dec 30 20:44:07 2001
++++ bzip2-1.0.2.new/dlltest.c  Fri Feb  1 04:19:11 2002
 @@ -8,6 +8,10 @@
     usage: minibz2 [-d] [-{1,2,..9}] [[srcfilename] destfilename]\r
  */\r
@@ -1541,35 +2086,147 @@ diff -Nru bzip2-1.0.1/dlltest.c bzip2-1.0.1.new/dlltest.c
  #define BZ_IMPORT\r
  #include <stdio.h>\r
  #include <stdlib.h>\r
-diff -Nru bzip2-1.0.1/doc/Makefile.am bzip2-1.0.1.new/doc/Makefile.am
---- bzip2-1.0.1/doc/Makefile.am        Thu Jan  1 01:00:00 1970
-+++ bzip2-1.0.1.new/doc/Makefile.am    Sat Jun 24 20:14:43 2000
-@@ -0,0 +1,5 @@
+diff -Nru bzip2-1.0.2/doc/Makefile.am bzip2-1.0.2.new/doc/Makefile.am
+--- bzip2-1.0.2/doc/Makefile.am        Thu Jan  1 01:00:00 1970
++++ bzip2-1.0.2.new/doc/Makefile.am    Fri Feb  1 04:27:21 2002
+@@ -0,0 +1,6 @@
 +
 +SUBDIRS               = pl
 +
-+man_MANS      = bzip2.1 bunzip2.1 bzcat.1 bzip2recover.1
++man_MANS      = bunzip2.1 bzcat.1 bzdiff.1 bzgrep.1 bzip2.1 \
++                bzip2recover.1 bzmore.1
 +#info_TEXINFOS        = bzip2.texi
-diff -Nru bzip2-1.0.1/doc/bunzip2.1 bzip2-1.0.1.new/doc/bunzip2.1
---- bzip2-1.0.1/doc/bunzip2.1  Thu Jan  1 01:00:00 1970
-+++ bzip2-1.0.1.new/doc/bunzip2.1      Sat Jun 24 20:13:06 2000
+diff -Nru bzip2-1.0.2/doc/bunzip2.1 bzip2-1.0.2.new/doc/bunzip2.1
+--- bzip2-1.0.2/doc/bunzip2.1  Thu Jan  1 01:00:00 1970
++++ bzip2-1.0.2.new/doc/bunzip2.1      Fri Feb  1 04:19:11 2002
 @@ -0,0 +1 @@
 +.so bzip2.1
 \ No newline at end of file
-diff -Nru bzip2-1.0.1/doc/bzcat.1 bzip2-1.0.1.new/doc/bzcat.1
---- bzip2-1.0.1/doc/bzcat.1    Thu Jan  1 01:00:00 1970
-+++ bzip2-1.0.1.new/doc/bzcat.1        Sat Jun 24 20:13:06 2000
+diff -Nru bzip2-1.0.2/doc/bzcat.1 bzip2-1.0.2.new/doc/bzcat.1
+--- bzip2-1.0.2/doc/bzcat.1    Thu Jan  1 01:00:00 1970
++++ bzip2-1.0.2.new/doc/bzcat.1        Fri Feb  1 04:19:11 2002
 @@ -0,0 +1 @@
 +.so bzip2.1
 \ No newline at end of file
-diff -Nru bzip2-1.0.1/doc/bzip2.1 bzip2-1.0.1.new/doc/bzip2.1
---- bzip2-1.0.1/doc/bzip2.1    Thu Jan  1 01:00:00 1970
-+++ bzip2-1.0.1.new/doc/bzip2.1        Sat Jun 24 20:13:06 2000
-@@ -0,0 +1,439 @@
+diff -Nru bzip2-1.0.2/doc/bzdiff.1 bzip2-1.0.2.new/doc/bzdiff.1
+--- bzip2-1.0.2/doc/bzdiff.1   Thu Jan  1 01:00:00 1970
++++ bzip2-1.0.2.new/doc/bzdiff.1       Sun Dec 30 03:12:35 2001
+@@ -0,0 +1,47 @@
++\"Shamelessly copied from zmore.1 by Philippe Troin <phil@fifi.org>
++\"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 -Nru bzip2-1.0.2/doc/bzgrep.1 bzip2-1.0.2.new/doc/bzgrep.1
+--- bzip2-1.0.2/doc/bzgrep.1   Thu Jan  1 01:00:00 1970
++++ bzip2-1.0.2.new/doc/bzgrep.1       Sun Dec 30 03:12:35 2001
+@@ -0,0 +1,56 @@
++\"Shamelessly copied from zmore.1 by Philippe Troin <phil@fifi.org>
++\"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 <phil@fifi.org> for Debian GNU/Linux.
++.SH "SEE ALSO"
++grep(1), egrep(1), fgrep(1), bzdiff(1), bzmore(1), bzless(1), bzip2(1)
+diff -Nru bzip2-1.0.2/doc/bzip2.1 bzip2-1.0.2.new/doc/bzip2.1
+--- bzip2-1.0.2/doc/bzip2.1    Thu Jan  1 01:00:00 1970
++++ bzip2-1.0.2.new/doc/bzip2.1        Thu Jan  3 00:14:36 2002
+@@ -0,0 +1,453 @@
 +.PU
 +.TH bzip2 1
 +.SH NAME
-+bzip2, bunzip2 \- a block-sorting file compressor, v1.0
++bzip2, bunzip2 \- a block-sorting file compressor, v1.0.2
 +.br
 +bzcat \- decompresses files to stdout
 +.br
@@ -1765,7 +2422,7 @@ diff -Nru bzip2-1.0.1/doc/bzip2.1 bzip2-1.0.1.new/doc/bzip2.1
 +.TP
 +.B \-z --compress
 +The complement to \-d: forces compression, regardless of the
-+invokation name.
++invocation name.
 +.TP
 +.B \-t --test
 +Check integrity of the specified file(s), but don't decompress them.
@@ -1779,6 +2436,10 @@ diff -Nru bzip2-1.0.1/doc/bzip2.1 bzip2-1.0.1.new/doc/bzip2.1
 +.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
@@ -1807,9 +2468,13 @@ diff -Nru bzip2-1.0.1/doc/bzip2.1 bzip2-1.0.1.new/doc/bzip2.1
 +.B \-L --license -V --version
 +Display the software version, license terms and conditions.
 +.TP
-+.B \-1 to \-9
++.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
@@ -1920,11 +2585,11 @@ diff -Nru bzip2-1.0.1/doc/bzip2.1 bzip2-1.0.1.new/doc/bzip2.1
 +
 +.I 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.
++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" -- lists the files in
++"bzip2 -dc  rec*file.bz2 > recovered_data" -- processes the files in
 +the correct order.
 +
 +.I bzip2recover
@@ -1965,27 +2630,31 @@ diff -Nru bzip2-1.0.1/doc/bzip2.1 bzip2-1.0.1.new/doc/bzip2.1
 +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 of
++This manual page pertains to version 1.0.2 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
-+and 0.9.5,
-+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.
++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 and 1.0.1, 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
-+uses 32-bit integers to represent bit positions in
-+compressed files, so it cannot handle compressed files more than 512
-+megabytes long.  This could easily be fixed.
++versions prior to this one, 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.  Version 1.0.2 and above uses
++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, jseward@acm.org.
 +
-+http://sourceware.cygnus.com/bzip2
-+http://www.muraroa.demon.co.uk
++http://sources.redhat.com/bzip2
 +
 +The ideas embodied in
 +.I bzip2
@@ -2002,21 +2671,23 @@ diff -Nru bzip2-1.0.1/doc/bzip2.1 bzip2-1.0.1.new/doc/bzip2.1
 +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.  Many people sent patches, helped
++worst-case compression performance.  
++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 -Nru bzip2-1.0.1/doc/bzip2.texi bzip2-1.0.1.new/doc/bzip2.texi
---- bzip2-1.0.1/doc/bzip2.texi Thu Jan  1 01:00:00 1970
-+++ bzip2-1.0.1.new/doc/bzip2.texi     Sat Jun 24 20:13:06 2000
-@@ -0,0 +1,2217 @@
+diff -Nru bzip2-1.0.2/doc/bzip2.texi bzip2-1.0.2.new/doc/bzip2.texi
+--- bzip2-1.0.2/doc/bzip2.texi Thu Jan  1 01:00:00 1970
++++ bzip2-1.0.2.new/doc/bzip2.texi     Fri Feb  1 04:26:21 2002
+@@ -0,0 +1,2234 @@
 +\input texinfo  @c                                  -*- Texinfo -*-
 +@setfilename bzip2.info
 +
 +@ignore
-+This file documents bzip2 version 1.0, and associated library
++This file documents bzip2 version 1.0.2, and associated library
 +libbzip2, written by Julian Seward (jseward@acm.org).
 +
-+Copyright (C) 1996-2000 Julian R Seward
++Copyright (C) 1996-2002 Julian R Seward
 +
 +Permission is granted to make and distribute verbatim copies of
 +this manual provided the copyright notice and this permission notice
@@ -2026,23 +2697,14 @@ diff -Nru bzip2-1.0.1/doc/bzip2.texi bzip2-1.0.1.new/doc/bzip2.texi
 +into another language, under the above conditions for verbatim copies.
 +@end ignore
 +
-+@ifinfo
-+@format
-+@dircategory File utilities:
-+* Bzip2: (bzip2).                     A program and library for data
-+                                      compression
-+@end direntry
-+@end format
-+@end ifinfo
-+
 +@iftex
 +@c @finalout
 +@settitle bzip2 and libbzip2
 +@titlepage
 +@title bzip2 and libbzip2
 +@subtitle a program and library for data compression
-+@subtitle copyright (C) 1996-2000 Julian Seward
-+@subtitle version 1.0 of 21 March 2000
++@subtitle copyright (C) 1996-2002 Julian Seward
++@subtitle version 1.0.2 of 30 December 2001
 +@author Julian Seward
 +
 +@end titlepage
@@ -2051,13 +2713,17 @@ diff -Nru bzip2-1.0.1/doc/bzip2.texi bzip2-1.0.1.new/doc/bzip2.texi
 +@parskip 2mm
 +
 +@end iftex
-+@node Top, Overview, (dir), (dir)
++@node Top,,, (dir)
++
++The following text is the License for this software.  You should
++find it identical to that contained in the file LICENSE in the 
++source distribution.
 +
-+@top bzip2
++------------------ START OF THE LICENSE ------------------
 +
 +This program, @code{bzip2}, 
 +and associated library @code{libbzip2}, are
-+Copyright (C) 1996-2000 Julian R Seward.  All rights reserved.
++Copyright (C) 1996-2002 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
@@ -2095,13 +2761,15 @@ diff -Nru bzip2-1.0.1/doc/bzip2.texi bzip2-1.0.1.new/doc/bzip2.texi
 +
 +@code{jseward@@acm.org}
 +
-+@code{http://sourceware.cygnus.com/bzip2}
++@code{bzip2}/@code{libbzip2} version 1.0.2 of 30 December 2001.
 +
-+@code{http://www.cacheprof.org}
++------------------ END OF THE LICENSE ------------------
++
++Web sites:
 +
-+@code{http://www.muraroa.demon.co.uk}
++@code{http://sources.redhat.com/bzip2}
 +
-+@code{bzip2}/@code{libbzip2} version 1.0 of 21 March 2000.
++@code{http://www.cacheprof.org}
 +
 +PATENTS: To the best of my knowledge, @code{bzip2} does not use any patented
 +algorithms.  However, I do not have the resources available to carry out
@@ -2114,7 +2782,6 @@ diff -Nru bzip2-1.0.1/doc/bzip2.texi bzip2-1.0.1.new/doc/bzip2.texi
 +
 +
 +
-+@node Overview, Implementation, Top, Top
 +@chapter Introduction
 +
 +@code{bzip2}  compresses  files  using the Burrows-Wheeler 
@@ -2147,7 +2814,7 @@ diff -Nru bzip2-1.0.1/doc/bzip2.texi bzip2-1.0.1.new/doc/bzip2.texi
 +@unnumberedsubsubsec NAME
 +@itemize
 +@item @code{bzip2}, @code{bunzip2}
-+- a block-sorting file compressor, v1.0
++- a block-sorting file compressor, v1.0.2
 +@item @code{bzcat} 
 +- decompresses files to stdout
 +@item @code{bzip2recover}
@@ -2277,6 +2944,11 @@ diff -Nru bzip2-1.0.1/doc/bzip2.texi bzip2-1.0.1.new/doc/bzip2.texi
 +Force overwrite of output files.  Normally, @code{bzip2} will not overwrite
 +existing output files.  Also forces @code{bzip2} to break hard links
 +to files, which it otherwise wouldn't do.
++
++@code{bzip2} normally declines to decompress files which don't have the
++correct magic header bytes.  If forced (@code{-f}), however, it will
++pass such files through unmodified.  This is how GNU @code{gzip}
++behaves.
 +@item -k --keep
 +Keep (don't delete) input files during compression
 +or decompression.
@@ -2299,9 +2971,13 @@ diff -Nru bzip2-1.0.1/doc/bzip2.texi bzip2-1.0.1.new/doc/bzip2.texi
 +information which is primarily of interest for diagnostic purposes.
 +@item -L --license -V --version
 +Display the software version, license terms and conditions.
-+@item -1 to -9
++@item -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 @code{--fast} and @code{--best} aliases are primarily for GNU
++@code{gzip} compatibility.  In particular, @code{--fast} doesn't make
++things significantly faster.  And @code{--best} merely selects the
++default behaviour.
 +@item --
 +Treats all subsequent arguments as file names, even if they start
 +with a dash.  This is so you can handle files with names beginning
@@ -2402,21 +3078,19 @@ diff -Nru bzip2-1.0.1/doc/bzip2.texi bzip2-1.0.1.new/doc/bzip2.texi
 +undamaged.
 +
 +@code{bzip2recover} 
-+takes a single argument, the name of the damaged file, 
-+and writes a number of files @code{rec0001file.bz2},
-+       @code{rec0002file.bz2}, etc, containing the  extracted  blocks.
-+       The  output  filenames  are  designed  so  that the use of
-+       wildcards in subsequent processing -- for example,  
-+@code{bzip2 -dc  rec*file.bz2 > recovered_data} -- lists the files in
-+       the correct order.
++takes a single argument, the name of the damaged file, and writes a
++number of files @code{rec00001file.bz2}, @code{rec00002file.bz2}, etc,
++containing the extracted blocks.  The output filenames are designed so
++that the use of wildcards in subsequent processing -- for example,
++@code{bzip2 -dc rec*file.bz2 > recovered_data} -- processes the files in
++the correct order.
 +
 +@code{bzip2recover} should be of most use dealing with large @code{.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.
++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.
 +
 +
 +@unnumberedsubsubsec PERFORMANCE NOTES
@@ -2448,22 +3122,31 @@ diff -Nru bzip2-1.0.1/doc/bzip2.texi bzip2-1.0.1.new/doc/bzip2.texi
 +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 of @code{bzip2}.  Compressed
++This manual page pertains to version 1.0.2 of @code{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, 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.
++compatible with the previous public releases, versions 0.1pl2, 0.9.0,
++0.9.5, 1.0.0 and 1.0.1, 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.
++
++@code{bzip2recover} versions prior to this one, 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.  Version 1.0.2 and
++above uses 64-bit ints on some platforms which support them (GNU
++supported targets, and Windows).  To establish whether or not
++@code{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 @code{MaybeUInt64} set to be an unsigned
++64-bit integer.
 +
-+@code{bzip2recover} uses 32-bit integers to represent bit positions in
-+compressed files, so it cannot handle compressed files more than 512
-+megabytes long.  This could easily be fixed.
 +
 +
 +@unnumberedsubsubsec AUTHOR
 +Julian Seward, @code{jseward@@acm.org}.
 +
++@code{http://sources.redhat.com/bzip2}
++
 +The ideas embodied in @code{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
@@ -2474,8 +3157,9 @@ diff -Nru bzip2-1.0.1/doc/bzip2.texi bzip2-1.0.1.new/doc/bzip2.texi
 +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.  Many people sent patches, helped
-+with portability problems, lent machines, gave advice and were generally
++worst-case compression performance.  The @code{bz*} scripts are derived
++from those of GNU @code{gzip}.  Many people sent patches, helped with
++portability problems, lent machines, gave advice and were generally
 +helpful.
 +
 +@end quotation
@@ -3782,16 +4466,20 @@ diff -Nru bzip2-1.0.1/doc/bzip2.texi bzip2-1.0.1.new/doc/bzip2.texi
 +For a normal compile, an assertion failure yields the message
 +@example
 +   bzip2/libbzip2: internal error number N.
-+   This is a bug in bzip2/libbzip2, 1.0 of 21-Mar-2000.
++   This is a bug in bzip2/libbzip2, 1.0.2, 30-Dec-2001.
 +   Please report it to me at: jseward@@acm.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, 21 March 2000.
++   quality software.  Thanks.  Julian Seward, 30 December 2001.
 +@end example
-+where @code{N} is some error code number.  @code{exit(3)}
-+is then called.
++where @code{N} is some error code number.  If @code{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).
++
++@code{exit(3)} is then called.
 +
 +For a @code{stdio}-free library, assertion failures result
 +in a call to a function declared as:
@@ -4069,10 +4757,10 @@ diff -Nru bzip2-1.0.1/doc/bzip2.texi bzip2-1.0.1.new/doc/bzip2.texi
 +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, @code{zlib-1.1.2} and
++Gailly's and Mark Adler's work, @code{zlib-1.1.3} and
 +@code{gzip-1.2.4}.  Look for them at
 +
-+@code{http://www.cdrom.com/pub/infozip/zlib} and
++@code{http://www.zlib.org} and
 +@code{http://www.gzip.org} respectively.
 +
 +For something faster and lighter still, you might try Markus F X J
@@ -4226,35 +4914,191 @@ diff -Nru bzip2-1.0.1/doc/bzip2.texi bzip2-1.0.1.new/doc/bzip2.texi
 +
 +@bye
 +
-diff -Nru bzip2-1.0.1/doc/bzip2recover.1 bzip2-1.0.1.new/doc/bzip2recover.1
---- bzip2-1.0.1/doc/bzip2recover.1     Thu Jan  1 01:00:00 1970
-+++ bzip2-1.0.1.new/doc/bzip2recover.1 Sat Jun 24 20:13:06 2000
+diff -Nru bzip2-1.0.2/doc/bzip2recover.1 bzip2-1.0.2.new/doc/bzip2recover.1
+--- bzip2-1.0.2/doc/bzip2recover.1     Thu Jan  1 01:00:00 1970
++++ bzip2-1.0.2.new/doc/bzip2recover.1 Fri Feb  1 04:19:11 2002
 @@ -0,0 +1 @@
 +.so bzip2.1
 \ No newline at end of file
-diff -Nru bzip2-1.0.1/doc/pl/Makefile.am bzip2-1.0.1.new/doc/pl/Makefile.am
---- bzip2-1.0.1/doc/pl/Makefile.am     Thu Jan  1 01:00:00 1970
-+++ bzip2-1.0.1.new/doc/pl/Makefile.am Sat Jun 24 20:13:06 2000
+diff -Nru bzip2-1.0.2/doc/bzmore.1 bzip2-1.0.2.new/doc/bzmore.1
+--- bzip2-1.0.2/doc/bzmore.1   Thu Jan  1 01:00:00 1970
++++ bzip2-1.0.2.new/doc/bzmore.1       Sun Dec 30 03:12:35 2001
+@@ -0,0 +1,152 @@
++.\"Shamelessly copied from zmore.1 by Philippe Troin <phil@fifi.org>
++.\"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<space>
++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 -Nru bzip2-1.0.2/doc/pl/Makefile.am bzip2-1.0.2.new/doc/pl/Makefile.am
+--- bzip2-1.0.2/doc/pl/Makefile.am     Thu Jan  1 01:00:00 1970
++++ bzip2-1.0.2.new/doc/pl/Makefile.am Fri Feb  1 04:19:11 2002
 @@ -0,0 +1,4 @@
 +
 +mandir = @mandir@/pl
 +man_MANS = bzip2.1 bunzip2.1 bzcat.1 bzip2recover.1
 +
-diff -Nru bzip2-1.0.1/doc/pl/bunzip2.1 bzip2-1.0.1.new/doc/pl/bunzip2.1
---- bzip2-1.0.1/doc/pl/bunzip2.1       Thu Jan  1 01:00:00 1970
-+++ bzip2-1.0.1.new/doc/pl/bunzip2.1   Sat Jun 24 20:13:06 2000
+diff -Nru bzip2-1.0.2/doc/pl/bunzip2.1 bzip2-1.0.2.new/doc/pl/bunzip2.1
+--- bzip2-1.0.2/doc/pl/bunzip2.1       Thu Jan  1 01:00:00 1970
++++ bzip2-1.0.2.new/doc/pl/bunzip2.1   Fri Feb  1 04:19:11 2002
 @@ -0,0 +1 @@
 +.so bzip2.1
 \ No newline at end of file
-diff -Nru bzip2-1.0.1/doc/pl/bzcat.1 bzip2-1.0.1.new/doc/pl/bzcat.1
---- bzip2-1.0.1/doc/pl/bzcat.1 Thu Jan  1 01:00:00 1970
-+++ bzip2-1.0.1.new/doc/pl/bzcat.1     Sat Jun 24 20:13:06 2000
+diff -Nru bzip2-1.0.2/doc/pl/bzcat.1 bzip2-1.0.2.new/doc/pl/bzcat.1
+--- bzip2-1.0.2/doc/pl/bzcat.1 Thu Jan  1 01:00:00 1970
++++ bzip2-1.0.2.new/doc/pl/bzcat.1     Fri Feb  1 04:19:11 2002
 @@ -0,0 +1 @@
 +.so bzip2.1
 \ No newline at end of file
-diff -Nru bzip2-1.0.1/doc/pl/bzip2.1 bzip2-1.0.1.new/doc/pl/bzip2.1
---- bzip2-1.0.1/doc/pl/bzip2.1 Thu Jan  1 01:00:00 1970
-+++ bzip2-1.0.1.new/doc/pl/bzip2.1     Sat Jun 24 20:13:06 2000
+diff -Nru bzip2-1.0.2/doc/pl/bzip2.1 bzip2-1.0.2.new/doc/pl/bzip2.1
+--- bzip2-1.0.2/doc/pl/bzip2.1 Thu Jan  1 01:00:00 1970
++++ bzip2-1.0.2.new/doc/pl/bzip2.1     Fri Feb  1 04:19:11 2002
 @@ -0,0 +1,384 @@
 +.\" T³umaczenie  Maciej Wojciechowski     wojciech@staszic.waw.pl
 +.PU
@@ -4640,15 +5484,15 @@ diff -Nru bzip2-1.0.1/doc/pl/bzip2.1 bzip2-1.0.1.new/doc/pl/bzip2.1
 +kompresjê. Bela Lubkin zachêci³a mnie do polepszenia najgorszych wyników 
 +kompresji. Wiele ludzi przys³a³o Â³atki, pomog³o w ró¿nych problemach, 
 +po¿yczy³o komputerów, da³o rady i by³o ogólnie pomocnych.
-diff -Nru bzip2-1.0.1/doc/pl/bzip2recover.1 bzip2-1.0.1.new/doc/pl/bzip2recover.1
---- bzip2-1.0.1/doc/pl/bzip2recover.1  Thu Jan  1 01:00:00 1970
-+++ bzip2-1.0.1.new/doc/pl/bzip2recover.1      Sat Jun 24 20:13:06 2000
+diff -Nru bzip2-1.0.2/doc/pl/bzip2recover.1 bzip2-1.0.2.new/doc/pl/bzip2recover.1
+--- bzip2-1.0.2/doc/pl/bzip2recover.1  Thu Jan  1 01:00:00 1970
++++ bzip2-1.0.2.new/doc/pl/bzip2recover.1      Fri Feb  1 04:19:11 2002
 @@ -0,0 +1 @@
 +.so bzip2.1
 \ No newline at end of file
-diff -Nru bzip2-1.0.1/huffman.c bzip2-1.0.1.new/huffman.c
---- bzip2-1.0.1/huffman.c      Sat Jun 24 20:13:27 2000
-+++ bzip2-1.0.1.new/huffman.c  Sat Jun 24 20:13:06 2000
+diff -Nru bzip2-1.0.2/huffman.c bzip2-1.0.2.new/huffman.c
+--- bzip2-1.0.2/huffman.c      Sun Dec 30 03:19:17 2001
++++ bzip2-1.0.2.new/huffman.c  Fri Feb  1 04:19:11 2002
 @@ -58,6 +58,10 @@
    For more information on these sources, see the manual.
  --*/
@@ -4660,9 +5504,9 @@ diff -Nru bzip2-1.0.1/huffman.c bzip2-1.0.1.new/huffman.c
  
  #include "bzlib_private.h"
  
-diff -Nru bzip2-1.0.1/makefile.msc bzip2-1.0.1.new/makefile.msc
---- bzip2-1.0.1/makefile.msc   Sat Jun 24 20:13:27 2000
-+++ bzip2-1.0.1.new/makefile.msc       Thu Jan  1 01:00:00 1970
+diff -Nru bzip2-1.0.2/makefile.msc bzip2-1.0.2.new/makefile.msc
+--- bzip2-1.0.2/makefile.msc   Wed Jan  2 05:02:33 2002
++++ bzip2-1.0.2.new/makefile.msc       Thu Jan  1 01:00:00 1970
 @@ -1,63 +0,0 @@
 -# Makefile for Microsoft Visual C++ 6.0\r
 -# usage: nmake -f makefile.msc\r
@@ -4670,7 +5514,7 @@ diff -Nru bzip2-1.0.1/makefile.msc bzip2-1.0.1.new/makefile.msc
 -# Fixed up by JRS for bzip2-0.9.5d release.\r
 -\r
 -CC=cl\r
--CFLAGS= -DWIN32 -MD -Ox -D_FILE_OFFSET_BITS=64\r
+-CFLAGS= -DWIN32 -MD -Ox -D_FILE_OFFSET_BITS=64 -nologo\r
 -\r
 -OBJS= blocksort.obj  \\r
 -      huffman.obj    \\r
@@ -4727,182 +5571,187 @@ diff -Nru bzip2-1.0.1/makefile.msc bzip2-1.0.1.new/makefile.msc
 -.c.obj: \r
 -      $(CC) $(CFLAGS) -c $*.c -o $*.obj\r
 -\r
-diff -Nru bzip2-1.0.1/manual.ps bzip2-1.0.1.new/manual.ps
---- bzip2-1.0.1/manual.ps      Sat Jun 24 20:13:27 2000
-+++ bzip2-1.0.1.new/manual.ps  Thu Jan  1 01:00:00 1970
-@@ -1,3808 +0,0 @@
+diff -Nru bzip2-1.0.2/manual.ps bzip2-1.0.2.new/manual.ps
+--- bzip2-1.0.2/manual.ps      Sat Jan  5 01:52:57 2002
++++ bzip2-1.0.2.new/manual.ps  Thu Jan  1 01:00:00 1970
+@@ -1,3991 +0,0 @@
 -%!PS-Adobe-2.0
--%%Creator: dvips(k) 5.78 Copyright 1998 Radical Eye Software (www.radicaleye.com)
+-%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
 -%%Title: manual.dvi
--%%Pages: 39
+-%%Pages: 40
 -%%PageOrder: Ascend
 -%%BoundingBox: 0 0 596 842
 -%%EndComments
+-%DVIPSWebPage: (www.radicaleye.com)
 -%DVIPSCommandLine: dvips -o manual.ps manual.dvi
 -%DVIPSParameters: dpi=600, compressed
--%DVIPSSource:  TeX output 2000.03.23:2343
+-%DVIPSSource:  TeX output 2002.01.05:0052
 -%%BeginProcSet: texc.pro
 -%!
--/TeXDict 300 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
--/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
--mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
--ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
--isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
--hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
--TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if}
--forall round exch round exch]setmatrix}N /@landscape{/isls true N}B
--/@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B
--/FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{
--/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N
--string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N
--end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{
--/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]
--N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup
--length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{
--128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub
--get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data
--dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N
--/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup
--/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx
--0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
--setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff
--.1 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N
--/cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id
--gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp
--add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add
--/gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{
--dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1
--adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2
--idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string
--putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval
--adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg}
--{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{
--adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2
--chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{]
--}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup
--length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{
--cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
--0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul
--add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict
--/eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook
--known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
--/IE 256 array N 2 string 0 1 255{IE S dup 360 add 36 4 index cvrs cvn
--put}for pop 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N
--/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley
--X /rulex X V}B /V{}B /RV statusdict begin /product where{pop false[
--(Display)(NeXT)(LaserWriter 16/600)]{dup length product length le{dup
--length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}
--forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false
--RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1
--false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform
--round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
--rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail
--{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}
--B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{
--4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{
--p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
--a}B /bos{/SS save N}B /eos{SS restore}B end
+-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
+-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
+-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
+-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
+-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
+-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
+-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
+-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+-1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
+-1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
+-0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
+-sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
+-rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
+-gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
+-/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
+-/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
+-A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
+-get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
+-ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
+-fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
+-{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
+-chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
+-1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
+-forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
+-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
+-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
+-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+-(LaserWriter 16/600)]{A length product length le{A length product exch 0
+-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
+-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
+-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
+-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
+-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
 -
 -%%EndProcSet
 -TeXDict begin 39158280 55380996 1000 600 600 (manual.dvi)
 -@start
--%DVIPSBitmapFont: Fa cmti10 10.95 1
--/Fa 1 47 df<120FEA3FC0127FA212FFA31380EA7F00123C0A0A77891C>46
--D E
--%EndDVIPSBitmapFont
--%DVIPSBitmapFont: Fb cmbxti10 14.4 1
--/Fb 1 47 df<13FCEA03FF000F13804813C05AA25AA2B5FCA31480A214006C5A6C5A6C5A
+-%DVIPSBitmapFont: Fa cmbxti10 14.4 1
+-/Fa 1 47 df<13FCEA03FF000F13804813C05AA25AA2B5FCA31480A214006C5A6C5A6C5A
 -EA0FE0121271912B>46 D E
 -%EndDVIPSBitmapFont
--%DVIPSBitmapFont: Fc cmsl10 10.95 25
--/Fc 25 122 df<D901F8160CD907FE161ED91F07163E90263E0380157E017C6D15FC496C
--6CEC03F8D801F06DEC07F00003D900FCEC1FE04901EFEC7FC00007913AE3E007EF804901
--E0B5129F000F913A701FF83F0093C7127E48485E604D5A03F01303003F4A495A90C74A5A
--4D5A4DC7FC0201143E4B5B17FC4C5A003E4948485A4C5A003F01075C6C4A485A020E131F
--021E49C8FC6C6C48137E02385B3A07C0F001F82603E1E05B3A00FF8003E090263E000714
--7E90C73A0FC001FF80923A1F8007C1C0923A3F000F80E0033E90381F00F04B013E137003
--FC4913784A4801FC13384A485B913807E001DA0FC05BDB8003141CEC1F004A495A147E5C
--4948163C4948010F14384A5C495A130F4948167849C71570137E017C17F0494B13E01201
--4848EDC0014848020714C04848EE03804848160790C83903E00F00003E170E007E923801
--F03C486F6C5A48EE3FE00070EE0F803F4975C34C>37 D<EA0780EA0FE0EA1FF0123FA512
--1FEA0F301200A213701360A213E013C0120113801203EA07001206120E5A5A5A5A5A0C1C
--7A8919>44 D<EC07F8EC3FFF9138FC0FC0903903F003E0903907C001F0D90F8013F849C7
--FC013E14FC017E147C017C147E13FC485AA20003157F5B1207A2120F5BA2121F16FF5BA2
--123FA44848EB01FEA648C7EA03FCA5ED07F8A25A16F0A2150F16E0A3ED1FC0A21680007E
--143F1600157E123E003F5C4A5AD81F805B000FEB07E06C6C485A2603F03FC7FC3800FFFC
--EB1FE0283F79BC2D>48 D<157015F014011407143F903803FFE0137FEBFFCFEBF80F1300
--141F15C0A5143F1580A5147F1500A55C5CA513015CA513035CA513075CA5130F5CA3131F
--497EB612F8A31D3D78BC2D>I<133C137F5B481380A31400A26C5A137890C7FCB3EA0780
--EA0FE0121F123FA5121FEA0F601200A213E05BA212015B120390C7FC5A1206120E5A5A12
--3012705A5A11397AA619>59 D<EC7FC0903803FFF890380FC07E90383E003F496D7E01FF
--6D7E82A248140782A26C5A137890C7120FA25EA2EC03FF147F903807FF1FEB1FE0D97F80
--5B3801FE00EA03F8485A4848133F485A003F5D49EC81C048C7FCA2157F48ED03804814FF
--A2007F5B913903BF0700903880073F3A3FC00E1F8E260FE03C13FC3A03FFF00FF83A007F
--C003E02A2A7CA82D>97 D<EB3F80EA1FFFA3C6FC137FA291C9FCA55B5BA512015BA4EC07
--F80003EB3FFF9039F8F80FC09039FBE003E09039FF8001F891C77E5B4848147E49147F5B
--821780A2120F5B17C0A3167F001F16805BA4EEFF00123F5B4B5AA24B5A5E007F4A5AA24B
--5A6D495A4BC7FCD87CE0137E39F87001F839F03C07E039E00FFF80260003FCC8FC2A4077
--BE33>I<EC1FF0ECFFFE903903F01F8090390FC003C0D93F0013E0017E130F49131F0001
--15F04848EB3FE0485AA24848EB1FC0001FEC0F004990C7FC123FA2485AA412FF90C9FCA9
--6CEC0380150716006C6C5B151E001F5C6C6C5B6C6C5B6C6C485A3901F80F8026007FFEC7
--FCEB0FF0242A7AA828>I<EE03F8ED01FFA3ED000F1607A217F0A4160FA217E0A4161FA2
--17C0A491380FF03FECFFFC902603F81F138090390FC007BF90391F8003FF90387E000149
--7F0001157F48481500485A120F5B001F5D485A5E5B127FA2150112FF90C75BA41503A25E
--A37E1507A26C4A5A7F001F141F6C6C133F6C6CEBFFF83B03F001EFFFC03900F80F8F9038
--3FFE0FD90FF0EBE0002D407ABE33>I<EC3FE0903801FFF8903807E07E90380F801F9039
--3F000F80017E14C049EB07E0485A12034848EB03F0485AA2121F5B123FA248481307A290
--B6FCA2D8FF80C8FC90C9FCA87EED01C015036C15806D1307001FEC0F006D131E000F5C6C
--6C5B6C6C485A3900FC07C0D93FFFC7FCEB07F8242A7BA828>I<ED07F0ED3FFCEDFC1E91
--3803F03F4A48B4FC4A481380141FEC3F81DA7F0113008102FE137C93C7FCA213015CA513
--035CA50007B512F8A3260007F0C8FCA3130F5CA5131F5CA5133F5CA5137F91C9FCA55B5B
--A4EA03FF007F13FEB5FCA229407DBF1C>I<147FEB3FFFA313017FA25CA513015CA51303
--5CA4ED07F80107EB1FFF9139F0781FC09138F1E00F9139F38007E0ECF70002FE14F0495A
--5CA25CA24A130F131F4A14E0A4161F133F4A14C0A4163F137F91C71380A4167F5B491500
--A300015D486C491380B5D8F87F13FCA32E3F7DBE33>104 D<1478EB01FE130314FFA25B
--14FE130314FCEB00F01400ACEB03F8EA01FF14F0A2EA001F130FA314E0A5131F14C0A513
--3F1480A5137F1400A55B5BA4EA03FF007F13F0A2B5FC183E7DBD1A>I<143FEB1FFF5BA2
--13017FA214FEA5130114FCA5130314F8A5130714F0A5130F14E0A5131F14C0A5133F1480
--A5137F1400A55B5BA4EA03FF007F13F8A2B5FC183F7DBE1A>108
--D<902707F007F8EB03FCD803FFD91FFF90380FFF80913CE0781FC03C0FE09126E1E00FEB
--F0073E001FE38007E1C003F090260FE700EBE38002EEDAF70013F802FC14FE02D85C14F8
--4A5CA24A5C011F020F14074A4A14F0A5013F021F140F4A4A14E0A5017F023F141F91C749
--14C0A549027F143F4992C71380A300014B147F486C496DEBFFC0B5D8F87FD9FC3F13FEA3
--47287DA74C>I<903907F007F8D803FFEB1FFF9139E0781FC09138E1E00F3B001FE38007
--E090380FE70002EE14F014FC14D814F85CA24A130F131F4A14E0A4161F133F4A14C0A416
--3F137F91C71380A4167F5B491500A300015D486C491380B5D8F87F13FCA32E287DA733>
--I<EC0FF0ECFFFE903903F01F8090390FC007C049C66C7E013E6D7E01FC6D7E4848804914
--7C0003157E485A000F157F5B121FA2485AA2007F1680A2170048C85AA54B5AA25E5A6C4A
--5A7E4B5A5E6C140F6C6C5C4B5A6C6C013EC7FC6C6C5B6C6C485A3900FC0FE090383FFF80
--D90FF8C8FC292A7BA82D>I<91387F01FE903A7FFF0FFFC09139FE3E03F09238F801F890
--3A01FFE000FE4B137F6D497F4990C713804A15C04A141FA218E0A20103150F5C18F0A317
--1F010716E05CA3173F18C0130F4A147F1880A2EFFF004C5A011F5D16034C5A6E495AEE1F
--C06E495AD93FDC017EC7FC91388F01F8913883FFE0028090C8FC92C9FC137FA291CAFCA4
--5BA25BA31201487EB512F8A3343A81A733>I<903907F01F80D803FFEB7FE09138E1E1F0
--9138E387F839001FE707EB0FE614EE02FC13F002D813E09138F801804AC7FCA25C131FA2
--5CA4133F5CA5137F91C8FCA55B5BA31201487EB512FEA325287EA724>114
--D<9138FF81C0010713E390381F807F90397C003F8049131F4848130F5B00031407A24848
--1400A27FA27F6D90C7FCEBFF8014FC6C13FF6C14C015F06C6C7F011F7F13079038007FFE
--1403140100381300157EA2123C153E157E007C147CA2007E147815F8007F495A4A5A486C
--485A26F9E01FC7FC38E0FFFC38C01FE0222A7DA824>I<EB0380A4130791C7FCA25BA25B
--A2133EA2137E13FE12011207001FB512C0B6FCA2D801FCC7FCA312035BA512075BA5120F
--5BA41407001F130E13C0A4141E141C1380A26D5AA2000F5B14F03807E1E03801FF80D800
--7EC7FC1A3978B723>I<01FE147F00FFEC7FFF4914FEA20007140300031401A34914FCA4
--150312074914F8A41507120F4914F0A4150F121F4914E0A2151FA3153F4914C0157F15FF
--EC01DF3A0FC003BFE09138073FFF3803F01E3801FFF826003FE01380282977A733>I<B5
--39E007FFF05D17E02707FE000313006C48EB01FC6F5A5E00014A5A5EA24B5A6D13070000
--92C7FC5D150E6D5B7F5DA25D1480013F5B14815D14C3011F5B02C7C8FCA214CE14EEEB0F
--FCA25CA26D5A5CA25CA26D5A2C2878A630>I<B500C3B53803FFFCA204FE14F8290FFE00
--3FE00013C0D807F86D48EB7F000003173E183C150F18386D5E0001141F705B153F4D5A15
--776D4B5A0000ECE7F04DC7FCEC01C3170E9038FF0383017F5D91380703F85FEC0E01021E
--5CD93F9C14F002BC6D5A02B813FDDAF8005B4A13FF5F6D5A94C8FC5C4A137E167C6DC7FC
--1678010E14383E2878A642>I<90B539E007FFF05E18E0902707FE000313006D48EB01FC
--705A5F01014A5A5F16036E5C0100140794C7FC160E805E805E1678ED8070023F13F05EED
--81C015C191381FC38015C793C8FC15EF15EEEC0FFCA25DA26E5AA25DA26E5A5DA24AC9FC
--5C140E141E141C5C121C003F5B5A485B495A130300FE5B4848CAFCEA701EEA783CEA3FF0
--EA0FC0343A80A630>121 D E
+-%DVIPSBitmapFont: Fb cmti10 10.95 26
+-/Fb 26 122 df<DA0780150EDA3FE0151FDA7870153F4A6C157E902601E03C15FC902603
+-C01CEC01F8902607801EEC07F0010FD91F80130F90271F001DE0EB7FE0923A1CFC07FFC0
+-013E91391FFF9F80933903F83F004991C7123E6001FC16FC494B5A4D5A033C495A000102
+-38495A495E4DC7FC03785B0370137E495D00039138F001F84B485A02015C00014A485A91
+-3803800F0207495A4B48C8FC020E137E2600F01E5B4A5B9039787001F090383FE0039027
+-0F8007E013F090C7390FC007FC92391F800F0E92393F001E07033E133C4B903878038003
+-FC13F0913801F801913903F003E0EC07E091390FC007C0158091391F000F805C027E131F
+-4A1400495A494815074A4914004948133E130F49485D49C7140E017E143C49027C131E49
+-161C4848163C0003033C133848485E484816F048485E48C8495A003EED1E03484C5A00FC
+-DB0F0EC7FC48ED07FC0070ED01F0404974C34A>37 D<EA01E0EA07F8120FA2EA1FFCA4EA
+-0FF8EA0798EA001813381330A21370136013E013C01201EA0380EA07001206120E5A5A5A
+-5A5A0E1C7A891C>44 D<120FEA3FC0127FA212FFA31380EA7F00123C0A0A77891C>46
+-D<15FE913807FF8091381F07C091387C01F0ECF000494813F8494813780107147C495A49
+-C7FC167E133E137EA25BA2485AA2000315FEA25B000715FCA2491301120FA34848EB03F8
+-A44848EB07F0A448C7EA0FE0A316C0007E141F12FE1680153FA2481500A2157EA25DA25D
+-4813015D6C495A127C4A5A4A5A6C49C7FC143E6C5B380FC1F03803FFC0C648C8FC273F76
+-BC2E>48 D<15031507150F151F151E153E157EEC01FEEC03FC1407141FEB01FF90380FFB
+-F8EB1FC3EB0E07130015F0A2140FA215E0A2141FA215C0A2143FA21580A2147FA21500A2
+-5CA25CA21301A25CA21303A25CA21307A25CA2130FA25CA2131FA25CEB7FE0B612F0A215
+-E0203D77BC2E>I<EB03C0EB07F0130FEB1FF8133FA214F0EB1FE014C0EB078090C7FCB3
+-EA01E0EA07F0487EA2121FA46C5AEA07B0EA003013701360A213E05B12015B120348C7FC
+-1206120E5A5A123012705A5A15397AA61C>59 D<147E49B47E903907C1C38090391F80EF
+-C090383F00FF017E137F4914804848133F485AA248481400120F5B001F5C157E485AA215
+-FE007F5C90C7FCA21401485C5AA21403EDF0385AA21407EDE078020F1370127C021F13F0
+-007E013F13E0003E137FECF3E1261F01E313C03A0F8781E3803A03FF00FF00D800FC133E
+-252977A72E>97 D<EB1FC0EA0FFF5CA2EA003FA291C7FCA25BA2137EA213FEA25BA21201
+-A25BA21203A25B147E3907F1FF809038F783E09038EF01F013FE390FF800F8A24913FC49
+-137C485A157E5B15FE123FA290C7FCA248130115FC127EA2140300FE14F85AA2EC07F0A2
+-15E048130F15C0141F15800078EB3F00127C147E003C5B383E01F8381E03E06C485A6CB4
+-C7FCEA01F81F4076BE2A>I<EC1FC0ECFFF0903803F03C903807C01E90381F800E90383F
+-000F017E133F4913FF485A485A000714FE5B000F14FC48481300A2485AA3127F90C8FCA3
+-5A5AA6481403007E1407150F151E003E143C15786C14F0EC03E0390F800F803903E07E00
+-3801FFF838003FC0202977A72A>I<EE3F80ED1FFF1700A2ED007FA2167EA216FEA25EA2
+-1501A25EA21503A25EA21507A25E147E903801FF8F903807C1CF90391F80EFC090383F00
+-FF017E137F5B48486D5A485AA2485A000F92C7FC5B001F5CA24848137EA215FE127F90C7
+-5AA214015A485CA2140316384814F0A21407167891380FE070127C021F13F0007E013F5B
+-003E137FECF3E1261F01E35B3A0F8781E3802703FF00FFC7FCD800FC133E294077BE2E>
+-I<EC3F80903801FFE0903807E0F890381F803CEB3E0001FC131E485A485A12074848133E
+-49133C121F4848137C15F8EC03F0397F000FE0ECFF809038FFFC00B512C048C8FCA45AA6
+-1506150E151E007C143C15786C14F0EC01E06CEB07C0390F801F003807C0FC3801FFF038
+-007F801F2976A72A>I<167C4BB4FC923807C78092380F83C0ED1F87161FED3F3FA2157E
+-A21780EE0E004BC7FCA414015DA414035DA30103B512F8A390260007E0C7FCA3140F5DA5
+-141F5DA4143F92C8FCA45C147EA414FE5CA413015CA4495AA4495AA4495A121E127F5C12
+-FF49C9FCA2EAFE1EEAF83C1270EA7878EA3FE0EA0F802A5383BF1C>I<EB01FC13FF5CA2
+-1303A25CA21307A25CA2130FA25CA2131FA25CA2133FA291C8FCEC03F890387F0FFE9138
+-3E0F80D97E7813C0ECE007D9FFC013E014801400A2485A5BA25B0003140F16C05BA20007
+-141F16805BA2000F143F16005B5D001F147EEDFE074913FCA2003F0101130FEDF80E1300
+-161E48ECF01CA2007E1538A200FE1570020013E048EC7FC00038EC1F0028407ABE2E>
+-104 D<1478EB01FCA21303A314F8EB00E01400AD137C48B4FC38038F80EA0707000E13C0
+-121E121CEA3C0F1238A2EA781F00701380A2EAF03F140012005B137E13FE5BA212015BA2
+-12035B1438120713E0000F1378EBC070A214F0EB80E0A2EB81C01383148038078700EA03
+-FEEA00F8163E79BC1C>I<EB07F0EA03FF14E0A2EA000FA214C0A2131FA21480A2133FA2
+-1400A25BA2137EA213FEA25BA21201A25BA21203A25BA21207A25BA2120FA25BA2121FA2
+-5BA2123FA290C7FCA25A1307127EA2EAFE0F130E12FCA2131E131CA2EA7C381378EA3C70
+-EA1FE0EA0780144079BE17>108 D<D801F0D93F80137F3D07FC01FFE003FFC03D0F3E07
+-C1F80F83F03D0E1F0F00FC1E01F8001E011C90387C3800001C49D97E707F003C01F05C00
+-38157F4A5C26783FC05C12704A91C7FC91C7127E00F003FE1301494A5CEA007EA2030114
+-0301FE5F495CA203031407000160495C180F03075D0003051F13E0494A1480A2030FEC3F
+-810007F001C0495CA2031F91383E0380120F494AEC0700A2033F150E001FEF1E1C4991C7
+-EA0FF80007C7000EEC03E0432979A74A>I<D801F0EB3F803A07FC01FFE03A0F3E07C1F8
+-3A0E1F0F00FC001E011C137C001C49137E003C13F012385C38783FC012705C91C7FC00F0
+-15FE495CEA007EA2150101FE5C5BA2150300015D5B15075E0003020F13704914C0A2031F
+-13F00007ED80E05B1681EE01C0120F49EC0380A2EE0700001FEC0F0E49EB07FC0007C7EA
+-01F02C2979A733>I<EC1FC0ECFFF8903803F07C90380FC01FEB1F8090393F000F80017E
+-14C0491307484814E0485A12075B000F15F0485AA2485AA2ED0FE0127F90C7FCA2151F48
+-15C05AA2ED3F80A2ED7F00A248147E007C5C007E13015D4A5A003E495A6C495A4A5A260F
+-803EC7FC3807C0FC3801FFF038003F80242977A72E>I<903903E001F890390FF807FE90
+-3A1E7C1E0F80903A1C3E3C07C0013C137801389038E003E0EB783F017001C013F0ED8001
+-9038F07F0001E015F8147E1603000113FEA2C75AA20101140717F05CA20103140F17E05C
+-A20107EC1FC0A24A1480163F010F15005E167E5E131F4B5A6E485A4B5A90393FB80F80DA
+-9C1FC7FCEC0FFCEC03E049C9FCA2137EA213FEA25BA21201A25BA21203A2387FFFE0B5FC
+-A22D3A80A72E>I<D801F013FC3A07FC07FF803A0F3E0F03C0260E1F1C13E0001EEB380F
+-001C1370003CEBE01F123814C0D8783F14C00070903880070092C7FC91C8FC12F05BEA00
+-7EA313FE5BA312015BA312035BA312075BA3120F5BA3121F5B0007C9FC232979A726>
+-114 D<EC7F80903801FFE0903807C0F890381F003C013E131C013C131E017C133E49137E
+-15FEA2000114FCA215706D13007FEBFFC014FC6C13FF15806D13C06D13E0010F13F01300
+-140F14071403120C123F387F80011403D8FF0013E0A300FCEB07C000F0EB0F8012700078
+-EB1F006C133C381F01F83807FFE0C690C7FC1F297AA725>I<EB01C0EB03F01307A25CA2
+-130FA25CA2131FA25CA2133FA291C7FCA2007FB51280B6FC1500D8007EC7FC13FEA25BA2
+-1201A25BA21203A25BA21207A25BA2120FA25BA2121F141C1380A2003F133C1438EB0078
+-147014F05C495AEA1F03495A6C48C7FCEA07FCEA01F0193A78B81E>I<137C48B4141C26
+-038F80137EEA0707000E7F001E15FE121CD83C0F5C12381501EA781F007001805BA2D8F0
+-3F1303140000005D5B017E1307A201FE5C5B150F1201495CA2151F0003EDC1C0491481A2
+-153F1683EE0380A2ED7F07000102FF13005C01F8EBDF0F00009038079F0E90397C0F0F1C
+-90391FFC07F8903907F001F02A2979A731>I<017CEB01C048B4EB07F038038F80EA0707
+-000E01C013F8121E001C1403EA3C0F0038EC01F0A2D8781F130000705BA2EAF03F91C712
+-E012005B017E130116C013FE5B1503000115805BA2ED07001203495B150EA25DA25D1578
+-000114706D5B0000495A6D485AD97E0FC7FCEB1FFEEB03F0252979A72A>I<017C167048
+-B491387001FC3A038F8001F8EA0707000E01C015FE001E1403001CEDF000EA3C0F003817
+-7C1507D8781F4A133C00701380A2D8F03F130F020049133812005B017E011F14784C1370
+-13FE5B033F14F0000192C712E05BA2170100034A14C049137E17031880A2EF070015FE17
+-0E00010101141E01F86D131C0000D9039F5BD9FC076D5A903A3E0F07C1E0903A1FFC03FF
+-C0902703F0007FC7FC372979A73C>I<137C48B4143826038F8013FCEA0707000E7F001E
+-1401001C15F8EA3C0F12381503D8781F14F000701380A2D8F03F1307020013E012005B01
+-7E130F16C013FE5B151F1201491480A2153F000315005BA25D157EA315FE5D00011301EB
+-F8030000130790387C1FF8EB3FF9EB07E1EB00035DA21407000E5CEA3F80007F495AA24A
+-5AD8FF0090C7FC143E007C137E00705B387801F0383803E0381E0FC06CB4C8FCEA03F826
+-3B79A72C>121 D E
 -%EndDVIPSBitmapFont
--%DVIPSBitmapFont: Fd cmtt12 14.4 10
--/Fd 10 123 df<EC3FF80103B57E010F14E0013F14F84914FE48B7FC4816C048D9C01F7F
+-%DVIPSBitmapFont: Fc cmtt12 14.4 10
+-/Fc 10 123 df<EC3FF80103B57E010F14E0013F14F84914FE48B7FC4816C048D9C01F7F
 -270FFE00017F49EB007FD81FF0EC1FF848486E7E160748486E7E4914018300FF81A26D16
 -80177FA36C5AA26CC9FCCAFCA217FF1800A25E5F16035F16075F160F4C5A163F4C5A5F4C
 -5A4B90C7FCED07FE4B5A4B5A4B5A4B5A4B5A4A5B4A90C8FCEC0FFE4A5AEC3FF04A5A4A5A
@@ -4941,41 +5790,41 @@ diff -Nru bzip2-1.0.1/manual.ps bzip2-1.0.1.new/manual.ps
 -495B4990C9FC495A495A4948EC0FC0495A4948EC1FE0485B00075B4890C8FCEA1FFC485A
 -485A90B8FCB9FCA46C17C07E33337CB23E>122 D E
 -%EndDVIPSBitmapFont
--%DVIPSBitmapFont: Fe cmtt12 13.14 31
--/Fe 31 123 df<ECFFE0010713FC011FEBFF80017F14E048B67E48814815FE489038007F
--FF01F8130748480101138048489038007FC049EC3FE04848141F90C8120F17F048150717
--F87F1603A36CC8FC123EC9FCA2160717F0A2160F17E0161F17C0163FEE7F80A2EEFF004B
--5A15034B5A4B5A4B5AED7FE04B5A4A5B4A90C7FC4A5AEC1FF84A5A4A5A4A5A495BD907FE
--C8FC495A495A495A495A2601FF80EB01F04890C7EA03F8485A485A485A48B7FC5AB8FCA3
--7E6C16F02D447BC338>50 D<003FB6FC4815E0B712F882826C816C16802701FC000113C0
--9238007FE0161FEE0FF0A2160717F81603A6160717F0A2160FEE1FE0163FEE7FC0923801
--FF80030F130090B65A5E16F08216FEEEFF8017C001FCC7EA7FE0EE1FF0EE07F8160317FC
--EE01FE1600A217FF177FA717FF17FE16011603EE07FC160FEE3FF8EEFFF0003FB7FC4816
--E0B812C01780EEFE006C15F86C15C030437DC238>66 D<DA07FC133C91393FFF807E91B5
--12E00103ECF8FE4914FC4914FF5B90383FFE0390387FF000D9FFC0133F4849131F91C712
--0F48481407485A49140348481401A2485AA248481400A25BA2007F167C90CAFCA35A5AAD
--7E7EA37F003F167C17FE7FA26C7EA26C6C140117FC6C7E6D14036C6C15F86C6C14076EEB
--0FF06C6D131FD97FF0EB7FE0903A3FFE03FFC06DB612806D15006D5C6D5C010014F0023F
--13C0DA07FCC7FC2F457CC338>I<007FB512F8B7FC16C08216F8826C813A03F8001FFF15
--07030113806F13C0167FEE3FE0161FEE0FF0A2EE07F8A2EE03FCA21601A217FE1600A417
--7FAD17FF17FEA4160117FCA2160317F81607A2EE0FF0161FEE3FE0167FEEFFC04B13805D
--031F1300007FB65AB75A5E5E16C093C7FC6C14F830437DC238>I<007FB712FCB87EA57E
--D801FCC8FCA9177C94C7FCA6ED07C04B7EA590B6FCA79038FC000FA56F5A92C9FCA7EF0F
--80EF1FC0AA007FB8FCB9FCA56C178032437DC238>I<91391FF003C091397FFC07E049B5
--FC010714CF4914EF4914FF5B90387FF81F9038FFE00748EB800191C7FC4848147F485A49
--143F485A161F485AA249140F123F5BA2127F90C8EA07C093C7FCA35A5AAA923807FFFC4B
--13FE4B13FF7E7E6F13FE6F13FC9238000FE07F003F151FA27F121F7F163F6C7EA26C6C14
--7F7F6C6C14FF6C6C5B6E5A6C6D5A90387FF81F6DB6FC6D14EF6D14CF6D148F0101140F90
--3A007FFC07C0DA1FF0C7FC30457CC338>71 D<007FB612F0B712F8A56C15F0260001FCC7
--FCB3B3B1007FB612F0B712F8A56C15F0254377C238>73 D<90380FFFFE90B612E0000315
--F8488148814881A2273FFE000F138001F01301497F49147F4848EC3FC0A290C8121FA448
--16E0A248150FB3AC6C151FA36C16C0A36D143FA36C6CEC7F806D14FF6D5B01FE130F6CB7
--1200A26C5D6C5D6C5DC615E0010F49C7FC2B457AC338>79 D<003FB512F04814FEB77E16
--E0826C816C813A01FC003FFEED07FF03017F81707E163F161F83160FA7161F5F163F167F
--4C5A5D030790C7FCED3FFE90B65A5E5E5EA282829038FC001FED07FC6F7E150115008282
--AA18E0EF01F0EF03F8A31783EE3F87263FFFE0ECC7F0486D14FFB56C7F18E07013C06C49
--6D13806C496D1300CA12FC35447EC238>82 D<003FB8FC481780B9FCA53BFE0007F0003F
--A9007CEE1F00C792C7FCB3B3A70107B512F04980A56D5C31437DC238>84
+-%DVIPSBitmapFont: Fd cmtt12 13.14 31
+-/Fd 31 123 df<903801FFC0010F13F8013F13FF4914C048B67E48814815FC4801007FD8
+-1FF8130F01E0EB03FF48480100138049EC7FC0007F153F90C8121F4816E0160F17F07F16
+-07A36CC8FC123EC9FCA2160F17E0A2161F17C0163FA2EE7F80EEFF00A24B5A4B5A15074B
+-5A4B5A4B5A4B5A4B5A020390C7FC4A5A4A5A4A5A4A5AEC7FC049485A4990C8FC495A495A
+-495AEB3FE0EBFFC04849EB03E04890C7EA07F0485A485AEA1FF048B7FC5AB8FCA37E6C16
+-E02C447AC338>50 D<003FB6FC4815E0B712F882826C816C16802701FC000113C0923800
+-7FE0161FEE0FF0A2160717F81603A6160717F0A2160FEE1FE0163FEE7FC0923801FF8003
+-0F130090B65A5E16F08216FEEEFF8017C001FCC7EA7FE0EE1FF0EE07F8160317FCEE01FE
+-1600A217FF177FA717FF17FE16011603EE07FC160FEE3FF8EEFFF0003FB7FC4816E0B812
+-C01780EEFE006C15F86C15C030437DC238>66 D<DA07FC133C91393FFF807E91B512E001
+-03ECF8FE4914FC4914FF5B90383FFE0390387FF000D9FFC0133F4849131F91C7120F4848
+-1407485A49140348481401A2485AA248481400A25BA2007F167C90CAFCA35A5AAD7E7EA3
+-7F003F167C17FE7FA26C7EA26C6C140117FC6C7E6D14036C6C15F86C6C14076EEB0FF06C
+-6D131FD97FF0EB7FE0903A3FFE03FFC06DB612806D15006D5C6D5C010014F0023F13C0DA
+-07FCC7FC2F457CC338>I<007FB512F8B7FC16C08216F8826C813A03F8001FFF15070301
+-13806F13C0167FEE3FE0161FEE0FF0A2EE07F8A2EE03FCA21601A217FE1600A4177FAD17
+-FF17FEA4160117FCA2160317F81607A2EE0FF0161FEE3FE0167FEEFFC04B13805D031F13
+-00007FB65AB75A5E5E16C093C7FC6C14F830437DC238>I<007FB712FCB87EA57ED801FC
+-C8FCA9177C94C7FCA6ED07C04B7EA590B6FCA79038FC000FA56F5A92C9FCA7EF0F80EF1F
+-C0AA007FB8FCB9FCA56C178032437DC238>I<91391FF003C091397FFC07E049B5FC0107
+-14CF4914EF4914FF5B90387FF81F9038FFE00748EB800191C7FC4848147F485A49143F48
+-5A161F485AA249140F123F5BA2127F90C8EA07C093C7FCA35A5AAA923807FFFC4B13FE4B
+-13FF7E7E6F13FE6F13FC9238000FE07F003F151FA27F121F7F163F6C7EA26C6C147F7F6C
+-6C14FF6C6C5B6E5A6C6D5A90387FF81F6DB6FC6D14EF6D14CF6D148F0101140F903A007F
+-FC07C0DA1FF0C7FC30457CC338>71 D<007FB612F0B712F8A56C15F0260001FCC7FCB3B3
+-B1007FB612F0B712F8A56C15F0254377C238>73 D<90380FFFFE90B612E0000315F84881
+-48814881A2273FFE000F138001F01301497F49147F4848EC3FC0A290C8121FA44816E0A2
+-48150FB3AC6C151FA36C16C0A36D143FA36C6CEC7F806D14FF6D5B01FE130F6CB71200A2
+-6C5D6C5D6C5DC615E0010F49C7FC2B457AC338>79 D<003FB512F04814FEB77E16E0826C
+-816C813A01FC003FFEED07FF03017F81707E163F161F83160FA7161F5F163F167F4C5A5D
+-030790C7FCED3FFE90B65A5E5E5EA282829038FC001FED07FC6F7E150115008282AA18E0
+-EF01F0EF03F8A31783EE3F87263FFFE0ECC7F0486D14FFB56C7F18E07013C06C496D1380
+-6C496D1300CA12FC35447EC238>82 D<003FB8FC481780B9FCA53BFE0007F0003FA9007C
+-EE1F00C792C7FCB3B3A70107B512F04980A56D5C31437DC238>84
 -D<267FFFF090387FFFF0B56C90B512F8A56C496D13F0D801FCC73801FC00B3B3A66D1403
 -00005EA36D14076D5D6E130F6D6C495A6E133F6D6C495A6D6C495AECFF076D90B5C7FC6D
 -5C6D5C6D5C023F13E0020F1380DA03FEC8FC35447FC238>I<D83FFE913803FFE0486C4A
@@ -5042,206 +5891,205 @@ diff -Nru bzip2-1.0.1/manual.ps bzip2-1.0.1.new/manual.ps
 -7C494814FE485B4890C8FC485A485A485A485A48B7FCB8FCA56C16FC2F2F7DAE38>122
 -D E
 -%EndDVIPSBitmapFont
--%DVIPSBitmapFont: Ff cmbx12 13.14 53
--/Ff 53 122 df<923807FFE092B512FC020714FF021F81027F9038007FC0902601FFF0EB
--0FE04901C0497E4990C7487ED90FFC147F011F824A14FF495AA2137F5CA2715A715A715A
--EF078094C8FCA7EF07FCB9FCA526007FF0C7123F171FB3B3A2003FB5D8E00FB512F8A53D
--4D7ECC44>12 D<B7FCAA200A7F9D29>45 D<EA07E0EA1FF8EA3FFCEA7FFEA2B5FCA6EA7F
--FEA2EA3FFCEA1FF8EA07E01010778F22>I<177817F8EE01FCA21603A2EE07F8A217F016
--0FA217E0161FA2EE3FC0A21780167FA217005EA24B5AA25E1503A24B5AA25E150FA25E15
--1FA24B5AA25E157FA24BC7FCA25D1401A25D1403A24A5AA25D140FA24A5AA25D143FA25D
--147FA24AC8FCA25C1301A25C1303A2495AA25C130FA2495AA25C133FA25C137FA249C9FC
--A25B1201A2485AA25B1207A25B120FA2485AA25B123FA25B127FA248CAFCA25AA2127CA2
--2E6D79D13D>I<15F014011407141F147FEB03FF137FB6FCA313FC1380C7FCB3B3B2007F
--B712E0A52B4777C63D>49 D<ECFFF80107EBFF80013F14F090B612FC4881480101EBFF80
--2707F8003F13C0D80FE0010F13E0D81F806D13F0003F80D87FF06D13F86D15FC6D7F00FF
--16FE6D147FA217FF82A36C5A6C5A6C5A6C5AC95A17FEA3EEFFFCA24B13F817F05D17E04B
--13C017804B13004B5A4B5A5EED7FE04B5A4A5B4A90C7FCEC07FC4A5A4A5A4B131FEC3F80
--4AC7FC14FE4948143E495AEB07E0495A4948147E49C8FC017E15FE90B7FC4816FC5A5A5A
--5A5A5AB8FC17F8A430477AC63D>I<EC3FFE0103B512E0010F14FC013F14FF90267FE01F
--7F9026FF000713E0D801FC6D7FD803F07F486C6D7FD80FFE817F486D80167FA3805C16FF
--7E91C75B6C5A6C5AD80020495B90C75C5D5F4B5B5F031F90C7FCED3FFC4AB45A49B512E0
--168016E016FC90C7EA3FFF030713C06F7F6F7F6F7F83707E83A2701380A318C0EA07E0EA
--1FF8487E487EA2B5FCA31880A25E491600127F494A5A6C485D01E05B001F4A5BD80FFC49
--5B2707FFC03F13C06C90B65AC64BC7FC013F14F8010714E09026007FFEC8FC32487BC63D
-->I<EE07E0160FA2161F163F167F16FFA25D5D5DA25D5D5DA2157D15FDEC01F915F1EC03
--E11407EC0FC1EC1F811501143F147E14FC14F8EB01F01303EB07E014C0EB0F80131FEB3F
--00133E5B13FC485A485A5B1207485A485A90C7FC123E127E5AB912FCA5C80003EBE000AD
--023FB612FCA536487DC73D>I<D8038015E001E0140301FC143F9039FFE003FF91B612C0
--17801700A25E5E16F05E5E93C7FC15FC15F001E790C8FC01E0C9FCAAEC1FFC01E1B512C0
--01E714F001EF14FC9039FFE01FFFDA0007138001FC6D13C001F06D13E04915F0497F17F8
--C913FC167F17FEA417FFA3EA0FC0EA3FF0487EA2487EA317FEA34914FF6C4815FC5B0180
--15F86CC74813F07F6C6C4913E0D80FF04913C0D807FC011F13806CB46CB512006C90B512
--FC6C5D013F14C0010F91C7FC010113F030487AC63D>I<ED7FF8913807FFFE021F6D7E02
--7F80903A01FFF01FE0010790388003F04948486C7E49486D7ED93FF013074948130F01FF
--4A7E4849133F5C5A4890C7FCA25A705A48486E5A705A003F92C8FCA3485AA21520913807
--FFE0021F13FC00FF497F4A6D7EDAFC017F9026FDF0007F4A6D7ED9FFC06D7E4A6D7E8391
--C7FC8382491680A318C05BA3127FA6123FA27F001F1780A3000F4B1300A26C6C5DA26C6D
--495A6C6D5C6C6D495A6D6C48485A90263FFC075B6DB65A6D4AC7FC01035C010014F0020F
--90C8FC32487BC63D>I<121F7F7F13FE90B812E0A45A18C0188018005F5FA25F485E90C8
--EA07E0007E4B5A5F007C151F4CC7FC167E5E485D15014B5A4B5AC8485A4B5AA24BC8FC15
--7EA25D1401A24A5A1407A24A5AA2141FA24A5AA2147FA314FFA3495BA45BA55BAA6D5BA2
--6D90C9FCEB007C334B79C93D>I<EC1FFF49B512F0010714FC011F14FF90263FF00713C0
--49C77F01FCEC3FF04848EC0FF848481407000782491403000F821601A2121F7FA27F13FE
--6D140302C05C14F002FC495A6C6D130FDAFF805B9238E01FE06C6E485A9238FCFF806C91
--B5C7FC6C15FC6C5D7F6D14FE6D806D15C06D81011F81017F81D9FFDF804813072603FE01
--8048486C804848133F4848010F1480003F8049130148486D6C13C0161F824848140382A2
--82A2177FA218807F127FEFFF007F6C6C4A5AA2D81FFC4A5A6C6CEC0FF86C6C6CEB3FF06C
--9039F003FFE06C90B612806C6C92C7FC011F14FC010714E09026003FFEC8FC32487BC63D
-->I<EC1FFE49B512C0010F14F04914FC90397FFC0FFE903AFFE003FF804849C67F48496D
--7E4890C7FC486F7E484881161F003F825B007F82A28300FF81A31880A518C0A45E127FA3
--003F5D7F121F5E120F6C6C91B5FC6C90388001EF6CEBC0036C9038E00FCF6DB5128F011F
--140F010701FE1480010113F8903800010091C7FCA24C1300A3D803F85D487E487E486C4A
--5AA25F4C5AA24C5A49495B6C485D49010790C7FC01E0495AD807F8EB3FFC6CB448B45A6C
--90B55A6C15C06D91C8FC011F13FC010313C032487BC63D>I<EE01F8A24C7EA34C7EA24C
--7EA34C7FA24C7FA34C7FA293B57EA34B8016F303038016E316E103078016C0030F805E83
--031F814C7E4B81153E83037E81037C7F03FC815D830201824B7F0203825D830207824B7F
--020F825D84021F8392B8FC4A83A34A83027CC8120F02FC835C840101844A810103845C84
--0107844A81010F845C85011F85496C82B600C091B712F0A5544D7CCC5D>65
--D<93261FFF80EB01C00307B500F81303033F02FE13074AB7EAC00F0207EEE03F021F903A
--FE007FF87F027F01E0903807FCFF91B5C70001B5FC010301FC6E7E4901F0151F4901C081
--4949814990C97E494882494882485B48197F4A173F5A4A171F5A5C48190FA2485B1A07A2
--5AA297C7FC91CDFCA2B5FCAD7EA280A2F207C07EA36C7FA26C190F6E18807E6E171F6C1A
--006E5F6C193E6C6D177E6D6C5F6D6C4C5A6D6D15036D6D4B5A6D01F04B5A6D01FCED3FC0
--010001FFEDFF806E01E0D903FEC7FC021F01FEEB3FFC020790B612F002015EDA003F92C8
--FC030714FCDB001F13804A4D79CB59>67 D<B912F0F0FF8019F019FC19FFD8001F902680
--000114C0DD001F7F060713F806017F726C7E737E737F737F737F8587737F8587A2747EA3
--8786A21C80A51CC0A586A462A51C80A51C00A26263A2631AFF636163614F5B634F5B073F
--90C7FC4F5A4F5A06035B061F5B4DB512C0BBC8FC19FC19F0198006F0C9FC524B7CCA5E>
--I<BB12C0A486D8000F01E0C77E18071801F0007F193F191F190F1907861903A31901A3EF
--0F80A2737EA497C7FC171FA2173F177F17FF160392B6FCA5EDE0031600177F173F171FA2
--050FEC0F80A3F21F00A494C8FC621A3EA21A7EA31AFE6219011903A21907190FF13FF819
--FF1803183FBBFCA262A3494A7CC951>I<BBFCA41A80D8001F01C0C7FC181F1803848419
--7F193F191F1AC0190FA31907A4171FF103E0A496C7FCA25FA25F5F5E160792B6FCA5EDC0
--071601828383A283A794C9FCB1B8FCA5434A7CC94D>I<93261FFF80EB01C00307B500F8
--1303033F02FE13074AB7EAC00F0207EEE03F021F903AFE007FF87F027F01E0903807FCFF
--91B5C70001B5FC010301FC6E7E4901F0151F4901C0814949814990C97E49488249488248
--5B48197F4A173F5A4A171F5A5C48190FA2485B1A07A25AA297C8FC91CEFCA2B5FCAD6C04
--0FB712C0A280A36C93C7001FEBC000A2807EA27E807E807E806C7F7E6D7E6D7E6D7F6D01
--E05D6D6D5D6D13FC010001FF4AB5FC6E01E0EB07F9021F01FFEB3FF0020791B5EAE07F02
--01EEC01FDA003FED0007030702F81301DB001F018090C8FC524D79CB61>I<B7D8FC01B7
--12F8A5D8001F01C0C8001FEBC000B3AA92B9FCA503C0C8121FB3AEB7D8FC01B712F8A555
--4B7BCA60>I<B712FEA5D8000FEBE000B3B3B3ABB712FEA5274B7DCA2E>I<B8FCA5D8001F
--01C0C9FCB3B3A4193EA4197E197CA519FCA31801A2F003F8A21807180F181F183F187FEF
--01FF1707173FBA12F0A53F4B7BCA4A>76 D<B600E04DB612806F5FA26F5FA2D8001F09FC
--C7FC6FEF0F7FA2DABFFE171EA2DA9FFF173CA3028F6D1678A202876D16F0A202836DED01
--E0A302816DED03C0A202806DED0780A26F6CED0F00A36F6C151EA26F6C5DA26F6D5CA26F
--6D5CA36F6D495AA26F6D495AA26F6D495AA3706C49C7FCA2706C131EA2706C5BA3706D5A
--A2706D5AA270EBE1E0A370EBF3C0A270EBFF80A27190C8FCA2715AA3715AA2715A497EB6
--00F06D480103B71280A3715A715A694B7BCA74>I<B600E092B612F88181A281D8001F6D
--9239001FE0006F705A82A28202BF7F029F7FA2028F7F02877F02837F8214810280806F7F
--6F7F83816F7F6F7F6F7F83816F80707F707F8482707F707F707FA2707F7014807113C019
--E0837113F07113F87113FC19FE837113FF71148F7213CF1AEF847213FF8484A284848485
--A2858585A285858585497EB600F8167F1A3F1A1F1A0FA2554B7BCA60>I<EEFFF8031FEB
--FFC04AB612FC020715FF021FD9C01F13C091277FFE000313F0902601FFF09038007FFC49
--496E7E490180EC0FFF4990C86C7F49486F7F49486F7F017F8449486F7F4849707EA24849
--707E4885A24849701380A2481AC04A82A2481AE0A34890CA6C13F0A5B519F8AE6C1AF0A2
--6E5EA36C1AE0A26E5E6C1AC0A26C1A806E5E6C1A006E5E6C616E16FF6C616C6D4B5B6D6C
--4B5B6E5D6D6D4A5B6D6D4A5B01076D4A90C7FC6D01F8ECFFFE6D01FE01035B9028007FFF
--C01F13F0021F90B612C0020793C8FC020115FCDA001F14C0030101FCC9FC4D4D79CB5C>
--I<B912C018FCF0FF8019F085D8001F902680000713FE05007F063F1380060F13C07213E0
--1AF0841AF8A27213FCA31AFEA81AFCA34E13F8A21AF0601AE04E13C0063F138095B51200
--050713FC92B75A19E096C7FC18F803C0CAFCB3ABB712FCA5474B7BCA54>I<B9FC18F8F0
--FF8019E019F8D8000F9026C0000713FE9439007FFF80061F7F727F727F727F84868684A2
--86A862A24E5BA2624E5B4E5B4E5B4E5B95B5C8FC050713FC92B712F0198006FCC9FC18FF
--9226C0003F13C0050713F0717F717F717F187F85727FA28486A786A71C3E86A28474137E
--72157C726D13FCB700FC6D9038FE01F872EBFF8373EBFFF0071F14E007031480CD383FFE
--00574C7CCA5C>82 D<DA7FFCEB01C00103B5EAC003011FECF00749ECFC0F90B7121F48D9
--E00F13BF4890C713FFD807FC141F4848804848140382484880177F485A173F171F12FFA2
--170F7FA217077F7F7F6D92C7FC6D7E6C13F014FF15F86CECFF8016F86C15FF6C16C0836C
--826C826C826C82013F816D1680010716C01300020F15E01400030714F0ED007F160F1603
--7013F882177F127800F8163FA3171FA27E18F0A27EA26CEE3FE07F18C001E0157F6DEDFF
--8001FC160001FF140302E0EB0FFED97FFEEB3FFC486CB612F0D8FC0F5DD8F803158048C6
--6C49C7FC48010313F0354D79CB44>I<003FBB12C0A5DA80019038FC001FD9FC001601D8
--7FF09438007FE001C0183F49181F90C7170FA2007E1907A3007C1903A500FC1AF0481901
--A5C894C7FCB3B3A749B812FCA54C4A7CC955>I<B700F8023FB512F8A5D8001F01C0C938
--0FE000745AB3B3AD6D180F63811A1F6D96C7FC626D7F1A7E6D7F6D606E6C4B5A6E6CED07
--F06E6C4B5A6E01C0EC3FC06E01F049B45A020101FF011F90C8FC6E91B55A033F15F80307
--15E0030092C9FC040713F0554C7CCA5E>I<B700F00203B6FCA5D8001F01E0C93803FC00
--745A6D61811A036D6D5F1A076D6D5F1A0F6D616F161FA26D6D94C7FC626E6D153E1A7E6E
--177C7015FC6E5F8219016E6D5D19036E5F7014076E5F82190F6E6D5D191F6E6D92C8FC61
--6F153E83197E6F6D137C19FC6F6D5B18016F5DEFF003A26F01F85B18076F01FC5B180F6F
--5DEFFE1F6F92C9FC17FF607013BE18FE705BA2705BA3705BA2705BA2705BA3705BA27090
--CAFCA2177EA2584C7ECA5D>I<B700F84AB6FCA5D8001F01F0C93803FC006F705A6D4E5A
--6D6D4C5A816D4E5A6D6D4C5A826D4EC7FC6E6D5D70157E6E5F6E7F704A5A6E4C5A6E7F70
--4A5A6E4C5A6E7F71495A6E4CC8FC6F7F71137E6F5D6F7F71485A6F4A5A6F13FC71485A6F
--4A5A6F13FFF09F806F02BFC9FC7013FF60705B8260705B8260B3A7037FB612FEA5584B7E
--CA5D>89 D<ECFFFC010FEBFFC0017F14F090B612FC489038803FFE3B03FC0007FF80486C
--6D7F6D7F486D6C7F83167F83A2707E6C90C7FC6C5A6C5AC9FCA5ED1FFF021FB5FC49B6FC
--130F013FEBC03F9038FFFE00000313F04813C04890C7FC485A485AA2485AA2485AA4167F
--A26D14FF007F15EF6D01017F6C6C903907CFFF806C6CD90F8F13FE6C9038E07F076C9038
--FFFE0300014A7ED8003F9038F0007F0103018090C7FC37347CB23C>97
--D<EB7FC0B5FCA512037EB3ED07FF037F13E002C1B512FC02C714FF9126CFF80F7F9126DF
--C0017F02FFC77F4AEC3FF002F8814A6E7E717E4A81831980A37113C0A319E0AC19C0A35F
--1980A219005F606E141F6E5D4D5A6E4A5A02BF4A5A91261FC0035B9027FE0FF01F5B496C
--B548C7FCD9F80114F8496C6C13E0C8D80FFEC8FC3B4D7CCB44>I<91380FFF8091B512F8
--010314FF010F15804948C613C0D97FF8EB1FE0D9FFE0EB3FF04849137F4849EBFFF84890
--C7FCA2485A121FA24848EC7FF0EE3FE0EE1FC0007F92C7FC5BA212FFAC127FA27FA2123F
--A26C6C153EA26C6C157E177C6C6D14FC6C6D14F86C6D13036C6DEB07F0D97FFCEB1FE06D
--B4EBFFC0010F90B5120001035C010014F0020F13802F347CB237>I<EF1FF0EE3FFFA516
--00177FB3EC0FFF91B512E0010314F8010F14FC013FEB01FF903A7FF8003FFFD9FFE0130F
--48497F48497F4890C77E48815B121F5B123FA2127F5BA312FFAC127FA36C7EA3121F6D5C
--120F6C6C5C6C6D5B6C5D6C01E0013F7F6D6C49EBFFE090393FFE03FE6DB512F801075C01
--00148091261FFC00EBC0003B4D7CCB44>I<EC0FFF91B512F0010314FC010F14FF90263F
--FE077F90267FF0007F49486D7E4801806D7E486F7E4890C7120F484881707E121F491403
--003F82A2127F5B701380A212FFA390B8FCA401F8CAFCA5127FA27FA2123FA26C6CED0F80
--A26C6C151F6C17006E5C6C6D147E6C6D5C6C6D495AD93FFCEB07F0903A1FFF803FE00107
--90B55A010192C7FC6D6C13FC020713C031347DB238>I<ED7FF0913807FFFC023F7F4A7F
--902601FFE0138049018113C049484813E0EB0FFCEB1FF8A2EB3FF0A2017F6D13C04A6C13
--80EE7F00163E93C7FCACB77EA526007FF0C8FCB3B3A3003FB512F8A52B4D7DCC26>I<DA
--7FFCEB0FE00103B538807FF8010F9138E1FFFC013F02FB13FE903A7FF01FFFF39026FFC0
--07138348D90001130348168348486DEBC1FCEFC0F8000FEEE00049147F001F82A9000F5E
--6D14FF00075EA26C6C495B6C93C7FC6C9038C007FE9138F01FFC4890B55A01EF14E0D803
--C314809026C07FFCC8FC000790CAFCA47FA27F13FC90B612FCEEFFC06C16F817FE6C8218
--806C17C06D16E00003B812F0120FD81FFCC7000F13F8D83FF0140049153F4848ED1FFC00
--FF160F491507A56D150F007F17F86D151F6C6CED3FF06C6CED7FE0D80FFE913801FFC06C
--6C6C010713806C01F8017F1300C690B612FC013F15F001071580D9003F01F0C7FC37497D
--B13D>I<EB7FC0B5FCA512037EB3923801FFC0030F13F8033F7F4B13FFDBFE077F9138C1
--F0039126C3E0017FDAC78080ECCF0014DE02DC6D7F14FC5CA25CA35CB3AAB6D8C07FEBFF
--E0A53B4C7BCB44>I<13FCEA03FF487F487FA2487FA66C5BA26C5B6C90C7FCEA00FC90C8
--FCABEB7FC0B5FCA512037EB3B3A2B61280A5194D7BCC22>I<EB7FC0B5FCA512037EB3B3
--B3AAB61280A5194C7BCB22>108 D<90287FC001FFC0EC7FF0B5010F01FC0103B5FC033F
--6D010F804B6D4980DBFE079026803F817F9126C1F801903AC07E007FF00003D9C3E0DAE0
--F8806C9026C78000D9F1E06D7E02CFC7EBF3C002DEEDF780DD7FFF6E7E02FC93C7FC4A5D
--A24A5DA34A5DB3AAB6D8C03FB5D8F00FB512FCA55E327BB167>I<903A7FC001FFC0B501
--0F13F8033F7F4B13FFDBFE077F9138C1F00300039026C3E0017F6CD9C78080ECCF0014DE
--02DC6D7F14FC5CA25CA35CB3AAB6D8C07FEBFFE0A53B327BB144>I<913807FF80027F13
--F80103B6FC010F15C090261FFE017F903A7FF0003FF849486D7E480180EB07FE4890C76C
--7E4817804980000F17C048486E13E0A2003F17F0A249157F007F17F8A400FF17FCAB007F
--17F8A46C6CEDFFF0A2001F17E0A26C6C4A13C0A26C6C4A13806C6D4913006C5E6C01E0EB
--1FFC6D6C495A903A3FFE01FFF0010FB612C0010392C7FCD9007F13F80207138036347DB2
--3D>I<90397FC007FFB5017F13E002C1B512FC02C714FF9126CFF80F7F9126DFC0037F00
--0301FFC77F6C496E7E02F8814A6E7E717E4A81831980A28319C0A37113E0AC19C05FA319
--805F19005F606E143F6E5D4D5A6E4A5A02FF495BDBC0075B9126EFF01F5B02E7B548C7FC
--02E114F8DAE07F13E0DB0FFEC8FC92CAFCAFB612C0A53B477CB144>I<9039FF803FE0B5
--EBFFF8028113FE02837FDA87E11380EC8F830003D99F0713C06C139E14BCA214F8A24A6C
--13806F13006F5A4A90C7FCA45CB3A8B612E0A52A327CB132>114
--D<903907FF8070017FEBF1F048B6FC1207380FFC01391FE0003F4848130F491307127F90
--C71203A2481401A27FA27F01F090C7FC13FCEBFFC06C13FEECFFE06C14FC6C806CECFF80
--6C15C06C15E06C15F06C7E011F14F8010114FCEB000FEC007FED1FFE0078140F00F81407
--15037E1501A27E16FC7E15036D14F86D13076D14F001F8EB1FE001FFEBFFC04890B51280
--486C1400D8F81F13FCD8E00313C027347CB230>I<14F8A51301A41303A21307A2130FA2
--131F133F137F13FF1203000F90B512F0B7FCA426007FF8C7FCB3A7167CAA013F14F880A2
--90391FFE01F0010F1303903907FF87E06DEBFFC06D14806D6C1300EC0FFC26467EC430>
--I<D97FE0EC3FF0B5EC7FFFA5000315016C81B3AC5EA25EA25E7E6EEB0F7F017F021E7F6E
--017CEBFFE090393FFE01F86DB512F0010714E0010114C09027003FFE00EBC0003B337BB1
--44>I<B600C090387FFFF0A5C601F0C73803F8006E5D017F5E801707013F5E6E140F011F
--5E6E141F6D93C7FC6F5B6D153E81177E6D157C6F13FC6D5DEDF0016D5DEDF803027F5CA2
--EDFC07023F5CEDFE0F021F5CEDFF1F6E91C8FC169F16BF6E13BE16FE6E5BA26E5BA26E5B
--A36F5AA26F5AA26F5AA23C327EB041>I<B60081B500FC90387FFFF0A500019026E00003
--90C73801FC006E6F5C6C6F5E6E6F1303017F61A26E6F1307013F4A5E846E49150F011F61
--6E6F131F6D4A93C7FC179F03806E5B6D021F153EEF0FFE6DD9C03F5DEE3E0703E06E13FC
--6D027E5DEE7C0303F015816D4A6C5C03F815C3DA7FF95E4C7E03FD15E7DA3FFF5E4C137F
--19FF6E496D5BA26E94C8FC4C7FA26E5E93C7120FA26E486E5AA202015E4B1403A26E486E
--5A54327EB059>I<007FB500C090387FFFE0A5C601F0C73803F8006E5D017F5E6E140701
--3F5E80170F011F5E6E141F6D93C7FC6F5B6D153E6F137E6D157C6F13FCA26D6D5B16016D
--5DEDF803027F5CEDFC07023F5CEDFE0F021F5C15FF161F6E91C8FC16BF6E13BE16FE6E5B
--A26E5BA36E5BA26F5AA26F5AA26F5AA393C9FC5D153E157E157CD81F8013FC486C5B387F
--E001D8FFF05B14035D14074A5A49485A007F133F4948CAFC383F81FE381FFFF86C5B6C13
--C0C648CBFC3B477EB041>121 D E
+-%DVIPSBitmapFont: Fe cmbx12 13.14 53
+-/Fe 53 122 df<923803FFE092B512FC020714FF021F81027F9038007FC0DAFFF0EB0FE0
+-010301C0804990C7EA3FF84948147F4A81494814FF495AA2137F5CA2715A715A715AEF07
+-8094C8FCA8EF07FCB9FCA526007FF0C7123F171FB3B3003FB5D8E00FB512F8A53D4D7ECC
+-44>12 D<B7FCAA200A7F9C29>45 D<EA07E0EA1FF8EA3FFCEA7FFEA2B5FCA6EA7FFEA2EA
+-3FFCEA1FF8EA07E01010778F22>I<177817F8EE01FCA21603A2EE07F8A217F0160FA217
+-E0161FA2EE3FC0A21780167FA217005EA24B5AA25E1503A24B5AA25E150FA25E151FA24B
+-5AA25E157FA24BC7FCA25D1401A25D1403A24A5AA25D140FA24A5AA25D143FA25D147FA2
+-4AC8FCA25C1301A25C1303A2495AA25C130FA2495AA25C133FA25C137FA249C9FCA25B12
+-01A2485AA25B1207A25B120FA2485AA25B123FA25B127FA248CAFCA25AA2127CA22E6D79
+-D13D>I<15F014011407141F147FEB03FF137FB6FCA313FC1380C7FCB3B3B2007FB712E0
+-A52B4777C63D>49 D<ECFFF80107EBFF80013F14F090B612FC4881480101EBFF802707F8
+-003F13C0D80FE0010F13E0D81F806D13F0003F80D87FF06D13F86D15FC6D7F00FF16FE6D
+-147FA217FF82A36C5A6C5A6C5A6C5AC95A17FEA3EEFFFCA24B13F817F05D17E04B13C017
+-804B13004B5A4B5A5EED7FE04B5A4A5B4A90C7FCEC07FC4A5A4A5A4B131FEC3F804AC7FC
+-14FE4948143E495AEB07E0495A4948147E49C8FC017E15FE90B7FC4816FC5A5A5A5A5A5A
+-B8FC17F8A430477AC63D>I<EC3FFE0103B512E0010F14FC013F14FF90267FE01F7F9026
+-FF000713E0D801FC6D7FD803F07F486C6D7FD80FFE817F486D80167FA3805C16FF7E91C7
+-5B6C5A6C5AD80020495B90C75C5D5F4B5B5F031F90C7FCED3FFC4AB45A49B512E0168016
+-E016FC90C7EA3FFF030713C06F7F6F7F6F7F83707E83A2701380A318C0EA07E0EA1FF848
+-7E487EA2B5FCA31880A25E491600127F494A5A6C485D01E05B001F4A5BD80FFC495B2707
+-FFC03F13C06C90B65AC64BC7FC013F14F8010714E09026007FFEC8FC32487BC63D>I<EE
+-07E0160FA2161F163F167F16FFA25D5D5DA25D5D5DA2157D15FDEC01F915F1EC03E11407
+-EC0FC1EC1F811501143F147E14FC14F8EB01F01303EB07E014C0EB0F80131FEB3F00133E
+-5B13FC485A485A5B1207485A485A90C7FC123E127E5AB912FCA5C80003EBE000AD023FB6
+-12FCA536487DC73D>I<D8038015E001E0140301FC143F9039FFE003FF91B612C0178017
+-00A25E5E16F05E5E93C7FC15FC15F001E790C8FC01E0C9FCAAEC1FFC01E1B512C001E714
+-F001EF14FC9039FFE01FFFDA0007138001FC6D13C001F06D13E04915F0497F17F8C913FC
+-167F17FEA417FFA3EA0FC0EA3FF0487EA2487EA317FEA34914FF6C4815FC5B018015F86C
+-C74813F07F6C6C4913E0D80FF04913C0D807FC011F13806CB46CB512006C90B512FC6C5D
+-013F14C0010F91C7FC010113F030487AC63D>I<ED7FF8913807FFFE021F6D7E027F8090
+-3A01FFF01FE0010790388003F04948486C7E49486D7ED93FF013074948130F01FF4A7E48
+-49133F5C5A4890C7FCA25A705A48486E5A705A003F92C8FCA3485AA21520913807FFE002
+-1F13FC00FF497F4A6D7EDAFC017F9026FDF0007F4A6D7ED9FFC06D7E4A6D7E8391C7FC83
+-82491680A318C05BA3127FA6123FA27F001F1780A3000F4B1300A26C6C5DA26C6D495A6C
+-6D5C6C6D495A6D6C48485A90263FFC075B6DB65A6D4AC7FC01035C010014F0020F90C8FC
+-32487BC63D>I<121F7F7F13FE90B812E0A45A18C0188018005F5FA25F485E90C8EA07E0
+-007E4B5A5F007C151F4CC7FC167E5E485D15014B5A4B5AC8485A4B5AA24BC8FC157EA25D
+-1401A24A5A1407A24A5AA2141FA24A5AA2147FA314FFA3495BA45BA55BAA6D5BA26D90C9
+-FCEB007C334B79C93D>I<EC1FFF49B512F0010714FC011F14FF90263FF00713C049C77F
+-01FCEC3FF04848EC0FF848481407000782491403000F821601A2121F7FA27F13FE6D1403
+-02C05C14F002FC495A6C6D130FDAFF805B9238E01FE06C6E485A9238FCFF806C91B5C7FC
+-6C15FC6C5D7F6D14FE6D806D15C06D81011F81017F81D9FFDF804813072603FE01804848
+-6C804848133F4848010F1480003F8049130148486D6C13C0161F824848140382A282A217
+-7FA218807F127FEFFF007F6C6C4A5AA2D81FFC4A5A6C6CEC0FF86C6C6CEB3FF06C9039F0
+-03FFE06C90B612806C6C92C7FC011F14FC010714E09026003FFEC8FC32487BC63D>I<EC
+-1FFE49B512C0010F14F04914FC90397FFC0FFE903AFFE003FF804849C67F48496D7E4890
+-C7FC486F7E484881161F003F825B007F82A28300FF81A31880A518C0A45E127FA3003F5D
+-7F121F5E120F6C6C91B5FC6C90388001EF6CEBC0036C9038E00FCF6DB5128F011F140F01
+-0701FE1480010113F8903800010091C7FCA24C1300A3D803F85D487E487E486C4A5AA25F
+-4C5AA24C5A49495B6C485D49010790C7FC01E0495AD807F8EB3FFC6CB448B45A6C90B55A
+-6C15C06D91C8FC011F13FC010313C032487BC63D>I<EE01F8A24C7EA34C7EA24C7EA34C
+-7FA24C7FA34C7FA293B57EA34B8016F303038016E316E103078016C0030F805E83031F81
+-4C7E4B81153E83037E81037C7F03FC815D830201824B7F0203825D830207824B7F020F82
+-5D84021F8392B8FC4A83A34A83027CC8120F02FC835C840101844A810103845C84010784
+-4A81010F845C85011F85496C82B600C091B712F0A5544D7CCC5D>65
+-D<93261FFF80EB01C00307B500F81303033F02FE13074AB7EA800F0207EEE01F021F903A
+-FE007FF83F027F01E0903807FC7F91B5C73801FEFF010301FCEC007F4901F0814901C015
+-0F4949814990C97E494882495A48498248197F5C48193F5C48191F5C48190FA2485BA21A
+-075AA391CDFCA2B5FCAD7EA280F207C0A27EA36C7F1A0F6C1A80806C191F6E18006C6180
+-6C197E6C6D177C6D6C17FC6D6C4C5A6D6D4B5A6D6D4B5A6D01F0ED1FC06D01FC4B5A0100
+-01FF03FFC7FC6E01E0EB07FE021F01FEEB3FFC020790B612F0020116C0DA003F92C8FC03
+-0714F8DB001F13804A4D79CB59>67 D<B912F0F0FF8019F019FC19FFD8001F9026800001
+-14C0DD001F7F060713F806017F726C7E737E737F737F737F8587737F8587A2747EA38786
+-A21C80A51CC0A586A462A51C80A51C00A26263A2631AFF636163614F5B634F5B073F90C7
+-FC4F5A4F5A06035B061F5B4DB512C0BBC8FC19FC19F0198006F0C9FC524B7CCA5E>I<BB
+-12C0A486D8000F01E0C77E18071801F0007F193F191F190F1907861903A31901A3EF0F80
+-A2737EA497C7FC171FA2173F177F17FF160392B6FCA5EDE0031600177F173F171FA2050F
+-EC0F80A3F21F00A494C8FC621A3EA21A7EA31AFE6219011903A21907190FF13FF819FF18
+-03183FBBFCA262A3494A7CC951>I<BBFCA41A80D8001F01C0C7FC181F18038484197F19
+-3F191F1AC0190FA31907A4171FF103E0A496C7FCA25FA25F5F5E160792B6FCA5EDC00716
+-01828383A283A794C9FCB1B8FCA5434A7CC94D>I<93261FFF80EB01C00307B500F81303
+-033F02FE13074AB7EA800F0207EEE01F021F903AFE007FF83F027F01E0903807FC7F91B5
+-C73801FEFF010301FCEC007F4901F0814901C0150F4949814990C97E494882495A484982
+-48197F5C48193F5C48191F5C48190FA2485BA21A075AA391CEFCA2B5FCAD7E050FB712C0
+-80A37E94C7001FEBC000807EA27E807E807E806C7F7E6D7E6D7E6D7F6D01E05D6D6D5D6D
+-13FC010001FF4AB5FC6E01E0EB07F9021F01FFEB3FF0020791B5EAE07F0201EEC01FDA00
+-3FED0007030702F81301DB001F018090C8FC524D79CB60>I<B7D8FC01B712FCA5D8001F
+-01C0C8001FEBC000B3AA92B9FCA503C0C8121FB3AEB7D8FC01B712FCA5564B7BCA60>I<
+-B712FEA5D8000FEBE000B3B3B3ABB712FEA5274B7DCA2E>I<B8FCA5D8001F01C0C9FCB3
+-B3A4193EA4197E197CA519FCA31801A2F003F8A21807180F181F183F187FEF01FF170717
+-3FBA12F0A53F4B7BCA4A>76 D<B600E04DB612806F5FA26F5FA2D8001F09FCC7FC6FEF0F
+-7FA2DABFFE171EA2DA9FFF173CA3028F6D1678A202876D16F0A202836DED01E0A302816D
+-ED03C0A202806DED0780A26F6CED0F00A36F6C151EA26F6C5DA26F6D5CA26F6D5CA36F6D
+-495AA26F6D495AA26F6D495AA3706C49C7FCA2706C131EA2706C5BA3706D5AA2706D5AA2
+-70EBE1E0A370EBF3C0A270EBFF80A27190C8FCA2715AA3715AA2715A497EB600F06D4801
+-03B71280A3715A715A694B7BCA74>I<B600E092B612FC8181A281D8001F6D9239001FE0
+-006F705A82A28202BF7F029F7FA2028F7F02877F02837F8214810280806F7F6F7F83816F
+-7F6F7F6F7F83816F80707F707F8482707F707F707FA2707F7014807113C019E0837113F0
+-7113F87113FC19FE837113FF71148F7213CF1AEF847213FF8484A284848485A2858585A2
+-85858585497EB600F8167F1A3F1A1F1A0FA2564B7BCA60>I<EEFFF8031FEBFFC04AB612
+-FC020715FF021FD9C01F13C091277FFE000313F0902601FFF09038007FFC49496E7E4901
+-80EC0FFF4990C86C7F49486F7F49486F7F017F8449486F7F4849707EA24849707E4885A2
+-4849701380A2481AC04A82A2481AE0A34890CA6C13F0A5B519F8AE6C1AF0A26E5EA36C1A
+-E0A26E5E6C1AC0A26C1A806E5E6C1A006E5E6C616E16FF6C616C6D4B5B6D6C4B5B6E5D6D
+-6D4A5B6D6D4A5B01076D4A90C7FC6D01F8ECFFFE6D01FE01035B9028007FFFC01F13F002
+-1F90B612C0020793C8FC020115FCDA001F14C0030101FCC9FC4D4D79CB5C>I<B912C018
+-FCF0FF8019F085D8001F902680000713FE05007F063F1380060F13C07213E01AF0841AF8
+-A27213FCA31AFEA81AFCA34E13F8A21AF0601AE04E13C0063F138095B51200050713FC92
+-B75A19E096C7FC18F803C0CAFCB3ABB712FCA5474B7BCA54>I<B9FC18F8F0FF8019E019
+-F8D8000F9026C0000713FE9439007FFF80061F7F727F727F727F84868684A286A862A24E
+-5BA2624E5B4E5B4E5B4E5B95B5C8FC050713FC92B712F0198006FCC9FC18FF9226C0003F
+-13C0050713F0717F717F717F187F85727FA28486A786A71C3E86A28474137E72157C726D
+-13FCB700FC6D9038FE01F872EBFF8373EBFFF0071F14E007031480CD383FFE00574C7CCA
+-5C>82 D<DA7FFCEB01C00103B5EAC003011FECF00749ECFC0F90B7121F48D9E00F13BF48
+-90C713FFD807FC141F4848804848140382484880177F485A173F171F12FFA2170F7FA217
+-077F7F7F6D92C7FC6D7E6C13F014FF15F86CECFF8016F86C15FF6C16C0836C826C826C82
+-6C82013F816D1680010716C01300020F15E01400030714F0ED007F160F16037013F88217
+-7F127800F8163FA3171FA27E18F0A27EA26CEE3FE07F18C001E0157F6DEDFF8001FC1600
+-01FF140302E0EB0FFED97FFEEB3FFC486CB612F0D8FC0F5DD8F803158048C66C49C7FC48
+-010313F0354D79CB44>I<003FBB12C0A5DA80019038FC001FD9FC001601D87FF0943800
+-7FE001C0183F49181F90C7170FA2007E1907A3007C1903A500FC1AF0481901A5C894C7FC
+-B3B3A749B812FCA54C4A7CC955>I<B700F8023FB512F8A5D8001F01C0C9380FE000745A
+-B3B3AD6D180F63811A1F6D96C7FC626D7F1A7E6D7F6D606E6C4B5A6E6CED07F06E6C4B5A
+-6E01C0EC3FC06E01F049B45A020101FF011F90C8FC6E91B55A033F15F8030715E0030092
+-C9FC040713F0554C7CCA5E>I<B700F00203B6FCA5D8001F01E0C93803FC00745A6D6181
+-1A036D6D5F1A076D6D5F1A0F6D616F161FA26D6D94C7FC626E6D153E1A7E6E177C7015FC
+-6E5F8219016E6D5D19036E5F7014076E5F82190F6E6D5D191F6E6D92C8FC616F153E8319
+-7E6F6D137C19FC6F6D5B18016F5DEFF003A26F01F85B18076F01FC5B180F6F5DEFFE1F6F
+-92C9FC17FF607013BE18FE705BA2705BA3705BA2705BA2705BA3705BA27090CAFCA2177E
+-A2584C7ECA5D>I<B700F84AB6FCA5D8001F01F0C93803FC006F705A6D4E5A6D6D4C5A81
+-6D4E5A6D6D4C5A826D4EC7FC6E6D5D70157E6E5F6E7F704A5A6E4C5A6E7F704A5A6E4C5A
+-6E7F71495A6E4CC8FC6F7F71137E6F5D6F7F71485A6F4A5A6F13FC71485A6F4A5A6F13FF
+-F09F806F02BFC9FC7013FF60705B8260705B8260B3A7037FB612FEA5584B7ECA5D>89
+-D<ECFFFC010FEBFFC0017F14F090B612FC489038803FFF2703FC00077F486C6D7F486C6D
+-7F6E7E83707EA3707E6C90C7FC6C5A6C5AC9FCA4ED1FFF021FB5FC49B6FC130F013FEBC0
+-3F9038FFFE00000313F04813C04890C7FC485A485AA2485AA2485AA4167FA26D14FF007F
+-15EF6D01017F6C6C903907CFFF806C6CD90F8F13FE6C9038E07F076C9038FFFE0300014A
+-7ED8003F9038F0007F0103018090C7FC37337CB13C>97 D<EB7FC0B5FCA512037EB3A2ED
+-0FFF037F13F002C1B512FC02C714FF9126CFF80F7F9126FFC00113E092C76C7E02FC6E7E
+-4A6E7E5C4A6E7E84831980A219C083A319E0AC19C0A25F1980A34D1300606E141F606E4A
+-5A6E4A5A02BF4A5A91261F80035B9027FE0FF01F5B496CB548C7FC496C14F849C614E0C8
+-D80FFEC8FC3B4D7CCB44>I<91380FFF8091B512F8010314FF010F158090263FFE0013C0
+-D97FF8EB1FE0D9FFE0EB3FF04849EB7FF8484913FF4890C7FC5A5B121F5B003FED7FF0EE
+-3FE0007FED1FC093C7FC5BA212FFAC127F7FA2123FA26D153E121F6D157E6C167C6C6D14
+-FC6C16F86C6D13036C01F0EB07F0D97FFCEB1FE06DB4EBFFC0010F90B5120001035C0100
+-14F0020F13802F337CB137>I<EF1FF0EE3FFFA51600177FB3A2EC0FFF91B512E0010314
+-F8010F14FE013FEB01FF903A7FF8003FFFD9FFE0130F48497F48497F4890C77E4881485A
+-A2485AA3127F5BA212FFAC127FA37F123FA2121F7F000F5D6C6C5C5E6C6D5B6C01E0497F
+-6C6D017FEBFFE090393FFE03FE6DB512F801075C010114C09027001FFC00EBC0003B4D7C
+-CB44>I<EC0FFF91B512F0010314FC010F14FF90263FFE077F90267FF0007F4948EB3FE0
+-4801806D7E48824890C76C7E4848140783485A003F6F7EA3485A701380A312FFA290B8FC
+-A401F8CAFCA5127FA27FA2123FA26C6CED0F80A2000F161F6C6C16006E5C6C6D147E6C6D
+-5C6C6D495AD97FFCEB07F0903A1FFF803FE06D90B55A010392C7FCD9007F13FC020713C0
+-31337DB138>I<ED7FE0913807FFFC021F7F027F7F902601FFE0138049018113C0902607
+-FE0113E049485A14F8131FEB3FF0A26F13C0EB7FE06F1380EE3E0093C7FCADB77EA52600
+-7FF0C8FCB3B3A2003FB512F8A52B4D7DCC26>I<DA7FFCEB0FF00103B538807FF8011F91
+-38F1FFFC4991B512FE90267FF01F13F32701FFC007138348EB0001A248486DEBC1FC000F
+-EEE0F849027F1300A2001F82A8000F5EA26D14FF00075E6C6C495BA26CD9C00790C7FC6C
+-9038F01FFC4890B55A5ED803C314809026C07FFCC8FC000790CAFCA47FA27F13FC90B612
+-FCEEFFC06C16F817FE6C8218806C17C06D16E00003B812F0120FD81FFCC7000F13F8D83F
+-F0140049153F4848ED1FFC00FF160F491507A56D150F007F17F86D151F6C6CED3FF06C6C
+-ED7FE0D80FFE913801FFC06C6C6C010713806C01F8017F1300C690B612FC013F15F00107
+-1580D9003F01F0C7FC37487DB03D>I<EB7FC0B5FCA512037EB3A2923801FFC0030F13F8
+-033F13FE4B7F9126C1FE077F9126C3F0037F9138C7C001DACF8080150002DE7F02FC81A2
+-5CA25CA35CB3A9B6D8C07FEBFFE0A53B4C7BCB44>I<13FCEA03FF487F487FA2487FA66C
+-5BA26C5B6C90C7FCEA00FC90C8FCACEB7FC0B5FCA512037EB3B3B61280A5194D7BCC22>
+-I<EB7FC0B5FCA512037EB3B3B3AAB61280A5194C7BCB22>108 D<90287FC001FFE0EC7F
+-F8B5010F01FC0103B5FC033F6D010F804B6D6C4814E0DBFE079026C03F817F9126C3F001
+-9138FC007F0003D9C7E0DAE1F8806CDA8000D9F1E06D7E02CFC7EBF3C002DE91267FF780
+-131F02FC03FFC77FA24A5DA24A5DA34A5DB3A9B6D8C03FB5D8F00FB512FCA55E317BB067
+->I<903A7FC001FFC0B5010F13F8033F13FE4B7F9126C1FE077F9126C3F0037F00039038
+-C7C0016CD9CF8080150002DE7F02FC81A25CA25CA35CB3A9B6D8C07FEBFFE0A53B317BB0
+-44>I<913807FF80027F13F80103B6FC010F15C090261FFE017F903A7FF0003FF8D9FFC0
+-EB0FFC48496D7E4890C76C7E4817804980000F17C048486E13E0A2003F17F049157FA200
+-7F17F8A400FF17FCAB007F17F8A36C6CEDFFF0A3001F17E06D5C000F17C06C6C4A13806C
+-17006C6D495A6C01E0EB1FFC6D6C495A903A3FFE01FFF0010FB612C0010392C7FCD9007F
+-13F80207138036337DB13D>I<90397FC00FFFB5017F13F002C1B512FC02C714FF9126CF
+-F80F7F9126FFC00313E0000391C77F6C01FC6E7E4A6E7E5C4A6E7E848319808319C0A471
+-13E0AC4D13C0A319805FA219004D5A804D5A6E4A5A6E4A5A02FF495BDB80075B9126EFF0
+-1F5B02E7B548C7FC02E314F802E014E0DB0FFEC8FC92CAFCAFB612C0A53B467CB044>I<
+-9039FF803FE0B5EBFFF8028113FE02837FDA87E11380EC8F830003D99F0713C06C139E14
+-BCA214F8A24A6C13806F13004A6C5A93C7FCA45CB3A7B612E0A52A317CB032>114
+-D<90390FFF8070017FEBF1F048B6FC1207380FFC01391FE0003F4848130F491307127F90
+-C712035A1501A27FA213E06D90C7FC13FE387FFFF0ECFFC015F06C14FC6C14FF6C15806C
+-15C06C15E0C615F0013F14F8010714FCEB007F14019138003FFE150F0078140700F81403
+-A26C1401A37E16FC6C14036D14F87F6DEB07F001F8EB1FE001FFEBFFC091B51280D8FC7F
+-1400D8F81F13FCD8E00313C027337CB130>I<14F8A61301A41303A21307A2130FA2131F
+-133F137F13FF1203000F90B512F0B7FCA426007FF8C7FCB3A6167CAA013F14F880A29039
+-1FFE01F0010F1303903907FF87E06DEBFFC06D14806D6C1300EC0FFC26467EC430>I<D9
+-7FE0EC3FF0B5EC7FFFA5000315016C81B3AB5EA25EA25E7E6EEB0F7F017F021E7F6E017C
+-EBFFE090393FFE01F86DB512F0010714E0010114C09027003FFE00EBC0003B327BB044>
+-I<B66C90B512C0A5000101E0C73807F0006E5D6C5F6E140F017F5E80171F013F93C7FC6E
+-5C011F153E6E147E6D157C6F13FC6D5DEDC001A26D01E05B16036D5DEDF0076D5DEDF80F
+-027F5CEDFC1F023F91C8FC15FE5E021F133EEDFF7E6E137C16FC6E5BA26E5BA36E5BA26E
+-5BA26F5AA26FC9FCA23A317DAF41>I<B60081B500FC90387FFFF0A500019026E0000301
+-80903803FC006E715A6C6F5E6E6F1303017F61A26E496D1307013F616E6F130F011F4A5E
+-A26E6F131F6D4A93C7FCDD9FFC5B6DD9801F153E170F03C06E137E6D023F157C93383E07
+-FFDBE07E15FC6DDA7C035C03F015816D02FC5D4C7E03F815C3DA7FF95E9226FDF00013E7
+-DA3FFF5E4C137F19FF6E5F4C7FA26E496D90C8FCA26E5E93C7120FA26E486E5AA202015E
+-4B1403A26E486E5A54317EAF59>I<007FB500C090387FFFE0A5C601F0C73803F8006E5D
+-017F5E6E1407013F5E6E140F011F5E6E141FA26D6D91C7FC5F6D153E6F137E6D157C6F13
+-FC6D5DEDF0016D5DEDF803027F5C15FC1607DA3FFE5B160F021F5CEDFF1F6E91C8FC16BF
+-6E13BE16FE6E5BA36E5BA26E5BA26F5AA26F5AA26F5AA393C9FC5D153E157E157CD81F80
+-13FC486C5B387FE001D8FFF05B14035D14074A5A49485A007F49CAFCEBC07E383F81FC6C
+-B45A6C5B6C13C0C648CBFC3B467EAF41>121 D E
 -%EndDVIPSBitmapFont
--%DVIPSBitmapFont: Fg cmtt12 17.28 6
--/Fg 6 123 df<913803FFC0023F13FC49B67E010715F04981013F15FE498190B812C048
+-%DVIPSBitmapFont: Ff cmtt12 17.28 6
+-/Ff 6 123 df<913803FFC0023F13FC49B67E010715F04981013F15FE498190B812C048
 -8348D9FC0180489026E0001F7F480180130391C87F48486F7E49153F4848ED0FFF834848
 -178083496F13C012FF8319E07FA2187FA36C5A6C5A6C5ACBFCA218FFA219C05FA219805F
 -A24D13005F604D5A173F4D5A4D5AA24C5B4C5B4C5B041F90C7FC4C5A4C5A4C5A4B5B4B5B
@@ -5267,8 +6115,8 @@ diff -Nru bzip2-1.0.1/manual.ps bzip2-1.0.1.new/manual.ps
 -4949EC0FF04948C8EA1FF8495A495A485B485B485B485B4890C9FC485A48B9FCBAFCA66C
 -18F06C18E03D3E7BBD4A>122 D E
 -%EndDVIPSBitmapFont
--%DVIPSBitmapFont: Fh cmbx12 17.28 28
--/Fh 28 120 df<16F04B7E1507151F153FEC01FF1407147F010FB5FCB7FCA41487EBF007
+-%DVIPSBitmapFont: Fg cmbx12 17.28 28
+-/Fg 28 120 df<16F04B7E1507151F153FEC01FF1407147F010FB5FCB7FCA41487EBF007
 -C7FCB3B3B3B3007FB91280A6395E74DD51>49 D<913801FFF8021FEBFFC091B612F80103
 -15FF010F16C0013F8290267FFC0114F89027FFE0003F7F4890C7000F7F48486E7FD807F8
 -6E148048486E14C048486E14E048486F13F001FC17F8486C816D17FC6E80B56C16FE8380
@@ -5388,13 +6236,13 @@ diff -Nru bzip2-1.0.1/manual.ps bzip2-1.0.1.new/manual.ps
 -90C9FCA294C87E6F5FA26F486F5A047C6F5A6E417DBF75>119 D
 -E
 -%EndDVIPSBitmapFont
--%DVIPSBitmapFont: Fi cmsy10 10.95 1
--/Fi 1 16 df<EB0FFCEB3FFF90B512C0000314F04880488048804880A2481580A3B712C0
+-%DVIPSBitmapFont: Fh cmsy10 10.95 1
+-/Fh 1 16 df<EB0FFCEB3FFF90B512C0000314F04880488048804880A2481580A3B712C0
 -AA6C1580A36C1500A26C5C6C5C6C5C6C5CC614C0013F90C7FCEB0FFC22227BA72D>15
 -D E
 -%EndDVIPSBitmapFont
--%DVIPSBitmapFont: Fj cmtt10 10.95 89
--/Fj 89 127 df<121C127FEAFF80B3EA7F00B2123EC7FCA8121C127FA2EAFF80A3EA7F00
+-%DVIPSBitmapFont: Fi cmtt10 10.95 89
+-/Fi 89 127 df<121C127FEAFF80B3EA7F00B2123EC7FCA8121C127FA2EAFF80A3EA7F00
 -A2121C09396DB830>33 D<00101304007C131F00FEEB3F80A26C137FA248133FB2007E14
 -00007C7F003C131E00101304191C75B830>I<903907C007C0A2496C487EA8011F131FA2
 -02C05BA3007FB7FCA2B81280A36C16006C5D3A007F807F80A2020090C7FCA9495BA2003F
@@ -5447,666 +6295,800 @@ diff -Nru bzip2-1.0.1/manual.ps bzip2-1.0.1.new/manual.ps
 -3FE001FF80261FFC0F13006CB55A6C5C6C5C6C14E06C6C1380D90FFCC7FC25397BB730>
 -I<EC0FF8EC7FFF49B51280010714E0131F4914F090387FF80F9039FFC007F84813803803
 -FE005B485A4848EB03F0ED01E0484890C7FC5B123F5BA2127FEB000C903803FFE0010F13
--F8D8FF3F13FE48B6FCB7128016C09039FE007FE001F8EB1FF001E0130F49EB07F8ED03FC
--5B90C7120116FE1500A37EA46C7E15016D14FC121F6D1303000FEC07F86D130F6C6CEB1F
--F06DEB3FE03A03FF81FFC06C90B512806C15006D5B011F13F8010713E001011380273A7C
--B830>I<127CB712FC16FEA416FC48C7EA0FF816F0ED1FE0007CEC3FC0C8EA7F80EDFF00
--A24A5A4A5A5D14075D140F5D4A5AA24A5AA24AC7FCA25C5C13015CA213035CA213075CA4
--495AA6131F5CA96D5A6DC8FC273A7CB830>I<49B4FC011F13F0017F13FC90B57E0003EC
--FF804815C048010113E03A1FF8003FF049131FD83FC0EB07F8A24848EB03FC90C71201A5
--6D1303003F15F86D13076C6CEB0FF06C6CEB1FE0D807FCEB7FC03A03FF83FF806C90B512
--006C6C13FC011F13F0497F90B512FE48802607FE0013C0D80FF8EB3FE0D81FE0EB0FF048
--48EB07F8491303007F15FC90C712014815FE481400A66C14016C15FC6D1303003F15F86D
--1307D81FF0EB1FF06D133F3A0FFF01FFE06C90B512C06C1580C6ECFE006D5B011F13F001
--0190C7FC273A7CB830>I<49B4FC010F13E0013F13F890B57E4880488048010113803A0F
--FC007FC0D81FF0EB3FE04848131F49EB0FF048481307A290C7EA03F85A4815FC1501A416
--FEA37E7E6D130315076C7E6C6C130F6D133FD80FFC13FF6CB6FC7E6C14FE6C14F9013FEB
--E1FC010F138190380060011400ED03F8A2150716F0150F000F15E0486C131F486CEB3FC0
--157FEDFF804A1300EC07FE391FF01FFC90B55A6C5C6C5C6C1480C649C7FCEB3FF0273A7C
--B830>I<120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F00C7FCAF120FEA3FC0EA
--7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C276EA630>I<EA03C0EA0FF0EA1FF8A2EA3F
--FCA4EA1FF8A2EA0FF0EA03C0C7FCAFEA03C0EA0FF0121F13F8123F13FCA3121FA2120F12
--031200120113F8120313F01207EA1FE0123FEA7FC0EAFF80EA7F00127E12380E3470A630
-->I<16F01503ED07F8151F157FEDFFF014034A13C0021F138091383FFE00ECFFF8495B01
--0713C0495BD93FFEC7FC495A3801FFF0485B000F13804890C8FCEA7FFC5BEAFFE05B7FEA
--7FF87FEA1FFF6C7F000313E06C7F38007FFC6D7E90380FFF806D7F010113F06D7FEC3FFE
--91381FFF80020713C06E13F01400ED7FF8151F1507ED03F01500252F7BB230>I<007FB7
--FCA2B81280A36C16006C5DCBFCA7003FB612FE4881B81280A36C1600A229157DA530>I<
--1278127EB4FC13C07FEA7FF813FEEA1FFF6C13C000037F6C13F86C6C7EEB1FFF6D7F0103
--13E06D7F9038007FFC6E7E91380FFF806E13C0020113F080ED3FF8151F153FEDFFF05C02
--0713C04A138091383FFE004A5A903801FFF0495B010F13804990C7FCEB7FFC48485A4813
--E0000F5B4890C8FCEA7FFE13F8EAFFE05B90C9FC127E1278252F7BB230>I<EC1FE0ECFF
--F8010313FE010F7F4914804914C090397FF03FE09038FF800F4890380007F0D803FC1303
--3A07F801FBF89038F007FF380FE01F4A13FCEA1FC0495A003FEBFF0F903800FE07903901
--FC03FE007FEBF801EA7E03ECF000A2EAFE0700FC49137EAA00FE6D13FED87E0314FCA2EC
--F801D87F0114F8003FEBFC03903900FE07F0903880FF0F001F90387FFFE06D6C13C0EA0F
--E06E13803A07F007FE009038F801F86C6CC7127C6CB414FE6CEB800390387FF01F6DB512
--FC6D14F86D14E0010314C00100EBFE00EC1FF0273A7CB830>64 D<147F4A7EA2497FA449
--7F14F7A401077F14E3A3010F7FA314C1A2011F7FA490383F80FEA590387F007FA4498049
--133F90B6FCA34881A39038FC001F00038149130FA4000781491307A2D87FFFEB7FFFB56C
--B51280A46C496C130029397DB830>I<007FB512F0B612FE6F7E82826C813A03F8001FF8
--15076F7E1501A26F7EA615015EA24B5A1507ED1FF0ED7FE090B65A5E4BC7FC6F7E16E082
--9039F8000FF8ED03FC6F7E1500167FA3EE3F80A6167F1700A25E4B5A1503ED1FFC007FB6
--FCB75A5E16C05E6C02FCC7FC29387EB730>I<91387F803C903903FFF03E49EBFC7E011F
--13FE49EBFFFE5B9038FFE07F48EB801F3903FE000F484813075B48481303A2484813015B
--123F491300A2127F90C8FC167C16005A5AAC7E7EA2167C6D14FE123FA27F121F6D13016C
--6C14FCA26C6CEB03F86D13076C6CEB0FF03901FF801F6C9038E07FE06DB512C06D14806D
--1400010713FC6D13F09038007FC0273A7CB830>I<003FB512E04814FCB67E6F7E6C816C
--813A03F8007FF0ED1FF8150F6F7E6F7E15016F7EA2EE7F80A2163F17C0161FA4EE0FE0AC
--161F17C0A3163F1780A2167F17005E4B5A15034B5A150F4B5AED7FF0003FB65A485DB75A
--93C7FC6C14FC6C14E02B387FB730>I<007FB7FCB81280A47ED803F8C7123FA8EE1F0093
--C7FCA4157C15FEA490B5FCA6EBF800A4157C92C8FCA5EE07C0EE0FE0A9007FB7FCB8FCA4
--6C16C02B387EB730>I<003FB712804816C0B8FCA27E7ED801FCC7121FA8EE0F8093C7FC
--A5153E157FA490B6FCA69038FC007FA4153E92C8FCAE383FFFF8487FB5FCA27E6C5B2A38
--7EB730>I<02FF13F00103EBC0F8010F13F1013F13FD4913FF90B6FC4813C1EC007F4848
--133F4848131F49130F485A491307121F5B123F491303A2127F90C7FC6F5A92C8FC5A5AA8
--92B5FC4A14805CA26C7F6C6D1400ED03F8A27F003F1407A27F121F6D130F120F7F6C6C13
--1FA2D803FE133F6C6C137FECC1FF6C90B5FC7F6D13FB010F13F30103EBC1F0010090C8FC
--293A7DB830>I<3B3FFF800FFFE0486D4813F0B56C4813F8A26C496C13F06C496C13E0D8
--03F8C7EAFE00B290B6FCA601F8C7FCB3A23B3FFF800FFFE0486D4813F0B56C4813F8A26C
--496C13F06C496C13E02D387FB730>I<007FB6FCB71280A46C1500260007F0C7FCB3B3A8
--007FB6FCB71280A46C1500213879B730>I<49B512F04914F85BA27F6D14F090C7EAFE00
--B3B3123C127EB4FCA24A5A1403EB8007397FF01FF86CB55A5D6C5C00075C000149C7FC38
--003FF025397AB730>I<D83FFF90380FFF80486D4813C0B56C5AA26C497E6C496C1380D8
--03F0903803F8004B5A4B5A151F4B5A5E4BC7FC15FE14014A5A5D4A5A4A5A141F5D4A5A4A
--C8FC5C13F18101F37F13F790B57E14EFECC7F01483EC03F8140101FE7F496C7E5B157F49
--7F82151F82150F826F7EA26F7E1501821500D83FFF903803FFC0486D4813E0B56C5AA26C
--497E6C496C13C02B387FB730>I<383FFFF8487FB57EA26C5B6C5BD801FCC9FCB3B0EE0F
--80EE1FC0A9003FB7FC5AB8FCA27E6C16802A387EB730>I<D83FF8ECFFE0486C4913F048
--6C4913F8A2007F16F06C6C4913E00007160001EF14BFEC800FA39039E7C01F3FA4ECE03F
--01E3133EA2ECF07EA201E1137CA2ECF8FCA201E013F8A214FDEC7DF0A3147FEC3FE0A3EC
--1FC0A2EC070091C7FCADD83FFC903801FFE0486C4913F0B54913F8A26C486D13F06C486D
--13E02D387FB730>I<D83FFC90381FFF80486C4913C0B54913E0A26C6D6C13C06C6E1380
--0003913801F800EBF7C0A3EBF3E0A314F013F1A214F8A213F014FCA2147C147EA2143E14
--3FA2141FA21581A2140F15C1A2140715E1A2140315F1A21401A215F91400A3157DA3153F
--EA3FFF481380B5EAC01FA26CEB800F6C496C5A2B387EB730>I<90383FFFE048B512FC00
--0714FF4815804815C04815E0EBF80001E0133FD87F80EB0FF0A290C71207A44815F84814
--03B3A96C1407A26C15F0A36D130FA26D131F6C6CEB3FE001F813FF90B6FC6C15C06C1580
--6C1500000114FCD8003F13E0253A7BB830>I<007FB512F0B612FE6F7E16E0826C813903
--F8003FED0FFCED03FE15016F7EA2821780163FA6167F17005EA24B5A1503ED0FFCED3FF8
--90B6FC5E5E16804BC7FC15F001F8C9FCB0387FFFC0B57EA46C5B29387EB730>I<90383F
--FFE048B512FC000714FF4815804815C04815E0EBF80001E0133F4848EB1FF049130F90C7
--1207A44815F8481403B3A8147E14FE6CEBFF076C15F0EC7F87A2EC3FC7018013CF9038C0
--1FFFD83FE014E0EBF80F90B6FC6C15C06C15806C1500000114FCD8003F7FEB00016E7EA2
--1680157F16C0153F16E0151F16F0150FED07E025467BB830>I<003FB57E4814F0B612FC
--15FF6C816C812603F8017F9138003FF0151F6F7E15071503821501A515035E1507150F4B
--5A153F4AB45A90B65A5E93C7FC5D8182D9F8007FED3FE0151F150F821507A817F8EEF1FC
--A53A3FFF8003FB4801C0EBFFF8B56C7E17F06C496C13E06C49EB7FC0C9EA1F002E397FB7
--30>I<90390FF803C0D97FFF13E048B512C74814F74814FF5A381FF80F383FE001497E48
--48137F90C7123F5A48141FA2150FA37EED07C06C91C7FC7F7FEA3FF0EA1FFEEBFFF06C13
--FF6C14E0000114F86C80011F13FF01031480D9003F13C014019138007FE0151FED0FF0A2
--ED07F8A2007C140312FEA56C140716F07F6DEB0FE06D131F01F8EB3FC001FF13FF91B512
--80160000FD5CD8FC7F13F8D8F81F5BD878011380253A7BB830>I<003FB712C04816E0B8
--FCA43AFE003F800FA8007CED07C0C791C7FCB3B1011FB5FC4980A46D91C7FC2B387EB730
-->I<3B7FFFC007FFFCB56C4813FEA46C496C13FCD803F8C7EA3F80B3B16D147F00011600
--A36C6C14FE6D13016D5CEC800390393FE00FF890391FF83FF06DB55A6D5C6D5C6D91C7FC
--9038007FFCEC1FF02F3980B730>I<D87FFE90380FFFC0B54913E06E5AA24A7E6C486D13
--C0D807F0903801FC00A26D130300035DA46C6C495AA46C6C495AA46D131F6D5CA3EC803F
--013F5CA46D6C48C7FCA490380FE0FEA401075B14F1A301035BA314FB01015BA314FFA26D
--5BA46E5A6E5A2B397EB730>I<D83FFC903801FFE0486C4913F000FF16F8A2007F16F06C
--486D13E0D81FC09038001FC0000F1680A76D143F00071600A7000390380F803E9039F01F
--C07EEC3FE0A3EC7FF0A2147D0001157CA29039F8FDF8FCA314F8A300005D01F913FCA2EC
--F07CA201FD137DA2017D5CECE03DA3017F133FA2ECC01FA2013F5CA2EC800F6D486C5A2D
--397FB730>I<3A3FFF01FFF84801837F02C77FA202835B6C01015B3A01FC007F806D91C7
--FC00005C6D5BEB7F01EC81FCEB3F8314C3011F5B14E7010F5B14FF6D5BA26D5BA26D5BA2
--6D90C8FCA4497FA2497FA2815B81EB0FE781EB1FC381EB3F8181EB7F0081497F49800001
--143F49800003141F49800007140FD87FFEEB7FFFB590B5128080A25C6C486D130029387D
--B730>I<D87FFF90381FFFC0B56C4813E0A46C496C13C0D803F8903803F8006D1307A26C
--6C495AA26C6C5C151F6D5CEC803F013F5CECC07F011F91C7FCA290380FE0FEA214F10107
--5BA2903803FBF8A201015B14FF6D5BA26E5AA36E5AB1903803FFF8497F497FA26D5B6D5B
--2B387EB730>I<001FB612FC4815FE5AA490C7EA03FCED07F816F0150FED1FE016C0153F
--ED7F80003E1500C85A4A5A5D14034A5A5D140F4A5A5D143F4A5A92C7FC5C495A5C130349
--5A5C130F495A5C133F495A91C8FC5B4848147C4914FE1203485A5B120F485A5B123F485A
--90B6FCB7FCA46C15FC27387CB730>I<007FB5FCB61280A4150048C8FCB3B3B3A5B6FC15
--80A46C140019476DBE30>I<007FB5FCB61280A47EC7123FB3B3B3A5007FB5FCB6FCA46C
--140019477DBE30>93 D<1307EB1FC0EB7FF0497E000313FE000FEBFF80003F14E0D87FFD
--13F039FFF07FF8EBC01FEB800F38FE0003007CEB01F00010EB00401D0E77B730>I<007F
--B612F0A2B712F8A36C15F0A225077B7D30>I<EB3FFC48B57E4814E04880488048809038
--F00FFE9038E001FF806F7E6C48133F6C4880C8121FA491B5FC130F137F48B6FC12075A48
--EBC01F383FFC00EA7FE0138048C7FC5AA46C143FA26C6C137F9038C001FF263FF80FEBFF
--C06CB712E0A2000714F76C14C3C6020013C0D93FF090C7FC2B2A7CA830>97
--D<EA3FFC487E12FFA2127F123F1200AAEC03FE91381FFF80027F13E091B57E90B612FC82
--ECFE079138F001FF4A6C13804A137F4AEB3FC091C7121F4915E0160FA217F01607A8160F
--A217E07F161F6EEB3FC0A26EEB7F806E13FFDAF00313009138FC0FFE91B55A5E495CD97E
--7F13C0D93C1F90C7FC90380003FC2C3980B730>I<ECFFE0010713FC011F7F017F7F90B6
--12804815C048EB807F3907FC003F485A485A49EB1F804848EB0F004990C7FC127F90C9FC
--A25A5AA87E7EA27F003FEC07C06DEB0FE06C7E6D131F6C6C14C0D807FE133F9039FFC0FF
--806C90B5FCC615006D5B011F13F801075B01011380232A7AA830>I<913801FFE04A7F5C
--A28080EC0007AAEB03FE90381FFF874913E790B6FC5A5A481303380FFC00D81FF0133F49
--131F485A150F4848130790C7FCA25AA25AA87E6C140FA27F003F141F6D133F6C7E6D137F
--390FF801FF2607FE07EBFFC06CB712E06C16F06C14F76D01C713E0011F010313C0D907FC
--C8FC2C397DB730>I<49B4FC010713E0011F13F8017F7F90B57E488048018113803A07FC
--007FC04848133FD81FE0EB1FE0150F484814F0491307127F90C7FCED03F85A5AB7FCA516
--F048C9FC7E7EA27F003FEC01F06DEB03F86C7E6C7E6D1307D807FEEB1FF03A03FFC07FE0
--6C90B5FC6C15C0013F14806DEBFE00010713F8010013C0252A7CA830>I<EDFF80020713
--E0021F13F05C4A13F891B5FC491387903803FE079138FC03F0903907F800C04A1300A800
--3FB612C04815E0B7FCA36C15C0260007F0C7FCB3A9003FB512FE4880B71280A26C15006C
--5C25397DB830>I<D903FC13FF90261FFF8713C04913DF90B712E05A5A2607FE07138F90
--3AF801FE07C048486C6CC7FCA2497F001F8149133FA56D137F000F92C7FC6D5BA26C6C48
--5AEBFE0790B55A5D485C15C001DF5BD9C3FCC8FC01C0C9FCA37F7F6CB512F015FF6C15C0
--4815F0488148813A3FE0001FFE0180130148C8127F007E8100FE168048151FA56C153F00
--7FED7F006D5C6C6C495A01F013076CB4EB7FFC6C90B55A6C5D000115C06C6C91C7FC011F
--13FC010113C02B3E7DA730>I<EA3FFC487E12FFA2127F123F1200AAEC01FE91380FFF80
--023F13E091B57E90B67EA29138FE07FCECF8039138E001FE14C0EC8000A291C7FCA25BB3
--A23B3FFFF81FFFF8486D4813FCB500FE14FEA26C01FC14FC6C496C13F82F3880B730>I<
--14E0EB03F8A2497EA36D5AA2EB00E091C8FCA9381FFFF8487F5AA27E7EEA0001B3A9003F
--B612C04815E0B7FCA27E6C15C023397AB830>I<EC01C0EC07F0A2EC0FF8A3EC07F0A2EC
--01C091C7FCA990B512F04814F8A47EEB0003B3B3A5EC07F0A2123C007EEB0FE0B4131FEC
--3FC0147F90B512806C14005C6C5B000F13F0000313C01D4E7CB830>I<EA7FF8487EA412
--7F1200AB0203B512804A14C017E0A217C06E14809139001FE0004B5A4B5A4BC7FC4A5A4A
--5AEC0FF84A5A4A5A4A5A4A5A01FD7F90B57E8114F7ECE3F8ECC1FCEC81FEEC00FF497F49
--6D7E6F7E826F7E15076F7E6F7E3B7FFFF81FFFE0B56C4813F017F8A217F06C496C13E02D
--387FB730>I<387FFFF8B57EA47EEA0001B3B3A8007FB612F0B712F8A46C15F025387BB7
--30>I<02FC137E3B7FC3FF01FF80D8FFEF01877F90B500CF7F15DF92B57E6C010F138726
--07FE07EB03F801FC13FE9039F803FC01A201F013F8A301E013F0B3A23C7FFE0FFF07FF80
--B548018F13C0A46C486C01071380322881A730>I<EC01FE3A3FFC0FFF80267FFE3F13E0
--00FF90B57E90B67E7E6C9038FE07FCC6EBF8039138E001FE14C0EC8000A291C7FCA25BB3
--A23B3FFFF81FFFF8486D4813FCB500FE14FEA26C01FC14FC6C496C13F82F2880A730>I<
--49B4FC010F13E0013F13F8497F90B57E0003ECFF8014013A07FC007FC04848EB3FE0D81F
--E0EB0FF0A24848EB07F8491303007F15FC90C71201A300FEEC00FEA86C14016C15FCA26D
--1303003F15F86D13076D130F6C6CEB1FF06C6CEB3FE06D137F3A07FF01FFC06C90B51280
--6C15006C6C13FC6D5B010F13E0010190C7FC272A7CA830>I<EC03FE3A3FFC1FFF80267F
--FE7F13E000FF90B57E90B612FC6C816CEBFE07C69038F001FF4A6C13804A137F4AEB3FC0
--91C7121F4915E0160FA217F01607A8160FA217E07F161F6EEB3FC0A26EEB7F806E13FFDA
--F00313009138FC0FFE91B55A5E495C6E13C0021F90C7FCEC03FC91C9FCAD383FFFF8487F
--B57EA26C5B6C5B2C3C80A730>I<49B413F8010FEBC1FC013F13F14913FD48B6FC5A4813
--81390FFC007F49131F4848130F491307485A491303127F90C7FC15015A5AA77E7E15037F
--A26C6C1307150F6C6C131F6C6C133F01FC137F3907FF01FF6C90B5FC6C14FD6C14F9013F
--13F1010F13C1903803FE0190C7FCAD92B512F84A14FCA46E14F82E3C7DA730>I<ED07F8
--3A3FFF803FFF486DB51280B512C302CF14C06C13DF6C9038FFFC3FD8001F13E09238801F
--809238000F004A90C7FC5C5C5CA25CA45CAF003FB512FC4880B7FCA26C5C6C5C2A287EA7
--30>I<90381FFC1E48B5129F000714FF5A5A5A387FF007EB800100FEC7FC4880A46C143E
--007F91C7FC13E06CB4FC6C13FC6CEBFF806C14E0000114F86C6C7F01037F9038000FFF02
--001380007C147F00FEEC1FC0A2150F7EA27F151F6DEB3F806D137F9039FC03FF0090B6FC
--5D5D00FC14F0D8F83F13C026780FFEC7FC222A79A830>I<EB0780497E131FA9003FB612
--E04815F0B7FCA36C15E026001FC0C7FCB216F8ED01FCA5ECE003010FEB07F814F09138FC
--1FF06DB512E06D14C016806D14009038007FFCEC1FF026337EB130>I<D83FFCEB3FFC48
--6C497E00FF14FFA2007F147F003F143F00001400B3A41501A2150315076D130F903A7FC0
--7FFFF891B612FC6D15FE7F6D4913FC6D9038F87FF8010001C0C7FC2F2880A630>I<3B3F
--FFC07FFF80486DB512C0B515E0A26C16C06C496C13803B01F80003F000A26D130700005D
--A26D130F017E5CA2017F131F6D5CA2EC803F011F91C7FCA26E5A010F137EA2ECE0FE0107
--5BA214F101035BA3903801FBF0A314FF6D5BA36E5A6E5A2B277EA630>I<3B3FFFC01FFF
--E0486D4813F0B515F8A26C16F06C496C13E0D807E0C7EA3F00A26D5C0003157EA56D14FE
--00015DEC0F80EC1FC0EC3FE0A33A00FC7FF1F8A2147DA2ECFDF9017C5C14F8A3017E13FB
--A290393FF07FE0A3ECE03FA2011F5C90390F800F802D277FA630>I<3A3FFF81FFFC4801
--C37FB580A26C5D6C01815BC648C66CC7FC137FEC80FE90383F81FC90381FC3F8EB0FE3EC
--E7F06DB45A6D5B7F6D5B92C8FC147E147F5C497F81903803F7E0EB07E790380FE3F0ECC1
--F890381F81FC90383F80FE90387F007E017E137F01FE6D7E48486D7E267FFF80B5FCB500
--C1148014E3A214C16C0180140029277DA630>I<3B3FFFC07FFF80486DB512C0B515E0A2
--6C16C06C496C13803B01FC0003F000A2000014076D5C137E150F017F5C7F151FD91F805B
--A214C0010F49C7FCA214E00107137EA2EB03F0157C15FCEB01F85DA2EB00F9ECFDF0147D
--147FA26E5AA36E5AA35DA2143F92C8FCA25C147EA2000F13FE486C5AEA3FC1EBC3F81387
--EB8FF0EBFFE06C5B5C6C90C9FC6C5AEA01F02B3C7EA630>I<001FB612FC4815FE5AA316
--FC90C7EA0FF8ED1FF0ED3FE0ED7FC0EDFF80003E491300C7485A4A5A4A5A4A5A4A5A4A5A
--4A5A4990C7FC495A495A495A495A495A495A4948133E4890C7127F485A485A485A485A48
--5A48B7FCB8FCA46C15FE28277DA630>I<ED3FF0913803FFF8140F5C147F16F09138FFF0
--0092C7FC495A5CB3A21303495A133F383FFFF0B55A5C91C8FC14C080003F7F38003FF813
--076D7E1301B3A2806D7E15F091387FFFF016F8141F8014039138003FF025477BBE30>I<
--127CA212FEB3B3B3AD127CA207476CBE30>I<EA7FE0EAFFFE6D7E8014F07EC66C7E1307
--6D7E1301B3A2806D7E15E091387FFFE06E13F8801407141F5C4A13E09138FFE00092C7FC
--495A5CB3A21303495A137F387FFFF0B5FC14C05C49C8FCEA7FE025477BBE30>I<017C13
--3848B4137C48EB80FE4813C14813C348EBEFFC397FEFFFF0D8FF8713E0010713C0486C13
--80D87C0113003838007C1F0C78B730>I E
+-F8D8FF3F13FE48B6FCB7128016C09039FE007FE001F8EB1FF001E0130F49EB07F849EB03
+-FCA290C7120116FE1500A37EA46C7E15016D14FC121F6D1303000FEC07F86D130F6C6CEB
+-1FF06DEB3FE03A03FF81FFC06C90B512806C15006D5B011F13F8010713E001011380273A
+-7CB830>I<127CB712FC16FEA416FC48C7EA0FF816F0ED1FE0007CEC3FC0C8EA7F80EDFF
+-00A24A5A4A5A5D14075D140F5D4A5AA24A5AA24AC7FCA25C5C13015CA213035CA213075C
+-A4495AA6131F5CA96D5A6DC8FC273A7CB830>I<49B4FC011F13F0017F13FC90B57E0003
+-ECFF804815C048010113E03A1FF8003FF049131FD83FC0EB07F8A24848EB03FC90C71201
+-A56D1303003F15F86D13076C6CEB0FF06C6CEB1FE0D807FCEB7FC03A03FF83FF806C90B5
+-12006C6C13FC011F13F0497F90B512FE48802607FE0013C0D80FF8EB3FE0D81FE0EB0FF0
+-4848EB07F8491303007F15FC90C712014815FE481400A66C14016C15FC6D1303003F15F8
+-6D1307D81FF0EB1FF06D133F3A0FFF01FFE06C90B512C06C1580C6ECFE006D5B011F13F0
+-010190C7FC273A7CB830>I<49B4FC010F13E0013F13F890B57E4880488048010113803A
+-0FFC007FC0D81FF0EB3FE04848131F49EB0FF048481307A290C7EA03F85A4815FC1501A4
+-16FEA37E7E6D1303A26C6C13076C6C130F6D133FD80FFC13FF6CB6FC7E6C14FE6C14F901
+-3FEBE1FC010F138190380060011400ED03F8A2150716F0150F000F15E0486C131F486CEB
+-3FC0157FEDFF804A1300EC07FE391FF01FFC90B55A6C5C6C5C6C1480C649C7FCEB3FF027
+-3A7CB830>I<120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F00C7FCAF120FEA3F
+-C0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C276EA630>I<EA03C0EA0FF0EA1FF8A2
+-EA3FFCA4EA1FF8A2EA0FF0EA03C0C7FCAFEA03C0EA0FF0121F13F8123F13FCA3121FA212
+-0F12031200120113F8120313F01207EA1FE0123FEA7FC0EAFF80EA7F00127E12380E3470
+-A630>I<16F01503ED07F8151F157FEDFFF014034A13C0021F138091383FFE00ECFFF849
+-5B010713C0495BD93FFEC7FC495A3801FFF0485B000F13804890C8FCEA7FFC5BEAFFE05B
+-7FEA7FF87FEA1FFF6C7F000313E06C7F38007FFC6D7E90380FFF806D7F010113F06D7FEC
+-3FFE91381FFF80020713C06E13F01400ED7FF8151F1507ED03F01500252F7BB230>I<00
+-7FB7FCA2B81280A36C16006C5DCBFCA7003FB612FE4881B81280A36C1600A229157DA530
+->I<1278127EB4FC13C07FEA7FF813FEEA1FFF6C13C000037F6C13F86C6C7EEB1FFF6D7F
+-010313E06D7F9038007FFC6E7E91380FFF806E13C0020113F080ED3FF8151F153FEDFFF0
+-5C020713C04A138091383FFE004A5A903801FFF0495B010F13804990C7FCEB7FFC48485A
+-4813E0000F5B4890C8FCEA7FFE13F8EAFFE05B90C9FC127E1278252F7BB230>I<EC1FE0
+-ECFFF8010313FE010F7F4914804914C090397FF03FE09038FF800F4890380007F0D803FC
+-13033A07F801FBF89038F007FF380FE01F4A13FCEA1FC0495A003FEBFF0F903800FE0790
+-3901FC03FE007FEBF801EA7E03ECF000A2EAFE0700FC49137EAA00FE6D13FED87E0314FC
+-A2ECF801D87F0114F8003FEBFC03903900FE07F0903880FF0F001F90387FFFE06D6C13C0
+-EA0FE06E13803A07F007FE009038F801F86C6CC7127C6CB414FE6CEB800390387FF01F6D
+-B512FC6D14F86D14E0010314C00100EBFE00EC1FF0273A7CB830>64
+-D<147F4A7EA2497FA4497F14F7A401077F14E3A3010F7FA314C1A2011F7FA490383F80FE
+-A590387F007FA4498049133F90B6FCA34881A39038FC001F00038149130FA40007814913
+-07A2D87FFFEB7FFFB56CB51280A46C496C130029397DB830>I<007FB512F0B612FE6F7E
+-82826C813A03F8001FF815076F7E1501A26F7EA615015EA24B5A1507ED1FF0ED7FE090B6
+-5A5E4BC7FC6F7E16E0829039F8000FF8ED03FC6F7E1500167FA3EE3F80A6167F1700A25E
+-4B5A1503ED1FFC007FB6FCB75A5E16C05E6C02FCC7FC29387EB730>I<91387F803C9039
+-03FFF03E49EBFC7E011F13FE49EBFFFE5B9038FFE07F48EB801F3903FE000F484813075B
+-48481303A2484813015B123F491300A2127F90C8FC167C16005A5AAC7E7EA2167C6D14FE
+-123FA27F121F6D13016C6C14FCA26C6CEB03F86D13076C6CEB0FF03901FF801F6C9038E0
+-7FE06DB512C06D14806D1400010713FC6D13F09038007FC0273A7CB830>I<003FB512E0
+-4814FCB67E6F7E6C816C813A03F8007FF0ED1FF8150F6F7E6F7E15016F7EA2EE7F80A216
+-3F17C0161FA4EE0FE0AC161F17C0A3163F1780A2167F17005E4B5A15034B5A150F4B5AED
+-7FF0003FB65A485DB75A93C7FC6C14FC6C14E02B387FB730>I<007FB7FCB81280A47ED8
+-03F8C7123FA8EE1F0093C7FCA4157C15FEA490B5FCA6EBF800A4157C92C8FCA5EE07C0EE
+-0FE0A9007FB7FCB8FCA46C16C02B387EB730>I<003FB712804816C0B8FCA27E7ED801FC
+-C7121FA8EE0F8093C7FCA5153E157FA490B6FCA69038FC007FA4153E92C8FCAE383FFFF8
+-487FB5FCA27E6C5B2A387EB730>I<02FF13F00103EBC0F8010F13F1013F13FD4913FF90
+-B6FC4813C1EC007F4848133F4848131F49130F485A491307121F5B123F491303A2127F90
+-C7FC6F5A92C8FC5A5AA892B5FC4A14805CA26C7F6C6D1400ED03F8A27F003F1407A27F12
+-1F6D130F120F7F6C6C131FA2D803FE133F6C6C137FECC1FF6C90B5FC7F6D13FB010F13F3
+-0103EBC1F0010090C8FC293A7DB830>I<3B3FFF800FFFE0486D4813F0B56C4813F8A26C
+-496C13F06C496C13E0D803F8C7EAFE00B290B6FCA601F8C7FCB3A23B3FFF800FFFE0486D
+-4813F0B56C4813F8A26C496C13F06C496C13E02D387FB730>I<007FB6FCB71280A46C15
+-00260007F0C7FCB3B3A8007FB6FCB71280A46C1500213879B730>I<49B512F04914F85B
+-A27F6D14F090C7EAFE00B3B3123C127EB4FCA24A5A1403EB8007397FF01FF86CB55A5D6C
+-5C00075C000149C7FC38003FF025397AB730>I<D83FFF90380FFF80486D4813C0B56C5A
+-A26C497E6C496C1380D803F0903803F8004B5A4B5A151F4B5A5E4BC7FC15FE14014A5A5D
+-4A5A4A5A141F5D4A5A4AC8FC5C13F18101F37F13F790B57E14EFECC7F01483EC03F81401
+-01FE7F496C7E5B157F497F82151F82150F826F7EA26F7E1501821500D83FFF903803FFC0
+-486D4813E0B56C5AA26C497E6C496C13C02B387FB730>I<383FFFF8487FB57EA26C5B6C
+-5BD801FCC9FCB3B0EE0F80EE1FC0A9003FB7FC5AB8FCA27E6C16802A387EB730>I<D83F
+-F8ECFFE0486C4913F0486C4913F8A2007F16F06C6C4913E00007160001EF14BFEC800FA3
+-9039E7C01F3FA4ECE03F01E3133EA2ECF07EA201E1137CA2ECF8FCA201E013F8A214FDEC
+-7DF0A3147FEC3FE0A3EC1FC0A2EC070091C7FCADD83FFC903801FFE0486C4913F0B54913
+-F8A26C486D13F06C486D13E02D387FB730>I<D83FFC90381FFF80486C4913C0B54913E0
+-A26C6D6C13C06C6E13800003913801F800EBF7C0A3EBF3E0A314F013F1A214F8A213F014
+-FCA2147C147EA2143E143FA2141FA21581A2140F15C1A2140715E1A2140315F1A21401A2
+-15F91400A3157DA3153FEA3FFF481380B5EAC01FA26CEB800F6C496C5A2B387EB730>I<
+-90383FFFE048B512FC000714FF4815804815C04815E0EBF80001E0133FD87F80EB0FF0A2
+-90C71207A44815F8481403B3A96C1407A26C15F0A36D130FA26D131F6C6CEB3FE001F813
+-FF90B6FC6C15C06C15806C1500000114FCD8003F13E0253A7BB830>I<007FB512F0B612
+-FE6F7E16E0826C813903F8003FED0FFCED03FE15016F7EA2821780163FA6167F17005EA2
+-4B5A1503ED0FFCED3FF890B6FC5E5E16804BC7FC15F001F8C9FCB0387FFFC0B57EA46C5B
+-29387EB730>I<90383FFFE048B512FC000714FF4815804815C04815E0EBF80001E0133F
+-4848EB1FF049130F90C71207A44815F8481403B3A8147E14FE6CEBFF076C15F0EC7F87A2
+-EC3FC7018013CF9038C01FFFD83FE014E0EBF80F90B6FC6C15C06C15806C1500000114FC
+-D8003F7FEB00016E7EA21680157F16C0153F16E0151F16F0150FED07E025467BB830>I<
+-003FB57E4814F0B612FC15FF6C816C812603F8017F9138003FF0151F6F7E150715038215
+-01A515035E1507150F4B5A153F4AB45A90B65A5E93C7FC5D8182D9F8007FED3FE0151F15
+-0F821507A817F8EEF1FCA53A3FFF8003FB4801C0EBFFF8B56C7E17F06C496C13E06C49EB
+-7FC0C9EA1F002E397FB730>I<90390FF803C0D97FFF13E048B512C74814F74814FF5A38
+-1FF80F383FE001497E4848137F90C7123F5A48141FA2150FA37EED07C06C91C7FC7F7FEA
+-3FF0EA1FFEEBFFF06C13FF6C14E0000114F86C80011F13FF01031480D9003F13C0140191
+-38007FE0151FED0FF0A2ED07F8A2007C140312FEA56C140716F07F6DEB0FE06D131F01F8
+-EB3FC001FF13FF91B51280160000FD5CD8FC7F13F8D8F81F5BD878011380253A7BB830>
+-I<003FB712C04816E0B8FCA43AFE003F800FA8007CED07C0C791C7FCB3B1011FB5FC4980
+-A46D91C7FC2B387EB730>I<3B7FFFC007FFFCB56C4813FEA46C496C13FCD803F8C7EA3F
+-80B3B16D147F00011600A36C6C14FE6D13016D5CEC800390393FE00FF890391FF83FF06D
+-B55A6D5C6D5C6D91C7FC9038007FFCEC1FF02F3980B730>I<D87FFE90380FFFC0B54913
+-E06E5AA24A7E6C486D13C0D807F0903801FC00A26D130300035DA46C6C495AA46C6C495A
+-A46D131F6D5CA3EC803F013F5CA46D6C48C7FCA490380FE0FEA401075B14F1A301035BA3
+-14FB01015BA314FFA26D5BA46E5A6E5A2B397EB730>I<D83FFC903801FFE0486C4913F0
+-00FF16F8A2007F16F06C486D13E0D81FC09038001FC0000F1680A76D143F00071600A700
+-0390380F803E9039F01FC07EEC3FE0A3EC7FF0A2147D0001157CA29039F8FDF8FCA314F8
+-A300005D01F913FCA2ECF07CA201FD137DA2017D5CECE03DA3017F133FA2ECC01FA2013F
+-5CA2EC800F6D486C5A2D397FB730>I<3A3FFF01FFF84801837F02C77FA202835B6C0101
+-5B3A01FC007F806D91C7FC00005C6D5BEB7F01EC81FCEB3F8314C3011F5B14E7010F5B14
+-FF6D5BA26D5BA26D5BA26D90C8FCA4497FA2497FA2815B81EB0FE781EB1FC381EB3F8181
+-EB7F0081497F49800001143F49800003141F49800007140FD87FFEEB7FFFB590B5128080
+-A25C6C486D130029387DB730>I<D87FFF90381FFFC0B56C4813E0A46C496C13C0D803F8
+-903803F8006D1307A26C6C495AA26C6C5C151F6D5CEC803F013F5CECC07F011F91C7FCA2
+-90380FE0FEA214F101075BA2903803FBF8A201015B14FF6D5BA26E5AA36E5AB1903803FF
+-F8497F497FA26D5B6D5B2B387EB730>I<001FB612FC4815FE5AA490C7EA03FCED07F816
+-F0150FED1FE016C0153FED7F80003E1500C85A4A5A5D14034A5A5D140F4A5A5D143F4A5A
+-92C7FC5C495A5C1303495A5C130F495A5C133F495A91C8FC5B4848147C4914FE1203485A
+-5B120F485A5B123F485A90B6FCB7FCA46C15FC27387CB730>I<007FB5FCB61280A41500
+-48C8FCB3B3B3A5B6FC1580A46C140019476DBE30>I<007FB5FCB61280A47EC7123FB3B3
+-B3A5007FB5FCB6FCA46C140019477DBE30>93 D<1307EB1FC0EB7FF0497E000313FE000F
+-EBFF80003F14E0D87FFD13F039FFF07FF8EBC01FEB800F38FE0003007CEB01F00010EB00
+-401D0E77B730>I<007FB612F0A2B712F8A36C15F0A225077B7D30>I<EB7FF80003B5FC48
+-14C04880488048809038E01FFC9038C003FE14016E7E6C487F6CC77FC8123FA491B5FC13
+-0F137F48B6FC12075A48EB803F383FF800EA7FE0138048C7FC5AA4157F7E6C6C13FFEBC0
+-03263FF01FEBFF8090B712C07E6C14EF000314876CD9FE01138026003FE0C8FC2A2A7BA8
+-30>97 D<EA3FFC487E12FFA2127F123F1200AAEC03FE91381FFF80027F13E091B57E90B6
+-12FC82ECFE079138F001FF4A6C13804A137F4AEB3FC091C7121F17E049140FA217F01607
+-A8160FA217E07F161F6EEB3FC0A26EEB7F806E13FFDAF00313009138FC0FFE91B55A5E49
+-5CD97E7F13C0D93C1F90C7FC90380003FC2C3980B730>I<ECFFE0010713FC011F7F017F
+-7F90B612804815C048EB807F3907FC003F485A485A49EB1F804848EB0F004990C7FC127F
+-90C9FCA25A5AA87E7EA27F003FEC07C06DEB0FE06C7E6D131F6C6C14C0D807FE133F9039
+-FFC0FF806C90B5FCC615006D5B011F13F801075B01011380232A7AA830>I<913801FFE0
+-4A7F5CA28080EC0007AAEB03FE90381FFF874913E790B6FC5A5A481303380FFC00D81FF0
+-133F49131F485A150F4848130790C7FCA25AA25AA87E6C140FA27F003F141F6D133F6C7E
+-6D137F390FF801FF2607FE07EBFFC06CB712E06C16F06C14F76D01C713E0011F010313C0
+-D907FCC8FC2C397DB730>I<49B4FC010713E0011F13F8017F7F90B57E48804801811380
+-3A07FC007FC04848133FD81FE0EB1FE0150F484814F0491307127F90C7FCED03F85A5AB7
+-FCA516F048C9FC7E7EA27F003FEC01F06DEB03F86C7E6C7E6D1307D807FEEB1FF03A03FF
+-C07FE06C90B5FC6C15C0013F14806DEBFE00010713F8010013C0252A7CA830>I<EDFF80
+-020713E0021F13F05C4A13F891B5FC491387903803FE079138FC03F0903907F800C04A13
+-00A8003FB612C04815E0B7FCA36C15C0260007F0C7FCB3A9003FB512FE4880B71280A26C
+-15006C5C25397DB830>I<D903FC13FF90261FFF8713C04913DF90B712E05A5A2607FE07
+-138F903AF801FE07C048486C6CC7FCA2497F001F8149133FA56D137F000F92C7FC6D5BA2
+-6C6C485AEBFE0790B55A5D485C15C001DF5BD9C3FCC8FC01C0C9FCA37F7F6CB512F015FF
+-6C15C04815F0488148813A3FE0001FFE0180130148C8127F007E8100FE168048151FA56C
+-153F007FED7F006D5C6C6C495A01F013076CB4EB7FFC6C90B55A6C5D000115C06C6C91C7
+-FC011F13FC010113C02B3E7DA730>I<EA3FFC487E12FFA2127F123F1200AAEC01FE9138
+-0FFF80023F13E091B57E90B67EA29138FE07FCECF8039138E001FE14C0EC8000A291C7FC
+-A25BB3A23B3FFFF81FFFF8486D4813FCB500FE14FEA26C01FC14FC6C496C13F82F3880B7
+-30>I<14E0EB03F8A2497EA36D5AA2EB00E091C8FCA9381FFFF8487F5AA27E7EEA0001B3
+-A9003FB612C04815E0B7FCA27E6C15C023397AB830>I<EC01C0EC07F0A2EC0FF8A3EC07
+-F0A2EC01C091C7FCA990B512F04814F8A47EEB0003B3B3A5EC07F0A2123C007EEB0FE0B4
+-131FEC3FC0147F90B512806C14005C6C5B000F13F0000313C01D4E7CB830>I<EA7FF848
+-7EA4127F1200AB0203B512804A14C017E0A217C06E14809139001FE0004B5A4B5A4BC7FC
+-4A5A4A5AEC0FF84A5A4A5A4A5A4A5A01FD7F90B57E8114F7ECE3F8ECC1FCEC81FEEC00FF
+-497F496D7E6F7E826F7E15076F7E6F7E3B7FFFF81FFFE0B56C4813F017F8A217F06C496C
+-13E02D387FB730>I<387FFFF8B57EA47EEA0001B3B3A8007FB612F0B712F8A46C15F025
+-387BB730>I<02FC137E3B7FC3FF01FF80D8FFEF01877F90B500CF7F15DF92B57E6C010F
+-13872607FE07EB03F801FC13FE9039F803FC01A201F013F8A301E013F0B3A23C7FFE0FFF
+-07FF80B548018F13C0A46C486C01071380322881A730>I<EC01FE3A3FFC0FFF80267FFE
+-3F13E000FF90B57E90B67E7E6C9038FE07FCC6EBF8039138E001FE14C0EC8000A291C7FC
+-A25BB3A23B3FFFF81FFFF8486D4813FCB500FE14FEA26C01FC14FC6C496C13F82F2880A7
+-30>I<49B4FC010F13E0013F13F8497F90B57E0003ECFF8014013A07FC007FC04848EB3F
+-E0D81FE0EB0FF0A24848EB07F8491303007F15FC90C71201A300FEEC00FEA86C14016C15
+-FCA26D1303003F15F86D13076D130F6C6CEB1FF06C6CEB3FE06D137F3A07FF01FFC06C90
+-B512806C15006C6C13FC6D5B010F13E0010190C7FC272A7CA830>I<EC03FE3A3FFC1FFF
+-80267FFE7F13E000FF90B57E90B612FC6C816CEBFE07C69038F001FF4A6C13804A137F4A
+-EB3FC091C7121F17E049140FA217F01607A8160FA217E07F161F6EEB3FC0A26EEB7F806E
+-13FFDAF00313009138FC0FFE91B55A5E495C6E13C0021F90C7FCEC03FC91C9FCAD383FFF
+-F8487FB57EA26C5B6C5B2C3C80A730>I<49B413F8010FEBC1FC013F13F14913FD48B6FC
+-5A481381390FFC007F49131F4848130F491307485A491303127F90C7FC15015A5AA77E7E
+-15037FA26C6C1307150F6C6C131F6C6C133F01FC137F3907FF01FF6C90B5FC6C14FD6C14
+-F9013F13F1010F13C1903803FE0190C7FCAD92B512F84A14FCA46E14F82E3C7DA730>I<
+-ED07F83A3FFF803FFF486DB51280B512C302CF14C06C13DF6C9038FFFC3FD8001F13E092
+-38801F809238000F004A90C7FC5C5C5CA25CA45CAF003FB512FC4880B7FCA26C5C6C5C2A
+-287EA730>I<90381FFC1E48B5129F000714FF5A5A5A387FF007EB800100FEC7FC4880A4
+-6C143E007F91C7FC13E06CB4FC6C13FC6CEBFF806C14E0000114F86C6C7F01037F903800
+-0FFF02001380007C147F00FEEC1FC0A2150F7EA27F151F6DEB3F806D137F9039FC03FF00
+-90B6FC5D5D00FC14F0D8F83F13C026780FFEC7FC222A79A830>I<EB0780497E131FA900
+-3FB612E04815F0B7FCA36C15E026001FC0C7FCB216F8ED01FCA5ECE003010FEB07F814F0
+-9138FC1FF06DB512E06D14C016806D14009038007FFCEC1FF026337EB130>I<D83FFCEB
+-3FFC486C497E00FF14FFA2007F147F003F143F00001400B3A41501A2150315076D130F90
+-3A7FC07FFFF891B612FC6D15FE7F6D4913FC6D9038F87FF8010001C0C7FC2F2880A630>
+-I<3B3FFFC07FFF80486DB512C0B515E0A26C16C06C496C13803B01F80003F000A26D1307
+-00005DA26D130F017E5CA2017F131F6D5CA2EC803F011F91C7FCA26E5A010F137EA2ECE0
+-FE01075BA214F101035BA3903801FBF0A314FF6D5BA36E5A6E5A2B277EA630>I<3B3FFF
+-C01FFFE0486D4813F0B515F8A26C16F06C496C13E0D807E0C7EA3F00A26D5C0003157EA5
+-6D14FE00015DEC0F80EC1FC0EC3FE0A33A00FC7FF1F8A2147DA2ECFDF9017C5C14F8A301
+-7E13FBA290393FF07FE0A3ECE03FA2011F5C90390F800F802D277FA630>I<3A3FFF81FF
+-FC4801C37FB580A26C5D6C01815BC648C66CC7FC137FEC80FE90383F81FC90381FC3F8EB
+-0FE3ECE7F06DB45A6D5B7F6D5B92C8FC147E147F5C497F81903803F7E0EB07E790380FE3
+-F0ECC1F890381F81FC90383F80FE90387F007E017E137F01FE6D7E48486D7E267FFF80B5
+-FCB500C1148014E3A214C16C0180140029277DA630>I<3B3FFFC07FFF80486DB512C0B5
+-15E0A26C16C06C496C13803B01FC0003F000A2000014076D5C137E150F017F5C7F151FD9
+-1F805BA214C0010F49C7FCA214E00107137EA2EB03F0157C15FCEB01F85DA2EB00F9ECFD
+-F0147D147FA26E5AA36E5AA35DA2143F92C8FCA25C147EA2000F13FE486C5AEA3FC1EBC3
+-F81387EB8FF0EBFFE06C5B5C6C90C9FC6C5AEA01F02B3C7EA630>I<001FB612FC4815FE
+-5AA316FC90C7EA0FF8ED1FF0ED3FE0ED7FC0EDFF80003E491300C7485A4A5A4A5A4A5A4A
+-5A4A5A4A5A4990C7FC495A495A495A495A495A495A4948133E4890C7127F485A485A485A
+-485A485A48B7FCB8FCA46C15FE28277DA630>I<ED3FF0913803FFF8140F5C147F16F091
+-38FFF00092C7FC495A5CB3A21303495A133F383FFFF0B55A5C91C8FC14C080003F7F3800
+-3FF813076D7E1301B3A2806D7E15F091387FFFF016F8141F8014039138003FF025477BBE
+-30>I<127CA212FEB3B3B3AD127CA207476CBE30>I<EA7FE0EAFFFE6D7E8014F07EC66C7E
+-13076D7E1301B3A2806D7E15E091387FFFE06E13F8801407141F5C4A13E09138FFE00092
+-C7FC495A5CB3A21303495A137F387FFFF0B5FC14C05C49C8FCEA7FE025477BBE30>I<01
+-7C133848B4137C48EB80FE4813C14813C348EBEFFC397FEFFFF0D8FF8713E0010713C048
+-6C1380D87C0113003838007C1F0C78B730>I E
+-%EndDVIPSBitmapFont
+-%DVIPSBitmapFont: Fj cmb10 10.95 87
+-/Fj 87 125 df<DA07FFEB0FFC027F9038E07FFF49B500F3B51280010791B612C090261F
+-FE039038FC7FE0D93FF002F013F0494848EBE0FF4948485B02805C481300A24848923800
+-7FE06FEC3FC0F01F806F91C7FC81A9B97EA50003D900010180C7FCB3ACB5D8F83FEBFF80
+-A53C407FBF35>11 D<EC07FF027F13C049B512F001078090391FFE03FC90393FF001FE90
+-387FE0034948487E4A5A481300A2485AA36F5A6F5AED00F093C7FCA616FFB8FCA50003EB
+-000781B3ABB5D8F87F13FCA52E407EBF33>I<EC07FF027F13FF49B6FC130790381FFE07
+-90383FF00FEB7FE0EBFFC04A5A48497EA2485A8181ABB8FCA50003EB0003B3ACB500FCB5
+-12FCA52E407EBF33>I<913B07FF8003FF80027FD9E03F13E049B56CB512F8010702FB80
+-011F0103B5EA01FE90263FF8019038F800FF90267FE003495A4948484948138002804A5A
+-48010014805D481600497FA26F6E13006F6E5AF0007896C7FCA6F17F80BBFCA50003D900
+-01EB800384B3ABB5D8F83FD9FC3F13FEA547407EBF4C>I<EA0FC0EA1FE0EA3FF0EA7FF8
+-EAFFFCA7EA7FF8A8EA3FF0A7EA1FE0A8EA0FC0A71207C7FCA8EA0FC0EA1FE0EA3FF0EA7F
+-F8EAFFFCA6EA7FF8EA3FF0EA1FE0EA0FC00E4079BF1C>33 D<D80FC0137E486C13FF486C
+-481380486C4813C0486C4813E0A301FE14F0A3007F7F003F7F001F7FD80FDE137ED8001E
+-1300A2013E1301013C14E0A2017C1303A2017814C001F813074914800001140F4848EB1F
+-004848133EA2D81F8013FC90C75A001E5C000C146024207DBE31>I<D93F801507D9FFE0
+-ED1F8000037F486D153F260FF1FC157F261FF07F4BC7FC01E06DEB03FE003FD93FE0130F
+-01C001FCEB3FFC007F6DB65AA2031F5C00FFD90F83EBEFE0923880000F4D5A60173F4DC8
+-FCA217FE4C5AA24C5A4C5AA2007F4948485A4C5AA2003F49495AD9E03E91C9FC001F017E
+-5BD9F07C13FE380FF1FC6CB448485A6C49485AC613E090273F8007F0EB3F8090C74848EB
+-FFE005037F4B48487F923A3F800FF1FC94381FF07CDB7F00EBE07E037E013F133E03FEEC
+-C03F4A48017F7FA24A5A4A4801FFEB0F80A24A5A4A5AA24A5A4AC7FCA214FE5C1301495A
+-A24948027FEB1F00495AA24948023F5B4948EDE03E051F137E49C8EBF07C017E92380FF1
+-FC01FE6FB45A496F5B017C03005B0138EE3F8041497BC34C>37 D<EC0FE0EC3FF8ECFFFC
+-5B903803FC3E49487EEB0FF0131F6F7EEB3FE0A3137FA3151F93C9FCA2153E14F05D5D14
+-F15D90263FFBE090387FFFFCECFFC05D92C7FC6D5A4A913800FC006E5D17016D6C4A5A60
+-6F1307495E017F6D130F90B56C495A4894C7FCD803F96D5BD807F86D133E000F167E4848
+-6C6C5B003F6E5B91383FFF01007F6D5CEE83E000FF6D13C76EEBEFC06E5C16FF6E91C8FC
+-6E5B037F15F86D6D7E007F6E7F6FEBC0016C6C013F9038E003F092B5EAF007261FFE0791
+-38FC1FE06CB5D8FC7FB512C06CDAF81F14800001DAE00714006C6CD980005BD91FF8C7EA
+-1FF03E417CBF47>I<EA0FC0EA1FE0EA3FF0EA7FF8EAFFFCA313FEA3127F123F121FEA0F
+-DEEA001EA2133E133CA2137CA2137813F813F01201EA03E0EA07C0A2EA0F80EA1F00121E
+-120C0F207BBE19>I<147814F81301EB03F0EB07E0EB0FC0A2EB1F80133FEB7F00A213FE
+-A2485A1203A25B1207A2485AA3121F5BA2123FA4485AA612FFB3A2127FA66C7EA4121FA2
+-7F120FA36C7EA212037FA212016C7EA2137FA2EB3F80131FEB0FC0A2EB07E0EB03F0EB01
+-F813001478155A78C323>I<127012F87E127E7E6C7EA26C7E7F6C7EA26C7EA26C7E7FA2
+-12007FA2EB7F80A314C0133FA214E0A4EB1FF0A614F8B3A214F0A6EB3FE0A414C0A2137F
+-1480A3EBFF00A25B1201A25B485AA2485AA2485A5B485AA248C7FC127E5A5A1270155A7B
+-C323>I<EB01E0EB07F8A2497E13075CA3001E141E007FEC3F80903883F07FD8FFC3EBFF
+-C0EBE3F1EBF3F3267FFBF713806D5A001FB5EAFE00000314F0C66C1380D91FFEC7FCA290
+-387FFF800003B512F0001F14FE3A7FFDEFFF80497E26FFF3F313C0EBE3F1EBC3F0D87F83
+-EB7F80903807F83F001EEC1E00000091C7FCA380130F6D5AA2EB01E022287BC32D>I<EA
+-0FC0EA1FE0EA3FF0EA7FF8EAFFFCA313FEA3127F123F121FEA0FDEEA001EA2133E133CA2
+-137CA2137813F813F01201EA03E0EA07C0A2EA0F80EA1F00121E120C0F207B8D19>44
+-D<B512FEA917097F981E>I<EA0FC0EA1FE0EA3FF0EA7FF8EAFFFCA6EA7FF8EA3FF0EA1F
+-E0EA0FC00E0E7B8D19>I<ED0380ED07C0150FA2151F1680A2153F1600A25D157EA215FE
+-5DA214015DA214035DA214075DA2140F5DA2141F5DA2143F92C7FCA25C147EA214FE5CA2
+-13015CA213035CA313075CA2130F5CA2131F5CA2133F91C8FCA25B137EA213FE5BA21201
+-5BA212035BA212075BA2120F5BA2121F5BA2123F90C9FCA25A127EA212FE5AA25A127822
+-5B7BC32D>I<EB01FE90380FFFC0013F13F090B512FC48EB87FE3903FE01FF48486C1380
+-A24848EB7FC0001F15E049133FA2003F15F0A3007F15F8A500FF15FCB3A3007F15F8A600
+-3F15F0A36C6CEB7FE0A2000F15C06D13FF000715806C6C4813003901FF87FE6CEBFFFC01
+-3F13F06D5BD901FEC7FC263D7DBB2D>I<143C147CEB01FC1307131FEA03FFB5FCA4EAFC
+-1F1200B3B3A8007FB6FCA5203C7ABB2D>I<EB0FFC90387FFF8048B512E04814F8488039
+-0FF07FFE391F801FFF48486C1380387FC00701E014C0486C6C13E013F88016F0A4EA7FF0
+-EA3FE0EA1FC0EA0700C7FC16E05CA216C04A1380A24A13005D4A5A5D4A5A5D4A5A4A5A49
+-90C7FC5CEB03F8903907F001F0EB0FE014C090391F8003E0EB3F00137E5B491307485A48
+-B6FC4815C05AA25A5A5AB7FC1680A4243C7CBB2D>I<EB0FFC90383FFFC090B512F04880
+-3903F83FFC3907E00FFED80FC07F486C6C138013F801FC14C0123F13FEA5EA1FFC1680EA
+-0FF8D803E01400C75A5D5D4A5A5DEC7FE090381FFFC092C7FC15C015F09038003FF8EC0F
+-FE816E1380A216C06E13E0A316F0EA0FC0EA1FE0EA3FF0EA7FF8EAFFFCA416E0A2495A00
+-7F15C013F0263FC00F13801600391FF83FFE6CB55A6C5C000114E06C6C1380D90FFCC7FC
+-243D7CBB2D>I<ED1F80A2153F157FA215FF5C5CA25C5CA25C5CA25C91B5FC14FBEB01F3
+-1303EB07E314C3EB0F83131F1403133E137E137C13F8120113F0EA03E01207EA0FC01380
+-EA1F005A123E5A12FCB8FCA5C700071380AA010FB6FCA5283C7EBB2D>I<000E1407D80F
+-80133F9038F801FF90B6FC5D5DA25D5D5D158092C7FC14FC14F00180C8FCA9EB87FE9038
+-9FFFC090B512F0819038FC0FFC9038F007FE9038C003FF0180148016C0497EC714E0A416
+-F0A21207EA1FC0EA3FE0EA7FF012FF13F8A316E013F0A26C484813C01380D87E0014806C
+-491300391FC00FFE390FF03FFC6CB55A6C5C6C14C06C91C7FCEB1FF8243D7CBB2D>I<EC
+-3FE0903801FFF801077F011F7F90383FF07F90397FC01F809038FF807F48EB00FF484913
+-C048485AA2EA0FFCA2121FA2003F6D1380496C1300157E007F91C7FCA314309038F9FF80
+-D8FFFB13E090B512F881EC07FE496C7E496C1380A216C0A201F814E0A316F0A6127FA512
+-3F16E0A2121F16C0EA0FFC168000075B01FE14003903FF0FFE6CEBFFFC6C5C013F5B6D13
+-C0D903FEC7FC243D7CBB2D>I<121F7F13F090B612FCA45A16F816F016E0A216C016805A
+-007EC7EA3F00157E007C147C15FC4A5A4A5A485C14074A5AC75B141F4AC7FCA25C14FEA2
+-1301A2495AA31307A2130FA25C131FA3133FA6137FAA6D5A6D5A6D5A263F7BBD2D>I<EB
+-07FE90381FFFC0017F13F090B57E3901FE0FFC3903F803FE48486C7E000F6D1380A2485A
+-ED7FC0123FA37FA27F7F6DEBFF806D7E6E13006C13F1ECFBFE6CEBFFFC5D6C14E0A26C14
+-F86C806C80814815805AD807FB14C0EA0FF048486C13E0003F131F497E007F010313F080
+-00FF7F49137F153FA2151FA416E06C7E153F6D14C0003F147F6D14803A1FF801FF00390F
+-FE07FE6CB55A6C5CC65C013F13C0D907FEC7FC243D7CBB2D>I<EB07FE90383FFF8090B5
+-12E0488048EB0FF848486C7E48486C7E001F80497E003F1580A2127F16C0A212FF16E0A5
+-16F0A6127FA3003F5BA2121FA26C6C5A6C6C5A6CB6FC7E38007FFDD91FF913E0EB00C114
+-01A3D807E014C0EA0FF0486C5AD83FFC1480A316004A5AA249485AD81FF05B9038E03FF0
+-000F495A90B55A6C5C6C91C7FCC613FCEB3FE0243D7CBB2D>I<EA0FC0EA1FE0EA3FF0EA
+-7FF8EAFFFCA6EA7FF8EA3FF0EA1FE0EA0FC0C7FCACEA0FC0EA1FE0EA3FF0EA7FF8EAFFFC
+-A6EA7FF8EA3FF0EA1FE0EA0FC00E287BA719>I<EA0FC0EA1FE0EA3FF0EA7FF8EAFFFCA6
+-EA7FF8EA3FF0EA1FE0EA0FC0C7FCACEA0FC0EA1FE0EA3FF0127FEAFFF8A213FCA4127F12
+-3F121F120FEA003CA2137C1378A313F813F0120113E0120313C01207EA0F80121F130012
+-1E120C0E3A7BA719>I<007FB912E0BA12F0A4003F18E0CDFCB0003FB912E0BA12F0A46C
+-18E03C1C7BA447>61 D<EB3FFC48B512804814E0000F14F0391FF03FF8393F801FFC007F
+-EB0FFE13C0D8FFE013FF13F0A5EA7FE015FE383FC01FD80F0013FCC7123FEC7FF815F0EC
+-FFC015804913005C5C495AA25C495AA35CAA90C8FCA8EB0FC0497E497E497E497EA66D5A
+-6D5A6D5A6D5A20407BBF2B>63 D<ED07804B7E4B7EA34B7EA34B7EA34B7EA34A7FA34A7F
+-A24A8015CFA2020F801587A2021F801503A2023F80EC3E01A2027E80EC7C00A24A6D7EA2
+-0101814A133FA20103814A7FA249B77EA34982A29138800007011F8291C77EA2496E7F13
+-3EA2496E7FA201FC8249157FB500F0013FB512FCA53E3F7DBE45>65
+-D<B712FEEEFFE017F817FE83C69026F0001F1380040713C07013E0A27013F0A28218F8A7
+-18F05EA218E05E18C04C1380041F1300EE7FFC91B612F017C017F817FE913AF00007FF80
+-7013C07013E07013F018F8177F18FCA318FEA3173F177FA418FCA217FF18F85E18F04C13
+-E0160FB912C018005F17F01780373E7CBD41>I<DB7FF8130E0207B5131E023FECC03E91
+-B6EAF07E0103EDF9FE499038F807FF011FEBC0004990C7123FD97FFC141F4948140F4849
+-1407484914035C484914015A91C9FC5A187E485AA3007F173EA25BA200FF1700AE127F18
+-3E7FA2123FA2187E6C7E187C7E6E15FC6C6D15F86C16016EEC03F06C7F6C6DEC07E06D6C
+-EC0FC06DB4EC3F806D01C0EBFF0001079038F807FE6D90B55A010015F0023F5C02071480
+-9126007FF8C7FC37407BBE42>I<B712FCEEFFC017F017FC17FFC69026F0003F7F04077F
+-040113F082717E717E717E170F84831980A219C083A219E0A519F0A483A55FA419E0A519
+-C0A25F1980A24D1300A24D5A4D5A177F4D5A4C5B04075B043F5BB9C7FC5F17F817C004FC
+-C8FC3C3E7CBD46>I<B812FEA483C69038F8003F16071601828383A2EF1F80A3170FED01
+-F0A3EF07C0A3150394C7FCA21507151F91B5FCA5ECF81F1507150318F8A21501EF01F0A5
+-92C71203A218E0A21707A2170F171F18C0173F17FF1603161FB9FCA21880A3353D7CBC3C
+->I<B812F8A417FCC69038F8007F161F1607160316011600A2177EA3173EA2ED03E0A217
+-1FA417001507A2150F153F91B5FCA5ECF83F150F1507A21503A792C8FCACB612FEA5303D
+-7CBC39>I<DB7FF0131C912607FFFE133C023F9038FF807C91B6EAE0FC010315F3010F90
+-38F80FFF49EBC0014948C7127F4948143FD9FFF0141F4849140F4816075C484914035A91
+-C812015A1700485AA3007F177CA25BA200FF94C7FCAC0303B612F0A2127FA27F92C7387F
+-FC00123FA36C7EA27E807E6C7F806C7F6C7F6D6C14FF6DB45B6DEBC0036DEBF80F010390
+-B512E7010015C1023FEC807C02079038FE001C9126007FF090C7FC3C407BBE47>I<B6D8
+-F87FB512FCA5C601F8C7387FFC00B3A491B7FCA502F8C7127FB3A7B6D8F87FB512FCA53E
+-3E7CBD47>I<B612F8A5C6EBF800B3B3B0B612F8A51D3E7DBD24>I<010FB61280A5D90001
+-EBE000B3B3A4EA1FE0EA3FF0EA7FF8A2EAFFFCA44A5BA26C48485B01F091C7FC6C48485A
+-391FF03FFC6CB55A6C5C000114C026001FFCC8FC293F81BD2F>I<B600F890B512F8A5C6
+-01F8C73803F8004D5A4D5A4D5A4D5A4DC7FC17FE4C5A4C5A4C5A4C5A4C5A4C5A4CC8FC16
+-FE4B5A4B5A4B5A4B5A151F4B7E4B7EA24B7E14F902FB7F91B6FC15DF039F7F158F030F7F
+-4A6C7F4A7E02F880816F7F83167F83707E82848284707F82848284707F177F84B6D8F80F
+-B512FCA53E3E7CBD47>I<B7FCA5C601F8C8FCB3AD177CA417FC17F8A41601A3160317F0
+-1607A2160F161F163F16FF1503B8FC17E0A42E3E7CBD37>I<B500FC93B512F86E5DA36E
+-5DC6F1F800A26FEC07BFA301FD6DEC0F3FA201FC6D141EA36E6C143CA36E6C1478A36E6C
+-14F0A26E6CEB01E0A36E6CEB03C0A36E9038800780A36E9038C00F00A26EEBE01EA36F6C
+-5AA36F6C5AA36F6C5AA26FB45AA36F5BA36F5BA36F90C7FCA26F5AB500FC033FB512F8A2
+-167CA216384D3E7CBD56>I<B500F891B512FC80A28080C6933800FC008181A28181A201
+-FD7F01FC7FA26E7E6E7E80826E7F80826E7F6E7FA26E7F6F7EA26F7E6F1380A26F13C06F
+-13E0A26F13F06F13F8A26F13FCEE7FFEA2EE3FFF82A28282A2828282A2177F173FA2171F
+-170FA21707B500FC1403A217011700A23E3E7CBD47>I<913801FFC0021F13FC91B67E01
+-0315E04901807F903A1FFE003FFCD93FF8EB0FFE49486D7E49486D7F48496D7F48834A7F
+-48834890C86C7EA2488349153FA2003F83A249151F007F83A400FF1880AE007F1800A36D
+-5DA2003F5FA36C6C4B5AA26C5F6E14FF6C5F6C6D495B6E5B6C5F6C6D495B6D6C4990C7FC
+-D93FFEEB3FFE6D6C6CB45A010790B512F06D5D01001580021F01FCC8FC020113C039407B
+-BE44>I<B712F816FF17E08317FCC6D9F0007FEE1FFF7013808218C08218E0A318F0A818
+-E0A318C05E18804C13005EEEFFFE91B612F85F17C04CC7FC02F8C9FCB3A4B612F8A5343E
+-7CBD3E>I<913801FFC0021F13FC91B67E010315E04901807F903A1FFE003FFCD93FF8EB
+-0FFE49486D7E49486D7F48496D7F48496D7FA24890C86C7E488349153F001F83A249151F
+-003F83A3007F834981A300FF1880AE007F1800A46D5D003F5FA36C6C4B5AA2000F027F5C
+-903AFF01FF807F6C4901E05B6C01876D485A15C16C9026CF80795B6C9026EF007F5B6DB4
+-6D90C7FC6D5D6D01805B01079038C0FFF06D90B55A0100ED8001021FED03800201EBCFC0
+-91C7EA0FE01807EFF81F94B5FCA3701400A4705BA2705B60705B715AEF1FC039517BBE44
+->I<B712E016FF17C017F883C69039F0007FFE93381FFF801607707F84A2707FA284A860
+-A24C5BA2604C5B041F90C7FCEEFFFE91B612F817E094C8FC17C0DAF00113F06F6C7E707E
+-83161F83A2707FA684A6191F18E0A282F0F03FB6D8F003143E70EBF87E70EBFFFC053F13
+-F8050F13F0CB13C0403F7CBD45>I<D907FE133890393FFFC07890B5EAF0F84814F90007
+-14FF380FFE07EBF0004848133F4848131F150F007F1407491303A212FF1501A36D1300A2
+-7F7F6D140013FE387FFFE014FEECFFE06C14FC816CECFF806C15C06C15E016F012016C15
+-F86D14FC131F010114FEEB001F14019138003FFF150F81A200788012F8A281A27EA216FE
+-7E15036C15FC7F6DEB07F813F001FCEB1FF09039FFC07FE091B512C000FC1580D8F83F14
+-00D8F00713FC48C613E028407BBE33>I<003FB812FCA5D9FC03EBE01FD87FE0ED07FE01
+-C01501018015001300007E177EA3007C173EA400FC173F48171FA5C71600B3AF013FB612
+-FEA5383D7DBC3F>I<B600F890B512F8A5C601F8C8EAF800B3B3A5017F150160A280013F
+-1503606D6C1407010F4B5A6E4A5A6D6D133F6D6D01FFC7FC6D9038F807FE6D6CB55A6E5C
+-020F14E0020314809126003FFCC8FC3D3F7CBD46>I<B600F0010FB5FCA5C601F8C8EA1F
+-00A26E5D017F163EA26E157E013F167C6E15FC6D5EA26F13016D5EA26D6D495AA26F1307
+-6D5EA26F130F6D5E816D4BC7FCA26F5B027F143EA26F137E023F147C6F13FC6E5CA21681
+-6E5CA216C36E5C16E76E5CA216FF6E5CA36E91C8FCA26F5AA36F5AA36F5AA26F5AA36F5A
+-A2403F7EBD45>I<B600E0B6D8F007B51280A500019026F0000101F8C73807C00070160F
+-6C6D6184177F6D6C4EC7FC84173F6D6C183E177F846E187E6D92B5147C856F17FC6D4A5E
+-05F77F03C016016D02035E05E313E003E016036D02075E05C113F003F016076D61DC0F80
+-13F803F8160F6D6193391F007FFC03FC161F027F95C8FC4C14FE043E013F5BDA3FFE163E
+-047E14FF047C6D137EDA1FFF167C04FC15FC4C7F6E5FA24C7F6E5FA24C7F6E5FA24C7F6E
+-5FA24C7F6E5FA293C8127FA26F93C9FC037E81033E153E593F7EBD5E>I<003FB5D8FC0F
+-B512F0A5D8003F90C7380FC0006D6D495A4DC7FC6D7F6D6D137E5F6D7F4C5A6D6D485A6D
+-13FC4C5ADA7FFE5B160F6E6C485A6E139F04BFC8FC6E13FEA26E5B6E5BA28082806F7EA2
+-6F7E83A24B7F92B5FC83DA01FB7FEC03F303F17FEC07E1DA0FC07F707EEC1F804B6C7E5C
+-027E6D7F707F5C49486D7FA249486D7F49486D7FA249486D7F49486E7EA2B6011FB6FCA5
+-403E7EBD45>I<B600F80103B512C0A5C66C48C8380F80006E151F6D4CC7FC816D167E6D
+-7F6F5C6D5E6F13016D5E6F13036D4B5A6D7F6F495A027F5D6F131F6E92C8FC6E6D5AEEC0
+-7E80705A80EEF1F86E5C6E13FBEEFFE0805F815F6F90C9FC815EB3A2021FB6FCA5423E7F
+-BD45>I<003FB712F8A5DAC00313F09026FC000713E05B01E04913C05B49491380127F90
+-C74813004B5A127E4B5AA24A5B127C4A5B5C5E4A5BC7FC4A5BA24A90C7FC5C5D4A5AA249
+-5BA2495B5B5D4949137CA2495BA24990C7FC4915FC4A14F8495AA2485B1601485BA24849
+-1303485B16074849130F161F4890C7123FEEFFF04848130FB8FCA52E3E7BBD38>I<EAFF
+-FEA6EAFC00B3B3B3B3A7EAFFFEA60F5B78C319>I<0160130301F0EB07800001140F0003
+-141FD807C0EB3E00A248485B48C75A001E5C003E1301003C5C007C1303A200785CA200F8
+-1307485CA2D8F7E013BFD8FFF0EBFF8001F814C001FC14E001FE14F0A3007F7FA36C486C
+-13E06C486C13C06C48EB7F806C48EB3F00242077BE31>I<EAFFFEA6EA007EB3B3B3B3A7
+-EAFFFEA60F5B7FC319>I<EB0FFE90387FFFC048B512F04814FC3907FC0FFE48486C7E6D
+-6C7F486C7E82A26E7FA36C5A6C5AEA01E0C8FC5C49B5FC131F90B6FC000313F84813C048
+-1300EA1FFC485A127F5B12FF5BA45CA26C6C5A16F83B3FF807BFFF80391FFC1F3F390FFF
+-FE1F6C497E0001EBF80326003FE0C8FC292B7EA92C>97 D<13FFB5FCA512077EAFEC03FE
+-91381FFFC0027F13F091B57E9138FE0FFE9138F003FF4A7E02C014804A6C13C017E0A3EE
+-7FF0A317F8AC17F0A3EEFFE0A217C05D02C014806E4813006E485A9138FC1FFC01FCB55A
+-496C13E0D9F01F1380C7D807FCC7FC2D407EBE33>I<EB03FF011F13E0017F13F890B57E
+-48EB83FE3903FE01FF00075B4848481380121F13F8123FA2127F496C13006E5AEC007800
+-FF91C7FCAC127FA27F003FEC07C0A26C6C130F16806C6C131F000715006C6C137F6CEBC1
+-FE6CEBFFFC6D13F0011F5B010390C7FC222B7DA928>I<ED01FEEC01FFA5EC000F1507AF
+-EB01FF011F13C7017F13F790B6FC4813C148EB007F4848131F485A001F140F5B123FA248
+-5AA312FFAC127FA36C7EA3001F141F6C7E00074A7E6D90B512F83803FF83C690B6FC6D13
+-EF011F13CF903A03FE0FF8002D407DBE33>I<49B47E010F13F0013F7F90B512FE48EBC3
+-FF48010013804848EB7FC04848133F001F15E05B003FEC1FF0A2485A150F16F8A212FFA2
+-90B6FCA401F0C8FCA5127FA37F003F15F8A26C6C1301000F15F06D13036C6CEB07E06C90
+-38800FC06C9038F07F806C6CB512006D5B010F13F8010013C0252B7EA92A>I<EC1FF8EC
+-FFFE01077F491480D91FF813C0D93FE013E0EB7FC1EBFF81481301A348486C13C0ED7F80
+-ED3F0092C7FCAAB6FCA5000390C8FCB3ACB6FCA523407EBF1C>I<D907FE13FC90393FFF
+-C3FE90B5EAF7FF4891B5128048130F3907FC03FE3A0FF801FF7F001FEDFF00496C13BE16
+-80003F81A7001F5DA26D5A000F92C7FC6C6C485A3903FF0FFCECFFF8485CD80F3F13C0D9
+-07FEC8FC90CAFC5AA27FA213E090B512F015FF6C15C0826C816C8182120F4881393FE000
+-3FD87F80EB07FF150148C7FC81A56D5B007F5D6D13036C6C495AD81FF8EB1FF86CB4EBFF
+-F06C90B55A000115806C6C49C7FC010713E0293D7EA82D>I<13FFB5FCA512077EAFED7F
+-E0913801FFF802077F4A7F91381FC3FFDA3E031380147CEC780102F014C014E0A214C0A3
+-1480B3A4B5D8FE1F13FFA5303F7EBE33>I<EA01F8487E487E487E481380A66C13006C5A
+-6C5A6C5AC8FCA913FFB5FCA512077EB3ABB512F8A515407EBF19>I<EC1F80EC3FC0EC7F
+-E0ECFFF04913F8A66D13F0EC7FE0EC3FC0EC1F8091C7FCA9EC07F8EB0FFFA5EB003F141F
+-B3B3A2EA1F80EA3FC0EA7FE0EAFFF015F0143FA2EC7FE015C0397FE0FF80D83FC113006C
+-B45A6C5B6C13F0C613801D5387BF1C>I<13FFB5FCA512077EB092B512E0A592380FE000
+-4B5A4B5A4BC7FC15FE4A5A4A5A4A5A4A5A4A5A143FECFFE0A28181A2ECDFFCEC8FFE140F
+-6E7E6E7FA26E7F6E7FA26F7E6F7EA26F7E6F7EB539FC7FFFF8A52D3F7FBE30>I<13FFB5
+-FCA512077EB3B3AFB512FCA5163F7EBE19>I<01FFD97FE0EB3FF0B52601FFF8EBFFFC02
+-07D9FC037F4A6D487F91281FC3FF0FE17FDA3E03D99F017F0007017C14BE6CD97801EBBC
+-0002F002F88002E05CA202C05CA302805CB3A4B5D8FE1FD9FF0FEBFF80A549297EA84C>
+-I<01FFEB7FE0B53801FFF802077F4A7F91381FC3FFDA3E0313800007137C6CEB780102F0
+-14C014E0A214C0A31480B3A4B5D8FE1F13FFA530297EA833>I<49B47E010F13F0013F13
+-FC90B6FC48018113803A03FE007FC04848EB3FE0000F15F049131F001F15F8A24848EB0F
+-FCA2007F15FEA400FF15FFAB007F15FEA3003F15FC6D131F001F15F8A26C6CEB3FF00007
+-15E06C6CEB7FC03A01FF81FF806C90B51200013F13FC010F13F001011380282B7EA92D>
+-I<9038FF03FEB5381FFFC0027F13F091B57E9138FE1FFE9138F007FF0007497E6C01C014
+-804A6C13C017E081A217F0A2167F17F8ACEEFFF0A317E05D17C0A26E4813806E4813006E
+-485A9138FC1FFC91B55A16E0029F1380DA87FCC7FC0280C8FCACB512FEA52D3B7EA833>
+-I<49B4131E010FEBC03E013FEBE07E90B5EAF0FE48EBC1F948EB807F48EB003F485A4848
+-131FA2003F140F5B127F1507A2485AAC127F7FA2123F150F6C7E151F6C7E0007143F6C6C
+-13FF6C13C36C90B5FC6D13EF011F138F903803FE0F90C7FCAC0203B512F8A52D3B7DA830
+->I<3901FE07F800FFEB0FFE91383FFF804A13C0EC7C7F9138F8FFE03807FFF06C5B5CA2
+-ED7FC09138803F80ED1F0092C7FCA291C8FCB3A3B6FCA523297FA827>I<90387FE1E038
+-03FFFB4813FF5A381FE07F383F801F387F000F007E130712FE1403A27EA26DC7FC13F013
+-FF6C13F014FC6C13FF15806C14C07E6C14E0000114F06C7E010313F8EB003F140F007813
+-0712F814037EA36C14F06C1307A29038800FE09038F03FC090B51280150000F813FC38E0
+-3FF01D2B7DA924>I<131FA65BA55BA25BA25A5A5A001FEBFFC0B6FCA4000790C7FCB3EC
+-03E0A97EEC87C0A26CEBCF806C13FF6D1300EB1FFEEB07F81B3B7EB923>I<D9FF80EB7F
+-C0B5EB7FFFA5000714036C80B3A55DA35D7E4B13E0DAC01E13FF6CEBE07E6DB45A6D5B01
+-0F13E0010101801300302A7EA833>I<B539FC1FFFE0A5000390398000F800ECC0016C5D
+-A2ECE0036C5D1507D97FF05BA2ECF80F013F5CA2ECFC1F011F91C7FC5D90380FFE3EA215
+-7E903807FF7CA215FC6D5BA26D5BA36D5BA36E5AA26E5AA36EC8FC2B287EA730>I<B500
+-E1B53887FFF8A50007903B801FF0003F006C6F133E150F02C0157E6C4A6C137CA26C01E0
+-5D4B7EA2D97FF04A5AED7FFF157DD93FF84A5A03FD138303F81387D91FFCECC7C014FD92
+-38F07FCFD90FFFECEF80A29238E03FFF6D93C7FCA24B7E6D5DA2ED800F6D5DA2ED00076D
+-5DA24A1303027E5C027C13013D287EA742>I<3B7FFFFC7FFFE0A5C69039E007E0004B5A
+-90387FF01FD93FF85B4BC7FC90381FFC7EEB0FFE5D6D6C5A7F5D6D5B7FA26E7E143F814A
+-7E14FF81497FEB03F301078002E17FEB0FC049487F6F7E90383F003F017E806F7EB500E0
+-B512F8A52D287FA730>I<B539FC1FFFE0A5000390398000F800ECC0016C5DA2ECE0036C
+-5D1507D97FF05BA2ECF80F013F5CA2ECFC1F011F91C7FC5D90380FFE3EA2157E903807FF
+-7CA215FC6D5BA26D5BA36D5BA36E5AA26E5AA36EC8FCA25C143EA2000E5BEA3F80387FC0
+-FC486C5AA2EBE1F0A2EBE3E013C7387FCFC0387D3F80D83FFFC9FC5BEA0FF8EA07E02B3B
+-7EA730>I<001FB61280A4D9F80F1300EBE01F01C05B49485A130048495A4A5AA2D83E01
+-5B5B5D495BA2C64890C7FC5B5C495A017FEB0F8014F8EBFFF0A248EBE01F48150014C048
+-1380A248495A485A5D48485B007F5B9038F80FFEB6FCA421287EA728>I<B812F0A42C04
+-809A2D>I<BE12C0A45A04809A5B>I E
 -%EndDVIPSBitmapFont
 -%DVIPSBitmapFont: Fk cmbx12 14.4 49
 -/Fk 49 122 df<EEFFFC031FEBFF804AB612E0020781021F9038C00FF8913A7FFE0003FC
 -DAFFF0EB00FE4949EB03FF4901805B4990C7487F49485CA2495A4D7F013F6F5B5CA37190
 -C7FC715AEF01F894C9FCA90403B512C0BAFCA526003FFCC7120783B3B3A6003FB5D8FC03
 -B612C0A542547DD34B>12 D<B712F0AB240B7F9F2D>45 D<EA07F0487E487E487E487EB5
--1280A76C13006C5A6C5A6C5A6C5A1111769025>I<157815FC14031407141F14FF130F00
--07B5FCB6FCA2147F13F0EAF800C7FCB3B3B3A6007FB712FEA52F4E76CD43>49
--D<EC3FFE0103B512E0010F14FC013F14FF90B712C048D9C07F7F2703FE000F13F8D807F8
--01037FD80FE06D7F48486D7F48488001F01680486C6E13C07F486C6E13E07FA27013F0A5
--6C5AA26C5AEA0FF0EA03C0C914E05EA218C05E1880A24C13005F4C5A4B5B5F4B5B5F4B5B
--4B90C7FC4B5A5E4B5AED7FE04B5A4A5B4A48C8FC4A5A5D4A48EB01F04A5AEC3F804AC7FC
--02FEEC03E0495A495A495A495AD91F80140749C8FC013E150F017FB7FC90B812C05A5A5A
--5A5A5A5AB9FC1880A4344E79CD43>I<91380FFFC091B512FC0107ECFF80011F15E09026
--3FF8077F9026FF800113FC4848C76C7ED803F86E7E491680D807FC8048B416C080486D15
--E0A4805CA36C17C06C5B6C90C75AD801FC1680C9FC4C13005FA24C5A4B5B4B5B4B13C04B
--5BDBFFFEC7FC91B512F816E016FCEEFF80DA000713E0030113F89238007FFE707E701380
--7013C018E07013F0A218F8A27013FCA218FEA2EA03E0EA0FF8487E487E487EB57EA318FC
--A25E18F891C7FC6C17F0495C6C4816E001F04A13C06C484A1380D80FF84A13006CB44A5A
--6CD9F0075BC690B612F06D5D011F1580010302FCC7FCD9001F1380374F7ACD43>I<177C
--17FEA2160116031607160FA2161F163F167FA216FF5D5DA25D5DED1FBFED3F3F153E157C
--15FCEC01F815F0EC03E01407EC0FC01580EC1F005C147E147C5C1301495A495A5C495A13
--1F49C7FC133E5B13FC485A5B485A1207485A485A90C8FC123E127E5ABA12C0A5C96C48C7
--FCAF020FB712C0A53A4F7CCE43>I<D80380150ED807E0157E01FEEC03FED9FFF0137F91
--B65A5F5F5F5F5F94C7FC5E5E16F016C093C8FC15F801E190C9FC01E0CAFCABEC0FFF027F
--13F001E3B512FE01E76E7E9026FFF8077FDAC0017F49C713F8496E7E49143F4981496E7E
--6C481680C9FC18C08218E0A418F0A3EA0FE0487E487E487E487EA418E0A35B6C484A13C0
--5B491680003EC85A003F17006C6C4A5A6D5D6C6C4A5AD807F8495BD803FE01075B2701FF
--C03F5B6C90B65A013F4AC7FC6D14F8010314C09026007FF8C8FC344F79CD43>I<ED0FFF
--92B512E0020780021F14FC91397FFE03FE903A01FFF0007F4901C0EB3F804990C7121F49
--48EC7FC0494814FF49484913E049485B01FF5C485BA2485B5AA2486F13C04A6D1380486F
--1300177E94C7FC5AA291CAFC5AA21508913801FFF8020713FFB54814C04A14F04AC66C7E
--023C6D7E4A6D7E4A6D7E7013804A15C0A24A15E07013F05C18F8A491C714FCA37EA67EA4
--6C17F880A27E18F06C5D18E06C6D15C07E6E4913806C6D15006D6C495A6D6CEB7FFC6DB4
--48485A6D90B55A010315C0010092C7FC023F13FC020713C0364F7ACD43>I<121F7F7FEB
--FF8091B81280A45A1900606060A2606060485F0180C86CC7FC007EC95A4C5A007C4B5A5F
--4C5A160F4C5A484B5A4C5A94C8FC16FEC812014B5A5E4B5A150F4B5AA24B5AA24B5A15FF
--A24A90C9FCA25C5D1407A2140FA25D141FA2143FA4147F5DA314FFA55BAC6D5BA2EC3FC0
--6E5A395279D043>I<913807FFC0027F13FC0103B67E010F15E090261FFC0113F8903A3F
--E0003FFCD97F80EB0FFE49C76C7E48488048486E1380000717C04980120F18E0177FA212
--1F7FA27F7F6E14FF02E015C014F802FE4913806C7FDBC00313009238F007FE6C02F85B92
--38FE1FF86C9138FFBFF06CEDFFE017806C4BC7FC6D806D81010F15E06D81010115FC0107
--81011F81491680EBFFE748018115C048D9007F14E04848011F14F048487F484813030300
--14F8484880161F4848020713FC1601824848157F173FA2171FA2170FA218F8A27F007F17
--F06D151FA26C6CED3FE0001F17C06D157F6C6CEDFF806C6C6C010313006C01E0EB0FFE6C
--01FCEBFFFC6C6CB612F06D5D010F1580010102FCC7FCD9000F13C0364F7ACD43>I<9138
--0FFF8091B512F8010314FE010F6E7E4901037F90267FF8007F4948EB3FF048496D7E4849
--80486F7E484980824817805A91C714C05A7013E0A218F0B5FCA318F8A618FCA46C5DA37E
--A25E6C7F6C5DA26C5D6C7F6C6D137B6C6D13F390387FF803011FB512E36D14C301030283
--13F89039007FFE03EC00401500A218F05EA3D801F816E0487E486C16C0487E486D491380
--A218005E5F4C5A91C7FC6C484A5A494A5A49495B6C48495BD803FC010F5B9027FF807FFE
--C7FC6C90B55A6C6C14F06D14C0010F49C8FC010013F0364F7ACD43>I<91B5FC010F14F8
--017F14FF90B712C00003D9C00F7F2707FC00017FD80FE06D7F48486E7E48C87FD87FE06E
--7E7F7F486C1680A66C5A18006C485C6C5AC9485A5F4B5B4B5B4B5B4B5B4B90C7FC16FC4B
--5A4B5A16C04B5A93C8FC4A5A5D14035D5D14075DA25D140FA25DAB91CAFCAAEC1FC04A7E
--ECFFF8497FA2497FA76D5BA26D5BEC3FE06E5A315479D340>63 D<BA7E19FCF1FF801AF0
--1AFCD8000701F0C7000F13FF060014C0071F7F070713F807017F737F747E747F747F8674
--7F747F8886888688A2757EA31D8087A21DC0A51DE0A387A963A31DC0A51D80A2631D00A3
--515AA2646264505B6264505B505B5090C7FCF2FFFE4F5B07075B071F5B96B512C0060F91
--C8FCBB5A1AF01AC007FCC9FC19805B527CD167>68 D<BC1280A5D8000701F8C7000114C0
--F0001F19071901851A7F1A3F1A1FA2F20FE0A21A07A31A03A318F81BF01A01A497C7FC17
--01A317031707170F177F92B6FCA59238F8007F170F170717031701A317001B3EA31B7CA3
--95C8FCA21BFCA21BF8A21A01A31A031BF01A071A0FA21A1F1A3FF27FE0F101FF1907191F
--0603B5FCBCFCA21BC0A34F517CD058>I<BB12FEA5D8000701F8C700077FF0007F191F19
--0785858586861B80A21A1FA31A0FA41BC006F81307A497C7FCA31701A317031707170F17
--7F92B6FCA59238F8007F170F170717031701A31700A795C9FCB3B812F8A54A517CD055>
--I<B8D8C003B8FCA5D8000701F8C9001FEBE000B3AE92BAFCA503F8C9121FB3B1B8D8C003
--B8FCA560527CD169>72 D<B812C0A5D8000701F8C7FCB3B3B3B2B812C0A52A527CD132>
--I<027FB71280A591C76C90C7FCB3B3B3EA07F0EA1FFC487E487EA2B57EA44C5AA34A485B
--7E49495BD83FF8495BD81FE05DD80FFC011F5B2707FF807F90C8FC000190B512FC6C6C14
--F0011F14C0010101F8C9FC39537DD145>I<B812F8A5D8000701F8CAFCB3B3A91A7CA41A
--FC1AF8A51901A31903A219071AF0190FA2191F193F197F19FF180360183F4DB5FCBB12E0
--A546527CD151>76 D<B600FC073FB512FE6F61A26F96B6FCA2D80007F5C00070EF01EFA2
--02EF6DEF03CFA202E76DEF078FA202E36DEF0F0FA202E16D171EA302E06D173CA26F6C17
--78A26F6C17F0A26F6DED01E0A26F6DED03C0A36F6DED0780A26F6DED0F00A26F6D151EA2
--6F6D5DA3706C5DA2706C5DA2706D495AA2706D495AA2706D495AA3706D49C7FCA2706D13
--1EA2706D5BA2716C5BA3716C5BA271EB81E0A271EBC3C0A271EBE780A27101FFC8FCA371
--5BA2715BA2725AA2725AA2D93FFC6F5AB74DB712FEA2725AA2725A77527CD180>I<BAFC
--19F819FF1AE086D8000701F0C7001F13FC060113FF726C13807313C0070F13E01BF08573
--13F81BFCA27313FEA41BFFA81BFEA31BFC61A21BF84F13F04F13E0614F13C04F13004E48
--5A061F5B92B812F01AC04FC7FC19E003F8CBFCB3AEB812C0A550527CD15C>80
--D<B912F0F0FF8019F819FF1AC0D8000701F0C714F0060F7F060113FE727F737F737F8573
--7F87A2737FA387A863A2616363A24F5B4F5B4F90C8FC4F5A06035B060F13F095B512C092
--B8C9FC19F819E019F89226F0000313FE9439007FFF80727F727F727F727F727F8684A286
--84A787A71D1C75133EA38575137E73157C7513FC731401B86C6D9038F803F807039038FE
--07F07390B512E0736C14C0080F1400CEEA7FFC5F537CD164>82 D<91260FFF80130791B5
--00F85B010702FF5B011FEDC03F49EDF07F9026FFFC006D5A4801E0EB0FFD4801800101B5
--FC4848C87E48488149150F001F824981123F4981007F82A28412FF84A27FA26D82A27F7F
--6D93C7FC14C06C13F014FF15F86CECFF8016FC6CEDFFC017F06C16FC6C16FF6C17C06C83
--6C836D826D82010F821303010082021F16801400030F15C0ED007F040714E01600173F05
--0F13F08383A200788200F882A3187FA27EA219E07EA26CEFFFC0A27F6D4B13806D17006D
--5D01FC4B5A01FF4B5A02C04A5A02F8EC7FF0903B1FFFC003FFE0486C90B65AD8FC0393C7
--FC48C66C14FC48010F14F048D9007F90C8FC3C5479D24B>I<003FBC1280A59126C0003F
--9038C0007F49C71607D87FF8060113C001E08449197F49193F90C8171FA2007E1A0FA300
--7C1A07A500FC1BE0481A03A6C994C7FCB3B3AC91B912F0A553517BD05E>I<B800C00103
--B612FCA5D8000701F8CAEBF000F31F80B3B3B11B3FA26D97C7FC81637F1B7E6D6D17FE50
--5A6E7E505A6E6D15076E4D5A6E6D4B5A6E6D4B5A6E01F84B5A6E6DDA03FFC8FC6E6CB46C
--EB0FFE6F9039F001FFF8030F90B65A030316C0DB007F92C9FC040F14F8DC007F13805E53
--7CD167>I<B700FC017FB600FE91B612F0A5D8003F01C0C8001F01E0C9EBF8006F71EE0F
--C06D7161876F1C1F6D7196C7FC6F8373606D1E3E6F836D7160876F1CFC6D666F4B801F01
--6D66704A806E525A88704A17076E059F5F70021F80080F160F6E6570023F806EDC3E074C
--C8FC8870027E5F6EDC7C03163E7002FC804F6C167E6E1C7C700101814F6C16FC6E745B70
--010317016E4C6D5D060716C00580496D14036F63DDC00F16E04F6D14076F07F05BDDE01F
--170F6F92C76C5D1DF8DDF03E6E141F6F98C9FCDDF87E16FC067C6E5C6FF1FE3EDDFCFC17
--7E6F4A6E147C1DFFDDFFF06E14FC6F62A24E816F62A270496F5BA24E817061A295C97E70
--61A270487090CAFCA37048705AA24D1601040360A27048705A84537DD18B>87
--D<EC7FFF0107B512F0013F14FE90B77E48D9E00F7F2703FE000113F0486C6D7F6EEB3FFC
--48826E131F83707FA36C496D7FA26C90C7FC6C5AC9FCA6037FB5FC020FB6FC91B7FC0107
--1487013FEBF0074913803901FFFC004813F0485B485B485B4890C7FC5A5BA2485AA45EA2
--6D5C007F151D163D6C6C02797F6C6D01F113F86C9026C003E1EBFFE06C9026F81FC014F0
--6C90B5487EC6ED001F011F01FC010713E0010101E090C8FC3C387CB641>97
--D<EB3FF0B5FCA51203C6FCB3A4923801FFE0030F13FE033FEBFFC092B612F002F301017F
--913AF7F8003FFEDAFFE0EB0FFF03806D7F92C76C7F4A6E7F4A824A6E7FA2727EA285A285
--84A31A80AC1A00A44E5AA36118FF616E4A5BA26E4A5B6E4A5B6F495BDACFC04990C7FCDA
--87F0EB7FFC913A03FE03FFF849C6B612E0496D148049011F01FCC8FC90C7000313C04154
--7BD24B>I<913801FFF8021FEBFF8091B612F0010315FC010F9038C00FFE903A1FFE0001
--FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2486F138091C7FC486F1300705A48
--92C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D15C07E6E140F6CEE1F806C6DEC
--3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0010390B55A01001580023F49C7FC
--020113E033387CB63C>I<4DB47E0407B5FCA5EE001F1707B3A4913801FFE0021F13FC91
--B6FC010315C7010F9038E03FE74990380007F7D97FFC0101B5FC49487F4849143F484980
--485B83485B5A91C8FC5AA3485AA412FFAC127FA36C7EA37EA26C7F5F6C6D5C7E6C6D5C6C
--6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFFC07FCF6D90B5128F0101ECFE0FD9
--003F13F8020301C049C7FC41547CD24B>I<913803FFC0023F13FC49B6FC010715C04901
--817F903A3FFC007FF849486D7E49486D7E4849130F48496D7E48178048497F18C0488191
--C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFCA6127FA27F7EA218E06CEE01
--F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F806D6CECFF00D91FFEEB03FE
--903A0FFFC03FF8010390B55A010015C0021F49C7FC020113F034387CB63D>I<ED3FFC02
--03B5FC020F14C0023F14E09139FFF81FF0499038C03FF849EB807F49903800FFFC495A49
--5AA2495AA2EE7FF8495AEE3FF0EE0FC093C7FCAEB712E0A526007FF8C8FCB3B3A7007FB5
--12FEA52E547CD329>I<DA3FFF14FF0103B5D8F00713C0010FDAFC1F13E0013FECFF7F90
--267FFC0F9038FF9FF09026FFE001EBF83F48496C13E0484990387FF01F4890C7D83FF813
--E0489338FC0FC0F0078048486E6CC7FCA2003F82A9001F5EA26C6C4A5AA26C5E6C6D495A
--6C6D495A6C6D485BDAFC0F5B4890B6C8FCD803EF14FC01C314F02607C03F90C9FC91CBFC
--A2120FA37FA213F813FE90B7FC6C16F817FF18C06C836C836C836D828448B9FC12074848
--C700031480D81FF8EC003F4848150748486F13C083485A83A56D5D007F18806D5D003F18
--006C6C4B5AD80FFEED1FFC6C6C6CEC7FF86C01E049485A6C01FE011F5B6C6CB71280010F
--03FCC7FC010115E0D9000F01FCC8FC3C4F7CB543>I<EB3FF0B5FCA51203C6FCB3A4EE1F
--FC93B512C0030314F0030F8092391FE07FFC92393F001FFE037C8003F07FDAF1E081ECF3
--C0DAF7807F8502FFC7FC5CA25CA45CB3ACB6D8F807B612C0A542537BD24B>I<137F497E
--000313E0487FA2487FA76C5BA26C5BC613806DC7FC90C8FCADEB3FF0B5FCA512017EB3B3
--A6B612E0A51B547BD325>I<EB3FF0B5FCA51203C6FCB3A54CB512F8A59339003FFE00EF
--1FF0EF3FC04D5A4DC7FCEE03FEEE07F84C5A4C5AEE7FC04CC8FC4B5A4B5AED0FF8ED1FE0
--4B7E4B7EECF1FF02F37F02F77F91B6FC83159F030F7F02FE80DAF8077F4A7E6F7F6F7F83
--707E82707F84707F707F82707F84707F177F717E4D13C0B6D8F003B6FCA540537CD247>
--107 D<EB3FF0B5FCA512017EB3B3B3B1B612F0A51C537BD225>I<D93FF0D91FFCEDFFE0
--B591B500C0010713FE030302F0011F6D7E030F6E017F8092271FE07FFCD9FF037F922A3F
--001FFE01F8007F0003027C9126FF03E080C602F06DD90780137FDAF1E0038FC77FDAF3C0
--159EDAF7806D01BC143F07FC8102FFC75C4A5EA24A5EA44A5EB3ACB6D8F807B6D8C03FB5
--12FEA567367BB570>I<D93FF0EB1FFCB591B512C0030314F0030F8092391FE07FFC9239
--3F001FFE0003027C80C602F07FDAF1E081ECF3C0DAF7807F8502FFC7FC5CA25CA45CB3AC
--B6D8F807B612C0A542367BB54B>I<913801FFE0021F13FE91B612C0010315F0010F9038
--807FFC903A1FFC000FFED97FF86D6C7E49486D7F48496D7F48496D7F4A147F48834890C8
--6C7EA24883A248486F7EA3007F1880A400FF18C0AC007F1880A3003F18006D5DA26C5FA2
--6C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C495BD93FFE011F90C7FC903A0FFF80
--7FFC6D90B55A010015C0023F91C8FC020113E03A387CB643>I<903A3FF001FFE0B5010F
--13FE033FEBFFC092B612F002F301017F913AF7F8007FFE0003D9FFE0EB1FFFC602806D7F
--92C76C7F4A824A6E7F4A6E7FA2717FA285187F85A4721380AC1A0060A36118FFA2615F61
--6E4A5BA26E4A5B6E4A5B6F495B6F4990C7FC03F0EBFFFC9126FBFE075B02F8B612E06F14
--80031F01FCC8FC030313C092CBFCB1B612F8A5414D7BB54B>I<90397FE003FEB590380F
--FF80033F13E04B13F09238FE1FF89139E1F83FFC0003D9E3E013FEC6ECC07FECE78014EF
--150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55CB3AAB612FCA52F367CB537>114
--D<903903FFF00F013FEBFE1F90B7FC120348EB003FD80FF81307D81FE0130148487F4980
--127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC06C13FF15F86C14FF16C06C15F06C
--816C816C81C681013F1580010F15C01300020714E0EC003F030713F015010078EC007F00
--F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F8001F8EC7F0001FEEB01FE9039FF
--C00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC2C387CB635>I<143EA6147EA414
--FEA21301A313031307A2130F131F133F13FF5A000F90B6FCB8FCA426003FFEC8FCB3A9EE
--07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEBF0FC6DEBFFF86D6C5B021F5B0203
--13802A4D7ECB34>I<D93FF8913801FFC0B50207B5FCA50003ED001FC61607B3AE5FA35F
--A2017F5D173B177B6D6C14F3DC01E313F06D6CD907C3EBFFC0903A0FFFC03F836D90B512
--03010114FE6D6C13F8020701E091C7FC42377BB54B>I<B600F00107B5FCA5000101F8C8
--EA7FE06C6DED3F00A2017F163E6E157E013F167C6E15FC6D5E6F13016D5E8117036D5E6F
--13076D5E6F130F6D5E6F131F6D93C7FC815F6E6C133E177E023F147C6F13FC6E5C16816E
--5C16C3A26EEBE3E016E76E5C16FF6E5CA26E91C8FCA26F5AA36F5AA26F5AA26F5AA26F5A
--6F5A40367DB447>I<B6D8E07FB5D8C003B512C0A5000101F0C701F0C7381FF8006E027F
--ED07E06C715DA26E023F150F017F705DA26E181F013F4B6C92C7FC6E606D70143E94B5FC
--6F177E6D4A6E137C03C001F315FC6D715B160303E001E114016D020702E05B03F013C06D
--71485A160F03F8D9807F13076D05F85B93381F003F03FC160F027F4902FC5BDBFE3E011F
--131F023F04FE90C8FC167EDBFF7C010F5B6E01FCECFF3E4C6D137E6E5FA24C7F6E5F4C7F
--6E5FA24C7F6E5F4C147FA26E5F93C8123F6F5EA2033E6FC9FC5A367DB461>I<B600F001
--07B5FCA5C601F8C8EA7FE06EED3F00A26D6C153E187E013F167C6E15FC6D5E6F13016D5E
--6F13036D5E8117076D6D5C170F6D6D5C171F6D93C7FC6F5B027F143E6F137E023F147C6F
--13FCA26E6D5A16816EEBC1F016C36E5C16E76E5C16FF6E5CA26E91C8FCA36F5AA26F5AA2
--6F5AA26F5AA26F5AA35E150F5E151F93C9FC5DD81FC0133E486C137E486C137C486C13FC
--5D14015D14034A5A6C48485A49485A263FC07FCAFCEB81FE6CB45A6C13F000035BC690CB
--FC404D7DB447>121 D E
+-1280A76C13006C5A6C5A6C5A6C5A1111769025>I<913803FFC0023F13FC91B6FC010315
+-C0010F018113F0903A1FFC003FF849486D7E49486D7E49486D7E48496D138048496D13C0
+-A24817E04890C813F0A34817F8A24817FC49157FA3007F17FEA600FF17FFB3A5007F17FE
+-A6003F17FCA26D15FFA26C17F8A36C17F0A26C6D4913E0A26C6D4913C06C17806E5B6C6D
+-4913006D6C495AD91FFCEB3FF8903A0FFF81FFF06D90B55A01011580D9003F01FCC7FC02
+-0313C0384F7BCD43>48 D<157815FC14031407141F14FF130F0007B5FCB6FCA2147F13F0
+-EAF800C7FCB3B3B3A6007FB712FEA52F4E76CD43>I<EC3FFE0103B512E0010F14FC013F
+-14FF90B712C048D9C07F7F2703FE000F13F8D807F801037FD80FE06D7F48486D7F484880
+-01F01680486C6E13C07F486C6E13E07FA27013F0A56C5AA26C5AEA0FF0EA03C0C914E05E
+-A218C05E1880A24C13005F4C5A4B5B5F4B5B5F4B5B4B90C7FC4B5A5E4B5AED7FE04B5A4A
+-5B4A48C8FC4A5A5D4A48EB01F04A5AEC3F804AC7FC02FEEC03E0495A495A495A495AD91F
+-80140749C8FC013E150F017FB7FC90B812C05A5A5A5A5A5A5AB9FC1880A4344E79CD43>
+-I<91380FFFC091B512FC0107ECFF80011F15E090263FF8077F9026FF800113FC4848C76C
+-7ED803F86E7E491680D807FC8048B416C080486D15E0A4805CA36C17C06C5B6C90C75AD8
+-01FC1680C9FC4C13005FA24C5A4B5B4B5B4B13C04B5BDBFFFEC7FC91B512F816E016FCEE
+-FF80DA000713E0030113F89238007FFE707E7013807013C018E07013F0A218F8A27013FC
+-A218FEA2EA03E0EA0FF8487E487E487EB57EA318FCA25E18F891C7FC6C17F0495C6C4816
+-E001F04A13C06C484A1380D80FF84A13006CB44A5A6CD9F0075BC690B612F06D5D011F15
+-80010302FCC7FCD9001F1380374F7ACD43>I<177C17FEA2160116031607160FA2161F16
+-3F167FA216FF5D5DA25D5DED1FBFED3F3F153E157C15FCEC01F815F0EC03E01407EC0FC0
+-1580EC1F005C147E147C5C1301495A495A5C495A131F49C7FC133E5B13FC485A5B485A12
+-07485A485A90C8FC123E127E5ABA12C0A5C96C48C7FCAF020FB712C0A53A4F7CCE43>I<
+-D80380150ED807E0157E01FEEC03FED9FFF0137F91B65A5F5F5F5F5F94C7FC5E5E16F016
+-C093C8FC15F801E190C9FC01E0CAFCABEC0FFF027F13F001E3B512FE01E76E7E9026FFF8
+-077FDAC0017F49C713F8496E7E49143F4981496E7E6C481680C9FC18C08218E0A418F0A3
+-EA0FE0487E487E487E487EA418E0A35B6C484A13C05B491680003EC85A003F17006C6C4A
+-5A6D5D6C6C4A5AD807F8495BD803FE01075B2701FFC03F5B6C90B65A013F4AC7FC6D14F8
+-010314C09026007FF8C8FC344F79CD43>I<ED0FFF92B512E0020780021F14FC91397FFE
+-03FE903A01FFF0007F4901C0EB3F804990C7121F4948EC7FC0494814FF49484913E04948
+-5B01FF5C485BA2485B5AA2486F13C04A6D1380486F1300177E94C7FC5AA291CAFC5AA215
+-08913801FFF8020713FFB54814C04A14F04AC66C7E023C6D7E4A6D7E4A6D7E7013804A15
+-C0A24A15E07013F05C18F8A491C714FCA37EA67EA46C17F880A27E18F06C5D18E06C6D15
+-C07E6E4913806C6D15006D6C495A6D6CEB7FFC6DB448485A6D90B55A010315C0010092C7
+-FC023F13FC020713C0364F7ACD43>I<121F7F7FEBFF8091B81280A45A1900606060A260
+-6060485F0180C86CC7FC007EC95A4C5A007C4B5A5F4C5A160F4C5A484B5A4C5A94C8FC16
+-FEC812014B5A5E4B5A150F4B5AA24B5AA24B5A15FFA24A90C9FCA25C5D1407A2140FA25D
+-141FA2143FA4147F5DA314FFA55BAC6D5BA2EC3FC06E5A395279D043>I<913807FFC002
+-7F13FC0103B67E010F15E090261FFC0113F8903A3FE0003FFCD97F80EB0FFE49C76C7E48
+-488048486E1380000717C04980120F18E0177FA2121F7FA27F7F6E14FF02E015C014F802
+-FE4913806C7FDBC00313009238F007FE6C02F85B9238FE1FF86C9138FFBFF06CEDFFE017
+-806C4BC7FC6D806D81010F15E06D81010115FC010781011F81491680EBFFE748018115C0
+-48D9007F14E04848011F14F048487F48481303030014F8484880161F4848020713FC1601
+-824848157F173FA2171FA2170FA218F8A27F007F17F06D151FA26C6CED3FE0001F17C06D
+-157F6C6CEDFF806C6C6C010313006C01E0EB0FFE6C01FCEBFFFC6C6CB612F06D5D010F15
+-80010102FCC7FCD9000F13C0364F7ACD43>I<91B5FC010F14F8017F14FF90B712C00003
+-D9C00F7F2707FC00017FD80FE06D7F48486E7E48C87FD87FE06E7E7F7F486C1680A66C5A
+-18006C485C6C5AC9485A5F4B5B4B5B4B5B4B5B4B90C7FC16FC4B5A4B5A16C04B5A93C8FC
+-4A5A5D14035D5D14075DA25D140FA25DAB91CAFCAAEC1FC04A7EECFFF8497FA2497FA76D
+-5BA26D5BEC3FE06E5A315479D340>63 D<BA7E19FCF1FF801AF01AFCD8000701F0C7000F
+-13FF060014C0071F7F070713F807017F737F747E747F747F86747F747F8886888688A275
+-7EA31D8087A21DC0A51DE0A387A963A31DC0A51D80A2631D00A3515AA2646264505B6264
+-505B505B5090C7FCF2FFFE4F5B07075B071F5B96B512C0060F91C8FCBB5A1AF01AC007FC
+-C9FC19805B527CD167>68 D<BC1280A5D8000701F8C7000114C0F0001F19071901851A7F
+-1A3F1A1FA2F20FE0A21A07A31A03A318F81BF01A01A497C7FC1701A317031707170F177F
+-92B6FCA59238F8007F170F170717031701A317001B3EA31B7CA395C8FCA21BFCA21BF8A2
+-1A01A31A031BF01A071A0FA21A1F1A3FF27FE0F101FF1907191F0603B5FCBCFCA21BC0A3
+-4F517CD058>I<BB12FEA5D8000701F8C700077FF0007F191F190785858586861B80A21A
+-1FA31A0FA41BC006F81307A497C7FCA31701A317031707170F177F92B6FCA59238F8007F
+-170F170717031701A31700A795C9FCB3B812F8A54A517CD055>I<B8D8C003B8FCA5D800
+-0701F8C9001FEBE000B3AE92BAFCA503F8C9121FB3B1B8D8C003B8FCA560527CD169>72
+-D<B812C0A5D8000701F8C7FCB3B3B3B2B812C0A52A527CD132>I<027FB71280A591C76C
+-90C7FCB3B3B3EA07F0EA1FFC487E487EA2B57EA44C5AA34A485B7E49495BD83FF8495BD8
+-1FE05DD80FFC011F5B2707FF807F90C8FC000190B512FC6C6C14F0011F14C0010101F8C9
+-FC39537DD145>I<B812F8A5D8000701F8CAFCB3B3A91A7CA41AFC1AF8A51901A31903A2
+-19071AF0190FA2191F193F197F19FF180360183F4DB5FCBB12E0A546527CD151>76
+-D<B600FC073FB512FE6F61A26F96B6FCA2D80007F5C00070EF01EFA202EF6DEF03CFA202
+-E76DEF078FA202E36DEF0F0FA202E16D171EA302E06D173CA26F6C1778A26F6C17F0A26F
+-6DED01E0A26F6DED03C0A36F6DED0780A26F6DED0F00A26F6D151EA26F6D5DA3706C5DA2
+-706C5DA2706D495AA2706D495AA2706D495AA3706D49C7FCA2706D131EA2706D5BA2716C
+-5BA3716C5BA271EB81E0A271EBC3C0A271EBE780A27101FFC8FCA3715BA2715BA2725AA2
+-725AA2D93FFC6F5AB74DB712FEA2725AA2725A77527CD180>I<BAFC19F819FF1AE086D8
+-000701F0C7001F13FC060113FF726C13807313C0070F13E01BF0857313F81BFCA27313FE
+-A41BFFA81BFEA31BFC61A21BF84F13F04F13E0614F13C04F13004E485A061F5B92B812F0
+-1AC04FC7FC19E003F8CBFCB3AEB812C0A550527CD15C>80 D<B912F0F0FF8019F819FF1A
+-C0D8000701F0C714F0060F7F060113FE727F737F737F85737F87A2737FA387A863A26163
+-63A24F5B4F5B4F90C8FC4F5A06035B060F13F095B512C092B8C9FC19F819E019F89226F0
+-000313FE9439007FFF80727F727F727F727F727F8684A28684A787A71D1C75133EA38575
+-137E73157C7513FC731401B86C6D9038F803F807039038FE07F07390B512E0736C14C008
+-0F1400CEEA7FFC5F537CD164>82 D<91260FFF80130791B500F85B010702FF5B011FEDC0
+-3F49EDF07F9026FFFC006D5A4801E0EB0FFD4801800101B5FC4848C87E48488149150F00
+-1F824981123F4981007F82A28412FF84A27FA26D82A27F7F6D93C7FC14C06C13F014FF15
+-F86CECFF8016FC6CEDFFC017F06C16FC6C16FF6C17C06C836C836D826D82010F82130301
+-0082021F16801400030F15C0ED007F040714E01600173F050F13F08383A200788200F882
+-A3187FA27EA219E07EA26CEFFFC0A27F6D4B13806D17006D5D01FC4B5A01FF4B5A02C04A
+-5A02F8EC7FF0903B1FFFC003FFE0486C90B65AD8FC0393C7FC48C66C14FC48010F14F048
+-D9007F90C8FC3C5479D24B>I<003FBC1280A59126C0003F9038C0007F49C71607D87FF8
+-060113C001E08449197F49193F90C8171FA2007E1A0FA3007C1A07A500FC1BE0481A03A6
+-C994C7FCB3B3AC91B912F0A553517BD05E>I<B800C00103B612FCA5D8000701F8CAEBF0
+-00F31F80B3B3B11B3FA26D97C7FC81637F1B7E6D6D17FE505A6E7E505A6E6D15076E4D5A
+-6E6D4B5A6E6D4B5A6E01F84B5A6E6DDA03FFC8FC6E6CB46CEB0FFE6F9039F001FFF8030F
+-90B65A030316C0DB007F92C9FC040F14F8DC007F13805E537CD167>I<B700FC017FB600
+-FE91B612F0A5D8003F01C0C8001F01E0C9EBF8006F71EE0FC06D7161876F1C1F6D7196C7
+-FC6F8373606D1E3E6F836D7160876F1CFC6D666F4B801F016D66704A806E525A88704A17
+-076E059F5F70021F80080F160F6E6570023F806EDC3E074CC8FC8870027E5F6EDC7C0316
+-3E7002FC804F6C167E6E1C7C700101814F6C16FC6E745B70010317016E4C6D5D060716C0
+-0580496D14036F63DDC00F16E04F6D14076F07F05BDDE01F170F6F92C76C5D1DF8DDF03E
+-6E141F6F98C9FCDDF87E16FC067C6E5C6FF1FE3EDDFCFC177E6F4A6E147C1DFFDDFFF06E
+-14FC6F62A24E816F62A270496F5BA24E817061A295C97E7061A270487090CAFCA3704870
+-5AA24D1601040360A27048705A84537DD18B>87 D<EC7FFF0107B512F0013F14FE90B77E
+-48D9E00F7F2703FE000113F0486C6D7F6EEB3FFC48826E131F83707FA36C496D7FA26C90
+-C7FC6C5AC9FCA6037FB5FC020FB6FC91B7FC01071487013FEBF0074913803901FFFC0048
+-13F0485B485B485B4890C7FC5A5BA2485AA45EA26D5C007F151D163D6C6C02797F6C6D01
+-F113F86C9026C003E1EBFFE06C9026F81FC014F06C90B5487EC6ED001F011F01FC010713
+-E0010101E090C8FC3C387CB641>97 D<EB3FF0B5FCA51203C6FCB3A4923801FFE0030F13
+-FE033FEBFFC092B612F002F301017F913AF7F8003FFEDAFFE0EB0FFF03806D7F92C76C7F
+-4A6E7F4A824A6E7FA2727EA285A28584A31A80AC1A00A44E5AA36118FF616E4A5BA26E4A
+-5B6E4A5B6F495BDACFC04990C7FCDA87F0EB7FFC913A03FE03FFF849C6B612E0496D1480
+-49011F01FCC8FC90C7000313C041547BD24B>I<913801FFF8021FEBFF8091B612F00103
+-15FC010F9038C00FFE903A1FFE0001FFD97FFC491380D9FFF05B4817C048495B5C5A485B
+-A2486F138091C7FC486F1300705A4892C8FC5BA312FFAD127F7FA27EA2EF03E06C7F1707
+-6C6D15C07E6E140F6CEE1F806C6DEC3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01F
+-F0010390B55A01001580023F49C7FC020113E033387CB63C>I<4DB47E0407B5FCA5EE00
+-1F1707B3A4913801FFE0021F13FC91B6FC010315C7010F9038E03FE74990380007F7D97F
+-FC0101B5FC49487F4849143F484980485B83485B5A91C8FC5AA3485AA412FFAC127FA36C
+-7EA37EA26C7F5F6C6D5C7E6C6D5C6C6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0F
+-FFC07FCF6D90B5128F0101ECFE0FD9003F13F8020301C049C7FC41547CD24B>I<913803
+-FFC0023F13FC49B6FC010715C04901817F903A3FFC007FF849486D7E49486D7E4849130F
+-48496D7E48178048497F18C0488191C7FC4817E0A248815B18F0A212FFA490B8FCA318E0
+-49CAFCA6127FA27F7EA218E06CEE01F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C
+-6DEC3F806D6CECFF00D91FFEEB03FE903A0FFFC03FF8010390B55A010015C0021F49C7FC
+-020113F034387CB63D>I<ED3FFC0203B5FC020F14C0023F14E09139FFF81FF0499038C0
+-3FF849EB807F49903800FFFC495A495AA2495AA2EE7FF8495AEE3FF0EE0FC093C7FCAEB7
+-12E0A526007FF8C8FCB3B3A7007FB512FEA52E547CD329>I<DA3FFF14FF0103B5D8F007
+-13C0010FDAFC1F13E0013FECFF7F90267FFC0F9038FF9FF09026FFE001EBF83F48496C13
+-E0484990387FF01F4890C7D83FF813E0489338FC0FC0F0078048486E6CC7FCA2003F82A9
+-001F5EA26C6C4A5AA26C5E6C6D495A6C6D495A6C6D485BDAFC0F5B4890B6C8FCD803EF14
+-FC01C314F02607C03F90C9FC91CBFCA2120FA37FA213F813FE90B7FC6C16F817FF18C06C
+-836C836C836D828448B9FC12074848C700031480D81FF8EC003F4848150748486F13C083
+-485A83A56D5D007F18806D5D003F18006C6C4B5AD80FFEED1FFC6C6C6CEC7FF86C01E049
+-485A6C01FE011F5B6C6CB71280010F03FCC7FC010115E0D9000F01FCC8FC3C4F7CB543>
+-I<EB3FF0B5FCA51203C6FCB3A4EE1FFC93B512C0030314F0030F8092391FE07FFC92393F
+-001FFE037C8003F07FDAF1E081ECF3C0DAF7807F8502FFC7FC5CA25CA45CB3ACB6D8F807
+-B612C0A542537BD24B>I<137F497E000313E0487FA2487FA76C5BA26C5BC613806DC7FC
+-90C8FCADEB3FF0B5FCA512017EB3B3A6B612E0A51B547BD325>I<EB3FF0B5FCA51203C6
+-FCB3A54CB512F8A59339003FFE00EF1FF0EF3FC04D5A4DC7FCEE03FEEE07F84C5A4C5AEE
+-7FC04CC8FC4B5A4B5AED0FF8ED1FE04B7E4B7EECF1FF02F37F02F77F91B6FC83159F030F
+-7F02FE80DAF8077F4A7E6F7F6F7F83707E82707F84707F707F82707F84707F177F717E4D
+-13C0B6D8F003B6FCA540537CD247>107 D<EB3FF0B5FCA512017EB3B3B3B1B612F0A51C
+-537BD225>I<D93FF0D91FFCEDFFE0B591B500C0010713FE030302F0011F6D7E030F6E01
+-7F8092271FE07FFCD9FF037F922A3F001FFE01F8007F0003027C9126FF03E080C602F06D
+-D90780137FDAF1E0038FC77FDAF3C0159EDAF7806D01BC143F07FC8102FFC75C4A5EA24A
+-5EA44A5EB3ACB6D8F807B6D8C03FB512FEA567367BB570>I<D93FF0EB1FFCB591B512C0
+-030314F0030F8092391FE07FFC92393F001FFE0003027C80C602F07FDAF1E081ECF3C0DA
+-F7807F8502FFC7FC5CA25CA45CB3ACB6D8F807B612C0A542367BB54B>I<913801FFE002
+-1F13FE91B612C0010315F0010F9038807FFC903A1FFC000FFED97FF86D6C7E49486D7F48
+-496D7F48496D7F4A147F48834890C86C7EA24883A248486F7EA3007F1880A400FF18C0AC
+-007F1880A3003F18006D5DA26C5FA26C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C
+-495BD93FFE011F90C7FC903A0FFF807FFC6D90B55A010015C0023F91C8FC020113E03A38
+-7CB643>I<903A3FF001FFE0B5010F13FE033FEBFFC092B612F002F301017F913AF7F800
+-7FFE0003D9FFE0EB1FFFC602806D7F92C76C7F4A824A6E7F4A6E7FA2717FA285187F85A4
+-721380AC1A0060A36118FFA2615F616E4A5BA26E4A5B6E4A5B6F495B6F4990C7FC03F0EB
+-FFFC9126FBFE075B02F8B612E06F1480031F01FCC8FC030313C092CBFCB1B612F8A5414D
+-7BB54B>I<90397FE003FEB590380FFF80033F13E04B13F09238FE1FF89139E1F83FFC00
+-03D9E3E013FEC6ECC07FECE78014EF150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA5
+-5CB3AAB612FCA52F367CB537>114 D<903903FFF00F013FEBFE1F90B7FC120348EB003F
+-D80FF81307D81FE0130148487F4980127F90C87EA24881A27FA27F01F091C7FC13FCEBFF
+-C06C13FF15F86C14FF16C06C15F06C816C816C81C681013F1580010F15C01300020714E0
+-EC003F030713F015010078EC007F00F8153F161F7E160FA27E17E07E6D141F17C07F6DEC
+-3F8001F8EC7F0001FEEB01FE9039FFC00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7
+-FC2C387CB635>I<143EA6147EA414FEA21301A313031307A2130F131F133F13FF5A000F
+-90B6FCB8FCA426003FFEC8FCB3A9EE07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6D
+-EBF0FC6DEBFFF86D6C5B021F5B020313802A4D7ECB34>I<D93FF8913801FFC0B50207B5
+-FCA50003ED001FC61607B3AE5FA35FA2017F5D173B177B6D6C14F3DC01E313F06D6CD907
+-C3EBFFC0903A0FFFC03F836D90B51203010114FE6D6C13F8020701E091C7FC42377BB54B
+->I<B600F00107B5FCA5000101F8C8EA7FE06C6DED3F00A2017F163E6E157E013F167C6E
+-15FC6D5E6F13016D5E8117036D5E6F13076D5E6F130F6D5E6F131F6D93C7FC815F6E6C13
+-3E177E023F147C6F13FC6E5C16816E5C16C3A26EEBE3E016E76E5C16FF6E5CA26E91C8FC
+-A26F5AA36F5AA26F5AA26F5AA26F5A6F5A40367DB447>I<B6D8E07FB5D8C003B512C0A5
+-000101F0C701F0C7381FF8006E027FED07E06C715DA26E023F150F017F705DA26E181F01
+-3F4B6C92C7FC6E606D70143E94B5FC6F177E6D4A6E137C03C001F315FC6D715B160303E0
+-01E114016D020702E05B03F013C06D71485A160F03F8D9807F13076D05F85B93381F003F
+-03FC160F027F4902FC5BDBFE3E011F131F023F04FE90C8FC167EDBFF7C010F5B6E01FCEC
+-FF3E4C6D137E6E5FA24C7F6E5F4C7F6E5FA24C7F6E5F4C147FA26E5F93C8123F6F5EA203
+-3E6FC9FC5A367DB461>I<B600F00107B5FCA5C601F8C8EA7FE06EED3F00A26D6C153E18
+-7E013F167C6E15FC6D5E6F13016D5E6F13036D5E8117076D6D5C170F6D6D5C171F6D93C7
+-FC6F5B027F143E6F137E023F147C6F13FCA26E6D5A16816EEBC1F016C36E5C16E76E5C16
+-FF6E5CA26E91C8FCA36F5AA26F5AA26F5AA26F5AA26F5AA35E150F5E151F93C9FC5DD81F
+-C0133E486C137E486C137C486C13FC5D14015D14034A5A6C48485A49485A263FC07FCAFC
+-EB81FE6CB45A6C13F000035BC690CBFC404D7DB447>121 D E
 -%EndDVIPSBitmapFont
--%DVIPSBitmapFont: Fl cmr10 10.95 86
--/Fl 86 124 df<4AB4EB0FE0021F9038E03FFC913A7F00F8FC1ED901FC90383FF03FD907
--F090397FE07F80494801FF13FF4948485BD93F805C137F0200ED7F00EF003E01FE6D91C7
--FC82ADB97EA3C648C76CC8FCB3AE486C4A7E007FD9FC3FEBFF80A339407FBF35>11
--D<4AB4FC021F13C091387F01F0903901FC0078D907F0131C4948133E494813FF49485A13
--7F1400A213FE6F5A163893C7FCAA167FB8FCA33900FE00018182B3AC486CECFF80007FD9
--FC3F13FEA32F407FBF33>I<4AB47E021F13F791387F00FFEB01F8903807F001EB0FE0EB
--1FC0EB3F80137F14008101FE80AEB8FCA3C648C77EB3AE486CECFF80007FD9FC3F13FEA3
--2F407FBF33>I<4AB4ECFF80021FD9C00F13E0913B7F01F03F80F8903C01F80078FE003C
--D907F0D93FF8130E49484948131F49484948EB7F804948484913FF137F02005CA201FE92
--C7FC6FED7F0070141C96C7FCAAF13F80BBFCA3C648C76CC7FC197F193FB3AC486C4A6CEB
--7FC0007FD9FC3FD9FE1FB5FCA348407FBF4C>I<121EEA7F80EAFFC0A9EA7F80ACEA3F00
--AC121EAB120CC7FCA8121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A4179C019>33
--D<001E130F397F803FC000FF137F01C013E0A201E013F0A3007F133F391E600F30000013
--00A401E01370491360A3000114E04913C00003130101001380481303000EEB070048130E
--0018130C0038131C003013181C1C7DBE2D>I<013F4C7ED9FFC04B7E2601E0E015072607
--C070150F48486C4B5A023E4BC7FC48486C5D48D90FC0EB01FE003ED90EF0EB07FCDA0F3F
--133E007E903A070FFFF8F8007C0200EBC1F0EE000300FC6D6C495A604D5A171F95C8FC17
--3E177E177C5F16015F007C4948485A1607007E5E003E49495A020E131F003F93C9FC6C49
--133E260F803C137E0238137C6C6C485B3901E0E0016CB448485AD93F0049133F90C74848
--EBFFC0030F903801E0E093398007C0704B4848487E4B153C033E90381F001C4B497F03FC
--133E4B150F4A48017E7F0203147C5D4A4801FCEB0380140F5D4AC7FC5C143E5C14FC5C49
--5A13034948027CEB07005C4948147E011F033E5B91C8140E013E153F017E6F5B017C9238
--0F803C4917380001706C5A49923801E0E0496FB45A6C48043FC7FC41497BC34C>37
--D<EC0FC0EC3FF0ECF878903801F01CEB03E049487E130FEC800F011F7FA2EB3F00A5EC80
--0EA25DA25DA25D6D6C5AECC1C0A2ECC38002E7C7387FFFFCEB0FEE14FC4A020713C06D48
--913801FE006E5DEF00F06D7E4D5A496C5D010F1503D91DFF4A5A013893C7FC496C6C5B01
--E0150E48486C6C131E00036E131C2607801F143C000F6E5B001F6D6C1370263F000714F0
--6F485A48D903FE5B913801FF03486D495A0487C8FCED7FCFED3FFE6F4814386D6D5AA200
--7F6E6C14786D6D6C14704B6C14F06C6C496C6C13E0001F91393E3FC0016C6C903AFC1FF0
--03C03D07FC07F007FC1F800001B5D8C001B512006C6C90C7EA7FFCD90FF8EC0FF03E437C
--C047>I<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A3120113801203
--13005A120E5A1218123812300B1C79BE19>I<1430147014E0EB01C0EB03801307EB0F00
--131E133E133C5B13F85B12015B1203A2485AA2120F5BA2121F90C7FCA25AA3123E127EA6
--127C12FCB2127C127EA6123E123FA37EA27F120FA27F1207A26C7EA212017F12007F1378
--7F133E131E7FEB07801303EB01C0EB00E014701430145A77C323>I<12C07E12707E7E12
--1E7E6C7E7F12036C7E7F12007F1378137CA27FA2133F7FA21480130FA214C0A3130714E0
--A6130314F0B214E01307A614C0130FA31480A2131F1400A25B133EA25BA2137813F85B12
--015B485A12075B48C7FC121E121C5A5A5A5A145A7BC323>I<EB03C0A2805CA600F0140F
--00FC143F00FE147F00FF14FF393FC3C3FC390FE187F03903F18FC03900FDBF00EB3FFCEB
--0FF0EB03C0EB0FF0EB3FFCEBFDBF3903F18FC0390FE187F0393FC3C3FC39FF03C0FF00FE
--147F00FC143F00F0140F00001400A6805CA220277AC32D>I<121EEA7F8012FF13C0A213
--E0A3127FEA1E601200A413E013C0A312011380120313005A120E5A1218123812300B1C79
--8919>44 D<B512FEA617067F961E>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A79
--8919>I<ED0180ED03C01507A21680150FA216005DA2151E153EA2153C157CA2157815F8
--A25D1401A25D1403A25D1407A25D140FA24AC7FCA2141E143EA2143C147CA2147814F8A2
--5C1301A25C1303A25C1307A25C130FA291C8FC5BA2131E133EA25BA2137813F8A25B1201
--A25B1203A25B1207A25B120FA290C9FC5AA2121E123EA2123C127CA2127812F8A25A1260
--225B7BC32D>I<EB01FE90380FFFC090383F03F090387C00F849137C48487F48487F4848
--EB0F80A2000F15C04848EB07E0A3003F15F0A290C712034815F8A64815FCB3A26C15F8A5
--6C6CEB07F0A3001F15E0A36C6CEB0FC0A26C6CEB1F80000315006C6C133E6C6C5B017C5B
--90383F03F090380FFFC0D901FEC7FC263F7DBC2D>I<EB01C013031307131F137FEA07FF
--B5FC139FEAF81F1200B3B3ACEB7FF0B612F8A31D3D78BC2D>I<EB07FC90383FFF8090B5
--12E03903F01FF83907C007FC390F0001FE001E6D7E001C1580003CEC7FC05AED3FE01270
--B4FC6DEB1FF07FA56C5A6CC7FC120CC813E0153FA216C0157F168015FF16004A5A5D4A5A
--4A5A5D4A5A4A5A4AC7FC147E147C5C495A495A495A495A49C71270133E133C5B4914E048
--5A485A485A48C7120148B6FCA25A4815C0B7FCA3243D7CBC2D>I<EB07FC90383FFF8090
--38F80FE03901E003F839078001FCD80F007F000E6D7E001E1580D81F80137F486C14C07F
--A27F5BA2121F6C5AC8138015FF1600A24A5AA24A5A5DEC07E04A5A023FC7FCEB1FFCECFF
--809038000FE0EC07F86E7E6E7E6E7E1680ED7FC0A216E0153FA216F0A2120C123F487E48
--7EA316E0A249137F6CC713C01278EDFF807E6C4913006C495A3907C007FC3903F80FF0C6
--B55A013F1380D907F8C7FC243F7CBC2D>I<150E151E153EA2157EA215FE1401A21403EC
--077E1406140E141CA214381470A214E0EB01C0A2EB0380EB0700A2130E5BA25B5BA25B5B
--1201485A90C7FC5A120E120C121C5AA25A5AB8FCA3C8EAFE00AC4A7E49B6FCA3283E7EBD
--2D>I<00061403D80780131F01F813FE90B5FC5D5D5D15C092C7FC14FCEB3FE090C9FCAC
--EB01FE90380FFF8090383E03E090387001F8496C7E49137E497F90C713800006141FC813
--C0A216E0150FA316F0A3120C127F7F12FFA416E090C7121F12FC007015C012780038EC3F
--80123C6CEC7F00001F14FE6C6C485A6C6C485A3903F80FE0C6B55A013F90C7FCEB07F824
--3F7CBC2D>I<EC1FE0ECFFF8903803F03E90380FC00F90391F000780133E017EEB1FC049
--133F4848137F12035B12074848EB3F80ED1F00001F91C7FC5BA2123FA3485AA214FE9038
--87FF8039FF8F07E090389C01F09038B800FC01B0137E13F0497F16804914C0A2ED1FE0A3
--4914F0A5127FA6123F6D14E0A2121FED3FC0A26C6C1480A20007EC7F006C6C137E6C6C5B
--6C6C485A90387E07F06DB45A010F1380D903FCC7FC243F7CBC2D>I<1238123C123F90B6
--12FCA316F85A16F016E00078C712010070EC03C0ED078016005D48141E151C153C5DC812
--7015F04A5A5D14034A5A92C7FC5C141EA25CA2147C147814F8A213015C1303A31307A313
--0F5CA2131FA6133FAA6D5A0107C8FC26407BBD2D>I<EB03FC90381FFF8090387C07E090
--38F001F83901E0007C48487F48487F48C7FCED0F80121E16C0003E1407A4123FA26DEB0F
--807F6C6C131F6D140001FC133E6C6C5B9038FF80786C6D5A6CEBF3E06CEBFF806C91C7FC
--133F6D13C06D7F013F13F801787F48486C7E3903E01FFF48486C1380260F800313C04848
--7E489038007FE0003E143F007E141F007CEC0FF01507481403A31501A46C15E0007C1403
--A2007E15C06C14076CEC0F806DEB1F006C6C133ED807F05B3901FC03F86CB512E0011F13
--80D903FCC7FC243F7CBC2D>I<EB03FCEB1FFF90387E07C09038FC03F048486C7E48486C
--7E4848137C000F147E4848137F81003F15805B007F15C0A2151F12FF16E0A516F0A5127F
--153FA36C7EA2001F147F120F6C6C13FF6D13DF000313013900F8039F90387E0F1FD91FFE
--13E0EB07F090C7FCA2ED3FC0A41680157FD80F801400487E486C13FEA24A5A5D49485AEB
--8007391E000FE0001F495A260FC07FC7FC3803FFFE6C13F838003FC0243F7CBC2D>I<12
--1EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121EEA7F80A2EAFFC0A4EA7F80A2EA1E00
--0A2779A619>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121E127FEAFF80A213
--C0A4127F121E1200A412011380A3120313005A1206120E120C121C5A1230A20A3979A619
-->I<007FB912E0BA12F0A26C18E0CDFCAE007FB912E0BA12F0A26C18E03C167BA147>61
--D<EB1FF890B5FC3903E01FC0390F0007F0001EEB03F848EB01FC4814FE140000FE14FF7E
--7FA46CC7FC123EC7EA01FEA2EC03FCEC07F815F0EC0FC0EC1F80EC3F00143E5C147814F8
--5C13015CA2495AA25CAB91C7FC90C8FCA8EB0780EB1FE0A2497EA46D5AA2EB078020407B
--BF2B>63 D<15074B7EA34B7EA34B7EA34B7EA34B7E15E7A2913801C7FC15C3A291380381
--FEA34AC67EA3020E6D7EA34A6D7EA34A6D7EA34A6D7EA34A6D7EA349486D7E91B6FCA249
--819138800001A249C87EA24982010E157FA2011E82011C153FA2013C820138151FA20178
--82170F13FC00034C7ED80FFF4B7EB500F0010FB512F8A33D417DC044>65
--D<B712FCEEFF8017F00001903980000FF86C6CC7EA03FE707E701380EF7FC0EF3FE0A2EF
--1FF0A218F8A3170F171FA318F0A2EF3FE0177F18C0EFFF804C1300EE03FCEE0FF8EE7FE0
--91B6C7FC17E091C7EA07FCEE01FE933800FF80EF7FC0EF3FE0EF1FF018F8170F18FC1707
--A218FEA718FC170FA2EF1FF818F0173FEF7FE0EFFFC00403138048486C90380FFE00B85A
--17E094C7FC373E7DBD40>I<DB3FF01306912603FFFE130E020F9038FF801E913A3FF007
--E03E9139FF8000F8D903FEC7EA7C7ED907F8EC1EFE4948140FD93FE0140749481403495A
--91C812014848150012034848167E5B000F173EA24848161EA2123F5B180E127FA3491600
--12FFAC127F7F180EA2123FA27F001F171E181C6C7EA20007173C6D16386C6C1678000117
--706C6C16F06EEC01E06D6C15C06D6C1403D90FF0EC07806D6CEC1F00D903FE143E902600
--FF8013F891393FF007F0020FB512C0020391C7FC9138003FF037427BBF42>I<B712FCEE
--FF8017E000019039C0001FF86C6C48EB03FEEE00FF717E717EEF0FE084717E717E170184
--717EA21980187F19C0A3F03FE0A519F0AB19E0A5F07FC0A21980A218FF19004D5AA24D5A
--6017074D5A4D5AEF7FC04DC7FCEE03FE48486CEB1FF8B85A178004FCC8FC3C3E7DBD45>
--I<B912E0A300019038C000016C6C48EB001FEF0FF01703A217011700A31870A41838161C
--A41800A2163CA2167C16FC150391B5FCA3EC80031500167C163CA2161CA21807A3180E93
--C7FCA4181E181CA2183CA2187CA218F8170117031707171F48486CEB01FFB912F0A3383E
--7DBD3E>I<B91280A300019038C000036C6C48EB007FEF1FC0170F1707A21703A31701A4
--EF00E0A21638A31800A31678A216F81501150791B5FCA3EC8007150115001678A21638A6
--93C8FCAF3801FFE0B612F0A3333E7DBD3B>I<DB3FE0130C912603FFFE131C021F9038FF
--803C913A7FF00FC07C9139FF0001F0D903FC90380078FC4948143DD91FE0141F4948140F
--4948140701FF15034890C8FC491501485A000716005B000F177C5B001F173CA2485AA218
--1C127FA25B95C7FC12FFAB041FB512F0127FA26D9139000FFE00EF03FC123FA27F121FA2
--6C7EA212077F12036C7E7F6C7F6D6C14076D7E6D6C140FD907F8141ED903FEEC3C7C9026
--00FF80EBF83C913A7FF007F01C021FB5EAC00C020391C8FC9138003FF03C427BBF47>I<
--B6D8C01FB512F8A3000101E0C7383FFC0026007F80EC0FF0B3A691B7FCA30280C7120FB3
--A92601FFE0EC3FFCB6D8C01FB512F8A33D3E7DBD44>I<B612F0A3C6EBF000EB3FC0B3B3
--B2EBFFF0B612F0A31C3E7EBD21>I<011FB512FCA3D9000713006E5A1401B3B3A6123FEA
--7F80EAFFC0A44A5A1380D87F005B007C130700385C003C495A6C495A6C495A2603E07EC7
--FC3800FFF8EB3FC026407CBD2F>I<B600C090387FFFFCA3000101E0C7000F138026007F
--80913807FE0018F818E0604D5A4DC7FC173E5F5F4C5A4C5A4C5A4C5A4CC8FC163E5E5E4B
--5A4B5AED07804B7E151F4B7E4B7E15FF913881EFF8913883C7FCEC878791388F03FE9138
--9E01FF14BCDAF8007F4A6D7E5C4A6D7E4A6D7EA2707E707EA2707E707EA2707F717E8417
--3F717E717EA2717E848419802601FFE04A13C0B600C090B6FCA3403E7DBD47>I<B612F8
--A3000101E0C9FC38007F80B3B0EF0380A517071800A45FA35FA25F5F5F4C5A160748486C
--133FB8FCA3313E7DBD39>I<B500C093383FFFF0A300016D93387FF800D8007F18E0D977
--F016EFA3D973F8ED01CFA2D971FCED038FA3D970FEED070FA26E150E80A26E6C141CA36E
--6C1438A26E6C1470A36E6C14E0A26E6CEB01C0A36E6CEB0380A36E6CEB0700A2037F130E
--A36F6C5AA26F6C5AA36F6C5AA25FED07F0A2923803F9C0A36FB45AA26F90C7FCA213F848
--6C147ED807FFEF3FF8B500F8013C011FB512F0A34C3E7DBD53>I<B56C91B512F88080D8
--007F030713006EEC01FC6E6E5A1870EB77FCEB73FEA2EB71FF01707FA26E7E6E7EA26E7E
--6E7EA26E7E6E7EA26E7E6E7FA26F7E6F7EA26F7E6F7EA26F7E6F7EA26F7E6F1380A2EE7F
--C0EE3FE0A2EE1FF0EE0FF8A2EE07FCEE03FEA2EE01FF7013F0A2177F173FA2171F170FA2
--170701F81503487ED807FF1501B500F81400A218703D3E7DBD44>I<ED7FE0913807FFFE
--91391FC03F8091397E0007E04948EB03F8D907F0EB00FE4948147F49486E7E49486E7E49
--C86C7E01FE6F7E00018349150300038348486F7EA248486F7EA2001F188049167F003F18
--C0A3007F18E049163FA300FF18F0AC007F18E06D167FA4003F18C0A26C6CEEFF80A36C6C
--4B1300A26C6C4B5A00035F6D150700015F6C6C4B5A6D5E6D6C4A5A6D6C4A5A6D6C4AC7FC
--6D6C14FED901FCEB03F8D9007FEB0FE091391FC03F80912607FFFEC8FC9138007FE03C42
--7BBF47>I<B712F8EEFF8017E000019039C0003FF86C6C48EB07FCEE01FE707EEF7F80EF
--3FC018E0A2EF1FF0A218F8A818F0A2EF3FE0A218C0EF7F80EFFF004C5AEE07FCEE3FF091
--B612C04CC7FC0280C9FCB3A73801FFE0B612C0A3353E7DBD3E>I<ED7FE0913807FFFE91
--391FC03F8091397F000FE0D901FCEB03F8D907F0EB00FE4948147F49486E7E49486E7E49
--C86C7E498248486F7E49150300038348486F7EA2000F834981001F1880A24848EE7FC0A3
--007F18E0A249163FA200FF18F0AC007F18E0A26D167FA3003F18C0A26C6CEEFF80A3000F
--18006D5D0007DA0F805B6C6C90393FE003FCED70706C6C496C485A6C6C48486C485A017F
--D9800E5BD93F819038061FC0D91FC19038073F80D90FE14AC7FCD907F1EB03FE902601FD
--C013F8903A007EE007E091271FF03FC013180207B5FC9139007FE1E0DB00011438837113
--78A2706C13F0EFFF0318FFA27113E0A37113C0711380711300715AEF01F83D527BBF47>
--I<B712C016FCEEFF800001D9C00013E06C6C48EB1FF0EE07FCEE01FE707E84717EA2717E
--A284A760177F606017FF95C7FCEE01FCEE07F8EE1FE0EEFF8091B500FCC8FC16F0913880
--01FCED003FEE1FC0707E707E83160383160183A383A484A4F0C004190EA28218E0057F13
--1E2601FFE0161CB600C0EB3FF094381FF83805071370CA3801FFE09438003F803F407DBD
--43>I<D907FC130C90391FFF801C017FEBF03C3901FC03F83A03F0007E7CD807C0EB1FFC
--4848130F001F140748C71203003E1401007E1400A2007C157C12FCA2163CA36C151CA27E
--A26C6C14007F7FEA3FF8EBFF806C13F86CEBFF806C14F06C14FC6C14FF6C15C0013F14E0
--010714F0EB007F020713F89138007FFC150FED07FE15031501ED00FFA200E0157FA3163F
--A27EA3163E7E167E6C157C6C15FC6C15F86D13016DEB03F06DEB07E0D8F9FCEB0FC03AF0
--7F803F8090391FFFFE00D8E00713F839C0007FC028427BBF33>I<003FB91280A3903AF0
--007FE001018090393FC0003F48C7ED1FC0007E1707127C00781703A300701701A548EF00
--E0A5C81600B3B14B7E4B7E0107B612FEA33B3D7DBC42>I<B600C090B512F8A3000101E0
--C70007130026007F80EC01FC715A1870B3B3A4013F16F06E5DA21701011F5E80010F1503
--6E4A5A010793C7FC6D6C5C6D6C141E6D6C5C027F14F86E6C485A91390FF00FE00203B512
--80020049C8FCED1FF03D407DBD44>I<B691380FFFFEA3000301E0020113E06C01809138
--007F806CEF3F00017F163E181C6E153C013F1638A26E1578011F1670A26D6C5DA26E1401
--01075EA26E140301035EA26D6C4AC7FCA2806D150EA26F131E027F141CA26F133C023F14
--38A26E6C5BA26F13F0020F5CA2EDF80102075CA26E6C485AA2EDFE07020191C8FCA26F5A
--6E130EA2ED7F9CA216DCED3FF8A36F5AA36F5AA26F5AA36F5A3F407EBD44>I<B500FE01
--7FB5D88007B5FCA3000301C0010101E0C713F86C90C849EC3FE07148EC0F807E7215006E
--143F017F190E84A26D6C60A24D7E6D6C60A2EFE7F86D6C60A2933801C3FC6E18F0010761
--04037F6E0281140101036104077F17006D6C4D5AA2040EEB7F806D6C4DC7FCA24CEB3FC0
--DA7F80160EA24CEB1FE003C0161E023F171C047814F0DBE070010F133C021F173804F014
--F84C1307DA0FF05EA2DBF1C0EB03FCDA07F95EA2DBFB80EB01FEDA03FF6F5AA293C8FCA2
--6E5FA24B157F020094C8FCA24B81037C153EA20378151E0338151C58407EBD5D>I<007F
--B5D8C003B512E0A3C649C7EBFC00D93FF8EC3FE06D48EC1F806D6C92C7FC171E6D6C141C
--6D6C143C5F6D6C14706D6D13F04C5ADA7FC05B023F13036F485ADA1FF090C8FC020F5BED
--F81E913807FC1C163C6E6C5A913801FF7016F06E5B6F5AA26F7E6F7EA28282153FED3BFE
--ED71FF15F103E07F913801C07F0203804B6C7EEC07004A6D7E020E6D7E5C023C6D7E0238
--6D7E14784A6D7E4A6D7F130149486E7E4A6E7E130749C86C7E496F7E497ED9FFC04A7E00
--076DEC7FFFB500FC0103B512FEA33F3E7EBD44>I<B66C0103B51280A3000101F0C8EBF8
--006C6C48ED3FC0725A013F041EC7FC6D7E606D6C15386D6C1578606D6C5D6E14016D5E6D
--6D1303606E6C49C8FC6E6C5B170E6E6C131E171C6E6C5B6E6C137817706E6C13F06F5B6E
--13016EEB83C05FED7FC7DB3FE7C9FC16EFED1FFE5E150F6F5AB3A4ED1FFC020FB512FCA3
--413E7FBD44>I<003FB712F8A391C7EA1FF013F801E0EC3FE00180EC7FC090C8FC003EED
--FF80A2003C4A1300007C4A5A12784B5A4B5AA200704A5AA24B5A4B5AA2C8485A4A90C7FC
--A24A5A4A5AA24A5AA24A5A4A5AA24A5A4A5AA24990C8FCA2495A4948141CA2495A495AA2
--495A495A173C495AA24890C8FC485A1778485A484815F8A24848140116034848140F4848
--143FED01FFB8FCA32E3E7BBD38>I<EAFFFCA4EAF000B3B3B3B3ABEAFFFCA40E5B77C319>
--I<486C13C00003130101001380481303000EEB070048130E0018130C0038131C00301318
--0070133800601330A300E01370481360A400CFEB678039FFC07FE001E013F0A3007F133F
--A2003F131F01C013E0390F0007801C1C73BE2D>I<EAFFFCA4EA003CB3B3B3B3ABEAFFFC
--A40E5B7FC319>I<EB0FF8EBFFFE3903F01F8039078007E0000F6D7E9038E001F8D81FF0
--7F6E7EA3157F6C5AEA0380C8FCA4EC1FFF0103B5FC90381FF87FEB7F803801FC00EA07F8
--EA0FE0485A485AA248C7FCEE038012FEA315FFA3007F5BEC03BF3B3F80071F8700261FC0
--0E13CF3A07F03C0FFE3A01FFF807FC3A003FC001F0292A7DA82D>97
--D<EA01FC12FFA3120712031201B1EC03FC91381FFF8091387C07E09039FDE001F09039FF
--C000FC4A137E91C77E49158049141F17C0EE0FE0A217F0A2160717F8AA17F0A2160FA217
--E0161F17C06D1580EE3F006D5C6E13FE9039F3C001F89039F1E003F09039E0780FC09026
--C03FFFC7FCC7EA07F82D407EBE33>I<49B4FC010F13E090383F00F8017C131E4848131F
--4848137F0007ECFF80485A5B121FA24848EB7F00151C007F91C7FCA290C9FC5AAB6C7EA3
--003FEC01C07F001F140316806C6C13076C6C14000003140E6C6C131E6C6C137890383F01
--F090380FFFC0D901FEC7FC222A7DA828>I<ED01FC15FFA3150715031501B114FF010713
--E190381F80F990387E003D49131FD803F81307485A49130348481301121F123F5B127FA2
--90C7FCA25AAA7E7FA2123FA26C7E000F14037F000714076C6C497E6C6C497ED8007C0179
--13F890383F01F190380FFFC1903A01FE01FC002D407DBE33>I<EB01FE90380FFFC09038
--3F03F09038FC01F848486C7E4848137E48487F000F158049131F001F15C04848130FA212
--7F16E090C7FCA25AA290B6FCA290C9FCA67EA27F123F16E06C7E1501000F15C06C6C1303
--6DEB07806C6C1400C66C131E017E5B90381F80F8903807FFE0010090C7FC232A7EA828>
--I<EC1FC0EC7FF8903801F83C903807E07E90380FC0FFEB1FC1EB3F811401137FEC00FE01
--FE137C1500AEB6FCA3C648C7FCB3AE487E007F13FFA320407EBF1C>I<167C903903F801
--FF903A1FFF078F8090397E0FDE1F9038F803F83803F001A23B07E000FC0600000F6EC7FC
--49137E001F147FA8000F147E6D13FE00075C6C6C485AA23901F803E03903FE0FC026071F
--FFC8FCEB03F80006CAFC120EA3120FA27F7F6CB512E015FE6C6E7E6C15E06C810003813A
--0FC0001FFC48C7EA01FE003E140048157E825A82A46C5D007C153E007E157E6C5D6C6C49
--5A6C6C495AD803F0EB0FC0D800FE017FC7FC90383FFFFC010313C0293D7EA82D>I<EA01
--FC12FFA3120712031201B1EC01FE913807FFC091381E07E091387803F09138E001F8D9FD
--C07F148001FF6D7E91C7FCA25BA25BB3A6486C497EB5D8F87F13FCA32E3F7DBE33>I<EA
--01E0EA07F8A2487EA46C5AA2EA01E0C8FCACEA01FC127FA3120712031201B3AC487EB512
--F0A3143E7DBD1A>I<1478EB01FEA2EB03FFA4EB01FEA2EB00781400AC147FEB7FFFA313
--017F147FB3B3A5123E127F38FF807E14FEA214FCEB81F8EA7F01387C03F0381E07C0380F
--FF803801FC00185185BD1C>I<EA01FC12FFA3120712031201B292B51280A392383FFC00
--16E0168093C7FC153C5D5D4A5AEC07C04A5A4AC8FC143E147F4A7E13FD9038FFDFC0EC9F
--E0140F496C7E01FC7F496C7E1401816E7E81826F7E151F826F7EA282486C14FEB539F07F
--FFE0A32B3F7EBE30>I<EA01FC12FFA3120712031201B3B3B1487EB512F8A3153F7DBE1A>
--I<2701F801FE14FF00FF902707FFC00313E0913B1E07E00F03F0913B7803F03C01F80007
--903BE001F87000FC2603F9C06D487F000101805C01FBD900FF147F91C75B13FF4992C7FC
--A2495CB3A6486C496CECFF80B5D8F87FD9FC3F13FEA347287DA74C>I<3901F801FE00FF
--903807FFC091381E07E091387803F000079038E001F82603F9C07F0001138001FB6D7E91
--C7FC13FF5BA25BB3A6486C497EB5D8F87F13FCA32E287DA733>I<14FF010713E090381F
--81F890387E007E01F8131F4848EB0F804848EB07C04848EB03E0000F15F04848EB01F8A2
--003F15FCA248C812FEA44815FFA96C15FEA36C6CEB01FCA3001F15F86C6CEB03F0A26C6C
--EB07E06C6CEB0FC06C6CEB1F80D8007EEB7E0090383F81FC90380FFFF0010090C7FC282A
--7EA82D>I<3901FC03FC00FF90381FFF8091387C0FE09039FDE003F03A03FFC001FC6C49
--6C7E91C7127F49EC3F805BEE1FC017E0A2EE0FF0A3EE07F8AAEE0FF0A4EE1FE0A2EE3FC0
--6D1580EE7F007F6E13FE9138C001F89039FDE007F09039FC780FC0DA3FFFC7FCEC07F891
--C9FCAD487EB512F8A32D3A7EA733>I<02FF131C0107EBC03C90381F80F090397F00387C
--01FC131CD803F8130E4848EB0FFC150748481303121F485A1501485AA448C7FCAA6C7EA3
--6C7EA2001F14036C7E15076C6C130F6C7E6C6C133DD8007E137990383F81F190380FFFC1
--903801FE0190C7FCAD4B7E92B512F8A32D3A7DA730>I<3901F807E000FFEB1FF8EC787C
--ECE1FE3807F9C100031381EA01FB1401EC00FC01FF1330491300A35BB3A5487EB512FEA3
--1F287EA724>I<90383FC0603901FFF8E03807C03F381F000F003E1307003C1303127C00
--78130112F81400A27E7E7E6D1300EA7FF8EBFFC06C13F86C13FE6C7F6C1480000114C0D8
--003F13E0010313F0EB001FEC0FF800E01303A214017E1400A27E15F07E14016C14E06CEB
--03C0903880078039F3E01F0038E0FFFC38C01FE01D2A7DA824>I<131CA6133CA4137CA2
--13FCA2120112031207001FB512C0B6FCA2D801FCC7FCB3A215E0A912009038FE01C0A2EB
--7F03013F138090381F8700EB07FEEB01F81B397EB723>I<D801FC14FE00FF147FA30007
--14030003140100011400B3A51501A31503120015076DEB06FF017E010E13806D4913FC90
--381FC078903807FFE00100903880FE002E297DA733>I<B539E00FFFE0A32707FE000313
--006C48EB00FC5E00015D7F00005DA26D13016D5CA26D6C485AA2ECC007011F91C7FCA290
--380FE00EA2ECF01E0107131CA26D6C5AA2ECFC7801011370A2ECFEF001005BA2EC7FC0A3
--6E5AA26EC8FCA3140E2B287EA630>I<B53BC3FFFE03FFF8A3290FFE003FE00013C06C48
--6D48EB3F806C4817006D010F141E00016F131C15076D163C00004A6C1338A2017F5E4B7E
--151DD93F805DED3DFC1538D91FC04A5AED78FE9238707E03D90FE0017F5BEDE03F02F014
--0701070387C7FC9138F1C01F02F9148F010315CE9138FB800F02FF14DE6D15FCED00076D
--5DA24A1303027E5CA2027C1301023C5C023813003D287EA642>I<B539F01FFFE0A30003
--D9C00F1300C690388007F8D97F0013E002805BD93FC05B011F49C7FC90380FE00EECF01E
--6D6C5A01035B6D6C5A6E5AEB00FF6E5A6E5A81141F814A7E81147BECF1FC903801E1FEEC
--C0FF01037F49486C7ED90F007F011E6D7E013E130F496D7E01FC80486C80000F4A7EB539
--803FFFF8A32D277FA630>I<B539E00FFFE0A32707FE000313006C48EB01FC6F5A00015D
--7F00005DA2017F495AA2EC8003013F5CA26D6C48C7FCA26E5A010F130EA26D6C5AA2ECF8
--3C01031338A26D6C5AA2ECFEF001005BA2EC7FC0A36E5AA36EC8FCA2140EA2141E141C14
--3C1438A2147800181370127EB45BA2495AA248485AD87E07C9FCEA780EEA3C3CEA1FF8EA
--07E02B3A7EA630>I<001FB61280A2EBE0000180140049485A001E495A121C4A5A003C49
--5A141F00385C4A5A147F5D4AC7FCC6485AA2495A495A130F5C495A90393FC00380A2EB7F
--80EBFF005A5B484813071207491400485A48485BA248485B4848137F00FF495A90B6FCA2
--21277EA628>I<B812F0A22C0280982D>I E
+-%DVIPSBitmapFont: Fl cmr10 10.95 51
+-/Fl 51 122 df<EC03FE91383FFF809138FE03E0903903F800F0D90FE013384948137C90
+-393F8001FE90387F00035B5BA2485A6F5AED007093C7FCAA16FEB7FCA33901FC00031501
+-1500B3AC486C497EB5D8F87F13FCA32E407EBF33>12 D<1430147014E0EB01C0EB038013
+-07EB0F00131E133E133C5B13F85B12015B1203A2485AA2120F5BA2121F90C7FCA25AA312
+-3E127EA6127C12FCB2127C127EA6123E123FA37EA27F120FA27F1207A26C7EA212017F12
+-007F13787F133E131E7FEB07801303EB01C0EB00E014701430145A77C323>40
+-D<12C07E12707E7E121E7E6C7E7F12036C7E7F12007F1378137CA27FA2133F7FA2148013
+-0FA214C0A3130714E0A6130314F0B214E01307A614C0130FA31480A2131F1400A25B133E
+-A25BA2137813F85B12015B485A12075B48C7FC121E121C5A5A5A5A145A7BC323>I<B512
+-FEA617067F961E>45 D<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A798919>I<EB01
+-FE90380FFFC090383F03F090387C00F849137C48487F48487F4848EB0F80A2000F15C048
+-48EB07E0A3003F15F0A290C712034815F8A64815FCB3A26C15F8A56C6CEB07F0A3001F15
+-E0A36C6CEB0FC0A26C6CEB1F80000315006C6C133E6C6C5B017C5B90383F03F090380FFF
+-C0D901FEC7FC263F7DBC2D>48 D<EB01C013031307131F137FEA07FFB5FC139FEAF81F12
+-00B3B3ACEB7FF0B612F8A31D3D78BC2D>I<EB07FC90383FFF8090B512E03903F01FF839
+-07C007FC390F0001FE001E6D7E001C1580003CEC7FC05AED3FE01270B4FC6DEB1FF07FA5
+-6C5A6CC7FC120CC813E0153FA216C0157F168015FF16004A5A5D4A5A4A5A5D4A5A4A5A4A
+-C7FC147E147C5C495A495A495A495A49C71270133E133C5B4914E0485A485A485A48C712
+-0148B6FCA25A4815C0B7FCA3243D7CBC2D>I<EB07FC90383FFF809038F80FE03901E003
+-F839078001FCD80F007F000E6D7E001E1580D81F80137F486C14C07FA27F5BA2121F6C5A
+-C8138015FF1600A24A5AA24A5A5DEC07E04A5A023FC7FCEB1FFCECFF809038000FE0EC07
+-F86E7E6E7E6E7E1680ED7FC0A216E0153FA216F0A2120C123F487E487EA316E0A249137F
+-6CC713C01278EDFF807E6C4913006C495A3907C007FC3903F80FF0C6B55A013F1380D907
+-F8C7FC243F7CBC2D>I<150E151E153EA2157EA215FE1401A21403EC077E1406140E141C
+-A214381470A214E0EB01C0A2EB0380EB0700A2130E5BA25B5BA25B5B1201485A90C7FC5A
+-120E120C121C5AA25A5AB8FCA3C8EAFE00AC4A7E49B6FCA3283E7EBD2D>I<00061403D8
+-0780131F01F813FE90B5FC5D5D5D15C092C7FC14FCEB3FE090C9FCACEB01FE90380FFF80
+-90383E03E090387001F8496C7E49137E497F90C713800006141FC813C0A216E0150FA316
+-F0A3120C127F7F12FFA416E090C7121F12FC007015C012780038EC3F80123C6CEC7F0000
+-1F14FE6C6C485A6C6C485A3903F80FE0C6B55A013F90C7FCEB07F8243F7CBC2D>I<EC1F
+-E0ECFFF8903803F03E90380FC00F90391F000780133E017EEB1FC049133F4848137F1203
+-5B12074848EB3F80ED1F00001F91C7FC5BA2123FA3485AA214FE903887FF8039FF8F07E0
+-90389C01F09038B800FC01B0137E13F0497F16804914C0A2ED1FE0A34914F0A5127FA612
+-3F6D14E0A2121FED3FC0A26C6C1480A20007EC7F006C6C137E6C6C5B6C6C485A90387E07
+-F06DB45A010F1380D903FCC7FC243F7CBC2D>I<1238123C123F90B612FCA316F85A16F0
+-16E00078C712010070EC03C0ED078016005D48141E151C153C5DC8127015F04A5A5D1403
+-4A5A92C7FC5C141EA25CA2147C147814F8A213015C1303A31307A3130F5CA2131FA6133F
+-AA6D5A0107C8FC26407BBD2D>I<EB03FC90381FFF8090387C07E09038F001F83901E000
+-7C48487F48487F48C7FCED0F80121E16C0003E1407A4123FA26DEB0F807F6C6C131F6D14
+-0001FC133E6C6C5B9038FF80786C6D5A6CEBF3E06CEBFF806C91C7FC133F6D13C06D7F01
+-3F13F801787F48486C7E3903E01FFF48486C1380260F800313C048487E489038007FE000
+-3E143F007E141F007CEC0FF01507481403A31501A46C15E0007C1403A2007E15C06C1407
+-6CEC0F806DEB1F006C6C133ED807F05B3901FC03F86CB512E0011F1380D903FCC7FC243F
+-7CBC2D>I<EB03FCEB1FFF90387E07C09038FC03F048486C7E48486C7E4848137C000F14
+-7E4848137F81003F15805B007F15C0A2151F12FF16E0A516F0A5127F153FA36C7EA2001F
+-147F120F6C6C13FF6D13DF000313013900F8039F90387E0F1FD91FFE13E0EB07F090C7FC
+-A2ED3FC0A41680157FD80F801400487E486C13FEA24A5A5D49485AEB8007391E000FE000
+-1F495A260FC07FC7FC3803FFFE6C13F838003FC0243F7CBC2D>I<121EEA7F80A2EAFFC0
+-A4EA7F80A2EA1E00C7FCB3121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A2779A619>I<DB
+-3FF01306912603FFFE130E020F9038FF801E913A3FF007E03E9139FF8000F8D903FEC7EA
+-7C7ED907F8EC1EFE4948140FD93FE0140749481403495A91C81201484815001203484816
+-7E5B000F173EA24848161EA2123F5B180E127FA349160012FFAC127F7F180EA2123FA27F
+-001F171E181C6C7EA20007173C6D16386C6C1678000117706C6C16F06EEC01E06D6C15C0
+-6D6C1403D90FF0EC07806D6CEC1F00D903FE143E902600FF8013F891393FF007F0020FB5
+-12C0020391C7FC9138003FF037427BBF42>67 D<B712FCEEFF8017E000019039C0001FF8
+-6C6C48EB03FEEE00FF717E717EEF0FE084717E717E170184717EA21980187F19C0A3F03F
+-E0A519F0AB19E0A5F07FC0A21980A218FF19004D5AA24D5A6017074D5A4D5AEF7FC04DC7
+-FCEE03FE48486CEB1FF8B85A178004FCC8FC3C3E7DBD45>I<B912E0A300019038C00001
+-6C6C48EB001FEF0FF01703A217011700A31870A418381638A41800A21678A216F8150115
+-0791B5FCA3EC8007150115001678A21638A2180EA3181C93C7FCA4183C1838A21878A318
+-F8EF01F0A21707170F173F48486CEB03FFB912E0A3373E7DBD3E>I<B6D8C01FB512F8A3
+-000101E0C7383FFC0026007F80EC0FF0B3A691B7FCA30280C7120FB3A92601FFE0EC3FFC
+-B6D8C01FB512F8A33D3E7DBD44>72 D<B612F0A3C6EBF000EB3FC0B3B3B2EBFFF0B612F0
+-A31C3E7EBD21>I<011FB512FCA3D9000713006E5A1401B3B3A6123FEA7F80EAFFC0A44A
+-5A1380D87F005B007C130700385C003C495A6C495A6C495A2603E07EC7FC3800FFF8EB3F
+-C026407CBD2F>I<B612F8A3000101E0C9FC38007F80B3B0EF0380A517071800A45FA35F
+-A25F5F5F4C5A160748486C133FB8FCA3313E7DBD39>76 D<B500C093B512C0A300016D4B
+-EBE000D8007F1880D977F0ED03BFA3D973F8ED073FA3D971FC150EA2D970FE151CA3027F
+-1538A36E6C1470A36E6C14E0A26E6CEB01C0A36E6CEB0380A36E6CEB0700A26E6C130EA3
+-6E6C5BA3037F5BA26F6C5AA36F6C5AA392380FE1C0A3923807F380A26FB4C7FCA36F5AA2
+-13F8486C6D5AD807FFEFFFE0B500F80178017FEBFFC0A34A3E7CBD53>I<B56C91B512F8
+-8080D8007F030713006EEC01FC6E6E5A1870EB77FCEB73FEA2EB71FF01707FA26E7E6E7E
+-A26E7E6E7EA26E7E6E7EA26E7E6E7FA26F7E6F7EA26F7E6F7EA26F7E6F7EA26F7E6F1380
+-A2EE7FC0EE3FE0A2EE1FF0EE0FF8A2EE07FCEE03FEA2EE01FF7013F0A2177F173FA2171F
+-170FA2170701F81503487ED807FF1501B500F81400A218703D3E7DBD44>I<B712F8EEFF
+-8017E000019039C0003FF86C6C48EB07FCEE01FE707EEF7F80EF3FC018E0A2EF1FF0A218
+-F8A818F0A2EF3FE0A218C0EF7F80EFFF004C5AEE07FCEE3FF091B612C04CC7FC0280C9FC
+-B3A73801FFE0B612C0A3353E7DBD3E>80 D<D907FC131890391FFF8038017FEBE0783901
+-FC03F83A03F0007CF8D807C0133F4848130F001F140748C7FC003E1403007E1401A2007C
+-140012FC1678A46C1538A27EA26C6C14007F7FEA3FF8EBFF806C13F86CEBFF806C14F06C
+-14FC6C14FF6C15C0013F14E0010714F0EB007F020713F89138007FFC150FED07FE150315
+-01ED00FFA200E0157FA3163FA27EA3163E7E167E6C157C6C15FC6C15F86D13016DEB03F0
+-6DEB07E0D8F9FCEB0FC03AF07F803F8090391FFFFE00D8E00713F839C0007FC028427BBF
+-33>83 D<003FB91280A3903AF0007FE001018090393FC0003F48C7ED1FC0007E1707127C
+-00781703A300701701A548EF00E0A5C81600B3B14B7E4B7E0107B612FEA33B3D7DBC42>
+-I<B66C0103B51280A3000101F0C8EBF8006C6C48ED3FC0725A013F041EC7FC6D7E606D6C
+-15386D6C1578606D6C5D6E14016D5E6D6D1303606E6C49C8FC6E6C5B170E6E6C131E171C
+-6E6C5B6E6C137817706E6C13F06F5B6E13016EEB83C05FED7FC7DB3FE7C9FC16EFED1FFE
+-5E150F6F5AB3A4ED1FFC020FB512FCA3413E7FBD44>89 D<EB0FF8EBFFFE3903F01F8039
+-078007E0000F6D7E9038E001F8D81FF07F6E7EA3157F6C5AEA0380C8FCA4EC1FFF0103B5
+-FC90381FF87FEB7F803801FC00EA07F8EA0FE0485A485AA248C7FCEE038012FEA315FFA3
+-007F5BEC03BF3B3F80071F8700261FC00E13CF3A07F03C0FFE3A01FFF807FC3A003FC001
+-F0292A7DA82D>97 D<EA01FC12FFA3120712031201B1EC03FC91381FFF8091387C07E090
+-39FDE001F09039FFC000FC4A137E91C77E49158049141F17C0EE0FE0A217F0A2160717F8
+-AA17F0A2160FA217E0161F17C06D1580EE3F006D5C6E13FE9039F3C001F89039F1E003F0
+-9039E0780FC09026C03FFFC7FCC7EA07F82D407EBE33>I<49B4FC010F13E090383F00F8
+-017C131E4848131F4848137F0007ECFF80485A5B121FA24848EB7F00151C007F91C7FCA2
+-90C9FC5AAB6C7EA3003FEC01C07F001F140316806C6C13076C6C14000003140E6C6C131E
+-6C6C137890383F01F090380FFFC0D901FEC7FC222A7DA828>I<ED01FC15FFA315071503
+-1501B114FF010713E190381F80F990387E003D49131FD803F81307485A49130348481301
+-121F123F5B127FA290C7FCA25AAA7E7FA2123FA26C7E000F14037F000714076C6C497E6C
+-6C497ED8007C017913F890383F01F190380FFFC1903A01FE01FC002D407DBE33>I<EB01
+-FE90380FFFC090383F03F09038FC01F848486C7E4848137E48487F000F158049131F001F
+-15C04848130FA2127F16E090C7FCA25AA290B6FCA290C9FCA67EA27F123F16E06C7E1501
+-000F15C06C6C13036DEB07806C6C1400C66C131E017E5B90381F80F8903807FFE0010090
+-C7FC232A7EA828>I<EC1FC0EC7FF8903801F83C903807E07E90380FC0FFEB1FC1EB3F81
+-1401137FEC00FE01FE137C1500AEB6FCA3C648C7FCB3AE487E007F13FFA320407EBF1C>
+-I<167C903903F801FF903A1FFF078F8090397E0FDE1F9038F803F83803F001A23B07E000
+-FC0600000F6EC7FC49137E001F147FA8000F147E6D13FE00075C6C6C485AA23901F803E0
+-3903FE0FC026071FFFC8FCEB03F80006CAFC120EA3120FA27F7F6CB512E015FE6C6E7E6C
+-15E06C810003813A0FC0001FFC48C7EA01FE003E140048157E825A82A46C5D007C153E00
+-7E157E6C5D6C6C495A6C6C495AD803F0EB0FC0D800FE017FC7FC90383FFFFC010313C029
+-3D7EA82D>I<EA01FC12FFA3120712031201B1EC01FE913807FFC091381E07E091387803
+-F09138E001F8D9FDC07F148001FF6D7E91C7FCA25BA25BB3A6486C497EB5D8F87F13FCA3
+-2E3F7DBE33>I<EA01E0EA07F8A2487EA46C5AA2EA01E0C8FCACEA01FC127FA312071203
+-1201B3AC487EB512F0A3143E7DBD1A>I<EA01FC12FFA3120712031201B3B3B1487EB512
+-F8A3153F7DBE1A>108 D<2701F801FE14FF00FF902707FFC00313E0913B1E07E00F03F0
+-913B7803F03C01F80007903BE001F87000FC2603F9C06D487F000101805C01FBD900FF14
+-7F91C75B13FF4992C7FCA2495CB3A6486C496CECFF80B5D8F87FD9FC3F13FEA347287DA7
+-4C>I<3901F801FE00FF903807FFC091381E07E091387803F000079038E001F82603F9C0
+-7F0001138001FB6D7E91C7FC13FF5BA25BB3A6486C497EB5D8F87F13FCA32E287DA733>
+-I<14FF010713E090381F81F890387E007E01F8131F4848EB0F804848EB07C04848EB03E0
+-000F15F04848EB01F8A2003F15FCA248C812FEA44815FFA96C15FEA36C6CEB01FCA3001F
+-15F86C6CEB03F0A26C6CEB07E06C6CEB0FC06C6CEB1F80D8007EEB7E0090383F81FC9038
+-0FFFF0010090C7FC282A7EA82D>I<3901FC03FC00FF90381FFF8091387C0FE09039FDE0
+-03F03A07FFC001FC6C496C7E6C90C7127F49EC3F805BEE1FC017E0A2EE0FF0A3EE07F8AA
+-EE0FF0A4EE1FE0A2EE3FC06D1580EE7F007F6E13FE9138C001F89039FDE007F09039FC78
+-0FC0DA3FFFC7FCEC07F891C9FCAD487EB512F8A32D3A7EA733>I<3901F807E000FFEB1F
+-F8EC787CECE1FE3807F9C100031381EA01FB1401EC00FC01FF1330491300A35BB3A5487E
+-B512FEA31F287EA724>114 D<90383FC0603901FFF8E03807C03F381F000F003E130700
+-3C1303127C0078130112F81400A27E7E7E6D1300EA7FF8EBFFC06C13F86C13FE6C7F6C14
+-80000114C0D8003F13E0010313F0EB001FEC0FF800E01303A214017E1400A27E15F07E14
+-016C14E06CEB03C0903880078039F3E01F0038E0FFFC38C01FE01D2A7DA824>I<131CA6
+-133CA4137CA213FCA2120112031207001FB512C0B6FCA2D801FCC7FCB3A215E0A9120090
+-38FE01C0A2EB7F03013F138090381F8700EB07FEEB01F81B397EB723>I<D801FC14FE00
+-FF147FA3000714030003140100011400B3A51501A31503120015076DEB06FF017E010E13
+-806D4913FC90381FC078903807FFE00100903880FE002E297DA733>I<B539E00FFFE0A3
+-2707FE000313006C48EB00FC5E00015D7F00005DA26D13016D5CA26D6C485AA2ECC00701
+-1F91C7FCA290380FE00EA2ECF01E0107131CA26D6C5AA2ECFC7801011370A2ECFEF00100
+-5BA2EC7FC0A36E5AA26EC8FCA3140E2B287EA630>I<B53BC3FFFE03FFF8A3290FFE003F
+-E00013C06C486D48EB3F806C4817006D010F141E00016F131C15076D163C00004A6C1338
+-A2017F5E4B7E151DD93F805DED3DFC1538D91FC04A5AED78FE9238707E03D90FE0017F5B
+-EDE03F02F0140701070387C7FC9138F1C01F02F9148F010315CE9138FB800F02FF14DE6D
+-15FCED00076D5DA24A1303027E5CA2027C1301023C5C023813003D287EA642>I<B539F0
+-1FFFE0A30003D9C00F1300C690388007F8D97F0013E002805BD93FC05B011F49C7FC9038
+-0FE00EECF01E6D6C5A01035B6D6C5A6E5AEB00FF6E5A6E5A81141F814A7E81147BECF1FC
+-903801E1FEECC0FF01037F49486C7ED90F007F011E6D7E013E130F496D7E01FC80486C80
+-000F4A7EB539803FFFF8A32D277FA630>I<B539E00FFFE0A32707FE000313006C48EB01
+-FC6F5A00015D7F00005DA2017F495AA2EC8003013F5CA26D6C48C7FCA26E5A010F130EA2
+-6D6C5AA2ECF83C01031338A26D6C5AA2ECFEF001005BA2EC7FC0A36E5AA36EC8FCA2140E
+-A2141E141C143C1438A2147800181370127EB45BA2495AA248485AD87E07C9FCEA780EEA
+-3C3CEA1FF8EA07E02B3A7EA630>I E
 -%EndDVIPSBitmapFont
 -%DVIPSBitmapFont: Fm cmbx12 20.736 9
 -/Fm 9 123 df<92380FFFE04AB67E020F15F0027F15FE49B87E4917E0010F17F8013F83
@@ -6148,12 +7130,12 @@ diff -Nru bzip2-1.0.1/manual.ps bzip2-1.0.1.new/manual.ps
 -13FEAF5113FCA598B512F8A31DF0621DE0621DC0621D806F5E701800704B5B505B704B5B
 -7092B55A04FC4A5C704A5C706C010F5C05E0013F49C7FC9227FE7FFC01B55A70B712F004
 -0F16C0040393C8FC040015F8053F14C0050301F0C9FC94CCFCB3A6B812E0A85F6F7ACD6C
-->112 D<0007BA12FC1AFEA503E0C714FC4AC74814F84801F04A14F05C02804A14E091C8
--4814C04D14805B494B14004D5B4992B55AA24C5C494A5C615E4C5C001F4B5C5B4C91C7FC
--4C5B93B55AA24B5CC8485C4B5CA24B5C4B5C4B91C8FCA24B5B92B55AA24A5C4A5C4A4A14
--FFA24A5C4A5C4A91C8FC614A4915FE91B55A495CA2495C494A14035E5B495C4991C81207
--A24949ED0FFC90B55A484A151FA2484A153F484A157F484A15FF1803484A140F4891C812
--3F48490207B5FC91B9FCBB12F8A57E484D7BCC56>122 D E
+->112 D<0007BA12FE1AFFA503E0C76C13FE4AC8B512FC4801F04A14F84A5C4A17F091C8
+-4814E04D14C0495D4918804D1400494B5B94B5FC61494A5C4C5C5E61001F4B5C494A5C5E
+-96C7FC4C5B93B55A5DC85D4B5C4B5C5D604B5C4B91C8FC5D5F92B55A4A5C5C4D14FF4A5C
+-4A5C5C5F4A91C75A4A4915FE91B5FC5E495C495C4917035E495C495C49170793C8FC4949
+-ED0FFC90B55A48181F5D484A153F484A157F4818FF4B1403484A140F4891C8123F480407
+-B5FC92B8FCBB12F8A57E484D7BCC56>122 D E
 -%EndDVIPSBitmapFont
 -end
 -%%EndProlog
@@ -6166,770 +7148,803 @@ diff -Nru bzip2-1.0.1/manual.ps bzip2-1.0.1.new/manual.ps
 -%%Page: 1 1
 -1 0 bop 150 1318 a Fm(bzip2)64 b(and)g(libbzip2)p 150
 -1418 3600 34 v 2010 1515 a Fl(a)31 b(program)f(and)g(library)e(for)i
--(data)h(compression)2198 1623 y(cop)m(yrigh)m(t)f(\(C\))h(1996-2000)j
--(Julian)28 b(Sew)m(ard)2605 1731 y(v)m(ersion)i(1.0)h(of)g(21)g(Marc)m
--(h)g(2000)150 5091 y Fk(Julian)46 b(Sew)l(ard)p 150 5141
--3600 17 v eop
+-(data)h(compression)2198 1623 y(cop)m(yrigh)m(t)f(\(C\))h(1996-2002)j
+-(Julian)28 b(Sew)m(ard)2394 1731 y(v)m(ersion)i(1.0.2)i(of)f(30)g
+-(Decem)m(b)s(er)g(2001)150 5091 y Fk(Julian)46 b(Sew)l(ard)p
+-150 5141 3600 17 v eop
 -%%Page: 1 2
--1 1 bop 3705 -116 a Fl(1)150 299 y(This)24 b(program,)j
--Fj(bzip2)p Fl(,)e(and)g(asso)s(ciated)i(library)c Fj(libbzip2)p
--Fl(,)i(are)h(Cop)m(yrigh)m(t)g(\(C\))g(1996-2000)j(Julian)150
--408 y(R)h(Sew)m(ard.)40 b(All)29 b(righ)m(ts)h(reserv)m(ed.)150
--565 y(Redistribution)f(and)i(use)h(in)f(source)h(and)g(binary)e(forms,)
--j(with)e(or)h(without)f(mo)s(di\014cation,)g(are)i(p)s(er-)150
--675 y(mitted)d(pro)m(vided)f(that)i(the)f(follo)m(wing)f(conditions)g
--(are)i(met:)225 832 y Fi(\017)60 b Fl(Redistributions)26
--b(of)k(source)g(co)s(de)g(m)m(ust)g(retain)f(the)h(ab)s(o)m(v)m(e)h
--(cop)m(yrigh)m(t)g(notice,)f(this)f(list)f(of)i(con-)330
--941 y(ditions)e(and)i(the)h(follo)m(wing)e(disclaimer.)225
--1076 y Fi(\017)60 b Fl(The)33 b(origin)f(of)h(this)f(soft)m(w)m(are)j
--(m)m(ust)e(not)h(b)s(e)e(misrepresen)m(ted;)i(y)m(ou)g(m)m(ust)f(not)g
--(claim)g(that)h(y)m(ou)330 1185 y(wrote)d(the)h(original)d(soft)m(w)m
--(are.)44 b(If)31 b(y)m(ou)g(use)g(this)f(soft)m(w)m(are)i(in)e(a)h(pro)
--s(duct,)g(an)f(ac)m(kno)m(wledgmen)m(t)330 1295 y(in)f(the)i(pro)s
--(duct)e(do)s(cumen)m(tation)h(w)m(ould)f(b)s(e)h(appreciated)g(but)g
--(is)f(not)i(required.)225 1429 y Fi(\017)60 b Fl(Altered)21
--b(source)g(v)m(ersions)f(m)m(ust)h(b)s(e)f(plainly)e(mark)m(ed)j(as)g
--(suc)m(h,)i(and)d(m)m(ust)h(not)g(b)s(e)f(misrepresen)m(ted)330
--1539 y(as)31 b(b)s(eing)e(the)h(original)f(soft)m(w)m(are.)225
--1674 y Fi(\017)60 b Fl(The)27 b(name)h(of)f(the)h(author)f(ma)m(y)h
--(not)g(b)s(e)f(used)g(to)h(endorse)f(or)h(promote)g(pro)s(ducts)e
--(deriv)m(ed)g(from)330 1783 y(this)j(soft)m(w)m(are)j(without)d(sp)s
--(eci\014c)h(prior)e(written)i(p)s(ermission.)150 1965
--y(THIS)37 b(SOFTW)-10 b(ARE)38 b(IS)f(PR)m(O)m(VIDED)i(BY)g(THE)f(A)m
--(UTHOR)g(\\AS)g(IS")g(AND)h(ANY)f(EXPRESS)150 2074 y(OR)31
--b(IMPLIED)h(W)-10 b(ARRANTIES,)31 b(INCLUDING,)i(BUT)f(NOT)f(LIMITED)g
--(TO,)h(THE)f(IMPLIED)150 2184 y(W)-10 b(ARRANTIES)27
--b(OF)h(MER)m(CHANT)-8 b(ABILITY)28 b(AND)g(FITNESS)f(F)m(OR)g(A)h(P)-8
--b(AR)g(TICULAR)28 b(PUR-)150 2294 y(POSE)37 b(ARE)g(DISCLAIMED.)h(IN)f
--(NO)h(EVENT)f(SHALL)g(THE)g(A)m(UTHOR)h(BE)g(LIABLE)g(F)m(OR)150
--2403 y(ANY)56 b(DIRECT,)f(INDIRECT,)h(INCIDENT)-8 b(AL,)56
--b(SPECIAL,)e(EXEMPLAR)-8 b(Y,)57 b(OR)e(CONSE-)150 2513
--y(QUENTIAL)48 b(D)m(AMA)m(GES)i(\(INCLUDING,)g(BUT)f(NOT)f(LIMITED)g
--(TO,)g(PR)m(OCUREMENT)150 2622 y(OF)35 b(SUBSTITUTE)e(GOODS)i(OR)f(SER)
---10 b(VICES;)34 b(LOSS)f(OF)i(USE,)g(D)m(A)-8 b(T)g(A,)36
--b(OR)f(PR)m(OFITS;)f(OR)150 2732 y(BUSINESS)28 b(INTERR)m(UPTION\))g
--(HO)m(WEVER)i(CA)m(USED)f(AND)g(ON)g(ANY)g(THEOR)-8 b(Y)29
--b(OF)g(LIA-)150 2842 y(BILITY,)36 b(WHETHER)g(IN)g(CONTRA)m(CT,)g
--(STRICT)e(LIABILITY,)i(OR)g(TOR)-8 b(T)35 b(\(INCLUDING)150
--2951 y(NEGLIGENCE)45 b(OR)g(OTHER)-10 b(WISE\))44 b(ARISING)h(IN)g(ANY)
--h(W)-10 b(A)i(Y)46 b(OUT)e(OF)i(THE)e(USE)h(OF)150 3061
--y(THIS)29 b(SOFTW)-10 b(ARE,)31 b(EVEN)f(IF)g(AD)m(VISED)i(OF)e(THE)g
--(POSSIBILITY)e(OF)j(SUCH)f(D)m(AMA)m(GE.)150 3218 y(Julian)e(Sew)m
--(ard,)i(Cam)m(bridge,)g(UK.)150 3374 y Fj(jseward@acm.org)150
--3531 y(http://sourceware.cygnus)o(.com)o(/bzi)o(p2)150
--3688 y(http://www.cacheprof.org)150 3845 y(http://www.muraroa.demon)o
--(.co.)o(uk)150 4002 y(bzip2)p Fl(/)p Fj(libbzip2)d Fl(v)m(ersion)j(1.0)
--i(of)e(21)h(Marc)m(h)g(2000.)150 4159 y(P)-8 b(A)g(TENTS:)40
--b(T)-8 b(o)40 b(the)g(b)s(est)g(of)g(m)m(y)g(kno)m(wledge,)j
--Fj(bzip2)38 b Fl(do)s(es)i(not)g(use)g(an)m(y)g(paten)m(ted)h
--(algorithms.)150 4268 y(Ho)m(w)m(ev)m(er,)33 b(I)e(do)f(not)h(ha)m(v)m
--(e)h(the)f(resources)g(a)m(v)-5 b(ailable)30 b(to)h(carry)g(out)g(a)g
--(full)d(paten)m(t)k(searc)m(h.)42 b(Therefore)150 4378
--y(I)30 b(cannot)h(giv)m(e)g(an)m(y)g(guaran)m(tee)h(of)e(the)h(ab)s(o)m
--(v)m(e)g(statemen)m(t.)p eop
+-1 1 bop 3705 -116 a Fl(1)150 299 y(The)40 b(follo)m(wing)f(text)i(is)f
+-(the)h(License)f(for)g(this)f(soft)m(w)m(are.)73 b(Y)-8
+-b(ou)41 b(should)d(\014nd)h(it)h(iden)m(tical)f(to)i(that)150
+-408 y(con)m(tained)31 b(in)e(the)h(\014le)g(LICENSE)f(in)g(the)h
+-(source)h(distribution.)150 565 y Fj(||||||)f(ST)-8 b(AR)g(T)30
+-b(OF)h(THE)f(LICENSE)f(||||||)150 722 y(This)24 b(program,)i
+-Fi(bzip2)p Fj(,)f(and)f(asso)s(ciated)h(library)g Fi(libbzip2)p
+-Fj(,)e(are)i(Cop)m(yrigh)m(t)h(\(C\))f(1996-2002)j(Julian)150
+-832 y(R)i(Sew)m(ard.)41 b(All)30 b(righ)m(ts)h(reserv)m(ed.)150
+-989 y(Redistribution)46 b(and)f(use)g(in)g(source)h(and)f(binary)f
+-(forms,)50 b(with)45 b(or)h(without)g(mo)s(di\014cation,)j(are)150
+-1098 y(p)s(ermitted)31 b(pro)m(vided)f(that)h(the)g(follo)m(wing)g
+-(conditions)g(are)g(met:)225 1255 y Fh(\017)60 b Fj(Redistributions)44
+-b(of)g(source)g(co)s(de)f(m)m(ust)h(retain)g(the)g(ab)s(o)m(v)m(e)h
+-(cop)m(yrigh)m(t)g(notice,)k(this)43 b(list)i(of)330
+-1365 y(conditions)31 b(and)e(the)i(follo)m(wing)h(disclaimer.)225
+-1499 y Fh(\017)60 b Fj(The)32 b(origin)g(of)g(this)g(soft)m(w)m(are)h
+-(m)m(ust)f(not)g(b)s(e)f(misrepresen)m(ted;)j(y)m(ou)e(m)m(ust)g(not)g
+-(claim)g(that)h(y)m(ou)330 1609 y(wrote)d(the)f(original)h(soft)m(w)m
+-(are.)42 b(If)29 b(y)m(ou)g(use)g(this)g(soft)m(w)m(are)i(in)d(a)h(pro)
+-s(duct,)g(an)g(ac)m(kno)m(wledgmen)m(t)330 1718 y(in)h(the)h(pro)s
+-(duct)e(do)s(cumen)m(tation)j(w)m(ould)e(b)s(e)f(appreciated)j(but)d
+-(is)i(not)g(required.)225 1853 y Fh(\017)60 b Fj(Altered)36
+-b(source)g(v)m(ersions)g(m)m(ust)f(b)s(e)f(plainly)i(mark)m(ed)f(as)g
+-(suc)m(h,)i(and)d(m)m(ust)h(not)h(b)s(e)f(misrepre-)330
+-1962 y(sen)m(ted)c(as)f(b)s(eing)g(the)h(original)h(soft)m(w)m(are.)225
+-2097 y Fh(\017)60 b Fj(The)25 b(name)g(of)g(the)g(author)g(ma)m(y)h
+-(not)f(b)s(e)f(used)h(to)g(endorse)g(or)h(promote)g(pro)s(ducts)e
+-(deriv)m(ed)h(from)330 2206 y(this)30 b(soft)m(w)m(are)i(without)f(sp)s
+-(eci\014c)f(prior)g(written)h(p)s(ermission.)150 2388
+-y(THIS)36 b(SOFTW)-10 b(ARE)35 b(IS)h(PR)m(O)m(VIDED)g(BY)f(THE)h(A)m
+-(UTHOR)h(\\AS)f(IS")g(AND)f(ANY)h(EXPRESS)150 2498 y(OR)29
+-b(IMPLIED)g(W)-10 b(ARRANTIES,)28 b(INCLUDING,)h(BUT)g(NOT)g(LIMITED)g
+-(TO,)h(THE)e(IMPLIED)150 2607 y(W)-10 b(ARRANTIES)60
+-b(OF)h(MER)m(CHANT)-8 b(ABILITY)61 b(AND)g(FITNESS)f(F)m(OR)i(A)f(P)-8
+-b(AR)g(TICULAR)150 2717 y(PURPOSE)40 b(ARE)g(DISCLAIMED.)f(IN)i(NO)g
+-(EVENT)f(SHALL)f(THE)i(A)m(UTHOR)g(BE)f(LIABLE)150 2827
+-y(F)m(OR)d(ANY)f(DIRECT,)g(INDIRECT,)g(INCIDENT)-8 b(AL,)37
+-b(SPECIAL,)d(EXEMPLAR)-8 b(Y,)36 b(OR)h(CON-)150 2936
+-y(SEQUENTIAL)30 b(D)m(AMA)m(GES)h(\(INCLUDING,)h(BUT)e(NOT)i(LIMITED)f
+-(TO,)h(PR)m(OCUREMENT)150 3046 y(OF)55 b(SUBSTITUTE)e(GOODS)i(OR)f(SER)
+--10 b(VICES;)53 b(LOSS)g(OF)i(USE,)f(D)m(A)-8 b(T)g(A,)55
+-b(OR)g(PR)m(OFITS;)150 3155 y(OR)e(BUSINESS)d(INTERR)m(UPTION\))k(HO)m
+-(WEVER)e(CA)m(USED)f(AND)h(ON)h(ANY)f(THEOR)-8 b(Y)150
+-3265 y(OF)71 b(LIABILITY,)f(WHETHER)g(IN)h(CONTRA)m(CT,)g(STRICT)g
+-(LIABILITY,)e(OR)i(TOR)-8 b(T)150 3374 y(\(INCLUDING)45
+-b(NEGLIGENCE)g(OR)g(OTHER)-10 b(WISE\))45 b(ARISING)g(IN)g(ANY)g(W)-10
+-b(A)i(Y)44 b(OUT)i(OF)150 3484 y(THE)i(USE)f(OF)h(THIS)g(SOFTW)-10
+-b(ARE,)47 b(EVEN)g(IF)h(AD)m(VISED)e(OF)i(THE)g(POSSIBILITY)f(OF)150
+-3594 y(SUCH)30 b(D)m(AMA)m(GE.)150 3750 y(Julian)g(Sew)m(ard,)g(Cam)m
+-(bridge,)h(UK.)150 3907 y Fi(jseward@acm.org)150 4064
+-y(bzip2)p Fj(/)p Fi(libbzip2)c Fj(v)m(ersion)k(1.0.2)i(of)d(30)h(Decem)
+-m(b)s(er)g(2001.)150 4221 y(||||||)f(END)g(OF)g(THE)g(LICENSE)f(||||||)
+-150 4378 y(W)-8 b(eb)31 b(sites:)150 4535 y Fi
+-(http://sources.redhat.co)o(m/bz)o(ip2)150 4691 y
+-(http://www.cacheprof.org)150 4848 y Fj(P)-8 b(A)g(TENTS:)40
+-b(T)-8 b(o)40 b(the)f(b)s(est)g(of)g(m)m(y)h(kno)m(wledge,)i
+-Fi(bzip2)c Fj(do)s(es)h(not)g(use)g(an)m(y)h(paten)m(ted)g(algorithms.)
+-150 4958 y(Ho)m(w)m(ev)m(er,)31 b(I)c(do)h(not)g(ha)m(v)m(e)g(the)g
+-(resources)h(a)m(v)-5 b(ailable)29 b(to)f(carry)g(out)g(a)g(full)f
+-(paten)m(t)i(searc)m(h.)40 b(Therefore)150 5067 y(I)30
+-b(cannot)h(giv)m(e)h(an)m(y)f(guaran)m(tee)g(of)g(the)g(ab)s(o)m(v)m(e)
+-g(statemen)m(t.)p eop
 -%%Page: 2 3
 -2 2 bop 150 -116 a Fl(Chapter)30 b(1:)41 b(In)m(tro)s(duction)2591
--b(2)150 299 y Fh(1)80 b(In)l(tro)t(duction)150 555 y
--Fj(bzip2)20 b Fl(compresses)h(\014les)f(using)g(the)h(Burro)m
--(ws-Wheeler)g(blo)s(c)m(k-sorting)f(text)j(compression)d(algorithm,)150
--665 y(and)33 b(Hu\013man)g(co)s(ding.)50 b(Compression)32
--b(is)h(generally)g(considerably)f(b)s(etter)i(than)f(that)h(ac)m(hiev)m
--(ed)h(b)m(y)150 775 y(more)f(con)m(v)m(en)m(tional)g(LZ77/LZ78-based)g
--(compressors,)g(and)f(approac)m(hes)h(the)f(p)s(erformance)g(of)h(the)
--150 884 y(PPM)c(family)f(of)i(statistical)f(compressors.)150
--1041 y Fj(bzip2)k Fl(is)h(built)e(on)i(top)h(of)g Fj(libbzip2)p
--Fl(,)e(a)i(\015exible)e(library)f(for)i(handling)e(compressed)i(data)i
--(in)d(the)150 1151 y Fj(bzip2)c Fl(format.)43 b(This)30
--b(man)m(ual)g(describ)s(es)g(b)s(oth)g(ho)m(w)i(to)g(use)f(the)g
--(program)g(and)g(ho)m(w)g(to)h(w)m(ork)f(with)150 1260
--y(the)d(library)d(in)m(terface.)41 b(Most)28 b(of)g(the)g(man)m(ual)f
--(is)g(dev)m(oted)i(to)f(this)f(library)-8 b(,)26 b(not)i(the)g
--(program,)g(whic)m(h)150 1370 y(is)h(go)s(o)s(d)i(news)e(if)h(y)m(our)g
--(in)m(terest)h(is)e(only)g(in)h(the)g(program.)150 1527
--y(Chapter)24 b(2)g(describ)s(es)f(ho)m(w)h(to)h(use)f
--Fj(bzip2)p Fl(;)h(this)e(is)g(the)i(only)e(part)h(y)m(ou)h(need)f(to)h
--(read)f(if)f(y)m(ou)h(just)g(w)m(an)m(t)150 1636 y(to)35
--b(kno)m(w)f(ho)m(w)g(to)g(op)s(erate)h(the)f(program.)51
--b(Chapter)34 b(3)g(describ)s(es)e(the)i(programming)f(in)m(terfaces)h
--(in)150 1746 y(detail,)23 b(and)d(Chapter)h(4)h(records)f(some)h
--(miscellaneous)e(notes)i(whic)m(h)e(I)h(though)m(t)h(ough)m(t)g(to)g(b)
--s(e)f(recorded)150 1855 y(somewhere.)p eop
+-b(2)150 299 y Fg(1)80 b(In)l(tro)t(duction)150 555 y
+-Fi(bzip2)40 b Fj(compresses)h(\014les)g(using)g(the)g(Burro)m
+-(ws-Wheeler)h(blo)s(c)m(k-sorting)h(text)f(compression)f(algo-)150
+-665 y(rithm,)54 b(and)49 b(Hu\013man)f(co)s(ding.)98
+-b(Compression)49 b(is)h(generally)h(considerably)e(b)s(etter)h(than)f
+-(that)150 775 y(ac)m(hiev)m(ed)43 b(b)m(y)f(more)g(con)m(v)m(en)m
+-(tional)i(LZ77/LZ78-based)e(compressors,)j(and)40 b(approac)m(hes)i
+-(the)g(p)s(er-)150 884 y(formance)31 b(of)f(the)h(PPM)g(family)f(of)h
+-(statistical)i(compressors.)150 1041 y Fi(bzip2)g Fj(is)h(built)h(on)f
+-(top)h(of)f Fi(libbzip2)p Fj(,)f(a)i(\015exible)f(library)h(for)f
+-(handling)g(compressed)g(data)h(in)f(the)150 1151 y Fi(bzip2)29
+-b Fj(format.)41 b(This)30 b(man)m(ual)g(describ)s(es)g(b)s(oth)f(ho)m
+-(w)i(to)g(use)f(the)g(program)h(and)e(ho)m(w)h(to)h(w)m(ork)g(with)150
+-1260 y(the)26 b(library)f(in)m(terface.)41 b(Most)26
+-b(of)f(the)h(man)m(ual)f(is)g(dev)m(oted)i(to)f(this)f(library)-8
+-b(,)27 b(not)f(the)g(program,)g(whic)m(h)150 1370 y(is)k(go)s(o)s(d)h
+-(news)e(if)i(y)m(our)f(in)m(terest)i(is)f(only)f(in)g(the)h(program.)
+-150 1527 y(Chapter)45 b(2)h(describ)s(es)e(ho)m(w)i(to)g(use)f
+-Fi(bzip2)p Fj(;)51 b(this)46 b(is)f(the)h(only)f(part)g(y)m(ou)h(need)f
+-(to)h(read)f(if)h(y)m(ou)150 1636 y(just)39 b(w)m(an)m(t)g(to)h(kno)m
+-(w)f(ho)m(w)h(to)f(op)s(erate)h(the)g(program.)67 b(Chapter)38
+-b(3)i(describ)s(es)e(the)i(programming)150 1746 y(in)m(terfaces)27
+-b(in)f(detail,)i(and)d(Chapter)g(4)h(records)g(some)g(miscellaneous)h
+-(notes)f(whic)m(h)g(I)g(though)m(t)g(ough)m(t)150 1855
+-y(to)31 b(b)s(e)f(recorded)h(somewhere.)p eop
 -%%Page: 3 4
 -3 3 bop 150 -116 a Fl(Chapter)30 b(2:)41 b(Ho)m(w)31
--b(to)g(use)f Fj(bzip2)2375 b Fl(3)150 299 y Fh(2)80 b(Ho)l(w)53
--b(to)g(use)g Fg(bzip2)150 566 y Fl(This)29 b(c)m(hapter)i(con)m(tains)f
--(a)h(cop)m(y)g(of)g(the)f Fj(bzip2)f Fl(man)h(page,)h(and)f(nothing)g
--(else.)390 818 y Ff(NAME)570 1004 y Fj(bzip2)p Fl(,)f
--Fj(bunzip2)g Fl(-)h(a)h(blo)s(c)m(k-sorting)f(\014le)f(compressor,)i
--(v1.0)570 1136 y Fj(bzcat)e Fl(-)i(decompresses)f(\014les)f(to)i
--(stdout)570 1267 y Fj(bzip2recover)c Fl(-)k(reco)m(v)m(ers)h(data)f
--(from)f(damaged)g(bzip2)g(\014les)390 1519 y Ff(SYNOPSIS)570
--1706 y Fj(bzip2)f Fl([)h(-cdfkqstvzVL123456789)35 b(])c([)g
--(\014lenames)e(...)41 b(])570 1837 y Fj(bunzip2)28 b
--Fl([)j(-fkvsVL)f(])h([)f(\014lenames)g(...)41 b(])570
--1968 y Fj(bzcat)29 b Fl([)h(-s)h(])g([)f(\014lenames)g(...)41
--b(])570 2100 y Fj(bzip2recover)27 b Fl(\014lename)390
--2352 y Ff(DESCRIPTION)390 2538 y Fj(bzip2)i Fl(compresses)i(\014les)f
--(using)f(the)i(Burro)m(ws-Wheeler)g(blo)s(c)m(k)f(sorting)g(text)i
--(compres-)390 2642 y(sion)40 b(algorithm,)j(and)d(Hu\013man)h(co)s
--(ding.)71 b(Compression)40 b(is)g(generally)g(considerably)390
--2746 y(b)s(etter)25 b(than)g(that)h(ac)m(hiev)m(ed)g(b)m(y)f(more)g
--(con)m(v)m(en)m(tional)h(LZ77/LZ78-based)g(compressors,)390
--2850 y(and)k(approac)m(hes)h(the)f(p)s(erformance)g(of)h(the)f(PPM)g
--(family)f(of)i(statistical)f(compressors.)390 3001 y(The)e
--(command-line)e(options)i(are)h(delib)s(erately)d(v)m(ery)i(similar)e
--(to)j(those)g(of)f(GNU)h Fj(gzip)p Fl(,)390 3104 y(but)h(they)g(are)h
--(not)g(iden)m(tical.)390 3255 y Fj(bzip2)f Fl(exp)s(ects)h(a)g(list)f
--(of)h(\014le)f(names)h(to)h(accompan)m(y)h(the)e(command-line)e
--(\015ags.)43 b(Eac)m(h)390 3359 y(\014le)e(is)h(replaced)g(b)m(y)g(a)h
--(compressed)f(v)m(ersion)g(of)g(itself,)i(with)e(the)g(name)g
--Fj(original_)390 3463 y(name.bz2)p Fl(.)49 b(Eac)m(h)34
--b(compressed)g(\014le)f(has)g(the)h(same)g(mo)s(di\014cation)e(date,)k
--(p)s(ermissions,)390 3567 y(and,)24 b(when)f(p)s(ossible,)f(o)m
--(wnership)f(as)j(the)f(corresp)s(onding)f(original,)h(so)g(that)h
--(these)g(prop-)390 3671 y(erties)34 b(can)g(b)s(e)f(correctly)i
--(restored)f(at)g(decompression)f(time.)51 b(File)34 b(name)g(handling)d
--(is)390 3774 y(naiv)m(e)26 b(in)f(the)i(sense)f(that)h(there)f(is)f(no)
--i(mec)m(hanism)e(for)h(preserving)f(original)f(\014le)i(names,)390
--3878 y(p)s(ermissions,)37 b(o)m(wnerships)f(or)h(dates)i(in)d
--(\014lesystems)h(whic)m(h)g(lac)m(k)h(these)g(concepts,)j(or)390
--3982 y(ha)m(v)m(e)32 b(serious)d(\014le)g(name)i(length)f
--(restrictions,)f(suc)m(h)h(as)h(MS-DOS.)390 4133 y Fj(bzip2)26
--b Fl(and)h Fj(bunzip2)e Fl(will)f(b)m(y)k(default)e(not)i(o)m(v)m
--(erwrite)g(existing)e(\014les.)38 b(If)27 b(y)m(ou)h(w)m(an)m(t)g(this)
--390 4237 y(to)j(happ)s(en,)e(sp)s(ecify)g(the)i Fj(-f)e
--Fl(\015ag.)390 4388 y(If)34 b(no)h(\014le)f(names)g(are)i(sp)s
--(eci\014ed,)e Fj(bzip2)f Fl(compresses)i(from)f(standard)g(input)f(to)j
--(stan-)390 4491 y(dard)c(output.)49 b(In)32 b(this)g(case,)k
--Fj(bzip2)31 b Fl(will)g(decline)h(to)i(write)e(compressed)h(output)g
--(to)h(a)390 4595 y(terminal,)29 b(as)i(this)e(w)m(ould)g(b)s(e)h(en)m
--(tirely)f(incomprehensible)e(and)j(therefore)h(p)s(oin)m(tless.)390
--4746 y Fj(bunzip2)36 b Fl(\(or)j Fj(bzip2)29 b(-d)p Fl(\))37
--b(decompresses)i(all)e(sp)s(eci\014ed)f(\014les.)63 b(Files)37
--b(whic)m(h)g(w)m(ere)i(not)390 4850 y(created)e(b)m(y)f
--Fj(bzip2)f Fl(will)e(b)s(e)i(detected)j(and)d(ignored,)i(and)e(a)i(w)m
--(arning)d(issued.)56 b Fj(bzip2)390 4954 y Fl(attempts)31
--b(to)f(guess)g(the)g(\014lename)f(for)h(the)g(decompressed)f(\014le)g
--(from)h(that)g(of)g(the)g(com-)390 5058 y(pressed)f(\014le)h(as)h
--(follo)m(ws:)570 5209 y Fj(filename.bz2)57 b Fl(b)s(ecomes)31
--b Fj(filename)570 5340 y(filename.bz)58 b Fl(b)s(ecomes)30
--b Fj(filename)p eop
+-b(to)g(use)f Fi(bzip2)2375 b Fl(3)150 299 y Fg(2)80 b(Ho)l(w)53
+-b(to)g(use)g Ff(bzip2)150 566 y Fj(This)30 b(c)m(hapter)h(con)m(tains)h
+-(a)e(cop)m(y)h(of)g(the)g Fi(bzip2)d Fj(man)i(page,)h(and)f(nothing)g
+-(else.)390 818 y Fe(NAME)570 1004 y Fi(bzip2)p Fj(,)f
+-Fi(bunzip2)g Fj(-)h(a)h(blo)s(c)m(k-sorting)h(\014le)e(compressor,)h
+-(v1.0.2)570 1136 y Fi(bzcat)e Fj(-)i(decompresses)f(\014les)h(to)g
+-(stdout)570 1267 y Fi(bzip2recover)c Fj(-)k(reco)m(v)m(ers)h(data)f
+-(from)f(damaged)g(bzip2)h(\014les)390 1519 y Fe(SYNOPSIS)570
+-1706 y Fi(bzip2)e Fj([)i(-cdfkqstvzVL123456789)j(])d([)g(\014lenames)f
+-(...)41 b(])570 1837 y Fi(bunzip2)28 b Fj([)j(-fkvsVL)f(])g([)h
+-(\014lenames)f(...)41 b(])570 1968 y Fi(bzcat)29 b Fj([)i(-s)f(])h([)g
+-(\014lenames)f(...)41 b(])570 2100 y Fi(bzip2recover)27
+-b Fj(\014lename)390 2352 y Fe(DESCRIPTION)390 2538 y
+-Fi(bzip2)e Fj(compresses)i(\014les)f(using)g(the)h(Burro)m(ws-Wheeler)g
+-(blo)s(c)m(k)f(sorting)i(text)f(compres-)390 2642 y(sion)39
+-b(algorithm,)k(and)38 b(Hu\013man)h(co)s(ding.)67 b(Compression)39
+-b(is)g(generally)i(considerably)390 2746 y(b)s(etter)23
+-b(than)g(that)g(ac)m(hiev)m(ed)h(b)m(y)f(more)g(con)m(v)m(en)m(tional)i
+-(LZ77/LZ78-based)e(compressors,)390 2850 y(and)k(approac)m(hes)i(the)f
+-(p)s(erformance)g(of)h(the)f(PPM)h(family)f(of)h(statistical)h
+-(compressors.)390 3001 y(The)c(command-line)g(options)g(are)g(delib)s
+-(erately)h(v)m(ery)f(similar)h(to)f(those)h(of)f(GNU)g
+-Fi(gzip)p Fj(,)390 3104 y(but)k(they)g(are)h(not)g(iden)m(tical.)390
+-3255 y Fi(bzip2)e Fj(exp)s(ects)j(a)f(list)h(of)f(\014le)g(names)f(to)i
+-(accompan)m(y)g(the)f(command-line)g(\015ags.)43 b(Eac)m(h)390
+-3359 y(\014le)d(is)h(replaced)g(b)m(y)f(a)g(compressed)h(v)m(ersion)g
+-(of)f(itself,)k(with)d(the)f(name)g Fi(original_)390
+-3463 y(name.bz2)p Fj(.)45 b(Eac)m(h)33 b(compressed)g(\014le)g(has)f
+-(the)h(same)g(mo)s(di\014cation)g(date,)h(p)s(ermissions,)390
+-3567 y(and,)47 b(when)c(p)s(ossible,)k(o)m(wnership)c(as)h(the)g
+-(corresp)s(onding)g(original,)49 b(so)44 b(that)g(these)390
+-3671 y(prop)s(erties)37 b(can)g(b)s(e)g(correctly)i(restored)f(at)g
+-(decompression)f(time.)62 b(File)39 b(name)d(han-)390
+-3774 y(dling)e(is)g(naiv)m(e)h(in)f(the)g(sense)g(that)h(there)f(is)g
+-(no)g(mec)m(hanism)g(for)h(preserving)f(original)390
+-3878 y(\014le)41 b(names,)i(p)s(ermissions,)g(o)m(wnerships)d(or)h
+-(dates)g(in)g(\014lesystems)g(whic)m(h)f(lac)m(k)i(these)390
+-3982 y(concepts,)32 b(or)e(ha)m(v)m(e)i(serious)e(\014le)h(name)f
+-(length)h(restrictions,)h(suc)m(h)e(as)g(MS-DOS.)390
+-4133 y Fi(bzip2)24 b Fj(and)i Fi(bunzip2)d Fj(will)k(b)m(y)f(default)f
+-(not)i(o)m(v)m(erwrite)h(existing)f(\014les.)39 b(If)26
+-b(y)m(ou)g(w)m(an)m(t)h(this)390 4237 y(to)k(happ)s(en,)e(sp)s(ecify)h
+-(the)h Fi(-f)e Fj(\015ag.)390 4388 y(If)k(no)f(\014le)h(names)f(are)i
+-(sp)s(eci\014ed,)e Fi(bzip2)g Fj(compresses)h(from)f(standard)g(input)g
+-(to)i(stan-)390 4491 y(dard)d(output.)44 b(In)32 b(this)f(case,)i
+-Fi(bzip2)e Fj(will)h(decline)g(to)h(write)f(compressed)g(output)f(to)i
+-(a)390 4595 y(terminal,)e(as)g(this)f(w)m(ould)g(b)s(e)g(en)m(tirely)i
+-(incomprehensible)e(and)g(therefore)h(p)s(oin)m(tless.)390
+-4746 y Fi(bunzip2)j Fj(\(or)j Fi(bzip2)29 b(-d)p Fj(\))36
+-b(decompresses)g(all)h(sp)s(eci\014ed)e(\014les.)58 b(Files)37
+-b(whic)m(h)f(w)m(ere)h(not)390 4850 y(created)f(b)m(y)e
+-Fi(bzip2)g Fj(will)g(b)s(e)g(detected)j(and)c(ignored,)k(and)c(a)i(w)m
+-(arning)g(issued.)52 b Fi(bzip2)390 4954 y Fj(attempts)29
+-b(to)f(guess)g(the)g(\014lename)f(for)h(the)g(decompressed)f(\014le)h
+-(from)f(that)h(of)g(the)g(com-)390 5058 y(pressed)i(\014le)g(as)h
+-(follo)m(ws:)570 5209 y Fi(filename.bz2)57 b Fj(b)s(ecomes)31
+-b Fi(filename)570 5340 y(filename.bz)58 b Fj(b)s(ecomes)30
+-b Fi(filename)p eop
 -%%Page: 4 5
 -4 4 bop 150 -116 a Fl(Chapter)30 b(2:)41 b(Ho)m(w)31
--b(to)g(use)f Fj(bzip2)2375 b Fl(4)570 299 y Fj(filename.tbz2)27
--b Fl(b)s(ecomes)j Fj(filename.tar)570 470 y(filename.tbz)57
--b Fl(b)s(ecomes)31 b Fj(filename.tar)570 641 y(anyothername)57
--b Fl(b)s(ecomes)31 b Fj(anyothername.out)390 859 y Fl(If)j(the)h
--(\014le)e(do)s(es)i(not)f(end)g(in)f(one)i(of)g(the)g(recognised)f
--(endings,)g Fj(.bz2)p Fl(,)h Fj(.bz)p Fl(,)g Fj(.tbz2)e
--Fl(or)390 963 y Fj(.tbz)p Fl(,)h Fj(bzip2)f Fl(complains)f(that)j(it)e
--(cannot)i(guess)f(the)g(name)h(of)f(the)g(original)e(\014le,)j(and)390
--1067 y(uses)30 b(the)g(original)f(name)h(with)g Fj(.out)f
--Fl(app)s(ended.)390 1218 y(As)j(with)f(compression,)h(supplying)c(no)k
--(\014lenames)f(causes)i(decompression)e(from)h(stan-)390
--1321 y(dard)d(input)g(to)i(standard)e(output.)390 1472
--y Fj(bunzip2)k Fl(will)g(correctly)j(decompress)e(a)i(\014le)e(whic)m
--(h)g(is)h(the)g(concatenation)i(of)e(t)m(w)m(o)i(or)390
--1576 y(more)j(compressed)f(\014les.)67 b(The)39 b(result)g(is)g(the)g
--(concatenation)i(of)f(the)g(corresp)s(onding)390 1680
--y(uncompressed)c(\014les.)59 b(In)m(tegrit)m(y)38 b(testing)f(\()p
--Fj(-t)p Fl(\))g(of)g(concatenated)i(compressed)e(\014les)f(is)390
--1784 y(also)30 b(supp)s(orted.)390 1935 y(Y)-8 b(ou)40
--b(can)g(also)f(compress)g(or)g(decompress)g(\014les)g(to)h(the)f
--(standard)g(output)g(b)m(y)g(giving)390 2039 y(the)30
--b Fj(-c)g Fl(\015ag.)40 b(Multiple)28 b(\014les)h(ma)m(y)i(b)s(e)e
--(compressed)h(and)f(decompressed)h(lik)m(e)f(this.)39
--b(The)390 2142 y(resulting)31 b(outputs)i(are)h(fed)f(sequen)m(tially)f
--(to)i(stdout.)49 b(Compression)32 b(of)h(m)m(ultiple)e(\014les)390
--2246 y(in)24 b(this)g(manner)h(generates)h(a)g(stream)f(con)m(taining)g
--(m)m(ultiple)e(compressed)i(\014le)f(represen-)390 2350
--y(tations.)58 b(Suc)m(h)36 b(a)g(stream)g(can)h(b)s(e)e(decompressed)h
--(correctly)h(only)e(b)m(y)h Fj(bzip2)e Fl(v)m(ersion)390
--2454 y(0.9.0)g(or)e(later.)47 b(Earlier)30 b(v)m(ersions)i(of)g
--Fj(bzip2)f Fl(will)f(stop)i(after)h(decompressing)e(the)i(\014rst)390
--2558 y(\014le)c(in)h(the)g(stream.)390 2709 y Fj(bzcat)f
--Fl(\(or)i Fj(bzip2)e(-dc)p Fl(\))g(decompresses)i(all)e(sp)s(eci\014ed)
--g(\014les)g(to)i(the)g(standard)e(output.)390 2860 y
--Fj(bzip2)f Fl(will)g(read)i(argumen)m(ts)g(from)f(the)h(en)m(vironmen)m
--(t)g(v)-5 b(ariables)28 b Fj(BZIP2)h Fl(and)g Fj(BZIP)p
--Fl(,)g(in)390 2963 y(that)24 b(order,)g(and)f(will)e(pro)s(cess)i(them)
--g(b)s(efore)g(an)m(y)h(argumen)m(ts)f(read)h(from)f(the)g(command)390
--3067 y(line.)39 b(This)29 b(giv)m(es)h(a)h(con)m(v)m(enien)m(t)h(w)m(a)
--m(y)f(to)g(supply)d(default)i(argumen)m(ts.)390 3218
--y(Compression)h(is)h(alw)m(a)m(ys)i(p)s(erformed,)e(ev)m(en)h(if)f(the)
--h(compressed)g(\014le)f(is)g(sligh)m(tly)f(larger)390
--3322 y(than)26 b(the)g(original.)38 b(Files)25 b(of)h(less)g(than)g(ab)
--s(out)g(one)g(h)m(undred)e(b)m(ytes)j(tend)f(to)h(get)g(larger,)390
--3426 y(since)34 b(the)g(compression)f(mec)m(hanism)h(has)f(a)i(constan)
--m(t)g(o)m(v)m(erhead)h(in)d(the)h(region)g(of)g(50)390
--3529 y(b)m(ytes.)54 b(Random)34 b(data)h(\(including)d(the)i(output)h
--(of)f(most)h(\014le)f(compressors\))h(is)e(co)s(ded)390
--3633 y(at)e(ab)s(out)f(8.05)i(bits)d(p)s(er)h(b)m(yte,)h(giving)e(an)h
--(expansion)g(of)g(around)g(0.5\045.)390 3784 y(As)h(a)g(self-c)m(hec)m
--(k)h(for)e(y)m(our)h(protection,)g Fj(bzip2)f Fl(uses)g(32-bit)h(CR)m
--(Cs)f(to)i(mak)m(e)f(sure)f(that)390 3888 y(the)45 b(decompressed)f(v)m
--(ersion)g(of)g(a)h(\014le)e(is)h(iden)m(tical)f(to)i(the)g(original.)81
--b(This)43 b(guards)390 3992 y(against)i(corruption)e(of)h(the)h
--(compressed)f(data,)49 b(and)44 b(against)h(undetected)g(bugs)e(in)390
--4096 y Fj(bzip2)35 b Fl(\(hop)s(efully)e(v)m(ery)k(unlik)m(ely\).)56
--b(The)36 b(c)m(hances)h(of)f(data)h(corruption)e(going)h(unde-)390
--4199 y(tected)g(is)e(microscopic,)h(ab)s(out)f(one)h(c)m(hance)g(in)f
--(four)g(billion)d(for)j(eac)m(h)i(\014le)d(pro)s(cessed.)390
--4303 y(Be)38 b(a)m(w)m(are,)k(though,)d(that)f(the)g(c)m(hec)m(k)i(o)s
--(ccurs)d(up)s(on)f(decompression,)j(so)f(it)f(can)h(only)390
--4407 y(tell)28 b(y)m(ou)g(that)i(something)d(is)h(wrong.)40
--b(It)28 b(can't)i(help)d(y)m(ou)i(reco)m(v)m(er)h(the)e(original)f
--(uncom-)390 4511 y(pressed)h(data.)41 b(Y)-8 b(ou)30
--b(can)f(use)g Fj(bzip2recover)d Fl(to)k(try)f(to)h(reco)m(v)m(er)h
--(data)f(from)e(damaged)390 4614 y(\014les.)390 4766 y(Return)22
--b(v)-5 b(alues:)37 b(0)23 b(for)g(a)g(normal)f(exit,)j(1)e(for)g(en)m
--(vironmen)m(tal)f(problems)f(\(\014le)i(not)g(found,)390
--4869 y(in)m(v)-5 b(alid)30 b(\015ags,)k(I/O)f(errors,)g(&c\),)h(2)f(to)
--g(indicate)f(a)h(corrupt)f(compressed)h(\014le,)f(3)i(for)e(an)390
--4973 y(in)m(ternal)d(consistency)h(error)g(\(eg,)i(bug\))e(whic)m(h)f
--(caused)i Fj(bzip2)e Fl(to)i(panic.)390 5304 y Ff(OPTIONS)p
--eop
+-b(to)g(use)f Fi(bzip2)2375 b Fl(4)570 299 y Fi(filename.tbz2)27
+-b Fj(b)s(ecomes)j Fi(filename.tar)570 470 y(filename.tbz)57
+-b Fj(b)s(ecomes)31 b Fi(filename.tar)570 641 y(anyothername)57
+-b Fj(b)s(ecomes)31 b Fi(anyothername.out)390 859 y Fj(If)i(the)g
+-(\014le)f(do)s(es)h(not)g(end)f(in)g(one)i(of)e(the)h(recognised)h
+-(endings,)f Fi(.bz2)p Fj(,)g Fi(.bz)p Fj(,)f Fi(.tbz2)g
+-Fj(or)390 963 y Fi(.tbz)p Fj(,)h Fi(bzip2)g Fj(complains)g(that)h(it)h
+-(cannot)f(guess)f(the)h(name)g(of)f(the)h(original)h(\014le,)g(and)390
+-1067 y(uses)30 b(the)h(original)g(name)f(with)h Fi(.out)e
+-Fj(app)s(ended.)390 1218 y(As)g(with)h(compression,)h(supplying)e(no)h
+-(\014lenames)f(causes)i(decompression)f(from)g(stan-)390
+-1321 y(dard)f(input)h(to)h(standard)f(output.)390 1472
+-y Fi(bunzip2)h Fj(will)j(correctly)i(decompress)d(a)h(\014le)f(whic)m
+-(h)g(is)h(the)g(concatenation)h(of)f(t)m(w)m(o)h(or)390
+-1576 y(more)i(compressed)g(\014les.)61 b(The)37 b(result)g(is)g(the)g
+-(concatenation)i(of)e(the)g(corresp)s(onding)390 1680
+-y(uncompressed)c(\014les.)52 b(In)m(tegrit)m(y)37 b(testing)e(\()p
+-Fi(-t)p Fj(\))f(of)h(concatenated)h(compressed)e(\014les)g(is)390
+-1784 y(also)d(supp)s(orted.)390 1935 y(Y)-8 b(ou)38 b(can)g(also)g
+-(compress)g(or)g(decompress)g(\014les)f(to)i(the)f(standard)f(output)g
+-(b)m(y)h(giving)390 2039 y(the)44 b Fi(-c)e Fj(\015ag.)79
+-b(Multiple)44 b(\014les)g(ma)m(y)f(b)s(e)g(compressed)g(and)f
+-(decompressed)h(lik)m(e)i(this.)390 2142 y(The)31 b(resulting)h
+-(outputs)e(are)i(fed)f(sequen)m(tially)h(to)g(stdout.)43
+-b(Compression)31 b(of)g(m)m(ultiple)390 2246 y(\014les)43
+-b(in)g(this)g(manner)g(generates)i(a)e(stream)h(con)m(taining)g(m)m
+-(ultiple)h(compressed)e(\014le)390 2350 y(represen)m(tations.)48
+-b(Suc)m(h)32 b(a)g(stream)h(can)f(b)s(e)g(decompressed)g(correctly)j
+-(only)d(b)m(y)g Fi(bzip2)390 2454 y Fj(v)m(ersion)h(0.9.0)h(or)f
+-(later.)48 b(Earlier)33 b(v)m(ersions)g(of)g Fi(bzip2)e
+-Fj(will)i(stop)g(after)g(decompressing)390 2558 y(the)e(\014rst)f
+-(\014le)g(in)g(the)h(stream.)390 2709 y Fi(bzcat)e Fj(\(or)i
+-Fi(bzip2)e(-dc)p Fj(\))h(decompresses)g(all)h(sp)s(eci\014ed)f(\014les)
+-g(to)i(the)e(standard)g(output.)390 2860 y Fi(bzip2)c
+-Fj(will)j(read)e(argumen)m(ts)i(from)e(the)h(en)m(vironmen)m(t)h(v)-5
+-b(ariables)28 b Fi(BZIP2)f Fj(and)g Fi(BZIP)p Fj(,)g(in)390
+-2963 y(that)21 b(order,)i(and)d(will)h(pro)s(cess)f(them)h(b)s(efore)g
+-(an)m(y)f(argumen)m(ts)h(read)g(from)f(the)h(command)390
+-3067 y(line.)41 b(This)30 b(giv)m(es)i(a)e(con)m(v)m(enien)m(t)j(w)m(a)
+-m(y)e(to)g(supply)e(default)i(argumen)m(ts.)390 3218
+-y(Compression)e(is)h(alw)m(a)m(ys)h(p)s(erformed,)e(ev)m(en)h(if)g(the)
+-g(compressed)f(\014le)h(is)g(sligh)m(tly)h(larger)390
+-3322 y(than)24 b(the)h(original.)40 b(Files)25 b(of)f(less)h(than)f(ab)
+-s(out)g(one)h(h)m(undred)d(b)m(ytes)j(tend)g(to)g(get)h(larger,)390
+-3426 y(since)33 b(the)g(compression)f(mec)m(hanism)h(has)f(a)h(constan)
+-m(t)g(o)m(v)m(erhead)h(in)e(the)h(region)g(of)g(50)390
+-3529 y(b)m(ytes.)50 b(Random)33 b(data)h(\(including)f(the)h(output)f
+-(of)g(most)h(\014le)g(compressors\))g(is)f(co)s(ded)390
+-3633 y(at)e(ab)s(out)f(8.05)i(bits)e(p)s(er)g(b)m(yte,)h(giving)h(an)e
+-(expansion)g(of)g(around)f(0.5\045.)390 3784 y(As)f(a)h(self-c)m(hec)m
+-(k)i(for)e(y)m(our)g(protection,)i Fi(bzip2)d Fj(uses)g(32-bit)i(CR)m
+-(Cs)f(to)g(mak)m(e)h(sure)e(that)390 3888 y(the)43 b(decompressed)g(v)m
+-(ersion)h(of)f(a)g(\014le)f(is)h(iden)m(tical)i(to)f(the)f(original.)79
+-b(This)43 b(guards)390 3992 y(against)h(corruption)f(of)h(the)f
+-(compressed)g(data,)k(and)42 b(against)i(undetected)g(bugs)e(in)390
+-4096 y Fi(bzip2)33 b Fj(\(hop)s(efully)i(v)m(ery)g(unlik)m(ely\).)55
+-b(The)35 b(c)m(hances)h(of)f(data)g(corruption)g(going)h(unde-)390
+-4199 y(tected)e(is)f(microscopic,)h(ab)s(out)e(one)h(c)m(hance)g(in)g
+-(four)f(billion)g(for)h(eac)m(h)g(\014le)g(pro)s(cessed.)390
+-4303 y(Be)j(a)m(w)m(are,)k(though,)d(that)g(the)g(c)m(hec)m(k)h(o)s
+-(ccurs)e(up)s(on)f(decompression,)j(so)f(it)f(can)h(only)390
+-4407 y(tell)28 b(y)m(ou)e(that)h(something)g(is)g(wrong.)39
+-b(It)27 b(can't)g(help)f(y)m(ou)h(reco)m(v)m(er)i(the)d(original)i
+-(uncom-)390 4511 y(pressed)f(data.)40 b(Y)-8 b(ou)27
+-b(can)g(use)h Fi(bzip2recover)23 b Fj(to)29 b(try)e(to)i(reco)m(v)m(er)
+-g(data)f(from)f(damaged)390 4614 y(\014les.)390 4766
+-y(Return)42 b(v)-5 b(alues:)65 b(0)42 b(for)h(a)f(normal)g(exit,)47
+-b(1)c(for)f(en)m(vironmen)m(tal)i(problems)e(\(\014le)h(not)390
+-4869 y(found,)29 b(in)m(v)-5 b(alid)30 b(\015ags,)g(I/O)h(errors,)g
+-(&c\),)f(2)h(to)f(indicate)h(a)f(corrupt)g(compressed)g(\014le,)h(3)390
+-4973 y(for)f(an)g(in)m(ternal)i(consistency)f(error)g(\(eg,)h(bug\))e
+-(whic)m(h)g(caused)g Fi(bzip2)f Fj(to)i(panic.)390 5304
+-y Fe(OPTIONS)p eop
 -%%Page: 5 6
 -5 5 bop 150 -116 a Fl(Chapter)30 b(2:)41 b(Ho)m(w)31
--b(to)g(use)f Fj(bzip2)2375 b Fl(5)390 299 y Fj(-c)30
--b(--stdout)870 403 y Fl(Compress)f(or)i(decompress)f(to)h(standard)e
--(output.)390 557 y Fj(-d)h(--decompress)870 661 y Fl(F)-8
--b(orce)44 b(decompression.)77 b Fj(bzip2)p Fl(,)44 b
--Fj(bunzip2)d Fl(and)h Fj(bzcat)f Fl(are)i(really)f(the)870
--764 y(same)27 b(program,)h(and)e(the)i(decision)d(ab)s(out)i(what)g
--(actions)g(to)h(tak)m(e)g(is)e(done)870 868 y(on)k(the)h(basis)e(of)i
--(whic)m(h)e(name)h(is)g(used.)40 b(This)28 b(\015ag)j(o)m(v)m(errides)f
--(that)h(mec)m(h-)870 972 y(anism,)e(and)h(forces)h(bzip2)e(to)i
--(decompress.)390 1126 y Fj(-z)f(--compress)870 1230 y
--Fl(The)39 b(complemen)m(t)h(to)g Fj(-d)p Fl(:)59 b(forces)40
--b(compression,)h(regardless)d(of)i(the)g(in-)870 1334
--y(v)m(ok)-5 b(ation)31 b(name.)390 1488 y Fj(-t)f(--test)8
--b Fl(Chec)m(k)33 b(in)m(tegrit)m(y)j(of)f(the)g(sp)s(eci\014ed)e
--(\014le\(s\),)k(but)d(don't)h(decompress)g(them.)870
--1591 y(This)40 b(really)g(p)s(erforms)g(a)i(trial)e(decompression)h
--(and)g(thro)m(ws)g(a)m(w)m(a)m(y)j(the)870 1695 y(result.)390
--1849 y Fj(-f)30 b(--force)870 1953 y Fl(F)-8 b(orce)31
--b(o)m(v)m(erwrite)f(of)g(output)f(\014les.)40 b(Normally)-8
--b(,)29 b Fj(bzip2)f Fl(will)f(not)j(o)m(v)m(erwrite)870
--2057 y(existing)e(output)g(\014les.)39 b(Also)28 b(forces)h
--Fj(bzip2)e Fl(to)i(break)g(hard)e(links)f(to)k(\014les,)870
--2161 y(whic)m(h)f(it)h(otherwise)g(w)m(ouldn't)f(do.)390
--2315 y Fj(-k)h(--keep)8 b Fl(Keep)24 b(\(don't)i(delete\))h(input)d
--(\014les)g(during)g(compression)h(or)h(decompression.)390
--2469 y Fj(-s)k(--small)870 2573 y Fl(Reduce)23 b(memory)f(usage,)j(for)
--d(compression,)h(decompression)f(and)g(testing.)870 2676
--y(Files)f(are)i(decompressed)e(and)h(tested)h(using)e(a)h(mo)s
--(di\014ed)e(algorithm)h(whic)m(h)870 2780 y(only)30 b(requires)g(2.5)j
--(b)m(ytes)f(p)s(er)e(blo)s(c)m(k)h(b)m(yte.)44 b(This)30
--b(means)h(an)m(y)h(\014le)e(can)i(b)s(e)870 2884 y(decompressed)d(in)f
--(2300k)j(of)e(memory)-8 b(,)30 b(alb)s(eit)e(at)i(ab)s(out)f(half)g
--(the)g(normal)870 2988 y(sp)s(eed.)870 3117 y(During)42
--b(compression,)k Fj(-s)d Fl(selects)h(a)g(blo)s(c)m(k)g(size)f(of)h
--(200k,)k(whic)m(h)42 b(lim-)870 3220 y(its)33 b(memory)g(use)g(to)h
--(around)e(the)i(same)f(\014gure,)h(at)g(the)g(exp)s(ense)f(of)g(y)m
--(our)870 3324 y(compression)g(ratio.)50 b(In)33 b(short,)i(if)d(y)m
--(our)i(mac)m(hine)f(is)g(lo)m(w)g(on)h(memory)f(\(8)870
--3428 y(megab)m(ytes)42 b(or)e(less\),)j(use)d(-s)g(for)g(ev)m
--(erything.)71 b(See)40 b(MEMOR)-8 b(Y)41 b(MAN-)870 3532
--y(A)m(GEMENT)31 b(b)s(elo)m(w.)390 3686 y Fj(-q)f(--quiet)870
--3790 y Fl(Suppress)j(non-essen)m(tial)j(w)m(arning)e(messages.)58
--b(Messages)38 b(p)s(ertaining)33 b(to)870 3893 y(I/O)d(errors)g(and)g
--(other)h(critical)e(ev)m(en)m(ts)j(will)27 b(not)k(b)s(e)f(suppressed.)
--390 4047 y Fj(-v)g(--verbose)870 4151 y Fl(V)-8 b(erb)s(ose)28
--b(mo)s(de)f({)i(sho)m(w)e(the)h(compression)f(ratio)h(for)f(eac)m(h)i
--(\014le)e(pro)s(cessed.)870 4255 y(F)-8 b(urther)30 b
--Fj(-v)p Fl('s)g(increase)g(the)g(v)m(erb)s(osit)m(y)g(lev)m(el,)h(sp)s
--(ewing)d(out)j(lots)f(of)g(infor-)870 4359 y(mation)g(whic)m(h)f(is)h
--(primarily)d(of)j(in)m(terest)h(for)f(diagnostic)g(purp)s(oses.)390
--4513 y Fj(-L)g(--license)e(-V)h(--version)870 4617 y
--Fl(Displa)m(y)h(the)g(soft)m(w)m(are)i(v)m(ersion,)e(license)f(terms)i
--(and)e(conditions.)390 4771 y Fj(-1)h(to)g(-9)72 b Fl(Set)35
--b(the)g(blo)s(c)m(k)f(size)h(to)g(100)h(k,)g(200)g(k)f(..)53
--b(900)36 b(k)f(when)f(compressing.)53 b(Has)870 4875
--y(no)41 b(e\013ect)h(when)d(decompressing.)71 b(See)41
--b(MEMOR)-8 b(Y)41 b(MANA)m(GEMENT)870 4978 y(b)s(elo)m(w.)390
--5132 y Fj(--)324 b Fl(T)-8 b(reats)25 b(all)e(subsequen)m(t)g(argumen)m
--(ts)i(as)f(\014le)g(names,)h(ev)m(en)g(if)e(they)i(start)f(with)870
--5236 y(a)32 b(dash.)43 b(This)29 b(is)h(so)i(y)m(ou)g(can)f(handle)f
--(\014les)g(with)g(names)i(b)s(eginning)c(with)870 5340
--y(a)j(dash,)f(for)g(example:)40 b Fj(bzip2)29 b(--)h(-myfilename)p
--Fl(.)p eop
+-b(to)g(use)f Fi(bzip2)2375 b Fl(5)390 299 y Fi(-c)30
+-b(--stdout)870 403 y Fj(Compress)g(or)g(decompress)h(to)g(standard)e
+-(output.)390 550 y Fi(-d)h(--decompress)870 653 y Fj(F)-8
+-b(orce)42 b(decompression.)72 b Fi(bzip2)p Fj(,)43 b
+-Fi(bunzip2)38 b Fj(and)i Fi(bzcat)g Fj(are)h(really)h(the)870
+-757 y(same)26 b(program,)i(and)d(the)h(decision)h(ab)s(out)f(what)g
+-(actions)h(to)g(tak)m(e)h(is)e(done)870 861 y(on)j(the)h(basis)f(of)g
+-(whic)m(h)h(name)f(is)g(used.)40 b(This)29 b(\015ag)g(o)m(v)m(errides)i
+-(that)f(mec)m(h-)870 965 y(anism,)g(and)g(forces)h(bzip2)f(to)h
+-(decompress.)390 1112 y Fi(-z)f(--compress)870 1215 y
+-Fj(The)37 b(complemen)m(t)h(to)g Fi(-d)p Fj(:)54 b(forces)37
+-b(compression,)j(regardless)d(of)h(the)f(in-)870 1319
+-y(v)m(ok)-5 b(ation)32 b(name.)390 1466 y Fi(-t)e(--test)66
+-b Fj(Chec)m(k)26 b(in)m(tegrit)m(y)i(of)e(the)g(sp)s(eci\014ed)f
+-(\014le\(s\),)i(but)e(don't)h(decompress)g(them.)870
+-1570 y(This)39 b(really)h(p)s(erforms)f(a)g(trial)h(decompression)g
+-(and)e(thro)m(ws)i(a)m(w)m(a)m(y)h(the)870 1674 y(result.)390
+-1821 y Fi(-f)30 b(--force)870 1924 y Fj(F)-8 b(orce)27
+-b(o)m(v)m(erwrite)h(of)e(output)g(\014les.)39 b(Normally)-8
+-b(,)28 b Fi(bzip2)c Fj(will)j(not)f(o)m(v)m(erwrite)870
+-2028 y(existing)i(output)e(\014les.)40 b(Also)27 b(forces)g
+-Fi(bzip2)f Fj(to)h(break)g(hard)f(links)g(to)i(\014les,)870
+-2132 y(whic)m(h)i(it)h(otherwise)g(w)m(ouldn't)g(do.)870
+-2257 y Fi(bzip2)h Fj(normally)h(declines)h(to)f(decompress)h(\014les)f
+-(whic)m(h)f(don't)i(ha)m(v)m(e)g(the)870 2361 y(correct)39
+-b(magic)g(header)e(b)m(ytes.)63 b(If)38 b(forced)g(\()p
+-Fi(-f)p Fj(\),)h(ho)m(w)m(ev)m(er,)i(it)e(will)f(pass)870
+-2465 y(suc)m(h)30 b(\014les)g(through)g(unmo)s(di\014ed.)39
+-b(This)30 b(is)h(ho)m(w)f(GNU)h Fi(gzip)e Fj(b)s(eha)m(v)m(es.)390
+-2612 y Fi(-k)h(--keep)66 b Fj(Keep)34 b(\(don't)g(delete\))h(input)d
+-(\014les)i(during)e(compression)i(or)f(decompres-)870
+-2716 y(sion.)390 2863 y Fi(-s)d(--small)870 2966 y Fj(Reduce)35
+-b(memory)g(usage,)i(for)e(compression,)i(decompression)e(and)f(test-)
+-870 3070 y(ing.)40 b(Files)29 b(are)f(decompressed)g(and)f(tested)i
+-(using)f(a)g(mo)s(di\014ed)f(algorithm)870 3174 y(whic)m(h)32
+-b(only)g(requires)h(2.5)g(b)m(ytes)g(p)s(er)f(blo)s(c)m(k)g(b)m(yte.)48
+-b(This)32 b(means)f(an)m(y)i(\014le)870 3278 y(can)d(b)s(e)f
+-(decompressed)g(in)h(2300k)h(of)f(memory)-8 b(,)31 b(alb)s(eit)f(at)g
+-(ab)s(out)f(half)h(the)870 3381 y(normal)g(sp)s(eed.)870
+-3507 y(During)35 b(compression,)j Fi(-s)d Fj(selects)j(a)e(blo)s(c)m(k)
+-h(size)f(of)h(200k,)h(whic)m(h)e(limits)870 3611 y(memory)43
+-b(use)f(to)h(around)e(the)i(same)f(\014gure,)k(at)d(the)f(exp)s(ense)g
+-(of)h(y)m(our)870 3714 y(compression)32 b(ratio.)47 b(In)31
+-b(short,)i(if)e(y)m(our)i(mac)m(hine)f(is)g(lo)m(w)g(on)g(memory)g(\(8)
+-870 3818 y(megab)m(ytes)39 b(or)e(less\),)j(use)d(-s)g(for)g(ev)m
+-(erything.)62 b(See)38 b(MEMOR)-8 b(Y)37 b(MAN-)870 3922
+-y(A)m(GEMENT)31 b(b)s(elo)m(w.)390 4069 y Fi(-q)f(--quiet)870
+-4173 y Fj(Suppress)h(non-essen)m(tial)j(w)m(arning)f(messages.)49
+-b(Messages)34 b(p)s(ertaining)f(to)870 4276 y(I/O)e(errors)g(and)e
+-(other)i(critical)i(ev)m(en)m(ts)f(will)e(not)h(b)s(e)f(suppressed.)390
+-4423 y Fi(-v)g(--verbose)870 4527 y Fj(V)-8 b(erb)s(ose)25
+-b(mo)s(de)f({)h(sho)m(w)f(the)h(compression)g(ratio)g(for)g(eac)m(h)g
+-(\014le)g(pro)s(cessed.)870 4631 y(F)-8 b(urther)27 b
+-Fi(-v)p Fj('s)g(increase)h(the)g(v)m(erb)s(osit)m(y)g(lev)m(el,)i(sp)s
+-(ewing)d(out)g(lots)h(of)g(infor-)870 4735 y(mation)j(whic)m(h)f(is)g
+-(primarily)h(of)f(in)m(terest)i(for)f(diagnostic)g(purp)s(oses.)390
+-4882 y Fi(-L)f(--license)e(-V)h(--version)870 4985 y
+-Fj(Displa)m(y)i(the)f(soft)m(w)m(are)i(v)m(ersion,)g(license)f(terms)g
+-(and)e(conditions.)390 5132 y Fi(-1)h(\(or)f(--fast\))g(to)g(-9)h(\(or)
+-g(--best\))870 5236 y Fj(Set)h(the)g(blo)s(c)m(k)g(size)g(to)h(100)g
+-(k,)e(200)i(k)f(..)41 b(900)32 b(k)f(when)e(compressing.)42
+-b(Has)870 5340 y(no)37 b(e\013ect)i(when)d(decompressing.)62
+-b(See)37 b(MEMOR)-8 b(Y)38 b(MANA)m(GEMENT)p eop
 -%%Page: 6 7
 -6 6 bop 150 -116 a Fl(Chapter)30 b(2:)41 b(Ho)m(w)31
--b(to)g(use)f Fj(bzip2)2375 b Fl(6)390 299 y Fj(--repetitive-fast)390
--427 y(--repetitive-best)870 530 y Fl(These)34 b(\015ags)g(are)h
--(redundan)m(t)e(in)g(v)m(ersions)g(0.9.5)j(and)e(ab)s(o)m(v)m(e.)53
--b(They)34 b(pro-)870 634 y(vided)h(some)i(coarse)g(con)m(trol)g(o)m(v)m
--(er)g(the)g(b)s(eha)m(viour)e(of)h(the)g(sorting)g(algo-)870
--738 y(rithm)h(in)h(earlier)g(v)m(ersions,)j(whic)m(h)d(w)m(as)h
--(sometimes)h(useful.)65 b(0.9.5)41 b(and)870 842 y(ab)s(o)m(v)m(e)34
--b(ha)m(v)m(e)g(an)f(impro)m(v)m(ed)g(algorithm)f(whic)m(h)f(renders)h
--(these)h(\015ags)h(irrel-)870 946 y(ev)-5 b(an)m(t.)390
--1190 y Ff(MEMOR)-10 b(Y)40 b(MANA)m(GEMENT)390 1377 y
--Fj(bzip2)25 b Fl(compresses)i(large)g(\014les)e(in)g(blo)s(c)m(ks.)39
--b(The)26 b(blo)s(c)m(k)h(size)f(a\013ects)i(b)s(oth)e(the)h(compres-)
--390 1481 y(sion)39 b(ratio)g(ac)m(hiev)m(ed,)k(and)d(the)f(amoun)m(t)i
--(of)e(memory)h(needed)f(for)h(compression)f(and)390 1585
--y(decompression.)59 b(The)36 b(\015ags)h Fj(-1)f Fl(through)h
--Fj(-9)f Fl(sp)s(ecify)f(the)i(blo)s(c)m(k)g(size)f(to)i(b)s(e)e
--(100,000)390 1688 y(b)m(ytes)29 b(through)e(900,000)k(b)m(ytes)d(\(the)
--h(default\))e(resp)s(ectiv)m(ely)-8 b(.)40 b(A)m(t)29
--b(decompression)e(time,)390 1792 y(the)32 b(blo)s(c)m(k)g(size)g(used)g
--(for)g(compression)f(is)g(read)h(from)g(the)g(header)g(of)h(the)f
--(compressed)390 1896 y(\014le,)j(and)f Fj(bunzip2)e Fl(then)i(allo)s
--(cates)h(itself)e(just)h(enough)g(memory)g(to)i(decompress)e(the)390
--2000 y(\014le.)39 b(Since)29 b(blo)s(c)m(k)g(sizes)g(are)h(stored)f(in)
--f(compressed)h(\014les,)g(it)g(follo)m(ws)f(that)i(the)g(\015ags)g
--Fj(-1)390 2103 y Fl(to)h Fj(-9)f Fl(are)h(irrelev)-5
--b(an)m(t)29 b(to)i(and)f(so)h(ignored)e(during)f(decompression.)390
--2255 y(Compression)h(and)g(decompression)h(requiremen)m(ts,)f(in)g(b)m
--(ytes,)j(can)e(b)s(e)g(estimated)h(as:)869 2406 y Fj(Compression:)140
--b(400k)46 b(+)i(\()f(8)h(x)f(block)f(size)h(\))869 2613
+-b(to)g(use)f Fi(bzip2)2375 b Fl(6)870 299 y Fj(b)s(elo)m(w.)83
+-b(The)44 b Fi(--fast)f Fj(and)g Fi(--best)g Fj(aliases)i(are)g
+-(primarily)f(for)g(GNU)870 403 y Fi(gzip)27 b Fj(compatibilit)m(y)-8
+-b(.)43 b(In)28 b(particular,)i Fi(--fast)d Fj(do)s(esn't)h(mak)m(e)i
+-(things)e(sig-)870 506 y(ni\014can)m(tly)d(faster.)40
+-b(And)23 b Fi(--best)g Fj(merely)i(selects)h(the)f(default)g(b)s(eha)m
+-(viour.)390 674 y Fi(--)384 b Fj(T)-8 b(reats)38 b(all)f(subsequen)m(t)
+-f(argumen)m(ts)g(as)h(\014le)f(names,)i(ev)m(en)f(if)f(they)h(start)870
+-778 y(with)31 b(a)h(dash.)42 b(This)31 b(is)h(so)f(y)m(ou)h(can)f
+-(handle)g(\014les)g(with)h(names)f(b)s(eginning)870 881
+-y(with)f(a)h(dash,)e(for)i(example:)41 b Fi(bzip2)29
+-b(--)h(-myfilename)p Fj(.)390 1049 y Fi(--repetitive-fast)390
+-1185 y(--repetitive-best)870 1288 y Fj(These)j(\015ags)g(are)g
+-(redundan)m(t)f(in)h(v)m(ersions)g(0.9.5)i(and)d(ab)s(o)m(v)m(e.)49
+-b(They)33 b(pro-)870 1392 y(vided)g(some)h(coarse)h(con)m(trol)g(o)m(v)
+-m(er)g(the)f(b)s(eha)m(viour)f(of)h(the)g(sorting)g(algo-)870
+-1496 y(rithm)j(in)g(earlier)h(v)m(ersions,)i(whic)m(h)d(w)m(as)g
+-(sometimes)h(useful.)61 b(0.9.5)39 b(and)870 1600 y(ab)s(o)m(v)m(e)31
+-b(ha)m(v)m(e)f(an)g(impro)m(v)m(ed)g(algorithm)h(whic)m(h)e(renders)g
+-(these)h(\015ags)g(irrel-)870 1704 y(ev)-5 b(an)m(t.)390
+-1964 y Fe(MEMOR)-10 b(Y)40 b(MANA)m(GEMENT)390 2151 y
+-Fi(bzip2)23 b Fj(compresses)i(large)h(\014les)e(in)g(blo)s(c)m(ks.)40
+-b(The)24 b(blo)s(c)m(k)h(size)h(a\013ects)g(b)s(oth)e(the)g(compres-)
+-390 2255 y(sion)38 b(ratio)g(ac)m(hiev)m(ed,)k(and)36
+-b(the)i(amoun)m(t)g(of)g(memory)g(needed)f(for)h(compression)g(and)390
+-2358 y(decompression.)57 b(The)35 b(\015ags)h Fi(-1)f
+-Fj(through)g Fi(-9)g Fj(sp)s(ecify)g(the)h(blo)s(c)m(k)g(size)h(to)f(b)
+-s(e)f(100,000)390 2462 y(b)m(ytes)25 b(through)f(900,000)j(b)m(ytes)e
+-(\(the)h(default\))e(resp)s(ectiv)m(ely)-8 b(.)41 b(A)m(t)25
+-b(decompression)g(time,)390 2566 y(the)k(blo)s(c)m(k)h(size)g(used)f
+-(for)g(compression)g(is)g(read)h(from)f(the)g(header)g(of)g(the)h
+-(compressed)390 2670 y(\014le,)j(and)f Fi(bunzip2)f Fj(then)h(allo)s
+-(cates)i(itself)g(just)e(enough)g(memory)h(to)g(decompress)g(the)390
+-2773 y(\014le.)40 b(Since)27 b(blo)s(c)m(k)h(sizes)h(are)f(stored)g(in)
+-f(compressed)g(\014les,)h(it)h(follo)m(ws)f(that)g(the)g(\015ags)g
+-Fi(-1)390 2877 y Fj(to)j Fi(-9)f Fj(are)h(irrelev)-5
+-b(an)m(t)32 b(to)f(and)f(so)g(ignored)h(during)e(decompression.)390
+-3028 y(Compression)h(and)f(decompression)i(requiremen)m(ts,)g(in)f(b)m
+-(ytes,)i(can)e(b)s(e)g(estimated)i(as:)869 3179 y Fi(Compression:)140
+-b(400k)46 b(+)i(\()f(8)h(x)f(block)f(size)h(\))869 3387
 -y(Decompression:)d(100k)i(+)i(\()f(4)h(x)f(block)f(size)h(\),)g(or)1585
--2717 y(100k)f(+)i(\()f(2.5)g(x)g(block)g(size)f(\))390
--2868 y Fl(Larger)29 b(blo)s(c)m(k)f(sizes)h(giv)m(e)g(rapidly)d
--(diminishing)e(marginal)k(returns.)39 b(Most)29 b(of)g(the)g(com-)390
--2972 y(pression)d(comes)j(from)f(the)g(\014rst)g(t)m(w)m(o)h(or)f
--(three)h(h)m(undred)d(k)i(of)g(blo)s(c)m(k)g(size,)g(a)h(fact)g(w)m
--(orth)390 3075 y(b)s(earing)j(in)f(mind)g(when)h(using)f
--Fj(bzip2)h Fl(on)g(small)g(mac)m(hines.)47 b(It)33 b(is)f(also)h(imp)s
--(ortan)m(t)f(to)390 3179 y(appreciate)j(that)h(the)f(decompression)f
--(memory)h(requiremen)m(t)f(is)h(set)g(at)h(compression)390
--3283 y(time)30 b(b)m(y)g(the)h(c)m(hoice)g(of)g(blo)s(c)m(k)f(size.)390
--3434 y(F)-8 b(or)45 b(\014les)f(compressed)g(with)g(the)g(default)g
--(900k)i(blo)s(c)m(k)e(size,)49 b Fj(bunzip2)42 b Fl(will)g(require)390
--3538 y(ab)s(out)29 b(3700)j(kb)m(ytes)e(to)h(decompress.)40
--b(T)-8 b(o)30 b(supp)s(ort)e(decompression)h(of)h(an)m(y)g(\014le)f(on)
--g(a)i(4)390 3642 y(megab)m(yte)h(mac)m(hine,)d Fj(bunzip2)f
--Fl(has)i(an)g(option)f(to)i(decompress)e(using)g(appro)m(ximately)390
--3745 y(half)k(this)g(amoun)m(t)i(of)f(memory)-8 b(,)36
--b(ab)s(out)e(2300)i(kb)m(ytes.)53 b(Decompression)34
--b(sp)s(eed)g(is)f(also)390 3849 y(halv)m(ed,)i(so)f(y)m(ou)h(should)d
--(use)h(this)g(option)h(only)f(where)h(necessary)-8 b(.)53
--b(The)33 b(relev)-5 b(an)m(t)35 b(\015ag)390 3953 y(is)29
--b Fj(-s)p Fl(.)390 4104 y(In)34 b(general,)i(try)f(and)f(use)g(the)h
--(largest)h(blo)s(c)m(k)e(size)h(memory)f(constrain)m(ts)h(allo)m(w,)h
--(since)390 4208 y(that)45 b(maximises)f(the)h(compression)f(ac)m(hiev)m
--(ed.)85 b(Compression)43 b(and)h(decompression)390 4311
--y(sp)s(eed)30 b(are)g(virtually)e(una\013ected)j(b)m(y)f(blo)s(c)m(k)g
--(size.)390 4463 y(Another)25 b(signi\014can)m(t)f(p)s(oin)m(t)g
--(applies)f(to)j(\014les)e(whic)m(h)g(\014t)h(in)e(a)j(single)d(blo)s(c)
--m(k)i({)g(that)h(means)390 4566 y(most)g(\014les)g(y)m(ou'd)g(encoun)m
--(ter)h(using)d(a)j(large)f(blo)s(c)m(k)g(size.)39 b(The)25
--b(amoun)m(t)i(of)f(real)g(memory)390 4670 y(touc)m(hed)38
--b(is)e(prop)s(ortional)f(to)j(the)f(size)g(of)h(the)f(\014le,)h(since)f
--(the)g(\014le)g(is)f(smaller)g(than)h(a)390 4774 y(blo)s(c)m(k.)49
--b(F)-8 b(or)35 b(example,)f(compressing)e(a)i(\014le)e(20,000)k(b)m
--(ytes)e(long)f(with)f(the)i(\015ag)g Fj(-9)f Fl(will)390
--4878 y(cause)28 b(the)f(compressor)g(to)h(allo)s(cate)f(around)f(7600k)
--j(of)e(memory)-8 b(,)28 b(but)f(only)f(touc)m(h)i(400k)390
--4981 y Fj(+)h Fl(20000)j(*)e(8)g(=)f(560)i(kb)m(ytes)f(of)g(it.)40
--b(Similarly)-8 b(,)26 b(the)k(decompressor)f(will)e(allo)s(cate)j
--(3700k)390 5085 y(but)g(only)f(touc)m(h)i(100k)h Fj(+)e
--Fl(20000)i(*)f(4)g(=)f(180)i(kb)m(ytes.)390 5236 y(Here)41
--b(is)f(a)i(table)f(whic)m(h)e(summarises)g(the)j(maxim)m(um)d(memory)i
--(usage)h(for)e(di\013eren)m(t)390 5340 y(blo)s(c)m(k)25
--b(sizes.)38 b(Also)25 b(recorded)g(is)f(the)i(total)g(compressed)e
--(size)h(for)g(14)h(\014les)e(of)i(the)f(Calgary)p eop
+-3491 y(100k)f(+)i(\()f(2.5)g(x)g(block)g(size)f(\))390
+-3642 y Fj(Larger)27 b(blo)s(c)m(k)f(sizes)h(giv)m(e)h(rapidly)e
+-(diminishing)f(marginal)i(returns.)39 b(Most)27 b(of)f(the)h(com-)390
+-3745 y(pression)e(comes)i(from)f(the)g(\014rst)f(t)m(w)m(o)i(or)f
+-(three)h(h)m(undred)d(k)h(of)h(blo)s(c)m(k)g(size,)i(a)e(fact)h(w)m
+-(orth)390 3849 y(b)s(earing)32 b(in)g(mind)f(when)g(using)h
+-Fi(bzip2)f Fj(on)h(small)g(mac)m(hines.)47 b(It)32 b(is)h(also)f(imp)s
+-(ortan)m(t)h(to)390 3953 y(appreciate)f(that)g(the)f(decompression)g
+-(memory)g(requiremen)m(t)h(is)f(set)g(at)h(compression)390
+-4057 y(time)f(b)m(y)f(the)h(c)m(hoice)h(of)f(blo)s(c)m(k)g(size.)390
+-4208 y(F)-8 b(or)43 b(\014les)f(compressed)h(with)f(the)g(default)h
+-(900k)g(blo)s(c)m(k)g(size,)k Fi(bunzip2)40 b Fj(will)j(require)390
+-4311 y(ab)s(out)28 b(3700)i(kb)m(ytes)f(to)h(decompress.)40
+-b(T)-8 b(o)29 b(supp)s(ort)e(decompression)i(of)g(an)m(y)f(\014le)h(on)
+-f(a)h(4)390 4415 y(megab)m(yte)h(mac)m(hine,)g Fi(bunzip2)c
+-Fj(has)i(an)h(option)g(to)g(decompress)g(using)f(appro)m(ximately)390
+-4519 y(half)33 b(this)g(amoun)m(t)h(of)f(memory)-8 b(,)35
+-b(ab)s(out)d(2300)j(kb)m(ytes.)50 b(Decompression)34
+-b(sp)s(eed)e(is)h(also)390 4623 y(halv)m(ed,)h(so)f(y)m(ou)g(should)e
+-(use)i(this)f(option)h(only)g(where)g(necessary)-8 b(.)48
+-b(The)33 b(relev)-5 b(an)m(t)34 b(\015ag)390 4727 y(is)c
+-Fi(-s)p Fj(.)390 4878 y(In)i(general,)i(try)f(and)e(use)h(the)h
+-(largest)h(blo)s(c)m(k)f(size)g(memory)g(constrain)m(ts)g(allo)m(w,)i
+-(since)390 4981 y(that)43 b(maximises)g(the)g(compression)f(ac)m(hiev)m
+-(ed.)79 b(Compression)42 b(and)g(decompression)390 5085
+-y(sp)s(eed)30 b(are)g(virtually)h(una\013ected)g(b)m(y)f(blo)s(c)m(k)h
+-(size.)390 5236 y(Another)24 b(signi\014can)m(t)i(p)s(oin)m(t)e
+-(applies)g(to)i(\014les)e(whic)m(h)g(\014t)h(in)f(a)g(single)h(blo)s(c)
+-m(k)g({)g(that)g(means)390 5340 y(most)g(\014les)f(y)m(ou'd)h(encoun)m
+-(ter)g(using)f(a)g(large)i(blo)s(c)m(k)f(size.)39 b(The)25
+-b(amoun)m(t)f(of)h(real)g(memory)p eop
 -%%Page: 7 8
 -7 7 bop 150 -116 a Fl(Chapter)30 b(2:)41 b(Ho)m(w)31
--b(to)g(use)f Fj(bzip2)2375 b Fl(7)390 299 y(T)-8 b(ext)38
--b(Compression)d(Corpus)h(totalling)h(3,141,622)k(b)m(ytes.)61
--b(This)36 b(column)g(giv)m(es)i(some)390 403 y(feel)23
--b(for)f(ho)m(w)h(compression)f(v)-5 b(aries)23 b(with)e(blo)s(c)m(k)i
--(size.)38 b(These)23 b(\014gures)f(tend)g(to)i(understate)390
--506 y(the)g(adv)-5 b(an)m(tage)26 b(of)e(larger)f(blo)s(c)m(k)h(sizes)f
--(for)h(larger)f(\014les,)h(since)g(the)g(Corpus)e(is)h(dominated)390
--610 y(b)m(y)30 b(smaller)f(\014les.)1107 761 y Fj(Compress)141
--b(Decompress)g(Decompress)f(Corpus)773 865 y(Flag)238
--b(usage)285 b(usage)332 b(-s)48 b(usage)237 b(Size)821
--1073 y(-1)286 b(1200k)332 b(500k)429 b(350k)285 b(914704)821
--1176 y(-2)h(2000k)332 b(900k)429 b(600k)285 b(877703)821
--1280 y(-3)h(2800k)f(1300k)428 b(850k)285 b(860338)821
--1384 y(-4)h(3600k)f(1700k)380 b(1100k)285 b(846899)821
--1488 y(-5)h(4400k)f(2100k)380 b(1350k)285 b(845160)821
--1591 y(-6)h(5200k)f(2500k)380 b(1600k)285 b(838626)821
--1695 y(-7)h(6100k)f(2900k)380 b(1850k)285 b(834096)821
--1799 y(-8)h(6800k)f(3300k)380 b(2100k)285 b(828642)821
--1903 y(-9)h(7600k)f(3700k)380 b(2350k)285 b(828642)390
--2147 y Ff(RECO)m(VERING)37 b(D)m(A)-10 b(T)g(A)40 b(FR)m(OM)h(D)m(AMA)m
--(GED)e(FILES)390 2333 y Fj(bzip2)25 b Fl(compresses)h(\014les)g(in)f
--(blo)s(c)m(ks,)h(usually)e(900kb)m(ytes)29 b(long.)39
--b(Eac)m(h)27 b(blo)s(c)m(k)e(is)h(handled)390 2437 y(indep)s(enden)m
--(tly)-8 b(.)47 b(If)32 b(a)i(media)e(or)h(transmission)e(error)i
--(causes)h(a)f(m)m(ulti-blo)s(c)m(k)f Fj(.bz2)g Fl(\014le)390
--2541 y(to)k(b)s(ecome)h(damaged,)g(it)e(ma)m(y)i(b)s(e)e(p)s(ossible)e
--(to)k(reco)m(v)m(er)g(data)f(from)g(the)f(undamaged)390
--2645 y(blo)s(c)m(ks)30 b(in)f(the)h(\014le.)390 2796
--y(The)j(compressed)h(represen)m(tation)f(of)h(eac)m(h)h(blo)s(c)m(k)e
--(is)g(delimited)e(b)m(y)j(a)g(48-bit)g(pattern,)390 2900
--y(whic)m(h)27 b(mak)m(es)j(it)e(p)s(ossible)e(to)j(\014nd)e(the)i(blo)s
--(c)m(k)f(b)s(oundaries)e(with)i(reasonable)g(certain)m(t)m(y)-8
--b(.)390 3003 y(Eac)m(h)34 b(blo)s(c)m(k)f(also)g(carries)g(its)g(o)m
--(wn)g(32-bit)g(CR)m(C,)h(so)f(damaged)h(blo)s(c)m(ks)f(can)g(b)s(e)g
--(distin-)390 3107 y(guished)c(from)h(undamaged)g(ones.)390
--3258 y Fj(bzip2recover)37 b Fl(is)j(a)h(simple)e(program)h(whose)g
--(purp)s(ose)f(is)h(to)i(searc)m(h)f(for)f(blo)s(c)m(ks)g(in)390
--3362 y Fj(.bz2)34 b Fl(\014les,)i(and)f(write)f(eac)m(h)j(blo)s(c)m(k)d
--(out)i(in)m(to)f(its)g(o)m(wn)g Fj(.bz2)f Fl(\014le.)55
--b(Y)-8 b(ou)36 b(can)f(then)g(use)390 3466 y Fj(bzip2)29
--b(-t)c Fl(to)i(test)f(the)g(in)m(tegrit)m(y)g(of)g(the)g(resulting)e
--(\014les,)i(and)f(decompress)h(those)g(whic)m(h)390 3569
--y(are)31 b(undamaged.)390 3721 y Fj(bzip2recover)41 b
--Fl(tak)m(es)46 b(a)f(single)e(argumen)m(t,)49 b(the)44
--b(name)h(of)g(the)f(damaged)h(\014le,)j(and)390 3824
--y(writes)33 b(a)i(n)m(um)m(b)s(er)d(of)j(\014les)e Fj(rec0001file.bz2)p
--Fl(,)e Fj(rec0002file.bz2)p Fl(,)g(etc,)36 b(con)m(taining)390
--3928 y(the)42 b(extracted)g(blo)s(c)m(ks.)74 b(The)41
--b(output)g(\014lenames)f(are)i(designed)e(so)i(that)g(the)g(use)f(of)
--390 4032 y(wildcards)30 b(in)h(subsequen)m(t)h(pro)s(cessing)f({)i(for)
--g(example,)g Fj(bzip2)c(-dc)g(rec*file.bz2)e(>)390 4136
--y(recovered_data)f Fl({)31 b(lists)e(the)i(\014les)e(in)g(the)i
--(correct)g(order.)390 4287 y Fj(bzip2recover)38 b Fl(should)i(b)s(e)g
--(of)i(most)g(use)f(dealing)f(with)g(large)i Fj(.bz2)e
--Fl(\014les,)k(as)d(these)390 4390 y(will)29 b(con)m(tain)j(man)m(y)g
--(blo)s(c)m(ks.)45 b(It)32 b(is)f(clearly)g(futile)f(to)i(use)g(it)f(on)
--h(damaged)g(single-blo)s(c)m(k)390 4494 y(\014les,)g(since)f(a)h
--(damaged)h(blo)s(c)m(k)e(cannot)i(b)s(e)e(reco)m(v)m(ered.)47
--b(If)32 b(y)m(ou)g(wish)e(to)j(minimise)c(an)m(y)390
--4598 y(p)s(oten)m(tial)36 b(data)i(loss)e(through)g(media)h(or)f
--(transmission)f(errors,)j(y)m(ou)f(migh)m(t)g(consider)390
--4702 y(compressing)29 b(with)g(a)i(smaller)e(blo)s(c)m(k)h(size.)390
--4946 y Ff(PERF)m(ORMANCE)39 b(NOTES)390 5132 y Fl(The)f(sorting)f
--(phase)h(of)h(compression)e(gathers)i(together)h(similar)35
--b(strings)i(in)g(the)i(\014le.)390 5236 y(Because)54
--b(of)f(this,)58 b(\014les)52 b(con)m(taining)g(v)m(ery)h(long)g(runs)e
--(of)i(rep)s(eated)g(sym)m(b)s(ols,)58 b(lik)m(e)390 5340
--y Fj(")p Fl(aabaabaabaab)e(...)p Fj(")g Fl(\(rep)s(eated)g(sev)m(eral)f
--(h)m(undred)e(times\))i(ma)m(y)h(compress)f(more)p eop
+-b(to)g(use)f Fi(bzip2)2375 b Fl(7)390 299 y Fj(touc)m(hed)36
+-b(is)g(prop)s(ortional)g(to)g(the)g(size)h(of)f(the)g(\014le,)h(since)f
+-(the)g(\014le)g(is)f(smaller)i(than)e(a)390 403 y(blo)s(c)m(k.)48
+-b(F)-8 b(or)33 b(example,)h(compressing)f(a)g(\014le)f(20,000)j(b)m
+-(ytes)f(long)f(with)f(the)h(\015ag)g Fi(-9)f Fj(will)390
+-506 y(cause)26 b(the)g(compressor)f(to)i(allo)s(cate)g(around)e(7600k)i
+-(of)f(memory)-8 b(,)27 b(but)e(only)g(touc)m(h)i(400k)390
+-610 y Fi(+)h Fj(20000)i(*)f(8)g(=)f(560)h(kb)m(ytes)g(of)g(it.)40
+-b(Similarly)-8 b(,)30 b(the)f(decompressor)f(will)h(allo)s(cate)h
+-(3700k)390 714 y(but)g(only)g(touc)m(h)h(100k)h Fi(+)e
+-Fj(20000)j(*)d(4)h(=)f(180)i(kb)m(ytes.)390 865 y(Here)39
+-b(is)f(a)g(table)h(whic)m(h)f(summarises)f(the)i(maxim)m(um)e(memory)h
+-(usage)h(for)f(di\013eren)m(t)390 969 y(blo)s(c)m(k)c(sizes.)50
+-b(Also)33 b(recorded)g(is)h(the)f(total)i(compressed)e(size)h(for)g(14)
+-g(\014les)f(of)g(the)h(Cal-)390 1073 y(gary)39 b(T)-8
+-b(ext)39 b(Compression)f(Corpus)g(totalling)i(3,141,622)i(b)m(ytes.)65
+-b(This)38 b(column)h(giv)m(es)390 1176 y(some)g(feel)f(for)h(ho)m(w)f
+-(compression)g(v)-5 b(aries)39 b(with)f(blo)s(c)m(k)g(size.)65
+-b(These)38 b(\014gures)g(tend)g(to)390 1280 y(understate)28
+-b(the)g(adv)-5 b(an)m(tage)29 b(of)f(larger)h(blo)s(c)m(k)g(sizes)f
+-(for)g(larger)h(\014les,)g(since)f(the)g(Corpus)390 1384
+-y(is)i(dominated)h(b)m(y)f(smaller)h(\014les.)1107 1535
+-y Fi(Compress)141 b(Decompress)g(Decompress)f(Corpus)773
+-1639 y(Flag)238 b(usage)285 b(usage)332 b(-s)48 b(usage)237
+-b(Size)821 1846 y(-1)286 b(1200k)332 b(500k)429 b(350k)285
+-b(914704)821 1950 y(-2)h(2000k)332 b(900k)429 b(600k)285
+-b(877703)821 2054 y(-3)h(2800k)f(1300k)428 b(850k)285
+-b(860338)821 2158 y(-4)h(3600k)f(1700k)380 b(1100k)285
+-b(846899)821 2261 y(-5)h(4400k)f(2100k)380 b(1350k)285
+-b(845160)821 2365 y(-6)h(5200k)f(2500k)380 b(1600k)285
+-b(838626)821 2469 y(-7)h(6100k)f(2900k)380 b(1850k)285
+-b(834096)821 2573 y(-8)h(6800k)f(3300k)380 b(2100k)285
+-b(828642)821 2676 y(-9)h(7600k)f(3700k)380 b(2350k)285
+-b(828642)390 2992 y Fe(RECO)m(VERING)38 b(D)m(A)-10 b(T)g(A)40
+-b(FR)m(OM)h(D)m(AMA)m(GED)f(FILES)390 3179 y Fi(bzip2)24
+-b Fj(compresses)i(\014les)g(in)f(blo)s(c)m(ks,)i(usually)e(900kb)m
+-(ytes)j(long.)40 b(Eac)m(h)25 b(blo)s(c)m(k)h(is)g(handled)390
+-3283 y(indep)s(enden)m(tly)-8 b(.)42 b(If)31 b(a)g(media)g(or)h
+-(transmission)f(error)g(causes)g(a)g(m)m(ulti-blo)s(c)m(k)i
+-Fi(.bz2)d Fj(\014le)390 3387 y(to)35 b(b)s(ecome)f(damaged,)i(it)e(ma)m
+-(y)h(b)s(e)e(p)s(ossible)h(to)h(reco)m(v)m(er)h(data)f(from)f(the)g
+-(undamaged)390 3491 y(blo)s(c)m(ks)d(in)f(the)h(\014le.)390
+-3642 y(The)g(compressed)g(represen)m(tation)i(of)f(eac)m(h)g(blo)s(c)m
+-(k)g(is)f(delimited)h(b)m(y)f(a)h(48-bit)g(pattern,)390
+-3745 y(whic)m(h)27 b(mak)m(es)g(it)h(p)s(ossible)e(to)i(\014nd)d(the)j
+-(blo)s(c)m(k)f(b)s(oundaries)e(with)i(reasonable)h(certain)m(t)m(y)-8
+-b(.)390 3849 y(Eac)m(h)33 b(blo)s(c)m(k)g(also)h(carries)g(its)f(o)m
+-(wn)g(32-bit)h(CR)m(C,)f(so)g(damaged)g(blo)s(c)m(ks)h(can)f(b)s(e)f
+-(distin-)390 3953 y(guished)e(from)g(undamaged)f(ones.)390
+-4104 y Fi(bzip2recover)36 b Fj(is)j(a)g(simple)f(program)h(whose)g
+-(purp)s(ose)f(is)h(to)g(searc)m(h)h(for)f(blo)s(c)m(ks)g(in)390
+-4208 y Fi(.bz2)33 b Fj(\014les,)j(and)e(write)h(eac)m(h)h(blo)s(c)m(k)f
+-(out)g(in)m(to)g(its)g(o)m(wn)g Fi(.bz2)e Fj(\014le.)54
+-b(Y)-8 b(ou)34 b(can)h(then)f(use)390 4311 y Fi(bzip2)29
+-b(-t)23 b Fj(to)h(test)h(the)f(in)m(tegrit)m(y)i(of)d(the)h(resulting)g
+-(\014les,)h(and)e(decompress)g(those)h(whic)m(h)390 4415
+-y(are)31 b(undamaged.)390 4566 y Fi(bzip2recover)40 b
+-Fj(tak)m(es)45 b(a)f(single)g(argumen)m(t,)j(the)d(name)g(of)f(the)h
+-(damaged)g(\014le,)j(and)390 4670 y(writes)33 b(a)f(n)m(um)m(b)s(er)f
+-(of)h(\014les)h Fi(rec00001file.bz2)p Fj(,)28 b Fi(rec00002file.bz2)p
+-Fj(,)g(etc,)34 b(con)m(tain-)390 4774 y(ing)29 b(the)g(extracted)i(blo)
+-s(c)m(ks.)40 b(The)29 b(output)g(\014lenames)g(are)g(designed)g(so)g
+-(that)g(the)g(use)g(of)390 4878 y(wildcards)h(in)f(subsequen)m(t)h(pro)
+-s(cessing)g({)h(for)f(example,)h Fi(bzip2)e(-dc)g(rec*file.bz2)e(>)390
+-4981 y(recovered_data)f Fj({)31 b(pro)s(cesses)g(the)f(\014les)h(in)f
+-(the)h(correct)h(order.)390 5132 y Fi(bzip2recover)37
+-b Fj(should)i(b)s(e)h(of)h(most)f(use)g(dealing)h(with)f(large)i
+-Fi(.bz2)d Fj(\014les,)k(as)d(these)390 5236 y(will)31
+-b(con)m(tain)i(man)m(y)e(blo)s(c)m(ks.)43 b(It)32 b(is)f(clearly)h
+-(futile)g(to)g(use)f(it)g(on)g(damaged)g(single-blo)s(c)m(k)390
+-5340 y(\014les,)g(since)g(a)g(damaged)f(blo)s(c)m(k)h(cannot)h(b)s(e)e
+-(reco)m(v)m(ered.)43 b(If)31 b(y)m(ou)g(wish)f(to)h(minimise)g(an)m(y)p
+-eop
 -%%Page: 8 9
 -8 8 bop 150 -116 a Fl(Chapter)30 b(2:)41 b(Ho)m(w)31
--b(to)g(use)f Fj(bzip2)2375 b Fl(8)390 299 y(slo)m(wly)33
--b(than)g(normal.)50 b(V)-8 b(ersions)33 b(0.9.5)i(and)f(ab)s(o)m(v)m(e)
--h(fare)e(m)m(uc)m(h)h(b)s(etter)g(than)f(previous)390
--403 y(v)m(ersions)i(in)g(this)f(resp)s(ect.)57 b(The)35
--b(ratio)h(b)s(et)m(w)m(een)h(w)m(orst-case)g(and)e(a)m(v)m(erage-case)
--40 b(com-)390 506 y(pression)e(time)h(is)f(in)g(the)h(region)g(of)h
--(10:1.)69 b(F)-8 b(or)40 b(previous)e(v)m(ersions,)j(this)d(\014gure)h
--(w)m(as)390 610 y(more)f(lik)m(e)g(100:1.)66 b(Y)-8 b(ou)38
--b(can)h(use)e(the)i Fj(-vvvv)d Fl(option)i(to)h(monitor)e(progress)h
--(in)f(great)390 714 y(detail,)30 b(if)f(y)m(ou)i(w)m(an)m(t.)390
--865 y(Decompression)f(sp)s(eed)g(is)f(una\013ected)i(b)m(y)f(these)h
--(phenomena.)390 1016 y Fj(bzip2)i Fl(usually)g(allo)s(cates)i(sev)m
--(eral)f(megab)m(ytes)j(of)d(memory)h(to)g(op)s(erate)h(in,)e(and)g
--(then)390 1120 y(c)m(harges)k(all)d(o)m(v)m(er)j(it)f(in)e(a)i(fairly)e
--(random)h(fashion.)59 b(This)34 b(means)j(that)g(p)s(erformance,)390
--1224 y(b)s(oth)27 b(for)h(compressing)f(and)g(decompressing,)h(is)f
--(largely)g(determined)g(b)m(y)h(the)g(sp)s(eed)f(at)390
--1327 y(whic)m(h)35 b(y)m(our)h(mac)m(hine)g(can)g(service)g(cac)m(he)i
--(misses.)57 b(Because)37 b(of)g(this,)f(small)f(c)m(hanges)390
--1431 y(to)f(the)f(co)s(de)h(to)f(reduce)g(the)h(miss)d(rate)j(ha)m(v)m
--(e)h(b)s(een)d(observ)m(ed)h(to)h(giv)m(e)g(disprop)s(ortion-)390
--1535 y(ately)i(large)f(p)s(erformance)f(impro)m(v)m(emen)m(ts.)56
--b(I)35 b(imagine)f Fj(bzip2)g Fl(will)e(p)s(erform)i(b)s(est)h(on)390
--1639 y(mac)m(hines)30 b(with)f(v)m(ery)i(large)f(cac)m(hes.)390
--1885 y Ff(CA)-14 b(VEA)k(TS)390 2072 y Fl(I/O)38 b(error)g(messages)h
--(are)f(not)h(as)f(helpful)e(as)i(they)g(could)f(b)s(e.)64
--b Fj(bzip2)37 b Fl(tries)g(hard)g(to)390 2176 y(detect)29
--b(I/O)e(errors)g(and)f(exit)i(cleanly)-8 b(,)27 b(but)g(the)h(details)e
--(of)h(what)h(the)f(problem)f(is)g(some-)390 2280 y(times)k(seem)h
--(rather)f(misleading.)390 2431 y(This)j(man)m(ual)g(page)i(p)s(ertains)
--e(to)i(v)m(ersion)f(1.0)i(of)e Fj(bzip2)p Fl(.)51 b(Compressed)34
--b(data)h(created)390 2534 y(b)m(y)25 b(this)e(v)m(ersion)i(is)e(en)m
--(tirely)h(forw)m(ards)h(and)f(bac)m(kw)m(ards)h(compatible)f(with)f
--(the)i(previous)390 2638 y(public)18 b(releases,)24 b(v)m(ersions)c
--(0.1pl2,)k(0.9.0)e(and)f(0.9.5,)k(but)20 b(with)g(the)h(follo)m(wing)e
--(exception:)390 2742 y(0.9.0)43 b(and)e(ab)s(o)m(v)m(e)h(can)g
--(correctly)f(decompress)g(m)m(ultiple)e(concatenated)k(compressed)390
--2846 y(\014les.)c(0.1pl2)30 b(cannot)g(do)f(this;)f(it)h(will)e(stop)i
--(after)h(decompressing)e(just)g(the)i(\014rst)e(\014le)g(in)390
--2949 y(the)j(stream.)390 3100 y Fj(bzip2recover)20 b
--Fl(uses)k(32-bit)g(in)m(tegers)f(to)i(represen)m(t)f(bit)e(p)s
--(ositions)g(in)g(compressed)i(\014les,)390 3204 y(so)j(it)f(cannot)i
--(handle)d(compressed)i(\014les)f(more)h(than)f(512)i(megab)m(ytes)h
--(long.)39 b(This)25 b(could)390 3308 y(easily)30 b(b)s(e)f(\014xed.)390
--3555 y Ff(A)m(UTHOR)390 3741 y Fl(Julian)f(Sew)m(ard,)i
--Fj(jseward@acm.org)p Fl(.)390 3892 y(The)24 b(ideas)f(em)m(b)s(o)s
--(died)f(in)h Fj(bzip2)f Fl(are)j(due)e(to)i(\(at)g(least\))g(the)f
--(follo)m(wing)e(p)s(eople:)37 b(Mic)m(hael)390 3996 y(Burro)m(ws)48
--b(and)g(Da)m(vid)h(Wheeler)f(\(for)h(the)g(blo)s(c)m(k)f(sorting)g
--(transformation\),)53 b(Da)m(vid)390 4100 y(Wheeler)45
--b(\(again,)50 b(for)45 b(the)g(Hu\013man)g(co)s(der\),)k(P)m(eter)d(F)
---8 b(en)m(wic)m(k)46 b(\(for)g(the)f(structured)390 4204
--y(co)s(ding)26 b(mo)s(del)g(in)f(the)i(original)e Fj(bzip)p
--Fl(,)i(and)f(man)m(y)h(re\014nemen)m(ts\),)h(and)e(Alistair)f
--(Mo\013at,)390 4307 y(Radford)34 b(Neal)h(and)f(Ian)h(Witten)g(\(for)f
--(the)h(arithmetic)g(co)s(der)f(in)g(the)h(original)d
--Fj(bzip)p Fl(\).)390 4411 y(I)41 b(am)g(m)m(uc)m(h)h(indebted)e(for)h
--(their)f(help,)j(supp)s(ort)c(and)i(advice.)74 b(See)41
--b(the)h(man)m(ual)e(in)390 4515 y(the)28 b(source)g(distribution)23
--b(for)28 b(p)s(oin)m(ters)e(to)j(sources)e(of)h(do)s(cumen)m(tation.)40
--b(Christian)25 b(v)m(on)390 4619 y(Ro)s(ques)31 b(encouraged)h(me)g(to)
--g(lo)s(ok)f(for)h(faster)g(sorting)f(algorithms,)f(so)i(as)g(to)g(sp)s
--(eed)f(up)390 4723 y(compression.)47 b(Bela)34 b(Lubkin)c(encouraged)k
--(me)f(to)g(impro)m(v)m(e)g(the)g(w)m(orst-case)i(compres-)390
--4826 y(sion)25 b(p)s(erformance.)38 b(Man)m(y)26 b(p)s(eople)f(sen)m(t)
--h(patc)m(hes,)h(help)s(ed)d(with)g(p)s(ortabilit)m(y)f(problems,)390
--4930 y(len)m(t)30 b(mac)m(hines,)g(ga)m(v)m(e)j(advice)d(and)g(w)m(ere)
--h(generally)f(helpful.)p eop
+-b(to)g(use)f Fi(bzip2)2375 b Fl(8)390 299 y Fj(p)s(oten)m(tial)36
+-b(data)f(loss)f(through)g(media)h(or)g(transmission)f(errors,)i(y)m(ou)
+-e(migh)m(t)i(consider)390 403 y(compressing)31 b(with)f(a)g(smaller)h
+-(blo)s(c)m(k)g(size.)390 711 y Fe(PERF)m(ORMANCE)39 b(NOTES)390
+-897 y Fj(The)c(sorting)i(phase)e(of)g(compression)h(gathers)g(together)
+-i(similar)e(strings)g(in)f(the)h(\014le.)390 1001 y(Because)51
+-b(of)g(this,)57 b(\014les)51 b(con)m(taining)h(v)m(ery)f(long)h(runs)d
+-(of)j(rep)s(eated)f(sym)m(b)s(ols,)56 b(lik)m(e)390 1105
+-y Fi(")p Fj(aabaabaabaab)c(...)p Fi(")h Fj(\(rep)s(eated)g(sev)m(eral)h
+-(h)m(undred)c(times\))k(ma)m(y)f(compress)f(more)390
+-1209 y(slo)m(wly)33 b(than)f(normal.)45 b(V)-8 b(ersions)33
+-b(0.9.5)g(and)e(ab)s(o)m(v)m(e)i(fare)g(m)m(uc)m(h)f(b)s(etter)g(than)g
+-(previous)390 1312 y(v)m(ersions)54 b(in)g(this)g(resp)s(ect.)111
+-b(The)54 b(ratio)h(b)s(et)m(w)m(een)g(w)m(orst-case)g(and)e(a)m(v)m
+-(erage-case)390 1416 y(compression)39 b(time)g(is)g(in)f(the)h(region)h
+-(of)e(10:1.)67 b(F)-8 b(or)40 b(previous)e(v)m(ersions,)k(this)c
+-(\014gure)390 1520 y(w)m(as)j(more)g(lik)m(e)g(100:1.)74
+-b(Y)-8 b(ou)40 b(can)h(use)f(the)h Fi(-vvvv)e Fj(option)i(to)g(monitor)
+-g(progress)g(in)390 1624 y(great)32 b(detail,)f(if)g(y)m(ou)f(w)m(an)m
+-(t.)390 1775 y(Decompression)h(sp)s(eed)e(is)i(una\013ected)g(b)m(y)f
+-(these)h(phenomena.)390 1926 y Fi(bzip2)g Fj(usually)i(allo)s(cates)i
+-(sev)m(eral)f(megab)m(ytes)g(of)f(memory)g(to)h(op)s(erate)g(in,)f(and)
+-f(then)390 2030 y(c)m(harges)37 b(all)f(o)m(v)m(er)h(it)f(in)f(a)h
+-(fairly)g(random)f(fashion.)55 b(This)36 b(means)f(that)h(p)s
+-(erformance,)390 2133 y(b)s(oth)f(for)g(compressing)h(and)e
+-(decompressing,)j(is)f(largely)g(determined)g(b)m(y)f(the)h(sp)s(eed)
+-390 2237 y(at)27 b(whic)m(h)e(y)m(our)h(mac)m(hine)h(can)f(service)h
+-(cac)m(he)g(misses.)39 b(Because)27 b(of)f(this,)h(small)f(c)m(hanges)
+-390 2341 y(to)31 b(the)f(co)s(de)h(to)g(reduce)f(the)h(miss)e(rate)i
+-(ha)m(v)m(e)g(b)s(een)f(observ)m(ed)h(to)g(giv)m(e)g(disprop)s(ortion-)
+-390 2445 y(ately)i(large)h(p)s(erformance)e(impro)m(v)m(emen)m(ts.)47
+-b(I)33 b(imagine)g Fi(bzip2)d Fj(will)j(p)s(erform)e(b)s(est)h(on)390
+-2548 y(mac)m(hines)f(with)f(v)m(ery)h(large)g(cac)m(hes.)390
+-2856 y Fe(CA)-14 b(VEA)k(TS)390 3043 y Fj(I/O)45 b(error)f(messages)h
+-(are)f(not)h(as)f(helpful)f(as)h(they)g(could)g(b)s(e.)81
+-b Fi(bzip2)43 b Fj(tries)i(hard)390 3147 y(to)37 b(detect)g(I/O)f
+-(errors)h(and)d(exit)j(cleanly)-8 b(,)39 b(but)c(the)h(details)h(of)f
+-(what)f(the)h(problem)g(is)390 3251 y(sometimes)c(seem)e(rather)h
+-(misleading.)390 3402 y(This)c(man)m(ual)f(page)i(p)s(ertains)e(to)i(v)
+-m(ersion)g(1.0.2)h(of)e Fi(bzip2)p Fj(.)38 b(Compressed)26
+-b(data)i(created)390 3505 y(b)m(y)22 b(this)h(v)m(ersion)g(is)f(en)m
+-(tirely)i(forw)m(ards)f(and)e(bac)m(kw)m(ards)i(compatible)g(with)f
+-(the)h(previous)390 3609 y(public)g(releases,)k(v)m(ersions)d(0.1pl2,)i
+-(0.9.0,)h(0.9.5,)g(1.0.0)f(and)d(1.0.1,)k(but)c(with)g(the)h(follo)m
+-(w-)390 3713 y(ing)h(exception:)39 b(0.9.0)27 b(and)c(ab)s(o)m(v)m(e)j
+-(can)f(correctly)i(decompress)d(m)m(ultiple)i(concatenated)390
+-3817 y(compressed)36 b(\014les.)59 b(0.1pl2)37 b(cannot)g(do)f(this;)k
+-(it)d(will)f(stop)h(after)g(decompressing)f(just)390
+-3921 y(the)31 b(\014rst)f(\014le)g(in)g(the)h(stream.)390
+-4072 y Fi(bzip2recover)19 b Fj(v)m(ersions)j(prior)g(to)h(this)f(one,)i
+-(1.0.2,)h(used)c(32-bit)j(in)m(tegers)f(to)g(represen)m(t)390
+-4175 y(bit)32 b(p)s(ositions)g(in)f(compressed)h(\014les,)g(so)g(it)g
+-(could)g(not)g(handle)f(compressed)h(\014les)f(more)390
+-4279 y(than)39 b(512)h(megab)m(ytes)h(long.)68 b(V)-8
+-b(ersion)39 b(1.0.2)i(and)d(ab)s(o)m(v)m(e)j(uses)d(64-bit)j(in)m(ts)e
+-(on)h(some)390 4383 y(platforms)e(whic)m(h)g(supp)s(ort)f(them)i(\(GNU)
+-g(supp)s(orted)e(targets,)42 b(and)c(Windo)m(ws\).)64
+-b(T)-8 b(o)390 4487 y(establish)27 b(whether)g(or)f(not)i
+-Fi(bzip2recover)23 b Fj(w)m(as)k(built)f(with)h(suc)m(h)f(a)h
+-(limitation,)j(run)25 b(it)390 4591 y(without)33 b(argumen)m(ts.)50
+-b(In)33 b(an)m(y)g(ev)m(en)m(t)i(y)m(ou)e(can)h(build)e(y)m(ourself)h
+-(an)g(unlimited)g(v)m(ersion)390 4694 y(if)28 b(y)m(ou)h(can)g
+-(recompile)h(it)f(with)f Fi(MaybeUInt64)e Fj(set)j(to)g(b)s(e)f(an)g
+-(unsigned)g(64-bit)i(in)m(teger.)390 5002 y Fe(A)m(UTHOR)390
+-5189 y Fj(Julian)g(Sew)m(ard,)g Fi(jseward@acm.org)p
+-Fj(.)390 5340 y Fi(http://sources.redhat.co)o(m/bz)o(ip2)p
+-eop
 -%%Page: 9 10
--9 9 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
--b(with)g Fj(libbzip2)1927 b Fl(9)150 299 y Fh(3)80 b(Programming)53
--b(with)h Fg(libbzip2)150 568 y Fl(This)29 b(c)m(hapter)i(describ)s(es)d
--(the)j(programming)e(in)m(terface)i(to)g Fj(libbzip2)p
--Fl(.)150 725 y(F)-8 b(or)36 b(general)e(bac)m(kground)h(information,)f
--(particularly)f(ab)s(out)h(memory)h(use)f(and)g(p)s(erformance)g(as-)
--150 834 y(p)s(ects,)d(y)m(ou'd)f(b)s(e)g(w)m(ell)f(advised)g(to)j(read)
--e(Chapter)g(2)g(as)h(w)m(ell.)150 1124 y Fk(3.1)68 b(T)-11
--b(op-lev)l(el)46 b(structure)150 1316 y Fj(libbzip2)33
--b Fl(is)i(a)h(\015exible)e(library)f(for)j(compressing)f(and)g
--(decompressing)f(data)j(in)d(the)i Fj(bzip2)e Fl(data)150
--1426 y(format.)39 b(Although)24 b(pac)m(k)-5 b(aged)26
--b(as)e(a)h(single)e(en)m(tit)m(y)-8 b(,)27 b(it)d(helps)f(to)i(regard)g
--(the)g(library)d(as)i(three)h(separate)150 1535 y(parts:)40
--b(the)31 b(lo)m(w)f(lev)m(el)g(in)m(terface,)h(and)f(the)h(high)e(lev)m
--(el)h(in)m(terface,)h(and)f(some)h(utilit)m(y)d(functions.)150
--1692 y(The)38 b(structure)g(of)g Fj(libbzip2)p Fl('s)e(in)m(terfaces)j
--(is)e(similar)f(to)j(that)g(of)g(Jean-loup)e(Gailly's)g(and)h(Mark)150
--1802 y(Adler's)29 b(excellen)m(t)i Fj(zlib)e Fl(library)-8
--b(.)150 1959 y(All)29 b(externally)g(visible)f(sym)m(b)s(ols)h(ha)m(v)m
--(e)i(names)f(b)s(eginning)e Fj(BZ2_)p Fl(.)39 b(This)29
--b(is)g(new)h(in)f(v)m(ersion)h(1.0.)41 b(The)150 2068
--y(in)m(ten)m(tion)30 b(is)f(to)i(minimise)d(p)s(ollution)f(of)k(the)f
--(namespaces)h(of)g(library)d(clien)m(ts.)150 2321 y Ff(3.1.1)63
--b(Lo)m(w-lev)m(el)39 b(summary)150 2514 y Fl(This)21
--b(in)m(terface)h(pro)m(vides)g(services)g(for)g(compressing)f(and)h
--(decompressing)f(data)i(in)e(memory)-8 b(.)38 b(There's)150
--2623 y(no)43 b(pro)m(vision)e(for)h(dealing)g(with)f(\014les,)k
--(streams)e(or)g(an)m(y)g(other)g(I/O)g(mec)m(hanisms,)i(just)e(straigh)
--m(t)150 2733 y(memory-to-memory)25 b(w)m(ork.)38 b(In)23
--b(fact,)k(this)22 b(part)i(of)f(the)h(library)d(can)j(b)s(e)f(compiled)
--f(without)h(inclusion)150 2843 y(of)31 b Fj(stdio.h)p
--Fl(,)d(whic)m(h)h(ma)m(y)i(b)s(e)f(helpful)d(for)k(em)m(b)s(edded)e
--(applications.)150 2999 y(The)h(lo)m(w-lev)m(el)g(part)g(of)h(the)f
--(library)e(has)i(no)h(global)e(v)-5 b(ariables)29 b(and)h(is)g
--(therefore)g(thread-safe.)150 3156 y(Six)d(routines)g(mak)m(e)j(up)d
--(the)i(lo)m(w)f(lev)m(el)g(in)m(terface:)41 b Fj(BZ2_bzCompressInit)p
--Fl(,)24 b Fj(BZ2_bzCompress)p Fl(,)h(and)150 3266 y Fj
--(BZ2_bzCompressEnd)h Fl(for)k(compression,)f(and)h(a)h(corresp)s
--(onding)d(trio)i Fj(BZ2_bzDecompressInit)p Fl(,)150 3375
--y Fj(BZ2_bzDecompress)37 b Fl(and)j Fj(BZ2_bzDecompressEnd)c
--Fl(for)42 b(decompression.)72 b(The)41 b Fj(*Init)e Fl(functions)150
--3485 y(allo)s(cate)44 b(memory)g(for)f(compression/decompression)f(and)
--h(do)h(other)g(initialisations,)f(whilst)f(the)150 3595
--y Fj(*End)29 b Fl(functions)g(close)i(do)m(wn)f(op)s(erations)f(and)h
--(release)h(memory)-8 b(.)150 3751 y(The)36 b(real)f(w)m(ork)i(is)e
--(done)h(b)m(y)g Fj(BZ2_bzCompress)c Fl(and)j Fj(BZ2_bzDecompress)p
--Fl(.)54 b(These)36 b(compress)g(and)150 3861 y(decompress)30
--b(data)h(from)f(a)h(user-supplied)c(input)i(bu\013er)g(to)i(a)g
--(user-supplied)c(output)j(bu\013er.)40 b(These)150 3971
--y(bu\013ers)32 b(can)i(b)s(e)e(an)m(y)i(size;)g(arbitrary)e(quan)m
--(tities)h(of)g(data)h(are)g(handled)d(b)m(y)i(making)f(rep)s(eated)i
--(calls)150 4080 y(to)f(these)f(functions.)44 b(This)30
--b(is)h(a)h(\015exible)e(mec)m(hanism)i(allo)m(wing)e(a)i(consumer-pull)
--e(st)m(yle)i(of)g(activit)m(y)-8 b(,)150 4190 y(or)30
--b(pro)s(ducer-push,)e(or)i(a)h(mixture)e(of)i(b)s(oth.)150
--4443 y Ff(3.1.2)63 b(High-lev)m(el)41 b(summary)150 4635
--y Fl(This)d(in)m(terface)j(pro)m(vides)e(some)h(handy)f(wrapp)s(ers)f
--(around)h(the)i(lo)m(w-lev)m(el)f(in)m(terface)g(to)h(facilitate)150
--4745 y(reading)26 b(and)g(writing)f Fj(bzip2)g Fl(format)i(\014les)f
--(\()p Fj(.bz2)g Fl(\014les\).)38 b(The)27 b(routines)e(pro)m(vide)h(ho)
--s(oks)h(to)g(facilitate)150 4854 y(reading)43 b(\014les)f(in)h(whic)m
--(h)f(the)i Fj(bzip2)f Fl(data)h(stream)g(is)f(em)m(b)s(edded)f(within)g
--(some)i(larger-scale)g(\014le)150 4964 y(structure,)30
--b(or)h(where)e(there)i(are)g(m)m(ultiple)d Fj(bzip2)h
--Fl(data)i(streams)f(concatenated)j(end-to-end.)150 5121
--y(F)-8 b(or)31 b(reading)f(\014les,)f Fj(BZ2_bzReadOpen)p
--Fl(,)e Fj(BZ2_bzRead)p Fl(,)h Fj(BZ2_bzReadClose)e Fl(and)150
--5230 y Fj(BZ2_bzReadGetUnused)19 b Fl(are)25 b(supplied.)36
--b(F)-8 b(or)25 b(writing)d(\014les,)j Fj(BZ2_bzWriteOpen)p
--Fl(,)d Fj(BZ2_bzWrite)g Fl(and)150 5340 y Fj(BZ2_bzWriteFinish)k
--Fl(are)k(a)m(v)-5 b(ailable.)p eop
+-9 9 bop 150 -116 a Fl(Chapter)30 b(2:)41 b(Ho)m(w)31
+-b(to)g(use)f Fi(bzip2)2375 b Fl(9)390 299 y Fj(The)22
+-b(ideas)h(em)m(b)s(o)s(died)f(in)g Fi(bzip2)f Fj(are)i(due)e(to)j(\(at)
+-f(least\))h(the)f(follo)m(wing)g(p)s(eople:)37 b(Mic)m(hael)390
+-403 y(Burro)m(ws)45 b(and)g(Da)m(vid)h(Wheeler)g(\(for)g(the)g(blo)s(c)
+-m(k)h(sorting)f(transformation\),)51 b(Da)m(vid)390 506
+-y(Wheeler)42 b(\(again,)j(for)c(the)h(Hu\013man)e(co)s(der\),)45
+-b(P)m(eter)e(F)-8 b(en)m(wic)m(k)43 b(\(for)e(the)h(structured)390
+-610 y(co)s(ding)34 b(mo)s(del)h(in)f(the)g(original)i
+-Fi(bzip)p Fj(,)e(and)g(man)m(y)g(re\014nemen)m(ts\),)i(and)e(Alistair)h
+-(Mof-)390 714 y(fat,)45 b(Radford)d(Neal)g(and)f(Ian)h(Witten)h(\(for)f
+-(the)h(arithmetic)g(co)s(der)f(in)g(the)g(original)390
+-818 y Fi(bzip)p Fj(\).)d(I)26 b(am)h(m)m(uc)m(h)g(indebted)f(for)h
+-(their)g(help,)g(supp)s(ort)e(and)h(advice.)40 b(See)27
+-b(the)g(man)m(ual)390 922 y(in)k(the)h(source)f(distribution)h(for)f(p)
+-s(oin)m(ters)h(to)g(sources)f(of)h(do)s(cumen)m(tation.)44
+-b(Christian)390 1025 y(v)m(on)27 b(Ro)s(ques)f(encouraged)g(me)h(to)g
+-(lo)s(ok)g(for)f(faster)h(sorting)g(algorithms,)h(so)e(as)h(to)g(sp)s
+-(eed)390 1129 y(up)32 b(compression.)50 b(Bela)34 b(Lubkin)d
+-(encouraged)j(me)g(to)g(impro)m(v)m(e)g(the)g(w)m(orst-case)h(com-)390
+-1233 y(pression)e(p)s(erformance.)51 b(The)34 b Fi(bz*)f
+-Fj(scripts)h(are)g(deriv)m(ed)g(from)g(those)g(of)g(GNU)h
+-Fi(gzip)p Fj(.)390 1337 y(Man)m(y)40 b(p)s(eople)f(sen)m(t)h(patc)m
+-(hes,)i(help)s(ed)c(with)h(p)s(ortabilit)m(y)i(problems,)g(len)m(t)f
+-(mac)m(hines,)390 1440 y(ga)m(v)m(e)32 b(advice)f(and)f(w)m(ere)h
+-(generally)h(helpful.)p eop
 -%%Page: 10 11
 -10 10 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
--b(with)g Fj(libbzip2)1881 b Fl(10)150 299 y(As)24 b(with)f(the)h(lo)m
--(w-lev)m(el)h(library)-8 b(,)23 b(no)h(global)g(v)-5
--b(ariables)23 b(are)h(used)g(so)g(the)h(library)c(is)j(p)s(er)f(se)h
--(thread-safe.)150 408 y(Ho)m(w)m(ev)m(er,)32 b(if)c(I/O)h(errors)g(o)s
--(ccur)g(whilst)e(reading)i(or)g(writing)e(the)j(underlying)c
--(compressed)j(\014les,)g(y)m(ou)150 518 y(ma)m(y)j(ha)m(v)m(e)g(to)g
--(consult)e Fj(errno)g Fl(to)h(determine)g(the)g(cause)g(of)h(the)f
--(error.)42 b(In)30 b(that)i(case,)h(y)m(ou'd)e(need)g(a)150
--628 y(C)f(library)e(whic)m(h)h(correctly)i(supp)s(orts)d
--Fj(errno)h Fl(in)g(a)i(m)m(ultithreaded)e(en)m(vironmen)m(t.)150
--784 y(T)-8 b(o)56 b(mak)m(e)g(the)g(library)d(a)j(little)e(simpler)f
--(and)i(more)h(p)s(ortable,)61 b Fj(BZ2_bzReadOpen)51
--b Fl(and)k Fj(BZ2_)150 894 y(bzWriteOpen)34 b Fl(require)j(y)m(ou)g(to)
--i(pass)e(them)g(\014le)g(handles)f(\()p Fj(FILE*)p Fl(s\))g(whic)m(h)h
--(ha)m(v)m(e)h(previously)e(b)s(een)150 1004 y(op)s(ened)41
--b(for)g(reading)f(or)h(writing)f(resp)s(ectiv)m(ely)-8
--b(.)73 b(That)41 b(a)m(v)m(oids)h(p)s(ortabilit)m(y)d(problems)g(asso)s
--(ciated)150 1113 y(with)j(\014le)h(op)s(erations)g(and)g(\014le)g
--(attributes,)j(whilst)c(not)i(b)s(eing)e(m)m(uc)m(h)h(of)h(an)g(imp)s
--(osition)c(on)k(the)150 1223 y(programmer.)150 1474 y
--Ff(3.1.3)63 b(Utilit)m(y)40 b(functions)h(summary)150
--1666 y Fl(F)-8 b(or)45 b(v)m(ery)g(simple)d(needs,)48
--b Fj(BZ2_bzBuffToBuffCompres)o(s)38 b Fl(and)44 b Fj
--(BZ2_bzBuffToBuffDecompres)o(s)150 1776 y Fl(are)29 b(pro)m(vided.)38
--b(These)28 b(compress)g(data)h(in)e(memory)h(from)g(one)h(bu\013er)e
--(to)i(another)f(bu\013er)g(in)f(a)h(single)150 1885 y(function)38
--b(call.)67 b(Y)-8 b(ou)40 b(should)d(assess)j(whether)f(these)h
--(functions)d(ful\014ll)f(y)m(our)k(memory-to-memory)150
--1995 y(compression/decompression)26 b(requiremen)m(ts)h(b)s(efore)g(in)
--m(v)m(esting)g(e\013ort)i(in)d(understanding)f(the)j(more)150
--2105 y(general)i(but)g(more)h(complex)f(lo)m(w-lev)m(el)g(in)m
--(terface.)150 2261 y(Y)-8 b(oshiok)j(a)47 b(Tsuneo)e(\()p
--Fj(QWF00133@niftyserve.or.jp)40 b Fl(/)46 b Fj
--(tsuneo-y@is.aist-nara.ac.)o(jp)p Fl(\))40 b(has)150
--2371 y(con)m(tributed)f(some)h(functions)e(to)j(giv)m(e)f(b)s(etter)g
--Fj(zlib)f Fl(compatibilit)m(y)-8 b(.)67 b(These)40 b(functions)e(are)i
--Fj(BZ2_)150 2481 y(bzopen)p Fl(,)e Fj(BZ2_bzread)p Fl(,)f
--Fj(BZ2_bzwrite)p Fl(,)g Fj(BZ2_bzflush)p Fl(,)g Fj(BZ2_bzclose)p
--Fl(,)f Fj(BZ2_bzerror)f Fl(and)i Fj(BZ2_)150 2590 y(bzlibVersion)p
--Fl(.)49 b(Y)-8 b(ou)35 b(ma)m(y)g(\014nd)e(these)i(functions)d(more)j
--(con)m(v)m(enien)m(t)g(for)f(simple)f(\014le)g(reading)h(and)150
--2700 y(writing,)c(than)h(those)h(in)e(the)i(high-lev)m(el)e(in)m
--(terface.)45 b(These)31 b(functions)f(are)i(not)g(\(y)m(et\))h
--(o\016cially)d(part)150 2809 y(of)k(the)g(library)-8
--b(,)33 b(and)g(are)h(minimally)c(do)s(cumen)m(ted)k(here.)51
--b(If)33 b(they)h(break,)h(y)m(ou)f(get)h(to)g(k)m(eep)f(all)f(the)150
--2919 y(pieces.)40 b(I)31 b(hop)s(e)e(to)i(do)s(cumen)m(t)g(them)f(prop)
--s(erly)e(when)h(time)i(p)s(ermits.)150 3076 y(Y)-8 b(oshiok)j(a)27
--b(also)g(con)m(tributed)f(mo)s(di\014cations)f(to)i(allo)m(w)f(the)h
--(library)e(to)i(b)s(e)f(built)f(as)i(a)g(Windo)m(ws)f(DLL.)150
--3362 y Fk(3.2)68 b(Error)45 b(handling)150 3554 y Fl(The)23
--b(library)f(is)h(designed)g(to)i(reco)m(v)m(er)g(cleanly)f(in)e(all)h
--(situations,)h(including)d(the)j(w)m(orst-case)i(situation)150
--3664 y(of)j(decompressing)e(random)g(data.)41 b(I'm)28
--b(not)h(100\045)g(sure)f(that)h(it)f(can)h(alw)m(a)m(ys)g(do)f(this,)g
--(so)g(y)m(ou)h(migh)m(t)150 3774 y(w)m(an)m(t)i(to)g(add)e(a)i(signal)d
--(handler)g(to)j(catc)m(h)h(segmen)m(tation)f(violations)e(during)f
--(decompression)h(if)g(y)m(ou)150 3883 y(are)g(feeling)f(esp)s(ecially)f
--(paranoid.)39 b(I)28 b(w)m(ould)g(b)s(e)g(in)m(terested)h(in)e(hearing)
--h(more)h(ab)s(out)f(the)h(robustness)150 3993 y(of)i(the)f(library)e
--(to)j(corrupted)f(compressed)g(data.)150 4150 y(V)-8
--b(ersion)39 b(1.0)h(is)f(m)m(uc)m(h)g(more)h(robust)e(in)g(this)g(resp)
--s(ect)i(than)f(0.9.0)i(or)e(0.9.5.)70 b(In)m(v)m(estigations)39
--b(with)150 4259 y(Chec)m(k)m(er)21 b(\(a)g(to)s(ol)g(for)f(detecting)h
--(problems)d(with)h(memory)h(managemen)m(t,)k(similar)18
--b(to)j(Purify\))e(indicate)150 4369 y(that,)40 b(at)e(least)f(for)g
--(the)h(few)e(\014les)h(I)g(tested,)j(all)c(single-bit)f(errors)i(in)e
--(the)j(decompressed)f(data)h(are)150 4478 y(caugh)m(t)c(prop)s(erly)-8
--b(,)31 b(with)g(no)i(segmen)m(tation)h(faults,)e(no)g(reads)h(of)g
--(uninitialised)27 b(data)34 b(and)e(no)g(out)h(of)150
--4588 y(range)f(reads)g(or)f(writes.)44 b(So)32 b(it's)f(certainly)g(m)m
--(uc)m(h)h(impro)m(v)m(ed,)g(although)f(I)g(w)m(ouldn't)g(claim)g(it)g
--(to)i(b)s(e)150 4698 y(totally)d(b)s(om)m(bpro)s(of.)150
--4854 y(The)25 b(\014le)g Fj(bzlib.h)f Fl(con)m(tains)i(all)f
--(de\014nitions)e(needed)i(to)i(use)e(the)h(library)-8
--b(.)37 b(In)26 b(particular,)f(y)m(ou)h(should)150 4964
--y(de\014nitely)i(not)j(include)d Fj(bzlib_private.h)p
--Fl(.)150 5121 y(In)39 b Fj(bzlib.h)p Fl(,)h(the)g(v)-5
--b(arious)39 b(return)f(v)-5 b(alues)39 b(are)h(de\014ned.)68
--b(The)39 b(follo)m(wing)f(list)h(is)f(not)i(in)m(tended)f(as)150
--5230 y(an)c(exhaustiv)m(e)h(description)d(of)i(the)h(circumstances)f
--(in)f(whic)m(h)g(a)i(giv)m(en)f(v)-5 b(alue)35 b(ma)m(y)h(b)s(e)e
--(returned)h({)150 5340 y(those)h(descriptions)d(are)j(giv)m(en)f
--(later.)56 b(Rather,)37 b(it)d(is)h(in)m(tended)f(to)i(con)m(v)m(ey)h
--(the)e(rough)g(meaning)g(of)p eop
+-b(with)g Fi(libbzip2)1881 b Fl(10)150 299 y Fg(3)80 b(Programming)53
+-b(with)h Ff(libbzip2)150 568 y Fj(This)30 b(c)m(hapter)h(describ)s(es)f
+-(the)h(programming)f(in)m(terface)i(to)g Fi(libbzip2)p
+-Fj(.)150 725 y(F)-8 b(or)33 b(general)g(bac)m(kground)f(information,)h
+-(particularly)f(ab)s(out)g(memory)g(use)g(and)f(p)s(erformance)h(as-)
+-150 834 y(p)s(ects,)f(y)m(ou'd)f(b)s(e)g(w)m(ell)h(advised)f(to)i(read)
+-e(Chapter)g(2)h(as)f(w)m(ell.)150 1124 y Fk(3.1)68 b(T)-11
+-b(op-lev)l(el)46 b(structure)150 1316 y Fi(libbzip2)32
+-b Fj(is)i(a)g(\015exible)h(library)f(for)g(compressing)g(and)g
+-(decompressing)g(data)h(in)e(the)i Fi(bzip2)e Fj(data)150
+-1426 y(format.)38 b(Although)22 b(pac)m(k)-5 b(aged)24
+-b(as)e(a)g(single)h(en)m(tit)m(y)-8 b(,)26 b(it)d(helps)f(to)h(regard)f
+-(the)h(library)f(as)g(three)h(separate)150 1535 y(parts:)41
+-b(the)30 b(lo)m(w)h(lev)m(el)i(in)m(terface,)f(and)d(the)i(high)f(lev)m
+-(el)i(in)m(terface,)h(and)c(some)i(utilit)m(y)h(functions.)150
+-1692 y(The)37 b(structure)g(of)g Fi(libbzip2)p Fj('s)e(in)m(terfaces)j
+-(is)f(similar)g(to)h(that)f(of)g(Jean-loup)g(Gailly's)i(and)d(Mark)150
+-1802 y(Adler's)30 b(excellen)m(t)j Fi(zlib)c Fj(library)-8
+-b(.)150 1959 y(All)29 b(externally)h(visible)g(sym)m(b)s(ols)e(ha)m(v)m
+-(e)i(names)f(b)s(eginning)f Fi(BZ2_)p Fj(.)39 b(This)29
+-b(is)g(new)f(in)h(v)m(ersion)h(1.0.)41 b(The)150 2068
+-y(in)m(ten)m(tion)32 b(is)f(to)g(minimise)f(p)s(ollution)h(of)f(the)h
+-(namespaces)f(of)h(library)f(clien)m(ts.)150 2321 y Fe(3.1.1)63
+-b(Lo)m(w-lev)m(el)39 b(summary)150 2514 y Fj(This)52
+-b(in)m(terface)i(pro)m(vides)e(services)h(for)f(compressing)g(and)g
+-(decompressing)g(data)g(in)g(memory)-8 b(.)150 2623 y(There's)42
+-b(no)g(pro)m(vision)g(for)g(dealing)g(with)f(\014les,)k(streams)d(or)g
+-(an)m(y)g(other)g(I/O)h(mec)m(hanisms,)h(just)150 2733
+-y(straigh)m(t)51 b(memory-to-memory)g(w)m(ork.)98 b(In)48
+-b(fact,)55 b(this)49 b(part)h(of)f(the)h(library)f(can)g(b)s(e)f
+-(compiled)150 2843 y(without)31 b(inclusion)f(of)g Fi(stdio.h)p
+-Fj(,)f(whic)m(h)h(ma)m(y)h(b)s(e)f(helpful)f(for)i(em)m(b)s(edded)e
+-(applications.)150 2999 y(The)h(lo)m(w-lev)m(el)k(part)c(of)h(the)f
+-(library)g(has)g(no)h(global)g(v)-5 b(ariables)31 b(and)e(is)i
+-(therefore)g(thread-safe.)150 3156 y(Six)26 b(routines)h(mak)m(e)h(up)e
+-(the)h(lo)m(w)g(lev)m(el)i(in)m(terface:)41 b Fi(BZ2_bzCompressInit)p
+-Fj(,)22 b Fi(BZ2_bzCompress)p Fj(,)i(and)150 3266 y Fi
+-(BZ2_bzCompressEnd)i Fj(for)k(compression,)h(and)f(a)g(corresp)s
+-(onding)g(trio)h Fi(BZ2_bzDecompressInit)p Fj(,)150 3375
+-y Fi(BZ2_bzDecompress)36 b Fj(and)j Fi(BZ2_bzDecompressEnd)c
+-Fj(for)41 b(decompression.)70 b(The)40 b Fi(*Init)f Fj(functions)150
+-3485 y(allo)s(cate)k(memory)e(for)g(compression/decompression)h(and)e
+-(do)h(other)h(initialisations,)k(whilst)41 b(the)150
+-3595 y Fi(*End)29 b Fj(functions)h(close)i(do)m(wn)e(op)s(erations)h
+-(and)e(release)j(memory)-8 b(.)150 3751 y(The)35 b(real)h(w)m(ork)f(is)
+-g(done)g(b)m(y)g Fi(BZ2_bzCompress)d Fj(and)i Fi(BZ2_bzDecompress)p
+-Fj(.)50 b(These)36 b(compress)f(and)150 3861 y(decompress)28
+-b(data)g(from)f(a)h(user-supplied)e(input)h(bu\013er)g(to)h(a)g
+-(user-supplied)e(output)i(bu\013er.)39 b(These)150 3971
+-y(bu\013ers)31 b(can)g(b)s(e)g(an)m(y)h(size;)h(arbitrary)f(quan)m
+-(tities)h(of)f(data)g(are)g(handled)e(b)m(y)i(making)f(rep)s(eated)h
+-(calls)150 4080 y(to)g(these)g(functions.)43 b(This)31
+-b(is)g(a)h(\015exible)f(mec)m(hanism)h(allo)m(wing)g(a)g(consumer-pull)
+-f(st)m(yle)h(of)g(activit)m(y)-8 b(,)150 4190 y(or)31
+-b(pro)s(ducer-push,)d(or)j(a)f(mixture)h(of)f(b)s(oth.)150
+-4443 y Fe(3.1.2)63 b(High-lev)m(el)41 b(summary)150 4635
+-y Fj(This)c(in)m(terface)i(pro)m(vides)e(some)h(handy)e(wrapp)s(ers)f
+-(around)i(the)g(lo)m(w-lev)m(el)j(in)m(terface)f(to)f(facilitate)150
+-4745 y(reading)25 b(and)f(writing)h Fi(bzip2)f Fj(format)h(\014les)g
+-(\()p Fi(.bz2)f Fj(\014les\).)39 b(The)25 b(routines)h(pro)m(vide)f(ho)
+-s(oks)g(to)g(facilitate)150 4854 y(reading)42 b(\014les)f(in)g(whic)m
+-(h)h(the)g Fi(bzip2)e Fj(data)i(stream)g(is)f(em)m(b)s(edded)g(within)g
+-(some)h(larger-scale)i(\014le)150 4964 y(structure,)31
+-b(or)g(where)f(there)h(are)g(m)m(ultiple)g Fi(bzip2)e
+-Fj(data)h(streams)h(concatenated)i(end-to-end.)150 5121
+-y(F)-8 b(or)31 b(reading)g(\014les,)f Fi(BZ2_bzReadOpen)p
+-Fj(,)d Fi(BZ2_bzRead)p Fj(,)h Fi(BZ2_bzReadClose)e Fj(and)150
+-5230 y Fi(BZ2_bzReadGetUnused)18 b Fj(are)23 b(supplied.)37
+-b(F)-8 b(or)24 b(writing)f(\014les,)i Fi(BZ2_bzWriteOpen)p
+-Fj(,)20 b Fi(BZ2_bzWrite)g Fj(and)150 5340 y Fi(BZ2_bzWriteFinish)26
+-b Fj(are)k(a)m(v)-5 b(ailable.)p eop
 -%%Page: 11 12
 -11 11 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
--b(with)g Fj(libbzip2)1881 b Fl(11)150 299 y(eac)m(h)38
--b(return)d(v)-5 b(alue.)59 b(The)36 b(\014rst)g(\014v)m(e)g(actions)h
--(are)g(normal)f(and)f(not)i(in)m(tended)f(to)h(denote)g(an)f(error)150
--408 y(situation.)150 592 y Fj(BZ_OK)180 b Fl(The)30 b(requested)g
--(action)h(w)m(as)g(completed)f(successfully)-8 b(.)150
--756 y Fj(BZ_RUN_OK)150 866 y(BZ_FLUSH_OK)150 975 y(BZ_FINISH_OK)630
--1085 y Fl(In)24 b Fj(BZ2_bzCompress)p Fl(,)e(the)i(requested)g
--(\015ush/\014nish/nothing-sp)s(ecial)c(action)k(w)m(as)h(com-)630
--1194 y(pleted)30 b(successfully)-8 b(.)150 1358 y Fj(BZ_STREAM_END)630
--1468 y Fl(Compression)38 b(of)j(data)f(w)m(as)h(completed,)h(or)f(the)f
--(logical)f(stream)i(end)e(w)m(as)i(detected)630 1577
--y(during)28 b(decompression.)150 1761 y(The)i(follo)m(wing)f(return)g
--(v)-5 b(alues)30 b(indicate)f(an)h(error)g(of)h(some)g(kind.)150
--1945 y Fj(BZ_CONFIG_ERROR)630 2055 y Fl(Indicates)48
--b(that)h(the)g(library)e(has)h(b)s(een)g(improp)s(erly)d(compiled)j(on)
--g(y)m(our)h(platform)630 2164 y({)j(a)g(ma)5 b(jor)51
--b(con\014guration)g(error.)104 b(Sp)s(eci\014cally)-8
--b(,)55 b(it)c(means)g(that)h Fj(sizeof\(char\))p Fl(,)630
--2274 y Fj(sizeof\(short\))44 b Fl(and)i Fj(sizeof\(int\))f
--Fl(are)j(not)f(1,)52 b(2)c(and)f(4)h(resp)s(ectiv)m(ely)-8
--b(,)51 b(as)d(they)630 2384 y(should)27 b(b)s(e.)40 b(Note)30
--b(that)g(the)f(library)e(should)g(still)g(w)m(ork)i(prop)s(erly)e(on)i
--(64-bit)g(platforms)630 2493 y(whic)m(h)d(follo)m(w)h(the)g(LP64)h
--(programming)e(mo)s(del)h({)g(that)h(is,)g(where)e Fj(sizeof\(long\))f
--Fl(and)630 2603 y Fj(sizeof\(void*\))e Fl(are)k(8.)40
--b(Under)25 b(LP64,)j Fj(sizeof\(int\))c Fl(is)h(still)f(4,)k(so)f
--Fj(libbzip2)p Fl(,)e(whic)m(h)630 2712 y(do)s(esn't)30
--b(use)g(the)h Fj(long)e Fl(t)m(yp)s(e,)i(is)e(OK.)150
--2876 y Fj(BZ_SEQUENCE_ERROR)630 2986 y Fl(When)43 b(using)f(the)i
--(library)-8 b(,)45 b(it)e(is)f(imp)s(ortan)m(t)h(to)h(call)e(the)i
--(functions)e(in)g(the)i(correct)630 3095 y(sequence)28
--b(and)f(with)f(data)j(structures)e(\(bu\013ers)f(etc\))j(in)e(the)g
--(correct)i(states.)41 b Fj(libbzip2)630 3205 y Fl(c)m(hec)m(ks)26
--b(as)e(m)m(uc)m(h)h(as)f(it)g(can)g(to)h(ensure)f(this)f(is)g(happ)s
--(ening,)h(and)f(returns)g Fj(BZ_SEQUENCE_)630 3314 y(ERROR)36
--b Fl(if)h(not.)62 b(Co)s(de)37 b(whic)m(h)g(complies)f(precisely)g
--(with)h(the)g(function)g(seman)m(tics,)j(as)630 3424
--y(detailed)d(b)s(elo)m(w,)i(should)d(nev)m(er)i(receiv)m(e)h(this)d(v)
---5 b(alue;)41 b(suc)m(h)d(an)g(ev)m(en)m(t)h(denotes)f(buggy)630
--3534 y(co)s(de)31 b(whic)m(h)e(y)m(ou)h(should)f(in)m(v)m(estigate.)150
--3697 y Fj(BZ_PARAM_ERROR)630 3807 y Fl(Returned)43 b(when)f(a)i
--(parameter)g(to)h(a)f(function)e(call)h(is)f(out)i(of)g(range)g(or)g
--(otherwise)630 3917 y(manifestly)34 b(incorrect.)57 b(As)36
--b(with)e Fj(BZ_SEQUENCE_ERROR)p Fl(,)f(this)i(denotes)h(a)g(bug)f(in)g
--(the)630 4026 y(clien)m(t)23 b(co)s(de.)39 b(The)22 b(distinction)f(b)s
--(et)m(w)m(een)j Fj(BZ_PARAM_ERROR)c Fl(and)j Fj(BZ_SEQUENCE_ERROR)630
--4136 y Fl(is)29 b(a)i(bit)f(hazy)-8 b(,)31 b(but)f(still)e(w)m(orth)i
--(making.)150 4300 y Fj(BZ_MEM_ERROR)630 4409 y Fl(Returned)g(when)f(a)i
--(request)f(to)i(allo)s(cate)f(memory)f(failed.)40 b(Note)31
--b(that)g(the)g(quan)m(tit)m(y)g(of)630 4519 y(memory)21
--b(needed)g(to)i(decompress)e(a)g(stream)h(cannot)g(b)s(e)f(determined)f
--(un)m(til)g(the)h(stream's)630 4628 y(header)29 b(has)g(b)s(een)g
--(read.)40 b(So)29 b Fj(BZ2_bzDecompress)c Fl(and)j Fj(BZ2_bzRead)f
--Fl(ma)m(y)j(return)e Fj(BZ_)630 4738 y(MEM_ERROR)d Fl(ev)m(en)k(though)
--e(some)h(of)g(the)g(compressed)g(data)g(has)g(b)s(een)f(read.)39
--b(The)28 b(same)630 4847 y(is)38 b(not)i(true)f(for)g(compression;)k
--(once)d Fj(BZ2_bzCompressInit)34 b Fl(or)39 b Fj(BZ2_bzWriteOpen)630
--4957 y Fl(ha)m(v)m(e)32 b(successfully)c(completed,)j
--Fj(BZ_MEM_ERROR)c Fl(cannot)k(o)s(ccur.)150 5121 y Fj(BZ_DATA_ERROR)630
--5230 y Fl(Returned)h(when)g(a)h(data)g(in)m(tegrit)m(y)g(error)g(is)e
--(detected)k(during)30 b(decompression.)47 b(Most)630
--5340 y(imp)s(ortan)m(tly)-8 b(,)31 b(this)f(means)i(when)f(stored)g
--(and)g(computed)h(CR)m(Cs)f(for)g(the)h(data)g(do)g(not)p
--eop
+-b(with)g Fi(libbzip2)1881 b Fl(11)150 299 y Fj(As)32
+-b(with)h(the)g(lo)m(w-lev)m(el)j(library)-8 b(,)33 b(no)g(global)h(v)-5
+-b(ariables)33 b(are)g(used)f(so)h(the)g(library)g(is)g(p)s(er)f(se)h
+-(thread-)150 408 y(safe.)62 b(Ho)m(w)m(ev)m(er,)41 b(if)c(I/O)h(errors)
+-g(o)s(ccur)f(whilst)g(reading)h(or)f(writing)h(the)f(underlying)g
+-(compressed)150 518 y(\014les,)j(y)m(ou)e(ma)m(y)h(ha)m(v)m(e)f(to)h
+-(consult)g Fi(errno)d Fj(to)j(determine)f(the)h(cause)f(of)g(the)g
+-(error.)64 b(In)37 b(that)i(case,)150 628 y(y)m(ou'd)30
+-b(need)h(a)f(C)g(library)g(whic)m(h)g(correctly)j(supp)s(orts)c
+-Fi(errno)g Fj(in)h(a)g(m)m(ultithreaded)h(en)m(vironmen)m(t.)150
+-784 y(T)-8 b(o)77 b(mak)m(e)f(the)g(library)g(a)f(little)j(simpler)e
+-(and)e(more)j(p)s(ortable,)87 b Fi(BZ2_bzReadOpen)72
+-b Fj(and)150 894 y Fi(BZ2_bzWriteOpen)34 b Fj(require)39
+-b(y)m(ou)g(to)g(pass)f(them)h(\014le)f(handles)g(\()p
+-Fi(FILE*)p Fj(s\))f(whic)m(h)h(ha)m(v)m(e)i(previously)150
+-1004 y(b)s(een)56 b(op)s(ened)g(for)h(reading)f(or)h(writing)g(resp)s
+-(ectiv)m(ely)-8 b(.)122 b(That)57 b(a)m(v)m(oids)h(p)s(ortabilit)m(y)f
+-(problems)150 1113 y(asso)s(ciated)33 b(with)g(\014le)f(op)s(erations)h
+-(and)e(\014le)i(attributes,)h(whilst)e(not)h(b)s(eing)f(m)m(uc)m(h)g
+-(of)h(an)f(imp)s(osition)150 1223 y(on)e(the)h(programmer.)150
+-1474 y Fe(3.1.3)63 b(Utilit)m(y)40 b(functions)h(summary)150
+-1666 y Fj(F)-8 b(or)43 b(v)m(ery)h(simple)e(needs,)k
+-Fi(BZ2_bzBuffToBuffCompres)o(s)36 b Fj(and)42 b Fi
+-(BZ2_bzBuffToBuffDecompres)o(s)150 1776 y Fj(are)26 b(pro)m(vided.)39
+-b(These)26 b(compress)f(data)h(in)f(memory)h(from)f(one)h(bu\013er)f
+-(to)h(another)g(bu\013er)f(in)g(a)g(single)150 1885 y(function)37
+-b(call.)62 b(Y)-8 b(ou)38 b(should)e(assess)h(whether)g(these)h
+-(functions)f(ful\014ll)f(y)m(our)i(memory-to-memory)150
+-1995 y(compression/decompression)22 b(requiremen)m(ts)g(b)s(efore)f(in)
+-m(v)m(esting)i(e\013ort)f(in)f(understanding)f(the)h(more)150
+-2105 y(general)31 b(but)f(more)h(complex)g(lo)m(w-lev)m(el)i(in)m
+-(terface.)150 2261 y(Y)-8 b(oshiok)j(a)47 b(Tsuneo)g(\()p
+-Fi(QWF00133@niftyserve.or.jp)40 b Fj(/)47 b Fi
+-(tsuneo-y@is.aist-nara.ac)o(.jp)p Fj(\))40 b(has)150
+-2371 y(con)m(tributed)f(some)f(functions)g(to)h(giv)m(e)h(b)s(etter)e
+-Fi(zlib)f Fj(compatibilit)m(y)-8 b(.)67 b(These)38 b(functions)g(are)g
+-Fi(BZ2_)150 2481 y(bzopen)p Fj(,)g Fi(BZ2_bzread)p Fj(,)f
+-Fi(BZ2_bzwrite)p Fj(,)g Fi(BZ2_bzflush)p Fj(,)g Fi(BZ2_bzclose)p
+-Fj(,)g Fi(BZ2_bzerror)e Fj(and)i Fi(BZ2_)150 2590 y(bzlibVersion)p
+-Fj(.)44 b(Y)-8 b(ou)33 b(ma)m(y)g(\014nd)e(these)i(functions)g(more)g
+-(con)m(v)m(enien)m(t)i(for)e(simple)f(\014le)h(reading)g(and)150
+-2700 y(writing,)d(than)g(those)g(in)f(the)h(high-lev)m(el)i(in)m
+-(terface.)42 b(These)30 b(functions)f(are)h(not)g(\(y)m(et\))i
+-(o\016cially)f(part)150 2809 y(of)h(the)g(library)-8
+-b(,)33 b(and)e(are)h(minimally)g(do)s(cumen)m(ted)g(here.)45
+-b(If)31 b(they)h(break,)h(y)m(ou)f(get)h(to)g(k)m(eep)f(all)h(the)150
+-2919 y(pieces.)42 b(I)30 b(hop)s(e)g(to)h(do)s(cumen)m(t)f(them)h(prop)
+-s(erly)e(when)h(time)h(p)s(ermits.)150 3076 y(Y)-8 b(oshiok)j(a)27
+-b(also)g(con)m(tributed)g(mo)s(di\014cations)g(to)g(allo)m(w)h(the)e
+-(library)h(to)g(b)s(e)f(built)g(as)g(a)h(Windo)m(ws)f(DLL.)150
+-3362 y Fk(3.2)68 b(Error)45 b(handling)150 3554 y Fj(The)22
+-b(library)g(is)g(designed)g(to)i(reco)m(v)m(er)g(cleanly)f(in)f(all)h
+-(situations,)i(including)c(the)i(w)m(orst-case)h(situation)150
+-3664 y(of)k(decompressing)g(random)f(data.)40 b(I'm)27
+-b(not)h(100\045)h(sure)e(that)i(it)f(can)g(alw)m(a)m(ys)g(do)g(this,)g
+-(so)g(y)m(ou)g(migh)m(t)150 3774 y(w)m(an)m(t)i(to)g(add)e(a)i(signal)f
+-(handler)g(to)h(catc)m(h)g(segmen)m(tation)i(violations)f(during)d
+-(decompression)h(if)h(y)m(ou)150 3883 y(are)c(feeling)g(esp)s(ecially)g
+-(paranoid.)39 b(I)25 b(w)m(ould)g(b)s(e)g(in)m(terested)i(in)e(hearing)
+-g(more)h(ab)s(out)f(the)h(robustness)150 3993 y(of)31
+-b(the)f(library)h(to)g(corrupted)f(compressed)g(data.)150
+-4150 y(V)-8 b(ersion)38 b(1.0)h(is)e(m)m(uc)m(h)h(more)g(robust)f(in)g
+-(this)h(resp)s(ect)g(than)f(0.9.0)i(or)f(0.9.5.)64 b(In)m(v)m
+-(estigations)40 b(with)150 4259 y(Chec)m(k)m(er)30 b(\(a)f(to)s(ol)h
+-(for)f(detecting)h(problems)f(with)f(memory)h(managemen)m(t,)i(similar)
+-e(to)h(Purify\))e(indi-)150 4369 y(cate)34 b(that,)g(at)f(least)g(for)g
+-(the)g(few)f(\014les)g(I)h(tested,)h(all)f(single-bit)h(errors)e(in)g
+-(the)h(decompressed)g(data)150 4478 y(are)28 b(caugh)m(t)h(prop)s(erly)
+--8 b(,)29 b(with)f(no)g(segmen)m(tation)i(faults,)f(no)f(reads)g(of)g
+-(uninitialised)g(data)g(and)g(no)g(out)150 4588 y(of)j(range)h(reads)f
+-(or)h(writes.)44 b(So)31 b(it's)h(certainly)h(m)m(uc)m(h)e(impro)m(v)m
+-(ed,)i(although)e(I)h(w)m(ouldn't)f(claim)h(it)g(to)150
+-4698 y(b)s(e)e(totally)i(b)s(om)m(bpro)s(of.)150 4854
+-y(The)24 b(\014le)g Fi(bzlib.h)e Fj(con)m(tains)j(all)f(de\014nitions)g
+-(needed)g(to)g(use)g(the)g(library)-8 b(.)39 b(In)24
+-b(particular,)i(y)m(ou)e(should)150 4964 y(de\014nitely)31
+-b(not)f(include)h Fi(bzlib_private.h)p Fj(.)150 5121
+-y(In)38 b Fi(bzlib.h)p Fj(,)g(the)g(v)-5 b(arious)38
+-b(return)g(v)-5 b(alues)38 b(are)g(de\014ned.)62 b(The)38
+-b(follo)m(wing)i(list)f(is)f(not)g(in)m(tended)g(as)150
+-5230 y(an)33 b(exhaustiv)m(e)h(description)g(of)g(the)g(circumstances)g
+-(in)f(whic)m(h)g(a)h(giv)m(en)g(v)-5 b(alue)34 b(ma)m(y)g(b)s(e)f
+-(returned)g({)150 5340 y(those)h(descriptions)f(are)h(giv)m(en)g
+-(later.)50 b(Rather,)34 b(it)g(is)f(in)m(tended)g(to)h(con)m(v)m(ey)h
+-(the)e(rough)g(meaning)g(of)p eop
 -%%Page: 12 13
 -12 12 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
--b(with)g Fj(libbzip2)1881 b Fl(12)630 299 y(matc)m(h.)41
--b(This)28 b(v)-5 b(alue)29 b(is)f(also)i(returned)e(up)s(on)g
--(detection)i(of)g(an)m(y)g(other)f(anomaly)h(in)e(the)630
--408 y(compressed)i(data.)150 560 y Fj(BZ_DATA_ERROR_MAGIC)630
--670 y Fl(As)k(a)g(sp)s(ecial)f(case)i(of)f Fj(BZ_DATA_ERROR)p
--Fl(,)d(it)i(is)g(sometimes)h(useful)e(to)j(kno)m(w)f(when)f(the)630
--779 y(compressed)d(stream)h(do)s(es)f(not)g(start)h(with)e(the)i
--(correct)h(magic)e(b)m(ytes)h(\()p Fj('B')f('Z')f('h')p
--Fl(\).)150 931 y Fj(BZ_IO_ERROR)630 1040 y Fl(Returned)k(b)m(y)h
--Fj(BZ2_bzRead)d Fl(and)i Fj(BZ2_bzWrite)e Fl(when)i(there)h(is)f(an)g
--(error)h(reading)f(or)630 1150 y(writing)28 b(in)h(the)h(compressed)g
--(\014le,)f(and)h(b)m(y)g Fj(BZ2_bzReadOpen)c Fl(and)j
--Fj(BZ2_bzWriteOpen)630 1259 y Fl(for)i(attempts)i(to)f(use)f(a)h
--(\014le)e(for)i(whic)m(h)e(the)h(error)g(indicator)g(\(viz,)g
--Fj(ferror\(f\))p Fl(\))f(is)g(set.)630 1369 y(On)h(receipt)g(of)h
--Fj(BZ_IO_ERROR)p Fl(,)e(the)h(caller)h(should)d(consult)i
--Fj(errno)g Fl(and/or)g Fj(perror)f Fl(to)630 1479 y(acquire)g(op)s
--(erating-system)g(sp)s(eci\014c)f(information)g(ab)s(out)h(the)h
--(problem.)150 1630 y Fj(BZ_UNEXPECTED_EOF)630 1740 y
--Fl(Returned)36 b(b)m(y)g Fj(BZ2_bzRead)e Fl(when)i(the)h(compressed)f
--(\014le)g(\014nishes)e(b)s(efore)j(the)f(logical)630
--1849 y(end)30 b(of)g(stream)h(is)e(detected.)150 2001
--y Fj(BZ_OUTBUFF_FULL)630 2110 y Fl(Returned)g(b)m(y)i
--Fj(BZ2_bzBuffToBuffCompres)o(s)24 b Fl(and)30 b Fj
--(BZ2_bzBuffToBuffDecompres)o(s)630 2220 y Fl(to)h(indicate)f(that)h
--(the)f(output)g(data)h(will)d(not)i(\014t)h(in)m(to)f(the)h(output)f
--(bu\013er)f(pro)m(vided.)150 2492 y Fk(3.3)68 b(Lo)l(w-lev)l(el)47
--b(in)l(terface)150 2766 y Ff(3.3.1)63 b Fe(BZ2_bzCompressInit)390
--2953 y Fj(typedef)533 3057 y(struct)46 b({)676 3161 y(char)h(*next_in;)
+-b(with)g Fi(libbzip2)1881 b Fl(12)150 299 y Fj(eac)m(h)35
+-b(return)f(v)-5 b(alue.)53 b(The)34 b(\014rst)g(\014v)m(e)h(actions)g
+-(are)g(normal)f(and)f(not)i(in)m(tended)f(to)i(denote)f(an)e(error)150
+-408 y(situation.)150 592 y Fi(BZ_OK)240 b Fj(The)30 b(requested)h
+-(action)h(w)m(as)e(completed)i(successfully)-8 b(.)150
+-756 y Fi(BZ_RUN_OK)150 866 y(BZ_FLUSH_OK)150 975 y(BZ_FINISH_OK)630
+-1085 y Fj(In)22 b Fi(BZ2_bzCompress)p Fj(,)e(the)j(requested)g
+-(\015ush/\014nish/nothing-sp)s(ecial)e(action)j(w)m(as)e(com-)630
+-1194 y(pleted)31 b(successfully)-8 b(.)150 1358 y Fi(BZ_STREAM_END)630
+-1468 y Fj(Compression)38 b(of)g(data)h(w)m(as)f(completed,)j(or)e(the)f
+-(logical)j(stream)e(end)e(w)m(as)h(detected)630 1577
+-y(during)29 b(decompression.)150 1761 y(The)h(follo)m(wing)i(return)e
+-(v)-5 b(alues)31 b(indicate)g(an)f(error)h(of)f(some)h(kind.)150
+-1945 y Fi(BZ_CONFIG_ERROR)630 2055 y Fj(Indicates)46
+-b(that)h(the)f(library)f(has)h(b)s(een)f(improp)s(erly)g(compiled)h(on)
+-g(y)m(our)g(platform)630 2164 y({)k(a)h(ma)5 b(jor)50
+-b(con\014guration)h(error.)100 b(Sp)s(eci\014cally)-8
+-b(,)56 b(it)51 b(means)e(that)i Fi(sizeof\(char\))p Fj(,)630
+-2274 y Fi(sizeof\(short\))43 b Fj(and)i Fi(sizeof\(int\))e
+-Fj(are)k(not)g(1,)k(2)46 b(and)g(4)h(resp)s(ectiv)m(ely)-8
+-b(,)52 b(as)47 b(they)630 2384 y(should)26 b(b)s(e.)38
+-b(Note)29 b(that)e(the)g(library)f(should)g(still)h(w)m(ork)g(prop)s
+-(erly)f(on)h(64-bit)h(platforms)630 2493 y(whic)m(h)43
+-b(follo)m(w)h(the)g(LP64)f(programming)h(mo)s(del)e({)i(that)g(is,)i
+-(where)d Fi(sizeof\(long\))630 2603 y Fj(and)32 b Fi(sizeof\(void*\))e
+-Fj(are)j(8.)50 b(Under)32 b(LP64,)j Fi(sizeof\(int\))30
+-b Fj(is)j(still)h(4,)h(so)e Fi(libbzip2)p Fj(,)630 2712
+-y(whic)m(h)d(do)s(esn't)g(use)h(the)f Fi(long)f Fj(t)m(yp)s(e,)i(is)g
+-(OK.)150 2876 y Fi(BZ_SEQUENCE_ERROR)630 2986 y Fj(When)41
+-b(using)g(the)h(library)-8 b(,)45 b(it)d(is)g(imp)s(ortan)m(t)g(to)g
+-(call)h(the)f(functions)f(in)g(the)h(correct)630 3095
+-y(sequence)25 b(and)f(with)g(data)h(structures)g(\(bu\013ers)f(etc\))i
+-(in)f(the)g(correct)h(states.)40 b Fi(libbzip2)630 3205
+-y Fj(c)m(hec)m(ks)25 b(as)e(m)m(uc)m(h)g(as)g(it)h(can)f(to)h(ensure)f
+-(this)g(is)g(happ)s(ening,)g(and)g(returns)f Fi(BZ_SEQUENCE_)630
+-3314 y(ERROR)35 b Fj(if)i(not.)59 b(Co)s(de)36 b(whic)m(h)h(complies)g
+-(precisely)h(with)e(the)h(function)f(seman)m(tics,)k(as)630
+-3424 y(detailed)c(b)s(elo)m(w,)h(should)e(nev)m(er)g(receiv)m(e)j(this)
+-d(v)-5 b(alue;)38 b(suc)m(h)d(an)g(ev)m(en)m(t)i(denotes)f(buggy)630
+-3534 y(co)s(de)31 b(whic)m(h)f(y)m(ou)g(should)g(in)m(v)m(estigate.)150
+-3697 y Fi(BZ_PARAM_ERROR)630 3807 y Fj(Returned)41 b(when)f(a)h
+-(parameter)h(to)g(a)g(function)f(call)h(is)f(out)h(of)f(range)h(or)f
+-(otherwise)630 3917 y(manifestly)35 b(incorrect.)55 b(As)34
+-b(with)g Fi(BZ_SEQUENCE_ERROR)p Fj(,)d(this)k(denotes)g(a)f(bug)g(in)h
+-(the)630 4026 y(clien)m(t)24 b(co)s(de.)38 b(The)22 b(distinction)h(b)s
+-(et)m(w)m(een)f Fi(BZ_PARAM_ERROR)d Fj(and)i Fi(BZ_SEQUENCE_ERROR)630
+-4136 y Fj(is)30 b(a)h(bit)f(hazy)-8 b(,)32 b(but)d(still)j(w)m(orth)e
+-(making.)150 4300 y Fi(BZ_MEM_ERROR)630 4409 y Fj(Returned)44
+-b(when)g(a)h(request)g(to)g(allo)s(cate)i(memory)e(failed.)83
+-b(Note)46 b(that)g(the)f(quan-)630 4519 y(tit)m(y)d(of)f(memory)f
+-(needed)g(to)i(decompress)e(a)g(stream)h(cannot)g(b)s(e)f(determined)h
+-(un)m(til)630 4628 y(the)f(stream's)h(header)e(has)h(b)s(een)f(read.)69
+-b(So)39 b Fi(BZ2_bzDecompress)d Fj(and)j Fi(BZ2_bzRead)630
+-4738 y Fj(ma)m(y)29 b(return)f Fi(BZ_MEM_ERROR)d Fj(ev)m(en)30
+-b(though)e(some)h(of)g(the)g(compressed)g(data)g(has)f(b)s(een)630
+-4847 y(read.)76 b(The)42 b(same)g(is)g(not)g(true)g(for)h(compression;)
+-48 b(once)43 b Fi(BZ2_bzCompressInit)37 b Fj(or)630 4957
+-y Fi(BZ2_bzWriteOpen)26 b Fj(ha)m(v)m(e)32 b(successfully)e(completed,)
+-i Fi(BZ_MEM_ERROR)27 b Fj(cannot)k(o)s(ccur.)150 5121
+-y Fi(BZ_DATA_ERROR)630 5230 y Fj(Returned)d(when)g(a)h(data)g(in)m
+-(tegrit)m(y)i(error)e(is)g(detected)h(during)d(decompression.)41
+-b(Most)630 5340 y(imp)s(ortan)m(tly)-8 b(,)32 b(this)e(means)g(when)f
+-(stored)i(and)e(computed)h(CR)m(Cs)g(for)g(the)h(data)f(do)h(not)p
+-eop
+-%%Page: 13 14
+-13 13 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
+-b(with)g Fi(libbzip2)1881 b Fl(13)630 299 y Fj(matc)m(h.)41
+-b(This)28 b(v)-5 b(alue)28 b(is)h(also)g(returned)e(up)s(on)g
+-(detection)j(of)f(an)m(y)f(other)h(anomaly)g(in)f(the)630
+-408 y(compressed)i(data.)150 560 y Fi(BZ_DATA_ERROR_MAGIC)630
+-670 y Fj(As)j(a)g(sp)s(ecial)g(case)h(of)f Fi(BZ_DATA_ERROR)p
+-Fj(,)d(it)k(is)f(sometimes)h(useful)f(to)h(kno)m(w)f(when)f(the)630
+-779 y(compressed)c(stream)g(do)s(es)g(not)g(start)g(with)g(the)g
+-(correct)i(magic)e(b)m(ytes)h(\()p Fi('B')h('Z')f('h')p
+-Fj(\).)150 931 y Fi(BZ_IO_ERROR)630 1040 y Fj(Returned)h(b)m(y)h
+-Fi(BZ2_bzRead)d Fj(and)h Fi(BZ2_bzWrite)f Fj(when)i(there)h(is)g(an)f
+-(error)h(reading)g(or)630 1150 y(writing)e(in)f(the)h(compressed)g
+-(\014le,)g(and)f(b)m(y)h Fi(BZ2_bzReadOpen)24 b Fj(and)k
+-Fi(BZ2_bzWriteOpen)630 1259 y Fj(for)h(attempts)i(to)f(use)f(a)h
+-(\014le)f(for)h(whic)m(h)f(the)h(error)f(indicator)i(\(viz,)f
+-Fi(ferror\(f\))p Fj(\))e(is)h(set.)630 1369 y(On)h(receipt)i(of)f
+-Fi(BZ_IO_ERROR)p Fj(,)c(the)k(caller)h(should)e(consult)h
+-Fi(errno)e Fj(and/or)h Fi(perror)f Fj(to)630 1479 y(acquire)i(op)s
+-(erating-system)h(sp)s(eci\014c)e(information)h(ab)s(out)f(the)g
+-(problem.)150 1630 y Fi(BZ_UNEXPECTED_EOF)630 1740 y
+-Fj(Returned)j(b)m(y)g Fi(BZ2_bzRead)e Fj(when)h(the)i(compressed)f
+-(\014le)h(\014nishes)e(b)s(efore)h(the)h(logical)630
+-1849 y(end)c(of)g(stream)h(is)g(detected.)150 2001 y
+-Fi(BZ_OUTBUFF_FULL)630 2110 y Fj(Returned)d(b)m(y)g Fi
+-(BZ2_bzBuffToBuffCompress)22 b Fj(and)27 b Fi
+-(BZ2_bzBuffToBuffDecompres)o(s)630 2220 y Fj(to)k(indicate)h(that)f
+-(the)f(output)g(data)h(will)g(not)g(\014t)f(in)m(to)h(the)g(output)f
+-(bu\013er)g(pro)m(vided.)150 2492 y Fk(3.3)68 b(Lo)l(w-lev)l(el)47
+-b(in)l(terface)150 2766 y Fe(3.3.1)63 b Fd(BZ2_bzCompressInit)390
+-2953 y Fi(typedef)533 3057 y(struct)46 b({)676 3161 y(char)h(*next_in;)
 -676 3264 y(unsigned)f(int)h(avail_in;)676 3368 y(unsigned)f(int)h
 -(total_in_lo32;)676 3472 y(unsigned)f(int)h(total_in_hi32;)676
 -3680 y(char)g(*next_out;)676 3783 y(unsigned)f(int)h(avail_out;)676
@@ -6941,1408 +7956,1419 @@ diff -Nru bzip2-1.0.1/manual.ps bzip2-1.0.1.new/manual.ps
 -(\()k(bz_stream)e(*strm,)1583 5132 y(int)i(blockSize100k,)1583
 -5236 y(int)g(verbosity,)1583 5340 y(int)g(workFactor)e(\);)p
 -eop
--%%Page: 13 14
--13 13 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
--b(with)g Fj(libbzip2)1881 b Fl(13)150 456 y(Prepares)32
--b(for)h(compression.)47 b(The)32 b Fj(bz_stream)e Fl(structure)j(holds)
--e(all)h(data)h(p)s(ertaining)e(to)i(the)g(com-)150 565
--y(pression)i(activit)m(y)-8 b(.)62 b(A)37 b Fj(bz_stream)e
--Fl(structure)h(should)f(b)s(e)i(allo)s(cated)g(and)f(initialised)e
--(prior)h(to)j(the)150 675 y(call.)67 b(The)39 b(\014elds)e(of)j
--Fj(bz_stream)d Fl(comprise)h(the)i(en)m(tiret)m(y)g(of)f(the)h
--(user-visible)c(data.)68 b Fj(state)38 b Fl(is)h(a)150
--784 y(p)s(oin)m(ter)29 b(to)i(the)g(priv)-5 b(ate)30
--b(data)h(structures)f(required)e(for)i(compression.)150
--941 y(Custom)37 b(memory)g(allo)s(cators)g(are)h(supp)s(orted,)f(via)g
--(\014elds)f Fj(bzalloc)p Fl(,)h Fj(bzfree)p Fl(,)g(and)g
--Fj(opaque)p Fl(.)59 b(The)150 1051 y(v)-5 b(alue)32 b
--Fj(opaque)e Fl(is)i(passed)f(to)i(as)g(the)f(\014rst)g(argumen)m(t)h
--(to)g(all)e(calls)g(to)i Fj(bzalloc)d Fl(and)i Fj(bzfree)p
--Fl(,)f(but)h(is)150 1160 y(otherwise)d(ignored)g(b)m(y)h(the)g(library)
---8 b(.)38 b(The)29 b(call)h Fj(bzalloc)e(\()i(opaque,)e(n,)i(m)g(\))g
--Fl(is)e(exp)s(ected)j(to)f(return)150 1270 y(a)g(p)s(oin)m(ter)e
--Fj(p)h Fl(to)h Fj(n)g(*)g(m)f Fl(b)m(ytes)h(of)g(memory)-8
--b(,)30 b(and)e Fj(bzfree)h(\()h(opaque,)f(p)h(\))f Fl(should)e(free)i
--(that)h(memory)-8 b(.)150 1427 y(If)33 b(y)m(ou)g(don't)h(w)m(an)m(t)g
--(to)g(use)f(a)g(custom)h(memory)f(allo)s(cator,)h(set)g
--Fj(bzalloc)p Fl(,)e Fj(bzfree)g Fl(and)h Fj(opaque)e
--Fl(to)150 1537 y Fj(NULL)p Fl(,)e(and)h(the)h(library)d(will)f(then)k
--(use)f(the)g(standard)g Fj(malloc)p Fl(/)p Fj(free)e
--Fl(routines.)150 1693 y(Before)39 b(calling)d Fj(BZ2_bzCompressInit)p
--Fl(,)f(\014elds)h Fj(bzalloc)p Fl(,)h Fj(bzfree)f Fl(and)h
--Fj(opaque)f Fl(should)g(b)s(e)h(\014lled)150 1803 y(appropriately)-8
--b(,)35 b(as)h(just)f(describ)s(ed.)53 b(Up)s(on)34 b(return,)i(the)g
--(in)m(ternal)e(state)i(will)d(ha)m(v)m(e)j(b)s(een)f(allo)s(cated)150
--1913 y(and)43 b(initialised,)g(and)g Fj(total_in_lo32)p
--Fl(,)h Fj(total_in_hi32)p Fl(,)f Fj(total_out_lo32)d
--Fl(and)j Fj(total_out_)150 2022 y(hi32)37 b Fl(will)f(ha)m(v)m(e)j(b)s
--(een)f(set)h(to)g(zero.)65 b(These)38 b(four)g(\014elds)e(are)j(used)f
--(b)m(y)g(the)g(library)e(to)j(inform)e(the)150 2132 y(caller)j(of)g
--(the)h(total)g(amoun)m(t)g(of)g(data)g(passed)f(in)m(to)g(and)g(out)g
--(of)h(the)g(library)-8 b(,)41 b(resp)s(ectiv)m(ely)-8
--b(.)70 b(Y)-8 b(ou)150 2241 y(should)34 b(not)j(try)f(to)h(c)m(hange)g
--(them.)58 b(As)36 b(of)h(v)m(ersion)f(1.0,)j(64-bit)d(coun)m(ts)h(are)f
--(main)m(tained,)h(ev)m(en)g(on)150 2351 y(32-bit)i(platforms,)h(using)d
--(the)i Fj(_hi32)e Fl(\014elds)g(to)j(store)f(the)g(upp)s(er)d(32)k
--(bits)d(of)i(the)g(coun)m(t.)66 b(So,)41 b(for)150 2460
--y(example,)30 b(the)h(total)g(amoun)m(t)g(of)f(data)h(in)f(is)f
--Fj(\(total_in_hi32)d(<<)k(32\))g(+)g(total_in_lo32)p
--Fl(.)150 2617 y(P)m(arameter)g Fj(blockSize100k)25 b
--Fl(sp)s(eci\014es)i(the)h(blo)s(c)m(k)g(size)h(to)g(b)s(e)f(used)f(for)
--h(compression.)40 b(It)28 b(should)f(b)s(e)150 2727 y(a)k(v)-5
--b(alue)30 b(b)s(et)m(w)m(een)i(1)f(and)f(9)h(inclusiv)m(e,)e(and)h(the)
--h(actual)g(blo)s(c)m(k)f(size)g(used)g(is)g(100000)j(x)e(this)e
--(\014gure.)42 b(9)150 2836 y(giv)m(es)31 b(the)f(b)s(est)g(compression)
--g(but)f(tak)m(es)j(most)f(memory)-8 b(.)150 2993 y(P)m(arameter)29
--b Fj(verbosity)c Fl(should)h(b)s(e)h(set)i(to)f(a)h(n)m(um)m(b)s(er)d
--(b)s(et)m(w)m(een)j(0)f(and)f(4)h(inclusiv)m(e.)38 b(0)28
--b(is)f(silen)m(t,)h(and)150 3103 y(greater)j(n)m(um)m(b)s(ers)c(giv)m
--(e)j(increasingly)d(v)m(erb)s(ose)j(monitoring/debugging)d(output.)40
--b(If)29 b(the)g(library)e(has)150 3212 y(b)s(een)j(compiled)e(with)i
--Fj(-DBZ_NO_STDIO)p Fl(,)d(no)j(suc)m(h)g(output)g(will)e(app)s(ear)h
--(for)h(an)m(y)h(v)m(erb)s(osit)m(y)f(setting.)150 3369
--y(P)m(arameter)35 b Fj(workFactor)d Fl(con)m(trols)i(ho)m(w)g(the)g
--(compression)f(phase)h(b)s(eha)m(v)m(es)g(when)f(presen)m(ted)h(with)
--150 3479 y(w)m(orst)40 b(case,)j(highly)37 b(rep)s(etitiv)m(e,)k(input)
--d(data.)68 b(If)39 b(compression)g(runs)e(in)m(to)j(di\016culties)d
--(caused)i(b)m(y)150 3588 y(rep)s(etitiv)m(e)34 b(data,)j(the)e(library)
--d(switc)m(hes)j(from)f(the)h(standard)f(sorting)g(algorithm)g(to)i(a)f
--(fallbac)m(k)f(al-)150 3698 y(gorithm.)47 b(The)32 b(fallbac)m(k)g(is)g
--(slo)m(w)m(er)g(than)h(the)f(standard)g(algorithm)g(b)m(y)g(p)s(erhaps)
--f(a)i(factor)h(of)e(three,)150 3808 y(but)e(alw)m(a)m(ys)h(b)s(eha)m(v)
--m(es)f(reasonably)-8 b(,)31 b(no)f(matter)h(ho)m(w)g(bad)f(the)g
--(input.)150 3965 y(Lo)m(w)m(er)25 b(v)-5 b(alues)24 b(of)h
--Fj(workFactor)d Fl(reduce)i(the)h(amoun)m(t)g(of)g(e\013ort)g(the)g
--(standard)f(algorithm)f(will)f(exp)s(end)150 4074 y(b)s(efore)j
--(resorting)h(to)g(the)g(fallbac)m(k.)39 b(Y)-8 b(ou)27
--b(should)c(set)k(this)e(parameter)h(carefully;)g(to)s(o)h(lo)m(w,)g
--(and)e(man)m(y)150 4184 y(inputs)32 b(will)f(b)s(e)i(handled)f(b)m(y)i
--(the)g(fallbac)m(k)g(algorithm)f(and)g(so)h(compress)g(rather)g(slo)m
--(wly)-8 b(,)34 b(to)s(o)h(high,)150 4293 y(and)24 b(y)m(our)h(a)m(v)m
--(erage-to-w)m(orst)30 b(case)c(compression)e(times)h(can)g(b)s(ecome)g
--(v)m(ery)h(large.)39 b(The)24 b(default)g(v)-5 b(alue)150
--4403 y(of)31 b(30)g(giv)m(es)f(reasonable)h(b)s(eha)m(viour)e(o)m(v)m
--(er)i(a)g(wide)e(range)i(of)f(circumstances.)150 4560
--y(Allo)m(w)m(able)h(v)-5 b(alues)31 b(range)i(from)e(0)i(to)f(250)h
--(inclusiv)m(e.)44 b(0)32 b(is)f(a)h(sp)s(ecial)f(case,)i(equiv)-5
--b(alen)m(t)32 b(to)g(using)f(the)150 4669 y(default)f(v)-5
--b(alue)29 b(of)i(30.)150 4826 y(Note)38 b(that)f(the)g(compressed)f
--(output)g(generated)h(is)f(the)g(same)h(regardless)f(of)h(whether)f(or)
--g(not)h(the)150 4936 y(fallbac)m(k)30 b(algorithm)f(is)h(used.)150
--5093 y(Be)23 b(a)m(w)m(are)h(also)f(that)g(this)f(parameter)h(ma)m(y)g
--(disapp)s(ear)e(en)m(tirely)h(in)f(future)h(v)m(ersions)g(of)h(the)g
--(library)-8 b(.)36 b(In)150 5202 y(principle)20 b(it)j(should)e(b)s(e)h
--(p)s(ossible)f(to)j(devise)f(a)g(go)s(o)s(d)g(w)m(a)m(y)i(to)f
--(automatically)f(c)m(ho)s(ose)h(whic)m(h)e(algorithm)150
--5312 y(to)31 b(use.)41 b(Suc)m(h)29 b(a)i(mec)m(hanism)f(w)m(ould)f
--(render)g(the)i(parameter)g(obsolete.)p eop
 -%%Page: 14 15
 -14 14 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
--b(with)g Fj(libbzip2)1881 b Fl(14)150 299 y(P)m(ossible)29
--b(return)h(v)-5 b(alues:)572 450 y Fj(BZ_CONFIG_ERROR)663
--554 y Fl(if)29 b(the)i(library)d(has)i(b)s(een)f(mis-compiled)572
--657 y Fj(BZ_PARAM_ERROR)663 761 y Fl(if)g Fj(strm)g Fl(is)h
--Fj(NULL)663 865 y Fl(or)g Fj(blockSize)e(<)i Fl(1)h(or)f
--Fj(blockSize)e(>)i Fl(9)663 969 y(or)g Fj(verbosity)e(<)i
--Fl(0)h(or)f Fj(verbosity)e(>)i Fl(4)663 1073 y(or)g Fj(workFactor)e(<)i
--Fl(0)g(or)h Fj(workFactor)c(>)j Fl(250)572 1176 y Fj(BZ_MEM_ERROR)663
--1280 y Fl(if)f(not)i(enough)f(memory)g(is)f(a)m(v)-5
--b(ailable)572 1384 y Fj(BZ_OK)663 1488 y Fl(otherwise)150
--1645 y(Allo)m(w)m(able)30 b(next)g(actions:)572 1796
--y Fj(BZ2_bzCompress)663 1899 y Fl(if)f Fj(BZ_OK)g Fl(is)g(returned)572
--2003 y(no)h(sp)s(eci\014c)f(action)i(needed)f(in)f(case)i(of)g(error)
--150 2255 y Ff(3.3.2)63 b Fe(BZ2_bzCompress)533 2441 y
--Fj(int)47 b(BZ2_bzCompress)d(\()j(bz_stream)f(*strm,)g(int)h(action)f
--(\);)150 2598 y Fl(Pro)m(vides)28 b(more)g(input)f(and/or)h(output)g
--(bu\013er)g(space)h(for)f(the)h(library)-8 b(.)38 b(The)28
--b(caller)g(main)m(tains)f(input)150 2708 y(and)j(output)g(bu\013ers,)f
--(and)h(calls)g Fj(BZ2_bzCompress)c Fl(to)31 b(transfer)f(data)h(b)s(et)
--m(w)m(een)g(them.)150 2865 y(Before)j(eac)m(h)g(call)e(to)i
--Fj(BZ2_bzCompress)p Fl(,)c Fj(next_in)h Fl(should)g(p)s(oin)m(t)h(at)h
--(the)g(data)h(to)g(b)s(e)e(compressed,)150 2974 y(and)41
--b Fj(avail_in)f Fl(should)g(indicate)h(ho)m(w)h(man)m(y)f(b)m(ytes)i
--(the)f(library)d(ma)m(y)k(read.)75 b Fj(BZ2_bzCompress)150
--3084 y Fl(up)s(dates)29 b Fj(next_in)p Fl(,)g Fj(avail_in)f
--Fl(and)i Fj(total_in)e Fl(to)j(re\015ect)g(the)g(n)m(um)m(b)s(er)e(of)h
--(b)m(ytes)h(it)f(has)g(read.)150 3241 y(Similarly)-8
--b(,)27 b Fj(next_out)h Fl(should)g(p)s(oin)m(t)h(to)i(a)f(bu\013er)f
--(in)g(whic)m(h)g(the)h(compressed)g(data)h(is)e(to)i(b)s(e)e(placed,)
--150 3350 y(with)i Fj(avail_out)f Fl(indicating)h(ho)m(w)h(m)m(uc)m(h)h
--(output)f(space)h(is)f(a)m(v)-5 b(ailable.)46 b Fj(BZ2_bzCompress)29
--b Fl(up)s(dates)150 3460 y Fj(next_out)p Fl(,)f Fj(avail_out)g
--Fl(and)i Fj(total_out)e Fl(to)j(re\015ect)g(the)f(n)m(um)m(b)s(er)g(of)
--g(b)m(ytes)h(output.)150 3617 y(Y)-8 b(ou)40 b(ma)m(y)g(pro)m(vide)e
--(and)h(remo)m(v)m(e)i(as)f(little)e(or)h(as)h(m)m(uc)m(h)f(data)h(as)g
--(y)m(ou)f(lik)m(e)g(on)g(eac)m(h)i(call)e(of)g Fj(BZ2_)150
--3726 y(bzCompress)p Fl(.)48 b(In)33 b(the)h(limit,)f(it)h(is)f
--(acceptable)h(to)h(supply)c(and)j(remo)m(v)m(e)h(data)g(one)f(b)m(yte)g
--(at)h(a)f(time,)150 3836 y(although)28 b(this)f(w)m(ould)g(b)s(e)h
--(terribly)e(ine\016cien)m(t.)39 b(Y)-8 b(ou)29 b(should)e(alw)m(a)m(ys)
--h(ensure)g(that)h(at)g(least)g(one)f(b)m(yte)150 3946
--y(of)j(output)f(space)g(is)g(a)m(v)-5 b(ailable)30 b(at)h(eac)m(h)g
--(call.)150 4102 y(A)38 b(second)h(purp)s(ose)d(of)j Fj(BZ2_bzCompress)
--34 b Fl(is)j(to)i(request)f(a)h(c)m(hange)g(of)g(mo)s(de)e(of)i(the)f
--(compressed)150 4212 y(stream.)150 4369 y(Conceptually)-8
--b(,)24 b(a)g(compressed)g(stream)g(can)f(b)s(e)g(in)g(one)h(of)f(four)g
--(states:)39 b(IDLE,)24 b(R)m(UNNING,)h(FLUSH-)150 4478
--y(ING)37 b(and)g(FINISHING.)g(Before)i(initialisation)33
--b(\()p Fj(BZ2_bzCompressInit)p Fl(\))g(and)j(after)i(termination)150
--4588 y(\()p Fj(BZ2_bzCompressEnd)p Fl(\),)27 b(a)j(stream)h(is)f
--(regarded)g(as)g(IDLE.)150 4745 y(Up)s(on)35 b(initialisation)e(\()p
--Fj(BZ2_bzCompressInit)p Fl(\),)h(the)i(stream)h(is)e(placed)h(in)e(the)
--j(R)m(UNNING)g(state.)150 4854 y(Subsequen)m(t)j(calls)g(to)i
--Fj(BZ2_bzCompress)37 b Fl(should)j(pass)g Fj(BZ_RUN)g
--Fl(as)h(the)g(requested)h(action;)47 b(other)150 4964
--y(actions)31 b(are)f(illegal)f(and)h(will)d(result)j(in)f
--Fj(BZ_SEQUENCE_ERROR)p Fl(.)150 5121 y(A)m(t)38 b(some)f(p)s(oin)m(t,)h
--(the)f(calling)e(program)i(will)d(ha)m(v)m(e)k(pro)m(vided)e(all)f(the)
--i(input)e(data)j(it)e(w)m(an)m(ts)i(to.)61 b(It)150 5230
--y(will)28 b(then)h(w)m(an)m(t)i(to)g(\014nish)d(up)h({)i(in)d
--(e\013ect,)k(asking)e(the)g(library)e(to)j(pro)s(cess)f(an)m(y)g(data)h
--(it)f(migh)m(t)g(ha)m(v)m(e)150 5340 y(bu\013ered)25
--b(in)m(ternally)-8 b(.)38 b(In)25 b(this)g(state,)k Fj(BZ2_bzCompress)
--22 b Fl(will)i(no)i(longer)g(attempt)h(to)g(read)f(data)h(from)p
--eop
+-b(with)g Fi(libbzip2)1881 b Fl(14)150 456 y Fj(Prepares)31
+-b(for)g(compression.)42 b(The)30 b Fi(bz_stream)e Fj(structure)j(holds)
+-g(all)g(data)g(p)s(ertaining)g(to)g(the)g(com-)150 565
+-y(pression)k(activit)m(y)-8 b(.)59 b(A)35 b Fi(bz_stream)d
+-Fj(structure)k(should)e(b)s(e)h(allo)s(cated)i(and)e(initialised)h
+-(prior)f(to)i(the)150 675 y(call.)65 b(The)38 b(\014elds)g(of)g
+-Fi(bz_stream)e Fj(comprise)i(the)h(en)m(tiret)m(y)h(of)f(the)f
+-(user-visible)h(data.)64 b Fi(state)37 b Fj(is)h(a)150
+-784 y(p)s(oin)m(ter)31 b(to)g(the)g(priv)-5 b(ate)31
+-b(data)f(structures)h(required)f(for)h(compression.)150
+-941 y(Custom)36 b(memory)g(allo)s(cators)i(are)f(supp)s(orted,)f(via)h
+-(\014elds)e Fi(bzalloc)p Fj(,)h Fi(bzfree)p Fj(,)g(and)g
+-Fi(opaque)p Fj(.)56 b(The)150 1051 y(v)-5 b(alue)32 b
+-Fi(opaque)e Fj(is)i(passed)f(to)i(as)f(the)g(\014rst)g(argumen)m(t)g
+-(to)h(all)f(calls)h(to)g Fi(bzalloc)d Fj(and)h Fi(bzfree)p
+-Fj(,)g(but)g(is)150 1160 y(otherwise)c(ignored)g(b)m(y)g(the)g(library)
+--8 b(.)39 b(The)27 b(call)g Fi(bzalloc)i(\()h(opaque,)e(n,)i(m)g(\))c
+-Fj(is)h(exp)s(ected)g(to)g(return)150 1270 y(a)h(p)s(oin)m(ter)g
+-Fi(p)f Fj(to)i Fi(n)h(*)g(m)d Fj(b)m(ytes)h(of)g(memory)-8
+-b(,)29 b(and)e Fi(bzfree)h(\()i(opaque,)f(p)h(\))d Fj(should)g(free)h
+-(that)g(memory)-8 b(.)150 1427 y(If)32 b(y)m(ou)h(don't)g(w)m(an)m(t)g
+-(to)h(use)e(a)h(custom)g(memory)g(allo)s(cator,)i(set)e
+-Fi(bzalloc)p Fj(,)f Fi(bzfree)e Fj(and)i Fi(opaque)f
+-Fj(to)150 1537 y Fi(NULL)p Fj(,)e(and)h(the)h(library)f(will)h(then)f
+-(use)g(the)h(standard)e Fi(malloc)p Fj(/)p Fi(free)f
+-Fj(routines.)150 1693 y(Before)37 b(calling)h Fi(BZ2_bzCompressInit)p
+-Fj(,)33 b(\014elds)k Fi(bzalloc)p Fj(,)f Fi(bzfree)f
+-Fj(and)h Fi(opaque)e Fj(should)i(b)s(e)g(\014lled)150
+-1803 y(appropriately)-8 b(,)35 b(as)e(just)f(describ)s(ed.)48
+-b(Up)s(on)31 b(return,)j(the)f(in)m(ternal)h(state)g(will)f(ha)m(v)m(e)
+-h(b)s(een)e(allo)s(cated)150 1913 y(and)43 b(initialised,)49
+-b(and)43 b Fi(total_in_lo32)p Fj(,)h Fi(total_in_hi32)p
+-Fj(,)g Fi(total_out_lo32)c Fj(and)j Fi(total_out_)150
+-2022 y(hi32)35 b Fj(will)i(ha)m(v)m(e)g(b)s(een)f(set)h(to)g(zero.)59
+-b(These)37 b(four)f(\014elds)f(are)i(used)f(b)m(y)g(the)g(library)h(to)
+-g(inform)f(the)150 2132 y(caller)41 b(of)e(the)h(total)h(amoun)m(t)f
+-(of)f(data)h(passed)e(in)m(to)j(and)d(out)i(of)f(the)h(library)-8
+-b(,)42 b(resp)s(ectiv)m(ely)-8 b(.)70 b(Y)-8 b(ou)150
+-2241 y(should)34 b(not)h(try)h(to)g(c)m(hange)g(them.)55
+-b(As)34 b(of)h(v)m(ersion)h(1.0,)i(64-bit)e(coun)m(ts)g(are)f(main)m
+-(tained,)i(ev)m(en)f(on)150 2351 y(32-bit)j(platforms,)g(using)e(the)h
+-Fi(_hi32)d Fj(\014elds)i(to)h(store)h(the)e(upp)s(er)f(32)i(bits)f(of)h
+-(the)f(coun)m(t.)63 b(So,)39 b(for)150 2460 y(example,)31
+-b(the)g(total)h(amoun)m(t)f(of)f(data)h(in)f(is)g Fi(\(total_in_hi32)d
+-(<<)j(32\))f(+)h(total_in_lo32)p Fj(.)150 2617 y(P)m(arameter)37
+-b Fi(blockSize100k)31 b Fj(sp)s(eci\014es)k(the)h(blo)s(c)m(k)g(size)g
+-(to)g(b)s(e)e(used)h(for)g(compression.)55 b(It)36 b(should)150
+-2727 y(b)s(e)27 b(a)h(v)-5 b(alue)28 b(b)s(et)m(w)m(een)g(1)g(and)f(9)h
+-(inclusiv)m(e,)i(and)c(the)i(actual)h(blo)s(c)m(k)f(size)h(used)e(is)g
+-(100000)k(x)c(this)h(\014gure.)150 2836 y(9)j(giv)m(es)h(the)e(b)s(est)
+-g(compression)h(but)f(tak)m(es)h(most)g(memory)-8 b(.)150
+-2993 y(P)m(arameter)28 b Fi(verbosity)c Fj(should)h(b)s(e)g(set)i(to)g
+-(a)g(n)m(um)m(b)s(er)e(b)s(et)m(w)m(een)i(0)f(and)g(4)g(inclusiv)m(e.)
+-41 b(0)26 b(is)g(silen)m(t,)j(and)150 3103 y(greater)d(n)m(um)m(b)s
+-(ers)e(giv)m(e)i(increasingly)g(v)m(erb)s(ose)f(monitoring/debugging)h
+-(output.)38 b(If)25 b(the)g(library)f(has)150 3212 y(b)s(een)30
+-b(compiled)h(with)f Fi(-DBZ_NO_STDIO)p Fj(,)d(no)j(suc)m(h)g(output)g
+-(will)h(app)s(ear)f(for)g(an)m(y)g(v)m(erb)s(osit)m(y)i(setting.)150
+-3369 y(P)m(arameter)g Fi(workFactor)c Fj(con)m(trols)k(ho)m(w)f(the)g
+-(compression)g(phase)f(b)s(eha)m(v)m(es)h(when)e(presen)m(ted)i(with)
+-150 3479 y(w)m(orst)38 b(case,)j(highly)c(rep)s(etitiv)m(e,)42
+-b(input)37 b(data.)62 b(If)38 b(compression)g(runs)e(in)m(to)i
+-(di\016culties)h(caused)e(b)m(y)150 3588 y(rep)s(etitiv)m(e)46
+-b(data,)i(the)c(library)f(switc)m(hes)i(from)f(the)g(standard)f
+-(sorting)h(algorithm)h(to)g(a)f(fallbac)m(k)150 3698
+-y(algorithm.)c(The)27 b(fallbac)m(k)g(is)f(slo)m(w)m(er)i(than)d(the)i
+-(standard)e(algorithm)j(b)m(y)e(p)s(erhaps)e(a)i(factor)i(of)e(three,)
+-150 3808 y(but)k(alw)m(a)m(ys)h(b)s(eha)m(v)m(es)g(reasonably)-8
+-b(,)31 b(no)f(matter)i(ho)m(w)e(bad)g(the)g(input.)150
+-3965 y(Lo)m(w)m(er)23 b(v)-5 b(alues)23 b(of)g Fi(workFactor)c
+-Fj(reduce)k(the)g(amoun)m(t)g(of)f(e\013ort)i(the)f(standard)f
+-(algorithm)h(will)g(exp)s(end)150 4074 y(b)s(efore)h(resorting)g(to)h
+-(the)f(fallbac)m(k.)39 b(Y)-8 b(ou)24 b(should)f(set)h(this)g
+-(parameter)g(carefully;)j(to)s(o)d(lo)m(w,)i(and)d(man)m(y)150
+-4184 y(inputs)32 b(will)h(b)s(e)f(handled)g(b)m(y)h(the)g(fallbac)m(k)g
+-(algorithm)h(and)e(so)h(compress)g(rather)g(slo)m(wly)-8
+-b(,)35 b(to)s(o)f(high,)150 4293 y(and)41 b(y)m(our)g(a)m(v)m
+-(erage-to-w)m(orst)46 b(case)d(compression)e(times)h(can)g(b)s(ecome)g
+-(v)m(ery)g(large.)74 b(The)42 b(default)150 4403 y(v)-5
+-b(alue)31 b(of)f(30)h(giv)m(es)h(reasonable)f(b)s(eha)m(viour)f(o)m(v)m
+-(er)i(a)f(wide)f(range)h(of)f(circumstances.)150 4560
+-y(Allo)m(w)m(able)j(v)-5 b(alues)31 b(range)g(from)g(0)g(to)h(250)g
+-(inclusiv)m(e.)44 b(0)31 b(is)g(a)g(sp)s(ecial)h(case,)g(equiv)-5
+-b(alen)m(t)32 b(to)g(using)f(the)150 4669 y(default)f(v)-5
+-b(alue)31 b(of)g(30.)150 4826 y(Note)k(that)e(the)h(compressed)f
+-(output)g(generated)h(is)f(the)h(same)f(regardless)h(of)f(whether)g(or)
+-g(not)h(the)150 4936 y(fallbac)m(k)d(algorithm)h(is)e(used.)150
+-5093 y(Be)f(a)m(w)m(are)g(also)h(that)f(this)f(parameter)i(ma)m(y)f
+-(disapp)s(ear)e(en)m(tirely)j(in)e(future)g(v)m(ersions)i(of)e(the)h
+-(library)-8 b(.)150 5202 y(In)43 b(principle)h(it)g(should)f(b)s(e)g(p)
+-s(ossible)h(to)g(devise)h(a)f(go)s(o)s(d)f(w)m(a)m(y)i(to)f
+-(automatically)i(c)m(ho)s(ose)f(whic)m(h)150 5312 y(algorithm)32
+-b(to)f(use.)40 b(Suc)m(h)30 b(a)g(mec)m(hanism)h(w)m(ould)f(render)g
+-(the)h(parameter)g(obsolete.)p eop
 -%%Page: 15 16
 -15 15 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
--b(with)g Fj(libbzip2)1881 b Fl(15)150 299 y Fj(next_in)p
--Fl(,)33 b(but)g(it)h(will)d(w)m(an)m(t)k(to)g(write)e(data)h(to)h
--Fj(next_out)p Fl(.)49 b(Because)36 b(the)e(output)f(bu\013er)g
--(supplied)150 408 y(b)m(y)e(the)h(user)e(can)i(b)s(e)f(arbitrarily)d
--(small,)j(the)g(\014nishing-up)d(op)s(eration)i(cannot)i(necessarily)e
--(b)s(e)h(done)150 518 y(with)e(a)i(single)e(call)h(of)g
--Fj(BZ2_bzCompress)p Fl(.)150 675 y(Instead,)47 b(the)d(calling)f
--(program)g(passes)h Fj(BZ_FINISH)d Fl(as)j(an)g(action)g(to)h
--Fj(BZ2_bzCompress)p Fl(.)77 b(This)150 784 y(c)m(hanges)30
--b(the)f(stream's)g(state)h(to)f(FINISHING.)g(An)m(y)g(remaining)e
--(input)g(\(ie,)i Fj(next_in[0)f(..)i(avail_)150 894 y(in-1])p
--Fl(\))36 b(is)f(compressed)i(and)f(transferred)g(to)h(the)g(output)g
--(bu\013er.)58 b(T)-8 b(o)38 b(do)e(this,)i Fj(BZ2_bzCompress)150
--1004 y Fl(m)m(ust)h(b)s(e)f(called)g(rep)s(eatedly)h(un)m(til)e(all)h
--(the)h(output)f(has)h(b)s(een)f(consumed.)66 b(A)m(t)40
--b(that)g(p)s(oin)m(t,)g Fj(BZ2_)150 1113 y(bzCompress)h
--Fl(returns)h Fj(BZ_STREAM_END)p Fl(,)i(and)f(the)h(stream's)g(state)h
--(is)d(set)j(bac)m(k)f(to)g(IDLE.)g Fj(BZ2_)150 1223 y(bzCompressEnd)27
--b Fl(should)h(then)i(b)s(e)g(called.)150 1380 y(Just)25
--b(to)i(mak)m(e)g(sure)e(the)i(calling)d(program)i(do)s(es)g(not)g(c)m
--(heat,)i(the)f(library)c(mak)m(es)k(a)f(note)h(of)f Fj(avail_in)150
--1489 y Fl(at)g(the)g(time)f(of)g(the)g(\014rst)g(call)g(to)h
--Fj(BZ2_bzCompress)21 b Fl(whic)m(h)j(has)h Fj(BZ_FINISH)e
--Fl(as)i(an)h(action)f(\(ie,)i(at)f(the)150 1599 y(time)d(the)h(program)
--g(has)f(announced)g(its)h(in)m(ten)m(tion)f(to)h(not)g(supply)e(an)m(y)
--i(more)g(input\).)37 b(By)24 b(comparing)150 1708 y(this)k(v)-5
--b(alue)28 b(with)g(that)h(of)h Fj(avail_in)c Fl(o)m(v)m(er)k(subsequen)
--m(t)f(calls)f(to)h Fj(BZ2_bzCompress)p Fl(,)d(the)j(library)e(can)150
--1818 y(detect)33 b(an)m(y)e(attempts)i(to)f(slip)d(in)h(more)h(data)h
--(to)h(compress.)43 b(An)m(y)31 b(calls)g(for)g(whic)m(h)f(this)g(is)h
--(detected)150 1928 y(will)j(return)h Fj(BZ_SEQUENCE_ERROR)p
--Fl(.)55 b(This)34 b(indicates)i(a)h(programming)e(mistak)m(e)i(whic)m
--(h)e(should)g(b)s(e)150 2037 y(corrected.)150 2194 y(Instead)i(of)g
--(asking)f(to)h(\014nish,)f(the)h(calling)f(program)g(ma)m(y)h(ask)g
--Fj(BZ2_bzCompress)c Fl(to)38 b(tak)m(e)g(all)e(the)150
--2304 y(remaining)j(input,)i(compress)f(it)g(and)g(terminate)h(the)g
--(curren)m(t)f(\(Burro)m(ws-Wheeler\))h(compression)150
--2413 y(blo)s(c)m(k.)e(This)26 b(could)h(b)s(e)g(useful)f(for)h(error)h
--(con)m(trol)g(purp)s(oses.)38 b(The)27 b(mec)m(hanism)g(is)g(analogous)
--h(to)g(that)150 2523 y(for)35 b(\014nishing:)46 b(call)35
--b Fj(BZ2_bzCompress)c Fl(with)i(an)i(action)g(of)g Fj(BZ_FLUSH)p
--Fl(,)g(remo)m(v)m(e)h(output)f(data,)i(and)150 2632 y(p)s(ersist)h
--(with)g(the)i Fj(BZ_FLUSH)e Fl(action)i(un)m(til)e(the)i(v)-5
--b(alue)39 b Fj(BZ_RUN)f Fl(is)h(returned.)68 b(As)39
--b(with)g(\014nishing,)150 2742 y Fj(BZ2_bzCompress)23
--b Fl(detects)28 b(an)m(y)f(attempt)h(to)f(pro)m(vide)f(more)h(input)e
--(data)i(once)g(the)g(\015ush)e(has)i(b)s(egun.)150 2899
--y(Once)j(the)h(\015ush)e(is)g(complete,)i(the)g(stream)f(returns)g(to)h
--(the)f(normal)g(R)m(UNNING)h(state.)150 3056 y(This)f(all)h(sounds)g
--(prett)m(y)h(complex,)h(but)e(isn't)g(really)-8 b(.)45
--b(Here's)33 b(a)f(table)g(whic)m(h)f(sho)m(ws)h(whic)m(h)f(actions)150
--3165 y(are)e(allo)m(w)m(able)f(in)f(eac)m(h)j(state,)g(what)f(action)g
--(will)c(b)s(e)j(tak)m(en,)j(what)d(the)h(next)f(state)i(is,)e(and)g
--(what)h(the)150 3275 y(non-error)h(return)f(v)-5 b(alues)29
--b(are.)41 b(Note)32 b(that)e(y)m(ou)h(can't)g(explicitly)d(ask)i(what)g
--(state)i(the)e(stream)h(is)e(in,)150 3384 y(but)h(nor)g(do)g(y)m(ou)h
--(need)f(to)h({)g(it)e(can)i(b)s(e)f(inferred)e(from)i(the)h(v)-5
--b(alues)29 b(returned)h(b)m(y)g Fj(BZ2_bzCompress)p Fl(.)390
--3535 y(IDLE/)p Fj(any)572 3639 y Fl(Illegal.)60 b(IDLE)30
--b(state)i(only)d(exists)h(after)h Fj(BZ2_bzCompressEnd)26
--b Fl(or)572 3743 y(b)s(efore)k Fj(BZ2_bzCompressInit)p
--Fl(.)572 3847 y(Return)f(v)-5 b(alue)30 b(=)g Fj(BZ_SEQUENCE_ERROR)390
--4054 y Fl(R)m(UNNING/)p Fj(BZ_RUN)572 4158 y Fl(Compress)f(from)h
--Fj(next_in)f Fl(to)i Fj(next_out)d Fl(as)i(m)m(uc)m(h)h(as)f(p)s
--(ossible.)572 4262 y(Next)h(state)h(=)e(R)m(UNNING)572
--4366 y(Return)f(v)-5 b(alue)30 b(=)g Fj(BZ_RUN_OK)390
--4573 y Fl(R)m(UNNING/)p Fj(BZ_FLUSH)572 4677 y Fl(Remem)m(b)s(er)g
--(curren)m(t)g(v)-5 b(alue)30 b(of)g Fj(next_in)p Fl(.)59
--b(Compress)30 b(from)g Fj(next_in)572 4781 y Fl(to)h
--Fj(next_out)d Fl(as)j(m)m(uc)m(h)f(as)h(p)s(ossible,)d(but)i(do)g(not)g
--(accept)i(an)m(y)f(more)f(input.)572 4885 y(Next)h(state)h(=)e
--(FLUSHING)572 4988 y(Return)f(v)-5 b(alue)30 b(=)g Fj(BZ_FLUSH_OK)390
--5196 y Fl(R)m(UNNING/)p Fj(BZ_FINISH)572 5300 y Fl(Remem)m(b)s(er)g
--(curren)m(t)g(v)-5 b(alue)30 b(of)g Fj(next_in)p Fl(.)59
--b(Compress)30 b(from)g Fj(next_in)p eop
+-b(with)g Fi(libbzip2)1881 b Fl(15)150 299 y Fj(P)m(ossible)32
+-b(return)e(v)-5 b(alues:)572 450 y Fi(BZ_CONFIG_ERROR)663
+-554 y Fj(if)30 b(the)h(library)f(has)g(b)s(een)g(mis-compiled)572
+-657 y Fi(BZ_PARAM_ERROR)663 761 y Fj(if)g Fi(strm)f Fj(is)i
+-Fi(NULL)663 865 y Fj(or)f Fi(blockSize)e(<)i Fj(1)h(or)g
+-Fi(blockSize)c(>)k Fj(9)663 969 y(or)f Fi(verbosity)e(<)i
+-Fj(0)h(or)g Fi(verbosity)c(>)k Fj(4)663 1073 y(or)f Fi(workFactor)e(<)i
+-Fj(0)h(or)f Fi(workFactor)e(>)i Fj(250)572 1176 y Fi(BZ_MEM_ERROR)663
+-1280 y Fj(if)g(not)h(enough)f(memory)h(is)f(a)m(v)-5
+-b(ailable)572 1384 y Fi(BZ_OK)663 1488 y Fj(otherwise)150
+-1645 y(Allo)m(w)m(able)32 b(next)f(actions:)572 1796
+-y Fi(BZ2_bzCompress)663 1899 y Fj(if)f Fi(BZ_OK)f Fj(is)h(returned)572
+-2003 y(no)g(sp)s(eci\014c)g(action)i(needed)e(in)g(case)h(of)g(error)
+-150 2255 y Fe(3.3.2)63 b Fd(BZ2_bzCompress)533 2441 y
+-Fi(int)47 b(BZ2_bzCompress)d(\()j(bz_stream)f(*strm,)g(int)h(action)f
+-(\);)150 2598 y Fj(Pro)m(vides)27 b(more)f(input)f(and/or)h(output)g
+-(bu\013er)f(space)h(for)g(the)h(library)-8 b(.)39 b(The)26
+-b(caller)h(main)m(tains)g(input)150 2708 y(and)j(output)g(bu\013ers,)g
+-(and)f(calls)i Fi(BZ2_bzCompress)c Fj(to)k(transfer)f(data)h(b)s(et)m
+-(w)m(een)g(them.)150 2865 y(Before)h(eac)m(h)h(call)g(to)f
+-Fi(BZ2_bzCompress)p Fj(,)d Fi(next_in)h Fj(should)g(p)s(oin)m(t)i(at)h
+-(the)f(data)g(to)h(b)s(e)e(compressed,)150 2974 y(and)40
+-b Fi(avail_in)f Fj(should)h(indicate)i(ho)m(w)f(man)m(y)g(b)m(ytes)h
+-(the)f(library)g(ma)m(y)g(read.)73 b Fi(BZ2_bzCompress)150
+-3084 y Fj(up)s(dates)29 b Fi(next_in)p Fj(,)g Fi(avail_in)f
+-Fj(and)i Fi(total_in)e Fj(to)j(re\015ect)g(the)g(n)m(um)m(b)s(er)e(of)i
+-(b)m(ytes)g(it)g(has)f(read.)150 3241 y(Similarly)-8
+-b(,)30 b Fi(next_out)d Fj(should)h(p)s(oin)m(t)h(to)h(a)f(bu\013er)f
+-(in)h(whic)m(h)g(the)g(compressed)g(data)g(is)g(to)h(b)s(e)e(placed,)
+-150 3350 y(with)k Fi(avail_out)f Fj(indicating)i(ho)m(w)g(m)m(uc)m(h)f
+-(output)h(space)g(is)f(a)m(v)-5 b(ailable.)49 b Fi(BZ2_bzCompress)29
+-b Fj(up)s(dates)150 3460 y Fi(next_out)p Fj(,)f Fi(avail_out)g
+-Fj(and)i Fi(total_out)e Fj(to)j(re\015ect)g(the)g(n)m(um)m(b)s(er)e(of)
+-i(b)m(ytes)g(output.)150 3617 y(Y)-8 b(ou)39 b(ma)m(y)g(pro)m(vide)g
+-(and)f(remo)m(v)m(e)i(as)f(little)i(or)e(as)g(m)m(uc)m(h)f(data)h(as)g
+-(y)m(ou)g(lik)m(e)h(on)f(eac)m(h)g(call)h(of)f Fi(BZ2_)150
+-3726 y(bzCompress)p Fj(.)46 b(In)32 b(the)i(limit,)h(it)e(is)g
+-(acceptable)i(to)f(supply)e(and)g(remo)m(v)m(e)j(data)e(one)g(b)m(yte)h
+-(at)g(a)f(time,)150 3836 y(although)27 b(this)g(w)m(ould)f(b)s(e)g
+-(terribly)i(ine\016cien)m(t.)40 b(Y)-8 b(ou)27 b(should)f(alw)m(a)m(ys)
+-i(ensure)e(that)h(at)g(least)h(one)f(b)m(yte)150 3946
+-y(of)k(output)f(space)g(is)h(a)m(v)-5 b(ailable)32 b(at)f(eac)m(h)g
+-(call.)150 4102 y(A)36 b(second)g(purp)s(ose)f(of)i Fi(BZ2_bzCompress)
+-32 b Fj(is)37 b(to)g(request)g(a)f(c)m(hange)h(of)g(mo)s(de)f(of)g(the)
+-h(compressed)150 4212 y(stream.)150 4369 y(Conceptually)-8
+-b(,)24 b(a)d(compressed)g(stream)g(can)g(b)s(e)f(in)h(one)g(of)g(four)f
+-(states:)38 b(IDLE,)20 b(R)m(UNNING,)i(FLUSH-)150 4478
+-y(ING)34 b(and)d(FINISHING.)k(Before)e(initialisation)i(\()p
+-Fi(BZ2_bzCompressInit)p Fj(\))28 b(and)k(after)i(termination)150
+-4588 y(\()p Fi(BZ2_bzCompressEnd)p Fj(\),)27 b(a)j(stream)h(is)f
+-(regarded)h(as)f(IDLE.)150 4745 y(Up)s(on)j(initialisation)i(\()p
+-Fi(BZ2_bzCompressInit)p Fj(\),)c(the)j(stream)g(is)g(placed)g(in)f(the)
+-h(R)m(UNNING)h(state.)150 4854 y(Subsequen)m(t)k(calls)h(to)h
+-Fi(BZ2_bzCompress)36 b Fj(should)i(pass)i Fi(BZ_RUN)e
+-Fj(as)h(the)h(requested)g(action;)46 b(other)150 4964
+-y(actions)31 b(are)g(illegal)i(and)c(will)i(result)g(in)f
+-Fi(BZ_SEQUENCE_ERROR)p Fj(.)150 5121 y(A)m(t)37 b(some)f(p)s(oin)m(t,)i
+-(the)e(calling)h(program)f(will)h(ha)m(v)m(e)g(pro)m(vided)e(all)i(the)
+-f(input)g(data)g(it)g(w)m(an)m(ts)h(to.)58 b(It)150 5230
+-y(will)30 b(then)f(w)m(an)m(t)h(to)g(\014nish)e(up)g({)i(in)f
+-(e\013ect,)j(asking)d(the)h(library)f(to)h(pro)s(cess)g(an)m(y)f(data)h
+-(it)g(migh)m(t)g(ha)m(v)m(e)150 5340 y(bu\013ered)23
+-b(in)m(ternally)-8 b(.)40 b(In)24 b(this)g(state,)j Fi(BZ2_bzCompress)
+-20 b Fj(will)k(no)g(longer)h(attempt)g(to)g(read)f(data)g(from)p
+-eop
 -%%Page: 16 17
 -16 16 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
--b(with)g Fj(libbzip2)1881 b Fl(16)572 299 y(to)31 b Fj(next_out)d
--Fl(as)j(m)m(uc)m(h)f(as)h(p)s(ossible,)d(but)i(do)g(not)g(accept)i(an)m
--(y)f(more)f(input.)572 403 y(Next)h(state)h(=)e(FINISHING)572
--506 y(Return)f(v)-5 b(alue)30 b(=)g Fj(BZ_FINISH_OK)390
--714 y Fl(FLUSHING/)p Fj(BZ_FLUSH)572 818 y Fl(Compress)f(from)h
--Fj(next_in)f Fl(to)i Fj(next_out)d Fl(as)i(m)m(uc)m(h)h(as)f(p)s
--(ossible,)572 922 y(but)f(do)i(not)f(accept)i(an)m(y)f(more)f(input.)
--572 1025 y(If)g(all)f(the)i(existing)e(input)f(has)i(b)s(een)g(used)g
--(up)f(and)h(all)f(compressed)572 1129 y(output)h(has)g(b)s(een)g(remo)m
--(v)m(ed)663 1233 y(Next)h(state)h(=)e(R)m(UNNING;)i(Return)d(v)-5
--b(alue)30 b(=)g Fj(BZ_RUN_OK)572 1337 y Fl(else)663 1440
--y(Next)h(state)h(=)e(FLUSHING;)h(Return)e(v)-5 b(alue)30
--b(=)g Fj(BZ_FLUSH_OK)390 1648 y Fl(FLUSHING/other)572
--1752 y(Illegal.)572 1856 y(Return)f(v)-5 b(alue)30 b(=)g
--Fj(BZ_SEQUENCE_ERROR)390 2063 y Fl(FINISHING/)p Fj(BZ_FINISH)572
--2167 y Fl(Compress)f(from)h Fj(next_in)f Fl(to)i Fj(next_out)d
--Fl(as)i(m)m(uc)m(h)h(as)f(p)s(ossible,)572 2271 y(but)f(to)j(not)e
--(accept)i(an)m(y)f(more)f(input.)572 2374 y(If)g(all)f(the)i(existing)e
--(input)f(has)i(b)s(een)g(used)g(up)f(and)h(all)f(compressed)572
--2478 y(output)h(has)g(b)s(een)g(remo)m(v)m(ed)663 2582
--y(Next)h(state)h(=)e(IDLE;)g(Return)g(v)-5 b(alue)30
--b(=)g Fj(BZ_STREAM_END)572 2686 y Fl(else)663 2790 y(Next)h(state)h(=)e
--(FINISHING;)g(Return)g(v)-5 b(alue)30 b(=)g Fj(BZ_FINISHING)390
--2997 y Fl(FINISHING/other)572 3101 y(Illegal.)572 3205
--y(Return)f(v)-5 b(alue)30 b(=)g Fj(BZ_SEQUENCE_ERROR)150
--3361 y Fl(That)24 b(still)f(lo)s(oks)g(complicated?)39
--b(W)-8 b(ell,)25 b(fair)f(enough.)38 b(The)24 b(usual)f(sequence)i(of)f
--(calls)g(for)g(compressing)150 3471 y(a)31 b(load)f(of)g(data)h(is:)225
--3628 y Fi(\017)60 b Fl(Get)31 b(started)g(with)e Fj(BZ2_bzCompressInit)
--p Fl(.)225 3774 y Fi(\017)60 b Fl(Sho)m(v)m(el)38 b(data)h(in)e(and)g
--(shlurp)e(out)k(its)e(compressed)h(form)g(using)e(zero)j(or)f(more)h
--(calls)e(of)h Fj(BZ2_)330 3884 y(bzCompress)28 b Fl(with)h(action)h(=)g
--Fj(BZ_RUN)p Fl(.)225 4030 y Fi(\017)60 b Fl(Finish)23
--b(up.)38 b(Rep)s(eatedly)25 b(call)f Fj(BZ2_bzCompress)e
--Fl(with)i(action)h(=)g Fj(BZ_FINISH)p Fl(,)f(cop)m(ying)h(out)h(the)330
--4139 y(compressed)k(output,)g(un)m(til)f Fj(BZ_STREAM_END)e
--Fl(is)i(returned.)225 4285 y Fi(\017)60 b Fl(Close)30
--b(up)f(and)h(go)h(home.)41 b(Call)29 b Fj(BZ2_bzCompressEnd)p
--Fl(.)150 4478 y(If)23 b(the)h(data)h(y)m(ou)f(w)m(an)m(t)h(to)f
--(compress)g(\014ts)f(in)m(to)h(y)m(our)g(input)e(bu\013er)h(all)f(at)j
--(once,)h(y)m(ou)e(can)g(skip)f(the)h(calls)150 4588 y(of)37
--b Fj(BZ2_bzCompress)26 b(\()k(...,)f(BZ_RUN)g(\))36 b
--Fl(and)g(just)g(do)h(the)g Fj(BZ2_bzCompress)26 b(\()k(...,)f
--(BZ_FINISH)150 4698 y(\))h Fl(calls.)150 4854 y(All)36
--b(required)g(memory)h(is)f(allo)s(cated)i(b)m(y)f Fj
--(BZ2_bzCompressInit)p Fl(.)56 b(The)37 b(compression)g(library)e(can)
--150 4964 y(accept)g(an)m(y)f(data)h(at)g(all)d(\(ob)m(viously\).)51
--b(So)34 b(y)m(ou)g(shouldn't)e(get)j(an)m(y)f(error)f(return)g(v)-5
--b(alues)33 b(from)h(the)150 5074 y Fj(BZ2_bzCompress)29
--b Fl(calls.)46 b(If)32 b(y)m(ou)h(do,)g(they)g(will)d(b)s(e)i
--Fj(BZ_SEQUENCE_ERROR)p Fl(,)d(and)j(indicate)f(a)i(bug)f(in)150
--5183 y(y)m(our)e(programming.)150 5340 y(T)-8 b(rivial)28
--b(other)j(p)s(ossible)d(return)h(v)-5 b(alues:)p eop
+-b(with)g Fi(libbzip2)1881 b Fl(16)150 299 y Fi(next_in)p
+-Fj(,)32 b(but)g(it)i(will)f(w)m(an)m(t)h(to)g(write)g(data)f(to)h
+-Fi(next_out)p Fj(.)46 b(Because)34 b(the)f(output)g(bu\013er)f
+-(supplied)150 408 y(b)m(y)d(the)g(user)g(can)g(b)s(e)f(arbitrarily)i
+-(small,)g(the)f(\014nishing-up)f(op)s(eration)h(cannot)h(necessarily)g
+-(b)s(e)e(done)150 518 y(with)i(a)h(single)g(call)g(of)g
+-Fi(BZ2_bzCompress)p Fj(.)150 675 y(Instead,)47 b(the)d(calling)g
+-(program)g(passes)f Fi(BZ_FINISH)e Fj(as)i(an)g(action)i(to)f
+-Fi(BZ2_bzCompress)p Fj(.)76 b(This)150 784 y(c)m(hanges)26
+-b(the)g(stream's)g(state)h(to)f(FINISHING.)h(An)m(y)e(remaining)h
+-(input)e(\(ie,)k Fi(next_in[0)g(..)i(avail_)150 894 y(in-1])p
+-Fj(\))k(is)h(compressed)g(and)f(transferred)h(to)h(the)f(output)g
+-(bu\013er.)54 b(T)-8 b(o)36 b(do)f(this,)i Fi(BZ2_bzCompress)150
+-1004 y Fj(m)m(ust)h(b)s(e)f(called)i(rep)s(eatedly)g(un)m(til)f(all)g
+-(the)h(output)f(has)f(b)s(een)g(consumed.)63 b(A)m(t)38
+-b(that)h(p)s(oin)m(t,)h Fi(BZ2_)150 1113 y(bzCompress)g
+-Fj(returns)i Fi(BZ_STREAM_END)p Fj(,)g(and)f(the)i(stream's)g(state)h
+-(is)e(set)h(bac)m(k)g(to)h(IDLE.)d Fi(BZ2_)150 1223 y(bzCompressEnd)27
+-b Fj(should)i(then)h(b)s(e)g(called.)150 1380 y(Just)g(to)i(mak)m(e)f
+-(sure)f(the)h(calling)g(program)g(do)s(es)f(not)h(c)m(heat,)h(the)f
+-(library)f(mak)m(es)h(a)g(note)g(of)g Fi(avail_)150 1489
+-y(in)i Fj(at)h(the)g(time)h(of)e(the)h(\014rst)g(call)g(to)h
+-Fi(BZ2_bzCompress)30 b Fj(whic)m(h)j(has)g Fi(BZ_FINISH)e
+-Fj(as)j(an)f(action)i(\(ie,)150 1599 y(at)g(the)g(time)h(the)e(program)
+-h(has)f(announced)g(its)h(in)m(ten)m(tion)h(to)g(not)f(supply)e(an)m(y)
+-h(more)h(input\).)53 b(By)150 1708 y(comparing)30 b(this)f(v)-5
+-b(alue)29 b(with)h(that)f(of)h Fi(avail_in)d Fj(o)m(v)m(er)k(subsequen)
+-m(t)d(calls)j(to)f Fi(BZ2_bzCompress)p Fj(,)c(the)150
+-1818 y(library)k(can)f(detect)j(an)m(y)e(attempts)h(to)f(slip)g(in)f
+-(more)h(data)g(to)h(compress.)41 b(An)m(y)29 b(calls)i(for)e(whic)m(h)h
+-(this)150 1928 y(is)h(detected)i(will)f(return)f Fi(BZ_SEQUENCE_ERROR)p
+-Fj(.)39 b(This)31 b(indicates)i(a)e(programming)g(mistak)m(e)i(whic)m
+-(h)150 2037 y(should)c(b)s(e)h(corrected.)150 2194 y(Instead)36
+-b(of)g(asking)h(to)g(\014nish,)f(the)h(calling)g(program)f(ma)m(y)h
+-(ask)f Fi(BZ2_bzCompress)c Fj(to)37 b(tak)m(e)h(all)f(the)150
+-2304 y(remaining)f(input,)g(compress)f(it)h(and)f(terminate)h(the)g
+-(curren)m(t)g(\(Burro)m(ws-Wheeler\))h(compression)150
+-2413 y(blo)s(c)m(k.)j(This)25 b(could)h(b)s(e)g(useful)f(for)h(error)g
+-(con)m(trol)i(purp)s(oses.)38 b(The)26 b(mec)m(hanism)g(is)g(analogous)
+-h(to)f(that)150 2523 y(for)35 b(\014nishing:)48 b(call)35
+-b Fi(BZ2_bzCompress)c Fj(with)k(an)f(action)i(of)f Fi(BZ_FLUSH)p
+-Fj(,)f(remo)m(v)m(e)i(output)f(data,)h(and)150 2632 y(p)s(ersist)i
+-(with)g(the)h Fi(BZ_FLUSH)d Fj(action)k(un)m(til)e(the)h(v)-5
+-b(alue)39 b Fi(BZ_RUN)d Fj(is)j(returned.)64 b(As)38
+-b(with)g(\014nishing,)150 2742 y Fi(BZ2_bzCompress)21
+-b Fj(detects)27 b(an)m(y)f(attempt)g(to)h(pro)m(vide)e(more)h(input)f
+-(data)g(once)i(the)e(\015ush)f(has)h(b)s(egun.)150 2899
+-y(Once)31 b(the)g(\015ush)d(is)j(complete,)h(the)f(stream)f(returns)g
+-(to)i(the)e(normal)h(R)m(UNNING)h(state.)150 3056 y(This)f(all)g
+-(sounds)f(prett)m(y)i(complex,)g(but)f(isn't)g(really)-8
+-b(.)44 b(Here's)32 b(a)f(table)h(whic)m(h)e(sho)m(ws)h(whic)m(h)g
+-(actions)150 3165 y(are)d(allo)m(w)m(able)i(in)e(eac)m(h)h(state,)h
+-(what)d(action)j(will)e(b)s(e)f(tak)m(en,)j(what)d(the)i(next)f(state)h
+-(is,)g(and)e(what)h(the)150 3275 y(non-error)g(return)f(v)-5
+-b(alues)28 b(are.)40 b(Note)30 b(that)e(y)m(ou)g(can't)g(explicitly)i
+-(ask)d(what)h(state)h(the)f(stream)g(is)g(in,)150 3384
+-y(but)h(nor)h(do)f(y)m(ou)h(need)g(to)g({)h(it)f(can)g(b)s(e)f
+-(inferred)g(from)h(the)g(v)-5 b(alues)30 b(returned)f(b)m(y)h
+-Fi(BZ2_bzCompress)p Fj(.)390 3535 y(IDLE/)p Fi(any)572
+-3639 y Fj(Illegal.)63 b(IDLE)29 b(state)j(only)e(exists)h(after)g
+-Fi(BZ2_bzCompressEnd)26 b Fj(or)572 3743 y(b)s(efore)k
+-Fi(BZ2_bzCompressInit)p Fj(.)572 3847 y(Return)g(v)-5
+-b(alue)31 b(=)f Fi(BZ_SEQUENCE_ERROR)390 4054 y Fj(R)m(UNNING/)p
+-Fi(BZ_RUN)572 4158 y Fj(Compress)g(from)g Fi(next_in)e
+-Fj(to)j Fi(next_out)d Fj(as)j(m)m(uc)m(h)f(as)h(p)s(ossible.)572
+-4262 y(Next)g(state)h(=)e(R)m(UNNING)572 4366 y(Return)g(v)-5
+-b(alue)31 b(=)f Fi(BZ_RUN_OK)390 4573 y Fj(R)m(UNNING/)p
+-Fi(BZ_FLUSH)572 4677 y Fj(Remem)m(b)s(er)g(curren)m(t)h(v)-5
+-b(alue)31 b(of)f Fi(next_in)p Fj(.)59 b(Compress)30 b(from)g
+-Fi(next_in)572 4781 y Fj(to)h Fi(next_out)d Fj(as)j(m)m(uc)m(h)f(as)g
+-(p)s(ossible,)g(but)g(do)h(not)f(accept)i(an)m(y)e(more)h(input.)572
+-4885 y(Next)g(state)h(=)e(FLUSHING)572 4988 y(Return)g(v)-5
+-b(alue)31 b(=)f Fi(BZ_FLUSH_OK)390 5196 y Fj(R)m(UNNING/)p
+-Fi(BZ_FINISH)572 5300 y Fj(Remem)m(b)s(er)g(curren)m(t)h(v)-5
+-b(alue)31 b(of)f Fi(next_in)p Fj(.)59 b(Compress)30 b(from)g
+-Fi(next_in)p eop
 -%%Page: 17 18
 -17 17 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
--b(with)g Fj(libbzip2)1881 b Fl(17)572 299 y Fj(BZ_PARAM_ERROR)663
--403 y Fl(if)29 b Fj(strm)g Fl(is)h Fj(NULL)p Fl(,)f(or)i
--Fj(strm->s)d Fl(is)h Fj(NULL)150 652 y Ff(3.3.3)63 b
--Fe(BZ2_bzCompressEnd)390 839 y Fj(int)47 b(BZ2_bzCompressEnd)c(\()k
--(bz_stream)f(*strm)g(\);)150 996 y Fl(Releases)31 b(all)e(memory)h
--(asso)s(ciated)h(with)e(a)i(compression)e(stream.)150
--1153 y(P)m(ossible)g(return)h(v)-5 b(alues:)481 1304
--y Fj(BZ_PARAM_ERROR)117 b Fl(if)30 b Fj(strm)f Fl(is)g
--Fj(NULL)g Fl(or)i Fj(strm->s)d Fl(is)i Fj(NULL)481 1408
--y(BZ_OK)120 b Fl(otherwise)150 1657 y Ff(3.3.4)63 b Fe
--(BZ2_bzDecompressInit)390 1844 y Fj(int)47 b(BZ2_bzDecompressInit)42
+-b(with)g Fi(libbzip2)1881 b Fl(17)572 299 y Fj(to)31
+-b Fi(next_out)d Fj(as)j(m)m(uc)m(h)f(as)g(p)s(ossible,)g(but)g(do)h
+-(not)f(accept)i(an)m(y)e(more)h(input.)572 403 y(Next)g(state)h(=)e
+-(FINISHING)572 506 y(Return)g(v)-5 b(alue)31 b(=)f Fi(BZ_FINISH_OK)390
+-714 y Fj(FLUSHING/)p Fi(BZ_FLUSH)572 818 y Fj(Compress)g(from)g
+-Fi(next_in)e Fj(to)j Fi(next_out)d Fj(as)j(m)m(uc)m(h)f(as)h(p)s
+-(ossible,)572 922 y(but)f(do)g(not)h(accept)g(an)m(y)g(more)g(input.)
+-572 1025 y(If)f(all)h(the)g(existing)g(input)f(has)g(b)s(een)f(used)h
+-(up)f(and)h(all)h(compressed)572 1129 y(output)f(has)g(b)s(een)g(remo)m
+-(v)m(ed)663 1233 y(Next)h(state)h(=)e(R)m(UNNING;)i(Return)e(v)-5
+-b(alue)31 b(=)f Fi(BZ_RUN_OK)572 1337 y Fj(else)663 1440
+-y(Next)h(state)h(=)e(FLUSHING;)g(Return)h(v)-5 b(alue)30
+-b(=)g Fi(BZ_FLUSH_OK)390 1648 y Fj(FLUSHING/other)572
+-1752 y(Illegal.)572 1856 y(Return)g(v)-5 b(alue)31 b(=)f
+-Fi(BZ_SEQUENCE_ERROR)390 2063 y Fj(FINISHING/)p Fi(BZ_FINISH)572
+-2167 y Fj(Compress)g(from)g Fi(next_in)e Fj(to)j Fi(next_out)d
+-Fj(as)j(m)m(uc)m(h)f(as)h(p)s(ossible,)572 2271 y(but)f(to)h(not)g
+-(accept)g(an)m(y)g(more)g(input.)572 2374 y(If)f(all)h(the)g(existing)g
+-(input)f(has)g(b)s(een)f(used)h(up)f(and)h(all)h(compressed)572
+-2478 y(output)f(has)g(b)s(een)g(remo)m(v)m(ed)663 2582
+-y(Next)h(state)h(=)e(IDLE;)f(Return)i(v)-5 b(alue)30
+-b(=)g Fi(BZ_STREAM_END)572 2686 y Fj(else)663 2790 y(Next)h(state)h(=)e
+-(FINISHING;)h(Return)g(v)-5 b(alue)30 b(=)g Fi(BZ_FINISHING)390
+-2997 y Fj(FINISHING/other)572 3101 y(Illegal.)572 3205
+-y(Return)g(v)-5 b(alue)31 b(=)f Fi(BZ_SEQUENCE_ERROR)150
+-3361 y Fj(That)23 b(still)h(lo)s(oks)g(complicated?)39
+-b(W)-8 b(ell,)26 b(fair)d(enough.)39 b(The)23 b(usual)f(sequence)h(of)h
+-(calls)g(for)f(compressing)150 3471 y(a)30 b(load)h(of)g(data)f(is:)225
+-3628 y Fh(\017)60 b Fj(Get)32 b(started)f(with)f Fi(BZ2_bzCompressInit)
+-p Fj(.)225 3774 y Fh(\017)60 b Fj(Sho)m(v)m(el)37 b(data)g(in)f(and)g
+-(shlurp)f(out)i(its)f(compressed)h(form)f(using)g(zero)i(or)e(more)h
+-(calls)h(of)e Fi(BZ2_)330 3884 y(bzCompress)28 b Fj(with)i(action)h(=)f
+-Fi(BZ_RUN)p Fj(.)225 4030 y Fh(\017)60 b Fj(Finish)24
+-b(up.)38 b(Rep)s(eatedly)25 b(call)h Fi(BZ2_bzCompress)21
+-b Fj(with)k(action)h(=)e Fi(BZ_FINISH)p Fj(,)g(cop)m(ying)h(out)h(the)
+-330 4139 y(compressed)k(output,)h(un)m(til)g Fi(BZ_STREAM_END)26
+-b Fj(is)31 b(returned.)225 4285 y Fh(\017)60 b Fj(Close)31
+-b(up)e(and)h(go)h(home.)41 b(Call)30 b Fi(BZ2_bzCompressEnd)p
+-Fj(.)150 4478 y(If)23 b(the)g(data)g(y)m(ou)h(w)m(an)m(t)g(to)f
+-(compress)g(\014ts)g(in)m(to)h(y)m(our)g(input)e(bu\013er)g(all)i(at)f
+-(once,)j(y)m(ou)d(can)g(skip)g(the)g(calls)150 4588 y(of)37
+-b Fi(BZ2_bzCompress)26 b(\()k(...,)f(BZ_RUN)g(\))36 b
+-Fj(and)g(just)g(do)g(the)h Fi(BZ2_bzCompress)26 b(\()k(...,)f
+-(BZ_FINISH)150 4698 y(\))h Fj(calls.)150 4854 y(All)35
+-b(required)g(memory)h(is)f(allo)s(cated)i(b)m(y)e Fi
+-(BZ2_bzCompressInit)p Fj(.)51 b(The)35 b(compression)h(library)f(can)
+-150 4964 y(accept)f(an)m(y)e(data)h(at)g(all)h(\(ob)m(viously\).)48
+-b(So)32 b(y)m(ou)h(shouldn't)f(get)i(an)m(y)f(error)g(return)f(v)-5
+-b(alues)32 b(from)h(the)150 5074 y Fi(BZ2_bzCompress)28
+-b Fj(calls.)48 b(If)32 b(y)m(ou)g(do,)h(they)g(will)g(b)s(e)e
+-Fi(BZ_SEQUENCE_ERROR)p Fj(,)e(and)i(indicate)i(a)g(bug)e(in)150
+-5183 y(y)m(our)g(programming.)150 5340 y(T)-8 b(rivial)32
+-b(other)f(p)s(ossible)f(return)g(v)-5 b(alues:)p eop
+-%%Page: 18 19
+-18 18 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
+-b(with)g Fi(libbzip2)1881 b Fl(18)572 299 y Fi(BZ_PARAM_ERROR)663
+-403 y Fj(if)30 b Fi(strm)f Fj(is)i Fi(NULL)p Fj(,)e(or)i
+-Fi(strm->s)d Fj(is)j Fi(NULL)150 652 y Fe(3.3.3)63 b
+-Fd(BZ2_bzCompressEnd)390 839 y Fi(int)47 b(BZ2_bzCompressEnd)c(\()k
+-(bz_stream)f(*strm)g(\);)150 996 y Fj(Releases)32 b(all)f(memory)f
+-(asso)s(ciated)i(with)e(a)h(compression)f(stream.)150
+-1153 y(P)m(ossible)i(return)e(v)-5 b(alues:)481 1304
+-y Fi(BZ_PARAM_ERROR)117 b Fj(if)31 b Fi(strm)e Fj(is)h
+-Fi(NULL)f Fj(or)i Fi(strm->s)d Fj(is)j Fi(NULL)481 1408
+-y(BZ_OK)120 b Fj(otherwise)150 1657 y Fe(3.3.4)63 b Fd
+-(BZ2_bzDecompressInit)390 1844 y Fi(int)47 b(BZ2_bzDecompressInit)42
 -b(\()48 b(bz_stream)d(*strm,)h(int)h(verbosity,)e(int)i(small)f(\);)150
--2001 y Fl(Prepares)30 b(for)f(decompression.)40 b(As)29
--b(with)g Fj(BZ2_bzCompressInit)p Fl(,)c(a)31 b Fj(bz_stream)c
--Fl(record)j(should)e(b)s(e)150 2110 y(allo)s(cated)c(and)f(initialised)
--e(b)s(efore)i(the)i(call.)38 b(Fields)22 b Fj(bzalloc)p
--Fl(,)i Fj(bzfree)e Fl(and)i Fj(opaque)e Fl(should)g(b)s(e)h(set)i(if)
--150 2220 y(a)h(custom)f(memory)g(allo)s(cator)g(is)g(required,)f(or)h
--(made)h Fj(NULL)e Fl(for)h(the)g(normal)f Fj(malloc)p
--Fl(/)p Fj(free)f Fl(routines.)150 2330 y(Up)s(on)h(return,)h(the)g(in)m
--(ternal)f(state)i(will)c(ha)m(v)m(e)k(b)s(een)f(initialised,)d(and)i
--Fj(total_in)f Fl(and)h Fj(total_out)f Fl(will)150 2439
--y(b)s(e)30 b(zero.)150 2596 y(F)-8 b(or)31 b(the)g(meaning)e(of)i
--(parameter)g Fj(verbosity)p Fl(,)d(see)j Fj(BZ2_bzCompressInit)p
--Fl(.)150 2753 y(If)e Fj(small)e Fl(is)h(nonzero,)i(the)f(library)e
--(will)f(use)j(an)g(alternativ)m(e)h(decompression)e(algorithm)g(whic)m
--(h)f(uses)150 2862 y(less)c(memory)g(but)g(at)h(the)g(cost)h(of)e
--(decompressing)g(more)g(slo)m(wly)g(\(roughly)f(sp)s(eaking,)i(half)f
--(the)h(sp)s(eed,)150 2972 y(but)34 b(the)i(maxim)m(um)d(memory)i
--(requiremen)m(t)g(drops)e(to)j(around)e(2300k\).)57 b(See)35
--b(Chapter)g(2)g(for)g(more)150 3082 y(information)29
--b(on)h(memory)g(managemen)m(t.)150 3238 y(Note)40 b(that)f(the)f(amoun)
--m(t)h(of)g(memory)f(needed)g(to)i(decompress)e(a)h(stream)f(cannot)h(b)
--s(e)f(determined)150 3348 y(un)m(til)j(the)h(stream's)h(header)f(has)g
--(b)s(een)g(read,)j(so)e(ev)m(en)g(if)e Fj(BZ2_bzDecompressInit)c
--Fl(succeeds,)46 b(a)150 3458 y(subsequen)m(t)30 b Fj(BZ2_bzDecompress)c
--Fl(could)j(fail)g(with)g Fj(BZ_MEM_ERROR)p Fl(.)150 3614
--y(P)m(ossible)g(return)h(v)-5 b(alues:)572 3765 y Fj(BZ_CONFIG_ERROR)
--663 3869 y Fl(if)29 b(the)i(library)d(has)i(b)s(een)f(mis-compiled)572
--3973 y Fj(BZ_PARAM_ERROR)663 4077 y Fl(if)g Fj(\(small)46
--b(!=)h(0)h(&&)f(small)f(!=)h(1\))663 4181 y Fl(or)30
--b Fj(\(verbosity)45 b(<)j(0)f(||)g(verbosity)e(>)j(4\))572
--4284 y(BZ_MEM_ERROR)663 4388 y Fl(if)29 b(insu\016cien)m(t)g(memory)h
--(is)f(a)m(v)-5 b(ailable)150 4545 y(Allo)m(w)m(able)30
--b(next)g(actions:)572 4696 y Fj(BZ2_bzDecompress)663
--4800 y Fl(if)f Fj(BZ_OK)g Fl(w)m(as)i(returned)572 4904
--y(no)f(sp)s(eci\014c)f(action)i(required)e(in)g(case)i(of)g(error)150
--5153 y Ff(3.3.5)63 b Fe(BZ2_bzDecompress)390 5340 y Fj(int)47
+-2001 y Fj(Prepares)39 b(for)f(decompression.)65 b(As)38
+-b(with)h Fi(BZ2_bzCompressInit)p Fj(,)c(a)k Fi(bz_stream)d
+-Fj(record)j(should)150 2110 y(b)s(e)30 b(allo)s(cated)j(and)d
+-(initialised)i(b)s(efore)f(the)g(call.)44 b(Fields)31
+-b Fi(bzalloc)p Fj(,)e Fi(bzfree)g Fj(and)h Fi(opaque)g
+-Fj(should)g(b)s(e)150 2220 y(set)35 b(if)f(a)g(custom)h(memory)f(allo)s
+-(cator)i(is)e(required,)h(or)g(made)f Fi(NULL)f Fj(for)h(the)g(normal)g
+-Fi(malloc)p Fj(/)p Fi(free)150 2330 y Fj(routines.)72
+-b(Up)s(on)40 b(return,)j(the)e(in)m(ternal)h(state)g(will)g(ha)m(v)m(e)
+-f(b)s(een)f(initialised,)45 b(and)40 b Fi(total_in)f
+-Fj(and)150 2439 y Fi(total_out)28 b Fj(will)j(b)s(e)e(zero.)150
+-2596 y(F)-8 b(or)31 b(the)g(meaning)f(of)h(parameter)g
+-Fi(verbosity)p Fj(,)d(see)j Fi(BZ2_bzCompressInit)p Fj(.)150
+-2753 y(If)26 b Fi(small)f Fj(is)i(nonzero,)h(the)f(library)f(will)h
+-(use)f(an)g(alternativ)m(e)j(decompression)e(algorithm)g(whic)m(h)f
+-(uses)150 2862 y(less)42 b(memory)h(but)e(at)i(the)f(cost)i(of)e
+-(decompressing)g(more)h(slo)m(wly)g(\(roughly)f(sp)s(eaking,)j(half)d
+-(the)150 2972 y(sp)s(eed,)29 b(but)f(the)h(maxim)m(um)f(memory)i
+-(requiremen)m(t)f(drops)f(to)i(around)e(2300k\).)42 b(See)29
+-b(Chapter)g(2)g(for)150 3082 y(more)i(information)g(on)f(memory)g
+-(managemen)m(t.)150 3238 y(Note)37 b(that)f(the)g(amoun)m(t)g(of)g
+-(memory)g(needed)f(to)h(decompress)g(a)g(stream)g(cannot)g(b)s(e)f
+-(determined)150 3348 y(un)m(til)41 b(the)f(stream's)h(header)f(has)g(b)
+-s(een)f(read,)k(so)e(ev)m(en)g(if)f Fi(BZ2_bzDecompressInit)35
+-b Fj(succeeds,)43 b(a)150 3458 y(subsequen)m(t)30 b Fi
+-(BZ2_bzDecompress)c Fj(could)k(fail)h(with)f Fi(BZ_MEM_ERROR)p
+-Fj(.)150 3614 y(P)m(ossible)i(return)e(v)-5 b(alues:)572
+-3765 y Fi(BZ_CONFIG_ERROR)663 3869 y Fj(if)30 b(the)h(library)f(has)g
+-(b)s(een)g(mis-compiled)572 3973 y Fi(BZ_PARAM_ERROR)663
+-4077 y Fj(if)g Fi(\(small)46 b(!=)h(0)h(&&)f(small)f(!=)h(1\))663
+-4181 y Fj(or)30 b Fi(\(verbosity)45 b(<)j(0)f(||)g(verbosity)f(>)h(4\))
+-572 4284 y(BZ_MEM_ERROR)663 4388 y Fj(if)30 b(insu\016cien)m(t)h
+-(memory)f(is)h(a)m(v)-5 b(ailable)150 4545 y(Allo)m(w)m(able)32
+-b(next)f(actions:)572 4696 y Fi(BZ2_bzDecompress)663
+-4800 y Fj(if)f Fi(BZ_OK)f Fj(w)m(as)h(returned)572 4904
+-y(no)g(sp)s(eci\014c)g(action)i(required)e(in)g(case)h(of)g(error)150
+-5153 y Fe(3.3.5)63 b Fd(BZ2_bzDecompress)390 5340 y Fi(int)47
 -b(BZ2_bzDecompress)c(\()48 b(bz_stream)d(*strm)h(\);)p
 -eop
--%%Page: 18 19
--18 18 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
--b(with)g Fj(libbzip2)1881 b Fl(18)150 299 y(Pro)m(vides)24
--b(more)g(input)f(and/out)h(output)g(bu\013er)g(space)h(for)f(the)g
--(library)-8 b(.)37 b(The)24 b(caller)g(main)m(tains)f(input)150
--408 y(and)30 b(output)g(bu\013ers,)f(and)h(uses)g Fj(BZ2_bzDecompress)c
--Fl(to)31 b(transfer)f(data)h(b)s(et)m(w)m(een)g(them.)150
--565 y(Before)g(eac)m(h)g(call)f(to)g Fj(BZ2_bzDecompress)p
--Fl(,)c Fj(next_in)i Fl(should)h(p)s(oin)m(t)g(at)h(the)h(compressed)e
--(data,)j(and)150 675 y Fj(avail_in)h Fl(should)h(indicate)h(ho)m(w)h
--(man)m(y)f(b)m(ytes)i(the)e(library)f(ma)m(y)i(read.)56
--b Fj(BZ2_bzDecompress)32 b Fl(up-)150 784 y(dates)f Fj(next_in)p
--Fl(,)e Fj(avail_in)f Fl(and)h Fj(total_in)g Fl(to)i(re\015ect)g(the)f
--(n)m(um)m(b)s(er)f(of)i(b)m(ytes)g(it)f(has)g(read.)150
--941 y(Similarly)-8 b(,)37 b Fj(next_out)f Fl(should)g(p)s(oin)m(t)i(to)
--g(a)h(bu\013er)e(in)g(whic)m(h)g(the)i(uncompressed)e(output)g(is)h(to)
--h(b)s(e)150 1051 y(placed,)d(with)e Fj(avail_out)f Fl(indicating)g(ho)m
--(w)i(m)m(uc)m(h)g(output)g(space)h(is)e(a)m(v)-5 b(ailable.)55
--b Fj(BZ2_bzCompress)150 1160 y Fl(up)s(dates)29 b Fj(next_out)p
--Fl(,)g Fj(avail_out)f Fl(and)h Fj(total_out)f Fl(to)j(re\015ect)g(the)g
--(n)m(um)m(b)s(er)e(of)h(b)m(ytes)h(output.)150 1317 y(Y)-8
--b(ou)40 b(ma)m(y)g(pro)m(vide)e(and)h(remo)m(v)m(e)i(as)f(little)e(or)h
--(as)h(m)m(uc)m(h)f(data)h(as)g(y)m(ou)f(lik)m(e)g(on)g(eac)m(h)i(call)e
--(of)g Fj(BZ2_)150 1427 y(bzDecompress)p Fl(.)e(In)27
--b(the)i(limit,)d(it)i(is)f(acceptable)j(to)f(supply)d(and)h(remo)m(v)m
--(e)j(data)f(one)f(b)m(yte)h(at)g(a)g(time,)150 1537 y(although)f(this)f
--(w)m(ould)g(b)s(e)h(terribly)e(ine\016cien)m(t.)39 b(Y)-8
--b(ou)29 b(should)e(alw)m(a)m(ys)h(ensure)g(that)h(at)g(least)g(one)f(b)
--m(yte)150 1646 y(of)j(output)f(space)g(is)g(a)m(v)-5
--b(ailable)30 b(at)h(eac)m(h)g(call.)150 1803 y(Use)g(of)f
--Fj(BZ2_bzDecompress)c Fl(is)k(simpler)e(than)i Fj(BZ2_bzCompress)p
--Fl(.)150 1960 y(Y)-8 b(ou)31 b(should)d(pro)m(vide)h(input)f(and)i
--(remo)m(v)m(e)i(output)d(as)i(describ)s(ed)d(ab)s(o)m(v)m(e,)k(and)d
--(rep)s(eatedly)h(call)f Fj(BZ2_)150 2069 y(bzDecompress)35
--b Fl(un)m(til)i Fj(BZ_STREAM_END)e Fl(is)j(returned.)64
--b(App)s(earance)39 b(of)g Fj(BZ_STREAM_END)c Fl(denotes)150
--2179 y(that)47 b Fj(BZ2_bzDecompress)42 b Fl(has)k(detected)h(the)f
--(logical)g(end)g(of)g(the)h(compressed)e(stream.)89 b
--Fj(BZ2_)150 2289 y(bzDecompress)28 b Fl(will)g(not)j(pro)s(duce)f
--Fj(BZ_STREAM_END)d Fl(un)m(til)j(all)f(output)i(data)h(has)e(b)s(een)h
--(placed)f(in)m(to)150 2398 y(the)36 b(output)g(bu\013er,)h(so)g(once)g
--Fj(BZ_STREAM_END)32 b Fl(app)s(ears,)38 b(y)m(ou)e(are)h(guaran)m(teed)
--g(to)g(ha)m(v)m(e)h(a)m(v)-5 b(ailable)150 2508 y(all)29
--b(the)i(decompressed)f(output,)g(and)g Fj(BZ2_bzDecompressEnd)25
--b Fl(can)31 b(safely)f(b)s(e)f(called.)150 2665 y(If)40
--b(case)h(of)f(an)h(error)e(return)h(v)-5 b(alue,)42 b(y)m(ou)f(should)d
--(call)h Fj(BZ2_bzDecompressEnd)c Fl(to)41 b(clean)f(up)g(and)150
--2774 y(release)31 b(memory)-8 b(.)150 2931 y(P)m(ossible)29
--b(return)h(v)-5 b(alues:)572 3082 y Fj(BZ_PARAM_ERROR)663
--3186 y Fl(if)29 b Fj(strm)g Fl(is)h Fj(NULL)f Fl(or)h
--Fj(strm->s)f Fl(is)g Fj(NULL)663 3290 y Fl(or)h Fj(strm->avail_out)44
--b(<)j(1)572 3393 y(BZ_DATA_ERROR)663 3497 y Fl(if)29
--b(a)i(data)g(in)m(tegrit)m(y)f(error)g(is)g(detected)h(in)e(the)i
--(compressed)f(stream)572 3601 y Fj(BZ_DATA_ERROR_MAGIC)663
--3705 y Fl(if)f(the)i(compressed)f(stream)g(do)s(esn't)h(b)s(egin)e
--(with)g(the)h(righ)m(t)g(magic)h(b)m(ytes)572 3808 y
--Fj(BZ_MEM_ERROR)663 3912 y Fl(if)e(there)i(w)m(asn't)f(enough)h(memory)
--f(a)m(v)-5 b(ailable)572 4016 y Fj(BZ_STREAM_END)663
--4120 y Fl(if)29 b(the)i(logical)e(end)h(of)h(the)f(data)h(stream)g(w)m
--(as)g(detected)g(and)f(all)663 4224 y(output)g(in)f(has)h(b)s(een)g
--(consumed,)f(eg)j Fj(s->avail_out)44 b(>)k(0)572 4327
--y(BZ_OK)663 4431 y Fl(otherwise)150 4588 y(Allo)m(w)m(able)30
--b(next)g(actions:)572 4739 y Fj(BZ2_bzDecompress)663
--4843 y Fl(if)f Fj(BZ_OK)g Fl(w)m(as)i(returned)572 4946
--y Fj(BZ2_bzDecompressEnd)663 5050 y Fl(otherwise)p eop
 -%%Page: 19 20
 -19 19 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
--b(with)g Fj(libbzip2)1881 b Fl(19)150 299 y Ff(3.3.6)63
--b Fe(BZ2_bzDecompressEnd)390 486 y Fj(int)47 b(BZ2_bzDecompressEnd)42
--b(\()48 b(bz_stream)d(*strm)i(\);)150 643 y Fl(Releases)31
--b(all)e(memory)h(asso)s(ciated)h(with)e(a)i(decompression)e(stream.)150
--799 y(P)m(ossible)g(return)h(v)-5 b(alues:)572 950 y
--Fj(BZ_PARAM_ERROR)663 1054 y Fl(if)29 b Fj(strm)g Fl(is)h
--Fj(NULL)f Fl(or)h Fj(strm->s)f Fl(is)g Fj(NULL)572 1158
--y(BZ_OK)663 1262 y Fl(otherwise)150 1419 y(Allo)m(w)m(able)h(next)g
--(actions:)572 1570 y(None.)150 1857 y Fk(3.4)68 b(High-lev)l(el)47
--b(in)l(terface)150 2050 y Fl(This)35 b(in)m(terface)j(pro)m(vides)d
--(functions)h(for)g(reading)g(and)h(writing)e Fj(bzip2)g
--Fl(format)i(\014les.)59 b(First,)39 b(some)150 2159 y(general)30
--b(p)s(oin)m(ts.)225 2316 y Fi(\017)60 b Fl(All)35 b(of)h(the)g
--(functions)e(tak)m(e)k(an)e Fj(int*)f Fl(\014rst)g(argumen)m(t,)j
--Fj(bzerror)p Fl(.)56 b(After)36 b(eac)m(h)h(call,)g Fj(bzerror)330
--2426 y Fl(should)23 b(b)s(e)i(consulted)g(\014rst)g(to)h(determine)e
--(the)i(outcome)h(of)e(the)h(call.)38 b(If)25 b Fj(bzerror)f
--Fl(is)g Fj(BZ_OK)p Fl(,)i(the)330 2535 y(call)35 b(completed)g
--(successfully)-8 b(,)36 b(and)f(only)g(then)g(should)f(the)h(return)g
--(v)-5 b(alue)35 b(of)h(the)f(function)g(\(if)330 2645
--y(an)m(y\))30 b(b)s(e)f(consulted.)39 b(If)29 b Fj(bzerror)e
--Fl(is)h Fj(BZ_IO_ERROR)p Fl(,)f(there)i(w)m(as)h(an)f(error)g
--(reading/writing)e(the)330 2754 y(underlying)32 b(compressed)j(\014le,)
--h(and)f(y)m(ou)h(should)d(then)i(consult)g Fj(errno)p
--Fl(/)p Fj(perror)e Fl(to)j(determine)330 2864 y(the)i(cause)g(of)g(the)
--g(di\016cult)m(y)-8 b(.)61 b Fj(bzerror)36 b Fl(ma)m(y)i(also)g(b)s(e)f
--(set)h(to)g(v)-5 b(arious)37 b(other)h(v)-5 b(alues;)41
--b(precise)330 2974 y(details)29 b(are)i(giv)m(en)g(on)f(a)h(p)s
--(er-function)d(basis)h(b)s(elo)m(w.)225 3111 y Fi(\017)60
--b Fl(If)40 b Fj(bzerror)f Fl(indicates)g(an)i(error)f(\(ie,)j(an)m
--(ything)d(except)h Fj(BZ_OK)f Fl(and)g Fj(BZ_STREAM_END)p
--Fl(\),)g(y)m(ou)330 3220 y(should)56 b(immediately)h(call)g
--Fj(BZ2_bzReadClose)e Fl(\(or)j Fj(BZ2_bzWriteClose)p
--Fl(,)j(dep)s(ending)56 b(on)330 3330 y(whether)50 b(y)m(ou)g(are)h
--(attempting)g(to)g(read)f(or)g(to)i(write\))d(to)j(free)e(up)f(all)h
--(resources)g(asso)s(ci-)330 3439 y(ated)33 b(with)e(the)i(stream.)47
--b(Once)32 b(an)h(error)f(has)g(b)s(een)g(indicated,)f(b)s(eha)m(viour)g
--(of)i(all)e(calls)h(except)330 3549 y Fj(BZ2_bzReadClose)46
--b Fl(\()p Fj(BZ2_bzWriteClose)p Fl(\))h(is)j(unde\014ned.)99
--b(The)50 b(implication)e(is)i(that)h(\(1\))330 3659 y
--Fj(bzerror)44 b Fl(should)g(b)s(e)h(c)m(hec)m(k)m(ed)j(after)e(eac)m(h)
--h(call,)i(and)c(\(2\))i(if)e Fj(bzerror)f Fl(indicates)g(an)i(error,)
--330 3768 y Fj(BZ2_bzReadClose)26 b Fl(\()p Fj(BZ2_bzWriteClose)p
--Fl(\))h(should)h(then)i(b)s(e)g(called)g(to)h(clean)f(up.)225
--3905 y Fi(\017)60 b Fl(The)33 b Fj(FILE*)f Fl(argumen)m(ts)h(passed)g
--(to)h Fj(BZ2_bzReadOpen)p Fl(/)p Fj(BZ2_bzWriteOp)o(en)27
--b Fl(should)32 b(b)s(e)g(set)i(to)330 4015 y(binary)23
--b(mo)s(de.)38 b(Most)26 b(Unix)d(systems)i(will)d(do)i(this)g(b)m(y)g
--(default,)i(but)e(other)g(platforms,)h(including)330
--4124 y(Windo)m(ws)20 b(and)g(Mac,)k(will)19 b(not.)38
--b(If)20 b(y)m(ou)h(omit)g(this,)h(y)m(ou)f(ma)m(y)h(encoun)m(ter)f
--(problems)e(when)h(mo)m(ving)330 4234 y(co)s(de)31 b(to)g(new)f
--(platforms.)225 4371 y Fi(\017)60 b Fl(Memory)23 b(allo)s(cation)f
--(requests)h(are)g(handled)e(b)m(y)i Fj(malloc)p Fl(/)p
--Fj(free)p Fl(.)36 b(A)m(t)23 b(presen)m(t)g(there)g(is)f(no)h(facilit)m
--(y)330 4481 y(for)40 b(user-de\014ned)e(memory)i(allo)s(cators)g(in)f
--(the)h(\014le)g(I/O)g(functions)e(\(could)i(easily)f(b)s(e)g(added,)330
--4590 y(though\).)150 4842 y Ff(3.4.1)63 b Fe(BZ2_bzReadOpen)533
--5029 y Fj(typedef)46 b(void)h(BZFILE;)533 5236 y(BZFILE)f
--(*BZ2_bzReadOpen)e(\()j(int)g(*bzerror,)f(FILE)g(*f,)1726
--5340 y(int)h(small,)f(int)h(verbosity,)p eop
+-b(with)g Fi(libbzip2)1881 b Fl(19)150 299 y Fj(Pro)m(vides)41
+-b(more)g(input)f(and/out)g(output)h(bu\013er)e(space)i(for)f(the)h
+-(library)-8 b(.)71 b(The)41 b(caller)h(main)m(tains)150
+-408 y(input)30 b(and)f(output)h(bu\013ers,)g(and)g(uses)g
+-Fi(BZ2_bzDecompress)25 b Fj(to)32 b(transfer)e(data)h(b)s(et)m(w)m(een)
+-g(them.)150 565 y(Before)45 b(eac)m(h)h(call)f(to)h Fi
+-(BZ2_bzDecompress)p Fj(,)e Fi(next_in)e Fj(should)i(p)s(oin)m(t)h(at)g
+-(the)g(compressed)f(data,)150 675 y(and)33 b Fi(avail_in)e
+-Fj(should)i(indicate)i(ho)m(w)e(man)m(y)h(b)m(ytes)g(the)g(library)g
+-(ma)m(y)g(read.)50 b Fi(BZ2_bzDecompress)150 784 y Fj(up)s(dates)29
+-b Fi(next_in)p Fj(,)g Fi(avail_in)f Fj(and)i Fi(total_in)e
+-Fj(to)j(re\015ect)g(the)g(n)m(um)m(b)s(er)e(of)i(b)m(ytes)g(it)g(has)f
+-(read.)150 941 y(Similarly)-8 b(,)40 b Fi(next_out)34
+-b Fj(should)i(p)s(oin)m(t)h(to)h(a)f(bu\013er)f(in)h(whic)m(h)g(the)g
+-(uncompressed)f(output)h(is)g(to)h(b)s(e)150 1051 y(placed,)f(with)e
+-Fi(avail_out)e Fj(indicating)j(ho)m(w)f(m)m(uc)m(h)h(output)f(space)g
+-(is)h(a)m(v)-5 b(ailable.)57 b Fi(BZ2_bzCompress)150
+-1160 y Fj(up)s(dates)29 b Fi(next_out)p Fj(,)g Fi(avail_out)f
+-Fj(and)h Fi(total_out)f Fj(to)j(re\015ect)h(the)e(n)m(um)m(b)s(er)g(of)
+-g(b)m(ytes)h(output.)150 1317 y(Y)-8 b(ou)39 b(ma)m(y)g(pro)m(vide)g
+-(and)f(remo)m(v)m(e)i(as)f(little)i(or)e(as)g(m)m(uc)m(h)f(data)h(as)g
+-(y)m(ou)g(lik)m(e)h(on)f(eac)m(h)g(call)h(of)f Fi(BZ2_)150
+-1427 y(bzDecompress)p Fj(.)d(In)27 b(the)h(limit,)h(it)f(is)f
+-(acceptable)i(to)f(supply)e(and)g(remo)m(v)m(e)j(data)f(one)g(b)m(yte)g
+-(at)f(a)h(time,)150 1537 y(although)f(this)g(w)m(ould)f(b)s(e)g
+-(terribly)i(ine\016cien)m(t.)40 b(Y)-8 b(ou)27 b(should)f(alw)m(a)m(ys)
+-i(ensure)e(that)h(at)g(least)h(one)f(b)m(yte)150 1646
+-y(of)k(output)f(space)g(is)h(a)m(v)-5 b(ailable)32 b(at)f(eac)m(h)g
+-(call.)150 1803 y(Use)g(of)f Fi(BZ2_bzDecompress)c Fj(is)k(simpler)h
+-(than)f Fi(BZ2_bzCompress)p Fj(.)150 1960 y(Y)-8 b(ou)28
+-b(should)f(pro)m(vide)i(input)f(and)f(remo)m(v)m(e)j(output)e(as)g
+-(describ)s(ed)g(ab)s(o)m(v)m(e,)i(and)d(rep)s(eatedly)i(call)g
+-Fi(BZ2_)150 2069 y(bzDecompress)k Fj(un)m(til)k Fi(BZ_STREAM_END)c
+-Fj(is)k(returned.)59 b(App)s(earance)36 b(of)g Fi(BZ_STREAM_END)d
+-Fj(denotes)150 2179 y(that)45 b Fi(BZ2_bzDecompress)40
+-b Fj(has)45 b(detected)h(the)f(logical)i(end)d(of)g(the)h(compressed)g
+-(stream.)84 b Fi(BZ2_)150 2289 y(bzDecompress)27 b Fj(will)k(not)g(pro)
+-s(duce)e Fi(BZ_STREAM_END)e Fj(un)m(til)k(all)g(output)g(data)f(has)g
+-(b)s(een)g(placed)h(in)m(to)150 2398 y(the)k(output)f(bu\013er,)i(so)e
+-(once)i Fi(BZ_STREAM_END)31 b Fj(app)s(ears,)k(y)m(ou)g(are)g(guaran)m
+-(teed)g(to)h(ha)m(v)m(e)f(a)m(v)-5 b(ailable)150 2508
+-y(all)31 b(the)g(decompressed)f(output,)h(and)e Fi(BZ2_bzDecompressEnd)
+-c Fj(can)31 b(safely)f(b)s(e)g(called.)150 2665 y(If)38
+-b(case)i(of)f(an)f(error)h(return)f(v)-5 b(alue,)42 b(y)m(ou)d(should)e
+-(call)j Fi(BZ2_bzDecompressEnd)33 b Fj(to)40 b(clean)f(up)f(and)150
+-2774 y(release)32 b(memory)-8 b(.)150 2931 y(P)m(ossible)32
+-b(return)e(v)-5 b(alues:)572 3082 y Fi(BZ_PARAM_ERROR)663
+-3186 y Fj(if)30 b Fi(strm)f Fj(is)i Fi(NULL)e Fj(or)i
+-Fi(strm->s)d Fj(is)i Fi(NULL)663 3290 y Fj(or)g Fi(strm->avail_out)44
+-b(<)j(1)572 3393 y(BZ_DATA_ERROR)663 3497 y Fj(if)30
+-b(a)h(data)f(in)m(tegrit)m(y)j(error)e(is)f(detected)i(in)e(the)h
+-(compressed)g(stream)572 3601 y Fi(BZ_DATA_ERROR_MAGIC)663
+-3705 y Fj(if)f(the)h(compressed)f(stream)h(do)s(esn't)f(b)s(egin)g
+-(with)h(the)f(righ)m(t)i(magic)f(b)m(ytes)572 3808 y
+-Fi(BZ_MEM_ERROR)663 3912 y Fj(if)f(there)h(w)m(asn't)g(enough)f(memory)
+-h(a)m(v)-5 b(ailable)572 4016 y Fi(BZ_STREAM_END)663
+-4120 y Fj(if)30 b(the)h(logical)h(end)e(of)h(the)f(data)h(stream)g(w)m
+-(as)f(detected)i(and)e(all)663 4224 y(output)g(in)g(has)g(b)s(een)g
+-(consumed,)g(eg)h Fi(s->avail_out)44 b(>)k(0)572 4327
+-y(BZ_OK)663 4431 y Fj(otherwise)150 4588 y(Allo)m(w)m(able)32
+-b(next)f(actions:)572 4739 y Fi(BZ2_bzDecompress)663
+-4843 y Fj(if)f Fi(BZ_OK)f Fj(w)m(as)h(returned)572 4946
+-y Fi(BZ2_bzDecompressEnd)663 5050 y Fj(otherwise)p eop
 -%%Page: 20 21
--20 20 bop 150 -116 a Fl(Chapter)30 b(3:)h(Programming)e(with)g
--Fj(libbzip2)1891 b Fl(20)1726 299 y Fj(void)47 b(*unused,)f(int)g
--(nUnused)g(\);)150 456 y Fl(Prepare)29 b(to)g(read)g(compressed)f(data)
--i(from)e(\014le)g(handle)f Fj(f)p Fl(.)40 b Fj(f)29 b
--Fl(should)d(refer)j(to)h(a)f(\014le)f(whic)m(h)f(has)i(b)s(een)150
--565 y(op)s(ened)h(for)h(reading,)f(and)h(for)f(whic)m(h)g(the)h(error)g
--(indicator)e(\()p Fj(ferror\(f\))p Fl(\)is)f(not)k(set.)42
--b(If)31 b Fj(small)e Fl(is)h(1,)150 675 y(the)h(library)d(will)f(try)j
--(to)i(decompress)e(using)f(less)g(memory)-8 b(,)31 b(at)g(the)g(exp)s
--(ense)f(of)g(sp)s(eed.)150 832 y(F)-8 b(or)39 b(reasons)f(explained)f
--(b)s(elo)m(w,)j Fj(BZ2_bzRead)35 b Fl(will)h(decompress)i(the)g
--Fj(nUnused)e Fl(b)m(ytes)j(starting)f(at)150 941 y Fj(unused)p
--Fl(,)k(b)s(efore)e(starting)h(to)g(read)g(from)f(the)h(\014le)f
--Fj(f)p Fl(.)71 b(A)m(t)42 b(most)f Fj(BZ_MAX_UNUSED)c
--Fl(b)m(ytes)k(ma)m(y)h(b)s(e)150 1051 y(supplied)32 b(lik)m(e)k(this.)
--55 b(If)36 b(this)e(facilit)m(y)h(is)g(not)h(required,)g(y)m(ou)g
--(should)e(pass)h Fj(NULL)g Fl(and)g Fj(0)g Fl(for)h Fj(unused)150
--1160 y Fl(and)30 b(n)p Fj(Unused)e Fl(resp)s(ectiv)m(ely)-8
--b(.)150 1317 y(F)g(or)31 b(the)g(meaning)e(of)i(parameters)g
--Fj(small)e Fl(and)g Fj(verbosity)p Fl(,)f(see)j Fj
--(BZ2_bzDecompressInit)p Fl(.)150 1474 y(The)k(amoun)m(t)g(of)g(memory)g
--(needed)g(to)g(decompress)g(a)h(\014le)e(cannot)h(b)s(e)g(determined)e
--(un)m(til)h(the)h(\014le's)150 1584 y(header)22 b(has)f(b)s(een)g
--(read.)38 b(So)22 b(it)f(is)g(p)s(ossible)e(that)k Fj(BZ2_bzReadOpen)17
--b Fl(returns)k Fj(BZ_OK)f Fl(but)h(a)i(subsequen)m(t)150
--1693 y(call)30 b(of)g Fj(BZ2_bzRead)e Fl(will)f(return)j
--Fj(BZ_MEM_ERROR)p Fl(.)150 1850 y(P)m(ossible)f(assignmen)m(ts)h(to)h
--Fj(bzerror)p Fl(:)572 2001 y Fj(BZ_CONFIG_ERROR)663 2105
--y Fl(if)e(the)i(library)d(has)i(b)s(een)f(mis-compiled)572
--2209 y Fj(BZ_PARAM_ERROR)663 2313 y Fl(if)g Fj(f)h Fl(is)g
--Fj(NULL)663 2416 y Fl(or)g Fj(small)f Fl(is)g(neither)h
--Fj(0)g Fl(nor)g Fj(1)663 2520 y Fl(or)g Fj(\(unused)46
--b(==)h(NULL)g(&&)g(nUnused)f(!=)h(0\))663 2624 y Fl(or)30
--b Fj(\(unused)46 b(!=)h(NULL)g(&&)g(!\(0)g(<=)g(nUnused)f(<=)h
--(BZ_MAX_UNUSED\)\))572 2728 y(BZ_IO_ERROR)663 2831 y
--Fl(if)29 b Fj(ferror\(f\))f Fl(is)h(nonzero)572 2935
--y Fj(BZ_MEM_ERROR)663 3039 y Fl(if)g(insu\016cien)m(t)g(memory)h(is)f
--(a)m(v)-5 b(ailable)572 3143 y Fj(BZ_OK)663 3247 y Fl(otherwise.)150
--3403 y(P)m(ossible)29 b(return)h(v)-5 b(alues:)572 3554
--y(P)m(oin)m(ter)31 b(to)g(an)f(abstract)h Fj(BZFILE)663
--3658 y Fl(if)e Fj(bzerror)f Fl(is)i Fj(BZ_OK)572 3762
--y(NULL)663 3866 y Fl(otherwise)150 4023 y(Allo)m(w)m(able)g(next)g
--(actions:)572 4174 y Fj(BZ2_bzRead)663 4277 y Fl(if)f
--Fj(bzerror)f Fl(is)i Fj(BZ_OK)572 4381 y(BZ2_bzClose)663
--4485 y Fl(otherwise)150 4887 y Ff(3.4.2)63 b Fe(BZ2_bzRead)533
--5074 y Fj(int)47 b(BZ2_bzRead)e(\()j(int)e(*bzerror,)g(BZFILE)g(*b,)h
--(void)f(*buf,)h(int)g(len)g(\);)150 5230 y Fl(Reads)35
--b(up)f(to)h Fj(len)f Fl(\(uncompressed\))h(b)m(ytes)g(from)f(the)h
--(compressed)g(\014le)f Fj(b)g Fl(in)m(to)h(the)g(bu\013er)f
--Fj(buf)p Fl(.)53 b(If)150 5340 y(the)30 b(read)f(w)m(as)h(successful,)f
--Fj(bzerror)e Fl(is)i(set)h(to)g Fj(BZ_OK)e Fl(and)h(the)h(n)m(um)m(b)s
--(er)e(of)i(b)m(ytes)g(read)f(is)g(returned.)p eop
+-20 20 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
+-b(with)g Fi(libbzip2)1881 b Fl(20)150 299 y Fe(3.3.6)63
+-b Fd(BZ2_bzDecompressEnd)390 486 y Fi(int)47 b(BZ2_bzDecompressEnd)42
+-b(\()48 b(bz_stream)d(*strm)i(\);)150 643 y Fj(Releases)32
+-b(all)f(memory)f(asso)s(ciated)i(with)e(a)h(decompression)f(stream.)150
+-799 y(P)m(ossible)i(return)e(v)-5 b(alues:)572 950 y
+-Fi(BZ_PARAM_ERROR)663 1054 y Fj(if)30 b Fi(strm)f Fj(is)i
+-Fi(NULL)e Fj(or)i Fi(strm->s)d Fj(is)i Fi(NULL)572 1158
+-y(BZ_OK)663 1262 y Fj(otherwise)150 1419 y(Allo)m(w)m(able)i(next)f
+-(actions:)572 1570 y(None.)150 1857 y Fk(3.4)68 b(High-lev)l(el)47
+-b(in)l(terface)150 2050 y Fj(This)35 b(in)m(terface)i(pro)m(vides)e
+-(functions)g(for)g(reading)g(and)f(writing)i Fi(bzip2)d
+-Fj(format)j(\014les.)55 b(First,)37 b(some)150 2159 y(general)31
+-b(p)s(oin)m(ts.)225 2316 y Fh(\017)60 b Fj(All)35 b(of)g(the)h
+-(functions)e(tak)m(e)j(an)d Fi(int*)g Fj(\014rst)h(argumen)m(t,)i
+-Fi(bzerror)p Fj(.)52 b(After)36 b(eac)m(h)f(call,)j Fi(bzerror)330
+-2426 y Fj(should)23 b(b)s(e)f(consulted)i(\014rst)f(to)i(determine)f
+-(the)g(outcome)h(of)e(the)h(call.)40 b(If)23 b Fi(bzerror)e
+-Fj(is)j Fi(BZ_OK)p Fj(,)g(the)330 2535 y(call)35 b(completed)g
+-(successfully)-8 b(,)36 b(and)d(only)i(then)e(should)h(the)g(return)g
+-(v)-5 b(alue)34 b(of)g(the)h(function)f(\(if)330 2645
+-y(an)m(y\))27 b(b)s(e)e(consulted.)40 b(If)26 b Fi(bzerror)f
+-Fj(is)h Fi(BZ_IO_ERROR)p Fj(,)e(there)j(w)m(as)g(an)e(error)i
+-(reading/writing)h(the)330 2754 y(underlying)k(compressed)h(\014le,)h
+-(and)e(y)m(ou)h(should)f(then)h(consult)g Fi(errno)p
+-Fj(/)p Fi(perror)e Fj(to)i(determine)330 2864 y(the)k(cause)f(of)h(the)
+-f(di\016cult)m(y)-8 b(.)60 b Fi(bzerror)34 b Fj(ma)m(y)j(also)g(b)s(e)e
+-(set)i(to)g(v)-5 b(arious)37 b(other)g(v)-5 b(alues;)39
+-b(precise)330 2974 y(details)31 b(are)g(giv)m(en)g(on)g(a)f(p)s
+-(er-function)g(basis)g(b)s(elo)m(w.)225 3111 y Fh(\017)60
+-b Fj(If)39 b Fi(bzerror)e Fj(indicates)i(an)g(error)g(\(ie,)k(an)m
+-(ything)c(except)h Fi(BZ_OK)d Fj(and)i Fi(BZ_STREAM_END)p
+-Fj(\),)f(y)m(ou)330 3220 y(should)56 b(immediately)i(call)g
+-Fi(BZ2_bzReadClose)53 b Fj(\(or)58 b Fi(BZ2_bzWriteClose)p
+-Fj(,)h(dep)s(ending)d(on)330 3330 y(whether)37 b(y)m(ou)h(are)f
+-(attempting)i(to)f(read)f(or)h(to)g(write\))g(to)g(free)g(up)e(all)i
+-(resources)g(asso)s(ciated)330 3439 y(with)44 b(the)g(stream.)83
+-b(Once)44 b(an)g(error)h(has)e(b)s(een)h(indicated,)k(b)s(eha)m(viour)c
+-(of)g(all)h(calls)g(except)330 3549 y Fi(BZ2_bzReadClose)h
+-Fj(\()p Fi(BZ2_bzWriteClose)p Fj(\))h(is)j(unde\014ned.)99
+-b(The)51 b(implication)g(is)g(that)g(\(1\))330 3659 y
+-Fi(bzerror)42 b Fj(should)i(b)s(e)f(c)m(hec)m(k)m(ed)k(after)e(eac)m(h)
+-g(call,)k(and)43 b(\(2\))j(if)e Fi(bzerror)e Fj(indicates)j(an)f
+-(error,)330 3768 y Fi(BZ2_bzReadClose)26 b Fj(\()p Fi(BZ2_bzWriteClose)
+-p Fj(\))h(should)i(then)h(b)s(e)g(called)i(to)f(clean)g(up.)225
+-3905 y Fh(\017)60 b Fj(The)32 b Fi(FILE*)f Fj(argumen)m(ts)i(passed)f
+-(to)h Fi(BZ2_bzReadOpen)p Fj(/)p Fi(BZ2_bzWriteO)o(pen)26
+-b Fj(should)31 b(b)s(e)h(set)h(to)330 4015 y(binary)22
+-b(mo)s(de.)38 b(Most)24 b(Unix)f(systems)g(will)g(do)g(this)g(b)m(y)g
+-(default,)i(but)d(other)i(platforms,)g(including)330
+-4124 y(Windo)m(ws)41 b(and)g(Mac,)46 b(will)c(not.)76
+-b(If)41 b(y)m(ou)i(omit)f(this,)j(y)m(ou)e(ma)m(y)f(encoun)m(ter)h
+-(problems)e(when)330 4234 y(mo)m(ving)31 b(co)s(de)g(to)g(new)f
+-(platforms.)225 4371 y Fh(\017)60 b Fj(Memory)45 b(allo)s(cation)h
+-(requests)f(are)g(handled)e(b)m(y)h Fi(malloc)p Fj(/)p
+-Fi(free)p Fj(.)80 b(A)m(t)45 b(presen)m(t)g(there)g(is)f(no)330
+-4481 y(facilit)m(y)39 b(for)f(user-de\014ned)e(memory)h(allo)s(cators)j
+-(in)d(the)g(\014le)h(I/O)g(functions)f(\(could)g(easily)i(b)s(e)330
+-4590 y(added,)30 b(though\).)150 4842 y Fe(3.4.1)63 b
+-Fd(BZ2_bzReadOpen)533 5029 y Fi(typedef)46 b(void)h(BZFILE;)533
+-5236 y(BZFILE)f(*BZ2_bzReadOpen)e(\()j(int)g(*bzerror,)f(FILE)g(*f,)
+-1726 5340 y(int)h(small,)f(int)h(verbosity,)p eop
 -%%Page: 21 22
--21 21 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
--b(with)g Fj(libbzip2)1881 b Fl(21)150 299 y(If)33 b(the)g(logical)g
--(end-of-stream)h(w)m(as)g(detected,)i Fj(bzerror)31 b
--Fl(will)g(b)s(e)h(set)i(to)g Fj(BZ_STREAM_END)p Fl(,)d(and)i(the)150
--408 y(n)m(um)m(b)s(er)c(of)i(b)m(ytes)f(read)h(is)e(returned.)40
--b(All)29 b(other)h Fj(bzerror)f Fl(v)-5 b(alues)29 b(denote)i(an)g
--(error.)150 565 y Fj(BZ2_bzRead)37 b Fl(will)f(supply)h
--Fj(len)i Fl(b)m(ytes,)j(unless)c(the)i(logical)f(stream)h(end)e(is)h
--(detected)i(or)e(an)g(error)150 675 y(o)s(ccurs.)75 b(Because)43
--b(of)f(this,)i(it)d(is)g(p)s(ossible)e(to)k(detect)g(the)f(stream)g
--(end)f(b)m(y)h(observing)f(when)g(the)150 784 y(n)m(um)m(b)s(er)29
--b(of)h(b)m(ytes)g(returned)f(is)g(less)g(than)h(the)g(n)m(um)m(b)s(er)f
--(requested.)40 b(Nev)m(ertheless,)31 b(this)e(is)g(regarded)150
--894 y(as)38 b(inadvisable;)g(y)m(ou)g(should)d(instead)i(c)m(hec)m(k)i
--Fj(bzerror)d Fl(after)i(ev)m(ery)g(call)e(and)h(w)m(atc)m(h)i(out)f
--(for)f Fj(BZ_)150 1004 y(STREAM_END)p Fl(.)150 1160 y(In)m(ternally)-8
--b(,)47 b Fj(BZ2_bzRead)41 b Fl(copies)j(data)g(from)g(the)g(compressed)
--g(\014le)f(in)f(c)m(h)m(unks)i(of)g(size)g Fj(BZ_MAX_)150
--1270 y(UNUSED)31 b Fl(b)m(ytes)i(b)s(efore)f(decompressing)f(it.)47
--b(If)32 b(the)h(\014le)e(con)m(tains)i(more)g(b)m(ytes)g(than)f
--(strictly)f(needed)150 1380 y(to)48 b(reac)m(h)f(the)g(logical)f
--(end-of-stream,)52 b Fj(BZ2_bzRead)44 b Fl(will)g(almost)j(certainly)f
--(read)h(some)g(of)g(the)150 1489 y(trailing)c(data)j(b)s(efore)e
--(signalling)f Fj(BZ_SEQUENCE_END)p Fl(.)80 b(T)-8 b(o)46
--b(collect)f(the)g(read)g(but)g(un)m(used)e(data)150 1599
--y(once)29 b Fj(BZ_SEQUENCE_END)24 b Fl(has)k(app)s(eared,)g(call)f
--Fj(BZ2_bzReadGetUnused)c Fl(immediately)j(b)s(efore)i
--Fj(BZ2_)150 1708 y(bzReadClose)p Fl(.)150 1865 y(P)m(ossible)h
--(assignmen)m(ts)h(to)h Fj(bzerror)p Fl(:)572 2016 y Fj(BZ_PARAM_ERROR)
--663 2120 y Fl(if)e Fj(b)h Fl(is)g Fj(NULL)f Fl(or)h Fj(buf)g
--Fl(is)f Fj(NULL)g Fl(or)i Fj(len)46 b(<)i(0)572 2224
--y(BZ_SEQUENCE_ERROR)663 2328 y Fl(if)29 b Fj(b)h Fl(w)m(as)h(op)s(ened)
--e(with)h Fj(BZ2_bzWriteOpen)572 2431 y(BZ_IO_ERROR)663
--2535 y Fl(if)f(there)i(is)e(an)h(error)g(reading)g(from)g(the)g
--(compressed)g(\014le)572 2639 y Fj(BZ_UNEXPECTED_EOF)663
--2743 y Fl(if)f(the)i(compressed)f(\014le)f(ended)h(b)s(efore)g(the)g
--(logical)g(end-of-stream)h(w)m(as)g(detected)572 2847
--y Fj(BZ_DATA_ERROR)663 2950 y Fl(if)e(a)i(data)g(in)m(tegrit)m(y)f
--(error)g(w)m(as)h(detected)h(in)d(the)h(compressed)g(stream)572
--3054 y Fj(BZ_DATA_ERROR_MAGIC)663 3158 y Fl(if)f(the)i(stream)f(do)s
--(es)g(not)h(b)s(egin)e(with)g(the)i(requisite)e(header)h(b)m(ytes)h
--(\(ie,)f(is)g(not)663 3262 y(a)g Fj(bzip2)f Fl(data)i(\014le\).)61
--b(This)28 b(is)i(really)f(a)i(sp)s(ecial)e(case)i(of)g
--Fj(BZ_DATA_ERROR)p Fl(.)572 3365 y Fj(BZ_MEM_ERROR)663
--3469 y Fl(if)e(insu\016cien)m(t)g(memory)h(w)m(as)h(a)m(v)-5
--b(ailable)572 3573 y Fj(BZ_STREAM_END)663 3677 y Fl(if)29
--b(the)i(logical)e(end)h(of)h(stream)f(w)m(as)h(detected.)572
--3781 y Fj(BZ_OK)663 3884 y Fl(otherwise.)150 4041 y(P)m(ossible)e
--(return)h(v)-5 b(alues:)572 4192 y(n)m(um)m(b)s(er)29
--b(of)h(b)m(ytes)h(read)663 4296 y(if)e Fj(bzerror)f Fl(is)i
--Fj(BZ_OK)f Fl(or)h Fj(BZ_STREAM_END)572 4400 y Fl(unde\014ned)663
--4503 y(otherwise)150 4660 y(Allo)m(w)m(able)g(next)g(actions:)572
--4811 y(collect)h(data)g(from)f Fj(buf)p Fl(,)f(then)h
--Fj(BZ2_bzRead)e Fl(or)i Fj(BZ2_bzReadClose)663 4915 y
--Fl(if)f Fj(bzerror)f Fl(is)i Fj(BZ_OK)572 5019 y Fl(collect)h(data)g
--(from)f Fj(buf)p Fl(,)f(then)h Fj(BZ2_bzReadClose)d Fl(or)j
--Fj(BZ2_bzReadGetUnused)663 5123 y Fl(if)f Fj(bzerror)f
--Fl(is)i Fj(BZ_SEQUENCE_END)572 5226 y(BZ2_bzReadClose)663
--5330 y Fl(otherwise)p eop
+-21 21 bop 150 -116 a Fl(Chapter)30 b(3:)h(Programming)e(with)g
+-Fi(libbzip2)1891 b Fl(21)1726 299 y Fi(void)47 b(*unused,)f(int)g
+-(nUnused)g(\);)150 456 y Fj(Prepare)27 b(to)g(read)f(compressed)h(data)
+-g(from)f(\014le)g(handle)g Fi(f)p Fj(.)39 b Fi(f)26 b
+-Fj(should)g(refer)g(to)i(a)e(\014le)h(whic)m(h)f(has)g(b)s(een)150
+-565 y(op)s(ened)i(for)g(reading,)i(and)d(for)i(whic)m(h)f(the)h(error)g
+-(indicator)h(\()p Fi(ferror\(f\))p Fj(\)is)c(not)j(set.)41
+-b(If)29 b Fi(small)e Fj(is)h(1,)150 675 y(the)j(library)f(will)h(try)f
+-(to)i(decompress)e(using)g(less)h(memory)-8 b(,)31 b(at)g(the)f(exp)s
+-(ense)g(of)h(sp)s(eed.)150 832 y(F)-8 b(or)37 b(reasons)f(explained)h
+-(b)s(elo)m(w,)h Fi(BZ2_bzRead)33 b Fj(will)k(decompress)f(the)h
+-Fi(nUnused)d Fj(b)m(ytes)j(starting)g(at)150 941 y Fi(unused)p
+-Fj(,)j(b)s(efore)f(starting)h(to)g(read)f(from)g(the)h(\014le)f
+-Fi(f)p Fj(.)67 b(A)m(t)40 b(most)g Fi(BZ_MAX_UNUSED)35
+-b Fj(b)m(ytes)40 b(ma)m(y)g(b)s(e)150 1051 y(supplied)34
+-b(lik)m(e)i(this.)54 b(If)34 b(this)h(facilit)m(y)i(is)e(not)g
+-(required,)h(y)m(ou)f(should)f(pass)g Fi(NULL)f Fj(and)h
+-Fi(0)h Fj(for)g Fi(unused)150 1160 y Fj(and)30 b(n)p
+-Fi(Unused)e Fj(resp)s(ectiv)m(ely)-8 b(.)150 1317 y(F)g(or)31
+-b(the)g(meaning)f(of)h(parameters)g Fi(small)e Fj(and)g
+-Fi(verbosity)p Fj(,)f(see)j Fi(BZ2_bzDecompressInit)p
+-Fj(.)150 1474 y(The)i(amoun)m(t)g(of)f(memory)h(needed)g(to)g
+-(decompress)g(a)g(\014le)g(cannot)g(b)s(e)f(determined)h(un)m(til)g
+-(the)g(\014le's)150 1584 y(header)h(has)f(b)s(een)g(read.)51
+-b(So)33 b(it)i(is)e(p)s(ossible)h(that)g Fi(BZ2_bzReadOpen)c
+-Fj(returns)j Fi(BZ_OK)g Fj(but)g(a)h(subse-)150 1693
+-y(quen)m(t)d(call)g(of)g Fi(BZ2_bzRead)c Fj(will)k(return)f
+-Fi(BZ_MEM_ERROR)p Fj(.)150 1850 y(P)m(ossible)i(assignmen)m(ts)e(to)i
+-Fi(bzerror)p Fj(:)572 2001 y Fi(BZ_CONFIG_ERROR)663 2105
+-y Fj(if)e(the)h(library)f(has)g(b)s(een)g(mis-compiled)572
+-2209 y Fi(BZ_PARAM_ERROR)663 2313 y Fj(if)g Fi(f)g Fj(is)h
+-Fi(NULL)663 2416 y Fj(or)f Fi(small)f Fj(is)i(neither)g
+-Fi(0)f Fj(nor)g Fi(1)663 2520 y Fj(or)g Fi(\(unused)46
+-b(==)h(NULL)g(&&)g(nUnused)f(!=)h(0\))663 2624 y Fj(or)30
+-b Fi(\(unused)46 b(!=)h(NULL)g(&&)g(!\(0)g(<=)g(nUnused)f(<=)h
+-(BZ_MAX_UNUSED\)\))572 2728 y(BZ_IO_ERROR)663 2831 y
+-Fj(if)30 b Fi(ferror\(f\))e Fj(is)i(nonzero)572 2935
+-y Fi(BZ_MEM_ERROR)663 3039 y Fj(if)g(insu\016cien)m(t)h(memory)f(is)h
+-(a)m(v)-5 b(ailable)572 3143 y Fi(BZ_OK)663 3247 y Fj(otherwise.)150
+-3403 y(P)m(ossible)32 b(return)e(v)-5 b(alues:)572 3554
+-y(P)m(oin)m(ter)32 b(to)f(an)f(abstract)i Fi(BZFILE)663
+-3658 y Fj(if)e Fi(bzerror)e Fj(is)j Fi(BZ_OK)572 3762
+-y(NULL)663 3866 y Fj(otherwise)150 4023 y(Allo)m(w)m(able)h(next)f
+-(actions:)572 4174 y Fi(BZ2_bzRead)663 4277 y Fj(if)f
+-Fi(bzerror)e Fj(is)j Fi(BZ_OK)572 4381 y(BZ2_bzClose)663
+-4485 y Fj(otherwise)150 4887 y Fe(3.4.2)63 b Fd(BZ2_bzRead)533
+-5074 y Fi(int)47 b(BZ2_bzRead)e(\()j(int)e(*bzerror,)g(BZFILE)g(*b,)h
+-(void)f(*buf,)h(int)g(len)g(\);)150 5230 y Fj(Reads)33
+-b(up)e(to)j Fi(len)d Fj(\(uncompressed\))i(b)m(ytes)g(from)f(the)h
+-(compressed)g(\014le)g Fi(b)f Fj(in)m(to)i(the)f(bu\013er)f
+-Fi(buf)p Fj(.)46 b(If)150 5340 y(the)28 b(read)f(w)m(as)h(successful,)g
+-Fi(bzerror)d Fj(is)j(set)g(to)g Fi(BZ_OK)f Fj(and)f(the)i(n)m(um)m(b)s
+-(er)e(of)i(b)m(ytes)g(read)g(is)f(returned.)p eop
 -%%Page: 22 23
 -22 22 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
--b(with)g Fj(libbzip2)1881 b Fl(22)150 299 y Ff(3.4.3)63
--b Fe(BZ2_bzReadGetUnused)533 486 y Fj(void)47 b(BZ2_bzReadGetUnused)42
--b(\()48 b(int*)e(bzerror,)g(BZFILE)g(*b,)1822 589 y(void**)g(unused,)g
--(int*)g(nUnused)g(\);)150 746 y Fl(Returns)36 b(data)i(whic)m(h)d(w)m
--(as)j(read)f(from)f(the)h(compressed)g(\014le)f(but)g(w)m(as)h(not)h
--(needed)e(to)i(get)g(to)g(the)150 856 y(logical)k(end-of-stream.)78
--b Fj(*unused)41 b Fl(is)h(set)h(to)g(the)g(address)f(of)g(the)h(data,)k
--(and)42 b Fj(*nUnused)e Fl(to)k(the)150 965 y(n)m(um)m(b)s(er)29
--b(of)i(b)m(ytes.)41 b Fj(*nUnused)28 b Fl(will)g(b)s(e)h(set)i(to)g(a)g
--(v)-5 b(alue)30 b(b)s(et)m(w)m(een)h Fj(0)f Fl(and)g
--Fj(BZ_MAX_UNUSED)d Fl(inclusiv)m(e.)150 1122 y(This)d(function)h(ma)m
--(y)h(only)g(b)s(e)f(called)g(once)i Fj(BZ2_bzRead)c Fl(has)j(signalled)
--e Fj(BZ_STREAM_END)e Fl(but)j(b)s(efore)150 1232 y Fj(BZ2_bzReadClose)p
--Fl(.)150 1389 y(P)m(ossible)k(assignmen)m(ts)h(to)h Fj(bzerror)p
--Fl(:)572 1540 y Fj(BZ_PARAM_ERROR)663 1644 y Fl(if)e
--Fj(b)h Fl(is)g Fj(NULL)663 1747 y Fl(or)g Fj(unused)f
--Fl(is)g Fj(NULL)g Fl(or)i Fj(nUnused)d Fl(is)i Fj(NULL)572
--1851 y(BZ_SEQUENCE_ERROR)663 1955 y Fl(if)f Fj(BZ_STREAM_END)e
--Fl(has)j(not)h(b)s(een)e(signalled)663 2059 y(or)h(if)f
--Fj(b)h Fl(w)m(as)h(op)s(ened)f(with)f Fj(BZ2_bzWriteOpen)542
--2162 y(BZ_OK)663 2266 y Fl(otherwise)150 2423 y(Allo)m(w)m(able)h(next)
--g(actions:)572 2574 y Fj(BZ2_bzReadClose)150 2882 y Ff(3.4.4)63
--b Fe(BZ2_bzReadClose)533 3068 y Fj(void)47 b(BZ2_bzReadClose)c(\()48
--b(int)f(*bzerror,)e(BZFILE)h(*b)h(\);)150 3225 y Fl(Releases)36
--b(all)e(memory)h(p)s(ertaining)e(to)i(the)h(compressed)f(\014le)f
--Fj(b)p Fl(.)54 b Fj(BZ2_bzReadClose)31 b Fl(do)s(es)k(not)h(call)150
--3335 y Fj(fclose)c Fl(on)h(the)h(underlying)d(\014le)h(handle,)h(so)h
--(y)m(ou)g(should)e(do)h(that)h(y)m(ourself)f(if)g(appropriate.)49
--b Fj(BZ2_)150 3445 y(bzReadClose)27 b Fl(should)i(b)s(e)g(called)h(to)h
--(clean)f(up)g(after)h(all)e(error)h(situations.)150 3601
--y(P)m(ossible)f(assignmen)m(ts)h(to)h Fj(bzerror)p Fl(:)572
--3752 y Fj(BZ_SEQUENCE_ERROR)663 3856 y Fl(if)e Fj(b)h
--Fl(w)m(as)h(op)s(ened)e(with)h Fj(BZ2_bzOpenWrite)572
--3960 y(BZ_OK)663 4064 y Fl(otherwise)150 4221 y(Allo)m(w)m(able)g(next)
--g(actions:)572 4372 y(none)150 4679 y Ff(3.4.5)63 b Fe(BZ2_bzWriteOpen)
--533 4866 y Fj(BZFILE)46 b(*BZ2_bzWriteOpen)e(\()j(int)g(*bzerror,)e
--(FILE)i(*f,)1774 4970 y(int)g(blockSize100k,)d(int)j(verbosity,)1774
--5074 y(int)g(workFactor)e(\);)150 5230 y Fl(Prepare)33
--b(to)g(write)f(compressed)h(data)h(to)f(\014le)f(handle)g
--Fj(f)p Fl(.)47 b Fj(f)33 b Fl(should)e(refer)i(to)g(a)g(\014le)f(whic)m
--(h)g(has)h(b)s(een)150 5340 y(op)s(ened)d(for)g(writing,)e(and)i(for)g
--(whic)m(h)f(the)i(error)f(indicator)f(\()p Fj(ferror\(f\))p
--Fl(\)is)f(not)i(set.)p eop
+-b(with)g Fi(libbzip2)1881 b Fl(22)150 299 y Fj(If)32
+-b(the)g(logical)i(end-of-stream)e(w)m(as)g(detected,)i
+-Fi(bzerror)c Fj(will)i(b)s(e)g(set)g(to)h Fi(BZ_STREAM_END)p
+-Fj(,)c(and)i(the)150 408 y(n)m(um)m(b)s(er)e(of)i(b)m(ytes)g(read)f(is)
+-h(returned.)40 b(All)30 b(other)h Fi(bzerror)e Fj(v)-5
+-b(alues)30 b(denote)h(an)f(error.)150 565 y Fi(BZ2_bzRead)k
+-Fj(will)k(supply)e Fi(len)g Fj(b)m(ytes,)k(unless)d(the)g(logical)j
+-(stream)d(end)g(is)g(detected)i(or)f(an)e(error)150 675
+-y(o)s(ccurs.)70 b(Because)40 b(of)g(this,)j(it)e(is)f(p)s(ossible)f(to)
+-i(detect)h(the)e(stream)h(end)e(b)m(y)h(observing)h(when)e(the)150
+-784 y(n)m(um)m(b)s(er)24 b(of)h(b)m(ytes)h(returned)e(is)h(less)h(than)
+-e(the)i(n)m(um)m(b)s(er)e(requested.)39 b(Nev)m(ertheless,)29
+-b(this)c(is)g(regarded)150 894 y(as)37 b(inadvisable;)i(y)m(ou)e
+-(should)f(instead)h(c)m(hec)m(k)h Fi(bzerror)c Fj(after)k(ev)m(ery)f
+-(call)h(and)e(w)m(atc)m(h)h(out)g(for)g Fi(BZ_)150 1004
+-y(STREAM_END)p Fj(.)150 1160 y(In)m(ternally)-8 b(,)47
+-b Fi(BZ2_bzRead)39 b Fj(copies)k(data)f(from)g(the)g(compressed)g
+-(\014le)g(in)g(c)m(h)m(unks)g(of)g(size)h Fi(BZ_MAX_)150
+-1270 y(UNUSED)28 b Fj(b)m(ytes)j(b)s(efore)e(decompressing)h(it.)41
+-b(If)30 b(the)g(\014le)g(con)m(tains)h(more)f(b)m(ytes)h(than)e
+-(strictly)i(needed)150 1380 y(to)46 b(reac)m(h)g(the)f(logical)i
+-(end-of-stream,)j Fi(BZ2_bzRead)42 b Fj(will)j(almost)h(certainly)g
+-(read)f(some)g(of)h(the)150 1489 y(trailing)f(data)g(b)s(efore)f
+-(signalling)h Fi(BZ_SEQUENCE_END)p Fj(.)78 b(T)-8 b(o)45
+-b(collect)i(the)d(read)g(but)g(un)m(used)f(data)150 1599
+-y(once)27 b Fi(BZ_SEQUENCE_END)22 b Fj(has)k(app)s(eared,)g(call)h
+-Fi(BZ2_bzReadGetUnused)21 b Fj(immediately)28 b(b)s(efore)e
+-Fi(BZ2_)150 1708 y(bzReadClose)p Fj(.)150 1865 y(P)m(ossible)32
+-b(assignmen)m(ts)e(to)i Fi(bzerror)p Fj(:)572 2016 y
+-Fi(BZ_PARAM_ERROR)663 2120 y Fj(if)e Fi(b)g Fj(is)h Fi(NULL)e
+-Fj(or)h Fi(buf)g Fj(is)g Fi(NULL)f Fj(or)i Fi(len)47
+-b(<)g(0)572 2224 y(BZ_SEQUENCE_ERROR)663 2328 y Fj(if)30
+-b Fi(b)g Fj(w)m(as)h(op)s(ened)e(with)h Fi(BZ2_bzWriteOpen)572
+-2431 y(BZ_IO_ERROR)663 2535 y Fj(if)g(there)h(is)f(an)g(error)h
+-(reading)g(from)f(the)h(compressed)f(\014le)572 2639
+-y Fi(BZ_UNEXPECTED_EOF)663 2743 y Fj(if)g(the)h(compressed)f(\014le)h
+-(ended)e(b)s(efore)i(the)f(logical)j(end-of-stream)e(w)m(as)g(detected)
+-572 2847 y Fi(BZ_DATA_ERROR)663 2950 y Fj(if)f(a)h(data)f(in)m(tegrit)m
+-(y)j(error)e(w)m(as)g(detected)g(in)g(the)f(compressed)h(stream)572
+-3054 y Fi(BZ_DATA_ERROR_MAGIC)663 3158 y Fj(if)f(the)h(stream)g(do)s
+-(es)f(not)g(b)s(egin)g(with)h(the)f(requisite)i(header)e(b)m(ytes)h
+-(\(ie,)h(is)e(not)663 3262 y(a)g Fi(bzip2)f Fj(data)i(\014le\).)61
+-b(This)30 b(is)h(really)g(a)f(sp)s(ecial)h(case)g(of)g
+-Fi(BZ_DATA_ERROR)p Fj(.)572 3365 y Fi(BZ_MEM_ERROR)663
+-3469 y Fj(if)f(insu\016cien)m(t)h(memory)f(w)m(as)h(a)m(v)-5
+-b(ailable)572 3573 y Fi(BZ_STREAM_END)663 3677 y Fj(if)30
+-b(the)h(logical)h(end)e(of)h(stream)g(w)m(as)f(detected.)572
+-3781 y Fi(BZ_OK)663 3884 y Fj(otherwise.)150 4041 y(P)m(ossible)i
+-(return)e(v)-5 b(alues:)572 4192 y(n)m(um)m(b)s(er)29
+-b(of)i(b)m(ytes)g(read)663 4296 y(if)f Fi(bzerror)e Fj(is)j
+-Fi(BZ_OK)e Fj(or)h Fi(BZ_STREAM_END)572 4400 y Fj(unde\014ned)663
+-4503 y(otherwise)150 4660 y(Allo)m(w)m(able)i(next)f(actions:)572
+-4811 y(collect)i(data)d(from)h Fi(buf)p Fj(,)e(then)i
+-Fi(BZ2_bzRead)c Fj(or)k Fi(BZ2_bzReadClose)663 4915 y
+-Fj(if)f Fi(bzerror)e Fj(is)j Fi(BZ_OK)572 5019 y Fj(collect)i(data)d
+-(from)h Fi(buf)p Fj(,)e(then)i Fi(BZ2_bzReadClose)26
+-b Fj(or)k Fi(BZ2_bzReadGetUnused)663 5123 y Fj(if)g Fi(bzerror)e
+-Fj(is)j Fi(BZ_SEQUENCE_END)572 5226 y(BZ2_bzReadClose)663
+-5330 y Fj(otherwise)p eop
 -%%Page: 23 24
 -23 23 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
--b(with)g Fj(libbzip2)1881 b Fl(23)150 299 y(F)-8 b(or)31
--b(the)g(meaning)e(of)i(parameters)g Fj(blockSize100k)p
--Fl(,)c Fj(verbosity)g Fl(and)j Fj(workFactor)p Fl(,)e(see)150
--408 y Fj(BZ2_bzCompressInit)p Fl(.)150 565 y(All)d(required)f(memory)i
--(is)f(allo)s(cated)i(at)g(this)e(stage,)j(so)f(if)e(the)h(call)g
--(completes)g(successfully)-8 b(,)26 b Fj(BZ_MEM_)150
--675 y(ERROR)j Fl(cannot)i(b)s(e)f(signalled)e(b)m(y)i(a)h(subsequen)m
--(t)f(call)f(to)i Fj(BZ2_bzWrite)p Fl(.)150 832 y(P)m(ossible)e
--(assignmen)m(ts)h(to)h Fj(bzerror)p Fl(:)572 983 y Fj(BZ_CONFIG_ERROR)
--663 1087 y Fl(if)e(the)i(library)d(has)i(b)s(een)f(mis-compiled)572
--1190 y Fj(BZ_PARAM_ERROR)663 1294 y Fl(if)g Fj(f)h Fl(is)g
--Fj(NULL)663 1398 y Fl(or)g Fj(blockSize100k)44 b(<)k(1)30
--b Fl(or)g Fj(blockSize100k)44 b(>)k(9)572 1502 y(BZ_IO_ERROR)663
--1605 y Fl(if)29 b Fj(ferror\(f\))f Fl(is)h(nonzero)572
--1709 y Fj(BZ_MEM_ERROR)663 1813 y Fl(if)g(insu\016cien)m(t)g(memory)h
--(is)f(a)m(v)-5 b(ailable)572 1917 y Fj(BZ_OK)663 2021
--y Fl(otherwise)150 2177 y(P)m(ossible)29 b(return)h(v)-5
--b(alues:)572 2328 y(P)m(oin)m(ter)31 b(to)g(an)f(abstract)h
--Fj(BZFILE)663 2432 y Fl(if)e Fj(bzerror)f Fl(is)i Fj(BZ_OK)572
--2536 y(NULL)663 2640 y Fl(otherwise)150 2797 y(Allo)m(w)m(able)g(next)g
--(actions:)572 2948 y Fj(BZ2_bzWrite)663 3051 y Fl(if)f
--Fj(bzerror)f Fl(is)i Fj(BZ_OK)604 3155 y Fl(\(y)m(ou)25
--b(could)e(go)h(directly)f(to)h Fj(BZ2_bzWriteClose)p
--Fl(,)c(but)j(this)g(w)m(ould)g(b)s(e)g(prett)m(y)h(p)s(oin)m(tless\))
--572 3259 y Fj(BZ2_bzWriteClose)663 3363 y Fl(otherwise)150
--3639 y Ff(3.4.6)63 b Fe(BZ2_bzWrite)533 3826 y Fj(void)47
--b(BZ2_bzWrite)e(\()i(int)g(*bzerror,)e(BZFILE)h(*b,)h(void)g(*buf,)f
--(int)h(len)g(\);)150 3983 y Fl(Absorbs)26 b Fj(len)g
--Fl(b)m(ytes)i(from)e(the)i(bu\013er)e Fj(buf)p Fl(,)h(ev)m(en)m(tually)
--g(to)h(b)s(e)e(compressed)h(and)f(written)g(to)i(the)g(\014le.)150
--4140 y(P)m(ossible)h(assignmen)m(ts)h(to)h Fj(bzerror)p
--Fl(:)572 4291 y Fj(BZ_PARAM_ERROR)663 4395 y Fl(if)e
--Fj(b)h Fl(is)g Fj(NULL)f Fl(or)h Fj(buf)g Fl(is)f Fj(NULL)g
--Fl(or)i Fj(len)46 b(<)i(0)572 4498 y(BZ_SEQUENCE_ERROR)663
--4602 y Fl(if)29 b(b)h(w)m(as)h(op)s(ened)e(with)g Fj(BZ2_bzReadOpen)572
--4706 y(BZ_IO_ERROR)663 4810 y Fl(if)g(there)i(is)e(an)h(error)g
--(writing)f(the)h(compressed)g(\014le.)572 4914 y Fj(BZ_OK)663
--5017 y Fl(otherwise)150 5294 y Ff(3.4.7)63 b Fe(BZ2_bzWriteClose)p
+-b(with)g Fi(libbzip2)1881 b Fl(23)150 299 y Fe(3.4.3)63
+-b Fd(BZ2_bzReadGetUnused)533 486 y Fi(void)47 b(BZ2_bzReadGetUnused)42
+-b(\()48 b(int*)e(bzerror,)g(BZFILE)g(*b,)1822 589 y(void**)g(unused,)g
+-(int*)g(nUnused)g(\);)150 746 y Fj(Returns)35 b(data)g(whic)m(h)f(w)m
+-(as)i(read)e(from)h(the)g(compressed)g(\014le)g(but)g(w)m(as)g(not)g
+-(needed)g(to)h(get)g(to)g(the)150 856 y(logical)44 b(end-of-stream.)76
+-b Fi(*unused)39 b Fj(is)j(set)h(to)f(the)g(address)f(of)h(the)g(data,)k
+-(and)40 b Fi(*nUnused)g Fj(to)j(the)150 965 y(n)m(um)m(b)s(er)28
+-b(of)h(b)m(ytes.)41 b Fi(*nUnused)27 b Fj(will)i(b)s(e)g(set)g(to)h(a)f
+-(v)-5 b(alue)30 b(b)s(et)m(w)m(een)g Fi(0)e Fj(and)g
+-Fi(BZ_MAX_UNUSED)e Fj(inclusiv)m(e.)150 1122 y(This)f(function)g(ma)m
+-(y)h(only)f(b)s(e)g(called)h(once)g Fi(BZ2_bzRead)d Fj(has)i(signalled)
+-h Fi(BZ_STREAM_END)21 b Fj(but)k(b)s(efore)150 1232 y
+-Fi(BZ2_bzReadClose)p Fj(.)150 1389 y(P)m(ossible)32 b(assignmen)m(ts)e
+-(to)i Fi(bzerror)p Fj(:)572 1540 y Fi(BZ_PARAM_ERROR)663
+-1644 y Fj(if)e Fi(b)g Fj(is)h Fi(NULL)663 1747 y Fj(or)f
+-Fi(unused)f Fj(is)h Fi(NULL)g Fj(or)g Fi(nUnused)f Fj(is)h
+-Fi(NULL)572 1851 y(BZ_SEQUENCE_ERROR)663 1955 y Fj(if)g
+-Fi(BZ_STREAM_END)d Fj(has)j(not)g(b)s(een)g(signalled)663
+-2059 y(or)g(if)h Fi(b)f Fj(w)m(as)g(op)s(ened)g(with)g
+-Fi(BZ2_bzWriteOpen)542 2162 y(BZ_OK)663 2266 y Fj(otherwise)150
+-2423 y(Allo)m(w)m(able)i(next)f(actions:)572 2574 y Fi(BZ2_bzReadClose)
+-150 2882 y Fe(3.4.4)63 b Fd(BZ2_bzReadClose)533 3068
+-y Fi(void)47 b(BZ2_bzReadClose)c(\()48 b(int)f(*bzerror,)e(BZFILE)h(*b)
+-h(\);)150 3225 y Fj(Releases)35 b(all)e(memory)h(p)s(ertaining)f(to)h
+-(the)f(compressed)h(\014le)f Fi(b)p Fj(.)49 b Fi(BZ2_bzReadClose)29
+-b Fj(do)s(es)j(not)i(call)150 3335 y Fi(fclose)d Fj(on)h(the)g
+-(underlying)g(\014le)g(handle,)h(so)f(y)m(ou)h(should)e(do)h(that)h(y)m
+-(ourself)g(if)f(appropriate.)47 b Fi(BZ2_)150 3445 y(bzReadClose)27
+-b Fj(should)j(b)s(e)f(called)j(to)f(clean)g(up)e(after)i(all)g(error)g
+-(situations.)150 3601 y(P)m(ossible)h(assignmen)m(ts)e(to)i
+-Fi(bzerror)p Fj(:)572 3752 y Fi(BZ_SEQUENCE_ERROR)663
+-3856 y Fj(if)e Fi(b)g Fj(w)m(as)h(op)s(ened)e(with)h
+-Fi(BZ2_bzOpenWrite)572 3960 y(BZ_OK)663 4064 y Fj(otherwise)150
+-4221 y(Allo)m(w)m(able)i(next)f(actions:)572 4372 y(none)150
+-4679 y Fe(3.4.5)63 b Fd(BZ2_bzWriteOpen)533 4866 y Fi(BZFILE)46
+-b(*BZ2_bzWriteOpen)e(\()j(int)g(*bzerror,)e(FILE)i(*f,)1774
+-4970 y(int)g(blockSize100k,)d(int)j(verbosity,)1774 5074
+-y(int)g(workFactor)e(\);)150 5230 y Fj(Prepare)31 b(to)h(write)g
+-(compressed)f(data)g(to)h(\014le)f(handle)f Fi(f)p Fj(.)42
+-b Fi(f)30 b Fj(should)g(refer)i(to)f(a)h(\014le)f(whic)m(h)f(has)h(b)s
+-(een)150 5340 y(op)s(ened)f(for)g(writing,)h(and)f(for)g(whic)m(h)g
+-(the)h(error)g(indicator)g(\()p Fi(ferror\(f\))p Fj(\)is)e(not)h(set.)p
 -eop
 -%%Page: 24 25
 -24 24 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
--b(with)g Fj(libbzip2)1881 b Fl(24)533 299 y Fj(void)47
--b(BZ2_bzWriteClose)c(\()48 b(int)f(*bzerror,)e(BZFILE*)h(f,)1679
--403 y(int)h(abandon,)1679 506 y(unsigned)e(int*)i(nbytes_in,)1679
--610 y(unsigned)e(int*)i(nbytes_out)e(\);)533 818 y(void)i
--(BZ2_bzWriteClose64)c(\()k(int)g(*bzerror,)e(BZFILE*)h(f,)1774
--922 y(int)h(abandon,)1774 1025 y(unsigned)f(int*)g(nbytes_in_lo32,)1774
--1129 y(unsigned)g(int*)g(nbytes_in_hi32,)1774 1233 y(unsigned)g(int*)g
--(nbytes_out_lo32,)1774 1337 y(unsigned)g(int*)g(nbytes_out_hi32)e(\);)
--150 1493 y Fl(Compresses)39 b(and)g(\015ushes)g(to)h(the)g(compressed)g
--(\014le)f(all)f(data)j(so)f(far)g(supplied)c(b)m(y)k
--Fj(BZ2_bzWrite)p Fl(.)150 1603 y(The)27 b(logical)g(end-of-stream)h
--(mark)m(ers)g(are)g(also)f(written,)h(so)f(subsequen)m(t)g(calls)g(to)h
--Fj(BZ2_bzWrite)d Fl(are)150 1713 y(illegal.)50 b(All)33
--b(memory)h(asso)s(ciated)g(with)f(the)i(compressed)e(\014le)h
--Fj(b)f Fl(is)g(released.)52 b Fj(fflush)33 b Fl(is)g(called)g(on)150
--1822 y(the)e(compressed)f(\014le,)f(but)h(it)g(is)f(not)i
--Fj(fclose)p Fl('d.)150 1979 y(If)i Fj(BZ2_bzWriteClose)c
--Fl(is)k(called)f(to)j(clean)e(up)f(after)i(an)g(error,)g(the)g(only)e
--(action)i(is)f(to)h(release)g(the)150 2089 y(memory)-8
--b(.)42 b(The)30 b(library)e(records)j(the)g(error)f(co)s(des)h(issued)e
--(b)m(y)h(previous)f(calls,)i(so)f(this)g(situation)g(will)150
--2198 y(b)s(e)c(detected)h(automatically)-8 b(.)40 b(There)26
--b(is)g(no)g(attempt)h(to)h(complete)e(the)h(compression)f(op)s
--(eration,)g(nor)150 2308 y(to)32 b Fj(fflush)d Fl(the)i(compressed)g
--(\014le.)42 b(Y)-8 b(ou)32 b(can)f(force)h(this)e(b)s(eha)m(viour)g(to)
--h(happ)s(en)f(ev)m(en)i(in)d(the)j(case)g(of)150 2417
--y(no)e(error,)g(b)m(y)h(passing)e(a)i(nonzero)f(v)-5
--b(alue)30 b(to)h Fj(abandon)p Fl(.)150 2574 y(If)j Fj(nbytes_in)d
--Fl(is)j(non-n)m(ull,)f Fj(*nbytes_in)e Fl(will)h(b)s(e)h(set)i(to)g(b)s
--(e)f(the)g(total)h(v)m(olume)f(of)g(uncompressed)150
--2684 y(data)k(handled.)60 b(Similarly)-8 b(,)35 b Fj(nbytes_out)g
--Fl(will)g(b)s(e)h(set)i(to)g(the)g(total)g(v)m(olume)f(of)g(compressed)
--g(data)150 2793 y(written.)h(F)-8 b(or)27 b(compatibilit)m(y)d(with)h
--(older)g(v)m(ersions)h(of)g(the)g(library)-8 b(,)25 b
--Fj(BZ2_bzWriteClose)d Fl(only)j(yields)150 2903 y(the)40
--b(lo)m(w)m(er)g(32)h(bits)d(of)i(these)h(coun)m(ts.)69
--b(Use)40 b Fj(BZ2_bzWriteClose64)35 b Fl(if)k(y)m(ou)h(w)m(an)m(t)h
--(the)f(full)d(64)k(bit)150 3013 y(coun)m(ts.)g(These)30
--b(t)m(w)m(o)i(functions)d(are)i(otherwise)f(absolutely)f(iden)m(tical.)
--150 3169 y(P)m(ossible)g(assignmen)m(ts)h(to)h Fj(bzerror)p
--Fl(:)572 3320 y Fj(BZ_SEQUENCE_ERROR)663 3424 y Fl(if)e
--Fj(b)h Fl(w)m(as)h(op)s(ened)e(with)h Fj(BZ2_bzReadOpen)572
--3528 y(BZ_IO_ERROR)663 3632 y Fl(if)f(there)i(is)e(an)h(error)g
--(writing)f(the)h(compressed)g(\014le)572 3736 y Fj(BZ_OK)663
--3839 y Fl(otherwise)150 4161 y Ff(3.4.8)63 b(Handling)41
--b(em)m(b)s(edded)g(compressed)h(data)e(streams)150 4354
--y Fl(The)i(high-lev)m(el)g(library)f(facilitates)h(use)h(of)g
--Fj(bzip2)e Fl(data)j(streams)f(whic)m(h)f(form)g(some)i(part)e(of)i(a)
--150 4463 y(surrounding,)27 b(larger)j(data)h(stream.)225
--4620 y Fi(\017)60 b Fl(F)-8 b(or)22 b(writing,)f(the)g(library)e(tak)m
--(es)k(an)e(op)s(en)f(\014le)g(handle,)i(writes)e(compressed)h(data)h
--(to)g(it,)g Fj(fflush)p Fl(es)330 4730 y(it)34 b(but)f(do)s(es)h(not)h
--Fj(fclose)d Fl(it.)52 b(The)34 b(calling)f(application)g(can)h(write)g
--(its)f(o)m(wn)i(data)g(b)s(efore)f(and)330 4839 y(after)d(the)f
--(compressed)h(data)g(stream,)g(using)d(that)j(same)g(\014le)f(handle.)
--225 5011 y Fi(\017)60 b Fl(Reading)34 b(is)f(more)i(complex,)g(and)f
--(the)h(facilities)d(are)j(not)g(as)g(general)f(as)h(they)f(could)g(b)s
--(e)g(since)330 5121 y(generalit)m(y)e(is)f(hard)f(to)j(reconcile)e
--(with)f(e\016ciency)-8 b(.)46 b Fj(BZ2_bzRead)29 b Fl(reads)i(from)g
--(the)h(compressed)330 5230 y(\014le)39 b(in)g(blo)s(c)m(ks)g(of)h(size)
--g Fj(BZ_MAX_UNUSED)c Fl(b)m(ytes,)44 b(and)39 b(in)g(doing)g(so)h
--(probably)e(will)f(o)m(v)m(ersho)s(ot)330 5340 y(the)i(logical)g(end)f
--(of)h(compressed)f(stream.)67 b(T)-8 b(o)40 b(reco)m(v)m(er)g(this)e
--(data)i(once)f(decompression)f(has)p eop
+-b(with)g Fi(libbzip2)1881 b Fl(24)150 299 y Fj(F)-8 b(or)31
+-b(the)g(meaning)f(of)h(parameters)g Fi(blockSize100k)p
+-Fj(,)c Fi(verbosity)h Fj(and)h Fi(workFactor)p Fj(,)f(see)150
+-408 y Fi(BZ2_bzCompressInit)p Fj(.)150 565 y(All)38 b(required)g
+-(memory)g(is)g(allo)s(cated)i(at)e(this)h(stage,)i(so)d(if)g(the)h
+-(call)g(completes)g(successfully)-8 b(,)41 b Fi(BZ_)150
+-675 y(MEM_ERROR)28 b Fj(cannot)j(b)s(e)e(signalled)i(b)m(y)g(a)f
+-(subsequen)m(t)g(call)h(to)h Fi(BZ2_bzWrite)p Fj(.)150
+-832 y(P)m(ossible)g(assignmen)m(ts)e(to)i Fi(bzerror)p
+-Fj(:)572 983 y Fi(BZ_CONFIG_ERROR)663 1087 y Fj(if)e(the)h(library)f
+-(has)g(b)s(een)g(mis-compiled)572 1190 y Fi(BZ_PARAM_ERROR)663
+-1294 y Fj(if)g Fi(f)g Fj(is)h Fi(NULL)663 1398 y Fj(or)f
+-Fi(blockSize100k)45 b(<)i(1)30 b Fj(or)h Fi(blockSize100k)44
+-b(>)j(9)572 1502 y(BZ_IO_ERROR)663 1605 y Fj(if)30 b
+-Fi(ferror\(f\))e Fj(is)i(nonzero)572 1709 y Fi(BZ_MEM_ERROR)663
+-1813 y Fj(if)g(insu\016cien)m(t)h(memory)f(is)h(a)m(v)-5
+-b(ailable)572 1917 y Fi(BZ_OK)663 2021 y Fj(otherwise)150
+-2177 y(P)m(ossible)32 b(return)e(v)-5 b(alues:)572 2328
+-y(P)m(oin)m(ter)32 b(to)f(an)f(abstract)i Fi(BZFILE)663
+-2432 y Fj(if)e Fi(bzerror)e Fj(is)j Fi(BZ_OK)572 2536
+-y(NULL)663 2640 y Fj(otherwise)150 2797 y(Allo)m(w)m(able)h(next)f
+-(actions:)572 2948 y Fi(BZ2_bzWrite)663 3051 y Fj(if)f
+-Fi(bzerror)e Fj(is)j Fi(BZ_OK)597 3155 y Fj(\(y)m(ou)24
+-b(could)f(go)h(directly)g(to)g Fi(BZ2_bzWriteClose)p
+-Fj(,)19 b(but)j(this)h(w)m(ould)g(b)s(e)g(prett)m(y)h(p)s(oin)m
+-(tless\))572 3259 y Fi(BZ2_bzWriteClose)663 3363 y Fj(otherwise)150
+-3852 y Fe(3.4.6)63 b Fd(BZ2_bzWrite)533 4039 y Fi(void)47
+-b(BZ2_bzWrite)e(\()i(int)g(*bzerror,)e(BZFILE)h(*b,)h(void)g(*buf,)f
+-(int)h(len)g(\);)150 4196 y Fj(Absorbs)35 b Fi(len)h
+-Fj(b)m(ytes)h(from)f(the)h(bu\013er)f Fi(buf)p Fj(,)h(ev)m(en)m(tually)
+-i(to)e(b)s(e)f(compressed)g(and)g(written)h(to)h(the)150
+-4306 y(\014le.)150 4463 y(P)m(ossible)32 b(assignmen)m(ts)e(to)i
+-Fi(bzerror)p Fj(:)572 4614 y Fi(BZ_PARAM_ERROR)663 4717
+-y Fj(if)e Fi(b)g Fj(is)h Fi(NULL)e Fj(or)h Fi(buf)g Fj(is)g
+-Fi(NULL)f Fj(or)i Fi(len)47 b(<)g(0)572 4821 y(BZ_SEQUENCE_ERROR)663
+-4925 y Fj(if)30 b(b)g(w)m(as)g(op)s(ened)g(with)g Fi(BZ2_bzReadOpen)572
+-5029 y(BZ_IO_ERROR)663 5132 y Fj(if)g(there)h(is)f(an)g(error)h
+-(writing)g(the)g(compressed)f(\014le.)572 5236 y Fi(BZ_OK)663
+-5340 y Fj(otherwise)p eop
 -%%Page: 25 26
 -25 25 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
--b(with)g Fj(libbzip2)1881 b Fl(25)330 299 y(ended,)28
--b(call)g Fj(BZ2_bzReadGetUnused)23 b Fl(after)29 b(the)g(last)f(call)g
--(of)g Fj(BZ2_bzRead)e Fl(\(the)j(one)g(returning)330
--408 y Fj(BZ_STREAM_END)p Fl(\))e(but)j(b)s(efore)g(calling)f
--Fj(BZ2_bzReadClose)p Fl(.)150 596 y(This)51 b(mec)m(hanism)g(mak)m(es)j
--(it)e(easy)h(to)g(decompress)f(m)m(ultiple)e Fj(bzip2)i
--Fl(streams)g(placed)g(end-to-)150 706 y(end.)90 b(As)48
--b(the)f(end)f(of)i(one)f(stream,)52 b(when)46 b Fj(BZ2_bzRead)f
--Fl(returns)h Fj(BZ_STREAM_END)p Fl(,)i(call)e Fj(BZ2_)150
--816 y(bzReadGetUnused)36 b Fl(to)41 b(collect)g(the)g(un)m(used)e(data)
--i(\(cop)m(y)g(it)f(in)m(to)g(y)m(our)h(o)m(wn)f(bu\013er)f
--(somewhere\).)150 925 y(That)25 b(data)g(forms)f(the)h(start)h(of)e
--(the)h(next)g(compressed)g(stream.)39 b(T)-8 b(o)25 b(start)h
--(uncompressing)c(that)k(next)150 1035 y(stream,)40 b(call)d
--Fj(BZ2_bzReadOpen)d Fl(again,)40 b(feeding)d(in)g(the)h(un)m(used)e
--(data)j(via)e(the)h Fj(unused)p Fl(/)p Fj(nUnused)150
--1144 y Fl(parameters.)54 b(Keep)34 b(doing)g(this)f(un)m(til)g
--Fj(BZ_STREAM_END)e Fl(return)j(coincides)f(with)h(the)g(ph)m(ysical)g
--(end)150 1254 y(of)d(\014le)e(\()p Fj(feof\(f\))p Fl(\).)39
--b(In)30 b(this)f(situation)h Fj(BZ2_bzReadGetUnused)25
--b Fl(will)i(of)k(course)g(return)e(no)h(data.)150 1411
--y(This)c(should)f(giv)m(e)j(some)g(feel)f(for)g(ho)m(w)h(the)g
--(high-lev)m(el)e(in)m(terface)i(can)f(b)s(e)g(used.)39
--b(If)27 b(y)m(ou)h(require)e(extra)150 1520 y(\015exibilit)m(y)-8
--b(,)28 b(y)m(ou'll)i(ha)m(v)m(e)h(to)g(bite)f(the)h(bullet)d(and)i(get)
--i(to)f(grips)e(with)g(the)h(lo)m(w-lev)m(el)h(in)m(terface.)150
--1779 y Ff(3.4.9)63 b(Standard)40 b(\014le-reading/writing)j(co)s(de)150
--1972 y Fl(Here's)31 b(ho)m(w)f(y)m(ou'd)h(write)e(data)j(to)f(a)f
--(compressed)g(\014le:)390 2330 y Fj(FILE*)142 b(f;)390
--2434 y(BZFILE*)46 b(b;)390 2538 y(int)238 b(nBuf;)390
--2642 y(char)190 b(buf[)46 b(/*)i(whatever)d(size)i(you)g(like)f(*/)i
--(];)390 2746 y(int)238 b(bzerror;)390 2849 y(int)g(nWritten;)390
--3057 y(f)47 b(=)h(fopen)e(\()i("myfile.bz2",)c("w")j(\);)390
--3161 y(if)g(\(!f\))g({)533 3264 y(/*)g(handle)f(error)h(*/)390
--3368 y(})390 3472 y(b)g(=)h(BZ2_bzWriteOpen)c(\()j(&bzerror,)e(f,)i(9)h
--(\);)390 3576 y(if)f(\(bzerror)f(!=)h(BZ_OK\))f({)533
--3680 y(BZ2_bzWriteClose)e(\()j(b)g(\);)533 3783 y(/*)g(handle)f(error)h
--(*/)390 3887 y(})390 4095 y(while)f(\()i(/*)f(condition)e(*/)i(\))h({)
--533 4198 y(/*)f(get)g(data)g(to)g(write)f(into)h(buf,)g(and)g(set)g
--(nBuf)f(appropriately)e(*/)533 4302 y(nWritten)i(=)h(BZ2_bzWrite)e(\()i
--(&bzerror,)f(b,)h(buf,)f(nBuf)h(\);)533 4406 y(if)g(\(bzerror)f(==)h
--(BZ_IO_ERROR\))e({)676 4510 y(BZ2_bzWriteClose)f(\()j(&bzerror,)e(b)j
--(\);)676 4614 y(/*)g(handle)e(error)g(*/)533 4717 y(})390
--4821 y(})390 5029 y(BZ2_bzWriteClose)d(\()48 b(&bzerror,)d(b)j(\);)390
--5132 y(if)f(\(bzerror)f(==)h(BZ_IO_ERROR\))d({)533 5236
--y(/*)j(handle)f(error)h(*/)390 5340 y(})p eop
+-b(with)g Fi(libbzip2)1881 b Fl(25)150 299 y Fe(3.4.7)63
+-b Fd(BZ2_bzWriteClose)533 486 y Fi(void)47 b(BZ2_bzWriteClose)c(\()48
+-b(int)f(*bzerror,)e(BZFILE*)h(f,)1679 589 y(int)h(abandon,)1679
+-693 y(unsigned)e(int*)i(nbytes_in,)1679 797 y(unsigned)e(int*)i
+-(nbytes_out)e(\);)533 1005 y(void)i(BZ2_bzWriteClose64)c(\()k(int)g
+-(*bzerror,)e(BZFILE*)h(f,)1774 1108 y(int)h(abandon,)1774
+-1212 y(unsigned)f(int*)g(nbytes_in_lo32,)1774 1316 y(unsigned)g(int*)g
+-(nbytes_in_hi32,)1774 1420 y(unsigned)g(int*)g(nbytes_out_lo32,)1774
+-1523 y(unsigned)g(int*)g(nbytes_out_hi32)e(\);)150 1680
+-y Fj(Compresses)38 b(and)f(\015ushes)g(to)i(the)g(compressed)f(\014le)h
+-(all)f(data)h(so)g(far)f(supplied)f(b)m(y)h Fi(BZ2_bzWrite)p
+-Fj(.)150 1790 y(The)h(logical)i(end-of-stream)e(mark)m(ers)h(are)f
+-(also)g(written,)j(so)d(subsequen)m(t)g(calls)g(to)h
+-Fi(BZ2_bzWrite)150 1899 y Fj(are)31 b(illegal.)45 b(All)31
+-b(memory)g(asso)s(ciated)h(with)f(the)g(compressed)g(\014le)h
+-Fi(b)e Fj(is)h(released.)44 b Fi(fflush)29 b Fj(is)i(called)150
+-2009 y(on)f(the)h(compressed)f(\014le,)h(but)f(it)h(is)f(not)h
+-Fi(fclose)p Fj('d.)150 2166 y(If)g Fi(BZ2_bzWriteClose)d
+-Fj(is)j(called)i(to)f(clean)g(up)f(after)h(an)f(error,)i(the)f(only)g
+-(action)h(is)e(to)i(release)g(the)150 2275 y(memory)-8
+-b(.)40 b(The)28 b(library)g(records)g(the)g(error)g(co)s(des)g(issued)f
+-(b)m(y)g(previous)h(calls,)h(so)f(this)g(situation)h(will)150
+-2385 y(b)s(e)37 b(detected)i(automatically)-8 b(.)64
+-b(There)38 b(is)f(no)h(attempt)g(to)h(complete)g(the)e(compression)h
+-(op)s(eration,)150 2495 y(nor)f(to)h Fi(fflush)e Fj(the)h(compressed)g
+-(\014le.)62 b(Y)-8 b(ou)37 b(can)g(force)h(this)g(b)s(eha)m(viour)e(to)
+-i(happ)s(en)e(ev)m(en)i(in)f(the)150 2604 y(case)31 b(of)g(no)f(error,)
+-h(b)m(y)f(passing)g(a)h(nonzero)g(v)-5 b(alue)30 b(to)i
+-Fi(abandon)p Fj(.)150 2761 y(If)h Fi(nbytes_in)d Fj(is)j(non-n)m(ull,)g
+-Fi(*nbytes_in)d Fj(will)j(b)s(e)f(set)i(to)f(b)s(e)g(the)g(total)h(v)m
+-(olume)g(of)f(uncompressed)150 2871 y(data)k(handled.)58
+-b(Similarly)-8 b(,)38 b Fi(nbytes_out)c Fj(will)j(b)s(e)f(set)h(to)g
+-(the)g(total)h(v)m(olume)g(of)e(compressed)h(data)150
+-2980 y(written.)i(F)-8 b(or)24 b(compatibilit)m(y)i(with)d(older)h(v)m
+-(ersions)g(of)g(the)g(library)-8 b(,)25 b Fi(BZ2_bzWriteClose)19
+-b Fj(only)24 b(yields)150 3090 y(the)39 b(lo)m(w)m(er)i(32)e(bits)g(of)
+-g(these)g(coun)m(ts.)67 b(Use)39 b Fi(BZ2_bzWriteClose64)34
+-b Fj(if)39 b(y)m(ou)g(w)m(an)m(t)g(the)h(full)e(64)i(bit)150
+-3199 y(coun)m(ts.)h(These)31 b(t)m(w)m(o)h(functions)e(are)h(otherwise)
+-g(absolutely)g(iden)m(tical.)150 3356 y(P)m(ossible)h(assignmen)m(ts)e
+-(to)i Fi(bzerror)p Fj(:)572 3507 y Fi(BZ_SEQUENCE_ERROR)663
+-3611 y Fj(if)e Fi(b)g Fj(w)m(as)h(op)s(ened)e(with)h
+-Fi(BZ2_bzReadOpen)572 3715 y(BZ_IO_ERROR)663 3819 y Fj(if)g(there)h(is)
+-f(an)g(error)h(writing)g(the)g(compressed)f(\014le)572
+-3922 y Fi(BZ_OK)663 4026 y Fj(otherwise)150 4296 y Fe(3.4.8)63
+-b(Handling)41 b(em)m(b)s(edded)g(compressed)h(data)e(streams)150
+-4489 y Fj(The)i(high-lev)m(el)h(library)e(facilitates)k(use)c(of)h
+-Fi(bzip2)e Fj(data)i(streams)g(whic)m(h)f(form)g(some)h(part)g(of)g(a)
+-150 4598 y(surrounding,)29 b(larger)i(data)g(stream.)225
+-4755 y Fh(\017)60 b Fj(F)-8 b(or)49 b(writing,)k(the)c(library)f(tak)m
+-(es)i(an)e(op)s(en)f(\014le)i(handle,)j(writes)d(compressed)f(data)h
+-(to)g(it,)330 4865 y Fi(fflush)p Fj(es)37 b(it)h(but)f(do)s(es)h(not)g
+-Fi(fclose)f Fj(it.)64 b(The)38 b(calling)h(application)g(can)f(write)g
+-(its)h(o)m(wn)f(data)330 4974 y(b)s(efore)30 b(and)g(after)h(the)g
+-(compressed)f(data)h(stream,)g(using)f(that)h(same)f(\014le)h(handle.)
+-225 5121 y Fh(\017)60 b Fj(Reading)33 b(is)g(more)g(complex,)h(and)e
+-(the)h(facilities)i(are)e(not)g(as)g(general)h(as)f(they)g(could)f(b)s
+-(e)h(since)330 5230 y(generalit)m(y)e(is)d(hard)g(to)h(reconcile)i
+-(with)d(e\016ciency)-8 b(.)42 b Fi(BZ2_bzRead)25 b Fj(reads)k(from)f
+-(the)h(compressed)330 5340 y(\014le)39 b(in)g(blo)s(c)m(ks)g(of)h(size)
+-f Fi(BZ_MAX_UNUSED)d Fj(b)m(ytes,)42 b(and)c(in)h(doing)g(so)g
+-(probably)g(will)g(o)m(v)m(ersho)s(ot)p eop
 -%%Page: 26 27
 -26 26 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
--b(with)g Fj(libbzip2)1881 b Fl(26)150 299 y(And)29 b(to)j(read)e(from)g
--(a)h(compressed)f(\014le:)390 450 y Fj(FILE*)142 b(f;)390
--554 y(BZFILE*)46 b(b;)390 657 y(int)238 b(nBuf;)390 761
--y(char)190 b(buf[)46 b(/*)i(whatever)d(size)i(you)g(like)f(*/)i(];)390
--865 y(int)238 b(bzerror;)390 969 y(int)g(nWritten;)390
--1176 y(f)47 b(=)h(fopen)e(\()i("myfile.bz2",)c("r")j(\);)390
--1280 y(if)g(\(!f\))g({)533 1384 y(/*)g(handle)f(error)h(*/)390
--1488 y(})390 1591 y(b)g(=)h(BZ2_bzReadOpen)c(\()j(&bzerror,)f(f,)h(0,)g
--(NULL,)f(0)i(\);)390 1695 y(if)f(\(bzerror)f(!=)h(BZ_OK\))f({)533
--1799 y(BZ2_bzReadClose)e(\()j(&bzerror,)f(b)h(\);)533
--1903 y(/*)g(handle)f(error)h(*/)390 2007 y(})390 2214
--y(bzerror)f(=)h(BZ_OK;)390 2318 y(while)f(\(bzerror)g(==)h(BZ_OK)f(&&)i
--(/*)f(arbitrary)e(other)h(conditions)f(*/\))i({)533 2422
--y(nBuf)g(=)g(BZ2_bzRead)e(\()j(&bzerror,)d(b,)i(buf,)g(/*)g(size)g(of)g
--(buf)g(*/)g(\);)533 2525 y(if)g(\(bzerror)f(==)h(BZ_OK\))f({)676
--2629 y(/*)i(do)f(something)e(with)i(buf[0)f(..)h(nBuf-1])f(*/)533
--2733 y(})390 2837 y(})390 2941 y(if)h(\(bzerror)f(!=)h(BZ_STREAM_END\))
--d({)533 3044 y(BZ2_bzReadClose)g(\()j(&bzerror,)f(b)h(\);)533
--3148 y(/*)g(handle)f(error)h(*/)390 3252 y(})g(else)g({)533
--3356 y(BZ2_bzReadClose)d(\()j(&bzerror)f(\);)390 3459
--y(})150 3753 y Fk(3.5)68 b(Utilit)l(y)47 b(functions)150
--4045 y Ff(3.5.1)63 b Fe(BZ2_bzBuffToBuffCompress)533
--4232 y Fj(int)47 b(BZ2_bzBuffToBuffCompress\()41 b(char*)428
--b(dest,)1965 4335 y(unsigned)46 b(int*)g(destLen,)1965
--4439 y(char*)428 b(source,)1965 4543 y(unsigned)46 b(int)94
--b(sourceLen,)1965 4647 y(int)524 b(blockSize100k,)1965
--4751 y(int)g(verbosity,)1965 4854 y(int)g(workFactor)45
--b(\);)150 5011 y Fl(A)m(ttempts)33 b(to)g(compress)f(the)g(data)h(in)e
--Fj(source[0)d(..)i(sourceLen-1])e Fl(in)m(to)k(the)h(destination)e
--(bu\013er,)150 5121 y Fj(dest[0)e(..)g(*destLen-1])p
--Fl(.)37 b(If)26 b(the)g(destination)g(bu\013er)f(is)h(big)f(enough,)j
--Fj(*destLen)c Fl(is)h(set)i(to)g(the)g(size)150 5230
--y(of)i(the)f(compressed)h(data,)g(and)f Fj(BZ_OK)f Fl(is)h(returned.)39
--b(If)28 b(the)h(compressed)f(data)h(w)m(on't)g(\014t,)g
--Fj(*destLen)150 5340 y Fl(is)g(unc)m(hanged,)i(and)e
--Fj(BZ_OUTBUFF_FULL)e Fl(is)i(returned.)p eop
+-b(with)g Fi(libbzip2)1881 b Fl(26)330 299 y Fj(the)37
+-b(logical)i(end)e(of)g(compressed)g(stream.)60 b(T)-8
+-b(o)38 b(reco)m(v)m(er)i(this)c(data)i(once)f(decompression)g(has)330
+-408 y(ended,)27 b(call)h Fi(BZ2_bzReadGetUnused)21 b
+-Fj(after)27 b(the)g(last)h(call)f(of)g Fi(BZ2_bzRead)d
+-Fj(\(the)j(one)g(returning)330 518 y Fi(BZ_STREAM_END)p
+-Fj(\))g(but)j(b)s(efore)g(calling)i Fi(BZ2_bzReadClose)p
+-Fj(.)150 702 y(This)j(mec)m(hanism)h(mak)m(es)g(it)h(easy)f(to)g
+-(decompress)g(m)m(ultiple)g Fi(bzip2)e Fj(streams)i(placed)g
+-(end-to-end.)150 812 y(As)67 b(the)h(end)g(of)f(one)i(stream,)77
+-b(when)67 b Fi(BZ2_bzRead)e Fj(returns)j Fi(BZ_STREAM_END)p
+-Fj(,)73 b(call)c Fi(BZ2_)150 921 y(bzReadGetUnused)34
+-b Fj(to)40 b(collect)h(the)e(un)m(used)e(data)i(\(cop)m(y)g(it)g(in)m
+-(to)h(y)m(our)f(o)m(wn)f(bu\013er)g(somewhere\).)150
+-1031 y(That)52 b(data)h(forms)f(the)g(start)h(of)f(the)h(next)f
+-(compressed)g(stream.)107 b(T)-8 b(o)53 b(start)g(uncompressing)150
+-1140 y(that)61 b(next)f(stream,)68 b(call)62 b Fi(BZ2_bzReadOpen)56
+-b Fj(again,)68 b(feeding)61 b(in)e(the)i(un)m(used)e(data)h(via)h(the)
+-150 1250 y Fi(unused)p Fj(/)p Fi(nUnused)28 b Fj(parameters.)45
+-b(Keep)32 b(doing)f(this)h(un)m(til)g Fi(BZ_STREAM_END)c
+-Fj(return)j(coincides)h(with)150 1360 y(the)j(ph)m(ysical)g(end)f(of)h
+-(\014le)f(\()p Fi(feof\(f\))p Fj(\).)52 b(In)34 b(this)h(situation)g
+-Fi(BZ2_bzReadGetUnused)30 b Fj(will)35 b(of)f(course)150
+-1469 y(return)c(no)g(data.)150 1626 y(This)24 b(should)g(giv)m(e)i
+-(some)f(feel)h(for)f(ho)m(w)g(the)g(high-lev)m(el)h(in)m(terface)h(can)
+-d(b)s(e)g(used.)38 b(If)25 b(y)m(ou)g(require)g(extra)150
+-1736 y(\015exibilit)m(y)-8 b(,)32 b(y)m(ou'll)g(ha)m(v)m(e)f(to)g(bite)
+-g(the)g(bullet)g(and)e(get)j(to)f(grips)f(with)h(the)f(lo)m(w-lev)m(el)
+-k(in)m(terface.)150 1987 y Fe(3.4.9)63 b(Standard)40
+-b(\014le-reading/writing)j(co)s(de)150 2179 y Fj(Here's)31
+-b(ho)m(w)g(y)m(ou'd)f(write)h(data)g(to)g(a)g(compressed)f(\014le:)390
+-2538 y Fi(FILE*)142 b(f;)390 2642 y(BZFILE*)46 b(b;)390
+-2746 y(int)238 b(nBuf;)390 2849 y(char)190 b(buf[)46
+-b(/*)i(whatever)d(size)i(you)g(like)f(*/)i(];)390 2953
+-y(int)238 b(bzerror;)390 3057 y(int)g(nWritten;)390 3264
+-y(f)47 b(=)h(fopen)e(\()i("myfile.bz2",)c("w")j(\);)390
+-3368 y(if)g(\(!f\))g({)533 3472 y(/*)g(handle)f(error)h(*/)390
+-3576 y(})390 3680 y(b)g(=)h(BZ2_bzWriteOpen)c(\()j(&bzerror,)e(f,)i(9)h
+-(\);)390 3783 y(if)f(\(bzerror)f(!=)h(BZ_OK\))f({)533
+-3887 y(BZ2_bzWriteClose)e(\()j(b)g(\);)533 3991 y(/*)g(handle)f(error)h
+-(*/)390 4095 y(})390 4302 y(while)f(\()i(/*)f(condition)e(*/)i(\))h({)
+-533 4406 y(/*)f(get)g(data)g(to)g(write)f(into)h(buf,)g(and)g(set)g
+-(nBuf)f(appropriately)e(*/)533 4510 y(nWritten)i(=)h(BZ2_bzWrite)e(\()i
+-(&bzerror,)f(b,)h(buf,)f(nBuf)h(\);)533 4614 y(if)g(\(bzerror)f(==)h
+-(BZ_IO_ERROR\))e({)676 4717 y(BZ2_bzWriteClose)f(\()j(&bzerror,)e(b)j
+-(\);)676 4821 y(/*)g(handle)e(error)g(*/)533 4925 y(})390
+-5029 y(})390 5236 y(BZ2_bzWriteClose)d(\()48 b(&bzerror,)d(b)j(\);)390
+-5340 y(if)f(\(bzerror)f(==)h(BZ_IO_ERROR\))d({)p eop
 -%%Page: 27 28
--27 27 bop 150 -116 a Fl(Chapter)30 b(3:)h(Programming)e(with)g
--Fj(libbzip2)1891 b Fl(27)150 299 y(Compression)22 b(in)g(this)h(manner)
--g(is)g(a)h(one-shot)g(ev)m(en)m(t,)j(done)c(with)g(a)h(single)e(call)h
--(to)i(this)d(function.)37 b(The)150 408 y(resulting)25
--b(compressed)i(data)i(is)d(a)i(complete)f Fj(bzip2)f
--Fl(format)i(data)g(stream.)40 b(There)27 b(is)f(no)i(mec)m(hanism)150
--518 y(for)23 b(making)g(additional)e(calls)i(to)h(pro)m(vide)f(extra)h
--(input)e(data.)39 b(If)23 b(y)m(ou)h(w)m(an)m(t)g(that)g(kind)e(of)h
--(mec)m(hanism,)150 628 y(use)30 b(the)h(lo)m(w-lev)m(el)f(in)m
--(terface.)150 784 y(F)-8 b(or)31 b(the)g(meaning)e(of)i(parameters)g
--Fj(blockSize100k)p Fl(,)c Fj(verbosity)g Fl(and)j Fj(workFactor)p
--Fl(,)150 894 y(see)h Fj(BZ2_bzCompressInit)p Fl(.)150
--1051 y(T)-8 b(o)27 b(guaran)m(tee)h(that)e(the)h(compressed)f(data)h
--(will)d(\014t)i(in)f(its)g(bu\013er,)i(allo)s(cate)f(an)g(output)g
--(bu\013er)g(of)g(size)150 1160 y(1\045)31 b(larger)f(than)g(the)g
--(uncompressed)f(data,)j(plus)c(six)h(h)m(undred)g(extra)i(b)m(ytes.)150
--1317 y Fj(BZ2_bzBuffToBuffDecompre)o(ss)25 b Fl(will)k(not)j(write)e
--(data)j(at)f(or)f(b)s(ey)m(ond)g Fj(dest[*destLen])p
--Fl(,)d(ev)m(en)k(in)150 1427 y(case)f(of)g(bu\013er)e(o)m(v)m(er\015o)m
--(w.)150 1584 y(P)m(ossible)g(return)h(v)-5 b(alues:)572
--1735 y Fj(BZ_CONFIG_ERROR)663 1839 y Fl(if)29 b(the)i(library)d(has)i
--(b)s(een)f(mis-compiled)572 1942 y Fj(BZ_PARAM_ERROR)663
--2046 y Fl(if)g Fj(dest)g Fl(is)h Fj(NULL)f Fl(or)h Fj(destLen)f
--Fl(is)g Fj(NULL)663 2150 y Fl(or)h Fj(blockSize100k)44
--b(<)k(1)30 b Fl(or)g Fj(blockSize100k)44 b(>)k(9)663
--2254 y Fl(or)30 b Fj(verbosity)45 b(<)j(0)30 b Fl(or)g
--Fj(verbosity)45 b(>)j(4)663 2357 y Fl(or)30 b Fj(workFactor)45
--b(<)j(0)30 b Fl(or)g Fj(workFactor)45 b(>)i(250)572 2461
--y(BZ_MEM_ERROR)663 2565 y Fl(if)29 b(insu\016cien)m(t)g(memory)h(is)f
--(a)m(v)-5 b(ailable)572 2669 y Fj(BZ_OUTBUFF_FULL)663
--2773 y Fl(if)29 b(the)i(size)f(of)g(the)h(compressed)f(data)h(exceeds)g
--Fj(*destLen)572 2876 y(BZ_OK)663 2980 y Fl(otherwise)150
--3349 y Ff(3.5.2)63 b Fe(BZ2_bzBuffToBuffDecompress)533
--3536 y Fj(int)47 b(BZ2_bzBuffToBuffDecompres)o(s)42 b(\()47
--b(char*)428 b(dest,)2108 3640 y(unsigned)46 b(int*)g(destLen,)2108
--3744 y(char*)428 b(source,)2108 3848 y(unsigned)46 b(int)94
--b(sourceLen,)2108 3951 y(int)524 b(small,)2108 4055 y(int)g(verbosity)
--46 b(\);)150 4212 y Fl(A)m(ttempts)24 b(to)g(decompress)f(the)g(data)g
--(in)f Fj(source[0)28 b(..)i(sourceLen-1])20 b Fl(in)m(to)j(the)g
--(destination)f(bu\013er,)150 4322 y Fj(dest[0)29 b(..)g(*destLen-1])p
--Fl(.)37 b(If)26 b(the)g(destination)g(bu\013er)f(is)h(big)f(enough,)j
--Fj(*destLen)c Fl(is)h(set)i(to)g(the)g(size)150 4431
--y(of)21 b(the)g(uncompressed)e(data,)24 b(and)c Fj(BZ_OK)f
--Fl(is)h(returned.)36 b(If)20 b(the)h(compressed)g(data)g(w)m(on't)h
--(\014t,)g Fj(*destLen)150 4541 y Fl(is)29 b(unc)m(hanged,)i(and)e
--Fj(BZ_OUTBUFF_FULL)e Fl(is)i(returned.)150 4698 y Fj(source)g
--Fl(is)g(assumed)h(to)h(hold)e(a)i(complete)f Fj(bzip2)f
--Fl(format)i(data)g(stream.)150 4807 y Fj(BZ2_bzBuffToBuffDecompre)o(ss)
--22 b Fl(tries)28 b(to)i(decompress)e(the)h(en)m(tiret)m(y)g(of)g(the)f
--(stream)h(in)m(to)g(the)f(out-)150 4917 y(put)i(bu\013er.)150
--5074 y(F)-8 b(or)31 b(the)g(meaning)e(of)i(parameters)g
--Fj(small)e Fl(and)g Fj(verbosity)p Fl(,)f(see)j Fj
--(BZ2_bzDecompressInit)p Fl(.)150 5230 y(Because)j(the)f(compression)e
--(ratio)i(of)g(the)g(compressed)f(data)h(cannot)g(b)s(e)f(kno)m(wn)g(in)
--g(adv)-5 b(ance,)34 b(there)150 5340 y(is)d(no)h(easy)g(w)m(a)m(y)h(to)
--f(guaran)m(tee)i(that)e(the)g(output)f(bu\013er)g(will)e(b)s(e)i(big)g
--(enough.)45 b(Y)-8 b(ou)32 b(ma)m(y)h(of)f(course)p eop
+-27 27 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
+-b(with)g Fi(libbzip2)1881 b Fl(27)533 299 y Fi(/*)47
+-b(handle)f(error)h(*/)390 403 y(})150 559 y Fj(And)29
+-b(to)i(read)g(from)f(a)g(compressed)h(\014le:)390 711
+-y Fi(FILE*)142 b(f;)390 814 y(BZFILE*)46 b(b;)390 918
+-y(int)238 b(nBuf;)390 1022 y(char)190 b(buf[)46 b(/*)i(whatever)d(size)
+-i(you)g(like)f(*/)i(];)390 1126 y(int)238 b(bzerror;)390
+-1229 y(int)g(nWritten;)390 1437 y(f)47 b(=)h(fopen)e(\()i
+-("myfile.bz2",)c("r")j(\);)390 1541 y(if)g(\(!f\))g({)533
+-1645 y(/*)g(handle)f(error)h(*/)390 1748 y(})390 1852
+-y(b)g(=)h(BZ2_bzReadOpen)c(\()j(&bzerror,)f(f,)h(0,)g(NULL,)f(0)i(\);)
+-390 1956 y(if)f(\(bzerror)f(!=)h(BZ_OK\))f({)533 2060
+-y(BZ2_bzReadClose)e(\()j(&bzerror,)f(b)h(\);)533 2163
+-y(/*)g(handle)f(error)h(*/)390 2267 y(})390 2475 y(bzerror)f(=)h
+-(BZ_OK;)390 2579 y(while)f(\(bzerror)g(==)h(BZ_OK)f(&&)i(/*)f
+-(arbitrary)e(other)h(conditions)f(*/\))i({)533 2682 y(nBuf)g(=)g
+-(BZ2_bzRead)e(\()j(&bzerror,)d(b,)i(buf,)g(/*)g(size)g(of)g(buf)g(*/)g
+-(\);)533 2786 y(if)g(\(bzerror)f(==)h(BZ_OK\))f({)676
+-2890 y(/*)i(do)f(something)e(with)i(buf[0)f(..)h(nBuf-1])f(*/)533
+-2994 y(})390 3097 y(})390 3201 y(if)h(\(bzerror)f(!=)h(BZ_STREAM_END\))
+-d({)533 3305 y(BZ2_bzReadClose)g(\()j(&bzerror,)f(b)h(\);)533
+-3409 y(/*)g(handle)f(error)h(*/)390 3513 y(})g(else)g({)533
+-3616 y(BZ2_bzReadClose)d(\()j(&bzerror)f(\);)390 3720
+-y(})150 3991 y Fk(3.5)68 b(Utilit)l(y)47 b(functions)150
+-4264 y Fe(3.5.1)63 b Fd(BZ2_bzBuffToBuffCompress)533
+-4451 y Fi(int)47 b(BZ2_bzBuffToBuffCompress\()41 b(char*)428
+-b(dest,)1965 4555 y(unsigned)46 b(int*)g(destLen,)1965
+-4658 y(char*)428 b(source,)1965 4762 y(unsigned)46 b(int)94
+-b(sourceLen,)1965 4866 y(int)524 b(blockSize100k,)1965
+-4970 y(int)g(verbosity,)1965 5074 y(int)g(workFactor)45
+-b(\);)150 5230 y Fj(A)m(ttempts)32 b(to)f(compress)f(the)h(data)g(in)f
+-Fi(source[0)e(..)i(sourceLen-1])d Fj(in)m(to)k(the)g(destination)g
+-(bu\013er,)150 5340 y Fi(dest[0)e(..)g(*destLen-1])p
+-Fj(.)36 b(If)25 b(the)g(destination)h(bu\013er)e(is)h(big)f(enough,)i
+-Fi(*destLen)d Fj(is)i(set)g(to)h(the)f(size)p eop
 -%%Page: 28 29
 -28 28 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
--b(with)g Fj(libbzip2)1881 b Fl(28)150 299 y(mak)m(e)36
--b(arrangemen)m(ts)f(in)e(y)m(our)i(co)s(de)g(to)g(record)g(the)g(size)f
--(of)h(the)g(uncompressed)f(data,)i(but)e(suc)m(h)h(a)150
--408 y(mec)m(hanism)30 b(is)f(b)s(ey)m(ond)h(the)g(scop)s(e)h(of)f(this)
--g(library)-8 b(.)150 565 y Fj(BZ2_bzBuffToBuffDecompre)o(ss)25
--b Fl(will)k(not)j(write)e(data)j(at)f(or)f(b)s(ey)m(ond)g
--Fj(dest[*destLen])p Fl(,)d(ev)m(en)k(in)150 675 y(case)f(of)g(bu\013er)
--e(o)m(v)m(er\015o)m(w.)150 832 y(P)m(ossible)g(return)h(v)-5
--b(alues:)572 983 y Fj(BZ_CONFIG_ERROR)663 1087 y Fl(if)29
--b(the)i(library)d(has)i(b)s(een)f(mis-compiled)572 1190
--y Fj(BZ_PARAM_ERROR)663 1294 y Fl(if)g Fj(dest)g Fl(is)h
--Fj(NULL)f Fl(or)h Fj(destLen)f Fl(is)g Fj(NULL)663 1398
--y Fl(or)h Fj(small)46 b(!=)i(0)f(&&)g(small)g(!=)g(1)663
--1502 y Fl(or)30 b Fj(verbosity)45 b(<)j(0)30 b Fl(or)g
--Fj(verbosity)45 b(>)j(4)572 1605 y(BZ_MEM_ERROR)663 1709
--y Fl(if)29 b(insu\016cien)m(t)g(memory)h(is)f(a)m(v)-5
--b(ailable)572 1813 y Fj(BZ_OUTBUFF_FULL)663 1917 y Fl(if)29
--b(the)i(size)f(of)g(the)h(compressed)f(data)h(exceeds)g
--Fj(*destLen)572 2021 y(BZ_DATA_ERROR)663 2124 y Fl(if)e(a)i(data)g(in)m
--(tegrit)m(y)f(error)g(w)m(as)h(detected)h(in)d(the)h(compressed)g(data)
--572 2228 y Fj(BZ_DATA_ERROR_MAGIC)663 2332 y Fl(if)f(the)i(compressed)f
--(data)h(do)s(esn't)f(b)s(egin)f(with)g(the)i(righ)m(t)e(magic)i(b)m
--(ytes)572 2436 y Fj(BZ_UNEXPECTED_EOF)663 2539 y Fl(if)e(the)i
--(compressed)f(data)h(ends)e(unexp)s(ectedly)572 2643
--y Fj(BZ_OK)663 2747 y Fl(otherwise)150 3116 y Fk(3.6)68
--b Fd(zlib)43 b Fk(compatibilit)l(y)k(functions)150 3308
--y Fl(Y)-8 b(oshiok)j(a)33 b(Tsuneo)e(has)h(con)m(tributed)g(some)g
--(functions)f(to)i(giv)m(e)g(b)s(etter)f Fj(zlib)f Fl(compatibilit)m(y)
---8 b(.)45 b(These)150 3418 y(functions)36 b(are)i Fj(BZ2_bzopen)p
--Fl(,)e Fj(BZ2_bzread)p Fl(,)h Fj(BZ2_bzwrite)p Fl(,)f
--Fj(BZ2_bzflush)p Fl(,)h Fj(BZ2_bzclose)p Fl(,)f Fj(BZ2_)150
--3527 y(bzerror)23 b Fl(and)h Fj(BZ2_bzlibVersion)p Fl(.)34
--b(These)25 b(functions)e(are)j(not)f(\(y)m(et\))h(o\016cially)e(part)h
--(of)g(the)g(library)-8 b(.)150 3637 y(If)30 b(they)g(break,)h(y)m(ou)g
--(get)g(to)g(k)m(eep)g(all)f(the)g(pieces.)41 b(Nev)m(ertheless,)31
--b(I)f(think)f(they)i(w)m(ork)f(ok.)390 3788 y Fj(typedef)46
--b(void)g(BZFILE;)390 3995 y(const)g(char)h(*)g(BZ2_bzlibVersion)d(\()j
--(void)g(\);)150 4152 y Fl(Returns)29 b(a)i(string)f(indicating)e(the)i
--(library)e(v)m(ersion.)390 4303 y Fj(BZFILE)46 b(*)i(BZ2_bzopen)92
--b(\()48 b(const)e(char)h(*path,)f(const)g(char)h(*mode)f(\);)390
--4407 y(BZFILE)g(*)i(BZ2_bzdopen)c(\()k(int)381 b(fd,)190
--b(const)46 b(char)h(*mode)f(\);)150 4564 y Fl(Op)s(ens)19
--b(a)j Fj(.bz2)e Fl(\014le)g(for)g(reading)g(or)h(writing,)g(using)f
--(either)g(its)h(name)g(or)g(a)g(pre-existing)f(\014le)g(descriptor.)150
--4674 y(Analogous)30 b(to)i Fj(fopen)c Fl(and)i Fj(fdopen)p
--Fl(.)390 4825 y Fj(int)47 b(BZ2_bzread)93 b(\()47 b(BZFILE*)f(b,)h
--(void*)f(buf,)h(int)g(len)g(\);)390 4928 y(int)g(BZ2_bzwrite)e(\()i
--(BZFILE*)f(b,)h(void*)f(buf,)h(int)g(len)g(\);)150 5085
--y Fl(Reads/writes)30 b(data)h(from/to)g(a)g(previously)d(op)s(ened)i
--Fj(BZFILE)p Fl(.)39 b(Analogous)30 b(to)h Fj(fread)e
--Fl(and)h Fj(fwrite)p Fl(.)390 5236 y Fj(int)95 b(BZ2_bzflush)44
--b(\()k(BZFILE*)e(b)h(\);)390 5340 y(void)g(BZ2_bzclose)d(\()k(BZFILE*)e
--(b)h(\);)p eop
+-b(with)g Fi(libbzip2)1881 b Fl(28)150 299 y Fj(of)27
+-b(the)f(compressed)h(data,)h(and)d Fi(BZ_OK)g Fj(is)i(returned.)38
+-b(If)27 b(the)f(compressed)h(data)g(w)m(on't)g(\014t,)g
+-Fi(*destLen)150 408 y Fj(is)j(unc)m(hanged,)g(and)g Fi(BZ_OUTBUFF_FULL)
+-c Fj(is)31 b(returned.)150 565 y(Compression)22 b(in)h(this)f(manner)g
+-(is)h(a)f(one-shot)i(ev)m(en)m(t,)i(done)d(with)f(a)h(single)g(call)h
+-(to)f(this)g(function.)38 b(The)150 675 y(resulting)26
+-b(compressed)g(data)f(is)h(a)g(complete)h Fi(bzip2)d
+-Fj(format)i(data)g(stream.)39 b(There)26 b(is)f(no)h(mec)m(hanism)150
+-784 y(for)d(making)g(additional)h(calls)f(to)h(pro)m(vide)g(extra)f
+-(input)g(data.)38 b(If)23 b(y)m(ou)g(w)m(an)m(t)h(that)f(kind)f(of)i
+-(mec)m(hanism,)150 894 y(use)30 b(the)h(lo)m(w-lev)m(el)i(in)m
+-(terface.)150 1051 y(F)-8 b(or)31 b(the)g(meaning)f(of)h(parameters)g
+-Fi(blockSize100k)p Fj(,)c Fi(verbosity)h Fj(and)h Fi(workFactor)p
+-Fj(,)150 1160 y(see)i Fi(BZ2_bzCompressInit)p Fj(.)150
+-1317 y(T)-8 b(o)37 b(guaran)m(tee)h(that)f(the)f(compressed)h(data)f
+-(will)h(\014t)f(in)g(its)h(bu\013er,)g(allo)s(cate)h(an)e(output)g
+-(bu\013er)g(of)150 1427 y(size)31 b(1\045)g(larger)g(than)f(the)h
+-(uncompressed)e(data,)i(plus)f(six)g(h)m(undred)f(extra)i(b)m(ytes.)150
+-1584 y Fi(BZ2_bzBuffToBuffDecompre)o(ss)24 b Fj(will)31
+-b(not)g(write)g(data)f(at)h(or)g(b)s(ey)m(ond)e Fi(dest[*destLen])p
+-Fj(,)e(ev)m(en)k(in)150 1693 y(case)g(of)g(bu\013er)e(o)m(v)m(er\015o)m
+-(w.)150 1850 y(P)m(ossible)j(return)e(v)-5 b(alues:)572
+-2001 y Fi(BZ_CONFIG_ERROR)663 2105 y Fj(if)30 b(the)h(library)f(has)g
+-(b)s(een)g(mis-compiled)572 2209 y Fi(BZ_PARAM_ERROR)663
+-2313 y Fj(if)g Fi(dest)f Fj(is)i Fi(NULL)e Fj(or)i Fi(destLen)d
+-Fj(is)i Fi(NULL)663 2416 y Fj(or)g Fi(blockSize100k)45
+-b(<)i(1)30 b Fj(or)h Fi(blockSize100k)44 b(>)j(9)663
+-2520 y Fj(or)30 b Fi(verbosity)46 b(<)h(0)30 b Fj(or)h
+-Fi(verbosity)45 b(>)i(4)663 2624 y Fj(or)30 b Fi(workFactor)45
+-b(<)j(0)30 b Fj(or)g Fi(workFactor)45 b(>)j(250)572 2728
+-y(BZ_MEM_ERROR)663 2831 y Fj(if)30 b(insu\016cien)m(t)h(memory)f(is)h
+-(a)m(v)-5 b(ailable)572 2935 y Fi(BZ_OUTBUFF_FULL)663
+-3039 y Fj(if)30 b(the)h(size)g(of)g(the)f(compressed)h(data)f(exceeds)i
+-Fi(*destLen)572 3143 y(BZ_OK)663 3247 y Fj(otherwise)150
+-3616 y Fe(3.5.2)63 b Fd(BZ2_bzBuffToBuffDecompress)533
+-3803 y Fi(int)47 b(BZ2_bzBuffToBuffDecompres)o(s)42 b(\()47
+-b(char*)428 b(dest,)2108 3906 y(unsigned)46 b(int*)g(destLen,)2108
+-4010 y(char*)428 b(source,)2108 4114 y(unsigned)46 b(int)94
+-b(sourceLen,)2108 4218 y(int)524 b(small,)2108 4322 y(int)g(verbosity)
+-46 b(\);)150 4478 y Fj(A)m(ttempts)22 b(to)g(decompress)f(the)h(data)f
+-(in)g Fi(source[0)28 b(..)i(sourceLen-1])18 b Fj(in)m(to)k(the)f
+-(destination)h(bu\013er,)150 4588 y Fi(dest[0)29 b(..)g(*destLen-1])p
+-Fj(.)61 b(If)37 b(the)h(destination)h(bu\013er)e(is)h(big)g(enough,)i
+-Fi(*destLen)35 b Fj(is)j(set)h(to)g(the)150 4698 y(size)e(of)e(the)h
+-(uncompressed)f(data,)j(and)c Fi(BZ_OK)h Fj(is)g(returned.)56
+-b(If)36 b(the)g(compressed)f(data)h(w)m(on't)h(\014t,)150
+-4807 y Fi(*destLen)28 b Fj(is)j(unc)m(hanged,)f(and)f
+-Fi(BZ_OUTBUFF_FULL)d Fj(is)31 b(returned.)150 4964 y
+-Fi(source)e Fj(is)h(assumed)f(to)j(hold)e(a)g(complete)i
+-Fi(bzip2)d Fj(format)i(data)g(stream.)150 5074 y Fi
+-(BZ2_bzBuffToBuffDecompre)o(ss)38 b Fj(tries)46 b(to)f(decompress)f
+-(the)h(en)m(tiret)m(y)i(of)d(the)h(stream)g(in)m(to)h(the)150
+-5183 y(output)30 b(bu\013er.)150 5340 y(F)-8 b(or)31
+-b(the)g(meaning)f(of)h(parameters)g Fi(small)e Fj(and)g
+-Fi(verbosity)p Fj(,)f(see)j Fi(BZ2_bzDecompressInit)p
+-Fj(.)p eop
 -%%Page: 29 30
 -29 29 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
--b(with)g Fj(libbzip2)1881 b Fl(29)150 299 y(Flushes/closes)27
--b(a)h Fj(BZFILE)p Fl(.)39 b Fj(BZ2_bzflush)24 b Fl(do)s(esn't)k
--(actually)f(do)h(an)m(ything.)39 b(Analogous)28 b(to)h
--Fj(fflush)150 408 y Fl(and)h Fj(fclose)p Fl(.)390 559
--y Fj(const)46 b(char)h(*)g(BZ2_bzerror)e(\()j(BZFILE)e(*b,)h(int)g
--(*errnum)e(\))150 716 y Fl(Returns)31 b(a)i(string)e(describing)f(the)i
--(more)g(recen)m(t)h(error)f(status)h(of)f Fj(b)p Fl(,)g(and)g(also)g
--(sets)h Fj(*errnum)d Fl(to)j(its)150 826 y(n)m(umerical)c(v)-5
--b(alue.)150 1242 y Fk(3.7)68 b(Using)46 b(the)f(library)g(in)g(a)g
--Fd(stdio)p Fk(-free)f(en)l(vironmen)l(t)150 1615 y Ff(3.7.1)63
--b(Getting)40 b(rid)h(of)g Fe(stdio)150 1807 y Fl(In)i(a)g(deeply)g(em)m
--(b)s(edded)f(application,)j(y)m(ou)f(migh)m(t)f(w)m(an)m(t)h(to)g(use)f
--(just)g(the)h(memory-to-memory)150 1917 y(functions.)39
--b(Y)-8 b(ou)30 b(can)f(do)g(this)g(con)m(v)m(enien)m(tly)g(b)m(y)g
--(compiling)e(the)j(library)d(with)h(prepro)s(cessor)g(sym)m(b)s(ol)150
--2026 y Fj(BZ_NO_STDIO)35 b Fl(de\014ned.)63 b(Doing)39
--b(this)e(giv)m(es)h(y)m(ou)h(a)f(library)e(con)m(taining)i(only)f(the)i
--(follo)m(wing)e(eigh)m(t)150 2136 y(functions:)150 2293
--y Fj(BZ2_bzCompressInit)p Fl(,)26 b Fj(BZ2_bzCompress)p
--Fl(,)g Fj(BZ2_bzCompressEnd)150 2402 y(BZ2_bzDecompressInit)p
--Fl(,)f Fj(BZ2_bzDecompress)p Fl(,)h Fj(BZ2_bzDecompressEnd)150
--2512 y(BZ2_bzBuffToBuffCompress)o Fl(,)f Fj(BZ2_bzBuffToBuffDecompre)o
--(ss)150 2669 y Fl(When)30 b(compiled)f(lik)m(e)h(this,)f(all)g
--(functions)g(will)f(ignore)i Fj(verbosity)e Fl(settings.)150
--3006 y Ff(3.7.2)63 b(Critical)40 b(error)h(handling)150
--3199 y Fj(libbzip2)20 b Fl(con)m(tains)j(a)g(n)m(um)m(b)s(er)f(of)g(in)
--m(ternal)g(assertion)g(c)m(hec)m(ks)i(whic)m(h)d(should,)i(needless)f
--(to)h(sa)m(y)-8 b(,)26 b(nev)m(er)150 3308 y(b)s(e)g(activ)-5
--b(ated.)40 b(Nev)m(ertheless,)28 b(if)d(an)i(assertion)f(should)e
--(fail,)i(b)s(eha)m(viour)f(dep)s(ends)f(on)j(whether)e(or)i(not)150
--3418 y(the)k(library)d(w)m(as)i(compiled)f(with)g Fj(BZ_NO_STDIO)e
--Fl(set.)150 3575 y(F)-8 b(or)31 b(a)g(normal)e(compile,)h(an)g
--(assertion)g(failure)f(yields)f(the)j(message)533 3726
--y Fj(bzip2/libbzip2:)44 b(internal)h(error)i(number)f(N.)533
--3829 y(This)h(is)g(a)g(bug)g(in)h(bzip2/libbzip2,)43
--b(1.0)k(of)g(21-Mar-2000.)533 3933 y(Please)f(report)g(it)i(to)f(me)g
--(at:)g(jseward@acm.org.)91 b(If)47 b(this)g(happened)533
--4037 y(when)g(you)g(were)f(using)h(some)f(program)g(which)h(uses)f
--(libbzip2)g(as)h(a)533 4141 y(component,)e(you)i(should)f(also)h
--(report)f(this)h(bug)f(to)i(the)f(author\(s\))533 4244
--y(of)g(that)g(program.)93 b(Please)46 b(make)h(an)g(effort)f(to)h
--(report)g(this)f(bug;)533 4348 y(timely)g(and)h(accurate)f(bug)h
--(reports)e(eventually)g(lead)i(to)g(higher)533 4452 y(quality)f
--(software.)93 b(Thanks.)h(Julian)46 b(Seward,)f(21)j(March)e(2000.)150
--4609 y Fl(where)30 b Fj(N)g Fl(is)f(some)i(error)f(co)s(de)h(n)m(um)m
--(b)s(er.)39 b Fj(exit\(3\))28 b Fl(is)i(then)g(called.)150
--4766 y(F)-8 b(or)31 b(a)g Fj(stdio)p Fl(-free)e(library)-8
--b(,)29 b(assertion)h(failures)e(result)i(in)f(a)i(call)e(to)i(a)g
--(function)e(declared)h(as:)533 4917 y Fj(extern)46 b(void)h
--(bz_internal_error)c(\()k(int)g(errcode)f(\);)150 5074
--y Fl(The)30 b(relev)-5 b(an)m(t)31 b(co)s(de)f(is)g(passed)f(as)i(a)g
--(parameter.)41 b(Y)-8 b(ou)31 b(should)d(supply)g(suc)m(h)i(a)h
--(function.)150 5230 y(In)g(either)g(case,)j(once)e(an)g(assertion)g
--(failure)e(has)h(o)s(ccurred,)h(an)m(y)g Fj(bz_stream)e
--Fl(records)h(in)m(v)m(olv)m(ed)h(can)150 5340 y(b)s(e)e(regarded)g(as)h
--(in)m(v)-5 b(alid.)38 b(Y)-8 b(ou)31 b(should)d(not)j(attempt)g(to)g
--(resume)f(normal)g(op)s(eration)f(with)g(them.)p eop
+-b(with)g Fi(libbzip2)1881 b Fl(29)150 299 y Fj(Because)31
+-b(the)g(compression)g(ratio)g(of)g(the)g(compressed)f(data)h(cannot)g
+-(b)s(e)f(kno)m(wn)g(in)g(adv)-5 b(ance,)31 b(there)150
+-408 y(is)g(no)f(easy)i(w)m(a)m(y)f(to)h(guaran)m(tee)g(that)f(the)g
+-(output)g(bu\013er)f(will)h(b)s(e)f(big)h(enough.)42
+-b(Y)-8 b(ou)30 b(ma)m(y)i(of)e(course)150 518 y(mak)m(e)j(arrangemen)m
+-(ts)h(in)e(y)m(our)h(co)s(de)f(to)i(record)f(the)g(size)g(of)g(the)g
+-(uncompressed)e(data,)j(but)e(suc)m(h)g(a)150 628 y(mec)m(hanism)e(is)h
+-(b)s(ey)m(ond)f(the)g(scop)s(e)h(of)f(this)h(library)-8
+-b(.)150 784 y Fi(BZ2_bzBuffToBuffDecompre)o(ss)24 b Fj(will)31
+-b(not)g(write)g(data)f(at)h(or)g(b)s(ey)m(ond)e Fi(dest[*destLen])p
+-Fj(,)e(ev)m(en)k(in)150 894 y(case)g(of)g(bu\013er)e(o)m(v)m(er\015o)m
+-(w.)150 1051 y(P)m(ossible)j(return)e(v)-5 b(alues:)572
+-1202 y Fi(BZ_CONFIG_ERROR)663 1306 y Fj(if)30 b(the)h(library)f(has)g
+-(b)s(een)g(mis-compiled)572 1409 y Fi(BZ_PARAM_ERROR)663
+-1513 y Fj(if)g Fi(dest)f Fj(is)i Fi(NULL)e Fj(or)i Fi(destLen)d
+-Fj(is)i Fi(NULL)663 1617 y Fj(or)g Fi(small)47 b(!=)g(0)g(&&)h(small)e
+-(!=)h(1)663 1721 y Fj(or)30 b Fi(verbosity)46 b(<)h(0)30
+-b Fj(or)h Fi(verbosity)45 b(>)i(4)572 1825 y(BZ_MEM_ERROR)663
+-1928 y Fj(if)30 b(insu\016cien)m(t)h(memory)f(is)h(a)m(v)-5
+-b(ailable)572 2032 y Fi(BZ_OUTBUFF_FULL)663 2136 y Fj(if)30
+-b(the)h(size)g(of)g(the)f(compressed)h(data)f(exceeds)i
+-Fi(*destLen)572 2240 y(BZ_DATA_ERROR)663 2343 y Fj(if)e(a)h(data)f(in)m
+-(tegrit)m(y)j(error)e(w)m(as)g(detected)g(in)g(the)f(compressed)h(data)
+-572 2447 y Fi(BZ_DATA_ERROR_MAGIC)663 2551 y Fj(if)f(the)h(compressed)f
+-(data)h(do)s(esn't)f(b)s(egin)g(with)g(the)h(righ)m(t)g(magic)h(b)m
+-(ytes)572 2655 y Fi(BZ_UNEXPECTED_EOF)663 2759 y Fj(if)e(the)h
+-(compressed)f(data)h(ends)e(unexp)s(ectedly)572 2862
+-y Fi(BZ_OK)663 2966 y Fj(otherwise)150 3370 y Fk(3.6)68
+-b Fc(zlib)43 b Fk(compatibilit)l(y)k(functions)150 3563
+-y Fj(Y)-8 b(oshiok)j(a)32 b(Tsuneo)f(has)f(con)m(tributed)i(some)f
+-(functions)g(to)h(giv)m(e)h(b)s(etter)e Fi(zlib)f Fj(compatibilit)m(y)
+--8 b(.)46 b(These)150 3673 y(functions)37 b(are)g Fi(BZ2_bzopen)p
+-Fj(,)f Fi(BZ2_bzread)p Fj(,)g Fi(BZ2_bzwrite)p Fj(,)g
+-Fi(BZ2_bzflush)p Fj(,)f Fi(BZ2_bzclose)p Fj(,)h Fi(BZ2_)150
+-3782 y(bzerror)22 b Fj(and)g Fi(BZ2_bzlibVersion)p Fj(.)34
+-b(These)24 b(functions)f(are)h(not)g(\(y)m(et\))h(o\016cially)g(part)f
+-(of)g(the)f(library)-8 b(.)150 3892 y(If)30 b(they)h(break,)f(y)m(ou)h
+-(get)h(to)f(k)m(eep)g(all)g(the)g(pieces.)41 b(Nev)m(ertheless,)33
+-b(I)e(think)f(they)g(w)m(ork)h(ok.)390 4043 y Fi(typedef)46
+-b(void)g(BZFILE;)390 4250 y(const)g(char)h(*)g(BZ2_bzlibVersion)d(\()j
+-(void)g(\);)150 4407 y Fj(Returns)30 b(a)h(string)f(indicating)h(the)g
+-(library)f(v)m(ersion.)390 4558 y Fi(BZFILE)46 b(*)i(BZ2_bzopen)92
+-b(\()48 b(const)e(char)h(*path,)f(const)g(char)h(*mode)f(\);)390
+-4662 y(BZFILE)g(*)i(BZ2_bzdopen)c(\()k(int)381 b(fd,)190
+-b(const)46 b(char)h(*mode)f(\);)150 4819 y Fj(Op)s(ens)36
+-b(a)i Fi(.bz2)e Fj(\014le)i(for)f(reading)h(or)f(writing,)j(using)d
+-(either)h(its)g(name)f(or)h(a)g(pre-existing)g(\014le)g(de-)150
+-4928 y(scriptor.)j(Analogous)31 b(to)g Fi(fopen)e Fj(and)h
+-Fi(fdopen)p Fj(.)390 5079 y Fi(int)47 b(BZ2_bzread)93
+-b(\()47 b(BZFILE*)f(b,)h(void*)f(buf,)h(int)g(len)g(\);)390
+-5183 y(int)g(BZ2_bzwrite)e(\()i(BZFILE*)f(b,)h(void*)f(buf,)h(int)g
+-(len)g(\);)150 5340 y Fj(Reads/writes)31 b(data)g(from/to)g(a)g
+-(previously)f(op)s(ened)f Fi(BZFILE)p Fj(.)39 b(Analogous)31
+-b(to)g Fi(fread)e Fj(and)g Fi(fwrite)p Fj(.)p eop
 -%%Page: 30 31
 -30 30 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
--b(with)g Fj(libbzip2)1881 b Fl(30)150 299 y(Y)-8 b(ou)22
--b(ma)m(y)-8 b(,)25 b(of)d(course,)h(c)m(hange)g(critical)e(error)g
--(handling)e(to)j(suit)f(y)m(our)g(needs.)38 b(As)21 b(I)h(said)e(ab)s
--(o)m(v)m(e,)25 b(critical)150 408 y(errors)30 b(indicate)g(bugs)g(in)g
--(the)h(library)d(and)i(should)f(not)i(o)s(ccur.)42 b(All)29
--b Fj(")p Fl(normal)p Fj(")h Fl(error)g(situations)g(are)150
--518 y(indicated)f(via)h(error)g(return)f(co)s(des)i(from)f(functions,)f
--(and)g(can)i(b)s(e)f(reco)m(v)m(ered)i(from.)150 798
--y Fk(3.8)68 b(Making)45 b(a)g(Windo)l(ws)h(DLL)150 990
--y Fl(Ev)m(erything)30 b(related)g(to)h(Windo)m(ws)f(has)g(b)s(een)f
--(con)m(tributed)h(b)m(y)g(Y)-8 b(oshiok)j(a)31 b(Tsuneo)150
--1100 y(\()p Fj(QWF00133@niftyserve.or.jp)46 b Fl(/)52
--b Fj(tsuneo-y@is.aist-nara.ac.j)o(p)p Fl(\),)g(so)h(y)m(ou)f(should)f
--(send)150 1210 y(y)m(our)30 b(queries)g(to)h(him)e(\(but)h(p)s(erhaps)e
--(Cc:)41 b(me,)31 b Fj(jseward@acm.org)p Fl(\).)150 1366
--y(My)43 b(v)-5 b(ague)44 b(understanding)d(of)i(what)g(to)h(do)f(is:)65
--b(using)41 b(Visual)h(C)p Fj(++)g Fl(5.0,)48 b(op)s(en)42
--b(the)h(pro)5 b(ject)44 b(\014le)150 1476 y Fj(libbz2.dsp)p
--Fl(,)28 b(and)i(build.)37 b(That's)31 b(all.)150 1633
--y(If)41 b(y)m(ou)g(can't)h(op)s(en)e(the)h(pro)5 b(ject)42
--b(\014le)e(for)h(some)g(reason,)j(mak)m(e)e(a)g(new)e(one,)k(naming)c
--(these)i(\014les:)150 1742 y Fj(blocksort.c)p Fl(,)28
--b Fj(bzlib.c)p Fl(,)g Fj(compress.c)p Fl(,)g Fj(crctable.c)p
--Fl(,)g Fj(decompress.c)p Fl(,)f Fj(huffman.c)p Fl(,)150
--1852 y Fj(randtable.c)32 b Fl(and)j Fj(libbz2.def)p Fl(.)53
--b(Y)-8 b(ou)36 b(will)d(also)i(need)g(to)h(name)g(the)g(header)f
--(\014les)f Fj(bzlib.h)g Fl(and)150 1962 y Fj(bzlib_private.h)p
--Fl(.)150 2118 y(If)c(y)m(ou)h(don't)f(use)g(V)m(C)p Fj(++)p
--Fl(,)g(y)m(ou)h(ma)m(y)g(need)f(to)h(de\014ne)f(the)h(propro)s(cessor)e
--(sym)m(b)s(ol)g Fj(_WIN32)p Fl(.)150 2275 y(Finally)-8
--b(,)28 b Fj(dlltest.c)e Fl(is)h(a)i(sample)f(program)g(using)g(the)g
--(DLL.)h(It)g(has)f(a)h(pro)5 b(ject)29 b(\014le,)g Fj(dlltest.dsp)p
--Fl(.)150 2432 y(If)h(y)m(ou)h(just)e(w)m(an)m(t)j(a)e(mak)m(e\014le)h
--(for)f(Visual)f(C,)h(ha)m(v)m(e)i(a)e(lo)s(ok)g(at)i
--Fj(makefile.msc)p Fl(.)150 2589 y(Be)k(a)m(w)m(are)g(that)g(if)e(y)m
--(ou)h(compile)f Fj(bzip2)g Fl(itself)g(on)h(Win32,)h(y)m(ou)g(m)m(ust)f
--(set)g Fj(BZ_UNIX)e Fl(to)j(0)f(and)g Fj(BZ_)150 2698
--y(LCCWIN32)27 b Fl(to)j(1,)g(in)f(the)g(\014le)g Fj(bzip2.c)p
--Fl(,)e(b)s(efore)i(compiling.)39 b(Otherwise)28 b(the)h(resulting)f
--(binary)f(w)m(on't)150 2808 y(w)m(ork)j(correctly)-8
--b(.)150 2965 y(I)30 b(ha)m(v)m(en't)i(tried)d(an)m(y)i(of)g(this)e
--(stu\013)h(m)m(yself,)g(but)g(it)f(all)h(lo)s(oks)g(plausible.)p
--eop
+-b(with)g Fi(libbzip2)1881 b Fl(30)390 299 y Fi(int)95
+-b(BZ2_bzflush)44 b(\()k(BZFILE*)e(b)h(\);)390 403 y(void)g(BZ2_bzclose)
+-d(\()k(BZFILE*)e(b)h(\);)150 559 y Fj(Flushes/closes)29
+-b(a)f Fi(BZFILE)p Fj(.)38 b Fi(BZ2_bzflush)25 b Fj(do)s(esn't)j
+-(actually)h(do)f(an)m(ything.)41 b(Analogous)28 b(to)h
+-Fi(fflush)150 669 y Fj(and)h Fi(fclose)p Fj(.)390 820
+-y Fi(const)46 b(char)h(*)g(BZ2_bzerror)e(\()j(BZFILE)e(*b,)h(int)g
+-(*errnum)e(\))150 977 y Fj(Returns)29 b(a)h(string)g(describing)g(the)f
+-(more)i(recen)m(t)g(error)f(status)g(of)f Fi(b)p Fj(,)h(and)f(also)h
+-(sets)g Fi(*errnum)e Fj(to)i(its)150 1087 y(n)m(umerical)h(v)-5
+-b(alue.)150 1411 y Fk(3.7)68 b(Using)46 b(the)f(library)g(in)g(a)g
+-Fc(stdio)p Fk(-free)f(en)l(vironmen)l(t)150 1723 y Fe(3.7.1)63
+-b(Getting)41 b(rid)g(of)g Fd(stdio)150 1915 y Fj(In)g(a)g(deeply)h(em)m
+-(b)s(edded)e(application,)46 b(y)m(ou)41 b(migh)m(t)i(w)m(an)m(t)f(to)g
+-(use)f(just)g(the)h(memory-to-memory)150 2025 y(functions.)d(Y)-8
+-b(ou)27 b(can)g(do)g(this)g(con)m(v)m(enien)m(tly)j(b)m(y)d(compiling)h
+-(the)f(library)g(with)g(prepro)s(cessor)g(sym)m(b)s(ol)150
+-2135 y Fi(BZ_NO_STDIO)34 b Fj(de\014ned.)60 b(Doing)38
+-b(this)f(giv)m(es)i(y)m(ou)e(a)h(library)f(con)m(taining)i(only)e(the)h
+-(follo)m(wing)g(eigh)m(t)150 2244 y(functions:)150 2401
+-y Fi(BZ2_bzCompressInit)p Fj(,)26 b Fi(BZ2_bzCompress)p
+-Fj(,)g Fi(BZ2_bzCompressEnd)150 2511 y(BZ2_bzDecompressInit)p
+-Fj(,)f Fi(BZ2_bzDecompress)p Fj(,)h Fi(BZ2_bzDecompressEnd)150
+-2620 y(BZ2_bzBuffToBuffCompress)o Fj(,)f Fi(BZ2_bzBuffToBuffDecompre)o
+-(ss)150 2777 y Fj(When)30 b(compiled)h(lik)m(e)g(this,)g(all)g
+-(functions)f(will)h(ignore)g Fi(verbosity)d Fj(settings.)150
+-3053 y Fe(3.7.2)63 b(Critical)40 b(error)h(handling)150
+-3246 y Fi(libbzip2)18 b Fj(con)m(tains)k(a)f(n)m(um)m(b)s(er)e(of)i(in)
+-m(ternal)h(assertion)f(c)m(hec)m(ks)h(whic)m(h)f(should,)g(needless)g
+-(to)h(sa)m(y)-8 b(,)23 b(nev)m(er)150 3355 y(b)s(e)35
+-b(activ)-5 b(ated.)58 b(Nev)m(ertheless,)40 b(if)35 b(an)h(assertion)g
+-(should)f(fail,)i(b)s(eha)m(viour)f(dep)s(ends)e(on)h(whether)h(or)150
+-3465 y(not)31 b(the)f(library)h(w)m(as)f(compiled)h(with)f
+-Fi(BZ_NO_STDIO)e Fj(set.)150 3622 y(F)-8 b(or)31 b(a)g(normal)f
+-(compile,)i(an)e(assertion)h(failure)f(yields)h(the)g(message)533
+-3773 y Fi(bzip2/libbzip2:)44 b(internal)h(error)i(number)f(N.)533
+-3877 y(This)h(is)g(a)g(bug)g(in)h(bzip2/libbzip2,)43
+-b(1.0.2,)j(30-Dec-2001.)533 3980 y(Please)g(report)g(it)i(to)f(me)g
+-(at:)g(jseward@acm.org.)91 b(If)47 b(this)g(happened)533
+-4084 y(when)g(you)g(were)f(using)h(some)f(program)g(which)h(uses)f
+-(libbzip2)g(as)h(a)533 4188 y(component,)e(you)i(should)f(also)h
+-(report)f(this)h(bug)f(to)i(the)f(author\(s\))533 4292
+-y(of)g(that)g(program.)93 b(Please)46 b(make)h(an)g(effort)f(to)h
+-(report)g(this)f(bug;)533 4395 y(timely)g(and)h(accurate)f(bug)h
+-(reports)e(eventually)g(lead)i(to)g(higher)533 4499 y(quality)f
+-(software.)93 b(Thanks.)h(Julian)46 b(Seward,)f(30)j(December)d(2001.)
+-150 4656 y Fj(where)33 b Fi(N)g Fj(is)g(some)g(error)h(co)s(de)f(n)m
+-(um)m(b)s(er.)48 b(If)32 b Fi(N)e(==)g(1007)p Fj(,)j(it)h(also)f(prin)m
+-(ts)g(some)h(extra)g(text)g(advising)150 4766 y(the)e(reader)f(that)h
+-(unreliable)f(memory)h(is)f(often)h(asso)s(ciated)g(with)f(in)m(ternal)
+-h(error)g(1007.)45 b(\(This)32 b(is)f(a)150 4875 y(frequen)m
+-(tly-observ)m(ed-phenomenon)g(with)f(v)m(ersions)h(1.0.0/1.0.1\).)150
+-5032 y Fi(exit\(3\))d Fj(is)j(then)f(called.)150 5189
+-y(F)-8 b(or)31 b(a)g Fi(stdio)p Fj(-free)e(library)-8
+-b(,)31 b(assertion)h(failures)e(result)h(in)f(a)g(call)i(to)f(a)f
+-(function)h(declared)f(as:)533 5340 y Fi(extern)46 b(void)h
+-(bz_internal_error)c(\()k(int)g(errcode)f(\);)p eop
 -%%Page: 31 32
--31 31 bop 150 -116 a Fl(Chapter)30 b(4:)41 b(Miscellanea)2586
--b(31)150 299 y Fh(4)80 b(Miscellanea)150 583 y Fl(These)30
--b(are)h(just)f(some)g(random)g(though)m(ts)h(of)f(mine.)40
--b(Y)-8 b(our)30 b(mileage)h(ma)m(y)g(v)-5 b(ary)d(.)150
--884 y Fk(4.1)68 b(Limitations)47 b(of)e(the)g(compressed)g(\014le)h
--(format)150 1077 y Fj(bzip2-1.0)p Fl(,)e Fj(0.9.5)e Fl(and)g
--Fj(0.9.0)g Fl(use)h(exactly)h(the)f(same)h(\014le)e(format)i(as)f(the)h
--(previous)d(v)m(ersion,)150 1186 y Fj(bzip2-0.1)p Fl(.)75
--b(This)41 b(decision)g(w)m(as)i(made)g(in)e(the)i(in)m(terests)g(of)g
--(stabilit)m(y)-8 b(.)77 b(Creating)42 b(y)m(et)i(another)150
--1296 y(incompatible)21 b(compressed)i(\014le)f(format)i(w)m(ould)e
--(create)i(further)e(confusion)g(and)h(disruption)d(for)j(users.)150
--1453 y(Nev)m(ertheless,)31 b(this)e(is)g(not)h(a)g(painless)e
--(decision.)39 b(Dev)m(elopmen)m(t)31 b(w)m(ork)f(since)f(the)h(release)
--h(of)f Fj(bzip2-)150 1562 y(0.1)19 b Fl(in)g(August)i(1997)h(has)e(sho)
--m(wn)f(complexities)h(in)f(the)h(\014le)g(format)g(whic)m(h)f(slo)m(w)h
--(do)m(wn)g(decompression)150 1672 y(and,)30 b(in)f(retrosp)s(ect,)i
--(are)g(unnecessary)-8 b(.)40 b(These)31 b(are:)225 1829
--y Fi(\017)60 b Fl(The)20 b(run-length)g(enco)s(der,)i(whic)m(h)e(is)g
--(the)h(\014rst)f(of)h(the)g(compression)f(transformations,)i(is)e(en)m
--(tirely)330 1938 y(irrelev)-5 b(an)m(t.)63 b(The)38 b(original)e(purp)s
--(ose)g(w)m(as)j(to)g(protect)g(the)f(sorting)g(algorithm)f(from)g(the)i
--(v)m(ery)330 2048 y(w)m(orst)h(case)h(input:)58 b(a)41
--b(string)e(of)h(rep)s(eated)g(sym)m(b)s(ols.)68 b(But)40
--b(algorithm)f(steps)h(Q6a)h(and)e(Q6b)330 2157 y(in)30
--b(the)i(original)e(Burro)m(ws-Wheeler)i(tec)m(hnical)g(rep)s(ort)f
--(\(SR)m(C-124\))i(sho)m(w)f(ho)m(w)g(rep)s(eats)g(can)g(b)s(e)330
--2267 y(handled)c(without)i(di\016cult)m(y)f(in)g(blo)s(c)m(k)h
--(sorting.)225 2409 y Fi(\017)60 b Fl(The)30 b(randomisation)e(mec)m
--(hanism)i(do)s(esn't)g(really)f(need)h(to)g(b)s(e)g(there.)41
--b(Udi)29 b(Man)m(b)s(er)h(and)f(Gene)330 2518 y(My)m(ers)j(published)c
--(a)33 b(su\016x)e(arra)m(y)h(construction)f(algorithm)g(a)h(few)g(y)m
--(ears)h(bac)m(k,)g(whic)m(h)d(can)j(b)s(e)330 2628 y(emplo)m(y)m(ed)27
--b(to)h(sort)g(an)m(y)f(blo)s(c)m(k,)h(no)f(matter)h(ho)m(w)f(rep)s
--(etitiv)m(e,)h(in)d(O\(N)j(log)f(N\))h(time.)39 b(Subsequen)m(t)330
--2737 y(w)m(ork)25 b(b)m(y)f(Kunihik)m(o)f(Sadak)-5 b(ane)24
--b(has)h(pro)s(duced)e(a)i(deriv)-5 b(ativ)m(e)24 b(O\(N)h(\(log)g(N\))p
--Fj(^)p Fl(2\))h(algorithm)d(whic)m(h)330 2847 y(usually)28
--b(outp)s(erforms)h(the)i(Man)m(b)s(er-My)m(ers)g(algorithm.)330
--2988 y(I)g(could)g(ha)m(v)m(e)i(c)m(hanged)f(to)g(Sadak)-5
--b(ane's)32 b(algorithm,)f(but)g(I)g(\014nd)f(it)h(to)h(b)s(e)f(slo)m(w)
--m(er)h(than)f Fj(bzip2)p Fl('s)330 3098 y(existing)38
--b(algorithm)g(for)h(most)h(inputs,)f(and)g(the)g(randomisation)f(mec)m
--(hanism)g(protects)i(ade-)330 3208 y(quately)34 b(against)f(bad)g
--(cases.)52 b(I)33 b(didn't)f(think)g(it)i(w)m(as)g(a)g(go)s(o)s(d)f
--(tradeo\013)i(to)f(mak)m(e.)51 b(P)m(artly)34 b(this)330
--3317 y(is)39 b(due)h(to)h(the)f(fact)h(that)g(I)f(w)m(as)g(not)h(\015o)
--s(o)s(ded)e(with)g(email)g(complain)m(ts)g(ab)s(out)h
--Fj(bzip2-0.1)p Fl('s)330 3427 y(p)s(erformance)30 b(on)g(rep)s(etitiv)m
--(e)g(data,)h(so)g(p)s(erhaps)d(it)i(isn't)g(a)h(problem)d(for)j(real)f
--(inputs.)330 3568 y(Probably)i(the)h(b)s(est)g(long-term)g(solution,)g
--(and)g(the)g(one)h(I)f(ha)m(v)m(e)h(incorp)s(orated)e(in)m(to)i(0.9.5)h
--(and)330 3678 y(ab)s(o)m(v)m(e,)42 b(is)c(to)h(use)f(the)h(existing)f
--(sorting)g(algorithm)f(initially)-8 b(,)38 b(and)g(fall)f(bac)m(k)i(to)
--h(a)f(O\(N)f(\(log)330 3787 y(N\))p Fj(^)p Fl(2\))31
--b(algorithm)f(if)f(the)i(standard)e(algorithm)h(gets)h(in)m(to)f
--(di\016culties.)225 3929 y Fi(\017)60 b Fl(The)31 b(compressed)f
--(\014le)g(format)i(w)m(as)f(nev)m(er)h(designed)d(to)j(b)s(e)f(handled)
--e(b)m(y)i(a)g(library)-8 b(,)29 b(and)i(I)g(ha)m(v)m(e)330
--4039 y(had)d(to)i(jump)e(though)g(some)i(ho)s(ops)e(to)i(pro)s(duce)e
--(an)h(e\016cien)m(t)g(implemen)m(tation)f(of)h(decompres-)330
--4148 y(sion.)38 b(It's)26 b(a)h(bit)e(hairy)-8 b(.)38
--b(T)-8 b(ry)26 b(passing)f Fj(decompress.c)d Fl(through)k(the)g(C)f
--(prepro)s(cessor)g(and)h(y)m(ou'll)330 4258 y(see)32
--b(what)g(I)f(mean.)45 b(Muc)m(h)32 b(of)g(this)e(complexit)m(y)i(could)
--f(ha)m(v)m(e)i(b)s(een)e(a)m(v)m(oided)h(if)e(the)i(compressed)330
--4367 y(size)e(of)h(eac)m(h)g(blo)s(c)m(k)f(of)h(data)g(w)m(as)g
--(recorded)f(in)f(the)h(data)h(stream.)225 4509 y Fi(\017)60
--b Fl(An)30 b(Adler-32)g(c)m(hec)m(ksum,)i(rather)e(than)g(a)h(CR)m(C32)
--g(c)m(hec)m(ksum,)g(w)m(ould)e(b)s(e)h(faster)h(to)g(compute.)150
--4698 y(It)e(w)m(ould)f(b)s(e)g(fair)g(to)h(sa)m(y)h(that)g(the)f
--Fj(bzip2)e Fl(format)i(w)m(as)h(frozen)f(b)s(efore)f(I)h(prop)s(erly)d
--(and)j(fully)d(under-)150 4807 y(sto)s(o)s(d)k(the)h(p)s(erformance)e
--(consequences)i(of)g(doing)e(so.)150 4964 y(Impro)m(v)m(emen)m(ts)d
--(whic)m(h)e(I)i(w)m(as)g(able)f(to)h(incorp)s(orate)f(in)m(to)g(0.9.0,)
--k(despite)24 b(using)g(the)i(same)g(\014le)e(format,)150
--5074 y(are:)225 5230 y Fi(\017)60 b Fl(Single)30 b(arra)m(y)i(implemen)
--m(tation)e(of)h(the)h(in)m(v)m(erse)f(BWT.)h(This)e(signi\014can)m(tly)
--f(sp)s(eeds)i(up)f(decom-)330 5340 y(pression,)f(presumably)f(b)s
--(ecause)i(it)g(reduces)g(the)h(n)m(um)m(b)s(er)e(of)i(cac)m(he)h
--(misses.)p eop
+-31 31 bop 150 -116 a Fl(Chapter)30 b(3:)41 b(Programming)29
+-b(with)g Fi(libbzip2)1881 b Fl(31)150 299 y Fj(The)30
+-b(relev)-5 b(an)m(t)32 b(co)s(de)f(is)f(passed)g(as)g(a)h(parameter.)41
+-b(Y)-8 b(ou)31 b(should)e(supply)g(suc)m(h)h(a)g(function.)150
+-456 y(In)f(either)h(case,)g(once)g(an)f(assertion)h(failure)f(has)f(o)s
+-(ccurred,)i(an)m(y)f Fi(bz_stream)e Fj(records)i(in)m(v)m(olv)m(ed)i
+-(can)150 565 y(b)s(e)f(regarded)g(as)h(in)m(v)-5 b(alid.)41
+-b(Y)-8 b(ou)30 b(should)f(not)i(attempt)h(to)f(resume)f(normal)h(op)s
+-(eration)g(with)f(them.)150 722 y(Y)-8 b(ou)27 b(ma)m(y)-8
+-b(,)28 b(of)f(course,)h(c)m(hange)f(critical)i(error)e(handling)f(to)h
+-(suit)g(y)m(our)g(needs.)39 b(As)26 b(I)h(said)f(ab)s(o)m(v)m(e,)j
+-(crit-)150 832 y(ical)f(errors)g(indicate)g(bugs)e(in)h(the)h(library)f
+-(and)f(should)g(not)i(o)s(ccur.)40 b(All)27 b Fi(")p
+-Fj(normal)p Fi(")g Fj(error)g(situations)150 941 y(are)k(indicated)g
+-(via)f(error)h(return)f(co)s(des)h(from)f(functions,)g(and)g(can)g(b)s
+-(e)g(reco)m(v)m(ered)i(from.)150 1221 y Fk(3.8)68 b(Making)45
+-b(a)g(Windo)l(ws)h(DLL)150 1414 y Fj(Ev)m(erything)31
+-b(related)g(to)h(Windo)m(ws)e(has)f(b)s(een)h(con)m(tributed)h(b)m(y)f
+-(Y)-8 b(oshiok)j(a)32 b(Tsuneo)150 1523 y(\()p Fi
+-(QWF00133@niftyserve.or.jp)45 b Fj(/)53 b Fi(tsuneo-y@is.aist-nara.a)o
+-(c.jp)o Fj(\),)f(so)g(y)m(ou)h(should)e(send)150 1633
+-y(y)m(our)31 b(queries)f(to)h(him)f(\(but)g(p)s(erhaps)f(Cc:)41
+-b(me,)31 b Fi(jseward@acm.org)p Fj(\).)150 1790 y(My)42
+-b(v)-5 b(ague)43 b(understanding)d(of)i(what)g(to)h(do)f(is:)64
+-b(using)41 b(Visual)h(C)p Fi(++)f Fj(5.0,)46 b(op)s(en)c(the)g(pro)5
+-b(ject)43 b(\014le)150 1899 y Fi(libbz2.dsp)p Fj(,)28
+-b(and)h(build.)40 b(That's)31 b(all.)150 2056 y(If)39
+-b(y)m(ou)g(can't)h(op)s(en)f(the)g(pro)5 b(ject)40 b(\014le)f(for)g
+-(some)h(reason,)i(mak)m(e)e(a)f(new)f(one,)k(naming)d(these)h(\014les:)
+-150 2166 y Fi(blocksort.c)p Fj(,)28 b Fi(bzlib.c)p Fj(,)g
+-Fi(compress.c)p Fj(,)g Fi(crctable.c)p Fj(,)g Fi(decompress.c)p
+-Fj(,)f Fi(huffman.c)p Fj(,)150 2275 y Fi(randtable.c)32
+-b Fj(and)h Fi(libbz2.def)p Fj(.)51 b(Y)-8 b(ou)35 b(will)g(also)g(need)
+-f(to)i(name)e(the)h(header)g(\014les)f Fi(bzlib.h)f Fj(and)150
+-2385 y Fi(bzlib_private.h)p Fj(.)150 2542 y(If)d(y)m(ou)h(don't)f(use)h
+-(V)m(C)p Fi(++)p Fj(,)e(y)m(ou)i(ma)m(y)g(need)f(to)h(de\014ne)f(the)h
+-(propro)s(cessor)f(sym)m(b)s(ol)g Fi(_WIN32)p Fj(.)150
+-2698 y(Finally)-8 b(,)30 b Fi(dlltest.c)25 b Fj(is)j(a)g(sample)g
+-(program)h(using)e(the)i(DLL.)e(It)h(has)g(a)g(pro)5
+-b(ject)29 b(\014le,)g Fi(dlltest.dsp)p Fj(.)150 2855
+-y(If)h(y)m(ou)h(just)f(w)m(an)m(t)h(a)f(mak)m(e\014le)i(for)e(Visual)g
+-(C,)g(ha)m(v)m(e)i(a)e(lo)s(ok)h(at)g Fi(makefile.msc)p
+-Fj(.)150 3012 y(Be)j(a)m(w)m(are)i(that)f(if)g(y)m(ou)f(compile)i
+-Fi(bzip2)d Fj(itself)i(on)g(Win32,)h(y)m(ou)f(m)m(ust)f(set)i
+-Fi(BZ_UNIX)c Fj(to)j(0)g(and)f Fi(BZ_)150 3122 y(LCCWIN32)25
+-b Fj(to)j(1,)g(in)f(the)h(\014le)f Fi(bzip2.c)p Fj(,)f(b)s(efore)h
+-(compiling.)41 b(Otherwise)27 b(the)h(resulting)g(binary)e(w)m(on't)150
+-3231 y(w)m(ork)31 b(correctly)-8 b(.)150 3388 y(I)30
+-b(ha)m(v)m(en't)i(tried)f(an)m(y)f(of)h(this)f(stu\013)g(m)m(yself,)i
+-(but)d(it)i(all)g(lo)s(oks)g(plausible.)p eop
 -%%Page: 32 33
 -32 32 bop 150 -116 a Fl(Chapter)30 b(4:)41 b(Miscellanea)2586
--b(32)225 299 y Fi(\017)60 b Fl(F)-8 b(aster)27 b(in)m(v)m(erse)e(MTF)h
--(transform)f(for)g(large)h(MTF)f(v)-5 b(alues.)39 b(The)25
--b(new)g(implemen)m(tation)f(is)g(based)330 408 y(on)30
--b(the)h(notion)f(of)g(sliding)e(blo)s(c)m(ks)h(of)i(v)-5
--b(alues.)225 544 y Fi(\017)60 b Fj(bzip2-0.9.0)24 b Fl(no)m(w)k(reads)f
--(and)f(writes)h(\014les)f(with)g Fj(fread)g Fl(and)h
--Fj(fwrite)p Fl(;)f(v)m(ersion)h(0.1)i(used)d Fj(putc)330
--653 y Fl(and)k Fj(getc)p Fl(.)39 b(Duh!)h(W)-8 b(ell,)31
--b(y)m(ou)f(liv)m(e)g(and)g(learn.)150 836 y(F)-8 b(urther)30
--b(ahead,)g(it)f(w)m(ould)g(b)s(e)g(nice)h(to)g(b)s(e)g(able)f(to)i(do)e
--(random)g(access)j(in)m(to)d(\014les.)40 b(This)28 b(will)f(require)150
--945 y(some)k(careful)e(design)h(of)g(compressed)g(\014le)g(formats.)150
--1227 y Fk(4.2)68 b(P)l(ortabilit)l(y)47 b(issues)150
--1419 y Fl(After)36 b(some)g(consideration,)g(I)f(ha)m(v)m(e)i(decided)d
--(not)i(to)g(use)g(GNU)g Fj(autoconf)d Fl(to)j(con\014gure)g(0.9.5)h(or)
--150 1529 y(1.0.)150 1686 y Fj(autoconf)p Fl(,)31 b(admirable)g(and)h(w)
--m(onderful)f(though)i(it)f(is,)h(mainly)d(assists)j(with)e(p)s
--(ortabilit)m(y)g(problems)150 1795 y(b)s(et)m(w)m(een)f(Unix-lik)m(e)d
--(platforms.)40 b(But)29 b Fj(bzip2)f Fl(do)s(esn't)h(ha)m(v)m(e)h(m)m
--(uc)m(h)f(in)f(the)h(w)m(a)m(y)h(of)g(p)s(ortabilit)m(y)d(prob-)150
--1905 y(lems)35 b(on)h(Unix;)j(most)d(of)g(the)h(di\016culties)d(app)s
--(ear)h(when)g(p)s(orting)g(to)i(the)f(Mac,)j(or)d(to)h(Microsoft's)150
--2015 y(op)s(erating)26 b(systems.)40 b Fj(autoconf)25
--b Fl(do)s(esn't)h(help)g(in)f(those)j(cases,)h(and)d(brings)f(in)g(a)j
--(whole)e(load)g(of)h(new)150 2124 y(complexit)m(y)-8
--b(.)150 2281 y(Most)28 b(p)s(eople)f(should)f(b)s(e)h(able)g(to)h
--(compile)e(the)i(library)d(and)i(program)h(under)e(Unix)g(straigh)m(t)i
--(out-of-)150 2391 y(the-b)s(o)m(x,)j(so)g(to)g(sp)s(eak,)f(esp)s
--(ecially)f(if)g(y)m(ou)i(ha)m(v)m(e)g(a)g(v)m(ersion)f(of)g(GNU)h(C)f
--(a)m(v)-5 b(ailable.)150 2547 y(There)32 b(are)h(a)g(couple)f(of)h
--Fj(__inline__)d Fl(directiv)m(es)i(in)f(the)i(co)s(de.)48
--b(GNU)33 b(C)f(\()p Fj(gcc)p Fl(\))g(should)f(b)s(e)h(able)g(to)150
--2657 y(handle)24 b(them.)39 b(If)25 b(y)m(ou're)i(not)e(using)g(GNU)h
--(C,)f(y)m(our)h(C)f(compiler)f(shouldn't)g(see)i(them)f(at)i(all.)38
--b(If)25 b(y)m(our)150 2767 y(compiler)k(do)s(es,)i(for)g(some)g
--(reason,)h(see)f(them)g(and)f(do)s(esn't)h(lik)m(e)f(them,)i(just)e
--Fj(#define)f(__inline__)150 2876 y Fl(to)37 b(b)s(e)f
--Fj(/*)30 b(*/)p Fl(.)58 b(One)36 b(easy)h(w)m(a)m(y)g(to)h(do)e(this)f
--(is)h(to)h(compile)e(with)g(the)i(\015ag)g Fj(-D__inline__=)p
--Fl(,)d(whic)m(h)150 2986 y(should)28 b(b)s(e)i(understo)s(o)s(d)f(b)m
--(y)h(most)h(Unix)e(compilers.)150 3143 y(If)35 b(y)m(ou)g(still)e(ha)m
--(v)m(e)j(di\016culties,)e(try)h(compiling)e(with)g(the)j(macro)f
--Fj(BZ_STRICT_ANSI)c Fl(de\014ned.)54 b(This)150 3252
--y(should)28 b(enable)i(y)m(ou)h(to)g(build)d(the)i(library)e(in)h(a)i
--(strictly)f(ANSI)g(complian)m(t)f(en)m(vironmen)m(t.)41
--b(Building)150 3362 y(the)25 b(program)f(itself)f(lik)m(e)g(this)h(is)f
--(dangerous)h(and)g(not)g(supp)s(orted,)g(since)g(y)m(ou)h(remo)m(v)m(e)
--g Fj(bzip2)p Fl('s)e(c)m(hec)m(ks)150 3471 y(against)30
--b(compressing)f(directories,)g(sym)m(b)s(olic)g(links,)f(devices,)i
--(and)f(other)h(not-really-a-\014le)g(en)m(tities.)150
--3581 y(This)f(could)g(cause)i(\014lesystem)f(corruption!)150
--3738 y(One)e(other)i(thing:)39 b(if)27 b(y)m(ou)j(create)g(a)f
--Fj(bzip2)f Fl(binary)f(for)i(public)d(distribution,)g(please)i(try)h
--(and)g(link)d(it)150 3847 y(statically)g(\()p Fj(gcc)k(-s)p
--Fl(\).)39 b(This)25 b(a)m(v)m(oids)i(all)f(sorts)h(of)g(library-v)m
--(ersion)d(issues)h(that)i(others)g(ma)m(y)g(encoun)m(ter)150
--3957 y(later)j(on.)150 4114 y(If)f(y)m(ou)g(build)e Fj(bzip2)h
--Fl(on)h(Win32,)h(y)m(ou)f(m)m(ust)g(set)h Fj(BZ_UNIX)e
--Fl(to)i(0)f(and)g Fj(BZ_LCCWIN32)d Fl(to)k(1,)g(in)e(the)i(\014le)150
--4223 y Fj(bzip2.c)p Fl(,)f(b)s(efore)h(compiling.)38
--b(Otherwise)29 b(the)i(resulting)d(binary)h(w)m(on't)i(w)m(ork)f
--(correctly)-8 b(.)150 4505 y Fk(4.3)68 b(Rep)t(orting)46
--b(bugs)150 4698 y Fl(I)25 b(tried)f(prett)m(y)i(hard)e(to)i(mak)m(e)g
--(sure)f Fj(bzip2)e Fl(is)i(bug)f(free,)j(b)s(oth)d(b)m(y)h(design)f
--(and)h(b)m(y)g(testing.)39 b(Hop)s(efully)150 4807 y(y)m(ou'll)29
--b(nev)m(er)i(need)f(to)h(read)g(this)e(section)h(for)h(real.)150
--4964 y(Nev)m(ertheless,)36 b(if)c Fj(bzip2)h Fl(dies)g(with)f(a)i
--(segmen)m(tation)h(fault,)g(a)f(bus)f(error)g(or)h(an)g(in)m(ternal)e
--(assertion)150 5074 y(failure,)i(it)h(will)d(ask)j(y)m(ou)g(to)g(email)
--f(me)h(a)g(bug)f(rep)s(ort.)54 b(Exp)s(erience)33 b(with)h(v)m(ersion)g
--(0.1)i(sho)m(ws)e(that)150 5183 y(almost)c(all)g(these)h(problems)d
--(can)j(b)s(e)f(traced)h(to)g(either)f(compiler)e(bugs)i(or)g(hardw)m
--(are)g(problems.)225 5340 y Fi(\017)60 b Fl(Recompile)22
--b(the)h(program)g(with)f(no)h(optimisation,)g(and)f(see)i(if)e(it)g(w)m
--(orks.)39 b(And/or)22 b(try)h(a)g(di\013eren)m(t)p eop
+-b(32)150 299 y Fg(4)80 b(Miscellanea)150 549 y Fj(These)31
+-b(are)f(just)g(some)h(random)f(though)m(ts)h(of)f(mine.)41
+-b(Y)-8 b(our)30 b(mileage)i(ma)m(y)f(v)-5 b(ary)d(.)150
+-826 y Fk(4.1)68 b(Limitations)47 b(of)e(the)g(compressed)g(\014le)h
+-(format)150 1018 y Fi(bzip2-1.0)p Fj(,)c Fi(0.9.5)e Fj(and)h
+-Fi(0.9.0)f Fj(use)i(exactly)h(the)f(same)g(\014le)g(format)g(as)f(the)h
+-(previous)g(v)m(ersion,)150 1128 y Fi(bzip2-0.1)p Fj(.)72
+-b(This)41 b(decision)h(w)m(as)g(made)f(in)g(the)h(in)m(terests)h(of)f
+-(stabilit)m(y)-8 b(.)76 b(Creating)43 b(y)m(et)g(another)150
+-1238 y(incompatible)i(compressed)g(\014le)g(format)g(w)m(ould)f(create)
+-i(further)e(confusion)h(and)e(disruption)h(for)150 1347
+-y(users.)150 1504 y(Nev)m(ertheless,)30 b(this)d(is)f(not)h(a)g
+-(painless)g(decision.)40 b(Dev)m(elopmen)m(t)28 b(w)m(ork)f(since)h
+-(the)f(release)h(of)f Fi(bzip2-)150 1614 y(0.1)g Fj(in)h(August)g(1997)
+-i(has)d(sho)m(wn)h(complexities)i(in)e(the)g(\014le)g(format)h(whic)m
+-(h)f(slo)m(w)h(do)m(wn)e(decompres-)150 1723 y(sion)j(and,)g(in)g
+-(retrosp)s(ect,)i(are)f(unnecessary)-8 b(.)41 b(These)30
+-b(are:)225 1880 y Fh(\017)60 b Fj(The)33 b(run-length)g(enco)s(der,)h
+-(whic)m(h)f(is)g(the)h(\014rst)f(of)g(the)h(compression)f
+-(transformations,)i(is)e(en-)330 1990 y(tirely)h(irrelev)-5
+-b(an)m(t.)48 b(The)32 b(original)i(purp)s(ose)d(w)m(as)i(to)g(protect)h
+-(the)f(sorting)g(algorithm)g(from)g(the)330 2099 y(v)m(ery)26
+-b(w)m(orst)g(case)h(input:)37 b(a)26 b(string)g(of)f(rep)s(eated)h(sym)
+-m(b)s(ols.)39 b(But)25 b(algorithm)h(steps)g(Q6a)g(and)f(Q6b)330
+-2209 y(in)j(the)g(original)i(Burro)m(ws-Wheeler)e(tec)m(hnical)i(rep)s
+-(ort)f(\(SR)m(C-124\))h(sho)m(w)e(ho)m(w)g(rep)s(eats)g(can)h(b)s(e)330
+-2318 y(handled)g(without)i(di\016cult)m(y)g(in)f(blo)s(c)m(k)h
+-(sorting.)225 2451 y Fh(\017)60 b Fj(The)27 b(randomisation)h(mec)m
+-(hanism)f(do)s(esn't)g(really)i(need)e(to)h(b)s(e)e(there.)41
+-b(Udi)27 b(Man)m(b)s(er)g(and)f(Gene)330 2561 y(My)m(ers)31
+-b(published)d(a)j(su\016x)e(arra)m(y)h(construction)i(algorithm)f(a)f
+-(few)g(y)m(ears)h(bac)m(k,)g(whic)m(h)e(can)i(b)s(e)330
+-2670 y(emplo)m(y)m(ed)26 b(to)g(sort)f(an)m(y)g(blo)s(c)m(k,)i(no)e
+-(matter)h(ho)m(w)f(rep)s(etitiv)m(e,)j(in)c(O\(N)i(log)g(N\))f(time.)40
+-b(Subsequen)m(t)330 2780 y(w)m(ork)24 b(b)m(y)f(Kunihik)m(o)g(Sadak)-5
+-b(ane)23 b(has)g(pro)s(duced)e(a)j(deriv)-5 b(ativ)m(e)25
+-b(O\(N)f(\(log)g(N\))p Fi(^)p Fj(2\))h(algorithm)f(whic)m(h)330
+-2890 y(usually)30 b(outp)s(erforms)g(the)g(Man)m(b)s(er-My)m(ers)i
+-(algorithm.)330 3023 y(I)f(could)f(ha)m(v)m(e)i(c)m(hanged)f(to)g
+-(Sadak)-5 b(ane's)30 b(algorithm,)i(but)e(I)h(\014nd)e(it)i(to)g(b)s(e)
+-f(slo)m(w)m(er)i(than)e Fi(bzip2)p Fj('s)330 3132 y(existing)39
+-b(algorithm)f(for)g(most)g(inputs,)h(and)d(the)i(randomisation)g(mec)m
+-(hanism)g(protects)h(ade-)330 3242 y(quately)34 b(against)g(bad)f
+-(cases.)50 b(I)33 b(didn't)g(think)g(it)h(w)m(as)f(a)h(go)s(o)s(d)f
+-(tradeo\013)h(to)g(mak)m(e.)50 b(P)m(artly)35 b(this)330
+-3351 y(is)40 b(due)f(to)i(the)f(fact)h(that)f(I)g(w)m(as)g(not)g(\015o)
+-s(o)s(ded)f(with)g(email)i(complain)m(ts)g(ab)s(out)e
+-Fi(bzip2-0.1)p Fj('s)330 3461 y(p)s(erformance)30 b(on)g(rep)s(etitiv)m
+-(e)j(data,)e(so)f(p)s(erhaps)f(it)i(isn't)g(a)f(problem)g(for)h(real)g
+-(inputs.)330 3594 y(Probably)g(the)h(b)s(est)f(long-term)i(solution,)f
+-(and)f(the)g(one)h(I)f(ha)m(v)m(e)i(incorp)s(orated)e(in)m(to)i(0.9.5)g
+-(and)330 3704 y(ab)s(o)m(v)m(e,)41 b(is)d(to)h(use)f(the)h(existing)g
+-(sorting)g(algorithm)g(initially)-8 b(,)42 b(and)37 b(fall)i(bac)m(k)g
+-(to)f(a)h(O\(N)f(\(log)330 3813 y(N\))p Fi(^)p Fj(2\))31
+-b(algorithm)h(if)e(the)h(standard)e(algorithm)j(gets)f(in)m(to)h
+-(di\016culties.)225 3946 y Fh(\017)60 b Fj(The)29 b(compressed)g
+-(\014le)g(format)h(w)m(as)f(nev)m(er)g(designed)g(to)h(b)s(e)e(handled)
+-g(b)m(y)h(a)g(library)-8 b(,)30 b(and)e(I)h(ha)m(v)m(e)330
+-4056 y(had)e(to)h(jump)e(though)h(some)h(ho)s(ops)e(to)i(pro)s(duce)f
+-(an)g(e\016cien)m(t)i(implemen)m(tation)g(of)e(decompres-)330
+-4165 y(sion.)39 b(It's)24 b(a)h(bit)f(hairy)-8 b(.)39
+-b(T)-8 b(ry)24 b(passing)g Fi(decompress.c)d Fj(through)i(the)i(C)e
+-(prepro)s(cessor)i(and)e(y)m(ou'll)330 4275 y(see)31
+-b(what)e(I)h(mean.)41 b(Muc)m(h)30 b(of)g(this)g(complexit)m(y)i(could)
+-e(ha)m(v)m(e)g(b)s(een)g(a)m(v)m(oided)h(if)f(the)g(compressed)330
+-4384 y(size)h(of)g(eac)m(h)g(blo)s(c)m(k)g(of)g(data)f(w)m(as)h
+-(recorded)f(in)h(the)f(data)h(stream.)225 4517 y Fh(\017)60
+-b Fj(An)29 b(Adler-32)j(c)m(hec)m(ksum,)f(rather)g(than)f(a)g(CR)m(C32)
+-h(c)m(hec)m(ksum,)h(w)m(ould)e(b)s(e)g(faster)h(to)g(compute.)150
+-4698 y(It)45 b(w)m(ould)g(b)s(e)f(fair)h(to)h(sa)m(y)f(that)g(the)h
+-Fi(bzip2)d Fj(format)i(w)m(as)g(frozen)g(b)s(efore)g(I)g(prop)s(erly)f
+-(and)g(fully)150 4807 y(understo)s(o)s(d)29 b(the)i(p)s(erformance)f
+-(consequences)h(of)f(doing)h(so.)150 4964 y(Impro)m(v)m(emen)m(ts)25
+-b(whic)m(h)d(I)i(w)m(as)f(able)g(to)h(incorp)s(orate)g(in)m(to)g
+-(0.9.0,)j(despite)d(using)e(the)i(same)f(\014le)g(format,)150
+-5074 y(are:)225 5230 y Fh(\017)60 b Fj(Single)30 b(arra)m(y)g(implemen)
+-m(tation)i(of)d(the)h(in)m(v)m(erse)h(BWT.)f(This)f(signi\014can)m(tly)
+-i(sp)s(eeds)e(up)f(decom-)330 5340 y(pression,)i(presumably)f(b)s
+-(ecause)i(it)g(reduces)f(the)h(n)m(um)m(b)s(er)e(of)i(cac)m(he)g
+-(misses.)p eop
 -%%Page: 33 34
 -33 33 bop 150 -116 a Fl(Chapter)30 b(4:)41 b(Miscellanea)2586
--b(33)330 299 y(compiler.)77 b(I)43 b(heard)f(all)g(sorts)h(of)h
--(stories)e(ab)s(out)h(v)-5 b(arious)42 b(\015a)m(v)m(ours)h(of)h(GNU)f
--(C)g(\(and)g(other)330 408 y(compilers\))20 b(generating)i(bad)e(co)s
--(de)i(for)f Fj(bzip2)p Fl(,)h(and)f(I'v)m(e)h(run)e(across)i(t)m(w)m(o)
--g(suc)m(h)f(examples)g(m)m(yself.)330 606 y(2.7.X)35
--b(v)m(ersions)e(of)g(GNU)h(C)f(are)h(kno)m(wn)f(to)h(generate)h(bad)d
--(co)s(de)i(from)f(time)g(to)h(time,)g(at)g(high)330 716
--y(optimisation)20 b(lev)m(els.)37 b(If)21 b(y)m(ou)g(get)i(problems,)e
--(try)g(using)f(the)i(\015ags)f Fj(-O2)f(-fomit-frame-pointer)330
--825 y(-fno-strength-reduce)p Fl(.)35 b(Y)-8 b(ou)31 b(should)d(sp)s
--(eci\014cally)h Fc(not)j Fl(use)e Fj(-funroll-loops)p
--Fl(.)330 1023 y(Y)-8 b(ou)38 b(ma)m(y)g(notice)g(that)g(the)g(Mak)m
--(e\014le)g(runs)e(six)g(tests)i(as)g(part)f(of)h(the)g(build)c(pro)s
--(cess.)62 b(If)37 b(the)330 1132 y(program)43 b(passes)g(all)f(of)h
--(these,)k(it's)c(a)h(prett)m(y)f(go)s(o)s(d)g(\(but)g(not)g(100\045\))i
--(indication)c(that)j(the)330 1242 y(compiler)29 b(has)h(done)g(its)g
--(job)g(correctly)-8 b(.)225 1440 y Fi(\017)60 b Fl(If)33
--b Fj(bzip2)f Fl(crashes)i(randomly)-8 b(,)33 b(and)g(the)h(crashes)g
--(are)g(not)g(rep)s(eatable,)g(y)m(ou)g(ma)m(y)g(ha)m(v)m(e)h(a)f
--(\015aky)330 1549 y(memory)k(subsystem.)64 b Fj(bzip2)37
--b Fl(really)g(hammers)h(y)m(our)g(memory)g(hierarc)m(h)m(y)-8
--b(,)41 b(and)d(if)f(it's)h(a)h(bit)330 1659 y(marginal,)33
--b(y)m(ou)h(ma)m(y)g(get)h(these)f(problems.)49 b(Ditto)34
--b(if)f(y)m(our)h(disk)e(or)h(I/O)h(subsystem)e(is)h(slo)m(wly)330
--1768 y(failing.)39 b(Y)-8 b(up,)30 b(this)f(really)g(do)s(es)h(happ)s
--(en.)330 1966 y(T)-8 b(ry)28 b(using)f(a)i(di\013eren)m(t)f(mac)m(hine)
--g(of)h(the)g(same)f(t)m(yp)s(e,)i(and)e(see)h(if)e(y)m(ou)i(can)g(rep)s
--(eat)g(the)f(problem.)225 2163 y Fi(\017)60 b Fl(This)21
--b(isn't)i(really)f(a)h(bug,)i(but)d(...)39 b(If)23 b
--Fj(bzip2)f Fl(tells)g(y)m(ou)h(y)m(our)h(\014le)e(is)g(corrupted)h(on)g
--(decompression,)330 2273 y(and)29 b(y)m(ou)g(obtained)f(the)i(\014le)e
--(via)h(FTP)-8 b(,)29 b(there)h(is)e(a)h(p)s(ossibilit)m(y)d(that)k(y)m
--(ou)f(forgot)h(to)g(tell)e(FTP)h(to)330 2383 y(do)23
--b(a)g(binary)e(mo)s(de)i(transfer.)38 b(That)23 b(absolutely)f(will)e
--(cause)j(the)h(\014le)e(to)h(b)s(e)g(non-decompressible.)330
--2492 y(Y)-8 b(ou'll)30 b(ha)m(v)m(e)h(to)g(transfer)f(it)g(again.)150
--2737 y(If)i(y)m(ou'v)m(e)h(incorp)s(orated)e Fj(libbzip2)f
--Fl(in)m(to)i(y)m(our)g(o)m(wn)g(program)g(and)g(are)g(getting)h
--(problems,)e(please,)150 2847 y(please,)d(please,)h(c)m(hec)m(k)g(that)
--f(the)g(parameters)g(y)m(ou)g(are)g(passing)f(in)f(calls)h(to)h(the)g
--(library)-8 b(,)26 b(are)j(correct,)150 2956 y(and)e(in)f(accordance)k
--(with)c(what)i(the)g(do)s(cumen)m(tation)f(sa)m(ys)h(is)f(allo)m(w)m
--(able.)39 b(I)28 b(ha)m(v)m(e)h(tried)e(to)h(mak)m(e)h(the)150
--3066 y(library)f(robust)i(against)g(suc)m(h)g(problems,)f(but)h(I'm)g
--(sure)g(I)g(ha)m(v)m(en't)h(succeeded.)150 3223 y(Finally)-8
--b(,)32 b(if)g(the)h(ab)s(o)m(v)m(e)i(commen)m(ts)e(don't)g(help,)g(y)m
--(ou'll)f(ha)m(v)m(e)i(to)g(send)e(me)h(a)g(bug)g(rep)s(ort.)48
--b(No)m(w,)34 b(it's)150 3332 y(just)c(amazing)g(ho)m(w)h(man)m(y)f(p)s
--(eople)g(will)d(send)j(me)g(a)h(bug)f(rep)s(ort)g(sa)m(ying)g
--(something)g(lik)m(e)481 3483 y(bzip2)f(crashed)h(with)f(segmen)m
--(tation)j(fault)e(on)g(m)m(y)g(mac)m(hine)150 3640 y(and)h(absolutely)f
--(nothing)h(else.)44 b(Needless)32 b(to)g(sa)m(y)-8 b(,)33
--b(a)f(suc)m(h)f(a)h(rep)s(ort)f(is)g Fc(totally)-8 b(,)32
--b(utterly)-8 b(,)32 b(completely)150 3750 y(and)40 b(comprehensiv)m
--(ely)g(100\045)h(useless;)46 b(a)41 b(w)m(aste)g(of)g(y)m(our)g(time,)i
--(m)m(y)e(time,)i(and)e(net)g(bandwidth)p Fl(.)150 3859
--y(With)31 b(no)h(details)f(at)i(all,)e(there's)h(no)g(w)m(a)m(y)h(I)f
--(can)g(p)s(ossibly)d(b)s(egin)h(to)j(\014gure)e(out)i(what)e(the)i
--(problem)150 3969 y(is.)150 4126 y(The)d(rules)e(of)i(the)g(game)h
--(are:)41 b(facts,)32 b(facts,)f(facts.)41 b(Don't)31
--b(omit)f(them)g(b)s(ecause)g Fj(")p Fl(oh,)g(they)g(w)m(on't)h(b)s(e)
--150 4235 y(relev)-5 b(an)m(t)p Fj(")p Fl(.)41 b(A)m(t)31
--b(the)g(bare)f(minim)m(um:)481 4386 y(Mac)m(hine)h(t)m(yp)s(e.)61
--b(Op)s(erating)29 b(system)h(v)m(ersion.)481 4490 y(Exact)h(v)m(ersion)
--f(of)h Fj(bzip2)e Fl(\(do)h Fj(bzip2)47 b(-V)p Fl(\).)481
--4594 y(Exact)31 b(v)m(ersion)f(of)h(the)f(compiler)f(used.)481
--4698 y(Flags)i(passed)e(to)j(the)e(compiler.)150 4854
--y(Ho)m(w)m(ev)m(er,)i(the)d(most)h(imp)s(ortan)m(t)f(single)f(thing)g
--(that)i(will)d(help)h(me)h(is)f(the)i(\014le)e(that)i(y)m(ou)g(w)m(ere)
--g(trying)150 4964 y(to)f(compress)f(or)g(decompress)g(at)h(the)f(time)g
--(the)g(problem)f(happ)s(ened.)38 b(Without)28 b(that,)h(m)m(y)g(abilit)
--m(y)d(to)150 5074 y(do)k(an)m(ything)g(more)h(than)f(sp)s(eculate)g(ab)
--s(out)g(the)g(cause,)i(is)d(limited.)150 5230 y(Please)34
--b(remem)m(b)s(er)f(that)h(I)f(connect)i(to)f(the)g(In)m(ternet)g(with)e
--(a)i(mo)s(dem,)g(so)f(y)m(ou)h(should)e(con)m(tact)k(me)150
--5340 y(b)s(efore)30 b(mailing)e(me)j(h)m(uge)f(\014les.)p
--eop
+-b(33)225 299 y Fh(\017)60 b Fj(F)-8 b(aster)25 b(in)m(v)m(erse)f(MTF)g
+-(transform)f(for)g(large)i(MTF)f(v)-5 b(alues.)38 b(The)23
+-b(new)g(implemen)m(tation)i(is)f(based)330 408 y(on)30
+-b(the)h(notion)g(of)f(sliding)h(blo)s(c)m(ks)g(of)f(v)-5
+-b(alues.)225 544 y Fh(\017)60 b Fi(bzip2-0.9.0)23 b Fj(no)m(w)j(reads)g
+-(and)f(writes)h(\014les)g(with)g Fi(fread)f Fj(and)g
+-Fi(fwrite)p Fj(;)h(v)m(ersion)h(0.1)g(used)e Fi(putc)330
+-653 y Fj(and)30 b Fi(getc)p Fj(.)39 b(Duh!)g(W)-8 b(ell,)32
+-b(y)m(ou)f(liv)m(e)g(and)f(learn.)150 836 y(F)-8 b(urther)28
+-b(ahead,)h(it)g(w)m(ould)f(b)s(e)g(nice)g(to)i(b)s(e)d(able)i(to)g(do)f
+-(random)f(access)j(in)m(to)f(\014les.)40 b(This)28 b(will)h(require)150
+-945 y(some)i(careful)g(design)f(of)g(compressed)h(\014le)f(formats.)150
+-1227 y Fk(4.2)68 b(P)l(ortabilit)l(y)47 b(issues)150
+-1419 y Fj(After)33 b(some)h(consideration,)h(I)e(ha)m(v)m(e)h(decided)f
+-(not)g(to)h(use)f(GNU)g Fi(autoconf)e Fj(to)j(con\014gure)f(0.9.5)i(or)
+-150 1529 y(1.0.)150 1686 y Fi(autoconf)p Fj(,)30 b(admirable)i(and)e(w)
+-m(onderful)h(though)h(it)g(is,)h(mainly)e(assists)h(with)g(p)s
+-(ortabilit)m(y)g(problems)150 1795 y(b)s(et)m(w)m(een)46
+-b(Unix-lik)m(e)h(platforms.)85 b(But)45 b Fi(bzip2)f
+-Fj(do)s(esn't)h(ha)m(v)m(e)h(m)m(uc)m(h)g(in)f(the)g(w)m(a)m(y)h(of)g
+-(p)s(ortabilit)m(y)150 1905 y(problems)21 b(on)h(Unix;)j(most)d(of)g
+-(the)g(di\016culties)g(app)s(ear)f(when)g(p)s(orting)h(to)g(the)h(Mac,)
+-h(or)e(to)h(Microsoft's)150 2015 y(op)s(erating)j(systems.)40
+-b Fi(autoconf)23 b Fj(do)s(esn't)j(help)f(in)g(those)i(cases,)g(and)e
+-(brings)g(in)h(a)g(whole)f(load)i(of)e(new)150 2124 y(complexit)m(y)-8
+-b(.)150 2281 y(Most)34 b(p)s(eople)e(should)g(b)s(e)g(able)h(to)g
+-(compile)h(the)f(library)f(and)g(program)h(under)e(Unix)h(straigh)m(t)i
+-(out-)150 2391 y(of-the-b)s(o)m(x,)e(so)e(to)i(sp)s(eak,)e(esp)s
+-(ecially)h(if)f(y)m(ou)h(ha)m(v)m(e)g(a)g(v)m(ersion)g(of)g(GNU)g(C)e
+-(a)m(v)-5 b(ailable.)150 2547 y(There)31 b(are)h(a)f(couple)g(of)g
+-Fi(__inline__)e Fj(directiv)m(es)k(in)d(the)i(co)s(de.)42
+-b(GNU)32 b(C)f(\()p Fi(gcc)p Fj(\))f(should)g(b)s(e)h(able)g(to)150
+-2657 y(handle)23 b(them.)38 b(If)23 b(y)m(ou're)h(not)g(using)f(GNU)h
+-(C,)f(y)m(our)h(C)e(compiler)j(shouldn't)d(see)i(them)g(at)g(all.)39
+-b(If)23 b(y)m(our)150 2767 y(compiler)30 b(do)s(es,)f(for)f(some)h
+-(reason,)h(see)f(them)g(and)f(do)s(esn't)g(lik)m(e)i(them,)g(just)e
+-Fi(#define)f(__inline__)150 2876 y Fj(to)37 b(b)s(e)f
+-Fi(/*)29 b(*/)p Fj(.)58 b(One)36 b(easy)h(w)m(a)m(y)f(to)i(do)e(this)g
+-(is)g(to)h(compile)g(with)f(the)h(\015ag)f Fi(-D__inline__=)p
+-Fj(,)e(whic)m(h)150 2986 y(should)29 b(b)s(e)h(understo)s(o)s(d)f(b)m
+-(y)h(most)h(Unix)f(compilers.)150 3143 y(If)k(y)m(ou)g(still)h(ha)m(v)m
+-(e)g(di\016culties,)h(try)e(compiling)g(with)g(the)g(macro)h
+-Fi(BZ_STRICT_ANSI)30 b Fj(de\014ned.)50 b(This)150 3252
+-y(should)27 b(enable)i(y)m(ou)g(to)g(build)e(the)i(library)f(in)g(a)g
+-(strictly)i(ANSI)e(complian)m(t)i(en)m(vironmen)m(t.)41
+-b(Building)150 3362 y(the)22 b(program)h(itself)g(lik)m(e)g(this)f(is)g
+-(dangerous)g(and)f(not)h(supp)s(orted,)h(since)f(y)m(ou)h(remo)m(v)m(e)
+-h Fi(bzip2)p Fj('s)c(c)m(hec)m(ks)150 3471 y(against)27
+-b(compressing)g(directories,)i(sym)m(b)s(olic)d(links,)h(devices,)h
+-(and)e(other)h(not-really-a-\014le)i(en)m(tities.)150
+-3581 y(This)h(could)g(cause)h(\014lesystem)g(corruption!)150
+-3738 y(One)c(other)h(thing:)40 b(if)27 b(y)m(ou)h(create)h(a)e
+-Fi(bzip2)f Fj(binary)h(for)g(public)g(distribution,)h(please)g(try)g
+-(and)e(link)h(it)150 3847 y(statically)g(\()p Fi(gcc)j(-s)p
+-Fj(\).)39 b(This)24 b(a)m(v)m(oids)j(all)e(sorts)h(of)f(library-v)m
+-(ersion)h(issues)e(that)i(others)g(ma)m(y)f(encoun)m(ter)150
+-3957 y(later)32 b(on.)150 4114 y(If)d(y)m(ou)g(build)e
+-Fi(bzip2)h Fj(on)g(Win32,)i(y)m(ou)f(m)m(ust)g(set)h
+-Fi(BZ_UNIX)c Fj(to)k(0)f(and)f Fi(BZ_LCCWIN32)e Fj(to)k(1,)f(in)g(the)g
+-(\014le)150 4223 y Fi(bzip2.c)p Fj(,)g(b)s(efore)h(compiling.)41
+-b(Otherwise)31 b(the)g(resulting)g(binary)f(w)m(on't)h(w)m(ork)g
+-(correctly)-8 b(.)150 4505 y Fk(4.3)68 b(Rep)t(orting)46
+-b(bugs)150 4698 y Fj(I)23 b(tried)g(prett)m(y)h(hard)e(to)i(mak)m(e)f
+-(sure)g Fi(bzip2)e Fj(is)i(bug)f(free,)j(b)s(oth)d(b)m(y)h(design)g
+-(and)f(b)m(y)h(testing.)39 b(Hop)s(efully)150 4807 y(y)m(ou'll)31
+-b(nev)m(er)g(need)g(to)g(read)f(this)h(section)g(for)g(real.)150
+-4964 y(Nev)m(ertheless,)j(if)d Fi(bzip2)f Fj(dies)h(with)g(a)g(segmen)m
+-(tation)j(fault,)e(a)f(bus)f(error)i(or)f(an)g(in)m(ternal)h(assertion)
+-150 5074 y(failure,)j(it)f(will)f(ask)h(y)m(ou)g(to)g(email)g(me)g(a)f
+-(bug)g(rep)s(ort.)50 b(Exp)s(erience)33 b(with)g(v)m(ersion)i(0.1)f
+-(sho)m(ws)f(that)150 5183 y(almost)e(all)g(these)g(problems)f(can)h(b)s
+-(e)e(traced)j(to)f(either)g(compiler)g(bugs)f(or)h(hardw)m(are)f
+-(problems.)225 5340 y Fh(\017)60 b Fj(Recompile)22 b(the)f(program)f
+-(with)h(no)f(optimisation,)k(and)c(see)h(if)g(it)g(w)m(orks.)38
+-b(And/or)20 b(try)g(a)h(di\013eren)m(t)p eop
 -%%Page: 34 35
 -34 34 bop 150 -116 a Fl(Chapter)30 b(4:)41 b(Miscellanea)2586
--b(34)150 299 y Fk(4.4)68 b(Did)45 b(y)l(ou)g(get)h(the)f(righ)l(t)h
--(pac)l(k)-7 b(age?)150 491 y Fj(bzip2)34 b Fl(is)h(a)h(resource)g(hog.)
--56 b(It)36 b(soaks)g(up)f(large)g(amoun)m(ts)h(of)g(CPU)f(cycles)h(and)
--f(memory)-8 b(.)57 b(Also,)36 b(it)150 601 y(giv)m(es)26
--b(v)m(ery)h(large)f(latencies.)39 b(In)25 b(the)h(w)m(orst)g(case,)i(y)
--m(ou)f(can)f(feed)g(man)m(y)g(megab)m(ytes)h(of)f(uncompressed)150
--711 y(data)45 b(in)m(to)e(the)i(library)c(b)s(efore)j(getting)g(an)m(y)
--g(compressed)g(output,)j(so)d(this)f(probably)f(rules)h(out)150
--820 y(applications)29 b(requiring)e(in)m(teractiv)m(e)32
--b(b)s(eha)m(viour.)150 977 y(These)38 b(aren't)h(faults)e(of)h(m)m(y)g
--(implemen)m(tation,)h(I)f(hop)s(e,)i(but)d(more)h(an)g(in)m(trinsic)e
--(prop)s(ert)m(y)h(of)i(the)150 1087 y(Burro)m(ws-Wheeler)30
--b(transform)g(\(unfortunately\).)40 b(Ma)m(yb)s(e)31
--b(this)e(isn't)h(what)g(y)m(ou)h(w)m(an)m(t.)150 1244
--y(If)h(y)m(ou)h(w)m(an)m(t)g(a)g(compressor)g(and/or)f(library)e(whic)m
--(h)h(is)h(faster,)i(uses)e(less)g(memory)g(but)g(gets)h(prett)m(y)150
--1353 y(go)s(o)s(d)e(compression,)g(and)g(has)h(minimal)c(latency)-8
--b(,)33 b(consider)e(Jean-loup)f(Gailly's)g(and)h(Mark)h(Adler's)150
--1463 y(w)m(ork,)f Fj(zlib-1.1.2)c Fl(and)j Fj(gzip-1.2.4)p
--Fl(.)38 b(Lo)s(ok)31 b(for)f(them)g(at)150 1620 y Fj
--(http://www.cdrom.com/pub)o(/inf)o(ozip)o(/zl)o(ib)24
--b Fl(and)30 b Fj(http://www.gzip.org)25 b Fl(resp)s(ectiv)m(ely)-8
--b(.)150 1776 y(F)g(or)32 b(something)f(faster)i(and)e(ligh)m(ter)f
--(still,)h(y)m(ou)g(migh)m(t)h(try)f(Markus)h(F)g(X)f(J)h(Ob)s(erh)m
--(umer's)d Fj(LZO)i Fl(real-)150 1886 y(time)f
--(compression/decompression)f(library)-8 b(,)28 b(at)150
--1996 y Fj(http://wildsau.idv.uni-l)o(inz.)o(ac.a)o(t/m)o(fx/l)o(zo.h)o
--(tml)o Fl(.)150 2152 y(If)38 b(y)m(ou)h(w)m(an)m(t)g(to)h(use)e(the)g
--Fj(bzip2)g Fl(algorithms)f(to)i(compress)f(small)g(blo)s(c)m(ks)f(of)i
--(data,)j(64k)d(b)m(ytes)g(or)150 2262 y(smaller,)i(for)e(example)g(on)h
--(an)f(on-the-\015y)h(disk)e(compressor,)k(y)m(ou'd)e(b)s(e)f(w)m(ell)g
--(advised)f(not)i(to)g(use)150 2372 y(this)i(library)-8
--b(.)77 b(Instead,)47 b(I'v)m(e)d(made)f(a)h(sp)s(ecial)e(library)f
--(tuned)h(for)h(that)h(kind)d(of)j(use.)79 b(It's)43 b(part)150
--2481 y(of)d Fj(e2compr-0.40)p Fl(,)f(an)g(on-the-\015y)h(disk)e
--(compressor)h(for)h(the)f(Lin)m(ux)f Fj(ext2)h Fl(\014lesystem.)67
--b(Lo)s(ok)40 b(at)150 2591 y Fj(http://www.netspace.net.)o(au/~)o(reit)
--o(er/)o(e2co)o(mpr)p Fl(.)150 2880 y Fk(4.5)68 b(T)-11
--b(esting)150 3072 y Fl(A)30 b(record)h(of)f(the)h(tests)g(I'v)m(e)g
--(done.)150 3229 y(First,)f(some)h(data)g(sets:)225 3386
--y Fi(\017)60 b Fl(B:)32 b(a)f(directory)f(con)m(taining)h(6001)i
--(\014les,)d(one)h(for)g(ev)m(ery)h(length)e(in)g(the)h(range)g(0)h(to)f
--(6000)i(b)m(ytes.)330 3496 y(The)d(\014les)f(con)m(tain)i(random)e(lo)m
--(w)m(ercase)j(letters.)41 b(18.7)32 b(megab)m(ytes.)225
--3633 y Fi(\017)60 b Fl(H:)36 b(m)m(y)f(home)h(directory)f(tree.)56
--b(Do)s(cumen)m(ts,)38 b(source)d(co)s(de,)i(mail)d(\014les,)i
--(compressed)f(data.)57 b(H)330 3743 y(con)m(tains)39
--b(B,)h(and)f(also)g(a)g(directory)g(of)g(\014les)f(designed)g(as)i(b)s
--(oundary)d(cases)j(for)f(the)g(sorting;)330 3853 y(mostly)30
--b(v)m(ery)h(rep)s(etitiv)m(e,)f(nast)m(y)h(\014les.)39
--b(565)32 b(megab)m(ytes.)225 3990 y Fi(\017)60 b Fl(A:)43
--b(directory)f(tree)i(holding)d(v)-5 b(arious)41 b(applications)g(built)
--g(from)h(source:)66 b Fj(egcs)p Fl(,)45 b Fj(gcc-2.8.1)p
--Fl(,)330 4100 y(KDE,)31 b(GTK,)f(Octa)m(v)m(e,)j(etc.)41
--b(2200)33 b(megab)m(ytes.)150 4285 y(The)i(tests)g(conducted)g(are)h
--(as)f(follo)m(ws.)54 b(Eac)m(h)36 b(test)g(means)f(compressing)f(\(a)h
--(cop)m(y)h(of)7 b(\))36 b(eac)m(h)g(\014le)e(in)150 4394
--y(the)d(data)g(set,)g(decompressing)e(it)h(and)g(comparing)f(it)h
--(against)h(the)g(original.)150 4551 y(First,)26 b(a)g(bunc)m(h)f(of)h
--(tests)h(with)d(blo)s(c)m(k)h(sizes)h(and)f(in)m(ternal)g(bu\013er)f
--(sizes)i(set)g(v)m(ery)g(small,)g(to)g(detect)i(an)m(y)150
--4661 y(problems)g(with)g(the)i(blo)s(c)m(king)f(and)g(bu\013ering)e
--(mec)m(hanisms.)40 b(This)28 b(required)g(mo)s(difying)f(the)j(source)
--150 4770 y(co)s(de)h(so)f(as)h(to)g(try)f(to)h(break)g(it.)199
--4927 y(1.)61 b(Data)32 b(set)f(H,)g(with)e(bu\013er)g(size)h(of)h(1)g
--(b)m(yte,)g(and)f(blo)s(c)m(k)g(size)g(of)g(23)i(b)m(ytes.)199
--5065 y(2.)61 b(Data)32 b(set)f(B,)g(bu\013er)e(sizes)h(1)h(b)m(yte,)g
--(blo)s(c)m(k)f(size)g(1)h(b)m(yte.)199 5202 y(3.)61 b(As)30
--b(\(2\))i(but)d(small-mo)s(de)g(decompression.)199 5340
--y(4.)61 b(As)30 b(\(2\))i(with)d(blo)s(c)m(k)h(size)g(2)h(b)m(ytes.)p
+-b(34)330 299 y Fj(compiler.)74 b(I)41 b(heard)f(all)i(sorts)f(of)g
+-(stories)i(ab)s(out)d(v)-5 b(arious)41 b(\015a)m(v)m(ours)g(of)h(GNU)f
+-(C)g(\(and)f(other)330 408 y(compilers\))45 b(generating)g(bad)e(co)s
+-(de)g(for)h Fi(bzip2)p Fj(,)i(and)d(I'v)m(e)i(run)d(across)i(t)m(w)m(o)
+-h(suc)m(h)f(examples)330 518 y(m)m(yself.)330 716 y(2.7.X)i(v)m
+-(ersions)f(of)g(GNU)h(C)e(are)h(kno)m(wn)g(to)g(generate)i(bad)d(co)s
+-(de)h(from)f(time)i(to)g(time,)j(at)330 825 y(high)32
+-b(optimisation)h(lev)m(els.)47 b(If)31 b(y)m(ou)i(get)g(problems,)f
+-(try)g(using)f(the)i(\015ags)f Fi(-O2)f(-fomit-frame-)330
+-935 y(pointer)d(-fno-strength-reduce)p Fj(.)36 b(Y)-8
+-b(ou)30 b(should)f(sp)s(eci\014cally)i Fb(not)40 b Fj(use)30
+-b Fi(-funroll-loops)p Fj(.)330 1132 y(Y)-8 b(ou)36 b(ma)m(y)g(notice)i
+-(that)e(the)g(Mak)m(e\014le)i(runs)d(six)g(tests)i(as)f(part)g(of)g
+-(the)h(build)e(pro)s(cess.)57 b(If)36 b(the)330 1242
+-y(program)42 b(passes)g(all)h(of)f(these,)k(it's)d(a)f(prett)m(y)i(go)s
+-(o)s(d)e(\(but)g(not)g(100\045\))i(indication)f(that)g(the)330
+-1352 y(compiler)31 b(has)f(done)g(its)h(job)f(correctly)-8
+-b(.)225 1549 y Fh(\017)60 b Fj(If)32 b Fi(bzip2)e Fj(crashes)j
+-(randomly)-8 b(,)32 b(and)f(the)i(crashes)f(are)g(not)h(rep)s(eatable,)
+-g(y)m(ou)g(ma)m(y)f(ha)m(v)m(e)h(a)f(\015aky)330 1659
+-y(memory)37 b(subsystem.)57 b Fi(bzip2)35 b Fj(really)i(hammers)f(y)m
+-(our)h(memory)f(hierarc)m(h)m(y)-8 b(,)39 b(and)d(if)g(it's)h(a)g(bit)
+-330 1768 y(marginal,)c(y)m(ou)g(ma)m(y)g(get)g(these)g(problems.)46
+-b(Ditto)34 b(if)e(y)m(our)h(disk)f(or)g(I/O)h(subsystem)f(is)g(slo)m
+-(wly)330 1878 y(failing.)41 b(Y)-8 b(up,)30 b(this)g(really)i(do)s(es)e
+-(happ)s(en.)330 2075 y(T)-8 b(ry)27 b(using)f(a)h(di\013eren)m(t)h(mac)
+-m(hine)f(of)g(the)g(same)g(t)m(yp)s(e,)h(and)e(see)h(if)g(y)m(ou)g(can)
+-g(rep)s(eat)g(the)g(problem.)225 2273 y Fh(\017)60 b
+-Fj(This)21 b(isn't)h(really)g(a)g(bug,)h(but)d(...)39
+-b(If)21 b Fi(bzip2)f Fj(tells)i(y)m(ou)g(y)m(our)g(\014le)f(is)h
+-(corrupted)f(on)g(decompression,)330 2383 y(and)g(y)m(ou)h(obtained)g
+-(the)h(\014le)f(via)g(FTP)-8 b(,)23 b(there)f(is)g(a)g(p)s(ossibilit)m
+-(y)h(that)f(y)m(ou)h(forgot)g(to)g(tell)g(FTP)f(to)h(do)330
+-2492 y(a)31 b(binary)g(mo)s(de)g(transfer.)43 b(That)31
+-b(absolutely)h(will)g(cause)f(the)h(\014le)f(to)h(b)s(e)e
+-(non-decompressible.)330 2602 y(Y)-8 b(ou'll)31 b(ha)m(v)m(e)g(to)h
+-(transfer)e(it)h(again.)150 2847 y(If)e(y)m(ou'v)m(e)i(incorp)s(orated)
+-e Fi(libbzip2)e Fj(in)m(to)k(y)m(our)e(o)m(wn)g(program)h(and)e(are)i
+-(getting)h(problems,)e(please,)150 2956 y(please,)e(please,)g(c)m(hec)m
+-(k)f(that)g(the)f(parameters)h(y)m(ou)f(are)h(passing)e(in)h(calls)h
+-(to)f(the)h(library)-8 b(,)26 b(are)g(correct,)150 3066
+-y(and)g(in)g(accordance)i(with)f(what)f(the)h(do)s(cumen)m(tation)h(sa)
+-m(ys)f(is)f(allo)m(w)m(able.)42 b(I)27 b(ha)m(v)m(e)g(tried)h(to)f(mak)
+-m(e)h(the)150 3175 y(library)i(robust)g(against)h(suc)m(h)g(problems,)f
+-(but)g(I'm)g(sure)g(I)g(ha)m(v)m(en't)i(succeeded.)150
+-3332 y(Finally)-8 b(,)33 b(if)f(the)h(ab)s(o)m(v)m(e)g(commen)m(ts)g
+-(don't)f(help,)g(y)m(ou'll)h(ha)m(v)m(e)g(to)g(send)e(me)h(a)g(bug)f
+-(rep)s(ort.)46 b(No)m(w,)33 b(it's)150 3442 y(just)d(amazing)h(ho)m(w)f
+-(man)m(y)h(p)s(eople)f(will)h(send)e(me)i(a)f(bug)g(rep)s(ort)h(sa)m
+-(ying)g(something)g(lik)m(e)481 3593 y(bzip2)f(crashed)g(with)h(segmen)
+-m(tation)h(fault)f(on)f(m)m(y)g(mac)m(hine)150 3750 y(and)h(absolutely)
+-h(nothing)g(else.)45 b(Needless)33 b(to)f(sa)m(y)-8 b(,)33
+-b(a)f(suc)m(h)f(a)h(rep)s(ort)g(is)f Fb(total)5 b(ly,)36
+-b(utterly,)e(c)-5 b(ompletely)150 3859 y(and)27 b(c)-5
+-b(ompr)g(ehensively)29 b(100\045)f(useless;)g(a)f(waste)g(of)g(your)g
+-(time,)h(my)e(time,)i(and)f(net)g(b)-5 b(andwidth)p Fj(.)41
+-b(With)150 3969 y(no)30 b(details)i(at)f(all,)g(there's)g(no)f(w)m(a)m
+-(y)h(I)g(can)f(p)s(ossibly)g(b)s(egin)g(to)h(\014gure)f(out)h(what)f
+-(the)g(problem)h(is.)150 4126 y(The)e(rules)f(of)h(the)g(game)h(are:)40
+-b(facts,)30 b(facts,)g(facts.)41 b(Don't)29 b(omit)h(them)f(b)s(ecause)
+-f Fi(")p Fj(oh,)h(they)g(w)m(on't)h(b)s(e)150 4235 y(relev)-5
+-b(an)m(t)p Fi(")p Fj(.)42 b(A)m(t)31 b(the)g(bare)f(minim)m(um:)481
+-4386 y(Mac)m(hine)h(t)m(yp)s(e.)62 b(Op)s(erating)30
+-b(system)h(v)m(ersion.)481 4490 y(Exact)g(v)m(ersion)g(of)g
+-Fi(bzip2)d Fj(\(do)j Fi(bzip2)46 b(-V)p Fj(\).)481 4594
+-y(Exact)31 b(v)m(ersion)g(of)g(the)f(compiler)h(used.)481
+-4698 y(Flags)g(passed)f(to)h(the)g(compiler.)150 4854
+-y(Ho)m(w)m(ev)m(er,)f(the)e(most)g(imp)s(ortan)m(t)f(single)h(thing)g
+-(that)f(will)h(help)f(me)g(is)g(the)h(\014le)f(that)h(y)m(ou)f(w)m(ere)
+-h(trying)150 4964 y(to)35 b(compress)f(or)g(decompress)g(at)g(the)h
+-(time)f(the)h(problem)e(happ)s(ened.)50 b(Without)34
+-b(that,)i(m)m(y)e(abilit)m(y)150 5074 y(to)d(do)g(an)m(ything)f(more)h
+-(than)f(sp)s(eculate)h(ab)s(out)f(the)h(cause,)f(is)h(limited.)150
+-5230 y(Please)h(remem)m(b)s(er)g(that)g(I)f(connect)h(to)g(the)g(In)m
+-(ternet)g(with)f(a)h(mo)s(dem,)f(so)g(y)m(ou)h(should)e(con)m(tact)k
+-(me)150 5340 y(b)s(efore)c(mailing)h(me)g(h)m(uge)f(\014les.)p
 -eop
 -%%Page: 35 36
 -35 35 bop 150 -116 a Fl(Chapter)30 b(4:)41 b(Miscellanea)2586
--b(35)199 299 y(5.)61 b(As)30 b(\(2\))i(with)d(blo)s(c)m(k)h(size)g(3)h
--(b)m(ytes.)199 431 y(6.)61 b(As)30 b(\(2\))i(with)d(blo)s(c)m(k)h(size)
--g(4)h(b)m(ytes.)199 564 y(7.)61 b(As)30 b(\(2\))i(with)d(blo)s(c)m(k)h
--(size)g(5)h(b)m(ytes.)199 697 y(8.)61 b(As)30 b(\(2\))i(with)d(blo)s(c)
--m(k)h(size)g(6)h(b)m(ytes)g(and)e(small-mo)s(de)g(decompression.)199
--829 y(9.)61 b(H)30 b(with)g(bu\013er)f(size)h(of)h(1)f(b)m(yte,)i(but)d
--(normal)h(blo)s(c)m(k)g(size)g(\(up)f(to)j(900000)h(b)m(ytes\).)150
--1009 y(Then)c(some)i(tests)g(with)e(unmo)s(di\014ed)f(source)i(co)s
--(de.)199 1166 y(1.)61 b(H,)31 b(all)e(settings)h(normal.)199
--1299 y(2.)61 b(As)30 b(\(1\),)i(with)d(small-mo)s(de)g(decompress.)199
--1431 y(3.)61 b(H,)31 b(compress)f(with)f(\015ag)i Fj(-1)p
--Fl(.)199 1564 y(4.)61 b(H,)31 b(compress)f(with)f(\015ag)i
--Fj(-s)p Fl(,)f(decompress)g(with)f(\015ag)i Fj(-s)p Fl(.)199
--1697 y(5.)61 b(F)-8 b(orw)m(ards)33 b(compatibilit)m(y:)45
--b(H,)33 b Fj(bzip2-0.1pl2)d Fl(compressing,)j Fj(bzip2-0.9.5)d
--Fl(decompressing,)330 1806 y(all)f(settings)i(normal.)199
--1939 y(6.)61 b(Bac)m(kw)m(ards)23 b(compatibilit)m(y:)35
--b(H,)23 b Fj(bzip2-0.9.5)c Fl(compressing,)k Fj(bzip2-0.1pl2)c
--Fl(decompressing,)330 2048 y(all)29 b(settings)i(normal.)199
--2181 y(7.)61 b(Bigger)31 b(tests:)41 b(A,)31 b(all)e(settings)i
--(normal.)199 2314 y(8.)61 b(As)30 b(\(7\),)i(using)d(the)i(fallbac)m(k)
--e(\(Sadak)-5 b(ane-lik)m(e\))31 b(sorting)f(algorithm.)199
--2446 y(9.)61 b(As)30 b(\(8\),)i(compress)e(with)f(\015ag)i
--Fj(-1)p Fl(,)f(decompress)g(with)f(\015ag)i Fj(-s)p Fl(.)154
--2579 y(10.)61 b(H,)31 b(using)e(the)h(fallbac)m(k)g(sorting)g
--(algorithm.)154 2711 y(11.)61 b(F)-8 b(orw)m(ards)33
--b(compatibilit)m(y:)45 b(A,)33 b Fj(bzip2-0.1pl2)d Fl(compressing,)j
--Fj(bzip2-0.9.5)d Fl(decompressing,)330 2821 y(all)f(settings)i(normal.)
--154 2954 y(12.)61 b(Bac)m(kw)m(ards)23 b(compatibilit)m(y:)35
--b(A,)23 b Fj(bzip2-0.9.5)c Fl(compressing,)k Fj(bzip2-0.1pl2)c
--Fl(decompressing,)330 3063 y(all)29 b(settings)i(normal.)154
--3196 y(13.)61 b(Misc)39 b(test:)58 b(ab)s(out)39 b(400)h(megab)m(ytes)h
--(of)e Fj(.tar)f Fl(\014les)f(with)h Fj(bzip2)f Fl(compiled)h(with)f
--(Chec)m(k)m(er)j(\(a)330 3305 y(memory)30 b(access)i(error)e(detector,)
--i(lik)m(e)e(Purify\).)154 3438 y(14.)61 b(Misc)30 b(tests)h(to)g(mak)m
--(e)h(sure)d(it)h(builds)e(and)h(runs)g(ok)i(on)f(non-Lin)m(ux/x86)g
--(platforms.)150 3618 y(These)35 b(tests)h(w)m(ere)f(conducted)g(on)g(a)
--h(225)g(MHz)g(IDT)f(WinChip)d(mac)m(hine,)k(running)d(Lin)m(ux)g
--(2.0.36.)150 3728 y(They)d(represen)m(t)g(nearly)g(a)h(w)m(eek)g(of)f
--(con)m(tin)m(uous)g(computation.)41 b(All)29 b(tests)i(completed)f
+-b(35)150 299 y Fk(4.4)68 b(Did)45 b(y)l(ou)g(get)h(the)f(righ)l(t)h
+-(pac)l(k)-7 b(age?)150 491 y Fi(bzip2)33 b Fj(is)h(a)h(resource)g(hog.)
+-54 b(It)35 b(soaks)f(up)g(large)h(amoun)m(ts)g(of)f(CPU)h(cycles)g(and)
+-f(memory)-8 b(.)53 b(Also,)36 b(it)150 601 y(giv)m(es)25
+-b(v)m(ery)e(large)i(latencies.)40 b(In)23 b(the)g(w)m(orst)h(case,)i(y)
+-m(ou)d(can)h(feed)f(man)m(y)g(megab)m(ytes)i(of)e(uncompressed)150
+-711 y(data)42 b(in)m(to)h(the)f(library)g(b)s(efore)f(getting)j(an)m(y)
+-e(compressed)g(output,)i(so)e(this)g(probably)f(rules)h(out)150
+-820 y(applications)31 b(requiring)g(in)m(teractiv)m(e)i(b)s(eha)m
+-(viour.)150 977 y(These)j(aren't)h(faults)f(of)g(m)m(y)g(implemen)m
+-(tation,)j(I)d(hop)s(e,)h(but)f(more)g(an)g(in)m(trinsic)g(prop)s(ert)m
+-(y)g(of)h(the)150 1087 y(Burro)m(ws-Wheeler)31 b(transform)f
+-(\(unfortunately\).)41 b(Ma)m(yb)s(e)31 b(this)f(isn't)h(what)f(y)m(ou)
+-h(w)m(an)m(t.)150 1244 y(If)f(y)m(ou)g(w)m(an)m(t)h(a)f(compressor)g
+-(and/or)g(library)g(whic)m(h)g(is)g(faster,)h(uses)f(less)g(memory)g
+-(but)g(gets)h(prett)m(y)150 1353 y(go)s(o)s(d)f(compression,)g(and)g
+-(has)f(minimal)h(latency)-8 b(,)32 b(consider)e(Jean-loup)g(Gailly's)i
+-(and)d(Mark)h(Adler's)150 1463 y(w)m(ork,)h Fi(zlib-1.1.3)d
+-Fj(and)h Fi(gzip-1.2.4)p Fj(.)38 b(Lo)s(ok)30 b(for)h(them)f(at)150
+-1620 y Fi(http://www.zlib.org)25 b Fj(and)30 b Fi(http://www.gzip.org)
+-25 b Fj(resp)s(ectiv)m(ely)-8 b(.)150 1776 y(F)g(or)30
+-b(something)h(faster)f(and)e(ligh)m(ter)k(still,)f(y)m(ou)f(migh)m(t)g
+-(try)g(Markus)f(F)h(X)f(J)h(Ob)s(erh)m(umer's)e Fi(LZO)h
+-Fj(real-)150 1886 y(time)i(compression/decompression)h(library)-8
+-b(,)31 b(at)150 1996 y Fi(http://wildsau.idv.uni-l)o(inz.)o(ac.a)o(t/m)
+-o(fx/l)o(zo.h)o(tml)o Fj(.)150 2152 y(If)37 b(y)m(ou)h(w)m(an)m(t)h(to)
+-f(use)f(the)h Fi(bzip2)e Fj(algorithms)j(to)f(compress)g(small)g(blo)s
+-(c)m(ks)f(of)h(data,)i(64k)e(b)m(ytes)h(or)150 2262 y(smaller,)h(for)e
+-(example)g(on)g(an)g(on-the-\015y)g(disk)f(compressor,)j(y)m(ou'd)e(b)s
+-(e)f(w)m(ell)i(advised)e(not)i(to)f(use)150 2372 y(this)k(library)-8
+-b(.)74 b(Instead,)45 b(I'v)m(e)d(made)g(a)f(sp)s(ecial)h(library)g
+-(tuned)f(for)g(that)h(kind)f(of)h(use.)74 b(It's)42 b(part)150
+-2481 y(of)d Fi(e2compr-0.40)p Fj(,)e(an)i(on-the-\015y)g(disk)f
+-(compressor)h(for)g(the)g(Lin)m(ux)e Fi(ext2)h Fj(\014lesystem.)66
+-b(Lo)s(ok)38 b(at)150 2591 y Fi(http://www.netspace.net.)o(au/~)o(reit)
+-o(er/)o(e2co)o(mpr)p Fj(.)150 2880 y Fk(4.5)68 b(T)-11
+-b(esting)150 3072 y Fj(A)30 b(record)h(of)f(the)h(tests)h(I'v)m(e)f
+-(done.)150 3229 y(First,)g(some)g(data)g(sets:)225 3386
+-y Fh(\017)60 b Fj(B:)29 b(a)g(directory)h(con)m(taining)h(6001)f
+-(\014les,)g(one)f(for)g(ev)m(ery)h(length)g(in)e(the)i(range)f(0)g(to)h
+-(6000)h(b)m(ytes.)330 3496 y(The)f(\014les)h(con)m(tain)g(random)f(lo)m
+-(w)m(ercase)j(letters.)42 b(18.7)32 b(megab)m(ytes.)225
+-3633 y Fh(\017)60 b Fj(H:)33 b(m)m(y)h(home)f(directory)h(tree.)50
+-b(Do)s(cumen)m(ts,)34 b(source)f(co)s(de,)h(mail)g(\014les,)g
+-(compressed)f(data.)49 b(H)330 3743 y(con)m(tains)39
+-b(B,)e(and)g(also)i(a)e(directory)i(of)f(\014les)g(designed)f(as)h(b)s
+-(oundary)e(cases)i(for)g(the)g(sorting;)330 3853 y(mostly)31
+-b(v)m(ery)g(rep)s(etitiv)m(e,)i(nast)m(y)e(\014les.)40
+-b(565)32 b(megab)m(ytes.)225 3990 y Fh(\017)60 b Fj(A:)40
+-b(directory)i(tree)g(holding)e(v)-5 b(arious)41 b(applications)g(built)
+-g(from)f(source:)62 b Fi(egcs)p Fj(,)42 b Fi(gcc-2.8.1)p
+-Fj(,)330 4100 y(KDE,)30 b(GTK,)h(Octa)m(v)m(e,)j(etc.)42
+-b(2200)32 b(megab)m(ytes.)150 4285 y(The)i(tests)h(conducted)f(are)h
+-(as)f(follo)m(ws.)53 b(Eac)m(h)34 b(test)i(means)d(compressing)i(\(a)f
+-(cop)m(y)h(of)10 b(\))35 b(eac)m(h)g(\014le)f(in)150
+-4394 y(the)d(data)f(set,)i(decompressing)e(it)h(and)f(comparing)h(it)g
+-(against)g(the)g(original.)150 4551 y(First,)36 b(a)f(bunc)m(h)f(of)h
+-(tests)g(with)g(blo)s(c)m(k)g(sizes)g(and)f(in)m(ternal)i(bu\013er)e
+-(sizes)h(set)g(v)m(ery)h(small,)g(to)f(detect)150 4661
+-y(an)m(y)h(problems)g(with)h(the)f(blo)s(c)m(king)h(and)f(bu\013ering)g
+-(mec)m(hanisms.)59 b(This)36 b(required)g(mo)s(difying)g(the)150
+-4770 y(source)31 b(co)s(de)f(so)h(as)f(to)i(try)e(to)i(break)e(it.)199
+-4927 y(1.)61 b(Data)31 b(set)g(H,)g(with)f(bu\013er)g(size)h(of)f(1)h
+-(b)m(yte,)h(and)d(blo)s(c)m(k)i(size)g(of)g(23)g(b)m(ytes.)199
+-5065 y(2.)61 b(Data)31 b(set)g(B,)f(bu\013er)g(sizes)h(1)g(b)m(yte,)g
+-(blo)s(c)m(k)g(size)g(1)g(b)m(yte.)199 5202 y(3.)61 b(As)30
+-b(\(2\))h(but)f(small-mo)s(de)h(decompression.)199 5340
+-y(4.)61 b(As)30 b(\(2\))h(with)g(blo)s(c)m(k)f(size)i(2)e(b)m(ytes.)p
+-eop
+-%%Page: 36 37
+-36 36 bop 150 -116 a Fl(Chapter)30 b(4:)41 b(Miscellanea)2586
+-b(36)199 299 y Fj(5.)61 b(As)30 b(\(2\))h(with)g(blo)s(c)m(k)f(size)i
+-(3)e(b)m(ytes.)199 431 y(6.)61 b(As)30 b(\(2\))h(with)g(blo)s(c)m(k)f
+-(size)i(4)e(b)m(ytes.)199 564 y(7.)61 b(As)30 b(\(2\))h(with)g(blo)s(c)
+-m(k)f(size)i(5)e(b)m(ytes.)199 697 y(8.)61 b(As)30 b(\(2\))h(with)g
+-(blo)s(c)m(k)f(size)i(6)e(b)m(ytes)h(and)f(small-mo)s(de)h
+-(decompression.)199 829 y(9.)61 b(H)31 b(with)f(bu\013er)f(size)j(of)e
+-(1)h(b)m(yte,)g(but)f(normal)g(blo)s(c)m(k)h(size)h(\(up)d(to)j(900000)
+-h(b)m(ytes\).)150 1009 y(Then)d(some)h(tests)g(with)f(unmo)s(di\014ed)f
+-(source)h(co)s(de.)199 1166 y(1.)61 b(H,)31 b(all)g(settings)g(normal.)
+-199 1299 y(2.)61 b(As)30 b(\(1\),)i(with)e(small-mo)s(de)g(decompress.)
+-199 1431 y(3.)61 b(H,)31 b(compress)f(with)g(\015ag)h
+-Fi(-1)p Fj(.)199 1564 y(4.)61 b(H,)31 b(compress)f(with)g(\015ag)h
+-Fi(-s)p Fj(,)f(decompress)g(with)g(\015ag)h Fi(-s)p Fj(.)199
+-1697 y(5.)61 b(F)-8 b(orw)m(ards)31 b(compatibilit)m(y:)43
+-b(H,)31 b Fi(bzip2-0.1pl2)d Fj(compressing,)j Fi(bzip2-0.9.5)c
+-Fj(decompressing,)330 1806 y(all)k(settings)h(normal.)199
+-1939 y(6.)61 b(Bac)m(kw)m(ards)38 b(compatibilit)m(y:)59
+-b(H,)39 b Fi(bzip2-0.9.5)c Fj(compressing,)41 b Fi(bzip2-0.1pl2)35
+-b Fj(decompress-)330 2048 y(ing,)c(all)g(settings)g(normal.)199
+-2181 y(7.)61 b(Bigger)31 b(tests:)42 b(A,)30 b(all)h(settings)h
+-(normal.)199 2314 y(8.)61 b(As)30 b(\(7\),)i(using)d(the)i(fallbac)m(k)
+-g(\(Sadak)-5 b(ane-lik)m(e\))33 b(sorting)e(algorithm.)199
+-2446 y(9.)61 b(As)30 b(\(8\),)i(compress)e(with)g(\015ag)h
+-Fi(-1)p Fj(,)f(decompress)g(with)g(\015ag)h Fi(-s)p Fj(.)154
+-2579 y(10.)61 b(H,)31 b(using)f(the)g(fallbac)m(k)i(sorting)f
+-(algorithm.)154 2711 y(11.)61 b(F)-8 b(orw)m(ards)31
+-b(compatibilit)m(y:)44 b(A,)31 b Fi(bzip2-0.1pl2)d Fj(compressing,)k
+-Fi(bzip2-0.9.5)27 b Fj(decompressing,)330 2821 y(all)k(settings)h
+-(normal.)154 2954 y(12.)61 b(Bac)m(kw)m(ards)39 b(compatibilit)m(y:)59
+-b(A,)39 b Fi(bzip2-0.9.5)c Fj(compressing,)41 b Fi(bzip2-0.1pl2)36
+-b Fj(decompress-)330 3063 y(ing,)31 b(all)g(settings)g(normal.)154
+-3196 y(13.)61 b(Misc)38 b(test:)57 b(ab)s(out)37 b(400)i(megab)m(ytes)g
+-(of)f Fi(.tar)f Fj(\014les)g(with)h Fi(bzip2)e Fj(compiled)i(with)g
+-(Chec)m(k)m(er)g(\(a)330 3305 y(memory)31 b(access)g(error)g(detector,)
+-h(lik)m(e)g(Purify\).)154 3438 y(14.)61 b(Misc)31 b(tests)h(to)f(mak)m
+-(e)g(sure)f(it)h(builds)e(and)h(runs)f(ok)h(on)h(non-Lin)m(ux/x86)f
+-(platforms.)150 3618 y(These)k(tests)g(w)m(ere)h(conducted)e(on)h(a)f
+-(225)i(MHz)f(IDT)g(WinChip)e(mac)m(hine,)j(running)d(Lin)m(ux)g
+-(2.0.36.)150 3728 y(They)c(represen)m(t)h(nearly)g(a)f(w)m(eek)h(of)f
+-(con)m(tin)m(uous)h(computation.)41 b(All)29 b(tests)g(completed)g
 -(successfully)-8 b(.)150 4003 y Fk(4.6)68 b(F)-11 b(urther)44
--b(reading)150 4196 y Fj(bzip2)28 b Fl(is)h(not)h(researc)m(h)g(w)m
--(ork,)g(in)e(the)i(sense)g(that)g(it)f(do)s(esn't)g(presen)m(t)h(an)m
--(y)g(new)f(ideas.)40 b(Rather,)30 b(it's)150 4306 y(an)g(engineering)f
--(exercise)i(based)f(on)g(existing)g(ideas.)150 4463 y(F)-8
--b(our)31 b(do)s(cumen)m(ts)f(describ)s(e)e(essen)m(tially)i(all)f(the)i
--(ideas)e(b)s(ehind)f Fj(bzip2)p Fl(:)390 4614 y Fj(Michael)46
+-b(reading)150 4196 y Fi(bzip2)26 b Fj(is)h(not)h(researc)m(h)g(w)m
+-(ork,)g(in)f(the)h(sense)f(that)h(it)g(do)s(esn't)f(presen)m(t)h(an)m
+-(y)f(new)g(ideas.)40 b(Rather,)28 b(it's)150 4306 y(an)i(engineering)h
+-(exercise)h(based)e(on)g(existing)i(ideas.)150 4463 y(F)-8
+-b(our)31 b(do)s(cumen)m(ts)f(describ)s(e)g(essen)m(tially)i(all)f(the)g
+-(ideas)f(b)s(ehind)f Fi(bzip2)p Fj(:)390 4614 y Fi(Michael)46
 -b(Burrows)g(and)h(D.)g(J.)g(Wheeler:)485 4717 y("A)h(block-sorting)c
 -(lossless)h(data)i(compression)e(algorithm")533 4821
 -y(10th)i(May)g(1994.)533 4925 y(Digital)f(SRC)h(Research)e(Report)i
@@ -8351,9 +9377,9 @@ diff -Nru bzip2-1.0.1/manual.ps bzip2-1.0.1.new/manual.ps
 -y(If)g(you)g(have)g(trouble)f(finding)g(it,)g(try)h(searching)f(at)h
 -(the)533 5236 y(New)g(Zealand)f(Digital)g(Library,)f
 -(http://www.nzdl.org.)p eop
--%%Page: 36 37
--36 36 bop 150 -116 a Fl(Chapter)30 b(4:)41 b(Miscellanea)2586
--b(36)390 299 y Fj(Daniel)46 b(S.)h(Hirschberg)e(and)i(Debra)g(A.)g
+-%%Page: 37 38
+-37 37 bop 150 -116 a Fl(Chapter)30 b(4:)41 b(Miscellanea)2586
+-b(37)390 299 y Fi(Daniel)46 b(S.)h(Hirschberg)e(and)i(Debra)g(A.)g
 -(LeLewer)485 403 y("Efficient)e(Decoding)h(of)h(Prefix)f(Codes")533
 -506 y(Communications)e(of)j(the)g(ACM,)g(April)f(1990,)h(Vol)f(33,)h
 -(Number)f(4.)533 610 y(You)h(might)f(be)i(able)e(to)h(get)g(an)h
@@ -8365,192 +9391,193 @@ diff -Nru bzip2-1.0.1/manual.ps bzip2-1.0.1.new/manual.ps
 -(djw)o(3/)390 1544 y(Jon)h(L.)g(Bentley)f(and)h(Robert)f(Sedgewick)485
 -1648 y("Fast)h(Algorithms)e(for)i(Sorting)f(and)g(Searching)g(Strings")
 -533 1752 y(Available)f(from)i(Sedgewick's)e(web)i(page,)533
--1856 y(www.cs.princeton.edu/~rs)150 2012 y Fl(The)29
--b(follo)m(wing)f(pap)s(er)g(giv)m(es)h(v)-5 b(aluable)28
--b(additional)g(insigh)m(ts)f(in)m(to)j(the)f(algorithm,)g(but)g(is)f
--(not)i(imme-)150 2122 y(diately)g(the)g(basis)f(of)i(an)m(y)g(co)s(de)f
--(used)g(in)f(bzip2.)390 2273 y Fj(Peter)46 b(Fenwick:)533
+-1856 y(www.cs.princeton.edu/~rs)150 2012 y Fj(The)29
+-b(follo)m(wing)h(pap)s(er)d(giv)m(es)j(v)-5 b(aluable)29
+-b(additional)g(insigh)m(ts)g(in)m(to)h(the)f(algorithm,)h(but)e(is)h
+-(not)g(imme-)150 2122 y(diately)i(the)g(basis)f(of)h(an)m(y)f(co)s(de)h
+-(used)e(in)h(bzip2.)390 2273 y Fi(Peter)46 b(Fenwick:)533
 -2377 y(Block)h(Sorting)e(Text)i(Compression)533 2481
 -y(Proceedings)e(of)i(the)g(19th)g(Australasian)d(Computer)i(Science)f
 -(Conference,)629 2584 y(Melbourne,)g(Australia.)92 b(Jan)47
 -b(31)g(-)h(Feb)f(2,)g(1996.)533 2688 y(ftp://ftp.cs.auckland.ac.)o
 -(nz/p)o(ub/)o(pete)o(r-f/)o(ACS)o(C96p)o(aper)o(.ps)150
--2845 y Fl(Kunihik)m(o)28 b(Sadak)-5 b(ane's)31 b(sorting)e(algorithm,)h
--(men)m(tioned)g(ab)s(o)m(v)m(e,)i(is)d(a)m(v)-5 b(ailable)30
--b(from:)390 2996 y Fj(http://naomi.is.s.u-toky)o(o.ac)o(.jp/)o(~sa)o
+-2845 y Fj(Kunihik)m(o)30 b(Sadak)-5 b(ane's)30 b(sorting)i(algorithm,)f
+-(men)m(tioned)g(ab)s(o)m(v)m(e,)h(is)e(a)m(v)-5 b(ailable)32
+-b(from:)390 2996 y Fi(http://naomi.is.s.u-toky)o(o.ac)o(.jp/)o(~sa)o
 -(da/p)o(aper)o(s/S)o(ada9)o(8b.p)o(s.g)o(z)150 3153 y
--Fl(The)41 b(Man)m(b)s(er-My)m(ers)g(su\016x)g(arra)m(y)g(construction)g
--(algorithm)f(is)g(describ)s(ed)f(in)h(a)i(pap)s(er)e(a)m(v)-5
--b(ailable)150 3262 y(from:)390 3413 y Fj(http://www.cs.arizona.ed)o
+-Fj(The)38 b(Man)m(b)s(er-My)m(ers)h(su\016x)e(arra)m(y)i(construction)g
+-(algorithm)h(is)e(describ)s(ed)f(in)h(a)g(pap)s(er)f(a)m(v)-5
+-b(ailable)150 3262 y(from:)390 3413 y Fi(http://www.cs.arizona.ed)o
 -(u/pe)o(ople)o(/ge)o(ne/P)o(APER)o(S/s)o(uffi)o(x.ps)150
--3570 y Fl(Finally)d(,)33 b(the)h(follo)m(wing)e(pap)s(er)h(do)s(cumen)m
--(ts)g(some)h(recen)m(t)h(in)m(v)m(estigations)e(I)h(made)f(in)m(to)h
--(the)g(p)s(erfor-)150 3680 y(mance)d(of)f(sorting)g(algorithms:)390
--3831 y Fj(Julian)46 b(Seward:)533 3935 y(On)h(the)g(Performance)e(of)i
+-3570 y Fj(Finally)d(,)33 b(the)e(follo)m(wing)i(pap)s(er)d(do)s(cumen)m
+-(ts)h(some)g(recen)m(t)i(in)m(v)m(estigations)h(I)d(made)g(in)m(to)i
+-(the)e(p)s(erfor-)150 3680 y(mance)g(of)f(sorting)h(algorithms:)390
+-3831 y Fi(Julian)46 b(Seward:)533 3935 y(On)h(the)g(Performance)e(of)i
 -(BWT)g(Sorting)f(Algorithms)533 4038 y(Proceedings)f(of)i(the)g(IEEE)g
 -(Data)f(Compression)f(Conference)g(2000)629 4142 y(Snowbird,)g(Utah.)94
 -b(28-30)46 b(March)h(2000.)p eop
--%%Page: -1 38
---1 37 bop 3725 -116 a Fl(i)150 299 y Fh(T)-13 b(able)54
+-%%Page: -1 39
+--1 38 bop 3725 -116 a Fl(i)150 299 y Fg(T)-13 b(able)54
 -b(of)g(Con)l(ten)l(ts)150 641 y Fk(1)135 b(In)l(tro)t(duction)15
--b Fb(.)20 b(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f
+-b Fa(.)20 b(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f
 -(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)60
--b Fk(2)150 911 y(2)135 b(Ho)l(w)45 b(to)h(use)f Fd(bzip2)31
--b Fb(.)19 b(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g
+-b Fk(2)150 911 y(2)135 b(Ho)l(w)45 b(to)h(use)f Fc(bzip2)31
+-b Fa(.)19 b(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g
 -(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)78 b Fk(3)1047
--1048 y Fl(NAME)20 b Fa(.)c(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
--(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)50 b Fl(3)1047
--1157 y(SYNOPSIS)21 b Fa(.)13 b(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
--(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--g(.)g(.)g(.)g(.)h(.)f(.)g(.)50 b Fl(3)1047 1267 y(DESCRIPTION)10
--b Fa(.)j(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
--g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40
--b Fl(3)1047 1377 y(OPTIONS)16 b Fa(.)d(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g
--(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)45 b Fl(4)1047
--1486 y(MEMOR)-8 b(Y)31 b(MANA)m(GEMENT)14 b Fa(.)j(.)e(.)g(.)g(.)g(.)g
--(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)44
--b Fl(6)1047 1596 y(RECO)m(VERING)30 b(D)m(A)-8 b(T)g(A)32
--b(FR)m(OM)f(D)m(AMA)m(GED)i(FILES)1256 1705 y Fa(.)15
--b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
--(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--g(.)g(.)g(.)g(.)g(.)g(.)57 b Fl(7)1047 1815 y(PERF)m(ORMANCE)30
--b(NOTES)9 b Fa(.)14 b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
--(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)38 b Fl(7)1047 1924
--y(CA)-10 b(VEA)i(TS)10 b Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
--(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40 b Fl(8)1047 2034
--y(A)m(UTHOR)23 b Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+-1048 y Fj(NAME)18 b Fb(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)48 b Fl(3)1047
+-1157 y Fj(SYNOPSIS)18 b Fb(.)c(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+-g(.)g(.)g(.)g(.)g(.)g(.)g(.)48 b Fl(3)1047 1267 y Fj(DESCRIPTION)28
+-b Fb(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)59
+-b Fl(3)1047 1377 y Fj(OPTIONS)16 b Fb(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46 b Fl(4)1047
+-1486 y Fj(MEMOR)-8 b(Y)31 b(MANA)m(GEMENT)9 b Fb(.)16
+-b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+-(.)g(.)39 b Fl(6)1047 1596 y Fj(RECO)m(VERING)30 b(D)m(A)-8
+-b(T)g(A)31 b(FR)m(OM)g(D)m(AMA)m(GED)g(FILES)1256 1705
+-y Fb(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)57 b Fl(7)1047 1815 y
+-Fj(PERF)m(ORMANCE)30 b(NOTES)10 b Fb(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40
+-b Fl(8)1047 1924 y Fj(CA)-10 b(VEA)i(TS)12 b Fb(.)h(.)i(.)g(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
+-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)42
+-b Fl(8)1047 2034 y Fj(A)m(UTHOR)22 b Fb(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g
+-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)52 b
+-Fl(8)150 2276 y Fk(3)135 b(Programming)46 b(with)f Fc(libbzip2)27
+-b Fa(.)16 b(.)j(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)72
+-b Fk(10)449 2413 y Fj(3.1)92 b(T)-8 b(op-lev)m(el)33
+-b(structure)18 b Fb(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 -(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--g(.)g(.)g(.)g(.)g(.)g(.)g(.)53 b Fl(8)150 2276 y Fk(3)135
--b(Programming)46 b(with)f Fd(libbzip2)29 b Fb(.)16 b(.)j(.)h(.)f(.)h(.)
--f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)74 b Fk(9)449
--2413 y Fl(3.1)92 b(T)-8 b(op-lev)m(el)30 b(structure)24
--b Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
--(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--g(.)g(.)g(.)g(.)54 b Fl(9)748 2523 y(3.1.1)93 b(Lo)m(w-lev)m(el)30
--b(summary)23 b Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)53
--b Fl(9)748 2633 y(3.1.2)93 b(High-lev)m(el)29 b(summary)12
--b Fa(.)i(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)41 b
--Fl(9)748 2742 y(3.1.3)93 b(Utilit)m(y)29 b(functions)g(summary)12
--b Fa(.)h(.)j(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--g(.)g(.)g(.)g(.)g(.)41 b Fl(10)449 2852 y(3.2)92 b(Error)29
--b(handling)18 b Fa(.)13 b(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+-g(.)g(.)g(.)g(.)g(.)g(.)47 b Fl(10)748 2523 y Fj(3.1.1)93
+-b(Lo)m(w-lev)m(el)32 b(summary)20 b Fb(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g
 -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)48 b Fl(10)449
--2961 y(3.3)92 b(Lo)m(w-lev)m(el)31 b(in)m(terface)d Fa(.)15
--b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
--(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--g(.)57 b Fl(12)748 3071 y(3.3.1)93 b Fj(BZ2_bzCompressInit)21
--b Fa(.)9 b(.)15 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
--(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)50 b Fl(12)748
--3181 y(3.3.2)93 b Fj(BZ2_bzCompress)9 b Fa(.)h(.)15 b(.)g(.)g(.)g(.)g
--(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--g(.)g(.)g(.)g(.)g(.)g(.)g(.)38 b Fl(14)748 3290 y(3.3.3)93
--b Fj(BZ2_bzCompressEnd)23 b Fa(.)10 b(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)
--g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
--(.)52 b Fl(17)748 3400 y(3.3.4)93 b Fj(BZ2_bzDecompressInit)16
--b Fa(.)9 b(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
--(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)45 b Fl(17)748 3509
--y(3.3.5)93 b Fj(BZ2_bzDecompress)21 b Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g
+-g(.)g(.)g(.)50 b Fl(10)748 2633 y Fj(3.1.2)93 b(High-lev)m(el)32
+-b(summary)27 b Fb(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)57
+-b Fl(10)748 2742 y Fj(3.1.3)93 b(Utilit)m(y)32 b(functions)e(summary)10
+-b Fb(.)k(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+-g(.)g(.)g(.)g(.)g(.)39 b Fl(11)449 2852 y Fj(3.2)92 b(Error)30
+-b(handling)15 b Fb(.)f(.)h(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--g(.)g(.)g(.)55 b Fl(17)748 3619 y(3.3.6)93 b Fj(BZ2_bzDecompressEnd)18
--b Fa(.)10 b(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
--(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)48 b Fl(19)449
--3729 y(3.4)92 b(High-lev)m(el)30 b(in)m(terface)16 b
--Fa(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
--(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--g(.)g(.)45 b Fl(19)748 3838 y(3.4.1)93 b Fj(BZ2_bzReadOpen)9
--b Fa(.)h(.)15 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)44 b Fl(11)449
+-2961 y Fj(3.3)92 b(Lo)m(w-lev)m(el)32 b(in)m(terface)26
+-b Fb(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+-g(.)g(.)g(.)53 b Fl(13)748 3071 y Fj(3.3.1)93 b Fi(BZ2_bzCompressInit)
+-21 b Fb(.)9 b(.)15 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
+-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)50 b Fl(13)748
+-3181 y Fj(3.3.2)93 b Fi(BZ2_bzCompress)9 b Fb(.)h(.)15
+-b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)38 b Fl(15)748
+-3290 y Fj(3.3.3)93 b Fi(BZ2_bzCompressEnd)23 b Fb(.)10
+-b(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)52 b Fl(18)748 3400
+-y Fj(3.3.4)93 b Fi(BZ2_bzDecompressInit)16 b Fb(.)9 b(.)15
+-b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)45 b Fl(18)748 3509 y Fj(3.3.5)93
+-b Fi(BZ2_bzDecompress)21 b Fb(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+-(.)55 b Fl(18)748 3619 y Fj(3.3.6)93 b Fi(BZ2_bzDecompressEnd)18
+-b Fb(.)10 b(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)48 b Fl(20)449
+-3729 y Fj(3.4)92 b(High-lev)m(el)33 b(in)m(terface)9
+-b Fb(.)17 b(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+-g(.)g(.)g(.)38 b Fl(20)748 3838 y Fj(3.4.1)93 b Fi(BZ2_bzReadOpen)9
+-b Fb(.)h(.)15 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)38
--b Fl(19)748 3948 y(3.4.2)93 b Fj(BZ2_bzRead)18 b Fa(.)12
+-b Fl(20)748 3948 y Fj(3.4.2)93 b Fi(BZ2_bzRead)18 b Fb(.)12
 -b(.)j(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 -(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)47
--b Fl(20)748 4057 y(3.4.3)93 b Fj(BZ2_bzReadGetUnused)18
--b Fa(.)10 b(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
--(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)48 b Fl(22)748
--4167 y(3.4.4)93 b Fj(BZ2_bzReadClose)23 b Fa(.)15 b(.)g(.)g(.)g(.)g(.)g
--(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--g(.)g(.)g(.)g(.)g(.)57 b Fl(22)748 4276 y(3.4.5)93 b
--Fj(BZ2_bzWriteOpen)23 b Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
--(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--g(.)57 b Fl(22)748 4386 y(3.4.6)93 b Fj(BZ2_bzWrite)16
--b Fa(.)11 b(.)k(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
--(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--45 b Fl(23)748 4496 y(3.4.7)93 b Fj(BZ2_bzWriteClose)21
--b Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
--(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)55 b Fl(23)748
--4605 y(3.4.8)93 b(Handling)28 b(em)m(b)s(edded)h(compressed)h(data)h
--(streams)17 b Fa(.)f(.)f(.)g(.)46 b Fl(24)748 4715 y(3.4.9)93
--b(Standard)29 b(\014le-reading/writing)e(co)s(de)22 b
--Fa(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)52
--b Fl(25)449 4824 y(3.5)92 b(Utilit)m(y)29 b(functions)f
--Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
--(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--g(.)g(.)g(.)g(.)g(.)59 b Fl(26)748 4934 y(3.5.1)93 b
--Fj(BZ2_bzBuffToBuffCompres)o(s)22 b Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g
--(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)57 b Fl(26)748
--5044 y(3.5.2)93 b Fj(BZ2_bzBuffToBuffDecompr)o(ess)17
--b Fa(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--53 b Fl(27)449 5153 y(3.6)92 b Fj(zlib)29 b Fl(compatibilit)m(y)g
--(functions)23 b Fa(.)13 b(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
--(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)52
--b Fl(28)449 5263 y(3.7)92 b(Using)30 b(the)g(library)e(in)h(a)i
--Fj(stdio)p Fl(-free)e(en)m(vironmen)m(t)23 b Fa(.)15
--b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)52 b Fl(29)p
--eop
--%%Page: -2 39
---2 38 bop 3699 -116 a Fl(ii)748 83 y(3.7.1)93 b(Getting)31
--b(rid)d(of)j Fj(stdio)20 b Fa(.)13 b(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)49
--b Fl(29)748 193 y(3.7.2)93 b(Critical)28 b(error)i(handling)22
--b Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
--(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54 b Fl(29)449 302
--y(3.8)92 b(Making)30 b(a)h(Windo)m(ws)e(DLL)15 b Fa(.)h(.)f(.)g(.)g(.)g
+-b Fl(21)748 4057 y Fj(3.4.3)93 b Fi(BZ2_bzReadGetUnused)18
+-b Fb(.)10 b(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)48 b Fl(23)748
+-4167 y Fj(3.4.4)93 b Fi(BZ2_bzReadClose)23 b Fb(.)15
+-b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)57 b Fl(23)748
+-4276 y Fj(3.4.5)93 b Fi(BZ2_bzWriteOpen)23 b Fb(.)15
+-b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)57 b Fl(23)748
+-4386 y Fj(3.4.6)93 b Fi(BZ2_bzWrite)16 b Fb(.)11 b(.)k(.)g(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)45 b Fl(24)748
+-4496 y Fj(3.4.7)93 b Fi(BZ2_bzWriteClose)21 b Fb(.)15
+-b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)55 b Fl(25)748
+-4605 y Fj(3.4.8)93 b(Handling)30 b(em)m(b)s(edded)f(compressed)h(data)h
+-(streams)9 b Fb(.)15 b(.)g(.)g(.)38 b Fl(25)748 4715
+-y Fj(3.4.9)93 b(Standard)29 b(\014le-reading/writing)j(co)s(de)16
+-b Fb(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)45
+-b Fl(26)449 4824 y Fj(3.5)92 b(Utilit)m(y)32 b(functions)c
+-Fb(.)15 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)44 b Fl(30)150 545
--y Fk(4)135 b(Miscellanea)11 b Fb(.)21 b(.)f(.)f(.)h(.)f(.)g(.)h(.)f(.)h
--(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)
--h(.)f(.)g(.)h(.)56 b Fk(31)449 682 y Fl(4.1)92 b(Limitations)29
--b(of)h(the)h(compressed)f(\014le)f(format)9 b Fa(.)15
--b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)38
--b Fl(31)449 791 y(4.2)92 b(P)m(ortabilit)m(y)30 b(issues)14
--b Fa(.)f(.)j(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
--(.)g(.)h(.)f(.)g(.)43 b Fl(32)449 901 y(4.3)92 b(Rep)s(orting)29
--b(bugs)f Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
--(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)58 b Fl(32)449 1010 y(4.4)92
--b(Did)29 b(y)m(ou)i(get)h(the)e(righ)m(t)g(pac)m(k)-5
--b(age?)22 b Fa(.)17 b(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
--(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)51
--b Fl(34)449 1120 y(4.5)92 b(T)-8 b(esting)16 b Fa(.)f(.)g(.)g(.)g(.)g
+-g(.)g(.)g(.)g(.)h(.)57 b Fl(27)748 4934 y Fj(3.5.1)93
+-b Fi(BZ2_bzBuffToBuffCompres)o(s)22 b Fb(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)57 b Fl(27)748
+-5044 y Fj(3.5.2)93 b Fi(BZ2_bzBuffToBuffDecompr)o(ess)17
+-b Fb(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+-53 b Fl(28)449 5153 y Fj(3.6)92 b Fi(zlib)29 b Fj(compatibilit)m(y)k
+-(functions)23 b Fb(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)52
+-b Fl(29)449 5263 y Fj(3.7)92 b(Using)30 b(the)h(library)f(in)g(a)h
+-Fi(stdio)p Fj(-free)f(en)m(vironmen)m(t)12 b Fb(.)k(.)f(.)g(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)g(.)41 b Fl(30)p eop
+-%%Page: -2 40
+--2 39 bop 3699 -116 a Fl(ii)748 83 y Fj(3.7.1)93 b(Getting)32
+-b(rid)e(of)g Fi(stdio)17 b Fb(.)d(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46
+-b Fl(30)748 193 y Fj(3.7.2)93 b(Critical)31 b(error)g(handling)18
+-b Fb(.)c(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)47 b Fl(30)449 302 y
+-Fj(3.8)92 b(Making)31 b(a)f(Windo)m(ws)g(DLL)17 b Fb(.)d(.)h(.)g(.)g(.)
+-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46 b Fl(31)150
+-545 y Fk(4)135 b(Miscellanea)11 b Fa(.)21 b(.)f(.)f(.)h(.)f(.)g(.)h(.)f
+-(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)
+-f(.)h(.)f(.)g(.)h(.)56 b Fk(32)449 682 y Fj(4.1)92 b(Limitations)31
+-b(of)g(the)g(compressed)f(\014le)g(format)c Fb(.)15 b(.)g(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)54 b Fl(32)449
+-791 y Fj(4.2)92 b(P)m(ortabilit)m(y)33 b(issues)12 b
+-Fb(.)j(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
+-g(.)g(.)g(.)g(.)41 b Fl(33)449 901 y Fj(4.3)92 b(Rep)s(orting)31
+-b(bugs)24 b Fb(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
--(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)45 b Fl(34)449 1230 y(4.6)92
--b(F)-8 b(urther)30 b(reading)22 b Fa(.)14 b(.)h(.)g(.)h(.)f(.)g(.)g(.)g
+-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54 b Fl(33)449 1010
+-y Fj(4.4)92 b(Did)30 b(y)m(ou)g(get)i(the)f(righ)m(t)g(pac)m(k)-5
+-b(age?)18 b Fb(.)f(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)47 b Fl(35)449
+-1120 y Fj(4.5)92 b(T)-8 b(esting)16 b Fb(.)h(.)e(.)g(.)g(.)g(.)g(.)g(.)
+-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+-g(.)g(.)g(.)g(.)g(.)46 b Fl(35)449 1230 y Fj(4.6)92 b(F)-8
+-b(urther)30 b(reading)17 b Fb(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
--g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)51
--b Fl(35)p eop
+-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46 b
+-Fl(36)p eop
 -%%Trailer
 -end
 -userdict /end-hook known{end-hook}if
 -%%EOF
-diff -Nru bzip2-1.0.1/manual.texi bzip2-1.0.1.new/manual.texi
---- bzip2-1.0.1/manual.texi    Sat Jun 24 20:13:27 2000
-+++ bzip2-1.0.1.new/manual.texi        Thu Jan  1 01:00:00 1970
-@@ -1,2215 +0,0 @@
+diff -Nru bzip2-1.0.2/manual.texi bzip2-1.0.2.new/manual.texi
+--- bzip2-1.0.2/manual.texi    Sat Jan  5 01:52:50 2002
++++ bzip2-1.0.2.new/manual.texi        Thu Jan  1 01:00:00 1970
+@@ -1,2243 +0,0 @@
 -\input texinfo  @c                                  -*- Texinfo -*-
 -@setfilename bzip2.info
 -
 -@ignore
--This file documents bzip2 version 1.0, and associated library
+-This file documents bzip2 version 1.0.2, and associated library
 -libbzip2, written by Julian Seward (jseward@acm.org).
 -
--Copyright (C) 1996-2000 Julian R Seward
+-Copyright (C) 1996-2002 Julian R Seward
 -
 -Permission is granted to make and distribute verbatim copies of
 -this manual provided the copyright notice and this permission notice
@@ -8575,8 +9602,8 @@ diff -Nru bzip2-1.0.1/manual.texi bzip2-1.0.1.new/manual.texi
 -@titlepage
 -@title bzip2 and libbzip2
 -@subtitle a program and library for data compression
--@subtitle copyright (C) 1996-2000 Julian Seward
--@subtitle version 1.0 of 21 March 2000
+-@subtitle copyright (C) 1996-2002 Julian Seward
+-@subtitle version 1.0.2 of 30 December 2001
 -@author Julian Seward
 -
 -@end titlepage
@@ -8585,11 +9612,17 @@ diff -Nru bzip2-1.0.1/manual.texi bzip2-1.0.1.new/manual.texi
 -@parskip 2mm
 -
 -@end iftex
--@node Top, Overview, (dir), (dir)
+-@node Top,,, (dir)
+-
+-The following text is the License for this software.  You should
+-find it identical to that contained in the file LICENSE in the 
+-source distribution.
+-
+-@bf{------------------ START OF THE LICENSE ------------------}
 -
 -This program, @code{bzip2}, 
 -and associated library @code{libbzip2}, are
--Copyright (C) 1996-2000 Julian R Seward.  All rights reserved.
+-Copyright (C) 1996-2002 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
@@ -8627,13 +9660,15 @@ diff -Nru bzip2-1.0.1/manual.texi bzip2-1.0.1.new/manual.texi
 -
 -@code{jseward@@acm.org}
 -
--@code{http://sourceware.cygnus.com/bzip2}
+-@code{bzip2}/@code{libbzip2} version 1.0.2 of 30 December 2001.
 -
--@code{http://www.cacheprof.org}
+-@bf{------------------ END OF THE LICENSE ------------------}
+-
+-Web sites:
 -
--@code{http://www.muraroa.demon.co.uk}
+-@code{http://sources.redhat.com/bzip2}
 -
--@code{bzip2}/@code{libbzip2} version 1.0 of 21 March 2000.
+-@code{http://www.cacheprof.org}
 -
 -PATENTS: To the best of my knowledge, @code{bzip2} does not use any patented
 -algorithms.  However, I do not have the resources available to carry out
@@ -8646,7 +9681,6 @@ diff -Nru bzip2-1.0.1/manual.texi bzip2-1.0.1.new/manual.texi
 -
 -
 -
--@node Overview, Implementation, Top, Top
 -@chapter Introduction
 -
 -@code{bzip2}  compresses  files  using the Burrows-Wheeler 
@@ -8679,7 +9713,7 @@ diff -Nru bzip2-1.0.1/manual.texi bzip2-1.0.1.new/manual.texi
 -@unnumberedsubsubsec NAME
 -@itemize
 -@item @code{bzip2}, @code{bunzip2}
--- a block-sorting file compressor, v1.0
+-- a block-sorting file compressor, v1.0.2
 -@item @code{bzcat} 
 -- decompresses files to stdout
 -@item @code{bzip2recover}
@@ -8809,6 +9843,11 @@ diff -Nru bzip2-1.0.1/manual.texi bzip2-1.0.1.new/manual.texi
 -Force overwrite of output files.  Normally, @code{bzip2} will not overwrite
 -existing output files.  Also forces @code{bzip2} to break hard links
 -to files, which it otherwise wouldn't do.
+-
+-@code{bzip2} normally declines to decompress files which don't have the
+-correct magic header bytes.  If forced (@code{-f}), however, it will
+-pass such files through unmodified.  This is how GNU @code{gzip}
+-behaves.
 -@item -k --keep
 -Keep (don't delete) input files during compression
 -or decompression.
@@ -8831,9 +9870,13 @@ diff -Nru bzip2-1.0.1/manual.texi bzip2-1.0.1.new/manual.texi
 -information which is primarily of interest for diagnostic purposes.
 -@item -L --license -V --version
 -Display the software version, license terms and conditions.
--@item -1 to -9
+-@item -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 @code{--fast} and @code{--best} aliases are primarily for GNU
+-@code{gzip} compatibility.  In particular, @code{--fast} doesn't make
+-things significantly faster.  And @code{--best} merely selects the
+-default behaviour.
 -@item --
 -Treats all subsequent arguments as file names, even if they start
 -with a dash.  This is so you can handle files with names beginning
@@ -8934,21 +9977,19 @@ diff -Nru bzip2-1.0.1/manual.texi bzip2-1.0.1.new/manual.texi
 -undamaged.
 -
 -@code{bzip2recover} 
--takes a single argument, the name of the damaged file, 
--and writes a number of files @code{rec0001file.bz2},
--       @code{rec0002file.bz2}, etc, containing the  extracted  blocks.
--       The  output  filenames  are  designed  so  that the use of
--       wildcards in subsequent processing -- for example,  
--@code{bzip2 -dc  rec*file.bz2 > recovered_data} -- lists the files in
--       the correct order.
+-takes a single argument, the name of the damaged file, and writes a
+-number of files @code{rec00001file.bz2}, @code{rec00002file.bz2}, etc,
+-containing the extracted blocks.  The output filenames are designed so
+-that the use of wildcards in subsequent processing -- for example,
+-@code{bzip2 -dc rec*file.bz2 > recovered_data} -- processes the files in
+-the correct order.
 -
 -@code{bzip2recover} should be of most use dealing with large @code{.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.
+-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.
 -
 -
 -@unnumberedsubsubsec PERFORMANCE NOTES
@@ -8980,22 +10021,31 @@ diff -Nru bzip2-1.0.1/manual.texi bzip2-1.0.1.new/manual.texi
 -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 of @code{bzip2}.  Compressed
+-This manual page pertains to version 1.0.2 of @code{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, 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.
+-compatible with the previous public releases, versions 0.1pl2, 0.9.0,
+-0.9.5, 1.0.0 and 1.0.1, 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.
+-
+-@code{bzip2recover} versions prior to this one, 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.  Version 1.0.2 and
+-above uses 64-bit ints on some platforms which support them (GNU
+-supported targets, and Windows).  To establish whether or not
+-@code{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 @code{MaybeUInt64} set to be an unsigned
+-64-bit integer.
 -
--@code{bzip2recover} uses 32-bit integers to represent bit positions in
--compressed files, so it cannot handle compressed files more than 512
--megabytes long.  This could easily be fixed.
 -
 -
 -@unnumberedsubsubsec AUTHOR
 -Julian Seward, @code{jseward@@acm.org}.
 -
+-@code{http://sources.redhat.com/bzip2}
+-
 -The ideas embodied in @code{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
@@ -9006,8 +10056,9 @@ diff -Nru bzip2-1.0.1/manual.texi bzip2-1.0.1.new/manual.texi
 -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.  Many people sent patches, helped
--with portability problems, lent machines, gave advice and were generally
+-worst-case compression performance.  The @code{bz*} scripts are derived
+-from those of GNU @code{gzip}.  Many people sent patches, helped with
+-portability problems, lent machines, gave advice and were generally
 -helpful.
 -
 -@end quotation
@@ -10314,16 +11365,20 @@ diff -Nru bzip2-1.0.1/manual.texi bzip2-1.0.1.new/manual.texi
 -For a normal compile, an assertion failure yields the message
 -@example
 -   bzip2/libbzip2: internal error number N.
--   This is a bug in bzip2/libbzip2, 1.0 of 21-Mar-2000.
+-   This is a bug in bzip2/libbzip2, 1.0.2, 30-Dec-2001.
 -   Please report it to me at: jseward@@acm.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, 21 March 2000.
+-   quality software.  Thanks.  Julian Seward, 30 December 2001.
 -@end example
--where @code{N} is some error code number.  @code{exit(3)}
--is then called.
+-where @code{N} is some error code number.  If @code{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).
+-
+-@code{exit(3)} is then called.
 -
 -For a @code{stdio}-free library, assertion failures result
 -in a call to a function declared as:
@@ -10601,10 +11656,10 @@ diff -Nru bzip2-1.0.1/manual.texi bzip2-1.0.1.new/manual.texi
 -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, @code{zlib-1.1.2} and
+-Gailly's and Mark Adler's work, @code{zlib-1.1.3} and
 -@code{gzip-1.2.4}.  Look for them at
 -
--@code{http://www.cdrom.com/pub/infozip/zlib} and
+-@code{http://www.zlib.org} and
 -@code{http://www.gzip.org} respectively.
 -
 -For something faster and lighter still, you might try Markus F X J
@@ -10758,136 +11813,219 @@ diff -Nru bzip2-1.0.1/manual.texi bzip2-1.0.1.new/manual.texi
 -
 -@bye
 -
-diff -Nru bzip2-1.0.1/manual_1.html bzip2-1.0.1.new/manual_1.html
---- bzip2-1.0.1/manual_1.html  Sat Jun 24 20:13:27 2000
-+++ bzip2-1.0.1.new/manual_1.html      Thu Jan  1 01:00:00 1970
-@@ -1,47 +0,0 @@
+diff -Nru bzip2-1.0.2/manual_1.html bzip2-1.0.2.new/manual_1.html
+--- bzip2-1.0.2/manual_1.html  Sat Jan  5 01:53:05 2002
++++ bzip2-1.0.2.new/manual_1.html      Thu Jan  1 01:00:00 1970
+@@ -1,81 +0,0 @@
 -<HTML>
+-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+-<!-- Created on January, 5  2002 by texi2html 1.64 -->
+-<!-- 
+-Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+-            Karl Berry  <karl@freefriends.org>
+-            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+-            and many others.
+-Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
+-Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
+- 
+--->
 -<HEAD>
--<!-- This HTML file has been created by texi2html 1.54
--     from manual.texi on 23 March 2000 -->
+-<TITLE>Untitled Document: 1. Introduction</TITLE>
 -
--<TITLE>bzip2 and libbzip2 - Introduction</TITLE>
--<link href="manual_2.html" rel=Next>
--<link href="manual_toc.html" rel=ToC>
+-<META NAME="description" CONTENT="Untitled Document: 1. Introduction">
+-<META NAME="keywords" CONTENT="Untitled Document: 1. Introduction">
+-<META NAME="resource-type" CONTENT="document">
+-<META NAME="distribution" CONTENT="global">
+-<META NAME="Generator" CONTENT="texi2html 1.64">
 -
 -</HEAD>
--<BODY>
--<p>Go to the first, previous, <A HREF="manual_2.html">next</A>, <A HREF="manual_4.html">last</A> section, <A HREF="manual_toc.html">table of contents</A>.
--<P><HR><P>
--
 -
--<H1><A NAME="SEC1" HREF="manual_toc.html#TOC1">Introduction</A></H1>
+-<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
 -
+-<A NAME="SEC1"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_2.html#SEC2"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H1> 1. Introduction </H1>
+-<!--docid::SEC1::-->
 -<P>
+-
 -<CODE>bzip2</CODE>  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.
+-</P><P>
 -
--</P>
--<P>
 -<CODE>bzip2</CODE> is built on top of <CODE>libbzip2</CODE>, a flexible library
 -for handling compressed data in the <CODE>bzip2</CODE> 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.
+-</P><P>
 -
--</P>
--<P>
 -Chapter 2 describes how to use <CODE>bzip2</CODE>; this is the only part 
 -you need to read if you just want to know how to operate the program.
 -Chapter 3 describes the programming interfaces in detail, and
 -Chapter 4 records some miscellaneous notes which I thought
 -ought to be recorded somewhere.
+-</P><P>
+-
+-<HR SIZE="6">
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<BR>  
+-<FONT SIZE="-1">
+-This document was generated
+-by <I>Julian Seward</I> on <I>January, 5  2002</I>
+-using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
+-"><I>texi2html</I></A>
 -
--</P>
--
--<P><HR><P>
--<p>Go to the first, previous, <A HREF="manual_2.html">next</A>, <A HREF="manual_4.html">last</A> section, <A HREF="manual_toc.html">table of contents</A>.
 -</BODY>
 -</HTML>
-diff -Nru bzip2-1.0.1/manual_2.html bzip2-1.0.1.new/manual_2.html
---- bzip2-1.0.1/manual_2.html  Sat Jun 24 20:13:27 2000
-+++ bzip2-1.0.1.new/manual_2.html      Thu Jan  1 01:00:00 1970
-@@ -1,484 +0,0 @@
+diff -Nru bzip2-1.0.2/manual_2.html bzip2-1.0.2.new/manual_2.html
+--- bzip2-1.0.2/manual_2.html  Sat Jan  5 01:53:05 2002
++++ bzip2-1.0.2.new/manual_2.html      Thu Jan  1 01:00:00 1970
+@@ -1,579 +0,0 @@
 -<HTML>
+-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+-<!-- Created on January, 5  2002 by texi2html 1.64 -->
+-<!-- 
+-Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+-            Karl Berry  <karl@freefriends.org>
+-            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+-            and many others.
+-Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
+-Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
+- 
+--->
 -<HEAD>
--<!-- This HTML file has been created by texi2html 1.54
--     from manual.texi on 23 March 2000 -->
+-<TITLE>Untitled Document: 2. How to use <CODE>bzip2</CODE></TITLE>
 -
--<TITLE>bzip2 and libbzip2 - How to use bzip2</TITLE>
--<link href="manual_3.html" rel=Next>
--<link href="manual_1.html" rel=Previous>
--<link href="manual_toc.html" rel=ToC>
+-<META NAME="description" CONTENT="Untitled Document: 2. How to use <CODE>bzip2</CODE>">
+-<META NAME="keywords" CONTENT="Untitled Document: 2. How to use <CODE>bzip2</CODE>">
+-<META NAME="resource-type" CONTENT="document">
+-<META NAME="distribution" CONTENT="global">
+-<META NAME="Generator" CONTENT="texi2html 1.64">
 -
 -</HEAD>
--<BODY>
--<p>Go to the <A HREF="manual_1.html">first</A>, <A HREF="manual_1.html">previous</A>, <A HREF="manual_3.html">next</A>, <A HREF="manual_4.html">last</A> section, <A HREF="manual_toc.html">table of contents</A>.
--<P><HR><P>
--
 -
--<H1><A NAME="SEC2" HREF="manual_toc.html#TOC2">How to use <CODE>bzip2</CODE></A></H1>
+-<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
 -
+-<A NAME="SEC2"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_1.html#SEC1"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_2.html#SEC3"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H1> 2. How to use <CODE>bzip2</CODE> </H1>
+-<!--docid::SEC2::-->
 -<P>
+-
 -This chapter contains a copy of the <CODE>bzip2</CODE> man page,
 -and nothing else.
--
--</P>
+-</P><P>
 -
 -<BLOCKQUOTE>
+-<P>
 -
--
--
--<H4><A NAME="SEC3" HREF="manual_toc.html#TOC3">NAME</A></H4>
--
+-<HR SIZE="6">
+-<A NAME="SEC3"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_2.html#SEC2"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_2.html#SEC4"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H4> NAME </H4>
+-<!--docid::SEC3::-->
 -<UL>
 -<LI><CODE>bzip2</CODE>, <CODE>bunzip2</CODE>
--
--- a block-sorting file compressor, v1.0
+-- a block-sorting file compressor, v1.0.2
 -<LI><CODE>bzcat</CODE>
--
 -- decompresses files to stdout
 -<LI><CODE>bzip2recover</CODE>
--
 -- recovers data from damaged bzip2 files
 -</UL>
+-<P>
 -
--
--
--<H4><A NAME="SEC4" HREF="manual_toc.html#TOC4">SYNOPSIS</A></H4>
--
+-<HR SIZE="6">
+-<A NAME="SEC4"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_2.html#SEC3"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_2.html#SEC5"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H4> SYNOPSIS </H4>
+-<!--docid::SEC4::-->
 -<UL>
 -<LI><CODE>bzip2</CODE> [ -cdfkqstvzVL123456789 ] [ filenames ...  ]
--
 -<LI><CODE>bunzip2</CODE> [ -fkvsVL ] [ filenames ...  ]
--
 -<LI><CODE>bzcat</CODE> [ -s ] [ filenames ...  ]
--
 -<LI><CODE>bzip2recover</CODE> filename
--
 -</UL>
+-<P>
 -
--
--
--<H4><A NAME="SEC5" HREF="manual_toc.html#TOC5">DESCRIPTION</A></H4>
--
+-<HR SIZE="6">
+-<A NAME="SEC5"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_2.html#SEC4"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_2.html#SEC6"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H4> DESCRIPTION </H4>
+-<!--docid::SEC5::-->
 -<P>
+-
 -<CODE>bzip2</CODE> 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.
+-</P><P>
 -
--</P>
--<P>
 -The command-line options are deliberately very similar to those of GNU
 -<CODE>gzip</CODE>, but they are not identical.
+-</P><P>
 -
--</P>
--<P>
 -<CODE>bzip2</CODE> 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 <CODE>original_name.bz2</CODE>.  Each compressed file has the same
@@ -10897,61 +12035,47 @@ diff -Nru bzip2-1.0.1/manual_2.html bzip2-1.0.1.new/manual_2.html
 -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.
+-</P><P>
 -
--</P>
--<P>
 -<CODE>bzip2</CODE> and <CODE>bunzip2</CODE> will by default not overwrite existing
 -files.  If you want this to happen, specify the <CODE>-f</CODE> flag.
+-</P><P>
 -
--</P>
--<P>
 -If no file names are specified, <CODE>bzip2</CODE> compresses from standard
 -input to standard output.  In this case, <CODE>bzip2</CODE> will decline to
 -write compressed output to a terminal, as this would be entirely
 -incomprehensible and therefore pointless.
+-</P><P>
 -
--</P>
--<P>
 -<CODE>bunzip2</CODE> (or <CODE>bzip2 -d</CODE>) decompresses all
 -specified files.  Files which were not created by <CODE>bzip2</CODE>
 -will be detected and ignored, and a warning issued.  
 -<CODE>bzip2</CODE> attempts to guess the filename for the decompressed file 
 -from that of the compressed file as follows:
--
 -<UL>
 -<LI><CODE>filename.bz2 </CODE> becomes <CODE>filename</CODE>
--
 -<LI><CODE>filename.bz  </CODE> becomes <CODE>filename</CODE>
--
 -<LI><CODE>filename.tbz2</CODE> becomes <CODE>filename.tar</CODE>
--
 -<LI><CODE>filename.tbz </CODE> becomes <CODE>filename.tar</CODE>
--
 -<LI><CODE>anyothername </CODE> becomes <CODE>anyothername.out</CODE>
--
 -</UL>
--
--<P>
 -If the file does not end in one of the recognised endings, 
 -<CODE>.bz2</CODE>, <CODE>.bz</CODE>, 
 -<CODE>.tbz2</CODE> or <CODE>.tbz</CODE>, <CODE>bzip2</CODE> complains that it cannot
 -guess the name of the original file, and uses the original name
 -with <CODE>.out</CODE> appended.
--
--</P>
 -<P>
+-
 -As with compression, supplying no
 -filenames causes decompression from standard input to standard output.
+-</P><P>
 -
--</P>
--<P>
 -<CODE>bunzip2</CODE> 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 (<CODE>-t</CODE>) of concatenated compressed files is also supported.
+-</P><P>
 -
--</P>
--<P>
 -You can also compress or decompress files to the standard output by
 -giving the <CODE>-c</CODE> flag.  Multiple files may be compressed and
 -decompressed like this.  The resulting outputs are fed sequentially to
@@ -10960,30 +12084,26 @@ diff -Nru bzip2-1.0.1/manual_2.html bzip2-1.0.1.new/manual_2.html
 -can be decompressed correctly only by <CODE>bzip2</CODE> version 0.9.0 or
 -later.  Earlier versions of <CODE>bzip2</CODE> will stop after decompressing
 -the first file in the stream.
+-</P><P>
 -
--</P>
--<P>
 -<CODE>bzcat</CODE> (or <CODE>bzip2 -dc</CODE>) decompresses all specified files to
 -the standard output.
+-</P><P>
 -
--</P>
--<P>
 -<CODE>bzip2</CODE> will read arguments from the environment variables
 -<CODE>BZIP2</CODE> and <CODE>BZIP</CODE>, in that order, and will process them
 -before any arguments read from the command line.  This gives a 
 -convenient way to supply default arguments.
+-</P><P>
 -
--</P>
--<P>
 -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%.
+-</P><P>
 -
--</P>
--<P>
 -As a self-check for your protection, <CODE>bzip2</CODE> 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
@@ -10994,94 +12114,113 @@ diff -Nru bzip2-1.0.1/manual_2.html bzip2-1.0.1.new/manual_2.html
 -something is wrong.  It can't help you recover the original uncompressed
 -data.  You can use <CODE>bzip2recover</CODE> to try to recover data from
 -damaged files.
+-</P><P>
 -
--</P>
--<P>
 -Return values: 0 for a normal exit, 1 for environmental problems (file
 -not found, invalid flags, I/O errors, &#38;c), 2 to indicate a corrupt
 -compressed file, 3 for an internal consistency error (eg, bug) which
 -caused <CODE>bzip2</CODE> to panic.
--
--</P>
--
--
--
--<H4><A NAME="SEC6" HREF="manual_toc.html#TOC6">OPTIONS</A></H4>
+-</P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC6"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_2.html#SEC5"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_2.html#SEC7"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H4> OPTIONS </H4>
+-<!--docid::SEC6::-->
 -<DL COMPACT>
--
 -<DT><CODE>-c  --stdout</CODE>
--<DD>
--Compress or decompress to standard output.
+-<DD>Compress or decompress to standard output.
 -<DT><CODE>-d  --decompress</CODE>
--<DD>
--Force decompression.  <CODE>bzip2</CODE>, <CODE>bunzip2</CODE> and <CODE>bzcat</CODE> are
+-<DD>Force decompression.  <CODE>bzip2</CODE>, <CODE>bunzip2</CODE> and <CODE>bzcat</CODE> 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.
 -<DT><CODE>-z --compress</CODE>
--<DD>
--The complement to <CODE>-d</CODE>: forces compression, regardless of the
+-<DD>The complement to <CODE>-d</CODE>: forces compression, regardless of the
 -invokation name.
 -<DT><CODE>-t --test</CODE>
--<DD>
--Check integrity of the specified file(s), but don't decompress them.
+-<DD>Check integrity of the specified file(s), but don't decompress them.
 -This really performs a trial decompression and throws away the result.
 -<DT><CODE>-f --force</CODE>
--<DD>
--Force overwrite of output files.  Normally, <CODE>bzip2</CODE> will not overwrite
+-<DD>Force overwrite of output files.  Normally, <CODE>bzip2</CODE> will not overwrite
 -existing output files.  Also forces <CODE>bzip2</CODE> to break hard links
 -to files, which it otherwise wouldn't do.
+-<P>
+-
+-<CODE>bzip2</CODE> normally declines to decompress files which don't have the
+-correct magic header bytes.  If forced (<CODE>-f</CODE>), however, it will
+-pass such files through unmodified.  This is how GNU <CODE>gzip</CODE>
+-behaves.
 -<DT><CODE>-k --keep</CODE>
--<DD>
--Keep (don't delete) input files during compression
+-<DD>Keep (don't delete) input files during compression
 -or decompression.
 -<DT><CODE>-s --small</CODE>
--<DD>
--Reduce memory usage, for compression, decompression and testing.  Files
+-<DD>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.
+-<P>
 -
 -During compression, <CODE>-s</CODE> 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.
 -<DT><CODE>-q --quiet</CODE>
--<DD>
--Suppress non-essential warning messages.  Messages pertaining to
+-<DD>Suppress non-essential warning messages.  Messages pertaining to
 -I/O errors and other critical events will not be suppressed.
 -<DT><CODE>-v --verbose</CODE>
--<DD>
--Verbose mode -- show the compression ratio for each file processed.
+-<DD>Verbose mode -- show the compression ratio for each file processed.
 -Further <CODE>-v</CODE>'s increase the verbosity level, spewing out lots of
 -information which is primarily of interest for diagnostic purposes.
 -<DT><CODE>-L --license -V --version</CODE>
--<DD>
--Display the software version, license terms and conditions.
--<DT><CODE>-1 to -9</CODE>
--<DD>
--Set the block size to 100 k, 200 k ..  900 k when compressing.  Has no
+-<DD>Display the software version, license terms and conditions.
+-<DT><CODE>-1 (or --fast) to -9 (or --best)</CODE>
+-<DD>Set the block size to 100 k, 200 k ..  900 k when compressing.  Has no
 -effect when decompressing.  See MEMORY MANAGEMENT below.
+-The <CODE>--fast</CODE> and <CODE>--best</CODE> aliases are primarily for GNU
+-<CODE>gzip</CODE> compatibility.  In particular, <CODE>--fast</CODE> doesn't make
+-things significantly faster.  And <CODE>--best</CODE> merely selects the
+-default behaviour.
 -<DT><CODE>--</CODE>
--<DD>
--Treats all subsequent arguments as file names, even if they start
+-<DD>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: <CODE>bzip2 -- -myfilename</CODE>.
 -<DT><CODE>--repetitive-fast</CODE>
--<DD>
--<DT><CODE>--repetitive-best</CODE>
--<DD>
--These flags are redundant in versions 0.9.5 and above.  They provided
+-<DD><DT><CODE>--repetitive-best</CODE>
+-<DD>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.
 -</DL>
+-<P>
 -
--
--
--<H4><A NAME="SEC7" HREF="manual_toc.html#TOC7">MEMORY MANAGEMENT</A></H4>
--
+-<HR SIZE="6">
+-<A NAME="SEC7"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_2.html#SEC6"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_2.html#SEC8"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H4> MEMORY MANAGEMENT </H4>
+-<!--docid::SEC7::-->
 -<P>
+-
 -<CODE>bzip2</CODE> 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 <CODE>-1</CODE> through <CODE>-9</CODE>
@@ -11092,43 +12231,34 @@ diff -Nru bzip2-1.0.1/manual_2.html bzip2-1.0.1.new/manual_2.html
 -the file.  Since block sizes are stored in compressed files, it follows
 -that the flags <CODE>-1</CODE> to <CODE>-9</CODE> are irrelevant to and so ignored
 -during decompression.
+-</P><P>
 -
--</P>
--<P>
 -Compression and decompression requirements, in bytes, can be estimated
 -as:
--
--<PRE>
--     Compression:   400k + ( 8 x block size )
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>     Compression:   400k + ( 8 x block size )
 -
 -     Decompression: 100k + ( 4 x block size ), or
 -                    100k + ( 2.5 x block size )
--</PRE>
--
--<P>
--Larger block sizes give rapidly diminishing marginal returns.  Most of
+-</pre></td></tr></table>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 <CODE>bzip2</CODE> 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.
+-</P><P>
 -
--</P>
--<P>
 -For files compressed with the default 900k block size, <CODE>bunzip2</CODE>
 -will require about 3700 kbytes to decompress.  To support decompression
 -of any file on a 4 megabyte machine, <CODE>bunzip2</CODE> 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 <CODE>-s</CODE>.
+-</P><P>
 -
--</P>
--<P>
 -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.
+-</P><P>
 -
--</P>
--<P>
 -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,
@@ -11137,18 +12267,15 @@ diff -Nru bzip2-1.0.1/manual_2.html bzip2-1.0.1.new/manual_2.html
 -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.
+-</P><P>
 -
--</P>
--<P>
 -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.
--
--<PRE>
--          Compress   Decompress   Decompress   Corpus
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>          Compress   Decompress   Decompress   Corpus
 -   Flag     usage      usage       -s usage     Size
 -
 -    -1      1200k       500k         350k      914704
@@ -11160,61 +12287,78 @@ diff -Nru bzip2-1.0.1/manual_2.html bzip2-1.0.1.new/manual_2.html
 -    -7      6100k      2900k        1850k      834096
 -    -8      6800k      3300k        2100k      828642
 -    -9      7600k      3700k        2350k      828642
--</PRE>
--
--
--
--<H4><A NAME="SEC8" HREF="manual_toc.html#TOC8">RECOVERING DATA FROM DAMAGED FILES</A></H4>
--
+-</pre></td></tr></table></P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC8"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_2.html#SEC7"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_2.html#SEC9"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H4> RECOVERING DATA FROM DAMAGED FILES </H4>
+-<!--docid::SEC8::-->
 -<P>
+-
 -<CODE>bzip2</CODE> compresses files in blocks, usually 900kbytes long.  Each
 -block is handled independently.  If a media or transmission error causes
 -a multi-block <CODE>.bz2</CODE> file to become damaged, it may be possible to
 -recover data from the undamaged blocks in the file.
+-</P><P>
 -
--</P>
--<P>
 -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.
+-</P><P>
 -
--</P>
--<P>
 -<CODE>bzip2recover</CODE> is a simple program whose purpose is to search for
 -blocks in <CODE>.bz2</CODE> files, and write each block out into its own
 -<CODE>.bz2</CODE> file.  You can then use <CODE>bzip2 -t</CODE> to test the
 -integrity of the resulting files, and decompress those which are
 -undamaged.
+-</P><P>
 -
--</P>
--<P>
 -<CODE>bzip2recover</CODE> 
--takes a single argument, the name of the damaged file, 
--and writes a number of files <CODE>rec0001file.bz2</CODE>,
--       <CODE>rec0002file.bz2</CODE>, etc, containing the  extracted  blocks.
--       The  output  filenames  are  designed  so  that the use of
--       wildcards in subsequent processing -- for example,  
--<CODE>bzip2 -dc  rec*file.bz2 &#62; recovered_data</CODE> -- lists the files in
--       the correct order.
--
--</P>
--<P>
--<CODE>bzip2recover</CODE> should be of most use dealing with large <CODE>.bz2</CODE>
--       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.
--
--</P>
--
--
--
--<H4><A NAME="SEC9" HREF="manual_toc.html#TOC9">PERFORMANCE NOTES</A></H4>
+-takes a single argument, the name of the damaged file, and writes a
+-number of files <CODE>rec00001file.bz2</CODE>, <CODE>rec00002file.bz2</CODE>, etc,
+-containing the extracted blocks.  The output filenames are designed so
+-that the use of wildcards in subsequent processing -- for example,
+-<CODE>bzip2 -dc rec*file.bz2 &#62; recovered_data</CODE> -- processes the files in
+-the correct order.
+-</P><P>
 -
+-<CODE>bzip2recover</CODE> should be of most use dealing with large <CODE>.bz2</CODE>
+-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.
+-</P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC9"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_2.html#SEC8"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_2.html#SEC10"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H4> PERFORMANCE NOTES </H4>
+-<!--docid::SEC9::-->
 -<P>
+-
 -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
@@ -11223,13 +12367,11 @@ diff -Nru bzip2-1.0.1/manual_2.html bzip2-1.0.1.new/manual_2.html
 -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
 -<CODE>-vvvv</CODE> option to monitor progress in great detail, if you want.
+-</P><P>
 -
--</P>
--<P>
 -Decompression speed is unaffected by these phenomena.
+-</P><P>
 -
--</P>
--<P>
 -<CODE>bzip2</CODE> 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
@@ -11238,44 +12380,71 @@ diff -Nru bzip2-1.0.1/manual_2.html bzip2-1.0.1.new/manual_2.html
 -been observed to give disproportionately large performance improvements.
 -I imagine <CODE>bzip2</CODE> will perform best on machines with very large
 -caches.
--
--</P>
--
--
--
--<H4><A NAME="SEC10" HREF="manual_toc.html#TOC10">CAVEATS</A></H4>
--
+-</P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC10"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_2.html#SEC9"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_2.html#SEC11"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H4> CAVEATS </H4>
+-<!--docid::SEC10::-->
 -<P>
+-
 -I/O error messages are not as helpful as they could be.  <CODE>bzip2</CODE>
 -tries hard to detect I/O errors and exit cleanly, but the details of
 -what the problem is sometimes seem rather misleading.
+-</P><P>
 -
--</P>
--<P>
--This manual page pertains to version 1.0 of <CODE>bzip2</CODE>.  Compressed
+-This manual page pertains to version 1.0.2 of <CODE>bzip2</CODE>.  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, 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.
--
--</P>
+-compatible with the previous public releases, versions 0.1pl2, 0.9.0,
+-0.9.5, 1.0.0 and 1.0.1, 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.
+-</P><P>
+-
+-<CODE>bzip2recover</CODE> versions prior to this one, 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.  Version 1.0.2 and
+-above uses 64-bit ints on some platforms which support them (GNU
+-supported targets, and Windows).  To establish whether or not
+-<CODE>bzip2recover</CODE> 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 <CODE>MaybeUInt64</CODE> set to be an unsigned
+-64-bit integer.
+-</P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC11"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_2.html#SEC10"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC12"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H4> AUTHOR </H4>
+-<!--docid::SEC11::-->
+-Julian Seward, <CODE>jseward@acm.org</CODE>.
 -<P>
--<CODE>bzip2recover</CODE> uses 32-bit integers to represent bit positions in
--compressed files, so it cannot handle compressed files more than 512
--megabytes long.  This could easily be fixed.
--
--</P>
 -
+-<CODE>http://sources.redhat.com/bzip2</CODE>
+-</P><P>
 -
--
--<H4><A NAME="SEC11" HREF="manual_toc.html#TOC11">AUTHOR</A></H4>
--<P>
--Julian Seward, <CODE>jseward@acm.org</CODE>.
--
--</P>
--<P>
 -The ideas embodied in <CODE>bzip2</CODE> 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
@@ -11286,91 +12455,147 @@ diff -Nru bzip2-1.0.1/manual_2.html bzip2-1.0.1.new/manual_2.html
 -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.  Many people sent patches, helped
--with portability problems, lent machines, gave advice and were generally
+-worst-case compression performance.  The <CODE>bz*</CODE> scripts are derived
+-from those of GNU <CODE>gzip</CODE>.  Many people sent patches, helped with
+-portability problems, lent machines, gave advice and were generally
 -helpful.
+-</P><P>
 -
--</P>
 -</BLOCKQUOTE>
 -
--<P><HR><P>
--<p>Go to the <A HREF="manual_1.html">first</A>, <A HREF="manual_1.html">previous</A>, <A HREF="manual_3.html">next</A>, <A HREF="manual_4.html">last</A> section, <A HREF="manual_toc.html">table of contents</A>.
+-<HR SIZE="6">
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<BR>  
+-<FONT SIZE="-1">
+-This document was generated
+-by <I>Julian Seward</I> on <I>January, 5  2002</I>
+-using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
+-"><I>texi2html</I></A>
+-
 -</BODY>
 -</HTML>
-diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
---- bzip2-1.0.1/manual_3.html  Sat Jun 24 20:13:27 2000
-+++ bzip2-1.0.1.new/manual_3.html      Thu Jan  1 01:00:00 1970
-@@ -1,1773 +0,0 @@
+diff -Nru bzip2-1.0.2/manual_3.html bzip2-1.0.2.new/manual_3.html
+--- bzip2-1.0.2/manual_3.html  Sat Jan  5 01:53:05 2002
++++ bzip2-1.0.2.new/manual_3.html      Thu Jan  1 01:00:00 1970
+@@ -1,1855 +0,0 @@
 -<HTML>
+-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+-<!-- Created on January, 5  2002 by texi2html 1.64 -->
+-<!-- 
+-Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+-            Karl Berry  <karl@freefriends.org>
+-            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+-            and many others.
+-Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
+-Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
+- 
+--->
 -<HEAD>
--<!-- This HTML file has been created by texi2html 1.54
--     from manual.texi on 23 March 2000 -->
+-<TITLE>Untitled Document: 3. Programming with <CODE>libbzip2</CODE></TITLE>
 -
--<TITLE>bzip2 and libbzip2 - Programming with libbzip2</TITLE>
--<link href="manual_4.html" rel=Next>
--<link href="manual_2.html" rel=Previous>
--<link href="manual_toc.html" rel=ToC>
+-<META NAME="description" CONTENT="Untitled Document: 3. Programming with <CODE>libbzip2</CODE>">
+-<META NAME="keywords" CONTENT="Untitled Document: 3. Programming with <CODE>libbzip2</CODE>">
+-<META NAME="resource-type" CONTENT="document">
+-<META NAME="distribution" CONTENT="global">
+-<META NAME="Generator" CONTENT="texi2html 1.64">
 -
 -</HEAD>
--<BODY>
--<p>Go to the <A HREF="manual_1.html">first</A>, <A HREF="manual_2.html">previous</A>, <A HREF="manual_4.html">next</A>, <A HREF="manual_4.html">last</A> section, <A HREF="manual_toc.html">table of contents</A>.
--<P><HR><P>
 -
+-<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
 -
--<H1><A NAME="SEC12" HREF="manual_toc.html#TOC12">Programming with <CODE>libbzip2</CODE></A></H1>
--
+-<A NAME="SEC12"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_2.html#SEC11"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC13"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H1> 3. Programming with <CODE>libbzip2</CODE> </H1>
+-<!--docid::SEC12::-->
 -<P>
+-
 -This chapter describes the programming interface to <CODE>libbzip2</CODE>.
+-</P><P>
 -
--</P>
--<P>
 -For general background information, particularly about memory
 -use and performance aspects, you'd be well advised to read Chapter 2
 -as well.
--
--</P>
--
--
--<H2><A NAME="SEC13" HREF="manual_toc.html#TOC13">Top-level structure</A></H2>
--
+-</P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC13"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC12"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC14"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H2> 3.1 Top-level structure </H2>
+-<!--docid::SEC13::-->
 -<P>
+-
 -<CODE>libbzip2</CODE> is a flexible library for compressing and decompressing
 -data in the <CODE>bzip2</CODE> 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.
+-</P><P>
 -
--</P>
--<P>
 -The structure of <CODE>libbzip2</CODE>'s interfaces is similar to
 -that of Jean-loup Gailly's and Mark Adler's excellent <CODE>zlib</CODE> 
 -library.
+-</P><P>
 -
--</P>
--<P>
 -All externally visible symbols have names beginning <CODE>BZ2_</CODE>.
 -This is new in version 1.0.  The intention is to minimise pollution
 -of the namespaces of library clients.
--
--</P>
--
--
--<H3><A NAME="SEC14" HREF="manual_toc.html#TOC14">Low-level summary</A></H3>
--
+-</P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC14"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC13"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC15"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H3> 3.1.1 Low-level summary </H3>
+-<!--docid::SEC14::-->
 -<P>
+-
 -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 <CODE>stdio.h</CODE>, which may be helpful for embedded applications.
+-</P><P>
 -
--</P>
--<P>
 -The low-level part of the library has no global variables and
 -is therefore thread-safe.
+-</P><P>
 -
--</P>
--<P>
 -Six routines make up the low level interface: 
 -<CODE>BZ2_bzCompressInit</CODE>, <CODE>BZ2_bzCompress</CODE>, and <BR> <CODE>BZ2_bzCompressEnd</CODE>
 -for compression,
@@ -11380,9 +12605,8 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -memory for compression/decompression and do other
 -initialisations, whilst the <CODE>*End</CODE> functions close down operations
 -and release memory.
+-</P><P>
 -
--</P>
--<P>
 -The real work is done by <CODE>BZ2_bzCompress</CODE> and <CODE>BZ2_bzDecompress</CODE>.  
 -These compress and decompress data from a user-supplied input buffer
 -to a user-supplied output buffer.  These buffers can be any size;
@@ -11390,52 +12614,70 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -to these functions.  This is a flexible mechanism allowing a 
 -consumer-pull style of activity, or producer-push, or a mixture of
 -both.
--
--</P>
--
--
--
--<H3><A NAME="SEC15" HREF="manual_toc.html#TOC15">High-level summary</A></H3>
--
+-</P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC15"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC14"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC16"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H3> 3.1.2 High-level summary </H3>
+-<!--docid::SEC15::-->
 -<P>
+-
 -This interface provides some handy wrappers around the low-level
 -interface to facilitate reading and writing <CODE>bzip2</CODE> format
 -files (<CODE>.bz2</CODE> files).  The routines provide hooks to facilitate
 -reading files in which the <CODE>bzip2</CODE> data stream is embedded 
 -within some larger-scale file structure, or where there are
 -multiple <CODE>bzip2</CODE> data streams concatenated end-to-end.
+-</P><P>
 -
--</P>
--<P>
 -For reading files, <CODE>BZ2_bzReadOpen</CODE>, <CODE>BZ2_bzRead</CODE>,
 -<CODE>BZ2_bzReadClose</CODE> and <BR> <CODE>BZ2_bzReadGetUnused</CODE> are supplied.  For
 -writing files, <CODE>BZ2_bzWriteOpen</CODE>, <CODE>BZ2_bzWrite</CODE> and
 -<CODE>BZ2_bzWriteFinish</CODE> are available.
+-</P><P>
 -
--</P>
--<P>
 -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 <CODE>errno</CODE> to determine the cause of
 -the error.  In that case, you'd need a C library which correctly
 -supports <CODE>errno</CODE> in a multithreaded environment.
+-</P><P>
 -
--</P>
--<P>
 -To make the library a little simpler and more portable,
 -<CODE>BZ2_bzReadOpen</CODE> and <CODE>BZ2_bzWriteOpen</CODE> require you to pass them file
 -handles (<CODE>FILE*</CODE>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.
--
--</P>
--
--
--
--<H3><A NAME="SEC16" HREF="manual_toc.html#TOC16">Utility functions summary</A></H3>
--<P>
+-</P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC16"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC15"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC17"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H3> 3.1.3 Utility functions summary </H3>
+-<!--docid::SEC16::-->
 -For very simple needs, <CODE>BZ2_bzBuffToBuffCompress</CODE> and
 -<CODE>BZ2_bzBuffToBuffDecompress</CODE> are provided.  These compress
 -data in memory from one buffer to another buffer in a single
@@ -11443,9 +12685,8 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -fulfill your memory-to-memory compression/decompression
 -requirements before investing effort in understanding the more
 -general but more complex low-level interface.
--
--</P>
 -<P>
+-
 -Yoshioka Tsuneo (<CODE>QWF00133@niftyserve.or.jp</CODE> /
 -<CODE>tsuneo-y@is.aist-nara.ac.jp</CODE>) has contributed some functions to
 -give better <CODE>zlib</CODE> compatibility.  These functions are
@@ -11457,19 +12698,29 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -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.
+-</P><P>
 -
--</P>
--<P>
 -Yoshioka also contributed modifications to allow the library to be
 -built as a Windows DLL.
--
--</P>
--
--
--
--<H2><A NAME="SEC17" HREF="manual_toc.html#TOC17">Error handling</A></H2>
--
+-</P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC17"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC16"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC18"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H2> 3.2 Error handling </H2>
+-<!--docid::SEC17::-->
 -<P>
+-
 -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
@@ -11477,9 +12728,8 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -if you are feeling especially paranoid.  I would be interested in
 -hearing more about the robustness of the library to corrupted
 -compressed data.
+-</P><P>
 -
--</P>
--<P>
 -Version 1.0 is much more robust in this respect than
 -0.9.0 or 0.9.5.  Investigations with Checker (a tool for 
 -detecting problems with memory management, similar to Purify)
@@ -11488,15 +12738,13 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -segmentation faults, no reads of uninitialised data and no 
 -out of range reads or writes.  So it's certainly much improved,
 -although I wouldn't claim it to be totally bombproof.
+-</P><P>
 -
--</P>
--<P>
 -The file <CODE>bzlib.h</CODE> contains all definitions needed to use
 -the library.  In particular, you should definitely not include
 -<CODE>bzlib_private.h</CODE>.
+-</P><P>
 -
--</P>
--<P>
 -In <CODE>bzlib.h</CODE>, 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
@@ -11504,31 +12752,23 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -return value.  The first five actions are normal and not intended to 
 -denote an error situation.
 -<DL COMPACT>
--
 -<DT><CODE>BZ_OK</CODE>
--<DD>
--The requested action was completed successfully.
+-<DD>The requested action was completed successfully.
 -<DT><CODE>BZ_RUN_OK</CODE>
--<DD>
--<DT><CODE>BZ_FLUSH_OK</CODE>
--<DD>
--<DT><CODE>BZ_FINISH_OK</CODE>
--<DD>
--In <CODE>BZ2_bzCompress</CODE>, the requested flush/finish/nothing-special action
+-<DD><DT><CODE>BZ_FLUSH_OK</CODE>
+-<DD><DT><CODE>BZ_FINISH_OK</CODE>
+-<DD>In <CODE>BZ2_bzCompress</CODE>, the requested flush/finish/nothing-special action
 -was completed successfully.
 -<DT><CODE>BZ_STREAM_END</CODE>
--<DD>
--Compression of data was completed, or the logical stream end was
+-<DD>Compression of data was completed, or the logical stream end was
 -detected during decompression.
 -</DL>
--
 -<P>
+-
 -The following return values indicate an error of some kind.
 -<DL COMPACT>
--
 -<DT><CODE>BZ_CONFIG_ERROR</CODE>
--<DD>
--Indicates that the library has been improperly compiled on your
+-<DD>Indicates that the library has been improperly compiled on your
 -platform -- a major configuration error.  Specifically, it means
 -that <CODE>sizeof(char)</CODE>, <CODE>sizeof(short)</CODE> and <CODE>sizeof(int)</CODE>
 -are not 1, 2 and 4 respectively, as they should be.  Note that the 
@@ -11538,8 +12778,7 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -still 4, so <CODE>libbzip2</CODE>, which doesn't use the <CODE>long</CODE> type,
 -is OK.
 -<DT><CODE>BZ_SEQUENCE_ERROR</CODE>
--<DD>
--When using the library, it is important to call the functions in the
+-<DD>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.  <CODE>libbzip2</CODE> checks as much as it can to ensure this is
 -happening, and returns <CODE>BZ_SEQUENCE_ERROR</CODE> if not.  Code which
@@ -11547,15 +12786,13 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -should never receive this value; such an event denotes buggy code
 -which you should investigate.
 -<DT><CODE>BZ_PARAM_ERROR</CODE>
--<DD>
--Returned when a parameter to a function call is out of range 
+-<DD>Returned when a parameter to a function call is out of range 
 -or otherwise manifestly incorrect.  As with <CODE>BZ_SEQUENCE_ERROR</CODE>,
 -this denotes a bug in the client code.  The distinction between
 -<CODE>BZ_PARAM_ERROR</CODE> and <CODE>BZ_SEQUENCE_ERROR</CODE> is a bit hazy, but still worth
 -making.
 -<DT><CODE>BZ_MEM_ERROR</CODE>
--<DD>
--Returned when a request to allocate memory failed.  Note that the
+-<DD>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 <CODE>BZ2_bzDecompress</CODE> and
 -<CODE>BZ2_bzRead</CODE> may return <CODE>BZ_MEM_ERROR</CODE> even though some of
@@ -11563,19 +12800,16 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -compression; once <CODE>BZ2_bzCompressInit</CODE> or <CODE>BZ2_bzWriteOpen</CODE> have
 -successfully completed, <CODE>BZ_MEM_ERROR</CODE> cannot occur.
 -<DT><CODE>BZ_DATA_ERROR</CODE>
--<DD>
--Returned when a data integrity error is detected during decompression.
+-<DD>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.
 -<DT><CODE>BZ_DATA_ERROR_MAGIC</CODE>
--<DD>
--As a special case of <CODE>BZ_DATA_ERROR</CODE>, it is sometimes useful to
+-<DD>As a special case of <CODE>BZ_DATA_ERROR</CODE>, it is sometimes useful to
 -know when the compressed stream does not start with the correct
 -magic bytes (<CODE>'B' 'Z' 'h'</CODE>).  
 -<DT><CODE>BZ_IO_ERROR</CODE>
--<DD>
--Returned by <CODE>BZ2_bzRead</CODE> and <CODE>BZ2_bzWrite</CODE> when there is an error
+-<DD>Returned by <CODE>BZ2_bzRead</CODE> and <CODE>BZ2_bzWrite</CODE> when there is an error
 -reading or writing in the compressed file, and by <CODE>BZ2_bzReadOpen</CODE>
 -and <CODE>BZ2_bzWriteOpen</CODE> for attempts to use a file for which the
 -error indicator (viz, <CODE>ferror(f)</CODE>) is set.
@@ -11583,26 +12817,48 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -<CODE>errno</CODE> and/or <CODE>perror</CODE> to acquire operating-system
 -specific information about the problem.
 -<DT><CODE>BZ_UNEXPECTED_EOF</CODE>
--<DD>
--Returned by <CODE>BZ2_bzRead</CODE> when the compressed file finishes
+-<DD>Returned by <CODE>BZ2_bzRead</CODE> when the compressed file finishes
 -before the logical end of stream is detected.
 -<DT><CODE>BZ_OUTBUFF_FULL</CODE>
--<DD>
--Returned by <CODE>BZ2_bzBuffToBuffCompress</CODE> and
+-<DD>Returned by <CODE>BZ2_bzBuffToBuffCompress</CODE> and
 -<CODE>BZ2_bzBuffToBuffDecompress</CODE> to indicate that the output data
 -will not fit into the output buffer provided.
 -</DL>
+-<P>
 -
--
--
--<H2><A NAME="SEC18" HREF="manual_toc.html#TOC18">Low-level interface</A></H2>
--
--
--
--<H3><A NAME="SEC19" HREF="manual_toc.html#TOC19"><CODE>BZ2_bzCompressInit</CODE></A></H3>
--
--<PRE>
--typedef 
+-<HR SIZE="6">
+-<A NAME="SEC18"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC17"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC19"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H2> 3.3 Low-level interface </H2>
+-<!--docid::SEC18::-->
+-<P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC19"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC18"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC20"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H3> 3.3.1 <CODE>BZ2_bzCompressInit</CODE> </H3>
+-<!--docid::SEC19::-->
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>typedef 
 -   struct {
 -      char *next_in;
 -      unsigned int avail_in;
@@ -11627,9 +12883,8 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -                         int verbosity,
 -                         int workFactor );
 -
--</PRE>
+-</pre></td></tr></table><P>
 -
--<P>
 -Prepares for compression.  The <CODE>bz_stream</CODE> structure
 -holds all data pertaining to the compression activity.  
 -A <CODE>bz_stream</CODE> structure should be allocated and initialised
@@ -11637,9 +12892,8 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -The fields of <CODE>bz_stream</CODE>
 -comprise the entirety of the user-visible data.  <CODE>state</CODE>
 -is a pointer to the private data structures required for compression.
+-</P><P>
 -
--</P>
--<P>
 -Custom memory allocators are supported, via fields <CODE>bzalloc</CODE>, 
 -<CODE>bzfree</CODE>,
 -and <CODE>opaque</CODE>.  The value 
@@ -11651,17 +12905,15 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -<CODE>n * m</CODE> bytes of memory, and <CODE>bzfree ( opaque, p )</CODE> 
 -should free
 -that memory.
+-</P><P>
 -
--</P>
--<P>
 -If you don't want to use a custom memory allocator, set <CODE>bzalloc</CODE>, 
 -<CODE>bzfree</CODE> and
 -<CODE>opaque</CODE> to <CODE>NULL</CODE>, 
 -and the library will then use the standard <CODE>malloc</CODE>/<CODE>free</CODE>
 -routines.
+-</P><P>
 -
--</P>
--<P>
 -Before calling <CODE>BZ2_bzCompressInit</CODE>, fields <CODE>bzalloc</CODE>, 
 -<CODE>bzfree</CODE> and <CODE>opaque</CODE> should
 -be filled appropriately, as just described.  Upon return, the internal
@@ -11675,24 +12927,21 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -platforms, using the <CODE>_hi32</CODE> fields to store the upper 32 bits
 -of the count.  So, for example, the total amount of data in
 -is <CODE>(total_in_hi32 &#60;&#60; 32) + total_in_lo32</CODE>.
+-</P><P>
 -
--</P>
--<P>
 -Parameter <CODE>blockSize100k</CODE> 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.
+-</P><P>
 -
--</P>
--<P>
 -Parameter <CODE>verbosity</CODE> 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
 -<CODE>-DBZ_NO_STDIO</CODE>, no such output will appear for any verbosity
 -setting.
+-</P><P>
 -
--</P>
--<P>
 -Parameter <CODE>workFactor</CODE> 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
@@ -11700,9 +12949,8 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -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.
+-</P><P>
 -
--</P>
--<P>
 -Lower values of <CODE>workFactor</CODE> 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
@@ -11710,30 +12958,24 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -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.
+-</P><P>
 -
--</P>
--<P>
 -Allowable values range from 0 to 250 inclusive.  0 is a special case,
 -equivalent to using the default value of 30.
+-</P><P>
 -
--</P>
--<P>
 -Note that the compressed output generated is the same regardless of
 -whether or not the fallback algorithm is used.
+-</P><P>
 -
--</P>
--<P>
 -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.
+-</P><P>
 -
--</P>
--<P>
 -Possible return values:
--
--<PRE>
--      <CODE>BZ_CONFIG_ERROR</CODE>
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      <CODE>BZ_CONFIG_ERROR</CODE>
 -         if the library has been mis-compiled
 -      <CODE>BZ_PARAM_ERROR</CODE> 
 -         if <CODE>strm</CODE> is <CODE>NULL</CODE> 
@@ -11744,75 +12986,70 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -         if not enough memory is available
 -      <CODE>BZ_OK</CODE> 
 -         otherwise
--</PRE>
--
--<P>
--Allowable next actions:
--
--<PRE>
--      <CODE>BZ2_bzCompress</CODE> 
+-</pre></td></tr></table>Allowable next actions:
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      <CODE>BZ2_bzCompress</CODE> 
 -         if <CODE>BZ_OK</CODE> is returned
 -      no specific action needed in case of error
--</PRE>
--
--
--
--<H3><A NAME="SEC20" HREF="manual_toc.html#TOC20"><CODE>BZ2_bzCompress</CODE></A></H3>
--
--<PRE>
--   int BZ2_bzCompress ( bz_stream *strm, int action );
--</PRE>
--
--<P>
--Provides more input and/or output buffer space for the library.  The
+-</pre></td></tr></table></P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC20"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC19"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC21"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H3> 3.3.2 <CODE>BZ2_bzCompress</CODE> </H3>
+-<!--docid::SEC20::-->
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>   int BZ2_bzCompress ( bz_stream *strm, int action );
+-</pre></td></tr></table>Provides more input and/or output buffer space for the library.  The
 -caller maintains input and output buffers, and calls <CODE>BZ2_bzCompress</CODE> to
 -transfer data between them.
--
--</P>
 -<P>
+-
 -Before each call to <CODE>BZ2_bzCompress</CODE>, <CODE>next_in</CODE> should point at
 -the data to be compressed, and <CODE>avail_in</CODE> should indicate how many
 -bytes the library may read.  <CODE>BZ2_bzCompress</CODE> updates <CODE>next_in</CODE>,
 -<CODE>avail_in</CODE> and <CODE>total_in</CODE> to reflect the number of bytes it
 -has read.
+-</P><P>
 -
--</P>
--<P>
 -Similarly, <CODE>next_out</CODE> should point to a buffer in which the
 -compressed data is to be placed, with <CODE>avail_out</CODE> indicating how
 -much output space is available.  <CODE>BZ2_bzCompress</CODE> updates
 -<CODE>next_out</CODE>, <CODE>avail_out</CODE> and <CODE>total_out</CODE> to reflect the
 -number of bytes output.
+-</P><P>
 -
--</P>
--<P>
 -You may provide and remove as little or as much data as you like on each
 -call of <CODE>BZ2_bzCompress</CODE>.  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.
+-</P><P>
 -
--</P>
--<P>
 -A second purpose of <CODE>BZ2_bzCompress</CODE> is to request a change of mode of the
 -compressed stream.  
+-</P><P>
 -
--</P>
--<P>
 -Conceptually, a compressed stream can be in one of four states: IDLE,
 -RUNNING, FLUSHING and FINISHING.  Before initialisation
 -(<CODE>BZ2_bzCompressInit</CODE>) and after termination (<CODE>BZ2_bzCompressEnd</CODE>), a
 -stream is regarded as IDLE.
+-</P><P>
 -
--</P>
--<P>
 -Upon initialisation (<CODE>BZ2_bzCompressInit</CODE>), the stream is placed in the
 -RUNNING state.  Subsequent calls to <CODE>BZ2_bzCompress</CODE> should pass
 -<CODE>BZ_RUN</CODE> as the requested action; other actions are illegal and
 -will result in <CODE>BZ_SEQUENCE_ERROR</CODE>.
+-</P><P>
 -
--</P>
--<P>
 -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
@@ -11821,9 +13058,8 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -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 <CODE>BZ2_bzCompress</CODE>.
+-</P><P>
 -
--</P>
--<P>
 -Instead, the calling program passes <CODE>BZ_FINISH</CODE> as an action to
 -<CODE>BZ2_bzCompress</CODE>.  This changes the stream's state to FINISHING.  Any
 -remaining input (ie, <CODE>next_in[0 .. avail_in-1]</CODE>) is compressed and
@@ -11832,9 +13068,8 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -point, <CODE>BZ2_bzCompress</CODE> returns <CODE>BZ_STREAM_END</CODE>, and the stream's
 -state is set back to IDLE.  <CODE>BZ2_bzCompressEnd</CODE> should then be
 -called.
+-</P><P>
 -
--</P>
--<P>
 -Just to make sure the calling program does not cheat, the library makes
 -a note of <CODE>avail_in</CODE> at the time of the first call to
 -<CODE>BZ2_bzCompress</CODE> which has <CODE>BZ_FINISH</CODE> as an action (ie, at the
@@ -11844,9 +13079,8 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -attempts to slip in more data to compress.  Any calls for which this is
 -detected will return <CODE>BZ_SEQUENCE_ERROR</CODE>.  This indicates a
 -programming mistake which should be corrected.
+-</P><P>
 -
--</P>
--<P>
 -Instead of asking to finish, the calling program may ask
 -<CODE>BZ2_bzCompress</CODE> to take all the remaining input, compress it and
 -terminate the current (Burrows-Wheeler) compression block.  This could
@@ -11856,23 +13090,19 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -<CODE>BZ_FLUSH</CODE> action until the value <CODE>BZ_RUN</CODE> is returned.  As
 -with finishing, <CODE>BZ2_bzCompress</CODE> detects any attempt to provide more
 -input data once the flush has begun.
+-</P><P>
 -
--</P>
--<P>
 -Once the flush is complete, the stream returns to the normal RUNNING
 -state.
+-</P><P>
 -
--</P>
--<P>
 -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 <CODE>BZ2_bzCompress</CODE>.
--
--<PRE>
--IDLE/<CODE>any</CODE>           
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">IDLE/<CODE>any</CODE>           
 -      Illegal.  IDLE state only exists after <CODE>BZ2_bzCompressEnd</CODE> or
 -      before <CODE>BZ2_bzCompressInit</CODE>.
 -      Return value = <CODE>BZ_SEQUENCE_ERROR</CODE>
@@ -11919,176 +13149,167 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -FINISHING/other
 -      Illegal.
 -      Return value = <CODE>BZ_SEQUENCE_ERROR</CODE>
--</PRE>
+-</pre></td></tr></table></P><P>
 -
--<P>
 -That still looks complicated?  Well, fair enough.  The usual sequence
 -of calls for compressing a load of data is:
--
 -<UL>
 -<LI>Get started with <CODE>BZ2_bzCompressInit</CODE>.
--
 -<LI>Shovel data in and shlurp out its compressed form using zero or more
--
 -calls of <CODE>BZ2_bzCompress</CODE> with action = <CODE>BZ_RUN</CODE>.
 -<LI>Finish up.
--
 -Repeatedly call <CODE>BZ2_bzCompress</CODE> with action = <CODE>BZ_FINISH</CODE>, 
 -copying out the compressed output, until <CODE>BZ_STREAM_END</CODE> is returned.
 -<LI>Close up and go home.  Call <CODE>BZ2_bzCompressEnd</CODE>.
--
 -</UL>
--
--<P>
 -If the data you want to compress fits into your input buffer all
 -at once, you can skip the calls of <CODE>BZ2_bzCompress ( ..., BZ_RUN )</CODE> and 
 -just do the <CODE>BZ2_bzCompress ( ..., BZ_FINISH )</CODE> calls.
--
--</P>
 -<P>
+-
 -All required memory is allocated by <CODE>BZ2_bzCompressInit</CODE>.  The
 -compression library can accept any data at all (obviously).  So you
 -shouldn't get any error return values from the <CODE>BZ2_bzCompress</CODE> calls.
 -If you do, they will be <CODE>BZ_SEQUENCE_ERROR</CODE>, and indicate a bug in
 -your programming.
+-</P><P>
 -
--</P>
--<P>
 -Trivial other possible return values:
--
--<PRE>
--      <CODE>BZ_PARAM_ERROR</CODE>   
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      <CODE>BZ_PARAM_ERROR</CODE>   
 -         if <CODE>strm</CODE> is <CODE>NULL</CODE>, or <CODE>strm-&#62;s</CODE> is <CODE>NULL</CODE>
--</PRE>
--
--
--
--<H3><A NAME="SEC21" HREF="manual_toc.html#TOC21"><CODE>BZ2_bzCompressEnd</CODE></A></H3>
--
--<PRE>
--int BZ2_bzCompressEnd ( bz_stream *strm );
--</PRE>
--
+-</pre></td></tr></table></P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC21"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC20"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC22"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H3> 3.3.3 <CODE>BZ2_bzCompressEnd</CODE> </H3>
+-<!--docid::SEC21::-->
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>int BZ2_bzCompressEnd ( bz_stream *strm );
+-</pre></td></tr></table>Releases all memory associated with a compression stream.
 -<P>
--Releases all memory associated with a compression stream.
 -
--</P>
--<P>
 -Possible return values:
--
--<PRE>
--   <CODE>BZ_PARAM_ERROR</CODE>    if <CODE>strm</CODE> is <CODE>NULL</CODE> or <CODE>strm-&#62;s</CODE> is <CODE>NULL</CODE>
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">   <CODE>BZ_PARAM_ERROR</CODE>    if <CODE>strm</CODE> is <CODE>NULL</CODE> or <CODE>strm-&#62;s</CODE> is <CODE>NULL</CODE>
 -   <CODE>BZ_OK</CODE>    otherwise
--</PRE>
--
--
--
--<H3><A NAME="SEC22" HREF="manual_toc.html#TOC22"><CODE>BZ2_bzDecompressInit</CODE></A></H3>
--
--<PRE>
--int BZ2_bzDecompressInit ( bz_stream *strm, int verbosity, int small );
--</PRE>
--
--<P>
--Prepares for decompression.  As with <CODE>BZ2_bzCompressInit</CODE>, a
+-</pre></td></tr></table></P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC22"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC21"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC23"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H3> 3.3.4 <CODE>BZ2_bzDecompressInit</CODE> </H3>
+-<!--docid::SEC22::-->
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>int BZ2_bzDecompressInit ( bz_stream *strm, int verbosity, int small );
+-</pre></td></tr></table>Prepares for decompression.  As with <CODE>BZ2_bzCompressInit</CODE>, a
 -<CODE>bz_stream</CODE> record should be allocated and initialised before the
 -call.  Fields <CODE>bzalloc</CODE>, <CODE>bzfree</CODE> and <CODE>opaque</CODE> should be
 -set if a custom memory allocator is required, or made <CODE>NULL</CODE> for
 -the normal <CODE>malloc</CODE>/<CODE>free</CODE> routines.  Upon return, the internal
 -state will have been initialised, and <CODE>total_in</CODE> and
 -<CODE>total_out</CODE> will be zero.
--
--</P>
 -<P>
+-
 -For the meaning of parameter <CODE>verbosity</CODE>, see <CODE>BZ2_bzCompressInit</CODE>.
+-</P><P>
 -
--</P>
--<P>
 -If <CODE>small</CODE> 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 Chapter 2 for
 -more information on memory management.
+-</P><P>
 -
--</P>
--<P>
 -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 <CODE>BZ2_bzDecompressInit</CODE> succeeds, a subsequent
 -<CODE>BZ2_bzDecompress</CODE> could fail with <CODE>BZ_MEM_ERROR</CODE>.
+-</P><P>
 -
--</P>
--<P>
 -Possible return values:
--
--<PRE>
--      <CODE>BZ_CONFIG_ERROR</CODE>
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      <CODE>BZ_CONFIG_ERROR</CODE>
 -         if the library has been mis-compiled
 -      <CODE>BZ_PARAM_ERROR</CODE>
 -         if <CODE>(small != 0 &#38;&#38; small != 1)</CODE>
 -         or <CODE>(verbosity &#60; 0 || verbosity &#62; 4)</CODE>
 -      <CODE>BZ_MEM_ERROR</CODE>
 -         if insufficient memory is available
--</PRE>
+-</pre></td></tr></table></P><P>
 -
--<P>
 -Allowable next actions:
--
--<PRE>
--      <CODE>BZ2_bzDecompress</CODE>
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      <CODE>BZ2_bzDecompress</CODE>
 -         if <CODE>BZ_OK</CODE> was returned
 -      no specific action required in case of error
--</PRE>
+-</pre></td></tr></table></P><P>
 -
--<P>
 - 
--
--</P>
--
--
--<H3><A NAME="SEC23" HREF="manual_toc.html#TOC23"><CODE>BZ2_bzDecompress</CODE></A></H3>
--
--<PRE>
--int BZ2_bzDecompress ( bz_stream *strm );
--</PRE>
--
--<P>
--Provides more input and/out output buffer space for the library.  The
+-</P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC23"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC22"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC24"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H3> 3.3.5 <CODE>BZ2_bzDecompress</CODE> </H3>
+-<!--docid::SEC23::-->
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>int BZ2_bzDecompress ( bz_stream *strm );
+-</pre></td></tr></table>Provides more input and/out output buffer space for the library.  The
 -caller maintains input and output buffers, and uses <CODE>BZ2_bzDecompress</CODE>
 -to transfer data between them.
--
--</P>
 -<P>
+-
 -Before each call to <CODE>BZ2_bzDecompress</CODE>, <CODE>next_in</CODE> 
 -should point at the compressed data,
 -and <CODE>avail_in</CODE> should indicate how many bytes the library
 -may read.  <CODE>BZ2_bzDecompress</CODE> updates <CODE>next_in</CODE>, <CODE>avail_in</CODE> 
 -and <CODE>total_in</CODE>
 -to reflect the number of bytes it has read.
+-</P><P>
 -
--</P>
--<P>
 -Similarly, <CODE>next_out</CODE> should point to a buffer in which the uncompressed
 -output is to be placed, with <CODE>avail_out</CODE> indicating how much output space
 -is available.  <CODE>BZ2_bzCompress</CODE> updates <CODE>next_out</CODE>,
 -<CODE>avail_out</CODE> and <CODE>total_out</CODE> to reflect
 -the number of bytes output.
+-</P><P>
 -
--</P>
--<P>
 -You may provide and remove as little or as much data as you like on
 -each call of <CODE>BZ2_bzDecompress</CODE>.  
 -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.
+-</P><P>
 -
--</P>
--<P>
 -Use of <CODE>BZ2_bzDecompress</CODE> is simpler than <CODE>BZ2_bzCompress</CODE>.
+-</P><P>
 -
--</P>
--<P>
 -You should provide input and remove output as described above, and
 -repeatedly call <CODE>BZ2_bzDecompress</CODE> until <CODE>BZ_STREAM_END</CODE> is
 -returned.  Appearance of <CODE>BZ_STREAM_END</CODE> denotes that
@@ -12098,18 +13319,14 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -<CODE>BZ_STREAM_END</CODE> appears, you are guaranteed to have available all
 -the decompressed output, and <CODE>BZ2_bzDecompressEnd</CODE> can safely be
 -called.
+-</P><P>
 -
--</P>
--<P>
 -If case of an error return value, you should call <CODE>BZ2_bzDecompressEnd</CODE>
 -to clean up and release memory.
+-</P><P>
 -
--</P>
--<P>
 -Possible return values:
--
--<PRE>
--      <CODE>BZ_PARAM_ERROR</CODE>
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      <CODE>BZ_PARAM_ERROR</CODE>
 -         if <CODE>strm</CODE> is <CODE>NULL</CODE> or <CODE>strm-&#62;s</CODE> is <CODE>NULL</CODE>
 -         or <CODE>strm-&#62;avail_out &#60; 1</CODE>
 -      <CODE>BZ_DATA_ERROR</CODE>
@@ -12123,60 +13340,66 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -         output in has been consumed, eg <CODE>s-&#62;avail_out &#62; 0</CODE>
 -      <CODE>BZ_OK</CODE>
 -         otherwise
--</PRE>
--
--<P>
--Allowable next actions:
--
--<PRE>
--      <CODE>BZ2_bzDecompress</CODE>
+-</pre></td></tr></table>Allowable next actions:
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      <CODE>BZ2_bzDecompress</CODE>
 -         if <CODE>BZ_OK</CODE> was returned
 -      <CODE>BZ2_bzDecompressEnd</CODE>
 -         otherwise
--</PRE>
--
--
--
--<H3><A NAME="SEC24" HREF="manual_toc.html#TOC24"><CODE>BZ2_bzDecompressEnd</CODE></A></H3>
--
--<PRE>
--int BZ2_bzDecompressEnd ( bz_stream *strm );
--</PRE>
--
+-</pre></td></tr></table></P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC24"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC23"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC25"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H3> 3.3.6 <CODE>BZ2_bzDecompressEnd</CODE> </H3>
+-<!--docid::SEC24::-->
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>int BZ2_bzDecompressEnd ( bz_stream *strm );
+-</pre></td></tr></table>Releases all memory associated with a decompression stream.
 -<P>
--Releases all memory associated with a decompression stream.
 -
--</P>
--<P>
 -Possible return values:
--
--<PRE>
--      <CODE>BZ_PARAM_ERROR</CODE>
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      <CODE>BZ_PARAM_ERROR</CODE>
 -         if <CODE>strm</CODE> is <CODE>NULL</CODE> or <CODE>strm-&#62;s</CODE> is <CODE>NULL</CODE>
 -      <CODE>BZ_OK</CODE>
 -         otherwise
--</PRE>
+-</pre></td></tr></table></P><P>
 -
--<P>
 -Allowable next actions:
--
--<PRE>
--      None.
--</PRE>
--
--
--
--<H2><A NAME="SEC25" HREF="manual_toc.html#TOC25">High-level interface</A></H2>
--
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      None.
+-</pre></td></tr></table></P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC25"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC24"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC26"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H2> 3.4 High-level interface </H2>
+-<!--docid::SEC25::-->
 -<P>
+-
 -This interface provides functions for reading and writing 
 -<CODE>bzip2</CODE> format files.  First, some general points.
--
--</P>
+-</P><P>
 -
 -<UL>
 -<LI>All of the functions take an <CODE>int*</CODE> first argument,
--
 -  <CODE>bzerror</CODE>.
 -  After each call, <CODE>bzerror</CODE> should be consulted first to determine
 -  the outcome of the call.  If <CODE>bzerror</CODE> is <CODE>BZ_OK</CODE>, 
@@ -12190,7 +13413,6 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -  <CODE>bzerror</CODE> may also be set to various other values; precise details are
 -  given on a per-function basis below.
 -<LI>If <CODE>bzerror</CODE> indicates an error
--
 -  (ie, anything except <CODE>BZ_OK</CODE> and <CODE>BZ_STREAM_END</CODE>),
 -  you should immediately call <CODE>BZ2_bzReadClose</CODE> (or <CODE>BZ2_bzWriteClose</CODE>,
 -  depending on whether you are attempting to read or to write)
@@ -12201,66 +13423,66 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -  be checked after each call, and (2) if <CODE>bzerror</CODE> indicates an error, 
 -  <CODE>BZ2_bzReadClose</CODE> (<CODE>BZ2_bzWriteClose</CODE>) should then be called to clean up.
 -<LI>The <CODE>FILE*</CODE> arguments passed to
--
 -   <CODE>BZ2_bzReadOpen</CODE>/<CODE>BZ2_bzWriteOpen</CODE>  
 -  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.
 -<LI>Memory allocation requests are handled by
--
 -  <CODE>malloc</CODE>/<CODE>free</CODE>.  
 -  At present
 -  there is no facility for user-defined memory allocators in the file I/O
 -  functions (could easily be added, though).
 -</UL>
+-<P>
 -
--
--
--<H3><A NAME="SEC26" HREF="manual_toc.html#TOC26"><CODE>BZ2_bzReadOpen</CODE></A></H3>
--
--<PRE>
--   typedef void BZFILE;
+-<HR SIZE="6">
+-<A NAME="SEC26"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC25"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC27"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H3> 3.4.1 <CODE>BZ2_bzReadOpen</CODE> </H3>
+-<!--docid::SEC26::-->
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>   typedef void BZFILE;
 -
 -   BZFILE *BZ2_bzReadOpen ( int *bzerror, FILE *f, 
 -                            int small, int verbosity,
 -                            void *unused, int nUnused );
--</PRE>
--
--<P>
--Prepare to read compressed data from file handle <CODE>f</CODE>.  <CODE>f</CODE>
+-</pre></td></tr></table>Prepare to read compressed data from file handle <CODE>f</CODE>.  <CODE>f</CODE>
 -should refer to a file which has been opened for reading, and for which
 -the error indicator (<CODE>ferror(f)</CODE>)is not set.  If <CODE>small</CODE> is 1,
 -the library will try to decompress using less memory, at the expense of
 -speed.
--
--</P>
 -<P>
+-
 -For reasons explained below, <CODE>BZ2_bzRead</CODE> will decompress the
 -<CODE>nUnused</CODE> bytes starting at <CODE>unused</CODE>, before starting to read
 -from the file <CODE>f</CODE>.  At most <CODE>BZ_MAX_UNUSED</CODE> bytes may be
 -supplied like this.  If this facility is not required, you should pass
 -<CODE>NULL</CODE> and <CODE>0</CODE> for <CODE>unused</CODE> and n<CODE>Unused</CODE>
 -respectively.
+-</P><P>
 -
--</P>
--<P>
 -For the meaning of parameters <CODE>small</CODE> and <CODE>verbosity</CODE>,
 -see <CODE>BZ2_bzDecompressInit</CODE>.
+-</P><P>
 -
--</P>
--<P>
 -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
 -<CODE>BZ2_bzReadOpen</CODE> returns <CODE>BZ_OK</CODE> but a subsequent call of
 -<CODE>BZ2_bzRead</CODE> will return <CODE>BZ_MEM_ERROR</CODE>.
+-</P><P>
 -
--</P>
--<P>
 -Possible assignments to <CODE>bzerror</CODE>:
--
--<PRE>
--      <CODE>BZ_CONFIG_ERROR</CODE>
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      <CODE>BZ_CONFIG_ERROR</CODE>
 -         if the library has been mis-compiled
 -      <CODE>BZ_PARAM_ERROR</CODE>
 -         if <CODE>f</CODE> is <CODE>NULL</CODE> 
@@ -12273,38 +13495,39 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -         if insufficient memory is available
 -      <CODE>BZ_OK</CODE>
 -         otherwise.
--</PRE>
+-</pre></td></tr></table></P><P>
 -
--<P>
 -Possible return values:
--
--<PRE>
--      Pointer to an abstract <CODE>BZFILE</CODE>        
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      Pointer to an abstract <CODE>BZFILE</CODE>        
 -         if <CODE>bzerror</CODE> is <CODE>BZ_OK</CODE>   
 -      <CODE>NULL</CODE>
 -         otherwise
--</PRE>
+-</pre></td></tr></table></P><P>
 -
--<P>
 -Allowable next actions:
--
--<PRE>
--      <CODE>BZ2_bzRead</CODE>
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      <CODE>BZ2_bzRead</CODE>
 -         if <CODE>bzerror</CODE> is <CODE>BZ_OK</CODE>   
 -      <CODE>BZ2_bzClose</CODE> 
 -         otherwise
--</PRE>
--
--
--
--<H3><A NAME="SEC27" HREF="manual_toc.html#TOC27"><CODE>BZ2_bzRead</CODE></A></H3>
--
--<PRE>
--   int BZ2_bzRead ( int *bzerror, BZFILE *b, void *buf, int len );
--</PRE>
--
--<P>
--Reads up to <CODE>len</CODE> (uncompressed) bytes from the compressed file 
+-</pre></td></tr></table></P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC27"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC26"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC28"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H3> 3.4.2 <CODE>BZ2_bzRead</CODE> </H3>
+-<!--docid::SEC27::-->
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>   int BZ2_bzRead ( int *bzerror, BZFILE *b, void *buf, int len );
+-</pre></td></tr></table>Reads up to <CODE>len</CODE> (uncompressed) bytes from the compressed file 
 -<CODE>b</CODE> into
 -the buffer <CODE>buf</CODE>.  If the read was successful, 
 -<CODE>bzerror</CODE> is set to <CODE>BZ_OK</CODE>
@@ -12312,9 +13535,8 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -was detected, <CODE>bzerror</CODE> will be set to <CODE>BZ_STREAM_END</CODE>, 
 -and the number
 -of bytes read is returned.  All other <CODE>bzerror</CODE> values denote an error.
--
--</P>
 -<P>
+-
 -<CODE>BZ2_bzRead</CODE> will supply <CODE>len</CODE> bytes,
 -unless the logical stream end is detected
 -or an error occurs.  Because of this, it is possible to detect the 
@@ -12323,9 +13545,8 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -requested.  Nevertheless, this is regarded as inadvisable; you should
 -instead check <CODE>bzerror</CODE> after every call and watch out for
 -<CODE>BZ_STREAM_END</CODE>.
+-</P><P>
 -
--</P>
--<P>
 -Internally, <CODE>BZ2_bzRead</CODE> copies data from the compressed file in chunks
 -of size <CODE>BZ_MAX_UNUSED</CODE> bytes
 -before decompressing it.  If the file contains more bytes than strictly
@@ -12333,13 +13554,10 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -read some of the trailing data before signalling <CODE>BZ_SEQUENCE_END</CODE>.
 -To collect the read but unused data once <CODE>BZ_SEQUENCE_END</CODE> has 
 -appeared, call <CODE>BZ2_bzReadGetUnused</CODE> immediately before <CODE>BZ2_bzReadClose</CODE>.
+-</P><P>
 -
--</P>
--<P>
 -Possible assignments to <CODE>bzerror</CODE>:
--
--<PRE>
--      <CODE>BZ_PARAM_ERROR</CODE>
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      <CODE>BZ_PARAM_ERROR</CODE>
 -         if <CODE>b</CODE> is <CODE>NULL</CODE> or <CODE>buf</CODE> is <CODE>NULL</CODE> or <CODE>len &#60; 0</CODE>
 -      <CODE>BZ_SEQUENCE_ERROR</CODE> 
 -         if <CODE>b</CODE> was opened with <CODE>BZ2_bzWriteOpen</CODE>
@@ -12358,56 +13576,53 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -         if the logical end of stream was detected.
 -      <CODE>BZ_OK</CODE>
 -         otherwise.
--</PRE>
+-</pre></td></tr></table></P><P>
 -
--<P>
 -Possible return values:
--
--<PRE>
--      number of bytes read
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      number of bytes read
 -         if <CODE>bzerror</CODE> is <CODE>BZ_OK</CODE> or <CODE>BZ_STREAM_END</CODE>
 -      undefined
 -         otherwise
--</PRE>
+-</pre></td></tr></table></P><P>
 -
--<P>
 -Allowable next actions:
--
--<PRE>
--      collect data from <CODE>buf</CODE>, then <CODE>BZ2_bzRead</CODE> or <CODE>BZ2_bzReadClose</CODE>
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      collect data from <CODE>buf</CODE>, then <CODE>BZ2_bzRead</CODE> or <CODE>BZ2_bzReadClose</CODE>
 -         if <CODE>bzerror</CODE> is <CODE>BZ_OK</CODE> 
 -      collect data from <CODE>buf</CODE>, then <CODE>BZ2_bzReadClose</CODE> or <CODE>BZ2_bzReadGetUnused</CODE> 
 -         if <CODE>bzerror</CODE> is <CODE>BZ_SEQUENCE_END</CODE>   
 -      <CODE>BZ2_bzReadClose</CODE> 
 -         otherwise
--</PRE>
--
--
--
--<H3><A NAME="SEC28" HREF="manual_toc.html#TOC28"><CODE>BZ2_bzReadGetUnused</CODE></A></H3>
--
--<PRE>
--   void BZ2_bzReadGetUnused ( int* bzerror, BZFILE *b, 
+-</pre></td></tr></table></P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC28"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC27"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC29"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H3> 3.4.3 <CODE>BZ2_bzReadGetUnused</CODE> </H3>
+-<!--docid::SEC28::-->
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>   void BZ2_bzReadGetUnused ( int* bzerror, BZFILE *b, 
 -                              void** unused, int* nUnused );
--</PRE>
--
--<P>
--Returns data which was read from the compressed file but was not needed
+-</pre></td></tr></table>Returns data which was read from the compressed file but was not needed
 -to get to the logical end-of-stream.  <CODE>*unused</CODE> is set to the address
 -of the data, and <CODE>*nUnused</CODE> to the number of bytes.  <CODE>*nUnused</CODE> will
 -be set to a value between <CODE>0</CODE> and <CODE>BZ_MAX_UNUSED</CODE> inclusive.
--
--</P>
 -<P>
+-
 -This function may only be called once <CODE>BZ2_bzRead</CODE> has signalled 
 -<CODE>BZ_STREAM_END</CODE> but before <CODE>BZ2_bzReadClose</CODE>.
+-</P><P>
 -
--</P>
--<P>
 -Possible assignments to <CODE>bzerror</CODE>:
--
--<PRE>
--      <CODE>BZ_PARAM_ERROR</CODE> 
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      <CODE>BZ_PARAM_ERROR</CODE> 
 -         if <CODE>b</CODE> is <CODE>NULL</CODE> 
 -         or <CODE>unused</CODE> is <CODE>NULL</CODE> or <CODE>nUnused</CODE> is <CODE>NULL</CODE>
 -      <CODE>BZ_SEQUENCE_ERROR</CODE> 
@@ -12415,82 +13630,82 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -         or if <CODE>b</CODE> was opened with <CODE>BZ2_bzWriteOpen</CODE>
 -     <CODE>BZ_OK</CODE>
 -         otherwise
--</PRE>
+-</pre></td></tr></table></P><P>
 -
--<P>
 -Allowable next actions:
--
--<PRE>
--      <CODE>BZ2_bzReadClose</CODE>
--</PRE>
--
--
--
--<H3><A NAME="SEC29" HREF="manual_toc.html#TOC29"><CODE>BZ2_bzReadClose</CODE></A></H3>
--
--<PRE>
--   void BZ2_bzReadClose ( int *bzerror, BZFILE *b );
--</PRE>
--
--<P>
--Releases all memory pertaining to the compressed file <CODE>b</CODE>.  
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      <CODE>BZ2_bzReadClose</CODE>
+-</pre></td></tr></table></P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC29"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC28"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC30"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H3> 3.4.4 <CODE>BZ2_bzReadClose</CODE> </H3>
+-<!--docid::SEC29::-->
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>   void BZ2_bzReadClose ( int *bzerror, BZFILE *b );
+-</pre></td></tr></table>Releases all memory pertaining to the compressed file <CODE>b</CODE>.  
 -<CODE>BZ2_bzReadClose</CODE> does not call <CODE>fclose</CODE> on the underlying file
 -handle, so you should do that yourself if appropriate.
 -<CODE>BZ2_bzReadClose</CODE> should be called to clean up after all error
 -situations.
--
--</P>
 -<P>
--Possible assignments to <CODE>bzerror</CODE>:
 -
--<PRE>
--      <CODE>BZ_SEQUENCE_ERROR</CODE> 
+-Possible assignments to <CODE>bzerror</CODE>:
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      <CODE>BZ_SEQUENCE_ERROR</CODE> 
 -         if <CODE>b</CODE> was opened with <CODE>BZ2_bzOpenWrite</CODE> 
 -      <CODE>BZ_OK</CODE> 
 -         otherwise
--</PRE>
+-</pre></td></tr></table></P><P>
 -
--<P>
 -Allowable next actions:
--
--<PRE>
--      none
--</PRE>
--
--
--
--<H3><A NAME="SEC30" HREF="manual_toc.html#TOC30"><CODE>BZ2_bzWriteOpen</CODE></A></H3>
--
--<PRE>
--   BZFILE *BZ2_bzWriteOpen ( int *bzerror, FILE *f, 
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      none
+-</pre></td></tr></table></P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC30"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC29"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC31"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H3> 3.4.5 <CODE>BZ2_bzWriteOpen</CODE> </H3>
+-<!--docid::SEC30::-->
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>   BZFILE *BZ2_bzWriteOpen ( int *bzerror, FILE *f, 
 -                             int blockSize100k, int verbosity,
 -                             int workFactor );
--</PRE>
--
--<P>
--Prepare to write compressed data to file handle <CODE>f</CODE>.  
+-</pre></td></tr></table>Prepare to write compressed data to file handle <CODE>f</CODE>.  
 -<CODE>f</CODE> should refer to
 -a file which has been opened for writing, and for which the error
 -indicator (<CODE>ferror(f)</CODE>)is not set.  
--
--</P>
 -<P>
+-
 -For the meaning of parameters <CODE>blockSize100k</CODE>,
 -<CODE>verbosity</CODE> and <CODE>workFactor</CODE>, see
 -<BR> <CODE>BZ2_bzCompressInit</CODE>.
+-</P><P>
 -
--</P>
--<P>
 -All required memory is allocated at this stage, so if the call
 -completes successfully, <CODE>BZ_MEM_ERROR</CODE> cannot be signalled by a
 -subsequent call to <CODE>BZ2_bzWrite</CODE>.
+-</P><P>
 -
--</P>
--<P>
 -Possible assignments to <CODE>bzerror</CODE>:
--
--<PRE>
--      <CODE>BZ_CONFIG_ERROR</CODE>
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      <CODE>BZ_CONFIG_ERROR</CODE>
 -         if the library has been mis-compiled
 -      <CODE>BZ_PARAM_ERROR</CODE> 
 -         if <CODE>f</CODE> is <CODE>NULL</CODE> 
@@ -12501,47 +13716,45 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -         if insufficient memory is available
 -      <CODE>BZ_OK</CODE> 
 -         otherwise
--</PRE>
+-</pre></td></tr></table></P><P>
 -
--<P>
 -Possible return values:
--
--<PRE>
--      Pointer to an abstract <CODE>BZFILE</CODE>  
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      Pointer to an abstract <CODE>BZFILE</CODE>  
 -         if <CODE>bzerror</CODE> is <CODE>BZ_OK</CODE>   
 -      <CODE>NULL</CODE> 
 -         otherwise
--</PRE>
+-</pre></td></tr></table></P><P>
 -
--<P>
 -Allowable next actions:
--
--<PRE>
--      <CODE>BZ2_bzWrite</CODE> 
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      <CODE>BZ2_bzWrite</CODE> 
 -         if <CODE>bzerror</CODE> is <CODE>BZ_OK</CODE> 
 -         (you could go directly to <CODE>BZ2_bzWriteClose</CODE>, but this would be pretty pointless)
 -      <CODE>BZ2_bzWriteClose</CODE> 
 -         otherwise
--</PRE>
--
--
--
--<H3><A NAME="SEC31" HREF="manual_toc.html#TOC31"><CODE>BZ2_bzWrite</CODE></A></H3>
--
--<PRE>
--   void BZ2_bzWrite ( int *bzerror, BZFILE *b, void *buf, int len );
--</PRE>
--
--<P>
--Absorbs <CODE>len</CODE> bytes from the buffer <CODE>buf</CODE>, eventually to be
+-</pre></td></tr></table></P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC31"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC30"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC32"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H3> 3.4.6 <CODE>BZ2_bzWrite</CODE> </H3>
+-<!--docid::SEC31::-->
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>   void BZ2_bzWrite ( int *bzerror, BZFILE *b, void *buf, int len );
+-</pre></td></tr></table>Absorbs <CODE>len</CODE> bytes from the buffer <CODE>buf</CODE>, eventually to be
 -compressed and written to the file.
--
--</P>
 -<P>
--Possible assignments to <CODE>bzerror</CODE>:
 -
--<PRE>
--      <CODE>BZ_PARAM_ERROR</CODE> 
+-Possible assignments to <CODE>bzerror</CODE>:
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      <CODE>BZ_PARAM_ERROR</CODE> 
 -         if <CODE>b</CODE> is <CODE>NULL</CODE> or <CODE>buf</CODE> is <CODE>NULL</CODE> or <CODE>len &#60; 0</CODE>
 -      <CODE>BZ_SEQUENCE_ERROR</CODE> 
 -         if b was opened with <CODE>BZ2_bzReadOpen</CODE>
@@ -12549,14 +13762,24 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -         if there is an error writing the compressed file.
 -      <CODE>BZ_OK</CODE> 
 -         otherwise
--</PRE>
--
--
--
--<H3><A NAME="SEC32" HREF="manual_toc.html#TOC32"><CODE>BZ2_bzWriteClose</CODE></A></H3>
--
--<PRE>
--   void BZ2_bzWriteClose ( int *bzerror, BZFILE* f,
+-</pre></td></tr></table></P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC32"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC31"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC33"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H3> 3.4.7 <CODE>BZ2_bzWriteClose</CODE> </H3>
+-<!--docid::SEC32::-->
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>   void BZ2_bzWriteClose ( int *bzerror, BZFILE* f,
 -                           int abandon,
 -                           unsigned int* nbytes_in,
 -                           unsigned int* nbytes_out );
@@ -12567,18 +13790,16 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -                             unsigned int* nbytes_in_hi32,
 -                             unsigned int* nbytes_out_lo32,
 -                             unsigned int* nbytes_out_hi32 );
--</PRE>
+-</pre></td></tr></table><P>
 -
--<P>
 -Compresses and flushes to the compressed file all data so far supplied
 -by <CODE>BZ2_bzWrite</CODE>.  The logical end-of-stream markers are also written, so
 -subsequent calls to <CODE>BZ2_bzWrite</CODE> are illegal.  All memory associated 
 -with the compressed file <CODE>b</CODE> is released.  
 -<CODE>fflush</CODE> is called on the
 -compressed file, but it is not <CODE>fclose</CODE>'d.
+-</P><P>
 -
--</P>
--<P>
 -If <CODE>BZ2_bzWriteClose</CODE> 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
@@ -12586,9 +13807,8 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -operation, nor to <CODE>fflush</CODE> the compressed file.  You can force this
 -behaviour to happen even in the case of no error, by passing a nonzero
 -value to <CODE>abandon</CODE>.
+-</P><P>
 -
--</P>
--<P>
 -If <CODE>nbytes_in</CODE> is non-null, <CODE>*nbytes_in</CODE> will be set to be the
 -total volume of uncompressed data handled.  Similarly, <CODE>nbytes_out</CODE>
 -will be set to the total volume of compressed data written.  For 
@@ -12596,38 +13816,43 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -only yields the lower 32 bits of these counts.  Use
 -<CODE>BZ2_bzWriteClose64</CODE> if you want the full 64 bit counts.  These
 -two functions are otherwise absolutely identical.
+-</P><P>
 -
--</P>
--
--<P>
 -Possible assignments to <CODE>bzerror</CODE>:
--
--<PRE>
--      <CODE>BZ_SEQUENCE_ERROR</CODE> 
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      <CODE>BZ_SEQUENCE_ERROR</CODE> 
 -         if <CODE>b</CODE> was opened with <CODE>BZ2_bzReadOpen</CODE>
 -      <CODE>BZ_IO_ERROR</CODE> 
 -         if there is an error writing the compressed file
 -      <CODE>BZ_OK</CODE> 
 -         otherwise
--</PRE>
--
--
--
--<H3><A NAME="SEC33" HREF="manual_toc.html#TOC33">Handling embedded compressed data streams</A></H3>
--
+-</pre></td></tr></table></P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC33"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC32"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC34"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H3> 3.4.8 Handling embedded compressed data streams </H3>
+-<!--docid::SEC33::-->
 -<P>
+-
 -The high-level library facilitates use of
 -<CODE>bzip2</CODE> data streams which form some part of a surrounding, larger
 -data stream.
--
 -<UL>
 -<LI>For writing, the library takes an open file handle, writes
--
 -compressed data to it, <CODE>fflush</CODE>es it but does not <CODE>fclose</CODE> it.
 -The calling application can write its own data before and after the
 -compressed data stream, using that same file handle.
 -<LI>Reading is more complex, and the facilities are not as general
--
 -as they could be since generality is hard to reconcile with efficiency.
 -<CODE>BZ2_bzRead</CODE> reads from the compressed file in blocks of size
 -<CODE>BZ_MAX_UNUSED</CODE> bytes, and in doing so probably will overshoot
@@ -12637,8 +13862,8 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -(the one returning <CODE>BZ_STREAM_END</CODE>) but before calling
 -<CODE>BZ2_bzReadClose</CODE>.
 -</UL>
--
 -<P>
+-
 -This mechanism makes it easy to decompress multiple <CODE>bzip2</CODE>
 -streams placed end-to-end.  As the end of one stream, when <CODE>BZ2_bzRead</CODE>
 -returns <CODE>BZ_STREAM_END</CODE>, call <CODE>BZ2_bzReadGetUnused</CODE> to collect the
@@ -12651,22 +13876,30 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -physical end of file (<CODE>feof(f)</CODE>).  In this situation
 -<CODE>BZ2_bzReadGetUnused</CODE>
 -will of course return no data.
+-</P><P>
 -
--</P>
--<P>
 -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.
--
--</P>
--
--
--<H3><A NAME="SEC34" HREF="manual_toc.html#TOC34">Standard file-reading/writing code</A></H3>
--<P>
+-</P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC34"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC33"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC35"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H3> 3.4.9 Standard file-reading/writing code </H3>
+-<!--docid::SEC34::-->
 -Here's how you'd write data to a compressed file:
--
--<PRE>
--FILE*   f;
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>FILE*   f;
 -BZFILE* b;
 -int     nBuf;
 -char    buf[ /* whatever size you like */ ];
@@ -12696,13 +13929,8 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -if (bzerror == BZ_IO_ERROR) {
 -   /* handle error */
 -}
--</PRE>
--
--<P>
--And to read from a compressed file:
--
--<PRE>
--FILE*   f;
+-</pre></td></tr></table>And to read from a compressed file:
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>FILE*   f;
 -BZFILE* b;
 -int     nBuf;
 -char    buf[ /* whatever size you like */ ];
@@ -12732,63 +13960,75 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -} else {
 -   BZ2_bzReadClose ( &#38;bzerror );
 -}
--</PRE>
--
--
--
--<H2><A NAME="SEC35" HREF="manual_toc.html#TOC35">Utility functions</A></H2>
--
--
--<H3><A NAME="SEC36" HREF="manual_toc.html#TOC36"><CODE>BZ2_bzBuffToBuffCompress</CODE></A></H3>
--
--<PRE>
--   int BZ2_bzBuffToBuffCompress( char*         dest,
+-</pre></td></tr></table><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC35"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC34"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC36"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H2> 3.5 Utility functions </H2>
+-<!--docid::SEC35::-->
+-<HR SIZE="6">
+-<A NAME="SEC36"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC35"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC37"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H3> 3.5.1 <CODE>BZ2_bzBuffToBuffCompress</CODE> </H3>
+-<!--docid::SEC36::-->
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>   int BZ2_bzBuffToBuffCompress( char*         dest,
 -                                 unsigned int* destLen,
 -                                 char*         source,
 -                                 unsigned int  sourceLen,
 -                                 int           blockSize100k,
 -                                 int           verbosity,
 -                                 int           workFactor );
--</PRE>
--
--<P>
--Attempts to compress the data in <CODE>source[0 .. sourceLen-1]</CODE>
+-</pre></td></tr></table>Attempts to compress the data in <CODE>source[0 .. sourceLen-1]</CODE>
 -into the destination buffer, <CODE>dest[0 .. *destLen-1]</CODE>.
 -If the destination buffer is big enough, <CODE>*destLen</CODE> is
 -set to the size of the compressed data, and <CODE>BZ_OK</CODE> is
 -returned.  If the compressed data won't fit, <CODE>*destLen</CODE>
 -is unchanged, and <CODE>BZ_OUTBUFF_FULL</CODE> is returned.
--
--</P>
 -<P>
+-
 -Compression in this manner is a one-shot event, done with a single call
 -to this function.  The resulting compressed data is a complete
 -<CODE>bzip2</CODE> 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.
+-</P><P>
 -
--</P>
--<P>
 -For the meaning of parameters <CODE>blockSize100k</CODE>, <CODE>verbosity</CODE>
 -and <CODE>workFactor</CODE>, <BR> see <CODE>BZ2_bzCompressInit</CODE>.
+-</P><P>
 -
--</P>
--<P>
 -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.
+-</P><P>
 -
--</P>
--<P>
 -<CODE>BZ2_bzBuffToBuffDecompress</CODE> will not write data at or
 -beyond <CODE>dest[*destLen]</CODE>, even in case of buffer overflow.
+-</P><P>
 -
--</P>
--<P>
 -Possible return values:
--
--<PRE>
--      <CODE>BZ_CONFIG_ERROR</CODE>
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      <CODE>BZ_CONFIG_ERROR</CODE>
 -         if the library has been mis-compiled
 -      <CODE>BZ_PARAM_ERROR</CODE> 
 -         if <CODE>dest</CODE> is <CODE>NULL</CODE> or <CODE>destLen</CODE> is <CODE>NULL</CODE>
@@ -12801,59 +14041,59 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -         if the size of the compressed data exceeds <CODE>*destLen</CODE>
 -      <CODE>BZ_OK</CODE> 
 -         otherwise
--</PRE>
--
--
--
--<H3><A NAME="SEC37" HREF="manual_toc.html#TOC37"><CODE>BZ2_bzBuffToBuffDecompress</CODE></A></H3>
--
--<PRE>
--   int BZ2_bzBuffToBuffDecompress ( char*         dest,
+-</pre></td></tr></table></P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC37"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC36"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC38"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H3> 3.5.2 <CODE>BZ2_bzBuffToBuffDecompress</CODE> </H3>
+-<!--docid::SEC37::-->
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>   int BZ2_bzBuffToBuffDecompress ( char*         dest,
 -                                    unsigned int* destLen,
 -                                    char*         source,
 -                                    unsigned int  sourceLen,
 -                                    int           small,
 -                                    int           verbosity );
--</PRE>
--
--<P>
--Attempts to decompress the data in <CODE>source[0 .. sourceLen-1]</CODE>
+-</pre></td></tr></table>Attempts to decompress the data in <CODE>source[0 .. sourceLen-1]</CODE>
 -into the destination buffer, <CODE>dest[0 .. *destLen-1]</CODE>.
 -If the destination buffer is big enough, <CODE>*destLen</CODE> is
 -set to the size of the uncompressed data, and <CODE>BZ_OK</CODE> is
 -returned.  If the compressed data won't fit, <CODE>*destLen</CODE>
 -is unchanged, and <CODE>BZ_OUTBUFF_FULL</CODE> is returned.
--
--</P>
 -<P>
+-
 -<CODE>source</CODE> is assumed to hold a complete <CODE>bzip2</CODE> format
 -data stream.  <BR> <CODE>BZ2_bzBuffToBuffDecompress</CODE> tries to decompress
 -the entirety of the stream into the output buffer.
+-</P><P>
 -
--</P>
--<P>
 -For the meaning of parameters <CODE>small</CODE> and <CODE>verbosity</CODE>,
 -see <CODE>BZ2_bzDecompressInit</CODE>.
+-</P><P>
 -
--</P>
--<P>
 -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.
+-</P><P>
 -
--</P>
--<P>
 -<CODE>BZ2_bzBuffToBuffDecompress</CODE> will not write data at or
 -beyond <CODE>dest[*destLen]</CODE>, even in case of buffer overflow.
+-</P><P>
 -
--</P>
--<P>
 -Possible return values:
--
--<PRE>
--      <CODE>BZ_CONFIG_ERROR</CODE>
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">      <CODE>BZ_CONFIG_ERROR</CODE>
 -         if the library has been mis-compiled
 -      <CODE>BZ_PARAM_ERROR</CODE> 
 -         if <CODE>dest</CODE> is <CODE>NULL</CODE> or <CODE>destLen</CODE> is <CODE>NULL</CODE>
@@ -12871,12 +14111,23 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -         if the compressed data ends unexpectedly
 -      <CODE>BZ_OK</CODE> 
 -         otherwise
--</PRE>
--
--
--
--<H2><A NAME="SEC38" HREF="manual_toc.html#TOC38"><CODE>zlib</CODE> compatibility functions</A></H2>
--<P>
+-</pre></td></tr></table></P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC38"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC37"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC39"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H2> 3.6 <CODE>zlib</CODE> compatibility functions </H2>
+-<!--docid::SEC38::-->
 -Yoshioka Tsuneo has contributed some functions to
 -give better <CODE>zlib</CODE> compatibility.  These functions are
 -<CODE>BZ2_bzopen</CODE>, <CODE>BZ2_bzread</CODE>, <CODE>BZ2_bzwrite</CODE>, <CODE>BZ2_bzflush</CODE>,
@@ -12885,241 +14136,287 @@ diff -Nru bzip2-1.0.1/manual_3.html bzip2-1.0.1.new/manual_3.html
 -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.
--
--<PRE>
--typedef void BZFILE;
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>typedef void BZFILE;
 -
 -const char * BZ2_bzlibVersion ( void );
--</PRE>
--
--<P>
--Returns a string indicating the library version.
--
--<PRE>
--BZFILE * BZ2_bzopen  ( const char *path, const char *mode );
+-</pre></td></tr></table>Returns a string indicating the library version.
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>BZFILE * BZ2_bzopen  ( const char *path, const char *mode );
 -BZFILE * BZ2_bzdopen ( int        fd,    const char *mode );
--</PRE>
--
--<P>
--Opens a <CODE>.bz2</CODE> file for reading or writing, using either its name
+-</pre></td></tr></table>Opens a <CODE>.bz2</CODE> file for reading or writing, using either its name
 -or a pre-existing file descriptor. 
 -Analogous to <CODE>fopen</CODE> and <CODE>fdopen</CODE>.
--
--<PRE>
--int BZ2_bzread  ( BZFILE* b, void* buf, int len );
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>int BZ2_bzread  ( BZFILE* b, void* buf, int len );
 -int BZ2_bzwrite ( BZFILE* b, void* buf, int len );
--</PRE>
--
--<P>
--Reads/writes data from/to a previously opened <CODE>BZFILE</CODE>.
+-</pre></td></tr></table>Reads/writes data from/to a previously opened <CODE>BZFILE</CODE>.
 -Analogous to <CODE>fread</CODE> and <CODE>fwrite</CODE>.
--
--<PRE>
--int  BZ2_bzflush ( BZFILE* b );
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>int  BZ2_bzflush ( BZFILE* b );
 -void BZ2_bzclose ( BZFILE* b );
--</PRE>
--
--<P>
--Flushes/closes a <CODE>BZFILE</CODE>.  <CODE>BZ2_bzflush</CODE> doesn't actually do
+-</pre></td></tr></table>Flushes/closes a <CODE>BZFILE</CODE>.  <CODE>BZ2_bzflush</CODE> doesn't actually do
 -anything.  Analogous to <CODE>fflush</CODE> and <CODE>fclose</CODE>.
--
--</P>
--
--<PRE>
--const char * BZ2_bzerror ( BZFILE *b, int *errnum )
--</PRE>
--
 -<P>
--Returns a string describing the more recent error status of
--<CODE>b</CODE>, and also sets <CODE>*errnum</CODE> to its numerical value.
--
--</P>
--
--
--
--<H2><A NAME="SEC39" HREF="manual_toc.html#TOC39">Using the library in a <CODE>stdio</CODE>-free environment</A></H2>
--
--
--
--<H3><A NAME="SEC40" HREF="manual_toc.html#TOC40">Getting rid of <CODE>stdio</CODE></A></H3>
 -
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>const char * BZ2_bzerror ( BZFILE *b, int *errnum )
+-</pre></td></tr></table>Returns a string describing the more recent error status of
+-<CODE>b</CODE>, and also sets <CODE>*errnum</CODE> to its numerical value.
+-</P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC39"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC38"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC40"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H2> 3.7 Using the library in a <CODE>stdio</CODE>-free environment </H2>
+-<!--docid::SEC39::-->
+-<P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC40"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC39"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC41"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H3> 3.7.1 Getting rid of <CODE>stdio</CODE> </H3>
+-<!--docid::SEC40::-->
 -<P>
+-
 -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 <CODE>BZ_NO_STDIO</CODE>
 -defined.  Doing this gives you a library containing only the following
 -eight functions:
+-</P><P>
 -
--</P>
--<P>
 -<CODE>BZ2_bzCompressInit</CODE>, <CODE>BZ2_bzCompress</CODE>, <CODE>BZ2_bzCompressEnd</CODE> <BR>
 -<CODE>BZ2_bzDecompressInit</CODE>, <CODE>BZ2_bzDecompress</CODE>, <CODE>BZ2_bzDecompressEnd</CODE> <BR>
 -<CODE>BZ2_bzBuffToBuffCompress</CODE>, <CODE>BZ2_bzBuffToBuffDecompress</CODE>
+-</P><P>
 -
--</P>
--<P>
 -When compiled like this, all functions will ignore <CODE>verbosity</CODE>
 -settings.
--
--</P>
--
--
--<H3><A NAME="SEC41" HREF="manual_toc.html#TOC41">Critical error handling</A></H3>
--<P>
+-</P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC41"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC40"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC42"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H3> 3.7.2 Critical error handling </H3>
+-<!--docid::SEC41::-->
 -<CODE>libbzip2</CODE> 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 <CODE>BZ_NO_STDIO</CODE> set.
--
--</P>
 -<P>
--For a normal compile, an assertion failure yields the message
 -
--<PRE>
--   bzip2/libbzip2: internal error number N.
--   This is a bug in bzip2/libbzip2, 1.0 of 21-Mar-2000.
+-For a normal compile, an assertion failure yields the message
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>   bzip2/libbzip2: internal error number N.
+-   This is a bug in bzip2/libbzip2, 1.0.2, 30-Dec-2001.
 -   Please report it to me at: jseward@acm.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, 21 March 2000.
--</PRE>
+-   quality software.  Thanks.  Julian Seward, 30 December 2001.
+-</pre></td></tr></table>where <CODE>N</CODE> is some error code number.  If <CODE>N == 1007</CODE>, 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).
+-</P><P>
 -
--<P>
--where <CODE>N</CODE> is some error code number.  <CODE>exit(3)</CODE>
--is then called.
+-<CODE>exit(3)</CODE> is then called.
+-</P><P>
 -
--</P>
--<P>
 -For a <CODE>stdio</CODE>-free library, assertion failures result
 -in a call to a function declared as:
--
--<PRE>
--   extern void bz_internal_error ( int errcode );
--</PRE>
--
--<P>
--The relevant code is passed as a parameter.  You should supply
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>   extern void bz_internal_error ( int errcode );
+-</pre></td></tr></table>The relevant code is passed as a parameter.  You should supply
 -such a function.
+-</P><P>
 -
--</P>
--<P>
 -In either case, once an assertion failure has occurred, any 
 -<CODE>bz_stream</CODE> records involved can be regarded as invalid.
 -You should not attempt to resume normal operation with them.
+-</P><P>
 -
--</P>
--<P>
 -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.
--
--</P>
--
--
--
--<H2><A NAME="SEC42" HREF="manual_toc.html#TOC42">Making a Windows DLL</A></H2>
--<P>
+-</P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC42"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC41"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_4.html#SEC43"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H2> 3.8 Making a Windows DLL </H2>
+-<!--docid::SEC42::-->
 -Everything related to Windows has been contributed by Yoshioka Tsuneo
 -<BR> (<CODE>QWF00133@niftyserve.or.jp</CODE> /
 -<CODE>tsuneo-y@is.aist-nara.ac.jp</CODE>), so you should send your queries to
 -him (but perhaps Cc: me, <CODE>jseward@acm.org</CODE>).
--
--</P>
 -<P>
+-
 -My vague understanding of what to do is: using Visual C++ 5.0,
 -open the project file <CODE>libbz2.dsp</CODE>, and build.  That's all.
+-</P><P>
 -
--</P>
--<P>
 -If you can't
 -open the project file for some reason, make a new one, naming these files:
 -<CODE>blocksort.c</CODE>, <CODE>bzlib.c</CODE>, <CODE>compress.c</CODE>, 
 -<CODE>crctable.c</CODE>, <CODE>decompress.c</CODE>, <CODE>huffman.c</CODE>, <BR>
 -<CODE>randtable.c</CODE> and <CODE>libbz2.def</CODE>.  You will also need
 -to name the header files <CODE>bzlib.h</CODE> and <CODE>bzlib_private.h</CODE>.
+-</P><P>
 -
--</P>
--<P>
 -If you don't use VC++, you may need to define the proprocessor symbol
 -<CODE>_WIN32</CODE>. 
+-</P><P>
 -
--</P>
--<P>
 -Finally, <CODE>dlltest.c</CODE> is a sample program using the DLL.  It has a
 -project file, <CODE>dlltest.dsp</CODE>.
+-</P><P>
 -
--</P>
--<P>
 -If you just want a makefile for Visual C, have a look at
 -<CODE>makefile.msc</CODE>.
+-</P><P>
 -
--</P>
--<P>
 -Be aware that if you compile <CODE>bzip2</CODE> itself on Win32, you must set
 -<CODE>BZ_UNIX</CODE> to 0 and <CODE>BZ_LCCWIN32</CODE> to 1, in the file
 -<CODE>bzip2.c</CODE>, before compiling.  Otherwise the resulting binary won't
 -work correctly.
+-</P><P>
 -
--</P>
--<P>
 -I haven't tried any of this stuff myself, but it all looks plausible.
+-</P><P>
+-
+-<HR SIZE="6">
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<BR>  
+-<FONT SIZE="-1">
+-This document was generated
+-by <I>Julian Seward</I> on <I>January, 5  2002</I>
+-using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
+-"><I>texi2html</I></A>
 -
--</P>
--
--<P><HR><P>
--<p>Go to the <A HREF="manual_1.html">first</A>, <A HREF="manual_2.html">previous</A>, <A HREF="manual_4.html">next</A>, <A HREF="manual_4.html">last</A> section, <A HREF="manual_toc.html">table of contents</A>.
 -</BODY>
 -</HTML>
-diff -Nru bzip2-1.0.1/manual_4.html bzip2-1.0.1.new/manual_4.html
---- bzip2-1.0.1/manual_4.html  Sat Jun 24 20:13:27 2000
-+++ bzip2-1.0.1.new/manual_4.html      Thu Jan  1 01:00:00 1970
-@@ -1,528 +0,0 @@
+diff -Nru bzip2-1.0.2/manual_4.html bzip2-1.0.2.new/manual_4.html
+--- bzip2-1.0.2/manual_4.html  Sat Jan  5 01:53:05 2002
++++ bzip2-1.0.2.new/manual_4.html      Thu Jan  1 01:00:00 1970
+@@ -1,530 +0,0 @@
 -<HTML>
+-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+-<!-- Created on January, 5  2002 by texi2html 1.64 -->
+-<!-- 
+-Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+-            Karl Berry  <karl@freefriends.org>
+-            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+-            and many others.
+-Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
+-Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
+- 
+--->
 -<HEAD>
--<!-- This HTML file has been created by texi2html 1.54
--     from manual.texi on 23 March 2000 -->
+-<TITLE>Untitled Document: 4. Miscellanea</TITLE>
 -
--<TITLE>bzip2 and libbzip2 - Miscellanea</TITLE>
--<link href="manual_3.html" rel=Previous>
--<link href="manual_toc.html" rel=ToC>
+-<META NAME="description" CONTENT="Untitled Document: 4. Miscellanea">
+-<META NAME="keywords" CONTENT="Untitled Document: 4. Miscellanea">
+-<META NAME="resource-type" CONTENT="document">
+-<META NAME="distribution" CONTENT="global">
+-<META NAME="Generator" CONTENT="texi2html 1.64">
 -
 -</HEAD>
--<BODY>
--<p>Go to the <A HREF="manual_1.html">first</A>, <A HREF="manual_3.html">previous</A>, next, last section, <A HREF="manual_toc.html">table of contents</A>.
--<P><HR><P>
--
 -
--<H1><A NAME="SEC43" HREF="manual_toc.html#TOC43">Miscellanea</A></H1>
+-<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
 -
+-<A NAME="SEC43"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_3.html#SEC42"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_4.html#SEC44"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H1> 4. Miscellanea </H1>
+-<!--docid::SEC43::-->
 -<P>
+-
 -These are just some random thoughts of mine.  Your mileage may
 -vary.
--
--</P>
--
--
--<H2><A NAME="SEC44" HREF="manual_toc.html#TOC44">Limitations of the compressed file format</A></H2>
--<P>
+-</P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC44"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_4.html#SEC43"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_4.html#SEC45"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H2> 4.1 Limitations of the compressed file format </H2>
+-<!--docid::SEC44::-->
 -<CODE>bzip2-1.0</CODE>, <CODE>0.9.5</CODE> and <CODE>0.9.0</CODE>
 -use exactly the same file format as the previous
 -version, <CODE>bzip2-0.1</CODE>.  This decision was made in the interests of
 -stability.  Creating yet another incompatible compressed file format
 -would create further confusion and disruption for users.
--
--</P>
 -<P>
+-
 -Nevertheless, this is not a painless decision.  Development
 -work since the release of <CODE>bzip2-0.1</CODE> in August 1997
 -has shown complexities in the file format which slow down
 -decompression and, in retrospect, are unnecessary.  These are:
--
 -<UL>
 -<LI>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
@@ -13128,7 +14425,6 @@ diff -Nru bzip2-1.0.1/manual_4.html bzip2-1.0.1.new/manual_4.html
 -      repeats can be handled without difficulty in block
 -      sorting.
 -<LI>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 
@@ -13136,6 +14432,7 @@ diff -Nru bzip2-1.0.1/manual_4.html bzip2-1.0.1.new/manual_4.html
 -      Kunihiko Sadakane has produced a derivative O(N (log N)^2) 
 -      algorithm which usually outperforms the Manber-Myers
 -      algorithm.
+-<P>
 -
 -      I could have changed to Sadakane's algorithm, but I find
 -      it to be slower than <CODE>bzip2</CODE>'s existing algorithm for
@@ -13145,6 +14442,7 @@ diff -Nru bzip2-1.0.1/manual_4.html bzip2-1.0.1.new/manual_4.html
 -      that I was not flooded with email complaints about
 -      <CODE>bzip2-0.1</CODE>'s performance on repetitive data, so
 -      perhaps it isn't a problem for real inputs.
+-</P><P>
 -
 -      Probably the best long-term solution,
 -      and the one I have incorporated into 0.9.5 and above,
@@ -13152,7 +14450,6 @@ diff -Nru bzip2-1.0.1/manual_4.html bzip2-1.0.1.new/manual_4.html
 -      algorithm initially, and fall back to a O(N (log N)^2)
 -      algorithm if the standard algorithm gets into difficulties.
 -<LI>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
@@ -13161,52 +14458,52 @@ diff -Nru bzip2-1.0.1/manual_4.html bzip2-1.0.1.new/manual_4.html
 -      could have been avoided if the compressed size of
 -      each block of data was recorded in the data stream.
 -<LI>An Adler-32 checksum, rather than a CRC32 checksum,
--
 -      would be faster to compute.
 -</UL>
--
--<P>
 -It would be fair to say that the <CODE>bzip2</CODE> format was frozen
 -before I properly and fully understood the performance
 -consequences of doing so.
--
--</P>
 -<P>
+-
 -Improvements which I was able to incorporate into
 -0.9.0, despite using the same file format, are:
--
 -<UL>
 -<LI>Single array implementation of the inverse BWT.  This
--
 -      significantly speeds up decompression, presumably
 -      because it reduces the number of cache misses.
 -<LI>Faster inverse MTF transform for large MTF values.  The
--
 -      new implementation is based on the notion of sliding blocks
 -      of values.
 -<LI><CODE>bzip2-0.9.0</CODE> now reads and writes files with <CODE>fread</CODE>
--
 -      and <CODE>fwrite</CODE>; version 0.1 used <CODE>putc</CODE> and <CODE>getc</CODE>.
 -      Duh!  Well, you live and learn.
+-<P>
 -
 -</UL>
--
--<P>
 -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.
--
--</P>
--
--
--
--<H2><A NAME="SEC45" HREF="manual_toc.html#TOC45">Portability issues</A></H2>
 -<P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC45"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_4.html#SEC44"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_4.html#SEC46"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H2> 4.2 Portability issues </H2>
+-<!--docid::SEC45::-->
 -After some consideration, I have decided not to use
 -GNU <CODE>autoconf</CODE> to configure 0.9.5 or 1.0.
--
--</P>
 -<P>
+-
 -<CODE>autoconf</CODE>, admirable and wonderful though it is, 
 -mainly assists with portability problems between Unix-like
 -platforms.  But <CODE>bzip2</CODE> doesn't have much in the way
@@ -13214,15 +14511,13 @@ diff -Nru bzip2-1.0.1/manual_4.html bzip2-1.0.1.new/manual_4.html
 -when porting to the Mac, or to Microsoft's operating systems.
 -<CODE>autoconf</CODE> doesn't help in those cases, and brings in a 
 -whole load of new complexity.
+-</P><P>
 -
--</P>
--<P>
 -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.
+-</P><P>
 -
--</P>
--<P>
 -There are a couple of <CODE>__inline__</CODE> directives in the code.  GNU C
 -(<CODE>gcc</CODE>) should be able to handle them.  If you're not using
 -GNU C, your C compiler shouldn't see them at all.
@@ -13230,9 +14525,8 @@ diff -Nru bzip2-1.0.1/manual_4.html bzip2-1.0.1.new/manual_4.html
 -like them, just <CODE>#define</CODE> <CODE>__inline__</CODE> to be <CODE>/* */</CODE>.  One
 -easy way to do this is to compile with the flag <CODE>-D__inline__=</CODE>, 
 -which should be understood by most Unix compilers.
+-</P><P>
 -
--</P>
--<P>
 -If you still have difficulties, try compiling with the macro
 -<CODE>BZ_STRICT_ANSI</CODE> defined.  This should enable you to build the
 -library in a strictly ANSI compliant environment.  Building the program
@@ -13240,165 +14534,164 @@ diff -Nru bzip2-1.0.1/manual_4.html bzip2-1.0.1.new/manual_4.html
 -<CODE>bzip2</CODE>'s checks against compressing directories, symbolic links,
 -devices, and other not-really-a-file entities.  This could cause
 -filesystem corruption!
+-</P><P>
 -
--</P>
--<P>
 -One other thing: if you create a <CODE>bzip2</CODE> binary for public
 -distribution, please try and link it statically (<CODE>gcc -s</CODE>).  This
 -avoids all sorts of library-version issues that others may encounter
 -later on.
+-</P><P>
 -
--</P>
--<P>
 -If you build <CODE>bzip2</CODE> on Win32, you must set <CODE>BZ_UNIX</CODE> to 0 and
 -<CODE>BZ_LCCWIN32</CODE> to 1, in the file <CODE>bzip2.c</CODE>, before compiling.
 -Otherwise the resulting binary won't work correctly.
--
--</P>
--
--
--
--<H2><A NAME="SEC46" HREF="manual_toc.html#TOC46">Reporting bugs</A></H2>
--<P>
+-</P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC46"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_4.html#SEC45"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_4.html#SEC47"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H2> 4.3 Reporting bugs </H2>
+-<!--docid::SEC46::-->
 -I tried pretty hard to make sure <CODE>bzip2</CODE> is
 -bug free, both by design and by testing.  Hopefully
 -you'll never need to read this section for real.
--
--</P>
 -<P>
+-
 -Nevertheless, if <CODE>bzip2</CODE> dies with a segmentation
 -fault, a bus error or an internal assertion failure, it
 -will ask you to email me a bug report.  Experience with
 -version 0.1 shows that almost all these problems can
 -be traced to either compiler bugs or hardware problems.
--
 -<UL>
 -<LI>
--
 -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
 -<CODE>bzip2</CODE>, and I've run across two such examples myself.
+-<P>
 -
 -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
 -<CODE>-O2</CODE> <CODE>-fomit-frame-pointer</CODE> <CODE>-fno-strength-reduce</CODE>.
 -You should specifically <EM>not</EM> use <CODE>-funroll-loops</CODE>.
+-</P><P>
 -
 -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.
 -<LI>
--
 -If <CODE>bzip2</CODE> crashes randomly, and the crashes are not
 -repeatable, you may have a flaky memory subsystem.  <CODE>bzip2</CODE>
 -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.
+-<P>
 -
 -Try using a different machine of the same type, and see if
 -you can repeat the problem.
 -<LI>This isn't really a bug, but ... If <CODE>bzip2</CODE> 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.
 -</UL>
--
 -<P>
+-
 -If you've incorporated <CODE>libbzip2</CODE> 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.
+-</P><P>
 -
--</P>
--<P>
 -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
--
--<PRE>
--   bzip2 crashed with segmentation fault on my machine
--</PRE>
--
--<P>
--and absolutely nothing else.  Needless to say, a such a report
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">   bzip2 crashed with segmentation fault on my machine
+-</pre></td></tr></table>and absolutely nothing else.  Needless to say, a such a report
 -is <EM>totally, utterly, completely and comprehensively 100% useless; 
 -a waste of your time, my time, and net bandwidth</EM>.
 -With no details at all, there's no way I can possibly begin
 -to figure out what the problem is.
+-</P><P>
 -
--</P>
--<P>
 -The rules of the game are: facts, facts, facts.  Don't omit
 -them because "oh, they won't be relevant".  At the bare 
 -minimum:
--
--<PRE>
--   Machine type.  Operating system version.  
+-<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">   Machine type.  Operating system version.  
 -   Exact version of <CODE>bzip2</CODE> (do <CODE>bzip2 -V</CODE>).  
 -   Exact version of the compiler used.  
 -   Flags passed to the compiler.
--</PRE>
--
--<P>
--However, the most important single thing that will help me is
+-</pre></td></tr></table>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.
+-</P><P>
 -
--</P>
--<P>
 -Please remember that I connect to the Internet with a modem, so
 -you should contact me before mailing me huge files.
--
--</P>
--
--
--
--<H2><A NAME="SEC47" HREF="manual_toc.html#TOC47">Did you get the right package?</A></H2>
--
+-</P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC47"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_4.html#SEC46"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_4.html#SEC48"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H2> 4.4 Did you get the right package? </H2>
+-<!--docid::SEC47::-->
 -<P>
+-
 -<CODE>bzip2</CODE> 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.
+-</P><P>
 -
--</P>
--<P>
 -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.
+-</P><P>
 -
--</P>
--<P>
 -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, <CODE>zlib-1.1.2</CODE> and
+-Gailly's and Mark Adler's work, <CODE>zlib-1.1.3</CODE> and
 -<CODE>gzip-1.2.4</CODE>.  Look for them at
+-</P><P>
 -
--</P>
--<P>
--<CODE>http://www.cdrom.com/pub/infozip/zlib</CODE> and
+-<CODE>http://www.zlib.org</CODE> and
 -<CODE>http://www.gzip.org</CODE> respectively.
+-</P><P>
 -
--</P>
--<P>
 -For something faster and lighter still, you might try Markus F X J
 -Oberhumer's <CODE>LZO</CODE> real-time compression/decompression library, at
 -<BR> <CODE>http://wildsau.idv.uni-linz.ac.at/mfx/lzo.html</CODE>.
+-</P><P>
 -
--</P>
--<P>
 -If you want to use the <CODE>bzip2</CODE> algorithms to compress small blocks
 -of data, 64k bytes or smaller, for example on an on-the-fly disk
 -compressor, you'd be well advised not to use this library.  Instead,
@@ -13406,136 +14699,117 @@ diff -Nru bzip2-1.0.1/manual_4.html bzip2-1.0.1.new/manual_4.html
 -<CODE>e2compr-0.40</CODE>, an on-the-fly disk compressor for the Linux
 -<CODE>ext2</CODE> filesystem.  Look at
 -<CODE>http://www.netspace.net.au/~reiter/e2compr</CODE>.
--
--</P>
--
--
--
--<H2><A NAME="SEC48" HREF="manual_toc.html#TOC48">Testing</A></H2>
--
+-</P><P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC48"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_4.html#SEC47"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_4.html#SEC49"> &gt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H2> 4.5 Testing </H2>
+-<!--docid::SEC48::-->
 -<P>
+-
 -A record of the tests I've done.
+-</P><P>
 -
--</P>
--<P>
 -First, some data sets:
--
 -<UL>
 -<LI>B: a directory containing 6001 files, one for every length in the
--
 -      range 0 to 6000 bytes.  The files contain random lowercase
 -      letters.  18.7 megabytes.
 -<LI>H: my home directory tree.  Documents, source code, mail files,
--
 -      compressed data.  H contains B, and also a directory of 
 -      files designed as boundary cases for the sorting; mostly very
 -      repetitive, nasty files.  565 megabytes.
 -<LI>A: directory tree holding various applications built from source:
--
 -      <CODE>egcs</CODE>, <CODE>gcc-2.8.1</CODE>, KDE, GTK, Octave, etc.
 -      2200 megabytes.
 -</UL>
--
--<P>
 -The tests conducted are as follows.  Each test means compressing 
 -(a copy of) each file in the data set, decompressing it and
 -comparing it against the original.
--
--</P>
 -<P>
+-
 -First, a bunch of tests with block sizes and internal buffer
 -sizes set very small, 
 -to detect any problems with the
 -blocking and buffering mechanisms.  
 -This required modifying the source code so as to try to 
 -break it.
--
 -<OL>
 -<LI>Data set H, with
--
 -      buffer size of 1 byte, and block size of 23 bytes.
 -<LI>Data set B, buffer sizes 1 byte, block size 1 byte.
--
 -<LI>As (2) but small-mode decompression.
--
 -<LI>As (2) with block size 2 bytes.
--
 -<LI>As (2) with block size 3 bytes.
--
 -<LI>As (2) with block size 4 bytes.
--
 -<LI>As (2) with block size 5 bytes.
--
 -<LI>As (2) with block size 6 bytes and small-mode decompression.
--
 -<LI>H with buffer size of 1 byte, but normal block
--
 -      size (up to 900000 bytes).
 -</OL>
--
--<P>
 -Then some tests with unmodified source code.
--
 -<OL>
 -<LI>H, all settings normal.
--
 -<LI>As (1), with small-mode decompress.
--
 -<LI>H, compress with flag <CODE>-1</CODE>.
--
 -<LI>H, compress with flag <CODE>-s</CODE>, decompress with flag <CODE>-s</CODE>.
--
 -<LI>Forwards compatibility: H, <CODE>bzip2-0.1pl2</CODE> compressing,
--
 -      <CODE>bzip2-0.9.5</CODE> decompressing, all settings normal.
 -<LI>Backwards compatibility:  H, <CODE>bzip2-0.9.5</CODE> compressing,
--
 -      <CODE>bzip2-0.1pl2</CODE> decompressing, all settings normal.
 -<LI>Bigger tests: A, all settings normal.
--
 -<LI>As (7), using the fallback (Sadakane-like) sorting algorithm.
--
 -<LI>As (8), compress with flag <CODE>-1</CODE>, decompress with flag
--
 -      <CODE>-s</CODE>.
 -<LI>H, using the fallback sorting algorithm.
--
 -<LI>Forwards compatibility: A, <CODE>bzip2-0.1pl2</CODE> compressing,
--
 -      <CODE>bzip2-0.9.5</CODE> decompressing, all settings normal.
 -<LI>Backwards compatibility:  A, <CODE>bzip2-0.9.5</CODE> compressing,
--
 -      <CODE>bzip2-0.1pl2</CODE> decompressing, all settings normal.
 -<LI>Misc test: about 400 megabytes of <CODE>.tar</CODE> files with
--
 -      <CODE>bzip2</CODE> compiled with Checker (a memory access error
 -       detector, like Purify).
 -<LI>Misc tests to make sure it builds and runs ok on non-Linux/x86
--
 -      platforms.
 -</OL>
--
--<P>
 -These tests were conducted on a 225 MHz IDT WinChip machine, running
 -Linux 2.0.36.  They represent nearly a week of continuous computation.
 -All tests completed successfully.
--
--</P>
--
--
--
--<H2><A NAME="SEC49" HREF="manual_toc.html#TOC49">Further reading</A></H2>
 -<P>
+-
+-<HR SIZE="6">
+-<A NAME="SEC49"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_4.html#SEC48"> &lt; </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top"> Up </A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H2> 4.6 Further reading </H2>
+-<!--docid::SEC49::-->
 -<CODE>bzip2</CODE> 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.
--
--</P>
 -<P>
--Four documents describe essentially all the ideas behind <CODE>bzip2</CODE>:
 -
--<PRE>
--Michael Burrows and D. J. Wheeler:
+-Four documents describe essentially all the ideas behind <CODE>bzip2</CODE>:
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>Michael Burrows and D. J. Wheeler:
 -  "A block-sorting lossless data compression algorithm"
 -   10th May 1994. 
 -   Digital SRC Research Report 124.
@@ -13559,233 +14833,217 @@ diff -Nru bzip2-1.0.1/manual_4.html bzip2-1.0.1.new/manual_4.html
 -  "Fast Algorithms for Sorting and Searching Strings"
 -   Available from Sedgewick's web page,
 -   www.cs.princeton.edu/~rs
--</PRE>
--
--<P>
--The following paper gives valuable additional insights into the
+-</pre></td></tr></table>The following paper gives valuable additional insights into the
 -algorithm, but is not immediately the basis of any code
 -used in bzip2.
--
--<PRE>
--Peter Fenwick:
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>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
--</PRE>
--
--<P>
--Kunihiko Sadakane's sorting algorithm, mentioned above,
+-</pre></td></tr></table>Kunihiko Sadakane's sorting algorithm, mentioned above,
 -is available from:
--
--<PRE>
--http://naomi.is.s.u-tokyo.ac.jp/~sada/papers/Sada98b.ps.gz
--</PRE>
--
--<P>
--The Manber-Myers suffix array construction
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>http://naomi.is.s.u-tokyo.ac.jp/~sada/papers/Sada98b.ps.gz
+-</pre></td></tr></table>The Manber-Myers suffix array construction
 -algorithm is described in a paper
 -available from:
--
--<PRE>
--http://www.cs.arizona.edu/people/gene/PAPERS/suffix.ps
--</PRE>
--
--<P>
--Finally, the following paper documents some recent investigations
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>http://www.cs.arizona.edu/people/gene/PAPERS/suffix.ps
+-</pre></td></tr></table>Finally, the following paper documents some recent investigations
 -I made into the performance of sorting algorithms:
--
--<PRE>
--Julian Seward:
+-<TABLE><tr><td>&nbsp;</td><td class=example><pre>Julian Seward:
 -   On the Performance of BWT Sorting Algorithms
 -   Proceedings of the IEEE Data Compression Conference 2000
 -     Snowbird, Utah.  28-30 March 2000.
--</PRE>
+-</pre></td></tr></table></P><P>
+-
+-<HR SIZE="6">
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<BR>  
+-<FONT SIZE="-1">
+-This document was generated
+-by <I>Julian Seward</I> on <I>January, 5  2002</I>
+-using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
+-"><I>texi2html</I></A>
 -
--<P><HR><P>
--<p>Go to the <A HREF="manual_1.html">first</A>, <A HREF="manual_3.html">previous</A>, next, last section, <A HREF="manual_toc.html">table of contents</A>.
 -</BODY>
 -</HTML>
-diff -Nru bzip2-1.0.1/manual_toc.html bzip2-1.0.1.new/manual_toc.html
---- bzip2-1.0.1/manual_toc.html        Sat Jun 24 20:13:27 2000
-+++ bzip2-1.0.1.new/manual_toc.html    Thu Jan  1 01:00:00 1970
-@@ -1,173 +0,0 @@
+diff -Nru bzip2-1.0.2/manual_toc.html bzip2-1.0.2.new/manual_toc.html
+--- bzip2-1.0.2/manual_toc.html        Sat Jan  5 01:53:05 2002
++++ bzip2-1.0.2.new/manual_toc.html    Thu Jan  1 01:00:00 1970
+@@ -1,163 +0,0 @@
 -<HTML>
+-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+-<!-- Created on January, 5  2002 by texi2html 1.64 -->
+-<!-- 
+-Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+-            Karl Berry  <karl@freefriends.org>
+-            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+-            and many others.
+-Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
+-Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
+- 
+--->
 -<HEAD>
--<!-- This HTML file has been created by texi2html 1.54
--     from manual.texi on 23 March 2000 -->
+-<TITLE>Untitled Document: Table of Contents</TITLE>
 -
--<TITLE>bzip2 and libbzip2 - Table of Contents</TITLE>
+-<META NAME="description" CONTENT="Untitled Document: Table of Contents">
+-<META NAME="keywords" CONTENT="Untitled Document: Table of Contents">
+-<META NAME="resource-type" CONTENT="document">
+-<META NAME="distribution" CONTENT="global">
+-<META NAME="Generator" CONTENT="texi2html 1.64">
 -
 -</HEAD>
--<BODY>
--<H1>bzip2 and libbzip2</H1>
--<H2>a program and library for data compression</H2>
--<H2>copyright (C) 1996-2000 Julian Seward</H2>
--<H2>version 1.0 of 21 March 2000</H2>
--<ADDRESS>Julian Seward</ADDRESS>
--<P>
--<P><HR><P>
 -
--<P>
--This program, <CODE>bzip2</CODE>, 
--and associated library <CODE>libbzip2</CODE>, are
--Copyright (C) 1996-2000 Julian R Seward.  All rights reserved.
--
--</P>
--<P>
--Redistribution and use in source and binary forms, with or without
--modification, are permitted provided that the following conditions
--are met:
+-<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
 -
+-<A NAME="SEC_Contents"></A>
+-<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+-<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual.html#SEC_Top">Top</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+-<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_abt.html#SEC_About"> ? </A>]</TD>
+-</TR></TABLE>
+-<H1>Table of Contents</H1>
 -<UL>
--<LI>
--
--   Redistributions of source code must retain the above copyright
--   notice, this list of conditions and the following disclaimer.
--<LI>
--
--   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.
--<LI>
--
--   Altered source versions must be plainly marked as such, and must
--   not be misrepresented as being the original software.
--<LI>
--
--   The name of the author may not be used to endorse or promote 
--   products derived from this software without specific prior written 
--   permission.
--</UL>
--
--<P>
--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.
--
--</P>
--<P>
--Julian Seward, Cambridge, UK.
--
--</P>
--<P>
--<CODE>jseward@acm.org</CODE>
--
--</P>
--<P>
--<CODE>http://sourceware.cygnus.com/bzip2</CODE>
--
--</P>
--<P>
--<CODE>http://www.cacheprof.org</CODE>
--
--</P>
--<P>
--<CODE>http://www.muraroa.demon.co.uk</CODE>
--
--</P>
--<P>
--<CODE>bzip2</CODE>/<CODE>libbzip2</CODE> version 1.0 of 21 March 2000.
--
--</P>
--<P>
--PATENTS: To the best of my knowledge, <CODE>bzip2</CODE> does not use any patented
--algorithms.  However, I do not have the resources available to carry out
--a full patent search.  Therefore I cannot give any guarantee of the
--above statement.
--
--</P>
--
+-<A NAME="TOC1" HREF="manual_1.html#SEC1">1. Introduction</A>
+-<BR>
+-<A NAME="TOC2" HREF="manual_2.html#SEC2">2. How to use <CODE>bzip2</CODE></A>
+-<BR>
 -<UL>
--<LI><A NAME="TOC1" HREF="manual_1.html#SEC1">Introduction</A>
--<LI><A NAME="TOC2" HREF="manual_2.html#SEC2">How to use <CODE>bzip2</CODE></A>
 -<UL>
 -<UL>
--<UL>
--<LI><A NAME="TOC3" HREF="manual_2.html#SEC3">NAME</A>
--<LI><A NAME="TOC4" HREF="manual_2.html#SEC4">SYNOPSIS</A>
--<LI><A NAME="TOC5" HREF="manual_2.html#SEC5">DESCRIPTION</A>
--<LI><A NAME="TOC6" HREF="manual_2.html#SEC6">OPTIONS</A>
--<LI><A NAME="TOC7" HREF="manual_2.html#SEC7">MEMORY MANAGEMENT</A>
--<LI><A NAME="TOC8" HREF="manual_2.html#SEC8">RECOVERING DATA FROM DAMAGED FILES</A>
--<LI><A NAME="TOC9" HREF="manual_2.html#SEC9">PERFORMANCE NOTES</A>
--<LI><A NAME="TOC10" HREF="manual_2.html#SEC10">CAVEATS</A>
--<LI><A NAME="TOC11" HREF="manual_2.html#SEC11">AUTHOR</A>
+-<A NAME="TOC3" HREF="manual_2.html#SEC3">NAME</A>
+-<BR>
+-<A NAME="TOC4" HREF="manual_2.html#SEC4">SYNOPSIS</A>
+-<BR>
+-<A NAME="TOC5" HREF="manual_2.html#SEC5">DESCRIPTION</A>
+-<BR>
+-<A NAME="TOC6" HREF="manual_2.html#SEC6">OPTIONS</A>
+-<BR>
+-<A NAME="TOC7" HREF="manual_2.html#SEC7">MEMORY MANAGEMENT</A>
+-<BR>
+-<A NAME="TOC8" HREF="manual_2.html#SEC8">RECOVERING DATA FROM DAMAGED FILES</A>
+-<BR>
+-<A NAME="TOC9" HREF="manual_2.html#SEC9">PERFORMANCE NOTES</A>
+-<BR>
+-<A NAME="TOC10" HREF="manual_2.html#SEC10">CAVEATS</A>
+-<BR>
+-<A NAME="TOC11" HREF="manual_2.html#SEC11">AUTHOR</A>
+-<BR>
 -</UL>
 -</UL>
 -</UL>
--<LI><A NAME="TOC12" HREF="manual_3.html#SEC12">Programming with <CODE>libbzip2</CODE></A>
+-<A NAME="TOC12" HREF="manual_3.html#SEC12">3. Programming with <CODE>libbzip2</CODE></A>
+-<BR>
 -<UL>
--<LI><A NAME="TOC13" HREF="manual_3.html#SEC13">Top-level structure</A>
+-<A NAME="TOC13" HREF="manual_3.html#SEC13">3.1 Top-level structure</A>
+-<BR>
 -<UL>
--<LI><A NAME="TOC14" HREF="manual_3.html#SEC14">Low-level summary</A>
--<LI><A NAME="TOC15" HREF="manual_3.html#SEC15">High-level summary</A>
--<LI><A NAME="TOC16" HREF="manual_3.html#SEC16">Utility functions summary</A>
+-<A NAME="TOC14" HREF="manual_3.html#SEC14">3.1.1 Low-level summary</A>
+-<BR>
+-<A NAME="TOC15" HREF="manual_3.html#SEC15">3.1.2 High-level summary</A>
+-<BR>
+-<A NAME="TOC16" HREF="manual_3.html#SEC16">3.1.3 Utility functions summary</A>
+-<BR>
 -</UL>
--<LI><A NAME="TOC17" HREF="manual_3.html#SEC17">Error handling</A>
--<LI><A NAME="TOC18" HREF="manual_3.html#SEC18">Low-level interface</A>
+-<A NAME="TOC17" HREF="manual_3.html#SEC17">3.2 Error handling</A>
+-<BR>
+-<A NAME="TOC18" HREF="manual_3.html#SEC18">3.3 Low-level interface</A>
+-<BR>
 -<UL>
--<LI><A NAME="TOC19" HREF="manual_3.html#SEC19"><CODE>BZ2_bzCompressInit</CODE></A>
--<LI><A NAME="TOC20" HREF="manual_3.html#SEC20"><CODE>BZ2_bzCompress</CODE></A>
--<LI><A NAME="TOC21" HREF="manual_3.html#SEC21"><CODE>BZ2_bzCompressEnd</CODE></A>
--<LI><A NAME="TOC22" HREF="manual_3.html#SEC22"><CODE>BZ2_bzDecompressInit</CODE></A>
--<LI><A NAME="TOC23" HREF="manual_3.html#SEC23"><CODE>BZ2_bzDecompress</CODE></A>
--<LI><A NAME="TOC24" HREF="manual_3.html#SEC24"><CODE>BZ2_bzDecompressEnd</CODE></A>
+-<A NAME="TOC19" HREF="manual_3.html#SEC19">3.3.1 <CODE>BZ2_bzCompressInit</CODE></A>
+-<BR>
+-<A NAME="TOC20" HREF="manual_3.html#SEC20">3.3.2 <CODE>BZ2_bzCompress</CODE></A>
+-<BR>
+-<A NAME="TOC21" HREF="manual_3.html#SEC21">3.3.3 <CODE>BZ2_bzCompressEnd</CODE></A>
+-<BR>
+-<A NAME="TOC22" HREF="manual_3.html#SEC22">3.3.4 <CODE>BZ2_bzDecompressInit</CODE></A>
+-<BR>
+-<A NAME="TOC23" HREF="manual_3.html#SEC23">3.3.5 <CODE>BZ2_bzDecompress</CODE></A>
+-<BR>
+-<A NAME="TOC24" HREF="manual_3.html#SEC24">3.3.6 <CODE>BZ2_bzDecompressEnd</CODE></A>
+-<BR>
 -</UL>
--<LI><A NAME="TOC25" HREF="manual_3.html#SEC25">High-level interface</A>
+-<A NAME="TOC25" HREF="manual_3.html#SEC25">3.4 High-level interface</A>
+-<BR>
 -<UL>
--<LI><A NAME="TOC26" HREF="manual_3.html#SEC26"><CODE>BZ2_bzReadOpen</CODE></A>
--<LI><A NAME="TOC27" HREF="manual_3.html#SEC27"><CODE>BZ2_bzRead</CODE></A>
--<LI><A NAME="TOC28" HREF="manual_3.html#SEC28"><CODE>BZ2_bzReadGetUnused</CODE></A>
--<LI><A NAME="TOC29" HREF="manual_3.html#SEC29"><CODE>BZ2_bzReadClose</CODE></A>
--<LI><A NAME="TOC30" HREF="manual_3.html#SEC30"><CODE>BZ2_bzWriteOpen</CODE></A>
--<LI><A NAME="TOC31" HREF="manual_3.html#SEC31"><CODE>BZ2_bzWrite</CODE></A>
--<LI><A NAME="TOC32" HREF="manual_3.html#SEC32"><CODE>BZ2_bzWriteClose</CODE></A>
--<LI><A NAME="TOC33" HREF="manual_3.html#SEC33">Handling embedded compressed data streams</A>
--<LI><A NAME="TOC34" HREF="manual_3.html#SEC34">Standard file-reading/writing code</A>
+-<A NAME="TOC26" HREF="manual_3.html#SEC26">3.4.1 <CODE>BZ2_bzReadOpen</CODE></A>
+-<BR>
+-<A NAME="TOC27" HREF="manual_3.html#SEC27">3.4.2 <CODE>BZ2_bzRead</CODE></A>
+-<BR>
+-<A NAME="TOC28" HREF="manual_3.html#SEC28">3.4.3 <CODE>BZ2_bzReadGetUnused</CODE></A>
+-<BR>
+-<A NAME="TOC29" HREF="manual_3.html#SEC29">3.4.4 <CODE>BZ2_bzReadClose</CODE></A>
+-<BR>
+-<A NAME="TOC30" HREF="manual_3.html#SEC30">3.4.5 <CODE>BZ2_bzWriteOpen</CODE></A>
+-<BR>
+-<A NAME="TOC31" HREF="manual_3.html#SEC31">3.4.6 <CODE>BZ2_bzWrite</CODE></A>
+-<BR>
+-<A NAME="TOC32" HREF="manual_3.html#SEC32">3.4.7 <CODE>BZ2_bzWriteClose</CODE></A>
+-<BR>
+-<A NAME="TOC33" HREF="manual_3.html#SEC33">3.4.8 Handling embedded compressed data streams</A>
+-<BR>
+-<A NAME="TOC34" HREF="manual_3.html#SEC34">3.4.9 Standard file-reading/writing code</A>
+-<BR>
 -</UL>
--<LI><A NAME="TOC35" HREF="manual_3.html#SEC35">Utility functions</A>
+-<A NAME="TOC35" HREF="manual_3.html#SEC35">3.5 Utility functions</A>
+-<BR>
 -<UL>
--<LI><A NAME="TOC36" HREF="manual_3.html#SEC36"><CODE>BZ2_bzBuffToBuffCompress</CODE></A>
--<LI><A NAME="TOC37" HREF="manual_3.html#SEC37"><CODE>BZ2_bzBuffToBuffDecompress</CODE></A>
+-<A NAME="TOC36" HREF="manual_3.html#SEC36">3.5.1 <CODE>BZ2_bzBuffToBuffCompress</CODE></A>
+-<BR>
+-<A NAME="TOC37" HREF="manual_3.html#SEC37">3.5.2 <CODE>BZ2_bzBuffToBuffDecompress</CODE></A>
+-<BR>
 -</UL>
--<LI><A NAME="TOC38" HREF="manual_3.html#SEC38"><CODE>zlib</CODE> compatibility functions</A>
--<LI><A NAME="TOC39" HREF="manual_3.html#SEC39">Using the library in a <CODE>stdio</CODE>-free environment</A>
+-<A NAME="TOC38" HREF="manual_3.html#SEC38">3.6 <CODE>zlib</CODE> compatibility functions</A>
+-<BR>
+-<A NAME="TOC39" HREF="manual_3.html#SEC39">3.7 Using the library in a <CODE>stdio</CODE>-free environment</A>
+-<BR>
 -<UL>
--<LI><A NAME="TOC40" HREF="manual_3.html#SEC40">Getting rid of <CODE>stdio</CODE></A>
--<LI><A NAME="TOC41" HREF="manual_3.html#SEC41">Critical error handling</A>
+-<A NAME="TOC40" HREF="manual_3.html#SEC40">3.7.1 Getting rid of <CODE>stdio</CODE></A>
+-<BR>
+-<A NAME="TOC41" HREF="manual_3.html#SEC41">3.7.2 Critical error handling</A>
+-<BR>
 -</UL>
--<LI><A NAME="TOC42" HREF="manual_3.html#SEC42">Making a Windows DLL</A>
+-<A NAME="TOC42" HREF="manual_3.html#SEC42">3.8 Making a Windows DLL</A>
+-<BR>
 -</UL>
--<LI><A NAME="TOC43" HREF="manual_4.html#SEC43">Miscellanea</A>
+-<A NAME="TOC43" HREF="manual_4.html#SEC43">4. Miscellanea</A>
+-<BR>
 -<UL>
--<LI><A NAME="TOC44" HREF="manual_4.html#SEC44">Limitations of the compressed file format</A>
--<LI><A NAME="TOC45" HREF="manual_4.html#SEC45">Portability issues</A>
--<LI><A NAME="TOC46" HREF="manual_4.html#SEC46">Reporting bugs</A>
--<LI><A NAME="TOC47" HREF="manual_4.html#SEC47">Did you get the right package?</A>
--<LI><A NAME="TOC48" HREF="manual_4.html#SEC48">Testing</A>
--<LI><A NAME="TOC49" HREF="manual_4.html#SEC49">Further reading</A>
+-<A NAME="TOC44" HREF="manual_4.html#SEC44">4.1 Limitations of the compressed file format</A>
+-<BR>
+-<A NAME="TOC45" HREF="manual_4.html#SEC45">4.2 Portability issues</A>
+-<BR>
+-<A NAME="TOC46" HREF="manual_4.html#SEC46">4.3 Reporting bugs</A>
+-<BR>
+-<A NAME="TOC47" HREF="manual_4.html#SEC47">4.4 Did you get the right package?</A>
+-<BR>
+-<A NAME="TOC48" HREF="manual_4.html#SEC48">4.5 Testing</A>
+-<BR>
+-<A NAME="TOC49" HREF="manual_4.html#SEC49">4.6 Further reading</A>
+-<BR>
 -</UL>
 -</UL>
--<P><HR><P>
--This document was generated on 23 March 2000 using the
--<A HREF="http://wwwcn.cern.ch/dci/texi2html/">texi2html</A>
--translator version 1.51a.</P>
+-<HR SIZE=1>
+-<BR>  
+-<FONT SIZE="-1">
+-This document was generated
+-by <I>Julian Seward</I> on <I>January, 5  2002</I>
+-using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
+-"><I>texi2html</I></A>
+-
 -</BODY>
 -</HTML>
-diff -Nru bzip2-1.0.1/randtable.c bzip2-1.0.1.new/randtable.c
---- bzip2-1.0.1/randtable.c    Sat Jun 24 20:13:27 2000
-+++ bzip2-1.0.1.new/randtable.c        Sat Jun 24 20:13:06 2000
+diff -Nru bzip2-1.0.2/randtable.c bzip2-1.0.2.new/randtable.c
+--- bzip2-1.0.2/randtable.c    Sun Dec 30 03:19:04 2001
++++ bzip2-1.0.2.new/randtable.c        Fri Feb  1 04:19:18 2002
 @@ -58,6 +58,10 @@
    For more information on these sources, see the manual.
  --*/
@@ -13797,9 +15055,9 @@ diff -Nru bzip2-1.0.1/randtable.c bzip2-1.0.1.new/randtable.c
  
  #include "bzlib_private.h"
  
-diff -Nru bzip2-1.0.1/spewG.c bzip2-1.0.1.new/spewG.c
---- bzip2-1.0.1/spewG.c        Sat Jun 24 20:13:27 2000
-+++ bzip2-1.0.1.new/spewG.c    Sat Jun 24 20:13:06 2000
+diff -Nru bzip2-1.0.2/spewG.c bzip2-1.0.2.new/spewG.c
+--- bzip2-1.0.2/spewG.c        Thu Apr  6 01:24:45 2000
++++ bzip2-1.0.2.new/spewG.c    Fri Feb  1 04:19:18 2002
 @@ -9,7 +9,10 @@
     (but is otherwise harmless).
  */
@@ -13812,14 +15070,14 @@ diff -Nru bzip2-1.0.1/spewG.c bzip2-1.0.1.new/spewG.c
  
  #include <stdio.h>
  #include <stdlib.h>
-diff -Nru bzip2-1.0.1/stamp-h.in bzip2-1.0.1.new/stamp-h.in
---- bzip2-1.0.1/stamp-h.in     Thu Jan  1 01:00:00 1970
-+++ bzip2-1.0.1.new/stamp-h.in Sat Jun 24 20:13:06 2000
+diff -Nru bzip2-1.0.2/stamp-h.in bzip2-1.0.2.new/stamp-h.in
+--- bzip2-1.0.2/stamp-h.in     Thu Jan  1 01:00:00 1970
++++ bzip2-1.0.2.new/stamp-h.in Fri Feb  1 04:19:18 2002
 @@ -0,0 +1 @@
 +timestamp
-diff -Nru bzip2-1.0.1/unzcrash.c bzip2-1.0.1.new/unzcrash.c
---- bzip2-1.0.1/unzcrash.c     Sat Jun 24 20:13:27 2000
-+++ bzip2-1.0.1.new/unzcrash.c Sat Jun 24 20:13:06 2000
+diff -Nru bzip2-1.0.2/unzcrash.c bzip2-1.0.2.new/unzcrash.c
+--- bzip2-1.0.2/unzcrash.c     Thu Apr  6 01:24:46 2000
++++ bzip2-1.0.2.new/unzcrash.c Fri Feb  1 04:19:18 2002
 @@ -13,6 +13,12 @@
     many hours.
  */
@@ -13833,75 +15091,3 @@ diff -Nru bzip2-1.0.1/unzcrash.c bzip2-1.0.1.new/unzcrash.c
  #include <stdio.h>
  #include <assert.h>
  #include "bzlib.h"
-diff -Nru bzip2-1.0.1/bzgrep bzip2-1.0.1.new/bzgrep
---- bzip2-1.0.1/bzgrep Thu Jan  1 01:00:00 1970
-+++ bzip2-1.0.1.new/bzgrep     Mon Jul  3 10:23:00 2000
-@@ -0,0 +1,68 @@
-+#!/bin/sh
-+
-+# zgrep -- a wrapper around a grep program that decompresses files as needed
-+# Adapted from a version sent by Charles Levert <charles@comm.polymtl.ca>
-+# Adapted to bzip2 by Bernhard Rosenkraenzer <bero@redhat.com>
-+
-+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 $list -eq 1; then
-+    bzip2 -cdfq "$i" | $grep $opt "$pat" > /dev/null && echo $i
-+    r=$?
-+  elif test $# -eq 1 -o $silent -eq 1; then
-+    bzip2 -cdfq "$i" | $grep $opt "$pat"
-+    r=$?
-+  else
-+    bzip2 -cdfq "$i" | $grep $opt "$pat" | sed "s|^|${i}:|"
-+    r=$?
-+  fi
-+  test "$r" -ne 0 && res="$r"
-+done
-+exit $res
This page took 0.983769 seconds and 4 git commands to generate.